@plait/core 0.55.0 → 0.55.1

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.
@@ -156,12 +156,15 @@ export const getHighestSelectedElements = (board, elements) => {
156
156
  return [...getHighestSelectedGroups(board, elements), ...getSelectedIsolatedElements(board, elements)];
157
157
  };
158
158
  export const createGroupRectangleG = (board, elements) => {
159
- const selectedElements = getSelectedElements(board);
160
- const groupRectangleG = createG();
159
+ const selectedElementIds = getSelectedElements(board).map(item => item.id);
160
+ let groupRectangleG = null;
161
161
  const isMoving = isSelectionMoving(board);
162
162
  elements.forEach(item => {
163
- const isRender = (!selectedElements.includes(item) && !isMoving) || isMoving;
163
+ const isRender = (!selectedElementIds.includes(item.id) && !isMoving) || isMoving;
164
164
  if (item.groupId && isRender) {
165
+ if (!groupRectangleG) {
166
+ groupRectangleG = createG();
167
+ }
165
168
  const elements = getElementsInGroupByElement(board, item);
166
169
  const rectangle = getRectangleByElements(board, elements, false);
167
170
  const rectangleG = drawRectangle(board, rectangle, {
@@ -233,4 +236,4 @@ export const moveElementsToNewPathAfterAddGroup = (board, selectedElements, newP
233
236
  };
234
237
  }));
235
238
  };
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUE4QyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQXlCLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsS0FBaUIsRUFBRSxTQUFtQixFQUFFLFlBQXNCLEVBQUUsRUFBRTtJQUNwSCxJQUFJLE1BQU0sR0FBbUIsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUUsS0FBc0IsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUs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RUFBRSxPQUFxQixFQUFFLEVBQUU7SUFDeEUsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQWlCLENBQUM7SUFDdkUsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixNQUFNO1lBQ1YsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxZQUFZLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FBQyxLQUFpQixFQUFFLGdCQUFnQyxFQUFFLE9BQWEsRUFBRSxFQUFFO0lBQ3JILE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDbEMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25CLHFCQUFxQixDQUNqQixLQUFLLEVBQ0wsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN2QixPQUFPO1lBQ0gsT0FBTztZQUNQLE9BQU87U0FDVixDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFDVElWRV9TVFJPS0VfV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQbGFpdEdyb3VwLCBQbGFpdEdyb3VwRWxlbWVudCwgUmVjdGFuZ2xlQ2xpZW50LCBTRUxFQ1RJT05fQk9SREVSX0NPTE9SIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRTZWxlY3Rpb25BbmdsZSB9IGZyb20gJy4vYW5nbGUnO1xuaW1wb3J0IHsgY3JlYXRlRywgc2V0QW5nbGVGb3JHIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgZHJhd1JlY3RhbmdsZSB9IGZyb20gJy4vZHJhd2luZy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBpZENyZWF0b3IgfSBmcm9tICcuL2lkLWNyZWF0b3InO1xuaW1wb3J0IHsgY2FjaGVTZWxlY3RlZEVsZW1lbnRzLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnLi9zZWxlY3RlZC1lbGVtZW50JztcbmltcG9ydCB7IGlzU2VsZWN0aW9uTW92aW5nIH0gZnJvbSAnLi9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgZGVwdGhGaXJzdFJlY3Vyc2lvbiB9IGZyb20gJy4vdHJlZSc7XG5pbXBvcnQgeyBtb3ZlRWxlbWVudHNUb05ld1BhdGggfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBzb3J0RWxlbWVudHMgfSBmcm9tICcuL3Bvc2l0aW9uJztcblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRzSW5Hcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZ3JvdXA6IFBsYWl0R3JvdXAsIHJlY3Vyc2lvbj86IGJvb2xlYW4sIGluY2x1ZGVHcm91cD86IGJvb2xlYW4pID0+IHtcbiAgICBsZXQgcmVzdWx0OiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGNvbnN0IGVsZW1lbnRzID0gYm9hcmQuY2hpbGRyZW4uZmlsdGVyKHZhbHVlID0+ICh2YWx1ZSBhcyBQbGFpdEVsZW1lbnQpLmdyb3VwSWQgPT09IGdyb3VwLmlkKSBhcyBQbGFpdEVsZW1lbnRbXTtcbiAgICBpZiAocmVjdXJzaW9uKSB7XG4gICAgICAgIGVsZW1lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChpdGVtKSkge1xuICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmdldEVsZW1lbnRzSW5Hcm91cChib2FyZCwgaXRlbSwgcmVjdXJzaW9uLCBpbmNsdWRlR3JvdXApKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGluY2x1ZGVHcm91cCA/IGVsZW1lbnRzIDogKGVsZW1lbnRzLmZpbHRlcihpdGVtID0+ICFQbGFpdEdyb3VwRWxlbWVudC5pc0dyb3VwKGl0ZW0pKSBhcyBQbGFpdEVsZW1lbnRbXSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWxsRWxlbWVudHNJbkdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBncm91cDogUGxhaXRHcm91cCwgcmVjdXJzaW9uPzogYm9vbGVhbiwgaW5jbHVkZUdyb3VwPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRzSW5Hcm91cCA9IGdldEVsZW1lbnRzSW5Hcm91cChib2FyZCwgZ3JvdXAsIHJlY3Vyc2lvbiwgaW5jbHVkZUdyb3VwKTtcbiAgICBjb25zdCByZXN1bHQ6IFBsYWl0RWxlbWVudFtdID0gW107XG4gICAgZWxlbWVudHNJbkdyb3VwLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGRlcHRoRmlyc3RSZWN1cnNpb24oXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKCkgPT4gdHJ1ZVxuICAgICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjdGFuZ2xlQnlHcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZ3JvdXA6IFBsYWl0R3JvdXAsIHJlY3Vyc2lvbj86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBlbGVtZW50c0luR3JvdXAgPSBnZXRBbGxFbGVtZW50c0luR3JvdXAoYm9hcmQsIGdyb3VwLCByZWN1cnNpb24pIGFzIFBsYWl0RWxlbWVudFtdO1xuICAgIHJldHVybiBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50c0luR3JvdXAsIGZhbHNlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcm91cEJ5RWxlbWVudCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50OiBQbGFpdEVsZW1lbnQsXG4gICAgcmVjdXJzaW9uPzogYm9vbGVhbixcbiAgICBzb3VyY2U/OiBQbGFpdEVsZW1lbnRbXVxuKTogUGxhaXRHcm91cCB8IFBsYWl0R3JvdXBbXSB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGdyb3VwID0gKHNvdXJjZSB8fCBib2FyZC5jaGlsZHJlbikuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGVsZW1lbnQ/Lmdyb3VwSWQpO1xuICAgIGlmICghZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIHJlY3Vyc2lvbiA/IFtdIDogbnVsbDtcbiAgICB9XG4gICAgaWYgKHJlY3Vyc2lvbikge1xuICAgICAgICBjb25zdCBncm91cHMgPSBbZ3JvdXBdO1xuICAgICAgICBjb25zdCBncmFuZEdyb3VwcyA9IGdldEdyb3VwQnlFbGVtZW50KGJvYXJkLCBncm91cCwgcmVjdXJzaW9uLCBzb3VyY2UpIGFzIFBsYWl0R3JvdXBbXTtcbiAgICAgICAgaWYgKGdyYW5kR3JvdXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgZ3JvdXBzLnB1c2goLi4uZ3JhbmRHcm91cHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBncm91cHMgYXMgUGxhaXRHcm91cFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBncm91cCBhcyBQbGFpdEdyb3VwO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaWdoZXN0R3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGhpdEVsZW1lbnRHcm91cHMgPSBnZXRHcm91cEJ5RWxlbWVudChib2FyZCwgZWxlbWVudCwgdHJ1ZSkgYXMgUGxhaXRHcm91cFtdO1xuICAgIGlmIChoaXRFbGVtZW50R3JvdXBzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gaGl0RWxlbWVudEdyb3Vwc1toaXRFbGVtZW50R3JvdXBzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50c0luR3JvdXBCeUVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGhpZ2hlc3RHcm91cCA9IGdldEhpZ2hlc3RHcm91cChib2FyZCwgZWxlbWVudCk7XG4gICAgaWYgKGhpZ2hlc3RHcm91cCkge1xuICAgICAgICByZXR1cm4gZ2V0QWxsRWxlbWVudHNJbkdyb3VwKGJvYXJkLCBoaWdoZXN0R3JvdXAsIHRydWUpIGFzIFBsYWl0R3JvdXBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW2VsZW1lbnRdO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpc1NlbGVjdGVkRWxlbWVudE9yR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBlbGVtZW50cyB8fCBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBpZiAoUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gaXNTZWxlY3RlZEFsbEVsZW1lbnRzSW5Hcm91cChib2FyZCwgZWxlbWVudCwgZWxlbWVudHMpO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0ZWRFbGVtZW50cy5tYXAoaXRlbSA9PiBpdGVtLmlkKS5pbmNsdWRlcyhlbGVtZW50LmlkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NlbGVjdGVkQWxsRWxlbWVudHNJbkdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBncm91cDogUGxhaXRHcm91cCwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBlbGVtZW50cyB8fCBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBjb25zdCBlbGVtZW50c0luR3JvdXAgPSBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIGdyb3VwLCB0cnVlKTtcbiAgICByZXR1cm4gZWxlbWVudHNJbkdyb3VwLmV2ZXJ5KGl0ZW0gPT4gc2VsZWN0ZWRFbGVtZW50cy5tYXAoZWxlbWVudCA9PiBlbGVtZW50LmlkKS5pbmNsdWRlcyhpdGVtLmlkKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZmlsdGVyU2VsZWN0ZWRHcm91cHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGdyb3VwczogUGxhaXRHcm91cFtdLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKTogUGxhaXRHcm91cFtdID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEdyb3VwczogUGxhaXRHcm91cFtdID0gW107XG4gICAgZ3JvdXBzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChpc1NlbGVjdGVkRWxlbWVudE9yR3JvdXAoYm9hcmQsIGl0ZW0sIGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRHcm91cHMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RlZEdyb3Vwcztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZEdyb3VwcyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSk6IFBsYWl0R3JvdXBbXSA9PiB7XG4gICAgY29uc3QgaGlnaGVzdFNlbGVjdGVkR3JvdXBzID0gZ2V0SGlnaGVzdFNlbGVjdGVkR3JvdXBzKGJvYXJkLCBlbGVtZW50cyk7XG4gICAgY29uc3QgZ3JvdXBzOiBQbGFpdEdyb3VwW10gPSBbXTtcbiAgICBoaWdoZXN0U2VsZWN0ZWRHcm91cHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgZ3JvdXBzLnB1c2goaXRlbSk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzSW5Hcm91cCA9IGdldEVsZW1lbnRzSW5Hcm91cChib2FyZCwgaXRlbSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIGdyb3Vwcy5wdXNoKC4uLihlbGVtZW50c0luR3JvdXAuZmlsdGVyKGl0ZW0gPT4gUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChpdGVtKSkgYXMgUGxhaXRHcm91cFtdKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyb3Vwcztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50LCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKTogUGxhaXRHcm91cCB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGhpdEVsZW1lbnRHcm91cHMgPSBnZXRHcm91cEJ5RWxlbWVudChib2FyZCwgZWxlbWVudCwgdHJ1ZSwgZWxlbWVudHMpIGFzIFBsYWl0R3JvdXBbXTtcbiAgICBjb25zdCBzZWxlY3RlZEdyb3VwcyA9IGZpbHRlclNlbGVjdGVkR3JvdXBzKGJvYXJkLCBoaXRFbGVtZW50R3JvdXBzLCBlbGVtZW50cyk7XG4gICAgaWYgKHNlbGVjdGVkR3JvdXBzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRHcm91cHNbc2VsZWN0ZWRHcm91cHMubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpZ2hlc3RTZWxlY3RlZEdyb3VwcyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSk6IFBsYWl0R3JvdXBbXSA9PiB7XG4gICAgbGV0IHJlc3VsdDogUGxhaXRHcm91cFtdID0gW107XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGVsZW1lbnRzIHx8IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIHNlbGVjdGVkRWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uZ3JvdXBJZCkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cChib2FyZCwgaXRlbSwgZWxlbWVudHMpO1xuICAgICAgICAgICAgaWYgKGdyb3VwICYmICFyZXN1bHQuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZElzb2xhdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBsZXQgcmVzdWx0OiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBlbGVtZW50cyB8fCBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBzZWxlY3RlZEVsZW1lbnRzXG4gICAgICAgIC5maWx0ZXIoaXRlbSA9PiAhUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChpdGVtKSlcbiAgICAgICAgLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0uZ3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGdldEhpZ2hlc3RTZWxlY3RlZEdyb3VwKGJvYXJkLCBpdGVtLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgaWYgKCFncm91cCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRJc29sYXRlZEVsZW1lbnRzQ2FuQWRkVG9Hcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkSXNvbGF0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkSXNvbGF0ZWRFbGVtZW50cyhib2FyZCwgZWxlbWVudHMpO1xuICAgIHJldHVybiBzZWxlY3RlZElzb2xhdGVkRWxlbWVudHMuZmlsdGVyKGl0ZW0gPT4gYm9hcmQuY2FuQWRkVG9Hcm91cChpdGVtKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGlnaGVzdFNlbGVjdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICByZXR1cm4gWy4uLmdldEhpZ2hlc3RTZWxlY3RlZEdyb3Vwcyhib2FyZCwgZWxlbWVudHMpLCAuLi5nZXRTZWxlY3RlZElzb2xhdGVkRWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzKV07XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR3JvdXBSZWN0YW5nbGVHID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10pOiBTVkdHRWxlbWVudCB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBjb25zdCBncm91cFJlY3RhbmdsZUc6IFNWR0dFbGVtZW50ID0gY3JlYXRlRygpO1xuICAgIGNvbnN0IGlzTW92aW5nID0gaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuXG4gICAgZWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgaXNSZW5kZXIgPSAoIXNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoaXRlbSkgJiYgIWlzTW92aW5nKSB8fCBpc01vdmluZztcbiAgICAgICAgaWYgKGl0ZW0uZ3JvdXBJZCAmJiBpc1JlbmRlcikge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXRFbGVtZW50c0luR3JvdXBCeUVsZW1lbnQoYm9hcmQsIGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZUcgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCByZWN0YW5nbGUsIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZURhc2g6IFs1XVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKGVsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgIHNldEFuZ2xlRm9yRyhyZWN0YW5nbGVHLCBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKSwgYW5nbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JvdXBSZWN0YW5nbGVHLmFwcGVuZChyZWN0YW5nbGVHKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBncm91cFJlY3RhbmdsZUc7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR3JvdXAgPSAoZ3JvdXBJZD86IHN0cmluZyk6IFBsYWl0R3JvdXAgPT4ge1xuICAgIHJldHVybiBncm91cElkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgICAgICAgIGdyb3VwSWRcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgICAgICAgIHR5cGU6ICdncm91cCdcbiAgICAgICAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG5vbkdyb3VwSW5IaWdoZXN0U2VsZWN0ZWRFbGVtZW50cyA9IChlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICByZXR1cm4gZWxlbWVudHMuZXZlcnkoaXRlbSA9PiAhaXRlbS5ncm91cElkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNTZWxlY3RlZEVsZW1lbnRzSW5TYW1lR3JvdXAgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5ncm91cElkICYmIGl0ZW0uZ3JvdXBJZCA9PT0gZWxlbWVudHNbMF0uZ3JvdXBJZCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FuQWRkR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBoaWdoZXN0U2VsZWN0ZWRFbGVtZW50cyA9IGdldEhpZ2hlc3RTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cyk7XG4gICAgY29uc3Qgcm9vdEVsZW1lbnRzID0gaGlnaGVzdFNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKGl0ZW0gPT4gYm9hcmQuY2FuQWRkVG9Hcm91cChpdGVtKSk7XG4gICAgaWYgKHJvb3RFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybiBub25Hcm91cEluSGlnaGVzdFNlbGVjdGVkRWxlbWVudHMocm9vdEVsZW1lbnRzKSB8fCBoYXNTZWxlY3RlZEVsZW1lbnRzSW5TYW1lR3JvdXAocm9vdEVsZW1lbnRzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhblJlbW92ZUdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cHMoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMCAmJiBzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPiAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVkaXRpbmdHcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgZ3JvdXBzID0gZ2V0R3JvdXBCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQsIHRydWUpIGFzIFBsYWl0R3JvdXBbXTtcbiAgICBsZXQgZWRpdGluZ0dyb3VwID0gbnVsbDtcbiAgICBpZiAoZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cHM/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIWlzU2VsZWN0ZWRBbGxFbGVtZW50c0luR3JvdXAoYm9hcmQsIGdyb3Vwc1tpXSkpIHtcbiAgICAgICAgICAgICAgICBlZGl0aW5nR3JvdXAgPSBncm91cHNbaV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVkaXRpbmdHcm91cDtcbn07XG5cbmV4cG9ydCBjb25zdCBtb3ZlRWxlbWVudHNUb05ld1BhdGhBZnRlckFkZEdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSwgbmV3UGF0aDogUGF0aCkgPT4ge1xuICAgIGNvbnN0IG1vdmVFbGVtZW50cyA9IFsuLi5zZWxlY3RlZEVsZW1lbnRzXTtcbiAgICBzb3J0RWxlbWVudHMoYm9hcmQsIG1vdmVFbGVtZW50cyk7XG4gICAgbW92ZUVsZW1lbnRzLnBvcCgpO1xuICAgIG1vdmVFbGVtZW50c1RvTmV3UGF0aChcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIG1vdmVFbGVtZW50cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgbmV3UGF0aFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICApO1xufTtcbiJdfQ==
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUE4QyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQXlCLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsS0FBaUIsRUFBRSxTQUFtQixFQUFFLFlBQXNCLEVBQUUsRUFBRTtJQUNwSCxJQUFJLE1BQU0sR0FBbUIsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUUsS0FBc0IsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUs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QUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQ1RJVkVfU1RST0tFX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUGxhaXRHcm91cCwgUGxhaXRHcm91cEVsZW1lbnQsIFJlY3RhbmdsZUNsaWVudCwgU0VMRUNUSU9OX0JPUkRFUl9DT0xPUiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0aW9uQW5nbGUgfSBmcm9tICcuL2FuZ2xlJztcbmltcG9ydCB7IGNyZWF0ZUcsIHNldEFuZ2xlRm9yRyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IGRyYXdSZWN0YW5nbGUgfSBmcm9tICcuL2RyYXdpbmcvcmVjdGFuZ2xlJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgaWRDcmVhdG9yIH0gZnJvbSAnLi9pZC1jcmVhdG9yJztcbmltcG9ydCB7IGNhY2hlU2VsZWN0ZWRFbGVtZW50cywgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJy4vc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBpc1NlbGVjdGlvbk1vdmluZyB9IGZyb20gJy4vc2VsZWN0aW9uJztcbmltcG9ydCB7IGRlcHRoRmlyc3RSZWN1cnNpb24gfSBmcm9tICcuL3RyZWUnO1xuaW1wb3J0IHsgbW92ZUVsZW1lbnRzVG9OZXdQYXRoIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgc29ydEVsZW1lbnRzIH0gZnJvbSAnLi9wb3NpdGlvbic7XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50c0luR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGdyb3VwOiBQbGFpdEdyb3VwLCByZWN1cnNpb24/OiBib29sZWFuLCBpbmNsdWRlR3JvdXA/OiBib29sZWFuKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICBjb25zdCBlbGVtZW50cyA9IGJvYXJkLmNoaWxkcmVuLmZpbHRlcih2YWx1ZSA9PiAodmFsdWUgYXMgUGxhaXRFbGVtZW50KS5ncm91cElkID09PSBncm91cC5pZCkgYXMgUGxhaXRFbGVtZW50W107XG4gICAgaWYgKHJlY3Vyc2lvbikge1xuICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKFBsYWl0R3JvdXBFbGVtZW50LmlzR3JvdXAoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIGl0ZW0sIHJlY3Vyc2lvbiwgaW5jbHVkZUdyb3VwKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBpbmNsdWRlR3JvdXAgPyBlbGVtZW50cyA6IChlbGVtZW50cy5maWx0ZXIoaXRlbSA9PiAhUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChpdGVtKSkgYXMgUGxhaXRFbGVtZW50W10pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbEVsZW1lbnRzSW5Hcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZ3JvdXA6IFBsYWl0R3JvdXAsIHJlY3Vyc2lvbj86IGJvb2xlYW4sIGluY2x1ZGVHcm91cD86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBlbGVtZW50c0luR3JvdXAgPSBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIGdyb3VwLCByZWN1cnNpb24sIGluY2x1ZGVHcm91cCk7XG4gICAgY29uc3QgcmVzdWx0OiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGVsZW1lbnRzSW5Hcm91cC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBkZXB0aEZpcnN0UmVjdXJzaW9uKFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICgpID0+IHRydWVcbiAgICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlY3RhbmdsZUJ5R3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGdyb3VwOiBQbGFpdEdyb3VwLCByZWN1cnNpb24/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudHNJbkdyb3VwID0gZ2V0QWxsRWxlbWVudHNJbkdyb3VwKGJvYXJkLCBncm91cCwgcmVjdXJzaW9uKSBhcyBQbGFpdEVsZW1lbnRbXTtcbiAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHNJbkdyb3VwLCBmYWxzZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBCeUVsZW1lbnQgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZWxlbWVudDogUGxhaXRFbGVtZW50LFxuICAgIHJlY3Vyc2lvbj86IGJvb2xlYW4sXG4gICAgc291cmNlPzogUGxhaXRFbGVtZW50W11cbik6IFBsYWl0R3JvdXAgfCBQbGFpdEdyb3VwW10gfCBudWxsID0+IHtcbiAgICBjb25zdCBncm91cCA9IChzb3VyY2UgfHwgYm9hcmQuY2hpbGRyZW4pLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBlbGVtZW50Py5ncm91cElkKTtcbiAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgIHJldHVybiByZWN1cnNpb24gPyBbXSA6IG51bGw7XG4gICAgfVxuICAgIGlmIChyZWN1cnNpb24pIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gW2dyb3VwXTtcbiAgICAgICAgY29uc3QgZ3JhbmRHcm91cHMgPSBnZXRHcm91cEJ5RWxlbWVudChib2FyZCwgZ3JvdXAsIHJlY3Vyc2lvbiwgc291cmNlKSBhcyBQbGFpdEdyb3VwW107XG4gICAgICAgIGlmIChncmFuZEdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGdyb3Vwcy5wdXNoKC4uLmdyYW5kR3JvdXBzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ3JvdXBzIGFzIFBsYWl0R3JvdXBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZ3JvdXAgYXMgUGxhaXRHcm91cDtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGlnaGVzdEdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBoaXRFbGVtZW50R3JvdXBzID0gZ2V0R3JvdXBCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQsIHRydWUpIGFzIFBsYWl0R3JvdXBbXTtcbiAgICBpZiAoaGl0RWxlbWVudEdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGhpdEVsZW1lbnRHcm91cHNbaGl0RWxlbWVudEdyb3Vwcy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudHNJbkdyb3VwQnlFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBoaWdoZXN0R3JvdXAgPSBnZXRIaWdoZXN0R3JvdXAoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGlmIChoaWdoZXN0R3JvdXApIHtcbiAgICAgICAgcmV0dXJuIGdldEFsbEVsZW1lbnRzSW5Hcm91cChib2FyZCwgaGlnaGVzdEdyb3VwLCB0cnVlKSBhcyBQbGFpdEdyb3VwW107XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtlbGVtZW50XTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWxlY3RlZEVsZW1lbnRPckdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgaWYgKFBsYWl0R3JvdXBFbGVtZW50LmlzR3JvdXAoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGlzU2VsZWN0ZWRBbGxFbGVtZW50c0luR3JvdXAoYm9hcmQsIGVsZW1lbnQsIGVsZW1lbnRzKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkRWxlbWVudHMubWFwKGl0ZW0gPT4gaXRlbS5pZCkuaW5jbHVkZXMoZWxlbWVudC5pZCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWxlY3RlZEFsbEVsZW1lbnRzSW5Hcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZ3JvdXA6IFBsYWl0R3JvdXAsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgZWxlbWVudHNJbkdyb3VwID0gZ2V0RWxlbWVudHNJbkdyb3VwKGJvYXJkLCBncm91cCwgdHJ1ZSk7XG4gICAgcmV0dXJuIGVsZW1lbnRzSW5Hcm91cC5ldmVyeShpdGVtID0+IHNlbGVjdGVkRWxlbWVudHMubWFwKGVsZW1lbnQgPT4gZWxlbWVudC5pZCkuaW5jbHVkZXMoaXRlbS5pZCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlclNlbGVjdGVkR3JvdXBzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBncm91cHM6IFBsYWl0R3JvdXBbXSwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSk6IFBsYWl0R3JvdXBbXSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cHM6IFBsYWl0R3JvdXBbXSA9IFtdO1xuICAgIGdyb3Vwcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXNTZWxlY3RlZEVsZW1lbnRPckdyb3VwKGJvYXJkLCBpdGVtLCBlbGVtZW50cykpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBzLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0ZWRHcm91cHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRHcm91cHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pOiBQbGFpdEdyb3VwW10gPT4ge1xuICAgIGNvbnN0IGhpZ2hlc3RTZWxlY3RlZEdyb3VwcyA9IGdldEhpZ2hlc3RTZWxlY3RlZEdyb3Vwcyhib2FyZCwgZWxlbWVudHMpO1xuICAgIGNvbnN0IGdyb3VwczogUGxhaXRHcm91cFtdID0gW107XG4gICAgaGlnaGVzdFNlbGVjdGVkR3JvdXBzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGdyb3Vwcy5wdXNoKGl0ZW0pO1xuICAgICAgICBjb25zdCBlbGVtZW50c0luR3JvdXAgPSBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIGl0ZW0sIHRydWUsIHRydWUpO1xuICAgICAgICBncm91cHMucHVzaCguLi4oZWxlbWVudHNJbkdyb3VwLmZpbHRlcihpdGVtID0+IFBsYWl0R3JvdXBFbGVtZW50LmlzR3JvdXAoaXRlbSkpIGFzIFBsYWl0R3JvdXBbXSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBncm91cHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGlnaGVzdFNlbGVjdGVkR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSk6IFBsYWl0R3JvdXAgfCBudWxsID0+IHtcbiAgICBjb25zdCBoaXRFbGVtZW50R3JvdXBzID0gZ2V0R3JvdXBCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQsIHRydWUsIGVsZW1lbnRzKSBhcyBQbGFpdEdyb3VwW107XG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBmaWx0ZXJTZWxlY3RlZEdyb3Vwcyhib2FyZCwgaGl0RWxlbWVudEdyb3VwcywgZWxlbWVudHMpO1xuICAgIGlmIChzZWxlY3RlZEdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkR3JvdXBzW3NlbGVjdGVkR3JvdXBzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pOiBQbGFpdEdyb3VwW10gPT4ge1xuICAgIGxldCByZXN1bHQ6IFBsYWl0R3JvdXBbXSA9IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBlbGVtZW50cyB8fCBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBzZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChpdGVtLmdyb3VwSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZ2V0SGlnaGVzdFNlbGVjdGVkR3JvdXAoYm9hcmQsIGl0ZW0sIGVsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmIChncm91cCAmJiAhcmVzdWx0LmluY2x1ZGVzKGdyb3VwKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRJc29sYXRlZEVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgc2VsZWN0ZWRFbGVtZW50c1xuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gIVBsYWl0R3JvdXBFbGVtZW50LmlzR3JvdXAoaXRlbSkpXG4gICAgICAgIC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKCFpdGVtLmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cChib2FyZCwgaXRlbSwgZWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIGlmICghZ3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkSXNvbGF0ZWRFbGVtZW50c0NhbkFkZFRvR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZElzb2xhdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZElzb2xhdGVkRWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRJc29sYXRlZEVsZW1lbnRzLmZpbHRlcihpdGVtID0+IGJvYXJkLmNhbkFkZFRvR3JvdXAoaXRlbSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpZ2hlc3RTZWxlY3RlZEVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgcmV0dXJuIFsuLi5nZXRIaWdoZXN0U2VsZWN0ZWRHcm91cHMoYm9hcmQsIGVsZW1lbnRzKSwgLi4uZ2V0U2VsZWN0ZWRJc29sYXRlZEVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cyldO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUdyb3VwUmVjdGFuZ2xlRyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKTogU1ZHR0VsZW1lbnQgfCBudWxsID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRJZHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5tYXAoaXRlbSA9PiBpdGVtLmlkKTtcbiAgICBsZXQgZ3JvdXBSZWN0YW5nbGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGlzTW92aW5nID0gaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuXG4gICAgZWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgaXNSZW5kZXIgPSAoIXNlbGVjdGVkRWxlbWVudElkcy5pbmNsdWRlcyhpdGVtLmlkKSAmJiAhaXNNb3ZpbmcpIHx8IGlzTW92aW5nO1xuICAgICAgICBpZiAoaXRlbS5ncm91cElkICYmIGlzUmVuZGVyKSB7XG4gICAgICAgICAgICBpZiAoIWdyb3VwUmVjdGFuZ2xlRykge1xuICAgICAgICAgICAgICAgIGdyb3VwUmVjdGFuZ2xlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0RWxlbWVudHNJbkdyb3VwQnlFbGVtZW50KGJvYXJkLCBpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICBjb25zdCByZWN0YW5nbGVHID0gZHJhd1JlY3RhbmdsZShib2FyZCwgcmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVEYXNoOiBbNV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgYW5nbGUgPSBnZXRTZWxlY3Rpb25BbmdsZShlbGVtZW50cyk7XG4gICAgICAgICAgICBpZiAoYW5nbGUpIHtcbiAgICAgICAgICAgICAgICBzZXRBbmdsZUZvckcocmVjdGFuZ2xlRywgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlY3RhbmdsZSksIGFuZ2xlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyb3VwUmVjdGFuZ2xlRy5hcHBlbmQocmVjdGFuZ2xlRyk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZ3JvdXBSZWN0YW5nbGVHO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUdyb3VwID0gKGdyb3VwSWQ/OiBzdHJpbmcpOiBQbGFpdEdyb3VwID0+IHtcbiAgICByZXR1cm4gZ3JvdXBJZFxuICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICAgICAgICB0eXBlOiAnZ3JvdXAnLFxuICAgICAgICAgICAgICBncm91cElkXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICAgICAgICB0eXBlOiAnZ3JvdXAnXG4gICAgICAgICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBub25Hcm91cEluSGlnaGVzdFNlbGVjdGVkRWxlbWVudHMgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLmV2ZXJ5KGl0ZW0gPT4gIWl0ZW0uZ3JvdXBJZCk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzU2VsZWN0ZWRFbGVtZW50c0luU2FtZUdyb3VwID0gKGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50cy5ldmVyeShpdGVtID0+IGl0ZW0uZ3JvdXBJZCAmJiBpdGVtLmdyb3VwSWQgPT09IGVsZW1lbnRzWzBdLmdyb3VwSWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbkFkZEdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3QgaGlnaGVzdFNlbGVjdGVkRWxlbWVudHMgPSBnZXRIaWdoZXN0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgZWxlbWVudHMpO1xuICAgIGNvbnN0IHJvb3RFbGVtZW50cyA9IGhpZ2hlc3RTZWxlY3RlZEVsZW1lbnRzLmZpbHRlcihpdGVtID0+IGJvYXJkLmNhbkFkZFRvR3JvdXAoaXRlbSkpO1xuICAgIGlmIChyb290RWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICByZXR1cm4gbm9uR3JvdXBJbkhpZ2hlc3RTZWxlY3RlZEVsZW1lbnRzKHJvb3RFbGVtZW50cykgfHwgaGFzU2VsZWN0ZWRFbGVtZW50c0luU2FtZUdyb3VwKHJvb3RFbGVtZW50cyk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYW5SZW1vdmVHcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gZ2V0SGlnaGVzdFNlbGVjdGVkR3JvdXBzKGJvYXJkLCBlbGVtZW50cyk7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGVsZW1lbnRzIHx8IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRHcm91cHMubGVuZ3RoID4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0aW5nR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGdyb3VwcyA9IGdldEdyb3VwQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50LCB0cnVlKSBhcyBQbGFpdEdyb3VwW107XG4gICAgbGV0IGVkaXRpbmdHcm91cCA9IG51bGw7XG4gICAgaWYgKGdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JvdXBzPy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFpc1NlbGVjdGVkQWxsRWxlbWVudHNJbkdyb3VwKGJvYXJkLCBncm91cHNbaV0pKSB7XG4gICAgICAgICAgICAgICAgZWRpdGluZ0dyb3VwID0gZ3JvdXBzW2ldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlZGl0aW5nR3JvdXA7XG59O1xuXG5leHBvcnQgY29uc3QgbW92ZUVsZW1lbnRzVG9OZXdQYXRoQWZ0ZXJBZGRHcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0ZWRFbGVtZW50czogUGxhaXRFbGVtZW50W10sIG5ld1BhdGg6IFBhdGgpID0+IHtcbiAgICBjb25zdCBtb3ZlRWxlbWVudHMgPSBbLi4uc2VsZWN0ZWRFbGVtZW50c107XG4gICAgc29ydEVsZW1lbnRzKGJvYXJkLCBtb3ZlRWxlbWVudHMpO1xuICAgIG1vdmVFbGVtZW50cy5wb3AoKTtcbiAgICBtb3ZlRWxlbWVudHNUb05ld1BhdGgoXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBtb3ZlRWxlbWVudHMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgIG5ld1BhdGhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgKTtcbn07XG4iXX0=
@@ -83,7 +83,7 @@ const toContiguousGroups = (board, array) => {
83
83
  return true;
84
84
  });
85
85
  let isPartialSelectGroupElement = false;
86
- if (previousElement.groupId || (currentElement.groupId && previousElement.groupId !== currentElement.groupId)) {
86
+ if (previousElement?.groupId || (currentElement?.groupId && previousElement?.groupId !== currentElement?.groupId)) {
87
87
  let isPartialSelectPreviousGroup = false;
88
88
  let isPartialSelectCurrentElement = false;
89
89
  if (previousElement.groupId) {
@@ -163,4 +163,4 @@ const getTargetIndex = (board, boundaryIndex, direction) => {
163
163
  }
164
164
  return candidateIndex;
165
165
  };
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiei1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL3otaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixpQkFBaUIsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQWtCLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFNBQXdCLEVBQW9CLEVBQUU7SUFDL0YsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUUsSUFBSSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzlELElBQUksU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JCLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUNELElBQUksWUFBWSxHQUFxQixFQUFFLENBQUM7SUFDeEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNsQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8s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SixZQUFZLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2YsSUFBSSxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRixJQUFJLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEUsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsNERBQTREO1lBQzVELHdCQUF3QjtZQUN4QixPQUFPLFNBQVMsS0FBSyxNQUFNO2dCQUN2QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLGNBQWMsQ0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBsYWl0R3JvdXBFbGVtZW50LCBQbGFpdEdyb3VwIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNb3ZlTm9kZU9wdGlvbiwgZ2V0RWxlbWVudHNJbmRpY2VzIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgZ2V0RWRpdGluZ0dyb3VwLCBnZXRFbGVtZW50c0luR3JvdXAsIGdldEdyb3VwQnlFbGVtZW50LCBnZXRIaWdoZXN0R3JvdXAsIGlzU2VsZWN0ZWRBbGxFbGVtZW50c0luR3JvdXAgfSBmcm9tICcuL2dyb3VwJztcbmltcG9ydCB7IGZpbmRJbmRleCwgZmluZExhc3RJbmRleCB9IGZyb20gJy4vaGVscGVyJztcbmltcG9ydCB7IHNvcnRFbGVtZW50cyB9IGZyb20gJy4vcG9zaXRpb24nO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJy4vc2VsZWN0ZWQtZWxlbWVudCc7XG5cbmV4cG9ydCBjb25zdCBnZXRPbmVNb3ZlT3B0aW9ucyA9IChib2FyZDogUGxhaXRCb2FyZCwgZGlyZWN0aW9uOiAnZG93bicgfCAndXAnKTogTW92ZU5vZGVPcHRpb25bXSA9PiB7XG4gICAgY29uc3QgaW5kaWNlc1RvTW92ZSA9IGdldEVsZW1lbnRzSW5kaWNlcyhib2FyZCwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkpO1xuICAgIGxldCBncm91cGVkSW5kaWNlcyA9IHRvQ29udGlndW91c0dyb3Vwcyhib2FyZCwgaW5kaWNlc1RvTW92ZSk7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgICBncm91cGVkSW5kaWNlcyA9IGdyb3VwZWRJbmRpY2VzLnJldmVyc2UoKTtcbiAgICB9XG4gICAgbGV0IG1vdmVDb250ZW50czogTW92ZU5vZGVPcHRpb25bXSA9IFtdO1xuICAgIGdyb3VwZWRJbmRpY2VzLmZvckVhY2goKGluZGljZXMsIGkpID0+IHtcbiAgICAgICAgY29uc3QgbGVhZGluZ0luZGV4ID0gaW5kaWNlc1swXTtcbiAgICAgICAgY29uc3QgdHJhaWxpbmdJbmRleCA9IGluZGljZXNbaW5kaWNlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgYm91bmRhcnlJbmRleCA9IGRpcmVjdGlvbiA9PT0gJ2Rvd24nID8gbGVhZGluZ0luZGV4IDogdHJhaWxpbmdJbmRleDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBnZXRUYXJnZXRJbmRleChib2FyZCwgYm91bmRhcnlJbmRleCwgZGlyZWN0aW9uKTtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSAtMSB8fCBib3VuZGFyeUluZGV4ID09PSB0YXJnZXRJbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICAgICAgaW5kaWNlcyA9IGluZGljZXMucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIG1vdmVDb250ZW50cy5wdXNoKFxuICAgICAgICAgICAgLi4uaW5kaWNlcy5tYXAocGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogYm9hcmQuY2hpbGRyZW5bcGF0aF0sXG4gICAgICAgICAgICAgICAgICAgIG5ld1BhdGg6IFt0YXJnZXRJbmRleF1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtb3ZlQ29udGVudHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWxsTW92ZU9wdGlvbnMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGRpcmVjdGlvbjogJ2Rvd24nIHwgJ3VwJyk6IE1vdmVOb2RlT3B0aW9uW10gPT4ge1xuICAgIGNvbnN0IGluZGljZXNUb01vdmUgPSBnZXRFbGVtZW50c0luZGljZXMoYm9hcmQsIGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpKTtcbiAgICBsZXQgZ3JvdXBlZEluZGljZXMgPSB0b0NvbnRpZ3VvdXNHcm91cHMoYm9hcmQsIGluZGljZXNUb01vdmUpO1xuICAgIGxldCBtb3ZlQ29udGVudHM6IE1vdmVOb2RlT3B0aW9uW10gPSBbXTtcbiAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgZ3JvdXBlZEluZGljZXMgPSBncm91cGVkSW5kaWNlcy5yZXZlcnNlKCk7XG4gICAgfVxuICAgIGdyb3VwZWRJbmRpY2VzLmZvckVhY2goaW5kaWNlcyA9PiB7XG4gICAgICAgIGNvbnN0IGxlYWRpbmdJbmRleCA9IGluZGljZXNbMF07XG4gICAgICAgIGNvbnN0IHRyYWlsaW5nSW5kZXggPSBpbmRpY2VzW2luZGljZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGJvdW5kYXJ5SW5kZXggPSBkaXJlY3Rpb24gPT09ICdkb3duJyA/IGxlYWRpbmdJbmRleCA6IHRyYWlsaW5nSW5kZXg7XG4gICAgICAgIGNvbnN0IHNvdXJjZUVsZW1lbnQgPSBib2FyZC5jaGlsZHJlbltib3VuZGFyeUluZGV4XTtcbiAgICAgICAgY29uc3QgZWRpdGluZ0dyb3VwID0gZ2V0RWRpdGluZ0dyb3VwKGJvYXJkLCBzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgbGV0IHRhcmdldEluZGV4ID0gZGlyZWN0aW9uID09PSAnZG93bicgPyAwIDogYm9hcmQuY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKGVkaXRpbmdHcm91cCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNJbkdyb3VwID0gc29ydEVsZW1lbnRzKGJvYXJkLCBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIGVkaXRpbmdHcm91cCwgdHJ1ZSwgdHJ1ZSkpO1xuICAgICAgICAgICAgdGFyZ2V0SW5kZXggPVxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ2Rvd24nXG4gICAgICAgICAgICAgICAgICAgID8gYm9hcmQuY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50c0luR3JvdXBbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogYm9hcmQuY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50c0luR3JvdXBbZWxlbWVudHNJbkdyb3VwLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgICAgIGluZGljZXMgPSBpbmRpY2VzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBtb3ZlQ29udGVudHMucHVzaChcbiAgICAgICAgICAgIC4uLmluZGljZXMubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGJvYXJkLmNoaWxkcmVuW3BhdGhdLFxuICAgICAgICAgICAgICAgICAgICBuZXdQYXRoOiBbdGFyZ2V0SW5kZXhdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUNvbnRlbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhblNldFpJbmRleCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5maWx0ZXIoaXRlbSA9PiBib2FyZC5jYW5TZXRaSW5kZXgoaXRlbSkpO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDA7XG59O1xuXG5jb25zdCB0b0NvbnRpZ3VvdXNHcm91cHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGFycmF5OiBudW1iZXJbXSkgPT4ge1xuICAgIGxldCBjdXJzb3IgPSAwO1xuICAgIHJldHVybiBhcnJheS5yZWR1Y2UoKGFjYywgdmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gYm9hcmQuY2hpbGRyZW5bdmFsdWVdO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNFbGVtZW50ID0gYm9hcmQuY2hpbGRyZW5bYXJyYXlbaW5kZXggLSAxXV07XG4gICAgICAgICAgICBjb25zdCBpc0NvbnRpZ3VvdXMgPVxuICAgICAgICAgICAgICAgIHZhbHVlIC0gMSA9PT0gYXJyYXlbaW5kZXggLSAxXVxuICAgICAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICAgICAgOiBib2FyZC5jaGlsZHJlbi5ldmVyeSgoaXRlbSwgY2hpbGRJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRJbmRleCA+IGFycmF5W2luZGV4IC0gMV0gJiYgY2hpbGRJbmRleCA8PSB2YWx1ZSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdEdyb3VwRWxlbWVudC5pc0dyb3VwKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGV0IGlzUGFydGlhbFNlbGVjdEdyb3VwRWxlbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzRWxlbWVudC5ncm91cElkIHx8IChjdXJyZW50RWxlbWVudC5ncm91cElkICYmIHByZXZpb3VzRWxlbWVudC5ncm91cElkICE9PSBjdXJyZW50RWxlbWVudC5ncm91cElkKSkge1xuICAgICAgICAgICAgICAgIGxldCBpc1BhcnRpYWxTZWxlY3RQcmV2aW91c0dyb3VwID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGV0IGlzUGFydGlhbFNlbGVjdEN1cnJlbnRFbGVtZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzRWxlbWVudC5ncm91cElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlc3RHcm91cCA9IGdldEhpZ2hlc3RHcm91cChib2FyZCwgcHJldmlvdXNFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaXNQYXJ0aWFsU2VsZWN0UHJldmlvdXNHcm91cCA9ICFpc1NlbGVjdGVkQWxsRWxlbWVudHNJbkdyb3VwKGJvYXJkLCBoaWdoZXN0R3JvdXAhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50Lmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdEdyb3VwID0gZ2V0SGlnaGVzdEdyb3VwKGJvYXJkLCBjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlzUGFydGlhbFNlbGVjdEN1cnJlbnRFbGVtZW50ID0gIWlzU2VsZWN0ZWRBbGxFbGVtZW50c0luR3JvdXAoYm9hcmQsIGhpZ2hlc3RHcm91cCEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc1BhcnRpYWxTZWxlY3RHcm91cEVsZW1lbnQgPSBpc1BhcnRpYWxTZWxlY3RQcmV2aW91c0dyb3VwIHx8IGlzUGFydGlhbFNlbGVjdEN1cnJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0NvbnRpZ3VvdXMgfHwgaXNQYXJ0aWFsU2VsZWN0R3JvdXBFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY3Vyc29yID0gKytjdXJzb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKGFjY1tjdXJzb3JdIHx8IChhY2NbY3Vyc29yXSA9IFtdKSkucHVzaCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgbnVtYmVyW11bXSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgbmV4dCBjYW5kaWRhdGUgaW5kZXggdGhhdCdzIGF2YWlsYWJsZSB0byBiZSBtb3ZlZCB0by4gQ3VycmVudGx5IHRoYXRcbiAqICBpcyBhIG5vbi1kZWxldGVkIGVsZW1lbnQsIGFuZCBub3QgaW5zaWRlIGEgZ3JvdXAgKHVubGVzcyB3ZSdyZSBlZGl0aW5nIGl0KS5cbiAqL1xuY29uc3QgZ2V0VGFyZ2V0SW5kZXggPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGJvdW5kYXJ5SW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiAnZG93bicgfCAndXAnKSA9PiB7XG4gICAgaWYgKChib3VuZGFyeUluZGV4ID09PSAwICYmIGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB8fCAoYm91bmRhcnlJbmRleCA9PT0gYm9hcmQuY2hpbGRyZW4ubGVuZ3RoIC0gMSAmJiBkaXJlY3Rpb24gPT09ICd1cCcpKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXhGaWx0ZXIgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmlzRGVsZXRlZCB8fCBQbGFpdEdyb3VwRWxlbWVudC5pc0dyb3VwKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBjb25zdCBjYW5kaWRhdGVJbmRleCA9XG4gICAgICAgIGRpcmVjdGlvbiA9PT0gJ2Rvd24nXG4gICAgICAgICAgICA/IGZpbmRMYXN0SW5kZXgoYm9hcmQuY2hpbGRyZW4sIGVsID0+IGluZGV4RmlsdGVyKGVsKSwgTWF0aC5tYXgoMCwgYm91bmRhcnlJbmRleCAtIDEpKVxuICAgICAgICAgICAgOiBmaW5kSW5kZXgoYm9hcmQuY2hpbGRyZW4sIGVsID0+IGluZGV4RmlsdGVyKGVsKSwgYm91bmRhcnlJbmRleCArIDEpO1xuXG4gICAgY29uc3QgbmV4dEVsZW1lbnQgPSBib2FyZC5jaGlsZHJlbltjYW5kaWRhdGVJbmRleF07XG4gICAgaWYgKCFuZXh0RWxlbWVudCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4uYm9hcmQuY2hpbGRyZW5dO1xuICAgIGNvbnN0IHNvdXJjZUVsZW1lbnQgPSBlbGVtZW50c1tib3VuZGFyeUluZGV4XTtcbiAgICBjb25zdCBlZGl0aW5nR3JvdXAgPSBnZXRFZGl0aW5nR3JvdXAoYm9hcmQsIHNvdXJjZUVsZW1lbnQpO1xuICAgIGNvbnN0IG5leHRFbGVtZW50R3JvdXBzID0gKGdldEdyb3VwQnlFbGVtZW50KGJvYXJkLCBuZXh0RWxlbWVudCwgdHJ1ZSkgfHwgW10pIGFzIFBsYWl0R3JvdXBbXTtcbiAgICAvLyBjYW5kaWRhdGUgZWxlbWVudCBpcyBhIHNpYmxpbmcgaW4gY3VycmVudCBlZGl0aW5nIGdyb3VwIOKGkiByZXR1cm5cbiAgICBpZiAoZWRpdGluZ0dyb3VwICYmIHNvdXJjZUVsZW1lbnQ/Lmdyb3VwSWQgIT09IG5leHRFbGVtZW50Py5ncm91cElkKSB7XG4gICAgICAgIC8vIGNhbmRpZGF0ZSBlbGVtZW50IGlzIG91dHNpZGUgY3VycmVudCBlZGl0aW5nIGdyb3VwIOKGkiBwcmV2ZW50XG4gICAgICAgIGlmICghKG5leHRFbGVtZW50R3JvdXBzIGFzIFBsYWl0R3JvdXBbXSkuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGVkaXRpbmdHcm91cC5pZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbmV4dEVsZW1lbnQuZ3JvdXBJZCkge1xuICAgICAgICByZXR1cm4gY2FuZGlkYXRlSW5kZXg7XG4gICAgfVxuXG4gICAgbGV0IHNpYmxpbmdHcm91cDogUGxhaXRHcm91cDtcbiAgICBpZiAoZWRpdGluZ0dyb3VwKSB7XG4gICAgICAgIHNpYmxpbmdHcm91cCA9IG5leHRFbGVtZW50R3JvdXBzW25leHRFbGVtZW50R3JvdXBzLmluZGV4T2YoZWRpdGluZ0dyb3VwKSAtIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNpYmxpbmdHcm91cCA9IG5leHRFbGVtZW50R3JvdXBzW25leHRFbGVtZW50R3JvdXBzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICBpZiAoc2libGluZ0dyb3VwKSB7XG4gICAgICAgIGxldCBlbGVtZW50c0luU2libGluZ0dyb3VwID0gZ2V0RWxlbWVudHNJbkdyb3VwKGJvYXJkLCBzaWJsaW5nR3JvdXAsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgaWYgKGVsZW1lbnRzSW5TaWJsaW5nR3JvdXAubGVuZ3RoKSB7XG4gICAgICAgICAgICBlbGVtZW50c0luU2libGluZ0dyb3VwLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleEEgPSBib2FyZC5jaGlsZHJlbi5maW5kSW5kZXgoY2hpbGQgPT4gY2hpbGQuaWQgPT09IGEuaWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IGJvYXJkLmNoaWxkcmVuLmZpbmRJbmRleChjaGlsZCA9PiBjaGlsZC5pZCA9PT0gYi5pZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gYXNzdW1lcyBnZXRFbGVtZW50c0luR3JvdXAoKSByZXR1cm5lZCBlbGVtZW50cyBhcmUgc29ydGVkXG4gICAgICAgICAgICAvLyBieSB6SW5kZXggKGFzY2VuZGluZylcbiAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdkb3duJ1xuICAgICAgICAgICAgICAgID8gZWxlbWVudHMuaW5kZXhPZihlbGVtZW50c0luU2libGluZ0dyb3VwWzBdKVxuICAgICAgICAgICAgICAgIDogZWxlbWVudHMuaW5kZXhPZihlbGVtZW50c0luU2libGluZ0dyb3VwW2VsZW1lbnRzSW5TaWJsaW5nR3JvdXAubGVuZ3RoIC0gMV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhbmRpZGF0ZUluZGV4O1xufTtcbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiei1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL3otaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixpQkFBaUIsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQWtCLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFNBQXdCLEVBQW9CLEVBQUU7SUFDL0YsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUUsSUFBSSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzlELElBQUksU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JCLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUNELElBQUksWUFBWSxHQUFxQixFQUFFLENBQUM7SUFDeEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNsQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8s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SixZQUFZLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2YsSUFBSSxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRixJQUFJLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEUsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsNERBQTREO1lBQzVELHdCQUF3QjtZQUN4QixPQUFPLFNBQVMsS0FBSyxNQUFNO2dCQUN2QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLGNBQWMsQ0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBsYWl0R3JvdXBFbGVtZW50LCBQbGFpdEdyb3VwIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNb3ZlTm9kZU9wdGlvbiwgZ2V0RWxlbWVudHNJbmRpY2VzIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgZ2V0RWRpdGluZ0dyb3VwLCBnZXRFbGVtZW50c0luR3JvdXAsIGdldEdyb3VwQnlFbGVtZW50LCBnZXRIaWdoZXN0R3JvdXAsIGlzU2VsZWN0ZWRBbGxFbGVtZW50c0luR3JvdXAgfSBmcm9tICcuL2dyb3VwJztcbmltcG9ydCB7IGZpbmRJbmRleCwgZmluZExhc3RJbmRleCB9IGZyb20gJy4vaGVscGVyJztcbmltcG9ydCB7IHNvcnRFbGVtZW50cyB9IGZyb20gJy4vcG9zaXRpb24nO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJy4vc2VsZWN0ZWQtZWxlbWVudCc7XG5cbmV4cG9ydCBjb25zdCBnZXRPbmVNb3ZlT3B0aW9ucyA9IChib2FyZDogUGxhaXRCb2FyZCwgZGlyZWN0aW9uOiAnZG93bicgfCAndXAnKTogTW92ZU5vZGVPcHRpb25bXSA9PiB7XG4gICAgY29uc3QgaW5kaWNlc1RvTW92ZSA9IGdldEVsZW1lbnRzSW5kaWNlcyhib2FyZCwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkpO1xuICAgIGxldCBncm91cGVkSW5kaWNlcyA9IHRvQ29udGlndW91c0dyb3Vwcyhib2FyZCwgaW5kaWNlc1RvTW92ZSk7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgICBncm91cGVkSW5kaWNlcyA9IGdyb3VwZWRJbmRpY2VzLnJldmVyc2UoKTtcbiAgICB9XG4gICAgbGV0IG1vdmVDb250ZW50czogTW92ZU5vZGVPcHRpb25bXSA9IFtdO1xuICAgIGdyb3VwZWRJbmRpY2VzLmZvckVhY2goKGluZGljZXMsIGkpID0+IHtcbiAgICAgICAgY29uc3QgbGVhZGluZ0luZGV4ID0gaW5kaWNlc1swXTtcbiAgICAgICAgY29uc3QgdHJhaWxpbmdJbmRleCA9IGluZGljZXNbaW5kaWNlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgYm91bmRhcnlJbmRleCA9IGRpcmVjdGlvbiA9PT0gJ2Rvd24nID8gbGVhZGluZ0luZGV4IDogdHJhaWxpbmdJbmRleDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBnZXRUYXJnZXRJbmRleChib2FyZCwgYm91bmRhcnlJbmRleCwgZGlyZWN0aW9uKTtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSAtMSB8fCBib3VuZGFyeUluZGV4ID09PSB0YXJnZXRJbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICAgICAgaW5kaWNlcyA9IGluZGljZXMucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIG1vdmVDb250ZW50cy5wdXNoKFxuICAgICAgICAgICAgLi4uaW5kaWNlcy5tYXAocGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogYm9hcmQuY2hpbGRyZW5bcGF0aF0sXG4gICAgICAgICAgICAgICAgICAgIG5ld1BhdGg6IFt0YXJnZXRJbmRleF1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtb3ZlQ29udGVudHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWxsTW92ZU9wdGlvbnMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGRpcmVjdGlvbjogJ2Rvd24nIHwgJ3VwJyk6IE1vdmVOb2RlT3B0aW9uW10gPT4ge1xuICAgIGNvbnN0IGluZGljZXNUb01vdmUgPSBnZXRFbGVtZW50c0luZGljZXMoYm9hcmQsIGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpKTtcbiAgICBsZXQgZ3JvdXBlZEluZGljZXMgPSB0b0NvbnRpZ3VvdXNHcm91cHMoYm9hcmQsIGluZGljZXNUb01vdmUpO1xuICAgIGxldCBtb3ZlQ29udGVudHM6IE1vdmVOb2RlT3B0aW9uW10gPSBbXTtcbiAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgZ3JvdXBlZEluZGljZXMgPSBncm91cGVkSW5kaWNlcy5yZXZlcnNlKCk7XG4gICAgfVxuICAgIGdyb3VwZWRJbmRpY2VzLmZvckVhY2goaW5kaWNlcyA9PiB7XG4gICAgICAgIGNvbnN0IGxlYWRpbmdJbmRleCA9IGluZGljZXNbMF07XG4gICAgICAgIGNvbnN0IHRyYWlsaW5nSW5kZXggPSBpbmRpY2VzW2luZGljZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGJvdW5kYXJ5SW5kZXggPSBkaXJlY3Rpb24gPT09ICdkb3duJyA/IGxlYWRpbmdJbmRleCA6IHRyYWlsaW5nSW5kZXg7XG4gICAgICAgIGNvbnN0IHNvdXJjZUVsZW1lbnQgPSBib2FyZC5jaGlsZHJlbltib3VuZGFyeUluZGV4XTtcbiAgICAgICAgY29uc3QgZWRpdGluZ0dyb3VwID0gZ2V0RWRpdGluZ0dyb3VwKGJvYXJkLCBzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgbGV0IHRhcmdldEluZGV4ID0gZGlyZWN0aW9uID09PSAnZG93bicgPyAwIDogYm9hcmQuY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKGVkaXRpbmdHcm91cCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNJbkdyb3VwID0gc29ydEVsZW1lbnRzKGJvYXJkLCBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIGVkaXRpbmdHcm91cCwgdHJ1ZSwgdHJ1ZSkpO1xuICAgICAgICAgICAgdGFyZ2V0SW5kZXggPVxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ2Rvd24nXG4gICAgICAgICAgICAgICAgICAgID8gYm9hcmQuY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50c0luR3JvdXBbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogYm9hcmQuY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50c0luR3JvdXBbZWxlbWVudHNJbkdyb3VwLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgICAgIGluZGljZXMgPSBpbmRpY2VzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBtb3ZlQ29udGVudHMucHVzaChcbiAgICAgICAgICAgIC4uLmluZGljZXMubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGJvYXJkLmNoaWxkcmVuW3BhdGhdLFxuICAgICAgICAgICAgICAgICAgICBuZXdQYXRoOiBbdGFyZ2V0SW5kZXhdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUNvbnRlbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhblNldFpJbmRleCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5maWx0ZXIoaXRlbSA9PiBib2FyZC5jYW5TZXRaSW5kZXgoaXRlbSkpO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDA7XG59O1xuXG5jb25zdCB0b0NvbnRpZ3VvdXNHcm91cHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGFycmF5OiBudW1iZXJbXSkgPT4ge1xuICAgIGxldCBjdXJzb3IgPSAwO1xuICAgIHJldHVybiBhcnJheS5yZWR1Y2UoKGFjYywgdmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gYm9hcmQuY2hpbGRyZW5bdmFsdWVdO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNFbGVtZW50ID0gYm9hcmQuY2hpbGRyZW5bYXJyYXlbaW5kZXggLSAxXV07XG4gICAgICAgICAgICBjb25zdCBpc0NvbnRpZ3VvdXMgPVxuICAgICAgICAgICAgICAgIHZhbHVlIC0gMSA9PT0gYXJyYXlbaW5kZXggLSAxXVxuICAgICAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICAgICAgOiBib2FyZC5jaGlsZHJlbi5ldmVyeSgoaXRlbSwgY2hpbGRJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRJbmRleCA+IGFycmF5W2luZGV4IC0gMV0gJiYgY2hpbGRJbmRleCA8PSB2YWx1ZSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdEdyb3VwRWxlbWVudC5pc0dyb3VwKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGV0IGlzUGFydGlhbFNlbGVjdEdyb3VwRWxlbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzRWxlbWVudD8uZ3JvdXBJZCB8fCAoY3VycmVudEVsZW1lbnQ/Lmdyb3VwSWQgJiYgcHJldmlvdXNFbGVtZW50Py5ncm91cElkICE9PSBjdXJyZW50RWxlbWVudD8uZ3JvdXBJZCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgaXNQYXJ0aWFsU2VsZWN0UHJldmlvdXNHcm91cCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxldCBpc1BhcnRpYWxTZWxlY3RDdXJyZW50RWxlbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0VsZW1lbnQuZ3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0R3JvdXAgPSBnZXRIaWdoZXN0R3JvdXAoYm9hcmQsIHByZXZpb3VzRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlzUGFydGlhbFNlbGVjdFByZXZpb3VzR3JvdXAgPSAhaXNTZWxlY3RlZEFsbEVsZW1lbnRzSW5Hcm91cChib2FyZCwgaGlnaGVzdEdyb3VwISk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5ncm91cElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlc3RHcm91cCA9IGdldEhpZ2hlc3RHcm91cChib2FyZCwgY3VycmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpc1BhcnRpYWxTZWxlY3RDdXJyZW50RWxlbWVudCA9ICFpc1NlbGVjdGVkQWxsRWxlbWVudHNJbkdyb3VwKGJvYXJkLCBoaWdoZXN0R3JvdXAhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXNQYXJ0aWFsU2VsZWN0R3JvdXBFbGVtZW50ID0gaXNQYXJ0aWFsU2VsZWN0UHJldmlvdXNHcm91cCB8fCBpc1BhcnRpYWxTZWxlY3RDdXJyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNDb250aWd1b3VzIHx8IGlzUGFydGlhbFNlbGVjdEdyb3VwRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGN1cnNvciA9ICsrY3Vyc29yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIChhY2NbY3Vyc29yXSB8fCAoYWNjW2N1cnNvcl0gPSBbXSkpLnB1c2godmFsdWUpO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdIGFzIG51bWJlcltdW10pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIG5leHQgY2FuZGlkYXRlIGluZGV4IHRoYXQncyBhdmFpbGFibGUgdG8gYmUgbW92ZWQgdG8uIEN1cnJlbnRseSB0aGF0XG4gKiAgaXMgYSBub24tZGVsZXRlZCBlbGVtZW50LCBhbmQgbm90IGluc2lkZSBhIGdyb3VwICh1bmxlc3Mgd2UncmUgZWRpdGluZyBpdCkuXG4gKi9cbmNvbnN0IGdldFRhcmdldEluZGV4ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBib3VuZGFyeUluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogJ2Rvd24nIHwgJ3VwJykgPT4ge1xuICAgIGlmICgoYm91bmRhcnlJbmRleCA9PT0gMCAmJiBkaXJlY3Rpb24gPT09ICdkb3duJykgfHwgKGJvdW5kYXJ5SW5kZXggPT09IGJvYXJkLmNoaWxkcmVuLmxlbmd0aCAtIDEgJiYgZGlyZWN0aW9uID09PSAndXAnKSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4RmlsdGVyID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5pc0RlbGV0ZWQgfHwgUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgY29uc3QgY2FuZGlkYXRlSW5kZXggPVxuICAgICAgICBkaXJlY3Rpb24gPT09ICdkb3duJ1xuICAgICAgICAgICAgPyBmaW5kTGFzdEluZGV4KGJvYXJkLmNoaWxkcmVuLCBlbCA9PiBpbmRleEZpbHRlcihlbCksIE1hdGgubWF4KDAsIGJvdW5kYXJ5SW5kZXggLSAxKSlcbiAgICAgICAgICAgIDogZmluZEluZGV4KGJvYXJkLmNoaWxkcmVuLCBlbCA9PiBpbmRleEZpbHRlcihlbCksIGJvdW5kYXJ5SW5kZXggKyAxKTtcblxuICAgIGNvbnN0IG5leHRFbGVtZW50ID0gYm9hcmQuY2hpbGRyZW5bY2FuZGlkYXRlSW5kZXhdO1xuICAgIGlmICghbmV4dEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLmJvYXJkLmNoaWxkcmVuXTtcbiAgICBjb25zdCBzb3VyY2VFbGVtZW50ID0gZWxlbWVudHNbYm91bmRhcnlJbmRleF07XG4gICAgY29uc3QgZWRpdGluZ0dyb3VwID0gZ2V0RWRpdGluZ0dyb3VwKGJvYXJkLCBzb3VyY2VFbGVtZW50KTtcbiAgICBjb25zdCBuZXh0RWxlbWVudEdyb3VwcyA9IChnZXRHcm91cEJ5RWxlbWVudChib2FyZCwgbmV4dEVsZW1lbnQsIHRydWUpIHx8IFtdKSBhcyBQbGFpdEdyb3VwW107XG4gICAgLy8gY2FuZGlkYXRlIGVsZW1lbnQgaXMgYSBzaWJsaW5nIGluIGN1cnJlbnQgZWRpdGluZyBncm91cCDihpIgcmV0dXJuXG4gICAgaWYgKGVkaXRpbmdHcm91cCAmJiBzb3VyY2VFbGVtZW50Py5ncm91cElkICE9PSBuZXh0RWxlbWVudD8uZ3JvdXBJZCkge1xuICAgICAgICAvLyBjYW5kaWRhdGUgZWxlbWVudCBpcyBvdXRzaWRlIGN1cnJlbnQgZWRpdGluZyBncm91cCDihpIgcHJldmVudFxuICAgICAgICBpZiAoIShuZXh0RWxlbWVudEdyb3VwcyBhcyBQbGFpdEdyb3VwW10pLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBlZGl0aW5nR3JvdXAuaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW5leHRFbGVtZW50Lmdyb3VwSWQpIHtcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUluZGV4O1xuICAgIH1cblxuICAgIGxldCBzaWJsaW5nR3JvdXA6IFBsYWl0R3JvdXA7XG4gICAgaWYgKGVkaXRpbmdHcm91cCkge1xuICAgICAgICBzaWJsaW5nR3JvdXAgPSBuZXh0RWxlbWVudEdyb3Vwc1tuZXh0RWxlbWVudEdyb3Vwcy5pbmRleE9mKGVkaXRpbmdHcm91cCkgLSAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nR3JvdXAgPSBuZXh0RWxlbWVudEdyb3Vwc1tuZXh0RWxlbWVudEdyb3Vwcy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgaWYgKHNpYmxpbmdHcm91cCkge1xuICAgICAgICBsZXQgZWxlbWVudHNJblNpYmxpbmdHcm91cCA9IGdldEVsZW1lbnRzSW5Hcm91cChib2FyZCwgc2libGluZ0dyb3VwLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgIGlmIChlbGVtZW50c0luU2libGluZ0dyb3VwLmxlbmd0aCkge1xuICAgICAgICAgICAgZWxlbWVudHNJblNpYmxpbmdHcm91cC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gYm9hcmQuY2hpbGRyZW4uZmluZEluZGV4KGNoaWxkID0+IGNoaWxkLmlkID09PSBhLmlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleEIgPSBib2FyZC5jaGlsZHJlbi5maW5kSW5kZXgoY2hpbGQgPT4gY2hpbGQuaWQgPT09IGIuaWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIGFzc3VtZXMgZ2V0RWxlbWVudHNJbkdyb3VwKCkgcmV0dXJuZWQgZWxlbWVudHMgYXJlIHNvcnRlZFxuICAgICAgICAgICAgLy8gYnkgekluZGV4IChhc2NlbmRpbmcpXG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnZG93bidcbiAgICAgICAgICAgICAgICA/IGVsZW1lbnRzLmluZGV4T2YoZWxlbWVudHNJblNpYmxpbmdHcm91cFswXSlcbiAgICAgICAgICAgICAgICA6IGVsZW1lbnRzLmluZGV4T2YoZWxlbWVudHNJblNpYmxpbmdHcm91cFtlbGVtZW50c0luU2libGluZ0dyb3VwLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjYW5kaWRhdGVJbmRleDtcbn07XG4iXX0=
@@ -681,7 +681,8 @@ class ListRender {
681
681
  newComponentRefs.push(componentRef);
682
682
  newContexts.push(context);
683
683
  }
684
- if (record.item === this.children[0]) {
684
+ // item might has been changed, so need to compare the id
685
+ if (record.item === this.children[0] || record.item.id === this.children[0]?.id) {
685
686
  currentIndexForFirstElement = record.currentIndex;
686
687
  }
687
688
  });
@@ -731,7 +732,7 @@ const trackBy = (index, element) => {
731
732
  return element.id;
732
733
  };
733
734
  const createPluginComponent = (componentType, context, viewContainerRef, childrenContext) => {
734
- const componentRef = viewContainerRef.createComponent(componentType);
735
+ const componentRef = viewContainerRef.createComponent(componentType, { injector: viewContainerRef.injector });
735
736
  const instance = componentRef.instance;
736
737
  instance.context = context;
737
738
  componentRef.changeDetectorRef.detectChanges();
@@ -2361,9 +2362,11 @@ const debounce = (func, wait, options) => {
2361
2362
  };
2362
2363
  const getElementsIndices = (board, elements) => {
2363
2364
  sortElements(board, elements);
2364
- return elements.map(item => {
2365
+ return elements
2366
+ .map(item => {
2365
2367
  return board.children.map(item => item.id).indexOf(item.id);
2366
- });
2368
+ })
2369
+ .filter(item => item >= 0);
2367
2370
  };
2368
2371
  const getHighestIndexOfElement = (board, elements) => {
2369
2372
  const indices = getElementsIndices(board, elements);
@@ -3172,7 +3175,7 @@ const toContiguousGroups = (board, array) => {
3172
3175
  return true;
3173
3176
  });
3174
3177
  let isPartialSelectGroupElement = false;
3175
- if (previousElement.groupId || (currentElement.groupId && previousElement.groupId !== currentElement.groupId)) {
3178
+ if (previousElement?.groupId || (currentElement?.groupId && previousElement?.groupId !== currentElement?.groupId)) {
3176
3179
  let isPartialSelectPreviousGroup = false;
3177
3180
  let isPartialSelectCurrentElement = false;
3178
3181
  if (previousElement.groupId) {
@@ -3700,12 +3703,15 @@ const getHighestSelectedElements = (board, elements) => {
3700
3703
  return [...getHighestSelectedGroups(board, elements), ...getSelectedIsolatedElements(board, elements)];
3701
3704
  };
3702
3705
  const createGroupRectangleG = (board, elements) => {
3703
- const selectedElements = getSelectedElements(board);
3704
- const groupRectangleG = createG();
3706
+ const selectedElementIds = getSelectedElements(board).map(item => item.id);
3707
+ let groupRectangleG = null;
3705
3708
  const isMoving = isSelectionMoving(board);
3706
3709
  elements.forEach(item => {
3707
- const isRender = (!selectedElements.includes(item) && !isMoving) || isMoving;
3710
+ const isRender = (!selectedElementIds.includes(item.id) && !isMoving) || isMoving;
3708
3711
  if (item.groupId && isRender) {
3712
+ if (!groupRectangleG) {
3713
+ groupRectangleG = createG();
3714
+ }
3709
3715
  const elements = getElementsInGroupByElement(board, item);
3710
3716
  const rectangle = getRectangleByElements(board, elements, false);
3711
3717
  const rectangleG = drawRectangle(board, rectangle, {
@@ -3792,9 +3798,11 @@ const duplicateElements = (board, elements) => {
3792
3798
  const selectedElements = elements || getSelectedElements(board);
3793
3799
  const rectangle = getRectangleByElements(board, selectedElements, false);
3794
3800
  const clipboardContext = board.buildFragment(null, rectangle, 'copy');
3795
- clipboardContext &&
3801
+ const stringifiedContext = clipboardContext && JSON.stringify(clipboardContext);
3802
+ const clonedContext = stringifiedContext && JSON.parse(stringifiedContext);
3803
+ clonedContext &&
3796
3804
  board.insertFragment({
3797
- ...clipboardContext,
3805
+ ...clonedContext,
3798
3806
  text: undefined
3799
3807
  }, [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 2]);
3800
3808
  };
@@ -5475,6 +5483,7 @@ const withHotkey = (board) => {
5475
5483
 
5476
5484
  class PlaitContextService {
5477
5485
  constructor() {
5486
+ this._stable = new Subject();
5478
5487
  this.uploadingFiles = [];
5479
5488
  }
5480
5489
  getUploadingFile(url) {
@@ -5486,6 +5495,12 @@ class PlaitContextService {
5486
5495
  removeUploadingFile(fileEntry) {
5487
5496
  this.uploadingFiles = this.uploadingFiles.filter(file => file.url !== fileEntry.url);
5488
5497
  }
5498
+ onStable() {
5499
+ return this._stable.asObservable();
5500
+ }
5501
+ nextStable() {
5502
+ this._stable.next('');
5503
+ }
5489
5504
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5490
5505
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitContextService }); }
5491
5506
  }
@@ -5557,6 +5572,7 @@ class PlaitBoardComponent {
5557
5572
  this.plaitPlugins = [];
5558
5573
  this.plaitChange = new EventEmitter();
5559
5574
  this.plaitBoardInitialized = new EventEmitter();
5575
+ this.contextService = inject(PlaitContextService);
5560
5576
  this.trackBy = (index, element) => {
5561
5577
  return element.id;
5562
5578
  };
@@ -5760,6 +5776,7 @@ class PlaitBoardComponent {
5760
5776
  }
5761
5777
  updateListRender() {
5762
5778
  this.listRender.update(this.board.children, this.initializeChildrenContext());
5779
+ this.contextService.nextStable();
5763
5780
  }
5764
5781
  initializeChildrenContext() {
5765
5782
  return {