ng-kinintel 0.0.397 → 20.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/fesm2022/ng-kinintel.mjs +11874 -0
  2. package/fesm2022/ng-kinintel.mjs.map +1 -0
  3. package/index.d.ts +2818 -5
  4. package/package.json +6 -14
  5. package/esm2020/lib/components/alert-groups/alert-groups.component.mjs +0 -76
  6. package/esm2020/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.mjs +0 -83
  7. package/esm2020/lib/components/dashboard-editor/configure-item/configure-item.component.mjs +0 -853
  8. package/esm2020/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.mjs +0 -56
  9. package/esm2020/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.mjs +0 -114
  10. package/esm2020/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.mjs +0 -163
  11. package/esm2020/lib/components/dashboard-editor/configure-item/vis-network-options.json +0 -135
  12. package/esm2020/lib/components/dashboard-editor/dashboard-editor.component.mjs +0 -580
  13. package/esm2020/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.mjs +0 -15
  14. package/esm2020/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.mjs +0 -50
  15. package/esm2020/lib/components/dashboard-editor/item-component/item-component.component.mjs +0 -1226
  16. package/esm2020/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.mjs +0 -111
  17. package/esm2020/lib/components/dashboards/dashboards.component.mjs +0 -163
  18. package/esm2020/lib/components/dashboards/view-dashboard/view-dashboard.component.mjs +0 -429
  19. package/esm2020/lib/components/data-explorer/change-source-warning/change-source-warning.component.mjs +0 -20
  20. package/esm2020/lib/components/data-explorer/data-explorer.component.mjs +0 -243
  21. package/esm2020/lib/components/data-explorer/export-data/export-data.component.mjs +0 -62
  22. package/esm2020/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.mjs +0 -70
  23. package/esm2020/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.mjs +0 -190
  24. package/esm2020/lib/components/data-picker/data-picker.component.mjs +0 -79
  25. package/esm2020/lib/components/data-search/data-search.component.mjs +0 -11
  26. package/esm2020/lib/components/data-sharing-invite/data-sharing-invite.component.mjs +0 -52
  27. package/esm2020/lib/components/dataset/create-dataset/create-dataset.component.mjs +0 -47
  28. package/esm2020/lib/components/dataset/dataset-editor/available-columns/available-columns.component.mjs +0 -28
  29. package/esm2020/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.mjs +0 -344
  30. package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.mjs +0 -80
  31. package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.mjs +0 -54
  32. package/esm2020/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.mjs +0 -67
  33. package/esm2020/lib/components/dataset/dataset-editor/dataset-editor.component.mjs +0 -1134
  34. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.mjs +0 -201
  35. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.mjs +0 -25
  36. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.mjs +0 -72
  37. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.mjs +0 -62
  38. package/esm2020/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.mjs +0 -41
  39. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.mjs +0 -78
  40. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.mjs +0 -39
  41. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.mjs +0 -75
  42. package/esm2020/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.mjs +0 -107
  43. package/esm2020/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.mjs +0 -20
  44. package/esm2020/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.mjs +0 -20
  45. package/esm2020/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.mjs +0 -58
  46. package/esm2020/lib/components/dataset/dataset-editor/share-query/share-query.component.mjs +0 -110
  47. package/esm2020/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.mjs +0 -20
  48. package/esm2020/lib/components/dataset/dataset.component.mjs +0 -294
  49. package/esm2020/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.mjs +0 -130
  50. package/esm2020/lib/components/datasource/create-datasource/api-access/api-access.component.mjs +0 -132
  51. package/esm2020/lib/components/datasource/create-datasource/create-datasource.component.mjs +0 -729
  52. package/esm2020/lib/components/datasource/create-datasource/import-data/import-data.component.mjs +0 -146
  53. package/esm2020/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.mjs +0 -165
  54. package/esm2020/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.mjs +0 -145
  55. package/esm2020/lib/components/datasource/datasource.component.mjs +0 -162
  56. package/esm2020/lib/components/datasource/document-datasource/document-datasource.component.mjs +0 -297
  57. package/esm2020/lib/components/export-project/export-project.component.mjs +0 -29
  58. package/esm2020/lib/components/feeds/feed/feed.component.mjs +0 -92
  59. package/esm2020/lib/components/feeds/feeds.component.mjs +0 -145
  60. package/esm2020/lib/components/job-tasks/job-tasks.component.mjs +0 -25
  61. package/esm2020/lib/components/marketplace/marketplace.component.mjs +0 -65
  62. package/esm2020/lib/components/metadata/metadata.component.mjs +0 -65
  63. package/esm2020/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.mjs +0 -113
  64. package/esm2020/lib/components/notification-groups/notification-groups.component.mjs +0 -86
  65. package/esm2020/lib/components/project-picker/project-picker.component.mjs +0 -118
  66. package/esm2020/lib/components/project-settings/project-link-selection/project-link-selection.component.mjs +0 -104
  67. package/esm2020/lib/components/project-settings/project-settings.component.mjs +0 -155
  68. package/esm2020/lib/components/query-caching/edit-query-cache/edit-query-cache.component.mjs +0 -51
  69. package/esm2020/lib/components/query-caching/query-cache-view/query-cache-view.component.mjs +0 -121
  70. package/esm2020/lib/components/query-caching/query-caching.component.mjs +0 -162
  71. package/esm2020/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.mjs +0 -45
  72. package/esm2020/lib/components/shared-with-me/shared-with-me.component.mjs +0 -174
  73. package/esm2020/lib/components/snapshots/snapshots.component.mjs +0 -244
  74. package/esm2020/lib/components/tag-picker/tag-picker.component.mjs +0 -74
  75. package/esm2020/lib/components/task-time-periods/task-time-periods.component.mjs +0 -55
  76. package/esm2020/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.mjs +0 -40
  77. package/esm2020/lib/guards/dashboard-changes.guard.mjs +0 -22
  78. package/esm2020/lib/kinintel-config.mjs +0 -3
  79. package/esm2020/lib/ng-kinintel.module.mjs +0 -437
  80. package/esm2020/lib/objects/action-event.mjs +0 -16
  81. package/esm2020/lib/services/alert.service.mjs +0 -52
  82. package/esm2020/lib/services/dashboard.service.mjs +0 -75
  83. package/esm2020/lib/services/data-processor.service.mjs +0 -56
  84. package/esm2020/lib/services/data-search.service.mjs +0 -36
  85. package/esm2020/lib/services/dataset.service.mjs +0 -187
  86. package/esm2020/lib/services/datasource.service.mjs +0 -93
  87. package/esm2020/lib/services/external.service.mjs +0 -33
  88. package/esm2020/lib/services/feed.service.mjs +0 -50
  89. package/esm2020/lib/services/notification.service.mjs +0 -41
  90. package/esm2020/lib/services/project.service.mjs +0 -130
  91. package/esm2020/lib/services/tag.service.mjs +0 -63
  92. package/esm2020/ng-kinintel.mjs +0 -5
  93. package/esm2020/public-api.mjs +0 -43
  94. package/fesm2015/ng-kinintel.mjs +0 -12182
  95. package/fesm2015/ng-kinintel.mjs.map +0 -1
  96. package/fesm2020/ng-kinintel.mjs +0 -11872
  97. package/fesm2020/ng-kinintel.mjs.map +0 -1
  98. package/lib/components/alert-groups/alert-groups.component.d.ts +0 -30
  99. package/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.d.ts +0 -28
  100. package/lib/components/dashboard-editor/configure-item/configure-item.component.d.ts +0 -256
  101. package/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.d.ts +0 -16
  102. package/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.d.ts +0 -59
  103. package/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.d.ts +0 -26
  104. package/lib/components/dashboard-editor/dashboard-editor.component.d.ts +0 -85
  105. package/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.d.ts +0 -8
  106. package/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.d.ts +0 -22
  107. package/lib/components/dashboard-editor/item-component/item-component.component.d.ts +0 -264
  108. package/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.d.ts +0 -30
  109. package/lib/components/dashboards/dashboards.component.d.ts +0 -56
  110. package/lib/components/dashboards/view-dashboard/view-dashboard.component.d.ts +0 -81
  111. package/lib/components/data-explorer/change-source-warning/change-source-warning.component.d.ts +0 -11
  112. package/lib/components/data-explorer/data-explorer.component.d.ts +0 -61
  113. package/lib/components/data-explorer/export-data/export-data.component.d.ts +0 -17
  114. package/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.d.ts +0 -25
  115. package/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.d.ts +0 -44
  116. package/lib/components/data-picker/data-picker.component.d.ts +0 -32
  117. package/lib/components/data-search/data-search.component.d.ts +0 -5
  118. package/lib/components/data-sharing-invite/data-sharing-invite.component.d.ts +0 -21
  119. package/lib/components/dataset/create-dataset/create-dataset.component.d.ts +0 -17
  120. package/lib/components/dataset/dataset-editor/available-columns/available-columns.component.d.ts +0 -12
  121. package/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.d.ts +0 -61
  122. package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.d.ts +0 -21
  123. package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.d.ts +0 -20
  124. package/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.d.ts +0 -19
  125. package/lib/components/dataset/dataset-editor/dataset-editor.component.d.ts +0 -131
  126. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.d.ts +0 -63
  127. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.d.ts +0 -11
  128. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.d.ts +0 -20
  129. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.d.ts +0 -16
  130. package/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.d.ts +0 -18
  131. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.d.ts +0 -23
  132. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.d.ts +0 -13
  133. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.d.ts +0 -22
  134. package/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.d.ts +0 -27
  135. package/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.d.ts +0 -11
  136. package/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.d.ts +0 -11
  137. package/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.d.ts +0 -25
  138. package/lib/components/dataset/dataset-editor/share-query/share-query.component.d.ts +0 -41
  139. package/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.d.ts +0 -11
  140. package/lib/components/dataset/dataset.component.d.ts +0 -74
  141. package/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.d.ts +0 -26
  142. package/lib/components/datasource/create-datasource/api-access/api-access.component.d.ts +0 -31
  143. package/lib/components/datasource/create-datasource/create-datasource.component.d.ts +0 -112
  144. package/lib/components/datasource/create-datasource/import-data/import-data.component.d.ts +0 -28
  145. package/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.d.ts +0 -40
  146. package/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.d.ts +0 -34
  147. package/lib/components/datasource/datasource.component.d.ts +0 -46
  148. package/lib/components/datasource/document-datasource/document-datasource.component.d.ts +0 -64
  149. package/lib/components/export-project/export-project.component.d.ts +0 -9
  150. package/lib/components/feeds/feed/feed.component.d.ts +0 -30
  151. package/lib/components/feeds/feeds.component.d.ts +0 -47
  152. package/lib/components/job-tasks/job-tasks.component.d.ts +0 -11
  153. package/lib/components/marketplace/marketplace.component.d.ts +0 -42
  154. package/lib/components/metadata/metadata.component.d.ts +0 -24
  155. package/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.d.ts +0 -37
  156. package/lib/components/notification-groups/notification-groups.component.d.ts +0 -28
  157. package/lib/components/project-picker/project-picker.component.d.ts +0 -37
  158. package/lib/components/project-settings/project-link-selection/project-link-selection.component.d.ts +0 -32
  159. package/lib/components/project-settings/project-settings.component.d.ts +0 -40
  160. package/lib/components/query-caching/edit-query-cache/edit-query-cache.component.d.ts +0 -17
  161. package/lib/components/query-caching/query-cache-view/query-cache-view.component.d.ts +0 -35
  162. package/lib/components/query-caching/query-caching.component.d.ts +0 -38
  163. package/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.d.ts +0 -21
  164. package/lib/components/shared-with-me/shared-with-me.component.d.ts +0 -43
  165. package/lib/components/snapshots/snapshots.component.d.ts +0 -52
  166. package/lib/components/tag-picker/tag-picker.component.d.ts +0 -27
  167. package/lib/components/task-time-periods/task-time-periods.component.d.ts +0 -20
  168. package/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.d.ts +0 -17
  169. package/lib/guards/dashboard-changes.guard.d.ts +0 -11
  170. package/lib/kinintel-config.d.ts +0 -10
  171. package/lib/ng-kinintel.module.d.ts +0 -116
  172. package/lib/objects/action-event.d.ts +0 -12
  173. package/lib/services/alert.service.d.ts +0 -17
  174. package/lib/services/dashboard.service.d.ts +0 -25
  175. package/lib/services/data-processor.service.d.ts +0 -18
  176. package/lib/services/data-search.service.d.ts +0 -14
  177. package/lib/services/dataset.service.d.ts +0 -56
  178. package/lib/services/datasource.service.d.ts +0 -34
  179. package/lib/services/external.service.d.ts +0 -12
  180. package/lib/services/feed.service.d.ts +0 -19
  181. package/lib/services/notification.service.d.ts +0 -16
  182. package/lib/services/project.service.d.ts +0 -27
  183. package/lib/services/tag.service.d.ts +0 -19
  184. package/public-api.d.ts +0 -38
@@ -1,145 +0,0 @@
1
- import { Component, Inject, Input } from '@angular/core';
2
- import { BehaviorSubject, merge, Subject } from 'rxjs';
3
- import { KININTEL_CONFIG } from '../../kinintel-config';
4
- import { debounceTime, map, switchMap } from 'rxjs/operators';
5
- import { DataExplorerComponent } from '../data-explorer/data-explorer.component';
6
- import { FeedComponent } from './feed/feed.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/material/legacy-dialog";
9
- import * as i2 from "../../services/feed.service";
10
- import * as i3 from "../../services/dataset.service";
11
- import * as i4 from "@angular/router";
12
- import * as i5 from "@angular/material/legacy-snack-bar";
13
- import * as i6 from "@angular/common/http";
14
- import * as i7 from "../../services/project.service";
15
- import * as i8 from "@angular/common";
16
- import * as i9 from "@angular/material/legacy-button";
17
- import * as i10 from "@angular/material/icon";
18
- import * as i11 from "@angular/material/legacy-menu";
19
- import * as i12 from "@angular/forms";
20
- export class FeedsComponent {
21
- constructor(dialog, feedService, datasetService, router, config, snackBar, http, projectService) {
22
- this.dialog = dialog;
23
- this.feedService = feedService;
24
- this.datasetService = datasetService;
25
- this.router = router;
26
- this.config = config;
27
- this.snackBar = snackBar;
28
- this.http = http;
29
- this.projectService = projectService;
30
- this.feeds = [];
31
- this.searchText = new BehaviorSubject('');
32
- this.limit = 10;
33
- this.offset = 0;
34
- this.page = 1;
35
- this.endOfResults = false;
36
- this.loading = true;
37
- this.canHaveAPIConnections = false;
38
- this.reload = new Subject();
39
- }
40
- async ngOnInit() {
41
- this.canHaveAPIConnections = this.projectService.doesActiveProjectHavePrivilege('feedaccess');
42
- if (this.canHaveAPIConnections) {
43
- this.apiKeys = await this.http.get('/account/apikey/first/feedaccess').toPromise();
44
- merge(this.searchText, this.reload)
45
- .pipe(debounceTime(300),
46
- // distinctUntilChanged(),
47
- switchMap(() => this.getFeeds())).subscribe((feeds) => {
48
- this.endOfResults = feeds.length < this.limit;
49
- this.feeds = feeds;
50
- this.loading = false;
51
- });
52
- this.searchText.subscribe(() => {
53
- this.page = 1;
54
- this.offset = 0;
55
- });
56
- }
57
- }
58
- ngOnDestroy() {
59
- }
60
- async copy(text) {
61
- await navigator.clipboard.writeText(text.trim());
62
- this.copied();
63
- }
64
- copied() {
65
- this.snackBar.open('Copied to Clipboard', null, {
66
- duration: 2000,
67
- verticalPosition: 'top'
68
- });
69
- }
70
- increaseOffset() {
71
- this.page = this.page + 1;
72
- this.offset = (this.limit * this.page) - this.limit;
73
- this.reload.next(Date.now());
74
- }
75
- decreaseOffset() {
76
- this.page = this.page <= 1 ? 1 : this.page - 1;
77
- this.offset = (this.limit * this.page) - this.limit;
78
- this.reload.next(Date.now());
79
- }
80
- pageSizeChange(value) {
81
- this.page = 1;
82
- this.offset = 0;
83
- this.limit = value;
84
- this.reload.next(Date.now());
85
- }
86
- editFeed(feed) {
87
- const dialogRef = this.dialog.open(FeedComponent, {
88
- width: '900px',
89
- height: '650px',
90
- data: { feed, feedUrl: this.feedUrl }
91
- });
92
- dialogRef.afterClosed().subscribe(res => {
93
- this.reload.next(Date.now());
94
- });
95
- }
96
- view(datasetId) {
97
- this.datasetService.getDataset(datasetId).then(datasetInstanceSummary => {
98
- const dialogRef = this.dialog.open(DataExplorerComponent, {
99
- width: '100vw',
100
- height: '100vh',
101
- maxWidth: '100vw',
102
- maxHeight: '100vh',
103
- hasBackdrop: false,
104
- data: {
105
- datasetInstanceSummary,
106
- showChart: false,
107
- admin: this.admin,
108
- breadcrumb: 'Feeds'
109
- }
110
- });
111
- dialogRef.afterClosed().subscribe(res => {
112
- if (res && res.breadcrumb) {
113
- return this.router.navigate([res.breadcrumb], { fragment: null });
114
- }
115
- });
116
- });
117
- }
118
- delete(feedId) {
119
- const message = 'Are you sure you would like to remove this Feed?';
120
- if (window.confirm(message)) {
121
- this.feedService.deleteFeed(feedId).then(() => {
122
- this.reload.next(Date.now());
123
- });
124
- }
125
- }
126
- getFeeds() {
127
- return this.feedService.listFeeds(this.searchText.getValue() || '', this.limit.toString(), this.offset.toString()).pipe(map((feeds) => {
128
- return feeds;
129
- }));
130
- }
131
- }
132
- FeedsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FeedsComponent, deps: [{ token: i1.MatLegacyDialog }, { token: i2.FeedService }, { token: i3.DatasetService }, { token: i4.Router }, { token: KININTEL_CONFIG }, { token: i5.MatLegacySnackBar }, { token: i6.HttpClient }, { token: i7.ProjectService }], target: i0.ɵɵFactoryTarget.Component });
133
- FeedsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FeedsComponent, selector: "ki-feeds", inputs: { admin: "admin", feedUrl: "feedUrl" }, ngImport: i0, template: "<div class=\"p-6 bg-white border-b border-gray-200\">\n <div class=\"md:flex md:items-center md:justify-between md:space-x-5\">\n <div class=\"flex items-start flex-1\">\n <div class=\"pt-1.5\">\n <h1 class=\"text-2xl font-bold text-gray-900\">API Connections</h1>\n <p class=\"text-sm font-medium text-gray-500\">\n A list of all the API Connections that are currently available.\n </p>\n </div>\n </div>\n <div class=\"mt-6 flex flex-col-reverse justify-stretch\">\n <button type=\"button\" (click)=\"editFeed()\" *ngIf=\"canHaveAPIConnections\"\n class=\"inline-flex items-center justify-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-primary focus:outline-none\">\n Create New API Connection\n </button>\n </div>\n </div>\n</div>\n\n<div class=\"px-4 sm:px-6 lg:px-8 mt-0\">\n <div class=\"flex flex-col\">\n <div *ngIf=\"!canHaveAPIConnections\" class=\"mt-8 border-l-4 border-yellow-400 bg-yellow-50 p-4\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg class=\"h-5 w-5 text-yellow-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <div class=\"ml-3\">\n <p class=\"text-sm text-yellow-700 mb-0\">\n API Connections are only available to our Partners. Please <a class=\"font-medium text-yellow-700 underline hover:text-yellow-600\"\n href=\"https://dnsrf.org/joining-options/index.html\">review our Tiers</a> to find out more.\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"canHaveAPIConnections\" class=\"-my-2 -mx-4 sm:-mx-6 lg:-mx-8\">\n <div class=\"inline-block min-w-full py-2 align-middle\">\n <div class=\"mt-3 sm:mt-0 flex-1\">\n <label for=\"mobile-search-candidate\" class=\"sr-only\">Search</label>\n <div class=\"flex\">\n <div class=\"relative flex-grow focus-within:z-10\">\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg class=\"h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <input type=\"text\" name=\"mobile-search-candidate\" id=\"mobile-search-candidate\"\n class=\"block w-full rounded-none pl-10 border-t-0 border-l-0 border-gray-300\"\n placeholder=\"Search api connections\"\n (keyup)=\"searchText.next($event.target.value)\">\n </div>\n </div>\n </div>\n <table class=\"min-w-full border-separate bg-white\" style=\"border-spacing: 0\">\n <ng-template [ngIf]=\"feeds.length\">\n\n <thead class=\"bg-gray-100\">\n <tr>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Path\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Dataset\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Parameters\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 backdrop-blur backdrop-filter\">\n <span class=\"sr-only\">Edit</span>\n </th>\n </tr>\n </thead>\n <tbody *ngFor=\"let feed of feeds\" class=\"hover:bg-gray-50\">\n <tr class=\"hover:bg-gray-50\">\n <td [ngClass]=\"{'border-b': !feed._showExample, 'border-b-0': feed._showExample}\"\n class=\"border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">\n <div class=\"flex items-center\">\n {{feedUrl}}{{feed.path}}\n <mat-icon color=\"primary\" class=\"ml-2 text-sm cursor-pointer\"\n (click)=\"feed._showExample = !feed._showExample\">info_outline\n </mat-icon>\n </div>\n </td>\n <td [ngClass]=\"{'border-b': !feed._showExample, 'border-b-0': feed._showExample}\"\n class=\"border-gray-200 px-4 py-2 text-sm text-gray-500\">\n <a class=\"primary hover:underline font-medium\"\n (click)=\"view(feed.datasetInstanceId)\">\n {{feed.datasetLabel ? feed.datasetLabel.title : ''}}</a>\n </td>\n <td [ngClass]=\"{'border-b': !feed._showExample, 'border-b-0': feed._showExample}\"\n class=\"border-gray-200 px-4 py-2 text-sm text-gray-500\">\n {{feed.exposedParameterNames.join(', ')}}\n </td>\n <td [ngClass]=\"{'border-b': !feed._showExample, 'border-b-0': feed._showExample}\"\n class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">\n <div class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\" (click)=\"editFeed(feed)\"> Edit</button>\n <div class=\"divider\"></div>\n <button color=\"primary\" mat-icon-button [matMenuTriggerFor]=\"itemMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #itemMenu=\"matMenu\">\n <button mat-menu-item (click)=\"delete(feed.id)\">Delete Feed</button>\n </mat-menu>\n </div>\n </td>\n </tr>\n <tr *ngIf=\"feed._showExample\">\n <td class=\" px-4 pt-0\" colspan=\"4\">\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">cURL</div>\n <div class=\"text-sm mb-2\">\n This is the recommended approach for consuming the API.\n </div>\n <div #createCurl class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\ncurl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre>\n <pre class=\"whitespace-normal\">\n-X <b>GET</b> <span class=\"text-secondary\">{{feedUrl}}{{feed.path}}<ng-template ngFor let-param [ngForOf]=\"feed.exposedParameterNames\" let-i=index>{{i === 0 ? '?' : '&'}}{{param}}=<b>[[VALUE]]</b></ng-template></span></pre>\n\n </div>\n <button mat-icon-button (click)=\"copy(createCurl.textContent)\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">HTTPS</div>\n <div class=\"text-sm mb-2\">\n We recommend only using this for testing the API endpoint.\n </div>\n <div #createHttps class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\"><pre class=\"whitespace-normal\">{{feedUrl}}{{feed.path}}<span class=\"text-secondary\">?apiKey=<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>&apiSecret=<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b></span><ng-template ngFor let-param [ngForOf]=\"feed.exposedParameterNames\"><span class=\"text-secondary\">&{{param}}=<b>[[VALUE]]</b></span></ng-template></pre></div>\n\n <button mat-icon-button (click)=\"copy(createHttps.textContent)\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n\n\n\n </td>\n </tr>\n </tbody>\n <tbody>\n <tr>\n <td colspan=\"4\"\n class=\"border-t bg-gray-50 whitespace-nowrap border-b border-gray-200 py-1 px-4 text-sm text-gray-900\">\n <div class=\"paging-toolbar flex align-center justify-end\">\n\n <div class=\"flex items-center justify-center\">\n <div class=\"text-xs text-gray-400 mr-10\">\n Showing {{offset + 1}} - {{(page * limit) - (limit - feeds.length)}}</div>\n <select [value]=\"limit\" (change)=\"pageSizeChange($event.target.value)\"\n class=\"mr-8 p-1.5\">\n <option [value]=\"1\">1</option>\n <option [value]=\"5\">5</option>\n <option [value]=\"10\">10</option>\n <option [value]=\"25\">25</option>\n <option [value]=\"50\">50</option>\n <option [value]=\"100\">100</option>\n <option [value]=\"250\">250</option>\n <option [value]=\"1000\">1000</option>\n </select>\n <button mat-icon-button class=\"mr-4\" (click)=\"decreaseOffset()\"\n [disabled]=\"page <= 1\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button mat-icon-button (click)=\"increaseOffset()\" [disabled]=\"endOfResults\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n </div>\n </div>\n</div>\n<div class=\"p-4\" *ngIf=\"!feeds.length && !loading\">\n <button type=\"button\" (click)=\"editFeed()\"\n class=\"relative block w-full border-2 border-gray-300 border-dashed rounded-lg p-12 text-center hover:border-gray-400 focus:outline-none\">\n\n <div class=\"relative inline-block\">\n <span class=\"material-symbols-outlined mx-auto text-6xl h-14 w-20 text-gray-300\">api</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"right-0 bottom-0 absolute h-8 w-8 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke=\"currentColor\" stroke-width=\"4\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4v16m8-8H4\"/>\n </svg>\n </div>\n\n <span class=\"mt-2 block text-sm font-medium text-gray-900\">Create New API Connection</span>\n </button>\n</div>\n", styles: [".divider{width:1px;height:17px;background-color:#cecece}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i11.MatLegacyMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i12.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i12.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FeedsComponent, decorators: [{
135
- type: Component,
136
- args: [{ selector: 'ki-feeds', template: "<div class=\"p-6 bg-white border-b border-gray-200\">\n <div class=\"md:flex md:items-center md:justify-between md:space-x-5\">\n <div class=\"flex items-start flex-1\">\n <div class=\"pt-1.5\">\n <h1 class=\"text-2xl font-bold text-gray-900\">API Connections</h1>\n <p class=\"text-sm font-medium text-gray-500\">\n A list of all the API Connections that are currently available.\n </p>\n </div>\n </div>\n <div class=\"mt-6 flex flex-col-reverse justify-stretch\">\n <button type=\"button\" (click)=\"editFeed()\" *ngIf=\"canHaveAPIConnections\"\n class=\"inline-flex items-center justify-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-primary focus:outline-none\">\n Create New API Connection\n </button>\n </div>\n </div>\n</div>\n\n<div class=\"px-4 sm:px-6 lg:px-8 mt-0\">\n <div class=\"flex flex-col\">\n <div *ngIf=\"!canHaveAPIConnections\" class=\"mt-8 border-l-4 border-yellow-400 bg-yellow-50 p-4\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg class=\"h-5 w-5 text-yellow-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <div class=\"ml-3\">\n <p class=\"text-sm text-yellow-700 mb-0\">\n API Connections are only available to our Partners. Please <a class=\"font-medium text-yellow-700 underline hover:text-yellow-600\"\n href=\"https://dnsrf.org/joining-options/index.html\">review our Tiers</a> to find out more.\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"canHaveAPIConnections\" class=\"-my-2 -mx-4 sm:-mx-6 lg:-mx-8\">\n <div class=\"inline-block min-w-full py-2 align-middle\">\n <div class=\"mt-3 sm:mt-0 flex-1\">\n <label for=\"mobile-search-candidate\" class=\"sr-only\">Search</label>\n <div class=\"flex\">\n <div class=\"relative flex-grow focus-within:z-10\">\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg class=\"h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <input type=\"text\" name=\"mobile-search-candidate\" id=\"mobile-search-candidate\"\n class=\"block w-full rounded-none pl-10 border-t-0 border-l-0 border-gray-300\"\n placeholder=\"Search api connections\"\n (keyup)=\"searchText.next($event.target.value)\">\n </div>\n </div>\n </div>\n <table class=\"min-w-full border-separate bg-white\" style=\"border-spacing: 0\">\n <ng-template [ngIf]=\"feeds.length\">\n\n <thead class=\"bg-gray-100\">\n <tr>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Path\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Dataset\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Parameters\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 backdrop-blur backdrop-filter\">\n <span class=\"sr-only\">Edit</span>\n </th>\n </tr>\n </thead>\n <tbody *ngFor=\"let feed of feeds\" class=\"hover:bg-gray-50\">\n <tr class=\"hover:bg-gray-50\">\n <td [ngClass]=\"{'border-b': !feed._showExample, 'border-b-0': feed._showExample}\"\n class=\"border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">\n <div class=\"flex items-center\">\n {{feedUrl}}{{feed.path}}\n <mat-icon color=\"primary\" class=\"ml-2 text-sm cursor-pointer\"\n (click)=\"feed._showExample = !feed._showExample\">info_outline\n </mat-icon>\n </div>\n </td>\n <td [ngClass]=\"{'border-b': !feed._showExample, 'border-b-0': feed._showExample}\"\n class=\"border-gray-200 px-4 py-2 text-sm text-gray-500\">\n <a class=\"primary hover:underline font-medium\"\n (click)=\"view(feed.datasetInstanceId)\">\n {{feed.datasetLabel ? feed.datasetLabel.title : ''}}</a>\n </td>\n <td [ngClass]=\"{'border-b': !feed._showExample, 'border-b-0': feed._showExample}\"\n class=\"border-gray-200 px-4 py-2 text-sm text-gray-500\">\n {{feed.exposedParameterNames.join(', ')}}\n </td>\n <td [ngClass]=\"{'border-b': !feed._showExample, 'border-b-0': feed._showExample}\"\n class=\"whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">\n <div class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\" (click)=\"editFeed(feed)\"> Edit</button>\n <div class=\"divider\"></div>\n <button color=\"primary\" mat-icon-button [matMenuTriggerFor]=\"itemMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #itemMenu=\"matMenu\">\n <button mat-menu-item (click)=\"delete(feed.id)\">Delete Feed</button>\n </mat-menu>\n </div>\n </td>\n </tr>\n <tr *ngIf=\"feed._showExample\">\n <td class=\" px-4 pt-0\" colspan=\"4\">\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">cURL</div>\n <div class=\"text-sm mb-2\">\n This is the recommended approach for consuming the API.\n </div>\n <div #createCurl class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\ncurl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre>\n <pre class=\"whitespace-normal\">\n-X <b>GET</b> <span class=\"text-secondary\">{{feedUrl}}{{feed.path}}<ng-template ngFor let-param [ngForOf]=\"feed.exposedParameterNames\" let-i=index>{{i === 0 ? '?' : '&'}}{{param}}=<b>[[VALUE]]</b></ng-template></span></pre>\n\n </div>\n <button mat-icon-button (click)=\"copy(createCurl.textContent)\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">HTTPS</div>\n <div class=\"text-sm mb-2\">\n We recommend only using this for testing the API endpoint.\n </div>\n <div #createHttps class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\"><pre class=\"whitespace-normal\">{{feedUrl}}{{feed.path}}<span class=\"text-secondary\">?apiKey=<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>&apiSecret=<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b></span><ng-template ngFor let-param [ngForOf]=\"feed.exposedParameterNames\"><span class=\"text-secondary\">&{{param}}=<b>[[VALUE]]</b></span></ng-template></pre></div>\n\n <button mat-icon-button (click)=\"copy(createHttps.textContent)\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n\n\n\n </td>\n </tr>\n </tbody>\n <tbody>\n <tr>\n <td colspan=\"4\"\n class=\"border-t bg-gray-50 whitespace-nowrap border-b border-gray-200 py-1 px-4 text-sm text-gray-900\">\n <div class=\"paging-toolbar flex align-center justify-end\">\n\n <div class=\"flex items-center justify-center\">\n <div class=\"text-xs text-gray-400 mr-10\">\n Showing {{offset + 1}} - {{(page * limit) - (limit - feeds.length)}}</div>\n <select [value]=\"limit\" (change)=\"pageSizeChange($event.target.value)\"\n class=\"mr-8 p-1.5\">\n <option [value]=\"1\">1</option>\n <option [value]=\"5\">5</option>\n <option [value]=\"10\">10</option>\n <option [value]=\"25\">25</option>\n <option [value]=\"50\">50</option>\n <option [value]=\"100\">100</option>\n <option [value]=\"250\">250</option>\n <option [value]=\"1000\">1000</option>\n </select>\n <button mat-icon-button class=\"mr-4\" (click)=\"decreaseOffset()\"\n [disabled]=\"page <= 1\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button mat-icon-button (click)=\"increaseOffset()\" [disabled]=\"endOfResults\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n </div>\n </div>\n</div>\n<div class=\"p-4\" *ngIf=\"!feeds.length && !loading\">\n <button type=\"button\" (click)=\"editFeed()\"\n class=\"relative block w-full border-2 border-gray-300 border-dashed rounded-lg p-12 text-center hover:border-gray-400 focus:outline-none\">\n\n <div class=\"relative inline-block\">\n <span class=\"material-symbols-outlined mx-auto text-6xl h-14 w-20 text-gray-300\">api</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"right-0 bottom-0 absolute h-8 w-8 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke=\"currentColor\" stroke-width=\"4\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4v16m8-8H4\"/>\n </svg>\n </div>\n\n <span class=\"mt-2 block text-sm font-medium text-gray-900\">Create New API Connection</span>\n </button>\n</div>\n", styles: [".divider{width:1px;height:17px;background-color:#cecece}\n"] }]
137
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialog }, { type: i2.FeedService }, { type: i3.DatasetService }, { type: i4.Router }, { type: undefined, decorators: [{
138
- type: Inject,
139
- args: [KININTEL_CONFIG]
140
- }] }, { type: i5.MatLegacySnackBar }, { type: i6.HttpClient }, { type: i7.ProjectService }]; }, propDecorators: { admin: [{
141
- type: Input
142
- }], feedUrl: [{
143
- type: Input
144
- }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2ZlZWRzL2ZlZWRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpbmludGVsL3NyYy9saWIvY29tcG9uZW50cy9mZWVkcy9mZWVkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyRCxPQUFPLEVBQUMsZUFBZSxFQUF1QixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFXcEQsTUFBTSxPQUFPLGNBQWM7SUFpQnZCLFlBQW9CLE1BQWlCLEVBQ2pCLFdBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLE1BQWMsRUFDVSxNQUE0QixFQUNwRCxRQUFxQixFQUNyQixJQUFnQixFQUNoQixjQUE4QjtRQVA5QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ1UsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFDcEQsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQW5CM0MsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUNoQixlQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU3QixXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQVUvQixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFFVixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU5RixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVuRixLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO2lCQUM5QixJQUFJLENBQ0QsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUNqQiwwQkFBMEI7WUFDMUIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNYLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FDbEIsQ0FDSixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELFdBQVc7SUFFWCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQzFCLE1BQU0sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxFQUFFO1lBQzVDLFFBQVEsRUFBRSxJQUFJO1lBQ2QsZ0JBQWdCLEVBQUUsS0FBSztTQUMxQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxjQUFjO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFLO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFLO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM5QyxLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsSUFBSSxFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFDO1NBQ3RDLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sSUFBSSxDQUFDLFNBQVM7UUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7WUFDcEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQ3RELEtBQUssRUFBRSxPQUFPO2dCQUNkLE1BQU0sRUFBRSxPQUFPO2dCQUNmLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixTQUFTLEVBQUUsT0FBTztnQkFDbEIsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLElBQUksRUFBRTtvQkFDRixzQkFBc0I7b0JBQ3RCLFNBQVMsRUFBRSxLQUFLO29CQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLFVBQVUsRUFBRSxPQUFPO2lCQUN0QjthQUNKLENBQUMsQ0FBQztZQUNILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3BDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUU7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztpQkFDbkU7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLGtEQUFrRCxDQUFDO1FBQ25FLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLFFBQVE7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FDekIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDbEIsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7OzRHQTdJUSxjQUFjLGdJQXFCSCxlQUFlO2dHQXJCMUIsY0FBYyxnR0NuQjNCLGdtY0FrTkE7NEZEL0xhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0ksVUFBVTs7MEJBeUJQLE1BQU07MkJBQUMsZUFBZTtrSUFuQjFCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGZWVkU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmVlZC5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtZXJnZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge01hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHtLSU5JTlRFTF9DT05GSUcsIEtpbmludGVsTW9kdWxlQ29uZmlnfSBmcm9tICcuLi8uLi9raW5pbnRlbC1jb25maWcnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0RhdGFFeHBsb3JlckNvbXBvbmVudH0gZnJvbSAnLi4vZGF0YS1leHBsb3Jlci9kYXRhLWV4cGxvcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0RhdGFzZXRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHtGZWVkQ29tcG9uZW50fSBmcm9tICcuL2ZlZWQvZmVlZC5jb21wb25lbnQnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge01hdExlZ2FjeVNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtQcm9qZWN0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdraS1mZWVkcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZlZWRzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mZWVkcy5jb21wb25lbnQuc2FzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgYWRtaW46IGJvb2xlYW47XG4gICAgQElucHV0KCkgZmVlZFVybDogc3RyaW5nO1xuXG4gICAgcHVibGljIGZlZWRzOiBhbnkgPSBbXTtcbiAgICBwdWJsaWMgc2VhcmNoVGV4dCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICAgIHB1YmxpYyBsaW1pdCA9IDEwO1xuICAgIHB1YmxpYyBvZmZzZXQgPSAwO1xuICAgIHB1YmxpYyBwYWdlID0gMTtcbiAgICBwdWJsaWMgZW5kT2ZSZXN1bHRzID0gZmFsc2U7XG4gICAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuICAgIHB1YmxpYyBhcGlLZXlzOiBhbnk7XG4gICAgcHVibGljIGNhbkhhdmVBUElDb25uZWN0aW9ucyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSByZWxvYWQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGZlZWRTZXJ2aWNlOiBGZWVkU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGRhdGFzZXRTZXJ2aWNlOiBEYXRhc2V0U2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICAgIEBJbmplY3QoS0lOSU5URUxfQ09ORklHKSBwdWJsaWMgY29uZmlnOiBLaW5pbnRlbE1vZHVsZUNvbmZpZyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcblxuICAgICAgICB0aGlzLmNhbkhhdmVBUElDb25uZWN0aW9ucyA9IHRoaXMucHJvamVjdFNlcnZpY2UuZG9lc0FjdGl2ZVByb2plY3RIYXZlUHJpdmlsZWdlKCdmZWVkYWNjZXNzJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuY2FuSGF2ZUFQSUNvbm5lY3Rpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmFwaUtleXMgPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KCcvYWNjb3VudC9hcGlrZXkvZmlyc3QvZmVlZGFjY2VzcycpLnRvUHJvbWlzZSgpO1xuXG4gICAgICAgICAgICBtZXJnZSh0aGlzLnNlYXJjaFRleHQsIHRoaXMucmVsb2FkKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEZlZWRzKClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKChmZWVkczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRPZlJlc3VsdHMgPSBmZWVkcy5sZW5ndGggPCB0aGlzLmxpbWl0O1xuICAgICAgICAgICAgICAgIHRoaXMuZmVlZHMgPSBmZWVkcztcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRleHQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAxO1xuICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29weSh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dC50cmltKCkpO1xuICAgICAgICB0aGlzLmNvcGllZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3BpZWQoKSB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignQ29waWVkIHRvIENsaXBib2FyZCcsIG51bGwsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAwLFxuICAgICAgICAgICAgdmVydGljYWxQb3NpdGlvbjogJ3RvcCdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGluY3JlYXNlT2Zmc2V0KCkge1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9ICh0aGlzLmxpbWl0ICogdGhpcy5wYWdlKSAtIHRoaXMubGltaXQ7XG4gICAgICAgIHRoaXMucmVsb2FkLm5leHQoRGF0ZS5ub3coKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlY3JlYXNlT2Zmc2V0KCkge1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgPD0gMSA/IDEgOiB0aGlzLnBhZ2UgLSAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9ICh0aGlzLmxpbWl0ICogdGhpcy5wYWdlKSAtIHRoaXMubGltaXQ7XG4gICAgICAgIHRoaXMucmVsb2FkLm5leHQoRGF0ZS5ub3coKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhZ2VTaXplQ2hhbmdlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMucGFnZSA9IDE7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgdGhpcy5saW1pdCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnJlbG9hZC5uZXh0KERhdGUubm93KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlZGl0RmVlZChmZWVkPykge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEZlZWRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnOTAwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxuICAgICAgICAgICAgZGF0YToge2ZlZWQsIGZlZWRVcmw6IHRoaXMuZmVlZFVybH1cbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQubmV4dChEYXRlLm5vdygpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZpZXcoZGF0YXNldElkKSB7XG4gICAgICAgIHRoaXMuZGF0YXNldFNlcnZpY2UuZ2V0RGF0YXNldChkYXRhc2V0SWQpLnRoZW4oZGF0YXNldEluc3RhbmNlU3VtbWFyeSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERhdGFFeHBsb3JlckNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwdncnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogJzEwMHZ3JyxcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDB2aCcsXG4gICAgICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNldEluc3RhbmNlU3VtbWFyeSxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NoYXJ0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgYWRtaW46IHRoaXMuYWRtaW4sXG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWI6ICdGZWVkcydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyZXMuYnJlYWRjcnVtYl0sIHtmcmFnbWVudDogbnVsbH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlKGZlZWRJZCkge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byByZW1vdmUgdGhpcyBGZWVkPyc7XG4gICAgICAgIGlmICh3aW5kb3cuY29uZmlybShtZXNzYWdlKSkge1xuICAgICAgICAgICAgdGhpcy5mZWVkU2VydmljZS5kZWxldGVGZWVkKGZlZWRJZCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQubmV4dChEYXRlLm5vdygpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGZWVkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmVlZFNlcnZpY2UubGlzdEZlZWRzKFxuICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0LmdldFZhbHVlKCkgfHwgJycsXG4gICAgICAgICAgICB0aGlzLmxpbWl0LnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0aGlzLm9mZnNldC50b1N0cmluZygpXG4gICAgICAgICkucGlwZShtYXAoKGZlZWRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmVlZHM7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInAtNiBiZy13aGl0ZSBib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWQ6ZmxleCBtZDppdGVtcy1jZW50ZXIgbWQ6anVzdGlmeS1iZXR3ZWVuIG1kOnNwYWNlLXgtNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBmbGV4LTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0xLjVcIj5cbiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPkFQSSBDb25uZWN0aW9uczwvaDE+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGFsbCB0aGUgQVBJIENvbm5lY3Rpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBhdmFpbGFibGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNiBmbGV4IGZsZXgtY29sLXJldmVyc2UganVzdGlmeS1zdHJldGNoXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZWRpdEZlZWQoKVwiICpuZ0lmPVwiY2FuSGF2ZUFQSUNvbm5lY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNCBweS0yIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1zbSBmb250LW1lZGl1bSByb3VuZGVkLW1kIHNoYWRvdy1zbSB0ZXh0LXdoaXRlIGJnLXByaW1hcnkgZm9jdXM6b3V0bGluZS1ub25lXCI+XG4gICAgICAgICAgICAgICAgQ3JlYXRlIE5ldyBBUEkgQ29ubmVjdGlvblxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJweC00IHNtOnB4LTYgbGc6cHgtOCBtdC0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFjYW5IYXZlQVBJQ29ubmVjdGlvbnNcIiBjbGFzcz1cIm10LTggYm9yZGVyLWwtNCBib3JkZXIteWVsbG93LTQwMCBiZy15ZWxsb3ctNTAgcC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01IHRleHQteWVsbG93LTQwMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC40ODUgMi40OTVjLjY3My0xLjE2NyAyLjM1Ny0xLjE2NyAzLjAzIDBsNi4yOCAxMC44NzVjLjY3MyAxLjE2Ny0uMTcgMi42MjUtMS41MTYgMi42MjVIMy43MmMtMS4zNDcgMC0yLjE4OS0xLjQ1OC0xLjUxNS0yLjYyNUw4LjQ4NSAyLjQ5NXpNMTAgNWEuNzUuNzUgMCAwMS43NS43NXYzLjVhLjc1Ljc1IDAgMDEtMS41IDB2LTMuNUEuNzUuNzUgMCAwMTEwIDV6bTAgOWExIDEgMCAxMDAtMiAxIDEgMCAwMDAgMnpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQteWVsbG93LTcwMCBtYi0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBUEkgQ29ubmVjdGlvbnMgYXJlIG9ubHkgYXZhaWxhYmxlIHRvIG91ciBQYXJ0bmVycy4gUGxlYXNlIDxhIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctNzAwIHVuZGVybGluZSBob3Zlcjp0ZXh0LXllbGxvdy02MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9kbnNyZi5vcmcvam9pbmluZy1vcHRpb25zL2luZGV4Lmh0bWxcIj5yZXZpZXcgb3VyIFRpZXJzPC9hPiB0byBmaW5kIG91dCBtb3JlLlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjYW5IYXZlQVBJQ29ubmVjdGlvbnNcIiBjbGFzcz1cIi1teS0yIC1teC00IHNtOi1teC02IGxnOi1teC04XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5saW5lLWJsb2NrIG1pbi13LWZ1bGwgcHktMiBhbGlnbi1taWRkbGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBzbTptdC0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibW9iaWxlLXNlYXJjaC1jYW5kaWRhdGVcIiBjbGFzcz1cInNyLW9ubHlcIj5TZWFyY2g8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXgtZ3JvdyBmb2N1cy13aXRoaW46ei0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC15LTAgbGVmdC0wIHBsLTMgZmxleCBpdGVtcy1jZW50ZXIgcG9pbnRlci1ldmVudHMtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSB0ZXh0LWdyYXktNDAwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04IDRhNCA0IDAgMTAwIDggNCA0IDAgMDAwLTh6TTIgOGE2IDYgMCAxMTEwLjg5IDMuNDc2bDQuODE3IDQuODE3YTEgMSAwIDAxLTEuNDE0IDEuNDE0bC00LjgxNi00LjgxNkE2IDYgMCAwMTIgOHpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm1vYmlsZS1zZWFyY2gtY2FuZGlkYXRlXCIgaWQ9XCJtb2JpbGUtc2VhcmNoLWNhbmRpZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbm9uZSBwbC0xMCBib3JkZXItdC0wIGJvcmRlci1sLTAgYm9yZGVyLWdyYXktMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYXBpIGNvbm5lY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInNlYXJjaFRleHQubmV4dCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cIm1pbi13LWZ1bGwgYm9yZGVyLXNlcGFyYXRlIGJnLXdoaXRlXCIgc3R5bGU9XCJib3JkZXItc3BhY2luZzogMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiZmVlZHMubGVuZ3RoXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImJnLWdyYXktMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdGlja3kgdG9wLTAgei0xMCBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgYmctZ3JheS01MCBiZy1vcGFjaXR5LTc1IHB5LTMuNSBweC00IHRleHQtbGVmdCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBiYWNrZHJvcC1ibHVyIGJhY2tkcm9wLWZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN0aWNreSB0b3AtMCB6LTEwIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIGJnLW9wYWNpdHktNzUgcHktMy41IHB4LTQgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGJhY2tkcm9wLWJsdXIgYmFja2Ryb3AtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RpY2t5IHRvcC0wIHotMTAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgYmctb3BhY2l0eS03NSBweS0zLjUgcHgtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgYmFja2Ryb3AtYmx1ciBiYWNrZHJvcC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdGlja3kgdG9wLTAgei0xMCBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgYmctZ3JheS01MCBiZy1vcGFjaXR5LTc1IHB5LTMuNSBweC00IGJhY2tkcm9wLWJsdXIgYmFja2Ryb3AtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkVkaXQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5ICpuZ0Zvcj1cImxldCBmZWVkIG9mIGZlZWRzXCIgY2xhc3M9XCJob3ZlcjpiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJob3ZlcjpiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsnYm9yZGVyLWInOiAhZmVlZC5fc2hvd0V4YW1wbGUsICdib3JkZXItYi0wJzogZmVlZC5fc2hvd0V4YW1wbGV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItZ3JheS0yMDAgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZFVybH19e3tmZWVkLnBhdGh9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwibWwtMiB0ZXh0LXNtIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmVlZC5fc2hvd0V4YW1wbGUgPSAhZmVlZC5fc2hvd0V4YW1wbGVcIj5pbmZvX291dGxpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsnYm9yZGVyLWInOiAhZmVlZC5fc2hvd0V4YW1wbGUsICdib3JkZXItYi0wJzogZmVlZC5fc2hvd0V4YW1wbGV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItZ3JheS0yMDAgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cInByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIGZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXcoZmVlZC5kYXRhc2V0SW5zdGFuY2VJZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZC5kYXRhc2V0TGFiZWwgPyBmZWVkLmRhdGFzZXRMYWJlbC50aXRsZSA6ICcnfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieydib3JkZXItYic6ICFmZWVkLl9zaG93RXhhbXBsZSwgJ2JvcmRlci1iLTAnOiBmZWVkLl9zaG93RXhhbXBsZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZC5leHBvc2VkUGFyYW1ldGVyTmFtZXMuam9pbignLCAnKX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieydib3JkZXItYic6ICFmZWVkLl9zaG93RXhhbXBsZSwgJ2JvcmRlci1iLTAnOiBmZWVkLl9zaG93RXhhbXBsZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIGJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJlZGl0RmVlZChmZWVkKVwiPiBFZGl0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIml0ZW1NZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjaXRlbU1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkZWxldGUoZmVlZC5pZClcIj5EZWxldGUgRmVlZDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJmZWVkLl9zaG93RXhhbXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIiBweC00IHB0LTBcIiBjb2xzcGFuPVwiNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj5jVVJMPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggZm9yIGNvbnN1bWluZyB0aGUgQVBJLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNjcmVhdGVDdXJsIGNsYXNzPVwiIGJnLWdyYXktODAwIGJvcmRlci0yIGJvcmRlci1ncmF5LTkwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbWQgcC00IG1iLThcIj5cbiAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPlxuY3VybCAtSCA8c3BhbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+XCJBUEktS0VZOjxiPnt7YXBpS2V5cyA/IGFwaUtleXMuYXBpS2V5IDogJ1tbYXBpS2V5XV0nfX08L2I+XCI8L3NwYW4+IC1IIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5cIkFQSS1TRUNSRVQ6PGI+e3thcGlLZXlzID8gYXBpS2V5cy5hcGlTZWNyZXQgOiAnW1thcGlTZWNyZXRdXSd9fTwvYj5cIjwvc3Bhbj48L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPVwid2hpdGVzcGFjZS1ub3JtYWxcIj5cbi1YIDxiPkdFVDwvYj4gPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPnt7ZmVlZFVybH19e3tmZWVkLnBhdGh9fTxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtcGFyYW0gW25nRm9yT2ZdPVwiZmVlZC5leHBvc2VkUGFyYW1ldGVyTmFtZXNcIiBsZXQtaT1pbmRleD57e2kgPT09IDAgPyAnPycgOiAnJid9fXt7cGFyYW19fT08Yj5bW1ZBTFVFXV08L2I+PC9uZy10ZW1wbGF0ZT48L3NwYW4+PC9wcmU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNvcHkoY3JlYXRlQ3VybC50ZXh0Q29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jb250ZW50X2NvcHk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZFwiPkhUVFBTPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2UgcmVjb21tZW5kIG9ubHkgdXNpbmcgdGhpcyBmb3IgdGVzdGluZyB0aGUgQVBJIGVuZHBvaW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNjcmVhdGVIdHRwcyBjbGFzcz1cIiBiZy1ncmF5LTgwMCBib3JkZXItMiBib3JkZXItZ3JheS05MDAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHAtNFwiPjxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPnt7ZmVlZFVybH19e3tmZWVkLnBhdGh9fTxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj4/YXBpS2V5PTxiPnt7YXBpS2V5cyA/IGFwaUtleXMuYXBpS2V5IDogJ1tbYXBpS2V5XV0nfX08L2I+JmFwaVNlY3JldD08Yj57e2FwaUtleXMgPyBhcGlLZXlzLmFwaVNlY3JldCA6ICdbW2FwaVNlY3JldF1dJ319PC9iPjwvc3Bhbj48bmctdGVtcGxhdGUgbmdGb3IgbGV0LXBhcmFtIFtuZ0Zvck9mXT1cImZlZWQuZXhwb3NlZFBhcmFtZXRlck5hbWVzXCI+PHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPiZ7e3BhcmFtfX09PGI+W1tWQUxVRV1dPC9iPjwvc3Bhbj48L25nLXRlbXBsYXRlPjwvcHJlPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY29weShjcmVhdGVIdHRwcy50ZXh0Q29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jb250ZW50X2NvcHk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLXQgYmctZ3JheS01MCB3aGl0ZXNwYWNlLW5vd3JhcCBib3JkZXItYiBib3JkZXItZ3JheS0yMDAgcHktMSBweC00IHRleHQtc20gdGV4dC1ncmF5LTkwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5nLXRvb2xiYXIgZmxleCBhbGlnbi1jZW50ZXIganVzdGlmeS1lbmRcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgdGV4dC1ncmF5LTQwMCBtci0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaG93aW5nIHt7b2Zmc2V0ICsgMX19IC0ge3socGFnZSAqIGxpbWl0KSAtIChsaW1pdCAtIGZlZWRzLmxlbmd0aCl9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgW3ZhbHVlXT1cImxpbWl0XCIgKGNoYW5nZSk9XCJwYWdlU2l6ZUNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTggcC0xLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMVwiPjE8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiNVwiPjU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMTBcIj4xMDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCIyNVwiPjI1PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIjUwXCI+NTA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMTAwXCI+MTAwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIjI1MFwiPjI1MDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCIxMDAwXCI+MTAwMDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwibXItNFwiIChjbGljayk9XCJkZWNyZWFzZU9mZnNldCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdlIDw9IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImluY3JlYXNlT2Zmc2V0KClcIiBbZGlzYWJsZWRdPVwiZW5kT2ZSZXN1bHRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInAtNFwiICpuZ0lmPVwiIWZlZWRzLmxlbmd0aCAmJiAhbG9hZGluZ1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJlZGl0RmVlZCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmUgYmxvY2sgdy1mdWxsIGJvcmRlci0yIGJvcmRlci1ncmF5LTMwMCBib3JkZXItZGFzaGVkIHJvdW5kZWQtbGcgcC0xMiB0ZXh0LWNlbnRlciBob3Zlcjpib3JkZXItZ3JheS00MDAgZm9jdXM6b3V0bGluZS1ub25lXCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGlubGluZS1ibG9ja1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG14LWF1dG8gdGV4dC02eGwgaC0xNCB3LTIwIHRleHQtZ3JheS0zMDBcIj5hcGk8L3NwYW4+XG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cInJpZ2h0LTAgYm90dG9tLTAgYWJzb2x1dGUgaC04IHctOCB0ZXh0LWdyYXktNDAwXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMTIgNHYxNm04LThINFwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+Q3JlYXRlIE5ldyBBUEkgQ29ubmVjdGlvbjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -1,25 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/legacy-dialog";
5
- import * as i2 from "@angular/material/legacy-button";
6
- import * as i3 from "@angular/material/icon";
7
- import * as i4 from "@angular/cdk/drag-drop";
8
- export class JobTasksComponent {
9
- constructor(dialogRef, data) {
10
- this.dialogRef = dialogRef;
11
- this.data = data;
12
- }
13
- ngOnInit() {
14
- }
15
- }
16
- JobTasksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: JobTasksComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
17
- JobTasksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: JobTasksComponent, selector: "ki-job-tasks", host: { classAttribute: "dialog-wrapper" }, ngImport: i0, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Job Tasks</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n </div>\n\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: JobTasksComponent, decorators: [{
19
- type: Component,
20
- args: [{ selector: 'ki-job-tasks', host: { class: 'dialog-wrapper' }, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Job Tasks</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n </div>\n\n</div>\n\n\n" }]
21
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
22
- type: Inject,
23
- args: [MAT_DIALOG_DATA]
24
- }] }]; } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXRhc2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpbmludGVsL3NyYy9saWIvY29tcG9uZW50cy9qb2ItdGFza3Mvam9iLXRhc2tzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpbmludGVsL3NyYy9saWIvY29tcG9uZW50cy9qb2ItdGFza3Mvam9iLXRhc2tzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxlQUFlLEVBQXFDLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQVE5SCxNQUFNLE9BQU8saUJBQWlCO0lBRTFCLFlBQW1CLFNBQTBDLEVBQ2pCLElBQVM7UUFEbEMsY0FBUyxHQUFULFNBQVMsQ0FBaUM7UUFDakIsU0FBSSxHQUFKLElBQUksQ0FBSztJQUNyRCxDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7OytHQVBRLGlCQUFpQixvREFHTixlQUFlO21HQUgxQixpQkFBaUIsZ0dDVDlCLDBmQXNCQTs0RkRiYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0ksY0FBYyxRQUdsQixFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBQzs7MEJBS2xCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBLCBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdraS1qb2ItdGFza3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9qb2ItdGFza3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2pvYi10YXNrcy5jb21wb25lbnQuc2FzcyddLFxuICAgIGhvc3Q6IHtjbGFzczogJ2RpYWxvZy13cmFwcGVyJ31cbn0pXG5leHBvcnQgY2xhc3MgSm9iVGFza3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEpvYlRhc2tzQ29tcG9uZW50PixcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZ1wiIGNka0RyYWcgY2RrRHJhZ1Jvb3RFbGVtZW50PVwiLmNkay1vdmVybGF5LXBhbmVcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctdGl0bGVcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICA8aDIgbWF0LWRpYWxvZy10aXRsZT5Kb2IgVGFza3M8L2gyPlxuXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGVudFwiPlxuXG5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctZm9vdGVyXCI+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCI+Q2xvc2U8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG5cblxuIl19
@@ -1,65 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { BehaviorSubject, merge, of, Subject } from 'rxjs';
3
- import { debounceTime, switchMap } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/material/legacy-button";
7
- import * as i3 from "@angular/material/icon";
8
- import * as i4 from "@angular/forms";
9
- export class MarketplaceComponent {
10
- constructor() {
11
- this.datasets = [];
12
- this.searchText = new BehaviorSubject('');
13
- this.limit = 10;
14
- this.offset = 0;
15
- this.page = 1;
16
- this.endOfResults = false;
17
- this.loading = true;
18
- this.reload = new Subject();
19
- }
20
- ngOnInit() {
21
- merge(this.searchText, this.reload)
22
- .pipe(debounceTime(300),
23
- // distinctUntilChanged(),
24
- switchMap(() => this.getDatasets())).subscribe((datasets) => {
25
- this.endOfResults = datasets.length < this.limit;
26
- this.datasets = datasets;
27
- this.loading = false;
28
- });
29
- this.searchText.subscribe(() => {
30
- this.page = 1;
31
- this.offset = 0;
32
- });
33
- }
34
- increaseOffset() {
35
- this.page = this.page + 1;
36
- this.offset = (this.limit * this.page) - this.limit;
37
- this.reload.next(Date.now());
38
- }
39
- decreaseOffset() {
40
- this.page = this.page <= 1 ? 1 : this.page - 1;
41
- this.offset = (this.limit * this.page) - this.limit;
42
- this.reload.next(Date.now());
43
- }
44
- pageSizeChange(value) {
45
- this.page = 1;
46
- this.offset = 0;
47
- this.limit = value;
48
- this.reload.next(Date.now());
49
- }
50
- getDatasets() {
51
- return of([
52
- { title: 'Scam Abuse Feed 2024', description: 'Scam feed detailing all the abuse reported in 2024.', account: 'Abuse Metric House', price: '849.00', icon: '/assets/logoipsum-248.svg' },
53
- { title: 'Phishing Feed Latest', description: 'The latest phishing feed from Phishing "R" Us.', account: 'Phishing "R" Us', requiresValidation: true, icon: '/assets/logoipsum-247.svg' },
54
- { title: 'Daily Malware Updates', description: 'All malware reported to The Malware Police on a daily basis.', account: 'The Malware Police', icon: '/assets/logoipsum-245.svg' },
55
- { title: 'Passive DNS Feed', description: 'A live feed of all passive DNS entries obtained by the Internet Defenders.', account: 'Internet Defenders', icon: '/assets/logoipsum-299.svg' },
56
- ]);
57
- }
58
- }
59
- MarketplaceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MarketplaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
- MarketplaceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MarketplaceComponent, selector: "ki-marketplace", ngImport: i0, template: "<div class=\"p-6 bg-white border-b border-gray-200\">\n <div class=\"md:flex md:items-center md:justify-between md:space-x-5\">\n <div class=\"flex items-start flex-1\">\n <div class=\"pt-1.5\">\n <h1 class=\"text-2xl font-bold text-gray-900\">Marketplace</h1>\n <p class=\"text-sm font-medium text-gray-500\">\n A list of all the data feeds that have been made available by DAP users.\n </p>\n </div>\n </div>\n\n </div>\n</div>\n\n<div class=\"px-4 sm:px-6 lg:px-8 mt-0\">\n <div class=\"flex flex-col\">\n\n <div class=\"-my-2 -mx-4 sm:-mx-6 lg:-mx-8\">\n <div class=\"inline-block min-w-full py-2 align-middle\">\n <div class=\"mt-3 sm:mt-0 flex-1\">\n <label for=\"mobile-search-candidate\" class=\"sr-only\">Search</label>\n <div class=\"flex\">\n <div class=\"relative flex-grow focus-within:z-10\">\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg class=\"h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <input type=\"text\" name=\"mobile-search-candidate\" id=\"mobile-search-candidate\"\n class=\"block w-full rounded-none pl-10 border-t-0 border-l-0 border-gray-300\"\n placeholder=\"Search available data feeds\"\n (keyup)=\"searchText.next($event.target.value)\">\n </div>\n </div>\n </div>\n <table class=\"min-w-full border-separate bg-white\" style=\"border-spacing: 0\">\n <ng-template [ngIf]=\"datasets.length\">\n\n <thead class=\"bg-gray-100\">\n <tr>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Data Feed\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Supplier\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Price\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 backdrop-blur backdrop-filter\">\n <span class=\"sr-only\">Edit</span>\n </th>\n </tr>\n </thead>\n <tbody *ngFor=\"let item of datasets\" class=\"hover:bg-gray-50\">\n <tr class=\"cursor-pointer hover:bg-gray-50\">\n <td class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">\n <div class=\"flex items-center\">\n <div class=\"h-10 w-10 flex-shrink-0\">\n <img class=\"h-10 w-10 rounded-full\" [src]=\"item.icon\" alt=\"\">\n </div>\n <div class=\"ml-4\">\n <div class=\"font-medium text-gray-900\">{{item.title}}</div>\n <div class=\"text-gray-400 font-thin \">{{item.description}}</div>\n </div>\n </div>\n\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">\n {{ item.account }}\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">\n <span *ngIf=\"item.price\">${{ item.price }}</span>\n <span *ngIf=\"!item.price\">free</span>\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 text-center px-4 py-2 text-sm text-gray-500\">\n <span class=\"material-icons text-secondary\"\n title=\"Additional account confirmation/verification required to access this data feed.\"\n *ngIf=\"item.requiresValidation\">verified</span>\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 text-right px-4 py-2 text-sm text-gray-500\">\n <button *ngIf=\"item.price\" mat-button color=\"primary\">\n Purchase Data Feed\n </button>\n <button *ngIf=\"item.requiresValidation\" mat-button color=\"primary\">\n Request Access\n </button>\n <button *ngIf=\"!item.requiresValidation && !item.price\" mat-button color=\"primary\">\n Add To My Account\n </button>\n </td>\n </tr>\n </tbody>\n <tbody>\n <tr>\n <td colspan=\"5\"\n class=\"border-t bg-gray-50 whitespace-nowrap border-b border-gray-200 py-1 px-4 text-sm text-gray-900\">\n <div class=\"paging-toolbar flex align-center justify-end\">\n\n <div class=\"flex items-center justify-center\">\n <div class=\"text-xs text-gray-400 mr-10\">\n Showing {{ offset + 1 }} - {{ (page * limit) - (limit - datasets.length) }}\n </div>\n <select [value]=\"limit\" (change)=\"pageSizeChange($event.target.value)\"\n class=\"mr-8 p-1.5\">\n <option [value]=\"1\">1</option>\n <option [value]=\"5\">5</option>\n <option [value]=\"10\">10</option>\n <option [value]=\"25\">25</option>\n <option [value]=\"50\">50</option>\n <option [value]=\"100\">100</option>\n <option [value]=\"250\">250</option>\n <option [value]=\"1000\">1000</option>\n </select>\n <button mat-icon-button class=\"mr-4\" (click)=\"decreaseOffset()\"\n [disabled]=\"page <= 1\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button mat-icon-button (click)=\"increaseOffset()\" [disabled]=\"endOfResults\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MarketplaceComponent, decorators: [{
62
- type: Component,
63
- args: [{ selector: 'ki-marketplace', template: "<div class=\"p-6 bg-white border-b border-gray-200\">\n <div class=\"md:flex md:items-center md:justify-between md:space-x-5\">\n <div class=\"flex items-start flex-1\">\n <div class=\"pt-1.5\">\n <h1 class=\"text-2xl font-bold text-gray-900\">Marketplace</h1>\n <p class=\"text-sm font-medium text-gray-500\">\n A list of all the data feeds that have been made available by DAP users.\n </p>\n </div>\n </div>\n\n </div>\n</div>\n\n<div class=\"px-4 sm:px-6 lg:px-8 mt-0\">\n <div class=\"flex flex-col\">\n\n <div class=\"-my-2 -mx-4 sm:-mx-6 lg:-mx-8\">\n <div class=\"inline-block min-w-full py-2 align-middle\">\n <div class=\"mt-3 sm:mt-0 flex-1\">\n <label for=\"mobile-search-candidate\" class=\"sr-only\">Search</label>\n <div class=\"flex\">\n <div class=\"relative flex-grow focus-within:z-10\">\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg class=\"h-5 w-5 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clip-rule=\"evenodd\"/>\n </svg>\n </div>\n <input type=\"text\" name=\"mobile-search-candidate\" id=\"mobile-search-candidate\"\n class=\"block w-full rounded-none pl-10 border-t-0 border-l-0 border-gray-300\"\n placeholder=\"Search available data feeds\"\n (keyup)=\"searchText.next($event.target.value)\">\n </div>\n </div>\n </div>\n <table class=\"min-w-full border-separate bg-white\" style=\"border-spacing: 0\">\n <ng-template [ngIf]=\"datasets.length\">\n\n <thead class=\"bg-gray-100\">\n <tr>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Data Feed\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Supplier\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n Price\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 text-left text-xs font-semibold text-gray-900 backdrop-blur backdrop-filter\">\n\n </th>\n <th scope=\"col\"\n class=\"sticky top-0 z-10 border-b border-gray-300 bg-gray-50 bg-opacity-75 py-3.5 px-4 backdrop-blur backdrop-filter\">\n <span class=\"sr-only\">Edit</span>\n </th>\n </tr>\n </thead>\n <tbody *ngFor=\"let item of datasets\" class=\"hover:bg-gray-50\">\n <tr class=\"cursor-pointer hover:bg-gray-50\">\n <td class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm font-medium text-gray-900\">\n <div class=\"flex items-center\">\n <div class=\"h-10 w-10 flex-shrink-0\">\n <img class=\"h-10 w-10 rounded-full\" [src]=\"item.icon\" alt=\"\">\n </div>\n <div class=\"ml-4\">\n <div class=\"font-medium text-gray-900\">{{item.title}}</div>\n <div class=\"text-gray-400 font-thin \">{{item.description}}</div>\n </div>\n </div>\n\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">\n {{ item.account }}\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 px-4 py-2 text-sm text-gray-500\">\n <span *ngIf=\"item.price\">${{ item.price }}</span>\n <span *ngIf=\"!item.price\">free</span>\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 text-center px-4 py-2 text-sm text-gray-500\">\n <span class=\"material-icons text-secondary\"\n title=\"Additional account confirmation/verification required to access this data feed.\"\n *ngIf=\"item.requiresValidation\">verified</span>\n </td>\n <td class=\"border-b whitespace-nowrap border-gray-200 text-right px-4 py-2 text-sm text-gray-500\">\n <button *ngIf=\"item.price\" mat-button color=\"primary\">\n Purchase Data Feed\n </button>\n <button *ngIf=\"item.requiresValidation\" mat-button color=\"primary\">\n Request Access\n </button>\n <button *ngIf=\"!item.requiresValidation && !item.price\" mat-button color=\"primary\">\n Add To My Account\n </button>\n </td>\n </tr>\n </tbody>\n <tbody>\n <tr>\n <td colspan=\"5\"\n class=\"border-t bg-gray-50 whitespace-nowrap border-b border-gray-200 py-1 px-4 text-sm text-gray-900\">\n <div class=\"paging-toolbar flex align-center justify-end\">\n\n <div class=\"flex items-center justify-center\">\n <div class=\"text-xs text-gray-400 mr-10\">\n Showing {{ offset + 1 }} - {{ (page * limit) - (limit - datasets.length) }}\n </div>\n <select [value]=\"limit\" (change)=\"pageSizeChange($event.target.value)\"\n class=\"mr-8 p-1.5\">\n <option [value]=\"1\">1</option>\n <option [value]=\"5\">5</option>\n <option [value]=\"10\">10</option>\n <option [value]=\"25\">25</option>\n <option [value]=\"50\">50</option>\n <option [value]=\"100\">100</option>\n <option [value]=\"250\">250</option>\n <option [value]=\"1000\">1000</option>\n </select>\n <button mat-icon-button class=\"mr-4\" (click)=\"decreaseOffset()\"\n [disabled]=\"page <= 1\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button mat-icon-button (click)=\"increaseOffset()\" [disabled]=\"endOfResults\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n </div>\n </div>\n</div>\n" }]
64
- }], ctorParameters: function () { return []; } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2V0cGxhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL21hcmtldHBsYWNlL21hcmtldHBsYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpbmludGVsL3NyYy9saWIvY29tcG9uZW50cy9tYXJrZXRwbGFjZS9tYXJrZXRwbGFjZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBT3ZELE1BQU0sT0FBTyxvQkFBb0I7SUFZN0I7UUFWTyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWQsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFHL0IsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzlCLElBQUksQ0FDRCxZQUFZLENBQUMsR0FBRyxDQUFDO1FBQ2pCLDBCQUEwQjtRQUMxQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQ1gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUNyQixDQUNKLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxjQUFjO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGNBQWM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sV0FBVztRQUNkLE9BQU8sRUFBRSxDQUFDO1lBQ04sRUFBQyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLHFEQUFxRCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBQztZQUN0TCxFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsZ0RBQWdELEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEVBQUM7WUFDdkwsRUFBQyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLDhEQUE4RCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEVBQUM7WUFDL0ssRUFBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLDRFQUE0RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEVBQUM7U0FDM0wsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7a0hBN0RRLG9CQUFvQjtzR0FBcEIsb0JBQW9CLHNEQ1RqQyxvbFNBK0lBOzRGRHRJYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIG9mLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdraS1tYXJrZXRwbGFjZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21hcmtldHBsYWNlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tYXJrZXRwbGFjZS5jb21wb25lbnQuc2FzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1hcmtldHBsYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBkYXRhc2V0czogYW55ID0gW107XG4gICAgcHVibGljIHNlYXJjaFRleHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgICBwdWJsaWMgbGltaXQgPSAxMDtcbiAgICBwdWJsaWMgb2Zmc2V0ID0gMDtcbiAgICBwdWJsaWMgcGFnZSA9IDE7XG4gICAgcHVibGljIGVuZE9mUmVzdWx0cyA9IGZhbHNlO1xuICAgIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgcmVsb2FkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBtZXJnZSh0aGlzLnNlYXJjaFRleHQsIHRoaXMucmVsb2FkKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgICAgICAgICAgLy8gZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhc2V0cygpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoKGRhdGFzZXRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZSZXN1bHRzID0gZGF0YXNldHMubGVuZ3RoIDwgdGhpcy5saW1pdDtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNldHMgPSBkYXRhc2V0cztcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlYXJjaFRleHQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IDE7XG4gICAgICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbmNyZWFzZU9mZnNldCgpIHtcbiAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSAodGhpcy5saW1pdCAqIHRoaXMucGFnZSkgLSB0aGlzLmxpbWl0O1xuICAgICAgICB0aGlzLnJlbG9hZC5uZXh0KERhdGUubm93KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWNyZWFzZU9mZnNldCgpIHtcbiAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlIDw9IDEgPyAxIDogdGhpcy5wYWdlIC0gMTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSAodGhpcy5saW1pdCAqIHRoaXMucGFnZSkgLSB0aGlzLmxpbWl0O1xuICAgICAgICB0aGlzLnJlbG9hZC5uZXh0KERhdGUubm93KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYWdlU2l6ZUNoYW5nZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnBhZ2UgPSAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHRoaXMubGltaXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZWxvYWQubmV4dChEYXRlLm5vdygpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGF0YXNldHMoKSB7XG4gICAgICAgIHJldHVybiBvZihbXG4gICAgICAgICAgICB7dGl0bGU6ICdTY2FtIEFidXNlIEZlZWQgMjAyNCcsIGRlc2NyaXB0aW9uOiAnU2NhbSBmZWVkIGRldGFpbGluZyBhbGwgdGhlIGFidXNlIHJlcG9ydGVkIGluIDIwMjQuJywgYWNjb3VudDogJ0FidXNlIE1ldHJpYyBIb3VzZScsIHByaWNlOiAnODQ5LjAwJywgaWNvbjogJy9hc3NldHMvbG9nb2lwc3VtLTI0OC5zdmcnfSxcbiAgICAgICAgICAgIHt0aXRsZTogJ1BoaXNoaW5nIEZlZWQgTGF0ZXN0JywgZGVzY3JpcHRpb246ICdUaGUgbGF0ZXN0IHBoaXNoaW5nIGZlZWQgZnJvbSBQaGlzaGluZyBcIlJcIiBVcy4nLCBhY2NvdW50OiAnUGhpc2hpbmcgXCJSXCIgVXMnLCByZXF1aXJlc1ZhbGlkYXRpb246IHRydWUsIGljb246ICcvYXNzZXRzL2xvZ29pcHN1bS0yNDcuc3ZnJ30sXG4gICAgICAgICAgICB7dGl0bGU6ICdEYWlseSBNYWx3YXJlIFVwZGF0ZXMnLCBkZXNjcmlwdGlvbjogJ0FsbCBtYWx3YXJlIHJlcG9ydGVkIHRvIFRoZSBNYWx3YXJlIFBvbGljZSBvbiBhIGRhaWx5IGJhc2lzLicsIGFjY291bnQ6ICdUaGUgTWFsd2FyZSBQb2xpY2UnLCBpY29uOiAnL2Fzc2V0cy9sb2dvaXBzdW0tMjQ1LnN2Zyd9LFxuICAgICAgICAgICAge3RpdGxlOiAnUGFzc2l2ZSBETlMgRmVlZCcsIGRlc2NyaXB0aW9uOiAnQSBsaXZlIGZlZWQgb2YgYWxsIHBhc3NpdmUgRE5TIGVudHJpZXMgb2J0YWluZWQgYnkgdGhlIEludGVybmV0IERlZmVuZGVycy4nLCBhY2NvdW50OiAnSW50ZXJuZXQgRGVmZW5kZXJzJywgaWNvbjogJy9hc3NldHMvbG9nb2lwc3VtLTI5OS5zdmcnfSxcbiAgICAgICAgXSk7XG4gICAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicC02IGJnLXdoaXRlIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtZDpmbGV4IG1kOml0ZW1zLWNlbnRlciBtZDpqdXN0aWZ5LWJldHdlZW4gbWQ6c3BhY2UteC01XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0IGZsZXgtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTEuNVwiPlxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+TWFya2V0cGxhY2U8L2gxPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBhbGwgdGhlIGRhdGEgZmVlZHMgdGhhdCBoYXZlIGJlZW4gbWFkZSBhdmFpbGFibGUgYnkgREFQIHVzZXJzLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJweC00IHNtOnB4LTYgbGc6cHgtOCBtdC0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiLW15LTIgLW14LTQgc206LW14LTYgbGc6LW14LThcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbWluLXctZnVsbCBweS0yIGFsaWduLW1pZGRsZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHNtOm10LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJtb2JpbGUtc2VhcmNoLWNhbmRpZGF0ZVwiIGNsYXNzPVwic3Itb25seVwiPlNlYXJjaDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleC1ncm93IGZvY3VzLXdpdGhpbjp6LTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgcGwtMyBmbGV4IGl0ZW1zLWNlbnRlciBwb2ludGVyLWV2ZW50cy1ub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01IHRleHQtZ3JheS00MDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTggNGE0IDQgMCAxMDAgOCA0IDQgMCAwMDAtOHpNMiA4YTYgNiAwIDExMTAuODkgMy40NzZsNC44MTcgNC44MTdhMSAxIDAgMDEtMS40MTQgMS40MTRsLTQuODE2LTQuODE2QTYgNiAwIDAxMiA4elwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwibW9iaWxlLXNlYXJjaC1jYW5kaWRhdGVcIiBpZD1cIm1vYmlsZS1zZWFyY2gtY2FuZGlkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1ub25lIHBsLTEwIGJvcmRlci10LTAgYm9yZGVyLWwtMCBib3JkZXItZ3JheS0zMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhdmFpbGFibGUgZGF0YSBmZWVkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2hUZXh0Lm5leHQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJtaW4tdy1mdWxsIGJvcmRlci1zZXBhcmF0ZSBiZy13aGl0ZVwiIHN0eWxlPVwiYm9yZGVyLXNwYWNpbmc6IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImRhdGFzZXRzLmxlbmd0aFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJiZy1ncmF5LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RpY2t5IHRvcC0wIHotMTAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgYmctb3BhY2l0eS03NSBweS0zLjUgcHgtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgYmFja2Ryb3AtYmx1ciBiYWNrZHJvcC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSBGZWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN0aWNreSB0b3AtMCB6LTEwIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIGJnLW9wYWNpdHktNzUgcHktMy41IHB4LTQgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGJhY2tkcm9wLWJsdXIgYmFja2Ryb3AtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBsaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN0aWNreSB0b3AtMCB6LTEwIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIGJnLW9wYWNpdHktNzUgcHktMy41IHB4LTQgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGJhY2tkcm9wLWJsdXIgYmFja2Ryb3AtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN0aWNreSB0b3AtMCB6LTEwIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIGJnLW9wYWNpdHktNzUgcHktMy41IHB4LTQgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGJhY2tkcm9wLWJsdXIgYmFja2Ryb3AtZmlsdGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RpY2t5IHRvcC0wIHotMTAgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgYmctb3BhY2l0eS03NSBweS0zLjUgcHgtNCBiYWNrZHJvcC1ibHVyIGJhY2tkcm9wLWZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5FZGl0PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhc2V0c1wiIGNsYXNzPVwiaG92ZXI6YmctZ3JheS01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctZ3JheS01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1iIHdoaXRlc3BhY2Utbm93cmFwIGJvcmRlci1ncmF5LTIwMCBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAgdy0xMCBmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImgtMTAgdy0xMCByb3VuZGVkLWZ1bGxcIiBbc3JjXT1cIml0ZW0uaWNvblwiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+e3tpdGVtLnRpdGxlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTQwMCBmb250LXRoaW4gXCI+e3tpdGVtLmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWIgd2hpdGVzcGFjZS1ub3dyYXAgYm9yZGVyLWdyYXktMjAwIHB4LTQgcHktMiB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5hY2NvdW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYiB3aGl0ZXNwYWNlLW5vd3JhcCBib3JkZXItZ3JheS0yMDAgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJpY2VcIj4ke3sgaXRlbS5wcmljZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5wcmljZVwiPmZyZWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYiB3aGl0ZXNwYWNlLW5vd3JhcCBib3JkZXItZ3JheS0yMDAgdGV4dC1jZW50ZXIgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJBZGRpdGlvbmFsIGFjY291bnQgY29uZmlybWF0aW9uL3ZlcmlmaWNhdGlvbiByZXF1aXJlZCB0byBhY2Nlc3MgdGhpcyBkYXRhIGZlZWQuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnJlcXVpcmVzVmFsaWRhdGlvblwiPnZlcmlmaWVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWIgd2hpdGVzcGFjZS1ub3dyYXAgYm9yZGVyLWdyYXktMjAwIHRleHQtcmlnaHQgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXRlbS5wcmljZVwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdXJjaGFzZSBEYXRhIEZlZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpdGVtLnJlcXVpcmVzVmFsaWRhdGlvblwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0IEFjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpdGVtLnJlcXVpcmVzVmFsaWRhdGlvbiAmJiAhaXRlbS5wcmljZVwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgVG8gTXkgQWNjb3VudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItdCBiZy1ncmF5LTUwIHdoaXRlc3BhY2Utbm93cmFwIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMCBweS0xIHB4LTQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmctdG9vbGJhciBmbGV4IGFsaWduLWNlbnRlciBqdXN0aWZ5LWVuZFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwIG1yLTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNob3dpbmcge3sgb2Zmc2V0ICsgMSB9fSAtIHt7IChwYWdlICogbGltaXQpIC0gKGxpbWl0IC0gZGF0YXNldHMubGVuZ3RoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgW3ZhbHVlXT1cImxpbWl0XCIgKGNoYW5nZSk9XCJwYWdlU2l6ZUNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTggcC0xLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMVwiPjE8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiNVwiPjU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMTBcIj4xMDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCIyNVwiPjI1PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIjUwXCI+NTA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMTAwXCI+MTAwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIjI1MFwiPjI1MDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCIxMDAwXCI+MTAwMDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwibXItNFwiIChjbGljayk9XCJkZWNyZWFzZU9mZnNldCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdlIDw9IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImluY3JlYXNlT2Zmc2V0KClcIiBbZGlzYWJsZWRdPVwiZW5kT2ZSZXN1bHRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,65 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
3
- import * as lodash from 'lodash';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/legacy-dialog";
6
- import * as i2 from "@angular/common/http";
7
- import * as i3 from "../../services/project.service";
8
- import * as i4 from "@angular/common";
9
- import * as i5 from "@angular/material/legacy-button";
10
- import * as i6 from "@angular/material/icon";
11
- import * as i7 from "@angular/cdk/drag-drop";
12
- import * as i8 from "@angular/forms";
13
- import * as i9 from "@angular/material/legacy-list";
14
- const _ = lodash.default;
15
- export class MetadataComponent {
16
- constructor(dialogRef, data, http, projectService) {
17
- this.dialogRef = dialogRef;
18
- this.data = data;
19
- this.http = http;
20
- this.projectService = projectService;
21
- this.metadata = {};
22
- this.categories = [];
23
- this.newCategory = {};
24
- this.projectKey = '';
25
- }
26
- ngOnInit() {
27
- this.metadata = this.data.metadata;
28
- this.metadataService = this.data.service;
29
- this.projectKey = this.projectService.activeProject.getValue() ? this.projectService.activeProject.getValue().projectKey : '';
30
- this.loadCategories();
31
- }
32
- showSelected(o1, o2) {
33
- return o1 && o2 && o1.key === o2.key;
34
- }
35
- addCategory() {
36
- this.newCategory.key = _.camelCase(this.newCategory.category);
37
- this.http.post('/account/metadata/category?projectKey=' + this.projectKey, this.newCategory).toPromise()
38
- .then(() => {
39
- this.loadCategories().then(() => {
40
- this.metadata.categories.push(this.newCategory);
41
- this.newCategory = {};
42
- });
43
- });
44
- }
45
- saveMetadata() {
46
- this.metadataService.updateMetadata(this.metadata).then(res => {
47
- this.dialogRef.close(true);
48
- });
49
- }
50
- loadCategories() {
51
- return this.http.get('/account/metadata/category?projectKey=' + this.projectKey, {
52
- params: { limit: '100' }
53
- }).toPromise().then(categories => this.categories = categories);
54
- }
55
- }
56
- MetadataComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MetadataComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.HttpClient }, { token: i3.ProjectService }], target: i0.ɵɵFactoryTarget.Component });
57
- MetadataComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MetadataComponent, selector: "ki-metadata", host: { classAttribute: "dialog-wrapper" }, ngImport: i0, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Edit Metadata</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n\n <div class=\"my-4\">\n <p><b>Title</b></p>\n <input class=\"full\" type=\"text\" placeholder=\"Enter title\" [(ngModel)]=\"metadata.title\">\n </div>\n\n <div class=\"my-4\">\n <p><b>Summary</b></p>\n <input class=\"full\" type=\"text\" placeholder=\"Enter summary\" [(ngModel)]=\"metadata.summary\">\n </div>\n\n <div class=\"my-4\">\n <p><b>Description</b></p>\n <textarea [(ngModel)]=\"metadata.description\" placeholder=\"Enter description\" rows=\"5\"\n class=\"w-full\"></textarea>\n </div>\n\n <div class=\"my-4\">\n <p><b>Categories</b></p>\n\n <mat-selection-list [compareWith]=\"showSelected\" [(ngModel)]=\"metadata.categories\" >\n <mat-list-option *ngFor=\"let category of categories\" checkboxPosition=\"before\" [value]=\"category\">\n {{category.category}}\n </mat-list-option>\n </mat-selection-list>\n </div>\n\n <div class=\"my-4\">\n <p><b>Add New Category</b></p>\n\n <input class=\"full\" type=\"text\" placeholder=\"Enter name\" [(ngModel)]=\"newCategory.category\" required>\n <input class=\"full mt-4\" type=\"text\" placeholder=\"Enter description\" [(ngModel)]=\"newCategory.description\">\n <div class=\"flex items-center justify-between mt-4\">\n <div></div>\n <button mat-stroked-button color=\"primary\" [disabled]=\"!newCategory.category\" (click)=\"addCategory()\">Add Category</button>\n </div>\n </div>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n\n <button mat-button mat-flat-button color=\"primary\" type=\"button\"\n (click)=\"saveMetadata()\">Save Metadata\n </button>\n </div>\n\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatLegacySelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i9.MatLegacyListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }] });
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MetadataComponent, decorators: [{
59
- type: Component,
60
- args: [{ selector: 'ki-metadata', host: { class: 'dialog-wrapper' }, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Edit Metadata</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n\n <div class=\"my-4\">\n <p><b>Title</b></p>\n <input class=\"full\" type=\"text\" placeholder=\"Enter title\" [(ngModel)]=\"metadata.title\">\n </div>\n\n <div class=\"my-4\">\n <p><b>Summary</b></p>\n <input class=\"full\" type=\"text\" placeholder=\"Enter summary\" [(ngModel)]=\"metadata.summary\">\n </div>\n\n <div class=\"my-4\">\n <p><b>Description</b></p>\n <textarea [(ngModel)]=\"metadata.description\" placeholder=\"Enter description\" rows=\"5\"\n class=\"w-full\"></textarea>\n </div>\n\n <div class=\"my-4\">\n <p><b>Categories</b></p>\n\n <mat-selection-list [compareWith]=\"showSelected\" [(ngModel)]=\"metadata.categories\" >\n <mat-list-option *ngFor=\"let category of categories\" checkboxPosition=\"before\" [value]=\"category\">\n {{category.category}}\n </mat-list-option>\n </mat-selection-list>\n </div>\n\n <div class=\"my-4\">\n <p><b>Add New Category</b></p>\n\n <input class=\"full\" type=\"text\" placeholder=\"Enter name\" [(ngModel)]=\"newCategory.category\" required>\n <input class=\"full mt-4\" type=\"text\" placeholder=\"Enter description\" [(ngModel)]=\"newCategory.description\">\n <div class=\"flex items-center justify-between mt-4\">\n <div></div>\n <button mat-stroked-button color=\"primary\" [disabled]=\"!newCategory.category\" (click)=\"addCategory()\">Add Category</button>\n </div>\n </div>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n\n <button mat-button mat-flat-button color=\"primary\" type=\"button\"\n (click)=\"saveMetadata()\">Save Metadata\n </button>\n </div>\n\n</div>\n\n\n" }]
61
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
62
- type: Inject,
63
- args: [MAT_DIALOG_DATA]
64
- }] }, { type: i2.HttpClient }, { type: i3.ProjectService }]; } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL21ldGFkYXRhL21ldGFkYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpbmludGVsL3NyYy9saWIvY29tcG9uZW50cy9tZXRhZGF0YS9tZXRhZGF0YS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUMsc0JBQXNCLElBQUksZUFBZSxFQUFxQyxNQUFNLGlDQUFpQyxDQUFDO0FBRzlILE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7OztBQUNqQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBUXpCLE1BQU0sT0FBTyxpQkFBaUI7SUFTMUIsWUFBbUIsU0FBMEMsRUFDakIsSUFBUyxFQUNqQyxJQUFnQixFQUNoQixjQUE4QjtRQUgvQixjQUFTLEdBQVQsU0FBUyxDQUFpQztRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVjNDLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUVyQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUVyQixlQUFVLEdBQUcsRUFBRSxDQUFDO0lBTXhCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRzlILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sWUFBWSxDQUFDLEVBQU8sRUFBRSxFQUFPO1FBQ2hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDekMsQ0FBQztJQUVNLFdBQVc7UUFFZCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxFQUFFO2FBQ25HLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsd0NBQXdDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM3RSxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDO1NBQ3pCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OytHQW5EUSxpQkFBaUIsb0RBVU4sZUFBZTttR0FWMUIsaUJBQWlCLCtGQ2I5QixxeEVBOERBOzRGRGpEYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0ksYUFBYSxRQUdqQixFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBQzs7MEJBWWxCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBLCBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtQcm9qZWN0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xuY29uc3QgXyA9IGxvZGFzaC5kZWZhdWx0O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2tpLW1ldGFkYXRhJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWV0YWRhdGEuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21ldGFkYXRhLmNvbXBvbmVudC5zYXNzJ10sXG4gICAgaG9zdDoge2NsYXNzOiAnZGlhbG9nLXdyYXBwZXInfVxufSlcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgbWV0YWRhdGE6IGFueSA9IHt9O1xuICAgIHB1YmxpYyBjYXRlZ29yaWVzOiBhbnkgPSBbXTtcbiAgICBwdWJsaWMgbWV0YWRhdGFTZXJ2aWNlOiBhbnk7XG4gICAgcHVibGljIG5ld0NhdGVnb3J5OiBhbnkgPSB7fTtcblxuICAgIHByaXZhdGUgcHJvamVjdEtleSA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE1ldGFkYXRhQ29tcG9uZW50PixcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZXRhZGF0YSA9IHRoaXMuZGF0YS5tZXRhZGF0YTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YVNlcnZpY2UgPSB0aGlzLmRhdGEuc2VydmljZTtcbiAgICAgICAgdGhpcy5wcm9qZWN0S2V5ID0gdGhpcy5wcm9qZWN0U2VydmljZS5hY3RpdmVQcm9qZWN0LmdldFZhbHVlKCkgPyB0aGlzLnByb2plY3RTZXJ2aWNlLmFjdGl2ZVByb2plY3QuZ2V0VmFsdWUoKS5wcm9qZWN0S2V5IDogJyc7XG5cblxuICAgICAgICB0aGlzLmxvYWRDYXRlZ29yaWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dTZWxlY3RlZChvMTogYW55LCBvMjogYW55KSB7XG4gICAgICAgIHJldHVybiBvMSAmJiBvMiAmJiBvMS5rZXkgPT09IG8yLmtleTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ2F0ZWdvcnkoKSB7XG5cbiAgICAgICAgdGhpcy5uZXdDYXRlZ29yeS5rZXkgPSBfLmNhbWVsQ2FzZSh0aGlzLm5ld0NhdGVnb3J5LmNhdGVnb3J5KTtcblxuICAgICAgICB0aGlzLmh0dHAucG9zdCgnL2FjY291bnQvbWV0YWRhdGEvY2F0ZWdvcnk/cHJvamVjdEtleT0nICsgdGhpcy5wcm9qZWN0S2V5LCB0aGlzLm5ld0NhdGVnb3J5KS50b1Byb21pc2UoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZENhdGVnb3JpZXMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXRhZGF0YS5jYXRlZ29yaWVzLnB1c2godGhpcy5uZXdDYXRlZ29yeSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3Q2F0ZWdvcnkgPSB7fTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlTWV0YWRhdGEoKSB7XG4gICAgICAgIHRoaXMubWV0YWRhdGFTZXJ2aWNlLnVwZGF0ZU1ldGFkYXRhKHRoaXMubWV0YWRhdGEpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRDYXRlZ29yaWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCgnL2FjY291bnQvbWV0YWRhdGEvY2F0ZWdvcnk/cHJvamVjdEtleT0nICsgdGhpcy5wcm9qZWN0S2V5LCB7XG4gICAgICAgICAgICBwYXJhbXM6IHtsaW1pdDogJzEwMCd9XG4gICAgICAgIH0pLnRvUHJvbWlzZSgpLnRoZW4oY2F0ZWdvcmllcyA9PiB0aGlzLmNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzKTtcbiAgICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2dcIiBjZGtEcmFnIGNka0RyYWdSb290RWxlbWVudD1cIi5jZGstb3ZlcmxheS1wYW5lXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLXRpdGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+RWRpdCBNZXRhZGF0YTwvaDI+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj5cbiAgICAgICAgICAgIDxwPjxiPlRpdGxlPC9iPjwvcD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZ1bGxcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGl0bGVcIiBbKG5nTW9kZWwpXT1cIm1ldGFkYXRhLnRpdGxlXCI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCI+XG4gICAgICAgICAgICA8cD48Yj5TdW1tYXJ5PC9iPjwvcD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZ1bGxcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgc3VtbWFyeVwiIFsobmdNb2RlbCldPVwibWV0YWRhdGEuc3VtbWFyeVwiPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiPlxuICAgICAgICAgICAgPHA+PGI+RGVzY3JpcHRpb248L2I+PC9wPlxuICAgICAgICAgICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwibWV0YWRhdGEuZGVzY3JpcHRpb25cIiBwbGFjZWhvbGRlcj1cIkVudGVyIGRlc2NyaXB0aW9uXCIgcm93cz1cIjVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj5cbiAgICAgICAgICAgIDxwPjxiPkNhdGVnb3JpZXM8L2I+PC9wPlxuXG4gICAgICAgICAgICA8bWF0LXNlbGVjdGlvbi1saXN0IFtjb21wYXJlV2l0aF09XCJzaG93U2VsZWN0ZWRcIiBbKG5nTW9kZWwpXT1cIm1ldGFkYXRhLmNhdGVnb3JpZXNcIiA+XG4gICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1wiIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIiBbdmFsdWVdPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAge3tjYXRlZ29yeS5jYXRlZ29yeX19XG4gICAgICAgICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj5cbiAgICAgICAgICAgIDxwPjxiPkFkZCBOZXcgQ2F0ZWdvcnk8L2I+PC9wPlxuXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmdWxsXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIG5hbWVcIiBbKG5nTW9kZWwpXT1cIm5ld0NhdGVnb3J5LmNhdGVnb3J5XCIgcmVxdWlyZWQ+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmdWxsIG10LTRcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGVzY3JpcHRpb25cIiBbKG5nTW9kZWwpXT1cIm5ld0NhdGVnb3J5LmRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG10LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhbmV3Q2F0ZWdvcnkuY2F0ZWdvcnlcIiAoY2xpY2spPVwiYWRkQ2F0ZWdvcnkoKVwiPkFkZCBDYXRlZ29yeTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZSBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiPkNsb3NlPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZU1ldGFkYXRhKClcIj5TYXZlIE1ldGFkYXRhXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG48L2Rpdj5cblxuXG4iXX0=