@worktile/theia 16.3.3 → 16.3.4

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.
Files changed (34) hide show
  1. package/editor.module.d.ts +2 -2
  2. package/esm2022/components/contextmenu/contextmenu.component.mjs +1 -1
  3. package/esm2022/plugins/code/code.component.mjs +8 -8
  4. package/esm2022/plugins/code/code.editor.mjs +18 -7
  5. package/esm2022/plugins/color/toolbar-item.component.mjs +1 -1
  6. package/esm2022/plugins/image/image.component.mjs +5 -8
  7. package/esm2022/plugins/image/image.editor.mjs +19 -4
  8. package/esm2022/plugins/image/image.plugin.mjs +3 -3
  9. package/esm2022/plugins/link/edit/link-edit.component.mjs +4 -15
  10. package/esm2022/plugins/link/link.component.mjs +4 -4
  11. package/esm2022/plugins/link/link.editor.mjs +21 -4
  12. package/esm2022/plugins/link/link.plugin.mjs +3 -3
  13. package/esm2022/plugins/public-api.mjs +2 -1
  14. package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +1 -1
  15. package/esm2022/plugins/table/table.editor.mjs +21 -22
  16. package/esm2022/plugins/table/table.plugin.mjs +2 -2
  17. package/esm2022/transforms/delete-node-by-type.mjs +10 -0
  18. package/esm2022/transforms/index.mjs +4 -2
  19. package/esm2022/transforms/set-node-by-type.mjs +10 -0
  20. package/fesm2022/worktile-theia.mjs +111 -66
  21. package/fesm2022/worktile-theia.mjs.map +1 -1
  22. package/interfaces/editor.d.ts +2 -2
  23. package/package.json +1 -1
  24. package/plugins/code/code.editor.d.ts +2 -3
  25. package/plugins/image/image.component.d.ts +1 -4
  26. package/plugins/image/image.editor.d.ts +4 -7
  27. package/plugins/link/edit/link-edit.component.d.ts +3 -2
  28. package/plugins/link/link.editor.d.ts +3 -1
  29. package/plugins/public-api.d.ts +1 -0
  30. package/plugins/table/table.editor.d.ts +7 -7
  31. package/queries/is-range-across-blocks.d.ts +1 -1
  32. package/transforms/delete-node-by-type.d.ts +3 -0
  33. package/transforms/index.d.ts +3 -1
  34. package/transforms/set-node-by-type.d.ts +3 -0
@@ -3,6 +3,8 @@ import { ELEMENT_TO_COMPONENT } from 'slate-angular';
3
3
  import { ElementKinds, LINK_DEFAULT_TEXT } from '../../constants';
4
4
  import { getAboveByType } from '../../queries/get-above-by-type';
5
5
  import { LinkTags } from './link.types';
6
+ import isUrl from 'is-url';
7
+ import { TheEditor } from '../../interfaces';
6
8
  export const LinkEditor = {
7
9
  insertLink(editor) {
8
10
  if (Range.isCollapsed(editor.selection)) {
@@ -17,7 +19,7 @@ export const LinkEditor = {
17
19
  });
18
20
  }
19
21
  else {
20
- const isActive = LinkEditor.isLinkActive(editor);
22
+ const isActive = LinkEditor.isActive(editor);
21
23
  if (isActive) {
22
24
  LinkEditor.unwrapLink(editor);
23
25
  return;
@@ -36,12 +38,12 @@ export const LinkEditor = {
36
38
  });
37
39
  }
38
40
  },
39
- isLinkActive(editor) {
41
+ isActive(editor) {
40
42
  const [link] = Editor.nodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });
41
43
  return !!link;
42
44
  },
43
45
  wrapLink(editor, text, url) {
44
- if (LinkEditor.isLinkActive(editor)) {
46
+ if (LinkEditor.isActive(editor)) {
45
47
  LinkEditor.unwrapLink(editor);
46
48
  }
47
49
  const { selection } = editor;
@@ -61,6 +63,21 @@ export const LinkEditor = {
61
63
  },
62
64
  unwrapLink(editor) {
63
65
  Transforms.unwrapNodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });
66
+ },
67
+ updateLink(editor, element, url, text) {
68
+ if (isUrl(url)) {
69
+ const path = TheEditor.findPath(editor, element);
70
+ if (element.url !== url) {
71
+ Transforms.setNodes(editor, { url: url }, { at: path });
72
+ }
73
+ if (Node.string(element) !== text) {
74
+ const [start, end] = Editor.edges(editor, path);
75
+ Transforms.insertText(editor, text, { at: { anchor: end, focus: end } });
76
+ Transforms.delete(editor, { at: { anchor: start, focus: end } });
77
+ }
78
+ TheEditor.focus(editor);
79
+ Transforms.select(editor, Editor.after(editor, path));
80
+ }
64
81
  }
65
82
  };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saW5rL2xpbmsuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLFVBQVUsQ0FBQyxNQUFjO1FBQ3JCLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckMsT0FBTyxDQUFDLE9BQU8sRUFBRTtpQkFDWixJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNQLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELENBQUMsQ0FBQztpQkFDRCxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNQLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0QsTUFBTSxhQUFhLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBcUIsQ0FBQztnQkFDN0UsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7U0FDVjthQUFNO1lBQ0gsTUFB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhbmdlLCBUcmFuc2Zvcm1zLCBFZGl0b3IsIEVsZW1lbnQsIE5vZGUgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBFTEVNRU5UX1RPX0NPTVBPTkVOVCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgTGlua0VsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBMSU5LX0RFRkFVTFRfVEVYVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRBYm92ZUJ5VHlwZSB9IGZyb20gJy4uLy4uL3F1ZXJpZXMvZ2V0LWFib3ZlLWJ5LXR5cGUnO1xuaW1wb3J0IHsgVGhlTGlua0NvbXBvbmVudCB9IGZyb20gJy4vbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlua1RhZ3MgfSBmcm9tICcuL2xpbmsudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgTGlua0VkaXRvciA9IHtcbiAgICBpbnNlcnRMaW5rKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmIChSYW5nZS5pc0NvbGxhcHNlZChlZGl0b3Iuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIExpbmtFZGl0b3Iud3JhcExpbmsoZWRpdG9yLCBMSU5LX0RFRkFVTFRfVEVYVCwgJycpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbbGlua05vZGVdID0gZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMubGluayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQobGlua05vZGUpIGFzIFRoZUxpbmtDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGxpbmtDb21wb25lbnQub3BlbkxpbmtFZGl0KExpbmtUYWdzLmluc2VydCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IExpbmtFZGl0b3IuaXNMaW5rQWN0aXZlKGVkaXRvcik7XG4gICAgICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBMaW5rRWRpdG9yLnVud3JhcExpbmsoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50ID0gTm9kZS5mcmFnbWVudChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pWzBdO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0Tm9kZSA9IE5vZGUuZ2V0KGZyYWdtZW50LCBbXSk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RUZXh0ID0gTm9kZS5zdHJpbmcoc2VsZWN0Tm9kZSk7XG5cbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBMaW5rRWRpdG9yLndyYXBMaW5rKGVkaXRvciwgc2VsZWN0VGV4dCwgJycpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbbGlua05vZGVdID0gZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMubGluayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQobGlua05vZGUpIGFzIFRoZUxpbmtDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGxpbmtDb21wb25lbnQub3BlbkxpbmtFZGl0KExpbmtUYWdzLmluc2VydCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGlzTGlua0FjdGl2ZShlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBbbGlua10gPSBFZGl0b3Iubm9kZXMoZWRpdG9yLCB7IG1hdGNoOiBuID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpbmsgfSk7XG4gICAgICAgIHJldHVybiAhIWxpbms7XG4gICAgfSxcbiAgICB3cmFwTGluayhlZGl0b3I6IEVkaXRvciwgdGV4dDogc3RyaW5nLCB1cmw6IHN0cmluZykge1xuICAgICAgICBpZiAoTGlua0VkaXRvci5pc0xpbmtBY3RpdmUoZWRpdG9yKSkge1xuICAgICAgICAgICAgTGlua0VkaXRvci51bndyYXBMaW5rKGVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICAgICAgY29uc3QgaXNDb2xsYXBzZWQgPSBzZWxlY3Rpb24gJiYgUmFuZ2UuaXNDb2xsYXBzZWQoc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgbGluazogTGlua0VsZW1lbnQgPSB7XG4gICAgICAgICAgICB0eXBlOiBFbGVtZW50S2luZHMubGluayxcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBpc0NvbGxhcHNlZCA/IFt7IHRleHQgfV0gOiBbXVxuICAgICAgICB9O1xuICAgICAgICBpZiAoaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCBsaW5rKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMud3JhcE5vZGVzKGVkaXRvciwgbGluaywgeyBzcGxpdDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuY29sbGFwc2UoZWRpdG9yLCB7IGVkZ2U6ICdlbmQnIH0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB1bndyYXBMaW5rKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIFRyYW5zZm9ybXMudW53cmFwTm9kZXMoZWRpdG9yLCB7IG1hdGNoOiBuID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpbmsgfSk7XG4gICAgfVxufTtcbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saW5rL2xpbmsuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsVUFBVSxDQUFDLE1BQWM7UUFDckIsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNyQyxPQUFPLENBQUMsT0FBTyxFQUFFO2lCQUNaLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFxQixDQUFDO2dCQUM3RSxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsQ0FBQztTQUNWO2FBQU07WUFDSCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLElBQUksUUFBUSxFQUFFO2dCQUNWLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLE9BQU87YUFDVjtZQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTNDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7aUJBQ1osSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDUCxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFxQixDQUFDO2dCQUM3RSxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsQ0FBQztTQUNWO0lBQ0wsQ0FBQztJQUNELFFBQVEsQ0FBQyxNQUFjO1FBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEIsQ0FBQztJQUNELFFBQVEsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEdBQVc7UUFDOUMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzdCLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakM7UUFDRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE1BQU0sV0FBVyxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sSUFBSSxHQUFnQjtZQUN0QixJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDdkIsR0FBRztZQUNILFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzFDLENBQUM7UUFDRixJQUFJLFdBQVcsRUFBRTtZQUNiLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3hDO2FBQU07WUFDSCxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwRCxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUNELFVBQVUsQ0FBQyxNQUFjO1FBQ3JCLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFDRCxVQUFVLENBQUMsTUFBYyxFQUFFLE9BQW9CLEVBQUUsR0FBVyxFQUFFLElBQVk7UUFDdEUsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFO2dCQUNyQixVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzNEO1lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDL0IsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDaEQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNwRTtZQUNELFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN6RDtJQUNMLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmFuZ2UsIFRyYW5zZm9ybXMsIEVkaXRvciwgRWxlbWVudCwgTm9kZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEVMRU1FTlRfVE9fQ09NUE9ORU5UIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBMaW5rRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMsIExJTktfREVGQVVMVF9URVhUIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEFib3ZlQnlUeXBlIH0gZnJvbSAnLi4vLi4vcXVlcmllcy9nZXQtYWJvdmUtYnktdHlwZSc7XG5pbXBvcnQgeyBUaGVMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaW5rVGFncyB9IGZyb20gJy4vbGluay50eXBlcyc7XG5pbXBvcnQgaXNVcmwgZnJvbSAnaXMtdXJsJztcbmltcG9ydCB7IFRoZUVkaXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgTGlua0VkaXRvciA9IHtcbiAgICBpbnNlcnRMaW5rKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmIChSYW5nZS5pc0NvbGxhcHNlZChlZGl0b3Iuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIExpbmtFZGl0b3Iud3JhcExpbmsoZWRpdG9yLCBMSU5LX0RFRkFVTFRfVEVYVCwgJycpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbbGlua05vZGVdID0gZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMubGluayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQobGlua05vZGUpIGFzIFRoZUxpbmtDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGxpbmtDb21wb25lbnQub3BlbkxpbmtFZGl0KExpbmtUYWdzLmluc2VydCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IExpbmtFZGl0b3IuaXNBY3RpdmUoZWRpdG9yKTtcbiAgICAgICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIExpbmtFZGl0b3IudW53cmFwTGluayhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBOb2RlLmZyYWdtZW50KGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbilbMF07XG4gICAgICAgICAgICBjb25zdCBzZWxlY3ROb2RlID0gTm9kZS5nZXQoZnJhZ21lbnQsIFtdKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdFRleHQgPSBOb2RlLnN0cmluZyhzZWxlY3ROb2RlKTtcblxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIExpbmtFZGl0b3Iud3JhcExpbmsoZWRpdG9yLCBzZWxlY3RUZXh0LCAnJyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtsaW5rTm9kZV0gPSBnZXRBYm92ZUJ5VHlwZShlZGl0b3IsIEVsZW1lbnRLaW5kcy5saW5rKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlua0NvbXBvbmVudCA9IEVMRU1FTlRfVE9fQ09NUE9ORU5ULmdldChsaW5rTm9kZSkgYXMgVGhlTGlua0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgbGlua0NvbXBvbmVudC5vcGVuTGlua0VkaXQoTGlua1RhZ3MuaW5zZXJ0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaXNBY3RpdmUoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgW2xpbmtdID0gRWRpdG9yLm5vZGVzKGVkaXRvciwgeyBtYXRjaDogbiA9PiBFbGVtZW50LmlzRWxlbWVudChuKSAmJiBuLnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saW5rIH0pO1xuICAgICAgICByZXR1cm4gISFsaW5rO1xuICAgIH0sXG4gICAgd3JhcExpbmsoZWRpdG9yOiBFZGl0b3IsIHRleHQ6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKExpbmtFZGl0b3IuaXNBY3RpdmUoZWRpdG9yKSkge1xuICAgICAgICAgICAgTGlua0VkaXRvci51bndyYXBMaW5rKGVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICAgICAgY29uc3QgaXNDb2xsYXBzZWQgPSBzZWxlY3Rpb24gJiYgUmFuZ2UuaXNDb2xsYXBzZWQoc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgbGluazogTGlua0VsZW1lbnQgPSB7XG4gICAgICAgICAgICB0eXBlOiBFbGVtZW50S2luZHMubGluayxcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBpc0NvbGxhcHNlZCA/IFt7IHRleHQgfV0gOiBbXVxuICAgICAgICB9O1xuICAgICAgICBpZiAoaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCBsaW5rKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMud3JhcE5vZGVzKGVkaXRvciwgbGluaywgeyBzcGxpdDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuY29sbGFwc2UoZWRpdG9yLCB7IGVkZ2U6ICdlbmQnIH0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB1bndyYXBMaW5rKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIFRyYW5zZm9ybXMudW53cmFwTm9kZXMoZWRpdG9yLCB7IG1hdGNoOiBuID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpbmsgfSk7XG4gICAgfSxcbiAgICB1cGRhdGVMaW5rKGVkaXRvcjogRWRpdG9yLCBlbGVtZW50OiBMaW5rRWxlbWVudCwgdXJsOiBzdHJpbmcsIHRleHQ6IHN0cmluZykge1xuICAgICAgICBpZiAoaXNVcmwodXJsKSkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFRoZUVkaXRvci5maW5kUGF0aChlZGl0b3IsIGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQudXJsICE9PSB1cmwpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKGVkaXRvciwgeyB1cmw6IHVybCB9LCB7IGF0OiBwYXRoIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKE5vZGUuc3RyaW5nKGVsZW1lbnQpICE9PSB0ZXh0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gRWRpdG9yLmVkZ2VzKGVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnRUZXh0KGVkaXRvciwgdGV4dCwgeyBhdDogeyBhbmNob3I6IGVuZCwgZm9jdXM6IGVuZCB9IH0pO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVsZXRlKGVkaXRvciwgeyBhdDogeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBUaGVFZGl0b3IuZm9jdXMoZWRpdG9yKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgRWRpdG9yLmFmdGVyKGVkaXRvciwgcGF0aCkpO1xuICAgICAgICB9XG4gICAgfVxufTtcbiJdfQ==
@@ -49,7 +49,7 @@ export const createLinkPlugin = createPluginFactory({
49
49
  icon: 'link-insert',
50
50
  name: '链接',
51
51
  execute: editor => LinkEditor.insertLink(editor),
52
- active: editor => LinkEditor.isLinkActive(editor)
52
+ active: editor => LinkEditor.isActive(editor)
53
53
  }
54
54
  ],
55
55
  menuItems: [
@@ -58,7 +58,7 @@ export const createLinkPlugin = createPluginFactory({
58
58
  keywords: 'lj,lianjie,link,链接',
59
59
  description: '支持插入链接',
60
60
  execute: editor => LinkEditor.insertLink(editor),
61
- active: editor => LinkEditor.isLinkActive(editor),
61
+ active: editor => LinkEditor.isActive(editor),
62
62
  type: ThePluginMenuItemType.icon,
63
63
  name: '链接',
64
64
  displayKey: '/lj',
@@ -70,4 +70,4 @@ export const createLinkPlugin = createPluginFactory({
70
70
  disabledOperateTypes: [ElementKinds.image, ...DISABLED_OPERATE_TYPES]
71
71
  }
72
72
  });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saW5rL2xpbmsucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLFFBQVEsQ0FBQztBQUMzQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRW5DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFtQixNQUFTLEVBQUssRUFBRTtJQUN2RCxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRW5FLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7UUFDbkMsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDdkIsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JCLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4QyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDNUQ7YUFBTTtZQUNILFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQjtJQUNMLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDSCxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEI7SUFDTCxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsYUFBYSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQ3hDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ3BDLE9BQU8sZ0JBQWdCLENBQUM7U0FDM0I7UUFDRCxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUM7SUFFRixNQUFNLEdBQUcsb0JBQW9CLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbkUsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7SUFDaEQsR0FBRyxFQUFFLFVBQVUsQ0FBQyxJQUFJO0lBQ3BCLGFBQWEsRUFBRSxRQUFRO0lBQ3ZCLFlBQVksRUFBRTtRQUNWO1lBQ0ksR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJO1lBQ3RCLElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7U0FDcEQ7S0FDSjtJQUNELFNBQVMsRUFBRTtRQUNQO1lBQ0ksR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJO1lBQ3RCLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsV0FBVyxFQUFFLFFBQVE7WUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDakQsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUk7WUFDaEMsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsS0FBSztZQUNqQixJQUFJLEVBQUUsYUFBYTtZQUNuQixRQUFRLEVBQUUsZUFBZSxDQUFDLElBQUk7U0FDakM7S0FDSjtJQUNELE9BQU8sRUFBRTtRQUNMLG9CQUFvQixFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLHNCQUFzQixDQUFDO0tBQ3hFO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzVXJsIGZyb20gJ2lzLXVybCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBDTElQQk9BUkRfRk9STUFUX0tFWSwgRElTQUJMRURfT1BFUkFURV9UWVBFUywgVGhlUGx1Z2luTWVudUl0ZW1UeXBlLCBQbHVnaW5NZW51SWNvbnMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgd2l0aFJlbW92ZUVtcHR5Tm9kZXMgfSBmcm9tICcuLi9ub3JtYWxpemVycy9yZW1vdmUtZW1wdHktbm9kZXMnO1xuaW1wb3J0IHsgTGlua0VkaXRvciB9IGZyb20gJy4vbGluay5lZGl0b3InO1xuaW1wb3J0IHsgVGhlTGlua0NvbXBvbmVudCB9IGZyb20gJy4vbGluay5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpbmsgPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBpbnNlcnREYXRhLCBpbnNlcnRUZXh0LCBpc0lubGluZSwgcmVuZGVyRWxlbWVudCB9ID0gZWRpdG9yO1xuXG4gICAgZWRpdG9yLmlzSW5saW5lID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpbmsgPyB0cnVlIDogaXNJbmxpbmUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5pbnNlcnRUZXh0ID0gdGV4dCA9PiB7XG4gICAgICAgIGlmICh0ZXh0ICYmIGlzVXJsKHRleHQpKSB7XG4gICAgICAgICAgICBMaW5rRWRpdG9yLndyYXBMaW5rKGVkaXRvciwgdGV4dCwgdGV4dCk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yLCB7IGRpc3RhbmNlOiAxLCB1bml0OiAnb2Zmc2V0JyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluc2VydFRleHQodGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZWRpdG9yLmluc2VydERhdGEgPSBkYXRhID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcblxuICAgICAgICBpZiAodGV4dCAmJiBpc1VybCh0ZXh0KSAmJiAhZnJhZ21lbnQpIHtcbiAgICAgICAgICAgIExpbmtFZGl0b3Iud3JhcExpbmsoZWRpdG9yLCB0ZXh0LCB0ZXh0KTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMubW92ZShlZGl0b3IsIHsgZGlzdGFuY2U6IDEsIHVuaXQ6ICdvZmZzZXQnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5zZXJ0RGF0YShkYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBlZGl0b3IucmVuZGVyRWxlbWVudCA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saW5rKSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlTGlua0NvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yID0gd2l0aFJlbW92ZUVtcHR5Tm9kZXMoeyB0eXBlOiBFbGVtZW50S2luZHMubGluayB9KShlZGl0b3IpO1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMaW5rUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAga2V5OiBQbHVnaW5LZXlzLmxpbmssXG4gICAgd2l0aE92ZXJyaWRlczogd2l0aExpbmssXG4gICAgdG9vbGJhckl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogRWxlbWVudEtpbmRzLmxpbmssXG4gICAgICAgICAgICBpY29uOiAnbGluay1pbnNlcnQnLFxuICAgICAgICAgICAgbmFtZTogJ+mTvuaOpScsXG4gICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gTGlua0VkaXRvci5pbnNlcnRMaW5rKGVkaXRvciksXG4gICAgICAgICAgICBhY3RpdmU6IGVkaXRvciA9PiBMaW5rRWRpdG9yLmlzTGlua0FjdGl2ZShlZGl0b3IpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIG1lbnVJdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEVsZW1lbnRLaW5kcy5saW5rLFxuICAgICAgICAgICAga2V5d29yZHM6ICdsaixsaWFuamllLGxpbmss6ZO+5o6lJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAn5pSv5oyB5o+S5YWl6ZO+5o6lJyxcbiAgICAgICAgICAgIGV4ZWN1dGU6IGVkaXRvciA9PiBMaW5rRWRpdG9yLmluc2VydExpbmsoZWRpdG9yKSxcbiAgICAgICAgICAgIGFjdGl2ZTogZWRpdG9yID0+IExpbmtFZGl0b3IuaXNMaW5rQWN0aXZlKGVkaXRvciksXG4gICAgICAgICAgICB0eXBlOiBUaGVQbHVnaW5NZW51SXRlbVR5cGUuaWNvbixcbiAgICAgICAgICAgIG5hbWU6ICfpk77mjqUnLFxuICAgICAgICAgICAgZGlzcGxheUtleTogJy9saicsXG4gICAgICAgICAgICBpY29uOiAnbGluay1pbnNlcnQnLFxuICAgICAgICAgICAgbWVudUljb246IFBsdWdpbk1lbnVJY29ucy5saW5rXG4gICAgICAgIH1cbiAgICBdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZGlzYWJsZWRPcGVyYXRlVHlwZXM6IFtFbGVtZW50S2luZHMuaW1hZ2UsIC4uLkRJU0FCTEVEX09QRVJBVEVfVFlQRVNdXG4gICAgfVxufSk7XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saW5rL2xpbmsucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLFFBQVEsQ0FBQztBQUMzQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRW5DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFtQixNQUFTLEVBQUssRUFBRTtJQUN2RCxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRW5FLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7UUFDbkMsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDdkIsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFF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eyBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBDTElQQk9BUkRfRk9STUFUX0tFWSwgRElTQUJMRURfT1BFUkFURV9UWVBFUywgVGhlUGx1Z2luTWVudUl0ZW1UeXBlLCBQbHVnaW5NZW51SWNvbnMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgd2l0aFJlbW92ZUVtcHR5Tm9kZXMgfSBmcm9tICcuLi9ub3JtYWxpemVycy9yZW1vdmUtZW1wdHktbm9kZXMnO1xuaW1wb3J0IHsgTGlua0VkaXRvciB9IGZyb20gJy4vbGluay5lZGl0b3InO1xuaW1wb3J0IHsgVGhlTGlua0NvbXBvbmVudCB9IGZyb20gJy4vbGluay5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpbmsgPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBpbnNlcnREYXRhLCBpbnNlcnRUZXh0LCBpc0lubGluZSwgcmVuZGVyRWxlbWVudCB9ID0gZWRpdG9yO1xuXG4gICAgZWRpdG9yLmlzSW5saW5lID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpbmsgPyB0cnVlIDogaXNJbmxpbmUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5pbnNlcnRUZXh0ID0gdGV4dCA9PiB7XG4gICAgICAgIGlmICh0ZXh0ICYmIGlzVXJsKHRleHQpKSB7XG4gICAgICAgICAgICBMaW5rRWRpdG9yLndyYXBMaW5rKGVkaXRvciwgdGV4dCwgdGV4dCk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yLCB7IGRpc3RhbmNlOiAxLCB1bml0OiAnb2Zmc2V0JyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluc2VydFRleHQodGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZWRpdG9yLmluc2VydERhdGEgPSBkYXRhID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcblxuICAgICAgICBpZiAodGV4dCAmJiBpc1VybCh0ZXh0KSAmJiAhZnJhZ21lbnQpIHtcbiAgICAgICAgICAgIExpbmtFZGl0b3Iud3JhcExpbmsoZWRpdG9yLCB0ZXh0LCB0ZXh0KTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMubW92ZShlZGl0b3IsIHsgZGlzdGFuY2U6IDEsIHVuaXQ6ICdvZmZzZXQnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5zZXJ0RGF0YShkYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBlZGl0b3IucmVuZGVyRWxlbWVudCA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saW5rKSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlTGlua0NvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yID0gd2l0aFJlbW92ZUVtcHR5Tm9kZXMoeyB0eXBlOiBFbGVtZW50S2luZHMubGluayB9KShlZGl0b3IpO1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMaW5rUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAga2V5OiBQbHVnaW5LZXlzLmxpbmssXG4gICAgd2l0aE92ZXJyaWRlczogd2l0aExpbmssXG4gICAgdG9vbGJhckl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogRWxlbWVudEtpbmRzLmxpbmssXG4gICAgICAgICAgICBpY29uOiAnbGluay1pbnNlcnQnLFxuICAgICAgICAgICAgbmFtZTogJ+mTvuaOpScsXG4gICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gTGlua0VkaXRvci5pbnNlcnRMaW5rKGVkaXRvciksXG4gICAgICAgICAgICBhY3RpdmU6IGVkaXRvciA9PiBMaW5rRWRpdG9yLmlzQWN0aXZlKGVkaXRvcilcbiAgICAgICAgfVxuICAgIF0sXG4gICAgbWVudUl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogRWxlbWVudEtpbmRzLmxpbmssXG4gICAgICAgICAgICBrZXl3b3JkczogJ2xqLGxpYW5qaWUsbGluayzpk77mjqUnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICfmlK/mjIHmj5LlhaXpk77mjqUnLFxuICAgICAgICAgICAgZXhlY3V0ZTogZWRpdG9yID0+IExpbmtFZGl0b3IuaW5zZXJ0TGluayhlZGl0b3IpLFxuICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gTGlua0VkaXRvci5pc0FjdGl2ZShlZGl0b3IpLFxuICAgICAgICAgICAgdHlwZTogVGhlUGx1Z2luTWVudUl0ZW1UeXBlLmljb24sXG4gICAgICAgICAgICBuYW1lOiAn6ZO+5o6lJyxcbiAgICAgICAgICAgIGRpc3BsYXlLZXk6ICcvbGonLFxuICAgICAgICAgICAgaWNvbjogJ2xpbmstaW5zZXJ0JyxcbiAgICAgICAgICAgIG1lbnVJY29uOiBQbHVnaW5NZW51SWNvbnMubGlua1xuICAgICAgICB9XG4gICAgXSxcbiAgICBvcHRpb25zOiB7XG4gICAgICAgIGRpc2FibGVkT3BlcmF0ZVR5cGVzOiBbRWxlbWVudEtpbmRzLmltYWdlLCAuLi5ESVNBQkxFRF9PUEVSQVRFX1RZUEVTXVxuICAgIH1cbn0pO1xuIl19
@@ -12,7 +12,8 @@ export * from './mark/mark.editor';
12
12
  export * from './mention/index';
13
13
  export * from './quick-insert/quick-insert.editor';
14
14
  export * from './table/table.editor';
15
+ export * from './table/utils';
15
16
  export * from './todo-item/todo-item.editor';
16
17
  export * from './vertical-align/vertical-align.editor';
17
18
  export * from './inline-code/inline-code.editor';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbGlnbi9hbGlnbi5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9ibG9ja3F1b3RlL2Jsb2NrcXVvdGUuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vY29kZS9jb2RlLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbG9yL2NvbG9yLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2hlYWRpbmcvaGVhZGluZy5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9oci9oci5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS9pbWFnZS5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9pbmRlbnQvaW5kZW50LmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpbmsvbGluay5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0L2xpc3QuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbWFyay9tYXJrLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL21lbnRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9xdWljay1pbnNlcnQvcXVpY2staW5zZXJ0LmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlL3RhYmxlLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3RvZG8taXRlbS90b2RvLWl0ZW0uZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdmVydGljYWwtYWxpZ24vdmVydGljYWwtYWxpZ24uZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vaW5saW5lLWNvZGUvaW5saW5lLWNvZGUuZWRpdG9yJztcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbGlnbi9hbGlnbi5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9ibG9ja3F1b3RlL2Jsb2NrcXVvdGUuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vY29kZS9jb2RlLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbG9yL2NvbG9yLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2hlYWRpbmcvaGVhZGluZy5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9oci9oci5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS9pbWFnZS5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9pbmRlbnQvaW5kZW50LmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpbmsvbGluay5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0L2xpc3QuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbWFyay9tYXJrLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL21lbnRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9xdWljay1pbnNlcnQvcXVpY2staW5zZXJ0LmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlL3RhYmxlLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdG9kby1pdGVtL3RvZG8taXRlbS5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJ0aWNhbC1hbGlnbi92ZXJ0aWNhbC1hbGlnbi5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9pbmxpbmUtY29kZS9pbmxpbmUtY29kZS5lZGl0b3InO1xuIl19
@@ -157,7 +157,7 @@ export class TheTableToolbarComponent {
157
157
  });
158
158
  }
159
159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheTableToolbarComponent, deps: [{ token: i1.ThyPopover }, { token: i1.ThyPopoverRef }, { token: i2.ThyNotifyService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", tableElement: "tableElement" }, ngImport: i0, template: "<thy-actions thySize=\"xxs\" (mousedown)=\"preventDefault($event)\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (click)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"> </thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\"\n thyColorPicker\n [(ngModel)]=\"selectedColor\"\n (ngModelChange)=\"changeColor($event)\"\n (click)=\"openColorPanel($event)\"\n thyPlacement=\"bottomLeft\"\n [thyHasBackdrop]=\"false\"\n >\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && !isColumnEqual\"\n thyAction\n thyTooltip=\"\u5217\u7B49\u5BBD\"\n (click)=\"setEquallyColumnHandle($event)\"\n >\n <thy-icon thyIconName=\"table-column-equal-width\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (click)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n <a\n *ngIf=\"tableStore.isSelectedTable && !tableStore?.isFullscreen\"\n class=\"fullscreen-hidden\"\n href=\"javascript:;\"\n thyAction\n thyActionIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n (click)=\"onCopy($event)\"\n ></a>\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"preventDefault($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n <ng-container *ngIf=\"tableStore?.isFullscreen ? deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (click)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i6.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i7.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i7.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i8.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: i9.ThyColorPickerDirective, selector: "[thyColorPicker]", inputs: ["thyOffset", "thyHasBackdrop", "thyDefaultColor", "thyTransparentColorSelectable", "thyPresetColors", "thyPlacement", "thyTrigger", "thyShowDelay", "thyHideDelay"], outputs: ["thyPanelOpen", "thyPanelClose"] }] }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", tableElement: "tableElement" }, ngImport: i0, template: "<thy-actions thySize=\"xxs\" (mousedown)=\"preventDefault($event)\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (click)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"> </thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\"\n thyColorPicker\n [(ngModel)]=\"selectedColor\"\n (ngModelChange)=\"changeColor($event)\"\n (click)=\"openColorPanel($event)\"\n thyPlacement=\"bottomLeft\"\n [thyHasBackdrop]=\"false\"\n >\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && !isColumnEqual\"\n thyAction\n thyTooltip=\"\u5217\u7B49\u5BBD\"\n (click)=\"setEquallyColumnHandle($event)\"\n >\n <thy-icon thyIconName=\"table-column-equal-width\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (click)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n <a\n *ngIf=\"tableStore.isSelectedTable && !tableStore?.isFullscreen\"\n class=\"fullscreen-hidden\"\n href=\"javascript:;\"\n thyAction\n thyActionIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n (click)=\"onCopy($event)\"\n ></a>\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"preventDefault($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n <ng-container *ngIf=\"tableStore?.isFullscreen ? deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (click)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i6.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i7.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i7.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i8.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: i9.ThyColorPickerDirective, selector: "[thyColorPicker]", inputs: ["thyOffset", "thyHasBackdrop", "thyDefaultColor", "thyTransparentColorSelectable", "thyPresetColors", "thyPlacement", "thyTrigger", "thyShowDelay", "thyHideDelay", "thyDisabled"], outputs: ["thyPanelOpen", "thyPanelClose"] }] }); }
161
161
  }
162
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheTableToolbarComponent, decorators: [{
163
163
  type: Component,
@@ -2,6 +2,7 @@ import { Editor, Element, Transforms, Text, Node } from 'slate';
2
2
  import { AngularEditor, ELEMENT_TO_COMPONENT } from 'slate-angular';
3
3
  import { TableOptions } from './table.types';
4
4
  import { ALIGN_BLOCK_TYPES, ElementKinds, MarkProps, VerticalAlignment, TableHeaderBackgroundColor, SpecialBackgroundColor } from '../../constants';
5
+ import { TheEditor } from '../../interfaces';
5
6
  import { insertTable, insertColumn, insertRow, removeColumn, removeRow, removeTable } from './transforms';
6
7
  import { clearCell } from './transforms/clear-cell';
7
8
  import { getOriginCell } from './utils';
@@ -42,8 +43,7 @@ export const TableEditor = {
42
43
  const opts = new TableOptions(optionsParam);
43
44
  clearCell(opts, editor, nodeEntry);
44
45
  },
45
- setCellsBackgroundColor(editor, color, selectCells) {
46
- let cells = selectCells;
46
+ setCellsBackgroundColor(editor, color, cells) {
47
47
  if (!cells) {
48
48
  cells = TableEditor.getSelectedCells(editor) || [];
49
49
  }
@@ -96,20 +96,18 @@ export const TableEditor = {
96
96
  TheTransforms.setNode(editor, { columns: equalColumns }, tableElement);
97
97
  }
98
98
  },
99
- clearCellsContent(editor, selectCells) {
100
- let cells = selectCells;
99
+ clearCellsContent(editor, cells) {
101
100
  if (!cells) {
102
- cells = TableEditor.getSelectedCellPositions(editor) || [];
101
+ cells = TableEditor.getSelectedCells(editor) || [];
103
102
  }
104
103
  if (cells.length > 0) {
105
104
  const tablePosition = createTablePosition(editor);
106
105
  if (tablePosition.isInTable()) {
107
106
  Editor.withoutNormalizing(editor, () => {
108
- for (const { row, col } of cells) {
109
- const cellPath = [...tablePosition.tableEntry[1], row, col];
110
- const node = Node.get(editor, cellPath);
111
- TableEditor.clearCell(editor, [node, cellPath]);
112
- }
107
+ cells.forEach(cell => {
108
+ const path = TheEditor.findPath(editor, cell);
109
+ TableEditor.clearCell(editor, [cell, path]);
110
+ });
113
111
  });
114
112
  Transforms.select(editor, Editor.start(editor, tablePosition.cellEntry[1]));
115
113
  }
@@ -138,18 +136,19 @@ export const TableEditor = {
138
136
  }
139
137
  return null;
140
138
  },
141
- setAlign(editor, alignment) {
139
+ setAlign(editor, alignment, cells) {
142
140
  return TableEditor.handleSelectedCells(editor, (_, cellRange) => {
143
141
  Transforms.setNodes(editor, { align: alignment }, {
144
142
  at: cellRange,
145
143
  match: (n) => ALIGN_BLOCK_TYPES.includes(n.type)
146
144
  });
147
- });
145
+ }, cells);
148
146
  },
149
- setVerticalAlign(editor, alignment) {
147
+ setVerticalAlign(editor, alignment, cells) {
150
148
  const isSelected = TableEditor.handleSelectedCells(editor, cellPath => {
151
149
  Transforms.setNodes(editor, { verticalAlign: alignment }, { at: cellPath });
152
- });
150
+ }, cells);
151
+ console.log(isSelected);
153
152
  if (!isSelected) {
154
153
  const cellEntry = TheQueries.getAboveByType(editor, ElementKinds.tableCell);
155
154
  if (cellEntry) {
@@ -221,17 +220,17 @@ export const TableEditor = {
221
220
  TheTransforms.setMarks(editor, marks, cellRange);
222
221
  });
223
222
  },
224
- handleSelectedCells(editor, handle) {
225
- const cells = TableEditor.getSelectedCellPositions(editor);
223
+ handleSelectedCells(editor, handle, cells) {
224
+ if (!cells) {
225
+ cells = TableEditor.getSelectedCells(editor);
226
+ }
226
227
  if (cells) {
227
- const tableNode = TheQueries.getAboveByType(editor, ElementKinds.table);
228
228
  Editor.withoutNormalizing(editor, () => {
229
- for (const cell of cells) {
230
- const { row, col } = cell;
231
- const cellPath = [...tableNode[1], row, col];
229
+ cells.forEach(cell => {
230
+ const cellPath = TheEditor.findPath(editor, cell);
232
231
  const cellRange = { anchor: Editor.start(editor, cellPath), focus: Editor.end(editor, cellPath) };
233
232
  handle(cellPath, cellRange);
234
- }
233
+ });
235
234
  });
236
235
  return true;
237
236
  }
@@ -296,4 +295,4 @@ export const TableEditor = {
296
295
  });
297
296
  }
298
297
  };
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvdGFibGUvdGFibGUuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFhLFVBQVUsRUFBRSxJQUFJLEVBQWUsSUFBSSxFQUFtQixNQUFNLE9BQU8sQ0FBQztBQUN6RyxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBZ0IsWUFBWSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLFlBQVksRUFFWixTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDekIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQTRCLE1BQU0sU0FBUyxDQUFDO0FBQ2xFLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFC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QUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzNELElBQUksTUFBTSxFQUFFO1lBQ1IsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDcEQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM5RjtJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBaUIsRUFBRSxVQUFtQjtRQUMvQyxPQUFPLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDbkUsTUFBTSxRQUFRLEdBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFtQixDQUFDLFFBQXFCLENBQUM7WUFFL0YsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNqQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBYyxFQUFFLEtBQWEsRUFBRSxFQUFFO29CQUMvQyxhQUFhLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDLENBQUMsQ0FBQzthQUNOO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgRWxlbWVudCwgTm9kZUVudHJ5LCBUcmFuc2Zvcm1zLCBUZXh0LCBQYXRoLCBSYW5nZSwgTm9kZSwgTG9jYXRpb24sIFBvaW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgRUxFTUVOVF9UT19DT01QT05FTlQgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IENlbGxQb3NpdGlvbiwgVGFibGVPcHRpb25zLCBUaGVUYWJsZU9wdGlvbnMgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7XG4gICAgQWxpZ25tZW50LFxuICAgIEFMSUdOX0JMT0NLX1RZUEVTLFxuICAgIEVsZW1lbnRLaW5kcyxcbiAgICBJbmRlbnRzLFxuICAgIE1hcmtQcm9wcyxcbiAgICBNYXJrVHlwZXMsXG4gICAgVmVydGljYWxBbGlnbm1lbnQsXG4gICAgVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXG4gICAgU3BlY2lhbEJhY2tncm91bmRDb2xvclxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGhlRWRpdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDdXN0b21FbGVtZW50LCBUYWJsZUNlbGxFbGVtZW50LCBUYWJsZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgaW5zZXJ0VGFibGUsIGluc2VydENvbHVtbiwgaW5zZXJ0Um93LCByZW1vdmVDb2x1bW4sIHJlbW92ZVJvdywgcmVtb3ZlVGFibGUgfSBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgY2xlYXJDZWxsIH0gZnJvbSAnLi90cmFuc2Zvcm1zL2NsZWFyLWNlbGwnO1xuaW1wb3J0IHR5cGUgeyBUaGVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0T3JpZ2luQ2VsbCwgZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IHNldENlbGxJbmRlbnQsIHNvcnRDZWxsIH0gZnJvbSAnLi91dGlscy9oYW5kbGUtY2VsbCc7XG5pbXBvcnQgeyBjcmVhdGVUYWJsZVBvc2l0aW9uIH0gZnJvbSAnLi91dGlscy9jcmVhdGUtdGFibGUtcG9zaXRpb24nO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9QUkVWSU9VU19TRUxFQ1RJT04gfSBmcm9tICcuLi8uLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgc3BsaXRDZWxsIH0gZnJvbSAnLi91dGlscy9zcGxpdC1jZWxsJztcbmltcG9ydCB7IGdldFRhYmxlUGF0aCB9IGZyb20gJy4vdXRpbHMvdGFibGUtZW50cnknO1xuaW1wb3J0IHsgbWVyZ2VDZWxsIH0gZnJvbSAnLi91dGlscy9tZXJnZS1jZWxsJztcblxuZXhwb3J0IGNvbnN0IFRhYmxlRWRpdG9yID0ge1xuICAgIGluc2VydFRhYmxlKGVkaXRvcjogRWRpdG9yLCBvcHRpb25zUGFyYW0/OiBUYWJsZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IG5ldyBUYWJsZU9wdGlvbnMob3B0aW9uc1BhcmFtKTtcbiAgICAgICAgaW5zZXJ0VGFibGUob3B0cywgZWRpdG9yKTtcbiAgICB9LFxuXG4gICAgaW5zZXJ0Q29sdW1uKGVkaXRvcjogRWRpdG9yLCBjb3VudDogbnVtYmVyID0gMSwgYXQ/OiBudW1iZXIsIG9wdGlvbnNQYXJhbT86IFRhYmxlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRzID0gbmV3IFRhYmxlT3B0aW9ucyhvcHRpb25zUGFyYW0pO1xuICAgICAgICBpbnNlcnRDb2x1bW4ob3B0cywgZWRpdG9yLCBjb3VudCwgYXQpO1xuICAgIH0sXG5cbiAgICBpbnNlcnRSb3coZWRpdG9yOiBFZGl0b3IsIGNvdW50OiBudW1iZXIgPSAxLCBhdD86IG51bWJlciwgb3B0aW9uc1BhcmFtPzogVGFibGVPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBuZXcgVGFibGVPcHRpb25zKG9wdGlvbnNQYXJhbSk7XG4gICAgICAgIGluc2VydFJvdyhvcHRzLCBlZGl0b3IsIGNvdW50LCBhdCk7XG4gICAgfSxcblxuICAgIHJlbW92ZVRhYmxlKGVkaXRvcjogRWRpdG9yLCBvcHRpb25zUGFyYW0/OiBUYWJsZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IG5ldyBUYWJsZU9wdGlvbnMob3B0aW9uc1BhcmFtKTtcbiAgICAgICAgcmVtb3ZlVGFibGUob3B0cywgZWRpdG9yKTtcbiAgICB9LFxuXG4gICAgcmVtb3ZlUm93KGVkaXRvcjogRWRpdG9yLCByb3dJbmRleD86IG51bWJlciwgb3B0aW9uc1BhcmFtPzogVGFibGVPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBuZXcgVGFibGVPcHRpb25zKG9wdGlvbnNQYXJhbSk7XG4gICAgICAgIHJlbW92ZVJvdyhvcHRzLCBlZGl0b3IsIHJvd0luZGV4KTtcbiAgICB9LFxuXG4gICAgcmVtb3ZlQ29sdW1uKGVkaXRvcjogRWRpdG9yLCBjb2xJbmRleD86IG51bWJlciwgb3B0aW9uc1BhcmFtPzogVGFibGVPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBuZXcgVGFibGVPcHRpb25zKG9wdGlvbnNQYXJhbSk7XG4gICAgICAgIHJlbW92ZUNvbHVtbihvcHRzLCBlZGl0b3IsIGNvbEluZGV4KTtcbiAgICB9LFxuXG4gICAgY2xlYXJDZWxsKGVkaXRvcjogRWRpdG9yLCBub2RlRW50cnk/OiBOb2RlRW50cnk8RWxlbWVudD4sIG9wdGlvbnNQYXJhbT86IFRhYmxlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRzID0gbmV3IFRhYmxlT3B0aW9ucyhvcHRpb25zUGFyYW0pO1xuICAgICAgICBjbGVhckNlbGwob3B0cywgZWRpdG9yLCBub2RlRW50cnkpO1xuICAgIH0sXG5cbiAgICBzZXRDZWxsc0JhY2tncm91bmRDb2xvcihlZGl0b3I6IEVkaXRvciwgY29sb3I6IHN0cmluZywgc2VsZWN0Q2VsbHM/OiBUYWJsZUNlbGxFbGVtZW50W10pIHtcbiAgICAgICAgbGV0IGNlbGxzID0gc2VsZWN0Q2VsbHM7XG4gICAgICAgIGlmICghY2VsbHMpIHtcbiAgICAgICAgICAgIGNlbGxzID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxscyhlZGl0b3IpIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZWxscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIOeCueWHu+iHquWumuS5ieminOiJsumdouadv+i+k+WFpeahhuiuvue9ruminOiJsuWAvOaXtu+8jOS8muS4ouWkseeEpueCueWSjOmAieWMuu+8iOebruWJjeaXoOazleWBmuWIsOeEpueCueWQjOaXtuWtmOWcqOS6jue8lui+keWZqOWSjOi+k+WFpeahhu+8iVxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uOiBQb2ludDtcbiAgICAgICAgICAgIGlmICghZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcmFuZ2VSZWYgfSA9IFRIRV9FRElUT1JfUFJFVklPVVNfU0VMRUNUSU9OLmdldChlZGl0b3IpO1xuICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gcmFuZ2VSZWYuY3VycmVudC5hbmNob3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGlzSGVhZGVyID0gVGFibGVFZGl0b3IuaXNBY3RpdmVIZWFkZXIoZWRpdG9yLCBsb2NhdGlvbik7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29sb3IgPT09ICd0cmFuc3BhcmVudCcgfHxcbiAgICAgICAgICAgICAgICAoY29sb3IgPT09IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yICYmIGlzSGVhZGVyKSB8fFxuICAgICAgICAgICAgICAgIChjb2xvciA9PT0gU3BlY2lhbEJhY2tncm91bmRDb2xvciAmJiAhaXNIZWFkZXIpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb2xvciA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgY2VsbCk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCB7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfSwgeyBhdDogY2VsbFBhdGggfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBtZXJnZUNlbGwoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsc1Bvc2l0aW9uID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKGVkaXRvcik7XG4gICAgICAgIHNlbGVjdGVkQ2VsbHNQb3NpdGlvbi5sZW5ndGggJiYgbWVyZ2VDZWxsKGVkaXRvciwgc2VsZWN0ZWRDZWxsc1Bvc2l0aW9uKTtcbiAgICB9LFxuXG4gICAgc3BsaXRDZWxsKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHNwbGl0Q2VsbChlZGl0b3IpO1xuICAgIH0sXG5cbiAgICBzZXRUYWJsZU9wdGlvbnMoZWRpdG9yOiBFZGl0b3IsIG5ld09wdGlvbnM6IFRoZVRhYmxlT3B0aW9ucykge1xuICAgICAgICBjb25zdCB0YWJsZVBvc2l0aW9uID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCB0YWJsZVBhdGggPSBnZXRUYWJsZVBhdGgoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZVBvc2l0aW9uLnRhYmxlO1xuICAgICAgICBjb25zdCBvcHRpb25zID0geyAuLi50YWJsZS5vcHRpb25zLCAuLi5uZXdPcHRpb25zIH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCB7IG9wdGlvbnMgfSwgeyBhdDogdGFibGVQYXRoIH0pO1xuICAgIH0sXG5cbiAgICBzZXRFcXVhbGx5Q29sdW1uKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IFt0YWJsZUVudHJ5XSA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHsgYXQ6IGVkaXRvci5zZWxlY3Rpb24sIG1hdGNoOiAobjogRWxlbWVudCkgPT4gbi50eXBlID09PSBFbGVtZW50S2luZHMudGFibGUgfSk7XG4gICAgICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9ICh0YWJsZUVudHJ5ICYmIHRhYmxlRW50cnlbMF0pIGFzIFRhYmxlRWxlbWVudDtcbiAgICAgICAgaWYgKHRhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgY29sdW1ucyA9IHRhYmxlRWxlbWVudC5jb2x1bW5zO1xuICAgICAgICAgICAgY29uc3Qgc3VtV2lkdGggPSBjb2x1bW5zLnJlZHVjZSgocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWUgKyBjdXJyZW50VmFsdWUud2lkdGg7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIGNvbnN0IGVxdWFsQ29sdW1ucyA9IGNvbHVtbnMubWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB3aWR0aDogc3VtV2lkdGggLyBjb2x1bW5zLmxlbmd0aCB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuc2V0Tm9kZShlZGl0b3IsIHsgY29sdW1uczogZXF1YWxDb2x1bW5zIH0sIHRhYmxlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgY2xlYXJDZWxsc0NvbnRlbnQoZWRpdG9yOiBFZGl0b3IsIHNlbGVjdENlbGxzPzogQ2VsbFBvc2l0aW9uW10pIHtcbiAgICAgICAgbGV0IGNlbGxzID0gc2VsZWN0Q2VsbHM7XG4gICAgICAgIGlmICghY2VsbHMpIHtcbiAgICAgICAgICAgIGNlbGxzID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKGVkaXRvcikgfHwgW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNlbGxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlUG9zaXRpb24gPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgICAgICBpZiAodGFibGVQb3NpdGlvbi5pc0luVGFibGUoKSkge1xuICAgICAgICAgICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcoZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyByb3csIGNvbCB9IG9mIGNlbGxzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsUGF0aCA9IFsuLi50YWJsZVBvc2l0aW9uLnRhYmxlRW50cnlbMV0sIHJvdywgY29sXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldChlZGl0b3IsIGNlbGxQYXRoKSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVFZGl0b3IuY2xlYXJDZWxsKGVkaXRvciwgW25vZGUsIGNlbGxQYXRoXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIEVkaXRvci5zdGFydChlZGl0b3IsIHRhYmxlUG9zaXRpb24uY2VsbEVudHJ5WzFdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgaXNBY3RpdmUoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgW3RhYmxlXSA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHsgbWF0Y2g6IG4gPT4gRWxlbWVudC5pc0VsZW1lbnQobikgJiYgbi50eXBlID09PSBFbGVtZW50S2luZHMudGFibGUgfSk7XG4gICAgICAgIHJldHVybiAhIXRhYmxlO1xuICAgIH0sXG5cbiAgICBnZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgdGFibGVOb2RlID0gVGhlUXVlcmllcy5nZXRBYm92ZUJ5VHlwZShlZGl0b3IsIEVsZW1lbnRLaW5kcy50YWJsZSk7XG4gICAgICAgIGlmICh0YWJsZU5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlQ29tcG9uZW50ID0gRUxFTUVOVF9UT19DT01QT05FTlQuZ2V0KHRhYmxlTm9kZVswXSkgYXMgVGhlVGFibGVDb21wb25lbnQ7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0YWJsZUNvbXBvbmVudC50YWJsZVN0b3JlLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRDZWxsUG9zaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRDZWxsUG9zaXRpb25zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG5cbiAgICBnZXRTZWxlY3RlZENlbGxzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlTm9kZSA9IFRoZVF1ZXJpZXMuZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMudGFibGUpO1xuICAgICAgICBpZiAodGFibGVOb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJsZUNvbXBvbmVudCA9IEVMRU1FTlRfVE9fQ09NUE9ORU5ULmdldCh0YWJsZU5vZGVbMF0pIGFzIFRoZVRhYmxlQ29tcG9uZW50O1xuICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ29tcG9uZW50Py50YWJsZVN0b3JlPy5zZWxlY3RlZENlbGxzIHx8IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcblxuICAgIHNldEFsaWduKGVkaXRvcjogRWRpdG9yLCBhbGlnbm1lbnQ6IEFsaWdubWVudCkge1xuICAgICAgICByZXR1cm4gVGFibGVFZGl0b3IuaGFuZGxlU2VsZWN0ZWRDZWxscyhlZGl0b3IsIChfLCBjZWxsUmFuZ2UpID0+IHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgIHsgYWxpZ246IGFsaWdubWVudCB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYXQ6IGNlbGxSYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2g6IChuOiBFbGVtZW50KSA9PiBBTElHTl9CTE9DS19UWVBFUy5pbmNsdWRlcyhuLnR5cGUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldFZlcnRpY2FsQWxpZ24oZWRpdG9yOiBUaGVFZGl0b3IsIGFsaWdubWVudDogVmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IFRhYmxlRWRpdG9yLmhhbmRsZVNlbGVjdGVkQ2VsbHMoZWRpdG9yLCBjZWxsUGF0aCA9PiB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKGVkaXRvciwgeyB2ZXJ0aWNhbEFsaWduOiBhbGlnbm1lbnQgfSwgeyBhdDogY2VsbFBhdGggfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxFbnRyeSA9IFRoZVF1ZXJpZXMuZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMudGFibGVDZWxsKTtcbiAgICAgICAgICAgIGlmIChjZWxsRW50cnkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBjZWxsUGF0aF0gPSBjZWxsRW50cnk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICB7IHZlcnRpY2FsQWxpZ246IGFsaWdubWVudCB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdDogY2VsbFBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDogKG46IEVsZW1lbnQpID0+IG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLnRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuXG4gICAgaXNWZXJ0aWNhbEFsaWduQWN0aXZlKGVkaXRvcjogVGhlRWRpdG9yLCBhbGlnbm1lbnQ6IFZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKGVkaXRvcik7XG4gICAgICAgIGlmIChjZWxscykge1xuICAgICAgICAgICAgY29uc3QgbGFzdENlbGwgPSBjZWxsc1tjZWxscy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlTm9kZSA9IFRoZVF1ZXJpZXMuZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMudGFibGUpO1xuICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVOb2RlWzFdLCBsYXN0Q2VsbC5yb3csIGxhc3RDZWxsLmNvbF07XG4gICAgICAgICAgICBjb25zdCBjZWxsID0gTm9kZS5nZXQoZWRpdG9yLCBjZWxsUGF0aCkgYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHsgdmVydGljYWxBbGlnbiB9ID0gY2VsbDtcbiAgICAgICAgICAgIGlmICghdmVydGljYWxBbGlnbiAmJiBhbGlnbm1lbnQgPT09IFZlcnRpY2FsQWxpZ25tZW50LnRvcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZlcnRpY2FsQWxpZ24gPT09IGFsaWdubWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxFbGVtZW50ID0gVGhlUXVlcmllcy5nZXRBYm92ZUJ5VHlwZShlZGl0b3IsIEVsZW1lbnRLaW5kcy50YWJsZUNlbGwpO1xuICAgICAgICAgICAgaWYgKGNlbGxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB2ZXJ0aWNhbEFsaWduIH0gPSBjZWxsRWxlbWVudFswXTtcbiAgICAgICAgICAgICAgICBpZiAoIXZlcnRpY2FsQWxpZ24gJiYgYWxpZ25tZW50ID09PSBWZXJ0aWNhbEFsaWdubWVudC50b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2ZXJ0aWNhbEFsaWduID09PSBhbGlnbm1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcblxuICAgIHRvZ2dsZU1hcmsoZWRpdG9yOiBUaGVFZGl0b3IsIGlzQWN0aXZlOiBib29sZWFuLCBmb3JtYXQ6IHN0cmluZyB8IHN0cmluZ1tdLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiA9IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIFRhYmxlRWRpdG9yLmhhbmRsZVNlbGVjdGVkQ2VsbHMoZWRpdG9yLCBhdCA9PiB7XG4gICAgICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnVuc2V0Tm9kZXMoZWRpdG9yLCBmb3JtYXQsIHtcbiAgICAgICAgICAgICAgICAgICAgYXQsXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoOiBUZXh0LmlzVGV4dCxcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQ6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICB7IFtmb3JtYXQgYXMgc3RyaW5nXTogdmFsdWUgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDogVGV4dC5pc1RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGxpdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGNsZWFyTWFyayhlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICByZXR1cm4gVGFibGVFZGl0b3IuaGFuZGxlU2VsZWN0ZWRDZWxscyhlZGl0b3IsIChjZWxsUGF0aCwgY2VsbFJhbmdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bnNldE1hcmtzOiB7IFtrZXkgaW4gTWFya1R5cGVzXT86IG51bGwgfCBzdHJpbmcgfSA9IHt9O1xuICAgICAgICAgICAgTWFya1Byb3BzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICB1bnNldE1hcmtzW2tleV0gPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldE1hcmtzKGVkaXRvciwgdW5zZXRNYXJrcywgY2VsbFJhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGZvcm1hdEJydXNoKGVkaXRvcjogVGhlRWRpdG9yLCBtYXJrczogeyBba2V5IGluIE1hcmtUeXBlc10/OiBhbnkgfSkge1xuICAgICAgICByZXR1cm4gVGFibGVFZGl0b3IuaGFuZGxlU2VsZWN0ZWRDZWxscyhlZGl0b3IsIChjZWxsUGF0aCwgY2VsbFJhbmdlKSA9PiB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldE1hcmtzKGVkaXRvciwgbWFya3MsIGNlbGxSYW5nZSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBoYW5kbGVTZWxlY3RlZENlbGxzKGVkaXRvcjogVGhlRWRpdG9yLCBoYW5kbGU6IChjZWxsUGF0aDogUGF0aCwgY2VsbFJhbmdlOiBSYW5nZSkgPT4gdm9pZCkge1xuICAgICAgICBjb25zdCBjZWxscyA9IFRhYmxlRWRpdG9yLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucyhlZGl0b3IpO1xuICAgICAgICBpZiAoY2VsbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlTm9kZSA9IFRoZVF1ZXJpZXMuZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMudGFibGUpO1xuICAgICAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNlbGwgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyByb3csIGNvbCB9ID0gY2VsbDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVOb2RlWzFdLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxSYW5nZSA9IHsgYW5jaG9yOiBFZGl0b3Iuc3RhcnQoZWRpdG9yLCBjZWxsUGF0aCksIGZvY3VzOiBFZGl0b3IuZW5kKGVkaXRvciwgY2VsbFBhdGgpIH07XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZShjZWxsUGF0aCwgY2VsbFJhbmdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuXG4gICAgaGFzSGVhZGVyUm93KGVkaXRvcjogVGhlRWRpdG9yLCBsb2NhdGlvbj86IExvY2F0aW9uKSB7XG4gICAgICAgIGNvbnN0IFt0YWJsZUVudHJ5XSA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHsgYXQ6IGxvY2F0aW9uLCBtYXRjaDogKG46IEVsZW1lbnQpID0+IG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLnRhYmxlIH0pO1xuICAgICAgICBjb25zdCB0YWJsZUNvbXBvbmVudCA9IEVMRU1FTlRfVE9fQ09NUE9ORU5ULmdldCh0YWJsZUVudHJ5WzBdKSBhcyBUaGVUYWJsZUNvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIHRhYmxlQ29tcG9uZW50LmhlYWRlclJvdztcbiAgICB9LFxuXG4gICAgaGFzSGVhZGVyQ29sdW1uKGVkaXRvcjogVGhlRWRpdG9yLCBsb2NhdGlvbj86IExvY2F0aW9uKSB7XG4gICAgICAgIGNvbnN0IFt0YWJsZUVudHJ5XSA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHsgYXQ6IGxvY2F0aW9uLCBtYXRjaDogKG46IEVsZW1lbnQpID0+IG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLnRhYmxlIH0pO1xuICAgICAgICByZXR1cm4gdGFibGVFbnRyeSAmJiAodGFibGVFbnRyeVswXSBhcyBUYWJsZUVsZW1lbnQpPy5vcHRpb25zPy5oZWFkZXJDb2x1bW47XG4gICAgfSxcblxuICAgIGlzQWN0aXZlSGVhZGVyKGVkaXRvcjogVGhlRWRpdG9yLCBsb2NhdGlvbj86IExvY2F0aW9uKSB7XG4gICAgICAgIGxvY2F0aW9uID0gbG9jYXRpb24gfHwgZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgaWYgKCFUYWJsZUVkaXRvci5oYXNIZWFkZXJSb3coZWRpdG9yLCBsb2NhdGlvbikgJiYgIVRhYmxlRWRpdG9yLmhhc0hlYWRlckNvbHVtbihlZGl0b3IsIGxvY2F0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IsIChsb2NhdGlvbiBhcyBQb2ludCkucGF0aCk7XG4gICAgICAgIGlmIChUYWJsZUVkaXRvci5oYXNIZWFkZXJSb3coZWRpdG9yLCBsb2NhdGlvbikgJiYgcG9zaXRpb24uZ2V0Um93SW5kZXgoKSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFRhYmxlRWRpdG9yLmhhc0hlYWRlckNvbHVtbihlZGl0b3IsIGxvY2F0aW9uKSAmJiBwb3NpdGlvbi5nZXRDb2x1bW5JbmRleCgpID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuXG4gICAgaGFzSGVhZGVyUm93Q2VsbChlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCBpc0hlYWRlclJvdyA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgIG1hdGNoOiBuID0+XG4gICAgICAgICAgICAgICAgRWxlbWVudC5pc0VsZW1lbnQobikgJiZcbiAgICAgICAgICAgICAgICAoKG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLnRhYmxlUm93ICYmIG4uaGVhZGVyKSB8fCAobi50eXBlID09PSBFbGVtZW50S2luZHMudGFibGUgJiYgbi5vcHRpb25zPy5oZWFkZXJSb3cpKVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxscyA9IFRhYmxlRWRpdG9yLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucyhlZGl0b3IpID8/IFtdO1xuICAgICAgICBzb3J0Q2VsbChzZWxlY3RlZENlbGxzKTtcbiAgICAgICAgY29uc3QgaXNDb250YWluSGVhZGVyUm93ID0gISFzZWxlY3RlZENlbGxzICYmIHNlbGVjdGVkQ2VsbHNbMF0ucm93ID09PSAwO1xuXG4gICAgICAgIHJldHVybiBpc0hlYWRlclJvdyAmJiBpc0NvbnRhaW5IZWFkZXJSb3c7XG4gICAgfSxcblxuICAgIGhhc0hlYWRlckNvbHVtbkNlbGwoZWRpdG9yOiBUaGVFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgdGFibGUgPSBUaGVRdWVyaWVzLmdldEFib3ZlQnlUeXBlKGVkaXRvciwgRWxlbWVudEtpbmRzLnRhYmxlKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxscyA9IFRhYmxlRWRpdG9yLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucyhlZGl0b3IpID8/IFtdO1xuICAgICAgICBzb3J0Q2VsbChzZWxlY3RlZENlbGxzKTtcbiAgICAgICAgY29uc3QgaXNDb250YWluSGVhZGVyQ29sdW1uID0gISFzZWxlY3RlZENlbGxzICYmIHNlbGVjdGVkQ2VsbHNbMF0uY29sID09PSAwO1xuICAgICAgICBjb25zdCBpc0hlYWRlckNvbHVtbiA9IHRhYmxlICYmIHRhYmxlWzBdICYmICh0YWJsZVswXSBhcyBUYWJsZUVsZW1lbnQpPy5vcHRpb25zPy5oZWFkZXJDb2x1bW47XG5cbiAgICAgICAgcmV0dXJuIGlzSGVhZGVyQ29sdW1uICYmIGlzQ29udGFpbkhlYWRlckNvbHVtbjtcbiAgICB9LFxuICAgIHNlbGVjdE9yaWdpbkNlbGwoZWRpdG9yOiBUaGVFZGl0b3IsIHRhYmxlOiBUYWJsZUVsZW1lbnQsIHJvd0luZGV4OiBudW1iZXIsIGNvbHVtbkluZGV4OiBudW1iZXIsIGlzU3RhcnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gZ2V0T3JpZ2luQ2VsbCh0YWJsZSwgcm93SW5kZXgsIGNvbHVtbkluZGV4KTtcbiAgICAgICAgaWYgKG9yaWdpbikge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBvcmlnaW4pO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBpc1N0YXJ0ID8gRWRpdG9yLnN0YXJ0KGVkaXRvciwgcGF0aCkgOiBFZGl0b3IuZW5kKGVkaXRvciwgcGF0aCkpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGhhbmRsZUluZGVudChlZGl0b3I6IFRoZUVkaXRvciwgaW5kZW50VHlwZTogSW5kZW50cykge1xuICAgICAgICByZXR1cm4gVGFibGVFZGl0b3IuaGFuZGxlU2VsZWN0ZWRDZWxscyhlZGl0b3IsIChjZWxsUGF0aCwgY2VsbFJhbmdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IChUaGVRdWVyaWVzLmdldE5vZGUoZWRpdG9yLCBjZWxsUGF0aCkgYXMgQ3VzdG9tRWxlbWVudCkuY2hpbGRyZW4gYXMgRWxlbWVudFtdO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IEVsZW1lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2VsbEluZGVudChlZGl0b3IsIGluZGVudFR5cGUsIGNoaWxkLCBbLi4uY2VsbFBhdGgsIGluZGV4XSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG4iXX0=
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvdGFibGUvdGFibGUuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFhLFVBQVUsRUFBRSxJQUFJLEVBQWUsSUFBSSxFQUFtQixNQUFNLE9BQU8sQ0FBQztBQUN6RyxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsWUFBWSxFQUVaLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzFCLHNCQUFzQixFQUN6QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxLQUFLLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFB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RCxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlGO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFpQixFQUFFLFVBQW1CO1FBQy9DLE9BQU8sV0FBVyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUNuRSxNQUFNLFFBQVEsR0FBSSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQW1CLENBQUMsUUFBcUIsQ0FBQztZQUUvRixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFjLEVBQUUsS0FBYSxFQUFFLEVBQUU7b0JBQy9DLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ25FLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBOb2RlRW50cnksIFRyYW5zZm9ybXMsIFRleHQsIFBhdGgsIFJhbmdlLCBOb2RlLCBMb2NhdGlvbiwgUG9pbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBFTEVNRU5UX1RPX0NPTVBPTkVOVCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGFibGVPcHRpb25zLCBUaGVUYWJsZU9wdGlvbnMgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7XG4gICAgQWxpZ25tZW50LFxuICAgIEFMSUdOX0JMT0NLX1RZUEVTLFxuICAgIEVsZW1lbnRLaW5kcyxcbiAgICBJbmRlbnRzLFxuICAgIE1hcmtQcm9wcyxcbiAgICBNYXJrVHlwZXMsXG4gICAgVmVydGljYWxBbGlnbm1lbnQsXG4gICAgVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXG4gICAgU3BlY2lhbEJhY2tncm91bmRDb2xvclxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGhlRWRpdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDdXN0b21FbGVtZW50LCBUYWJsZUNlbGxFbGVtZW50LCBUYWJsZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgaW5zZXJ0VGFibGUsIGluc2VydENvbHVtbiwgaW5zZXJ0Um93LCByZW1vdmVDb2x1bW4sIHJlbW92ZVJvdywgcmVtb3ZlVGFibGUgfSBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgY2xlYXJDZWxsIH0gZnJvbSAnLi90cmFuc2Zvcm1zL2NsZWFyLWNlbGwnO1xuaW1wb3J0IHR5cGUgeyBUaGVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0T3JpZ2luQ2VsbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuLi8uLi90cmFuc2Zvcm1zJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBzZXRDZWxsSW5kZW50LCBzb3J0Q2VsbCB9IGZyb20gJy4vdXRpbHMvaGFuZGxlLWNlbGwnO1xuaW1wb3J0IHsgY3JlYXRlVGFibGVQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMvY3JlYXRlLXRhYmxlLXBvc2l0aW9uJztcbmltcG9ydCB7IFRIRV9FRElUT1JfUFJFVklPVVNfU0VMRUNUSU9OIH0gZnJvbSAnLi4vLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IHNwbGl0Q2VsbCB9IGZyb20gJy4vdXRpbHMvc3BsaXQtY2VsbCc7XG5pbXBvcnQgeyBnZXRUYWJsZVBhdGggfSBmcm9tICcuL3V0aWxzL3RhYmxlLWVudHJ5JztcbmltcG9ydCB7IG1lcmdlQ2VsbCB9IGZyb20gJy4vdXRpbHMvbWVyZ2UtY2VsbCc7XG5cbmV4cG9ydCBjb25zdCBUYWJsZUVkaXRvciA9IHtcbiAgICBpbnNlcnRUYWJsZShlZGl0b3I6IEVkaXRvciwgb3B0aW9uc1BhcmFtPzogVGFibGVPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBuZXcgVGFibGVPcHRpb25zKG9wdGlvbnNQYXJhbSk7XG4gICAgICAgIGluc2VydFRhYmxlKG9wdHMsIGVkaXRvcik7XG4gICAgfSxcblxuICAgIGluc2VydENvbHVtbihlZGl0b3I6IEVkaXRvciwgY291bnQ6IG51bWJlciA9IDEsIGF0PzogbnVtYmVyLCBvcHRpb25zUGFyYW0/OiBUYWJsZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IG5ldyBUYWJsZU9wdGlvbnMob3B0aW9uc1BhcmFtKTtcbiAgICAgICAgaW5zZXJ0Q29sdW1uKG9wdHMsIGVkaXRvciwgY291bnQsIGF0KTtcbiAgICB9LFxuXG4gICAgaW5zZXJ0Um93KGVkaXRvcjogRWRpdG9yLCBjb3VudDogbnVtYmVyID0gMSwgYXQ/OiBudW1iZXIsIG9wdGlvbnNQYXJhbT86IFRhYmxlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRzID0gbmV3IFRhYmxlT3B0aW9ucyhvcHRpb25zUGFyYW0pO1xuICAgICAgICBpbnNlcnRSb3cob3B0cywgZWRpdG9yLCBjb3VudCwgYXQpO1xuICAgIH0sXG5cbiAgICByZW1vdmVUYWJsZShlZGl0b3I6IEVkaXRvciwgb3B0aW9uc1BhcmFtPzogVGFibGVPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBuZXcgVGFibGVPcHRpb25zKG9wdGlvbnNQYXJhbSk7XG4gICAgICAgIHJlbW92ZVRhYmxlKG9wdHMsIGVkaXRvcik7XG4gICAgfSxcblxuICAgIHJlbW92ZVJvdyhlZGl0b3I6IEVkaXRvciwgcm93SW5kZXg/OiBudW1iZXIsIG9wdGlvbnNQYXJhbT86IFRhYmxlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRzID0gbmV3IFRhYmxlT3B0aW9ucyhvcHRpb25zUGFyYW0pO1xuICAgICAgICByZW1vdmVSb3cob3B0cywgZWRpdG9yLCByb3dJbmRleCk7XG4gICAgfSxcblxuICAgIHJlbW92ZUNvbHVtbihlZGl0b3I6IEVkaXRvciwgY29sSW5kZXg/OiBudW1iZXIsIG9wdGlvbnNQYXJhbT86IFRhYmxlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRzID0gbmV3IFRhYmxlT3B0aW9ucyhvcHRpb25zUGFyYW0pO1xuICAgICAgICByZW1vdmVDb2x1bW4ob3B0cywgZWRpdG9yLCBjb2xJbmRleCk7XG4gICAgfSxcblxuICAgIGNsZWFyQ2VsbChlZGl0b3I6IEVkaXRvciwgbm9kZUVudHJ5PzogTm9kZUVudHJ5PEVsZW1lbnQ+LCBvcHRpb25zUGFyYW0/OiBUYWJsZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IG5ldyBUYWJsZU9wdGlvbnMob3B0aW9uc1BhcmFtKTtcbiAgICAgICAgY2xlYXJDZWxsKG9wdHMsIGVkaXRvciwgbm9kZUVudHJ5KTtcbiAgICB9LFxuXG4gICAgc2V0Q2VsbHNCYWNrZ3JvdW5kQ29sb3IoZWRpdG9yOiBFZGl0b3IsIGNvbG9yOiBzdHJpbmcsIGNlbGxzPzogVGFibGVDZWxsRWxlbWVudFtdKSB7XG4gICAgICAgIGlmICghY2VsbHMpIHtcbiAgICAgICAgICAgIGNlbGxzID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxscyhlZGl0b3IpIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZWxscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIOeCueWHu+iHquWumuS5ieminOiJsumdouadv+i+k+WFpeahhuiuvue9ruminOiJsuWAvOaXtu+8jOS8muS4ouWkseeEpueCueWSjOmAieWMuu+8iOebruWJjeaXoOazleWBmuWIsOeEpueCueWQjOaXtuWtmOWcqOS6jue8lui+keWZqOWSjOi+k+WFpeahhu+8iVxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uOiBQb2ludDtcbiAgICAgICAgICAgIGlmICghZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcmFuZ2VSZWYgfSA9IFRIRV9FRElUT1JfUFJFVklPVVNfU0VMRUNUSU9OLmdldChlZGl0b3IpO1xuICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gcmFuZ2VSZWYuY3VycmVudC5hbmNob3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGlzSGVhZGVyID0gVGFibGVFZGl0b3IuaXNBY3RpdmVIZWFkZXIoZWRpdG9yLCBsb2NhdGlvbik7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29sb3IgPT09ICd0cmFuc3BhcmVudCcgfHxcbiAgICAgICAgICAgICAgICAoY29sb3IgPT09IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yICYmIGlzSGVhZGVyKSB8fFxuICAgICAgICAgICAgICAgIChjb2xvciA9PT0gU3BlY2lhbEJhY2tncm91bmRDb2xvciAmJiAhaXNIZWFkZXIpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb2xvciA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgY2VsbCk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCB7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfSwgeyBhdDogY2VsbFBhdGggfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBtZXJnZUNlbGwoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsc1Bvc2l0aW9uID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKGVkaXRvcik7XG4gICAgICAgIHNlbGVjdGVkQ2VsbHNQb3NpdGlvbi5sZW5ndGggJiYgbWVyZ2VDZWxsKGVkaXRvciwgc2VsZWN0ZWRDZWxsc1Bvc2l0aW9uKTtcbiAgICB9LFxuXG4gICAgc3BsaXRDZWxsKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHNwbGl0Q2VsbChlZGl0b3IpO1xuICAgIH0sXG5cbiAgICBzZXRUYWJsZU9wdGlvbnMoZWRpdG9yOiBFZGl0b3IsIG5ld09wdGlvbnM6IFRoZVRhYmxlT3B0aW9ucykge1xuICAgICAgICBjb25zdCB0YWJsZVBvc2l0aW9uID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCB0YWJsZVBhdGggPSBnZXRUYWJsZVBhdGgoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZVBvc2l0aW9uLnRhYmxlO1xuICAgICAgICBjb25zdCBvcHRpb25zID0geyAuLi50YWJsZS5vcHRpb25zLCAuLi5uZXdPcHRpb25zIH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCB7IG9wdGlvbnMgfSwgeyBhdDogdGFibGVQYXRoIH0pO1xuICAgIH0sXG5cbiAgICBzZXRFcXVhbGx5Q29sdW1uKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IFt0YWJsZUVudHJ5XSA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHsgYXQ6IGVkaXRvci5zZWxlY3Rpb24sIG1hdGNoOiAobjogRWxlbWVudCkgPT4gbi50eXBlID09PSBFbGVtZW50S2luZHMudGFibGUgfSk7XG4gICAgICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9ICh0YWJsZUVudHJ5ICYmIHRhYmxlRW50cnlbMF0pIGFzIFRhYmxlRWxlbWVudDtcbiAgICAgICAgaWYgKHRhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgY29sdW1ucyA9IHRhYmxlRWxlbWVudC5jb2x1bW5zO1xuICAgICAgICAgICAgY29uc3Qgc3VtV2lkdGggPSBjb2x1bW5zLnJlZHVjZSgocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWUgKyBjdXJyZW50VmFsdWUud2lkdGg7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIGNvbnN0IGVxdWFsQ29sdW1ucyA9IGNvbHVtbnMubWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB3aWR0aDogc3VtV2lkdGggLyBjb2x1bW5zLmxlbmd0aCB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuc2V0Tm9kZShlZGl0b3IsIHsgY29sdW1uczogZXF1YWxDb2x1bW5zIH0sIHRhYmxlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgY2xlYXJDZWxsc0NvbnRlbnQoZWRpdG9yOiBFZGl0b3IsIGNlbGxzPzogVGFibGVDZWxsRWxlbWVudFtdKSB7XG4gICAgICAgIGlmICghY2VsbHMpIHtcbiAgICAgICAgICAgIGNlbGxzID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxscyhlZGl0b3IpIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZWxscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJsZVBvc2l0aW9uID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICAgICAgaWYgKHRhYmxlUG9zaXRpb24uaXNJblRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFRoZUVkaXRvci5maW5kUGF0aChlZGl0b3IsIGNlbGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVFZGl0b3IuY2xlYXJDZWxsKGVkaXRvciwgW2NlbGwsIHBhdGhdKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBFZGl0b3Iuc3RhcnQoZWRpdG9yLCB0YWJsZVBvc2l0aW9uLmNlbGxFbnRyeVsxXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIGlzQWN0aXZlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IFt0YWJsZV0gPSBFZGl0b3Iubm9kZXMoZWRpdG9yLCB7IG1hdGNoOiBuID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLnRhYmxlIH0pO1xuICAgICAgICByZXR1cm4gISF0YWJsZTtcbiAgICB9LFxuXG4gICAgZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlTm9kZSA9IFRoZVF1ZXJpZXMuZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMudGFibGUpO1xuICAgICAgICBpZiAodGFibGVOb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJsZUNvbXBvbmVudCA9IEVMRU1FTlRfVE9fQ09NUE9ORU5ULmdldCh0YWJsZU5vZGVbMF0pIGFzIFRoZVRhYmxlQ29tcG9uZW50O1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGFibGVDb21wb25lbnQudGFibGVTdG9yZS5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuXG4gICAgZ2V0U2VsZWN0ZWRDZWxscyhlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCB0YWJsZU5vZGUgPSBUaGVRdWVyaWVzLmdldEFib3ZlQnlUeXBlKGVkaXRvciwgRWxlbWVudEtpbmRzLnRhYmxlKTtcbiAgICAgICAgaWYgKHRhYmxlTm9kZSkge1xuICAgICAgICAgICAgY29uc3QgdGFibGVDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQodGFibGVOb2RlWzBdKSBhcyBUaGVUYWJsZUNvbXBvbmVudDtcbiAgICAgICAgICAgIHJldHVybiB0YWJsZUNvbXBvbmVudD8udGFibGVTdG9yZT8uc2VsZWN0ZWRDZWxscyB8fCBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG5cbiAgICBzZXRBbGlnbihlZGl0b3I6IEVkaXRvciwgYWxpZ25tZW50OiBBbGlnbm1lbnQsIGNlbGxzPzogVGFibGVDZWxsRWxlbWVudFtdKSB7XG4gICAgICAgIHJldHVybiBUYWJsZUVkaXRvci5oYW5kbGVTZWxlY3RlZENlbGxzKFxuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgKF8sIGNlbGxSYW5nZSkgPT4ge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjogYWxpZ25tZW50IH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBjZWxsUmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDogKG46IEVsZW1lbnQpID0+IEFMSUdOX0JMT0NLX1RZUEVTLmluY2x1ZGVzKG4udHlwZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2VsbHNcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgc2V0VmVydGljYWxBbGlnbihlZGl0b3I6IFRoZUVkaXRvciwgYWxpZ25tZW50OiBWZXJ0aWNhbEFsaWdubWVudCwgY2VsbHM/OiBUYWJsZUNlbGxFbGVtZW50W10pIHtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IFRhYmxlRWRpdG9yLmhhbmRsZVNlbGVjdGVkQ2VsbHMoXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICBjZWxsUGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIHsgdmVydGljYWxBbGlnbjogYWxpZ25tZW50IH0sIHsgYXQ6IGNlbGxQYXRoIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNlbGxzXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKGlzU2VsZWN0ZWQpO1xuICAgICAgICBpZiAoIWlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxFbnRyeSA9IFRoZVF1ZXJpZXMuZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMudGFibGVDZWxsKTtcbiAgICAgICAgICAgIGlmIChjZWxsRW50cnkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBjZWxsUGF0aF0gPSBjZWxsRW50cnk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICB7IHZlcnRpY2FsQWxpZ246IGFsaWdubWVudCB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdDogY2VsbFBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDogKG46IEVsZW1lbnQpID0+IG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLnRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuXG4gICAgaXNWZXJ0aWNhbEFsaWduQWN0aXZlKGVkaXRvcjogVGhlRWRpdG9yLCBhbGlnbm1lbnQ6IFZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKGVkaXRvcik7XG4gICAgICAgIGlmIChjZWxscykge1xuICAgICAgICAgICAgY29uc3QgbGFzdENlbGwgPSBjZWxsc1tjZWxscy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlTm9kZSA9IFRoZVF1ZXJpZXMuZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMudGFibGUpO1xuICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVOb2RlWzFdLCBsYXN0Q2VsbC5yb3csIGxhc3RDZWxsLmNvbF07XG4gICAgICAgICAgICBjb25zdCBjZWxsID0gTm9kZS5nZXQoZWRpdG9yLCBjZWxsUGF0aCkgYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHsgdmVydGljYWxBbGlnbiB9ID0gY2VsbDtcbiAgICAgICAgICAgIGlmICghdmVydGljYWxBbGlnbiAmJiBhbGlnbm1lbnQgPT09IFZlcnRpY2FsQWxpZ25tZW50LnRvcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZlcnRpY2FsQWxpZ24gPT09IGFsaWdubWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxFbGVtZW50ID0gVGhlUXVlcmllcy5nZXRBYm92ZUJ5VHlwZShlZGl0b3IsIEVsZW1lbnRLaW5kcy50YWJsZUNlbGwpO1xuICAgICAgICAgICAgaWYgKGNlbGxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB2ZXJ0aWNhbEFsaWduIH0gPSBjZWxsRWxlbWVudFswXTtcbiAgICAgICAgICAgICAgICBpZiAoIXZlcnRpY2FsQWxpZ24gJiYgYWxpZ25tZW50ID09PSBWZXJ0aWNhbEFsaWdubWVudC50b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2ZXJ0aWNhbEFsaWduID09PSBhbGlnbm1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcblxuICAgIHRvZ2dsZU1hcmsoZWRpdG9yOiBUaGVFZGl0b3IsIGlzQWN0aXZlOiBib29sZWFuLCBmb3JtYXQ6IHN0cmluZyB8IHN0cmluZ1tdLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiA9IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIFRhYmxlRWRpdG9yLmhhbmRsZVNlbGVjdGVkQ2VsbHMoZWRpdG9yLCBhdCA9PiB7XG4gICAgICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnVuc2V0Tm9kZXMoZWRpdG9yLCBmb3JtYXQsIHtcbiAgICAgICAgICAgICAgICAgICAgYXQsXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoOiBUZXh0LmlzVGV4dCxcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQ6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICB7IFtmb3JtYXQgYXMgc3RyaW5nXTogdmFsdWUgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDogVGV4dC5pc1RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGxpdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGNsZWFyTWFyayhlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICByZXR1cm4gVGFibGVFZGl0b3IuaGFuZGxlU2VsZWN0ZWRDZWxscyhlZGl0b3IsIChjZWxsUGF0aCwgY2VsbFJhbmdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bnNldE1hcmtzOiB7IFtrZXkgaW4gTWFya1R5cGVzXT86IG51bGwgfCBzdHJpbmcgfSA9IHt9O1xuICAgICAgICAgICAgTWFya1Byb3BzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICB1bnNldE1hcmtzW2tleV0gPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldE1hcmtzKGVkaXRvciwgdW5zZXRNYXJrcywgY2VsbFJhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGZvcm1hdEJydXNoKGVkaXRvcjogVGhlRWRpdG9yLCBtYXJrczogeyBba2V5IGluIE1hcmtUeXBlc10/OiBhbnkgfSkge1xuICAgICAgICByZXR1cm4gVGFibGVFZGl0b3IuaGFuZGxlU2VsZWN0ZWRDZWxscyhlZGl0b3IsIChjZWxsUGF0aCwgY2VsbFJhbmdlKSA9PiB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldE1hcmtzKGVkaXRvciwgbWFya3MsIGNlbGxSYW5nZSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBoYW5kbGVTZWxlY3RlZENlbGxzKGVkaXRvcjogVGhlRWRpdG9yLCBoYW5kbGU6IChjZWxsUGF0aDogUGF0aCwgY2VsbFJhbmdlOiBSYW5nZSkgPT4gdm9pZCwgY2VsbHM/OiBUYWJsZUNlbGxFbGVtZW50W10pIHtcbiAgICAgICAgaWYgKCFjZWxscykge1xuICAgICAgICAgICAgY2VsbHMgPSBUYWJsZUVkaXRvci5nZXRTZWxlY3RlZENlbGxzKGVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNlbGxzKSB7XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNlbGxzLmZvckVhY2goY2VsbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxQYXRoID0gVGhlRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgY2VsbCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxSYW5nZSA9IHsgYW5jaG9yOiBFZGl0b3Iuc3RhcnQoZWRpdG9yLCBjZWxsUGF0aCksIGZvY3VzOiBFZGl0b3IuZW5kKGVkaXRvciwgY2VsbFBhdGgpIH07XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZShjZWxsUGF0aCwgY2VsbFJhbmdlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbiAgICBoYXNIZWFkZXJSb3coZWRpdG9yOiBUaGVFZGl0b3IsIGxvY2F0aW9uPzogTG9jYXRpb24pIHtcbiAgICAgICAgY29uc3QgW3RhYmxlRW50cnldID0gRWRpdG9yLm5vZGVzKGVkaXRvciwgeyBhdDogbG9jYXRpb24sIG1hdGNoOiAobjogRWxlbWVudCkgPT4gbi50eXBlID09PSBFbGVtZW50S2luZHMudGFibGUgfSk7XG4gICAgICAgIGNvbnN0IHRhYmxlQ29tcG9uZW50ID0gRUxFTUVOVF9UT19DT01QT05FTlQuZ2V0KHRhYmxlRW50cnlbMF0pIGFzIFRoZVRhYmxlQ29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdGFibGVDb21wb25lbnQuaGVhZGVyUm93O1xuICAgIH0sXG5cbiAgICBoYXNIZWFkZXJDb2x1bW4oZWRpdG9yOiBUaGVFZGl0b3IsIGxvY2F0aW9uPzogTG9jYXRpb24pIHtcbiAgICAgICAgY29uc3QgW3RhYmxlRW50cnldID0gRWRpdG9yLm5vZGVzKGVkaXRvciwgeyBhdDogbG9jYXRpb24sIG1hdGNoOiAobjogRWxlbWVudCkgPT4gbi50eXBlID09PSBFbGVtZW50S2luZHMudGFibGUgfSk7XG4gICAgICAgIHJldHVybiB0YWJsZUVudHJ5ICYmICh0YWJsZUVudHJ5WzBdIGFzIFRhYmxlRWxlbWVudCk/Lm9wdGlvbnM/LmhlYWRlckNvbHVtbjtcbiAgICB9LFxuXG4gICAgaXNBY3RpdmVIZWFkZXIoZWRpdG9yOiBUaGVFZGl0b3IsIGxvY2F0aW9uPzogTG9jYXRpb24pIHtcbiAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiB8fCBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBpZiAoIVRhYmxlRWRpdG9yLmhhc0hlYWRlclJvdyhlZGl0b3IsIGxvY2F0aW9uKSAmJiAhVGFibGVFZGl0b3IuaGFzSGVhZGVyQ29sdW1uKGVkaXRvciwgbG9jYXRpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvciwgKGxvY2F0aW9uIGFzIFBvaW50KS5wYXRoKTtcbiAgICAgICAgaWYgKFRhYmxlRWRpdG9yLmhhc0hlYWRlclJvdyhlZGl0b3IsIGxvY2F0aW9uKSAmJiBwb3NpdGlvbi5nZXRSb3dJbmRleCgpID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoVGFibGVFZGl0b3IuaGFzSGVhZGVyQ29sdW1uKGVkaXRvciwgbG9jYXRpb24pICYmIHBvc2l0aW9uLmdldENvbHVtbkluZGV4KCkgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbiAgICBoYXNIZWFkZXJSb3dDZWxsKGVkaXRvcjogVGhlRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IGlzSGVhZGVyUm93ID0gRWRpdG9yLm5vZGVzKGVkaXRvciwge1xuICAgICAgICAgICAgbWF0Y2g6IG4gPT5cbiAgICAgICAgICAgICAgICBFbGVtZW50LmlzRWxlbWVudChuKSAmJlxuICAgICAgICAgICAgICAgICgobi50eXBlID09PSBFbGVtZW50S2luZHMudGFibGVSb3cgJiYgbi5oZWFkZXIpIHx8IChuLnR5cGUgPT09IEVsZW1lbnRLaW5kcy50YWJsZSAmJiBuLm9wdGlvbnM/LmhlYWRlclJvdykpXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxzID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKGVkaXRvcikgPz8gW107XG4gICAgICAgIHNvcnRDZWxsKHNlbGVjdGVkQ2VsbHMpO1xuICAgICAgICBjb25zdCBpc0NvbnRhaW5IZWFkZXJSb3cgPSAhIXNlbGVjdGVkQ2VsbHMgJiYgc2VsZWN0ZWRDZWxsc1swXS5yb3cgPT09IDA7XG5cbiAgICAgICAgcmV0dXJuIGlzSGVhZGVyUm93ICYmIGlzQ29udGFpbkhlYWRlclJvdztcbiAgICB9LFxuXG4gICAgaGFzSGVhZGVyQ29sdW1uQ2VsbChlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCB0YWJsZSA9IFRoZVF1ZXJpZXMuZ2V0QWJvdmVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMudGFibGUpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxzID0gVGFibGVFZGl0b3IuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKGVkaXRvcikgPz8gW107XG4gICAgICAgIHNvcnRDZWxsKHNlbGVjdGVkQ2VsbHMpO1xuICAgICAgICBjb25zdCBpc0NvbnRhaW5IZWFkZXJDb2x1bW4gPSAhIXNlbGVjdGVkQ2VsbHMgJiYgc2VsZWN0ZWRDZWxsc1swXS5jb2wgPT09IDA7XG4gICAgICAgIGNvbnN0IGlzSGVhZGVyQ29sdW1uID0gdGFibGUgJiYgdGFibGVbMF0gJiYgKHRhYmxlWzBdIGFzIFRhYmxlRWxlbWVudCk/Lm9wdGlvbnM/LmhlYWRlckNvbHVtbjtcblxuICAgICAgICByZXR1cm4gaXNIZWFkZXJDb2x1bW4gJiYgaXNDb250YWluSGVhZGVyQ29sdW1uO1xuICAgIH0sXG4gICAgc2VsZWN0T3JpZ2luQ2VsbChlZGl0b3I6IFRoZUVkaXRvciwgdGFibGU6IFRhYmxlRWxlbWVudCwgcm93SW5kZXg6IG51bWJlciwgY29sdW1uSW5kZXg6IG51bWJlciwgaXNTdGFydDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBvcmlnaW4gPSBnZXRPcmlnaW5DZWxsKHRhYmxlLCByb3dJbmRleCwgY29sdW1uSW5kZXgpO1xuICAgICAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIG9yaWdpbik7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGlzU3RhcnQgPyBFZGl0b3Iuc3RhcnQoZWRpdG9yLCBwYXRoKSA6IEVkaXRvci5lbmQoZWRpdG9yLCBwYXRoKSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgaGFuZGxlSW5kZW50KGVkaXRvcjogVGhlRWRpdG9yLCBpbmRlbnRUeXBlOiBJbmRlbnRzKSB7XG4gICAgICAgIHJldHVybiBUYWJsZUVkaXRvci5oYW5kbGVTZWxlY3RlZENlbGxzKGVkaXRvciwgKGNlbGxQYXRoLCBjZWxsUmFuZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gKFRoZVF1ZXJpZXMuZ2V0Tm9kZShlZGl0b3IsIGNlbGxQYXRoKSBhcyBDdXN0b21FbGVtZW50KS5jaGlsZHJlbiBhcyBFbGVtZW50W107XG5cbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRDZWxsSW5kZW50KGVkaXRvciwgaW5kZW50VHlwZSwgY2hpbGQsIFsuLi5jZWxsUGF0aCwgaW5kZXhdKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufTtcbiJdfQ==