@comet/cms-admin 8.0.0-beta.0 → 8.0.0-beta.2

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 (186) hide show
  1. package/lib/blocks/DamVideoBlock.d.ts.map +1 -1
  2. package/lib/blocks/DamVideoBlock.js +8 -5
  3. package/lib/blocks/InternalLinkBlock.d.ts.map +1 -1
  4. package/lib/blocks/PixelImageBlock.d.ts.map +1 -1
  5. package/lib/blocks/PixelImageBlock.js +18 -16
  6. package/lib/blocks/SvgImageBlock.d.ts.map +1 -1
  7. package/lib/blocks/SvgImageBlock.js +17 -15
  8. package/lib/blocks/context/BlockContext.d.ts +6 -1
  9. package/lib/blocks/context/BlockContext.d.ts.map +1 -1
  10. package/lib/blocks/context/BlockContext.js +2 -2
  11. package/lib/blocks/context/BlockContextProvider.d.ts +2 -1
  12. package/lib/blocks/context/BlockContextProvider.d.ts.map +1 -1
  13. package/lib/blocks/context/BlockContextProvider.js +1 -1
  14. package/lib/blocks/context/useBlockContext.d.ts +2 -1
  15. package/lib/blocks/context/useBlockContext.d.ts.map +1 -1
  16. package/lib/blocks/context/useBlockContext.js +16 -1
  17. package/lib/blocks/createLinkBlock.js +1 -1
  18. package/lib/blocks/createSeoBlock.js +4 -4
  19. package/lib/blocks/createTextImageBlock.d.ts.map +1 -1
  20. package/lib/blocks/createTextImageBlock.js +4 -3
  21. package/lib/blocks/factories/createCompositeBlock.d.ts.map +1 -1
  22. package/lib/blocks/factories/createCompositeBlock.js +3 -1
  23. package/lib/blocks/factories/createOneOfBlock.js +7 -5
  24. package/lib/blocks/helpers/composeBlocks/composeBlocks.d.ts +3 -2
  25. package/lib/blocks/helpers/composeBlocks/composeBlocks.d.ts.map +1 -1
  26. package/lib/blocks/image/EditImageDialog.js +7 -6
  27. package/lib/blocks/rte/extension/CmsLink/createCmsLinkToolbarButton.d.ts.map +1 -1
  28. package/lib/blocks/rte/extension/CmsLink/createCmsLinkToolbarButton.js +33 -24
  29. package/lib/blocks/seo/useSeoTagGeneration.js +4 -4
  30. package/lib/blocks/types.d.ts +3 -3
  31. package/lib/blocks/types.d.ts.map +1 -1
  32. package/lib/blocks/types.js +0 -1
  33. package/lib/common/DropdownMenuItem.sc.d.ts +1 -1
  34. package/lib/common/SearchInput.js +9 -3
  35. package/lib/common/header/about/build-information/buildInformation.d.ts +6 -0
  36. package/lib/common/header/about/build-information/buildInformation.d.ts.map +1 -0
  37. package/lib/common/header/about/build-information/buildInformation.js +5 -0
  38. package/lib/common/header/about/build-information/useBuildInformation.d.ts +1 -1
  39. package/lib/common/header/about/build-information/useBuildInformation.d.ts.map +1 -1
  40. package/lib/common/header/about/build-information/useBuildInformation.js +2 -3
  41. package/lib/common/useSaveState.d.ts.map +1 -1
  42. package/lib/common/useSaveState.js +18 -13
  43. package/lib/config/CometConfigContext.d.ts +28 -0
  44. package/lib/config/CometConfigContext.d.ts.map +1 -0
  45. package/lib/{blocks/CmsBlockContextProvider.js → config/CometConfigContext.js} +31 -13
  46. package/lib/contentLanguage/contentLanguageConfig.d.ts +6 -0
  47. package/lib/contentLanguage/contentLanguageConfig.d.ts.map +1 -0
  48. package/lib/contentLanguage/contentLanguageConfig.js +18 -0
  49. package/lib/contentLanguage/useContentLanguage.d.ts +7 -0
  50. package/lib/contentLanguage/useContentLanguage.d.ts.map +1 -0
  51. package/lib/contentLanguage/useContentLanguage.js +13 -0
  52. package/lib/cronJobs/CronJobsGrid.d.ts.map +1 -1
  53. package/lib/cronJobs/CronJobsGrid.js +1 -0
  54. package/lib/cronJobs/JobsGrid.d.ts.map +1 -1
  55. package/lib/cronJobs/JobsGrid.js +1 -0
  56. package/lib/dam/DamPage.js +3 -3
  57. package/lib/dam/DataGrid/DamContextMenu.js +4 -3
  58. package/lib/dam/DataGrid/FolderDataGrid.js +2 -2
  59. package/lib/dam/DataGrid/fileUpload/useDamFileUpload.d.ts.map +1 -1
  60. package/lib/dam/DataGrid/fileUpload/useDamFileUpload.js +11 -5
  61. package/lib/dam/DataGrid/label/DamItemLabelColumn.d.ts.map +1 -1
  62. package/lib/dam/DataGrid/label/DamItemLabelColumn.js +26 -23
  63. package/lib/dam/FileForm/Duplicates.d.ts.map +1 -1
  64. package/lib/dam/FileForm/Duplicates.js +5 -9
  65. package/lib/dam/FileForm/EditFile.d.ts.map +1 -1
  66. package/lib/dam/FileForm/EditFile.js +9 -9
  67. package/lib/dam/FileForm/FileSettingsFields.js +8 -8
  68. package/lib/dam/FileForm/ReplaceFileButton.d.ts.map +1 -1
  69. package/lib/dam/FileForm/ReplaceFileButton.js +8 -4
  70. package/lib/dam/MoveDamItemDialog/MoveDamItemDialog.d.ts.map +1 -1
  71. package/lib/dam/MoveDamItemDialog/MoveDamItemDialog.js +2 -3
  72. package/lib/dam/blocks/DamFileDownloadLinkBlock.d.ts.map +1 -1
  73. package/lib/dam/config/DamScopeProvider.js +2 -2
  74. package/lib/dam/config/{DamConfigContext.d.ts → damConfig.d.ts} +5 -2
  75. package/lib/dam/config/damConfig.d.ts.map +1 -0
  76. package/lib/dam/config/damConfig.js +14 -0
  77. package/lib/dam/config/useDamAcceptedMimeTypes.js +2 -2
  78. package/lib/dashboard/widgets/LatestBuildsDashboardWidget.js +2 -2
  79. package/lib/dependencies/DependencyList.d.ts.map +1 -1
  80. package/lib/dependencies/DependencyList.js +4 -2
  81. package/lib/dependencies/DependencyList.sc.d.ts +1 -1
  82. package/lib/dependencies/dependenciesConfig.d.ts +10 -0
  83. package/lib/dependencies/dependenciesConfig.d.ts.map +1 -0
  84. package/lib/dependencies/dependenciesConfig.js +16 -0
  85. package/lib/form/file/FinalFormFileUpload.d.ts.map +1 -1
  86. package/lib/form/file/FinalFormFileUpload.js +3 -3
  87. package/lib/form/file/chooseFile/ChooseFileDialog.d.ts.map +1 -1
  88. package/lib/form/file/chooseFile/ChooseFileDialog.js +37 -34
  89. package/lib/imgproxy/imgproxyConfig.d.ts +6 -0
  90. package/lib/imgproxy/imgproxyConfig.d.ts.map +1 -0
  91. package/lib/imgproxy/imgproxyConfig.js +14 -0
  92. package/lib/index.d.ts +7 -12
  93. package/lib/index.d.ts.map +1 -1
  94. package/lib/index.js +20 -75
  95. package/lib/pages/createEditPageNode.d.ts.map +1 -1
  96. package/lib/pages/createEditPageNode.js +3 -3
  97. package/lib/pages/createUsePage.d.ts.map +1 -1
  98. package/lib/pages/createUsePage.js +5 -10
  99. package/lib/pages/pageTree/MovePageMenuItem.d.ts.map +1 -1
  100. package/lib/pages/pageTree/MovePageMenuItem.js +5 -3
  101. package/lib/pages/pageTree/PageActions.d.ts.map +1 -1
  102. package/lib/pages/pageTree/PageActions.js +5 -4
  103. package/lib/pages/pageTree/PageLabel.d.ts.map +1 -1
  104. package/lib/pages/pageTree/PageLabel.js +8 -8
  105. package/lib/pages/pageTree/PageTree.js +11 -11
  106. package/lib/pages/pageTree/PageTreeContext.d.ts +0 -2
  107. package/lib/pages/pageTree/PageTreeContext.d.ts.map +1 -1
  108. package/lib/pages/pageTree/PageTreeRow.d.ts.map +1 -1
  109. package/lib/pages/pageTree/PageTreeRow.js +3 -3
  110. package/lib/pages/pageTree/PageTypeIcon.d.ts.map +1 -1
  111. package/lib/pages/pageTree/PageTypeIcon.js +3 -3
  112. package/lib/pages/pageTree/useCopyPastePages/sendPages.d.ts +4 -5
  113. package/lib/pages/pageTree/useCopyPastePages/sendPages.d.ts.map +1 -1
  114. package/lib/pages/pageTree/useCopyPastePages/sendPages.js +20 -18
  115. package/lib/pages/pageTree/useCopyPastePages.d.ts.map +1 -1
  116. package/lib/pages/pageTree/useCopyPastePages.js +8 -5
  117. package/lib/pages/pageTreeConfig.d.ts +13 -0
  118. package/lib/pages/pageTreeConfig.d.ts.map +1 -0
  119. package/lib/pages/pageTreeConfig.js +14 -0
  120. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.d.ts.map +1 -1
  121. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.js +11 -14
  122. package/lib/pages/pagesPage/ConfirmPageActionDialog.d.ts.map +1 -1
  123. package/lib/pages/pagesPage/ConfirmPageActionDialog.js +1 -5
  124. package/lib/pages/pagesPage/PagesPage.d.ts +1 -3
  125. package/lib/pages/pagesPage/PagesPage.d.ts.map +1 -1
  126. package/lib/pages/pagesPage/PagesPage.js +4 -6
  127. package/lib/pages/pagesPage/PagesPageActionToolbar.sc.d.ts +2 -2
  128. package/lib/pages/usePageTreeDocumentAnchors.js +3 -3
  129. package/lib/preview/block/BlockPreview.d.ts.map +1 -1
  130. package/lib/preview/block/BlockPreview.js +6 -8
  131. package/lib/preview/common/ToggleButton.d.ts +1 -1
  132. package/lib/preview/site/SitePreview.js +1 -1
  133. package/lib/preview/site/SitePreview.sc.d.ts +1 -1
  134. package/lib/redirects/RedirectsGrid.d.ts.map +1 -1
  135. package/lib/redirects/RedirectsGrid.js +3 -2
  136. package/lib/redirects/createRedirectsPage.d.ts.map +1 -1
  137. package/lib/redirects/createRedirectsPage.js +26 -2
  138. package/lib/{sitesConfig/SitesConfigContext.d.ts → siteConfigs/siteConfigsConfig.d.ts} +2 -3
  139. package/lib/siteConfigs/siteConfigsConfig.d.ts.map +1 -0
  140. package/lib/siteConfigs/siteConfigsConfig.js +5 -0
  141. package/lib/{sitesConfig → siteConfigs}/useSiteConfig.d.ts +1 -1
  142. package/lib/{sitesConfig → siteConfigs}/useSiteConfig.d.ts.map +1 -1
  143. package/lib/{sitesConfig → siteConfigs}/useSiteConfig.js +2 -2
  144. package/lib/siteConfigs/useSiteConfigs.d.ts +3 -0
  145. package/lib/siteConfigs/useSiteConfigs.d.ts.map +1 -0
  146. package/lib/siteConfigs/useSiteConfigs.js +14 -0
  147. package/package.json +23 -20
  148. package/lib/blocks/CmsBlockContextProvider.d.ts +0 -28
  149. package/lib/blocks/CmsBlockContextProvider.d.ts.map +0 -1
  150. package/lib/blocks/useCmsBlockContext.d.ts +0 -4
  151. package/lib/blocks/useCmsBlockContext.d.ts.map +0 -1
  152. package/lib/blocks/useCmsBlockContext.js +0 -10
  153. package/lib/common/header/about/build-information/BuildInformationContext.d.ts +0 -7
  154. package/lib/common/header/about/build-information/BuildInformationContext.d.ts.map +0 -1
  155. package/lib/common/header/about/build-information/BuildInformationContext.js +0 -8
  156. package/lib/common/header/about/build-information/BuildInformationProvider.d.ts +0 -8
  157. package/lib/common/header/about/build-information/BuildInformationProvider.d.ts.map +0 -1
  158. package/lib/common/header/about/build-information/BuildInformationProvider.js +0 -16
  159. package/lib/dam/config/DamConfigContext.d.ts.map +0 -1
  160. package/lib/dam/config/DamConfigContext.js +0 -8
  161. package/lib/dam/config/DamConfigProvider.d.ts +0 -8
  162. package/lib/dam/config/DamConfigProvider.d.ts.map +0 -1
  163. package/lib/dam/config/DamConfigProvider.js +0 -25
  164. package/lib/dam/config/useDamConfig.d.ts +0 -3
  165. package/lib/dam/config/useDamConfig.d.ts.map +0 -1
  166. package/lib/dam/config/useDamConfig.js +0 -12
  167. package/lib/dependencies/DependenciesConfig.d.ts +0 -11
  168. package/lib/dependencies/DependenciesConfig.d.ts.map +0 -1
  169. package/lib/dependencies/DependenciesConfig.js +0 -20
  170. package/lib/locale/LocaleContext.d.ts +0 -7
  171. package/lib/locale/LocaleContext.d.ts.map +0 -1
  172. package/lib/locale/LocaleContext.js +0 -12
  173. package/lib/locale/LocaleProvider.d.ts +0 -8
  174. package/lib/locale/LocaleProvider.d.ts.map +0 -1
  175. package/lib/locale/LocaleProvider.js +0 -18
  176. package/lib/locale/useLocale.d.ts +0 -7
  177. package/lib/locale/useLocale.d.ts.map +0 -1
  178. package/lib/locale/useLocale.js +0 -14
  179. package/lib/sitesConfig/SitesConfigContext.d.ts.map +0 -1
  180. package/lib/sitesConfig/SitesConfigContext.js +0 -8
  181. package/lib/sitesConfig/SitesConfigProvider.d.ts +0 -8
  182. package/lib/sitesConfig/SitesConfigProvider.d.ts.map +0 -1
  183. package/lib/sitesConfig/SitesConfigProvider.js +0 -16
  184. package/lib/sitesConfig/useSitesConfig.d.ts +0 -3
  185. package/lib/sitesConfig/useSitesConfig.d.ts.map +0 -1
  186. package/lib/sitesConfig/useSitesConfig.js +0 -15
@@ -47,10 +47,10 @@ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.
47
47
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
48
48
  function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
49
49
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
50
- var MOVE_PAGE_TREE_NODES_BY_POS = (0, _graphqlTag["default"])(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n mutation MovePageTreeNodesByPos($ids: [ID!]!, $input: MovePageTreeNodesByPosInput!) {\n movePageTreeNodesByPos(ids: $ids, input: $input) {\n id\n parentId\n pos\n slug\n path\n }\n }\n"])));
51
- var MOVE_PAGE_TREE_NODES_BY_NEIGHBOURS = (0, _graphqlTag["default"])(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n mutation MovePageTreeNodesByNeighbour($ids: [ID!]!, $input: MovePageTreeNodesByNeighbourInput!) {\n movePageTreeNodesByNeighbour(ids: $ids, input: $input) {\n id\n parentId\n pos\n slug\n path\n }\n }\n"])));
52
- var RESET_SLUG = (0, _graphqlTag["default"])(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n mutation ResetSlug($id: ID!, $slug: String!) {\n updatePageTreeNodeSlug(id: $id, slug: $slug) {\n id\n slug\n }\n }\n"])));
53
- var PAGES_CACHE_QUERY = (0, _graphqlTag["default"])(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n query PagesCache($contentScope: PageTreeNodeScopeInput!, $category: String!) {\n pages: pageTreeNodeList(scope: $contentScope, category: $category) {\n id\n parentId\n pos\n }\n }\n"])));
50
+ var movePageTreeNodesByPositionMutation = (0, _graphqlTag["default"])(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n mutation MovePageTreeNodesByPos($ids: [ID!]!, $input: MovePageTreeNodesByPosInput!) {\n movePageTreeNodesByPos(ids: $ids, input: $input) {\n id\n parentId\n pos\n slug\n path\n }\n }\n"])));
51
+ var movePageTreeNodesByNeighboursMutation = (0, _graphqlTag["default"])(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n mutation MovePageTreeNodesByNeighbour($ids: [ID!]!, $input: MovePageTreeNodesByNeighbourInput!) {\n movePageTreeNodesByNeighbour(ids: $ids, input: $input) {\n id\n parentId\n pos\n slug\n path\n }\n }\n"])));
52
+ var resetSlugMutation = (0, _graphqlTag["default"])(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n mutation ResetSlug($id: ID!, $slug: String!) {\n updatePageTreeNodeSlug(id: $id, slug: $slug) {\n id\n slug\n }\n }\n"])));
53
+ var pagesCacheQuery = (0, _graphqlTag["default"])(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n query PagesCache($contentScope: PageTreeNodeScopeInput!, $category: String!) {\n pages: pageTreeNodeList(scope: $contentScope, category: $category) {\n id\n parentId\n pos\n }\n }\n"])));
54
54
 
55
55
  // @TODO: Calculate dynamically
56
56
  var levelOffsetPx = 50;
@@ -134,7 +134,7 @@ var PageTree = function PageTree(_ref, ref) {
134
134
  ids = _ref2.ids, parentId = _ref2.parentId, position = _ref2.position;
135
135
  _context.next = 3;
136
136
  return client.mutate({
137
- mutation: MOVE_PAGE_TREE_NODES_BY_POS,
137
+ mutation: movePageTreeNodesByPositionMutation,
138
138
  variables: {
139
139
  ids: ids,
140
140
  input: {
@@ -173,7 +173,7 @@ var PageTree = function PageTree(_ref, ref) {
173
173
  return;
174
174
  }
175
175
  var pagesQueryData = proxy.readQuery({
176
- query: PAGES_CACHE_QUERY,
176
+ query: pagesCacheQuery,
177
177
  variables: {
178
178
  contentScope: scope,
179
179
  category: category
@@ -188,7 +188,7 @@ var PageTree = function PageTree(_ref, ref) {
188
188
  return updatedPageData;
189
189
  });
190
190
  proxy.writeQuery({
191
- query: PAGES_CACHE_QUERY,
191
+ query: pagesCacheQuery,
192
192
  data: {
193
193
  pages: updatedPages
194
194
  }
@@ -214,7 +214,7 @@ var PageTree = function PageTree(_ref, ref) {
214
214
  ids = _ref5.ids, parentId = _ref5.parentId, afterId = _ref5.afterId, beforeId = _ref5.beforeId;
215
215
  _context2.next = 3;
216
216
  return client.mutate({
217
- mutation: MOVE_PAGE_TREE_NODES_BY_NEIGHBOURS,
217
+ mutation: movePageTreeNodesByNeighboursMutation,
218
218
  variables: {
219
219
  ids: ids,
220
220
  input: {
@@ -310,7 +310,7 @@ var PageTree = function PageTree(_ref, ref) {
310
310
  case 4:
311
311
  _context3.next = 6;
312
312
  return client.mutate({
313
- mutation: RESET_SLUG,
313
+ mutation: resetSlugMutation,
314
314
  variables: {
315
315
  id: pageToUndo.id,
316
316
  slug: pageToUndo.slug
@@ -471,7 +471,7 @@ var Root = /*#__PURE__*/(0, _styles.styled)("div", process.env.NODE_ENV === "pro
471
471
  styles: "height:100%;display:flex;flex-direction:column"
472
472
  } : {
473
473
  name: "kdbhus",
474
- styles: "height:100%;display:flex;flex-direction:column/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9wYWdlVHJlZS9QYWdlVHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbVowQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvcGFnZXMvcGFnZVRyZWUvUGFnZVRyZWUudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBPYnNlcnZhYmxlUXVlcnksIHVzZUFwb2xsb0NsaWVudCB9IGZyb20gXCJAYXBvbGxvL2NsaWVudFwiO1xuaW1wb3J0IHsgdHlwZSBJRWRpdERpYWxvZ0FwaSwgVW5kb1NuYWNrYmFyLCB1c2VTbmFja2JhckFwaSB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IGdxbCBmcm9tIFwiZ3JhcGhxbC10YWdcIjtcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2guaXNlcXVhbFwiO1xuaW1wb3J0IHtcbiAgICB0eXBlIERpc3BhdGNoLFxuICAgIGZvcndhcmRSZWYsXG4gICAgdHlwZSBGb3J3YXJkUmVmUmVuZGVyRnVuY3Rpb24sXG4gICAgdHlwZSBTZXRTdGF0ZUFjdGlvbixcbiAgICB1c2VDYWxsYmFjayxcbiAgICB1c2VFZmZlY3QsXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgICB1c2VNZW1vLFxuICAgIHVzZVJlZixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCBBdXRvU2l6ZXIsIHsgdHlwZSBTaXplIH0gZnJvbSBcInJlYWN0LXZpcnR1YWxpemVkLWF1dG8tc2l6ZXJcIjtcbmltcG9ydCB7IHR5cGUgQWxpZ24sIEZpeGVkU2l6ZUxpc3QgYXMgTGlzdCB9IGZyb20gXCJyZWFjdC13aW5kb3dcIjtcbmltcG9ydCB7IHVzZURlYm91bmNlZENhbGxiYWNrIH0gZnJvbSBcInVzZS1kZWJvdW5jZVwiO1xuXG5pbXBvcnQgeyB1c2VDb250ZW50U2NvcGUgfSBmcm9tIFwiLi4vLi4vY29udGVudFNjb3BlL1Byb3ZpZGVyXCI7XG5pbXBvcnQgeyB0eXBlIEdRTFBhZ2VzUXVlcnksIHR5cGUgR1FMUGFnZXNRdWVyeVZhcmlhYmxlcyB9IGZyb20gXCIuLi9wYWdlc1BhZ2UvY3JlYXRlUGFnZXNRdWVyeVwiO1xuaW1wb3J0IHtcbiAgICB0eXBlIEdRTE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NNdXRhdGlvbixcbiAgICB0eXBlIEdRTFBhZ2VzQ2FjaGVRdWVyeSxcbiAgICB0eXBlIEdRTFBhZ2VzQ2FjaGVRdWVyeVZhcmlhYmxlcyxcbiAgICB0eXBlIEdRTFBhZ2VTbHVnUGF0aEZyYWdtZW50LFxuICAgIHR5cGUgR1FMUmVzZXRTbHVnTXV0YXRpb24sXG4gICAgdHlwZSBHUUxSZXNldFNsdWdNdXRhdGlvblZhcmlhYmxlcyxcbn0gZnJvbSBcIi4vUGFnZVRyZWUuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgUGFnZVRyZWVEcmFnTGF5ZXIgZnJvbSBcIi4vUGFnZVRyZWVEcmFnTGF5ZXJcIjtcbmltcG9ydCBQYWdlVHJlZVJvdywgeyB0eXBlIERyb3BUYXJnZXQsIHR5cGUgUGFnZVRyZWVEcmFnT2JqZWN0IH0gZnJvbSBcIi4vUGFnZVRyZWVSb3dcIjtcbmltcG9ydCB7IHR5cGUgRHJvcEluZm8sIFBhZ2VUcmVlU2VydmljZSB9IGZyb20gXCIuL1BhZ2VUcmVlU2VydmljZVwiO1xuaW1wb3J0IHsgdXNlRG5kV2luZG93U2Nyb2xsIH0gZnJvbSBcIi4vdXNlRG5kV2luZG93U2Nyb2xsL3VzZURuZFdpbmRvd1Njcm9sbFwiO1xuaW1wb3J0IHsgdHlwZSBQYWdlVHJlZVBhZ2UgfSBmcm9tIFwiLi91c2VQYWdlVHJlZVwiO1xuXG5pbnRlcmZhY2UgUGFnZVRyZWVQcm9wcyB7XG4gICAgcGFnZXM6IFBhZ2VUcmVlUGFnZVtdO1xuICAgIGVkaXREaWFsb2dBcGk6IElFZGl0RGlhbG9nQXBpO1xuICAgIHRvZ2dsZUV4cGFuZDogKHBhZ2VJZDogc3RyaW5nKSA9PiB2b2lkO1xuICAgIG9uU2VsZWN0Q2hhbmdlZDogKHBhZ2VJZDogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgIHNpdGVVcmw6IHN0cmluZztcbn1cblxudHlwZSBQYWdlVHJlZVJlZkFwaSA9IHsgc2Nyb2xsVG9JdGVtOiBMaXN0W1wic2Nyb2xsVG9JdGVtXCJdIH07XG5cbmNvbnN0IE1PVkVfUEFHRV9UUkVFX05PREVTX0JZX1BPUyA9IGdxbGBcbiAgICBtdXRhdGlvbiBNb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zKCRpZHM6IFtJRCFdISwgJGlucHV0OiBNb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zSW5wdXQhKSB7XG4gICAgICAgIG1vdmVQYWdlVHJlZU5vZGVzQnlQb3MoaWRzOiAkaWRzLCBpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgcGFyZW50SWRcbiAgICAgICAgICAgIHBvc1xuICAgICAgICAgICAgc2x1Z1xuICAgICAgICAgICAgcGF0aFxuICAgICAgICB9XG4gICAgfVxuYDtcblxuY29uc3QgTU9WRV9QQUdFX1RSRUVfTk9ERVNfQllfTkVJR0hCT1VSUyA9IGdxbGBcbiAgICBtdXRhdGlvbiBNb3ZlUGFnZVRyZWVOb2Rlc0J5TmVpZ2hib3VyKCRpZHM6IFtJRCFdISwgJGlucHV0OiBNb3ZlUGFnZVRyZWVOb2Rlc0J5TmVpZ2hib3VySW5wdXQhKSB7XG4gICAgICAgIG1vdmVQYWdlVHJlZU5vZGVzQnlOZWlnaGJvdXIoaWRzOiAkaWRzLCBpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgcGFyZW50SWRcbiAgICAgICAgICAgIHBvc1xuICAgICAgICAgICAgc2x1Z1xuICAgICAgICAgICAgcGF0aFxuICAgICAgICB9XG4gICAgfVxuYDtcblxuY29uc3QgUkVTRVRfU0xVRyA9IGdxbGBcbiAgICBtdXRhdGlvbiBSZXNldFNsdWcoJGlkOiBJRCEsICRzbHVnOiBTdHJpbmchKSB7XG4gICAgICAgIHVwZGF0ZVBhZ2VUcmVlTm9kZVNsdWcoaWQ6ICRpZCwgc2x1ZzogJHNsdWcpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBzbHVnXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5jb25zdCBQQUdFU19DQUNIRV9RVUVSWSA9IGdxbGBcbiAgICBxdWVyeSBQYWdlc0NhY2hlKCRjb250ZW50U2NvcGU6IFBhZ2VUcmVlTm9kZVNjb3BlSW5wdXQhLCAkY2F0ZWdvcnk6IFN0cmluZyEpIHtcbiAgICAgICAgcGFnZXM6IHBhZ2VUcmVlTm9kZUxpc3Qoc2NvcGU6ICRjb250ZW50U2NvcGUsIGNhdGVnb3J5OiAkY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBwYXJlbnRJZFxuICAgICAgICAgICAgcG9zXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG4vLyBAVE9ETzogQ2FsY3VsYXRlIGR5bmFtaWNhbGx5XG5jb25zdCBsZXZlbE9mZnNldFB4ID0gNTA7XG5cbmNvbnN0IFBhZ2VUcmVlOiBGb3J3YXJkUmVmUmVuZGVyRnVuY3Rpb248UGFnZVRyZWVSZWZBcGksIFBhZ2VUcmVlUHJvcHM+ID0gKFxuICAgIHsgcGFnZXMsIGVkaXREaWFsb2dBcGksIHRvZ2dsZUV4cGFuZCwgb25TZWxlY3RDaGFuZ2VkLCBjYXRlZ29yeSwgc2l0ZVVybCB9LFxuICAgIHJlZixcbikgPT4ge1xuICAgIGNvbnN0IGNsaWVudCA9IHVzZUFwb2xsb0NsaWVudCgpO1xuICAgIGNvbnN0IG5ld1BhZ2VJZHMgPSB1c2VSZWY8c3RyaW5nW10+KFtdKTtcblxuICAgIGNvbnN0IHF1ZXJpZXMgPSBjbGllbnQuZ2V0T2JzZXJ2YWJsZVF1ZXJpZXMoKTtcbiAgICBjb25zdCBwYWdlc1F1ZXJ5ID0gQXJyYXkuZnJvbShxdWVyaWVzLnZhbHVlcygpKS5maW5kKChxdWVyeSkgPT4gcXVlcnkucXVlcnlOYW1lID09PSBcIlBhZ2VzXCIpIGFzXG4gICAgICAgIHwgT2JzZXJ2YWJsZVF1ZXJ5PEdRTFBhZ2VzUXVlcnksIEdRTFBhZ2VzUXVlcnlWYXJpYWJsZXM+XG4gICAgICAgIHwgdW5kZWZpbmVkO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHBhZ2VzUXVlcnkpIHtcbiAgICAgICAgICAgIGNsaWVudC5jYWNoZS53YXRjaDxHUUxQYWdlc1F1ZXJ5LCBHUUxQYWdlc1F1ZXJ5VmFyaWFibGVzPih7XG4gICAgICAgICAgICAgICAgcXVlcnk6IHBhZ2VzUXVlcnkucXVlcnksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiBwYWdlc1F1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogKG5ld1BhZ2VzUXVlcnksIHByZXZpb3VzUGFnZXNRdWVyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3UGFnZXNRdWVyeSAmJiBwcmV2aW91c1BhZ2VzUXVlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUGFnZUlkcyA9IHByZXZpb3VzUGFnZXNRdWVyeS5yZXN1bHQ/LnBhZ2VzPy5tYXAoKHBhZ2UpID0+IHBhZ2UuaWQpID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFnZUlkcy5jdXJyZW50ID0gbmV3UGFnZXNRdWVyeS5yZXN1bHQ/LnBhZ2VzPy5tYXAoKHBhZ2UpID0+IHBhZ2UuaWQpLmZpbHRlcigoaWQpID0+ICFleGlzdGluZ1BhZ2VJZHMuaW5jbHVkZXMoaWQpKSA/PyBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgbmV3UGFnZUlkcyB0byBwcmV2ZW50IHNsaWRlSW4gb24gZXZlcnkgcmVyZW5kZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdQYWdlSWRzLmN1cnJlbnQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcHRpbWlzdGljOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCBbY2xpZW50LmNhY2hlLCBwYWdlc1F1ZXJ5XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobmV3UGFnZUlkcy5jdXJyZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFnZXMuZmluZEluZGV4KChwYWdlKSA9PiBuZXdQYWdlSWRzLmN1cnJlbnQuaW5jbHVkZXMocGFnZS5pZCkpO1xuICAgICAgICAgICAgcmVmTGlzdC5jdXJyZW50Py5zY3JvbGxUb0l0ZW0oaW5kZXgsIFwic21hcnRcIik7XG4gICAgICAgIH1cbiAgICB9LCBbcGFnZXNdKTtcblxuICAgIGNvbnN0IHBhZ2VUcmVlU2VydmljZSA9IHVzZU1lbW8oKCkgPT4gbmV3IFBhZ2VUcmVlU2VydmljZShsZXZlbE9mZnNldFB4LCBwYWdlcyksIFtwYWdlc10pO1xuICAgIGNvbnN0IHsgc2NvcGUgfSA9IHVzZUNvbnRlbnRTY29wZSgpO1xuICAgIGNvbnN0IHNuYWNrYmFyQXBpID0gdXNlU25hY2tiYXJBcGkoKTtcblxuICAgIGNvbnN0IGRlYm91bmNlZFNldEhvdmVyU3RhdGUgPSB1c2VEZWJvdW5jZWRDYWxsYmFjayhcbiAgICAgICAgKHNldEhvdmVyU3RhdGU6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPERyb3BJbmZvIHwgdW5kZWZpbmVkPj4sIG5ld0hvdmVyU3RhdGU6IERyb3BJbmZvIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgICBzZXRIb3ZlclN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNFcXVhbChuZXdIb3ZlclN0YXRlLCBwcmV2U3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2U3RhdGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0hvdmVyU3RhdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIDUsXG4gICAgKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkUGFnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHBhZ2VzLmZpbHRlcigocGFnZSkgPT4gcGFnZS5zZWxlY3RlZCk7XG4gICAgfSwgW3BhZ2VzXSk7XG5cbiAgICBjb25zdCBtb3ZlQnlQb3NSZXF1ZXN0ID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIC8vIEBUT0RPOiBoYW5kbGUgcGF0aCBjb2xsaXNpb25zIHdoZW4gbW92aW5nIHBhZ2VzXG4gICAgICAgIGFzeW5jICh7IGlkcywgcGFyZW50SWQsIHBvc2l0aW9uIH06IHsgaWRzOiBzdHJpbmdbXTsgcGFyZW50SWQ6IHN0cmluZyB8IG51bGw7IHBvc2l0aW9uOiBudW1iZXIgfSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgY2xpZW50Lm11dGF0ZSh7XG4gICAgICAgICAgICAgICAgbXV0YXRpb246IE1PVkVfUEFHRV9UUkVFX05PREVTX0JZX1BPUyxcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgaWRzOiBpZHMsXG4gICAgICAgICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3M6IHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW1pc3RpY1Jlc3BvbnNlOiAodmFyaWFibGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VUcmVlTm9kZXM6IEdRTE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NNdXRhdGlvbltcIm1vdmVQYWdlVHJlZU5vZGVzQnlQb3NcIl0gPSAodmFyaWFibGVzLmlkcyBhcyBzdHJpbmdbXSkubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGlkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNsdWdQYXRoUGFnZSA9IGNsaWVudC5jYWNoZS5yZWFkRnJhZ21lbnQ8R1FMUGFnZVNsdWdQYXRoRnJhZ21lbnQ+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudDogZ3FsYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgUGFnZVNsdWdQYXRoIG9uIFBhZ2VUcmVlTm9kZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190eXBlbmFtZTogXCJQYWdlVHJlZU5vZGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvczogcG9zaXRpb24gKyBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogc2x1Z1BhdGhQYWdlPy5zbHVnID8/IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHNsdWdQYXRoUGFnZT8ucGF0aCA/PyBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zOiBwYWdlVHJlZU5vZGVzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdXBkYXRlOiAocHJveHksIHsgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYWdlIHBvc2l0aW9ucyBvZiBhbGwgb3RoZXIgcGFnZXRyZWUgbm9kZXMgYXJlIHVwZGF0ZWQgaW4gdGhlIGNhY2hlXG4gICAgICAgICAgICAgICAgICAgIC8vID0+IHJlYWx0aW1lIHVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb3ZlZFBhZ2VUcmVlTm9kZXMgPSBkYXRhPy5tb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdE1vdmVkUGFnZVRyZWVOb2RlID0gbW92ZWRQYWdlVHJlZU5vZGVzPy5bMF07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW92ZWRQYWdlVHJlZU5vZGVzIHx8ICFmaXJzdE1vdmVkUGFnZVRyZWVOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlc1F1ZXJ5RGF0YSA9IHByb3h5LnJlYWRRdWVyeTxHUUxQYWdlc0NhY2hlUXVlcnksIEdRTFBhZ2VzQ2FjaGVRdWVyeVZhcmlhYmxlcz4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IFBBR0VTX0NBQ0hFX1FVRVJZLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFNjb3BlOiBzY29wZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlc0RhdGEgPSBwYWdlc1F1ZXJ5RGF0YT8ucGFnZXMgPz8gW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRQYWdlcyA9IHBhZ2VzRGF0YS5tYXAoKHBhZ2VEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUGFnZURhdGEgPSB7IC4uLnBhZ2VEYXRhIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlkcy5pbmNsdWRlcyhwYWdlRGF0YS5pZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGF0YS5wYXJlbnRJZCA9PT0gZmlyc3RNb3ZlZFBhZ2VUcmVlTm9kZS5wYXJlbnRJZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VEYXRhLnBvcyA+PSBmaXJzdE1vdmVkUGFnZVRyZWVOb2RlLnBvc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZFBhZ2VEYXRhLnBvcyA9IHVwZGF0ZWRQYWdlRGF0YS5wb3MgKyBtb3ZlZFBhZ2VUcmVlTm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZFBhZ2VEYXRhO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcHJveHkud3JpdGVRdWVyeSh7IHF1ZXJ5OiBQQUdFU19DQUNIRV9RVUVSWSwgZGF0YTogeyBwYWdlczogdXBkYXRlZFBhZ2VzIH0gfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBbY2xpZW50LCBzY29wZSwgY2F0ZWdvcnldLFxuICAgICk7XG5cbiAgICBjb25zdCBtb3ZlQnlOZWlnaGJvdXJSZXF1ZXN0ID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIGFzeW5jICh7IGlkcywgcGFyZW50SWQsIGFmdGVySWQsIGJlZm9yZUlkIH06IHsgaWRzOiBzdHJpbmdbXTsgcGFyZW50SWQ6IHN0cmluZyB8IG51bGw7IGFmdGVySWQ6IHN0cmluZyB8IG51bGw7IGJlZm9yZUlkOiBzdHJpbmcgfCBudWxsIH0pID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGNsaWVudC5tdXRhdGUoe1xuICAgICAgICAgICAgICAgIG11dGF0aW9uOiBNT1ZFX1BBR0VfVFJFRV9OT0RFU19CWV9ORUlHSEJPVVJTLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICBpZHM6IGlkcyxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBwYXJlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVySWQ6IGFmdGVySWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVJZDogYmVmb3JlSWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBbY2xpZW50XSxcbiAgICApO1xuXG4gICAgY29uc3Qgb25Ecm9wID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIGFzeW5jIChkcmFnT2JqZWN0OiBQYWdlVHJlZURyYWdPYmplY3QsIGRyb3BUYXJnZXRQYWdlOiBQYWdlVHJlZVBhZ2UsIGRyb3BUYXJnZXQ6IERyb3BUYXJnZXQsIHRhcmdldExldmVsOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFnZUlkcyA9IHNlbGVjdGVkUGFnZXMubWFwKChwYWdlKSA9PiBwYWdlLmlkKTtcbiAgICAgICAgICAgIGxldCBwYWdlc1RvTW92ZTogUGFnZVRyZWVQYWdlW107XG4gICAgICAgICAgICBsZXQgaWRzVG9Nb3ZlOiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkUGFnZUlkcy5pbmNsdWRlcyhkcmFnT2JqZWN0LmlkKSkge1xuICAgICAgICAgICAgICAgIC8vIGZpbHRlciBvdXQgc3VicGFnZXMgaWYgdGhlaXIgcGFyZW50IGlzIHNlbGVjdGVkID0+IG9ubHkgdGhlIHBhcmVudCBoYXMgdG8gYmUgbW92ZWRcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFNlbGVjdGVkUGFnZXMgPSBzZWxlY3RlZFBhZ2VzLmZpbHRlcigocGFnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFnZS5wYXJlbnRJZCA9PT0gbnVsbCB8fCAhc2VsZWN0ZWRQYWdlSWRzLmluY2x1ZGVzKHBhZ2UucGFyZW50SWQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlkc1RvTW92ZSA9IGZpbHRlcmVkU2VsZWN0ZWRQYWdlcy5tYXAoKHBhZ2UpID0+IHBhZ2UuaWQpO1xuXG4gICAgICAgICAgICAgICAgcGFnZXNUb01vdmUgPSBmaWx0ZXJlZFNlbGVjdGVkUGFnZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlkc1RvTW92ZSA9IFtkcmFnT2JqZWN0LmlkXTtcbiAgICAgICAgICAgICAgICBwYWdlc1RvTW92ZSA9IFtkcmFnT2JqZWN0XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdXBkYXRlSW5mbyA9IHBhZ2VUcmVlU2VydmljZS5kcm9wQWxsb3dlZChwYWdlc1RvTW92ZSwgZHJvcFRhcmdldFBhZ2UsIGRyb3BUYXJnZXQsIHRhcmdldExldmVsKTtcbiAgICAgICAgICAgIGlmICghdXBkYXRlSW5mbykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXdhaXQgbW92ZUJ5UG9zUmVxdWVzdCh7IGlkczogaWRzVG9Nb3ZlLCBwYXJlbnRJZDogdXBkYXRlSW5mby5wYXJlbnRJZCwgcG9zaXRpb246IHVwZGF0ZUluZm8ucG9zaXRpb24gfSk7XG5cbiAgICAgICAgICAgIHNuYWNrYmFyQXBpLnNob3dTbmFja2JhcihcbiAgICAgICAgICAgICAgICA8VW5kb1NuYWNrYmFyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQucGFnZXRyZWUucGFnZU1vdmVkXCIgZGVmYXVsdE1lc3NhZ2U9XCJQYWdlIE1vdmVkXCIgLz59XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQ9e3sgcHJldmlvdXNQYWdlczogcGFnZXMsIHBhZ2VzVG9VbmRvOiBwYWdlc1RvTW92ZSB9fVxuICAgICAgICAgICAgICAgICAgICBvblVuZG9DbGljaz17YXN5bmMgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2aW91c1BhZ2VzLCBwYWdlc1RvVW5kbyB9ID0gcGF5bG9hZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkaXNhbGxvd2VkUmVmZXJlbmNlcyA9IFsuLi5wYWdlc1RvVW5kb107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhZ2VUb1VuZG8gb2YgcGFnZXNUb1VuZG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlSW5mbyA9IHBhZ2VUcmVlU2VydmljZS5nZXRVbmRvVXBkYXRlSW5mbyhwcmV2aW91c1BhZ2VzLCBwYWdlVG9VbmRvLCBkaXNhbGxvd2VkUmVmZXJlbmNlcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbW92ZUJ5TmVpZ2hib3VyUmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHM6IFtwYWdlVG9VbmRvLmlkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBwYWdlVG9VbmRvLnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJJZDogdXBkYXRlSW5mby5hZnRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlSWQ6IHVwZGF0ZUluZm8uYmVmb3JlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5tdXRhdGU8R1FMUmVzZXRTbHVnTXV0YXRpb24sIEdRTFJlc2V0U2x1Z011dGF0aW9uVmFyaWFibGVzPih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbjogUkVTRVRfU0xVRyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwYWdlVG9VbmRvLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHBhZ2VUb1VuZG8uc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FsbG93ZWRSZWZlcmVuY2VzID0gZGlzYWxsb3dlZFJlZmVyZW5jZXMuZmlsdGVyKChwYWdlKSA9PiBwYWdlLmlkICE9PSBwYWdlVG9VbmRvLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQucmVmZXRjaFF1ZXJpZXMoeyBpbmNsdWRlOiBbXCJQYWdlc1wiXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIFtzZWxlY3RlZFBhZ2VzLCBwYWdlVHJlZVNlcnZpY2UsIHBhZ2VzLCBtb3ZlQnlQb3NSZXF1ZXN0LCBzbmFja2JhckFwaSwgY2xpZW50LCBtb3ZlQnlOZWlnaGJvdXJSZXF1ZXN0XSxcbiAgICApO1xuXG4gICAgY29uc3QgcmVmTGlzdCA9IHVzZVJlZjxMaXN0PihudWxsKTtcbiAgICAvLyBleHBvc2UgdGhpcyBtZXRob2QgdG8gdGhlIHB1YmxpY1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICBzY3JvbGxUb0l0ZW06IChpbmRleDogbnVtYmVyLCBhbGlnbj86IEFsaWduKSA9PiB7XG4gICAgICAgICAgICByZWZMaXN0LmN1cnJlbnQ/LnNjcm9sbFRvSXRlbShpbmRleCwgYWxpZ24pO1xuICAgICAgICB9LFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHByb3BzRm9yVmlydHVhbExpc3QgPSB1c2VEbmRXaW5kb3dTY3JvbGwoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8UGFnZVRyZWVEcmFnTGF5ZXIgbnVtYmVyU2VsZWN0ZWRQYWdlcz17c2VsZWN0ZWRQYWdlcy5sZW5ndGh9IC8+XG4gICAgICAgICAgICA8Um9vdD5cbiAgICAgICAgICAgICAgICA8VGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDxBdXRvU2l6ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7KHsgaGVpZ2h0LCB3aWR0aCB9OiBTaXplKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQFRPRE86IGFkanVzdCBpdGVtU2l6ZSBmb3Igc21hbGxlciBzY3JlZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3JlZkxpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db3VudD17cGFnZXMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNpemU9ezUxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnNjYW5Db3VudD17MX0gLy8gZG8gbm90IGluY3JlYXNlIHRoaXMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHNjcm9sbEJlaGF2aW9yOiBcInNtb290aFwiIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckVsZW1lbnRUeXBlPXtWaXJ0dWFsTGlzdFBhZGRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc0ZvclZpcnR1YWxMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaW5kZXgsIHN0eWxlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcHJldlBhZ2UsIHBhZ2UsIG5leHRQYWdlXSA9IGdldExpbmtlZFBhZ2VzKHBhZ2VzLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhZ2VUcmVlUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BhZ2UuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsaXplZFN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBgJHtwYXJzZUZsb2F0KFN0cmluZyhzdHlsZT8udG9wKSkgKyBWSVJUVUFMX0xJU1RfUEFERElOR19TSVpFfXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtuZXdQYWdlSWRzLmN1cnJlbnQuaW5jbHVkZXMocGFnZS5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlPXtwYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlBhZ2U9e3ByZXZQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFBhZ2U9e25leHRQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdERpYWxvZ0FwaT17ZWRpdERpYWxvZ0FwaX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuZD17dG9nZ2xlRXhwYW5kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ecm9wPXtvbkRyb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdENoYW5nZWQ9e29uU2VsZWN0Q2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUcmVlU2VydmljZT17cGFnZVRyZWVTZXJ2aWNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkU2V0SG92ZXJTdGF0ZT17ZGVib3VuY2VkU2V0SG92ZXJTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVVcmw9e3NpdGVVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhZ2VzPXtzZWxlY3RlZFBhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvQXV0b1NpemVyPlxuICAgICAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgICA8L1Jvb3Q+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5jb25zdCBWSVJUVUFMX0xJU1RfUEFERElOR19TSVpFID0gMjQ7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBWaXJ0dWFsTGlzdFBhZGRlciA9IGZvcndhcmRSZWY8YW55LCBhbnk+KCh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4gKFxuICAgIDxkaXZcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgIGhlaWdodDogYCR7cGFyc2VGbG9hdChTdHJpbmcoc3R5bGU/LmhlaWdodCkpICsgVklSVFVBTF9MSVNUX1BBRERJTkdfU0laRSAqIDJ9cHhgLFxuICAgICAgICB9fVxuICAgICAgICB7Li4ucmVzdH1cbiAgICAvPlxuKSk7XG5cbmZ1bmN0aW9uIGdldExpbmtlZFBhZ2VzKHBhZ2VzOiBQYWdlVHJlZVBhZ2VbXSwgaW5kZXg6IG51bWJlcik6IFtQYWdlVHJlZVBhZ2UgfCB1bmRlZmluZWQsIFBhZ2VUcmVlUGFnZSwgUGFnZVRyZWVQYWdlIHwgdW5kZWZpbmVkXSB7XG4gICAgY29uc3QgcHJldlBhZ2UgPSBpbmRleCA+IDAgPyBwYWdlc1tpbmRleCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5leHRQYWdlID0gaW5kZXggKyAxIDwgcGFnZXMubGVuZ3RoID8gcGFnZXNbaW5kZXggKyAxXSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gW3ByZXZQYWdlLCBwYWdlc1tpbmRleF0sIG5leHRQYWdlXTtcbn1cblxuY29uc3QgUGFnZVRyZWVXaXRoUmVmID0gZm9yd2FyZFJlZihQYWdlVHJlZSk7XG5cbmV4cG9ydCB7IFBhZ2VUcmVlV2l0aFJlZiBhcyBQYWdlVHJlZSwgUGFnZVRyZWVSZWZBcGkgfTtcblxuY29uc3QgUm9vdCA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYDtcblxuY29uc3QgVGFibGUgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZmxleDogMTtcbmA7XG4iXX0= */",
474
+ styles: "height:100%;display:flex;flex-direction:column/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9wYWdlVHJlZS9QYWdlVHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbVowQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvcGFnZXMvcGFnZVRyZWUvUGFnZVRyZWUudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBPYnNlcnZhYmxlUXVlcnksIHVzZUFwb2xsb0NsaWVudCB9IGZyb20gXCJAYXBvbGxvL2NsaWVudFwiO1xuaW1wb3J0IHsgdHlwZSBJRWRpdERpYWxvZ0FwaSwgVW5kb1NuYWNrYmFyLCB1c2VTbmFja2JhckFwaSB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IGdxbCBmcm9tIFwiZ3JhcGhxbC10YWdcIjtcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2guaXNlcXVhbFwiO1xuaW1wb3J0IHtcbiAgICB0eXBlIERpc3BhdGNoLFxuICAgIGZvcndhcmRSZWYsXG4gICAgdHlwZSBGb3J3YXJkUmVmUmVuZGVyRnVuY3Rpb24sXG4gICAgdHlwZSBTZXRTdGF0ZUFjdGlvbixcbiAgICB1c2VDYWxsYmFjayxcbiAgICB1c2VFZmZlY3QsXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgICB1c2VNZW1vLFxuICAgIHVzZVJlZixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCBBdXRvU2l6ZXIsIHsgdHlwZSBTaXplIH0gZnJvbSBcInJlYWN0LXZpcnR1YWxpemVkLWF1dG8tc2l6ZXJcIjtcbmltcG9ydCB7IHR5cGUgQWxpZ24sIEZpeGVkU2l6ZUxpc3QgYXMgTGlzdCB9IGZyb20gXCJyZWFjdC13aW5kb3dcIjtcbmltcG9ydCB7IHVzZURlYm91bmNlZENhbGxiYWNrIH0gZnJvbSBcInVzZS1kZWJvdW5jZVwiO1xuXG5pbXBvcnQgeyB1c2VDb250ZW50U2NvcGUgfSBmcm9tIFwiLi4vLi4vY29udGVudFNjb3BlL1Byb3ZpZGVyXCI7XG5pbXBvcnQgeyB0eXBlIEdRTFBhZ2VzUXVlcnksIHR5cGUgR1FMUGFnZXNRdWVyeVZhcmlhYmxlcyB9IGZyb20gXCIuLi9wYWdlc1BhZ2UvY3JlYXRlUGFnZXNRdWVyeVwiO1xuaW1wb3J0IHtcbiAgICB0eXBlIEdRTE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NNdXRhdGlvbixcbiAgICB0eXBlIEdRTFBhZ2VzQ2FjaGVRdWVyeSxcbiAgICB0eXBlIEdRTFBhZ2VzQ2FjaGVRdWVyeVZhcmlhYmxlcyxcbiAgICB0eXBlIEdRTFBhZ2VTbHVnUGF0aEZyYWdtZW50LFxuICAgIHR5cGUgR1FMUmVzZXRTbHVnTXV0YXRpb24sXG4gICAgdHlwZSBHUUxSZXNldFNsdWdNdXRhdGlvblZhcmlhYmxlcyxcbn0gZnJvbSBcIi4vUGFnZVRyZWUuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgUGFnZVRyZWVEcmFnTGF5ZXIgZnJvbSBcIi4vUGFnZVRyZWVEcmFnTGF5ZXJcIjtcbmltcG9ydCBQYWdlVHJlZVJvdywgeyB0eXBlIERyb3BUYXJnZXQsIHR5cGUgUGFnZVRyZWVEcmFnT2JqZWN0IH0gZnJvbSBcIi4vUGFnZVRyZWVSb3dcIjtcbmltcG9ydCB7IHR5cGUgRHJvcEluZm8sIFBhZ2VUcmVlU2VydmljZSB9IGZyb20gXCIuL1BhZ2VUcmVlU2VydmljZVwiO1xuaW1wb3J0IHsgdXNlRG5kV2luZG93U2Nyb2xsIH0gZnJvbSBcIi4vdXNlRG5kV2luZG93U2Nyb2xsL3VzZURuZFdpbmRvd1Njcm9sbFwiO1xuaW1wb3J0IHsgdHlwZSBQYWdlVHJlZVBhZ2UgfSBmcm9tIFwiLi91c2VQYWdlVHJlZVwiO1xuXG5pbnRlcmZhY2UgUGFnZVRyZWVQcm9wcyB7XG4gICAgcGFnZXM6IFBhZ2VUcmVlUGFnZVtdO1xuICAgIGVkaXREaWFsb2dBcGk6IElFZGl0RGlhbG9nQXBpO1xuICAgIHRvZ2dsZUV4cGFuZDogKHBhZ2VJZDogc3RyaW5nKSA9PiB2b2lkO1xuICAgIG9uU2VsZWN0Q2hhbmdlZDogKHBhZ2VJZDogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgIHNpdGVVcmw6IHN0cmluZztcbn1cblxudHlwZSBQYWdlVHJlZVJlZkFwaSA9IHsgc2Nyb2xsVG9JdGVtOiBMaXN0W1wic2Nyb2xsVG9JdGVtXCJdIH07XG5cbmNvbnN0IG1vdmVQYWdlVHJlZU5vZGVzQnlQb3NpdGlvbk11dGF0aW9uID0gZ3FsYFxuICAgIG11dGF0aW9uIE1vdmVQYWdlVHJlZU5vZGVzQnlQb3MoJGlkczogW0lEIV0hLCAkaW5wdXQ6IE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NJbnB1dCEpIHtcbiAgICAgICAgbW92ZVBhZ2VUcmVlTm9kZXNCeVBvcyhpZHM6ICRpZHMsIGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBwYXJlbnRJZFxuICAgICAgICAgICAgcG9zXG4gICAgICAgICAgICBzbHVnXG4gICAgICAgICAgICBwYXRoXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5jb25zdCBtb3ZlUGFnZVRyZWVOb2Rlc0J5TmVpZ2hib3Vyc011dGF0aW9uID0gZ3FsYFxuICAgIG11dGF0aW9uIE1vdmVQYWdlVHJlZU5vZGVzQnlOZWlnaGJvdXIoJGlkczogW0lEIV0hLCAkaW5wdXQ6IE1vdmVQYWdlVHJlZU5vZGVzQnlOZWlnaGJvdXJJbnB1dCEpIHtcbiAgICAgICAgbW92ZVBhZ2VUcmVlTm9kZXNCeU5laWdoYm91cihpZHM6ICRpZHMsIGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBwYXJlbnRJZFxuICAgICAgICAgICAgcG9zXG4gICAgICAgICAgICBzbHVnXG4gICAgICAgICAgICBwYXRoXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5jb25zdCByZXNldFNsdWdNdXRhdGlvbiA9IGdxbGBcbiAgICBtdXRhdGlvbiBSZXNldFNsdWcoJGlkOiBJRCEsICRzbHVnOiBTdHJpbmchKSB7XG4gICAgICAgIHVwZGF0ZVBhZ2VUcmVlTm9kZVNsdWcoaWQ6ICRpZCwgc2x1ZzogJHNsdWcpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBzbHVnXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5jb25zdCBwYWdlc0NhY2hlUXVlcnkgPSBncWxgXG4gICAgcXVlcnkgUGFnZXNDYWNoZSgkY29udGVudFNjb3BlOiBQYWdlVHJlZU5vZGVTY29wZUlucHV0ISwgJGNhdGVnb3J5OiBTdHJpbmchKSB7XG4gICAgICAgIHBhZ2VzOiBwYWdlVHJlZU5vZGVMaXN0KHNjb3BlOiAkY29udGVudFNjb3BlLCBjYXRlZ29yeTogJGNhdGVnb3J5KSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgcGFyZW50SWRcbiAgICAgICAgICAgIHBvc1xuICAgICAgICB9XG4gICAgfVxuYDtcblxuLy8gQFRPRE86IENhbGN1bGF0ZSBkeW5hbWljYWxseVxuY29uc3QgbGV2ZWxPZmZzZXRQeCA9IDUwO1xuXG5jb25zdCBQYWdlVHJlZTogRm9yd2FyZFJlZlJlbmRlckZ1bmN0aW9uPFBhZ2VUcmVlUmVmQXBpLCBQYWdlVHJlZVByb3BzPiA9IChcbiAgICB7IHBhZ2VzLCBlZGl0RGlhbG9nQXBpLCB0b2dnbGVFeHBhbmQsIG9uU2VsZWN0Q2hhbmdlZCwgY2F0ZWdvcnksIHNpdGVVcmwgfSxcbiAgICByZWYsXG4pID0+IHtcbiAgICBjb25zdCBjbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcbiAgICBjb25zdCBuZXdQYWdlSWRzID0gdXNlUmVmPHN0cmluZ1tdPihbXSk7XG5cbiAgICBjb25zdCBxdWVyaWVzID0gY2xpZW50LmdldE9ic2VydmFibGVRdWVyaWVzKCk7XG4gICAgY29uc3QgcGFnZXNRdWVyeSA9IEFycmF5LmZyb20ocXVlcmllcy52YWx1ZXMoKSkuZmluZCgocXVlcnkpID0+IHF1ZXJ5LnF1ZXJ5TmFtZSA9PT0gXCJQYWdlc1wiKSBhc1xuICAgICAgICB8IE9ic2VydmFibGVRdWVyeTxHUUxQYWdlc1F1ZXJ5LCBHUUxQYWdlc1F1ZXJ5VmFyaWFibGVzPlxuICAgICAgICB8IHVuZGVmaW5lZDtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwYWdlc1F1ZXJ5KSB7XG4gICAgICAgICAgICBjbGllbnQuY2FjaGUud2F0Y2g8R1FMUGFnZXNRdWVyeSwgR1FMUGFnZXNRdWVyeVZhcmlhYmxlcz4oe1xuICAgICAgICAgICAgICAgIHF1ZXJ5OiBwYWdlc1F1ZXJ5LnF1ZXJ5LFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogcGFnZXNRdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgY2FsbGJhY2s6IChuZXdQYWdlc1F1ZXJ5LCBwcmV2aW91c1BhZ2VzUXVlcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1BhZ2VzUXVlcnkgJiYgcHJldmlvdXNQYWdlc1F1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1BhZ2VJZHMgPSBwcmV2aW91c1BhZ2VzUXVlcnkucmVzdWx0Py5wYWdlcz8ubWFwKChwYWdlKSA9PiBwYWdlLmlkKSA/PyBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhZ2VJZHMuY3VycmVudCA9IG5ld1BhZ2VzUXVlcnkucmVzdWx0Py5wYWdlcz8ubWFwKChwYWdlKSA9PiBwYWdlLmlkKS5maWx0ZXIoKGlkKSA9PiAhZXhpc3RpbmdQYWdlSWRzLmluY2x1ZGVzKGlkKSkgPz8gW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IG5ld1BhZ2VJZHMgdG8gcHJldmVudCBzbGlkZUluIG9uIGV2ZXJ5IHJlcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFnZUlkcy5jdXJyZW50ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW1pc3RpYzogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwgW2NsaWVudC5jYWNoZSwgcGFnZXNRdWVyeV0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG5ld1BhZ2VJZHMuY3VycmVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHBhZ2VzLmZpbmRJbmRleCgocGFnZSkgPT4gbmV3UGFnZUlkcy5jdXJyZW50LmluY2x1ZGVzKHBhZ2UuaWQpKTtcbiAgICAgICAgICAgIHJlZkxpc3QuY3VycmVudD8uc2Nyb2xsVG9JdGVtKGluZGV4LCBcInNtYXJ0XCIpO1xuICAgICAgICB9XG4gICAgfSwgW3BhZ2VzXSk7XG5cbiAgICBjb25zdCBwYWdlVHJlZVNlcnZpY2UgPSB1c2VNZW1vKCgpID0+IG5ldyBQYWdlVHJlZVNlcnZpY2UobGV2ZWxPZmZzZXRQeCwgcGFnZXMpLCBbcGFnZXNdKTtcbiAgICBjb25zdCB7IHNjb3BlIH0gPSB1c2VDb250ZW50U2NvcGUoKTtcbiAgICBjb25zdCBzbmFja2JhckFwaSA9IHVzZVNuYWNrYmFyQXBpKCk7XG5cbiAgICBjb25zdCBkZWJvdW5jZWRTZXRIb3ZlclN0YXRlID0gdXNlRGVib3VuY2VkQ2FsbGJhY2soXG4gICAgICAgIChzZXRIb3ZlclN0YXRlOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEcm9wSW5mbyB8IHVuZGVmaW5lZD4+LCBuZXdIb3ZlclN0YXRlOiBEcm9wSW5mbyB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgICAgc2V0SG92ZXJTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRXF1YWwobmV3SG92ZXJTdGF0ZSwgcHJldlN0YXRlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldlN0YXRlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdIb3ZlclN0YXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICA1LFxuICAgICk7XG5cbiAgICBjb25zdCBzZWxlY3RlZFBhZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBwYWdlcy5maWx0ZXIoKHBhZ2UpID0+IHBhZ2Uuc2VsZWN0ZWQpO1xuICAgIH0sIFtwYWdlc10pO1xuXG4gICAgY29uc3QgbW92ZUJ5UG9zUmVxdWVzdCA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAvLyBAVE9ETzogaGFuZGxlIHBhdGggY29sbGlzaW9ucyB3aGVuIG1vdmluZyBwYWdlc1xuICAgICAgICBhc3luYyAoeyBpZHMsIHBhcmVudElkLCBwb3NpdGlvbiB9OiB7IGlkczogc3RyaW5nW107IHBhcmVudElkOiBzdHJpbmcgfCBudWxsOyBwb3NpdGlvbjogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGNsaWVudC5tdXRhdGUoe1xuICAgICAgICAgICAgICAgIG11dGF0aW9uOiBtb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zaXRpb25NdXRhdGlvbixcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgaWRzOiBpZHMsXG4gICAgICAgICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3M6IHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW1pc3RpY1Jlc3BvbnNlOiAodmFyaWFibGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VUcmVlTm9kZXM6IEdRTE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NNdXRhdGlvbltcIm1vdmVQYWdlVHJlZU5vZGVzQnlQb3NcIl0gPSAodmFyaWFibGVzLmlkcyBhcyBzdHJpbmdbXSkubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGlkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNsdWdQYXRoUGFnZSA9IGNsaWVudC5jYWNoZS5yZWFkRnJhZ21lbnQ8R1FMUGFnZVNsdWdQYXRoRnJhZ21lbnQ+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudDogZ3FsYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgUGFnZVNsdWdQYXRoIG9uIFBhZ2VUcmVlTm9kZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190eXBlbmFtZTogXCJQYWdlVHJlZU5vZGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvczogcG9zaXRpb24gKyBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogc2x1Z1BhdGhQYWdlPy5zbHVnID8/IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHNsdWdQYXRoUGFnZT8ucGF0aCA/PyBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zOiBwYWdlVHJlZU5vZGVzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdXBkYXRlOiAocHJveHksIHsgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYWdlIHBvc2l0aW9ucyBvZiBhbGwgb3RoZXIgcGFnZXRyZWUgbm9kZXMgYXJlIHVwZGF0ZWQgaW4gdGhlIGNhY2hlXG4gICAgICAgICAgICAgICAgICAgIC8vID0+IHJlYWx0aW1lIHVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb3ZlZFBhZ2VUcmVlTm9kZXMgPSBkYXRhPy5tb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdE1vdmVkUGFnZVRyZWVOb2RlID0gbW92ZWRQYWdlVHJlZU5vZGVzPy5bMF07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW92ZWRQYWdlVHJlZU5vZGVzIHx8ICFmaXJzdE1vdmVkUGFnZVRyZWVOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlc1F1ZXJ5RGF0YSA9IHByb3h5LnJlYWRRdWVyeTxHUUxQYWdlc0NhY2hlUXVlcnksIEdRTFBhZ2VzQ2FjaGVRdWVyeVZhcmlhYmxlcz4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHBhZ2VzQ2FjaGVRdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTY29wZTogc2NvcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZXNEYXRhID0gcGFnZXNRdWVyeURhdGE/LnBhZ2VzID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUGFnZXMgPSBwYWdlc0RhdGEubWFwKChwYWdlRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFBhZ2VEYXRhID0geyAuLi5wYWdlRGF0YSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpZHMuaW5jbHVkZXMocGFnZURhdGEuaWQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURhdGEucGFyZW50SWQgPT09IGZpcnN0TW92ZWRQYWdlVHJlZU5vZGUucGFyZW50SWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGF0YS5wb3MgPj0gZmlyc3RNb3ZlZFBhZ2VUcmVlTm9kZS5wb3NcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRQYWdlRGF0YS5wb3MgPSB1cGRhdGVkUGFnZURhdGEucG9zICsgbW92ZWRQYWdlVHJlZU5vZGVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRQYWdlRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHByb3h5LndyaXRlUXVlcnkoeyBxdWVyeTogcGFnZXNDYWNoZVF1ZXJ5LCBkYXRhOiB7IHBhZ2VzOiB1cGRhdGVkUGFnZXMgfSB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFtjbGllbnQsIHNjb3BlLCBjYXRlZ29yeV0sXG4gICAgKTtcblxuICAgIGNvbnN0IG1vdmVCeU5laWdoYm91clJlcXVlc3QgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgYXN5bmMgKHsgaWRzLCBwYXJlbnRJZCwgYWZ0ZXJJZCwgYmVmb3JlSWQgfTogeyBpZHM6IHN0cmluZ1tdOyBwYXJlbnRJZDogc3RyaW5nIHwgbnVsbDsgYWZ0ZXJJZDogc3RyaW5nIHwgbnVsbDsgYmVmb3JlSWQ6IHN0cmluZyB8IG51bGwgfSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgY2xpZW50Lm11dGF0ZSh7XG4gICAgICAgICAgICAgICAgbXV0YXRpb246IG1vdmVQYWdlVHJlZU5vZGVzQnlOZWlnaGJvdXJzTXV0YXRpb24sXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkczogaWRzLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJJZDogYWZ0ZXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUlkOiBiZWZvcmVJZCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFtjbGllbnRdLFxuICAgICk7XG5cbiAgICBjb25zdCBvbkRyb3AgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgYXN5bmMgKGRyYWdPYmplY3Q6IFBhZ2VUcmVlRHJhZ09iamVjdCwgZHJvcFRhcmdldFBhZ2U6IFBhZ2VUcmVlUGFnZSwgZHJvcFRhcmdldDogRHJvcFRhcmdldCwgdGFyZ2V0TGV2ZWw6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYWdlSWRzID0gc2VsZWN0ZWRQYWdlcy5tYXAoKHBhZ2UpID0+IHBhZ2UuaWQpO1xuICAgICAgICAgICAgbGV0IHBhZ2VzVG9Nb3ZlOiBQYWdlVHJlZVBhZ2VbXTtcbiAgICAgICAgICAgIGxldCBpZHNUb01vdmU6IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRQYWdlSWRzLmluY2x1ZGVzKGRyYWdPYmplY3QuaWQpKSB7XG4gICAgICAgICAgICAgICAgLy8gZmlsdGVyIG91dCBzdWJwYWdlcyBpZiB0aGVpciBwYXJlbnQgaXMgc2VsZWN0ZWQgPT4gb25seSB0aGUgcGFyZW50IGhhcyB0byBiZSBtb3ZlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkU2VsZWN0ZWRQYWdlcyA9IHNlbGVjdGVkUGFnZXMuZmlsdGVyKChwYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYWdlLnBhcmVudElkID09PSBudWxsIHx8ICFzZWxlY3RlZFBhZ2VJZHMuaW5jbHVkZXMocGFnZS5wYXJlbnRJZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWRzVG9Nb3ZlID0gZmlsdGVyZWRTZWxlY3RlZFBhZ2VzLm1hcCgocGFnZSkgPT4gcGFnZS5pZCk7XG5cbiAgICAgICAgICAgICAgICBwYWdlc1RvTW92ZSA9IGZpbHRlcmVkU2VsZWN0ZWRQYWdlcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWRzVG9Nb3ZlID0gW2RyYWdPYmplY3QuaWRdO1xuICAgICAgICAgICAgICAgIHBhZ2VzVG9Nb3ZlID0gW2RyYWdPYmplY3RdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVJbmZvID0gcGFnZVRyZWVTZXJ2aWNlLmRyb3BBbGxvd2VkKHBhZ2VzVG9Nb3ZlLCBkcm9wVGFyZ2V0UGFnZSwgZHJvcFRhcmdldCwgdGFyZ2V0TGV2ZWwpO1xuICAgICAgICAgICAgaWYgKCF1cGRhdGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhd2FpdCBtb3ZlQnlQb3NSZXF1ZXN0KHsgaWRzOiBpZHNUb01vdmUsIHBhcmVudElkOiB1cGRhdGVJbmZvLnBhcmVudElkLCBwb3NpdGlvbjogdXBkYXRlSW5mby5wb3NpdGlvbiB9KTtcblxuICAgICAgICAgICAgc25hY2tiYXJBcGkuc2hvd1NuYWNrYmFyKFxuICAgICAgICAgICAgICAgIDxVbmRvU25hY2tiYXJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5wYWdldHJlZS5wYWdlTW92ZWRcIiBkZWZhdWx0TWVzc2FnZT1cIlBhZ2UgTW92ZWRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZD17eyBwcmV2aW91c1BhZ2VzOiBwYWdlcywgcGFnZXNUb1VuZG86IHBhZ2VzVG9Nb3ZlIH19XG4gICAgICAgICAgICAgICAgICAgIG9uVW5kb0NsaWNrPXthc3luYyAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZpb3VzUGFnZXMsIHBhZ2VzVG9VbmRvIH0gPSBwYXlsb2FkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRpc2FsbG93ZWRSZWZlcmVuY2VzID0gWy4uLnBhZ2VzVG9VbmRvXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFnZVRvVW5kbyBvZiBwYWdlc1RvVW5kbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVJbmZvID0gcGFnZVRyZWVTZXJ2aWNlLmdldFVuZG9VcGRhdGVJbmZvKHByZXZpb3VzUGFnZXMsIHBhZ2VUb1VuZG8sIGRpc2FsbG93ZWRSZWZlcmVuY2VzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBtb3ZlQnlOZWlnaGJvdXJSZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkczogW3BhZ2VUb1VuZG8uaWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHBhZ2VUb1VuZG8ucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcklkOiB1cGRhdGVJbmZvLmFmdGVySWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVJZDogdXBkYXRlSW5mby5iZWZvcmVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50Lm11dGF0ZTxHUUxSZXNldFNsdWdNdXRhdGlvbiwgR1FMUmVzZXRTbHVnTXV0YXRpb25WYXJpYWJsZXM+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uOiByZXNldFNsdWdNdXRhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwYWdlVG9VbmRvLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHBhZ2VUb1VuZG8uc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FsbG93ZWRSZWZlcmVuY2VzID0gZGlzYWxsb3dlZFJlZmVyZW5jZXMuZmlsdGVyKChwYWdlKSA9PiBwYWdlLmlkICE9PSBwYWdlVG9VbmRvLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQucmVmZXRjaFF1ZXJpZXMoeyBpbmNsdWRlOiBbXCJQYWdlc1wiXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIFtzZWxlY3RlZFBhZ2VzLCBwYWdlVHJlZVNlcnZpY2UsIHBhZ2VzLCBtb3ZlQnlQb3NSZXF1ZXN0LCBzbmFja2JhckFwaSwgY2xpZW50LCBtb3ZlQnlOZWlnaGJvdXJSZXF1ZXN0XSxcbiAgICApO1xuXG4gICAgY29uc3QgcmVmTGlzdCA9IHVzZVJlZjxMaXN0PihudWxsKTtcbiAgICAvLyBleHBvc2UgdGhpcyBtZXRob2QgdG8gdGhlIHB1YmxpY1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICBzY3JvbGxUb0l0ZW06IChpbmRleDogbnVtYmVyLCBhbGlnbj86IEFsaWduKSA9PiB7XG4gICAgICAgICAgICByZWZMaXN0LmN1cnJlbnQ/LnNjcm9sbFRvSXRlbShpbmRleCwgYWxpZ24pO1xuICAgICAgICB9LFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHByb3BzRm9yVmlydHVhbExpc3QgPSB1c2VEbmRXaW5kb3dTY3JvbGwoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8UGFnZVRyZWVEcmFnTGF5ZXIgbnVtYmVyU2VsZWN0ZWRQYWdlcz17c2VsZWN0ZWRQYWdlcy5sZW5ndGh9IC8+XG4gICAgICAgICAgICA8Um9vdD5cbiAgICAgICAgICAgICAgICA8VGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDxBdXRvU2l6ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7KHsgaGVpZ2h0LCB3aWR0aCB9OiBTaXplKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQFRPRE86IGFkanVzdCBpdGVtU2l6ZSBmb3Igc21hbGxlciBzY3JlZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3JlZkxpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db3VudD17cGFnZXMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNpemU9ezUxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnNjYW5Db3VudD17MX0gLy8gZG8gbm90IGluY3JlYXNlIHRoaXMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHNjcm9sbEJlaGF2aW9yOiBcInNtb290aFwiIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckVsZW1lbnRUeXBlPXtWaXJ0dWFsTGlzdFBhZGRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc0ZvclZpcnR1YWxMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaW5kZXgsIHN0eWxlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcHJldlBhZ2UsIHBhZ2UsIG5leHRQYWdlXSA9IGdldExpbmtlZFBhZ2VzKHBhZ2VzLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhZ2VUcmVlUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BhZ2UuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsaXplZFN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBgJHtwYXJzZUZsb2F0KFN0cmluZyhzdHlsZT8udG9wKSkgKyBWSVJUVUFMX0xJU1RfUEFERElOR19TSVpFfXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtuZXdQYWdlSWRzLmN1cnJlbnQuaW5jbHVkZXMocGFnZS5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlPXtwYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlBhZ2U9e3ByZXZQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFBhZ2U9e25leHRQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdERpYWxvZ0FwaT17ZWRpdERpYWxvZ0FwaX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuZD17dG9nZ2xlRXhwYW5kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ecm9wPXtvbkRyb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdENoYW5nZWQ9e29uU2VsZWN0Q2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUcmVlU2VydmljZT17cGFnZVRyZWVTZXJ2aWNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkU2V0SG92ZXJTdGF0ZT17ZGVib3VuY2VkU2V0SG92ZXJTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVVcmw9e3NpdGVVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhZ2VzPXtzZWxlY3RlZFBhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvQXV0b1NpemVyPlxuICAgICAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgICA8L1Jvb3Q+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5jb25zdCBWSVJUVUFMX0xJU1RfUEFERElOR19TSVpFID0gMjQ7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBWaXJ0dWFsTGlzdFBhZGRlciA9IGZvcndhcmRSZWY8YW55LCBhbnk+KCh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4gKFxuICAgIDxkaXZcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgIGhlaWdodDogYCR7cGFyc2VGbG9hdChTdHJpbmcoc3R5bGU/LmhlaWdodCkpICsgVklSVFVBTF9MSVNUX1BBRERJTkdfU0laRSAqIDJ9cHhgLFxuICAgICAgICB9fVxuICAgICAgICB7Li4ucmVzdH1cbiAgICAvPlxuKSk7XG5cbmZ1bmN0aW9uIGdldExpbmtlZFBhZ2VzKHBhZ2VzOiBQYWdlVHJlZVBhZ2VbXSwgaW5kZXg6IG51bWJlcik6IFtQYWdlVHJlZVBhZ2UgfCB1bmRlZmluZWQsIFBhZ2VUcmVlUGFnZSwgUGFnZVRyZWVQYWdlIHwgdW5kZWZpbmVkXSB7XG4gICAgY29uc3QgcHJldlBhZ2UgPSBpbmRleCA+IDAgPyBwYWdlc1tpbmRleCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5leHRQYWdlID0gaW5kZXggKyAxIDwgcGFnZXMubGVuZ3RoID8gcGFnZXNbaW5kZXggKyAxXSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gW3ByZXZQYWdlLCBwYWdlc1tpbmRleF0sIG5leHRQYWdlXTtcbn1cblxuY29uc3QgUGFnZVRyZWVXaXRoUmVmID0gZm9yd2FyZFJlZihQYWdlVHJlZSk7XG5cbmV4cG9ydCB7IFBhZ2VUcmVlV2l0aFJlZiBhcyBQYWdlVHJlZSwgUGFnZVRyZWVSZWZBcGkgfTtcblxuY29uc3QgUm9vdCA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYDtcblxuY29uc3QgVGFibGUgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZmxleDogMTtcbmA7XG4iXX0= */",
475
475
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
476
476
  });
477
477
  var Table = /*#__PURE__*/(0, _styles.styled)("div", process.env.NODE_ENV === "production" ? {
@@ -484,6 +484,6 @@ var Table = /*#__PURE__*/(0, _styles.styled)("div", process.env.NODE_ENV === "pr
484
484
  styles: "flex:1"
485
485
  } : {
486
486
  name: "82a6rk",
487
- styles: "flex:1/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9wYWdlVHJlZS9QYWdlVHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeVoyQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvcGFnZXMvcGFnZVRyZWUvUGFnZVRyZWUudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBPYnNlcnZhYmxlUXVlcnksIHVzZUFwb2xsb0NsaWVudCB9IGZyb20gXCJAYXBvbGxvL2NsaWVudFwiO1xuaW1wb3J0IHsgdHlwZSBJRWRpdERpYWxvZ0FwaSwgVW5kb1NuYWNrYmFyLCB1c2VTbmFja2JhckFwaSB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IGdxbCBmcm9tIFwiZ3JhcGhxbC10YWdcIjtcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2guaXNlcXVhbFwiO1xuaW1wb3J0IHtcbiAgICB0eXBlIERpc3BhdGNoLFxuICAgIGZvcndhcmRSZWYsXG4gICAgdHlwZSBGb3J3YXJkUmVmUmVuZGVyRnVuY3Rpb24sXG4gICAgdHlwZSBTZXRTdGF0ZUFjdGlvbixcbiAgICB1c2VDYWxsYmFjayxcbiAgICB1c2VFZmZlY3QsXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgICB1c2VNZW1vLFxuICAgIHVzZVJlZixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCBBdXRvU2l6ZXIsIHsgdHlwZSBTaXplIH0gZnJvbSBcInJlYWN0LXZpcnR1YWxpemVkLWF1dG8tc2l6ZXJcIjtcbmltcG9ydCB7IHR5cGUgQWxpZ24sIEZpeGVkU2l6ZUxpc3QgYXMgTGlzdCB9IGZyb20gXCJyZWFjdC13aW5kb3dcIjtcbmltcG9ydCB7IHVzZURlYm91bmNlZENhbGxiYWNrIH0gZnJvbSBcInVzZS1kZWJvdW5jZVwiO1xuXG5pbXBvcnQgeyB1c2VDb250ZW50U2NvcGUgfSBmcm9tIFwiLi4vLi4vY29udGVudFNjb3BlL1Byb3ZpZGVyXCI7XG5pbXBvcnQgeyB0eXBlIEdRTFBhZ2VzUXVlcnksIHR5cGUgR1FMUGFnZXNRdWVyeVZhcmlhYmxlcyB9IGZyb20gXCIuLi9wYWdlc1BhZ2UvY3JlYXRlUGFnZXNRdWVyeVwiO1xuaW1wb3J0IHtcbiAgICB0eXBlIEdRTE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NNdXRhdGlvbixcbiAgICB0eXBlIEdRTFBhZ2VzQ2FjaGVRdWVyeSxcbiAgICB0eXBlIEdRTFBhZ2VzQ2FjaGVRdWVyeVZhcmlhYmxlcyxcbiAgICB0eXBlIEdRTFBhZ2VTbHVnUGF0aEZyYWdtZW50LFxuICAgIHR5cGUgR1FMUmVzZXRTbHVnTXV0YXRpb24sXG4gICAgdHlwZSBHUUxSZXNldFNsdWdNdXRhdGlvblZhcmlhYmxlcyxcbn0gZnJvbSBcIi4vUGFnZVRyZWUuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgUGFnZVRyZWVEcmFnTGF5ZXIgZnJvbSBcIi4vUGFnZVRyZWVEcmFnTGF5ZXJcIjtcbmltcG9ydCBQYWdlVHJlZVJvdywgeyB0eXBlIERyb3BUYXJnZXQsIHR5cGUgUGFnZVRyZWVEcmFnT2JqZWN0IH0gZnJvbSBcIi4vUGFnZVRyZWVSb3dcIjtcbmltcG9ydCB7IHR5cGUgRHJvcEluZm8sIFBhZ2VUcmVlU2VydmljZSB9IGZyb20gXCIuL1BhZ2VUcmVlU2VydmljZVwiO1xuaW1wb3J0IHsgdXNlRG5kV2luZG93U2Nyb2xsIH0gZnJvbSBcIi4vdXNlRG5kV2luZG93U2Nyb2xsL3VzZURuZFdpbmRvd1Njcm9sbFwiO1xuaW1wb3J0IHsgdHlwZSBQYWdlVHJlZVBhZ2UgfSBmcm9tIFwiLi91c2VQYWdlVHJlZVwiO1xuXG5pbnRlcmZhY2UgUGFnZVRyZWVQcm9wcyB7XG4gICAgcGFnZXM6IFBhZ2VUcmVlUGFnZVtdO1xuICAgIGVkaXREaWFsb2dBcGk6IElFZGl0RGlhbG9nQXBpO1xuICAgIHRvZ2dsZUV4cGFuZDogKHBhZ2VJZDogc3RyaW5nKSA9PiB2b2lkO1xuICAgIG9uU2VsZWN0Q2hhbmdlZDogKHBhZ2VJZDogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgIHNpdGVVcmw6IHN0cmluZztcbn1cblxudHlwZSBQYWdlVHJlZVJlZkFwaSA9IHsgc2Nyb2xsVG9JdGVtOiBMaXN0W1wic2Nyb2xsVG9JdGVtXCJdIH07XG5cbmNvbnN0IE1PVkVfUEFHRV9UUkVFX05PREVTX0JZX1BPUyA9IGdxbGBcbiAgICBtdXRhdGlvbiBNb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zKCRpZHM6IFtJRCFdISwgJGlucHV0OiBNb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zSW5wdXQhKSB7XG4gICAgICAgIG1vdmVQYWdlVHJlZU5vZGVzQnlQb3MoaWRzOiAkaWRzLCBpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgcGFyZW50SWRcbiAgICAgICAgICAgIHBvc1xuICAgICAgICAgICAgc2x1Z1xuICAgICAgICAgICAgcGF0aFxuICAgICAgICB9XG4gICAgfVxuYDtcblxuY29uc3QgTU9WRV9QQUdFX1RSRUVfTk9ERVNfQllfTkVJR0hCT1VSUyA9IGdxbGBcbiAgICBtdXRhdGlvbiBNb3ZlUGFnZVRyZWVOb2Rlc0J5TmVpZ2hib3VyKCRpZHM6IFtJRCFdISwgJGlucHV0OiBNb3ZlUGFnZVRyZWVOb2Rlc0J5TmVpZ2hib3VySW5wdXQhKSB7XG4gICAgICAgIG1vdmVQYWdlVHJlZU5vZGVzQnlOZWlnaGJvdXIoaWRzOiAkaWRzLCBpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgcGFyZW50SWRcbiAgICAgICAgICAgIHBvc1xuICAgICAgICAgICAgc2x1Z1xuICAgICAgICAgICAgcGF0aFxuICAgICAgICB9XG4gICAgfVxuYDtcblxuY29uc3QgUkVTRVRfU0xVRyA9IGdxbGBcbiAgICBtdXRhdGlvbiBSZXNldFNsdWcoJGlkOiBJRCEsICRzbHVnOiBTdHJpbmchKSB7XG4gICAgICAgIHVwZGF0ZVBhZ2VUcmVlTm9kZVNsdWcoaWQ6ICRpZCwgc2x1ZzogJHNsdWcpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBzbHVnXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5jb25zdCBQQUdFU19DQUNIRV9RVUVSWSA9IGdxbGBcbiAgICBxdWVyeSBQYWdlc0NhY2hlKCRjb250ZW50U2NvcGU6IFBhZ2VUcmVlTm9kZVNjb3BlSW5wdXQhLCAkY2F0ZWdvcnk6IFN0cmluZyEpIHtcbiAgICAgICAgcGFnZXM6IHBhZ2VUcmVlTm9kZUxpc3Qoc2NvcGU6ICRjb250ZW50U2NvcGUsIGNhdGVnb3J5OiAkY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBwYXJlbnRJZFxuICAgICAgICAgICAgcG9zXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG4vLyBAVE9ETzogQ2FsY3VsYXRlIGR5bmFtaWNhbGx5XG5jb25zdCBsZXZlbE9mZnNldFB4ID0gNTA7XG5cbmNvbnN0IFBhZ2VUcmVlOiBGb3J3YXJkUmVmUmVuZGVyRnVuY3Rpb248UGFnZVRyZWVSZWZBcGksIFBhZ2VUcmVlUHJvcHM+ID0gKFxuICAgIHsgcGFnZXMsIGVkaXREaWFsb2dBcGksIHRvZ2dsZUV4cGFuZCwgb25TZWxlY3RDaGFuZ2VkLCBjYXRlZ29yeSwgc2l0ZVVybCB9LFxuICAgIHJlZixcbikgPT4ge1xuICAgIGNvbnN0IGNsaWVudCA9IHVzZUFwb2xsb0NsaWVudCgpO1xuICAgIGNvbnN0IG5ld1BhZ2VJZHMgPSB1c2VSZWY8c3RyaW5nW10+KFtdKTtcblxuICAgIGNvbnN0IHF1ZXJpZXMgPSBjbGllbnQuZ2V0T2JzZXJ2YWJsZVF1ZXJpZXMoKTtcbiAgICBjb25zdCBwYWdlc1F1ZXJ5ID0gQXJyYXkuZnJvbShxdWVyaWVzLnZhbHVlcygpKS5maW5kKChxdWVyeSkgPT4gcXVlcnkucXVlcnlOYW1lID09PSBcIlBhZ2VzXCIpIGFzXG4gICAgICAgIHwgT2JzZXJ2YWJsZVF1ZXJ5PEdRTFBhZ2VzUXVlcnksIEdRTFBhZ2VzUXVlcnlWYXJpYWJsZXM+XG4gICAgICAgIHwgdW5kZWZpbmVkO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHBhZ2VzUXVlcnkpIHtcbiAgICAgICAgICAgIGNsaWVudC5jYWNoZS53YXRjaDxHUUxQYWdlc1F1ZXJ5LCBHUUxQYWdlc1F1ZXJ5VmFyaWFibGVzPih7XG4gICAgICAgICAgICAgICAgcXVlcnk6IHBhZ2VzUXVlcnkucXVlcnksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiBwYWdlc1F1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogKG5ld1BhZ2VzUXVlcnksIHByZXZpb3VzUGFnZXNRdWVyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3UGFnZXNRdWVyeSAmJiBwcmV2aW91c1BhZ2VzUXVlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUGFnZUlkcyA9IHByZXZpb3VzUGFnZXNRdWVyeS5yZXN1bHQ/LnBhZ2VzPy5tYXAoKHBhZ2UpID0+IHBhZ2UuaWQpID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFnZUlkcy5jdXJyZW50ID0gbmV3UGFnZXNRdWVyeS5yZXN1bHQ/LnBhZ2VzPy5tYXAoKHBhZ2UpID0+IHBhZ2UuaWQpLmZpbHRlcigoaWQpID0+ICFleGlzdGluZ1BhZ2VJZHMuaW5jbHVkZXMoaWQpKSA/PyBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgbmV3UGFnZUlkcyB0byBwcmV2ZW50IHNsaWRlSW4gb24gZXZlcnkgcmVyZW5kZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdQYWdlSWRzLmN1cnJlbnQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcHRpbWlzdGljOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCBbY2xpZW50LmNhY2hlLCBwYWdlc1F1ZXJ5XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobmV3UGFnZUlkcy5jdXJyZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFnZXMuZmluZEluZGV4KChwYWdlKSA9PiBuZXdQYWdlSWRzLmN1cnJlbnQuaW5jbHVkZXMocGFnZS5pZCkpO1xuICAgICAgICAgICAgcmVmTGlzdC5jdXJyZW50Py5zY3JvbGxUb0l0ZW0oaW5kZXgsIFwic21hcnRcIik7XG4gICAgICAgIH1cbiAgICB9LCBbcGFnZXNdKTtcblxuICAgIGNvbnN0IHBhZ2VUcmVlU2VydmljZSA9IHVzZU1lbW8oKCkgPT4gbmV3IFBhZ2VUcmVlU2VydmljZShsZXZlbE9mZnNldFB4LCBwYWdlcyksIFtwYWdlc10pO1xuICAgIGNvbnN0IHsgc2NvcGUgfSA9IHVzZUNvbnRlbnRTY29wZSgpO1xuICAgIGNvbnN0IHNuYWNrYmFyQXBpID0gdXNlU25hY2tiYXJBcGkoKTtcblxuICAgIGNvbnN0IGRlYm91bmNlZFNldEhvdmVyU3RhdGUgPSB1c2VEZWJvdW5jZWRDYWxsYmFjayhcbiAgICAgICAgKHNldEhvdmVyU3RhdGU6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPERyb3BJbmZvIHwgdW5kZWZpbmVkPj4sIG5ld0hvdmVyU3RhdGU6IERyb3BJbmZvIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgICBzZXRIb3ZlclN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNFcXVhbChuZXdIb3ZlclN0YXRlLCBwcmV2U3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2U3RhdGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0hvdmVyU3RhdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIDUsXG4gICAgKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkUGFnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHBhZ2VzLmZpbHRlcigocGFnZSkgPT4gcGFnZS5zZWxlY3RlZCk7XG4gICAgfSwgW3BhZ2VzXSk7XG5cbiAgICBjb25zdCBtb3ZlQnlQb3NSZXF1ZXN0ID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIC8vIEBUT0RPOiBoYW5kbGUgcGF0aCBjb2xsaXNpb25zIHdoZW4gbW92aW5nIHBhZ2VzXG4gICAgICAgIGFzeW5jICh7IGlkcywgcGFyZW50SWQsIHBvc2l0aW9uIH06IHsgaWRzOiBzdHJpbmdbXTsgcGFyZW50SWQ6IHN0cmluZyB8IG51bGw7IHBvc2l0aW9uOiBudW1iZXIgfSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgY2xpZW50Lm11dGF0ZSh7XG4gICAgICAgICAgICAgICAgbXV0YXRpb246IE1PVkVfUEFHRV9UUkVFX05PREVTX0JZX1BPUyxcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgaWRzOiBpZHMsXG4gICAgICAgICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3M6IHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW1pc3RpY1Jlc3BvbnNlOiAodmFyaWFibGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VUcmVlTm9kZXM6IEdRTE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NNdXRhdGlvbltcIm1vdmVQYWdlVHJlZU5vZGVzQnlQb3NcIl0gPSAodmFyaWFibGVzLmlkcyBhcyBzdHJpbmdbXSkubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGlkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNsdWdQYXRoUGFnZSA9IGNsaWVudC5jYWNoZS5yZWFkRnJhZ21lbnQ8R1FMUGFnZVNsdWdQYXRoRnJhZ21lbnQ+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudDogZ3FsYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgUGFnZVNsdWdQYXRoIG9uIFBhZ2VUcmVlTm9kZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190eXBlbmFtZTogXCJQYWdlVHJlZU5vZGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvczogcG9zaXRpb24gKyBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogc2x1Z1BhdGhQYWdlPy5zbHVnID8/IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHNsdWdQYXRoUGFnZT8ucGF0aCA/PyBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zOiBwYWdlVHJlZU5vZGVzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdXBkYXRlOiAocHJveHksIHsgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYWdlIHBvc2l0aW9ucyBvZiBhbGwgb3RoZXIgcGFnZXRyZWUgbm9kZXMgYXJlIHVwZGF0ZWQgaW4gdGhlIGNhY2hlXG4gICAgICAgICAgICAgICAgICAgIC8vID0+IHJlYWx0aW1lIHVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb3ZlZFBhZ2VUcmVlTm9kZXMgPSBkYXRhPy5tb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdE1vdmVkUGFnZVRyZWVOb2RlID0gbW92ZWRQYWdlVHJlZU5vZGVzPy5bMF07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW92ZWRQYWdlVHJlZU5vZGVzIHx8ICFmaXJzdE1vdmVkUGFnZVRyZWVOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlc1F1ZXJ5RGF0YSA9IHByb3h5LnJlYWRRdWVyeTxHUUxQYWdlc0NhY2hlUXVlcnksIEdRTFBhZ2VzQ2FjaGVRdWVyeVZhcmlhYmxlcz4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IFBBR0VTX0NBQ0hFX1FVRVJZLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFNjb3BlOiBzY29wZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlc0RhdGEgPSBwYWdlc1F1ZXJ5RGF0YT8ucGFnZXMgPz8gW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRQYWdlcyA9IHBhZ2VzRGF0YS5tYXAoKHBhZ2VEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUGFnZURhdGEgPSB7IC4uLnBhZ2VEYXRhIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlkcy5pbmNsdWRlcyhwYWdlRGF0YS5pZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGF0YS5wYXJlbnRJZCA9PT0gZmlyc3RNb3ZlZFBhZ2VUcmVlTm9kZS5wYXJlbnRJZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VEYXRhLnBvcyA+PSBmaXJzdE1vdmVkUGFnZVRyZWVOb2RlLnBvc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZFBhZ2VEYXRhLnBvcyA9IHVwZGF0ZWRQYWdlRGF0YS5wb3MgKyBtb3ZlZFBhZ2VUcmVlTm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZFBhZ2VEYXRhO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcHJveHkud3JpdGVRdWVyeSh7IHF1ZXJ5OiBQQUdFU19DQUNIRV9RVUVSWSwgZGF0YTogeyBwYWdlczogdXBkYXRlZFBhZ2VzIH0gfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBbY2xpZW50LCBzY29wZSwgY2F0ZWdvcnldLFxuICAgICk7XG5cbiAgICBjb25zdCBtb3ZlQnlOZWlnaGJvdXJSZXF1ZXN0ID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIGFzeW5jICh7IGlkcywgcGFyZW50SWQsIGFmdGVySWQsIGJlZm9yZUlkIH06IHsgaWRzOiBzdHJpbmdbXTsgcGFyZW50SWQ6IHN0cmluZyB8IG51bGw7IGFmdGVySWQ6IHN0cmluZyB8IG51bGw7IGJlZm9yZUlkOiBzdHJpbmcgfCBudWxsIH0pID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGNsaWVudC5tdXRhdGUoe1xuICAgICAgICAgICAgICAgIG11dGF0aW9uOiBNT1ZFX1BBR0VfVFJFRV9OT0RFU19CWV9ORUlHSEJPVVJTLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICBpZHM6IGlkcyxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBwYXJlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVySWQ6IGFmdGVySWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVJZDogYmVmb3JlSWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBbY2xpZW50XSxcbiAgICApO1xuXG4gICAgY29uc3Qgb25Ecm9wID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIGFzeW5jIChkcmFnT2JqZWN0OiBQYWdlVHJlZURyYWdPYmplY3QsIGRyb3BUYXJnZXRQYWdlOiBQYWdlVHJlZVBhZ2UsIGRyb3BUYXJnZXQ6IERyb3BUYXJnZXQsIHRhcmdldExldmVsOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFnZUlkcyA9IHNlbGVjdGVkUGFnZXMubWFwKChwYWdlKSA9PiBwYWdlLmlkKTtcbiAgICAgICAgICAgIGxldCBwYWdlc1RvTW92ZTogUGFnZVRyZWVQYWdlW107XG4gICAgICAgICAgICBsZXQgaWRzVG9Nb3ZlOiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkUGFnZUlkcy5pbmNsdWRlcyhkcmFnT2JqZWN0LmlkKSkge1xuICAgICAgICAgICAgICAgIC8vIGZpbHRlciBvdXQgc3VicGFnZXMgaWYgdGhlaXIgcGFyZW50IGlzIHNlbGVjdGVkID0+IG9ubHkgdGhlIHBhcmVudCBoYXMgdG8gYmUgbW92ZWRcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFNlbGVjdGVkUGFnZXMgPSBzZWxlY3RlZFBhZ2VzLmZpbHRlcigocGFnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFnZS5wYXJlbnRJZCA9PT0gbnVsbCB8fCAhc2VsZWN0ZWRQYWdlSWRzLmluY2x1ZGVzKHBhZ2UucGFyZW50SWQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlkc1RvTW92ZSA9IGZpbHRlcmVkU2VsZWN0ZWRQYWdlcy5tYXAoKHBhZ2UpID0+IHBhZ2UuaWQpO1xuXG4gICAgICAgICAgICAgICAgcGFnZXNUb01vdmUgPSBmaWx0ZXJlZFNlbGVjdGVkUGFnZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlkc1RvTW92ZSA9IFtkcmFnT2JqZWN0LmlkXTtcbiAgICAgICAgICAgICAgICBwYWdlc1RvTW92ZSA9IFtkcmFnT2JqZWN0XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdXBkYXRlSW5mbyA9IHBhZ2VUcmVlU2VydmljZS5kcm9wQWxsb3dlZChwYWdlc1RvTW92ZSwgZHJvcFRhcmdldFBhZ2UsIGRyb3BUYXJnZXQsIHRhcmdldExldmVsKTtcbiAgICAgICAgICAgIGlmICghdXBkYXRlSW5mbykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXdhaXQgbW92ZUJ5UG9zUmVxdWVzdCh7IGlkczogaWRzVG9Nb3ZlLCBwYXJlbnRJZDogdXBkYXRlSW5mby5wYXJlbnRJZCwgcG9zaXRpb246IHVwZGF0ZUluZm8ucG9zaXRpb24gfSk7XG5cbiAgICAgICAgICAgIHNuYWNrYmFyQXBpLnNob3dTbmFja2JhcihcbiAgICAgICAgICAgICAgICA8VW5kb1NuYWNrYmFyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQucGFnZXRyZWUucGFnZU1vdmVkXCIgZGVmYXVsdE1lc3NhZ2U9XCJQYWdlIE1vdmVkXCIgLz59XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQ9e3sgcHJldmlvdXNQYWdlczogcGFnZXMsIHBhZ2VzVG9VbmRvOiBwYWdlc1RvTW92ZSB9fVxuICAgICAgICAgICAgICAgICAgICBvblVuZG9DbGljaz17YXN5bmMgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2aW91c1BhZ2VzLCBwYWdlc1RvVW5kbyB9ID0gcGF5bG9hZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkaXNhbGxvd2VkUmVmZXJlbmNlcyA9IFsuLi5wYWdlc1RvVW5kb107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhZ2VUb1VuZG8gb2YgcGFnZXNUb1VuZG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlSW5mbyA9IHBhZ2VUcmVlU2VydmljZS5nZXRVbmRvVXBkYXRlSW5mbyhwcmV2aW91c1BhZ2VzLCBwYWdlVG9VbmRvLCBkaXNhbGxvd2VkUmVmZXJlbmNlcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbW92ZUJ5TmVpZ2hib3VyUmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHM6IFtwYWdlVG9VbmRvLmlkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBwYWdlVG9VbmRvLnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJJZDogdXBkYXRlSW5mby5hZnRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlSWQ6IHVwZGF0ZUluZm8uYmVmb3JlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5tdXRhdGU8R1FMUmVzZXRTbHVnTXV0YXRpb24sIEdRTFJlc2V0U2x1Z011dGF0aW9uVmFyaWFibGVzPih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbjogUkVTRVRfU0xVRyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwYWdlVG9VbmRvLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHBhZ2VUb1VuZG8uc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FsbG93ZWRSZWZlcmVuY2VzID0gZGlzYWxsb3dlZFJlZmVyZW5jZXMuZmlsdGVyKChwYWdlKSA9PiBwYWdlLmlkICE9PSBwYWdlVG9VbmRvLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQucmVmZXRjaFF1ZXJpZXMoeyBpbmNsdWRlOiBbXCJQYWdlc1wiXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIFtzZWxlY3RlZFBhZ2VzLCBwYWdlVHJlZVNlcnZpY2UsIHBhZ2VzLCBtb3ZlQnlQb3NSZXF1ZXN0LCBzbmFja2JhckFwaSwgY2xpZW50LCBtb3ZlQnlOZWlnaGJvdXJSZXF1ZXN0XSxcbiAgICApO1xuXG4gICAgY29uc3QgcmVmTGlzdCA9IHVzZVJlZjxMaXN0PihudWxsKTtcbiAgICAvLyBleHBvc2UgdGhpcyBtZXRob2QgdG8gdGhlIHB1YmxpY1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICBzY3JvbGxUb0l0ZW06IChpbmRleDogbnVtYmVyLCBhbGlnbj86IEFsaWduKSA9PiB7XG4gICAgICAgICAgICByZWZMaXN0LmN1cnJlbnQ/LnNjcm9sbFRvSXRlbShpbmRleCwgYWxpZ24pO1xuICAgICAgICB9LFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHByb3BzRm9yVmlydHVhbExpc3QgPSB1c2VEbmRXaW5kb3dTY3JvbGwoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8UGFnZVRyZWVEcmFnTGF5ZXIgbnVtYmVyU2VsZWN0ZWRQYWdlcz17c2VsZWN0ZWRQYWdlcy5sZW5ndGh9IC8+XG4gICAgICAgICAgICA8Um9vdD5cbiAgICAgICAgICAgICAgICA8VGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDxBdXRvU2l6ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7KHsgaGVpZ2h0LCB3aWR0aCB9OiBTaXplKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQFRPRE86IGFkanVzdCBpdGVtU2l6ZSBmb3Igc21hbGxlciBzY3JlZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3JlZkxpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db3VudD17cGFnZXMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNpemU9ezUxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnNjYW5Db3VudD17MX0gLy8gZG8gbm90IGluY3JlYXNlIHRoaXMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHNjcm9sbEJlaGF2aW9yOiBcInNtb290aFwiIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckVsZW1lbnRUeXBlPXtWaXJ0dWFsTGlzdFBhZGRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc0ZvclZpcnR1YWxMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaW5kZXgsIHN0eWxlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcHJldlBhZ2UsIHBhZ2UsIG5leHRQYWdlXSA9IGdldExpbmtlZFBhZ2VzKHBhZ2VzLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhZ2VUcmVlUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BhZ2UuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsaXplZFN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBgJHtwYXJzZUZsb2F0KFN0cmluZyhzdHlsZT8udG9wKSkgKyBWSVJUVUFMX0xJU1RfUEFERElOR19TSVpFfXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtuZXdQYWdlSWRzLmN1cnJlbnQuaW5jbHVkZXMocGFnZS5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlPXtwYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlBhZ2U9e3ByZXZQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFBhZ2U9e25leHRQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdERpYWxvZ0FwaT17ZWRpdERpYWxvZ0FwaX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuZD17dG9nZ2xlRXhwYW5kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ecm9wPXtvbkRyb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdENoYW5nZWQ9e29uU2VsZWN0Q2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUcmVlU2VydmljZT17cGFnZVRyZWVTZXJ2aWNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkU2V0SG92ZXJTdGF0ZT17ZGVib3VuY2VkU2V0SG92ZXJTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVVcmw9e3NpdGVVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhZ2VzPXtzZWxlY3RlZFBhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvQXV0b1NpemVyPlxuICAgICAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgICA8L1Jvb3Q+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5jb25zdCBWSVJUVUFMX0xJU1RfUEFERElOR19TSVpFID0gMjQ7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBWaXJ0dWFsTGlzdFBhZGRlciA9IGZvcndhcmRSZWY8YW55LCBhbnk+KCh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4gKFxuICAgIDxkaXZcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgIGhlaWdodDogYCR7cGFyc2VGbG9hdChTdHJpbmcoc3R5bGU/LmhlaWdodCkpICsgVklSVFVBTF9MSVNUX1BBRERJTkdfU0laRSAqIDJ9cHhgLFxuICAgICAgICB9fVxuICAgICAgICB7Li4ucmVzdH1cbiAgICAvPlxuKSk7XG5cbmZ1bmN0aW9uIGdldExpbmtlZFBhZ2VzKHBhZ2VzOiBQYWdlVHJlZVBhZ2VbXSwgaW5kZXg6IG51bWJlcik6IFtQYWdlVHJlZVBhZ2UgfCB1bmRlZmluZWQsIFBhZ2VUcmVlUGFnZSwgUGFnZVRyZWVQYWdlIHwgdW5kZWZpbmVkXSB7XG4gICAgY29uc3QgcHJldlBhZ2UgPSBpbmRleCA+IDAgPyBwYWdlc1tpbmRleCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5leHRQYWdlID0gaW5kZXggKyAxIDwgcGFnZXMubGVuZ3RoID8gcGFnZXNbaW5kZXggKyAxXSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gW3ByZXZQYWdlLCBwYWdlc1tpbmRleF0sIG5leHRQYWdlXTtcbn1cblxuY29uc3QgUGFnZVRyZWVXaXRoUmVmID0gZm9yd2FyZFJlZihQYWdlVHJlZSk7XG5cbmV4cG9ydCB7IFBhZ2VUcmVlV2l0aFJlZiBhcyBQYWdlVHJlZSwgUGFnZVRyZWVSZWZBcGkgfTtcblxuY29uc3QgUm9vdCA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYDtcblxuY29uc3QgVGFibGUgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZmxleDogMTtcbmA7XG4iXX0= */",
487
+ styles: "flex:1/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9wYWdlVHJlZS9QYWdlVHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeVoyQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvcGFnZXMvcGFnZVRyZWUvUGFnZVRyZWUudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBPYnNlcnZhYmxlUXVlcnksIHVzZUFwb2xsb0NsaWVudCB9IGZyb20gXCJAYXBvbGxvL2NsaWVudFwiO1xuaW1wb3J0IHsgdHlwZSBJRWRpdERpYWxvZ0FwaSwgVW5kb1NuYWNrYmFyLCB1c2VTbmFja2JhckFwaSB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IGdxbCBmcm9tIFwiZ3JhcGhxbC10YWdcIjtcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2guaXNlcXVhbFwiO1xuaW1wb3J0IHtcbiAgICB0eXBlIERpc3BhdGNoLFxuICAgIGZvcndhcmRSZWYsXG4gICAgdHlwZSBGb3J3YXJkUmVmUmVuZGVyRnVuY3Rpb24sXG4gICAgdHlwZSBTZXRTdGF0ZUFjdGlvbixcbiAgICB1c2VDYWxsYmFjayxcbiAgICB1c2VFZmZlY3QsXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgICB1c2VNZW1vLFxuICAgIHVzZVJlZixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCBBdXRvU2l6ZXIsIHsgdHlwZSBTaXplIH0gZnJvbSBcInJlYWN0LXZpcnR1YWxpemVkLWF1dG8tc2l6ZXJcIjtcbmltcG9ydCB7IHR5cGUgQWxpZ24sIEZpeGVkU2l6ZUxpc3QgYXMgTGlzdCB9IGZyb20gXCJyZWFjdC13aW5kb3dcIjtcbmltcG9ydCB7IHVzZURlYm91bmNlZENhbGxiYWNrIH0gZnJvbSBcInVzZS1kZWJvdW5jZVwiO1xuXG5pbXBvcnQgeyB1c2VDb250ZW50U2NvcGUgfSBmcm9tIFwiLi4vLi4vY29udGVudFNjb3BlL1Byb3ZpZGVyXCI7XG5pbXBvcnQgeyB0eXBlIEdRTFBhZ2VzUXVlcnksIHR5cGUgR1FMUGFnZXNRdWVyeVZhcmlhYmxlcyB9IGZyb20gXCIuLi9wYWdlc1BhZ2UvY3JlYXRlUGFnZXNRdWVyeVwiO1xuaW1wb3J0IHtcbiAgICB0eXBlIEdRTE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NNdXRhdGlvbixcbiAgICB0eXBlIEdRTFBhZ2VzQ2FjaGVRdWVyeSxcbiAgICB0eXBlIEdRTFBhZ2VzQ2FjaGVRdWVyeVZhcmlhYmxlcyxcbiAgICB0eXBlIEdRTFBhZ2VTbHVnUGF0aEZyYWdtZW50LFxuICAgIHR5cGUgR1FMUmVzZXRTbHVnTXV0YXRpb24sXG4gICAgdHlwZSBHUUxSZXNldFNsdWdNdXRhdGlvblZhcmlhYmxlcyxcbn0gZnJvbSBcIi4vUGFnZVRyZWUuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgUGFnZVRyZWVEcmFnTGF5ZXIgZnJvbSBcIi4vUGFnZVRyZWVEcmFnTGF5ZXJcIjtcbmltcG9ydCBQYWdlVHJlZVJvdywgeyB0eXBlIERyb3BUYXJnZXQsIHR5cGUgUGFnZVRyZWVEcmFnT2JqZWN0IH0gZnJvbSBcIi4vUGFnZVRyZWVSb3dcIjtcbmltcG9ydCB7IHR5cGUgRHJvcEluZm8sIFBhZ2VUcmVlU2VydmljZSB9IGZyb20gXCIuL1BhZ2VUcmVlU2VydmljZVwiO1xuaW1wb3J0IHsgdXNlRG5kV2luZG93U2Nyb2xsIH0gZnJvbSBcIi4vdXNlRG5kV2luZG93U2Nyb2xsL3VzZURuZFdpbmRvd1Njcm9sbFwiO1xuaW1wb3J0IHsgdHlwZSBQYWdlVHJlZVBhZ2UgfSBmcm9tIFwiLi91c2VQYWdlVHJlZVwiO1xuXG5pbnRlcmZhY2UgUGFnZVRyZWVQcm9wcyB7XG4gICAgcGFnZXM6IFBhZ2VUcmVlUGFnZVtdO1xuICAgIGVkaXREaWFsb2dBcGk6IElFZGl0RGlhbG9nQXBpO1xuICAgIHRvZ2dsZUV4cGFuZDogKHBhZ2VJZDogc3RyaW5nKSA9PiB2b2lkO1xuICAgIG9uU2VsZWN0Q2hhbmdlZDogKHBhZ2VJZDogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgIHNpdGVVcmw6IHN0cmluZztcbn1cblxudHlwZSBQYWdlVHJlZVJlZkFwaSA9IHsgc2Nyb2xsVG9JdGVtOiBMaXN0W1wic2Nyb2xsVG9JdGVtXCJdIH07XG5cbmNvbnN0IG1vdmVQYWdlVHJlZU5vZGVzQnlQb3NpdGlvbk11dGF0aW9uID0gZ3FsYFxuICAgIG11dGF0aW9uIE1vdmVQYWdlVHJlZU5vZGVzQnlQb3MoJGlkczogW0lEIV0hLCAkaW5wdXQ6IE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NJbnB1dCEpIHtcbiAgICAgICAgbW92ZVBhZ2VUcmVlTm9kZXNCeVBvcyhpZHM6ICRpZHMsIGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBwYXJlbnRJZFxuICAgICAgICAgICAgcG9zXG4gICAgICAgICAgICBzbHVnXG4gICAgICAgICAgICBwYXRoXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5jb25zdCBtb3ZlUGFnZVRyZWVOb2Rlc0J5TmVpZ2hib3Vyc011dGF0aW9uID0gZ3FsYFxuICAgIG11dGF0aW9uIE1vdmVQYWdlVHJlZU5vZGVzQnlOZWlnaGJvdXIoJGlkczogW0lEIV0hLCAkaW5wdXQ6IE1vdmVQYWdlVHJlZU5vZGVzQnlOZWlnaGJvdXJJbnB1dCEpIHtcbiAgICAgICAgbW92ZVBhZ2VUcmVlTm9kZXNCeU5laWdoYm91cihpZHM6ICRpZHMsIGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBwYXJlbnRJZFxuICAgICAgICAgICAgcG9zXG4gICAgICAgICAgICBzbHVnXG4gICAgICAgICAgICBwYXRoXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5jb25zdCByZXNldFNsdWdNdXRhdGlvbiA9IGdxbGBcbiAgICBtdXRhdGlvbiBSZXNldFNsdWcoJGlkOiBJRCEsICRzbHVnOiBTdHJpbmchKSB7XG4gICAgICAgIHVwZGF0ZVBhZ2VUcmVlTm9kZVNsdWcoaWQ6ICRpZCwgc2x1ZzogJHNsdWcpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBzbHVnXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5jb25zdCBwYWdlc0NhY2hlUXVlcnkgPSBncWxgXG4gICAgcXVlcnkgUGFnZXNDYWNoZSgkY29udGVudFNjb3BlOiBQYWdlVHJlZU5vZGVTY29wZUlucHV0ISwgJGNhdGVnb3J5OiBTdHJpbmchKSB7XG4gICAgICAgIHBhZ2VzOiBwYWdlVHJlZU5vZGVMaXN0KHNjb3BlOiAkY29udGVudFNjb3BlLCBjYXRlZ29yeTogJGNhdGVnb3J5KSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgcGFyZW50SWRcbiAgICAgICAgICAgIHBvc1xuICAgICAgICB9XG4gICAgfVxuYDtcblxuLy8gQFRPRE86IENhbGN1bGF0ZSBkeW5hbWljYWxseVxuY29uc3QgbGV2ZWxPZmZzZXRQeCA9IDUwO1xuXG5jb25zdCBQYWdlVHJlZTogRm9yd2FyZFJlZlJlbmRlckZ1bmN0aW9uPFBhZ2VUcmVlUmVmQXBpLCBQYWdlVHJlZVByb3BzPiA9IChcbiAgICB7IHBhZ2VzLCBlZGl0RGlhbG9nQXBpLCB0b2dnbGVFeHBhbmQsIG9uU2VsZWN0Q2hhbmdlZCwgY2F0ZWdvcnksIHNpdGVVcmwgfSxcbiAgICByZWYsXG4pID0+IHtcbiAgICBjb25zdCBjbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcbiAgICBjb25zdCBuZXdQYWdlSWRzID0gdXNlUmVmPHN0cmluZ1tdPihbXSk7XG5cbiAgICBjb25zdCBxdWVyaWVzID0gY2xpZW50LmdldE9ic2VydmFibGVRdWVyaWVzKCk7XG4gICAgY29uc3QgcGFnZXNRdWVyeSA9IEFycmF5LmZyb20ocXVlcmllcy52YWx1ZXMoKSkuZmluZCgocXVlcnkpID0+IHF1ZXJ5LnF1ZXJ5TmFtZSA9PT0gXCJQYWdlc1wiKSBhc1xuICAgICAgICB8IE9ic2VydmFibGVRdWVyeTxHUUxQYWdlc1F1ZXJ5LCBHUUxQYWdlc1F1ZXJ5VmFyaWFibGVzPlxuICAgICAgICB8IHVuZGVmaW5lZDtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwYWdlc1F1ZXJ5KSB7XG4gICAgICAgICAgICBjbGllbnQuY2FjaGUud2F0Y2g8R1FMUGFnZXNRdWVyeSwgR1FMUGFnZXNRdWVyeVZhcmlhYmxlcz4oe1xuICAgICAgICAgICAgICAgIHF1ZXJ5OiBwYWdlc1F1ZXJ5LnF1ZXJ5LFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogcGFnZXNRdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgY2FsbGJhY2s6IChuZXdQYWdlc1F1ZXJ5LCBwcmV2aW91c1BhZ2VzUXVlcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1BhZ2VzUXVlcnkgJiYgcHJldmlvdXNQYWdlc1F1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1BhZ2VJZHMgPSBwcmV2aW91c1BhZ2VzUXVlcnkucmVzdWx0Py5wYWdlcz8ubWFwKChwYWdlKSA9PiBwYWdlLmlkKSA/PyBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhZ2VJZHMuY3VycmVudCA9IG5ld1BhZ2VzUXVlcnkucmVzdWx0Py5wYWdlcz8ubWFwKChwYWdlKSA9PiBwYWdlLmlkKS5maWx0ZXIoKGlkKSA9PiAhZXhpc3RpbmdQYWdlSWRzLmluY2x1ZGVzKGlkKSkgPz8gW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IG5ld1BhZ2VJZHMgdG8gcHJldmVudCBzbGlkZUluIG9uIGV2ZXJ5IHJlcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFnZUlkcy5jdXJyZW50ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW1pc3RpYzogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwgW2NsaWVudC5jYWNoZSwgcGFnZXNRdWVyeV0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG5ld1BhZ2VJZHMuY3VycmVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHBhZ2VzLmZpbmRJbmRleCgocGFnZSkgPT4gbmV3UGFnZUlkcy5jdXJyZW50LmluY2x1ZGVzKHBhZ2UuaWQpKTtcbiAgICAgICAgICAgIHJlZkxpc3QuY3VycmVudD8uc2Nyb2xsVG9JdGVtKGluZGV4LCBcInNtYXJ0XCIpO1xuICAgICAgICB9XG4gICAgfSwgW3BhZ2VzXSk7XG5cbiAgICBjb25zdCBwYWdlVHJlZVNlcnZpY2UgPSB1c2VNZW1vKCgpID0+IG5ldyBQYWdlVHJlZVNlcnZpY2UobGV2ZWxPZmZzZXRQeCwgcGFnZXMpLCBbcGFnZXNdKTtcbiAgICBjb25zdCB7IHNjb3BlIH0gPSB1c2VDb250ZW50U2NvcGUoKTtcbiAgICBjb25zdCBzbmFja2JhckFwaSA9IHVzZVNuYWNrYmFyQXBpKCk7XG5cbiAgICBjb25zdCBkZWJvdW5jZWRTZXRIb3ZlclN0YXRlID0gdXNlRGVib3VuY2VkQ2FsbGJhY2soXG4gICAgICAgIChzZXRIb3ZlclN0YXRlOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEcm9wSW5mbyB8IHVuZGVmaW5lZD4+LCBuZXdIb3ZlclN0YXRlOiBEcm9wSW5mbyB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgICAgc2V0SG92ZXJTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRXF1YWwobmV3SG92ZXJTdGF0ZSwgcHJldlN0YXRlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldlN0YXRlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdIb3ZlclN0YXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICA1LFxuICAgICk7XG5cbiAgICBjb25zdCBzZWxlY3RlZFBhZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBwYWdlcy5maWx0ZXIoKHBhZ2UpID0+IHBhZ2Uuc2VsZWN0ZWQpO1xuICAgIH0sIFtwYWdlc10pO1xuXG4gICAgY29uc3QgbW92ZUJ5UG9zUmVxdWVzdCA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAvLyBAVE9ETzogaGFuZGxlIHBhdGggY29sbGlzaW9ucyB3aGVuIG1vdmluZyBwYWdlc1xuICAgICAgICBhc3luYyAoeyBpZHMsIHBhcmVudElkLCBwb3NpdGlvbiB9OiB7IGlkczogc3RyaW5nW107IHBhcmVudElkOiBzdHJpbmcgfCBudWxsOyBwb3NpdGlvbjogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGNsaWVudC5tdXRhdGUoe1xuICAgICAgICAgICAgICAgIG11dGF0aW9uOiBtb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zaXRpb25NdXRhdGlvbixcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgaWRzOiBpZHMsXG4gICAgICAgICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3M6IHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW1pc3RpY1Jlc3BvbnNlOiAodmFyaWFibGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VUcmVlTm9kZXM6IEdRTE1vdmVQYWdlVHJlZU5vZGVzQnlQb3NNdXRhdGlvbltcIm1vdmVQYWdlVHJlZU5vZGVzQnlQb3NcIl0gPSAodmFyaWFibGVzLmlkcyBhcyBzdHJpbmdbXSkubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGlkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNsdWdQYXRoUGFnZSA9IGNsaWVudC5jYWNoZS5yZWFkRnJhZ21lbnQ8R1FMUGFnZVNsdWdQYXRoRnJhZ21lbnQ+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudDogZ3FsYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgUGFnZVNsdWdQYXRoIG9uIFBhZ2VUcmVlTm9kZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190eXBlbmFtZTogXCJQYWdlVHJlZU5vZGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvczogcG9zaXRpb24gKyBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogc2x1Z1BhdGhQYWdlPy5zbHVnID8/IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHNsdWdQYXRoUGFnZT8ucGF0aCA/PyBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zOiBwYWdlVHJlZU5vZGVzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdXBkYXRlOiAocHJveHksIHsgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYWdlIHBvc2l0aW9ucyBvZiBhbGwgb3RoZXIgcGFnZXRyZWUgbm9kZXMgYXJlIHVwZGF0ZWQgaW4gdGhlIGNhY2hlXG4gICAgICAgICAgICAgICAgICAgIC8vID0+IHJlYWx0aW1lIHVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb3ZlZFBhZ2VUcmVlTm9kZXMgPSBkYXRhPy5tb3ZlUGFnZVRyZWVOb2Rlc0J5UG9zO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdE1vdmVkUGFnZVRyZWVOb2RlID0gbW92ZWRQYWdlVHJlZU5vZGVzPy5bMF07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW92ZWRQYWdlVHJlZU5vZGVzIHx8ICFmaXJzdE1vdmVkUGFnZVRyZWVOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlc1F1ZXJ5RGF0YSA9IHByb3h5LnJlYWRRdWVyeTxHUUxQYWdlc0NhY2hlUXVlcnksIEdRTFBhZ2VzQ2FjaGVRdWVyeVZhcmlhYmxlcz4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHBhZ2VzQ2FjaGVRdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTY29wZTogc2NvcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZXNEYXRhID0gcGFnZXNRdWVyeURhdGE/LnBhZ2VzID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUGFnZXMgPSBwYWdlc0RhdGEubWFwKChwYWdlRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFBhZ2VEYXRhID0geyAuLi5wYWdlRGF0YSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpZHMuaW5jbHVkZXMocGFnZURhdGEuaWQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURhdGEucGFyZW50SWQgPT09IGZpcnN0TW92ZWRQYWdlVHJlZU5vZGUucGFyZW50SWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGF0YS5wb3MgPj0gZmlyc3RNb3ZlZFBhZ2VUcmVlTm9kZS5wb3NcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRQYWdlRGF0YS5wb3MgPSB1cGRhdGVkUGFnZURhdGEucG9zICsgbW92ZWRQYWdlVHJlZU5vZGVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRQYWdlRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHByb3h5LndyaXRlUXVlcnkoeyBxdWVyeTogcGFnZXNDYWNoZVF1ZXJ5LCBkYXRhOiB7IHBhZ2VzOiB1cGRhdGVkUGFnZXMgfSB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFtjbGllbnQsIHNjb3BlLCBjYXRlZ29yeV0sXG4gICAgKTtcblxuICAgIGNvbnN0IG1vdmVCeU5laWdoYm91clJlcXVlc3QgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgYXN5bmMgKHsgaWRzLCBwYXJlbnRJZCwgYWZ0ZXJJZCwgYmVmb3JlSWQgfTogeyBpZHM6IHN0cmluZ1tdOyBwYXJlbnRJZDogc3RyaW5nIHwgbnVsbDsgYWZ0ZXJJZDogc3RyaW5nIHwgbnVsbDsgYmVmb3JlSWQ6IHN0cmluZyB8IG51bGwgfSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgY2xpZW50Lm11dGF0ZSh7XG4gICAgICAgICAgICAgICAgbXV0YXRpb246IG1vdmVQYWdlVHJlZU5vZGVzQnlOZWlnaGJvdXJzTXV0YXRpb24sXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkczogaWRzLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJJZDogYWZ0ZXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUlkOiBiZWZvcmVJZCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFtjbGllbnRdLFxuICAgICk7XG5cbiAgICBjb25zdCBvbkRyb3AgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgYXN5bmMgKGRyYWdPYmplY3Q6IFBhZ2VUcmVlRHJhZ09iamVjdCwgZHJvcFRhcmdldFBhZ2U6IFBhZ2VUcmVlUGFnZSwgZHJvcFRhcmdldDogRHJvcFRhcmdldCwgdGFyZ2V0TGV2ZWw6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYWdlSWRzID0gc2VsZWN0ZWRQYWdlcy5tYXAoKHBhZ2UpID0+IHBhZ2UuaWQpO1xuICAgICAgICAgICAgbGV0IHBhZ2VzVG9Nb3ZlOiBQYWdlVHJlZVBhZ2VbXTtcbiAgICAgICAgICAgIGxldCBpZHNUb01vdmU6IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRQYWdlSWRzLmluY2x1ZGVzKGRyYWdPYmplY3QuaWQpKSB7XG4gICAgICAgICAgICAgICAgLy8gZmlsdGVyIG91dCBzdWJwYWdlcyBpZiB0aGVpciBwYXJlbnQgaXMgc2VsZWN0ZWQgPT4gb25seSB0aGUgcGFyZW50IGhhcyB0byBiZSBtb3ZlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkU2VsZWN0ZWRQYWdlcyA9IHNlbGVjdGVkUGFnZXMuZmlsdGVyKChwYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYWdlLnBhcmVudElkID09PSBudWxsIHx8ICFzZWxlY3RlZFBhZ2VJZHMuaW5jbHVkZXMocGFnZS5wYXJlbnRJZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWRzVG9Nb3ZlID0gZmlsdGVyZWRTZWxlY3RlZFBhZ2VzLm1hcCgocGFnZSkgPT4gcGFnZS5pZCk7XG5cbiAgICAgICAgICAgICAgICBwYWdlc1RvTW92ZSA9IGZpbHRlcmVkU2VsZWN0ZWRQYWdlcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWRzVG9Nb3ZlID0gW2RyYWdPYmplY3QuaWRdO1xuICAgICAgICAgICAgICAgIHBhZ2VzVG9Nb3ZlID0gW2RyYWdPYmplY3RdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVJbmZvID0gcGFnZVRyZWVTZXJ2aWNlLmRyb3BBbGxvd2VkKHBhZ2VzVG9Nb3ZlLCBkcm9wVGFyZ2V0UGFnZSwgZHJvcFRhcmdldCwgdGFyZ2V0TGV2ZWwpO1xuICAgICAgICAgICAgaWYgKCF1cGRhdGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhd2FpdCBtb3ZlQnlQb3NSZXF1ZXN0KHsgaWRzOiBpZHNUb01vdmUsIHBhcmVudElkOiB1cGRhdGVJbmZvLnBhcmVudElkLCBwb3NpdGlvbjogdXBkYXRlSW5mby5wb3NpdGlvbiB9KTtcblxuICAgICAgICAgICAgc25hY2tiYXJBcGkuc2hvd1NuYWNrYmFyKFxuICAgICAgICAgICAgICAgIDxVbmRvU25hY2tiYXJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5wYWdldHJlZS5wYWdlTW92ZWRcIiBkZWZhdWx0TWVzc2FnZT1cIlBhZ2UgTW92ZWRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZD17eyBwcmV2aW91c1BhZ2VzOiBwYWdlcywgcGFnZXNUb1VuZG86IHBhZ2VzVG9Nb3ZlIH19XG4gICAgICAgICAgICAgICAgICAgIG9uVW5kb0NsaWNrPXthc3luYyAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZpb3VzUGFnZXMsIHBhZ2VzVG9VbmRvIH0gPSBwYXlsb2FkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRpc2FsbG93ZWRSZWZlcmVuY2VzID0gWy4uLnBhZ2VzVG9VbmRvXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFnZVRvVW5kbyBvZiBwYWdlc1RvVW5kbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVJbmZvID0gcGFnZVRyZWVTZXJ2aWNlLmdldFVuZG9VcGRhdGVJbmZvKHByZXZpb3VzUGFnZXMsIHBhZ2VUb1VuZG8sIGRpc2FsbG93ZWRSZWZlcmVuY2VzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBtb3ZlQnlOZWlnaGJvdXJSZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkczogW3BhZ2VUb1VuZG8uaWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHBhZ2VUb1VuZG8ucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcklkOiB1cGRhdGVJbmZvLmFmdGVySWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVJZDogdXBkYXRlSW5mby5iZWZvcmVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50Lm11dGF0ZTxHUUxSZXNldFNsdWdNdXRhdGlvbiwgR1FMUmVzZXRTbHVnTXV0YXRpb25WYXJpYWJsZXM+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uOiByZXNldFNsdWdNdXRhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwYWdlVG9VbmRvLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHBhZ2VUb1VuZG8uc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FsbG93ZWRSZWZlcmVuY2VzID0gZGlzYWxsb3dlZFJlZmVyZW5jZXMuZmlsdGVyKChwYWdlKSA9PiBwYWdlLmlkICE9PSBwYWdlVG9VbmRvLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQucmVmZXRjaFF1ZXJpZXMoeyBpbmNsdWRlOiBbXCJQYWdlc1wiXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIFtzZWxlY3RlZFBhZ2VzLCBwYWdlVHJlZVNlcnZpY2UsIHBhZ2VzLCBtb3ZlQnlQb3NSZXF1ZXN0LCBzbmFja2JhckFwaSwgY2xpZW50LCBtb3ZlQnlOZWlnaGJvdXJSZXF1ZXN0XSxcbiAgICApO1xuXG4gICAgY29uc3QgcmVmTGlzdCA9IHVzZVJlZjxMaXN0PihudWxsKTtcbiAgICAvLyBleHBvc2UgdGhpcyBtZXRob2QgdG8gdGhlIHB1YmxpY1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICBzY3JvbGxUb0l0ZW06IChpbmRleDogbnVtYmVyLCBhbGlnbj86IEFsaWduKSA9PiB7XG4gICAgICAgICAgICByZWZMaXN0LmN1cnJlbnQ/LnNjcm9sbFRvSXRlbShpbmRleCwgYWxpZ24pO1xuICAgICAgICB9LFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHByb3BzRm9yVmlydHVhbExpc3QgPSB1c2VEbmRXaW5kb3dTY3JvbGwoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8UGFnZVRyZWVEcmFnTGF5ZXIgbnVtYmVyU2VsZWN0ZWRQYWdlcz17c2VsZWN0ZWRQYWdlcy5sZW5ndGh9IC8+XG4gICAgICAgICAgICA8Um9vdD5cbiAgICAgICAgICAgICAgICA8VGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDxBdXRvU2l6ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7KHsgaGVpZ2h0LCB3aWR0aCB9OiBTaXplKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQFRPRE86IGFkanVzdCBpdGVtU2l6ZSBmb3Igc21hbGxlciBzY3JlZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3JlZkxpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db3VudD17cGFnZXMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNpemU9ezUxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnNjYW5Db3VudD17MX0gLy8gZG8gbm90IGluY3JlYXNlIHRoaXMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHNjcm9sbEJlaGF2aW9yOiBcInNtb290aFwiIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckVsZW1lbnRUeXBlPXtWaXJ0dWFsTGlzdFBhZGRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc0ZvclZpcnR1YWxMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaW5kZXgsIHN0eWxlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcHJldlBhZ2UsIHBhZ2UsIG5leHRQYWdlXSA9IGdldExpbmtlZFBhZ2VzKHBhZ2VzLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhZ2VUcmVlUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BhZ2UuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsaXplZFN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBgJHtwYXJzZUZsb2F0KFN0cmluZyhzdHlsZT8udG9wKSkgKyBWSVJUVUFMX0xJU1RfUEFERElOR19TSVpFfXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtuZXdQYWdlSWRzLmN1cnJlbnQuaW5jbHVkZXMocGFnZS5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlPXtwYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlBhZ2U9e3ByZXZQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFBhZ2U9e25leHRQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdERpYWxvZ0FwaT17ZWRpdERpYWxvZ0FwaX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuZD17dG9nZ2xlRXhwYW5kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ecm9wPXtvbkRyb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdENoYW5nZWQ9e29uU2VsZWN0Q2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUcmVlU2VydmljZT17cGFnZVRyZWVTZXJ2aWNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkU2V0SG92ZXJTdGF0ZT17ZGVib3VuY2VkU2V0SG92ZXJTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVVcmw9e3NpdGVVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhZ2VzPXtzZWxlY3RlZFBhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvQXV0b1NpemVyPlxuICAgICAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgICA8L1Jvb3Q+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5jb25zdCBWSVJUVUFMX0xJU1RfUEFERElOR19TSVpFID0gMjQ7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBWaXJ0dWFsTGlzdFBhZGRlciA9IGZvcndhcmRSZWY8YW55LCBhbnk+KCh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4gKFxuICAgIDxkaXZcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgIGhlaWdodDogYCR7cGFyc2VGbG9hdChTdHJpbmcoc3R5bGU/LmhlaWdodCkpICsgVklSVFVBTF9MSVNUX1BBRERJTkdfU0laRSAqIDJ9cHhgLFxuICAgICAgICB9fVxuICAgICAgICB7Li4ucmVzdH1cbiAgICAvPlxuKSk7XG5cbmZ1bmN0aW9uIGdldExpbmtlZFBhZ2VzKHBhZ2VzOiBQYWdlVHJlZVBhZ2VbXSwgaW5kZXg6IG51bWJlcik6IFtQYWdlVHJlZVBhZ2UgfCB1bmRlZmluZWQsIFBhZ2VUcmVlUGFnZSwgUGFnZVRyZWVQYWdlIHwgdW5kZWZpbmVkXSB7XG4gICAgY29uc3QgcHJldlBhZ2UgPSBpbmRleCA+IDAgPyBwYWdlc1tpbmRleCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5leHRQYWdlID0gaW5kZXggKyAxIDwgcGFnZXMubGVuZ3RoID8gcGFnZXNbaW5kZXggKyAxXSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gW3ByZXZQYWdlLCBwYWdlc1tpbmRleF0sIG5leHRQYWdlXTtcbn1cblxuY29uc3QgUGFnZVRyZWVXaXRoUmVmID0gZm9yd2FyZFJlZihQYWdlVHJlZSk7XG5cbmV4cG9ydCB7IFBhZ2VUcmVlV2l0aFJlZiBhcyBQYWdlVHJlZSwgUGFnZVRyZWVSZWZBcGkgfTtcblxuY29uc3QgUm9vdCA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYDtcblxuY29uc3QgVGFibGUgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZmxleDogMTtcbmA7XG4iXX0= */",
488
488
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
489
489
  });
@@ -8,9 +8,7 @@ export type AllCategories = Array<{
8
8
  label: ReactNode;
9
9
  }>;
10
10
  export interface PageTreeContext {
11
- allCategories: AllCategories;
12
11
  currentCategory: string;
13
- documentTypes: Record<DocumentType, DocumentInterface>;
14
12
  getDocumentTypesByCategory?: (category: string) => Record<DocumentType, DocumentInterface>;
15
13
  tree: TreeMap<GQLPageTreePageFragment>;
16
14
  query: DocumentNode;
@@ -1 +1 @@
1
- {"version":3,"file":"PageTreeContext.d.ts","sourceRoot":"","sources":["../../../src/pages/pageTree/PageTreeContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC5B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACvD,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC3F,IAAI,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvC,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,sDAAwD,CAAC"}
1
+ {"version":3,"file":"PageTreeContext.d.ts","sourceRoot":"","sources":["../../../src/pages/pageTree/PageTreeContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC3F,IAAI,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvC,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,sDAAwD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageTreeRow.d.ts","sourceRoot":"","sources":["../../../src/pages/pageTree/PageTreeRow.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAA4C,MAAM,OAAO,CAAC;AAGzH,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAUnD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,CAAC;AACrE,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,UAAU,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;AAEpF,UAAU,gBAAgB;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,aAAa,EAAE,cAAc,CAAC;IAC9B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrI,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,eAAe,EAAE,eAAe,CAAC;IACjC,sBAAsB,EAAE,cAAc,CAClC,CAAC,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,GAAG,SAAS,KAAK,IAAI,CAC/G,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,YAAY,EAAE,CAAC;CACjC;AAOD,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAE9C,QAAA,MAAM,WAAW,oLAcd,gBAAgB,4CAkNlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"PageTreeRow.d.ts","sourceRoot":"","sources":["../../../src/pages/pageTree/PageTreeRow.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAA4C,MAAM,OAAO,CAAC;AAGzH,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAWnD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,CAAC;AACrE,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,UAAU,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;AAEpF,UAAU,gBAAgB;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,aAAa,EAAE,cAAc,CAAC;IAC9B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrI,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,eAAe,EAAE,eAAe,CAAC;IACjC,sBAAsB,EAAE,cAAc,CAClC,CAAC,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,GAAG,SAAS,KAAK,IAAI,CAC/G,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,YAAY,EAAE,CAAC;CACjC;AAOD,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAE9C,QAAA,MAAM,WAAW,oLAcd,gBAAgB,4CAkNlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -10,6 +10,7 @@ var _material = require("@mui/material");
10
10
  var _react = require("react");
11
11
  var _reactDnd = require("react-dnd");
12
12
  var _reactDndHtml5Backend = require("react-dnd-html5-backend");
13
+ var _pageTreeConfig = require("../pageTreeConfig");
13
14
  var _PageTreeTableRow = require("./common/PageTreeTableRow");
14
15
  var _InsertInBetweenAction = _interopRequireDefault(require("./InsertInBetweenAction/InsertInBetweenAction"));
15
16
  var _useButtonHoverStates2 = require("./InsertInBetweenAction/useButtonHoverStates");
@@ -19,7 +20,6 @@ var _PageLabel = _interopRequireDefault(require("./PageLabel"));
19
20
  var sc = _interopRequireWildcard(require("./PageTreeRow.sc"));
20
21
  var _PageTreeRowDivider = require("./PageTreeRowDivider");
21
22
  var _PageVisibility = _interopRequireDefault(require("./PageVisibility"));
22
- var _usePageTreeContext2 = require("./usePageTreeContext");
23
23
  var _jsxRuntime = require("react/jsx-runtime");
24
24
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
25
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -58,8 +58,8 @@ var PageTreeRow = function PageTreeRow(_ref) {
58
58
  setHoverState = _useState4[1];
59
59
  var _useStackSwitchApi = (0, _admin.useStackSwitchApi)(),
60
60
  activatePage = _useStackSwitchApi.activatePage;
61
- var _usePageTreeContext = (0, _usePageTreeContext2.usePageTreeContext)(),
62
- documentTypes = _usePageTreeContext.documentTypes;
61
+ var _usePageTreeConfig = (0, _pageTreeConfig.usePageTreeConfig)(),
62
+ documentTypes = _usePageTreeConfig.documentTypes;
63
63
  var isEditable = !!(page.visibility !== "Archived" && documentTypes[page.documentType].editComponent);
64
64
  var _useButtonHoverStates = (0, _useButtonHoverStates2.useButtonHoverStates)(),
65
65
  topInBetweenButtonHovered = _useButtonHoverStates.top,
@@ -1 +1 @@
1
- {"version":3,"file":"PageTypeIcon.d.ts","sourceRoot":"","sources":["../../../src/pages/pageTree/PageTypeIcon.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,UAAU,iBAAiB;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAwB/E"}
1
+ {"version":3,"file":"PageTypeIcon.d.ts","sourceRoot":"","sources":["../../../src/pages/pageTree/PageTypeIcon.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,UAAU,iBAAiB;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAwB/E"}
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.PageTypeIcon = PageTypeIcon;
7
7
  var _adminIcons = require("@comet/admin-icons");
8
- var _usePageTreeContext2 = require("./usePageTreeContext");
8
+ var _pageTreeConfig = require("../pageTreeConfig");
9
9
  var _jsxRuntime = require("react/jsx-runtime");
10
10
  function PageTypeIcon(_ref) {
11
11
  var page = _ref.page,
12
12
  disabled = _ref.disabled;
13
13
  var iconColor = "primary";
14
- var _usePageTreeContext = (0, _usePageTreeContext2.usePageTreeContext)(),
15
- documentTypes = _usePageTreeContext.documentTypes;
14
+ var _usePageTreeConfig = (0, _pageTreeConfig.usePageTreeConfig)(),
15
+ documentTypes = _usePageTreeConfig.documentTypes;
16
16
  var documentType = documentTypes[page.documentType];
17
17
  var Icon;
18
18
  if (page.slug === "home") {
@@ -1,8 +1,7 @@
1
1
  import { type ApolloClient } from "@apollo/client";
2
2
  import { type ReactNode } from "react";
3
- import { type CmsBlockContext } from "../../../blocks/CmsBlockContextProvider";
4
3
  import { type ContentScopeInterface } from "../../../contentScope/Provider";
5
- import { type PageTreeContext } from "../PageTreeContext";
4
+ import { type PageTreeConfig } from "../../pageTreeConfig";
6
5
  import { type PagesClipboard } from "../useCopyPastePages";
7
6
  export interface SendPagesOptions {
8
7
  /**
@@ -15,8 +14,8 @@ export interface SendPagesOptions {
15
14
  interface SendPagesDependencies {
16
15
  client: ApolloClient<unknown>;
17
16
  scope: ContentScopeInterface;
18
- documentTypes: PageTreeContext["documentTypes"];
19
- blockContext: CmsBlockContext;
17
+ documentTypes: PageTreeConfig["documentTypes"];
18
+ apiUrl: string;
20
19
  damScope: Record<string, unknown>;
21
20
  currentCategory: string;
22
21
  }
@@ -35,6 +34,6 @@ interface SendPagesDependencies {
35
34
  * 4. Refetch Pages query
36
35
  *
37
36
  **/
38
- export declare function sendPages(parentId: string | null, { pages, scope: sourceContentScope }: PagesClipboard, options: SendPagesOptions, { client, scope: targetContentScope, documentTypes, blockContext, damScope: targetDamScope, currentCategory }: SendPagesDependencies, updateProgress: (progress: number, message: ReactNode) => void): Promise<void>;
37
+ export declare function sendPages(parentId: string | null, { pages, scope: sourceContentScope }: PagesClipboard, options: SendPagesOptions, { client, scope: targetContentScope, documentTypes, apiUrl, damScope: targetDamScope, currentCategory }: SendPagesDependencies, updateProgress: (progress: number, message: ReactNode) => void): Promise<void>;
39
38
  export {};
40
39
  //# sourceMappingURL=sendPages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sendPages.d.ts","sourceRoot":"","sources":["../../../../src/pages/pageTree/useCopyPastePages/sendPages.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAO,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAG5E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA4C/E,MAAM,WAAW,gBAAgB;IAC7B;;;SAGK;IACL,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;CACnE;AAED,UAAU,qBAAqB;IAC3B,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IAChD,YAAY,EAAE,eAAe,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;IAcI;AACJ,wBAAsB,SAAS,CAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,cAAc,EACpD,OAAO,EAAE,gBAAgB,EACzB,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,qBAAqB,EACpI,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,GAC/D,OAAO,CAAC,IAAI,CAAC,CA2Sf"}
1
+ {"version":3,"file":"sendPages.d.ts","sourceRoot":"","sources":["../../../../src/pages/pageTree/useCopyPastePages/sendPages.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAO,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAI5E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA4C/E,MAAM,WAAW,gBAAgB;IAC7B;;;SAGK;IACL,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;CACnE;AAED,UAAU,qBAAqB;IAC3B,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;IAcI;AACJ,wBAAsB,SAAS,CAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,cAAc,EACpD,OAAO,EAAE,gBAAgB,EACzB,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,qBAAqB,EAC9H,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,GAC/D,OAAO,CAAC,IAAI,CAAC,CAySf"}
@@ -10,6 +10,7 @@ var _admin = require("@comet/admin");
10
10
  var _lodash = _interopRequireDefault(require("lodash.isequal"));
11
11
  var _reactIntl = require("react-intl");
12
12
  var _uuid = require("uuid");
13
+ var _createHttpClient = require("../../../http/createHttpClient");
13
14
  var _TreeMapUtils = require("../treemap/TreeMapUtils");
14
15
  var _createInboxFolder = require("./createInboxFolder");
15
16
  var _jsxRuntime = require("react/jsx-runtime");
@@ -53,12 +54,12 @@ function sendPages(_x, _x2, _x3, _x4, _x5) {
53
54
  */
54
55
  function _sendPages() {
55
56
  _sendPages = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(parentId, _ref, options, _ref2, updateProgress) {
56
- var pages, sourceContentScope, client, targetContentScope, documentTypes, blockContext, targetDamScope, currentCategory, dependencyReplacements, inboxFolderIdForCopiedFiles, hasDamScope, progressPages, sourceScopes, _iterator3, _step3, sourcePage, documentType, _iterator4, _step4, _loop, _yield$createInboxFol, id, handlePageTreeNode, tree, _progressPages, _traverse, _progressPages2, _iterator6, _step6, _loop2;
57
+ var pages, sourceContentScope, client, targetContentScope, documentTypes, apiUrl, targetDamScope, currentCategory, dependencyReplacements, inboxFolderIdForCopiedFiles, hasDamScope, progressPages, sourceScopes, _iterator3, _step3, sourcePage, documentType, _iterator4, _step4, _loop, _yield$createInboxFol, id, handlePageTreeNode, tree, _progressPages, _traverse, _progressPages2, _iterator6, _step6, _loop2;
57
58
  return _regeneratorRuntime().wrap(function _callee3$(_context6) {
58
59
  while (1) switch (_context6.prev = _context6.next) {
59
60
  case 0:
60
61
  pages = _ref.pages, sourceContentScope = _ref.scope;
61
- client = _ref2.client, targetContentScope = _ref2.scope, documentTypes = _ref2.documentTypes, blockContext = _ref2.blockContext, targetDamScope = _ref2.damScope, currentCategory = _ref2.currentCategory;
62
+ client = _ref2.client, targetContentScope = _ref2.scope, documentTypes = _ref2.documentTypes, apiUrl = _ref2.apiUrl, targetDamScope = _ref2.damScope, currentCategory = _ref2.currentCategory;
62
63
  dependencyReplacements = createPageTreeNodeIdReplacements(pages);
63
64
  inboxFolderIdForCopiedFiles = undefined;
64
65
  hasDamScope = Object.entries(targetDamScope).length > 0; // 1. find all source scopes of file dependencies, to create an dam inbox folder if needed
@@ -105,7 +106,7 @@ function _sendPages() {
105
106
  _context.next = 12;
106
107
  break;
107
108
  case 4:
108
- if (!(damFile.fileUrl.startsWith(blockContext.damConfig.apiUrl) && (!hasDamScope || (0, _lodash["default"])(damFile.scope, targetDamScope)))) {
109
+ if (!(damFile.fileUrl.startsWith(apiUrl) && (!hasDamScope || (0, _lodash["default"])(damFile.scope, targetDamScope)))) {
109
110
  _context.next = 7;
110
111
  break;
111
112
  }
@@ -391,7 +392,7 @@ function _sendPages() {
391
392
  _iterator7 = _createForOfIteratorHelper(fileDependenciesFromDocument(documentType, sourcePage.document));
392
393
  _context5.prev = 10;
393
394
  _loop3 = /*#__PURE__*/_regeneratorRuntime().mark(function _loop3() {
394
- var damFile, _damFile$image2, fileResponse, fileBlob, file, formData, response, _yield$client$mutate3, data;
395
+ var damFile, _damFile$image2, fileResponse, fileBlob, file, formData, apiClient, response, _yield$client$mutate3, data;
395
396
  return _regeneratorRuntime().wrap(function _loop3$(_context4) {
396
397
  while (1) switch (_context4.prev = _context4.next) {
397
398
  case 0:
@@ -402,10 +403,10 @@ function _sendPages() {
402
403
  _context4.next = 4;
403
404
  break;
404
405
  }
405
- _context4.next = 39;
406
+ _context4.next = 40;
406
407
  break;
407
408
  case 4:
408
- if (!damFile.fileUrl.startsWith(blockContext.damConfig.apiUrl)) {
409
+ if (!damFile.fileUrl.startsWith(apiUrl)) {
409
410
  _context4.next = 8;
410
411
  break;
411
412
  }
@@ -416,7 +417,7 @@ function _sendPages() {
416
417
  //batch copy below
417
418
  fileIdsToCopyDirectly.push(damFile.id);
418
419
  }
419
- _context4.next = 39;
420
+ _context4.next = 40;
420
421
  break;
421
422
  case 8:
422
423
  if (inboxFolderIdForCopiedFiles) {
@@ -426,7 +427,7 @@ function _sendPages() {
426
427
  throw new Error("inbox folder must be created in step 0 when files need to be copied");
427
428
  case 10:
428
429
  if (!damFile.fileUrl.match(/^https?:\/\/(localhost|.*\.dev\.vivid-planet\.cloud|192\.168\.\d{1,3}\.\d{1,3}):\d{2,4}/)) {
429
- _context4.next = 32;
430
+ _context4.next = 33;
430
431
  break;
431
432
  }
432
433
  _context4.next = 13;
@@ -448,24 +449,25 @@ function _sendPages() {
448
449
  if (damFile.altText) formData.append("altText", damFile.altText);
449
450
  if (damFile.license) formData.append("license", JSON.stringify(damFile.license));
450
451
  if ((_damFile$image2 = damFile.image) !== null && _damFile$image2 !== void 0 && _damFile$image2.cropArea) formData.append("imageCropArea", JSON.stringify(damFile.image.cropArea));
451
- _context4.next = 28;
452
- return blockContext.damConfig.apiClient.post("/dam/files/upload", formData, {
452
+ apiClient = (0, _createHttpClient.createHttpClient)(apiUrl);
453
+ _context4.next = 29;
454
+ return apiClient.post("/dam/files/upload", formData, {
453
455
  // cancelToken, //TODO support cancel?
454
456
  headers: {
455
457
  "Content-Type": "multipart/form-data"
456
458
  }
457
459
  });
458
- case 28:
460
+ case 29:
459
461
  response = _context4.sent;
460
462
  dependencyReplacements.push({
461
463
  type: "DamFile",
462
464
  originalId: damFile.id,
463
465
  replaceWithId: response.data.id
464
466
  });
465
- _context4.next = 39;
467
+ _context4.next = 40;
466
468
  break;
467
- case 32:
468
- _context4.next = 34;
469
+ case 33:
470
+ _context4.next = 35;
469
471
  return client.mutate({
470
472
  mutation: (0, _client.gql)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n mutation DownloadDamFile($url: String!, $scope: DamScopeInput!, $input: UpdateDamFileInput!) {\n importDamFileByDownload(url: $url, scope: $scope, input: $input) {\n id\n }\n }\n "]))),
471
473
  variables: {
@@ -483,21 +485,21 @@ function _sendPages() {
483
485
  }
484
486
  }
485
487
  });
486
- case 34:
488
+ case 35:
487
489
  _yield$client$mutate3 = _context4.sent;
488
490
  data = _yield$client$mutate3.data;
489
491
  if (data !== null && data !== void 0 && data.importDamFileByDownload.id) {
490
- _context4.next = 38;
492
+ _context4.next = 39;
491
493
  break;
492
494
  }
493
495
  throw Error("Did not receive new id for imported dam file");
494
- case 38:
496
+ case 39:
495
497
  dependencyReplacements.push({
496
498
  type: "DamFile",
497
499
  originalId: damFile.id,
498
500
  replaceWithId: data.importDamFileByDownload.id
499
501
  });
500
- case 39:
502
+ case 40:
501
503
  case "end":
502
504
  return _context4.stop();
503
505
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useCopyPastePages.d.ts","sourceRoot":"","sources":["../../../src/pages/pageTree/useCopyPastePages.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AAIpD,OAAO,EAAE,KAAK,qBAAqB,EAAmB,MAAM,6BAA6B,CAAC;AAE1F,OAAO,EAAE,KAAK,WAAW,EAAiD,MAAM,uBAAuB,CAAC;AAExG,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAG7D,MAAM,MAAM,aAAa,GAAG,uBAAuB,GAAG;IAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC;AAExF,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,qBAAqB,CAAC;CAChC;AAUD;;;GAGG;AACH,KAAK,wBAAwB,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEpH,UAAU,oBAAoB;IAC1B;;;OAGG;IACH,mBAAmB,EAAE,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAEnF;;;OAGG;IACH,gBAAgB,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;OAEG;IACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAE1D;;;;OAIG;IACH,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAExG,cAAc,EAAE,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,iBAAS,iBAAiB,IAAI,oBAAoB,CAmIjD;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"useCopyPastePages.d.ts","sourceRoot":"","sources":["../../../src/pages/pageTree/useCopyPastePages.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AAIpD,OAAO,EAAE,KAAK,qBAAqB,EAAmB,MAAM,6BAA6B,CAAC;AAE1F,OAAO,EAAE,KAAK,WAAW,EAAiD,MAAM,uBAAuB,CAAC;AAGxG,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAG7D,MAAM,MAAM,aAAa,GAAG,uBAAuB,GAAG;IAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC;AAExF,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,qBAAqB,CAAC;CAChC;AAUD;;;GAGG;AACH,KAAK,wBAAwB,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEpH,UAAU,oBAAoB;IAC1B;;;OAGG;IACH,mBAAmB,EAAE,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAEnF;;;OAGG;IACH,gBAAgB,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;OAEG;IACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAE1D;;;;OAIG;IACH,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAExG,cAAc,EAAE,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,iBAAS,iBAAiB,IAAI,oBAAoB,CAoIjD;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -9,9 +9,10 @@ var _client = require("@apollo/client");
9
9
  var _admin = require("@comet/admin");
10
10
  var _react = require("react");
11
11
  var _reactIntl = require("react-intl");
12
- var _useCmsBlockContext = require("../../blocks/useCmsBlockContext");
12
+ var _CometConfigContext = require("../../config/CometConfigContext");
13
13
  var _Provider = require("../../contentScope/Provider");
14
14
  var _useDamScope = require("../../dam/config/useDamScope");
15
+ var _pageTreeConfig = require("../pageTreeConfig");
15
16
  var _ProgressDialog = require("./useCopyPastePages/ProgressDialog");
16
17
  var _sendPages = require("./useCopyPastePages/sendPages");
17
18
  var _usePageTreeContext2 = require("./usePageTreeContext");
@@ -41,14 +42,16 @@ function isPagesClipboard(pagesClipboard) {
41
42
  * This hooks provides some helper functions to copy / paste Pages and PageTreeNodes
42
43
  */
43
44
  function useCopyPastePages() {
45
+ var _useCometConfig = (0, _CometConfigContext.useCometConfig)(),
46
+ apiUrl = _useCometConfig.apiUrl;
47
+ var _usePageTreeConfig = (0, _pageTreeConfig.usePageTreeConfig)(),
48
+ documentTypes = _usePageTreeConfig.documentTypes;
44
49
  var _usePageTreeContext = (0, _usePageTreeContext2.usePageTreeContext)(),
45
- documentTypes = _usePageTreeContext.documentTypes,
46
50
  currentCategory = _usePageTreeContext.currentCategory;
47
51
  var client = (0, _client.useApolloClient)();
48
52
  var _useContentScope = (0, _Provider.useContentScope)(),
49
53
  scope = _useContentScope.scope;
50
54
  var damScope = (0, _useDamScope.useDamScope)();
51
- var blockContext = (0, _useCmsBlockContext.useCmsBlockContext)();
52
55
  var progress = (0, _ProgressDialog.useProgressDialog)({
53
56
  title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
54
57
  id: "comet.pages.insertingPages",
@@ -234,7 +237,7 @@ function useCopyPastePages() {
234
237
  client: client,
235
238
  scope: scope,
236
239
  documentTypes: documentTypes,
237
- blockContext: blockContext,
240
+ apiUrl: apiUrl,
238
241
  damScope: damScope,
239
242
  currentCategory: currentCategory
240
243
  }, updateProgress);
@@ -265,7 +268,7 @@ function useCopyPastePages() {
265
268
  return function (_x4, _x5, _x6) {
266
269
  return _ref5.apply(this, arguments);
267
270
  };
268
- }(), [client, scope, documentTypes, blockContext, damScope, currentCategory, updateProgress, errorDialog]);
271
+ }(), [client, scope, documentTypes, apiUrl, damScope, currentCategory, updateProgress, errorDialog]);
269
272
  return {
270
273
  prepareForClipboard: prepareForClipboard,
271
274
  writeToClipboard: writeToClipboard,