slate-angular 17.0.0-next.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/components/block-card/block-card.component.mjs +5 -5
- package/esm2022/components/children/children.component.mjs +3 -3
- package/esm2022/components/descendant/descendant.component.mjs +6 -6
- package/esm2022/components/editable/editable.component.mjs +5 -5
- package/esm2022/components/element/default-element.component.mjs +3 -3
- package/esm2022/components/element/element.component.mjs +3 -3
- package/esm2022/components/leaf/default-leaf.component.mjs +3 -3
- package/esm2022/components/leaf/leaf.component.mjs +4 -4
- package/esm2022/components/leaves/leaves.component.mjs +4 -4
- package/esm2022/components/string/default-string.component.mjs +5 -5
- package/esm2022/components/string/string.component.mjs +5 -5
- package/esm2022/components/string/template.component.mjs +3 -3
- package/esm2022/components/text/default-text.component.mjs +3 -3
- package/esm2022/components/text/void-text.component.mjs +4 -4
- package/esm2022/custom-event/BeforeInputEventPlugin.mjs +1 -1
- package/esm2022/custom-event/FallbackCompositionState.mjs +1 -1
- package/esm2022/module.mjs +4 -4
- package/esm2022/plugins/angular-editor.mjs +1 -1
- package/esm2022/plugins/with-angular.mjs +1 -1
- package/esm2022/utils/dom.mjs +1 -1
- package/esm2022/utils/hotkeys.mjs +1 -1
- package/esm2022/utils/lines.mjs +1 -1
- package/esm2022/utils/range-list.mjs +1 -1
- package/esm2022/utils/restore-dom.mjs +1 -1
- package/esm2022/view/base.mjs +14 -14
- package/esm2022/view/before-context-change.mjs +1 -1
- package/esm2022/view/container-item.mjs +5 -5
- package/esm2022/view/container.mjs +5 -5
- package/fesm2022/slate-angular.mjs +73 -73
- package/fesm2022/slate-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/angular-editor.d.ts +1 -1
|
@@ -570,4 +570,4 @@ export const AngularEditor = {
|
|
|
570
570
|
return Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path);
|
|
571
571
|
}
|
|
572
572
|
};
|
|
573
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9hbmd1bGFyLWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFRLElBQUksRUFBUyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBYyxNQUFNLE9BQU8sQ0FBQztBQUMxRixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWCxnQkFBZ0IsRUFDbkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBT0gsYUFBYSxFQUNiLFlBQVksRUFDWixjQUFjLEVBQ2QsaUJBQWlCLEVBQ3BCLE1BQU0sY0FBYyxDQUFDO0FBSXRCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFDSCwyQkFBMkIsRUFDM0IsNEJBQTRCLEVBQzVCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUMxQixNQUFNLHFCQUFxQixDQUFDO0FBcUI3QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDekI7O09BRUc7SUFFSCxTQUFTLENBQUMsTUFBcUI7UUFDM0IsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7U0FDM0U7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0Q7O09BRUc7SUFFSCxPQUFPLENBQUMsTUFBcUIsRUFBRSxJQUFVO1FBQ3JDLElBQUks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QUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FDZixNQUFxQixFQUNyQixJQUFVLEVBQ1YsT0FFQztRQUVELE1BQU0sTUFBTSxHQUFHO1lBQ1gsSUFBSTtZQUNKLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtTQUNwRyxDQUFDO1FBQ0YsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBcUIsRUFBRSxLQUFZO1FBQ3hDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgTm9kZSwgUGF0aCwgUG9pbnQsIFJhbmdlLCBUcmFuc2Zvcm1zLCBFbGVtZW50LCBCYXNlRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHtcbiAgICBFRElUT1JfVE9fRUxFTUVOVCxcbiAgICBFTEVNRU5UX1RPX05PREUsXG4gICAgSVNfRk9DVVNFRCxcbiAgICBJU19SRUFET05MWSxcbiAgICBOT0RFX1RPX0lOREVYLFxuICAgIE5PREVfVE9fUEFSRU5ULFxuICAgIE5PREVfVE9fRUxFTUVOVCxcbiAgICBOT0RFX1RPX0tFWSxcbiAgICBFRElUT1JfVE9fV0lORE9XXG59IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQge1xuICAgIERPTUVsZW1lbnQsXG4gICAgRE9NTm9kZSxcbiAgICBET01Qb2ludCxcbiAgICBET01SYW5nZSxcbiAgICBET01TZWxlY3Rpb24sXG4gICAgRE9NU3RhdGljUmFuZ2UsXG4gICAgaGFzU2hhZG93Um9vdCxcbiAgICBpc0RPTUVsZW1lbnQsXG4gICAgaXNET01TZWxlY3Rpb24sXG4gICAgbm9ybWFsaXplRE9NUG9pbnRcbn0gZnJvbSAnLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlRW50cnkgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBTbGF0ZUVycm9yIH0gZnJvbSAnLi4vdHlwZXMvZXJyb3InO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4vdXRpbHMva2V5JztcbmltcG9ydCB7IElTX0NIUk9NRSwgSVNfRklSRUZPWCB9IGZyb20gJy4uL3V0aWxzL2Vudmlyb25tZW50JztcbmltcG9ydCB7XG4gICAgRkFLRV9MRUZUX0JMT0NLX0NBUkRfT0ZGU0VULFxuICAgIEZBS0VfUklHSFRfQkxPQ0tfQ0FSRF9PRkZTRVQsXG4gICAgZ2V0Q2FyZFRhcmdldEF0dHJpYnV0ZSxcbiAgICBpc0NhcmRDZW50ZXJCeVRhcmdldEF0dHIsXG4gICAgaXNDYXJkTGVmdEJ5VGFyZ2V0QXR0cixcbiAgICBpc0NhcmRSaWdodEJ5VGFyZ2V0QXR0clxufSBmcm9tICcuLi91dGlscy9ibG9jay1jYXJkJztcbmltcG9ydCB7IFNhZmVBbnkgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogQW4gQW5ndWxhciBhbmQgRE9NLXNwZWNpZmljIHZlcnNpb24gb2YgdGhlIGBFZGl0b3JgIGludGVyZmFjZS5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJFZGl0b3IgZXh0ZW5kcyBCYXNlRWRpdG9yIHtcbiAgICBpbnNlcnREYXRhOiAoZGF0YTogRGF0YVRyYW5zZmVyKSA9PiB2b2lkO1xuICAgIGluc2VydEZyYWdtZW50RGF0YTogKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4gYm9vbGVhbjtcbiAgICBpbnNlcnRUZXh0RGF0YTogKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4gYm9vbGVhbjtcbiAgICBzZXRGcmFnbWVudERhdGE6IChkYXRhOiBEYXRhVHJhbnNmZXIsIG9yaWdpbkV2ZW50PzogJ2RyYWcnIHwgJ2NvcHknIHwgJ2N1dCcpID0+IHZvaWQ7XG4gICAgZGVsZXRlQ3V0RGF0YTogKCkgPT4gdm9pZDtcbiAgICBvbktleWRvd246IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbiAgICBvbkNsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIGlzQmxvY2tDYXJkOiAobm9kZTogTm9kZSkgPT4gYm9vbGVhbjtcbiAgICBvbkVycm9yOiAoZXJyb3JEYXRhOiBTbGF0ZUVycm9yKSA9PiB2b2lkO1xuICAgIGhhc1JhbmdlOiAoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCByYW5nZTogUmFuZ2UpID0+IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBBbmd1bGFyRWRpdG9yID0ge1xuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgaG9zdCB3aW5kb3cgb2YgdGhlIGN1cnJlbnQgZWRpdG9yLlxuICAgICAqL1xuXG4gICAgZ2V0V2luZG93KGVkaXRvcjogQW5ndWxhckVkaXRvcik6IFdpbmRvdyB7XG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IEVESVRPUl9UT19XSU5ET1cuZ2V0KGVkaXRvcik7XG4gICAgICAgIGlmICghd2luZG93KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGEgaG9zdCB3aW5kb3cgZWxlbWVudCBmb3IgdGhpcyBlZGl0b3InKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd2luZG93O1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogRmluZCBhIGtleSBmb3IgYSBTbGF0ZSBub2RlLlxuICAgICAqL1xuXG4gICAgZmluZEtleShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIG5vZGU6IE5vZGUpOiBLZXkge1xuICAgICAgICBsZXQga2V5ID0gTk9ERV9UT19LRVkuZ2V0KG5vZGUpO1xuXG4gICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgICBrZXkgPSBuZXcgS2V5KCk7XG4gICAgICAgICAgICBOT0RFX1RPX0tFWS5zZXQobm9kZSwga2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGhhbmRsZSBlZGl0b3IgZXJyb3IuXG4gICAgICovXG5cbiAgICBvbkVycm9yKGVycm9yRGF0YTogU2xhdGVFcnJvcikge1xuICAgICAgICBpZiAoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBlcnJvckRhdGEubmF0aXZlRXJyb3I7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmluZCB0aGUgcGF0aCBvZiBTbGF0ZSBub2RlLlxuICAgICAqL1xuXG4gICAgZmluZFBhdGgoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBub2RlOiBOb2RlKTogUGF0aCB7XG4gICAgICAgIGNvbnN0IHBhdGg6IFBhdGggPSBbXTtcbiAgICAgICAgbGV0IGNoaWxkID0gbm9kZTtcblxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gTk9ERV9UT19QQVJFTlQuZ2V0KGNoaWxkKTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKEVkaXRvci5pc0VkaXRvcihjaGlsZCkgJiYgY2hpbGQgPT09IGVkaXRvcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGkgPSBOT0RFX1RPX0lOREVYLmdldChjaGlsZCk7XG5cbiAgICAgICAgICAgIGlmIChpID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGF0aC51bnNoaWZ0KGkpO1xuICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZmluZCB0aGUgcGF0aCBmb3IgU2xhdGUgbm9kZTogJHtKU09OLnN0cmluZ2lmeShub2RlKX1gKTtcbiAgICB9LFxuXG4gICAgaXNOb2RlSW5FZGl0b3IoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBub2RlOiBOb2RlKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBjaGlsZCA9IG5vZGU7XG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IE5PREVfVE9fUEFSRU5ULmdldChjaGlsZCk7XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChFZGl0b3IuaXNFZGl0b3IoY2hpbGQpICYmIGNoaWxkID09PSBlZGl0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpID0gTk9ERV9UT19JTkRFWC5nZXQoY2hpbGQpO1xuXG4gICAgICAgICAgICBpZiAoaSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNoaWxkID0gcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBGaW5kIHRoZSBET00gbm9kZSB0aGF0IGltcGxlbWVudHMgRG9jdW1lbnRPclNoYWRvd1Jvb3QgZm9yIHRoZSBlZGl0b3IuXG4gICAgICovXG5cbiAgICBmaW5kRG9jdW1lbnRPclNoYWRvd1Jvb3QoZWRpdG9yOiBBbmd1bGFyRWRpdG9yKTogRG9jdW1lbnQgfCBTaGFkb3dSb290IHtcbiAgICAgICAgY29uc3QgZWwgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIGVkaXRvcik7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBlbC5nZXRSb290Tm9kZSgpO1xuICAgICAgICBpZiAoKHJvb3QgaW5zdGFuY2VvZiBEb2N1bWVudCB8fCByb290IGluc3RhbmNlb2YgU2hhZG93Um9vdCkgJiYgKHJvb3QgYXMgRG9jdW1lbnQpLmdldFNlbGVjdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gcm9vdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbC5vd25lckRvY3VtZW50O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZWRpdG9yIGlzIGZvY3VzZWQuXG4gICAgICovXG5cbiAgICBpc0ZvY3VzZWQoZWRpdG9yOiBBbmd1bGFyRWRpdG9yKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIUlTX0ZPQ1VTRUQuZ2V0KGVkaXRvcik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSBlZGl0b3IgaXMgaW4gcmVhZC1vbmx5IG1vZGUuXG4gICAgICovXG5cbiAgICBpc1JlYWRvbmx5KGVkaXRvcjogQW5ndWxhckVkaXRvcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFJU19SRUFET05MWS5nZXQoZWRpdG9yKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGVkaXRvciBpcyBoYW5naW5nIHJpZ2h0LlxuICAgICAqL1xuICAgIGlzQmxvY2tIYW5naW5nUmlnaHQoZWRpdG9yOiBBbmd1bGFyRWRpdG9yKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFJhbmdlLmlzQ29sbGFwc2VkKHNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSBSYW5nZS5lZGdlcyhzZWxlY3Rpb24pO1xuICAgICAgICBjb25zdCBlbmRCbG9jayA9IEVkaXRvci5hYm92ZShlZGl0b3IsIHtcbiAgICAgICAgICAgIGF0OiBlbmQsXG4gICAgICAgICAgICBtYXRjaDogbm9kZSA9PiBFZGl0b3IuaXNCbG9jayhlZGl0b3IsIG5vZGUpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gRWRpdG9yLmlzU3RhcnQoZWRpdG9yLCBlbmQsIGVuZEJsb2NrWzFdKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQmx1ciB0aGUgZWRpdG9yLlxuICAgICAqL1xuXG4gICAgYmx1cihlZGl0b3I6IEFuZ3VsYXJFZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWwgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIGVkaXRvcik7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBBbmd1bGFyRWRpdG9yLmZpbmREb2N1bWVudE9yU2hhZG93Um9vdChlZGl0b3IpO1xuICAgICAgICBJU19GT0NVU0VELnNldChlZGl0b3IsIGZhbHNlKTtcblxuICAgICAgICBpZiAocm9vdC5hY3RpdmVFbGVtZW50ID09PSBlbCkge1xuICAgICAgICAgICAgZWwuYmx1cigpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEZvY3VzIHRoZSBlZGl0b3IuXG4gICAgICovXG5cbiAgICBmb2N1cyhlZGl0b3I6IEFuZ3VsYXJFZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWwgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIGVkaXRvcik7XG4gICAgICAgIElTX0ZPQ1VTRUQuc2V0KGVkaXRvciwgdHJ1ZSk7XG5cbiAgICAgICAgY29uc3Qgd2luZG93ID0gQW5ndWxhckVkaXRvci5nZXRXaW5kb3coZWRpdG9yKTtcbiAgICAgICAgaWYgKHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBlbCkge1xuICAgICAgICAgICAgZWwuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0IHRoZSBlZGl0b3IuXG4gICAgICovXG5cbiAgICBkZXNlbGVjdChlZGl0b3I6IEFuZ3VsYXJFZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICAgICAgY29uc3Qgcm9vdCA9IEFuZ3VsYXJFZGl0b3IuZmluZERvY3VtZW50T3JTaGFkb3dSb290KGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGRvbVNlbGVjdGlvbiA9IChyb290IGFzIERvY3VtZW50KS5nZXRTZWxlY3Rpb24oKTtcblxuICAgICAgICBpZiAoZG9tU2VsZWN0aW9uICYmIGRvbVNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xuICAgICAgICAgICAgZG9tU2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZXNlbGVjdChlZGl0b3IpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgd2l0aGluIHRoZSBlZGl0b3IuXG4gICAgICovXG5cbiAgICBoYXNET01Ob2RlKGVkaXRvcjogQW5ndWxhckVkaXRvciwgdGFyZ2V0OiBET01Ob2RlLCBvcHRpb25zOiB7IGVkaXRhYmxlPzogYm9vbGVhbiB9ID0ge30pOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgeyBlZGl0YWJsZSA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICAgICAgICBjb25zdCBlZGl0b3JFbCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgZWRpdG9yKTtcbiAgICAgICAgbGV0IHRhcmdldEVsO1xuXG4gICAgICAgIC8vIENPTVBBVDogSW4gRmlyZWZveCwgcmVhZGluZyBgdGFyZ2V0Lm5vZGVUeXBlYCB3aWxsIHRocm93IGFuIGVycm9yIGlmXG4gICAgICAgIC8vIHRhcmdldCBpcyBvcmlnaW5hdGluZyBmcm9tIGFuIGludGVybmFsIFwicmVzdHJpY3RlZFwiIGVsZW1lbnQgKGUuZy4gYVxuICAgICAgICAvLyBzdGVwcGVyIGFycm93IG9uIGEgbnVtYmVyIGlucHV0KS4gKDIwMTgvMDUvMDQpXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pYW5zdG9ybXRheWxvci9zbGF0ZS9pc3N1ZXMvMTgxOVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGFyZ2V0RWwgPSAoaXNET01FbGVtZW50KHRhcmdldCkgPyB0YXJnZXQgOiB0YXJnZXQucGFyZW50RWxlbWVudCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKCFlcnIubWVzc2FnZS5pbmNsdWRlcygnUGVybWlzc2lvbiBkZW5pZWQgdG8gYWNjZXNzIHByb3BlcnR5IFwibm9kZVR5cGVcIicpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0YXJnZXRFbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRhcmdldEVsLmNsb3Nlc3QoYFtkYXRhLXNsYXRlLWVkaXRvcl1gKSA9PT0gZWRpdG9yRWwgJiZcbiAgICAgICAgICAgICghZWRpdGFibGUgfHwgdGFyZ2V0RWwuaXNDb250ZW50RWRpdGFibGUgfHwgISF0YXJnZXRFbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xhdGUtemVyby13aWR0aCcpKVxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnQgZGF0YSBmcm9tIGEgYERhdGFUcmFuc2ZlcmAgaW50byB0aGUgZWRpdG9yLlxuICAgICAqL1xuXG4gICAgaW5zZXJ0RGF0YShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIGRhdGE6IERhdGFUcmFuc2Zlcik6IHZvaWQge1xuICAgICAgICBlZGl0b3IuaW5zZXJ0RGF0YShkYXRhKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IGZyYWdtZW50IGRhdGEgZnJvbSBhIGBEYXRhVHJhbnNmZXJgIGludG8gdGhlIGVkaXRvci5cbiAgICAgKi9cblxuICAgIGluc2VydEZyYWdtZW50RGF0YShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIGRhdGE6IERhdGFUcmFuc2Zlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZWRpdG9yLmluc2VydEZyYWdtZW50RGF0YShkYXRhKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IHRleHQgZGF0YSBmcm9tIGEgYERhdGFUcmFuc2ZlcmAgaW50byB0aGUgZWRpdG9yLlxuICAgICAqL1xuXG4gICAgaW5zZXJ0VGV4dERhdGEoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBkYXRhOiBEYXRhVHJhbnNmZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGVkaXRvci5pbnNlcnRUZXh0RGF0YShkYXRhKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogb25LZXlkb3duIGhvb2suXG4gICAgICovXG4gICAgb25LZXlkb3duKGVkaXRvcjogQW5ndWxhckVkaXRvciwgZGF0YTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBlZGl0b3Iub25LZXlkb3duKGRhdGEpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBvbkNsaWNrIGhvb2suXG4gICAgICovXG4gICAgb25DbGljayhlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIGRhdGE6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZWRpdG9yLm9uQ2xpY2soZGF0YSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNldHMgZGF0YSBmcm9tIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZnJhZ21lbnQgb24gYSBgRGF0YVRyYW5zZmVyYC5cbiAgICAgKi9cblxuICAgIHNldEZyYWdtZW50RGF0YShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIGRhdGE6IERhdGFUcmFuc2Zlciwgb3JpZ2luRXZlbnQ/OiAnZHJhZycgfCAnY29weScgfCAnY3V0Jyk6IHZvaWQge1xuICAgICAgICBlZGl0b3Iuc2V0RnJhZ21lbnREYXRhKGRhdGEsIG9yaWdpbkV2ZW50KTtcbiAgICB9LFxuXG4gICAgZGVsZXRlQ3V0RGF0YShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgZWRpdG9yLmRlbGV0ZUN1dERhdGEoKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmluZCB0aGUgbmF0aXZlIERPTSBlbGVtZW50IGZyb20gYSBTbGF0ZSBub2RlLlxuICAgICAqL1xuXG4gICAgdG9ET01Ob2RlKGVkaXRvcjogQW5ndWxhckVkaXRvciwgbm9kZTogTm9kZSk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgZG9tTm9kZSA9IEVkaXRvci5pc0VkaXRvcihub2RlKSA/IEVESVRPUl9UT19FTEVNRU5ULmdldChlZGl0b3IpIDogTk9ERV9UT19FTEVNRU5ULmdldChub2RlKTtcblxuICAgICAgICBpZiAoIWRvbU5vZGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgYSBET00gbm9kZSBmcm9tIFNsYXRlIG5vZGU6ICR7SlNPTi5zdHJpbmdpZnkobm9kZSl9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9tTm9kZTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmluZCBhIG5hdGl2ZSBET00gc2VsZWN0aW9uIHBvaW50IGZyb20gYSBTbGF0ZSBwb2ludC5cbiAgICAgKi9cblxuICAgIHRvRE9NUG9pbnQoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBwb2ludDogUG9pbnQpOiBET01Qb2ludCB7XG4gICAgICAgIGNvbnN0IFtub2RlXSA9IEVkaXRvci5ub2RlKGVkaXRvciwgcG9pbnQucGF0aCk7XG4gICAgICAgIGNvbnN0IGVsID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgbGV0IGRvbVBvaW50OiBET01Qb2ludCB8IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBibG9jayBjYXJkXG4gICAgICAgIGNvbnN0IGNhcmRUYXJnZXRBdHRyID0gZ2V0Q2FyZFRhcmdldEF0dHJpYnV0ZShlbCk7XG4gICAgICAgIGlmIChjYXJkVGFyZ2V0QXR0cikge1xuICAgICAgICAgICAgaWYgKHBvaW50Lm9mZnNldCA9PT0gRkFLRV9MRUZUX0JMT0NLX0NBUkRfT0ZGU0VUKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yTm9kZSA9IEFuZ3VsYXJFZGl0b3IuZ2V0Q2FyZEN1cnNvck5vZGUoZWRpdG9yLCBub2RlLCB7IGRpcmVjdGlvbjogJ2xlZnQnIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBbY3Vyc29yTm9kZSwgMV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvck5vZGUgPSBBbmd1bGFyRWRpdG9yLmdldENhcmRDdXJzb3JOb2RlKGVkaXRvciwgbm9kZSwgeyBkaXJlY3Rpb246ICdyaWdodCcgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtjdXJzb3JOb2RlLCAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHdlJ3JlIGluc2lkZSBhIHZvaWQgbm9kZSwgZm9yY2UgdGhlIG9mZnNldCB0byAwLCBvdGhlcndpc2UgdGhlIHplcm9cbiAgICAgICAgLy8gd2lkdGggc3BhY2luZyBjaGFyYWN0ZXIgd2lsbCByZXN1bHQgaW4gYW4gaW5jb3JyZWN0IG9mZnNldCBvZiAxXG4gICAgICAgIGlmIChFZGl0b3Iudm9pZChlZGl0b3IsIHsgYXQ6IHBvaW50IH0pKSB7XG4gICAgICAgICAgICBwb2ludCA9IHsgcGF0aDogcG9pbnQucGF0aCwgb2Zmc2V0OiAwIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgZWFjaCBsZWFmLCB3ZSBuZWVkIHRvIGlzb2xhdGUgaXRzIGNvbnRlbnQsIHdoaWNoIG1lYW5zIGZpbHRlcmluZ1xuICAgICAgICAvLyB0byBpdHMgZGlyZWN0IHRleHQgYW5kIHplcm8td2lkdGggc3BhbnMuIChXZSBoYXZlIHRvIGZpbHRlciBvdXQgYW55XG4gICAgICAgIC8vIG90aGVyIHNpYmxpbmdzIHRoYXQgbWF5IGhhdmUgYmVlbiByZW5kZXJlZCBhbG9uZ3NpZGUgdGhlbS4pXG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gYFtkYXRhLXNsYXRlLXN0cmluZ10sIFtkYXRhLXNsYXRlLXplcm8td2lkdGhdYDtcbiAgICAgICAgY29uc3QgdGV4dHMgPSBBcnJheS5mcm9tKGVsLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRleHQgb2YgdGV4dHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvbU5vZGUgPSB0ZXh0LmNoaWxkTm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChkb21Ob2RlID09IG51bGwgfHwgZG9tTm9kZS50ZXh0Q29udGVudCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHsgbGVuZ3RoIH0gPSBkb21Ob2RlLnRleHRDb250ZW50O1xuICAgICAgICAgICAgY29uc3QgYXR0ciA9IHRleHQuZ2V0QXR0cmlidXRlKCdkYXRhLXNsYXRlLWxlbmd0aCcpO1xuICAgICAgICAgICAgY29uc3QgdHJ1ZUxlbmd0aCA9IGF0dHIgPT0gbnVsbCA/IGxlbmd0aCA6IHBhcnNlSW50KGF0dHIsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdHJ1ZUxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKHBvaW50Lm9mZnNldCA8PSBlbmQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBNYXRoLm1pbihsZW5ndGgsIE1hdGgubWF4KDAsIHBvaW50Lm9mZnNldCAtIHN0YXJ0KSk7XG4gICAgICAgICAgICAgICAgZG9tUG9pbnQgPSBbZG9tTm9kZSwgb2Zmc2V0XTtcbiAgICAgICAgICAgICAgICAvLyBmaXhlZCBjdXJzb3IgcG9zaXRpb24gYWZ0ZXIgemVybyB3aWR0aCBjaGFyXG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA9PT0gMCAmJiBsZW5ndGggPT09IDEgJiYgZG9tTm9kZS50ZXh0Q29udGVudCA9PT0gJ1xcdUZFRkYnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbVBvaW50ID0gW2RvbU5vZGUsIG9mZnNldCArIDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhcnQgPSBlbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRvbVBvaW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGEgRE9NIHBvaW50IGZyb20gU2xhdGUgcG9pbnQ6ICR7SlNPTi5zdHJpbmdpZnkocG9pbnQpfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRvbVBvaW50O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBGaW5kIGEgbmF0aXZlIERPTSByYW5nZSBmcm9tIGEgU2xhdGUgYHJhbmdlYC5cbiAgICAgKi9cblxuICAgIHRvRE9NUmFuZ2UoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCByYW5nZTogUmFuZ2UpOiBET01SYW5nZSB7XG4gICAgICAgIGNvbnN0IHsgYW5jaG9yLCBmb2N1cyB9ID0gcmFuZ2U7XG4gICAgICAgIGNvbnN0IGlzQmFja3dhcmQgPSBSYW5nZS5pc0JhY2t3YXJkKHJhbmdlKTtcbiAgICAgICAgY29uc3QgZG9tQW5jaG9yID0gQW5ndWxhckVkaXRvci50b0RPTVBvaW50KGVkaXRvciwgYW5jaG9yKTtcbiAgICAgICAgY29uc3QgZG9tRm9jdXMgPSBSYW5nZS5pc0NvbGxhcHNlZChyYW5nZSkgPyBkb21BbmNob3IgOiBBbmd1bGFyRWRpdG9yLnRvRE9NUG9pbnQoZWRpdG9yLCBmb2N1cyk7XG5cbiAgICAgICAgY29uc3Qgd2luZG93ID0gQW5ndWxhckVkaXRvci5nZXRXaW5kb3coZWRpdG9yKTtcbiAgICAgICAgY29uc3QgZG9tUmFuZ2UgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgY29uc3QgW3N0YXJ0Tm9kZSwgc3RhcnRPZmZzZXRdID0gaXNCYWNrd2FyZCA/IGRvbUZvY3VzIDogZG9tQW5jaG9yO1xuICAgICAgICBjb25zdCBbZW5kTm9kZSwgZW5kT2Zmc2V0XSA9IGlzQmFja3dhcmQgPyBkb21BbmNob3IgOiBkb21Gb2N1cztcblxuICAgICAgICAvLyBBIHNsYXRlIFBvaW50IGF0IHplcm8td2lkdGggTGVhZiBhbHdheXMgaGFzIGFuIG9mZnNldCBvZiAwIGJ1dCBhIG5hdGl2ZSBET00gc2VsZWN0aW9uIGF0XG4gICAgICAgIC8vIHplcm8td2lkdGggbm9kZSBoYXMgYW4gb2Zmc2V0IG9mIDEgc28gd2UgaGF2ZSB0byBjaGVjayBpZiB3ZSBhcmUgaW4gYSB6ZXJvLXdpZHRoIG5vZGUgYW5kXG4gICAgICAgIC8vIGFkanVzdCB0aGUgb2Zmc2V0IGFjY29yZGluZ2x5LlxuICAgICAgICBjb25zdCBzdGFydEVsID0gKGlzRE9NRWxlbWVudChzdGFydE5vZGUpID8gc3RhcnROb2RlIDogc3RhcnROb2RlLnBhcmVudEVsZW1lbnQpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBpc1N0YXJ0QXRaZXJvV2lkdGggPSAhIXN0YXJ0RWwuZ2V0QXR0cmlidXRlKCdkYXRhLXNsYXRlLXplcm8td2lkdGgnKTtcbiAgICAgICAgY29uc3QgZW5kRWwgPSAoaXNET01FbGVtZW50KGVuZE5vZGUpID8gZW5kTm9kZSA6IGVuZE5vZGUucGFyZW50RWxlbWVudCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGlzRW5kQXRaZXJvV2lkdGggPSAhIWVuZEVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zbGF0ZS16ZXJvLXdpZHRoJyk7XG5cbiAgICAgICAgZG9tUmFuZ2Uuc2V0U3RhcnQoc3RhcnROb2RlLCBpc1N0YXJ0QXRaZXJvV2lkdGggPyAxIDogc3RhcnRPZmZzZXQpO1xuICAgICAgICBkb21SYW5nZS5zZXRFbmQoZW5kTm9kZSwgaXNFbmRBdFplcm9XaWR0aCA/IDEgOiBlbmRPZmZzZXQpO1xuICAgICAgICByZXR1cm4gZG9tUmFuZ2U7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEZpbmQgYSBTbGF0ZSBub2RlIGZyb20gYSBuYXRpdmUgRE9NIGBlbGVtZW50YC5cbiAgICAgKi9cblxuICAgIHRvU2xhdGVOb2RlKGVkaXRvcjogQW5ndWxhckVkaXRvciwgZG9tTm9kZTogRE9NTm9kZSk6IE5vZGUge1xuICAgICAgICBsZXQgZG9tRWwgPSBpc0RPTUVsZW1lbnQoZG9tTm9kZSkgPyBkb21Ob2RlIDogZG9tTm9kZS5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgIGlmIChkb21FbCAmJiAhZG9tRWwuaGFzQXR0cmlidXRlKCdkYXRhLXNsYXRlLW5vZGUnKSkge1xuICAgICAgICAgICAgZG9tRWwgPSBkb21FbC5jbG9zZXN0KGBbZGF0YS1zbGF0ZS1ub2RlXWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm9kZSA9IGRvbUVsID8gRUxFTUVOVF9UT19OT0RFLmdldChkb21FbCBhcyBIVE1MRWxlbWVudCkgOiBudWxsO1xuXG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBhIFNsYXRlIG5vZGUgZnJvbSBET00gbm9kZTogJHtkb21FbH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHRhcmdldCByYW5nZSBmcm9tIGEgRE9NIGBldmVudGAuXG4gICAgICovXG5cbiAgICBmaW5kRXZlbnRSYW5nZShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIGV2ZW50OiBhbnkpOiBSYW5nZSB7XG4gICAgICAgIGlmICgnbmF0aXZlRXZlbnQnIGluIGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBjbGllbnRYOiB4LCBjbGllbnRZOiB5LCB0YXJnZXQgfSA9IGV2ZW50O1xuXG4gICAgICAgIGlmICh4ID09IG51bGwgfHwgeSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGEgU2xhdGUgcmFuZ2UgZnJvbSBhIERPTSBldmVudDogJHtldmVudH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcblxuICAgICAgICAvLyBJZiB0aGUgZHJvcCB0YXJnZXQgaXMgaW5zaWRlIGEgdm9pZCBub2RlLCBtb3ZlIGl0IGludG8gZWl0aGVyIHRoZVxuICAgICAgICAvLyBuZXh0IG9yIHByZXZpb3VzIG5vZGUsIGRlcGVuZGluZyBvbiB3aGljaCBzaWRlIHRoZSBgeGAgYW5kIGB5YFxuICAgICAgICAvLyBjb29yZGluYXRlcyBhcmUgY2xvc2VzdCB0by5cbiAgICAgICAgaWYgKEVkaXRvci5pc1ZvaWQoZWRpdG9yLCBub2RlKSkge1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzUHJldiA9IGVkaXRvci5pc0lubGluZShub2RlKSA/IHggLSByZWN0LmxlZnQgPCByZWN0LmxlZnQgKyByZWN0LndpZHRoIC0geCA6IHkgLSByZWN0LnRvcCA8IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLSB5O1xuXG4gICAgICAgICAgICBjb25zdCBlZGdlID0gRWRpdG9yLnBvaW50KGVkaXRvciwgcGF0aCwge1xuICAgICAgICAgICAgICAgIGVkZ2U6IGlzUHJldiA/ICdzdGFydCcgOiAnZW5kJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IGlzUHJldiA/IEVkaXRvci5iZWZvcmUoZWRpdG9yLCBlZGdlKSA6IEVkaXRvci5hZnRlcihlZGl0b3IsIGVkZ2UpO1xuXG4gICAgICAgICAgICBpZiAocG9pbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRWRpdG9yLnJhbmdlKGVkaXRvciwgcG9pbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRWxzZSByZXNvbHZlIGEgcmFuZ2UgZnJvbSB0aGUgY2FyZXQgcG9zaXRpb24gd2hlcmUgdGhlIGRyb3Agb2NjdXJlZC5cbiAgICAgICAgbGV0IGRvbVJhbmdlOiBET01SYW5nZTtcbiAgICAgICAgY29uc3Qgd2luZG93ID0gQW5ndWxhckVkaXRvci5nZXRXaW5kb3coZWRpdG9yKTtcbiAgICAgICAgY29uc3QgeyBkb2N1bWVudCB9ID0gd2luZG93O1xuXG4gICAgICAgIC8vIENPTVBBVDogSW4gRmlyZWZveCwgYGNhcmV0UmFuZ2VGcm9tUG9pbnRgIGRvZXNuJ3QgZXhpc3QuICgyMDE2LzA3LzI1KVxuICAgICAgICBpZiAoZG9jdW1lbnQuY2FyZXRSYW5nZUZyb21Qb2ludCkge1xuICAgICAgICAgICAgZG9tUmFuZ2UgPSBkb2N1bWVudC5jYXJldFJhbmdlRnJvbVBvaW50KHgsIHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSAoZG9jdW1lbnQgYXMgU2FmZUFueSkuY2FyZXRQb3NpdGlvbkZyb21Qb2ludCh4LCB5KTtcblxuICAgICAgICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgZG9tUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICAgICAgICAgIGRvbVJhbmdlLnNldFN0YXJ0KHBvc2l0aW9uLm9mZnNldE5vZGUsIHBvc2l0aW9uLm9mZnNldCk7XG4gICAgICAgICAgICAgICAgZG9tUmFuZ2Uuc2V0RW5kKHBvc2l0aW9uLm9mZnNldE5vZGUsIHBvc2l0aW9uLm9mZnNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRvbVJhbmdlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGEgU2xhdGUgcmFuZ2UgZnJvbSBhIERPTSBldmVudDogJHtldmVudH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlc29sdmUgYSBTbGF0ZSByYW5nZSBmcm9tIHRoZSBET00gcmFuZ2UuXG4gICAgICAgIGNvbnN0IHJhbmdlID0gQW5ndWxhckVkaXRvci50b1NsYXRlUmFuZ2UoZWRpdG9yLCBkb21SYW5nZSk7XG4gICAgICAgIHJldHVybiByYW5nZTtcbiAgICB9LFxuXG4gICAgaXNMZWFmSW5FZGl0b3IoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBsZWFmTm9kZTogRE9NRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZSA9IGxlYWZOb2RlLmNsb3Nlc3QoJ1tkYXRhLXNsYXRlLW5vZGU9XCJ0ZXh0XCJdJykhO1xuICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIHRleHROb2RlKTtcbiAgICAgICAgcmV0dXJuIEFuZ3VsYXJFZGl0b3IuaXNOb2RlSW5FZGl0b3IoZWRpdG9yLCBub2RlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmluZCBhIFNsYXRlIHBvaW50IGZyb20gYSBET00gc2VsZWN0aW9uJ3MgYGRvbU5vZGVgIGFuZCBgZG9tT2Zmc2V0YC5cbiAgICAgKi9cblxuICAgIHRvU2xhdGVQb2ludChlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIGRvbVBvaW50OiBET01Qb2ludCk6IFBvaW50IHtcbiAgICAgICAgY29uc3QgW2RvbU5vZGVdID0gZG9tUG9pbnQ7XG4gICAgICAgIGNvbnN0IFtuZWFyZXN0Tm9kZSwgbmVhcmVzdE9mZnNldF0gPSBub3JtYWxpemVET01Qb2ludChkb21Qb2ludCk7XG4gICAgICAgIGxldCBwYXJlbnROb2RlID0gbmVhcmVzdE5vZGUucGFyZW50Tm9kZSBhcyBET01FbGVtZW50O1xuICAgICAgICBsZXQgdGV4dE5vZGU6IERPTUVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG5cbiAgICAgICAgLy8gYmxvY2sgY2FyZFxuICAgICAgICBjb25zdCBjYXJkVGFyZ2V0QXR0ciA9IGdldENhcmRUYXJnZXRBdHRyaWJ1dGUoZG9tTm9kZSk7XG4gICAgICAgIGlmIChjYXJkVGFyZ2V0QXR0cikge1xuICAgICAgICAgICAgY29uc3QgZG9tU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgY29uc3QgaXNCYWNrd2FyZCA9IGVkaXRvci5zZWxlY3Rpb24gJiYgUmFuZ2UuaXNCYWNrd2FyZChlZGl0b3Iuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVudHJ5ID0gQW5ndWxhckVkaXRvci50b1NsYXRlQ2FyZEVudHJ5KGVkaXRvciwgZG9tTm9kZSkgfHwgQW5ndWxhckVkaXRvci50b1NsYXRlQ2FyZEVudHJ5KGVkaXRvciwgbmVhcmVzdE5vZGUpO1xuICAgICAgICAgICAgY29uc3QgWywgYmxvY2tQYXRoXSA9IGJsb2NrQ2FyZEVudHJ5O1xuICAgICAgICAgICAgaWYgKGRvbVNlbGVjdGlvbi5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgIGlmIChpc0NhcmRMZWZ0QnlUYXJnZXRBdHRyKGNhcmRUYXJnZXRBdHRyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBwYXRoOiBibG9ja1BhdGgsIG9mZnNldDogLTEgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBwYXRoOiBibG9ja1BhdGgsIG9mZnNldDogLTIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmb3J3YXJkXG4gICAgICAgICAgICAvLyBhbmQgdG8gdGhlIGVuZCBvZiBwcmV2aW91cyBub2RlXG4gICAgICAgICAgICBpZiAoaXNDYXJkTGVmdEJ5VGFyZ2V0QXR0cihjYXJkVGFyZ2V0QXR0cikgJiYgIWlzQmFja3dhcmQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRQYXRoID0gYmxvY2tQYXRoW2Jsb2NrUGF0aC5sZW5ndGggLSAxXSA8PSAwID8gYmxvY2tQYXRoIDogUGF0aC5wcmV2aW91cyhibG9ja1BhdGgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBFZGl0b3IuZW5kKGVkaXRvciwgZW5kUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0byB0aGUgb2YgY3VycmVudCBub2RlXG4gICAgICAgICAgICBpZiAoKGlzQ2FyZENlbnRlckJ5VGFyZ2V0QXR0cihjYXJkVGFyZ2V0QXR0cikgfHwgaXNDYXJkUmlnaHRCeVRhcmdldEF0dHIoY2FyZFRhcmdldEF0dHIpKSAmJiAhaXNCYWNrd2FyZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBFZGl0b3IuZW5kKGVkaXRvciwgYmxvY2tQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkXG4gICAgICAgICAgICAvLyBhbmQgdG8gdGhlIHN0YXJ0IG9mIG5leHQgbm9kZVxuICAgICAgICAgICAgaWYgKGlzQ2FyZFJpZ2h0QnlUYXJnZXRBdHRyKGNhcmRUYXJnZXRBdHRyKSAmJiBpc0JhY2t3YXJkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEVkaXRvci5zdGFydChlZGl0b3IsIFBhdGgubmV4dChibG9ja1BhdGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGFuZCB0byB0aGUgc3RhcnQgb2YgY3VycmVudCBub2RlXG4gICAgICAgICAgICBpZiAoKGlzQ2FyZENlbnRlckJ5VGFyZ2V0QXR0cihjYXJkVGFyZ2V0QXR0cikgfHwgaXNDYXJkTGVmdEJ5VGFyZ2V0QXR0cihjYXJkVGFyZ2V0QXR0cikpICYmIGlzQmFja3dhcmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRWRpdG9yLnN0YXJ0KGVkaXRvciwgYmxvY2tQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB2b2lkTm9kZSA9IHBhcmVudE5vZGUuY2xvc2VzdCgnW2RhdGEtc2xhdGUtdm9pZD1cInRydWVcIl0nKTtcbiAgICAgICAgICAgIGxldCBsZWFmTm9kZSA9IHBhcmVudE5vZGUuY2xvc2VzdCgnW2RhdGEtc2xhdGUtbGVhZl0nKTtcbiAgICAgICAgICAgIGxldCBkb21Ob2RlOiBET01FbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgZmFyIGludG8gdGhlIHRleHQgbm9kZSB0aGUgYG5lYXJlc3ROb2RlYCBpcywgc28gdGhhdCB3ZVxuICAgICAgICAgICAgLy8gY2FuIGRldGVybWluZSB3aGF0IHRoZSBvZmZzZXQgcmVsYXRpdmUgdG8gdGhlIHRleHQgbm9kZSBpcy5cbiAgICAgICAgICAgIGlmIChsZWFmTm9kZSAmJiBBbmd1bGFyRWRpdG9yLmlzTGVhZkluRWRpdG9yKGVkaXRvciwgbGVhZk5vZGUpKSB7XG4gICAgICAgICAgICAgICAgdGV4dE5vZGUgPSBsZWFmTm9kZS5jbG9zZXN0KCdbZGF0YS1zbGF0ZS1ub2RlPVwidGV4dFwiXScpITtcbiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSBBbmd1bGFyRWRpdG9yLmdldFdpbmRvdyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgICAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIDApO1xuICAgICAgICAgICAgICAgIHJhbmdlLnNldEVuZChuZWFyZXN0Tm9kZSwgbmVhcmVzdE9mZnNldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudHMgPSByYW5nZS5jbG9uZUNvbnRlbnRzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZhbHMgPSBbXG4gICAgICAgICAgICAgICAgICAgIC4uLkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGNvbnRlbnRzLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNsYXRlLXplcm8td2lkdGhdJykpLFxuICAgICAgICAgICAgICAgICAgICAuLi5BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cy5xdWVyeVNlbGVjdG9yQWxsKCdbY29udGVudGVkaXRhYmxlPWZhbHNlXScpKVxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICByZW1vdmFscy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZWwhLnBhcmVudE5vZGUhLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vIENPTVBBVDogRWRnZSBoYXMgYSBidWcgd2hlcmUgUmFuZ2UucHJvdG90eXBlLnRvU3RyaW5nKCkgd2lsbFxuICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgXFxuIGludG8gXFxyXFxuLiBUaGUgYnVnIGNhdXNlcyBhIGxvb3Agd2hlbiBzbGF0ZS1yZWFjdFxuICAgICAgICAgICAgICAgIC8vIGF0dGVtcHRzIHRvIHJlcG9zaXRpb24gaXRzIGN1cnNvciB0byBtYXRjaCB0aGUgbmF0aXZlIHBvc2l0aW9uLiBVc2VcbiAgICAgICAgICAgICAgICAvLyB0ZXh0Q29udGVudC5sZW5ndGggaW5zdGVhZC5cbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL2VuLXVzL21pY3Jvc29mdC1lZGdlL3BsYXRmb3JtL2lzc3Vlcy8xMDI5MTExNi9cbiAgICAgICAgICAgICAgICBvZmZzZXQgPSBjb250ZW50cy50ZXh0Q29udGVudCEubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGRvbU5vZGUgPSB0ZXh0Tm9kZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodm9pZE5vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBGb3Igdm9pZCBub2RlcywgdGhlIGVsZW1lbnQgd2l0aCB0aGUgb2Zmc2V0IGtleSB3aWxsIGJlIGEgY291c2luLCBub3QgYW5cbiAgICAgICAgICAgICAgICAvLyBhbmNlc3Rvciwgc28gZmluZCBpdCBieSBnb2luZyBkb3duIGZyb20gdGhlIG5lYXJlc3Qgdm9pZCBwYXJlbnQuXG5cbiAgICAgICAgICAgICAgICBsZWFmTm9kZSA9IHZvaWROb2RlLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXNsYXRlLWxlYWZdJykhO1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSB2b2lkTm9kZS5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zbGF0ZS1sZW5ndGg9XCIwXCJdJyk7XG4gICAgICAgICAgICAgICAgdGV4dE5vZGUgPSBsZWFmTm9kZS5jbG9zZXN0KCdbZGF0YS1zbGF0ZS1ub2RlPVwidGV4dFwiXScpITtcbiAgICAgICAgICAgICAgICBkb21Ob2RlID0gbGVhZk5vZGU7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gZG9tTm9kZS50ZXh0Q29udGVudCEubGVuZ3RoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDT01QQVQ6IElmIHRoZSBwYXJlbnQgbm9kZSBpcyBhIFNsYXRlIHplcm8td2lkdGggc3BhY2UsIGVkaXRvciBpc1xuICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgdGV4dCBub2RlIHNob3VsZCBoYXZlIG5vIGNoYXJhY3RlcnMuIEhvd2V2ZXIsIGR1cmluZyBJTUVcbiAgICAgICAgICAgIC8vIGNvbXBvc2l0aW9uIHRoZSBBU0NJSSBjaGFyYWN0ZXJzIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRoZSB6ZXJvLXdpZHRoXG4gICAgICAgICAgICAvLyBzcGFjZSwgc28gc3VidHJhY3QgMSBmcm9tIHRoZSBvZmZzZXQgdG8gYWNjb3VudCBmb3IgdGhlIHplcm8td2lkdGhcbiAgICAgICAgICAgIC8vIHNwYWNlIGNoYXJhY3Rlci5cbiAgICAgICAgICAgIGlmIChkb21Ob2RlICYmIG9mZnNldCA9PT0gZG9tTm9kZS50ZXh0Q29udGVudCEubGVuZ3RoICYmIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2xhdGUtemVyby13aWR0aCcpKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0LS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRleHROb2RlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGEgU2xhdGUgcG9pbnQgZnJvbSBET00gcG9pbnQ6ICR7ZG9tUG9pbnR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDT01QQVQ6IElmIHNvbWVvbmUgaXMgY2xpY2tpbmcgZnJvbSBvbmUgU2xhdGUgZWRpdG9yIGludG8gYW5vdGhlcixcbiAgICAgICAgLy8gdGhlIHNlbGVjdCBldmVudCBmaXJlcyB0d2ljZSwgb25jZSBmb3IgdGhlIG9sZCBlZGl0b3IncyBgZWxlbWVudGBcbiAgICAgICAgLy8gZmlyc3QsIGFuZCB0aGVuIGFmdGVyd2FyZHMgZm9yIHRoZSBjb3JyZWN0IGBlbGVtZW50YC4gKDIwMTcvMDMvMDMpXG4gICAgICAgIGNvbnN0IHNsYXRlTm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCB0ZXh0Tm9kZSEpO1xuICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIHNsYXRlTm9kZSk7XG4gICAgICAgIHJldHVybiB7IHBhdGgsIG9mZnNldCB9O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBGaW5kIGEgU2xhdGUgcmFuZ2UgZnJvbSBhIERPTSByYW5nZSBvciBzZWxlY3Rpb24uXG4gICAgICovXG5cbiAgICB0b1NsYXRlUmFuZ2UoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBkb21SYW5nZTogRE9NUmFuZ2UgfCBET01TdGF0aWNSYW5nZSB8IERPTVNlbGVjdGlvbik6IFJhbmdlIHtcbiAgICAgICAgY29uc3QgZWwgPSBpc0RPTVNlbGVjdGlvbihkb21SYW5nZSkgPyBkb21SYW5nZS5hbmNob3JOb2RlIDogZG9tUmFuZ2Uuc3RhcnRDb250YWluZXI7XG4gICAgICAgIGxldCBhbmNob3JOb2RlO1xuICAgICAgICBsZXQgYW5jaG9yT2Zmc2V0O1xuICAgICAgICBsZXQgZm9jdXNOb2RlO1xuICAgICAgICBsZXQgZm9jdXNPZmZzZXQ7XG4gICAgICAgIGxldCBpc0NvbGxhcHNlZDtcblxuICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgIGlmIChpc0RPTVNlbGVjdGlvbihkb21SYW5nZSkpIHtcbiAgICAgICAgICAgICAgICBhbmNob3JOb2RlID0gZG9tUmFuZ2UuYW5jaG9yTm9kZTtcbiAgICAgICAgICAgICAgICBhbmNob3JPZmZzZXQgPSBkb21SYW5nZS5hbmNob3JPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZm9jdXNOb2RlID0gZG9tUmFuZ2UuZm9jdXNOb2RlO1xuICAgICAgICAgICAgICAgIGZvY3VzT2Zmc2V0ID0gZG9tUmFuZ2UuZm9jdXNPZmZzZXQ7XG4gICAgICAgICAgICAgICAgLy8gQ09NUEFUOiBUaGVyZSdzIGEgYnVnIGluIGNocm9tZSB0aGF0IGFsd2F5cyByZXR1cm5zIGB0cnVlYCBmb3JcbiAgICAgICAgICAgICAgICAvLyBgaXNDb2xsYXBzZWRgIGZvciBhIFNlbGVjdGlvbiB0aGF0IGNvbWVzIGZyb20gYSBTaGFkb3dSb290LlxuICAgICAgICAgICAgICAgIC8vICgyMDIwLzA4LzA4KVxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ0NzUyM1xuICAgICAgICAgICAgICAgIGlmIChJU19DSFJPTUUgJiYgaGFzU2hhZG93Um9vdCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkID0gZG9tUmFuZ2UuYW5jaG9yTm9kZSA9PT0gZG9tUmFuZ2UuZm9jdXNOb2RlICYmIGRvbVJhbmdlLmFuY2hvck9mZnNldCA9PT0gZG9tUmFuZ2UuZm9jdXNPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQgPSBkb21SYW5nZS5pc0NvbGxhcHNlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFuY2hvck5vZGUgPSBkb21SYW5nZS5zdGFydENvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICBhbmNob3JPZmZzZXQgPSBkb21SYW5nZS5zdGFydE9mZnNldDtcbiAgICAgICAgICAgICAgICBmb2N1c05vZGUgPSBkb21SYW5nZS5lbmRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgZm9jdXNPZmZzZXQgPSBkb21SYW5nZS5lbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQgPSBkb21SYW5nZS5jb2xsYXBzZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYW5jaG9yTm9kZSA9PSBudWxsIHx8IGZvY3VzTm9kZSA9PSBudWxsIHx8IGFuY2hvck9mZnNldCA9PSBudWxsIHx8IGZvY3VzT2Zmc2V0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgYSBTbGF0ZSByYW5nZSBmcm9tIERPTSByYW5nZTogJHtkb21SYW5nZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFuY2hvciA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZVBvaW50KGVkaXRvciwgW2FuY2hvck5vZGUsIGFuY2hvck9mZnNldF0pO1xuICAgICAgICBjb25zdCBmb2N1cyA9IGlzQ29sbGFwc2VkID8gYW5jaG9yIDogQW5ndWxhckVkaXRvci50b1NsYXRlUG9pbnQoZWRpdG9yLCBbZm9jdXNOb2RlLCBmb2N1c09mZnNldF0pO1xuXG4gICAgICAgIHJldHVybiB7IGFuY2hvciwgZm9jdXMgfTtcbiAgICB9LFxuXG4gICAgaXNMZWFmQmxvY2soZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBub2RlOiBOb2RlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiAhZWRpdG9yLmlzSW5saW5lKG5vZGUpICYmIEVkaXRvci5oYXNJbmxpbmVzKGVkaXRvciwgbm9kZSk7XG4gICAgfSxcblxuICAgIGlzQmxvY2tDYXJkTGVmdEN1cnNvcihlZGl0b3I6IEFuZ3VsYXJFZGl0b3IpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLm9mZnNldCA9PT0gRkFLRV9MRUZUX0JMT0NLX0NBUkRfT0ZGU0VUICYmIGVkaXRvci5zZWxlY3Rpb24uZm9jdXMub2Zmc2V0ID09PSBGQUtFX0xFRlRfQkxPQ0tfQ0FSRF9PRkZTRVRcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgaXNCbG9ja0NhcmRSaWdodEN1cnNvcihlZGl0b3I6IEFuZ3VsYXJFZGl0b3IpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLm9mZnNldCA9PT0gRkFLRV9SSUdIVF9CTE9DS19DQVJEX09GRlNFVCAmJlxuICAgICAgICAgICAgZWRpdG9yLnNlbGVjdGlvbi5mb2N1cy5vZmZzZXQgPT09IEZBS0VfUklHSFRfQkxPQ0tfQ0FSRF9PRkZTRVRcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgZ2V0Q2FyZEN1cnNvck5vZGUoXG4gICAgICAgIGVkaXRvcjogQW5ndWxhckVkaXRvcixcbiAgICAgICAgYmxvY2tDYXJkTm9kZTogTm9kZSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnIHwgJ2NlbnRlcic7XG4gICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgY29uc3QgYmxvY2tDYXJkRWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgYmxvY2tDYXJkTm9kZSk7XG4gICAgICAgIGNvbnN0IGNhcmRDZW50ZXIgPSBibG9ja0NhcmRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gY2FyZENlbnRlci5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmZpcnN0Q2hpbGQgOiBjYXJkQ2VudGVyLm5leHRFbGVtZW50U2libGluZy5maXJzdENoaWxkO1xuICAgIH0sXG5cbiAgICB0b1NsYXRlQ2FyZEVudHJ5KGVkaXRvcjogQW5ndWxhckVkaXRvciwgbm9kZTogRE9NTm9kZSk6IE5vZGVFbnRyeSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBub2RlLnBhcmVudEVsZW1lbnQuY2xvc2VzdCgnLnNsYXRlLWJsb2NrLWNhcmQnKT8ucXVlcnlTZWxlY3RvcignW2NhcmQtdGFyZ2V0PVwiY2FyZC1jZW50ZXJcIl0nKS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgY29uc3Qgc2xhdGVOb2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIHNsYXRlTm9kZSk7XG4gICAgICAgIHJldHVybiBbc2xhdGVOb2RlLCBwYXRoXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogbW92ZSBuYXRpdmUgc2VsZWN0aW9uIHRvIGNhcmQtbGVmdCBvciBjYXJkLXJpZ2h0XG4gICAgICogQHBhcmFtIGVkaXRvclxuICAgICAqIEBwYXJhbSBibG9ja0NhcmROb2RlXG4gICAgICogQHBhcmFtIG9wdGlvbnNcbiAgICAgKi9cbiAgICBtb3ZlQmxvY2tDYXJkKFxuICAgICAgICBlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsXG4gICAgICAgIGJsb2NrQ2FyZE5vZGU6IE5vZGUsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgICAgICAgfVxuICAgICkge1xuICAgICAgICBjb25zdCBjdXJzb3JOb2RlID0gQW5ndWxhckVkaXRvci5nZXRDYXJkQ3Vyc29yTm9kZShlZGl0b3IsIGJsb2NrQ2FyZE5vZGUsIG9wdGlvbnMpO1xuICAgICAgICBjb25zdCB3aW5kb3cgPSBBbmd1bGFyRWRpdG9yLmdldFdpbmRvdyhlZGl0b3IpO1xuICAgICAgICBjb25zdCBkb21TZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGRvbVNlbGVjdGlvbi5zZXRCYXNlQW5kRXh0ZW50KGN1cnNvck5vZGUsIDEsIGN1cnNvck5vZGUsIDEpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBtb3ZlIHNsYXRlIHNlbGVjdGlvbiB0byBjYXJkLWxlZnQgb3IgY2FyZC1yaWdodFxuICAgICAqIEBwYXJhbSBlZGl0b3JcbiAgICAgKiBAcGFyYW0gcGF0aFxuICAgICAqIEBwYXJhbSBvcHRpb25zXG4gICAgICovXG4gICAgbW92ZUJsb2NrQ2FyZEN1cnNvcihcbiAgICAgICAgZWRpdG9yOiBBbmd1bGFyRWRpdG9yLFxuICAgICAgICBwYXRoOiBQYXRoLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCc7XG4gICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgY29uc3QgY3Vyc29yID0ge1xuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIG9mZnNldDogb3B0aW9ucy5kaXJlY3Rpb24gPT09ICdsZWZ0JyA/IEZBS0VfTEVGVF9CTE9DS19DQVJEX09GRlNFVCA6IEZBS0VfUklHSFRfQkxPQ0tfQ0FSRF9PRkZTRVRcbiAgICAgICAgfTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCB7IGFuY2hvcjogY3Vyc29yLCBmb2N1czogY3Vyc29yIH0pO1xuICAgIH0sXG5cbiAgICBoYXNSYW5nZShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIHJhbmdlOiBSYW5nZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7IGFuY2hvciwgZm9jdXMgfSA9IHJhbmdlO1xuICAgICAgICByZXR1cm4gRWRpdG9yLmhhc1BhdGgoZWRpdG9yLCBhbmNob3IucGF0aCkgJiYgRWRpdG9yLmhhc1BhdGgoZWRpdG9yLCBmb2N1cy5wYXRoKTtcbiAgICB9XG59O1xuIl19
|
|
573
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9hbmd1bGFyLWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFRLElBQUksRUFBUyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBYyxNQUFNLE9BQU8sQ0FBQztBQUMxRixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWCxnQkFBZ0IsRUFDbkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBT0gsYUFBYSxFQUNiLFlBQVksRUFDWixjQUFjLEVBQ2QsaUJBQWlCLEVBQ3BCLE1BQU0sY0FBYyxDQUFDO0FBSXRCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFDSCwyQkFBMkIsRUFDM0IsNEJBQTRCLEVBQzVCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUMxQixNQUFNLHFCQUFxQixDQUFDO0FBcUI3QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDekI7O09BRUc7SUFFSCxTQUFTLENBQUMsTUFBcUI7UUFDM0IsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUNEOztPQUVHO0lBRUgsT0FBTyxDQUFDLE1BQXFCLEVBQUUsSUFBVTtR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TSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQXFCLEVBQUUsS0FBWTtRQUN4QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNoQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckYsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIE5vZGUsIFBhdGgsIFBvaW50LCBSYW5nZSwgVHJhbnNmb3JtcywgRWxlbWVudCwgQmFzZUVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7XG4gICAgRURJVE9SX1RPX0VMRU1FTlQsXG4gICAgRUxFTUVOVF9UT19OT0RFLFxuICAgIElTX0ZPQ1VTRUQsXG4gICAgSVNfUkVBRE9OTFksXG4gICAgTk9ERV9UT19JTkRFWCxcbiAgICBOT0RFX1RPX1BBUkVOVCxcbiAgICBOT0RFX1RPX0VMRU1FTlQsXG4gICAgTk9ERV9UT19LRVksXG4gICAgRURJVE9SX1RPX1dJTkRPV1xufSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHtcbiAgICBET01FbGVtZW50LFxuICAgIERPTU5vZGUsXG4gICAgRE9NUG9pbnQsXG4gICAgRE9NUmFuZ2UsXG4gICAgRE9NU2VsZWN0aW9uLFxuICAgIERPTVN0YXRpY1JhbmdlLFxuICAgIGhhc1NoYWRvd1Jvb3QsXG4gICAgaXNET01FbGVtZW50LFxuICAgIGlzRE9NU2VsZWN0aW9uLFxuICAgIG5vcm1hbGl6ZURPTVBvaW50XG59IGZyb20gJy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZUVudHJ5IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgU2xhdGVFcnJvciB9IGZyb20gJy4uL3R5cGVzL2Vycm9yJztcbmltcG9ydCB7IEtleSB9IGZyb20gJy4uL3V0aWxzL2tleSc7XG5pbXBvcnQgeyBJU19DSFJPTUUsIElTX0ZJUkVGT1ggfSBmcm9tICcuLi91dGlscy9lbnZpcm9ubWVudCc7XG5pbXBvcnQge1xuICAgIEZBS0VfTEVGVF9CTE9DS19DQVJEX09GRlNFVCxcbiAgICBGQUtFX1JJR0hUX0JMT0NLX0NBUkRfT0ZGU0VULFxuICAgIGdldENhcmRUYXJnZXRBdHRyaWJ1dGUsXG4gICAgaXNDYXJkQ2VudGVyQnlUYXJnZXRBdHRyLFxuICAgIGlzQ2FyZExlZnRCeVRhcmdldEF0dHIsXG4gICAgaXNDYXJkUmlnaHRCeVRhcmdldEF0dHJcbn0gZnJvbSAnLi4vdXRpbHMvYmxvY2stY2FyZCc7XG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIEFuIEFuZ3VsYXIgYW5kIERPTS1zcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBgRWRpdG9yYCBpbnRlcmZhY2UuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRWRpdG9yIGV4dGVuZHMgQmFzZUVkaXRvciB7XG4gICAgaW5zZXJ0RGF0YTogKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4gdm9pZDtcbiAgICBpbnNlcnRGcmFnbWVudERhdGE6IChkYXRhOiBEYXRhVHJhbnNmZXIpID0+IGJvb2xlYW47XG4gICAgaW5zZXJ0VGV4dERhdGE6IChkYXRhOiBEYXRhVHJhbnNmZXIpID0+IGJvb2xlYW47XG4gICAgc2V0RnJhZ21lbnREYXRhOiAoZGF0YTogRGF0YVRyYW5zZmVyLCBvcmlnaW5FdmVudD86ICdkcmFnJyB8ICdjb3B5JyB8ICdjdXQnKSA9PiB2b2lkO1xuICAgIGRlbGV0ZUN1dERhdGE6ICgpID0+IHZvaWQ7XG4gICAgb25LZXlkb3duOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG4gICAgb25DbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIGluamVjdG9yOiBJbmplY3RvcjtcbiAgICBpc0Jsb2NrQ2FyZDogKG5vZGU6IE5vZGUpID0+IGJvb2xlYW47XG4gICAgb25FcnJvcjogKGVycm9yRGF0YTogU2xhdGVFcnJvcikgPT4gdm9pZDtcbiAgICBoYXNSYW5nZTogKGVkaXRvcjogQW5ndWxhckVkaXRvciwgcmFuZ2U6IFJhbmdlKSA9PiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgQW5ndWxhckVkaXRvciA9IHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIGhvc3Qgd2luZG93IG9mIHRoZSBjdXJyZW50IGVkaXRvci5cbiAgICAgKi9cblxuICAgIGdldFdpbmRvdyhlZGl0b3I6IEFuZ3VsYXJFZGl0b3IpOiBXaW5kb3cge1xuICAgICAgICBjb25zdCB3aW5kb3cgPSBFRElUT1JfVE9fV0lORE9XLmdldChlZGl0b3IpO1xuICAgICAgICBpZiAoIXdpbmRvdykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhIGhvc3Qgd2luZG93IGVsZW1lbnQgZm9yIHRoaXMgZWRpdG9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdpbmRvdztcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIEZpbmQgYSBrZXkgZm9yIGEgU2xhdGUgbm9kZS5cbiAgICAgKi9cblxuICAgIGZpbmRLZXkoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBub2RlOiBOb2RlKTogS2V5IHtcbiAgICAgICAgbGV0IGtleSA9IE5PREVfVE9fS0VZLmdldChub2RlKTtcblxuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAga2V5ID0gbmV3IEtleSgpO1xuICAgICAgICAgICAgTk9ERV9UT19LRVkuc2V0KG5vZGUsIGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBoYW5kbGUgZWRpdG9yIGVycm9yLlxuICAgICAqL1xuXG4gICAgb25FcnJvcihlcnJvckRhdGE6IFNsYXRlRXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yRGF0YS5uYXRpdmVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3JEYXRhLm5hdGl2ZUVycm9yO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEZpbmQgdGhlIHBhdGggb2YgU2xhdGUgbm9kZS5cbiAgICAgKi9cblxuICAgIGZpbmRQYXRoKGVkaXRvcjogQW5ndWxhckVkaXRvciwgbm9kZTogTm9kZSk6IFBhdGgge1xuICAgICAgICBjb25zdCBwYXRoOiBQYXRoID0gW107XG4gICAgICAgIGxldCBjaGlsZCA9IG5vZGU7XG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IE5PREVfVE9fUEFSRU5ULmdldChjaGlsZCk7XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChFZGl0b3IuaXNFZGl0b3IoY2hpbGQpICYmIGNoaWxkID09PSBlZGl0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpID0gTk9ERV9UT19JTkRFWC5nZXQoY2hpbGQpO1xuXG4gICAgICAgICAgICBpZiAoaSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhdGgudW5zaGlmdChpKTtcbiAgICAgICAgICAgIGNoaWxkID0gcGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGZpbmQgdGhlIHBhdGggZm9yIFNsYXRlIG5vZGU6ICR7SlNPTi5zdHJpbmdpZnkobm9kZSl9YCk7XG4gICAgfSxcblxuICAgIGlzTm9kZUluRWRpdG9yKGVkaXRvcjogQW5ndWxhckVkaXRvciwgbm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgY2hpbGQgPSBub2RlO1xuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBOT0RFX1RPX1BBUkVOVC5nZXQoY2hpbGQpO1xuXG4gICAgICAgICAgICBpZiAocGFyZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoRWRpdG9yLmlzRWRpdG9yKGNoaWxkKSAmJiBjaGlsZCA9PT0gZWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaSA9IE5PREVfVE9fSU5ERVguZ2V0KGNoaWxkKTtcblxuICAgICAgICAgICAgaWYgKGkgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjaGlsZCA9IHBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmluZCB0aGUgRE9NIG5vZGUgdGhhdCBpbXBsZW1lbnRzIERvY3VtZW50T3JTaGFkb3dSb290IGZvciB0aGUgZWRpdG9yLlxuICAgICAqL1xuXG4gICAgZmluZERvY3VtZW50T3JTaGFkb3dSb290KGVkaXRvcjogQW5ndWxhckVkaXRvcik6IERvY3VtZW50IHwgU2hhZG93Um9vdCB7XG4gICAgICAgIGNvbnN0IGVsID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBlZGl0b3IpO1xuICAgICAgICBjb25zdCByb290ID0gZWwuZ2V0Um9vdE5vZGUoKTtcbiAgICAgICAgaWYgKChyb290IGluc3RhbmNlb2YgRG9jdW1lbnQgfHwgcm9vdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpICYmIChyb290IGFzIERvY3VtZW50KS5nZXRTZWxlY3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvb3Q7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWwub3duZXJEb2N1bWVudDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGVkaXRvciBpcyBmb2N1c2VkLlxuICAgICAqL1xuXG4gICAgaXNGb2N1c2VkKGVkaXRvcjogQW5ndWxhckVkaXRvcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFJU19GT0NVU0VELmdldChlZGl0b3IpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZWRpdG9yIGlzIGluIHJlYWQtb25seSBtb2RlLlxuICAgICAqL1xuXG4gICAgaXNSZWFkb25seShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhSVNfUkVBRE9OTFkuZ2V0KGVkaXRvcik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSBlZGl0b3IgaXMgaGFuZ2luZyByaWdodC5cbiAgICAgKi9cbiAgICBpc0Jsb2NrSGFuZ2luZ1JpZ2h0KGVkaXRvcjogQW5ndWxhckVkaXRvcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZWRpdG9yO1xuICAgICAgICBpZiAoIXNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChSYW5nZS5pc0NvbGxhcHNlZChzZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gUmFuZ2UuZWRnZXMoc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgZW5kQmxvY2sgPSBFZGl0b3IuYWJvdmUoZWRpdG9yLCB7XG4gICAgICAgICAgICBhdDogZW5kLFxuICAgICAgICAgICAgbWF0Y2g6IG5vZGUgPT4gRWRpdG9yLmlzQmxvY2soZWRpdG9yLCBub2RlKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIEVkaXRvci5pc1N0YXJ0KGVkaXRvciwgZW5kLCBlbmRCbG9ja1sxXSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEJsdXIgdGhlIGVkaXRvci5cbiAgICAgKi9cblxuICAgIGJsdXIoZWRpdG9yOiBBbmd1bGFyRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBlZGl0b3IpO1xuICAgICAgICBjb25zdCByb290ID0gQW5ndWxhckVkaXRvci5maW5kRG9jdW1lbnRPclNoYWRvd1Jvb3QoZWRpdG9yKTtcbiAgICAgICAgSVNfRk9DVVNFRC5zZXQoZWRpdG9yLCBmYWxzZSk7XG5cbiAgICAgICAgaWYgKHJvb3QuYWN0aXZlRWxlbWVudCA9PT0gZWwpIHtcbiAgICAgICAgICAgIGVsLmJsdXIoKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBGb2N1cyB0aGUgZWRpdG9yLlxuICAgICAqL1xuXG4gICAgZm9jdXMoZWRpdG9yOiBBbmd1bGFyRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBlZGl0b3IpO1xuICAgICAgICBJU19GT0NVU0VELnNldChlZGl0b3IsIHRydWUpO1xuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IEFuZ3VsYXJFZGl0b3IuZ2V0V2luZG93KGVkaXRvcik7XG4gICAgICAgIGlmICh3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZWwpIHtcbiAgICAgICAgICAgIGVsLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEZXNlbGVjdCB0aGUgZWRpdG9yLlxuICAgICAqL1xuXG4gICAgZGVzZWxlY3QoZWRpdG9yOiBBbmd1bGFyRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBBbmd1bGFyRWRpdG9yLmZpbmREb2N1bWVudE9yU2hhZG93Um9vdChlZGl0b3IpO1xuICAgICAgICBjb25zdCBkb21TZWxlY3Rpb24gPSAocm9vdCBhcyBEb2N1bWVudCkuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgaWYgKGRvbVNlbGVjdGlvbiAmJiBkb21TZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgICAgICAgICAgIGRvbVNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVzZWxlY3QoZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhIERPTSBub2RlIGlzIHdpdGhpbiB0aGUgZWRpdG9yLlxuICAgICAqL1xuXG4gICAgaGFzRE9NTm9kZShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIHRhcmdldDogRE9NTm9kZSwgb3B0aW9uczogeyBlZGl0YWJsZT86IGJvb2xlYW4gfSA9IHt9KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHsgZWRpdGFibGUgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgICAgICAgY29uc3QgZWRpdG9yRWwgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIGVkaXRvcik7XG4gICAgICAgIGxldCB0YXJnZXRFbDtcblxuICAgICAgICAvLyBDT01QQVQ6IEluIEZpcmVmb3gsIHJlYWRpbmcgYHRhcmdldC5ub2RlVHlwZWAgd2lsbCB0aHJvdyBhbiBlcnJvciBpZlxuICAgICAgICAvLyB0YXJnZXQgaXMgb3JpZ2luYXRpbmcgZnJvbSBhbiBpbnRlcm5hbCBcInJlc3RyaWN0ZWRcIiBlbGVtZW50IChlLmcuIGFcbiAgICAgICAgLy8gc3RlcHBlciBhcnJvdyBvbiBhIG51bWJlciBpbnB1dCkuICgyMDE4LzA1LzA0KVxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaWFuc3Rvcm10YXlsb3Ivc2xhdGUvaXNzdWVzLzE4MTlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRhcmdldEVsID0gKGlzRE9NRWxlbWVudCh0YXJnZXQpID8gdGFyZ2V0IDogdGFyZ2V0LnBhcmVudEVsZW1lbnQpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICghZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1Blcm1pc3Npb24gZGVuaWVkIHRvIGFjY2VzcyBwcm9wZXJ0eSBcIm5vZGVUeXBlXCInKSkge1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGFyZ2V0RWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0YXJnZXRFbC5jbG9zZXN0KGBbZGF0YS1zbGF0ZS1lZGl0b3JdYCkgPT09IGVkaXRvckVsICYmXG4gICAgICAgICAgICAoIWVkaXRhYmxlIHx8IHRhcmdldEVsLmlzQ29udGVudEVkaXRhYmxlIHx8ICEhdGFyZ2V0RWwuZ2V0QXR0cmlidXRlKCdkYXRhLXNsYXRlLXplcm8td2lkdGgnKSlcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IGRhdGEgZnJvbSBhIGBEYXRhVHJhbnNmZXJgIGludG8gdGhlIGVkaXRvci5cbiAgICAgKi9cblxuICAgIGluc2VydERhdGEoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBkYXRhOiBEYXRhVHJhbnNmZXIpOiB2b2lkIHtcbiAgICAgICAgZWRpdG9yLmluc2VydERhdGEoZGF0YSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEluc2VydCBmcmFnbWVudCBkYXRhIGZyb20gYSBgRGF0YVRyYW5zZmVyYCBpbnRvIHRoZSBlZGl0b3IuXG4gICAgICovXG5cbiAgICBpbnNlcnRGcmFnbWVudERhdGEoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBkYXRhOiBEYXRhVHJhbnNmZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGVkaXRvci5pbnNlcnRGcmFnbWVudERhdGEoZGF0YSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEluc2VydCB0ZXh0IGRhdGEgZnJvbSBhIGBEYXRhVHJhbnNmZXJgIGludG8gdGhlIGVkaXRvci5cbiAgICAgKi9cblxuICAgIGluc2VydFRleHREYXRhKGVkaXRvcjogQW5ndWxhckVkaXRvciwgZGF0YTogRGF0YVRyYW5zZmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBlZGl0b3IuaW5zZXJ0VGV4dERhdGEoZGF0YSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIG9uS2V5ZG93biBob29rLlxuICAgICAqL1xuICAgIG9uS2V5ZG93bihlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIGRhdGE6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZWRpdG9yLm9uS2V5ZG93bihkYXRhKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogb25DbGljayBob29rLlxuICAgICAqL1xuICAgIG9uQ2xpY2soZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBkYXRhOiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGVkaXRvci5vbkNsaWNrKGRhdGEpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGRhdGEgZnJvbSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZyYWdtZW50IG9uIGEgYERhdGFUcmFuc2ZlcmAuXG4gICAgICovXG5cbiAgICBzZXRGcmFnbWVudERhdGEoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBkYXRhOiBEYXRhVHJhbnNmZXIsIG9yaWdpbkV2ZW50PzogJ2RyYWcnIHwgJ2NvcHknIHwgJ2N1dCcpOiB2b2lkIHtcbiAgICAgICAgZWRpdG9yLnNldEZyYWdtZW50RGF0YShkYXRhLCBvcmlnaW5FdmVudCk7XG4gICAgfSxcblxuICAgIGRlbGV0ZUN1dERhdGEoZWRpdG9yOiBBbmd1bGFyRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIGVkaXRvci5kZWxldGVDdXREYXRhKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEZpbmQgdGhlIG5hdGl2ZSBET00gZWxlbWVudCBmcm9tIGEgU2xhdGUgbm9kZS5cbiAgICAgKi9cblxuICAgIHRvRE9NTm9kZShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIG5vZGU6IE5vZGUpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGRvbU5vZGUgPSBFZGl0b3IuaXNFZGl0b3Iobm9kZSkgPyBFRElUT1JfVE9fRUxFTUVOVC5nZXQoZWRpdG9yKSA6IE5PREVfVE9fRUxFTUVOVC5nZXQobm9kZSk7XG5cbiAgICAgICAgaWYgKCFkb21Ob2RlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGEgRE9NIG5vZGUgZnJvbSBTbGF0ZSBub2RlOiAke0pTT04uc3RyaW5naWZ5KG5vZGUpfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRvbU5vZGU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEZpbmQgYSBuYXRpdmUgRE9NIHNlbGVjdGlvbiBwb2ludCBmcm9tIGEgU2xhdGUgcG9pbnQuXG4gICAgICovXG5cbiAgICB0b0RPTVBvaW50KGVkaXRvcjogQW5ndWxhckVkaXRvciwgcG9pbnQ6IFBvaW50KTogRE9NUG9pbnQge1xuICAgICAgICBjb25zdCBbbm9kZV0gPSBFZGl0b3Iubm9kZShlZGl0b3IsIHBvaW50LnBhdGgpO1xuICAgICAgICBjb25zdCBlbCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgbm9kZSk7XG4gICAgICAgIGxldCBkb21Qb2ludDogRE9NUG9pbnQgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gYmxvY2sgY2FyZFxuICAgICAgICBjb25zdCBjYXJkVGFyZ2V0QXR0ciA9IGdldENhcmRUYXJnZXRBdHRyaWJ1dGUoZWwpO1xuICAgICAgICBpZiAoY2FyZFRhcmdldEF0dHIpIHtcbiAgICAgICAgICAgIGlmIChwb2ludC5vZmZzZXQgPT09IEZBS0VfTEVGVF9CTE9DS19DQVJEX09GRlNFVCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvck5vZGUgPSBBbmd1bGFyRWRpdG9yLmdldENhcmRDdXJzb3JOb2RlKGVkaXRvciwgbm9kZSwgeyBkaXJlY3Rpb246ICdsZWZ0JyB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2N1cnNvck5vZGUsIDFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3JOb2RlID0gQW5ndWxhckVkaXRvci5nZXRDYXJkQ3Vyc29yTm9kZShlZGl0b3IsIG5vZGUsIHsgZGlyZWN0aW9uOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBbY3Vyc29yTm9kZSwgMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB3ZSdyZSBpbnNpZGUgYSB2b2lkIG5vZGUsIGZvcmNlIHRoZSBvZmZzZXQgdG8gMCwgb3RoZXJ3aXNlIHRoZSB6ZXJvXG4gICAgICAgIC8vIHdpZHRoIHNwYWNpbmcgY2hhcmFjdGVyIHdpbGwgcmVzdWx0IGluIGFuIGluY29ycmVjdCBvZmZzZXQgb2YgMVxuICAgICAgICBpZiAoRWRpdG9yLnZvaWQoZWRpdG9yLCB7IGF0OiBwb2ludCB9KSkge1xuICAgICAgICAgICAgcG9pbnQgPSB7IHBhdGg6IHBvaW50LnBhdGgsIG9mZnNldDogMCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yIGVhY2ggbGVhZiwgd2UgbmVlZCB0byBpc29sYXRlIGl0cyBjb250ZW50LCB3aGljaCBtZWFucyBmaWx0ZXJpbmdcbiAgICAgICAgLy8gdG8gaXRzIGRpcmVjdCB0ZXh0IGFuZCB6ZXJvLXdpZHRoIHNwYW5zLiAoV2UgaGF2ZSB0byBmaWx0ZXIgb3V0IGFueVxuICAgICAgICAvLyBvdGhlciBzaWJsaW5ncyB0aGF0IG1heSBoYXZlIGJlZW4gcmVuZGVyZWQgYWxvbmdzaWRlIHRoZW0uKVxuICAgICAgICBjb25zdCBzZWxlY3RvciA9IGBbZGF0YS1zbGF0ZS1zdHJpbmddLCBbZGF0YS1zbGF0ZS16ZXJvLXdpZHRoXWA7XG4gICAgICAgIGNvbnN0IHRleHRzID0gQXJyYXkuZnJvbShlbC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG4gICAgICAgIGxldCBzdGFydCA9IDA7XG5cbiAgICAgICAgZm9yIChjb25zdCB0ZXh0IG9mIHRleHRzKSB7XG4gICAgICAgICAgICBjb25zdCBkb21Ob2RlID0gdGV4dC5jaGlsZE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoZG9tTm9kZSA9PSBudWxsIHx8IGRvbU5vZGUudGV4dENvbnRlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7IGxlbmd0aCB9ID0gZG9tTm9kZS50ZXh0Q29udGVudDtcbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSB0ZXh0LmdldEF0dHJpYnV0ZSgnZGF0YS1zbGF0ZS1sZW5ndGgnKTtcbiAgICAgICAgICAgIGNvbnN0IHRydWVMZW5ndGggPSBhdHRyID09IG51bGwgPyBsZW5ndGggOiBwYXJzZUludChhdHRyLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRydWVMZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChwb2ludC5vZmZzZXQgPD0gZW5kKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5taW4obGVuZ3RoLCBNYXRoLm1heCgwLCBwb2ludC5vZmZzZXQgLSBzdGFydCkpO1xuICAgICAgICAgICAgICAgIGRvbVBvaW50ID0gW2RvbU5vZGUsIG9mZnNldF07XG4gICAgICAgICAgICAgICAgLy8gZml4ZWQgY3Vyc29yIHBvc2l0aW9uIGFmdGVyIHplcm8gd2lkdGggY2hhclxuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT09IDAgJiYgbGVuZ3RoID09PSAxICYmIGRvbU5vZGUudGV4dENvbnRlbnQgPT09ICdcXHVGRUZGJykge1xuICAgICAgICAgICAgICAgICAgICBkb21Qb2ludCA9IFtkb21Ob2RlLCBvZmZzZXQgKyAxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0YXJ0ID0gZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkb21Qb2ludCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBhIERPTSBwb2ludCBmcm9tIFNsYXRlIHBvaW50OiAke0pTT04uc3RyaW5naWZ5KHBvaW50KX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkb21Qb2ludDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmluZCBhIG5hdGl2ZSBET00gcmFuZ2UgZnJvbSBhIFNsYXRlIGByYW5nZWAuXG4gICAgICovXG5cbiAgICB0b0RPTVJhbmdlKGVkaXRvcjogQW5ndWxhckVkaXRvciwgcmFuZ2U6IFJhbmdlKTogRE9NUmFuZ2Uge1xuICAgICAgICBjb25zdCB7IGFuY2hvciwgZm9jdXMgfSA9IHJhbmdlO1xuICAgICAgICBjb25zdCBpc0JhY2t3YXJkID0gUmFuZ2UuaXNCYWNrd2FyZChyYW5nZSk7XG4gICAgICAgIGNvbnN0IGRvbUFuY2hvciA9IEFuZ3VsYXJFZGl0b3IudG9ET01Qb2ludChlZGl0b3IsIGFuY2hvcik7XG4gICAgICAgIGNvbnN0IGRvbUZvY3VzID0gUmFuZ2UuaXNDb2xsYXBzZWQocmFuZ2UpID8gZG9tQW5jaG9yIDogQW5ndWxhckVkaXRvci50b0RPTVBvaW50KGVkaXRvciwgZm9jdXMpO1xuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IEFuZ3VsYXJFZGl0b3IuZ2V0V2luZG93KGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGRvbVJhbmdlID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIGNvbnN0IFtzdGFydE5vZGUsIHN0YXJ0T2Zmc2V0XSA9IGlzQmFja3dhcmQgPyBkb21Gb2N1cyA6IGRvbUFuY2hvcjtcbiAgICAgICAgY29uc3QgW2VuZE5vZGUsIGVuZE9mZnNldF0gPSBpc0JhY2t3YXJkID8gZG9tQW5jaG9yIDogZG9tRm9jdXM7XG5cbiAgICAgICAgLy8gQSBzbGF0ZSBQb2ludCBhdCB6ZXJvLXdpZHRoIExlYWYgYWx3YXlzIGhhcyBhbiBvZmZzZXQgb2YgMCBidXQgYSBuYXRpdmUgRE9NIHNlbGVjdGlvbiBhdFxuICAgICAgICAvLyB6ZXJvLXdpZHRoIG5vZGUgaGFzIGFuIG9mZnNldCBvZiAxIHNvIHdlIGhhdmUgdG8gY2hlY2sgaWYgd2UgYXJlIGluIGEgemVyby13aWR0aCBub2RlIGFuZFxuICAgICAgICAvLyBhZGp1c3QgdGhlIG9mZnNldCBhY2NvcmRpbmdseS5cbiAgICAgICAgY29uc3Qgc3RhcnRFbCA9IChpc0RPTUVsZW1lbnQoc3RhcnROb2RlKSA/IHN0YXJ0Tm9kZSA6IHN0YXJ0Tm9kZS5wYXJlbnRFbGVtZW50KSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaXNTdGFydEF0WmVyb1dpZHRoID0gISFzdGFydEVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zbGF0ZS16ZXJvLXdpZHRoJyk7XG4gICAgICAgIGNvbnN0IGVuZEVsID0gKGlzRE9NRWxlbWVudChlbmROb2RlKSA/IGVuZE5vZGUgOiBlbmROb2RlLnBhcmVudEVsZW1lbnQpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBpc0VuZEF0WmVyb1dpZHRoID0gISFlbmRFbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xhdGUtemVyby13aWR0aCcpO1xuXG4gICAgICAgIGRvbVJhbmdlLnNldFN0YXJ0KHN0YXJ0Tm9kZSwgaXNTdGFydEF0WmVyb1dpZHRoID8gMSA6IHN0YXJ0T2Zmc2V0KTtcbiAgICAgICAgZG9tUmFuZ2Uuc2V0RW5kKGVuZE5vZGUsIGlzRW5kQXRaZXJvV2lkdGggPyAxIDogZW5kT2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIGRvbVJhbmdlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBGaW5kIGEgU2xhdGUgbm9kZSBmcm9tIGEgbmF0aXZlIERPTSBgZWxlbWVudGAuXG4gICAgICovXG5cbiAgICB0b1NsYXRlTm9kZShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIGRvbU5vZGU6IERPTU5vZGUpOiBOb2RlIHtcbiAgICAgICAgbGV0IGRvbUVsID0gaXNET01FbGVtZW50KGRvbU5vZGUpID8gZG9tTm9kZSA6IGRvbU5vZGUucGFyZW50RWxlbWVudDtcblxuICAgICAgICBpZiAoZG9tRWwgJiYgIWRvbUVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1zbGF0ZS1ub2RlJykpIHtcbiAgICAgICAgICAgIGRvbUVsID0gZG9tRWwuY2xvc2VzdChgW2RhdGEtc2xhdGUtbm9kZV1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vZGUgPSBkb21FbCA/IEVMRU1FTlRfVE9fTk9ERS5nZXQoZG9tRWwgYXMgSFRNTEVsZW1lbnQpIDogbnVsbDtcblxuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgYSBTbGF0ZSBub2RlIGZyb20gRE9NIG5vZGU6ICR7ZG9tRWx9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSB0YXJnZXQgcmFuZ2UgZnJvbSBhIERPTSBgZXZlbnRgLlxuICAgICAqL1xuXG4gICAgZmluZEV2ZW50UmFuZ2UoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBldmVudDogYW55KTogUmFuZ2Uge1xuICAgICAgICBpZiAoJ25hdGl2ZUV2ZW50JyBpbiBldmVudCkge1xuICAgICAgICAgICAgZXZlbnQgPSBldmVudC5uYXRpdmVFdmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgY2xpZW50WDogeCwgY2xpZW50WTogeSwgdGFyZ2V0IH0gPSBldmVudDtcblxuICAgICAgICBpZiAoeCA9PSBudWxsIHx8IHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBhIFNsYXRlIHJhbmdlIGZyb20gYSBET00gZXZlbnQ6ICR7ZXZlbnR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGV2ZW50LnRhcmdldCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG5cbiAgICAgICAgLy8gSWYgdGhlIGRyb3AgdGFyZ2V0IGlzIGluc2lkZSBhIHZvaWQgbm9kZSwgbW92ZSBpdCBpbnRvIGVpdGhlciB0aGVcbiAgICAgICAgLy8gbmV4dCBvciBwcmV2aW91cyBub2RlLCBkZXBlbmRpbmcgb24gd2hpY2ggc2lkZSB0aGUgYHhgIGFuZCBgeWBcbiAgICAgICAgLy8gY29vcmRpbmF0ZXMgYXJlIGNsb3Nlc3QgdG8uXG4gICAgICAgIGlmIChFZGl0b3IuaXNWb2lkKGVkaXRvciwgbm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBpc1ByZXYgPSBlZGl0b3IuaXNJbmxpbmUobm9kZSkgPyB4IC0gcmVjdC5sZWZ0IDwgcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAtIHggOiB5IC0gcmVjdC50b3AgPCByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC0geTtcblxuICAgICAgICAgICAgY29uc3QgZWRnZSA9IEVkaXRvci5wb2ludChlZGl0b3IsIHBhdGgsIHtcbiAgICAgICAgICAgICAgICBlZGdlOiBpc1ByZXYgPyAnc3RhcnQnIDogJ2VuZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBpc1ByZXYgPyBFZGl0b3IuYmVmb3JlKGVkaXRvciwgZWRnZSkgOiBFZGl0b3IuYWZ0ZXIoZWRpdG9yLCBlZGdlKTtcblxuICAgICAgICAgICAgaWYgKHBvaW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEVkaXRvci5yYW5nZShlZGl0b3IsIHBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVsc2UgcmVzb2x2ZSBhIHJhbmdlIGZyb20gdGhlIGNhcmV0IHBvc2l0aW9uIHdoZXJlIHRoZSBkcm9wIG9jY3VyZWQuXG4gICAgICAgIGxldCBkb21SYW5nZTogRE9NUmFuZ2U7XG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IEFuZ3VsYXJFZGl0b3IuZ2V0V2luZG93KGVkaXRvcik7XG4gICAgICAgIGNvbnN0IHsgZG9jdW1lbnQgfSA9IHdpbmRvdztcblxuICAgICAgICAvLyBDT01QQVQ6IEluIEZpcmVmb3gsIGBjYXJldFJhbmdlRnJvbVBvaW50YCBkb2Vzbid0IGV4aXN0LiAoMjAxNi8wNy8yNSlcbiAgICAgICAgaWYgKGRvY3VtZW50LmNhcmV0UmFuZ2VGcm9tUG9pbnQpIHtcbiAgICAgICAgICAgIGRvbVJhbmdlID0gZG9jdW1lbnQuY2FyZXRSYW5nZUZyb21Qb2ludCh4LCB5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gKGRvY3VtZW50IGFzIFNhZmVBbnkpLmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQoeCwgeSk7XG5cbiAgICAgICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIGRvbVJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgICAgICAgICBkb21SYW5nZS5zZXRTdGFydChwb3NpdGlvbi5vZmZzZXROb2RlLCBwb3NpdGlvbi5vZmZzZXQpO1xuICAgICAgICAgICAgICAgIGRvbVJhbmdlLnNldEVuZChwb3NpdGlvbi5vZmZzZXROb2RlLCBwb3NpdGlvbi5vZmZzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkb21SYW5nZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBhIFNsYXRlIHJhbmdlIGZyb20gYSBET00gZXZlbnQ6ICR7ZXZlbnR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNvbHZlIGEgU2xhdGUgcmFuZ2UgZnJvbSB0aGUgRE9NIHJhbmdlLlxuICAgICAgICBjb25zdCByYW5nZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZVJhbmdlKGVkaXRvciwgZG9tUmFuZ2UpO1xuICAgICAgICByZXR1cm4gcmFuZ2U7XG4gICAgfSxcblxuICAgIGlzTGVhZkluRWRpdG9yKGVkaXRvcjogQW5ndWxhckVkaXRvciwgbGVhZk5vZGU6IERPTUVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdGV4dE5vZGUgPSBsZWFmTm9kZS5jbG9zZXN0KCdbZGF0YS1zbGF0ZS1ub2RlPVwidGV4dFwiXScpITtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCB0ZXh0Tm9kZSk7XG4gICAgICAgIHJldHVybiBBbmd1bGFyRWRpdG9yLmlzTm9kZUluRWRpdG9yKGVkaXRvciwgbm9kZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEZpbmQgYSBTbGF0ZSBwb2ludCBmcm9tIGEgRE9NIHNlbGVjdGlvbidzIGBkb21Ob2RlYCBhbmQgYGRvbU9mZnNldGAuXG4gICAgICovXG5cbiAgICB0b1NsYXRlUG9pbnQoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCBkb21Qb2ludDogRE9NUG9pbnQpOiBQb2ludCB7XG4gICAgICAgIGNvbnN0IFtkb21Ob2RlXSA9IGRvbVBvaW50O1xuICAgICAgICBjb25zdCBbbmVhcmVzdE5vZGUsIG5lYXJlc3RPZmZzZXRdID0gbm9ybWFsaXplRE9NUG9pbnQoZG9tUG9pbnQpO1xuICAgICAgICBsZXQgcGFyZW50Tm9kZSA9IG5lYXJlc3ROb2RlLnBhcmVudE5vZGUgYXMgRE9NRWxlbWVudDtcbiAgICAgICAgbGV0IHRleHROb2RlOiBET01FbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuXG4gICAgICAgIC8vIGJsb2NrIGNhcmRcbiAgICAgICAgY29uc3QgY2FyZFRhcmdldEF0dHIgPSBnZXRDYXJkVGFyZ2V0QXR0cmlidXRlKGRvbU5vZGUpO1xuICAgICAgICBpZiAoY2FyZFRhcmdldEF0dHIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvbVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQmFja3dhcmQgPSBlZGl0b3Iuc2VsZWN0aW9uICYmIFJhbmdlLmlzQmFja3dhcmQoZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgICAgICAgICBjb25zdCBibG9ja0NhcmRFbnRyeSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZUNhcmRFbnRyeShlZGl0b3IsIGRvbU5vZGUpIHx8IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZUNhcmRFbnRyeShlZGl0b3IsIG5lYXJlc3ROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IFssIGJsb2NrUGF0aF0gPSBibG9ja0NhcmRFbnRyeTtcbiAgICAgICAgICAgIGlmIChkb21TZWxlY3Rpb24uaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNDYXJkTGVmdEJ5VGFyZ2V0QXR0cihjYXJkVGFyZ2V0QXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGF0aDogYmxvY2tQYXRoLCBvZmZzZXQ6IC0xIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGF0aDogYmxvY2tQYXRoLCBvZmZzZXQ6IC0yIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9yd2FyZFxuICAgICAgICAgICAgLy8gYW5kIHRvIHRoZSBlbmQgb2YgcHJldmlvdXMgbm9kZVxuICAgICAgICAgICAgaWYgKGlzQ2FyZExlZnRCeVRhcmdldEF0dHIoY2FyZFRhcmdldEF0dHIpICYmICFpc0JhY2t3YXJkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kUGF0aCA9IGJsb2NrUGF0aFtibG9ja1BhdGgubGVuZ3RoIC0gMV0gPD0gMCA/IGJsb2NrUGF0aCA6IFBhdGgucHJldmlvdXMoYmxvY2tQYXRoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRWRpdG9yLmVuZChlZGl0b3IsIGVuZFBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdG8gdGhlIG9mIGN1cnJlbnQgbm9kZVxuICAgICAgICAgICAgaWYgKChpc0NhcmRDZW50ZXJCeVRhcmdldEF0dHIoY2FyZFRhcmdldEF0dHIpIHx8IGlzQ2FyZFJpZ2h0QnlUYXJnZXRBdHRyKGNhcmRUYXJnZXRBdHRyKSkgJiYgIWlzQmFja3dhcmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRWRpdG9yLmVuZChlZGl0b3IsIGJsb2NrUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBiYWNrd2FyZFxuICAgICAgICAgICAgLy8gYW5kIHRvIHRoZSBzdGFydCBvZiBuZXh0IG5vZGVcbiAgICAgICAgICAgIGlmIChpc0NhcmRSaWdodEJ5VGFyZ2V0QXR0cihjYXJkVGFyZ2V0QXR0cikgJiYgaXNCYWNrd2FyZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBFZGl0b3Iuc3RhcnQoZWRpdG9yLCBQYXRoLm5leHQoYmxvY2tQYXRoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBhbmQgdG8gdGhlIHN0YXJ0IG9mIGN1cnJlbnQgbm9kZVxuICAgICAgICAgICAgaWYgKChpc0NhcmRDZW50ZXJCeVRhcmdldEF0dHIoY2FyZFRhcmdldEF0dHIpIHx8IGlzQ2FyZExlZnRCeVRhcmdldEF0dHIoY2FyZFRhcmdldEF0dHIpKSAmJiBpc0JhY2t3YXJkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEVkaXRvci5zdGFydChlZGl0b3IsIGJsb2NrUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY29uc3Qgdm9pZE5vZGUgPSBwYXJlbnROb2RlLmNsb3Nlc3QoJ1tkYXRhLXNsYXRlLXZvaWQ9XCJ0cnVlXCJdJyk7XG4gICAgICAgICAgICBsZXQgbGVhZk5vZGUgPSBwYXJlbnROb2RlLmNsb3Nlc3QoJ1tkYXRhLXNsYXRlLWxlYWZdJyk7XG4gICAgICAgICAgICBsZXQgZG9tTm9kZTogRE9NRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgaG93IGZhciBpbnRvIHRoZSB0ZXh0IG5vZGUgdGhlIGBuZWFyZXN0Tm9kZWAgaXMsIHNvIHRoYXQgd2VcbiAgICAgICAgICAgIC8vIGNhbiBkZXRlcm1pbmUgd2hhdCB0aGUgb2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSB0ZXh0IG5vZGUgaXMuXG4gICAgICAgICAgICBpZiAobGVhZk5vZGUgJiYgQW5ndWxhckVkaXRvci5pc0xlYWZJbkVkaXRvcihlZGl0b3IsIGxlYWZOb2RlKSkge1xuICAgICAgICAgICAgICAgIHRleHROb2RlID0gbGVhZk5vZGUuY2xvc2VzdCgnW2RhdGEtc2xhdGUtbm9kZT1cInRleHRcIl0nKSE7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2luZG93ID0gQW5ndWxhckVkaXRvci5nZXRXaW5kb3coZWRpdG9yKTtcbiAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KHRleHROb2RlLCAwKTtcbiAgICAgICAgICAgICAgICByYW5nZS5zZXRFbmQobmVhcmVzdE5vZGUsIG5lYXJlc3RPZmZzZXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gcmFuZ2UuY2xvbmVDb250ZW50cygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92YWxzID0gW1xuICAgICAgICAgICAgICAgICAgICAuLi5BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cy5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zbGF0ZS16ZXJvLXdpZHRoXScpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY29udGVudHMucXVlcnlTZWxlY3RvckFsbCgnW2NvbnRlbnRlZGl0YWJsZT1mYWxzZV0nKSlcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgcmVtb3ZhbHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVsIS5wYXJlbnROb2RlIS5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBDT01QQVQ6IEVkZ2UgaGFzIGEgYnVnIHdoZXJlIFJhbmdlLnByb3RvdHlwZS50b1N0cmluZygpIHdpbGxcbiAgICAgICAgICAgICAgICAvLyBjb252ZXJ0IFxcbiBpbnRvIFxcclxcbi4gVGhlIGJ1ZyBjYXVzZXMgYSBsb29wIHdoZW4gc2xhdGUtcmVhY3RcbiAgICAgICAgICAgICAgICAvLyBhdHRlbXB0cyB0byByZXBvc2l0aW9uIGl0cyBjdXJzb3IgdG8gbWF0Y2ggdGhlIG5hdGl2ZSBwb3NpdGlvbi4gVXNlXG4gICAgICAgICAgICAgICAgLy8gdGV4dENvbnRlbnQubGVuZ3RoIGluc3RlYWQuXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNvbS9lbi11cy9taWNyb3NvZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvMTAyOTExMTYvXG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gY29udGVudHMudGV4dENvbnRlbnQhLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBkb21Ob2RlID0gdGV4dE5vZGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZvaWROb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gRm9yIHZvaWQgbm9kZXMsIHRoZSBlbGVtZW50IHdpdGggdGhlIG9mZnNldCBrZXkgd2lsbCBiZSBhIGNvdXNpbiwgbm90IGFuXG4gICAgICAgICAgICAgICAgLy8gYW5jZXN0b3IsIHNvIGZpbmQgaXQgYnkgZ29pbmcgZG93biBmcm9tIHRoZSBuZWFyZXN0IHZvaWQgcGFyZW50LlxuXG4gICAgICAgICAgICAgICAgbGVhZk5vZGUgPSB2b2lkTm9kZS5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zbGF0ZS1sZWFmXScpITtcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0gdm9pZE5vZGUucXVlcnlTZWxlY3RvcignW2RhdGEtc2xhdGUtbGVuZ3RoPVwiMFwiXScpO1xuICAgICAgICAgICAgICAgIHRleHROb2RlID0gbGVhZk5vZGUuY2xvc2VzdCgnW2RhdGEtc2xhdGUtbm9kZT1cInRleHRcIl0nKSE7XG4gICAgICAgICAgICAgICAgZG9tTm9kZSA9IGxlYWZOb2RlO1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IGRvbU5vZGUudGV4dENvbnRlbnQhLmxlbmd0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ09NUEFUOiBJZiB0aGUgcGFyZW50IG5vZGUgaXMgYSBTbGF0ZSB6ZXJvLXdpZHRoIHNwYWNlLCBlZGl0b3IgaXNcbiAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlIHRleHQgbm9kZSBzaG91bGQgaGF2ZSBubyBjaGFyYWN0ZXJzLiBIb3dldmVyLCBkdXJpbmcgSU1FXG4gICAgICAgICAgICAvLyBjb21wb3NpdGlvbiB0aGUgQVNDSUkgY2hhcmFjdGVycyB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgemVyby13aWR0aFxuICAgICAgICAgICAgLy8gc3BhY2UsIHNvIHN1YnRyYWN0IDEgZnJvbSB0aGUgb2Zmc2V0IHRvIGFjY291bnQgZm9yIHRoZSB6ZXJvLXdpZHRoXG4gICAgICAgICAgICAvLyBzcGFjZSBjaGFyYWN0ZXIuXG4gICAgICAgICAgICBpZiAoZG9tTm9kZSAmJiBvZmZzZXQgPT09IGRvbU5vZGUudGV4dENvbnRlbnQhLmxlbmd0aCAmJiBwYXJlbnROb2RlICYmIHBhcmVudE5vZGUuaGFzQXR0cmlidXRlKCdkYXRhLXNsYXRlLXplcm8td2lkdGgnKSkge1xuICAgICAgICAgICAgICAgIG9mZnNldC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0ZXh0Tm9kZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBhIFNsYXRlIHBvaW50IGZyb20gRE9NIHBvaW50OiAke2RvbVBvaW50fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ09NUEFUOiBJZiBzb21lb25lIGlzIGNsaWNraW5nIGZyb20gb25lIFNsYXRlIGVkaXRvciBpbnRvIGFub3RoZXIsXG4gICAgICAgIC8vIHRoZSBzZWxlY3QgZXZlbnQgZmlyZXMgdHdpY2UsIG9uY2UgZm9yIHRoZSBvbGQgZWRpdG9yJ3MgYGVsZW1lbnRgXG4gICAgICAgIC8vIGZpcnN0LCBhbmQgdGhlbiBhZnRlcndhcmRzIGZvciB0aGUgY29ycmVjdCBgZWxlbWVudGAuICgyMDE3LzAzLzAzKVxuICAgICAgICBjb25zdCBzbGF0ZU5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgdGV4dE5vZGUhKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBzbGF0ZU5vZGUpO1xuICAgICAgICByZXR1cm4geyBwYXRoLCBvZmZzZXQgfTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmluZCBhIFNsYXRlIHJhbmdlIGZyb20gYSBET00gcmFuZ2Ugb3Igc2VsZWN0aW9uLlxuICAgICAqL1xuXG4gICAgdG9TbGF0ZVJhbmdlKGVkaXRvcjogQW5ndWxhckVkaXRvciwgZG9tUmFuZ2U6IERPTVJhbmdlIHwgRE9NU3RhdGljUmFuZ2UgfCBET01TZWxlY3Rpb24pOiBSYW5nZSB7XG4gICAgICAgIGNvbnN0IGVsID0gaXNET01TZWxlY3Rpb24oZG9tUmFuZ2UpID8gZG9tUmFuZ2UuYW5jaG9yTm9kZSA6IGRvbVJhbmdlLnN0YXJ0Q29udGFpbmVyO1xuICAgICAgICBsZXQgYW5jaG9yTm9kZTtcbiAgICAgICAgbGV0IGFuY2hvck9mZnNldDtcbiAgICAgICAgbGV0IGZvY3VzTm9kZTtcbiAgICAgICAgbGV0IGZvY3VzT2Zmc2V0O1xuICAgICAgICBsZXQgaXNDb2xsYXBzZWQ7XG5cbiAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICBpZiAoaXNET01TZWxlY3Rpb24oZG9tUmFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgYW5jaG9yTm9kZSA9IGRvbVJhbmdlLmFuY2hvck5vZGU7XG4gICAgICAgICAgICAgICAgYW5jaG9yT2Zmc2V0ID0gZG9tUmFuZ2UuYW5jaG9yT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGZvY3VzTm9kZSA9IGRvbVJhbmdlLmZvY3VzTm9kZTtcbiAgICAgICAgICAgICAgICBmb2N1c09mZnNldCA9IGRvbVJhbmdlLmZvY3VzT2Zmc2V0O1xuICAgICAgICAgICAgICAgIC8vIENPTVBBVDogVGhlcmUncyBhIGJ1ZyBpbiBjaHJvbWUgdGhhdCBhbHdheXMgcmV0dXJucyBgdHJ1ZWAgZm9yXG4gICAgICAgICAgICAgICAgLy8gYGlzQ29sbGFwc2VkYCBmb3IgYSBTZWxlY3Rpb24gdGhhdCBjb21lcyBmcm9tIGEgU2hhZG93Um9vdC5cbiAgICAgICAgICAgICAgICAvLyAoMjAyMC8wOC8wOClcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NDc1MjNcbiAgICAgICAgICAgICAgICBpZiAoSVNfQ0hST01FICYmIGhhc1NoYWRvd1Jvb3QoKSkge1xuICAgICAgICAgICAgICAgICAgICBpc0NvbGxhcHNlZCA9IGRvbVJhbmdlLmFuY2hvck5vZGUgPT09IGRvbVJhbmdlLmZvY3VzTm9kZSAmJiBkb21SYW5nZS5hbmNob3JPZmZzZXQgPT09IGRvbVJhbmdlLmZvY3VzT2Zmc2V0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkID0gZG9tUmFuZ2UuaXNDb2xsYXBzZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhbmNob3JOb2RlID0gZG9tUmFuZ2Uuc3RhcnRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgYW5jaG9yT2Zmc2V0ID0gZG9tUmFuZ2Uuc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZm9jdXNOb2RlID0gZG9tUmFuZ2UuZW5kQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgIGZvY3VzT2Zmc2V0ID0gZG9tUmFuZ2UuZW5kT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkID0gZG9tUmFuZ2UuY29sbGFwc2VkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFuY2hvck5vZGUgPT0gbnVsbCB8fCBmb2N1c05vZGUgPT0gbnVsbCB8fCBhbmNob3JPZmZzZXQgPT0gbnVsbCB8fCBmb2N1c09mZnNldCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGEgU2xhdGUgcmFuZ2UgZnJvbSBET00gcmFuZ2U6ICR7ZG9tUmFuZ2V9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhbmNob3IgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVQb2ludChlZGl0b3IsIFthbmNob3JOb2RlLCBhbmNob3JPZmZzZXRdKTtcbiAgICAgICAgY29uc3QgZm9jdXMgPSBpc0NvbGxhcHNlZCA/IGFuY2hvciA6IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZVBvaW50KGVkaXRvciwgW2ZvY3VzTm9kZSwgZm9jdXNPZmZzZXRdKTtcblxuICAgICAgICByZXR1cm4geyBhbmNob3IsIGZvY3VzIH07XG4gICAgfSxcblxuICAgIGlzTGVhZkJsb2NrKGVkaXRvcjogQW5ndWxhckVkaXRvciwgbm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgIWVkaXRvci5pc0lubGluZShub2RlKSAmJiBFZGl0b3IuaGFzSW5saW5lcyhlZGl0b3IsIG5vZGUpO1xuICAgIH0sXG5cbiAgICBpc0Jsb2NrQ2FyZExlZnRDdXJzb3IoZWRpdG9yOiBBbmd1bGFyRWRpdG9yKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5vZmZzZXQgPT09IEZBS0VfTEVGVF9CTE9DS19DQVJEX09GRlNFVCAmJiBlZGl0b3Iuc2VsZWN0aW9uLmZvY3VzLm9mZnNldCA9PT0gRkFLRV9MRUZUX0JMT0NLX0NBUkRfT0ZGU0VUXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIGlzQmxvY2tDYXJkUmlnaHRDdXJzb3IoZWRpdG9yOiBBbmd1bGFyRWRpdG9yKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5vZmZzZXQgPT09IEZBS0VfUklHSFRfQkxPQ0tfQ0FSRF9PRkZTRVQgJiZcbiAgICAgICAgICAgIGVkaXRvci5zZWxlY3Rpb24uZm9jdXMub2Zmc2V0ID09PSBGQUtFX1JJR0hUX0JMT0NLX0NBUkRfT0ZGU0VUXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIGdldENhcmRDdXJzb3JOb2RlKFxuICAgICAgICBlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsXG4gICAgICAgIGJsb2NrQ2FyZE5vZGU6IE5vZGUsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInO1xuICAgICAgICB9XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIGJsb2NrQ2FyZE5vZGUpO1xuICAgICAgICBjb25zdCBjYXJkQ2VudGVyID0gYmxvY2tDYXJkRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5kaXJlY3Rpb24gPT09ICdsZWZ0JyA/IGNhcmRDZW50ZXIucHJldmlvdXNFbGVtZW50U2libGluZy5maXJzdENoaWxkIDogY2FyZENlbnRlci5uZXh0RWxlbWVudFNpYmxpbmcuZmlyc3RDaGlsZDtcbiAgICB9LFxuXG4gICAgdG9TbGF0ZUNhcmRFbnRyeShlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIG5vZGU6IERPTU5vZGUpOiBOb2RlRW50cnkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gbm9kZS5wYXJlbnRFbGVtZW50LmNsb3Nlc3QoJy5zbGF0ZS1ibG9jay1jYXJkJyk/LnF1ZXJ5U2VsZWN0b3IoJ1tjYXJkLXRhcmdldD1cImNhcmQtY2VudGVyXCJdJykuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIGNvbnN0IHNsYXRlTm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBzbGF0ZU5vZGUpO1xuICAgICAgICByZXR1cm4gW3NsYXRlTm9kZSwgcGF0aF07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIG1vdmUgbmF0aXZlIHNlbGVjdGlvbiB0byBjYXJkLWxlZnQgb3IgY2FyZC1yaWdodFxuICAgICAqIEBwYXJhbSBlZGl0b3JcbiAgICAgKiBAcGFyYW0gYmxvY2tDYXJkTm9kZVxuICAgICAqIEBwYXJhbSBvcHRpb25zXG4gICAgICovXG4gICAgbW92ZUJsb2NrQ2FyZChcbiAgICAgICAgZWRpdG9yOiBBbmd1bGFyRWRpdG9yLFxuICAgICAgICBibG9ja0NhcmROb2RlOiBOb2RlLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCc7XG4gICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgY29uc3QgY3Vyc29yTm9kZSA9IEFuZ3VsYXJFZGl0b3IuZ2V0Q2FyZEN1cnNvck5vZGUoZWRpdG9yLCBibG9ja0NhcmROb2RlLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3Qgd2luZG93ID0gQW5ndWxhckVkaXRvci5nZXRXaW5kb3coZWRpdG9yKTtcbiAgICAgICAgY29uc3QgZG9tU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBkb21TZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudChjdXJzb3JOb2RlLCAxLCBjdXJzb3JOb2RlLCAxKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogbW92ZSBzbGF0ZSBzZWxlY3Rpb24gdG8gY2FyZC1sZWZ0IG9yIGNhcmQtcmlnaHRcbiAgICAgKiBAcGFyYW0gZWRpdG9yXG4gICAgICogQHBhcmFtIHBhdGhcbiAgICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgICAqL1xuICAgIG1vdmVCbG9ja0NhcmRDdXJzb3IoXG4gICAgICAgIGVkaXRvcjogQW5ndWxhckVkaXRvcixcbiAgICAgICAgcGF0aDogUGF0aCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnO1xuICAgICAgICB9XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGN1cnNvciA9IHtcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICBvZmZzZXQ6IG9wdGlvbnMuZGlyZWN0aW9uID09PSAnbGVmdCcgPyBGQUtFX0xFRlRfQkxPQ0tfQ0FSRF9PRkZTRVQgOiBGQUtFX1JJR0hUX0JMT0NLX0NBUkRfT0ZGU0VUXG4gICAgICAgIH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgeyBhbmNob3I6IGN1cnNvciwgZm9jdXM6IGN1cnNvciB9KTtcbiAgICB9LFxuXG4gICAgaGFzUmFuZ2UoZWRpdG9yOiBBbmd1bGFyRWRpdG9yLCByYW5nZTogUmFuZ2UpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgeyBhbmNob3IsIGZvY3VzIH0gPSByYW5nZTtcbiAgICAgICAgcmV0dXJuIEVkaXRvci5oYXNQYXRoKGVkaXRvciwgYW5jaG9yLnBhdGgpICYmIEVkaXRvci5oYXNQYXRoKGVkaXRvciwgZm9jdXMucGF0aCk7XG4gICAgfVxufTtcbiJdfQ==
|
|
@@ -214,4 +214,4 @@ export const withAngular = (editor, clipboardFormatKey = 'x-slate-fragment') =>
|
|
|
214
214
|
};
|
|
215
215
|
return e;
|
|
216
216
|
};
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvd2l0aC1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFzQixNQUFNLE9BQU8sQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQU8seUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDckgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFtQixNQUFTLEVBQUUsa0JBQWtCLEdBQUcsa0JBQWtCLEVBQUUsRUFBRTtJQUNoRyxNQUFNLENBQUMsR0FBRyxNQUEyQixDQUFDO0lBQ3RDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUU5QyxDQUFDLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFO1FBQ3RCLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNqQixPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjtRQUVELElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN6RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEVBQUUsRUFBRSxNQUFN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cG9ydCB7IEVkaXRvciwgTm9kZSwgVHJhbnNmb3JtcywgUmFuZ2UsIFBhdGgsIE9wZXJhdGlvbiwgUGF0aFJlZiB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEVESVRPUl9UT19PTl9DSEFOR0UsIE5PREVfVE9fS0VZLCBpc0RPTVRleHQsIGdldFBsYWluVGV4dCwgS2V5LCBnZXRTbGF0ZUZyYWdtZW50QXR0cmlidXRlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJy4vYW5ndWxhci1lZGl0b3InO1xuaW1wb3J0IHsgU2xhdGVFcnJvciB9IGZyb20gJy4uL3R5cGVzL2Vycm9yJztcbmltcG9ydCB7IGZpbmRDdXJyZW50TGluZVJhbmdlIH0gZnJvbSAnLi4vdXRpbHMvbGluZXMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aEFuZ3VsYXIgPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBULCBjbGlwYm9hcmRGb3JtYXRLZXkgPSAneC1zbGF0ZS1mcmFnbWVudCcpID0+IHtcbiAgICBjb25zdCBlID0gZWRpdG9yIGFzIFQgJiBBbmd1bGFyRWRpdG9yO1xuICAgIGNvbnN0IHsgYXBwbHksIG9uQ2hhbmdlLCBkZWxldGVCYWNrd2FyZCB9ID0gZTtcblxuICAgIGUuZGVsZXRlQmFja3dhcmQgPSB1bml0ID0+IHtcbiAgICAgICAgaWYgKHVuaXQgIT09ICdsaW5lJykge1xuICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZUJhY2t3YXJkKHVuaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb24gJiYgUmFuZ2UuaXNDb2xsYXBzZWQoZWRpdG9yLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEJsb2NrRW50cnkgPSBFZGl0b3IuYWJvdmUoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgbWF0Y2g6IG4gPT4gRWRpdG9yLmlzQmxvY2soZWRpdG9yLCBuKSxcbiAgICAgICAgICAgICAgICBhdDogZWRpdG9yLnNlbGVjdGlvblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnRCbG9ja0VudHJ5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGFyZW50QmxvY2tQYXRoXSA9IHBhcmVudEJsb2NrRW50cnk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudFJhbmdlID0gRWRpdG9yLnJhbmdlKGVkaXRvciwgcGFyZW50QmxvY2tQYXRoLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvcik7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TGluZVJhbmdlID0gZmluZEN1cnJlbnRMaW5lUmFuZ2UoZSwgcGFyZW50RWxlbWVudFJhbmdlKTtcblxuICAgICAgICAgICAgICAgIGlmICghUmFuZ2UuaXNDb2xsYXBzZWQoY3VycmVudExpbmVSYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBjdXJyZW50TGluZVJhbmdlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBlLmFwcGx5ID0gKG9wOiBPcGVyYXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2hlczogW1BhdGggfCBQYXRoUmVmLCBLZXldW10gPSBbXTtcblxuICAgICAgICBzd2l0Y2ggKG9wLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2luc2VydF90ZXh0JzpcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV90ZXh0JzpcbiAgICAgICAgICAgIGNhc2UgJ3NldF9ub2RlJzoge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW25vZGUsIHBhdGhdIG9mIEVkaXRvci5sZXZlbHMoZSwgeyBhdDogb3AucGF0aCB9KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBBbmd1bGFyRWRpdG9yLmZpbmRLZXkoZSwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChbcGF0aCwga2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ2luc2VydF9ub2RlJzpcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9ub2RlJzpcbiAgICAgICAgICAgIGNhc2UgJ21lcmdlX25vZGUnOlxuICAgICAgICAgICAgY2FzZSAnc3BsaXRfbm9kZSc6IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtub2RlLCBwYXRoXSBvZiBFZGl0b3IubGV2ZWxzKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgYXQ6IFBhdGgucGFyZW50KG9wLnBhdGgpXG4gICAgICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gQW5ndWxhckVkaXRvci5maW5kS2V5KGUsIG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goW3BhdGgsIGtleV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdtb3ZlX25vZGUnOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tbW9uUGF0aCA9IFBhdGguY29tbW9uKFBhdGgucGFyZW50KG9wLnBhdGgpLCBQYXRoLnBhcmVudChvcC5uZXdQYXRoKSk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbbm9kZSwgcGF0aF0gb2YgRWRpdG9yLmxldmVscyhlLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0OiBQYXRoLnBhcmVudChvcC5wYXRoKVxuICAgICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IEFuZ3VsYXJFZGl0b3IuZmluZEtleShlLCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKFtFZGl0b3IucGF0aFJlZihlZGl0b3IsIHBhdGgpLCBrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbbm9kZSwgcGF0aF0gb2YgRWRpdG9yLmxldmVscyhlLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0OiBQYXRoLnBhcmVudChvcC5uZXdQYXRoKVxuICAgICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA+IGNvbW1vblBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBBbmd1bGFyRWRpdG9yLmZpbmRLZXkoZSwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goW0VkaXRvci5wYXRoUmVmKGVkaXRvciwgcGF0aCksIGtleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHkob3ApO1xuXG4gICAgICAgIGZvciAoY29uc3QgW3NvdXJjZSwga2V5XSBvZiBtYXRjaGVzKSB7XG4gICAgICAgICAgICBjb25zdCBbbm9kZV0gPSBFZGl0b3Iubm9kZShlLCBQYXRoLmlzUGF0aChzb3VyY2UpID8gc291cmNlIDogc291cmNlLmN1cnJlbnQpO1xuICAgICAgICAgICAgTk9ERV9UT19LRVkuc2V0KG5vZGUsIGtleSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZS5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgb25Db250ZXh0Q2hhbmdlID0gRURJVE9SX1RPX09OX0NIQU5HRS5nZXQoZSk7XG5cbiAgICAgICAgaWYgKG9uQ29udGV4dENoYW5nZSkge1xuICAgICAgICAgICAgb25Db250ZXh0Q2hhbmdlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBvbkNoYW5nZSgpO1xuICAgIH07XG5cbiAgICBlLnNldEZyYWdtZW50RGF0YSA9IChkYXRhOiBQaWNrPERhdGFUcmFuc2ZlciwgJ2dldERhdGEnIHwgJ3NldERhdGEnPikgPT4ge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZTtcblxuICAgICAgICBpZiAoIXNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gUmFuZ2UuZWRnZXMoc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3Qgc3RhcnRWb2lkID0gRWRpdG9yLnZvaWQoZSwgeyBhdDogc3RhcnQucGF0aCB9KTtcbiAgICAgICAgY29uc3QgZW5kVm9pZCA9IEVkaXRvci52b2lkKGUsIHsgYXQ6IGVuZC5wYXRoIH0pO1xuXG4gICAgICAgIGlmIChSYW5nZS5pc0NvbGxhcHNlZChzZWxlY3Rpb24pICYmICFzdGFydFZvaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhIGZha2Ugc2VsZWN0aW9uIHNvIHRoYXQgd2UgY2FuIGFkZCBhIEJhc2U2NC1lbmNvZGVkIGNvcHkgb2YgdGhlXG4gICAgICAgIC8vIGZyYWdtZW50IHRvIHRoZSBIVE1MLCB0byBkZWNvZGUgb24gZnV0dXJlIHBhc3Rlcy5cbiAgICAgICAgY29uc3QgZG9tUmFuZ2UgPSBBbmd1bGFyRWRpdG9yLnRvRE9NUmFuZ2UoZSwgc2VsZWN0aW9uKTtcbiAgICAgICAgbGV0IGNvbnRlbnRzID0gZG9tUmFuZ2UuY2xvbmVDb250ZW50cygpO1xuICAgICAgICBsZXQgYXR0YWNoID0gY29udGVudHMuY2hpbGROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICAvLyBNYWtlIHN1cmUgYXR0YWNoIGlzIG5vbi1lbXB0eSwgc2luY2UgZW1wdHkgbm9kZXMgd2lsbCBub3QgZ2V0IGNvcGllZC5cbiAgICAgICAgY29uc3QgY29udGVudHNBcnJheSA9IEFycmF5LmZyb20oY29udGVudHMuY2hpbGRyZW4pO1xuICAgICAgICBjb250ZW50c0FycmF5LmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAobm9kZS50ZXh0Q29udGVudCAmJiBub2RlLnRleHRDb250ZW50LnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBhdHRhY2ggPSBub2RlIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDT01QQVQ6IElmIHRoZSBlbmQgbm9kZSBpcyBhIHZvaWQgbm9kZSwgd2UgbmVlZCB0byBtb3ZlIHRoZSBlbmQgb2YgdGhlXG4gICAgICAgIC8vIHJhbmdlIGZyb20gdGhlIHZvaWQgbm9kZSdzIHNwYWNlciBzcGFuLCB0byB0aGUgZW5kIG9mIHRoZSB2b2lkIG5vZGUnc1xuICAgICAgICAvLyBjb250ZW50LCBzaW5jZSB0aGUgc3BhY2VyIGlzIGJlZm9yZSB2b2lkJ3MgY29udGVudCBpbiB0aGUgRE9NLlxuICAgICAgICBpZiAoZW5kVm9pZCkge1xuICAgICAgICAgICAgY29uc3QgW3ZvaWROb2RlXSA9IGVuZFZvaWQ7XG4gICAgICAgICAgICBjb25zdCByID0gZG9tUmFuZ2UuY2xvbmVSYW5nZSgpO1xuICAgICAgICAgICAgY29uc3QgZG9tTm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKGUsIHZvaWROb2RlKTtcbiAgICAgICAgICAgIHIuc2V0RW5kQWZ0ZXIoZG9tTm9kZSk7XG4gICAgICAgICAgICBjb250ZW50cyA9IHIuY2xvbmVDb250ZW50cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ09NUEFUOiBJZiB0aGUgc3RhcnQgbm9kZSBpcyBhIHZvaWQgbm9kZSwgd2UgbmVlZCB0byBhdHRhY2ggdGhlIGVuY29kZWRcbiAgICAgICAgLy8gZnJhZ21lbnQgdG8gdGhlIHZvaWQgbm9kZSdzIGNvbnRlbnQgbm9kZSBpbnN0ZWFkIG9mIHRoZSBzcGFjZXIsIGJlY2F1c2VcbiAgICAgICAgLy8gYXR0YWNoaW5nIGl0IHRvIGVtcHR5IGA8ZGl2Pi88c3Bhbj5gIG5vZGVzIHdpbGwgZW5kIHVwIGhhdmluZyBpdCBlcmFzZWQgYnlcbiAgICAgICAgLy8gbW9zdCBicm93c2Vycy4gKDIwMTgvMDQvMjcpXG4gICAgICAgIGlmIChzdGFydFZvaWQpIHtcbiAgICAgICAgICAgIGF0dGFjaCA9IGNvbnRlbnRzLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXNsYXRlLXNwYWNlcl0nKSEgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgYW55IHplcm8td2lkdGggc3BhY2Ugc3BhbnMgZnJvbSB0aGUgY2xvbmVkIERPTSBzbyB0aGF0IHRoZXkgZG9uJ3RcbiAgICAgICAgLy8gc2hvdyB1cCBlbHNld2hlcmUgd2hlbiBwYXN0ZWQuXG4gICAgICAgIEFycmF5LmZyb20oY29udGVudHMucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc2xhdGUtemVyby13aWR0aF0nKSkuZm9yRWFjaCh6dyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc05ld2xpbmUgPSB6dy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xhdGUtemVyby13aWR0aCcpID09PSAnbic7XG4gICAgICAgICAgICB6dy50ZXh0Q29udGVudCA9IGlzTmV3bGluZSA/ICdcXG4nIDogJyc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldCBhIGBkYXRhLXNsYXRlLWZyYWdtZW50YCBhdHRyaWJ1dGUgb24gYSBub24tZW1wdHkgbm9kZSwgc28gaXQgc2hvd3MgdXBcbiAgICAgICAgLy8gaW4gdGhlIEhUTUwsIGFuZCBjYW4gYmUgdXNlZCBmb3IgaW50cmEtU2xhdGUgcGFzdGluZy4gSWYgaXQncyBhIHRleHRcbiAgICAgICAgLy8gbm9kZSwgd3JhcCBpdCBpbiBhIGA8c3Bhbj5gIHNvIHdlIGhhdmUgc29tZXRoaW5nIHRvIHNldCBhbiBhdHRyaWJ1dGUgb24uXG4gICAgICAgIGlmIChpc0RPTVRleHQoYXR0YWNoKSkge1xuICAgICAgICAgICAgY29uc3Qgc3BhbiA9IGF0dGFjaC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIC8vIENPTVBBVDogSW4gQ2hyb21lIGFuZCBTYWZhcmksIGlmIHdlIGRvbid0IGFkZCB0aGUgYHdoaXRlLXNwYWNlYCBzdHlsZVxuICAgICAgICAgICAgLy8gdGhlbiBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgd2lsbCBiZSBpZ25vcmVkLiAoMjAxNy8wOS8yMSlcbiAgICAgICAgICAgIHNwYW4uc3R5bGUud2hpdGVTcGFjZSA9ICdwcmUnO1xuICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChhdHRhY2gpO1xuICAgICAgICAgICAgY29udGVudHMuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgICAgICAgICBhdHRhY2ggPSBzcGFuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBlLmdldEZyYWdtZW50KCk7XG4gICAgICAgIGNvbnN0IHN0cmluZ09iaiA9IEpTT04uc3RyaW5naWZ5KGZyYWdtZW50KTtcbiAgICAgICAgY29uc3QgZW5jb2RlZCA9IHdpbmRvdy5idG9hKGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdPYmopKTtcbiAgICAgICAgYXR0YWNoLnNldEF0dHJpYnV0ZSgnZGF0YS1zbGF0ZS1mcmFnbWVudCcsIGVuY29kZWQpO1xuICAgICAgICBkYXRhLnNldERhdGEoYGFwcGxpY2F0aW9uLyR7Y2xpcGJvYXJkRm9ybWF0S2V5fWAsIGVuY29kZWQpO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgY29udGVudCB0byBhIDxkaXY+IHNvIHRoYXQgd2UgY2FuIGdldCBpdHMgaW5uZXIgSFRNTC5cbiAgICAgICAgY29uc3QgZGl2ID0gY29udGVudHMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZGl2LmFwcGVuZENoaWxkKGNvbnRlbnRzKTtcbiAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgICAgY29udGVudHMub3duZXJEb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG4gICAgICAgIGRhdGEuc2V0RGF0YSgndGV4dC9odG1sJywgZGl2LmlubmVySFRNTCk7XG4gICAgICAgIGRhdGEuc2V0RGF0YSgndGV4dC9wbGFpbicsIGdldFBsYWluVGV4dChkaXYpKTtcbiAgICAgICAgY29udGVudHMub3duZXJEb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH07XG5cbiAgICBlLmRlbGV0ZUN1dERhdGEgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmIChSYW5nZS5pc0V4cGFuZGVkKHNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICBFZGl0b3IuZGVsZXRlRnJhZ21lbnQoZWRpdG9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IE5vZGUucGFyZW50KGVkaXRvciwgc2VsZWN0aW9uLmFuY2hvci5wYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoRWRpdG9yLmlzVm9pZChlZGl0b3IsIG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVsZXRlKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGUuaW5zZXJ0RGF0YSA9IChkYXRhOiBEYXRhVHJhbnNmZXIpID0+IHtcbiAgICAgICAgaWYgKCFlLmluc2VydEZyYWdtZW50RGF0YShkYXRhKSkge1xuICAgICAgICAgICAgZS5pbnNlcnRUZXh0RGF0YShkYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBlLmluc2VydEZyYWdtZW50RGF0YSA9IChkYXRhOiBEYXRhVHJhbnNmZXIpOiBib29sZWFuID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNraW5nIGNvcGllZCBmcmFnbWVudCBmcm9tIGFwcGxpY2F0aW9uL3gtc2xhdGUtZnJhZ21lbnQgb3IgZGF0YS1zbGF0ZS1mcmFnbWVudFxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBkYXRhLmdldERhdGEoYGFwcGxpY2F0aW9uLyR7Y2xpcGJvYXJkRm9ybWF0S2V5fWApIHx8IGdldFNsYXRlRnJhZ21lbnRBdHRyaWJ1dGUoZGF0YSk7XG5cbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5hdG9iKGZyYWdtZW50KSk7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGRlY29kZWQpIGFzIE5vZGVbXTtcbiAgICAgICAgICAgIGUuaW5zZXJ0RnJhZ21lbnQocGFyc2VkKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuXG4gICAgZS5pbnNlcnRUZXh0RGF0YSA9IChkYXRhOiBEYXRhVHJhbnNmZXIpOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuXG4gICAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoL1xcclxcbnxcXHJ8XFxuLyk7XG4gICAgICAgICAgICBsZXQgc3BsaXQgPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc3BsaXROb2RlcyhlLCB7IGFsd2F5czogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLmluc2VydFRleHQobGluZSk7XG4gICAgICAgICAgICAgICAgc3BsaXQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBlLm9uS2V5ZG93biA9ICgpID0+IHt9O1xuXG4gICAgZS5vbkNsaWNrID0gKCkgPT4ge307XG5cbiAgICBlLmlzQmxvY2tDYXJkID0gZWxlbWVudCA9PiBmYWxzZTtcblxuICAgIGUub25FcnJvciA9IChlcnJvckRhdGE6IFNsYXRlRXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yRGF0YS5uYXRpdmVFcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvckRhdGEubmF0aXZlRXJyb3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvckRhdGEpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBlO1xufTtcbiJdfQ==
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvd2l0aC1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFzQixNQUFNLE9BQU8sQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQU8seUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDckgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFtQixNQUFTLEVBQUUsa0JBQWtCLEdBQUcsa0JBQWtCLEVBQUUsRUFBRTtJQUNoRyxNQUFNLENBQUMsR0FBRyxNQUEyQixDQUFDO0lBQ3RDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUU5QyxDQUFDLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFO1FBQ3RCLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMxRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3JD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Q0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFFakMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLFNBQXFCLEVBQUUsRUFBRTtRQUNsQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBOb2RlLCBUcmFuc2Zvcm1zLCBSYW5nZSwgUGF0aCwgT3BlcmF0aW9uLCBQYXRoUmVmIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRURJVE9SX1RPX09OX0NIQU5HRSwgTk9ERV9UT19LRVksIGlzRE9NVGV4dCwgZ2V0UGxhaW5UZXh0LCBLZXksIGdldFNsYXRlRnJhZ21lbnRBdHRyaWJ1dGUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnLi9hbmd1bGFyLWVkaXRvcic7XG5pbXBvcnQgeyBTbGF0ZUVycm9yIH0gZnJvbSAnLi4vdHlwZXMvZXJyb3InO1xuaW1wb3J0IHsgZmluZEN1cnJlbnRMaW5lUmFuZ2UgfSBmcm9tICcuLi91dGlscy9saW5lcyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoQW5ndWxhciA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQsIGNsaXBib2FyZEZvcm1hdEtleSA9ICd4LXNsYXRlLWZyYWdtZW50JykgPT4ge1xuICAgIGNvbnN0IGUgPSBlZGl0b3IgYXMgVCAmIEFuZ3VsYXJFZGl0b3I7XG4gICAgY29uc3QgeyBhcHBseSwgb25DaGFuZ2UsIGRlbGV0ZUJhY2t3YXJkIH0gPSBlO1xuXG4gICAgZS5kZWxldGVCYWNrd2FyZCA9IHVuaXQgPT4ge1xuICAgICAgICBpZiAodW5pdCAhPT0gJ2xpbmUnKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVsZXRlQmFja3dhcmQodW5pdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbiAmJiBSYW5nZS5pc0NvbGxhcHNlZChlZGl0b3Iuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50QmxvY2tFbnRyeSA9IEVkaXRvci5hYm92ZShlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICBtYXRjaDogbiA9PiBFZGl0b3IuaXNCbG9jayhlZGl0b3IsIG4pLFxuICAgICAgICAgICAgICAgIGF0OiBlZGl0b3Iuc2VsZWN0aW9uXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudEJsb2NrRW50cnkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBwYXJlbnRCbG9ja1BhdGhdID0gcGFyZW50QmxvY2tFbnRyeTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50UmFuZ2UgPSBFZGl0b3IucmFuZ2UoZWRpdG9yLCBwYXJlbnRCbG9ja1BhdGgsIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRMaW5lUmFuZ2UgPSBmaW5kQ3VycmVudExpbmVSYW5nZShlLCBwYXJlbnRFbGVtZW50UmFuZ2UpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFSYW5nZS5pc0NvbGxhcHNlZChjdXJyZW50TGluZVJhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLmRlbGV0ZShlZGl0b3IsIHsgYXQ6IGN1cnJlbnRMaW5lUmFuZ2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGUuYXBwbHkgPSAob3A6IE9wZXJhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVzOiBbUGF0aCB8IFBhdGhSZWYsIEtleV1bXSA9IFtdO1xuXG4gICAgICAgIHN3aXRjaCAob3AudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnaW5zZXJ0X3RleHQnOlxuICAgICAgICAgICAgY2FzZSAncmVtb3ZlX3RleHQnOlxuICAgICAgICAgICAgY2FzZSAnc2V0X25vZGUnOiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbbm9kZSwgcGF0aF0gb2YgRWRpdG9yLmxldmVscyhlLCB7IGF0OiBvcC5wYXRoIH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IEFuZ3VsYXJFZGl0b3IuZmluZEtleShlLCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKFtwYXRoLCBrZXldKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnaW5zZXJ0X25vZGUnOlxuICAgICAgICAgICAgY2FzZSAncmVtb3ZlX25vZGUnOlxuICAgICAgICAgICAgY2FzZSAnbWVyZ2Vfbm9kZSc6XG4gICAgICAgICAgICBjYXNlICdzcGxpdF9ub2RlJzoge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW25vZGUsIHBhdGhdIG9mIEVkaXRvci5sZXZlbHMoZSwge1xuICAgICAgICAgICAgICAgICAgICBhdDogUGF0aC5wYXJlbnQob3AucGF0aClcbiAgICAgICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBBbmd1bGFyRWRpdG9yLmZpbmRLZXkoZSwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChbcGF0aCwga2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ21vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21tb25QYXRoID0gUGF0aC5jb21tb24oUGF0aC5wYXJlbnQob3AucGF0aCksIFBhdGgucGFyZW50KG9wLm5ld1BhdGgpKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtub2RlLCBwYXRoXSBvZiBFZGl0b3IubGV2ZWxzKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgYXQ6IFBhdGgucGFyZW50KG9wLnBhdGgpXG4gICAgICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gQW5ndWxhckVkaXRvci5maW5kS2V5KGUsIG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goW0VkaXRvci5wYXRoUmVmKGVkaXRvciwgcGF0aCksIGtleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtub2RlLCBwYXRoXSBvZiBFZGl0b3IubGV2ZWxzKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgYXQ6IFBhdGgucGFyZW50KG9wLm5ld1BhdGgpXG4gICAgICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGgubGVuZ3RoID4gY29tbW9uUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IEFuZ3VsYXJFZGl0b3IuZmluZEtleShlLCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChbRWRpdG9yLnBhdGhSZWYoZWRpdG9yLCBwYXRoKSwga2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhcHBseShvcCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBbc291cmNlLCBrZXldIG9mIG1hdGNoZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IFtub2RlXSA9IEVkaXRvci5ub2RlKGUsIFBhdGguaXNQYXRoKHNvdXJjZSkgPyBzb3VyY2UgOiBzb3VyY2UuY3VycmVudCk7XG4gICAgICAgICAgICBOT0RFX1RPX0tFWS5zZXQobm9kZSwga2V5KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBlLm9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBvbkNvbnRleHRDaGFuZ2UgPSBFRElUT1JfVE9fT05fQ0hBTkdFLmdldChlKTtcblxuICAgICAgICBpZiAob25Db250ZXh0Q2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIGUuc2V0RnJhZ21lbnREYXRhID0gKGRhdGE6IFBpY2s8RGF0YVRyYW5zZmVyLCAnZ2V0RGF0YScgfCAnc2V0RGF0YSc+KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlO1xuXG4gICAgICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSBSYW5nZS5lZGdlcyhzZWxlY3Rpb24pO1xuICAgICAgICBjb25zdCBzdGFydFZvaWQgPSBFZGl0b3Iudm9pZChlLCB7IGF0OiBzdGFydC5wYXRoIH0pO1xuICAgICAgICBjb25zdCBlbmRWb2lkID0gRWRpdG9yLnZvaWQoZSwgeyBhdDogZW5kLnBhdGggfSk7XG5cbiAgICAgICAgaWYgKFJhbmdlLmlzQ29sbGFwc2VkKHNlbGVjdGlvbikgJiYgIXN0YXJ0Vm9pZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgZmFrZSBzZWxlY3Rpb24gc28gdGhhdCB3ZSBjYW4gYWRkIGEgQmFzZTY0LWVuY29kZWQgY29weSBvZiB0aGVcbiAgICAgICAgLy8gZnJhZ21lbnQgdG8gdGhlIEhUTUwsIHRvIGRlY29kZSBvbiBmdXR1cmUgcGFzdGVzLlxuICAgICAgICBjb25zdCBkb21SYW5nZSA9IEFuZ3VsYXJFZGl0b3IudG9ET01SYW5nZShlLCBzZWxlY3Rpb24pO1xuICAgICAgICBsZXQgY29udGVudHMgPSBkb21SYW5nZS5jbG9uZUNvbnRlbnRzKCk7XG4gICAgICAgIGxldCBhdHRhY2ggPSBjb250ZW50cy5jaGlsZE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSBhdHRhY2ggaXMgbm9uLWVtcHR5LCBzaW5jZSBlbXB0eSBub2RlcyB3aWxsIG5vdCBnZXQgY29waWVkLlxuICAgICAgICBjb25zdCBjb250ZW50c0FycmF5ID0gQXJyYXkuZnJvbShjb250ZW50cy5jaGlsZHJlbik7XG4gICAgICAgIGNvbnRlbnRzQXJyYXkuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGlmIChub2RlLnRleHRDb250ZW50ICYmIG5vZGUudGV4dENvbnRlbnQudHJpbSgpICE9PSAnJykge1xuICAgICAgICAgICAgICAgIGF0dGFjaCA9IG5vZGUgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENPTVBBVDogSWYgdGhlIGVuZCBub2RlIGlzIGEgdm9pZCBub2RlLCB3ZSBuZWVkIHRvIG1vdmUgdGhlIGVuZCBvZiB0aGVcbiAgICAgICAgLy8gcmFuZ2UgZnJvbSB0aGUgdm9pZCBub2RlJ3Mgc3BhY2VyIHNwYW4sIHRvIHRoZSBlbmQgb2YgdGhlIHZvaWQgbm9kZSdzXG4gICAgICAgIC8vIGNvbnRlbnQsIHNpbmNlIHRoZSBzcGFjZXIgaXMgYmVmb3JlIHZvaWQncyBjb250ZW50IGluIHRoZSBET00uXG4gICAgICAgIGlmIChlbmRWb2lkKSB7XG4gICAgICAgICAgICBjb25zdCBbdm9pZE5vZGVdID0gZW5kVm9pZDtcbiAgICAgICAgICAgIGNvbnN0IHIgPSBkb21SYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgICAgICAgICBjb25zdCBkb21Ob2RlID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZSwgdm9pZE5vZGUpO1xuICAgICAgICAgICAgci5zZXRFbmRBZnRlcihkb21Ob2RlKTtcbiAgICAgICAgICAgIGNvbnRlbnRzID0gci5jbG9uZUNvbnRlbnRzKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDT01QQVQ6IElmIHRoZSBzdGFydCBub2RlIGlzIGEgdm9pZCBub2RlLCB3ZSBuZWVkIHRvIGF0dGFjaCB0aGUgZW5jb2RlZFxuICAgICAgICAvLyBmcmFnbWVudCB0byB0aGUgdm9pZCBub2RlJ3MgY29udGVudCBub2RlIGluc3RlYWQgb2YgdGhlIHNwYWNlciwgYmVjYXVzZVxuICAgICAgICAvLyBhdHRhY2hpbmcgaXQgdG8gZW1wdHkgYDxkaXY+LzxzcGFuPmAgbm9kZXMgd2lsbCBlbmQgdXAgaGF2aW5nIGl0IGVyYXNlZCBieVxuICAgICAgICAvLyBtb3N0IGJyb3dzZXJzLiAoMjAxOC8wNC8yNylcbiAgICAgICAgaWYgKHN0YXJ0Vm9pZCkge1xuICAgICAgICAgICAgYXR0YWNoID0gY29udGVudHMucXVlcnlTZWxlY3RvcignW2RhdGEtc2xhdGUtc3BhY2VyXScpISBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBhbnkgemVyby13aWR0aCBzcGFjZSBzcGFucyBmcm9tIHRoZSBjbG9uZWQgRE9NIHNvIHRoYXQgdGhleSBkb24ndFxuICAgICAgICAvLyBzaG93IHVwIGVsc2V3aGVyZSB3aGVuIHBhc3RlZC5cbiAgICAgICAgQXJyYXkuZnJvbShjb250ZW50cy5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zbGF0ZS16ZXJvLXdpZHRoXScpKS5mb3JFYWNoKHp3ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzTmV3bGluZSA9IHp3LmdldEF0dHJpYnV0ZSgnZGF0YS1zbGF0ZS16ZXJvLXdpZHRoJykgPT09ICduJztcbiAgICAgICAgICAgIHp3LnRleHRDb250ZW50ID0gaXNOZXdsaW5lID8gJ1xcbicgOiAnJztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2V0IGEgYGRhdGEtc2xhdGUtZnJhZ21lbnRgIGF0dHJpYnV0ZSBvbiBhIG5vbi1lbXB0eSBub2RlLCBzbyBpdCBzaG93cyB1cFxuICAgICAgICAvLyBpbiB0aGUgSFRNTCwgYW5kIGNhbiBiZSB1c2VkIGZvciBpbnRyYS1TbGF0ZSBwYXN0aW5nLiBJZiBpdCdzIGEgdGV4dFxuICAgICAgICAvLyBub2RlLCB3cmFwIGl0IGluIGEgYDxzcGFuPmAgc28gd2UgaGF2ZSBzb21ldGhpbmcgdG8gc2V0IGFuIGF0dHJpYnV0ZSBvbi5cbiAgICAgICAgaWYgKGlzRE9NVGV4dChhdHRhY2gpKSB7XG4gICAgICAgICAgICBjb25zdCBzcGFuID0gYXR0YWNoLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgLy8gQ09NUEFUOiBJbiBDaHJvbWUgYW5kIFNhZmFyaSwgaWYgd2UgZG9uJ3QgYWRkIHRoZSBgd2hpdGUtc3BhY2VgIHN0eWxlXG4gICAgICAgICAgICAvLyB0aGVuIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcyB3aWxsIGJlIGlnbm9yZWQuICgyMDE3LzA5LzIxKVxuICAgICAgICAgICAgc3Bhbi5zdHlsZS53aGl0ZVNwYWNlID0gJ3ByZSc7XG4gICAgICAgICAgICBzcGFuLmFwcGVuZENoaWxkKGF0dGFjaCk7XG4gICAgICAgICAgICBjb250ZW50cy5hcHBlbmRDaGlsZChzcGFuKTtcbiAgICAgICAgICAgIGF0dGFjaCA9IHNwYW47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGUuZ2V0RnJhZ21lbnQoKTtcbiAgICAgICAgY29uc3Qgc3RyaW5nT2JqID0gSlNPTi5zdHJpbmdpZnkoZnJhZ21lbnQpO1xuICAgICAgICBjb25zdCBlbmNvZGVkID0gd2luZG93LmJ0b2EoZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ09iaikpO1xuICAgICAgICBhdHRhY2guc2V0QXR0cmlidXRlKCdkYXRhLXNsYXRlLWZyYWdtZW50JywgZW5jb2RlZCk7XG4gICAgICAgIGRhdGEuc2V0RGF0YShgYXBwbGljYXRpb24vJHtjbGlwYm9hcmRGb3JtYXRLZXl9YCwgZW5jb2RlZCk7XG5cbiAgICAgICAgLy8gQWRkIHRoZSBjb250ZW50IHRvIGEgPGRpdj4gc28gdGhhdCB3ZSBjYW4gZ2V0IGl0cyBpbm5lciBIVE1MLlxuICAgICAgICBjb25zdCBkaXYgPSBjb250ZW50cy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoY29udGVudHMpO1xuICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICBjb250ZW50cy5vd25lckRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICAgICAgZGF0YS5zZXREYXRhKCd0ZXh0L2h0bWwnLCBkaXYuaW5uZXJIVE1MKTtcbiAgICAgICAgZGF0YS5zZXREYXRhKCd0ZXh0L3BsYWluJywgZ2V0UGxhaW5UZXh0KGRpdikpO1xuICAgICAgICBjb250ZW50cy5vd25lckRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfTtcblxuICAgIGUuZGVsZXRlQ3V0RGF0YSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgaWYgKFJhbmdlLmlzRXhwYW5kZWQoc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIEVkaXRvci5kZWxldGVGcmFnbWVudChlZGl0b3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gTm9kZS5wYXJlbnQoZWRpdG9yLCBzZWxlY3Rpb24uYW5jaG9yLnBhdGgpO1xuICAgICAgICAgICAgICAgIGlmIChFZGl0b3IuaXNWb2lkKGVkaXRvciwgbm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZS5pbnNlcnREYXRhID0gKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4ge1xuICAgICAgICBpZiAoIWUuaW5zZXJ0RnJhZ21lbnREYXRhKGRhdGEpKSB7XG4gICAgICAgICAgICBlLmluc2VydFRleHREYXRhKGRhdGEpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGUuaW5zZXJ0RnJhZ21lbnREYXRhID0gKGRhdGE6IERhdGFUcmFuc2Zlcik6IGJvb2xlYW4gPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2hlY2tpbmcgY29waWVkIGZyYWdtZW50IGZyb20gYXBwbGljYXRpb24veC1zbGF0ZS1mcmFnbWVudCBvciBkYXRhLXNsYXRlLWZyYWdtZW50XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtjbGlwYm9hcmRGb3JtYXRLZXl9YCkgfHwgZ2V0U2xhdGVGcmFnbWVudEF0dHJpYnV0ZShkYXRhKTtcblxuICAgICAgICBpZiAoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVVUklDb21wb25lbnQod2luZG93LmF0b2IoZnJhZ21lbnQpKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoZGVjb2RlZCkgYXMgTm9kZVtdO1xuICAgICAgICAgICAgZS5pbnNlcnRGcmFnbWVudChwYXJzZWQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBlLmluc2VydFRleHREYXRhID0gKGRhdGE6IERhdGFUcmFuc2Zlcik6IGJvb2xlYW4gPT4ge1xuICAgICAgICBjb25zdCB0ZXh0ID0gZGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG5cbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgvXFxyXFxufFxccnxcXG4vKTtcbiAgICAgICAgICAgIGxldCBzcGxpdCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zcGxpdE5vZGVzKGUsIHsgYWx3YXlzOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUuaW5zZXJ0VGV4dChsaW5lKTtcbiAgICAgICAgICAgICAgICBzcGxpdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIGUub25LZXlkb3duID0gKCkgPT4ge307XG5cbiAgICBlLm9uQ2xpY2sgPSAoKSA9PiB7fTtcblxuICAgIGUuaXNCbG9ja0NhcmQgPSBlbGVtZW50ID0+IGZhbHNlO1xuXG4gICAgZS5vbkVycm9yID0gKGVycm9yRGF0YTogU2xhdGVFcnJvcikgPT4ge1xuICAgICAgICBpZiAoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yRGF0YS5uYXRpdmVFcnJvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yRGF0YSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGU7XG59O1xuIl19
|
package/esm2022/utils/dom.mjs
CHANGED
|
@@ -180,4 +180,4 @@ export const getClipboardData = (dataTransfer, clipboardFormatKey = 'x-slate-fra
|
|
|
180
180
|
}
|
|
181
181
|
return dataTransfer;
|
|
182
182
|
};
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3JjL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFPLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFPLFlBQVksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBQzNDLElBQU8sY0FBYyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBWTVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBVSxFQUFpQixFQUFFO0lBQ3hELE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNyRixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQVUsRUFBdUIsRUFBRTtJQUM1RCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxD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QUFJLENBQUMsQ0FBQyxDQUFDO1lBQzVELENBQUMsQ0FBQyxDQUFDO1lBQ0gsYUFBYSxDQUFDLE9BQU8sQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDckUsT0FBTyxhQUFhLENBQUM7U0FDeEI7S0FDSjtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHlwZXMuXG4gKi9cblxuLy8gQ09NUEFUOiBUaGlzIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgVHlwZVNjcmlwdCBhbGlhc2VzIGZyb20gZG9pbmcgc29tZSB2ZXJ5XG4vLyB3ZWlyZCB0aGluZ3MgZm9yIFNsYXRlJ3MgdHlwZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGdsb2JhbHMuICgyMDE5LzExLzI3KVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zNTAwMlxuaW1wb3J0IERPTU5vZGUgPSBnbG9iYWxUaGlzLk5vZGU7XG5pbXBvcnQgRE9NQ29tbWVudCA9IGdsb2JhbFRoaXMuQ29tbWVudDtcbmltcG9ydCBET01FbGVtZW50ID0gZ2xvYmFsVGhpcy5FbGVtZW50O1xuaW1wb3J0IERPTVRleHQgPSBnbG9iYWxUaGlzLlRleHQ7XG5pbXBvcnQgRE9NUmFuZ2UgPSBnbG9iYWxUaGlzLlJhbmdlO1xuaW1wb3J0IERPTVNlbGVjdGlvbiA9IGdsb2JhbFRoaXMuU2VsZWN0aW9uO1xuaW1wb3J0IERPTVN0YXRpY1JhbmdlID0gZ2xvYmFsVGhpcy5TdGF0aWNSYW5nZTtcbmV4cG9ydCB7IERPTU5vZGUsIERPTUNvbW1lbnQsIERPTUVsZW1lbnQsIERPTVRleHQsIERPTVJhbmdlLCBET01TZWxlY3Rpb24sIERPTVN0YXRpY1JhbmdlIH07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgU2VsZWN0aW9uOiAodHlwZW9mIFNlbGVjdGlvbilbJ2NvbnN0cnVjdG9yJ107XG4gICAgICAgIERhdGFUcmFuc2ZlcjogKHR5cGVvZiBEYXRhVHJhbnNmZXIpWydjb25zdHJ1Y3RvciddO1xuICAgICAgICBOb2RlOiAodHlwZW9mIE5vZGUpWydjb25zdHJ1Y3RvciddO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgRE9NUG9pbnQgPSBbTm9kZSwgbnVtYmVyXTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBob3N0IHdpbmRvdyBvZiBhIERPTSBub2RlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VmlldyA9ICh2YWx1ZTogYW55KTogV2luZG93IHwgbnVsbCA9PiB7XG4gICAgcmV0dXJuICh2YWx1ZSAmJiB2YWx1ZS5vd25lckRvY3VtZW50ICYmIHZhbHVlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIHx8IG51bGw7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYSBjb21tZW50IG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTUNvbW1lbnQgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIERPTUNvbW1lbnQgPT4ge1xuICAgIHJldHVybiBpc0RPTU5vZGUodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSA4O1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIERPTSBub2RlIGlzIGFuIGVsZW1lbnQgbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NRWxlbWVudCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NRWxlbWVudCA9PiB7XG4gICAgcmV0dXJuIGlzRE9NTm9kZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDE7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYSBET00gbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NTm9kZSA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NTm9kZSA9PiB7XG4gICAgY29uc3Qgd2luZG93ID0gZ2V0RGVmYXVsdFZpZXcodmFsdWUpO1xuICAgIHJldHVybiAhIXdpbmRvdyAmJiB2YWx1ZSBpbnN0YW5jZW9mIHdpbmRvdy5Ob2RlO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhbHVlIGlzIGEgRE9NIHNlbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NU2VsZWN0aW9uID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01TZWxlY3Rpb24gPT4ge1xuICAgIGNvbnN0IHdpbmRvdyA9IHZhbHVlICYmIHZhbHVlLmFuY2hvck5vZGUgJiYgZ2V0RGVmYXVsdFZpZXcodmFsdWUuYW5jaG9yTm9kZSk7XG4gICAgcmV0dXJuICEhd2luZG93ICYmIHZhbHVlIGluc3RhbmNlb2Ygd2luZG93LlNlbGVjdGlvbjtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBET00gbm9kZSBpcyBhbiBlbGVtZW50IG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTVRleHQgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIERPTVRleHQgPT4ge1xuICAgIHJldHVybiBpc0RPTU5vZGUodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAzO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHBhc3RlIGV2ZW50IGlzIGEgcGxhaW50ZXh0LW9ubHkgZXZlbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1BsYWluVGV4dE9ubHlQYXN0ZSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICByZXR1cm4gZXZlbnQuY2xpcGJvYXJkRGF0YSAmJiBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPT0gJycgJiYgZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5sZW5ndGggPT09IDE7XG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIERPTSBwb2ludCBzbyB0aGF0IGl0IGFsd2F5cyByZWZlcnMgdG8gYSB0ZXh0IG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVET01Qb2ludCA9IChkb21Qb2ludDogRE9NUG9pbnQpOiBET01Qb2ludCA9PiB7XG4gICAgbGV0IFtub2RlLCBvZmZzZXRdID0gZG9tUG9pbnQ7XG5cbiAgICAvLyBJZiBpdCdzIGFuIGVsZW1lbnQgbm9kZSwgaXRzIG9mZnNldCByZWZlcnMgdG8gdGhlIGluZGV4IG9mIGl0cyBjaGlsZHJlblxuICAgIC8vIGluY2x1ZGluZyBjb21tZW50IG5vZGVzLCBzbyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgdGV4dCBjaGlsZCBub2RlLlxuICAgIGlmIChpc0RPTUVsZW1lbnQobm9kZSkgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICBsZXQgaXNMYXN0ID0gb2Zmc2V0ID09PSBub2RlLmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgICBsZXQgaW5kZXggPSBpc0xhc3QgPyBvZmZzZXQgLSAxIDogb2Zmc2V0O1xuICAgICAgICBbbm9kZSwgaW5kZXhdID0gZ2V0RWRpdGFibGVDaGlsZEFuZEluZGV4KG5vZGUsIGluZGV4LCBpc0xhc3QgPyAnYmFja3dhcmQnIDogJ2ZvcndhcmQnKTtcblxuICAgICAgICAvLyBJZiB0aGUgZWRpdGFibGUgY2hpbGQgZm91bmQgaXMgaW4gZnJvbnQgb2YgaW5wdXQgb2Zmc2V0LCB3ZSBpbnN0ZWFkIHNlZWsgdG8gaXRzIGVuZFxuICAgICAgICBpc0xhc3QgPSBpbmRleCA8IG9mZnNldDtcblxuICAgICAgICAvLyBJZiB0aGUgbm9kZSBoYXMgY2hpbGRyZW4sIHRyYXZlcnNlIHVudGlsIHdlIGhhdmUgYSBsZWFmIG5vZGUuIExlYWYgbm9kZXNcbiAgICAgICAgLy8gY2FuIGJlIGVpdGhlciB0ZXh0IG5vZGVzLCBvciBvdGhlciB2b2lkIERPTSBub2Rlcy5cbiAgICAgICAgd2hpbGUgKGlzRE9NRWxlbWVudChub2RlKSAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gaXNMYXN0ID8gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCAtIDEgOiAwO1xuICAgICAgICAgICAgbm9kZSA9IGdldEVkaXRhYmxlQ2hpbGQobm9kZSwgaSwgaXNMYXN0ID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIG5ldyBvZmZzZXQgaW5zaWRlIHRoZSB0ZXh0IG5vZGUuXG4gICAgICAgIG9mZnNldCA9IGlzTGFzdCAmJiBub2RlLnRleHRDb250ZW50ICE9IG51bGwgPyBub2RlLnRleHRDb250ZW50Lmxlbmd0aCA6IDA7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRoZSBub2RlIGFuZCBvZmZzZXQuXG4gICAgcmV0dXJuIFtub2RlLCBvZmZzZXRdO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdldGhlciB0aGUgYWN0aXZlIGVsZW1lbnQgaXMgbmVzdGVkIHdpdGhpbiBhIHNoYWRvd1Jvb3RcbiAqL1xuXG5leHBvcnQgY29uc3QgaGFzU2hhZG93Um9vdCA9ICgpID0+IHtcbiAgICByZXR1cm4gISEod2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbmVhcmVzdCBlZGl0YWJsZSBjaGlsZCBhbmQgaW5kZXggYXQgYGluZGV4YCBpbiBhIGBwYXJlbnRgLCBwcmVmZXJyaW5nXG4gKiBgZGlyZWN0aW9uYC5cbiAqL1xuXG5leHBvcnQgY29uc3QgZ2V0RWRpdGFibGVDaGlsZEFuZEluZGV4ID0gKHBhcmVudDogRE9NRWxlbWVudCwgaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiAnZm9yd2FyZCcgfCAnYmFja3dhcmQnKTogW0RPTU5vZGUsIG51bWJlcl0gPT4ge1xuICAgIGNvbnN0IHsgY2hpbGROb2RlcyB9ID0gcGFyZW50O1xuICAgIGxldCBjaGlsZCA9IGNoaWxkTm9kZXNbaW5kZXhdO1xuICAgIGxldCBpID0gaW5kZXg7XG4gICAgbGV0IHRyaWVkRm9yd2FyZCA9IGZhbHNlO1xuICAgIGxldCB0cmllZEJhY2t3YXJkID0gZmFsc2U7XG5cbiAgICAvLyBXaGlsZSB0aGUgY2hpbGQgaXMgYSBjb21tZW50IG5vZGUsIG9yIGFuIGVsZW1lbnQgbm9kZSB3aXRoIG5vIGNoaWxkcmVuLFxuICAgIC8vIGtlZXAgaXRlcmF0aW5nIHRvIGZpbmQgYSBzaWJsaW5nIG5vbi12b2lkLCBub24tY29tbWVudCBub2RlLlxuICAgIHdoaWxlIChcbiAgICAgICAgaXNET01Db21tZW50KGNoaWxkKSB8fFxuICAgICAgICAoaXNET01FbGVtZW50KGNoaWxkKSAmJiBjaGlsZC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgKGlzRE9NRWxlbWVudChjaGlsZCkgJiYgY2hpbGQuZ2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKSA9PT0gJ2ZhbHNlJylcbiAgICApIHtcbiAgICAgICAgaWYgKHRyaWVkRm9yd2FyZCAmJiB0cmllZEJhY2t3YXJkKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpID49IGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0cmllZEZvcndhcmQgPSB0cnVlO1xuICAgICAgICAgICAgaSA9IGluZGV4IC0gMTtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdiYWNrd2FyZCc7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpIDwgMCkge1xuICAgICAgICAgICAgdHJpZWRCYWNrd2FyZCA9IHRydWU7XG4gICAgICAgICAgICBpID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgZGlyZWN0aW9uID0gJ2ZvcndhcmQnO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjaGlsZCA9IGNoaWxkTm9kZXNbaV07XG4gICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgaSArPSBkaXJlY3Rpb24gPT09ICdmb3J3YXJkJyA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gW2NoaWxkLCBpbmRleF07XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbmVhcmVzdCBlZGl0YWJsZSBjaGlsZCBhdCBgaW5kZXhgIGluIGEgYHBhcmVudGAsIHByZWZlcnJpbmdcbiAqIGBkaXJlY3Rpb25gLlxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUNoaWxkID0gKHBhcmVudDogRE9NRWxlbWVudCwgaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiAnZm9yd2FyZCcgfCAnYmFja3dhcmQnKTogRE9NTm9kZSA9PiB7XG4gICAgY29uc3QgW2NoaWxkXSA9IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleChwYXJlbnQsIGluZGV4LCBkaXJlY3Rpb24pO1xuICAgIHJldHVybiBjaGlsZDtcbn07XG5cbi8qKlxuICogR2V0IGEgcGxhaW50ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb250ZW50IG9mIGEgbm9kZSwgYWNjb3VudGluZyBmb3IgYmxvY2tcbiAqIGVsZW1lbnRzIHdoaWNoIGdldCBhIG5ld2xpbmUgYXBwZW5kZWQuXG4gKlxuICogVGhlIGRvbU5vZGUgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NLlxuICovXG5leHBvcnQgY29uc3QgZ2V0UGxhaW5UZXh0ID0gKGRvbU5vZGU6IERPTU5vZGUpID0+IHtcbiAgICBsZXQgdGV4dCA9ICcnO1xuXG4gICAgaWYgKGlzRE9NVGV4dChkb21Ob2RlKSAmJiBkb21Ob2RlLm5vZGVWYWx1ZSkge1xuICAgICAgICByZXR1cm4gZG9tTm9kZS5ub2RlVmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGlzRE9NRWxlbWVudChkb21Ob2RlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkTm9kZSBvZiBBcnJheS5mcm9tKGRvbU5vZGUuY2hpbGROb2RlcykpIHtcbiAgICAgICAgICAgIHRleHQgKz0gZ2V0UGxhaW5UZXh0KGNoaWxkTm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaXNwbGF5ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb21Ob2RlKS5nZXRQcm9wZXJ0eVZhbHVlKCdkaXNwbGF5Jyk7XG5cbiAgICAgICAgaWYgKGRpc3BsYXkgPT09ICdibG9jaycgfHwgZGlzcGxheSA9PT0gJ2xpc3QnIHx8IGRvbU5vZGUudGFnTmFtZSA9PT0gJ0JSJykge1xuICAgICAgICAgICAgdGV4dCArPSAnXFxuJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXh0O1xufTtcblxuLyoqXG4gKiBHZXQgeC1zbGF0ZS1mcmFnbWVudCBhdHRyaWJ1dGUgZnJvbSBkYXRhLXNsYXRlLWZyYWdtZW50XG4gKi9cbmNvbnN0IGNhdGNoU2xhdGVGcmFnbWVudCA9IC9kYXRhLXNsYXRlLWZyYWdtZW50PVwiKC4rPylcIi9tO1xuZXhwb3J0IGNvbnN0IGdldFNsYXRlRnJhZ21lbnRBdHRyaWJ1dGUgPSAoZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIpOiBzdHJpbmcgfCB2b2lkID0+IHtcbiAgICBjb25zdCBodG1sRGF0YSA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L2h0bWwnKTtcbiAgICBjb25zdCBbLCBmcmFnbWVudF0gPSBodG1sRGF0YS5tYXRjaChjYXRjaFNsYXRlRnJhZ21lbnQpIHx8IFtdO1xuICAgIHJldHVybiBmcmFnbWVudDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSB4LXNsYXRlLWZyYWdtZW50IGF0dHJpYnV0ZSB0aGF0IGV4aXN0IGluIHRleHQvaHRtbCBkYXRhXG4gKiBhbmQgYXBwZW5kIGl0IHRvIHRoZSBEYXRhVHJhbnNmZXIgb2JqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDbGlwYm9hcmREYXRhID0gKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyLCBjbGlwYm9hcmRGb3JtYXRLZXkgPSAneC1zbGF0ZS1mcmFnbWVudCcpOiBEYXRhVHJhbnNmZXIgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVyLmdldERhdGEoYGFwcGxpY2F0aW9uLyR7Y2xpcGJvYXJkRm9ybWF0S2V5fWApKSB7XG4gICAgICAgIGNvbnN0IGZyYWdtZW50ID0gZ2V0U2xhdGVGcmFnbWVudEF0dHJpYnV0ZShkYXRhVHJhbnNmZXIpO1xuICAgICAgICBpZiAoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBuZXcgRGF0YVRyYW5zZmVyKCk7XG4gICAgICAgICAgICBkYXRhVHJhbnNmZXIudHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgICAgICBjbGlwYm9hcmREYXRhLnNldERhdGEodHlwZSwgZGF0YVRyYW5zZmVyLmdldERhdGEodHlwZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjbGlwYm9hcmREYXRhLnNldERhdGEoYGFwcGxpY2F0aW9uLyR7Y2xpcGJvYXJkRm9ybWF0S2V5fWAsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBjbGlwYm9hcmREYXRhO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhVHJhbnNmZXI7XG59O1xuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3JjL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFPLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFPLFlBQVksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBQzNDLElBQU8sY0FBYyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBWTVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBVSxFQUFpQixFQUFFO0lBQ3hELE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNyRixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQVUsRUFBdUIsRUFBRTtJQUM1RCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxD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O1lBQ3pDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM5QixhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDNUQsQ0FBQyxDQUFDLENBQUM7WUFDSCxhQUFhLENBQUMsT0FBTyxDQUFDLGVBQWUsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNyRSxPQUFPLGFBQWEsQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHlwZXMuXG4gKi9cblxuLy8gQ09NUEFUOiBUaGlzIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgVHlwZVNjcmlwdCBhbGlhc2VzIGZyb20gZG9pbmcgc29tZSB2ZXJ5XG4vLyB3ZWlyZCB0aGluZ3MgZm9yIFNsYXRlJ3MgdHlwZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGdsb2JhbHMuICgyMDE5LzExLzI3KVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zNTAwMlxuaW1wb3J0IERPTU5vZGUgPSBnbG9iYWxUaGlzLk5vZGU7XG5pbXBvcnQgRE9NQ29tbWVudCA9IGdsb2JhbFRoaXMuQ29tbWVudDtcbmltcG9ydCBET01FbGVtZW50ID0gZ2xvYmFsVGhpcy5FbGVtZW50O1xuaW1wb3J0IERPTVRleHQgPSBnbG9iYWxUaGlzLlRleHQ7XG5pbXBvcnQgRE9NUmFuZ2UgPSBnbG9iYWxUaGlzLlJhbmdlO1xuaW1wb3J0IERPTVNlbGVjdGlvbiA9IGdsb2JhbFRoaXMuU2VsZWN0aW9uO1xuaW1wb3J0IERPTVN0YXRpY1JhbmdlID0gZ2xvYmFsVGhpcy5TdGF0aWNSYW5nZTtcbmV4cG9ydCB7IERPTU5vZGUsIERPTUNvbW1lbnQsIERPTUVsZW1lbnQsIERPTVRleHQsIERPTVJhbmdlLCBET01TZWxlY3Rpb24sIERPTVN0YXRpY1JhbmdlIH07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgU2VsZWN0aW9uOiAodHlwZW9mIFNlbGVjdGlvbilbJ2NvbnN0cnVjdG9yJ107XG4gICAgICAgIERhdGFUcmFuc2ZlcjogKHR5cGVvZiBEYXRhVHJhbnNmZXIpWydjb25zdHJ1Y3RvciddO1xuICAgICAgICBOb2RlOiAodHlwZW9mIE5vZGUpWydjb25zdHJ1Y3RvciddO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgRE9NUG9pbnQgPSBbTm9kZSwgbnVtYmVyXTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBob3N0IHdpbmRvdyBvZiBhIERPTSBub2RlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VmlldyA9ICh2YWx1ZTogYW55KTogV2luZG93IHwgbnVsbCA9PiB7XG4gICAgcmV0dXJuICh2YWx1ZSAmJiB2YWx1ZS5vd25lckRvY3VtZW50ICYmIHZhbHVlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIHx8IG51bGw7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYSBjb21tZW50IG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTUNvbW1lbnQgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIERPTUNvbW1lbnQgPT4ge1xuICAgIHJldHVybiBpc0RPTU5vZGUodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSA4O1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIERPTSBub2RlIGlzIGFuIGVsZW1lbnQgbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NRWxlbWVudCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NRWxlbWVudCA9PiB7XG4gICAgcmV0dXJuIGlzRE9NTm9kZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDE7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYSBET00gbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NTm9kZSA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NTm9kZSA9PiB7XG4gICAgY29uc3Qgd2luZG93ID0gZ2V0RGVmYXVsdFZpZXcodmFsdWUpO1xuICAgIHJldHVybiAhIXdpbmRvdyAmJiB2YWx1ZSBpbnN0YW5jZW9mIHdpbmRvdy5Ob2RlO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhbHVlIGlzIGEgRE9NIHNlbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NU2VsZWN0aW9uID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01TZWxlY3Rpb24gPT4ge1xuICAgIGNvbnN0IHdpbmRvdyA9IHZhbHVlICYmIHZhbHVlLmFuY2hvck5vZGUgJiYgZ2V0RGVmYXVsdFZpZXcodmFsdWUuYW5jaG9yTm9kZSk7XG4gICAgcmV0dXJuICEhd2luZG93ICYmIHZhbHVlIGluc3RhbmNlb2Ygd2luZG93LlNlbGVjdGlvbjtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBET00gbm9kZSBpcyBhbiBlbGVtZW50IG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTVRleHQgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIERPTVRleHQgPT4ge1xuICAgIHJldHVybiBpc0RPTU5vZGUodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAzO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHBhc3RlIGV2ZW50IGlzIGEgcGxhaW50ZXh0LW9ubHkgZXZlbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1BsYWluVGV4dE9ubHlQYXN0ZSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICByZXR1cm4gZXZlbnQuY2xpcGJvYXJkRGF0YSAmJiBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPT0gJycgJiYgZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5sZW5ndGggPT09IDE7XG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIERPTSBwb2ludCBzbyB0aGF0IGl0IGFsd2F5cyByZWZlcnMgdG8gYSB0ZXh0IG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVET01Qb2ludCA9IChkb21Qb2ludDogRE9NUG9pbnQpOiBET01Qb2ludCA9PiB7XG4gICAgbGV0IFtub2RlLCBvZmZzZXRdID0gZG9tUG9pbnQ7XG5cbiAgICAvLyBJZiBpdCdzIGFuIGVsZW1lbnQgbm9kZSwgaXRzIG9mZnNldCByZWZlcnMgdG8gdGhlIGluZGV4IG9mIGl0cyBjaGlsZHJlblxuICAgIC8vIGluY2x1ZGluZyBjb21tZW50IG5vZGVzLCBzbyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgdGV4dCBjaGlsZCBub2RlLlxuICAgIGlmIChpc0RPTUVsZW1lbnQobm9kZSkgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICBsZXQgaXNMYXN0ID0gb2Zmc2V0ID09PSBub2RlLmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgICBsZXQgaW5kZXggPSBpc0xhc3QgPyBvZmZzZXQgLSAxIDogb2Zmc2V0O1xuICAgICAgICBbbm9kZSwgaW5kZXhdID0gZ2V0RWRpdGFibGVDaGlsZEFuZEluZGV4KG5vZGUsIGluZGV4LCBpc0xhc3QgPyAnYmFja3dhcmQnIDogJ2ZvcndhcmQnKTtcblxuICAgICAgICAvLyBJZiB0aGUgZWRpdGFibGUgY2hpbGQgZm91bmQgaXMgaW4gZnJvbnQgb2YgaW5wdXQgb2Zmc2V0LCB3ZSBpbnN0ZWFkIHNlZWsgdG8gaXRzIGVuZFxuICAgICAgICBpc0xhc3QgPSBpbmRleCA8IG9mZnNldDtcblxuICAgICAgICAvLyBJZiB0aGUgbm9kZSBoYXMgY2hpbGRyZW4sIHRyYXZlcnNlIHVudGlsIHdlIGhhdmUgYSBsZWFmIG5vZGUuIExlYWYgbm9kZXNcbiAgICAgICAgLy8gY2FuIGJlIGVpdGhlciB0ZXh0IG5vZGVzLCBvciBvdGhlciB2b2lkIERPTSBub2Rlcy5cbiAgICAgICAgd2hpbGUgKGlzRE9NRWxlbWVudChub2RlKSAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gaXNMYXN0ID8gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCAtIDEgOiAwO1xuICAgICAgICAgICAgbm9kZSA9IGdldEVkaXRhYmxlQ2hpbGQobm9kZSwgaSwgaXNMYXN0ID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIG5ldyBvZmZzZXQgaW5zaWRlIHRoZSB0ZXh0IG5vZGUuXG4gICAgICAgIG9mZnNldCA9IGlzTGFzdCAmJiBub2RlLnRleHRDb250ZW50ICE9IG51bGwgPyBub2RlLnRleHRDb250ZW50Lmxlbmd0aCA6IDA7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRoZSBub2RlIGFuZCBvZmZzZXQuXG4gICAgcmV0dXJuIFtub2RlLCBvZmZzZXRdO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdldGhlciB0aGUgYWN0aXZlIGVsZW1lbnQgaXMgbmVzdGVkIHdpdGhpbiBhIHNoYWRvd1Jvb3RcbiAqL1xuXG5leHBvcnQgY29uc3QgaGFzU2hhZG93Um9vdCA9ICgpID0+IHtcbiAgICByZXR1cm4gISEod2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbmVhcmVzdCBlZGl0YWJsZSBjaGlsZCBhbmQgaW5kZXggYXQgYGluZGV4YCBpbiBhIGBwYXJlbnRgLCBwcmVmZXJyaW5nXG4gKiBgZGlyZWN0aW9uYC5cbiAqL1xuXG5leHBvcnQgY29uc3QgZ2V0RWRpdGFibGVDaGlsZEFuZEluZGV4ID0gKHBhcmVudDogRE9NRWxlbWVudCwgaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiAnZm9yd2FyZCcgfCAnYmFja3dhcmQnKTogW0RPTU5vZGUsIG51bWJlcl0gPT4ge1xuICAgIGNvbnN0IHsgY2hpbGROb2RlcyB9ID0gcGFyZW50O1xuICAgIGxldCBjaGlsZCA9IGNoaWxkTm9kZXNbaW5kZXhdO1xuICAgIGxldCBpID0gaW5kZXg7XG4gICAgbGV0IHRyaWVkRm9yd2FyZCA9IGZhbHNlO1xuICAgIGxldCB0cmllZEJhY2t3YXJkID0gZmFsc2U7XG5cbiAgICAvLyBXaGlsZSB0aGUgY2hpbGQgaXMgYSBjb21tZW50IG5vZGUsIG9yIGFuIGVsZW1lbnQgbm9kZSB3aXRoIG5vIGNoaWxkcmVuLFxuICAgIC8vIGtlZXAgaXRlcmF0aW5nIHRvIGZpbmQgYSBzaWJsaW5nIG5vbi12b2lkLCBub24tY29tbWVudCBub2RlLlxuICAgIHdoaWxlIChcbiAgICAgICAgaXNET01Db21tZW50KGNoaWxkKSB8fFxuICAgICAgICAoaXNET01FbGVtZW50KGNoaWxkKSAmJiBjaGlsZC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgKGlzRE9NRWxlbWVudChjaGlsZCkgJiYgY2hpbGQuZ2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKSA9PT0gJ2ZhbHNlJylcbiAgICApIHtcbiAgICAgICAgaWYgKHRyaWVkRm9yd2FyZCAmJiB0cmllZEJhY2t3YXJkKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpID49IGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0cmllZEZvcndhcmQgPSB0cnVlO1xuICAgICAgICAgICAgaSA9IGluZGV4IC0gMTtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdiYWNrd2FyZCc7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpIDwgMCkge1xuICAgICAgICAgICAgdHJpZWRCYWNrd2FyZCA9IHRydWU7XG4gICAgICAgICAgICBpID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgZGlyZWN0aW9uID0gJ2ZvcndhcmQnO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjaGlsZCA9IGNoaWxkTm9kZXNbaV07XG4gICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgaSArPSBkaXJlY3Rpb24gPT09ICdmb3J3YXJkJyA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gW2NoaWxkLCBpbmRleF07XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbmVhcmVzdCBlZGl0YWJsZSBjaGlsZCBhdCBgaW5kZXhgIGluIGEgYHBhcmVudGAsIHByZWZlcnJpbmdcbiAqIGBkaXJlY3Rpb25gLlxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUNoaWxkID0gKHBhcmVudDogRE9NRWxlbWVudCwgaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiAnZm9yd2FyZCcgfCAnYmFja3dhcmQnKTogRE9NTm9kZSA9PiB7XG4gICAgY29uc3QgW2NoaWxkXSA9IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleChwYXJlbnQsIGluZGV4LCBkaXJlY3Rpb24pO1xuICAgIHJldHVybiBjaGlsZDtcbn07XG5cbi8qKlxuICogR2V0IGEgcGxhaW50ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb250ZW50IG9mIGEgbm9kZSwgYWNjb3VudGluZyBmb3IgYmxvY2tcbiAqIGVsZW1lbnRzIHdoaWNoIGdldCBhIG5ld2xpbmUgYXBwZW5kZWQuXG4gKlxuICogVGhlIGRvbU5vZGUgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NLlxuICovXG5leHBvcnQgY29uc3QgZ2V0UGxhaW5UZXh0ID0gKGRvbU5vZGU6IERPTU5vZGUpID0+IHtcbiAgICBsZXQgdGV4dCA9ICcnO1xuXG4gICAgaWYgKGlzRE9NVGV4dChkb21Ob2RlKSAmJiBkb21Ob2RlLm5vZGVWYWx1ZSkge1xuICAgICAgICByZXR1cm4gZG9tTm9kZS5ub2RlVmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGlzRE9NRWxlbWVudChkb21Ob2RlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkTm9kZSBvZiBBcnJheS5mcm9tKGRvbU5vZGUuY2hpbGROb2RlcykpIHtcbiAgICAgICAgICAgIHRleHQgKz0gZ2V0UGxhaW5UZXh0KGNoaWxkTm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaXNwbGF5ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb21Ob2RlKS5nZXRQcm9wZXJ0eVZhbHVlKCdkaXNwbGF5Jyk7XG5cbiAgICAgICAgaWYgKGRpc3BsYXkgPT09ICdibG9jaycgfHwgZGlzcGxheSA9PT0gJ2xpc3QnIHx8IGRvbU5vZGUudGFnTmFtZSA9PT0gJ0JSJykge1xuICAgICAgICAgICAgdGV4dCArPSAnXFxuJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXh0O1xufTtcblxuLyoqXG4gKiBHZXQgeC1zbGF0ZS1mcmFnbWVudCBhdHRyaWJ1dGUgZnJvbSBkYXRhLXNsYXRlLWZyYWdtZW50XG4gKi9cbmNvbnN0IGNhdGNoU2xhdGVGcmFnbWVudCA9IC9kYXRhLXNsYXRlLWZyYWdtZW50PVwiKC4rPylcIi9tO1xuZXhwb3J0IGNvbnN0IGdldFNsYXRlRnJhZ21lbnRBdHRyaWJ1dGUgPSAoZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIpOiBzdHJpbmcgfCB2b2lkID0+IHtcbiAgICBjb25zdCBodG1sRGF0YSA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L2h0bWwnKTtcbiAgICBjb25zdCBbLCBmcmFnbWVudF0gPSBodG1sRGF0YS5tYXRjaChjYXRjaFNsYXRlRnJhZ21lbnQpIHx8IFtdO1xuICAgIHJldHVybiBmcmFnbWVudDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSB4LXNsYXRlLWZyYWdtZW50IGF0dHJpYnV0ZSB0aGF0IGV4aXN0IGluIHRleHQvaHRtbCBkYXRhXG4gKiBhbmQgYXBwZW5kIGl0IHRvIHRoZSBEYXRhVHJhbnNmZXIgb2JqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDbGlwYm9hcmREYXRhID0gKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyLCBjbGlwYm9hcmRGb3JtYXRLZXkgPSAneC1zbGF0ZS1mcmFnbWVudCcpOiBEYXRhVHJhbnNmZXIgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVyLmdldERhdGEoYGFwcGxpY2F0aW9uLyR7Y2xpcGJvYXJkRm9ybWF0S2V5fWApKSB7XG4gICAgICAgIGNvbnN0IGZyYWdtZW50ID0gZ2V0U2xhdGVGcmFnbWVudEF0dHJpYnV0ZShkYXRhVHJhbnNmZXIpO1xuICAgICAgICBpZiAoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBuZXcgRGF0YVRyYW5zZmVyKCk7XG4gICAgICAgICAgICBkYXRhVHJhbnNmZXIudHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgICAgICBjbGlwYm9hcmREYXRhLnNldERhdGEodHlwZSwgZGF0YVRyYW5zZmVyLmdldERhdGEodHlwZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjbGlwYm9hcmREYXRhLnNldERhdGEoYGFwcGxpY2F0aW9uLyR7Y2xpcGJvYXJkRm9ybWF0S2V5fWAsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBjbGlwYm9hcmREYXRhO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhVHJhbnNmZXI7XG59O1xuIl19
|
|
@@ -96,4 +96,4 @@ const hotkeys = {
|
|
|
96
96
|
};
|
|
97
97
|
export default hotkeys;
|
|
98
98
|
export { hotkeys };
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy91dGlscy9ob3RrZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxHQUFHO0lBQ1osSUFBSSxFQUFFLE9BQU87SUFDYixPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQztJQUM5RCxZQUFZLEVBQUUsTUFBTTtJQUNwQixXQUFXLEVBQUUsT0FBTztJQUNwQixNQUFNLEVBQUUsSUFBSTtJQUNaLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLGdCQUFnQixFQUFFLFdBQVc7SUFDN0IsZUFBZSxFQUFFLFlBQVk7SUFDN0IsY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxhQUFhLEVBQUUsZUFBZTtJQUM5QixjQUFjLEVBQUUsWUFBWTtJQUM1QixhQUFhLEVBQUUsYUFBYTtJQUM1QixNQUFNLEVBQUUsT0FBTztJQUNmLFVBQVUsRUFBRSxjQUFjO0lBQzFCLElBQUksRUFBRSxPQUFPO0NBQ2hCLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRztJQUNsQixnQkFBZ0IsRUFBRSxRQUFRO0lBQzFCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLGdCQUFnQixFQUFFLFVBQVU7SUFDNUIsZUFBZSxFQUFFLFdBQVc7SUFDNUIsY0FBYyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO0lBQzVDLGFBQWEsRUFBRSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7SUFDeEMsa0JBQWtCLEVBQUUsc0JBQXNCO0lBQzFDLGlCQUFpQixFQUFFLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDO0lBQ2xELGtCQUFrQixFQUFFLHNCQUFzQjtJQUMxQyxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsa0JBQWtCLEVBQUUsY0FBYztJQUNsQyxpQkFBaUIsRUFBRSxnQkFBZ0I7SUFDbkMsSUFBSSxFQUFFLGFBQWE7SUFDbkIsa0JBQWtCLEVBQUUsUUFBUTtDQUMvQixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUc7SUFDcEIsa0JBQWtCLEVBQUUsdUJBQXVCO0lBQzNDLGlCQUFpQixFQUFFLG9CQUFvQjtJQUN2QyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDO0NBQ25DLENBQUM7QUFFRjs7R0FFRztBQUVILE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7SUFDM0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxLQUFLLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLE1BQU0sU0FBUyxHQUFHLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbEQsT0FBTyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtRQUM1QixJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxRQUFRLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sR0FBRztJQUNaLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzVCLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDO0lBQ3RDLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDO0lBQ3BDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzFCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQzlCLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUMxQyxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUN4QyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CLENBQUM7SUFDbEQsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0lBQ2hELG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztJQUNsRCxtQkFBbUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CLENBQUM7SUFDaEQsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDO0lBQzFDLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQ3hDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztJQUNsRCxtQkFBbUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CLENBQUM7SUFDaEQsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDMUIsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0lBQzlDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztJQUM1QyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsa0JBQWtCLENBQUM7SUFDOUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0lBQzVDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQ2xDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztJQUNsRCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztDQUN6QixDQUFDO0FBQ0YsZUFBZSxPQUFPLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNLZXlIb3RrZXkgfSBmcm9tICdpcy1ob3RrZXknO1xuaW1wb3J0IHsgSVNfQVBQTEUgfSBmcm9tICcuL2Vudmlyb25tZW50JztcblxuLyoqXG4gKiBIb3RrZXkgbWFwcGluZ3MgZm9yIGVhY2ggcGxhdGZvcm0uXG4gKi9cblxuY29uc3QgSE9US0VZUyA9IHtcbiAgICBib2xkOiAnbW9kK2InLFxuICAgIGNvbXBvc2U6IFsnZG93bicsICdsZWZ0JywgJ3JpZ2h0JywgJ3VwJywgJ2JhY2tzcGFjZScsICdlbnRlciddLFxuICAgIG1vdmVCYWNrd2FyZDogJ2xlZnQnLFxuICAgIG1vdmVGb3J3YXJkOiAncmlnaHQnLFxuICAgIG1vdmVVcDogJ3VwJyxcbiAgICBtb3ZlRG93bjogJ2Rvd24nLFxuICAgIG1vdmVXb3JkQmFja3dhcmQ6ICdjdHJsK2xlZnQnLFxuICAgIG1vdmVXb3JkRm9yd2FyZDogJ2N0cmwrcmlnaHQnLFxuICAgIGRlbGV0ZUJhY2t3YXJkOiAnc2hpZnQ/K2JhY2tzcGFjZScsXG4gICAgZGVsZXRlRm9yd2FyZDogJ3NoaWZ0PytkZWxldGUnLFxuICAgIGV4dGVuZEJhY2t3YXJkOiAnc2hpZnQrbGVmdCcsXG4gICAgZXh0ZW5kRm9yd2FyZDogJ3NoaWZ0K3JpZ2h0JyxcbiAgICBpdGFsaWM6ICdtb2QraScsXG4gICAgc3BsaXRCbG9jazogJ3NoaWZ0PytlbnRlcicsXG4gICAgdW5kbzogJ21vZCt6J1xufTtcblxuY29uc3QgQVBQTEVfSE9US0VZUyA9IHtcbiAgICBtb3ZlTGluZUJhY2t3YXJkOiAnb3B0K3VwJyxcbiAgICBtb3ZlTGluZUZvcndhcmQ6ICdvcHQrZG93bicsXG4gICAgbW92ZVdvcmRCYWNrd2FyZDogJ29wdCtsZWZ0JyxcbiAgICBtb3ZlV29yZEZvcndhcmQ6ICdvcHQrcmlnaHQnLFxuICAgIGRlbGV0ZUJhY2t3YXJkOiBbJ2N0cmwrYmFja3NwYWNlJywgJ2N0cmwraCddLFxuICAgIGRlbGV0ZUZvcndhcmQ6IFsnY3RybCtkZWxldGUnLCAnY3RybCtkJ10sXG4gICAgZGVsZXRlTGluZUJhY2t3YXJkOiAnY21kK3NoaWZ0PytiYWNrc3BhY2UnLFxuICAgIGRlbGV0ZUxpbmVGb3J3YXJkOiBbJ2NtZCtzaGlmdD8rZGVsZXRlJywgJ2N0cmwrayddLFxuICAgIGRlbGV0ZVdvcmRCYWNrd2FyZDogJ29wdCtzaGlmdD8rYmFja3NwYWNlJyxcbiAgICBkZWxldGVXb3JkRm9yd2FyZDogJ29wdCtzaGlmdD8rZGVsZXRlJyxcbiAgICBleHRlbmRMaW5lQmFja3dhcmQ6ICdvcHQrc2hpZnQrdXAnLFxuICAgIGV4dGVuZExpbmVGb3J3YXJkOiAnb3B0K3NoaWZ0K2Rvd24nLFxuICAgIHJlZG86ICdjbWQrc2hpZnQreicsXG4gICAgdHJhbnNwb3NlQ2hhcmFjdGVyOiAnY3RybCt0J1xufTtcblxuY29uc3QgV0lORE9XU19IT1RLRVlTID0ge1xuICAgIGRlbGV0ZVdvcmRCYWNrd2FyZDogJ2N0cmwrc2hpZnQ/K2JhY2tzcGFjZScsXG4gICAgZGVsZXRlV29yZEZvcndhcmQ6ICdjdHJsK3NoaWZ0PytkZWxldGUnLFxuICAgIHJlZG86IFsnY3RybCt5JywgJ2N0cmwrc2hpZnQreiddXG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIHBsYXRmb3JtLWF3YXJlIGhvdGtleSBjaGVja2VyLlxuICovXG5cbmNvbnN0IGNyZWF0ZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGdlbmVyaWMgPSBIT1RLRVlTW2tleV07XG4gICAgY29uc3QgYXBwbGUgPSBBUFBMRV9IT1RLRVlTW2tleV07XG4gICAgY29uc3Qgd2luZG93cyA9IFdJTkRPV1NfSE9US0VZU1trZXldO1xuICAgIGNvbnN0IGlzR2VuZXJpYyA9IGdlbmVyaWMgJiYgaXNLZXlIb3RrZXkoZ2VuZXJpYyk7XG4gICAgY29uc3QgaXNBcHBsZSA9IGFwcGxlICYmIGlzS2V5SG90a2V5KGFwcGxlKTtcbiAgICBjb25zdCBpc1dpbmRvd3MgPSB3aW5kb3dzICYmIGlzS2V5SG90a2V5KHdpbmRvd3MpO1xuXG4gICAgcmV0dXJuIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoaXNHZW5lcmljICYmIGlzR2VuZXJpYyhldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChJU19BUFBMRSAmJiBpc0FwcGxlICYmIGlzQXBwbGUoZXZlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUlTX0FQUExFICYmIGlzV2luZG93cyAmJiBpc1dpbmRvd3MoZXZlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbn07XG5cbi8qKlxuICogSG90a2V5cy5cbiAqL1xuXG5jb25zdCBob3RrZXlzID0ge1xuICAgIGlzQm9sZDogY3JlYXRlKCdib2xkJyksXG4gICAgaXNDb21wb3NlOiBjcmVhdGUoJ2NvbXBvc2UnKSxcbiAgICBpc01vdmVCYWNrd2FyZDogY3JlYXRlKCdtb3ZlQmFja3dhcmQnKSxcbiAgICBpc01vdmVGb3J3YXJkOiBjcmVhdGUoJ21vdmVGb3J3YXJkJyksXG4gICAgaXNNb3ZlVXA6IGNyZWF0ZSgnbW92ZVVwJyksXG4gICAgaXNNb3ZlRG93bjogY3JlYXRlKCdtb3ZlRG93bicpLFxuICAgIGlzRGVsZXRlQmFja3dhcmQ6IGNyZWF0ZSgnZGVsZXRlQmFja3dhcmQnKSxcbiAgICBpc0RlbGV0ZUZvcndhcmQ6IGNyZWF0ZSgnZGVsZXRlRm9yd2FyZCcpLFxuICAgIGlzRGVsZXRlTGluZUJhY2t3YXJkOiBjcmVhdGUoJ2RlbGV0ZUxpbmVCYWNrd2FyZCcpLFxuICAgIGlzRGVsZXRlTGluZUZvcndhcmQ6IGNyZWF0ZSgnZGVsZXRlTGluZUZvcndhcmQnKSxcbiAgICBpc0RlbGV0ZVdvcmRCYWNrd2FyZDogY3JlYXRlKCdkZWxldGVXb3JkQmFja3dhcmQnKSxcbiAgICBpc0RlbGV0ZVdvcmRGb3J3YXJkOiBjcmVhdGUoJ2RlbGV0ZVdvcmRGb3J3YXJkJyksXG4gICAgaXNFeHRlbmRCYWNrd2FyZDogY3JlYXRlKCdleHRlbmRCYWNrd2FyZCcpLFxuICAgIGlzRXh0ZW5kRm9yd2FyZDogY3JlYXRlKCdleHRlbmRGb3J3YXJkJyksXG4gICAgaXNFeHRlbmRMaW5lQmFja3dhcmQ6IGNyZWF0ZSgnZXh0ZW5kTGluZUJhY2t3YXJkJyksXG4gICAgaXNFeHRlbmRMaW5lRm9yd2FyZDogY3JlYXRlKCdleHRlbmRMaW5lRm9yd2FyZCcpLFxuICAgIGlzSXRhbGljOiBjcmVhdGUoJ2l0YWxpYycpLFxuICAgIGlzTW92ZUxpbmVCYWNrd2FyZDogY3JlYXRlKCdtb3ZlTGluZUJhY2t3YXJkJyksXG4gICAgaXNNb3ZlTGluZUZvcndhcmQ6IGNyZWF0ZSgnbW92ZUxpbmVGb3J3YXJkJyksXG4gICAgaXNNb3ZlV29yZEJhY2t3YXJkOiBjcmVhdGUoJ21vdmVXb3JkQmFja3dhcmQnKSxcbiAgICBpc01vdmVXb3JkRm9yd2FyZDogY3JlYXRlKCdtb3ZlV29yZEZvcndhcmQnKSxcbiAgICBpc1JlZG86IGNyZWF0ZSgncmVkbycpLFxuICAgIGlzU3BsaXRCbG9jazogY3JlYXRlKCdzcGxpdEJsb2NrJyksXG4gICAgaXNUcmFuc3Bvc2VDaGFyYWN0ZXI6IGNyZWF0ZSgndHJhbnNwb3NlQ2hhcmFjdGVyJyksXG4gICAgaXNVbmRvOiBjcmVhdGUoJ3VuZG8nKVxufTtcbmV4cG9ydCBkZWZhdWx0IGhvdGtleXM7XG5leHBvcnQgeyBob3RrZXlzIH07XG4iXX0=
|
package/esm2022/utils/lines.mjs
CHANGED
|
@@ -43,4 +43,4 @@ export const findCurrentLineRange = (editor, parentRange) => {
|
|
|
43
43
|
}
|
|
44
44
|
return Editor.range(editor, positions[right], parentRangeBoundary);
|
|
45
45
|
};
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zcmMvdXRpbHMvbGluZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQWEsRUFBRSxXQUFvQixFQUFFLEVBQUU7SUFDN0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFMUQsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQztBQUN2RCxDQUFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBcUIsRUFBRSxNQUFhLEVBQUUsTUFBYSxFQUFFLEVBQUU7SUFDOUUsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvRSxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRS9FLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1RSxDQUFDLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFxQixFQUFFLFdBQWtCLEVBQVMsRUFBRTtJQUNyRixNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6RSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU1RSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQzdCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRW5DLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUN4RixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxPQUFPLE1BQU0sS0FBSyxTQUFTLENBQUMsTUFBTSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNwRCxJQUFJLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7WUFDMUYsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNuQixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksR0FBRyxNQUFNLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXRpbGl0aWVzIGZvciBzaW5nbGUtbGluZSBkZWxldGlvblxuICovXG5cbmltcG9ydCB7IFJhbmdlLCBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnLi4vcGx1Z2lucy9hbmd1bGFyLWVkaXRvcic7XG5cbmNvbnN0IGRvUmVjdHNJbnRlcnNlY3QgPSAocmVjdDogRE9NUmVjdCwgY29tcGFyZVJlY3Q6IERPTVJlY3QpID0+IHtcbiAgICBjb25zdCBtaWRkbGUgPSAoY29tcGFyZVJlY3QudG9wICsgY29tcGFyZVJlY3QuYm90dG9tKSAvIDI7XG5cbiAgICByZXR1cm4gcmVjdC50b3AgPD0gbWlkZGxlICYmIHJlY3QuYm90dG9tID49IG1pZGRsZTtcbn07XG5cbmNvbnN0IGFyZVJhbmdlc1NhbWVMaW5lID0gKGVkaXRvcjogQW5ndWxhckVkaXRvciwgcmFuZ2UxOiBSYW5nZSwgcmFuZ2UyOiBSYW5nZSkgPT4ge1xuICAgIGNvbnN0IHJlY3QxID0gQW5ndWxhckVkaXRvci50b0RPTVJhbmdlKGVkaXRvciwgcmFuZ2UxKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCByZWN0MiA9IEFuZ3VsYXJFZGl0b3IudG9ET01SYW5nZShlZGl0b3IsIHJhbmdlMikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICByZXR1cm4gZG9SZWN0c0ludGVyc2VjdChyZWN0MSwgcmVjdDIpICYmIGRvUmVjdHNJbnRlcnNlY3QocmVjdDIsIHJlY3QxKTtcbn07XG5cbi8qKlxuICogQSBoZWxwZXIgdXRpbGl0eSB0aGF0IHJldHVybnMgdGhlIGVuZCBwb3J0aW9uIG9mIGEgYFJhbmdlYFxuICogd2hpY2ggaXMgbG9jYXRlZCBvbiBhIHNpbmdsZSBsaW5lLlxuICpcbiAqIEBwYXJhbSB7RWRpdG9yfSBlZGl0b3IgVGhlIGVkaXRvciBvYmplY3QgdG8gY29tcGFyZSBhZ2FpbnN0XG4gKiBAcGFyYW0ge1JhbmdlfSBwYXJlbnRSYW5nZSBUaGUgcGFyZW50IHJhbmdlIHRvIGNvbXBhcmUgYWdhaW5zdFxuICogQHJldHVybnMge1JhbmdlfSBBIHZhbGlkIHBvcnRpb24gb2YgdGhlIHBhcmVudFJhbmdlIHdoaWNoIGlzIG9uZSBhIHNpbmdsZSBsaW5lXG4gKi9cbmV4cG9ydCBjb25zdCBmaW5kQ3VycmVudExpbmVSYW5nZSA9IChlZGl0b3I6IEFuZ3VsYXJFZGl0b3IsIHBhcmVudFJhbmdlOiBSYW5nZSk6IFJhbmdlID0+IHtcbiAgICBjb25zdCBwYXJlbnRSYW5nZUJvdW5kYXJ5ID0gRWRpdG9yLnJhbmdlKGVkaXRvciwgUmFuZ2UuZW5kKHBhcmVudFJhbmdlKSk7XG4gICAgY29uc3QgcG9zaXRpb25zID0gQXJyYXkuZnJvbShFZGl0b3IucG9zaXRpb25zKGVkaXRvciwgeyBhdDogcGFyZW50UmFuZ2UgfSkpO1xuXG4gICAgbGV0IGxlZnQgPSAwO1xuICAgIGxldCByaWdodCA9IHBvc2l0aW9ucy5sZW5ndGg7XG4gICAgbGV0IG1pZGRsZSA9IE1hdGguZmxvb3IocmlnaHQgLyAyKTtcblxuICAgIGlmIChhcmVSYW5nZXNTYW1lTGluZShlZGl0b3IsIEVkaXRvci5yYW5nZShlZGl0b3IsIHBvc2l0aW9uc1tsZWZ0XSksIHBhcmVudFJhbmdlQm91bmRhcnkpKSB7XG4gICAgICAgIHJldHVybiBFZGl0b3IucmFuZ2UoZWRpdG9yLCBwb3NpdGlvbnNbbGVmdF0sIHBhcmVudFJhbmdlQm91bmRhcnkpO1xuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbnMubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gRWRpdG9yLnJhbmdlKGVkaXRvciwgcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXSwgcGFyZW50UmFuZ2VCb3VuZGFyeSk7XG4gICAgfVxuXG4gICAgd2hpbGUgKG1pZGRsZSAhPT0gcG9zaXRpb25zLmxlbmd0aCAmJiBtaWRkbGUgIT09IGxlZnQpIHtcbiAgICAgICAgaWYgKGFyZVJhbmdlc1NhbWVMaW5lKGVkaXRvciwgRWRpdG9yLnJhbmdlKGVkaXRvciwgcG9zaXRpb25zW21pZGRsZV0pLCBwYXJlbnRSYW5nZUJvdW5kYXJ5KSkge1xuICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZWZ0ID0gbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgbWlkZGxlID0gTWF0aC5mbG9vcigobGVmdCArIHJpZ2h0KSAvIDIpO1xuICAgIH1cblxuICAgIHJldHVybiBFZGl0b3IucmFuZ2UoZWRpdG9yLCBwb3NpdGlvbnNbcmlnaHRdLCBwYXJlbnRSYW5nZUJvdW5kYXJ5KTtcbn07XG4iXX0=
|
|
@@ -26,4 +26,4 @@ export const isDecoratorRangeListEqual = (list, another) => {
|
|
|
26
26
|
}
|
|
27
27
|
return true;
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy91dGlscy9yYW5nZS1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVEsRUFBRSxJQUFRLEVBQUUsRUFBRSxDQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU07SUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUV4Rjs7Ozs7O0dBTUc7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLElBQWEsRUFBRSxPQUFnQixFQUFXLEVBQUU7SUFDbEYsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpCLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDM0UsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUUzRSxJQUNJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztZQUN2RCxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLEVBQy9DLENBQUM7WUFDQyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhbmdlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgUExBQ0VIT0xERVJfU1lNQk9MIH0gZnJvbSAnLi93ZWFrLW1hcHMnO1xuXG5leHBvcnQgY29uc3Qgc2hhbGxvd0NvbXBhcmUgPSAob2JqMToge30sIG9iajI6IHt9KSA9PlxuICAgIE9iamVjdC5rZXlzKG9iajEpLmxlbmd0aCA9PT0gT2JqZWN0LmtleXMob2JqMikubGVuZ3RoICYmXG4gICAgT2JqZWN0LmtleXMob2JqMSkuZXZlcnkoa2V5ID0+IG9iajIuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBvYmoxW2tleV0gPT09IG9iajJba2V5XSk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBsaXN0IG9mIGRlY29yYXRvciByYW5nZXMgYXJlIGVxdWFsIHRvIGFub3RoZXIuXG4gKlxuICogUEVSRjogdGhpcyByZXF1aXJlcyB0aGUgdHdvIGxpc3RzIHRvIGFsc28gaGF2ZSB0aGUgcmFuZ2VzIGluc2lkZSB0aGVtIGluIHRoZVxuICogc2FtZSBvcmRlciwgYnV0IHRoaXMgaXMgYW4gb2theSBjb25zdHJhaW50IGZvciB1cyBzaW5jZSBkZWNvcmF0aW9ucyBhcmVcbiAqIGtlcHQgaW4gb3JkZXIsIGFuZCB0aGUgb2RkIGNhc2Ugd2hlcmUgdGhleSBhcmVuJ3QgaXMgb2theSB0byByZS1yZW5kZXIgZm9yLlxuICovXG5cbmV4cG9ydCBjb25zdCBpc0RlY29yYXRvclJhbmdlTGlzdEVxdWFsID0gKGxpc3Q6IFJhbmdlW10sIGFub3RoZXI6IFJhbmdlW10pOiBib29sZWFuID0+IHtcbiAgICBpZiAobGlzdC5sZW5ndGggIT09IGFub3RoZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBsaXN0W2ldO1xuICAgICAgICBjb25zdCBvdGhlciA9IGFub3RoZXJbaV07XG5cbiAgICAgICAgY29uc3QgeyBhbmNob3I6IHJhbmdlQW5jaG9yLCBmb2N1czogcmFuZ2VGb2N1cywgLi4ucmFuZ2VPd25Qcm9wcyB9ID0gcmFuZ2U7XG4gICAgICAgIGNvbnN0IHsgYW5jaG9yOiBvdGhlckFuY2hvciwgZm9jdXM6IG90aGVyRm9jdXMsIC4uLm90aGVyT3duUHJvcHMgfSA9IG90aGVyO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFSYW5nZS5lcXVhbHMocmFuZ2UsIG90aGVyKSB8fFxuICAgICAgICAgICAgcmFuZ2VbUExBQ0VIT0xERVJfU1lNQk9MXSAhPT0gb3RoZXJbUExBQ0VIT0xERVJfU1lNQk9MXSB8fFxuICAgICAgICAgICAgIXNoYWxsb3dDb21wYXJlKHJhbmdlT3duUHJvcHMsIG90aGVyT3duUHJvcHMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG59O1xuIl19
|