@plait/mind 0.2.0-next.5 → 0.2.0-next.8
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/draw/richtext.d.ts +4 -3
- package/esm2020/draw/richtext.mjs +7 -7
- package/esm2020/interfaces/options.mjs +2 -0
- package/esm2020/layout-option.mjs +3 -3
- package/esm2020/mind.component.mjs +2 -2
- package/esm2020/node.component.mjs +6 -6
- package/esm2020/plugins/emoji/emoji-base.component.mjs +13 -3
- package/esm2020/plugins/emoji/emoji.drawer.mjs +6 -10
- package/esm2020/plugins/emoji/emoji.mjs +9 -5
- package/esm2020/plugins/emoji/index.mjs +1 -2
- package/esm2020/plugins/with-abstract.mjs +2 -1
- package/esm2020/plugins/with-dnd.mjs +5 -5
- package/esm2020/plugins/with-extend-mind.mjs +11 -0
- package/esm2020/plugins/with-mind.mjs +3 -3
- package/esm2020/public-api.mjs +2 -1
- package/esm2020/utils/draw-placeholder.mjs +5 -4
- package/esm2020/utils/node-space.mjs +5 -5
- package/fesm2015/plait-mind.mjs +64 -49
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +64 -49
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/interfaces/options.d.ts +4 -0
- package/layout-option.d.ts +2 -1
- package/mind.component.d.ts +2 -2
- package/node.component.d.ts +5 -4
- package/package.json +1 -1
- package/plugins/emoji/emoji-base.component.d.ts +7 -4
- package/plugins/emoji/emoji.d.ts +3 -2
- package/plugins/emoji/emoji.drawer.d.ts +5 -5
- package/plugins/emoji/index.d.ts +0 -1
- package/plugins/with-extend-mind.d.ts +10 -0
- package/plugins/with-mind.d.ts +1 -1
- package/public-api.d.ts +1 -0
- package/styles/styles.scss +3 -0
- package/utils/node-space.d.ts +3 -2
- package/esm2020/plugins/emoji/with-mind-emoji.mjs +0 -8
- package/plugins/emoji/with-mind-emoji.d.ts +0 -8
|
@@ -3,7 +3,7 @@ import { drawLink } from '../draw/link';
|
|
|
3
3
|
import { getRectangleByNode } from './graph';
|
|
4
4
|
import { PlaitBoard, PlaitElement, drawRoundRectangle } from '@plait/core';
|
|
5
5
|
import { MindQueries } from '../queries';
|
|
6
|
-
import { isBottomLayout, isHorizontalLayout, isHorizontalLogicLayout, isIndentedLayout, isRightLayout, isVerticalLogicLayout } from '@plait/layouts';
|
|
6
|
+
import { getNonAbstractChildren, isBottomLayout, isHorizontalLayout, isHorizontalLogicLayout, isIndentedLayout, isRightLayout, isVerticalLogicLayout } from '@plait/layouts';
|
|
7
7
|
import { drawIndentedLink } from '../draw/indented-link';
|
|
8
8
|
import { isLeftLayout, isTopLayout } from '@plait/layouts';
|
|
9
9
|
import { isStandardLayout } from '@plait/layouts';
|
|
@@ -248,6 +248,7 @@ export const drawStraightDropNodeG = (board, targetRect, detectResult, targetCom
|
|
|
248
248
|
}
|
|
249
249
|
};
|
|
250
250
|
export const getHorizontalFakeY = (detectResult, targetIndex, parentNode, targetRect, layout, fakeY) => {
|
|
251
|
+
const childrenLength = getNonAbstractChildren(parentNode).length;
|
|
251
252
|
if (detectResult === 'top') {
|
|
252
253
|
if (targetIndex === 0 && isTopLayout(layout)) {
|
|
253
254
|
fakeY = targetRect.y + targetRect.height;
|
|
@@ -261,13 +262,13 @@ export const getHorizontalFakeY = (detectResult, targetIndex, parentNode, target
|
|
|
261
262
|
}
|
|
262
263
|
if (detectResult === 'bottom') {
|
|
263
264
|
fakeY = targetRect.y + targetRect.height + 30;
|
|
264
|
-
if (targetIndex <
|
|
265
|
+
if (targetIndex < childrenLength - 1) {
|
|
265
266
|
const nextComponent = PlaitElement.getComponent(parentNode.origin.children[targetIndex + 1]);
|
|
266
267
|
const nextRect = getRectangleByNode(nextComponent.node);
|
|
267
268
|
const topY = targetRect.y + targetRect.height;
|
|
268
269
|
fakeY = topY + (nextRect.y - topY) / 5;
|
|
269
270
|
}
|
|
270
|
-
if (targetIndex ===
|
|
271
|
+
if (targetIndex === childrenLength - 1) {
|
|
271
272
|
fakeY = targetRect.y + targetRect.height + 30;
|
|
272
273
|
}
|
|
273
274
|
}
|
|
@@ -307,4 +308,4 @@ export const drawIndentNodeG = (board, fakeDropNodeG, fakePoint, node) => {
|
|
|
307
308
|
fakeDropNodeG?.appendChild(linkSVGG);
|
|
308
309
|
fakeDropNodeG?.appendChild(fakeRectangleG);
|
|
309
310
|
};
|
|
310
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wbGFjZWhvbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXctcGxhY2Vob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFTLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUNILGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IscUJBQXFCLEVBRXhCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQ3BDLEtBQWlCLEVBQ2pCLFVBQStELEVBQy9ELGFBQXNDLEVBQ3hDLEVBQUU7SUFDQSxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQXNCLENBQUM7SUFDMUYsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELElB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LEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDbkMsTUFBTSxRQUFRLEdBQWEsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEYsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9FLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUM5QixvQkFBb0IsR0FBRyxLQUFLLEVBQzVCLGtCQUFrQixHQUFHLEtBQUssR0FBRyxFQUFFLEVBQy9CLGtCQUFrQixHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQ3JDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQzdCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQjtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLE9BQU87S0FDckIsQ0FDSixDQUFDO0lBQ0YsYUFBYSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxhQUFhLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJBU0UsIFBSSU1BUllfQ09MT1IsIFNUUk9LRV9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBkcmF3TGluayB9IGZyb20gJy4uL2RyYXcvbGluayc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmRFbGVtZW50LCBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuL2dyYXBoJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIGRyYXdSb3VuZFJlY3RhbmdsZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcXVlcmllcyc7XG5pbXBvcnQge1xuICAgIGlzQm90dG9tTGF5b3V0LFxuICAgIGlzSG9yaXpvbnRhbExheW91dCxcbiAgICBpc0hvcml6b250YWxMb2dpY0xheW91dCxcbiAgICBpc0luZGVudGVkTGF5b3V0LFxuICAgIGlzUmlnaHRMYXlvdXQsXG4gICAgaXNWZXJ0aWNhbExvZ2ljTGF5b3V0LFxuICAgIE1pbmRMYXlvdXRUeXBlXG59IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGRyYXdJbmRlbnRlZExpbmsgfSBmcm9tICcuLi9kcmF3L2luZGVudGVkLWxpbmsnO1xuaW1wb3J0IHsgaXNMZWZ0TGF5b3V0LCBpc1RvcExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGlzU3RhbmRhcmRMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBpc01peGVkTGF5b3V0IH0gZnJvbSAnLi9sYXlvdXQnO1xuXG5leHBvcnQgY29uc3QgZHJhd1BsYWNlaG9sZGVyRHJvcE5vZGVHID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGRyb3BUYXJnZXQ6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfSxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZFxuKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChkcm9wVGFyZ2V0LnRhcmdldCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgY29uc3QgdGFyZ2V0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZSh0YXJnZXRDb21wb25lbnQubm9kZSk7XG4gICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ICYmIFsncmlnaHQnLCAnbGVmdCddLmluY2x1ZGVzKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0KSkge1xuICAgICAgICBkcmF3U3RyYWlnaHREcm9wTm9kZUcoYm9hcmQsIHRhcmdldFJlY3QsIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0LCB0YXJnZXRDb21wb25lbnQsIGZha2VEcm9wTm9kZUcpO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXRDb21wb25lbnQucGFyZW50ICYmIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ICYmIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0KSkge1xuICAgICAgICBjb25zdCBwYXJlbnRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHRhcmdldENvbXBvbmVudC5wYXJlbnQub3JpZ2luKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW4uaW5kZXhPZih0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuICAgICAgICBkcmF3Q3VydmVQbGFjZWhvbGRlckRyb3BOb2RlRyhcbiAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgdGFyZ2V0UmVjdCxcbiAgICAgICAgICAgIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0LFxuICAgICAgICAgICAgdGFyZ2V0SW5kZXgsXG4gICAgICAgICAgICB0YXJnZXRDb21wb25lbnQsXG4gICAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgICBmYWtlRHJvcE5vZGVHXG4gICAgICAgICk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdDdXJ2ZVBsYWNlaG9sZGVyRHJvcE5vZGVHID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHRhcmdldFJlY3Q6IHtcbiAgICAgICAgeDogbnVtYmVyO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIH0sXG4gICAgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQsXG4gICAgdGFyZ2V0SW5kZXg6IG51bWJlcixcbiAgICB0YXJnZXRDb21wb25lbnQ6IE1pbmROb2RlQ29tcG9uZW50LFxuICAgIHBhcmVudENvbXBvbmVudDogTWluZE5vZGVDb21wb25lbnQsXG4gICAgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWRcbikgPT4ge1xuICAgIGNvbnN0IHBhcmVudE5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG4gICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudCh0YXJnZXRDb21wb25lbnQubm9kZS5wYXJlbnQub3JpZ2luKTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5icmFuY2hXaWR0aCA/IHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5icmFuY2hXaWR0aCA6IFNUUk9LRV9XSURUSDtcbiAgICBsZXQgZmFrZVggPSB0YXJnZXRDb21wb25lbnQubm9kZS54LFxuICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSAtIDMwLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gdGFyZ2V0UmVjdC54LFxuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWCA9IHRhcmdldFJlY3QueCArIDMwLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVksXG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyLFxuICAgICAgICB3aWR0aCA9IDMwO1xuXG4gICAgaWYgKGlzTGVmdExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VYID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueCArIHRhcmdldENvbXBvbmVudC5ub2RlLndpZHRoIC0gMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFggPSB0YXJnZXRSZWN0LnggKyB0YXJnZXRSZWN0LndpZHRoIC0gMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aDtcbiAgICB9XG4gICAgaWYgKGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0KHBhcmVudE5vZGVMYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0gZ2V0SG9yaXpvbnRhbEZha2VZKGRldGVjdFJlc3VsdCBhcyAndG9wJyB8ICdib3R0b20nLCB0YXJnZXRJbmRleCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIHRhcmdldFJlY3QsIGxheW91dCwgZmFrZVkpO1xuICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnROb2RlTGF5b3V0KSkge1xuICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4ucmlnaHROb2RlQ291bnQgfHwgMDtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHBhcmVudENvbXBvbmVudC5ub2RlLmNoaWxkcmVuLmZpbmRJbmRleCh4ID0+IHggPT09IHRhcmdldENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdCA9IGlkeCA+PSByaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgIC8vIOagh+WHhuW4g+WxgOeahOW3pu+8jOmcgOimgeiwg+aVtCB4XG4gICAgICAgICAgICBpZiAoaXNMZWZ0KSB7XG4gICAgICAgICAgICAgICAgZmFrZVggPSB0YXJnZXRDb21wb25lbnQubm9kZS54ICsgdGFyZ2V0Q29tcG9uZW50Lm5vZGUud2lkdGggLSAzMDtcbiAgICAgICAgICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aCAtIDMwO1xuICAgICAgICAgICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdEZpcnN0ID0gaWR4ID09PSByaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgIGNvbnN0IGlzUmlnaHRMYXN0ID0gaWR4ID09PSByaWdodE5vZGVDb3VudCAtIDE7XG4gICAgICAgICAgICAvLyDmi5bmi73oh7Plt6bnrKzkuIDkuKroioLngrnnmoTmg4XlhrVcbiAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICd0b3AnICYmIGlzTGVmdEZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgLSB0YXJnZXRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdib3R0b20nICYmIGlzUmlnaHRMYXN0KSB7XG4gICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCArIDMwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWTtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFkgPSBmYWtlUmVjdGFuZ2xlU3RhcnRZICsgMTI7XG4gICAgfVxuXG4gICAgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChsYXlvdXQpKSB7XG4gICAgICAgIHBhcmVudENvbXBvbmVudCA9IHRhcmdldENvbXBvbmVudDtcbiAgICAgICAgdGFyZ2V0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0YXJnZXRDb21wb25lbnQucGFyZW50Lm9yaWdpbikgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIGZha2VYID0gcGFyZW50Q29tcG9uZW50Lm5vZGUueDtcbiAgICAgICAgd2lkdGggPSBwYXJlbnRDb21wb25lbnQubm9kZS53aWR0aDtcbiAgICAgICAgY29uc3QgdkdhcCA9IEJBU0UgKiA2ICsgc3Ryb2tlV2lkdGg7XG4gICAgICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpICYmIGRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gdkdhcDtcbiAgICAgICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWSAtIHZHYXAgKyBzdHJva2VXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNCb3R0b21MYXlvdXQobGF5b3V0KSAmJiBkZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0ICsgdkdhcDtcbiAgICAgICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWSArIHZHYXAgLSBzdHJva2VXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gZmFrZVggKyBNYXRoLmNlaWwocGFyZW50Q29tcG9uZW50Lm5vZGUud2lkdGggLyAyKSAtIHBhcmVudENvbXBvbmVudC5ub2RlLmhHYXAgLSBNYXRoLmNlaWwoc3Ryb2tlV2lkdGggLyAyKTtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFggPSBmYWtlUmVjdGFuZ2xlU3RhcnRYICsgMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyO1xuICAgIH1cbiAgICBpZiAoaXNJbmRlbnRlZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIC8vIOWBj+enu+S4gOS4qiBHYXBcbiAgICAgICAgaWYgKGlzTGVmdExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBmYWtlWCAtPSBCQVNFICogNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBmYWtlWCArPSBCQVNFICogNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIGlmIChpc0xhc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gdGFyZ2V0UmVjdC5oZWlnaHQgLSBCQVNFO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUobmV4dENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgLSBNYXRoLmFicygobmV4dFJlY3QueSArIG5leHRSZWN0LmhlaWdodCAtIHRhcmdldFJlY3QueSkgLyAyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IDA7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmlyc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUocGFyZW50Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlWSA9IHBhcmVudFJlY3QueSAtIHBhcmVudFJlY3QuaGVpZ2h0IC8gMiAtIEJBU0U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHByZXZpb3VzQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlWSA9IHByZXZpb3VzUmVjdC55IC0gTWF0aC5hYnMoKHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0IC0gcHJldmlvdXNSZWN0LnkpIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFggPSBmYWtlWDtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFggPSBmYWtlUmVjdGFuZ2xlU3RhcnRYICsgMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWTtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFkgPSBmYWtlUmVjdGFuZ2xlU3RhcnRZICsgMTI7XG4gICAgfVxuXG4gICAgLy8g5p6E6YCg5LiA5p2h5puy57q/XG4gICAgY29uc3QgZmFrZU5vZGU6IE1pbmROb2RlID0geyAuLi50YXJnZXRDb21wb25lbnQubm9kZSwgeDogZmFrZVgsIHk6IGZha2VZLCB3aWR0aCwgaGVpZ2h0OiAxMiB9O1xuICAgIGNvbnN0IGxpbmtTVkdHID0gaXNJbmRlbnRlZExheW91dChsYXlvdXQpXG4gICAgICAgID8gZHJhd0luZGVudGVkTGluayhib2FyZCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSlcbiAgICAgICAgOiBkcmF3TGluayhib2FyZCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSwgZmFsc2UpO1xuICAgIC8vIOaehOmAoOS4gOS4quefqeW9ouahhuWdkOagh1xuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WSxcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFgsXG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZLFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2U6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAgIGZpbGw6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfVxuICAgICk7XG4gICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQobGlua1NWR0cpO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGZha2VSZWN0YW5nbGVHKTtcbn07XG5leHBvcnQgY29uc3QgZHJhd1N0cmFpZ2h0RHJvcE5vZGVHID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHRhcmdldFJlY3Q6IHtcbiAgICAgICAgeDogbnVtYmVyO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIH0sXG4gICAgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQsXG4gICAgdGFyZ2V0Q29tcG9uZW50OiBNaW5kTm9kZUNvbXBvbmVudCxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZFxuKSA9PiB7XG4gICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSB0YXJnZXRSZWN0O1xuICAgIGNvbnN0IGxpbmVMZW5ndGggPSA0MDtcbiAgICBsZXQgc3RhcnRMaW5lUG9pbnQgPSB4ICsgd2lkdGg7XG4gICAgbGV0IGVuZExpbmVQb2ludCA9IHggKyB3aWR0aCArIGxpbmVMZW5ndGg7XG4gICAgbGV0IHN0YXJ0UmVjdGFuZ2xlUG9pbnRYID0geCArIHdpZHRoICsgbGluZUxlbmd0aDtcbiAgICBsZXQgZW5kUmVjdGFuZ2xlUG9pbnRYID0geCArIGxpbmVMZW5ndGggKyB3aWR0aCArIDMwO1xuICAgIGxldCBzdGFydFJlY3RhbmdsZVBvaW50WSA9IHkgKyBoZWlnaHQgLyAyIC0gNjtcbiAgICBsZXQgZW5kUmVjdGFuZ2xlUG9pbnRZID0geSArIGhlaWdodCAvIDIgLSA2ICsgMTI7XG5cbiAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnbGVmdCcpIHtcbiAgICAgICAgc3RhcnRMaW5lUG9pbnQgPSB4IC0gbGluZUxlbmd0aDtcbiAgICAgICAgZW5kTGluZVBvaW50ID0geDtcbiAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFggPSB4IC0gbGluZUxlbmd0aCAtIDMwO1xuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFggPSB4IC0gbGluZUxlbmd0aDtcbiAgICB9XG4gICAgbGV0IGZha2VZID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueTtcbiAgICBsZXQgZmFrZVggPSB0YXJnZXRSZWN0Lng7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggOiBTVFJPS0VfV0lEVEg7XG4gICAgY29uc3QgcG9pbnRPcHRpb25zID0ge1xuICAgICAgICBmYWtlWCxcbiAgICAgICAgZmFrZVksXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHN0cm9rZVdpZHRoXG4gICAgfTtcbiAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KFxuICAgICAgICB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luIDogdGFyZ2V0Q29tcG9uZW50Lm5vZGUucGFyZW50Lm9yaWdpblxuICAgICk7XG4gICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudCh0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuICAgIGlmICghaXNNaXhlZExheW91dChwYXJlbnRMYXlvdXQsIGxheW91dCkpIHtcbiAgICAgICAgLy8g5p6E6YCg5LiA5p2h55u057q/XG4gICAgICAgIGxldCBsaW5lUG9pbnRzID0gW1xuICAgICAgICAgICAgW3N0YXJ0TGluZVBvaW50LCB5ICsgaGVpZ2h0IC8gMl0sXG4gICAgICAgICAgICBbZW5kTGluZVBvaW50LCB5ICsgaGVpZ2h0IC8gMl1cbiAgICAgICAgXSBhcyBQb2ludFtdO1xuICAgICAgICBpZiAoaXNJbmRlbnRlZExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICBjb25zdCBmYWtlUG9pbnQgPSBnZXRJbmRlbnRlZEZha2VQb2ludChwYXJlbnRMYXlvdXQsIHBvaW50T3B0aW9ucyk7XG4gICAgICAgICAgICBkcmF3SW5kZW50Tm9kZUcoYm9hcmQsIGZha2VEcm9wTm9kZUcgYXMgU1ZHR0VsZW1lbnQsIGZha2VQb2ludCwgdGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICBpZiAoIXRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiDorqHnrpfpgLvovpHvvJpcbiAgICAgICAgICAgICAgICAgKiAgMS4g56e75Yqo5Yiw5bem5L6n77ya5b2T5YmN6IqC54K5IHN0YXJ0WCAtIOWBj+enu+WAvO+8jOWBj+enu+WAvOiuoeeul+WmguS4i++8mlxuICAgICAgICAgICAgICAgICAqICAgICAgYS4g56ys5LiA5Liq6IqC54K577yaIOWbuuWumuWAvO+8iOadpea6kOS6jiBnZXRNYWluQXhsZe+8jOesrOS6jOe6p+iKgueCue+8mkJBU0UgKiA477yM5YW25LuWIEJBU0UgKiAzICsgc3Ryb2tlV2lkdGggLyAy77yJ77ybXG4gICAgICAgICAgICAgICAgICogICAgICBiLiDnrKzkuozkuKroioLngrnliLDmnIDlkI7kuIDkuKroioLngrnkuYvpl7TvvJrkuIrkuIDkuKroioLngrnliLDlvZPliY3oioLngrnpl7Tot53nmoTkuIDljYrvvIgo5b2T5YmN6IqC54K5IHN0YXJ0WCAtIOS4iuS4gOS4quiKgueCueeahCBlbmRYKSAvIDIp77yMZW5kWCA9IOW9k+WJjeiKgueCueeahCBzdGFydFggKyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgKiAgMi4g56e75Yqo5Yiw5Y+z5L6n77ya5b2T5YmN6IqC54K5IHggKyB3aWR0aCArIOWBj+enu+WAvO+8jOWBj+enu+WAvOiuoeeul+WmguS4i++8mlxuICAgICAgICAgICAgICAgICAqICAgICAgYS4g56ys5LqM5Liq6IqC54K55Yiw5pyA5ZCO5LiA5Liq6IqC54K55LmL6Ze055qE5Y+z5L6n77ya5b2T5YmN6IqC54K55Yiw5LiL5LiA5Liq6IqC54K56Ze06Led55qE5LiA5Y2K77yIKOS4i+S4gOS4quiKgueCuSBzdGFydFggLSDlvZPliY3oioLngrnnmoQgZW5kWCkgLyAyKe+8jGVuZFggPSDlvZPliY3oioLngrnnmoQgc3RhcnRYICsgd2lkdGg7XG4gICAgICAgICAgICAgICAgICogICAgICBiLiDmnIDlkI7kuIDkuKroioLngrnnmoTlj7PkvqfvvJrlm7rlrprlgLzvvIjmnaXmupDkuo4gZ2V0TWFpbkF4bGXvvIznrKzkuoznuqfoioLngrnvvJpCQVNFICogOO+8jOWFtuS7liBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMu+8ie+8m1xuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHRhcmdldENvbXBvbmVudC5wYXJlbnQub3JpZ2luKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5pbmRleE9mKHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldFggPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ZpcnN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaXJzdE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gQkFTRSAqIDggOiBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW5bdGFyZ2V0SW5kZXggLSAxXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwcmV2aW91c0NvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlID0gdGFyZ2V0UmVjdC54IC0gKHByZXZpb3VzUmVjdC54ICsgcHJldmlvdXNSZWN0LndpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBzcGFjZSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmFrZVggPSB0YXJnZXRSZWN0LnggLSBvZmZzZXRYIC0gd2lkdGggLyAyIC0gTWF0aC5jZWlsKHN0cm9rZVdpZHRoIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldFggPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMYXN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QgPyBCQVNFICogOCA6IEJBU0UgKiAzICsgc3Ryb2tlV2lkdGggLyAyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShuZXh0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BhY2UgPSBuZXh0UmVjdC54IC0gKHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IHNwYWNlIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmYWtlWCA9IHRhcmdldFJlY3QueCArIHdpZHRoICsgb2Zmc2V0WCAtIHdpZHRoIC8gMiAtIE1hdGguY2VpbChzdHJva2VXaWR0aCAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WCA9IGZha2VYO1xuICAgICAgICAgICAgICAgIGlmIChpc1RvcExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWboOS4uuefqeW9ouaYr+S7juW3puS4iuinkuS4uui1t+eCueWQkeS4i+eUu+eahO+8jOaJgOS7pemcgOimgeWQkeS4iuWBj+enu+S4gOS4quefqeW9oueahOmrmOW6pu+8iC0xMu+8iVxuICAgICAgICAgICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZICsgaGVpZ2h0ICsgdGFyZ2V0Q29tcG9uZW50Lm5vZGUudkdhcCAtIDEyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNCb3R0b21MYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZICsgdGFyZ2V0Q29tcG9uZW50Lm5vZGUudkdhcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRYID0gc3RhcnRSZWN0YW5nbGVQb2ludFggKyAzMDtcbiAgICAgICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFkgPSBzdGFydFJlY3RhbmdsZVBvaW50WSArIDEyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4udGFyZ2V0Q29tcG9uZW50Lm5vZGUsIHg6IGZha2VYLCB5OiBmYWtlWSwgd2lkdGg6IDMwIH07XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua1NWR0cgPSBkcmF3TGluayhib2FyZCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBsaW5rU1ZHRyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmxpbmVhclBhdGgobGluZVBvaW50cywgeyBzdHJva2U6IFBSSU1BUllfQ09MT1IsIHN0cm9rZVdpZHRoIH0pO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQobGlua1NWR0cpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOaehOmAoOS4gOS4quefqeW9ouahhuWdkOagh1xuICAgICAgICBsZXQgZmFrZVJlY3RhbmdsZUcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRYLFxuICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFksXG4gICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAgIGZpbGw6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQoZmFrZVJlY3RhbmdsZUcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOa3t+WQiOW4g+WxgOeUu+e6v+mAu+i+kVxuICAgICAgICBpZiAoaXNIb3Jpem9udGFsTG9naWNMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZha2VQb2ludCA9IGdldEluZGVudGVkRmFrZVBvaW50KGxheW91dCwgcG9pbnRPcHRpb25zKTtcbiAgICAgICAgICAgICAgICBkcmF3SW5kZW50Tm9kZUcoYm9hcmQsIGZha2VEcm9wTm9kZUcgYXMgU1ZHR0VsZW1lbnQsIGZha2VQb2ludCwgdGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIb3Jpem9udGFsRmFrZVkgPSAoXG4gICAgZGV0ZWN0UmVzdWx0OiAndG9wJyB8ICdib3R0b20nLFxuICAgIHRhcmdldEluZGV4OiBudW1iZXIsXG4gICAgcGFyZW50Tm9kZTogTWluZE5vZGUsXG4gICAgdGFyZ2V0UmVjdDoge1xuICAgICAgICB4OiBudW1iZXI7XG4gICAgICAgIHk6IG51bWJlcjtcbiAgICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgfSxcbiAgICBsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlLFxuICAgIGZha2VZOiBudW1iZXJcbikgPT4ge1xuICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICd0b3AnKSB7XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA9PT0gMCAmJiBpc1RvcExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChwYXJlbnROb2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCAtIDFdKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwcmV2aW91c0NvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHRvcFkgPSBwcmV2aW91c1JlY3QueSArIHByZXZpb3VzUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICBmYWtlWSA9IHRvcFkgKyAodGFyZ2V0UmVjdC55IC0gdG9wWSkgLyA1O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQgKyAzMDtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4IDwgcGFyZW50Tm9kZS5vcmlnaW4uY2hpbGRyZW4ubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQocGFyZW50Tm9kZS5vcmlnaW4uY2hpbGRyZW5bdGFyZ2V0SW5kZXggKyAxXSkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICBjb25zdCBuZXh0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShuZXh0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgY29uc3QgdG9wWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgZmFrZVkgPSB0b3BZICsgKG5leHRSZWN0LnkgLSB0b3BZKSAvIDU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSBwYXJlbnROb2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0ICsgMzA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZha2VZO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEluZGVudGVkRmFrZVBvaW50ID0gKFxuICAgIGxheW91dDogTWluZExheW91dFR5cGUsXG4gICAgcG9pbnRPcHRpb25zOiB7XG4gICAgICAgIGZha2VYOiBudW1iZXI7XG4gICAgICAgIGZha2VZOiBudW1iZXI7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgc3Ryb2tlV2lkdGg6IG51bWJlcjtcbiAgICB9XG4pID0+IHtcbiAgICBsZXQgeyBmYWtlWCwgZmFrZVksIHgsIHksIHdpZHRoLCBoZWlnaHQsIHN0cm9rZVdpZHRoIH0gPSBwb2ludE9wdGlvbnM7XG4gICAgY29uc3QgaEdhcCA9IEJBU0UgKiA0O1xuICAgIGNvbnN0IHZHYXAgPSBCQVNFICogNjtcbiAgICBjb25zdCBvZmZzZXRYID0gaEdhcCArIHdpZHRoIC8gMiArIHN0cm9rZVdpZHRoO1xuICAgIGNvbnN0IG9mZnNldFkgPSB2R2FwICsgaGVpZ2h0IC8gMiArIHN0cm9rZVdpZHRoO1xuICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBmYWtlWCA9IHggLSBvZmZzZXRYO1xuICAgIH1cbiAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VYID0geCArIG9mZnNldFg7XG4gICAgfVxuICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0geSAtIG9mZnNldFk7XG4gICAgfVxuICAgIGlmIChpc0JvdHRvbUxheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0geSArIGhlaWdodCArIG9mZnNldFk7XG4gICAgfVxuICAgIHJldHVybiB7IGZha2VYLCBmYWtlWSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdJbmRlbnROb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCxcbiAgICBmYWtlUG9pbnQ6IHsgZmFrZVg6IG51bWJlcjsgZmFrZVk6IG51bWJlciB9LFxuICAgIG5vZGU6IE1pbmROb2RlXG4pID0+IHtcbiAgICBjb25zdCB7IGZha2VYLCBmYWtlWSB9ID0gZmFrZVBvaW50O1xuICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4ubm9kZSwgeDogZmFrZVgsIHk6IGZha2VZLCB3aWR0aDogMzAsIGhlaWdodDogMTIgfTtcbiAgICBjb25zdCBsaW5rU1ZHRyA9IGRyYXdJbmRlbnRlZExpbmsoYm9hcmQsIG5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSk7XG5cbiAgICBjb25zdCBzdGFydFJlY3RhbmdsZVBvaW50WCA9IGZha2VYLFxuICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFggPSBmYWtlWCArIDMwLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFkgPSBmYWtlWSArIDEyO1xuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG59O1xuIl19
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wbGFjZWhvbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXctcGxhY2Vob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFTLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUNILHNCQUFzQixFQUN0QixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLHFCQUFxQixFQUV4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUNwQyxLQUFpQixFQUNqQixVQUErRCxFQUMvRCxhQUFzQyxFQUN4QyxFQUFFO0lBQ0EsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFzQixDQUFDO0lBQzFGLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMs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QSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxNQUFNLFFBQVEsR0FBYSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFL0UsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQzlCLG9CQUFvQixHQUFHLEtBQUssRUFDNUIsa0JBQWtCLEdBQUcsS0FBSyxHQUFHLEVBQUUsRUFDL0Isa0JBQWtCLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNwQyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FDckMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDN0Isb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCO1FBQ0ksTUFBTSxFQUFFLGFBQWE7UUFDckIsV0FBVyxFQUFFLENBQUM7UUFDZCxJQUFJLEVBQUUsYUFBYTtRQUNuQixTQUFTLEVBQUUsT0FBTztLQUNyQixDQUNKLENBQUM7SUFDRixhQUFhLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLGFBQWEsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkFTRSwgUFJJTUFSWV9DT0xPUiwgU1RST0tFX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGRyYXdMaW5rIH0gZnJvbSAnLi4vZHJhdy9saW5rJztcbmltcG9ydCB7IERldGVjdFJlc3VsdCwgTWluZEVsZW1lbnQsIE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL25vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4vZ3JhcGgnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludCwgZHJhd1JvdW5kUmVjdGFuZ2xlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzJztcbmltcG9ydCB7XG4gICAgZ2V0Tm9uQWJzdHJhY3RDaGlsZHJlbixcbiAgICBpc0JvdHRvbUxheW91dCxcbiAgICBpc0hvcml6b250YWxMYXlvdXQsXG4gICAgaXNIb3Jpem9udGFsTG9naWNMYXlvdXQsXG4gICAgaXNJbmRlbnRlZExheW91dCxcbiAgICBpc1JpZ2h0TGF5b3V0LFxuICAgIGlzVmVydGljYWxMb2dpY0xheW91dCxcbiAgICBNaW5kTGF5b3V0VHlwZVxufSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBkcmF3SW5kZW50ZWRMaW5rIH0gZnJvbSAnLi4vZHJhdy9pbmRlbnRlZC1saW5rJztcbmltcG9ydCB7IGlzTGVmdExheW91dCwgaXNUb3BMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBpc1N0YW5kYXJkTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaXNNaXhlZExheW91dCB9IGZyb20gJy4vbGF5b3V0JztcblxuZXhwb3J0IGNvbnN0IGRyYXdQbGFjZWhvbGRlckRyb3BOb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0sXG4gICAgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWRcbikgPT4ge1xuICAgIGNvbnN0IHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZHJvcFRhcmdldC50YXJnZXQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGNvbnN0IHRhcmdldFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUodGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCAmJiBbJ3JpZ2h0JywgJ2xlZnQnXS5pbmNsdWRlcyhkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCkpIHtcbiAgICAgICAgZHJhd1N0cmFpZ2h0RHJvcE5vZGVHKGJvYXJkLCB0YXJnZXRSZWN0LCBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCwgdGFyZ2V0Q29tcG9uZW50LCBmYWtlRHJvcE5vZGVHKTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0Q29tcG9uZW50LnBhcmVudCAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCAmJiBbJ3RvcCcsICdib3R0b20nXS5pbmNsdWRlcyhkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0YXJnZXRDb21wb25lbnQucGFyZW50Lm9yaWdpbikgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuLmluZGV4T2YodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKTtcbiAgICAgICAgZHJhd0N1cnZlUGxhY2Vob2xkZXJEcm9wTm9kZUcoXG4gICAgICAgICAgICBib2FyZCxcbiAgICAgICAgICAgIHRhcmdldFJlY3QsXG4gICAgICAgICAgICBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCxcbiAgICAgICAgICAgIHRhcmdldEluZGV4LFxuICAgICAgICAgICAgdGFyZ2V0Q29tcG9uZW50LFxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgICAgZmFrZURyb3BOb2RlR1xuICAgICAgICApO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3Q3VydmVQbGFjZWhvbGRlckRyb3BOb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICB0YXJnZXRSZWN0OiB7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9LFxuICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0LFxuICAgIHRhcmdldEluZGV4OiBudW1iZXIsXG4gICAgdGFyZ2V0Q29tcG9uZW50OiBNaW5kTm9kZUNvbXBvbmVudCxcbiAgICBwYXJlbnRDb21wb25lbnQ6IE1pbmROb2RlQ29tcG9uZW50LFxuICAgIGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgICBjb25zdCBwYXJlbnROb2RlTGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuICAgIGNvbnN0IGxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQodGFyZ2V0Q29tcG9uZW50Lm5vZGUucGFyZW50Lm9yaWdpbik7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggOiBTVFJPS0VfV0lEVEg7XG4gICAgbGV0IGZha2VYID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueCxcbiAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgLSAzMCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCA9IHRhcmdldFJlY3QueCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFggPSB0YXJnZXRSZWN0LnggKyAzMCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WSA9IGZha2VZLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWSA9IGZha2VSZWN0YW5nbGVTdGFydFkgKyAxMixcbiAgICAgICAgd2lkdGggPSAzMDtcblxuICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBmYWtlWCA9IHRhcmdldENvbXBvbmVudC5ub2RlLnggKyB0YXJnZXRDb21wb25lbnQubm9kZS53aWR0aCAtIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aCAtIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWCA9IHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGg7XG4gICAgfVxuICAgIGlmIChpc0hvcml6b250YWxMb2dpY0xheW91dChwYXJlbnROb2RlTGF5b3V0KSkge1xuICAgICAgICBmYWtlWSA9IGdldEhvcml6b250YWxGYWtlWShkZXRlY3RSZXN1bHQgYXMgJ3RvcCcgfCAnYm90dG9tJywgdGFyZ2V0SW5kZXgsIHBhcmVudENvbXBvbmVudC5ub2RlLCB0YXJnZXRSZWN0LCBsYXlvdXQsIGZha2VZKTtcbiAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50Tm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IHx8IDA7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBwYXJlbnRDb21wb25lbnQubm9kZS5jaGlsZHJlbi5maW5kSW5kZXgoeCA9PiB4ID09PSB0YXJnZXRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICBjb25zdCBpc0xlZnQgPSBpZHggPj0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAvLyDmoIflh4bluIPlsYDnmoTlt6bvvIzpnIDopoHosIPmlbQgeFxuICAgICAgICAgICAgaWYgKGlzTGVmdCkge1xuICAgICAgICAgICAgICAgIGZha2VYID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueCArIHRhcmdldENvbXBvbmVudC5ub2RlLndpZHRoIC0gMzA7XG4gICAgICAgICAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCA9IHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGggLSAzMDtcbiAgICAgICAgICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWCA9IHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0xlZnRGaXJzdCA9IGlkeCA9PT0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICBjb25zdCBpc1JpZ2h0TGFzdCA9IGlkeCA9PT0gcmlnaHROb2RlQ291bnQgLSAxO1xuICAgICAgICAgICAgLy8g5ouW5ou96Iez5bem56ys5LiA5Liq6IqC54K555qE5oOF5Ya1XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAndG9wJyAmJiBpc0xlZnRGaXJzdCkge1xuICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gdGFyZ2V0UmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJyAmJiBpc1JpZ2h0TGFzdCkge1xuICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQgKyAzMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVk7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyO1xuICAgIH1cblxuICAgIGlmIChpc1ZlcnRpY2FsTG9naWNMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBwYXJlbnRDb21wb25lbnQgPSB0YXJnZXRDb21wb25lbnQ7XG4gICAgICAgIHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodGFyZ2V0Q29tcG9uZW50LnBhcmVudC5vcmlnaW4pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICBmYWtlWCA9IHBhcmVudENvbXBvbmVudC5ub2RlLng7XG4gICAgICAgIHdpZHRoID0gcGFyZW50Q29tcG9uZW50Lm5vZGUud2lkdGg7XG4gICAgICAgIGNvbnN0IHZHYXAgPSBCQVNFICogNiArIHN0cm9rZVdpZHRoO1xuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSAmJiBkZXRlY3RSZXN1bHQgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSAtIHZHYXA7XG4gICAgICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVkgLSB2R2FwICsgc3Ryb2tlV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkgJiYgZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCArIHZHYXA7XG4gICAgICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVkgKyB2R2FwIC0gc3Ryb2tlV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCA9IGZha2VYICsgTWF0aC5jZWlsKHBhcmVudENvbXBvbmVudC5ub2RlLndpZHRoIC8gMikgLSBwYXJlbnRDb21wb25lbnQubm9kZS5oR2FwIC0gTWF0aC5jZWlsKHN0cm9rZVdpZHRoIC8gMik7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gZmFrZVJlY3RhbmdsZVN0YXJ0WCArIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWSA9IGZha2VSZWN0YW5nbGVTdGFydFkgKyAxMjtcbiAgICB9XG4gICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAvLyDlgY/np7vkuIDkuKogR2FwXG4gICAgICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgZmFrZVggLT0gQkFTRSAqIDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUmlnaHRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgZmFrZVggKz0gQkFTRSAqIDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVG9wTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICBpZiAoaXNMYXN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSAtIHRhcmdldFJlY3QuaGVpZ2h0IC0gQkFTRTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCArIDFdXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5leHRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gTWF0aC5hYnMoKG5leHRSZWN0LnkgKyBuZXh0UmVjdC5oZWlnaHQgLSB0YXJnZXRSZWN0LnkpIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ZpcnN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSAwO1xuICAgICAgICAgICAgICAgIGlmIChpc0ZpcnN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHBhcmVudENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVkgPSBwYXJlbnRSZWN0LnkgLSBwYXJlbnRSZWN0LmhlaWdodCAvIDIgLSBCQVNFO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCArIDFdXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwcmV2aW91c0NvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVkgPSBwcmV2aW91c1JlY3QueSAtIE1hdGguYWJzKCh0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCAtIHByZXZpb3VzUmVjdC55KSAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gZmFrZVg7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gZmFrZVJlY3RhbmdsZVN0YXJ0WCArIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVk7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyO1xuICAgIH1cblxuICAgIC8vIOaehOmAoOS4gOadoeabsue6v1xuICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4udGFyZ2V0Q29tcG9uZW50Lm5vZGUsIHg6IGZha2VYLCB5OiBmYWtlWSwgd2lkdGgsIGhlaWdodDogMTIgfTtcbiAgICBjb25zdCBsaW5rU1ZHRyA9IGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KVxuICAgICAgICA/IGRyYXdJbmRlbnRlZExpbmsoYm9hcmQsIHBhcmVudENvbXBvbmVudC5ub2RlLCBmYWtlTm9kZSwgUFJJTUFSWV9DT0xPUiwgZmFsc2UpXG4gICAgICAgIDogZHJhd0xpbmsoYm9hcmQsIHBhcmVudENvbXBvbmVudC5ub2RlLCBmYWtlTm9kZSwgUFJJTUFSWV9DT0xPUiwgaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCksIGZhbHNlKTtcbiAgICAvLyDmnoTpgKDkuIDkuKrnn6nlvaLmoYblnZDmoIdcbiAgICBjb25zdCBmYWtlUmVjdGFuZ2xlRyA9IGRyYXdSb3VuZFJlY3RhbmdsZShcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksXG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFgsXG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFksXG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG59O1xuZXhwb3J0IGNvbnN0IGRyYXdTdHJhaWdodERyb3BOb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICB0YXJnZXRSZWN0OiB7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9LFxuICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0LFxuICAgIHRhcmdldENvbXBvbmVudDogTWluZE5vZGVDb21wb25lbnQsXG4gICAgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWRcbikgPT4ge1xuICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gdGFyZ2V0UmVjdDtcbiAgICBjb25zdCBsaW5lTGVuZ3RoID0gNDA7XG4gICAgbGV0IHN0YXJ0TGluZVBvaW50ID0geCArIHdpZHRoO1xuICAgIGxldCBlbmRMaW5lUG9pbnQgPSB4ICsgd2lkdGggKyBsaW5lTGVuZ3RoO1xuICAgIGxldCBzdGFydFJlY3RhbmdsZVBvaW50WCA9IHggKyB3aWR0aCArIGxpbmVMZW5ndGg7XG4gICAgbGV0IGVuZFJlY3RhbmdsZVBvaW50WCA9IHggKyBsaW5lTGVuZ3RoICsgd2lkdGggKyAzMDtcbiAgICBsZXQgc3RhcnRSZWN0YW5nbGVQb2ludFkgPSB5ICsgaGVpZ2h0IC8gMiAtIDY7XG4gICAgbGV0IGVuZFJlY3RhbmdsZVBvaW50WSA9IHkgKyBoZWlnaHQgLyAyIC0gNiArIDEyO1xuXG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIHN0YXJ0TGluZVBvaW50ID0geCAtIGxpbmVMZW5ndGg7XG4gICAgICAgIGVuZExpbmVQb2ludCA9IHg7XG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRYID0geCAtIGxpbmVMZW5ndGggLSAzMDtcbiAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRYID0geCAtIGxpbmVMZW5ndGg7XG4gICAgfVxuICAgIGxldCBmYWtlWSA9IHRhcmdldENvbXBvbmVudC5ub2RlLnk7XG4gICAgbGV0IGZha2VYID0gdGFyZ2V0UmVjdC54O1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmJyYW5jaFdpZHRoID8gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmJyYW5jaFdpZHRoIDogU1RST0tFX1dJRFRIO1xuICAgIGNvbnN0IHBvaW50T3B0aW9ucyA9IHtcbiAgICAgICAgZmFrZVgsXG4gICAgICAgIGZha2VZLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBzdHJva2VXaWR0aFxuICAgIH07XG4gICAgY29uc3QgcGFyZW50TGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChcbiAgICAgICAgdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmlzUm9vdCA/IHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbiA6IHRhcmdldENvbXBvbmVudC5ub2RlLnBhcmVudC5vcmlnaW5cbiAgICApO1xuICAgIGNvbnN0IGxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKTtcbiAgICBpZiAoIWlzTWl4ZWRMYXlvdXQocGFyZW50TGF5b3V0LCBsYXlvdXQpKSB7XG4gICAgICAgIC8vIOaehOmAoOS4gOadoeebtOe6v1xuICAgICAgICBsZXQgbGluZVBvaW50cyA9IFtcbiAgICAgICAgICAgIFtzdGFydExpbmVQb2ludCwgeSArIGhlaWdodCAvIDJdLFxuICAgICAgICAgICAgW2VuZExpbmVQb2ludCwgeSArIGhlaWdodCAvIDJdXG4gICAgICAgIF0gYXMgUG9pbnRbXTtcbiAgICAgICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgY29uc3QgZmFrZVBvaW50ID0gZ2V0SW5kZW50ZWRGYWtlUG9pbnQocGFyZW50TGF5b3V0LCBwb2ludE9wdGlvbnMpO1xuICAgICAgICAgICAgZHJhd0luZGVudE5vZGVHKGJvYXJkLCBmYWtlRHJvcE5vZGVHIGFzIFNWR0dFbGVtZW50LCBmYWtlUG9pbnQsIHRhcmdldENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChpc1ZlcnRpY2FsTG9naWNMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgaWYgKCF0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290KSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICog6K6h566X6YC76L6R77yaXG4gICAgICAgICAgICAgICAgICogIDEuIOenu+WKqOWIsOW3puS+p++8muW9k+WJjeiKgueCuSBzdGFydFggLSDlgY/np7vlgLzvvIzlgY/np7vlgLzorqHnrpflpoLkuIvvvJpcbiAgICAgICAgICAgICAgICAgKiAgICAgIGEuIOesrOS4gOS4quiKgueCue+8miDlm7rlrprlgLzvvIjmnaXmupDkuo4gZ2V0TWFpbkF4bGXvvIznrKzkuoznuqfoioLngrnvvJpCQVNFICogOO+8jOWFtuS7liBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMu+8ie+8m1xuICAgICAgICAgICAgICAgICAqICAgICAgYi4g56ys5LqM5Liq6IqC54K55Yiw5pyA5ZCO5LiA5Liq6IqC54K55LmL6Ze077ya5LiK5LiA5Liq6IqC54K55Yiw5b2T5YmN6IqC54K56Ze06Led55qE5LiA5Y2K77yIKOW9k+WJjeiKgueCuSBzdGFydFggLSDkuIrkuIDkuKroioLngrnnmoQgZW5kWCkgLyAyKe+8jGVuZFggPSDlvZPliY3oioLngrnnmoQgc3RhcnRYICsgd2lkdGg7XG4gICAgICAgICAgICAgICAgICogIDIuIOenu+WKqOWIsOWPs+S+p++8muW9k+WJjeiKgueCuSB4ICsgd2lkdGggKyDlgY/np7vlgLzvvIzlgY/np7vlgLzorqHnrpflpoLkuIvvvJpcbiAgICAgICAgICAgICAgICAgKiAgICAgIGEuIOesrOS6jOS4quiKgueCueWIsOacgOWQjuS4gOS4quiKgueCueS5i+mXtOeahOWPs+S+p++8muW9k+WJjeiKgueCueWIsOS4i+S4gOS4quiKgueCuemXtOi3neeahOS4gOWNiu+8iCjkuIvkuIDkuKroioLngrkgc3RhcnRYIC0g5b2T5YmN6IqC54K555qEIGVuZFgpIC8gMinvvIxlbmRYID0g5b2T5YmN6IqC54K555qEIHN0YXJ0WCArIHdpZHRoO1xuICAgICAgICAgICAgICAgICAqICAgICAgYi4g5pyA5ZCO5LiA5Liq6IqC54K555qE5Y+z5L6n77ya5Zu65a6a5YC877yI5p2l5rqQ5LqOIGdldE1haW5BeGxl77yM56ys5LqM57qn6IqC54K577yaQkFTRSAqIDjvvIzlhbbku5YgQkFTRSAqIDMgKyBzdHJva2VXaWR0aCAvIDLvvInvvJtcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBmYWtlWSA9IHRhcmdldENvbXBvbmVudC5ub2RlLnk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0YXJnZXRDb21wb25lbnQucGFyZW50Lm9yaWdpbikgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW4uaW5kZXhPZih0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvZmZzZXRYID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNGaXJzdE5vZGUgPSB0YXJnZXRJbmRleCA9PT0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRmlyc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmlzUm9vdCA/IEJBU0UgKiA4IDogQkFTRSAqIDMgKyBzdHJva2VXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0NvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4IC0gMV1cbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1JlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUocHJldmlvdXNDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZSA9IHRhcmdldFJlY3QueCAtIChwcmV2aW91c1JlY3QueCArIHByZXZpb3VzUmVjdC53aWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYID0gc3BhY2UgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZha2VYID0gdGFyZ2V0UmVjdC54IC0gb2Zmc2V0WCAtIHdpZHRoIC8gMiAtIE1hdGguY2VpbChzdHJva2VXaWR0aCAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvZmZzZXRYID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGFzdE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gQkFTRSAqIDggOiBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCArIDFdXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUobmV4dENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlID0gbmV4dFJlY3QueCAtICh0YXJnZXRSZWN0LnggKyB0YXJnZXRSZWN0LndpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBzcGFjZSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmFrZVggPSB0YXJnZXRSZWN0LnggKyB3aWR0aCArIG9mZnNldFggLSB3aWR0aCAvIDIgLSBNYXRoLmNlaWwoc3Ryb2tlV2lkdGggLyAyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFggPSBmYWtlWDtcbiAgICAgICAgICAgICAgICBpZiAoaXNUb3BMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICAvLyDlm6DkuLrnn6nlvaLmmK/ku47lt6bkuIrop5LkuLrotbfngrnlkJHkuIvnlLvnmoTvvIzmiYDku6XpnIDopoHlkJHkuIrlgY/np7vkuIDkuKrnn6nlvaLnmoTpq5jluqbvvIgtMTLvvIlcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFkgPSBmYWtlWSArIGhlaWdodCArIHRhcmdldENvbXBvbmVudC5ub2RlLnZHYXAgLSAxMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFkgPSBmYWtlWSArIHRhcmdldENvbXBvbmVudC5ub2RlLnZHYXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WCA9IHN0YXJ0UmVjdGFuZ2xlUG9pbnRYICsgMzA7XG4gICAgICAgICAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRZID0gc3RhcnRSZWN0YW5nbGVQb2ludFkgKyAxMjtcbiAgICAgICAgICAgICAgICBjb25zdCBmYWtlTm9kZTogTWluZE5vZGUgPSB7IC4uLnRhcmdldENvbXBvbmVudC5ub2RlLCB4OiBmYWtlWCwgeTogZmFrZVksIHdpZHRoOiAzMCB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtTVkdHID0gZHJhd0xpbmsoYm9hcmQsIHBhcmVudENvbXBvbmVudC5ub2RlLCBmYWtlTm9kZSwgUFJJTUFSWV9DT0xPUiwgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChsaW5rU1ZHRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbGlua1NWR0cgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5saW5lYXJQYXRoKGxpbmVQb2ludHMsIHsgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLCBzdHJva2VXaWR0aCB9KTtcbiAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDmnoTpgKDkuIDkuKrnn6nlvaLmoYblnZDmoIdcbiAgICAgICAgbGV0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksXG4gICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WCxcbiAgICAgICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRYLFxuICAgICAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogUFJJTUFSWV9DT0xPUixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGZha2VSZWN0YW5nbGVHKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyDmt7flkIjluIPlsYDnlLvnur/pgLvovpFcbiAgICAgICAgaWYgKGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgIGlmIChpc0luZGVudGVkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmYWtlUG9pbnQgPSBnZXRJbmRlbnRlZEZha2VQb2ludChsYXlvdXQsIHBvaW50T3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgZHJhd0luZGVudE5vZGVHKGJvYXJkLCBmYWtlRHJvcE5vZGVHIGFzIFNWR0dFbGVtZW50LCBmYWtlUG9pbnQsIHRhcmdldENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SG9yaXpvbnRhbEZha2VZID0gKFxuICAgIGRldGVjdFJlc3VsdDogJ3RvcCcgfCAnYm90dG9tJyxcbiAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgIHBhcmVudE5vZGU6IE1pbmROb2RlLFxuICAgIHRhcmdldFJlY3Q6IHtcbiAgICAgICAgeDogbnVtYmVyO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIH0sXG4gICAgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSxcbiAgICBmYWtlWTogbnVtYmVyXG4pID0+IHtcbiAgICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGdldE5vbkFic3RyYWN0Q2hpbGRyZW4ocGFyZW50Tm9kZSkubGVuZ3RoO1xuXG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSAwICYmIGlzVG9wTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHBhcmVudE5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4IC0gMV0pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHByZXZpb3VzQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgY29uc3QgdG9wWSA9IHByZXZpb3VzUmVjdC55ICsgcHJldmlvdXNSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGZha2VZID0gdG9wWSArICh0YXJnZXRSZWN0LnkgLSB0b3BZKSAvIDU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCArIDMwO1xuICAgICAgICBpZiAodGFyZ2V0SW5kZXggPCBjaGlsZHJlbkxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHBhcmVudE5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV0pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUobmV4dENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHRvcFkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGZha2VZID0gdG9wWSArIChuZXh0UmVjdC55IC0gdG9wWSkgLyA1O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA9PT0gY2hpbGRyZW5MZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0ICsgMzA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZha2VZO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEluZGVudGVkRmFrZVBvaW50ID0gKFxuICAgIGxheW91dDogTWluZExheW91dFR5cGUsXG4gICAgcG9pbnRPcHRpb25zOiB7XG4gICAgICAgIGZha2VYOiBudW1iZXI7XG4gICAgICAgIGZha2VZOiBudW1iZXI7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgc3Ryb2tlV2lkdGg6IG51bWJlcjtcbiAgICB9XG4pID0+IHtcbiAgICBsZXQgeyBmYWtlWCwgZmFrZVksIHgsIHksIHdpZHRoLCBoZWlnaHQsIHN0cm9rZVdpZHRoIH0gPSBwb2ludE9wdGlvbnM7XG4gICAgY29uc3QgaEdhcCA9IEJBU0UgKiA0O1xuICAgIGNvbnN0IHZHYXAgPSBCQVNFICogNjtcbiAgICBjb25zdCBvZmZzZXRYID0gaEdhcCArIHdpZHRoIC8gMiArIHN0cm9rZVdpZHRoO1xuICAgIGNvbnN0IG9mZnNldFkgPSB2R2FwICsgaGVpZ2h0IC8gMiArIHN0cm9rZVdpZHRoO1xuICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBmYWtlWCA9IHggLSBvZmZzZXRYO1xuICAgIH1cbiAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VYID0geCArIG9mZnNldFg7XG4gICAgfVxuICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0geSAtIG9mZnNldFk7XG4gICAgfVxuICAgIGlmIChpc0JvdHRvbUxheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0geSArIGhlaWdodCArIG9mZnNldFk7XG4gICAgfVxuICAgIHJldHVybiB7IGZha2VYLCBmYWtlWSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdJbmRlbnROb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCxcbiAgICBmYWtlUG9pbnQ6IHsgZmFrZVg6IG51bWJlcjsgZmFrZVk6IG51bWJlciB9LFxuICAgIG5vZGU6IE1pbmROb2RlXG4pID0+IHtcbiAgICBjb25zdCB7IGZha2VYLCBmYWtlWSB9ID0gZmFrZVBvaW50O1xuICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4ubm9kZSwgeDogZmFrZVgsIHk6IGZha2VZLCB3aWR0aDogMzAsIGhlaWdodDogMTIgfTtcbiAgICBjb25zdCBsaW5rU1ZHRyA9IGRyYXdJbmRlbnRlZExpbmsoYm9hcmQsIG5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSk7XG5cbiAgICBjb25zdCBzdGFydFJlY3RhbmdsZVBvaW50WCA9IGZha2VYLFxuICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFggPSBmYWtlWCArIDMwLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFkgPSBmYWtlWSArIDEyO1xuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG59O1xuIl19
|
|
@@ -36,10 +36,10 @@ const getVerticalSpaceBetweenNodeAndText = (element) => {
|
|
|
36
36
|
return nodeAndText;
|
|
37
37
|
};
|
|
38
38
|
export const NodeSpace = {
|
|
39
|
-
getNodeWidth(element) {
|
|
39
|
+
getNodeWidth(board, element) {
|
|
40
40
|
const nodeAndText = getHorizontalSpaceBetweenNodeAndText(element);
|
|
41
41
|
if (MindElement.hasEmojis(element)) {
|
|
42
|
-
return nodeAndText + getEmojisRectangle(element).width + getHorizontalSpaceEmojiAndText(element) + element.width + nodeAndText;
|
|
42
|
+
return nodeAndText + getEmojisRectangle(board, element).width + getHorizontalSpaceEmojiAndText(element) + element.width + nodeAndText;
|
|
43
43
|
}
|
|
44
44
|
return nodeAndText + element.width + nodeAndText;
|
|
45
45
|
},
|
|
@@ -47,10 +47,10 @@ export const NodeSpace = {
|
|
|
47
47
|
const nodeAndText = getVerticalSpaceBetweenNodeAndText(element);
|
|
48
48
|
return nodeAndText + element.height + nodeAndText;
|
|
49
49
|
},
|
|
50
|
-
getTextHorizontalSpace(element) {
|
|
50
|
+
getTextHorizontalSpace(board, element) {
|
|
51
51
|
const nodeAndText = getHorizontalSpaceBetweenNodeAndText(element);
|
|
52
52
|
if (MindElement.hasEmojis(element)) {
|
|
53
|
-
return nodeAndText + getEmojisRectangle(element).width + getHorizontalSpaceEmojiAndText(element);
|
|
53
|
+
return nodeAndText + getEmojisRectangle(board, element).width + getHorizontalSpaceEmojiAndText(element);
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
56
|
return nodeAndText;
|
|
@@ -69,4 +69,4 @@ export const NodeSpace = {
|
|
|
69
69
|
return nodeAndText;
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zcGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL25vZGUtc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUQsTUFBTSxnQkFBZ0IsR0FBRztJQUNyQixVQUFVLEVBQUU7UUFDUixXQUFXLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDckIsWUFBWSxFQUFFLElBQUksR0FBRyxHQUFHO0tBQzNCO0lBQ0QsUUFBUSxFQUFFO1FBQ04sV0FBVyxFQUFFLElBQUksR0FBRyxHQUFHO0tBQzFCO0NBQ0osQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7SUFDckIsVUFBVSxFQUFFO1FBQ1IsV0FBVyxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ3JCLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQztLQUN6QjtJQUNELFFBQVEsRUFBRTtRQUNOLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBQztLQUN4QjtDQUNKLENBQUM7QUFFRixNQUFNLG9DQUFvQyxHQUFHLENBQUMsT0FBb0IsRUFBRSxFQUFFO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQy9HLE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUU7SUFDNUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDbEgsT0FBTyxZQUFZLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxrQ0FBa0MsR0FBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMzRyxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDckIsWUFBWSxDQUFDLEtBQXFCLEVBQUUsT0FBb0I7UUFDcEQsTUFBTSxXQUFXLEdBQUcsb0NBQW9DLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sV0FBVyxHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsOEJBQThCLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7U0FDekk7UUFDRCxPQUFPLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsYUFBYSxDQUFDLE9BQW9CO1FBQzlCLE1BQU0sV0FBVyxHQUFHLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO0lBQ3RELENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxLQUFxQixFQUFFLE9BQW9CO1FBQzlELE1BQU0sV0FBVyxHQUFHLG9DQUFvQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoQyxPQUFPLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNHO2FBQU07WUFDSCxPQUFPLFdBQVcsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUFvQjtRQUNyQyxNQUFNLFdBQVcsR0FBRyxrQ0FBa0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRSxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBQ0QsdUJBQXVCLENBQUMsT0FBb0I7UUFDeEMsTUFBTSxXQUFXLEdBQUcsb0NBQW9DLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUNELHFCQUFxQixDQUFDLE9BQW9CO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkFTRSB9IGZyb20gJy4uL2NvbnN0YW50cy9kZWZhdWx0JztcbmltcG9ydCB7IFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRFbW9qaXNSZWN0YW5nbGUgfSBmcm9tICcuLi9wbHVnaW5zL2Vtb2ppL2Vtb2ppJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLWV4dGVuZC1taW5kJztcblxuY29uc3QgTm9kZURlZmF1bHRTcGFjZSA9IHtcbiAgICBob3Jpem9udGFsOiB7XG4gICAgICAgIG5vZGVBbmRUZXh0OiBCQVNFICogMyxcbiAgICAgICAgZW1vamlBbmRUZXh0OiBCQVNFICogMS41XG4gICAgfSxcbiAgICB2ZXJ0aWNhbDoge1xuICAgICAgICBub2RlQW5kVGV4dDogQkFTRSAqIDEuNVxuICAgIH1cbn07XG5cbmNvbnN0IFJvb3REZWZhdWx0U3BhY2UgPSB7XG4gICAgaG9yaXpvbnRhbDoge1xuICAgICAgICBub2RlQW5kVGV4dDogQkFTRSAqIDQsXG4gICAgICAgIGVtb2ppQW5kVGV4dDogQkFTRSAqIDJcbiAgICB9LFxuICAgIHZlcnRpY2FsOiB7XG4gICAgICAgIG5vZGVBbmRUZXh0OiBCQVNFICogMlxuICAgIH1cbn07XG5cbmNvbnN0IGdldEhvcml6b250YWxTcGFjZUJldHdlZW5Ob2RlQW5kVGV4dCA9IChlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGlzTWluZCA9IFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCk7XG4gICAgY29uc3Qgbm9kZUFuZFRleHQgPSBpc01pbmQgPyBSb290RGVmYXVsdFNwYWNlLmhvcml6b250YWwubm9kZUFuZFRleHQgOiBOb2RlRGVmYXVsdFNwYWNlLmhvcml6b250YWwubm9kZUFuZFRleHQ7XG4gICAgcmV0dXJuIG5vZGVBbmRUZXh0O1xufTtcblxuY29uc3QgZ2V0SG9yaXpvbnRhbFNwYWNlRW1vamlBbmRUZXh0ID0gKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgaXNNaW5kID0gUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KTtcbiAgICBjb25zdCBlbW9qaUFuZFRleHQgPSBpc01pbmQgPyBSb290RGVmYXVsdFNwYWNlLmhvcml6b250YWwuZW1vamlBbmRUZXh0IDogTm9kZURlZmF1bHRTcGFjZS5ob3Jpem9udGFsLmVtb2ppQW5kVGV4dDtcbiAgICByZXR1cm4gZW1vamlBbmRUZXh0O1xufTtcblxuY29uc3QgZ2V0VmVydGljYWxTcGFjZUJldHdlZW5Ob2RlQW5kVGV4dCA9IChlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGlzTWluZCA9IFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCk7XG4gICAgY29uc3Qgbm9kZUFuZFRleHQgPSBpc01pbmQgPyBSb290RGVmYXVsdFNwYWNlLnZlcnRpY2FsLm5vZGVBbmRUZXh0IDogTm9kZURlZmF1bHRTcGFjZS52ZXJ0aWNhbC5ub2RlQW5kVGV4dDtcbiAgICByZXR1cm4gbm9kZUFuZFRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgTm9kZVNwYWNlID0ge1xuICAgIGdldE5vZGVXaWR0aChib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGVBbmRUZXh0ID0gZ2V0SG9yaXpvbnRhbFNwYWNlQmV0d2Vlbk5vZGVBbmRUZXh0KGVsZW1lbnQpO1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaGFzRW1vamlzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZUFuZFRleHQgKyBnZXRFbW9qaXNSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQpLndpZHRoICsgZ2V0SG9yaXpvbnRhbFNwYWNlRW1vamlBbmRUZXh0KGVsZW1lbnQpICsgZWxlbWVudC53aWR0aCArIG5vZGVBbmRUZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlQW5kVGV4dCArIGVsZW1lbnQud2lkdGggKyBub2RlQW5kVGV4dDtcbiAgICB9LFxuICAgIGdldE5vZGVIZWlnaHQoZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9kZUFuZFRleHQgPSBnZXRWZXJ0aWNhbFNwYWNlQmV0d2Vlbk5vZGVBbmRUZXh0KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gbm9kZUFuZFRleHQgKyBlbGVtZW50LmhlaWdodCArIG5vZGVBbmRUZXh0O1xuICAgIH0sXG4gICAgZ2V0VGV4dEhvcml6b250YWxTcGFjZShib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGVBbmRUZXh0ID0gZ2V0SG9yaXpvbnRhbFNwYWNlQmV0d2Vlbk5vZGVBbmRUZXh0KGVsZW1lbnQpO1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaGFzRW1vamlzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZUFuZFRleHQgKyBnZXRFbW9qaXNSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQpLndpZHRoICsgZ2V0SG9yaXpvbnRhbFNwYWNlRW1vamlBbmRUZXh0KGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVBbmRUZXh0O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBnZXRUZXh0VmVydGljYWxTcGFjZShlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBub2RlQW5kVGV4dCA9IGdldFZlcnRpY2FsU3BhY2VCZXR3ZWVuTm9kZUFuZFRleHQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBub2RlQW5kVGV4dDtcbiAgICB9LFxuICAgIGdldEVtb2ppSG9yaXpvbnRhbFNwYWNlKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGVBbmRUZXh0ID0gZ2V0SG9yaXpvbnRhbFNwYWNlQmV0d2Vlbk5vZGVBbmRUZXh0KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gbm9kZUFuZFRleHQ7XG4gICAgfSxcbiAgICBnZXRFbW9qaVZlcnRpY2FsU3BhY2UoZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9kZUFuZFRleHQgPSBnZXRWZXJ0aWNhbFNwYWNlQmV0d2Vlbk5vZGVBbmRUZXh0KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gbm9kZUFuZFRleHQ7XG4gICAgfVxufTtcbiJdfQ==
|