@alfresco/adf-content-services 8.1.0-14749266275 → 8.1.0-14757716769

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 (202) hide show
  1. package/esm2022/lib/agent/services/agent.service.mjs +4 -4
  2. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +4 -4
  3. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +4 -4
  4. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +4 -4
  5. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +4 -4
  6. package/esm2022/lib/aspect-list/aspect-list.component.mjs +4 -4
  7. package/esm2022/lib/aspect-list/aspect-list.module.mjs +5 -5
  8. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +4 -4
  9. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +4 -4
  10. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +4 -4
  11. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +4 -4
  12. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +4 -4
  13. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +5 -5
  14. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +4 -4
  15. package/esm2022/lib/category/categories-management/categories-management.component.mjs +4 -4
  16. package/esm2022/lib/category/category.module.mjs +5 -5
  17. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +4 -4
  18. package/esm2022/lib/category/services/category.service.mjs +4 -4
  19. package/esm2022/lib/common/services/card-view-content-update.service.mjs +4 -4
  20. package/esm2022/lib/common/services/content.service.mjs +4 -4
  21. package/esm2022/lib/common/services/discovery-api.service.mjs +4 -4
  22. package/esm2022/lib/common/services/favorites-api.service.mjs +4 -4
  23. package/esm2022/lib/common/services/nodes-api.service.mjs +4 -4
  24. package/esm2022/lib/common/services/people-content.service.mjs +4 -4
  25. package/esm2022/lib/common/services/rendition.service.mjs +4 -4
  26. package/esm2022/lib/common/services/saved-searches.service.mjs +4 -4
  27. package/esm2022/lib/common/services/sites.service.mjs +4 -4
  28. package/esm2022/lib/common/services/upload.service.mjs +4 -4
  29. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +4 -4
  30. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +4 -4
  31. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +4 -4
  32. package/esm2022/lib/content-metadata/content-metadata.module.mjs +5 -5
  33. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +4 -4
  34. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +4 -4
  35. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +4 -4
  36. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +4 -4
  37. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +4 -4
  38. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +4 -4
  39. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +4 -4
  40. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +4 -4
  41. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +4 -4
  42. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +4 -4
  43. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +5 -5
  44. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +4 -4
  45. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +4 -4
  46. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +4 -4
  47. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +4 -4
  48. package/esm2022/lib/content-node-share/content-node-share.module.mjs +5 -5
  49. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +4 -4
  50. package/esm2022/lib/content-type/content-type-dialog.component.mjs +4 -4
  51. package/esm2022/lib/content-type/content-type.service.mjs +4 -4
  52. package/esm2022/lib/content.module.mjs +5 -5
  53. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +4 -4
  54. package/esm2022/lib/dialogs/dialog.module.mjs +5 -5
  55. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +4 -4
  56. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +5 -5
  57. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +4 -4
  58. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +4 -4
  59. package/esm2022/lib/dialogs/library/library.dialog.mjs +4 -4
  60. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +4 -4
  61. package/esm2022/lib/directives/auto-focus.directive.mjs +4 -4
  62. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +4 -4
  63. package/esm2022/lib/directives/content-directive.module.mjs +5 -5
  64. package/esm2022/lib/directives/library-favorite.directive.mjs +4 -4
  65. package/esm2022/lib/directives/library-membership.directive.mjs +4 -4
  66. package/esm2022/lib/directives/node-counter.directive.mjs +7 -7
  67. package/esm2022/lib/directives/node-delete.directive.mjs +4 -4
  68. package/esm2022/lib/directives/node-download.directive.mjs +4 -4
  69. package/esm2022/lib/directives/node-favorite.directive.mjs +4 -4
  70. package/esm2022/lib/directives/node-lock.directive.mjs +4 -4
  71. package/esm2022/lib/directives/node-restore.directive.mjs +4 -4
  72. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +4 -4
  73. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +4 -4
  74. package/esm2022/lib/document-list/components/document-list.component.mjs +4 -4
  75. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +4 -4
  76. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +4 -4
  77. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +4 -4
  78. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +4 -4
  79. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +4 -4
  80. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +4 -4
  81. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +4 -4
  82. package/esm2022/lib/document-list/document-list.module.mjs +5 -5
  83. package/esm2022/lib/document-list/services/custom-resources.service.mjs +4 -4
  84. package/esm2022/lib/document-list/services/document-actions.service.mjs +4 -4
  85. package/esm2022/lib/document-list/services/document-list.service.mjs +4 -4
  86. package/esm2022/lib/document-list/services/folder-actions.service.mjs +4 -4
  87. package/esm2022/lib/document-list/services/lock.service.mjs +4 -4
  88. package/esm2022/lib/document-list/services/node-actions.service.mjs +4 -4
  89. package/esm2022/lib/group/services/group.service.mjs +4 -4
  90. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +4 -4
  91. package/esm2022/lib/material.module.mjs +5 -5
  92. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +4 -4
  93. package/esm2022/lib/mock/search.component.mock.mjs +4 -4
  94. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +4 -4
  95. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +5 -5
  96. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +4 -4
  97. package/esm2022/lib/node-comments/node-comments.component.mjs +4 -4
  98. package/esm2022/lib/node-comments/node-comments.module.mjs +5 -5
  99. package/esm2022/lib/node-comments/services/node-comments.service.mjs +4 -4
  100. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +4 -4
  101. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +4 -4
  102. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +4 -4
  103. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +4 -4
  104. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +4 -4
  105. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +4 -4
  106. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +4 -4
  107. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +4 -4
  108. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +4 -4
  109. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +4 -4
  110. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +4 -4
  111. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +4 -4
  112. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +4 -4
  113. package/esm2022/lib/permission-manager/permission-manager.module.mjs +5 -5
  114. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +4 -4
  115. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +4 -4
  116. package/esm2022/lib/pipes/content-pipe.module.mjs +5 -5
  117. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +4 -4
  118. package/esm2022/lib/prediction/services/prediction.service.mjs +4 -4
  119. package/esm2022/lib/search/components/empty-search-result.component.mjs +4 -4
  120. package/esm2022/lib/search/components/reset-search.directive.mjs +4 -4
  121. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +4 -4
  122. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +4 -4
  123. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +4 -4
  124. package/esm2022/lib/search/components/search-control.component.mjs +4 -4
  125. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +5 -5
  126. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +4 -4
  127. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +4 -4
  128. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +4 -4
  129. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +4 -4
  130. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +4 -4
  131. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +4 -4
  132. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +4 -4
  133. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +4 -4
  134. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +4 -4
  135. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +4 -4
  136. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +4 -4
  137. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +4 -4
  138. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +4 -4
  139. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +4 -4
  140. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +4 -4
  141. package/esm2022/lib/search/components/search-form/search-form.component.mjs +4 -4
  142. package/esm2022/lib/search/components/search-input/search-input.component.mjs +4 -4
  143. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +4 -4
  144. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +4 -4
  145. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +4 -4
  146. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +4 -4
  147. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +4 -4
  148. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +4 -4
  149. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +4 -4
  150. package/esm2022/lib/search/components/search-text/search-text.component.mjs +4 -4
  151. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +4 -4
  152. package/esm2022/lib/search/components/search.component.mjs +4 -4
  153. package/esm2022/lib/search/search.module.mjs +5 -5
  154. package/esm2022/lib/search/services/search-configuration.service.mjs +4 -4
  155. package/esm2022/lib/search/services/search-facet-filters.service.mjs +4 -4
  156. package/esm2022/lib/search/services/search-filter.service.mjs +4 -4
  157. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +4 -4
  158. package/esm2022/lib/search/services/search-query-builder.service.mjs +4 -4
  159. package/esm2022/lib/search/services/search.service.mjs +4 -4
  160. package/esm2022/lib/search-ai/services/search-ai.service.mjs +4 -4
  161. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +4 -4
  162. package/esm2022/lib/services/alfresco-api.service.mjs +4 -4
  163. package/esm2022/lib/tag/services/tag.service.mjs +4 -4
  164. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +4 -4
  165. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +4 -4
  166. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +4 -4
  167. package/esm2022/lib/tag/tag.module.mjs +5 -5
  168. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +4 -4
  169. package/esm2022/lib/testing/content.testing.module.mjs +5 -5
  170. package/esm2022/lib/tree/components/tree.component.mjs +4 -4
  171. package/esm2022/lib/tree/services/tree.service.mjs +4 -4
  172. package/esm2022/lib/tree/tree.module.mjs +5 -5
  173. package/esm2022/lib/tree-view/components/tree-view.component.mjs +4 -4
  174. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +4 -4
  175. package/esm2022/lib/tree-view/services/tree-view.service.mjs +4 -4
  176. package/esm2022/lib/tree-view/tree-view.module.mjs +5 -5
  177. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +4 -4
  178. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +4 -4
  179. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +4 -4
  180. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +4 -4
  181. package/esm2022/lib/upload/components/upload-button.component.mjs +4 -4
  182. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +4 -4
  183. package/esm2022/lib/upload/components/upload-version-button.component.mjs +4 -4
  184. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +4 -4
  185. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +4 -4
  186. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +4 -4
  187. package/esm2022/lib/upload/upload.module.mjs +5 -5
  188. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +4 -4
  189. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +5 -5
  190. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +4 -4
  191. package/esm2022/lib/version-manager/content-version.service.mjs +4 -4
  192. package/esm2022/lib/version-manager/version-comparison.component.mjs +4 -4
  193. package/esm2022/lib/version-manager/version-list.component.mjs +4 -4
  194. package/esm2022/lib/version-manager/version-manager.component.mjs +4 -4
  195. package/esm2022/lib/version-manager/version-manager.module.mjs +5 -5
  196. package/esm2022/lib/version-manager/version-upload.component.mjs +4 -4
  197. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +5 -5
  198. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +4 -4
  199. package/fesm2022/adf-content-services.mjs +629 -629
  200. package/fesm2022/adf-content-services.mjs.map +1 -1
  201. package/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.d.ts +1 -1
  202. package/package.json +3 -3
@@ -807,8 +807,8 @@ export class DocumentListComponent extends DataTableSchema {
807
807
  hasPreselectedRows() {
808
808
  return this.preselectedRows?.length > 0;
809
809
  }
810
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DocumentListComponent, deps: [{ token: i1.DocumentListService }, { token: i0.ElementRef }, { token: i2.AppConfigService }, { token: i2.UserPreferencesService }, { token: i3.ContentService }, { token: i2.ThumbnailService }, { token: i4.AlfrescoApiService }, { token: i3.NodesApiService }, { token: i2.DataTableService }, { token: i5.LockService }, { token: i6.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
811
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DocumentListComponent, isStandalone: true, selector: "adf-document-list", inputs: { includeFields: "includeFields", where: "where", permissionsStyle: "permissionsStyle", locationFormat: "locationFormat", navigate: "navigate", showHeader: "showHeader", navigationMode: "navigationMode", thumbnails: "thumbnails", selectionMode: "selectionMode", multiselect: "multiselect", contentActions: "contentActions", contentActionsPosition: "contentActionsPosition", contextMenuActions: "contextMenuActions", emptyFolderImageUrl: "emptyFolderImageUrl", allowDropFiles: "allowDropFiles", sorting: "sorting", additionalSorting: "additionalSorting", sortingMode: "sortingMode", rowStyle: "rowStyle", rowStyleClass: "rowStyleClass", loading: "loading", _rowFilter: "_rowFilter", rowFilter: "rowFilter", imageResolver: "imageResolver", stickyHeader: "stickyHeader", headerFilters: "headerFilters", filterValue: "filterValue", currentFolderId: "currentFolderId", preselectNodes: "preselectNodes", node: "node", maxItems: "maxItems", columnsPresetKey: "columnsPresetKey", setColumnsVisibility: "setColumnsVisibility", setColumnsWidths: "setColumnsWidths", setColumnsOrder: "setColumnsOrder", maxColumnsVisible: "maxColumnsVisible", isResizingEnabled: "isResizingEnabled", blurOnResize: "blurOnResize", displayCheckboxesOnHover: "displayCheckboxesOnHover", displayDragAndDropHint: "displayDragAndDropHint" }, outputs: { nodeClick: "nodeClick", nodeDblClick: "nodeDblClick", folderChange: "folderChange", preview: "preview", ready: "ready", error: "error", nodeSelected: "nodeSelected", filterSelection: "filterSelection", columnsWidthChanged: "columnsWidthChanged", columnsVisibilityChanged: "columnsVisibilityChanged", columnsOrderChanged: "columnsOrderChanged", selectedItemsCountChanged: "selectedItemsCountChanged" }, host: { listeners: { "contextmenu": "onShowContextMenu($event)" }, classAttribute: "adf-document-list" }, providers: [
810
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DocumentListComponent, deps: [{ token: i1.DocumentListService }, { token: i0.ElementRef }, { token: i2.AppConfigService }, { token: i2.UserPreferencesService }, { token: i3.ContentService }, { token: i2.ThumbnailService }, { token: i4.AlfrescoApiService }, { token: i3.NodesApiService }, { token: i2.DataTableService }, { token: i5.LockService }, { token: i6.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
811
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DocumentListComponent, isStandalone: true, selector: "adf-document-list", inputs: { includeFields: "includeFields", where: "where", permissionsStyle: "permissionsStyle", locationFormat: "locationFormat", navigate: "navigate", showHeader: "showHeader", navigationMode: "navigationMode", thumbnails: "thumbnails", selectionMode: "selectionMode", multiselect: "multiselect", contentActions: "contentActions", contentActionsPosition: "contentActionsPosition", contextMenuActions: "contextMenuActions", emptyFolderImageUrl: "emptyFolderImageUrl", allowDropFiles: "allowDropFiles", sorting: "sorting", additionalSorting: "additionalSorting", sortingMode: "sortingMode", rowStyle: "rowStyle", rowStyleClass: "rowStyleClass", loading: "loading", _rowFilter: "_rowFilter", rowFilter: "rowFilter", imageResolver: "imageResolver", stickyHeader: "stickyHeader", headerFilters: "headerFilters", filterValue: "filterValue", currentFolderId: "currentFolderId", preselectNodes: "preselectNodes", node: "node", maxItems: "maxItems", columnsPresetKey: "columnsPresetKey", setColumnsVisibility: "setColumnsVisibility", setColumnsWidths: "setColumnsWidths", setColumnsOrder: "setColumnsOrder", maxColumnsVisible: "maxColumnsVisible", isResizingEnabled: "isResizingEnabled", blurOnResize: "blurOnResize", displayCheckboxesOnHover: "displayCheckboxesOnHover", displayDragAndDropHint: "displayDragAndDropHint" }, outputs: { nodeClick: "nodeClick", nodeDblClick: "nodeDblClick", folderChange: "folderChange", preview: "preview", ready: "ready", error: "error", nodeSelected: "nodeSelected", filterSelection: "filterSelection", columnsWidthChanged: "columnsWidthChanged", columnsVisibilityChanged: "columnsVisibilityChanged", columnsOrderChanged: "columnsOrderChanged", selectedItemsCountChanged: "selectedItemsCountChanged" }, host: { listeners: { "contextmenu": "onShowContextMenu($event)" }, classAttribute: "adf-document-list" }, providers: [
812
812
  {
813
813
  provide: ADF_DOCUMENT_PARENT_COMPONENT,
814
814
  useExisting: DocumentListComponent
@@ -816,7 +816,7 @@ export class DocumentListComponent extends DataTableSchema {
816
816
  DataTableService
817
817
  ], queries: [{ propertyName: "columnList", first: true, predicate: DataColumnListComponent, descendants: true }, { propertyName: "customLoadingContent", first: true, predicate: CustomLoadingContentTemplateDirective, descendants: true }, { propertyName: "customNoPermissionsTemplate", first: true, predicate: CustomNoPermissionTemplateDirective, descendants: true }, { propertyName: "customNoContentTemplate", first: true, predicate: CustomEmptyContentTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dataTable", first: true, predicate: ["dataTable"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<adf-datatable\n #dataTable\n [selectionMode]=\"selectionMode\"\n [data]=\"data\"\n [actions]=\"contentActions\"\n [actionsPosition]=\"contentActionsPosition\"\n [multiselect]=\"multiselect\"\n [contextMenu]=\"contextMenuActions\"\n [rowStyle]=\"rowStyle\"\n [rowStyleClass]=\"rowStyleClass\"\n [showMainDatatableActions]=\"true\"\n [loading]=\"loading\"\n [noPermission]=\"noPermission\"\n [showHeader]=\"showHeader\"\n [rowMenuCacheEnabled]=\"false\"\n [stickyHeader]=\"stickyHeader\"\n [allowFiltering]=\"allowFiltering\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [displayCheckboxesOnHover]=\"displayCheckboxesOnHover\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\"\n (columnsWidthChanged)=\"onColumnsWidthChange($event)\"\n (columnOrderChanged)=\"onColumnOrderChange($event)\"\n (selectedItemsCountChanged)=\"onSelectedItemsCountChanged($event)\"\n (rowClick)=\"onNodeClick($event.value?.node)\"\n (rowDblClick)=\"onNodeDblClick($event.value?.node)\"\n (row-select)=\"onNodeSelect($any($event).detail)\"\n (row-unselect)=\"onNodeUnselect($any($event).detail)\"\n (sorting-changed)=\"onSortingChanged($any($event))\"\n [class.adf-datatable-gallery-thumbnails]=\"data.thumbnails\">\n\n <div *ngIf=\"headerFilters\">\n <adf-filter-header\n [currentFolderId]=\"currentFolderId\"\n [value]=\"filterValue\"\n (filterSelection)=\"onFilterSelectionChange($event)\" />\n </div>\n\n <adf-no-content-template>\n <ng-template>\n <adf-empty-list *ngIf=\"!customNoContentTemplate\">\n <div class=\"adf-empty-list_template adf-empty-folder\">\n <div class=\"adf-empty-folder-this-space-is-empty\">{{'ADF-DOCUMENT-LIST.EMPTY.HEADER' | translate}}</div>\n <ng-container *ngIf=\"displayDragAndDropHint\">\n <div class=\"adf-empty-folder-drag-drop\">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate }}</div>\n <div class=\"adf-empty-folder-any-files-here-to-add\">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.SUBTITLE' | translate }}</div>\n </ng-container>\n <img [alt]=\"'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate\" class=\"adf-empty-folder-image\" [src]=\"emptyFolderImageUrl\">\n </div>\n </adf-empty-list>\n <ng-content select=\"adf-custom-empty-content-template, empty-folder-content\" />\n </ng-template>\n </adf-no-content-template>\n\n <adf-no-permission-template>\n <ng-template>\n <div class=\"adf-no-permission__template\" *ngIf=\"!customNoPermissionsTemplate\">\n <mat-icon>error</mat-icon>\n <p class=\"adf-no-permission__template--text\">{{ 'ADF-DOCUMENT-LIST.NO_PERMISSION' | translate }}</p>\n </div>\n <ng-content select=\"adf-custom-no-permission-template, no-permission-content\" />\n </ng-template>\n </adf-no-permission-template>\n\n <adf-loading-content-template>\n <ng-template>\n <div class=\"adf-document-list-loading-container\" *ngIf=\"!customLoadingContent\">\n <mat-progress-spinner\n id=\"adf-document-list-loading\"\n class=\"adf-document-list-loading-margin\"\n [attr.aria-label]=\"'ADF-DOCUMENT-LIST.LOADER_LABEL' | translate\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\" />\n </div>\n <ng-content select=\"adf-custom-loading-content-template\" />\n </ng-template>\n </adf-loading-content-template>\n\n <adf-main-menu-datatable-template>\n <ng-template let-mainMenuTrigger>\n <adf-datatable-column-selector\n [columns]=\"columns\"\n [mainMenuTrigger]=\"mainMenuTrigger\"\n [columnsSorting]=\"false\"\n [maxColumnsVisible]=\"maxColumnsVisible\"\n (submitColumnsVisibility)=\"onColumnsVisibilityChange($event)\" />\n </ng-template>\n </adf-main-menu-datatable-template>\n\n</adf-datatable>\n", styles: [".adf-document-list{min-height:0;height:100%;background-color:var(--theme-background-color)}.adf-sticky-document-list{height:310px;overflow-y:auto}.adf-datatable-card .adf-datatable-selected>svg{fill:var(--theme-accent-color);width:30px;height:30px;position:absolute;top:10px}.adf-datatable-list .adf-datatable-selected{display:inline-table}.adf-datatable-list .adf-datatable-selected>svg{fill:var(--theme-accent-color);width:30px;height:30px}.adf-document-list_empty_template{text-align:center;margin-top:20px;margin-bottom:20px}.adf-no-permission__template{display:flex;align-items:center;justify-content:center;flex-direction:column;width:100%;height:100%;min-height:300px}.adf-no-permission__template mat-icon{font-size:52px;height:52px;width:52px}.adf-no-permission__template--text{color:var(--adf-theme-foreground-text-color);font-size:var(--theme-subheading-2-font-size)}.adf-document-list__this-space-is-empty{height:32px;opacity:.26;font-size:var(--theme-headline-font-size);line-height:1.33;letter-spacing:-1px;color:var(--adf-theme-foreground-text-color)}.adf-document-list__drag-drop{height:56px;opacity:.54;font-size:56px;line-height:1;letter-spacing:-2px;color:var(--adf-theme-foreground-text-color);margin-top:40px}.adf-document-list__any-files-here-to-add{height:24px;opacity:.54;font-size:var(--theme-subheading-2-font-size);line-height:1.5;letter-spacing:-.4px;color:var(--adf-theme-foreground-text-color);margin-top:17px}.adf-document-list__empty_doc_lib{width:565px;height:161px;object-fit:contain;margin-top:17px}.adf-document-list-loading-margin{margin:auto}.adf-document-list-loading-container{min-height:300px;display:flex;flex-direction:row;height:100%}.adf-empty-list-header{height:32px;opacity:.26;font-size:var(--theme-headline-font-size);line-height:1.33;letter-spacing:-1px;color:var(--adf-theme-foreground-text-color)}.adf-documentlist-pagination{color:var(--adf-theme-foreground-text-color)}.adf-documentlist-pagination .adf-pagination__block{border-right:none}.adf-empty-folder-this-space-is-empty{height:32px;font-size:var(--theme-headline-font-size);line-height:1.33;letter-spacing:-1px;color:var(--adf-theme-foreground-text-color-054)}.adf-empty-folder-drag-drop{min-height:56px;font-size:53px;line-height:1;letter-spacing:-2px;color:var(--adf-theme-foreground-text-color);margin-top:40px;word-break:break-all;white-space:pre-line}@media (max-width: 599.9px){.adf-empty-folder-drag-drop{font-size:48px}}.adf-empty-folder-any-files-here-to-add{min-height:24px;font-size:var(--theme-subheading-2-font-size);line-height:1.5;letter-spacing:-.4px;color:var(--adf-theme-foreground-text-color);margin-top:17px;word-break:break-all;white-space:pre-line}.adf-empty-folder-image{width:565px;max-width:100%;object-fit:contain;margin-top:17px}@media (max-width: 599.9px){.adf-empty-folder-image{width:250px}}@media (max-width: 959.9px){.adf-empty-folder-drag-drop,.adf-empty-folder-any-files-here-to-add{display:none}}.adf-datatable-gallery-thumbnails .adf-datatable-card .adf-datatable-row:is(adf-datatable-row){height:300px}.adf-datatable-gallery-thumbnails .adf-datatable-card .adf-datatable-row:is(adf-datatable-row) img{height:130px}.adf-datatable-gallery-thumbnails .adf-datatable-card .adf-datatable-row:is(adf-datatable-row) .adf-datatable-cell{overflow:visible}.adf-datatable-gallery-thumbnails .adf-datatable-card .adf-datatable-row:is(adf-datatable-row) .adf-datatable-cell.adf-datatable-cell--image{flex:0 0 auto;display:flex;flex-direction:column-reverse;justify-content:space-between}.adf-datatable-gallery-thumbnails .adf-datatable-card .adf-datatable-row:is(adf-datatable-row) .adf-datatable-cell.adf-datatable-cell--image .adf-cell-value{display:flex;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "showProvidedActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover", "enableDragRows"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged", "dragDropped"] }, { kind: "component", type: FilterHeaderComponent, selector: "adf-filter-header", inputs: ["value", "currentFolderId"], outputs: ["filterSelection"] }, { kind: "directive", type: NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "component", type: EmptyListComponent, selector: "adf-empty-list" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "directive", type: NoPermissionTemplateDirective, selector: "adf-no-permission-template, no-permission-template" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: MainMenuDataTableTemplateDirective, selector: "adf-main-menu-datatable-template" }, { kind: "component", type: ColumnsSelectorComponent, selector: "adf-datatable-column-selector", inputs: ["columns", "mainMenuTrigger", "columnsSorting", "maxColumnsVisible"], outputs: ["submitColumnsVisibility"] }], encapsulation: i0.ViewEncapsulation.None }); }
818
818
  }
819
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DocumentListComponent, decorators: [{
819
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DocumentListComponent, decorators: [{
820
820
  type: Component,
821
821
  args: [{ selector: 'adf-document-list', standalone: true, imports: [
822
822
  CommonModule,
@@ -961,4 +961,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
961
961
  type: HostListener,
962
962
  args: ['contextmenu', ['$event']]
963
963
  }] } });
964
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2RvY3VtZW50LWxpc3QvY29tcG9uZW50cy9kb2N1bWVudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvZG9jdW1lbnQtbGlzdC9jb21wb25lbnRzL2RvY3VtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsMENBQTBDO0FBQzFDLHlEQUF5RDtBQUV6RCxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixtQ0FBbUMsRUFDbkMscUNBQXFDLEVBQ3JDLG1DQUFtQyxFQUduQyx1QkFBdUIsRUFHdkIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQiwrQkFBK0IsRUFDL0Isa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMxQiw2QkFBNkIsRUFJN0IsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3ZCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFtQixVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JGLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7QUFFaEUsTUFBTSw0QkFBNEIsR0FBRyxPQUFPLENBQUM7QUErQjdDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxlQUFlO2FBQy9DLDRCQUF1QixHQUFXLE9BQU8sQUFBbEIsQ0FBbUI7YUFDMUMsNEJBQXVCLEdBQVcsVUFBVSxBQUFyQixDQUFzQjtJQXdKcEQ7Ozs7T0FJRztJQUNILElBQ0ksU0FBUyxDQUFDLFNBQW9CO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUE4Q0Qsa0RBQWtEO0lBQ2xELElBQ0ksb0JBQW9CLENBQUMsaUJBQThEO1FBQ25GLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUMvQyxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLElBQ0ksZ0JBQWdCLENBQUMsYUFBeUQ7UUFDMUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxJQUNJLGVBQWUsQ0FBQyxZQUFrQztRQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNyQyxDQUFDO0lBb0dELElBQUksUUFBUTtRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQ1ksbUJBQXdDLEVBQ3hDLFVBQXNCLEVBQ3RCLFNBQTJCLEVBQzNCLHNCQUE4QyxFQUM5QyxjQUE4QixFQUM5QixnQkFBa0MsRUFDbEMsa0JBQXNDLEVBQ3RDLFdBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixNQUFpQjtRQUV6QixLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBWnpDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQTFWN0IsdUJBQWtCLEdBQWUsSUFBSSxVQUFVLENBQUM7WUFDNUMsWUFBWSxFQUFFLEtBQUs7WUFDbkIsU0FBUyxFQUFFLENBQUM7WUFDWixRQUFRLEVBQUUsRUFBRTtZQUNaLFVBQVUsRUFBRSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztRQUVILG9CQUFlLEdBQWtCLENBQUMsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBeUJ2Rzs7OztXQUlHO1FBRUgscUJBQWdCLEdBQTJCLEVBQUUsQ0FBQztRQUU5QywwRUFBMEU7UUFFMUUsbUJBQWMsR0FBVyxHQUFHLENBQUM7UUFFN0IsMkRBQTJEO1FBRTNELGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFekIseUJBQXlCO1FBRXpCLGVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBRWpDOzs7V0FHRztRQUVILG1CQUFjLEdBQVcscUJBQXFCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxpQkFBaUI7UUFFekYsaURBQWlEO1FBRWpELGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFNUI7OztXQUdHO1FBRUgsa0JBQWEsR0FBVyxRQUFRLENBQUMsQ0FBQyx1QkFBdUI7UUFFekQsK0JBQStCO1FBRS9CLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLDJDQUEyQztRQUUzQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUVoQyxzRkFBc0Y7UUFFdEYsMkJBQXNCLEdBQVcsT0FBTyxDQUFDLENBQUMsYUFBYTtRQUV2RCx5Q0FBeUM7UUFFekMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRXBDLHdGQUF3RjtRQUV4Rix3QkFBbUIsR0FBVyxtQ0FBbUMsQ0FBQztRQUVsRTs7Ozs7OztXQU9HO1FBRUgsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFaEM7Ozs7V0FJRztRQUVILFlBQU8sR0FBMkIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbEQ7Ozs7V0FJRztRQUVILHNCQUFpQixHQUFnQixJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckU7Ozs7OztXQU1HO1FBRUgsZ0JBQVcsR0FBd0IsUUFBUSxDQUFDO1FBYzVDOzs7O1dBSUc7UUFFSCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBR3pCLGVBQVUsR0FBcUIsSUFBSSxDQUFDO1FBc0JwQzs7OztXQUlHO1FBRUgsa0JBQWEsR0FBZSxJQUFJLENBQUM7UUFFakMsc0NBQXNDO1FBRXRDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlCLHVDQUF1QztRQUV2QyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQU0vQiwwRkFBMEY7UUFFMUYsb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFFL0I7Ozs7V0FJRztRQUVILG1CQUFjLEdBQWdCLEVBQUUsQ0FBQztRQUVqQyxtRkFBbUY7UUFFbkYsU0FBSSxHQUFlLElBQUksQ0FBQztRQUV4Qiw4R0FBOEc7UUFFOUcsYUFBUSxHQUFXLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7UUE0QnBELDRDQUE0QztRQUU1QyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsbURBQW1EO1FBRW5ELGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLHlEQUF5RDtRQUV6RCw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFFakMsa0NBQWtDO1FBRWxDLDJCQUFzQixHQUFHLElBQUksQ0FBQztRQUU5QiwrQ0FBK0M7UUFFL0MsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRWhELHNEQUFzRDtRQUV0RCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRW5ELHNEQUFzRDtRQUV0RCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRWxEOzs7O1dBSUc7UUFFSCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFFOUMsK0VBQStFO1FBRS9FLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBRXZDLCtEQUErRDtRQUUvRCxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVoQyw2Q0FBNkM7UUFFN0MsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBRS9DLDhDQUE4QztRQUU5QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRXJELHdDQUF3QztRQUV4Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBOEMsQ0FBQztRQUVyRiw2Q0FBNkM7UUFFN0MsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQStDLENBQUM7UUFFM0Ysd0NBQXdDO1FBRXhDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRS9ELHNFQUFzRTtRQUV0RSw4QkFBeUIsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUtuRSxZQUFPLEdBQXlCLEVBQUUsQ0FBQztRQUNuQyx5QkFBb0IsR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVuRCxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixjQUFTLEdBQUcsSUFBSSxLQUFLLEVBQWEsQ0FBQztRQUNuQyxnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2pELG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLFlBQU8sR0FBYSxJQUFJLENBQUM7UUFDekIsb0JBQWUsR0FBYyxFQUFFLENBQUM7UUFLeEIsZ0JBQVcsR0FBb0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQy9ELGVBQVUsR0FBcUMsSUFBSSxlQUFlLENBQWtCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdHLG1CQUFjLEdBQW1DLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEcsaUJBQVksR0FBNEMsRUFBRSxDQUFDO1FBR2xELGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFzQjdDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHNCQUFzQjthQUN0QixNQUFNLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDO2FBQzNDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzFCLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQWU7UUFDN0IsSUFBSSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWlDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3ZELEtBQUssRUFBRSxhQUFhO29CQUNwQixJQUFJO29CQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CO2lCQUNyQyxDQUFDLENBQUMsQ0FBQztZQUNSLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLGNBQTJCLENBQUM7UUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN0QyxjQUFjLEdBQUcsSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ0osY0FBYyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRO1FBQ0osT0FBTyxDQUFDLENBQUMsZ0VBQWdFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxxQkFBcUIsQ0FDakMsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLEVBQ0osSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxjQUFjLENBQ3RCLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRW5ELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV4SCxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzlGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3JGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9ELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQzlDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRSxZQUFZLEtBQUssT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDakgsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoRCxDQUFDO2lCQUFNLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkUsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEtBQUs7UUFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLO1FBQ3RELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDckMsQ0FBQztZQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQU07UUFDeEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFxQjtRQUNoQyxJQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNkLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztZQUVsQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sR0FBRyxVQUFVLENBQUM7WUFDeEIsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDdEIsQ0FBQztZQUVELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTt3QkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3JDLENBQUMsQ0FBQyxDQUFDO29CQUNILE9BQU8sT0FBTyxDQUFDO2dCQUNuQixDQUFDO2dCQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPO3FCQUMvQixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDZCxNQUFNLFNBQVMsR0FBRyxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO29CQUU1RixPQUFPLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQztnQkFDOUQsQ0FBQyxDQUFDO3FCQUNELEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUVyRCxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDO2dCQUNuRCxPQUFPLGVBQWUsQ0FBQztZQUMzQixDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUEwQixFQUFFLElBQWU7UUFDN0QsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxNQUEwQixFQUFFLElBQWU7UUFDL0QsSUFBSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdkMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQTBCLEVBQUUsSUFBZTtRQUNoRSxJQUFJLE9BQU8sTUFBTSxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELElBQ0ksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUN2QyxDQUFDO1lBQ0MsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFHRCxpQkFBaUIsQ0FBQyxDQUFTO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFtQjtRQUMxQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBVSxDQUFDLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDakYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLDBCQUEwQixDQUFDLElBQVU7UUFDekMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakYsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFVO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8sc0JBQXNCLENBQUMsTUFBYztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxvQkFBb0IsQ0FBQyxJQUFlLEVBQUUsTUFBMEI7UUFDNUQsSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLE1BQU0sVUFBVSxHQUFHLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVuSCxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxVQUFVLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ3JELFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvRixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBYztRQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1IsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDeEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2IsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsa0JBQWtCLEdBQUcsS0FBSztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN2RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUN2SSxDQUFDLFlBQWdDLEVBQUUsRUFBRTtZQUNqQyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZLENBQUMsVUFBc0I7UUFDL0IsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzVFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ3JDLENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFrQjtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRWpFLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxVQUFrQixFQUFFLGdCQUF3QjtRQUNsRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDdEgsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFlO1FBQ3pCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEdBQUcsNEJBQTRCLENBQUM7WUFDakYsTUFBTSxvQkFBb0IsR0FBWSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRyxNQUFNLGFBQWEsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVqRyxJQUFJLG9CQUFvQixJQUFJLFFBQVEsSUFBSSxRQUFRLEdBQUcsYUFBYSxFQUFFLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwRixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxPQUFxQjtRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2xFLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDaEMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxDQUFDO1lBRUQsT0FBTyxpQkFBaUIsQ0FBQztRQUM3QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELG1CQUFtQixDQUFDLG1CQUFpQztRQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBcUI7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDakUsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELENBQUM7WUFDRCxPQUFPLGdCQUFnQixDQUFDO1FBQzVCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVQLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsU0FBb0I7UUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxXQUFXLENBQUMsWUFBWSxFQUFFO1lBQzNDLE1BQU0sRUFBRTtnQkFDSixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsU0FBUzthQUNsQjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0RCxNQUFNLEtBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUsscUJBQXFCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDekYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFvQjtRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUU7WUFDOUMsTUFBTSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxJQUFJO2dCQUNaLElBQUksRUFBRSxTQUFTO2FBQ2xCO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRELE1BQU0sS0FBSyxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxxQkFBcUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2dCQUN6RixJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsU0FBb0I7UUFDbkMsSUFBSSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxPQUFPLEdBQUc7b0JBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhO2lCQUM5QixDQUFDO2dCQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBZSxFQUFFLEVBQUU7b0JBQzdFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUE0RDtRQUNyRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxXQUFXLENBQUMsYUFBYSxFQUFFO1lBQzVDLE1BQU0sRUFBRTtnQkFDSixJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ3ZDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzthQUM1QjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUE0RDtRQUN2RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFO1lBQzlDLE1BQU0sRUFBRTtnQkFDSixJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ3ZDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzthQUM1QjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQW9CO1FBQ3JDLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUMzQixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0RCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFvQjtRQUNyQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzNCLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuRCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUF5QjtRQUN4QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHFDQUFxQztRQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUMsdUJBQXVCLENBQUM7UUFDeEUsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFVO1FBQ3hCLElBQUksaUJBQWlCLEdBQVksS0FBSyxDQUFDO1FBRXZDLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO1FBRUQsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0lBRU8sV0FBVyxDQUFDLFVBQXNCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGdCQUFnQixDQUFDLHNCQUE4QztRQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7UUFDNUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO0lBQ3JFLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxhQUE2QjtRQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsd0JBQXdCO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFTyxXQUFXLENBQUMsR0FBUTtRQUN4QixJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixDQUFDO1lBQ0wsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2IsV0FBVztZQUNmLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsdUNBQXVDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3SCxDQUFDO0lBRUQsc0NBQXNDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5SCxDQUFDO0lBRUQsZ0NBQWdDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFvQixDQUFDO1lBRWhFLEtBQUssTUFBTSxJQUFJLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0wsQ0FBQztJQUVPLHlCQUF5QjtRQUM3QixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUM7WUFDakMsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BFLElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ2pCLGNBQWMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsK0JBQStCO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLENBQUM7UUFFeEUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBMEIsRUFBRSxFQUFFO1lBQ3BELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRixJQUFJLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZCLG9CQUFvQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQWM7UUFDaEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsSUFBSSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDNUIsYUFBYSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsRUFBb0IsQ0FBQztZQUM1RSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDTCxDQUFDO0lBRU8scUJBQXFCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUM7SUFDM0MsQ0FBQztJQUVPLHVCQUF1QjtRQUMzQixPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssVUFBVSxDQUFDO0lBQzdDLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDOytHQXgvQlEscUJBQXFCO21HQUFyQixxQkFBcUIsMjJEQVZuQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSw2QkFBNkI7Z0JBQ3RDLFdBQVcsRUFBRSxxQkFBcUI7YUFDckM7WUFDRCxnQkFBZ0I7U0FDbkIsa0VBaUJhLHVCQUF1Qix1RkFHdkIscUNBQXFDLDhGQUdyQyxtQ0FBbUMsMEZBR25DLG1DQUFtQyxrTkMvSXJELHF4SUE0RkEsNnJIRElRLFlBQVksbUlBQ1osa0JBQWtCLDBzQkFDbEIscUJBQXFCLGtJQUNyQiwwQkFBMEIseUZBQzFCLGtCQUFrQiwwREFDbEIsZUFBZSw0RkFDZiw2QkFBNkIsOEZBQzdCLGFBQWEsb0xBQ2IsK0JBQStCLGtHQUMvQix3QkFBd0Isb09BQ3hCLGtDQUFrQyw2RUFDbEMsd0JBQXdCOzs0RkFjbkIscUJBQXFCO2tCQTdCakMsU0FBUzsrQkFDSSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLDZCQUE2Qjt3QkFDN0IsYUFBYTt3QkFDYiwrQkFBK0I7d0JBQy9CLHdCQUF3Qjt3QkFDeEIsa0NBQWtDO3dCQUNsQyx3QkFBd0I7cUJBQzNCLGFBR1U7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDZCQUE2Qjs0QkFDdEMsV0FBVyx1QkFBdUI7eUJBQ3JDO3dCQUNELGdCQUFnQjtxQkFDbkIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtpWUFnQnBDLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBSXJDLG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyxxQ0FBcUM7Z0JBSW5ELDJCQUEyQjtzQkFEMUIsWUFBWTt1QkFBQyxtQ0FBbUM7Z0JBSWpELHVCQUF1QjtzQkFEdEIsWUFBWTt1QkFBQyxtQ0FBbUM7Z0JBS2pELGFBQWE7c0JBRFosS0FBSztnQkFRTixLQUFLO3NCQURKLEtBQUs7Z0JBU04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBUU4sY0FBYztzQkFEYixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFRTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFZTixjQUFjO3NCQURiLEtBQUs7Z0JBU04sT0FBTztzQkFETixLQUFLO2dCQVNOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFXTixXQUFXO3NCQURWLEtBQUs7Z0JBU04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFTTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQVNGLFNBQVM7c0JBRFosS0FBSztnQkFxQk4sYUFBYTtzQkFEWixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFTTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBT0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQU9GLGVBQWU7c0JBRGxCLEtBQUs7Z0JBT04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUtOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixTQUFTO3NCQURSLE1BQU07Z0JBS1AsWUFBWTtzQkFEWCxNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFTUCxPQUFPO3NCQUROLE1BQU07Z0JBS1AsS0FBSztzQkFESixNQUFNO2dCQUtQLEtBQUs7c0JBREosTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBS1AsZUFBZTtzQkFEZCxNQUFNO2dCQUtQLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFLUCx3QkFBd0I7c0JBRHZCLE1BQU07Z0JBS1AsbUJBQW1CO3NCQURsQixNQUFNO2dCQUtQLHlCQUF5QjtzQkFEeEIsTUFBTTtnQkFJUCxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkEwUnhDLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIHJ4anMvbm8tc3ViamVjdC12YWx1ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5cbmltcG9ydCB7XG4gICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICBDb2x1bW5zU2VsZWN0b3JDb21wb25lbnQsXG4gICAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgQ3VzdG9tTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBDdXN0b21Ob1Blcm1pc3Npb25UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEYXRhQ2VsbEV2ZW50LFxuICAgIERhdGFDb2x1bW4sXG4gICAgRGF0YUNvbHVtbkxpc3RDb21wb25lbnQsXG4gICAgRGF0YVJvdyxcbiAgICBEYXRhUm93QWN0aW9uRXZlbnQsXG4gICAgRGF0YVNvcnRpbmcsXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZVNjaGVtYSxcbiAgICBEYXRhVGFibGVTZXJ2aWNlLFxuICAgIEVtcHR5TGlzdENvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIE1haW5NZW51RGF0YVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgTm9Db250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgTm9QZXJtaXNzaW9uVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgUGFnaW5hdGVkQ29tcG9uZW50LFxuICAgIFBhZ2luYXRpb25Nb2RlbCxcbiAgICBSZXF1ZXN0UGFnaW5hdGlvbk1vZGVsLFxuICAgIFNob3dIZWFkZXJNb2RlLFxuICAgIFRodW1ibmFpbFNlcnZpY2UsXG4gICAgVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBVc2VyUHJlZmVyZW5jZVZhbHVlc1xufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgTm9kZSwgTm9kZUVudHJ5LCBOb2RlUGFnaW5nLCBOb2Rlc0FwaSwgUGFnaW5hdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlLCBOb2Rlc0FwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoIH0gZnJvbSAnLi4vLi4vc2VhcmNoJztcbmltcG9ydCB7IFJvd0ZpbHRlciB9IGZyb20gJy4uL2RhdGEvcm93LWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBTaGFyZURhdGFSb3cgfSBmcm9tICcuLi9kYXRhL3NoYXJlLWRhdGEtcm93Lm1vZGVsJztcbmltcG9ydCB7IFNoYXJlRGF0YVRhYmxlQWRhcHRlciB9IGZyb20gJy4uL2RhdGEvc2hhcmUtZGF0YXRhYmxlLWFkYXB0ZXInO1xuaW1wb3J0IHsgQ29udGVudEFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NvbnRlbnQtYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IERvY3VtZW50TG9hZGVyTm9kZSB9IGZyb20gJy4uL21vZGVscy9kb2N1bWVudC1mb2xkZXIubW9kZWwnO1xuaW1wb3J0IHsgUGVybWlzc2lvblN0eWxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbnMtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgcHJlc2V0c0RlZmF1bHRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcmVzZXQubW9kZWwnO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RvY3VtZW50LWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBMb2NrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2suc2VydmljZSc7XG5pbXBvcnQgeyBBREZfRE9DVU1FTlRfUEFSRU5UX0NPTVBPTkVOVCB9IGZyb20gJy4vZG9jdW1lbnQtbGlzdC50b2tlbic7XG5pbXBvcnQgeyBGaWxlQXV0b0Rvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9maWxlLWF1dG8tZG93bmxvYWQvZmlsZS1hdXRvLWRvd25sb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlRW50aXR5RXZlbnQsIE5vZGVFbnRyeUV2ZW50IH0gZnJvbSAnLi9ub2RlLmV2ZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGaWx0ZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlci1oZWFkZXIvZmlsdGVyLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FsZnJlc2NvLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuY29uc3QgQllURVNfVE9fTUJfQ09OVkVSU0lPTl9WQUxVRSA9IDEwNDg1NzY7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWRvY3VtZW50LWxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgRmlsdGVySGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBOb0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgRW1wdHlMaXN0Q29tcG9uZW50LFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIE5vUGVybWlzc2lvblRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBMb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIE1haW5NZW51RGF0YVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIENvbHVtbnNTZWxlY3RvckNvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RvY3VtZW50LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQURGX0RPQ1VNRU5UX1BBUkVOVF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogRG9jdW1lbnRMaXN0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIERhdGFUYWJsZVNlcnZpY2VcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi1kb2N1bWVudC1saXN0JyB9XG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50TGlzdENvbXBvbmVudCBleHRlbmRzIERhdGFUYWJsZVNjaGVtYSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBQYWdpbmF0ZWRDb21wb25lbnQge1xuICAgIHN0YXRpYyBTSU5HTEVfQ0xJQ0tfTkFWSUdBVElPTjogc3RyaW5nID0gJ2NsaWNrJztcbiAgICBzdGF0aWMgRE9VQkxFX0NMSUNLX05BVklHQVRJT046IHN0cmluZyA9ICdkYmxjbGljayc7XG5cbiAgICBERUZBVUxUX1BBR0lOQVRJT046IFBhZ2luYXRpb24gPSBuZXcgUGFnaW5hdGlvbih7XG4gICAgICAgIGhhc01vcmVJdGVtczogZmFsc2UsXG4gICAgICAgIHNraXBDb3VudDogMCxcbiAgICAgICAgbWF4SXRlbXM6IDI1LFxuICAgICAgICB0b3RhbEl0ZW1zOiAwXG4gICAgfSk7XG5cbiAgICBERUZBVUxUX1NPUlRJTkc6IERhdGFTb3J0aW5nW10gPSBbbmV3IERhdGFTb3J0aW5nKCduYW1lJywgJ2FzYycpLCBuZXcgRGF0YVNvcnRpbmcoJ2lzRm9sZGVyJywgJ2Rlc2MnKV07XG5cbiAgICBAQ29udGVudENoaWxkKERhdGFDb2x1bW5MaXN0Q29tcG9uZW50KVxuICAgIGNvbHVtbkxpc3Q6IERhdGFDb2x1bW5MaXN0Q29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlKVxuICAgIGN1c3RvbUxvYWRpbmdDb250ZW50OiBDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21Ob1Blcm1pc3Npb25UZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21Ob1Blcm1pc3Npb25zVGVtcGxhdGU6IEN1c3RvbU5vUGVybWlzc2lvblRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21Ob0NvbnRlbnRUZW1wbGF0ZTogQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmU7XG5cbiAgICAvKiogSW5jbHVkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub2RlIGluIHRoZSBzZXJ2ZXIgcmVxdWVzdC4gRm9yIGV4YW1wbGU6IGFzc29jaWF0aW9uLCBpc0xpbmssIGlzTG9ja2VkIGFuZCBvdGhlcnMuICovXG4gICAgQElucHV0KClcbiAgICBpbmNsdWRlRmllbGRzOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlcnMgdGhlIE5vZGUgbGlzdCB1c2luZyB0aGUgKndoZXJlKiBjb25kaXRpb24gb2YgdGhlIFJFU1QgQVBJXG4gICAgICogKGZvciBleGFtcGxlLCBpc0ZvbGRlcj10cnVlKS4gU2VlIHRoZSBSRVNUIEFQSSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgd2hlcmU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERlZmluZSBhIHNldCBvZiBDU1Mgc3R5bGVzIHRvIGFwcGx5IGRlcGVuZGluZyBvbiB0aGUgcGVybWlzc2lvblxuICAgICAqIG9mIHRoZSB1c2VyIG9uIHRoYXQgbm9kZS4gU2VlIHRoZSBQZXJtaXNzaW9uIFN0eWxlIG1vZGVsXG4gICAgICogcGFnZSBmb3IgZnVydGhlciBkZXRhaWxzIGFuZCBleGFtcGxlcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBlcm1pc3Npb25zU3R5bGU6IFBlcm1pc3Npb25TdHlsZU1vZGVsW10gPSBbXTtcblxuICAgIC8qKiBUaGUgZGVmYXVsdCByb3V0ZSBmb3IgYWxsIHRoZSBsb2NhdGlvbi1iYXNlZCBjb2x1bW5zIChpZiBkZWNsYXJlZCkuICovXG4gICAgQElucHV0KClcbiAgICBsb2NhdGlvbkZvcm1hdDogc3RyaW5nID0gJy8nO1xuXG4gICAgLyoqIFRvZ2dsZXMgbmF2aWdhdGlvbiB0byBmb2xkZXIgY29udGVudCBvciBmaWxlIHByZXZpZXcgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBoZWFkZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dIZWFkZXIgPSBTaG93SGVhZGVyTW9kZS5EYXRhO1xuXG4gICAgLyoqXG4gICAgICogVXNlciBpbnRlcmFjdGlvbiBmb3IgZm9sZGVyIG5hdmlnYXRpb24gb3IgZmlsZSBwcmV2aWV3LlxuICAgICAqIFZhbGlkIHZhbHVlcyBhcmUgXCJjbGlja1wiIGFuZCBcImRibGNsaWNrXCIuIERlZmF1bHQgdmFsdWU6IFwiZGJsY2xpY2tcIlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdGlvbk1vZGU6IHN0cmluZyA9IERvY3VtZW50TGlzdENvbXBvbmVudC5ET1VCTEVfQ0xJQ0tfTkFWSUdBVElPTjsgLy8gY2xpY2t8ZGJsY2xpY2tcblxuICAgIC8qKiBTaG93IGRvY3VtZW50IHRodW1ibmFpbHMgcmF0aGVyIHRoYW4gaWNvbnMgKi9cbiAgICBASW5wdXQoKVxuICAgIHRodW1ibmFpbHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJvdyBzZWxlY3Rpb24gbW9kZS4gQ2FuIGJlIG51bGwsIGBzaW5nbGVgIG9yIGBtdWx0aXBsZWAuIEZvciBgbXVsdGlwbGVgIG1vZGUsXG4gICAgICogeW91IGNhbiB1c2UgQ21kIChtYWNPUykgb3IgQ3RybCAoV2luKSBtb2RpZmllciBrZXkgdG8gdG9nZ2xlIHNlbGVjdGlvbiBmb3IgbXVsdGlwbGUgcm93cy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbk1vZGU6IHN0cmluZyA9ICdzaW5nbGUnOyAvLyBudWxsfHNpbmdsZXxtdWx0aXBsZVxuXG4gICAgLyoqIFRvZ2dsZXMgbXVsdGlzZWxlY3QgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIGNvbnRlbnQgYWN0aW9ucyBmb3IgZWFjaCByb3cgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRBY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogUG9zaXRpb24gb2YgdGhlIGNvbnRlbnQgYWN0aW9ucyBkcm9wZG93biBtZW51LiBDYW4gYmUgc2V0IHRvIFwibGVmdFwiIG9yIFwicmlnaHRcIi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRBY3Rpb25zUG9zaXRpb246IHN0cmluZyA9ICdyaWdodCc7IC8vIGxlZnR8cmlnaHRcblxuICAgIC8qKiBUb2dnbGVzIGNvbnRleHQgbWVudXMgZm9yIGVhY2ggcm93ICovXG4gICAgQElucHV0KClcbiAgICBjb250ZXh0TWVudUFjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBDdXN0b20gaW1hZ2UgZm9yIGVtcHR5IGZvbGRlci4gRGVmYXVsdCB2YWx1ZTogJy4vYXNzZXRzL2ltYWdlcy9lbXB0eV9kb2NfbGliLnN2ZycgKi9cbiAgICBASW5wdXQoKVxuICAgIGVtcHR5Rm9sZGVySW1hZ2VVcmw6IHN0cmluZyA9ICcuL2Fzc2V0cy9pbWFnZXMvZW1wdHlfZG9jX2xpYi5zdmcnO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiB0cnVlLCB0aGlzIGVuYWJsZXMgeW91IHRvIGRyb3AgZmlsZXMgZGlyZWN0bHkgaW50byBzdWJmb2xkZXJzIHNob3duXG4gICAgICogYXMgaXRlbXMgaW4gdGhlIGxpc3Qgb3IgaW50byBhbm90aGVyIGZpbGUgdG8gdHJpZ2dlciB1cGRhdGluZyBpdCdzIHZlcnNpb24uXG4gICAgICogV2hlbiBmYWxzZSwgdGhlIGRyb3BwZWQgZmlsZSB3aWxsIGJlIGFkZGVkIHRvIHRoZVxuICAgICAqIGN1cnJlbnQgZm9sZGVyIChpZSwgdGhlIG9uZSBjb250YWluaW5nIGFsbCB0aGUgaXRlbXMgc2hvd24gaW4gdGhlIGxpc3QpLlxuICAgICAqIFNlZSB0aGUgVXBsb2FkIGRpcmVjdGl2ZSBmb3IgZnVydGhlciBkZXRhaWxzIGFib3V0IGhvdyB0aGUgZmlsZSBkcm9wIGlzXG4gICAgICogaGFuZGxlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RHJvcEZpbGVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGRlZmF1bHQgc29ydGluZy4gVGhlIGZvcm1hdCBpcyBhbiBhcnJheSBvZiAyIHN0cmluZ3MgYFtrZXksIGRpcmVjdGlvbl1gXG4gICAgICogaS5lLiBgWyduYW1lJywgJ2Rlc2MnXWAgb3IgYFsnbmFtZScsICdhc2MnXWAuIFNldCB0aGlzIHZhbHVlIG9ubHkgaWYgeW91IHdhbnQgdG9cbiAgICAgKiBvdmVycmlkZSB0aGUgZGVmYXVsdCBzb3J0aW5nIGRldGVjdGVkIGJ5IHRoZSBjb21wb25lbnQgYmFzZWQgb24gY29sdW1ucy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNvcnRpbmc6IHN0cmluZ1tdIHwgRGF0YVNvcnRpbmcgPSBbJ25hbWUnLCAnYXNjJ107XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGRlZmF1bHQgc29ydGluZy4gVGhlIGZvcm1hdCBpcyBhbiBhcnJheSBvZiBzdHJpbmdzIGBba2V5IGRpcmVjdGlvbiwgb3RoZXJLZXkgb3RoZXJEaXJlY3Rpb25dYFxuICAgICAqIGkuZS4gYFsnbmFtZSBkZXNjJywgJ25vZGVUeXBlIGFzYyddYCBvciBgWyduYW1lIGFzYyddYC4gU2V0IHRoaXMgdmFsdWUgaWYgeW91IHdhbnQgYSBiYXNlXG4gICAgICogcnVsZSB0byBiZSBhZGRlZCB0byB0aGUgc29ydGluZyBhcGFydCBmcm9tIHRoZSBvbmUgZHJpdmVuIGJ5IHRoZSBoZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhZGRpdGlvbmFsU29ydGluZzogRGF0YVNvcnRpbmcgPSBuZXcgRGF0YVNvcnRpbmcoJ2lzRm9sZGVyJywgJ2Rlc2MnKTtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgc29ydGluZyBtb2RlLiBDYW4gYmUgZWl0aGVyIGBjbGllbnRgIChpdGVtcyBpbiB0aGUgbGlzdFxuICAgICAqIGFyZSBzb3J0ZWQgY2xpZW50LXNpZGUpIG9yIGBzZXJ2ZXJgICh0aGUgb3JkZXJpbmcgc3VwcGxpZWQgYnkgdGhlXG4gICAgICogc2VydmVyIGlzIHVzZWQgd2l0aG91dCBmdXJ0aGVyIGNsaWVudC1zaWRlIHNvcnRpbmcpLlxuICAgICAqIE5vdGUgdGhhdCB0aGUgYHNlcnZlcmAgb3B0aW9uICpkb2VzIG5vdCogcmVxdWVzdCB0aGUgc2VydmVyIHRvIHNvcnQgdGhlIGRhdGFcbiAgICAgKiBiZWZvcmUgZGVsaXZlcmluZyBpdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNvcnRpbmdNb2RlOiAnc2VydmVyJyB8ICdjbGllbnQnID0gJ3NlcnZlcic7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW5saW5lIHN0eWxlIHRvIGFwcGx5IHRvIGV2ZXJ5IHJvdy4gU2VlXG4gICAgICogdGhlIEFuZ3VsYXIgTmdTdHlsZVxuICAgICAqIGRvY3MgZm9yIG1vcmUgZGV0YWlscyBhbmQgdXNhZ2UgZXhhbXBsZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByb3dTdHlsZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAgIC8qKiBUaGUgQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIGV2ZXJ5IHJvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm93U3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgbG9hZGluZyBzdGF0ZSBhbmQgYW5pbWF0ZWQgc3Bpbm5lcnMgZm9yIHRoZSBjb21wb25lbnQuIFVzZWQgaW5cbiAgICAgKiBjb21iaW5hdGlvbiB3aXRoIGBuYXZpZ2F0ZT1mYWxzZWAgdG8gcGVyZm9ybSBjdXN0b20gbmF2aWdhdGlvbiBhbmQgbG9hZGluZ1xuICAgICAqIHN0YXRlIGluZGljYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIF9yb3dGaWx0ZXI6IFJvd0ZpbHRlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGZ1bmN0aW9uIHRvIGNob29zZSB3aGV0aGVyIHRvIHNob3cgb3IgaGlkZSByb3dzLlxuICAgICAqIFNlZSB0aGUgW1JvdyBGaWx0ZXIgTW9kZWxdKHJvdy1maWx0ZXIubW9kZWwubWQpIHBhZ2UgZm9yXG4gICAgICogbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCByb3dGaWx0ZXIocm93RmlsdGVyOiBSb3dGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5fcm93RmlsdGVyID0gcm93RmlsdGVyO1xuICAgICAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEuc2V0RmlsdGVyKHRoaXMuX3Jvd0ZpbHRlcik7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHJvd0ZpbHRlcigpOiBSb3dGaWx0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93RmlsdGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBmdW5jdGlvbiB0byBjaG9vc2UgaW1hZ2UgZmlsZSBwYXRocyB0byBzaG93LiBTZWUgdGhlXG4gICAgICogW0ltYWdlIFJlc29sdmVyIE1vZGVsXShpbWFnZS1yZXNvbHZlci5tb2RlbC5tZCkgcGFnZSBmb3JcbiAgICAgKiBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW1hZ2VSZXNvbHZlcjogYW55IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgc3RpY2t5IGhlYWRlciBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RpY2t5SGVhZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgaGVhZGVyIGZpbHRlcnMgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGhlYWRlckZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBJbml0aWFsIHZhbHVlIGZvciBmaWx0ZXIuICovXG4gICAgQElucHV0KClcbiAgICBmaWx0ZXJWYWx1ZTogYW55O1xuXG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgZm9sZGVyIG5vZGUgdG8gZGlzcGxheSBvciBhIHJlc2VydmVkIHN0cmluZyBhbGlhcyBmb3Igc3BlY2lhbCBzb3VyY2VzICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50Rm9sZGVySWQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSBvZiBub2RlcyB0byBiZSBwcmUtc2VsZWN0ZWQuIEFsbCBub2RlcyBpbiB0aGVcbiAgICAgKiBhcnJheSBhcmUgcHJlLXNlbGVjdGVkIGluIG11bHRpIHNlbGVjdGlvbiBtb2RlLCBidXQgb25seSB0aGUgZmlyc3Qgbm9kZVxuICAgICAqIGlzIHByZS1zZWxlY3RlZCBpbiBzaW5nbGUgc2VsZWN0aW9uIG1vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcmVzZWxlY3ROb2RlczogTm9kZUVudHJ5W10gPSBbXTtcblxuICAgIC8qKiBUaGUgRG9jdW1lbnQgbGlzdCB3aWxsIHNob3cgYWxsIHRoZSBub2RlcyBjb250YWluZWQgaW4gdGhlIE5vZGVQYWdpbmcgZW50aXR5ICovXG4gICAgQElucHV0KClcbiAgICBub2RlOiBOb2RlUGFnaW5nID0gbnVsbDtcblxuICAgIC8qKiBEZWZhdWx0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgdXNlciBwcmVmZXJlbmNlIHNldHRpbmdzLiBVc2UgdGhpcyBvbmx5IGlmIHlvdSBhcmUgbm90IHVzaW5nIHBhZ2luYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBtYXhJdGVtczogbnVtYmVyID0gdGhpcy5ERUZBVUxUX1BBR0lOQVRJT04ubWF4SXRlbXM7XG5cbiAgICAvKiogS2V5IG9mIGNvbHVtbnMgcHJlc2V0IHNldCBpbiBleHRlbnNpb24uanNvbiAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHVtbnNQcmVzZXRLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogU2V0cyBjb2x1bW5zIHZpc2liaWxpdHkgZm9yIERhdGFUYWJsZVNjaGVtYSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNldENvbHVtbnNWaXNpYmlsaXR5KGNvbHVtbnNWaXNpYmlsaXR5OiB7IFtjb2x1bW5JZDogc3RyaW5nXTogYm9vbGVhbiB9IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29sdW1uc1Zpc2liaWxpdHkgPSBjb2x1bW5zVmlzaWJpbGl0eTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBjb2x1bW5zIHdpZHRoIGZvciBEYXRhVGFibGVTY2hlbWEgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZXRDb2x1bW5zV2lkdGhzKGNvbHVtbnNXaWR0aHM6IHsgW2NvbHVtbklkOiBzdHJpbmddOiBudW1iZXIgfSB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNvbHVtbnNXaWR0aHMgPSBjb2x1bW5zV2lkdGhzO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIGNvbHVtbnMgb3JkZXIgZm9yIERhdGFUYWJsZVNjaGVtYSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNldENvbHVtbnNPcmRlcihjb2x1bW5zT3JkZXI6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29sdW1uc09yZGVyID0gY29sdW1uc09yZGVyO1xuICAgIH1cblxuICAgIC8qKiBMaW1pdCBvZiBwb3NzaWJsZSB2aXNpYmxlIGNvbHVtbnMsIGluY2x1ZGluZyBcIiR0aHVtYm5haWxcIiBjb2x1bW4gaWYgcHJvdmlkZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heENvbHVtbnNWaXNpYmxlPzogbnVtYmVyO1xuXG4gICAgLyoqIEVuYWJsZXMgY29sdW1uIHJlc2l6aW5nIGZvciBkYXRhdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzUmVzaXppbmdFbmFibGVkID0gZmFsc2U7XG5cbiAgICAvKiogRW5hYmxlcyBibHVyIHdoZW4gcmVzaXppbmcgZGF0YXRhYmxlIGNvbHVtbnMgKi9cbiAgICBASW5wdXQoKVxuICAgIGJsdXJPblJlc2l6ZSA9IHRydWU7XG5cbiAgICAvKiogRGlzcGxheSBjaGVja2JveGVzIGluIGRhdGF0YWJsZSByb3dzIG9uIGhvdmVyIG9ubHkgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlDaGVja2JveGVzT25Ib3ZlciA9IGZhbHNlO1xuXG4gICAgLyoqIERpc3BsYXkgZHJhZyBhbmQgZHJvcCBoaW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheURyYWdBbmREcm9wSGludCA9IHRydWU7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBhIGxpc3Qgbm9kZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Tm9kZUVudGl0eUV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBkb3VibGUtY2xpY2tzIGEgbGlzdCBub2RlICovXG4gICAgQE91dHB1dCgpXG4gICAgbm9kZURibENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlRW50aXR5RXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBjdXJyZW50IGRpc3BsYXkgZm9sZGVyIGNoYW5nZXMgKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb2xkZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGVFbnRyeUV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGFjdHMgdXBvbiBmaWxlcyB3aXRoIGVpdGhlciBzaW5nbGUgb3IgZG91YmxlIGNsaWNrXG4gICAgICogKGRlcGVuZHMgb24gYG5hdmlnYXRpb24tbW9kZWApLiBVc2VmdWwgZm9yIGludGVncmF0aW9uIHdpdGggdGhlXG4gICAgICogVmlld2VyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlRW50aXR5RXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBEb2N1bWVudCBMaXN0IGhhcyBsb2FkZWQgYWxsIGl0ZW1zIGFuZCBpcyByZWFkeSBmb3IgdXNlICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGVQYWdpbmc+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBBUEkgZmFpbHMgdG8gZ2V0IHRoZSBEb2N1bWVudCBMaXN0IGRhdGEgKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbm9kZSBzZWxlY3Rpb24gY2hhbmdlICovXG4gICAgQE91dHB1dCgpXG4gICAgbm9kZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlRW50cnlbXT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBmaWx0ZXIgdmFsdWUgaXMgc2VsZWN0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaFtdPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBjb2x1bW4gd2lkdGhzIGNoYW5nZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNvbHVtbnNXaWR0aENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2NvbHVtbklkOiBzdHJpbmddOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gY29sdW1ucyB2aXNpYmlsaXR5IGNoYW5nZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBbY29sdW1uSWQ6IHN0cmluZ106IGJvb2xlYW4gfSB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gY29sdW1ucyBvcmRlciBjaGFuZ2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICBjb2x1bW5zT3JkZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHJvdyBpdGVtcyBjb3VudCBpbiB0aGUgdGFibGUgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZEl0ZW1zQ291bnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdkYXRhVGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGRhdGFUYWJsZTogRGF0YVRhYmxlQ29tcG9uZW50O1xuXG4gICAgYWN0aW9uczogQ29udGVudEFjdGlvbk1vZGVsW10gPSBbXTtcbiAgICBjb250ZXh0QWN0aW9uSGFuZGxlcjogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBkYXRhOiBTaGFyZURhdGFUYWJsZUFkYXB0ZXI7XG4gICAgbm9QZXJtaXNzaW9uOiBib29sZWFuID0gZmFsc2U7XG4gICAgc2VsZWN0aW9uID0gbmV3IEFycmF5PE5vZGVFbnRyeT4oKTtcbiAgICAkZm9sZGVyTm9kZTogU3ViamVjdDxOb2RlPiA9IG5ldyBTdWJqZWN0PE5vZGU+KCk7XG4gICAgYWxsb3dGaWx0ZXJpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICAgIG9yZGVyQnk6IHN0cmluZ1tdID0gbnVsbDtcbiAgICBwcmVzZWxlY3RlZFJvd3M6IERhdGFSb3dbXSA9IFtdO1xuXG4gICAgLy8gQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICBmb2xkZXJOb2RlOiBOb2RlO1xuXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvbjogUGFnaW5hdGlvbk1vZGVsID0gdGhpcy5ERUZBVUxUX1BBR0lOQVRJT047XG4gICAgcGFnaW5hdGlvbjogQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb25Nb2RlbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb25Nb2RlbD4odGhpcy5ERUZBVUxUX1BBR0lOQVRJT04pO1xuICAgIHNvcnRpbmdTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RGF0YVNvcnRpbmdbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFTb3J0aW5nW10+KHRoaXMuREVGQVVMVF9TT1JUSU5HKTtcblxuICAgIHByaXZhdGUgcm93TWVudUNhY2hlOiB7IFtrZXk6IHN0cmluZ106IENvbnRlbnRBY3Rpb25Nb2RlbFtdIH0gPSB7fTtcbiAgICBwcml2YXRlIGxvYWRpbmdUaW1lb3V0OiBhbnk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBwcml2YXRlIF9ub2Rlc0FwaTogTm9kZXNBcGk7XG4gICAgZ2V0IG5vZGVzQXBpKCk6IE5vZGVzQXBpIHtcbiAgICAgICAgdGhpcy5fbm9kZXNBcGkgPSB0aGlzLl9ub2Rlc0FwaSA/PyBuZXcgTm9kZXNBcGkodGhpcy5hbGZyZXNjb0FwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc0FwaTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkb2N1bWVudExpc3RTZXJ2aWNlOiBEb2N1bWVudExpc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRodW1ibmFpbFNlcnZpY2U6IFRodW1ibmFpbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYWxmcmVzY29BcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IE5vZGVzQXBpU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkYXRhVGFibGVTZXJ2aWNlOiBEYXRhVGFibGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxvY2tTZXJ2aWNlOiBMb2NrU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZ1xuICAgICkge1xuICAgICAgICBzdXBlcihhcHBDb25maWcsICdkZWZhdWx0JywgcHJlc2V0c0RlZmF1bHRNb2RlbCk7XG4gICAgICAgIHRoaXMubm9kZVNlcnZpY2Uubm9kZVVwZGF0ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChub2RlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGFUYWJsZVNlcnZpY2Uucm93VXBkYXRlLm5leHQoeyBpZDogbm9kZS5pZCwgb2JqOiB7IGVudHJ5OiBub2RlIH0gfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZVxuICAgICAgICAgICAgLnNlbGVjdChVc2VyUHJlZmVyZW5jZVZhbHVlcy5QYWdpbmF0aW9uU2l6ZSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocGFnU2l6ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWF4SXRlbXMgPSB0aGlzLl9wYWdpbmF0aW9uLm1heEl0ZW1zID0gcGFnU2l6ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldENvbnRleHRBY3Rpb25zKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgICAgICBpZiAobm9kZT8uZW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLmdldE5vZGVBY3Rpb25zKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGFjdGlvbnMgJiYgYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnMubWFwKChjdXJyZW50QWN0aW9uOiBDb250ZW50QWN0aW9uTW9kZWwpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsOiBjdXJyZW50QWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0OiB0aGlzLmNvbnRleHRBY3Rpb25IYW5kbGVyXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGVmYXVsdFNvcnRpbmcoKTogRGF0YVNvcnRpbmcge1xuICAgICAgICBsZXQgZGVmYXVsdFNvcnRpbmc6IERhdGFTb3J0aW5nO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNvcnRpbmcpKSB7XG4gICAgICAgICAgICBjb25zdCBba2V5LCBkaXJlY3Rpb25dID0gdGhpcy5zb3J0aW5nO1xuICAgICAgICAgICAgZGVmYXVsdFNvcnRpbmcgPSBuZXcgRGF0YVNvcnRpbmcoa2V5LCBkaXJlY3Rpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVmYXVsdFNvcnRpbmcgPSBuZXcgRGF0YVNvcnRpbmcodGhpcy5zb3J0aW5nLmtleSwgdGhpcy5zb3J0aW5nLmRpcmVjdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmYXVsdFNvcnRpbmc7XG4gICAgfVxuXG4gICAgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIS9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuZGF0YSB8fCB0aGlzLmRhdGEuZ2V0Um93cygpLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb3dNZW51Q2FjaGUgPSB7fTtcbiAgICAgICAgdGhpcy5sb2FkTGF5b3V0UHJlc2V0cygpO1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgU2hhcmVEYXRhVGFibGVBZGFwdGVyKFxuICAgICAgICAgICAgdGhpcy50aHVtYm5haWxTZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB0aGlzLmdldERlZmF1bHRTb3J0aW5nKCksXG4gICAgICAgICAgICB0aGlzLnNvcnRpbmdNb2RlLFxuICAgICAgICAgICAgdGhpcy5hbGxvd0Ryb3BGaWxlc1xuICAgICAgICApO1xuICAgICAgICB0aGlzLmRhdGEudGh1bWJuYWlscyA9IHRoaXMudGh1bWJuYWlscztcbiAgICAgICAgdGhpcy5kYXRhLnBlcm1pc3Npb25zU3R5bGUgPSB0aGlzLnBlcm1pc3Npb25zU3R5bGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3Jvd0ZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldEZpbHRlcih0aGlzLl9yb3dGaWx0ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VSZXNvbHZlcikge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldEltYWdlUmVzb2x2ZXIodGhpcy5pbWFnZVJlc29sdmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29udGV4dEFjdGlvbkhhbmRsZXIucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh2YWwpID0+IHRoaXMuY29udGV4dEFjdGlvbkNhbGxiYWNrKHZhbCkpO1xuXG4gICAgICAgIHRoaXMuZW5mb3JjZVNpbmdsZUNsaWNrTmF2aWdhdGlvbkZvck1vYmlsZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZSAmJiBPYmplY3Qua2V5cyh0aGlzLmZpbHRlclZhbHVlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dIZWFkZXIgPSBTaG93SGVhZGVyTW9kZS5BbHdheXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29sdW1uc1ByZXNldEtleSkge1xuICAgICAgICAgICAgdGhpcy5zZXRQcmVzZXRLZXkodGhpcy5jb2x1bW5zUHJlc2V0S2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5yZWxvYWQkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UucmVzZXRTZWxlY3Rpb24kLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uTGlzdCkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5MaXN0LmNvbHVtbnMuY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQ29sdW1ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5zZXRDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZWF0ZURhdGF0YWJsZVNjaGVtYSgpO1xuICAgICAgICB0aGlzLmRhdGEuc2V0Q29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKCFjaGFuZ2VzWydwcmVzZWxlY3ROb2RlcyddKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNvcnRpbmcpKSB7XG4gICAgICAgICAgICBjb25zdCBba2V5LCBkaXJlY3Rpb25dID0gdGhpcy5zb3J0aW5nO1xuICAgICAgICAgICAgdGhpcy5vcmRlckJ5ID0gdGhpcy5idWlsZE9yZGVyQnlBcnJheShrZXksIGRpcmVjdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9yZGVyQnkgPSB0aGlzLmJ1aWxkT3JkZXJCeUFycmF5KHRoaXMuc29ydGluZy5rZXksIHRoaXMuc29ydGluZy5kaXJlY3Rpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnRodW1ibmFpbHMgPSB0aGlzLnRodW1ibmFpbHM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5zb3J0aW5nTW9kZSAmJiAhY2hhbmdlcy5zb3J0aW5nTW9kZS5maXJzdENoYW5nZSAmJiB0aGlzLmRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5zb3J0aW5nTW9kZSA9IGNoYW5nZXMuc29ydGluZ01vZGUuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuc29ydGluZyAmJiAhY2hhbmdlcy5zb3J0aW5nLmZpcnN0Q2hhbmdlICYmIHRoaXMuZGF0YSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjaGFuZ2VzLnNvcnRpbmcuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICYmIG5ld1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBba2V5LCBkaXJlY3Rpb25dID0gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnNldFNvcnRpbmcobmV3IERhdGFTb3J0aW5nKGtleSwgZGlyZWN0aW9uKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Rm9sZGVySWQgJiYgY2hhbmdlc1snY3VycmVudEZvbGRlcklkJ10/LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snY3VycmVudEZvbGRlcklkJ10/LnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEZvbGRlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMubm9kZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVyZ2UgPSB0aGlzLl9wYWdpbmF0aW9uID8gdGhpcy5fcGFnaW5hdGlvbi5tZXJnZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5sb2FkUGFnZShjaGFuZ2VzLm5vZGUuY3VycmVudFZhbHVlLCBtZXJnZSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZUV4aXN0aW5nU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblByZXNlbGVjdE5vZGVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZWFkeShjaGFuZ2VzLm5vZGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlcy5pbWFnZVJlc29sdmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnNldEltYWdlUmVzb2x2ZXIoY2hhbmdlcy5pbWFnZVJlc29sdmVyLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWxvYWQoaGlkZUxvYWRpbmdTcGlubmVyID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLnJlbG9hZFdpdGhvdXRSZXNldHRpbmdTZWxlY3Rpb24oaGlkZUxvYWRpbmdTcGlubmVyKTtcbiAgICB9XG5cbiAgICByZWxvYWRXaXRob3V0UmVzZXR0aW5nU2VsZWN0aW9uKGhpZGVMb2FkaW5nU3Bpbm5lciA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEubG9hZFBhZ2UodGhpcy5ub2RlLCB0aGlzLl9wYWdpbmF0aW9uLm1lcmdlLCBudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlRXhpc3RpbmdTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25QcmVzZWxlY3ROb2RlcygpO1xuICAgICAgICAgICAgdGhpcy5zeW5jUGFnaW5hdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFSZWFkeSh0aGlzLm5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkRm9sZGVyKGhpZGVMb2FkaW5nU3Bpbm5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb250ZXh0QWN0aW9uQ2FsbGJhY2soYWN0aW9uKSB7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUNvbnRlbnRBY3Rpb24oYWN0aW9uLm5vZGUsIGFjdGlvbi5tb2RlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXROb2RlQWN0aW9ucyhub2RlOiBOb2RlRW50cnkgfCBhbnkpOiBDb250ZW50QWN0aW9uTW9kZWxbXSB7XG4gICAgICAgIGlmIChub2RlPy5lbnRyeSkge1xuICAgICAgICAgICAgbGV0IHRhcmdldCA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmIChub2RlLmVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgICAgICAgIHRhcmdldCA9ICdkb2N1bWVudCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUuZW50cnkuaXNGb2xkZXIpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSAnZm9sZGVyJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLnJvd01lbnVDYWNoZVtub2RlLmVudHJ5LmlkXTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWN0aW9uKGFjdGlvbiwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9ucztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25zQnlUYXJnZXQgPSB0aGlzLmFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IHR5cGVvZiBlbnRyeS52aXNpYmxlID09PSAnZnVuY3Rpb24nID8gZW50cnkudmlzaWJsZShub2RlKSA6IGVudHJ5LnZpc2libGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1Zpc2libGUgJiYgZW50cnkudGFyZ2V0LnRvTG93ZXJDYXNlKCkgPT09IHRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiBuZXcgQ29udGVudEFjdGlvbk1vZGVsKGFjdGlvbikpO1xuXG4gICAgICAgICAgICAgICAgYWN0aW9uc0J5VGFyZ2V0LmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBY3Rpb24oYWN0aW9uLCBub2RlKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMucm93TWVudUNhY2hlW25vZGUuZW50cnkuaWRdID0gYWN0aW9uc0J5VGFyZ2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb25zQnlUYXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoQWN0aW9uKGFjdGlvbjogQ29udGVudEFjdGlvbk1vZGVsLCBub2RlOiBOb2RlRW50cnkpIHtcbiAgICAgICAgYWN0aW9uLmRpc2FibGVkID0gdGhpcy5pc0FjdGlvbkRpc2FibGVkKGFjdGlvbiwgbm9kZSk7XG4gICAgICAgIGFjdGlvbi52aXNpYmxlID0gdGhpcy5pc0FjdGlvblZpc2libGUoYWN0aW9uLCBub2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uVmlzaWJsZShhY3Rpb246IENvbnRlbnRBY3Rpb25Nb2RlbCwgbm9kZTogTm9kZUVudHJ5KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2YgYWN0aW9uLnZpc2libGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBhY3Rpb24udmlzaWJsZShub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3Rpb24udmlzaWJsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBDb250ZW50QWN0aW9uTW9kZWwsIG5vZGU6IE5vZGVFbnRyeSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbi5kaXNhYmxlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi5kaXNhYmxlZChub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChhY3Rpb24ucGVybWlzc2lvbiAmJiBhY3Rpb24uZGlzYWJsZVdpdGhOb1Blcm1pc3Npb24gJiYgIXRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhub2RlLmVudHJ5LCBhY3Rpb24ucGVybWlzc2lvbikpIHx8XG4gICAgICAgICAgICB0aGlzLmxvY2tTZXJ2aWNlLmlzTG9ja2VkKG5vZGUuZW50cnkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uLmRpc2FibGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKVxuICAgIG9uU2hvd0NvbnRleHRNZW51KGU/OiBFdmVudCkge1xuICAgICAgICBpZiAoZSAmJiB0aGlzLmNvbnRleHRNZW51QWN0aW9ucykge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUbyhub2RlOiBOb2RlIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXROZXdGb2xkZXJQYWdpbmF0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9IG5vZGU7XG4gICAgICAgICAgICB0aGlzLmZvbGRlckNoYW5nZS5lbWl0KG5ldyBOb2RlRW50cnlFdmVudCh7IGlkOiBub2RlIH0gYXMgTm9kZSkpO1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FuTmF2aWdhdGVGb2xkZXIobm9kZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0TmV3Rm9sZGVyUGFnaW5hdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEZvbGRlcklkID0gdGhpcy5nZXROb2RlRm9sZGVyRGVzdGluYXRpb25JZChub2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvbGRlckNoYW5nZS5lbWl0KG5ldyBOb2RlRW50cnlFdmVudCh7IGlkOiB0aGlzLmN1cnJlbnRGb2xkZXJJZCB9IGFzIE5vZGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5vZGVGb2xkZXJEZXN0aW5hdGlvbklkKG5vZGU6IE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNMaW5rRm9sZGVyKG5vZGUpID8gbm9kZS5wcm9wZXJ0aWVzWydjbTpkZXN0aW5hdGlvbiddIDogbm9kZS5pZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGlua0ZvbGRlcihub2RlOiBOb2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAnYXBwOmZvbGRlcmxpbmsnICYmIG5vZGUucHJvcGVydGllcz8uWydjbTpkZXN0aW5hdGlvbiddO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ3VzdG9tU291cmNlRGF0YShub2RlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9IG5vZGVJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gZXhlY3V0aW5nIGNvbnRlbnQgYWN0aW9uIGZvciBhIGRvY3VtZW50IG9yIGZvbGRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBub2RlIE5vZGUgdG8gYmUgdGhlIGNvbnRleHQgb2YgdGhlIGV4ZWN1dGlvbi5cbiAgICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB0byBiZSBleGVjdXRlZCBhZ2FpbnN0IHRoZSBjb250ZXh0LlxuICAgICAqL1xuICAgIGV4ZWN1dGVDb250ZW50QWN0aW9uKG5vZGU6IE5vZGVFbnRyeSwgYWN0aW9uOiBDb250ZW50QWN0aW9uTW9kZWwpIHtcbiAgICAgICAgaWYgKG5vZGU/LmVudHJ5ICYmIGFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlclN1YiA9IHR5cGVvZiBhY3Rpb24uaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJyA/IGFjdGlvbi5oYW5kbGVyKG5vZGUsIHRoaXMsIGFjdGlvbi5wZXJtaXNzaW9uKSA6IG9mKHRydWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbi5leGVjdXRlID09PSAnZnVuY3Rpb24nICYmIGhhbmRsZXJTdWIpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVyU3ViLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiBhY3Rpb24uZXhlY3V0ZShub2RlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExvYWRpbmdTdGF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5kYXRhPy5nZXRSb3dzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubG9hZGluZ1RpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubG9hZGluZ1RpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubG9hZGluZ1RpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkRm9sZGVyKGhpZGVMb2FkaW5nU3Bpbm5lciA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghaGlkZUxvYWRpbmdTcGlubmVyKSB7XG4gICAgICAgICAgICB0aGlzLnNldExvYWRpbmdTdGF0ZSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UuaXNDdXN0b21Tb3VyY2VTZXJ2aWNlKHRoaXMuY3VycmVudEZvbGRlcklkKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDdXN0b21Tb3VyY2VEYXRhKHRoaXMuY3VycmVudEZvbGRlcklkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5sb2FkRm9sZGVyQnlOb2RlSWQodGhpcy5jdXJyZW50Rm9sZGVySWQsIHRoaXMuX3BhZ2luYXRpb24sIHRoaXMuaW5jbHVkZUZpZWxkcywgdGhpcy53aGVyZSwgdGhpcy5vcmRlckJ5KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoZG9jdW1lbnROb2RlOiBEb2N1bWVudExvYWRlck5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnROb2RlLmN1cnJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sZGVyTm9kZSA9IGRvY3VtZW50Tm9kZS5jdXJyZW50Tm9kZS5lbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZm9sZGVyTm9kZS5uZXh0KGRvY3VtZW50Tm9kZS5jdXJyZW50Tm9kZS5lbnRyeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25QYWdlTG9hZGVkKGRvY3VtZW50Tm9kZS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXNldFNlbGVjdGlvbigpIHtcbiAgICAgICAgdGhpcy5kYXRhVGFibGUucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgdGhpcy5ub1Blcm1pc3Npb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvblBhZ2VMb2FkZWQobm9kZVBhZ2luZzogTm9kZVBhZ2luZykge1xuICAgICAgICBpZiAobm9kZVBhZ2luZykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5sb2FkUGFnZShub2RlUGFnaW5nLCB0aGlzLl9wYWdpbmF0aW9uLm1lcmdlLCB0aGlzLmFsbG93RHJvcEZpbGVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlRXhpc3RpbmdTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25QcmVzZWxlY3ROb2RlcygpO1xuICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFSZWFkeShub2RlUGFnaW5nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU29ydGluZ0NoYW5nZWQoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgICAgIHRoaXMub3JkZXJCeSA9IHRoaXMuYnVpbGRPcmRlckJ5QXJyYXkoZXZlbnQuZGV0YWlsLnNvcnRpbmdLZXksIGV2ZW50LmRldGFpbC5kaXJlY3Rpb24pO1xuICAgICAgICB0aGlzLnNvcnRpbmcgPSBbZXZlbnQuZGV0YWlsLnNvcnRpbmdLZXksIGV2ZW50LmRldGFpbC5kaXJlY3Rpb25dO1xuICAgICAgICB0aGlzLnNvcnRpbmdTdWJqZWN0Lm5leHQoW3RoaXMuYWRkaXRpb25hbFNvcnRpbmcsIGV2ZW50LmRldGFpbF0pO1xuXG4gICAgICAgIGlmICh0aGlzLnNvcnRpbmdNb2RlID09PSAnc2VydmVyJykge1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRPcmRlckJ5QXJyYXkoY3VycmVudEtleTogc3RyaW5nLCBjdXJyZW50RGlyZWN0aW9uOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbYCR7dGhpcy5hZGRpdGlvbmFsU29ydGluZy5rZXl9ICR7dGhpcy5hZGRpdGlvbmFsU29ydGluZy5kaXJlY3Rpb259YCwgYCR7Y3VycmVudEtleX0gJHtjdXJyZW50RGlyZWN0aW9ufWBdO1xuICAgIH1cblxuICAgIG9uUHJldmlld0ZpbGUobm9kZTogTm9kZUVudHJ5KSB7XG4gICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICBjb25zdCBzaXplSW5NQiA9IG5vZGUuZW50cnk/LmNvbnRlbnQ/LnNpemVJbkJ5dGVzIC8gQllURVNfVE9fTUJfQ09OVkVSU0lPTl9WQUxVRTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVBdXRvRG93bmxvYWRGbGFnOiBib29sZWFuID0gdGhpcy5hcHBDb25maWcuZ2V0KCd2aWV3ZXIuZW5hYmxlRmlsZUF1dG9Eb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgY29uc3Qgc2l6ZVRocmVzaG9sZDogbnVtYmVyID0gdGhpcy5hcHBDb25maWcuZ2V0KCd2aWV3ZXIuZmlsZUF1dG9Eb3dubG9hZFNpemVUaHJlc2hvbGRJbk1CJywgMTUpO1xuXG4gICAgICAgICAgICBpZiAoZmlsZUF1dG9Eb3dubG9hZEZsYWcgJiYgc2l6ZUluTUIgJiYgc2l6ZUluTUIgPiBzaXplVGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihGaWxlQXV0b0Rvd25sb2FkQ29tcG9uZW50LCB7IGRpc2FibGVDbG9zZTogdHJ1ZSwgZGF0YTogbm9kZSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3LmVtaXQobmV3IE5vZGVFbnRpdHlFdmVudChub2RlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlKGNvbHVtbnM6IERhdGFDb2x1bW5bXSkge1xuICAgICAgICB0aGlzLmNvbHVtbnNWaXNpYmlsaXR5ID0gY29sdW1ucy5yZWR1Y2UoKHZpc2libGVDb2x1bW5zTWFwLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNIaWRkZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZpc2libGVDb2x1bW5zTWFwW2NvbHVtbi5pZF0gPSAhY29sdW1uLmlzSGlkZGVuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmlzaWJsZUNvbHVtbnNNYXA7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICB0aGlzLmNyZWF0ZUNvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5kYXRhLnNldENvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5jb2x1bW5zVmlzaWJpbGl0eUNoYW5nZWQuZW1pdCh0aGlzLmNvbHVtbnNWaXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlKGNvbHVtbnNXaXRoTmV3T3JkZXI6IERhdGFDb2x1bW5bXSkge1xuICAgICAgICB0aGlzLmNvbHVtbnNPcmRlciA9IGNvbHVtbnNXaXRoTmV3T3JkZXIubWFwKChjb2x1bW4pID0+IGNvbHVtbi5pZCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1ucygpO1xuICAgICAgICB0aGlzLmNvbHVtbnNPcmRlckNoYW5nZWQuZW1pdCh0aGlzLmNvbHVtbnNPcmRlcik7XG4gICAgfVxuXG4gICAgb25Db2x1bW5zV2lkdGhDaGFuZ2UoY29sdW1uczogRGF0YUNvbHVtbltdKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbnNXaWR0aHMgPSBjb2x1bW5zLnJlZHVjZSgod2lkdGhzQ29sdW1uc01hcCwgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgd2lkdGhzQ29sdW1uc01hcFtjb2x1bW4uaWRdID0gTWF0aC5jZWlsKGNvbHVtbi53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd2lkdGhzQ29sdW1uc01hcDtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICAgIHRoaXMuY29sdW1uc1dpZHRocyA9IHsgLi4udGhpcy5jb2x1bW5zV2lkdGhzLCAuLi5uZXdDb2x1bW5zV2lkdGhzIH07XG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1ucygpO1xuICAgICAgICB0aGlzLmNvbHVtbnNXaWR0aENoYW5nZWQuZW1pdCh0aGlzLmNvbHVtbnNXaWR0aHMpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0ZWRJdGVtc0NvdW50Q2hhbmdlZChjb3VudDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NvdW50Q2hhbmdlZC5lbWl0KGNvdW50KTtcbiAgICB9XG5cbiAgICBvbk5vZGVDbGljayhub2RlRW50cnk6IE5vZGVFbnRyeSkge1xuICAgICAgICBjb25zdCBkb21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnbm9kZS1jbGljaycsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIHNlbmRlcjogdGhpcyxcbiAgICAgICAgICAgICAgICBub2RlOiBub2RlRW50cnlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE5vZGVFbnRpdHlFdmVudChub2RlRW50cnkpO1xuICAgICAgICB0aGlzLm5vZGVDbGljay5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5hdmlnYXRlICYmIHRoaXMubmF2aWdhdGlvbk1vZGUgPT09IERvY3VtZW50TGlzdENvbXBvbmVudC5TSU5HTEVfQ0xJQ0tfTkFWSUdBVElPTikge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUFjdGlvbkNsaWNrKG5vZGVFbnRyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5vZGVEYmxDbGljayhub2RlRW50cnk6IE5vZGVFbnRyeSkge1xuICAgICAgICBjb25zdCBkb21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnbm9kZS1kYmxjbGljaycsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIHNlbmRlcjogdGhpcyxcbiAgICAgICAgICAgICAgICBub2RlOiBub2RlRW50cnlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcblxuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBOb2RlRW50aXR5RXZlbnQobm9kZUVudHJ5KTtcbiAgICAgICAgdGhpcy5ub2RlRGJsQ2xpY2suZW1pdChldmVudCk7XG5cbiAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0ZSAmJiB0aGlzLm5hdmlnYXRpb25Nb2RlID09PSBEb2N1bWVudExpc3RDb21wb25lbnQuRE9VQkxFX0NMSUNLX05BVklHQVRJT04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4ZWN1dGVBY3Rpb25DbGljayhub2RlRW50cnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhlY3V0ZUFjdGlvbkNsaWNrKG5vZGVFbnRyeTogTm9kZUVudHJ5KSB7XG4gICAgICAgIGlmIChub2RlRW50cnk/LmVudHJ5KSB7XG4gICAgICAgICAgICBpZiAobm9kZUVudHJ5LmVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25QcmV2aWV3RmlsZShub2RlRW50cnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZUVudHJ5LmVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvKG5vZGVFbnRyeS5lbnRyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChub2RlRW50cnkuZW50cnlbJ2d1aWQnXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGU6IHRoaXMuaW5jbHVkZUZpZWxkc1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVzQXBpLmdldE5vZGUobm9kZUVudHJ5LmVudHJ5WydndWlkJ10sIG9wdGlvbnMpLnRoZW4oKG5vZGU6IE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG8obm9kZS5lbnRyeSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5vZGVTZWxlY3QoZXZlbnQ6IHsgcm93OiBTaGFyZURhdGFSb3c7IHNlbGVjdGlvbjogQXJyYXk8U2hhcmVEYXRhUm93PiB9KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gZXZlbnQuc2VsZWN0aW9uLm1hcCgoZW50cnkpID0+IGVudHJ5Lm5vZGUpO1xuICAgICAgICBjb25zdCBkb21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnbm9kZS1zZWxlY3QnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICBub2RlOiBldmVudC5yb3cgPyBldmVudC5yb3cubm9kZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1YmJsZXM6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubm9kZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk5vZGVVbnNlbGVjdChldmVudDogeyByb3c6IFNoYXJlRGF0YVJvdzsgc2VsZWN0aW9uOiBBcnJheTxTaGFyZURhdGFSb3c+IH0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBldmVudC5zZWxlY3Rpb24ubWFwKChlbnRyeSkgPT4gZW50cnkubm9kZSk7XG4gICAgICAgIGNvbnN0IGRvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdub2RlLXVuc2VsZWN0Jywge1xuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgbm9kZTogZXZlbnQucm93ID8gZXZlbnQucm93Lm5vZGUgOiBudWxsLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbjogdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5vZGVTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG4gICAgfVxuXG4gICAgb25TaG93Um93Q29udGV4dE1lbnUoZXZlbnQ6IERhdGFDZWxsRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dE1lbnVBY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gZXZlbnQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gYXJncy5yb3cubm9kZTtcbiAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgYXJncy5hY3Rpb25zID0gdGhpcy5nZXRDb250ZXh0QWN0aW9ucyhub2RlKSB8fCBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2hvd1Jvd0FjdGlvbnNNZW51KGV2ZW50OiBEYXRhQ2VsbEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gZXZlbnQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gYXJncy5yb3cubm9kZTtcbiAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgYXJncy5hY3Rpb25zID0gdGhpcy5nZXROb2RlQWN0aW9ucyhub2RlKSB8fCBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRXhlY3V0ZVJvd0FjdGlvbihldmVudDogRGF0YVJvd0FjdGlvbkV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gZXZlbnQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gYXJncy5yb3cubm9kZTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IGFyZ3MuYWN0aW9uO1xuICAgICAgICAgICAgdGhpcy5leGVjdXRlQ29udGVudEFjdGlvbihub2RlLCBhY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmZvcmNlU2luZ2xlQ2xpY2tOYXZpZ2F0aW9uRm9yTW9iaWxlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Nb2RlID0gRG9jdW1lbnRMaXN0Q29tcG9uZW50LlNJTkdMRV9DTElDS19OQVZJR0FUSU9OO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuTmF2aWdhdGVGb2xkZXIobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgY2FuTmF2aWdhdGVGb2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgICBpZiAobm9kZT8uaXNGb2xkZXIpIHtcbiAgICAgICAgICAgIGNhbk5hdmlnYXRlRm9sZGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYW5OYXZpZ2F0ZUZvbGRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRGF0YVJlYWR5KG5vZGVQYWdpbmc6IE5vZGVQYWdpbmcpIHtcbiAgICAgICAgdGhpcy5yZWFkeS5lbWl0KG5vZGVQYWdpbmcpO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24ubmV4dChub2RlUGFnaW5nLmxpc3QucGFnaW5hdGlvbik7XG4gICAgfVxuXG4gICAgdXBkYXRlUGFnaW5hdGlvbihyZXF1ZXN0UGFnaW5hdGlvbk1vZGVsOiBSZXF1ZXN0UGFnaW5hdGlvbk1vZGVsKSB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb24ubWF4SXRlbXMgPSByZXF1ZXN0UGFnaW5hdGlvbk1vZGVsLm1heEl0ZW1zO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uLnNraXBDb3VudCA9IHJlcXVlc3RQYWdpbmF0aW9uTW9kZWwuc2tpcENvdW50O1xuICAgICAgICB0aGlzLnJlbG9hZChyZXF1ZXN0UGFnaW5hdGlvbk1vZGVsLm1lcmdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNQYWdpbmF0aW9uKCkge1xuICAgICAgICB0aGlzLm5vZGUubGlzdC5wYWdpbmF0aW9uLm1heEl0ZW1zID0gdGhpcy5fcGFnaW5hdGlvbi5tYXhJdGVtcztcbiAgICAgICAgdGhpcy5ub2RlLmxpc3QucGFnaW5hdGlvbi5za2lwQ291bnQgPSB0aGlzLl9wYWdpbmF0aW9uLnNraXBDb3VudDtcbiAgICB9XG5cbiAgICBvbkZpbHRlclNlbGVjdGlvbkNoYW5nZShhY3RpdmVGaWx0ZXJzOiBGaWx0ZXJTZWFyY2hbXSkge1xuICAgICAgICB0aGlzLmZpbHRlclNlbGVjdGlvbi5lbWl0KGFjdGl2ZUZpbHRlcnMpO1xuICAgIH1cblxuICAgIHJlc2V0TmV3Rm9sZGVyUGFnaW5hdGlvbigpIHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvbi5za2lwQ291bnQgPSAwO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uLm1heEl0ZW1zID0gdGhpcy5tYXhJdGVtcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKGVycjogYW55KSB7XG4gICAgICAgIGlmIChlcnIubWVzc2FnZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoSlNPTi5wYXJzZShlcnIubWVzc2FnZSkuZXJyb3Iuc3RhdHVzQ29kZSA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9QZXJtaXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8qIGVtcHR5ICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUoZmFsc2UpO1xuICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICB9XG5cbiAgICBnZXRQcmVzZWxlY3RlZE5vZGVzQmFzZWRPblNlbGVjdGlvbk1vZGUoKTogTm9kZUVudHJ5W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNQcmVzZWxlY3RlZE5vZGVzKCkgPyAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSA/IFt0aGlzLnByZXNlbGVjdE5vZGVzWzBdXSA6IHRoaXMucHJlc2VsZWN0Tm9kZXMpIDogW107XG4gICAgfVxuXG4gICAgZ2V0UHJlc2VsZWN0ZWRSb3dzQmFzZWRPblNlbGVjdGlvbk1vZGUoKTogRGF0YVJvd1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzUHJlc2VsZWN0ZWRSb3dzKCkgPyAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSA/IFt0aGlzLnByZXNlbGVjdGVkUm93c1swXV0gOiB0aGlzLnByZXNlbGVjdGVkUm93cykgOiBbXTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3Rpb25CYXNlZE9uU2VsZWN0aW9uTW9kZSgpOiBEYXRhUm93W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNQcmVzZWxlY3RlZFJvd3MoKVxuICAgICAgICAgICAgPyB0aGlzLmlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpXG4gICAgICAgICAgICAgICAgPyBbdGhpcy5wcmVzZWxlY3RlZFJvd3NbMF1dXG4gICAgICAgICAgICAgICAgOiB0aGlzLmRhdGEuZ2V0U2VsZWN0ZWRSb3dzKClcbiAgICAgICAgICAgIDogdGhpcy5kYXRhLmdldFNlbGVjdGVkUm93cygpO1xuICAgIH1cblxuICAgIG9uUHJlc2VsZWN0Tm9kZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc1ByZXNlbGVjdGVkTm9kZXMoKSkge1xuICAgICAgICAgICAgdGhpcy5wcmVzZWxlY3RSb3dzT2ZQcmVzZWxlY3RlZE5vZGVzKCk7XG4gICAgICAgICAgICBjb25zdCBwcmVzZWxlY3RlZFJvd3MgPSB0aGlzLmdldFByZXNlbGVjdGVkUm93c0Jhc2VkT25TZWxlY3Rpb25Nb2RlKCk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmRhdGEuZ2V0U2VsZWN0ZWRSb3dzKCkgYXMgU2hhcmVEYXRhUm93W107XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBwcmVzZWxlY3RlZFJvd3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFUYWJsZS5zZWxlY3RSb3cobm9kZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uTm9kZVNlbGVjdCh7IHJvdzogdW5kZWZpbmVkLCBzZWxlY3Rpb24gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHByZXNlcnZlRXhpc3RpbmdTZWxlY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb25Nb2RlKCkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2VsZWN0aW9uIG9mIHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93T2ZTZWxlY3Rpb24gPSB0aGlzLmRhdGEuZ2V0Um93QnlOb2RlSWQoc2VsZWN0aW9uLmVudHJ5LmlkKTtcbiAgICAgICAgICAgICAgICBpZiAocm93T2ZTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcm93T2ZTZWxlY3Rpb24uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJlc2VsZWN0Um93c09mUHJlc2VsZWN0ZWROb2RlcygpIHtcbiAgICAgICAgdGhpcy5wcmVzZWxlY3RlZFJvd3MgPSBbXTtcbiAgICAgICAgY29uc3QgcHJlc2VsZWN0ZWROb2RlcyA9IHRoaXMuZ2V0UHJlc2VsZWN0ZWROb2Rlc0Jhc2VkT25TZWxlY3Rpb25Nb2RlKCk7XG5cbiAgICAgICAgcHJlc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKChwcmVzZWxlY3RlZE5vZGU6IE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93T2ZQcmVzZWxlY3RlZE5vZGUgPSB0aGlzLmRhdGEuZ2V0Um93QnlOb2RlSWQocHJlc2VsZWN0ZWROb2RlLmVudHJ5LmlkKTtcbiAgICAgICAgICAgIGlmIChyb3dPZlByZXNlbGVjdGVkTm9kZSkge1xuICAgICAgICAgICAgICAgIHJvd09mUHJlc2VsZWN0ZWROb2RlLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlc2VsZWN0ZWRSb3dzLnB1c2gocm93T2ZQcmVzZWxlY3RlZE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1bnNlbGVjdFJvd0Zyb21Ob2RlSWQobm9kZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgcm93VG9VbnNlbGVjdCA9IHRoaXMuZGF0YS5nZXRSb3dCeU5vZGVJZChub2RlSWQpO1xuICAgICAgICBpZiAocm93VG9VbnNlbGVjdD8uaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgcm93VG9VbnNlbGVjdC5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRhdGFUYWJsZS5zZWxlY3RSb3cocm93VG9VbnNlbGVjdCwgZmFsc2UpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb25CYXNlZE9uU2VsZWN0aW9uTW9kZSgpIGFzIFNoYXJlRGF0YVJvd1tdO1xuICAgICAgICAgICAgdGhpcy5vbk5vZGVVbnNlbGVjdCh7IHJvdzogdW5kZWZpbmVkLCBzZWxlY3Rpb24gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc011bHRpcGxlU2VsZWN0aW9uTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpcGxlJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1ByZXNlbGVjdGVkTm9kZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXNlbGVjdE5vZGVzPy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzUHJlc2VsZWN0ZWRSb3dzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVzZWxlY3RlZFJvd3M/Lmxlbmd0aCA+IDA7XG4gICAgfVxufVxuIiwiPGFkZi1kYXRhdGFibGVcbiAgICAjZGF0YVRhYmxlXG4gICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiXG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgW2FjdGlvbnNdPVwiY29udGVudEFjdGlvbnNcIlxuICAgIFthY3Rpb25zUG9zaXRpb25dPVwiY29udGVudEFjdGlvbnNQb3NpdGlvblwiXG4gICAgW211bHRpc2VsZWN0XT1cIm11bHRpc2VsZWN0XCJcbiAgICBbY29udGV4dE1lbnVdPVwiY29udGV4dE1lbnVBY3Rpb25zXCJcbiAgICBbcm93U3R5bGVdPVwicm93U3R5bGVcIlxuICAgIFtyb3dTdHlsZUNsYXNzXT1cInJvd1N0eWxlQ2xhc3NcIlxuICAgIFtzaG93TWFpbkRhdGF0YWJsZUFjdGlvbnNdPVwidHJ1ZVwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW25vUGVybWlzc2lvbl09XCJub1Blcm1pc3Npb25cIlxuICAgIFtzaG93SGVhZGVyXT1cInNob3dIZWFkZXJcIlxuICAgIFtyb3dNZW51Q2FjaGVFbmFibGVkXT1cImZhbHNlXCJcbiAgICBbc3RpY2t5SGVhZGVyXT1cInN0aWNreUhlYWRlclwiXG4gICAgW2FsbG93RmlsdGVyaW5nXT1cImFsbG93RmlsdGVyaW5nXCJcbiAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwiaXNSZXNpemluZ0VuYWJsZWRcIlxuICAgIFtibHVyT25SZXNpemVdPVwiYmx1ck9uUmVzaXplXCJcbiAgICBbZGlzcGxheUNoZWNrYm94ZXNPbkhvdmVyXT1cImRpc3BsYXlDaGVja2JveGVzT25Ib3ZlclwiXG4gICAgKHNob3dSb3dDb250ZXh0TWVudSk9XCJvblNob3dSb3dDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICAoc2hvd1Jvd0FjdGlvbnNNZW51KT1cIm9uU2hvd1Jvd0FjdGlvbnNNZW51KCRldmVudClcIlxuICAgIChleGVjdXRlUm93QWN0aW9uKT1cIm9uRXhlY3V0ZVJvd0FjdGlvbigkZXZlbnQpXCJcbiAgICAoY29sdW1uc1dpZHRoQ2hhbmdlZCk9XCJvbkNvbHVtbnNXaWR0aENoYW5nZSgkZXZlbnQpXCJcbiAgICAoY29sdW1uT3JkZXJDaGFuZ2VkKT1cIm9uQ29sdW1uT3JkZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKHNlbGVjdGVkSXRlbXNDb3VudENoYW5nZWQpPVwib25TZWxlY3RlZEl0ZW1zQ291bnRDaGFuZ2VkKCRldmVudClcIlxuICAgIChyb3dDbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQudmFsdWU/Lm5vZGUpXCJcbiAgICAocm93RGJsQ2xpY2spPVwib25Ob2RlRGJsQ2xpY2soJGV2ZW50LnZhbHVlPy5ub2RlKVwiXG4gICAgKHJvdy1zZWxlY3QpPVwib25Ob2RlU2VsZWN0KCRhbnkoJGV2ZW50KS5kZXRhaWwpXCJcbiAgICAocm93LXVuc2VsZWN0KT1cIm9uTm9kZVVuc2VsZWN0KCRhbnkoJGV2ZW50KS5kZXRhaWwpXCJcbiAgICAoc29ydGluZy1jaGFuZ2VkKT1cIm9uU29ydGluZ0NoYW5nZWQoJGFueSgkZXZlbnQpKVwiXG4gICAgW2NsYXNzLmFkZi1kYXRhdGFibGUtZ2FsbGVyeS10aHVtYm5haWxzXT1cImRhdGEudGh1bWJuYWlsc1wiPlxuXG4gICAgPGRpdiAqbmdJZj1cImhlYWRlckZpbHRlcnNcIj5cbiAgICAgICAgPGFkZi1maWx0ZXItaGVhZGVyXG4gICAgICAgICAgICBbY3VycmVudEZvbGRlcklkXT1cImN1cnJlbnRGb2xkZXJJZFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZmlsdGVyVmFsdWVcIlxuICAgICAgICAgICAgKGZpbHRlclNlbGVjdGlvbik9XCJvbkZpbHRlclNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxhZGYtbm8tY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGFkZi1lbXB0eS1saXN0ICpuZ0lmPVwiIWN1c3RvbU5vQ29udGVudFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lbXB0eS1saXN0X3RlbXBsYXRlIGFkZi1lbXB0eS1mb2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lbXB0eS1mb2xkZXItdGhpcy1zcGFjZS1pcy1lbXB0eVwiPnt7J0FERi1ET0NVTUVOVC1MSVNULkVNUFRZLkhFQURFUicgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheURyYWdBbmREcm9wSGludFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lbXB0eS1mb2xkZXItZHJhZy1kcm9wXCI+e3sgJ0FERi1EQVRBVEFCTEUuRU1QVFkuRFJBRy1BTkQtRFJPUC5USVRMRScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtZW1wdHktZm9sZGVyLWFueS1maWxlcy1oZXJlLXRvLWFkZFwiPnt7ICdBREYtREFUQVRBQkxFLkVNUFRZLkRSQUctQU5ELURST1AuU1VCVElUTEUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIFthbHRdPVwiJ0FERi1EQVRBVEFCTEUuRU1QVFkuRFJBRy1BTkQtRFJPUC5USVRMRScgfCB0cmFuc2xhdGVcIiBjbGFzcz1cImFkZi1lbXB0eS1mb2xkZXItaW1hZ2VcIiBbc3JjXT1cImVtcHR5Rm9sZGVySW1hZ2VVcmxcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYWRmLWVtcHR5LWxpc3Q+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGUsIGVtcHR5LWZvbGRlci1jb250ZW50XCIgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2FkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuXG4gICAgPGFkZi1uby1wZXJtaXNzaW9uLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLW5vLXBlcm1pc3Npb25fX3RlbXBsYXRlXCIgKm5nSWY9XCIhY3VzdG9tTm9QZXJtaXNzaW9uc1RlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFkZi1uby1wZXJtaXNzaW9uX190ZW1wbGF0ZS0tdGV4dFwiPnt7ICdBREYtRE9DVU1FTlQtTElTVC5OT19QRVJNSVNTSU9OJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1uby1wZXJtaXNzaW9uLXRlbXBsYXRlLCBuby1wZXJtaXNzaW9uLWNvbnRlbnRcIiAvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYWRmLW5vLXBlcm1pc3Npb24tdGVtcGxhdGU+XG5cbiAgICA8YWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1kb2N1bWVudC1saXN0LWxvYWRpbmctY29udGFpbmVyXCIgKm5nSWY9XCIhY3VzdG9tTG9hZGluZ0NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJhZGYtZG9jdW1lbnQtbGlzdC1sb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZG9jdW1lbnQtbGlzdC1sb2FkaW5nLW1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERi1ET0NVTUVOVC1MSVNULkxPQURFUl9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwiJ2luZGV0ZXJtaW5hdGUnXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1sb2FkaW5nLWNvbnRlbnQtdGVtcGxhdGVcIiAvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cblxuICAgIDxhZGYtbWFpbi1tZW51LWRhdGF0YWJsZS10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1tYWluTWVudVRyaWdnZXI+XG4gICAgICAgICAgICA8YWRmLWRhdGF0YWJsZS1jb2x1bW4tc2VsZWN0b3JcbiAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgIFttYWluTWVudVRyaWdnZXJdPVwibWFpbk1lbnVUcmlnZ2VyXCJcbiAgICAgICAgICAgICAgW2NvbHVtbnNTb3J0aW5nXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW21heENvbHVtbnNWaXNpYmxlXT1cIm1heENvbHVtbnNWaXNpYmxlXCJcbiAgICAgICAgICAgICAgKHN1Ym1pdENvbHVtbnNWaXNpYmlsaXR5KT1cIm9uQ29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9hZGYtbWFpbi1tZW51LWRhdGF0YWJsZS10ZW1wbGF0ZT5cblxuPC9hZGYtZGF0YXRhYmxlPlxuIl19
964
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2RvY3VtZW50LWxpc3QvY29tcG9uZW50cy9kb2N1bWVudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvZG9jdW1lbnQtbGlzdC9jb21wb25lbnRzL2RvY3VtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsMENBQTBDO0FBQzFDLHlEQUF5RDtBQUV6RCxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixtQ0FBbUMsRUFDbkMscUNBQXFDLEVBQ3JDLG1DQUFtQyxFQUduQyx1QkFBdUIsRUFHdkIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQiwrQkFBK0IsRUFDL0Isa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMxQiw2QkFBNkIsRUFJN0IsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3ZCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFtQixVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JGLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFB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O3NCQURiLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBT0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQU9GLGVBQWU7c0JBRGxCLEtBQUs7Z0JBT04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUtOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixTQUFTO3NCQURSLE1BQU07Z0JBS1AsWUFBWTtzQkFEWCxNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFTUCxPQUFPO3NCQUROLE1BQU07Z0JBS1AsS0FBSztzQkFESixNQUFNO2dCQUtQLEtBQUs7c0JBREosTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBS1AsZUFBZTtzQkFEZCxNQUFNO2dCQUtQLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFLUCx3QkFBd0I7c0JBRHZCLE1BQU07Z0JBS1AsbUJBQW1CO3NCQURsQixNQUFNO2dCQUtQLHlCQUF5QjtzQkFEeEIsTUFBTTtnQkFJUCxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkEwUnhDLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIHJ4anMvbm8tc3ViamVjdC12YWx1ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5cbmltcG9ydCB7XG4gICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICBDb2x1bW5zU2VsZWN0b3JDb21wb25lbnQsXG4gICAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgQ3VzdG9tTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBDdXN0b21Ob1Blcm1pc3Npb25UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEYXRhQ2VsbEV2ZW50LFxuICAgIERhdGFDb2x1bW4sXG4gICAgRGF0YUNvbHVtbkxpc3RDb21wb25lbnQsXG4gICAgRGF0YVJvdyxcbiAgICBEYXRhUm93QWN0aW9uRXZlbnQsXG4gICAgRGF0YVNvcnRpbmcsXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZVNjaGVtYSxcbiAgICBEYXRhVGFibGVTZXJ2aWNlLFxuICAgIEVtcHR5TGlzdENvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIE1haW5NZW51RGF0YVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgTm9Db250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgTm9QZXJtaXNzaW9uVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgUGFnaW5hdGVkQ29tcG9uZW50LFxuICAgIFBhZ2luYXRpb25Nb2RlbCxcbiAgICBSZXF1ZXN0UGFnaW5hdGlvbk1vZGVsLFxuICAgIFNob3dIZWFkZXJNb2RlLFxuICAgIFRodW1ibmFpbFNlcnZpY2UsXG4gICAgVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBVc2VyUHJlZmVyZW5jZVZhbHVlc1xufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgTm9kZSwgTm9kZUVudHJ5LCBOb2RlUGFnaW5nLCBOb2Rlc0FwaSwgUGFnaW5hdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlLCBOb2Rlc0FwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoIH0gZnJvbSAnLi4vLi4vc2VhcmNoJztcbmltcG9ydCB7IFJvd0ZpbHRlciB9IGZyb20gJy4uL2RhdGEvcm93LWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBTaGFyZURhdGFSb3cgfSBmcm9tICcuLi9kYXRhL3NoYXJlLWRhdGEtcm93Lm1vZGVsJztcbmltcG9ydCB7IFNoYXJlRGF0YVRhYmxlQWRhcHRlciB9IGZyb20gJy4uL2RhdGEvc2hhcmUtZGF0YXRhYmxlLWFkYXB0ZXInO1xuaW1wb3J0IHsgQ29udGVudEFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NvbnRlbnQtYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IERvY3VtZW50TG9hZGVyTm9kZSB9IGZyb20gJy4uL21vZGVscy9kb2N1bWVudC1mb2xkZXIubW9kZWwnO1xuaW1wb3J0IHsgUGVybWlzc2lvblN0eWxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbnMtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgcHJlc2V0c0RlZmF1bHRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcmVzZXQubW9kZWwnO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RvY3VtZW50LWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBMb2NrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2suc2VydmljZSc7XG5pbXBvcnQgeyBBREZfRE9DVU1FTlRfUEFSRU5UX0NPTVBPTkVOVCB9IGZyb20gJy4vZG9jdW1lbnQtbGlzdC50b2tlbic7XG5pbXBvcnQgeyBGaWxlQXV0b0Rvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9maWxlLWF1dG8tZG93bmxvYWQvZmlsZS1hdXRvLWRvd25sb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlRW50aXR5RXZlbnQsIE5vZGVFbnRyeUV2ZW50IH0gZnJvbSAnLi9ub2RlLmV2ZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGaWx0ZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlci1oZWFkZXIvZmlsdGVyLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FsZnJlc2NvLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuY29uc3QgQllURVNfVE9fTUJfQ09OVkVSU0lPTl9WQUxVRSA9IDEwNDg1NzY7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWRvY3VtZW50LWxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgRmlsdGVySGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBOb0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgRW1wdHlMaXN0Q29tcG9uZW50LFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIE5vUGVybWlzc2lvblRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBMb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIE1haW5NZW51RGF0YVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIENvbHVtbnNTZWxlY3RvckNvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RvY3VtZW50LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQURGX0RPQ1VNRU5UX1BBUkVOVF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogRG9jdW1lbnRMaXN0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIERhdGFUYWJsZVNlcnZpY2VcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi1kb2N1bWVudC1saXN0JyB9XG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50TGlzdENvbXBvbmVudCBleHRlbmRzIERhdGFUYWJsZVNjaGVtYSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBQYWdpbmF0ZWRDb21wb25lbnQge1xuICAgIHN0YXRpYyBTSU5HTEVfQ0xJQ0tfTkFWSUdBVElPTjogc3RyaW5nID0gJ2NsaWNrJztcbiAgICBzdGF0aWMgRE9VQkxFX0NMSUNLX05BVklHQVRJT046IHN0cmluZyA9ICdkYmxjbGljayc7XG5cbiAgICBERUZBVUxUX1BBR0lOQVRJT046IFBhZ2luYXRpb24gPSBuZXcgUGFnaW5hdGlvbih7XG4gICAgICAgIGhhc01vcmVJdGVtczogZmFsc2UsXG4gICAgICAgIHNraXBDb3VudDogMCxcbiAgICAgICAgbWF4SXRlbXM6IDI1LFxuICAgICAgICB0b3RhbEl0ZW1zOiAwXG4gICAgfSk7XG5cbiAgICBERUZBVUxUX1NPUlRJTkc6IERhdGFTb3J0aW5nW10gPSBbbmV3IERhdGFTb3J0aW5nKCduYW1lJywgJ2FzYycpLCBuZXcgRGF0YVNvcnRpbmcoJ2lzRm9sZGVyJywgJ2Rlc2MnKV07XG5cbiAgICBAQ29udGVudENoaWxkKERhdGFDb2x1bW5MaXN0Q29tcG9uZW50KVxuICAgIGNvbHVtbkxpc3Q6IERhdGFDb2x1bW5MaXN0Q29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlKVxuICAgIGN1c3RvbUxvYWRpbmdDb250ZW50OiBDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21Ob1Blcm1pc3Npb25UZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21Ob1Blcm1pc3Npb25zVGVtcGxhdGU6IEN1c3RvbU5vUGVybWlzc2lvblRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21Ob0NvbnRlbnRUZW1wbGF0ZTogQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmU7XG5cbiAgICAvKiogSW5jbHVkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub2RlIGluIHRoZSBzZXJ2ZXIgcmVxdWVzdC4gRm9yIGV4YW1wbGU6IGFzc29jaWF0aW9uLCBpc0xpbmssIGlzTG9ja2VkIGFuZCBvdGhlcnMuICovXG4gICAgQElucHV0KClcbiAgICBpbmNsdWRlRmllbGRzOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlcnMgdGhlIE5vZGUgbGlzdCB1c2luZyB0aGUgKndoZXJlKiBjb25kaXRpb24gb2YgdGhlIFJFU1QgQVBJXG4gICAgICogKGZvciBleGFtcGxlLCBpc0ZvbGRlcj10cnVlKS4gU2VlIHRoZSBSRVNUIEFQSSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgd2hlcmU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERlZmluZSBhIHNldCBvZiBDU1Mgc3R5bGVzIHRvIGFwcGx5IGRlcGVuZGluZyBvbiB0aGUgcGVybWlzc2lvblxuICAgICAqIG9mIHRoZSB1c2VyIG9uIHRoYXQgbm9kZS4gU2VlIHRoZSBQZXJtaXNzaW9uIFN0eWxlIG1vZGVsXG4gICAgICogcGFnZSBmb3IgZnVydGhlciBkZXRhaWxzIGFuZCBleGFtcGxlcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBlcm1pc3Npb25zU3R5bGU6IFBlcm1pc3Npb25TdHlsZU1vZGVsW10gPSBbXTtcblxuICAgIC8qKiBUaGUgZGVmYXVsdCByb3V0ZSBmb3IgYWxsIHRoZSBsb2NhdGlvbi1iYXNlZCBjb2x1bW5zIChpZiBkZWNsYXJlZCkuICovXG4gICAgQElucHV0KClcbiAgICBsb2NhdGlvbkZvcm1hdDogc3RyaW5nID0gJy8nO1xuXG4gICAgLyoqIFRvZ2dsZXMgbmF2aWdhdGlvbiB0byBmb2xkZXIgY29udGVudCBvciBmaWxlIHByZXZpZXcgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBoZWFkZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dIZWFkZXIgPSBTaG93SGVhZGVyTW9kZS5EYXRhO1xuXG4gICAgLyoqXG4gICAgICogVXNlciBpbnRlcmFjdGlvbiBmb3IgZm9sZGVyIG5hdmlnYXRpb24gb3IgZmlsZSBwcmV2aWV3LlxuICAgICAqIFZhbGlkIHZhbHVlcyBhcmUgXCJjbGlja1wiIGFuZCBcImRibGNsaWNrXCIuIERlZmF1bHQgdmFsdWU6IFwiZGJsY2xpY2tcIlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdGlvbk1vZGU6IHN0cmluZyA9IERvY3VtZW50TGlzdENvbXBvbmVudC5ET1VCTEVfQ0xJQ0tfTkFWSUdBVElPTjsgLy8gY2xpY2t8ZGJsY2xpY2tcblxuICAgIC8qKiBTaG93IGRvY3VtZW50IHRodW1ibmFpbHMgcmF0aGVyIHRoYW4gaWNvbnMgKi9cbiAgICBASW5wdXQoKVxuICAgIHRodW1ibmFpbHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJvdyBzZWxlY3Rpb24gbW9kZS4gQ2FuIGJlIG51bGwsIGBzaW5nbGVgIG9yIGBtdWx0aXBsZWAuIEZvciBgbXVsdGlwbGVgIG1vZGUsXG4gICAgICogeW91IGNhbiB1c2UgQ21kIChtYWNPUykgb3IgQ3RybCAoV2luKSBtb2RpZmllciBrZXkgdG8gdG9nZ2xlIHNlbGVjdGlvbiBmb3IgbXVsdGlwbGUgcm93cy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbk1vZGU6IHN0cmluZyA9ICdzaW5nbGUnOyAvLyBudWxsfHNpbmdsZXxtdWx0aXBsZVxuXG4gICAgLyoqIFRvZ2dsZXMgbXVsdGlzZWxlY3QgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIGNvbnRlbnQgYWN0aW9ucyBmb3IgZWFjaCByb3cgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRBY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogUG9zaXRpb24gb2YgdGhlIGNvbnRlbnQgYWN0aW9ucyBkcm9wZG93biBtZW51LiBDYW4gYmUgc2V0IHRvIFwibGVmdFwiIG9yIFwicmlnaHRcIi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRBY3Rpb25zUG9zaXRpb246IHN0cmluZyA9ICdyaWdodCc7IC8vIGxlZnR8cmlnaHRcblxuICAgIC8qKiBUb2dnbGVzIGNvbnRleHQgbWVudXMgZm9yIGVhY2ggcm93ICovXG4gICAgQElucHV0KClcbiAgICBjb250ZXh0TWVudUFjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBDdXN0b20gaW1hZ2UgZm9yIGVtcHR5IGZvbGRlci4gRGVmYXVsdCB2YWx1ZTogJy4vYXNzZXRzL2ltYWdlcy9lbXB0eV9kb2NfbGliLnN2ZycgKi9cbiAgICBASW5wdXQoKVxuICAgIGVtcHR5Rm9sZGVySW1hZ2VVcmw6IHN0cmluZyA9ICcuL2Fzc2V0cy9pbWFnZXMvZW1wdHlfZG9jX2xpYi5zdmcnO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiB0cnVlLCB0aGlzIGVuYWJsZXMgeW91IHRvIGRyb3AgZmlsZXMgZGlyZWN0bHkgaW50byBzdWJmb2xkZXJzIHNob3duXG4gICAgICogYXMgaXRlbXMgaW4gdGhlIGxpc3Qgb3IgaW50byBhbm90aGVyIGZpbGUgdG8gdHJpZ2dlciB1cGRhdGluZyBpdCdzIHZlcnNpb24uXG4gICAgICogV2hlbiBmYWxzZSwgdGhlIGRyb3BwZWQgZmlsZSB3aWxsIGJlIGFkZGVkIHRvIHRoZVxuICAgICAqIGN1cnJlbnQgZm9sZGVyIChpZSwgdGhlIG9uZSBjb250YWluaW5nIGFsbCB0aGUgaXRlbXMgc2hvd24gaW4gdGhlIGxpc3QpLlxuICAgICAqIFNlZSB0aGUgVXBsb2FkIGRpcmVjdGl2ZSBmb3IgZnVydGhlciBkZXRhaWxzIGFib3V0IGhvdyB0aGUgZmlsZSBkcm9wIGlzXG4gICAgICogaGFuZGxlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RHJvcEZpbGVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGRlZmF1bHQgc29ydGluZy4gVGhlIGZvcm1hdCBpcyBhbiBhcnJheSBvZiAyIHN0cmluZ3MgYFtrZXksIGRpcmVjdGlvbl1gXG4gICAgICogaS5lLiBgWyduYW1lJywgJ2Rlc2MnXWAgb3IgYFsnbmFtZScsICdhc2MnXWAuIFNldCB0aGlzIHZhbHVlIG9ubHkgaWYgeW91IHdhbnQgdG9cbiAgICAgKiBvdmVycmlkZSB0aGUgZGVmYXVsdCBzb3J0aW5nIGRldGVjdGVkIGJ5IHRoZSBjb21wb25lbnQgYmFzZWQgb24gY29sdW1ucy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNvcnRpbmc6IHN0cmluZ1tdIHwgRGF0YVNvcnRpbmcgPSBbJ25hbWUnLCAnYXNjJ107XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGRlZmF1bHQgc29ydGluZy4gVGhlIGZvcm1hdCBpcyBhbiBhcnJheSBvZiBzdHJpbmdzIGBba2V5IGRpcmVjdGlvbiwgb3RoZXJLZXkgb3RoZXJEaXJlY3Rpb25dYFxuICAgICAqIGkuZS4gYFsnbmFtZSBkZXNjJywgJ25vZGVUeXBlIGFzYyddYCBvciBgWyduYW1lIGFzYyddYC4gU2V0IHRoaXMgdmFsdWUgaWYgeW91IHdhbnQgYSBiYXNlXG4gICAgICogcnVsZSB0byBiZSBhZGRlZCB0byB0aGUgc29ydGluZyBhcGFydCBmcm9tIHRoZSBvbmUgZHJpdmVuIGJ5IHRoZSBoZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhZGRpdGlvbmFsU29ydGluZzogRGF0YVNvcnRpbmcgPSBuZXcgRGF0YVNvcnRpbmcoJ2lzRm9sZGVyJywgJ2Rlc2MnKTtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgc29ydGluZyBtb2RlLiBDYW4gYmUgZWl0aGVyIGBjbGllbnRgIChpdGVtcyBpbiB0aGUgbGlzdFxuICAgICAqIGFyZSBzb3J0ZWQgY2xpZW50LXNpZGUpIG9yIGBzZXJ2ZXJgICh0aGUgb3JkZXJpbmcgc3VwcGxpZWQgYnkgdGhlXG4gICAgICogc2VydmVyIGlzIHVzZWQgd2l0aG91dCBmdXJ0aGVyIGNsaWVudC1zaWRlIHNvcnRpbmcpLlxuICAgICAqIE5vdGUgdGhhdCB0aGUgYHNlcnZlcmAgb3B0aW9uICpkb2VzIG5vdCogcmVxdWVzdCB0aGUgc2VydmVyIHRvIHNvcnQgdGhlIGRhdGFcbiAgICAgKiBiZWZvcmUgZGVsaXZlcmluZyBpdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNvcnRpbmdNb2RlOiAnc2VydmVyJyB8ICdjbGllbnQnID0gJ3NlcnZlcic7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW5saW5lIHN0eWxlIHRvIGFwcGx5IHRvIGV2ZXJ5IHJvdy4gU2VlXG4gICAgICogdGhlIEFuZ3VsYXIgTmdTdHlsZVxuICAgICAqIGRvY3MgZm9yIG1vcmUgZGV0YWlscyBhbmQgdXNhZ2UgZXhhbXBsZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByb3dTdHlsZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAgIC8qKiBUaGUgQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIGV2ZXJ5IHJvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm93U3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgbG9hZGluZyBzdGF0ZSBhbmQgYW5pbWF0ZWQgc3Bpbm5lcnMgZm9yIHRoZSBjb21wb25lbnQuIFVzZWQgaW5cbiAgICAgKiBjb21iaW5hdGlvbiB3aXRoIGBuYXZpZ2F0ZT1mYWxzZWAgdG8gcGVyZm9ybSBjdXN0b20gbmF2aWdhdGlvbiBhbmQgbG9hZGluZ1xuICAgICAqIHN0YXRlIGluZGljYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIF9yb3dGaWx0ZXI6IFJvd0ZpbHRlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGZ1bmN0aW9uIHRvIGNob29zZSB3aGV0aGVyIHRvIHNob3cgb3IgaGlkZSByb3dzLlxuICAgICAqIFNlZSB0aGUgW1JvdyBGaWx0ZXIgTW9kZWxdKHJvdy1maWx0ZXIubW9kZWwubWQpIHBhZ2UgZm9yXG4gICAgICogbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCByb3dGaWx0ZXIocm93RmlsdGVyOiBSb3dGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5fcm93RmlsdGVyID0gcm93RmlsdGVyO1xuICAgICAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEuc2V0RmlsdGVyKHRoaXMuX3Jvd0ZpbHRlcik7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHJvd0ZpbHRlcigpOiBSb3dGaWx0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93RmlsdGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBmdW5jdGlvbiB0byBjaG9vc2UgaW1hZ2UgZmlsZSBwYXRocyB0byBzaG93LiBTZWUgdGhlXG4gICAgICogW0ltYWdlIFJlc29sdmVyIE1vZGVsXShpbWFnZS1yZXNvbHZlci5tb2RlbC5tZCkgcGFnZSBmb3JcbiAgICAgKiBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW1hZ2VSZXNvbHZlcjogYW55IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgc3RpY2t5IGhlYWRlciBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RpY2t5SGVhZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgaGVhZGVyIGZpbHRlcnMgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGhlYWRlckZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBJbml0aWFsIHZhbHVlIGZvciBmaWx0ZXIuICovXG4gICAgQElucHV0KClcbiAgICBmaWx0ZXJWYWx1ZTogYW55O1xuXG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgZm9sZGVyIG5vZGUgdG8gZGlzcGxheSBvciBhIHJlc2VydmVkIHN0cmluZyBhbGlhcyBmb3Igc3BlY2lhbCBzb3VyY2VzICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50Rm9sZGVySWQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSBvZiBub2RlcyB0byBiZSBwcmUtc2VsZWN0ZWQuIEFsbCBub2RlcyBpbiB0aGVcbiAgICAgKiBhcnJheSBhcmUgcHJlLXNlbGVjdGVkIGluIG11bHRpIHNlbGVjdGlvbiBtb2RlLCBidXQgb25seSB0aGUgZmlyc3Qgbm9kZVxuICAgICAqIGlzIHByZS1zZWxlY3RlZCBpbiBzaW5nbGUgc2VsZWN0aW9uIG1vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcmVzZWxlY3ROb2RlczogTm9kZUVudHJ5W10gPSBbXTtcblxuICAgIC8qKiBUaGUgRG9jdW1lbnQgbGlzdCB3aWxsIHNob3cgYWxsIHRoZSBub2RlcyBjb250YWluZWQgaW4gdGhlIE5vZGVQYWdpbmcgZW50aXR5ICovXG4gICAgQElucHV0KClcbiAgICBub2RlOiBOb2RlUGFnaW5nID0gbnVsbDtcblxuICAgIC8qKiBEZWZhdWx0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgdXNlciBwcmVmZXJlbmNlIHNldHRpbmdzLiBVc2UgdGhpcyBvbmx5IGlmIHlvdSBhcmUgbm90IHVzaW5nIHBhZ2luYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBtYXhJdGVtczogbnVtYmVyID0gdGhpcy5ERUZBVUxUX1BBR0lOQVRJT04ubWF4SXRlbXM7XG5cbiAgICAvKiogS2V5IG9mIGNvbHVtbnMgcHJlc2V0IHNldCBpbiBleHRlbnNpb24uanNvbiAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHVtbnNQcmVzZXRLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogU2V0cyBjb2x1bW5zIHZpc2liaWxpdHkgZm9yIERhdGFUYWJsZVNjaGVtYSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNldENvbHVtbnNWaXNpYmlsaXR5KGNvbHVtbnNWaXNpYmlsaXR5OiB7IFtjb2x1bW5JZDogc3RyaW5nXTogYm9vbGVhbiB9IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29sdW1uc1Zpc2liaWxpdHkgPSBjb2x1bW5zVmlzaWJpbGl0eTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBjb2x1bW5zIHdpZHRoIGZvciBEYXRhVGFibGVTY2hlbWEgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZXRDb2x1bW5zV2lkdGhzKGNvbHVtbnNXaWR0aHM6IHsgW2NvbHVtbklkOiBzdHJpbmddOiBudW1iZXIgfSB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNvbHVtbnNXaWR0aHMgPSBjb2x1bW5zV2lkdGhzO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIGNvbHVtbnMgb3JkZXIgZm9yIERhdGFUYWJsZVNjaGVtYSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNldENvbHVtbnNPcmRlcihjb2x1bW5zT3JkZXI6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29sdW1uc09yZGVyID0gY29sdW1uc09yZGVyO1xuICAgIH1cblxuICAgIC8qKiBMaW1pdCBvZiBwb3NzaWJsZSB2aXNpYmxlIGNvbHVtbnMsIGluY2x1ZGluZyBcIiR0aHVtYm5haWxcIiBjb2x1bW4gaWYgcHJvdmlkZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heENvbHVtbnNWaXNpYmxlPzogbnVtYmVyO1xuXG4gICAgLyoqIEVuYWJsZXMgY29sdW1uIHJlc2l6aW5nIGZvciBkYXRhdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzUmVzaXppbmdFbmFibGVkID0gZmFsc2U7XG5cbiAgICAvKiogRW5hYmxlcyBibHVyIHdoZW4gcmVzaXppbmcgZGF0YXRhYmxlIGNvbHVtbnMgKi9cbiAgICBASW5wdXQoKVxuICAgIGJsdXJPblJlc2l6ZSA9IHRydWU7XG5cbiAgICAvKiogRGlzcGxheSBjaGVja2JveGVzIGluIGRhdGF0YWJsZSByb3dzIG9uIGhvdmVyIG9ubHkgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlDaGVja2JveGVzT25Ib3ZlciA9IGZhbHNlO1xuXG4gICAgLyoqIERpc3BsYXkgZHJhZyBhbmQgZHJvcCBoaW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheURyYWdBbmREcm9wSGludCA9IHRydWU7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBhIGxpc3Qgbm9kZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Tm9kZUVudGl0eUV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBkb3VibGUtY2xpY2tzIGEgbGlzdCBub2RlICovXG4gICAgQE91dHB1dCgpXG4gICAgbm9kZURibENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlRW50aXR5RXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBjdXJyZW50IGRpc3BsYXkgZm9sZGVyIGNoYW5nZXMgKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb2xkZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGVFbnRyeUV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGFjdHMgdXBvbiBmaWxlcyB3aXRoIGVpdGhlciBzaW5nbGUgb3IgZG91YmxlIGNsaWNrXG4gICAgICogKGRlcGVuZHMgb24gYG5hdmlnYXRpb24tbW9kZWApLiBVc2VmdWwgZm9yIGludGVncmF0aW9uIHdpdGggdGhlXG4gICAgICogVmlld2VyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlRW50aXR5RXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBEb2N1bWVudCBMaXN0IGhhcyBsb2FkZWQgYWxsIGl0ZW1zIGFuZCBpcyByZWFkeSBmb3IgdXNlICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGVQYWdpbmc+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBBUEkgZmFpbHMgdG8gZ2V0IHRoZSBEb2N1bWVudCBMaXN0IGRhdGEgKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbm9kZSBzZWxlY3Rpb24gY2hhbmdlICovXG4gICAgQE91dHB1dCgpXG4gICAgbm9kZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlRW50cnlbXT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBmaWx0ZXIgdmFsdWUgaXMgc2VsZWN0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaFtdPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBjb2x1bW4gd2lkdGhzIGNoYW5nZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNvbHVtbnNXaWR0aENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2NvbHVtbklkOiBzdHJpbmddOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gY29sdW1ucyB2aXNpYmlsaXR5IGNoYW5nZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBbY29sdW1uSWQ6IHN0cmluZ106IGJvb2xlYW4gfSB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gY29sdW1ucyBvcmRlciBjaGFuZ2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICBjb2x1bW5zT3JkZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHJvdyBpdGVtcyBjb3VudCBpbiB0aGUgdGFibGUgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZEl0ZW1zQ291bnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdkYXRhVGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGRhdGFUYWJsZTogRGF0YVRhYmxlQ29tcG9uZW50O1xuXG4gICAgYWN0aW9uczogQ29udGVudEFjdGlvbk1vZGVsW10gPSBbXTtcbiAgICBjb250ZXh0QWN0aW9uSGFuZGxlcjogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBkYXRhOiBTaGFyZURhdGFUYWJsZUFkYXB0ZXI7XG4gICAgbm9QZXJtaXNzaW9uOiBib29sZWFuID0gZmFsc2U7XG4gICAgc2VsZWN0aW9uID0gbmV3IEFycmF5PE5vZGVFbnRyeT4oKTtcbiAgICAkZm9sZGVyTm9kZTogU3ViamVjdDxOb2RlPiA9IG5ldyBTdWJqZWN0PE5vZGU+KCk7XG4gICAgYWxsb3dGaWx0ZXJpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICAgIG9yZGVyQnk6IHN0cmluZ1tdID0gbnVsbDtcbiAgICBwcmVzZWxlY3RlZFJvd3M6IERhdGFSb3dbXSA9IFtdO1xuXG4gICAgLy8gQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICBmb2xkZXJOb2RlOiBOb2RlO1xuXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvbjogUGFnaW5hdGlvbk1vZGVsID0gdGhpcy5ERUZBVUxUX1BBR0lOQVRJT047XG4gICAgcGFnaW5hdGlvbjogQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb25Nb2RlbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb25Nb2RlbD4odGhpcy5ERUZBVUxUX1BBR0lOQVRJT04pO1xuICAgIHNvcnRpbmdTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RGF0YVNvcnRpbmdbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFTb3J0aW5nW10+KHRoaXMuREVGQVVMVF9TT1JUSU5HKTtcblxuICAgIHByaXZhdGUgcm93TWVudUNhY2hlOiB7IFtrZXk6IHN0cmluZ106IENvbnRlbnRBY3Rpb25Nb2RlbFtdIH0gPSB7fTtcbiAgICBwcml2YXRlIGxvYWRpbmdUaW1lb3V0OiBhbnk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBwcml2YXRlIF9ub2Rlc0FwaTogTm9kZXNBcGk7XG4gICAgZ2V0IG5vZGVzQXBpKCk6IE5vZGVzQXBpIHtcbiAgICAgICAgdGhpcy5fbm9kZXNBcGkgPSB0aGlzLl9ub2Rlc0FwaSA/PyBuZXcgTm9kZXNBcGkodGhpcy5hbGZyZXNjb0FwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc0FwaTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkb2N1bWVudExpc3RTZXJ2aWNlOiBEb2N1bWVudExpc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRodW1ibmFpbFNlcnZpY2U6IFRodW1ibmFpbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYWxmcmVzY29BcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IE5vZGVzQXBpU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkYXRhVGFibGVTZXJ2aWNlOiBEYXRhVGFibGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxvY2tTZXJ2aWNlOiBMb2NrU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZ1xuICAgICkge1xuICAgICAgICBzdXBlcihhcHBDb25maWcsICdkZWZhdWx0JywgcHJlc2V0c0RlZmF1bHRNb2RlbCk7XG4gICAgICAgIHRoaXMubm9kZVNlcnZpY2Uubm9kZVVwZGF0ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChub2RlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGFUYWJsZVNlcnZpY2Uucm93VXBkYXRlLm5leHQoeyBpZDogbm9kZS5pZCwgb2JqOiB7IGVudHJ5OiBub2RlIH0gfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZVxuICAgICAgICAgICAgLnNlbGVjdChVc2VyUHJlZmVyZW5jZVZhbHVlcy5QYWdpbmF0aW9uU2l6ZSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocGFnU2l6ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWF4SXRlbXMgPSB0aGlzLl9wYWdpbmF0aW9uLm1heEl0ZW1zID0gcGFnU2l6ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldENvbnRleHRBY3Rpb25zKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgICAgICBpZiAobm9kZT8uZW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLmdldE5vZGVBY3Rpb25zKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGFjdGlvbnMgJiYgYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnMubWFwKChjdXJyZW50QWN0aW9uOiBDb250ZW50QWN0aW9uTW9kZWwpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsOiBjdXJyZW50QWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0OiB0aGlzLmNvbnRleHRBY3Rpb25IYW5kbGVyXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGVmYXVsdFNvcnRpbmcoKTogRGF0YVNvcnRpbmcge1xuICAgICAgICBsZXQgZGVmYXVsdFNvcnRpbmc6IERhdGFTb3J0aW5nO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNvcnRpbmcpKSB7XG4gICAgICAgICAgICBjb25zdCBba2V5LCBkaXJlY3Rpb25dID0gdGhpcy5zb3J0aW5nO1xuICAgICAgICAgICAgZGVmYXVsdFNvcnRpbmcgPSBuZXcgRGF0YVNvcnRpbmcoa2V5LCBkaXJlY3Rpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVmYXVsdFNvcnRpbmcgPSBuZXcgRGF0YVNvcnRpbmcodGhpcy5zb3J0aW5nLmtleSwgdGhpcy5zb3J0aW5nLmRpcmVjdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmYXVsdFNvcnRpbmc7XG4gICAgfVxuXG4gICAgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIS9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuZGF0YSB8fCB0aGlzLmRhdGEuZ2V0Um93cygpLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb3dNZW51Q2FjaGUgPSB7fTtcbiAgICAgICAgdGhpcy5sb2FkTGF5b3V0UHJlc2V0cygpO1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgU2hhcmVEYXRhVGFibGVBZGFwdGVyKFxuICAgICAgICAgICAgdGhpcy50aHVtYm5haWxTZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB0aGlzLmdldERlZmF1bHRTb3J0aW5nKCksXG4gICAgICAgICAgICB0aGlzLnNvcnRpbmdNb2RlLFxuICAgICAgICAgICAgdGhpcy5hbGxvd0Ryb3BGaWxlc1xuICAgICAgICApO1xuICAgICAgICB0aGlzLmRhdGEudGh1bWJuYWlscyA9IHRoaXMudGh1bWJuYWlscztcbiAgICAgICAgdGhpcy5kYXRhLnBlcm1pc3Npb25zU3R5bGUgPSB0aGlzLnBlcm1pc3Npb25zU3R5bGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3Jvd0ZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldEZpbHRlcih0aGlzLl9yb3dGaWx0ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VSZXNvbHZlcikge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldEltYWdlUmVzb2x2ZXIodGhpcy5pbWFnZVJlc29sdmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29udGV4dEFjdGlvbkhhbmRsZXIucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh2YWwpID0+IHRoaXMuY29udGV4dEFjdGlvbkNhbGxiYWNrKHZhbCkpO1xuXG4gICAgICAgIHRoaXMuZW5mb3JjZVNpbmdsZUNsaWNrTmF2aWdhdGlvbkZvck1vYmlsZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZSAmJiBPYmplY3Qua2V5cyh0aGlzLmZpbHRlclZhbHVlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dIZWFkZXIgPSBTaG93SGVhZGVyTW9kZS5BbHdheXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29sdW1uc1ByZXNldEtleSkge1xuICAgICAgICAgICAgdGhpcy5zZXRQcmVzZXRLZXkodGhpcy5jb2x1bW5zUHJlc2V0S2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5yZWxvYWQkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UucmVzZXRTZWxlY3Rpb24kLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uTGlzdCkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5MaXN0LmNvbHVtbnMuY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQ29sdW1ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5zZXRDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZWF0ZURhdGF0YWJsZVNjaGVtYSgpO1xuICAgICAgICB0aGlzLmRhdGEuc2V0Q29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKCFjaGFuZ2VzWydwcmVzZWxlY3ROb2RlcyddKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNvcnRpbmcpKSB7XG4gICAgICAgICAgICBjb25zdCBba2V5LCBkaXJlY3Rpb25dID0gdGhpcy5zb3J0aW5nO1xuICAgICAgICAgICAgdGhpcy5vcmRlckJ5ID0gdGhpcy5idWlsZE9yZGVyQnlBcnJheShrZXksIGRpcmVjdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9yZGVyQnkgPSB0aGlzLmJ1aWxkT3JkZXJCeUFycmF5KHRoaXMuc29ydGluZy5rZXksIHRoaXMuc29ydGluZy5kaXJlY3Rpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnRodW1ibmFpbHMgPSB0aGlzLnRodW1ibmFpbHM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5zb3J0aW5nTW9kZSAmJiAhY2hhbmdlcy5zb3J0aW5nTW9kZS5maXJzdENoYW5nZSAmJiB0aGlzLmRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5zb3J0aW5nTW9kZSA9IGNoYW5nZXMuc29ydGluZ01vZGUuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuc29ydGluZyAmJiAhY2hhbmdlcy5zb3J0aW5nLmZpcnN0Q2hhbmdlICYmIHRoaXMuZGF0YSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjaGFuZ2VzLnNvcnRpbmcuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICYmIG5ld1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBba2V5LCBkaXJlY3Rpb25dID0gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnNldFNvcnRpbmcobmV3IERhdGFTb3J0aW5nKGtleSwgZGlyZWN0aW9uKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Rm9sZGVySWQgJiYgY2hhbmdlc1snY3VycmVudEZvbGRlcklkJ10/LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snY3VycmVudEZvbGRlcklkJ10/LnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEZvbGRlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMubm9kZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVyZ2UgPSB0aGlzLl9wYWdpbmF0aW9uID8gdGhpcy5fcGFnaW5hdGlvbi5tZXJnZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5sb2FkUGFnZShjaGFuZ2VzLm5vZGUuY3VycmVudFZhbHVlLCBtZXJnZSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZUV4aXN0aW5nU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblByZXNlbGVjdE5vZGVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZWFkeShjaGFuZ2VzLm5vZGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlcy5pbWFnZVJlc29sdmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnNldEltYWdlUmVzb2x2ZXIoY2hhbmdlcy5pbWFnZVJlc29sdmVyLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWxvYWQoaGlkZUxvYWRpbmdTcGlubmVyID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLnJlbG9hZFdpdGhvdXRSZXNldHRpbmdTZWxlY3Rpb24oaGlkZUxvYWRpbmdTcGlubmVyKTtcbiAgICB9XG5cbiAgICByZWxvYWRXaXRob3V0UmVzZXR0aW5nU2VsZWN0aW9uKGhpZGVMb2FkaW5nU3Bpbm5lciA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEubG9hZFBhZ2UodGhpcy5ub2RlLCB0aGlzLl9wYWdpbmF0aW9uLm1lcmdlLCBudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlRXhpc3RpbmdTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25QcmVzZWxlY3ROb2RlcygpO1xuICAgICAgICAgICAgdGhpcy5zeW5jUGFnaW5hdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFSZWFkeSh0aGlzLm5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkRm9sZGVyKGhpZGVMb2FkaW5nU3Bpbm5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb250ZXh0QWN0aW9uQ2FsbGJhY2soYWN0aW9uKSB7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUNvbnRlbnRBY3Rpb24oYWN0aW9uLm5vZGUsIGFjdGlvbi5tb2RlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXROb2RlQWN0aW9ucyhub2RlOiBOb2RlRW50cnkgfCBhbnkpOiBDb250ZW50QWN0aW9uTW9kZWxbXSB7XG4gICAgICAgIGlmIChub2RlPy5lbnRyeSkge1xuICAgICAgICAgICAgbGV0IHRhcmdldCA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmIChub2RlLmVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgICAgICAgIHRhcmdldCA9ICdkb2N1bWVudCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUuZW50cnkuaXNGb2xkZXIpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSAnZm9sZGVyJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLnJvd01lbnVDYWNoZVtub2RlLmVudHJ5LmlkXTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWN0aW9uKGFjdGlvbiwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9ucztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25zQnlUYXJnZXQgPSB0aGlzLmFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IHR5cGVvZiBlbnRyeS52aXNpYmxlID09PSAnZnVuY3Rpb24nID8gZW50cnkudmlzaWJsZShub2RlKSA6IGVudHJ5LnZpc2libGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1Zpc2libGUgJiYgZW50cnkudGFyZ2V0LnRvTG93ZXJDYXNlKCkgPT09IHRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiBuZXcgQ29udGVudEFjdGlvbk1vZGVsKGFjdGlvbikpO1xuXG4gICAgICAgICAgICAgICAgYWN0aW9uc0J5VGFyZ2V0LmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBY3Rpb24oYWN0aW9uLCBub2RlKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMucm93TWVudUNhY2hlW25vZGUuZW50cnkuaWRdID0gYWN0aW9uc0J5VGFyZ2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb25zQnlUYXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoQWN0aW9uKGFjdGlvbjogQ29udGVudEFjdGlvbk1vZGVsLCBub2RlOiBOb2RlRW50cnkpIHtcbiAgICAgICAgYWN0aW9uLmRpc2FibGVkID0gdGhpcy5pc0FjdGlvbkRpc2FibGVkKGFjdGlvbiwgbm9kZSk7XG4gICAgICAgIGFjdGlvbi52aXNpYmxlID0gdGhpcy5pc0FjdGlvblZpc2libGUoYWN0aW9uLCBub2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uVmlzaWJsZShhY3Rpb246IENvbnRlbnRBY3Rpb25Nb2RlbCwgbm9kZTogTm9kZUVudHJ5KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2YgYWN0aW9uLnZpc2libGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBhY3Rpb24udmlzaWJsZShub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3Rpb24udmlzaWJsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBDb250ZW50QWN0aW9uTW9kZWwsIG5vZGU6IE5vZGVFbnRyeSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbi5kaXNhYmxlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi5kaXNhYmxlZChub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChhY3Rpb24ucGVybWlzc2lvbiAmJiBhY3Rpb24uZGlzYWJsZVdpdGhOb1Blcm1pc3Npb24gJiYgIXRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhub2RlLmVudHJ5LCBhY3Rpb24ucGVybWlzc2lvbikpIHx8XG4gICAgICAgICAgICB0aGlzLmxvY2tTZXJ2aWNlLmlzTG9ja2VkKG5vZGUuZW50cnkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uLmRpc2FibGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKVxuICAgIG9uU2hvd0NvbnRleHRNZW51KGU/OiBFdmVudCkge1xuICAgICAgICBpZiAoZSAmJiB0aGlzLmNvbnRleHRNZW51QWN0aW9ucykge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUbyhub2RlOiBOb2RlIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXROZXdGb2xkZXJQYWdpbmF0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9IG5vZGU7XG4gICAgICAgICAgICB0aGlzLmZvbGRlckNoYW5nZS5lbWl0KG5ldyBOb2RlRW50cnlFdmVudCh7IGlkOiBub2RlIH0gYXMgTm9kZSkpO1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FuTmF2aWdhdGVGb2xkZXIobm9kZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0TmV3Rm9sZGVyUGFnaW5hdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEZvbGRlcklkID0gdGhpcy5nZXROb2RlRm9sZGVyRGVzdGluYXRpb25JZChub2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvbGRlckNoYW5nZS5lbWl0KG5ldyBOb2RlRW50cnlFdmVudCh7IGlkOiB0aGlzLmN1cnJlbnRGb2xkZXJJZCB9IGFzIE5vZGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5vZGVGb2xkZXJEZXN0aW5hdGlvbklkKG5vZGU6IE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNMaW5rRm9sZGVyKG5vZGUpID8gbm9kZS5wcm9wZXJ0aWVzWydjbTpkZXN0aW5hdGlvbiddIDogbm9kZS5pZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGlua0ZvbGRlcihub2RlOiBOb2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAnYXBwOmZvbGRlcmxpbmsnICYmIG5vZGUucHJvcGVydGllcz8uWydjbTpkZXN0aW5hdGlvbiddO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ3VzdG9tU291cmNlRGF0YShub2RlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9IG5vZGVJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gZXhlY3V0aW5nIGNvbnRlbnQgYWN0aW9uIGZvciBhIGRvY3VtZW50IG9yIGZvbGRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBub2RlIE5vZGUgdG8gYmUgdGhlIGNvbnRleHQgb2YgdGhlIGV4ZWN1dGlvbi5cbiAgICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB0byBiZSBleGVjdXRlZCBhZ2FpbnN0IHRoZSBjb250ZXh0LlxuICAgICAqL1xuICAgIGV4ZWN1dGVDb250ZW50QWN0aW9uKG5vZGU6IE5vZGVFbnRyeSwgYWN0aW9uOiBDb250ZW50QWN0aW9uTW9kZWwpIHtcbiAgICAgICAgaWYgKG5vZGU/LmVudHJ5ICYmIGFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlclN1YiA9IHR5cGVvZiBhY3Rpb24uaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJyA/IGFjdGlvbi5oYW5kbGVyKG5vZGUsIHRoaXMsIGFjdGlvbi5wZXJtaXNzaW9uKSA6IG9mKHRydWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbi5leGVjdXRlID09PSAnZnVuY3Rpb24nICYmIGhhbmRsZXJTdWIpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVyU3ViLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiBhY3Rpb24uZXhlY3V0ZShub2RlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExvYWRpbmdTdGF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5kYXRhPy5nZXRSb3dzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubG9hZGluZ1RpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubG9hZGluZ1RpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubG9hZGluZ1RpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkRm9sZGVyKGhpZGVMb2FkaW5nU3Bpbm5lciA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghaGlkZUxvYWRpbmdTcGlubmVyKSB7XG4gICAgICAgICAgICB0aGlzLnNldExvYWRpbmdTdGF0ZSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UuaXNDdXN0b21Tb3VyY2VTZXJ2aWNlKHRoaXMuY3VycmVudEZvbGRlcklkKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDdXN0b21Tb3VyY2VEYXRhKHRoaXMuY3VycmVudEZvbGRlcklkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5sb2FkRm9sZGVyQnlOb2RlSWQodGhpcy5jdXJyZW50Rm9sZGVySWQsIHRoaXMuX3BhZ2luYXRpb24sIHRoaXMuaW5jbHVkZUZpZWxkcywgdGhpcy53aGVyZSwgdGhpcy5vcmRlckJ5KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoZG9jdW1lbnROb2RlOiBEb2N1bWVudExvYWRlck5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnROb2RlLmN1cnJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sZGVyTm9kZSA9IGRvY3VtZW50Tm9kZS5jdXJyZW50Tm9kZS5lbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZm9sZGVyTm9kZS5uZXh0KGRvY3VtZW50Tm9kZS5jdXJyZW50Tm9kZS5lbnRyeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25QYWdlTG9hZGVkKGRvY3VtZW50Tm9kZS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXNldFNlbGVjdGlvbigpIHtcbiAgICAgICAgdGhpcy5kYXRhVGFibGUucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgdGhpcy5ub1Blcm1pc3Npb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvblBhZ2VMb2FkZWQobm9kZVBhZ2luZzogTm9kZVBhZ2luZykge1xuICAgICAgICBpZiAobm9kZVBhZ2luZykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5sb2FkUGFnZShub2RlUGFnaW5nLCB0aGlzLl9wYWdpbmF0aW9uLm1lcmdlLCB0aGlzLmFsbG93RHJvcEZpbGVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlRXhpc3RpbmdTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25QcmVzZWxlY3ROb2RlcygpO1xuICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFSZWFkeShub2RlUGFnaW5nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU29ydGluZ0NoYW5nZWQoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgICAgIHRoaXMub3JkZXJCeSA9IHRoaXMuYnVpbGRPcmRlckJ5QXJyYXkoZXZlbnQuZGV0YWlsLnNvcnRpbmdLZXksIGV2ZW50LmRldGFpbC5kaXJlY3Rpb24pO1xuICAgICAgICB0aGlzLnNvcnRpbmcgPSBbZXZlbnQuZGV0YWlsLnNvcnRpbmdLZXksIGV2ZW50LmRldGFpbC5kaXJlY3Rpb25dO1xuICAgICAgICB0aGlzLnNvcnRpbmdTdWJqZWN0Lm5leHQoW3RoaXMuYWRkaXRpb25hbFNvcnRpbmcsIGV2ZW50LmRldGFpbF0pO1xuXG4gICAgICAgIGlmICh0aGlzLnNvcnRpbmdNb2RlID09PSAnc2VydmVyJykge1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRPcmRlckJ5QXJyYXkoY3VycmVudEtleTogc3RyaW5nLCBjdXJyZW50RGlyZWN0aW9uOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbYCR7dGhpcy5hZGRpdGlvbmFsU29ydGluZy5rZXl9ICR7dGhpcy5hZGRpdGlvbmFsU29ydGluZy5kaXJlY3Rpb259YCwgYCR7Y3VycmVudEtleX0gJHtjdXJyZW50RGlyZWN0aW9ufWBdO1xuICAgIH1cblxuICAgIG9uUHJldmlld0ZpbGUobm9kZTogTm9kZUVudHJ5KSB7XG4gICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICBjb25zdCBzaXplSW5NQiA9IG5vZGUuZW50cnk/LmNvbnRlbnQ/LnNpemVJbkJ5dGVzIC8gQllURVNfVE9fTUJfQ09OVkVSU0lPTl9WQUxVRTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVBdXRvRG93bmxvYWRGbGFnOiBib29sZWFuID0gdGhpcy5hcHBDb25maWcuZ2V0KCd2aWV3ZXIuZW5hYmxlRmlsZUF1dG9Eb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgY29uc3Qgc2l6ZVRocmVzaG9sZDogbnVtYmVyID0gdGhpcy5hcHBDb25maWcuZ2V0KCd2aWV3ZXIuZmlsZUF1dG9Eb3dubG9hZFNpemVUaHJlc2hvbGRJbk1CJywgMTUpO1xuXG4gICAgICAgICAgICBpZiAoZmlsZUF1dG9Eb3dubG9hZEZsYWcgJiYgc2l6ZUluTUIgJiYgc2l6ZUluTUIgPiBzaXplVGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihGaWxlQXV0b0Rvd25sb2FkQ29tcG9uZW50LCB7IGRpc2FibGVDbG9zZTogdHJ1ZSwgZGF0YTogbm9kZSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3LmVtaXQobmV3IE5vZGVFbnRpdHlFdmVudChub2RlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlKGNvbHVtbnM6IERhdGFDb2x1bW5bXSkge1xuICAgICAgICB0aGlzLmNvbHVtbnNWaXNpYmlsaXR5ID0gY29sdW1ucy5yZWR1Y2UoKHZpc2libGVDb2x1bW5zTWFwLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNIaWRkZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZpc2libGVDb2x1bW5zTWFwW2NvbHVtbi5pZF0gPSAhY29sdW1uLmlzSGlkZGVuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmlzaWJsZUNvbHVtbnNNYXA7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICB0aGlzLmNyZWF0ZUNvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5kYXRhLnNldENvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5jb2x1bW5zVmlzaWJpbGl0eUNoYW5nZWQuZW1pdCh0aGlzLmNvbHVtbnNWaXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlKGNvbHVtbnNXaXRoTmV3T3JkZXI6IERhdGFDb2x1bW5bXSkge1xuICAgICAgICB0aGlzLmNvbHVtbnNPcmRlciA9IGNvbHVtbnNXaXRoTmV3T3JkZXIubWFwKChjb2x1bW4pID0+IGNvbHVtbi5pZCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1ucygpO1xuICAgICAgICB0aGlzLmNvbHVtbnNPcmRlckNoYW5nZWQuZW1pdCh0aGlzLmNvbHVtbnNPcmRlcik7XG4gICAgfVxuXG4gICAgb25Db2x1bW5zV2lkdGhDaGFuZ2UoY29sdW1uczogRGF0YUNvbHVtbltdKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbnNXaWR0aHMgPSBjb2x1bW5zLnJlZHVjZSgod2lkdGhzQ29sdW1uc01hcCwgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgd2lkdGhzQ29sdW1uc01hcFtjb2x1bW4uaWRdID0gTWF0aC5jZWlsKGNvbHVtbi53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd2lkdGhzQ29sdW1uc01hcDtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICAgIHRoaXMuY29sdW1uc1dpZHRocyA9IHsgLi4udGhpcy5jb2x1bW5zV2lkdGhzLCAuLi5uZXdDb2x1bW5zV2lkdGhzIH07XG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1ucygpO1xuICAgICAgICB0aGlzLmNvbHVtbnNXaWR0aENoYW5nZWQuZW1pdCh0aGlzLmNvbHVtbnNXaWR0aHMpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0ZWRJdGVtc0NvdW50Q2hhbmdlZChjb3VudDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NvdW50Q2hhbmdlZC5lbWl0KGNvdW50KTtcbiAgICB9XG5cbiAgICBvbk5vZGVDbGljayhub2RlRW50cnk6IE5vZGVFbnRyeSkge1xuICAgICAgICBjb25zdCBkb21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnbm9kZS1jbGljaycsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIHNlbmRlcjogdGhpcyxcbiAgICAgICAgICAgICAgICBub2RlOiBub2RlRW50cnlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE5vZGVFbnRpdHlFdmVudChub2RlRW50cnkpO1xuICAgICAgICB0aGlzLm5vZGVDbGljay5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5hdmlnYXRlICYmIHRoaXMubmF2aWdhdGlvbk1vZGUgPT09IERvY3VtZW50TGlzdENvbXBvbmVudC5TSU5HTEVfQ0xJQ0tfTkFWSUdBVElPTikge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUFjdGlvbkNsaWNrKG5vZGVFbnRyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5vZGVEYmxDbGljayhub2RlRW50cnk6IE5vZGVFbnRyeSkge1xuICAgICAgICBjb25zdCBkb21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnbm9kZS1kYmxjbGljaycsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIHNlbmRlcjogdGhpcyxcbiAgICAgICAgICAgICAgICBub2RlOiBub2RlRW50cnlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcblxuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBOb2RlRW50aXR5RXZlbnQobm9kZUVudHJ5KTtcbiAgICAgICAgdGhpcy5ub2RlRGJsQ2xpY2suZW1pdChldmVudCk7XG5cbiAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0ZSAmJiB0aGlzLm5hdmlnYXRpb25Nb2RlID09PSBEb2N1bWVudExpc3RDb21wb25lbnQuRE9VQkxFX0NMSUNLX05BVklHQVRJT04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4ZWN1dGVBY3Rpb25DbGljayhub2RlRW50cnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhlY3V0ZUFjdGlvbkNsaWNrKG5vZGVFbnRyeTogTm9kZUVudHJ5KSB7XG4gICAgICAgIGlmIChub2RlRW50cnk/LmVudHJ5KSB7XG4gICAgICAgICAgICBpZiAobm9kZUVudHJ5LmVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25QcmV2aWV3RmlsZShub2RlRW50cnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZUVudHJ5LmVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvKG5vZGVFbnRyeS5lbnRyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChub2RlRW50cnkuZW50cnlbJ2d1aWQnXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGU6IHRoaXMuaW5jbHVkZUZpZWxkc1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVzQXBpLmdldE5vZGUobm9kZUVudHJ5LmVudHJ5WydndWlkJ10sIG9wdGlvbnMpLnRoZW4oKG5vZGU6IE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG8obm9kZS5lbnRyeSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5vZGVTZWxlY3QoZXZlbnQ6IHsgcm93OiBTaGFyZURhdGFSb3c7IHNlbGVjdGlvbjogQXJyYXk8U2hhcmVEYXRhUm93PiB9KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gZXZlbnQuc2VsZWN0aW9uLm1hcCgoZW50cnkpID0+IGVudHJ5Lm5vZGUpO1xuICAgICAgICBjb25zdCBkb21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnbm9kZS1zZWxlY3QnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICBub2RlOiBldmVudC5yb3cgPyBldmVudC5yb3cubm9kZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1YmJsZXM6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubm9kZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk5vZGVVbnNlbGVjdChldmVudDogeyByb3c6IFNoYXJlRGF0YVJvdzsgc2VsZWN0aW9uOiBBcnJheTxTaGFyZURhdGFSb3c+IH0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBldmVudC5zZWxlY3Rpb24ubWFwKChlbnRyeSkgPT4gZW50cnkubm9kZSk7XG4gICAgICAgIGNvbnN0IGRvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdub2RlLXVuc2VsZWN0Jywge1xuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgbm9kZTogZXZlbnQucm93ID8gZXZlbnQucm93Lm5vZGUgOiBudWxsLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbjogdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5vZGVTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG4gICAgfVxuXG4gICAgb25TaG93Um93Q29udGV4dE1lbnUoZXZlbnQ6IERhdGFDZWxsRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dE1lbnVBY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gZXZlbnQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gYXJncy5yb3cubm9kZTtcbiAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgYXJncy5hY3Rpb25zID0gdGhpcy5nZXRDb250ZXh0QWN0aW9ucyhub2RlKSB8fCBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2hvd1Jvd0FjdGlvbnNNZW51KGV2ZW50OiBEYXRhQ2VsbEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gZXZlbnQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gYXJncy5yb3cubm9kZTtcbiAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgYXJncy5hY3Rpb25zID0gdGhpcy5nZXROb2RlQWN0aW9ucyhub2RlKSB8fCBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRXhlY3V0ZVJvd0FjdGlvbihldmVudDogRGF0YVJvd0FjdGlvbkV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gZXZlbnQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gYXJncy5yb3cubm9kZTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IGFyZ3MuYWN0aW9uO1xuICAgICAgICAgICAgdGhpcy5leGVjdXRlQ29udGVudEFjdGlvbihub2RlLCBhY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmZvcmNlU2luZ2xlQ2xpY2tOYXZpZ2F0aW9uRm9yTW9iaWxlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Nb2RlID0gRG9jdW1lbnRMaXN0Q29tcG9uZW50LlNJTkdMRV9DTElDS19OQVZJR0FUSU9OO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuTmF2aWdhdGVGb2xkZXIobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgY2FuTmF2aWdhdGVGb2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgICBpZiAobm9kZT8uaXNGb2xkZXIpIHtcbiAgICAgICAgICAgIGNhbk5hdmlnYXRlRm9sZGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYW5OYXZpZ2F0ZUZvbGRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRGF0YVJlYWR5KG5vZGVQYWdpbmc6IE5vZGVQYWdpbmcpIHtcbiAgICAgICAgdGhpcy5yZWFkeS5lbWl0KG5vZGVQYWdpbmcpO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24ubmV4dChub2RlUGFnaW5nLmxpc3QucGFnaW5hdGlvbik7XG4gICAgfVxuXG4gICAgdXBkYXRlUGFnaW5hdGlvbihyZXF1ZXN0UGFnaW5hdGlvbk1vZGVsOiBSZXF1ZXN0UGFnaW5hdGlvbk1vZGVsKSB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb24ubWF4SXRlbXMgPSByZXF1ZXN0UGFnaW5hdGlvbk1vZGVsLm1heEl0ZW1zO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uLnNraXBDb3VudCA9IHJlcXVlc3RQYWdpbmF0aW9uTW9kZWwuc2tpcENvdW50O1xuICAgICAgICB0aGlzLnJlbG9hZChyZXF1ZXN0UGFnaW5hdGlvbk1vZGVsLm1lcmdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNQYWdpbmF0aW9uKCkge1xuICAgICAgICB0aGlzLm5vZGUubGlzdC5wYWdpbmF0aW9uLm1heEl0ZW1zID0gdGhpcy5fcGFnaW5hdGlvbi5tYXhJdGVtcztcbiAgICAgICAgdGhpcy5ub2RlLmxpc3QucGFnaW5hdGlvbi5za2lwQ291bnQgPSB0aGlzLl9wYWdpbmF0aW9uLnNraXBDb3VudDtcbiAgICB9XG5cbiAgICBvbkZpbHRlclNlbGVjdGlvbkNoYW5nZShhY3RpdmVGaWx0ZXJzOiBGaWx0ZXJTZWFyY2hbXSkge1xuICAgICAgICB0aGlzLmZpbHRlclNlbGVjdGlvbi5lbWl0KGFjdGl2ZUZpbHRlcnMpO1xuICAgIH1cblxuICAgIHJlc2V0TmV3Rm9sZGVyUGFnaW5hdGlvbigpIHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvbi5za2lwQ291bnQgPSAwO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uLm1heEl0ZW1zID0gdGhpcy5tYXhJdGVtcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKGVycjogYW55KSB7XG4gICAgICAgIGlmIChlcnIubWVzc2FnZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoSlNPTi5wYXJzZShlcnIubWVzc2FnZSkuZXJyb3Iuc3RhdHVzQ29kZSA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9QZXJtaXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8qIGVtcHR5ICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUoZmFsc2UpO1xuICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICB9XG5cbiAgICBnZXRQcmVzZWxlY3RlZE5vZGVzQmFzZWRPblNlbGVjdGlvbk1vZGUoKTogTm9kZUVudHJ5W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNQcmVzZWxlY3RlZE5vZGVzKCkgPyAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSA/IFt0aGlzLnByZXNlbGVjdE5vZGVzWzBdXSA6IHRoaXMucHJlc2VsZWN0Tm9kZXMpIDogW107XG4gICAgfVxuXG4gICAgZ2V0UHJlc2VsZWN0ZWRSb3dzQmFzZWRPblNlbGVjdGlvbk1vZGUoKTogRGF0YVJvd1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzUHJlc2VsZWN0ZWRSb3dzKCkgPyAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSA/IFt0aGlzLnByZXNlbGVjdGVkUm93c1swXV0gOiB0aGlzLnByZXNlbGVjdGVkUm93cykgOiBbXTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3Rpb25CYXNlZE9uU2VsZWN0aW9uTW9kZSgpOiBEYXRhUm93W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNQcmVzZWxlY3RlZFJvd3MoKVxuICAgICAgICAgICAgPyB0aGlzLmlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpXG4gICAgICAgICAgICAgICAgPyBbdGhpcy5wcmVzZWxlY3RlZFJvd3NbMF1dXG4gICAgICAgICAgICAgICAgOiB0aGlzLmRhdGEuZ2V0U2VsZWN0ZWRSb3dzKClcbiAgICAgICAgICAgIDogdGhpcy5kYXRhLmdldFNlbGVjdGVkUm93cygpO1xuICAgIH1cblxuICAgIG9uUHJlc2VsZWN0Tm9kZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc1ByZXNlbGVjdGVkTm9kZXMoKSkge1xuICAgICAgICAgICAgdGhpcy5wcmVzZWxlY3RSb3dzT2ZQcmVzZWxlY3RlZE5vZGVzKCk7XG4gICAgICAgICAgICBjb25zdCBwcmVzZWxlY3RlZFJvd3MgPSB0aGlzLmdldFByZXNlbGVjdGVkUm93c0Jhc2VkT25TZWxlY3Rpb25Nb2RlKCk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmRhdGEuZ2V0U2VsZWN0ZWRSb3dzKCkgYXMgU2hhcmVEYXRhUm93W107XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBwcmVzZWxlY3RlZFJvd3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFUYWJsZS5zZWxlY3RSb3cobm9kZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uTm9kZVNlbGVjdCh7IHJvdzogdW5kZWZpbmVkLCBzZWxlY3Rpb24gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHByZXNlcnZlRXhpc3RpbmdTZWxlY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb25Nb2RlKCkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2VsZWN0aW9uIG9mIHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93T2ZTZWxlY3Rpb24gPSB0aGlzLmRhdGEuZ2V0Um93QnlOb2RlSWQoc2VsZWN0aW9uLmVudHJ5LmlkKTtcbiAgICAgICAgICAgICAgICBpZiAocm93T2ZTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcm93T2ZTZWxlY3Rpb24uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJlc2VsZWN0Um93c09mUHJlc2VsZWN0ZWROb2RlcygpIHtcbiAgICAgICAgdGhpcy5wcmVzZWxlY3RlZFJvd3MgPSBbXTtcbiAgICAgICAgY29uc3QgcHJlc2VsZWN0ZWROb2RlcyA9IHRoaXMuZ2V0UHJlc2VsZWN0ZWROb2Rlc0Jhc2VkT25TZWxlY3Rpb25Nb2RlKCk7XG5cbiAgICAgICAgcHJlc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKChwcmVzZWxlY3RlZE5vZGU6IE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93T2ZQcmVzZWxlY3RlZE5vZGUgPSB0aGlzLmRhdGEuZ2V0Um93QnlOb2RlSWQocHJlc2VsZWN0ZWROb2RlLmVudHJ5LmlkKTtcbiAgICAgICAgICAgIGlmIChyb3dPZlByZXNlbGVjdGVkTm9kZSkge1xuICAgICAgICAgICAgICAgIHJvd09mUHJlc2VsZWN0ZWROb2RlLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlc2VsZWN0ZWRSb3dzLnB1c2gocm93T2ZQcmVzZWxlY3RlZE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1bnNlbGVjdFJvd0Zyb21Ob2RlSWQobm9kZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgcm93VG9VbnNlbGVjdCA9IHRoaXMuZGF0YS5nZXRSb3dCeU5vZGVJZChub2RlSWQpO1xuICAgICAgICBpZiAocm93VG9VbnNlbGVjdD8uaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgcm93VG9VbnNlbGVjdC5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRhdGFUYWJsZS5zZWxlY3RSb3cocm93VG9VbnNlbGVjdCwgZmFsc2UpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb25CYXNlZE9uU2VsZWN0aW9uTW9kZSgpIGFzIFNoYXJlRGF0YVJvd1tdO1xuICAgICAgICAgICAgdGhpcy5vbk5vZGVVbnNlbGVjdCh7IHJvdzogdW5kZWZpbmVkLCBzZWxlY3Rpb24gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc011bHRpcGxlU2VsZWN0aW9uTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpcGxlJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1ByZXNlbGVjdGVkTm9kZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXNlbGVjdE5vZGVzPy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzUHJlc2VsZWN0ZWRSb3dzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVzZWxlY3RlZFJvd3M/Lmxlbmd0aCA+IDA7XG4gICAgfVxufVxuIiwiPGFkZi1kYXRhdGFibGVcbiAgICAjZGF0YVRhYmxlXG4gICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiXG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgW2FjdGlvbnNdPVwiY29udGVudEFjdGlvbnNcIlxuICAgIFthY3Rpb25zUG9zaXRpb25dPVwiY29udGVudEFjdGlvbnNQb3NpdGlvblwiXG4gICAgW211bHRpc2VsZWN0XT1cIm11bHRpc2VsZWN0XCJcbiAgICBbY29udGV4dE1lbnVdPVwiY29udGV4dE1lbnVBY3Rpb25zXCJcbiAgICBbcm93U3R5bGVdPVwicm93U3R5bGVcIlxuICAgIFtyb3dTdHlsZUNsYXNzXT1cInJvd1N0eWxlQ2xhc3NcIlxuICAgIFtzaG93TWFpbkRhdGF0YWJsZUFjdGlvbnNdPVwidHJ1ZVwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW25vUGVybWlzc2lvbl09XCJub1Blcm1pc3Npb25cIlxuICAgIFtzaG93SGVhZGVyXT1cInNob3dIZWFkZXJcIlxuICAgIFtyb3dNZW51Q2FjaGVFbmFibGVkXT1cImZhbHNlXCJcbiAgICBbc3RpY2t5SGVhZGVyXT1cInN0aWNreUhlYWRlclwiXG4gICAgW2FsbG93RmlsdGVyaW5nXT1cImFsbG93RmlsdGVyaW5nXCJcbiAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwiaXNSZXNpemluZ0VuYWJsZWRcIlxuICAgIFtibHVyT25SZXNpemVdPVwiYmx1ck9uUmVzaXplXCJcbiAgICBbZGlzcGxheUNoZWNrYm94ZXNPbkhvdmVyXT1cImRpc3BsYXlDaGVja2JveGVzT25Ib3ZlclwiXG4gICAgKHNob3dSb3dDb250ZXh0TWVudSk9XCJvblNob3dSb3dDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICAoc2hvd1Jvd0FjdGlvbnNNZW51KT1cIm9uU2hvd1Jvd0FjdGlvbnNNZW51KCRldmVudClcIlxuICAgIChleGVjdXRlUm93QWN0aW9uKT1cIm9uRXhlY3V0ZVJvd0FjdGlvbigkZXZlbnQpXCJcbiAgICAoY29sdW1uc1dpZHRoQ2hhbmdlZCk9XCJvbkNvbHVtbnNXaWR0aENoYW5nZSgkZXZlbnQpXCJcbiAgICAoY29sdW1uT3JkZXJDaGFuZ2VkKT1cIm9uQ29sdW1uT3JkZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKHNlbGVjdGVkSXRlbXNDb3VudENoYW5nZWQpPVwib25TZWxlY3RlZEl0ZW1zQ291bnRDaGFuZ2VkKCRldmVudClcIlxuICAgIChyb3dDbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQudmFsdWU/Lm5vZGUpXCJcbiAgICAocm93RGJsQ2xpY2spPVwib25Ob2RlRGJsQ2xpY2soJGV2ZW50LnZhbHVlPy5ub2RlKVwiXG4gICAgKHJvdy1zZWxlY3QpPVwib25Ob2RlU2VsZWN0KCRhbnkoJGV2ZW50KS5kZXRhaWwpXCJcbiAgICAocm93LXVuc2VsZWN0KT1cIm9uTm9kZVVuc2VsZWN0KCRhbnkoJGV2ZW50KS5kZXRhaWwpXCJcbiAgICAoc29ydGluZy1jaGFuZ2VkKT1cIm9uU29ydGluZ0NoYW5nZWQoJGFueSgkZXZlbnQpKVwiXG4gICAgW2NsYXNzLmFkZi1kYXRhdGFibGUtZ2FsbGVyeS10aHVtYm5haWxzXT1cImRhdGEudGh1bWJuYWlsc1wiPlxuXG4gICAgPGRpdiAqbmdJZj1cImhlYWRlckZpbHRlcnNcIj5cbiAgICAgICAgPGFkZi1maWx0ZXItaGVhZGVyXG4gICAgICAgICAgICBbY3VycmVudEZvbGRlcklkXT1cImN1cnJlbnRGb2xkZXJJZFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZmlsdGVyVmFsdWVcIlxuICAgICAgICAgICAgKGZpbHRlclNlbGVjdGlvbik9XCJvbkZpbHRlclNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxhZGYtbm8tY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGFkZi1lbXB0eS1saXN0ICpuZ0lmPVwiIWN1c3RvbU5vQ29udGVudFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lbXB0eS1saXN0X3RlbXBsYXRlIGFkZi1lbXB0eS1mb2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lbXB0eS1mb2xkZXItdGhpcy1zcGFjZS1pcy1lbXB0eVwiPnt7J0FERi1ET0NVTUVOVC1MSVNULkVNUFRZLkhFQURFUicgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheURyYWdBbmREcm9wSGludFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lbXB0eS1mb2xkZXItZHJhZy1kcm9wXCI+e3sgJ0FERi1EQVRBVEFCTEUuRU1QVFkuRFJBRy1BTkQtRFJPUC5USVRMRScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtZW1wdHktZm9sZGVyLWFueS1maWxlcy1oZXJlLXRvLWFkZFwiPnt7ICdBREYtREFUQVRBQkxFLkVNUFRZLkRSQUctQU5ELURST1AuU1VCVElUTEUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIFthbHRdPVwiJ0FERi1EQVRBVEFCTEUuRU1QVFkuRFJBRy1BTkQtRFJPUC5USVRMRScgfCB0cmFuc2xhdGVcIiBjbGFzcz1cImFkZi1lbXB0eS1mb2xkZXItaW1hZ2VcIiBbc3JjXT1cImVtcHR5Rm9sZGVySW1hZ2VVcmxcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYWRmLWVtcHR5LWxpc3Q+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGUsIGVtcHR5LWZvbGRlci1jb250ZW50XCIgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2FkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuXG4gICAgPGFkZi1uby1wZXJtaXNzaW9uLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLW5vLXBlcm1pc3Npb25fX3RlbXBsYXRlXCIgKm5nSWY9XCIhY3VzdG9tTm9QZXJtaXNzaW9uc1RlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFkZi1uby1wZXJtaXNzaW9uX190ZW1wbGF0ZS0tdGV4dFwiPnt7ICdBREYtRE9DVU1FTlQtTElTVC5OT19QRVJNSVNTSU9OJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1uby1wZXJtaXNzaW9uLXRlbXBsYXRlLCBuby1wZXJtaXNzaW9uLWNvbnRlbnRcIiAvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYWRmLW5vLXBlcm1pc3Npb24tdGVtcGxhdGU+XG5cbiAgICA8YWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1kb2N1bWVudC1saXN0LWxvYWRpbmctY29udGFpbmVyXCIgKm5nSWY9XCIhY3VzdG9tTG9hZGluZ0NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJhZGYtZG9jdW1lbnQtbGlzdC1sb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZG9jdW1lbnQtbGlzdC1sb2FkaW5nLW1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERi1ET0NVTUVOVC1MSVNULkxPQURFUl9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwiJ2luZGV0ZXJtaW5hdGUnXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1sb2FkaW5nLWNvbnRlbnQtdGVtcGxhdGVcIiAvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cblxuICAgIDxhZGYtbWFpbi1tZW51LWRhdGF0YWJsZS10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1tYWluTWVudVRyaWdnZXI+XG4gICAgICAgICAgICA8YWRmLWRhdGF0YWJsZS1jb2x1bW4tc2VsZWN0b3JcbiAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgIFttYWluTWVudVRyaWdnZXJdPVwibWFpbk1lbnVUcmlnZ2VyXCJcbiAgICAgICAgICAgICAgW2NvbHVtbnNTb3J0aW5nXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW21heENvbHVtbnNWaXNpYmxlXT1cIm1heENvbHVtbnNWaXNpYmxlXCJcbiAgICAgICAgICAgICAgKHN1Ym1pdENvbHVtbnNWaXNpYmlsaXR5KT1cIm9uQ29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9hZGYtbWFpbi1tZW51LWRhdGF0YWJsZS10ZW1wbGF0ZT5cblxuPC9hZGYtZGF0YXRhYmxlPlxuIl19
@@ -30,14 +30,14 @@ export class FileAutoDownloadComponent {
30
30
  constructor(node) {
31
31
  this.node = node;
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileAutoDownloadComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileAutoDownloadComponent, isStandalone: true, selector: "adf-file-auto-download", ngImport: i0, template: "<div mat-dialog-title>\n <h3>{{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.HEADER' | translate }}</h3>\n</div>\n<mat-dialog-content>\n {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.LABEL' | translate }}\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n mat-dialog-close\n id=\"cancelButton\"\n [attr.aria-label]=\"'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.CANCEL' | translate\">\n {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.CANCEL' | translate }}\n </button>\n <button\n mat-button\n mat-dialog-close\n id=\"downloadButton\"\n color=\"primary\"\n [attr.aria-label]=\"'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.DOWNLOAD' | translate\"\n [adfNodeDownload]=\"node\">\n {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.DOWNLOAD' | translate }}\n </button>\n</mat-dialog-actions>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: NodeDownloadDirective, selector: "[adfNodeDownload]", inputs: ["adfNodeDownload", "version"] }] }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: FileAutoDownloadComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: FileAutoDownloadComponent, isStandalone: true, selector: "adf-file-auto-download", ngImport: i0, template: "<div mat-dialog-title>\n <h3>{{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.HEADER' | translate }}</h3>\n</div>\n<mat-dialog-content>\n {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.LABEL' | translate }}\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n mat-dialog-close\n id=\"cancelButton\"\n [attr.aria-label]=\"'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.CANCEL' | translate\">\n {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.CANCEL' | translate }}\n </button>\n <button\n mat-button\n mat-dialog-close\n id=\"downloadButton\"\n color=\"primary\"\n [attr.aria-label]=\"'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.DOWNLOAD' | translate\"\n [adfNodeDownload]=\"node\">\n {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.DOWNLOAD' | translate }}\n </button>\n</mat-dialog-actions>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: NodeDownloadDirective, selector: "[adfNodeDownload]", inputs: ["adfNodeDownload", "version"] }] }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileAutoDownloadComponent, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: FileAutoDownloadComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'adf-file-auto-download', standalone: true, imports: [CommonModule, MatDialogModule, TranslateModule, MatButtonModule, NodeDownloadDirective], template: "<div mat-dialog-title>\n <h3>{{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.HEADER' | translate }}</h3>\n</div>\n<mat-dialog-content>\n {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.LABEL' | translate }}\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n mat-dialog-close\n id=\"cancelButton\"\n [attr.aria-label]=\"'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.CANCEL' | translate\">\n {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.CANCEL' | translate }}\n </button>\n <button\n mat-button\n mat-dialog-close\n id=\"downloadButton\"\n color=\"primary\"\n [attr.aria-label]=\"'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.DOWNLOAD' | translate\"\n [adfNodeDownload]=\"node\">\n {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.DOWNLOAD' | translate }}\n </button>\n</mat-dialog-actions>\n" }]
39
39
  }], ctorParameters: () => [{ type: i4.NodeEntry, decorators: [{
40
40
  type: Inject,
41
41
  args: [MAT_DIALOG_DATA]
42
42
  }] }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdXRvLWRvd25sb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvZG9jdW1lbnQtbGlzdC9jb21wb25lbnRzL2ZpbGUtYXV0by1kb3dubG9hZC9maWxlLWF1dG8tZG93bmxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9kb2N1bWVudC1saXN0L2NvbXBvbmVudHMvZmlsZS1hdXRvLWRvd25sb2FkL2ZpbGUtYXV0by1kb3dubG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7O0FBUXBGLE1BQU0sT0FBTyx5QkFBeUI7SUFDbEMsWUFBNEMsSUFBZTtRQUFmLFNBQUksR0FBSixJQUFJLENBQVc7SUFBRyxDQUFDOytHQUR0RCx5QkFBeUIsa0JBQ2QsZUFBZTttR0FEMUIseUJBQXlCLGtGQy9CdEMsKzdCQXdCQSwyQ0RJYyxZQUFZLDhCQUFFLGVBQWUsK25CQUFFLGVBQWUsMkZBQUUsZUFBZSw0TkFBRSxxQkFBcUI7OzRGQUd2Rix5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0ksd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQzs7MEJBSXBGLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE5vZGVFbnRyeSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE5vZGVEb3dubG9hZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvbm9kZS1kb3dubG9hZC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1maWxlLWF1dG8tZG93bmxvYWQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTm9kZURvd25sb2FkRGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1hdXRvLWRvd25sb2FkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlQXV0b0Rvd25sb2FkQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIG5vZGU6IE5vZGVFbnRyeSkge31cbn1cbiIsIjxkaXYgbWF0LWRpYWxvZy10aXRsZT5cbiAgICA8aDM+e3sgJ0FERi1ET0NVTUVOVC1MSVNULkZJTEVfQVVUT19ET1dOTE9BRF9ESUFMT0cuSEVBREVSJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG48L2Rpdj5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAge3sgJ0FERi1ET0NVTUVOVC1MSVNULkZJTEVfQVVUT19ET1dOTE9BRF9ESUFMT0cuTEFCRUwnIHwgdHJhbnNsYXRlIH19XG48L21hdC1kaWFsb2ctY29udGVudD5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgYWxpZ249XCJlbmRcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgbWF0LWRpYWxvZy1jbG9zZVxuICAgICAgICBpZD1cImNhbmNlbEJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERi1ET0NVTUVOVC1MSVNULkZJTEVfQVVUT19ET1dOTE9BRF9ESUFMT0cuQUNUSU9OUy5DQU5DRUwnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgIHt7ICdBREYtRE9DVU1FTlQtTElTVC5GSUxFX0FVVE9fRE9XTkxPQURfRElBTE9HLkFDVElPTlMuQ0FOQ0VMJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBtYXQtZGlhbG9nLWNsb3NlXG4gICAgICAgIGlkPVwiZG93bmxvYWRCdXR0b25cIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREYtRE9DVU1FTlQtTElTVC5GSUxFX0FVVE9fRE9XTkxPQURfRElBTE9HLkFDVElPTlMuRE9XTkxPQUQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2FkZk5vZGVEb3dubG9hZF09XCJub2RlXCI+XG4gICAgICAgIHt7ICdBREYtRE9DVU1FTlQtTElTVC5GSUxFX0FVVE9fRE9XTkxPQURfRElBTE9HLkFDVElPTlMuRE9XTkxPQUQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdXRvLWRvd25sb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvZG9jdW1lbnQtbGlzdC9jb21wb25lbnRzL2ZpbGUtYXV0by1kb3dubG9hZC9maWxlLWF1dG8tZG93bmxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9kb2N1bWVudC1saXN0L2NvbXBvbmVudHMvZmlsZS1hdXRvLWRvd25sb2FkL2ZpbGUtYXV0by1kb3dubG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7O0FBUXBGLE1BQU0sT0FBTyx5QkFBeUI7SUFDbEMsWUFBNEMsSUFBZTtRQUFmLFNBQUksR0FBSixJQUFJLENBQVc7SUFBRyxDQUFDOzhHQUR0RCx5QkFBeUIsa0JBQ2QsZUFBZTtrR0FEMUIseUJBQXlCLGtGQy9CdEMsKzdCQXdCQSwyQ0RJYyxZQUFZLDhCQUFFLGVBQWUsK25CQUFFLGVBQWUsMkZBQUUsZUFBZSw0TkFBRSxxQkFBcUI7OzJGQUd2Rix5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0ksd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQzs7MEJBSXBGLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE5vZGVFbnRyeSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE5vZGVEb3dubG9hZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvbm9kZS1kb3dubG9hZC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1maWxlLWF1dG8tZG93bmxvYWQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTm9kZURvd25sb2FkRGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1hdXRvLWRvd25sb2FkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlQXV0b0Rvd25sb2FkQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIG5vZGU6IE5vZGVFbnRyeSkge31cbn1cbiIsIjxkaXYgbWF0LWRpYWxvZy10aXRsZT5cbiAgICA8aDM+e3sgJ0FERi1ET0NVTUVOVC1MSVNULkZJTEVfQVVUT19ET1dOTE9BRF9ESUFMT0cuSEVBREVSJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG48L2Rpdj5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAge3sgJ0FERi1ET0NVTUVOVC1MSVNULkZJTEVfQVVUT19ET1dOTE9BRF9ESUFMT0cuTEFCRUwnIHwgdHJhbnNsYXRlIH19XG48L21hdC1kaWFsb2ctY29udGVudD5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgYWxpZ249XCJlbmRcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgbWF0LWRpYWxvZy1jbG9zZVxuICAgICAgICBpZD1cImNhbmNlbEJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERi1ET0NVTUVOVC1MSVNULkZJTEVfQVVUT19ET1dOTE9BRF9ESUFMT0cuQUNUSU9OUy5DQU5DRUwnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgIHt7ICdBREYtRE9DVU1FTlQtTElTVC5GSUxFX0FVVE9fRE9XTkxPQURfRElBTE9HLkFDVElPTlMuQ0FOQ0VMJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBtYXQtZGlhbG9nLWNsb3NlXG4gICAgICAgIGlkPVwiZG93bmxvYWRCdXR0b25cIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREYtRE9DVU1FTlQtTElTVC5GSUxFX0FVVE9fRE9XTkxPQURfRElBTE9HLkFDVElPTlMuRE9XTkxPQUQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2FkZk5vZGVEb3dubG9hZF09XCJub2RlXCI+XG4gICAgICAgIHt7ICdBREYtRE9DVU1FTlQtTElTVC5GSUxFX0FVVE9fRE9XTkxPQURfRElBTE9HLkFDVElPTlMuRE9XTkxPQUQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==