@theseam/ui-common 0.4.28-beta.5 → 0.4.29

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 (217) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +9 -61
  3. package/datatable/datatable-menu-bar/datatable-menu-bar.component.d.ts +2 -2
  4. package/datatable/datatable.module.d.ts +20 -29
  5. package/datatable/models/table-column.d.ts +1 -22
  6. package/datatable/public-api.d.ts +0 -14
  7. package/datatable/services/columns-manager.service.d.ts +0 -7
  8. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  9. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  10. package/esm2020/datatable/datatable/datatable.component.mjs +31 -240
  11. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  12. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  13. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  14. package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +1 -1
  15. package/esm2020/datatable/datatable.module.mjs +7 -49
  16. package/esm2020/datatable/models/table-column.mjs +1 -1
  17. package/esm2020/datatable/public-api.mjs +1 -15
  18. package/esm2020/datatable/services/columns-manager.service.mjs +2 -27
  19. package/esm2020/datatable/utils/create-action-menu-column.mjs +3 -4
  20. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  21. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  22. package/esm2020/framework/base-layout/base-layout.component.mjs +4 -14
  23. package/esm2020/framework/base-layout/base-layout.module.mjs +1 -6
  24. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +5 -21
  25. package/esm2020/framework/base-layout/index.mjs +1 -2
  26. package/esm2020/framework/public-api.mjs +1 -2
  27. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +2 -2
  28. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +78 -28
  29. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +5 -12
  30. package/esm2020/framework/side-nav/side-nav-tokens.mjs +5 -1
  31. package/esm2020/framework/side-nav/side-nav-utils.mjs +13 -3
  32. package/esm2020/framework/side-nav/side-nav.component.mjs +52 -119
  33. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  34. package/esm2020/framework/side-nav/side-nav.module.mjs +39 -9
  35. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  36. package/esm2020/framework/top-bar/index.mjs +1 -3
  37. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +4 -10
  38. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +4 -6
  39. package/esm2020/framework/top-bar/top-bar.component.mjs +11 -55
  40. package/esm2020/framework/top-bar/top-bar.module.mjs +5 -15
  41. package/esm2020/graphql/datatable/datatable-graphql.service.mjs +1 -1
  42. package/esm2020/graphql/datatable/index.mjs +1 -4
  43. package/esm2020/graphql/datatable/map-filter-states.mjs +1 -1
  44. package/esm2020/layout/layout.service.mjs +2 -12
  45. package/esm2020/menu/menu-toggle.directive.mjs +2 -7
  46. package/esm2020/navigation-reload/navigation-reload.config.mjs +2 -0
  47. package/esm2020/navigation-reload/navigation-reload.provider.mjs +14 -0
  48. package/esm2020/navigation-reload/navigation-reload.service.mjs +54 -0
  49. package/esm2020/navigation-reload/public-api.mjs +4 -0
  50. package/esm2020/navigation-reload/theseam-ui-common-navigation-reload.mjs +5 -0
  51. package/esm2020/popover/popover/popover.component.mjs +3 -7
  52. package/esm2020/popover/popover.directive.mjs +2 -6
  53. package/esm2020/table/public-api.mjs +1 -4
  54. package/esm2020/table/table/table.component.mjs +5 -90
  55. package/esm2020/table/table.module.mjs +5 -21
  56. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +3 -5
  57. package/esm2020/widget/widget-content-components/widget-table/widget-table.component.mjs +1 -1
  58. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  59. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  60. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  61. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  62. package/fesm2015/theseam-ui-common-datatable.mjs +62 -1035
  63. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  64. package/fesm2015/theseam-ui-common-framework.mjs +193 -910
  65. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  66. package/fesm2015/theseam-ui-common-graphql.mjs +1 -254
  67. package/fesm2015/theseam-ui-common-graphql.mjs.map +1 -1
  68. package/fesm2015/theseam-ui-common-layout.mjs +2 -11
  69. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  70. package/fesm2015/theseam-ui-common-menu.mjs +1 -6
  71. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  72. package/fesm2015/theseam-ui-common-navigation-reload.mjs +75 -0
  73. package/fesm2015/theseam-ui-common-navigation-reload.mjs.map +1 -0
  74. package/fesm2015/theseam-ui-common-popover.mjs +3 -11
  75. package/fesm2015/theseam-ui-common-popover.mjs.map +1 -1
  76. package/fesm2015/theseam-ui-common-table-cell-types.mjs +2 -4
  77. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  78. package/fesm2015/theseam-ui-common-table.mjs +9 -201
  79. package/fesm2015/theseam-ui-common-table.mjs.map +1 -1
  80. package/fesm2015/theseam-ui-common-widget.mjs +1 -1
  81. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  82. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  83. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  84. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  85. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  86. package/fesm2020/theseam-ui-common-datatable.mjs +62 -1019
  87. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  88. package/fesm2020/theseam-ui-common-framework.mjs +196 -912
  89. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  90. package/fesm2020/theseam-ui-common-graphql.mjs +1 -254
  91. package/fesm2020/theseam-ui-common-graphql.mjs.map +1 -1
  92. package/fesm2020/theseam-ui-common-layout.mjs +2 -11
  93. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  94. package/fesm2020/theseam-ui-common-menu.mjs +1 -6
  95. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  96. package/fesm2020/theseam-ui-common-navigation-reload.mjs +74 -0
  97. package/fesm2020/theseam-ui-common-navigation-reload.mjs.map +1 -0
  98. package/fesm2020/theseam-ui-common-popover.mjs +3 -11
  99. package/fesm2020/theseam-ui-common-popover.mjs.map +1 -1
  100. package/fesm2020/theseam-ui-common-table-cell-types.mjs +2 -4
  101. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  102. package/fesm2020/theseam-ui-common-table.mjs +9 -199
  103. package/fesm2020/theseam-ui-common-table.mjs.map +1 -1
  104. package/fesm2020/theseam-ui-common-widget.mjs +1 -1
  105. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  106. package/framework/base-layout/base-layout.component.d.ts +2 -4
  107. package/framework/base-layout/base-layout.component.scss +10 -18
  108. package/framework/base-layout/base-layout.module.d.ts +10 -11
  109. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +3 -8
  110. package/framework/base-layout/index.d.ts +0 -1
  111. package/framework/base-layout/styles/_variables.scss +0 -21
  112. package/framework/public-api.d.ts +0 -1
  113. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +20 -7
  114. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +16 -8
  115. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +3 -5
  116. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +6 -3
  117. package/framework/side-nav/side-nav-tokens.d.ts +8 -0
  118. package/framework/side-nav/side-nav-utils.d.ts +12 -6
  119. package/framework/side-nav/side-nav.component.d.ts +6 -16
  120. package/framework/side-nav/side-nav.component.scss +1 -0
  121. package/framework/side-nav/side-nav.models.d.ts +14 -9
  122. package/framework/side-nav/side-nav.module.d.ts +9 -1
  123. package/framework/side-nav/styles/_themes/light/_variables.scss +14 -24
  124. package/framework/side-nav/styles/_themes/primary/_variables.scss +0 -8
  125. package/framework/top-bar/index.d.ts +0 -2
  126. package/framework/top-bar/top-bar-item.directive.d.ts +1 -4
  127. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +2 -5
  128. package/framework/top-bar/top-bar.component.d.ts +3 -25
  129. package/framework/top-bar/top-bar.component.scss +2 -7
  130. package/framework/top-bar/top-bar.module.d.ts +8 -10
  131. package/graphql/datatable/datatable-graphql.service.d.ts +1 -1
  132. package/graphql/datatable/index.d.ts +0 -3
  133. package/graphql/datatable/map-filter-states.d.ts +2 -2
  134. package/layout/layout.service.d.ts +1 -9
  135. package/menu/menu-toggle.directive.d.ts +1 -2
  136. package/navigation-reload/index.d.ts +5 -0
  137. package/navigation-reload/navigation-reload.config.d.ts +5 -0
  138. package/navigation-reload/navigation-reload.provider.d.ts +3 -0
  139. package/navigation-reload/navigation-reload.service.d.ts +13 -0
  140. package/navigation-reload/public-api.d.ts +3 -0
  141. package/package.json +11 -3
  142. package/popover/popover/popover.component.d.ts +1 -4
  143. package/popover/popover.directive.d.ts +1 -2
  144. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +14 -83
  145. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +3 -38
  146. package/table/public-api.d.ts +0 -3
  147. package/table/table/table.component.d.ts +3 -21
  148. package/table/table.module.d.ts +1 -4
  149. package/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.d.ts +0 -25
  150. package/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.d.ts +0 -18
  151. package/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.d.ts +0 -16
  152. package/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.d.ts +0 -15
  153. package/datatable/directives/datatable-column-filter-tpl.directive.d.ts +0 -8
  154. package/datatable/directives/datatable-column-filter.directive.d.ts +0 -10
  155. package/datatable/models/action-item-column-position.d.ts +0 -13
  156. package/datatable/models/columns-data-filter.d.ts +0 -57
  157. package/datatable/models/columns-data-filters/models.d.ts +0 -65
  158. package/datatable/models/columns-data-filters/search-date.columns-data-filter.d.ts +0 -23
  159. package/datatable/models/columns-data-filters/search-numeric.columns-data-filter.d.ts +0 -22
  160. package/datatable/models/columns-data-filters/search-text.columns-data-filter.d.ts +0 -21
  161. package/datatable/models/columns-data-filters/utils.d.ts +0 -15
  162. package/datatable/models/datatable-config.d.ts +0 -97
  163. package/datatable/services/columns-filters.service.d.ts +0 -29
  164. package/esm2020/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.mjs +0 -55
  165. package/esm2020/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.mjs +0 -54
  166. package/esm2020/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.mjs +0 -48
  167. package/esm2020/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.mjs +0 -44
  168. package/esm2020/datatable/directives/datatable-column-filter-tpl.directive.mjs +0 -16
  169. package/esm2020/datatable/directives/datatable-column-filter.directive.mjs +0 -26
  170. package/esm2020/datatable/models/action-item-column-position.mjs +0 -5
  171. package/esm2020/datatable/models/columns-data-filter.mjs +0 -10
  172. package/esm2020/datatable/models/columns-data-filters/models.mjs +0 -74
  173. package/esm2020/datatable/models/columns-data-filters/search-date.columns-data-filter.mjs +0 -113
  174. package/esm2020/datatable/models/columns-data-filters/search-numeric.columns-data-filter.mjs +0 -104
  175. package/esm2020/datatable/models/columns-data-filters/search-text.columns-data-filter.mjs +0 -86
  176. package/esm2020/datatable/models/columns-data-filters/utils.mjs +0 -28
  177. package/esm2020/datatable/models/datatable-config.mjs +0 -3
  178. package/esm2020/datatable/services/columns-filters.service.mjs +0 -109
  179. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +0 -16
  180. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +0 -55
  181. package/esm2020/framework/nav/index.mjs +0 -6
  182. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +0 -227
  183. package/esm2020/framework/nav/nav-utils.mjs +0 -107
  184. package/esm2020/framework/nav/nav.models.mjs +0 -2
  185. package/esm2020/framework/nav/nav.module.mjs +0 -67
  186. package/esm2020/framework/nav/nav.service.mjs +0 -204
  187. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +0 -16
  188. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +0 -16
  189. package/esm2020/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.mjs +0 -139
  190. package/esm2020/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.mjs +0 -75
  191. package/esm2020/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.mjs +0 -44
  192. package/esm2020/table/table-cell-tpl.directive.mjs +0 -17
  193. package/esm2020/table/table-column-header-tpl.directive.mjs +0 -17
  194. package/esm2020/table/table-column.component.mjs +0 -68
  195. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +0 -9
  196. package/framework/nav/_nav-theme.scss +0 -4
  197. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +0 -25
  198. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +0 -50
  199. package/framework/nav/index.d.ts +0 -5
  200. package/framework/nav/nav-item/nav-item.component.d.ts +0 -74
  201. package/framework/nav/nav-item/nav-item.component.scss +0 -203
  202. package/framework/nav/nav-utils.d.ts +0 -20
  203. package/framework/nav/nav.models.d.ts +0 -77
  204. package/framework/nav/nav.module.d.ts +0 -17
  205. package/framework/nav/nav.service.d.ts +0 -27
  206. package/framework/nav/styles/_themes/light/_variables.scss +0 -56
  207. package/framework/nav/styles/_themes/primary/_variables.scss +0 -56
  208. package/framework/nav/styles/_utilities.scss +0 -3
  209. package/framework/nav/styles/_variables.scss +0 -2
  210. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +0 -8
  211. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +0 -8
  212. package/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.d.ts +0 -4
  213. package/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.d.ts +0 -4
  214. package/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.d.ts +0 -4
  215. package/table/table-cell-tpl.directive.d.ts +0 -7
  216. package/table/table-column-header-tpl.directive.d.ts +0 -7
  217. package/table/table-column.component.d.ts +0 -24
@@ -116,8 +116,6 @@ export class TheSeamPopoverDirective {
116
116
  this._closingActionsSubscription = this._popoverClosingActions().subscribe(() => this.closePopover());
117
117
  this._compRef.instance.template = this.seamPopover;
118
118
  this._compRef.instance.baseWidth = this.seamPopoverBaseWidth;
119
- this._compRef.instance.popover = this;
120
- this._compRef.instance.popoverContext = this.seamPopoverContext;
121
119
  this._compRef.changeDetectorRef.markForCheck();
122
120
  this._popoverClosedSubscription = this._compRef.instance._afterExit.subscribe(v => {
123
121
  // console.log('closed', v)
@@ -231,7 +229,7 @@ export class TheSeamPopoverDirective {
231
229
  }
232
230
  }
233
231
  TheSeamPopoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamPopoverDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1.Overlay }, { token: i2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });
234
- TheSeamPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamPopoverDirective, selector: "[seamPopover]", inputs: { seamPopover: "seamPopover", seamPopoverContext: "seamPopoverContext", seamPopoverBaseWidth: "seamPopoverBaseWidth", seamPopoverDisabled: "seamPopoverDisabled" }, host: { attributes: { "aria-haspopup": "true" }, listeners: { "mousedown": "_onMouseDown($event)", "click": "_onClick($event)", "document:keydown": "_onDocumentKeydown($event)" }, properties: { "attr.aria-expanded": "popoverOpen() || null" } }, exportAs: ["seamPopover"], ngImport: i0 });
232
+ TheSeamPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamPopoverDirective, selector: "[seamPopover]", inputs: { seamPopover: "seamPopover", seamPopoverBaseWidth: "seamPopoverBaseWidth", seamPopoverDisabled: "seamPopoverDisabled" }, host: { attributes: { "aria-haspopup": "true" }, listeners: { "mousedown": "_onMouseDown($event)", "click": "_onClick($event)", "document:keydown": "_onDocumentKeydown($event)" }, properties: { "attr.aria-expanded": "popoverOpen() || null" } }, exportAs: ["seamPopover"], ngImport: i0 });
235
233
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamPopoverDirective, decorators: [{
236
234
  type: Directive,
237
235
  args: [{
@@ -245,8 +243,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
245
243
  }]
246
244
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1.Overlay }, { type: i2.FocusMonitor }]; }, propDecorators: { seamPopover: [{
247
245
  type: Input
248
- }], seamPopoverContext: [{
249
- type: Input
250
246
  }], seamPopoverBaseWidth: [{
251
247
  type: Input
252
248
  }], seamPopoverDisabled: [{
@@ -261,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
261
257
  type: HostListener,
262
258
  args: ['document:keydown', ['$event']]
263
259
  }] } });
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vcG9wb3Zlci9wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZCLCtCQUErQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDbkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRTlDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQWdCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFvRCxNQUFNLGVBQWUsQ0FBQTtBQUMxSSxPQUFPLEVBQUUsZUFBZSxFQUFhLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNuRixPQUFPLEVBQWEsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7Ozs7QUFFOUQsb0RBQW9EO0FBQ3BELE1BQU0sMkJBQTJCLEdBQUcsK0JBQStCLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQVd0RixNQUFNLE9BQU8sdUJBQXVCO0lBUWxDOzs7T0FHRztJQUNILElBQ0ksb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUN0RSxJQUFJLG9CQUFvQixDQUFDLEtBQW9CO1FBQzNDLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM5QyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFO1lBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDdEM7SUFDSCxDQUFDO0lBR0QsSUFDSSxtQkFBbUIsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQ3BFLElBQUksbUJBQW1CLENBQUMsR0FBWSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFrQ3BHLFlBQVksQ0FBQyxLQUFpQjtRQUM1QixJQUFJLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsdUVBQXVFO1lBQ3ZFLG9FQUFvRTtZQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtTQUNyRDtJQUNILENBQUM7SUFHRCxRQUFRLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDZixDQUFDO0lBR0Qsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUNwQjtJQUNILENBQUM7SUFFRCxZQUNVLFdBQW9DLEVBQ3BDLGlCQUFtQyxFQUNuQyxRQUFpQixFQUNqQixhQUEyQjtRQUgzQixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBaEZwQixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFrQjdDLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQTtRQUtoRSx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQTtRQUVsRSxlQUFlO1FBQ2Ysb0NBQW9DO1FBQ3BDLDhCQUE4QjtRQUM5Qix3QkFBd0I7UUFDeEIsdUJBQXVCO1FBQ3ZCLCtCQUErQjtRQUMvQixVQUFVO1FBRVYscUVBQXFFO1FBQ3JFLCtCQUErQjtRQUMvQixVQUFVO1FBRVYsa0VBQWtFO1FBQ2xFLFNBQVM7UUFDVCxrQkFBa0I7UUFDbEIsSUFBSTtRQUVJLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFDZixhQUFRLEdBQUcsS0FBSyxDQUFBO1FBR2hCLCtCQUEwQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUE7UUFDL0MsZ0NBQTJCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQTtRQUVqRCxpQkFBWSxHQUFHLElBQUksQ0FBQTtRQUUxQix1RUFBdUU7UUFDdkUsc0VBQXNFO1FBQ3RFLGNBQVMsR0FBNkIsSUFBSSxDQUFBO1FBdUQxQzs7O1dBR0c7UUFDSyxzQkFBaUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQTtRQTlCeEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFDaEYsMkJBQTJCLENBQUMsQ0FBQTtRQUVoQyxJQUFJLENBQUMscUJBQXFCO2FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQTtnQkFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQTthQUMvQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFDbkYsMkJBQTJCLENBQUMsQ0FBQTtRQUVoQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDN0MsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRTlDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDaEMsQ0FBQztJQVFNLE1BQU07UUFDWCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzVDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1NBQ25CO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU07U0FBRTtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtRQUVuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGFBQWEsRUFBRSxhQUFhO1lBQzVCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztTQUMxRSxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7UUFFdEcsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtRQUVyRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFBO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQTtRQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRTlDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hGLDJCQUEyQjtZQUMzQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUE7YUFDMUI7WUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7WUFFcEIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQzdDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUU5QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUN2QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQUUsT0FBTTtTQUFFO1FBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFBO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksS0FBSyxDQUFBO0lBQ2pELENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxNQUFtQjtRQUM1QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO2FBQzlDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQzthQUMzQixhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ2xDLHNCQUFzQixDQUFDLEtBQUssQ0FBQzthQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFakIsT0FBTyxnQkFBZ0IsQ0FBQTtJQUN6QixDQUFDO0lBRU8sWUFBWTtRQUNsQixPQUFPO1lBQ0w7Z0JBQ0UsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsUUFBUSxFQUFFLEtBQUs7YUFDaEI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsUUFBUTtnQkFDakIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRO2FBQ25CO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxLQUFLO2FBQ2hCO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLEtBQUs7YUFDaEI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsS0FBSztnQkFDZixRQUFRLEVBQUUsUUFBUTthQUNuQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLFFBQVE7YUFDbkI7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxTQUFzQixTQUFTO1FBQ25DLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQ3REO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtTQUN2QztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxhQUFhO1FBQ25CLHNFQUFzRTtRQUN0RSxvRUFBb0U7UUFDcEUsaUNBQWlDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbkIsZ0VBQWdFO2dCQUNoRSwwREFBMEQ7Z0JBQzFELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTthQUNiO1NBQ0Y7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtJQUN2QixDQUFDO0lBRUQsMkZBQTJGO0lBQ25GLHNCQUFzQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFBO1FBQzFELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUE7UUFDM0QsTUFBTSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUE7UUFFbEIsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUM1QyxDQUFDOztvSEF4UVUsdUJBQXVCO3dHQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFUbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsdURBQXVEO29CQUN2RCxJQUFJLEVBQUU7d0JBQ0osZUFBZSxFQUFFLE1BQU07d0JBQ3ZCLHNCQUFzQixFQUFFLHVCQUF1QjtxQkFDaEQ7b0JBQ0QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO2lMQUtVLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQU9GLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFXRixtQkFBbUI7c0JBRHRCLEtBQUs7Z0JBb0NOLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBRSxRQUFRLENBQUU7Z0JBVXZDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxRQUFRLENBQUU7Z0JBTW5DLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFFLFFBQVEsQ0FBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciwgRm9jdXNPcmlnaW4sIGlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSdcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBFU0NBUEUgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnXG5pbXBvcnQgeyBDb25uZWN0aW9uUG9zaXRpb25QYWlyLCBPdmVybGF5LCBPdmVybGF5UmVmLCBQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknXG5pbXBvcnQgeyBub3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJ1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCdcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIG1lcmdlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnXG5cbi8qKiBPcHRpb25zIGZvciBiaW5kaW5nIGEgcGFzc2l2ZSBldmVudCBsaXN0ZW5lci4gKi9cbmNvbnN0IHBhc3NpdmVFdmVudExpc3RlbmVyT3B0aW9ucyA9IG5vcm1hbGl6ZVBhc3NpdmVMaXN0ZW5lck9wdGlvbnMoeyBwYXNzaXZlOiB0cnVlIH0pXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzZWFtUG9wb3Zlcl0nLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dXNlLWhvc3QtcHJvcGVydHktZGVjb3JhdG9yXG4gIGhvc3Q6IHtcbiAgICAnYXJpYS1oYXNwb3B1cCc6ICd0cnVlJyxcbiAgICAnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAncG9wb3Zlck9wZW4oKSB8fCBudWxsJ1xuICB9LFxuICBleHBvcnRBczogJ3NlYW1Qb3BvdmVyJ1xufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtUG9wb3ZlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICBASW5wdXQoKSBzZWFtUG9wb3Zlcj86IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsXG5cbiAgQElucHV0KCkgc2VhbVBvcG92ZXJDb250ZXh0PzogYW55XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSB3aWR0aCBmb3IgYSBwb3BvdmVyIHRoYXQgd2lsbCBzY2FsZSBkb3duIGlmIHRoZSB3aW5kb3cgaW5uZXJXaWR0aCBpc1xuICAgKiBzbWFsbGVyIHRoYW4gdGhlIHZhbHVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlYW1Qb3BvdmVyQmFzZVdpZHRoKCkgeyByZXR1cm4gdGhpcy5fc2VhbVBvcG92ZXJCYXNlV2lkdGgudmFsdWUgfVxuICBzZXQgc2VhbVBvcG92ZXJCYXNlV2lkdGgodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICBjb25zdCBfdmFsID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIG51bGwpXG4gICAgaWYgKF92YWwgIT09IHRoaXMuX3NlYW1Qb3BvdmVyQmFzZVdpZHRoLnZhbHVlKSB7XG4gICAgICB0aGlzLl9zZWFtUG9wb3ZlckJhc2VXaWR0aC5uZXh0KF92YWwpXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3NlYW1Qb3BvdmVyQmFzZVdpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKVxuXG4gIEBJbnB1dCgpXG4gIGdldCBzZWFtUG9wb3ZlckRpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5fc2VhbVBvcG92ZXJEaXNhYmxlZC52YWx1ZSB9XG4gIHNldCBzZWFtUG9wb3ZlckRpc2FibGVkKHZhbDogYm9vbGVhbikgeyB0aGlzLl9zZWFtUG9wb3ZlckRpc2FibGVkLm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbCkpIH1cbiAgcHJpdmF0ZSBfc2VhbVBvcG92ZXJEaXNhYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgLy8gbmdPbkluaXQoKSB7XG4gIC8vICAgdGhpcy5fc2VhbVBvcG92ZXJEaXNhYmxlZC5waXBlKFxuICAvLyAgICAgc3dpdGNoTWFwKGRpc2FibGVkID0+IHtcbiAgLy8gICAgICAgaWYgKGRpc2FibGVkKSB7XG4gIC8vICAgICAgICAgdGhpcy5jbG9zZSgpXG4gIC8vICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmICghKHRoaXMuX2VsZW1lbnRSZWYgJiYgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSkge1xuICAvLyAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gIC8vICAgICAgIH1cblxuICAvLyAgICAgICByZXR1cm4gZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgLy8gICAgIH0pXG4gIC8vICAgKS5zdWJzY3JpYmUoKVxuICAvLyB9XG5cbiAgcHJpdmF0ZSBfYWN0aXZlID0gZmFsc2VcbiAgcHJpdmF0ZSBfY2xvc2luZyA9IGZhbHNlXG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCB1bmRlZmluZWQgfCBudWxsXG4gIHByaXZhdGUgX2NvbXBSZWY6IENvbXBvbmVudFJlZjxQb3BvdmVyQ29tcG9uZW50PiB8IHVuZGVmaW5lZCB8IG51bGxcbiAgcHJpdmF0ZSBfcG9wb3ZlckNsb3NlZFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWVxuICBwcml2YXRlIF9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWVxuXG4gIHB1YmxpYyByZXN0b3JlRm9jdXMgPSB0cnVlXG5cbiAgLy8gVHJhY2tpbmcgaW5wdXQgdHlwZSBpcyBuZWNlc3Nhcnkgc28gaXQncyBwb3NzaWJsZSB0byBvbmx5IGF1dG8tZm9jdXNcbiAgLy8gdGhlIGZpcnN0IGl0ZW0gb2YgdGhlIGxpc3Qgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZFxuICBfb3BlbmVkQnk6ICdtb3VzZScgfCAndG91Y2gnIHwgbnVsbCA9IG51bGxcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbICckZXZlbnQnIF0pXG4gIF9vbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcihldmVudCkpIHtcbiAgICAgIC8vIFNpbmNlIHJpZ2h0IG9yIG1pZGRsZSBidXR0b24gY2xpY2tzIHdvbid0IHRyaWdnZXIgdGhlIGBjbGlja2AgZXZlbnQsXG4gICAgICAvLyB3ZSBzaG91bGRuJ3QgY29uc2lkZXIgdGhlIG1lbnUgYXMgb3BlbmVkIGJ5IG1vdXNlIGluIHRob3NlIGNhc2VzLlxuICAgICAgdGhpcy5fb3BlbmVkQnkgPSBldmVudC5idXR0b24gPT09IDAgPyAnbW91c2UnIDogbnVsbFxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyAnJGV2ZW50JyBdKVxuICBfb25DbGljayhldmVudDogYW55KSB7XG4gICAgdGhpcy50b2dnbGUoKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsgJyRldmVudCcgXSlcbiAgX29uRG9jdW1lbnRLZXlkb3duKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFKSB7XG4gICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpXG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yXG4gICkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5faGFuZGxlVG91Y2hTdGFydCxcbiAgICAgICAgcGFzc2l2ZUV2ZW50TGlzdGVuZXJPcHRpb25zKVxuXG4gICAgdGhpcy5fc2VhbVBvcG92ZXJCYXNlV2lkdGhcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUodyA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9jb21wUmVmICYmIHRoaXMuX2NvbXBSZWYuaW5zdGFuY2UpIHtcbiAgICAgICAgICB0aGlzLl9jb21wUmVmLmluc3RhbmNlLmJhc2VXaWR0aCA9IHdcbiAgICAgICAgICB0aGlzLl9jb21wUmVmLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNsb3NlUG9wb3ZlcigpXG5cbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQsXG4gICAgICAgIHBhc3NpdmVFdmVudExpc3RlbmVyT3B0aW9ucylcblxuICAgIHRoaXMuX3BvcG92ZXJDbG9zZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcblxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCh1bmRlZmluZWQpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0b3VjaCBzdGFydCBldmVudHMgb24gdGhlIHRyaWdnZXIuXG4gICAqIE5lZWRzIHRvIGJlIGFuIGFycm93IGZ1bmN0aW9uIHNvIHdlIGNhbiBlYXNpbHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgYW5kIHJlbW92ZUV2ZW50TGlzdGVuZXIuXG4gICAqL1xuICBwcml2YXRlIF9oYW5kbGVUb3VjaFN0YXJ0ID0gKCkgPT4gdGhpcy5fb3BlbmVkQnkgPSAndG91Y2gnXG5cbiAgcHVibGljIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlIHx8IHRoaXMuc2VhbVBvcG92ZXJEaXNhYmxlZCkge1xuICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5Qb3BvdmVyKClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlblBvcG92ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZSB8fCAhdGhpcy5zZWFtUG9wb3ZlcikgeyByZXR1cm4gfVxuICAgIHRoaXMuX2FjdGl2ZSA9IHRydWVcblxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICd0cmFuc3BhcmVudCcsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLmdldE92ZXJsYXlQb3NpdGlvbih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLFxuICAgIH0pXG5cbiAgICB0aGlzLl9jb21wUmVmID0gdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChQb3BvdmVyQ29tcG9uZW50LCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKSlcblxuICAgIHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uID0gdGhpcy5fcG9wb3ZlckNsb3NpbmdBY3Rpb25zKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VQb3BvdmVyKCkpXG5cbiAgICB0aGlzLl9jb21wUmVmLmluc3RhbmNlLnRlbXBsYXRlID0gdGhpcy5zZWFtUG9wb3ZlclxuICAgIHRoaXMuX2NvbXBSZWYuaW5zdGFuY2UuYmFzZVdpZHRoID0gdGhpcy5zZWFtUG9wb3ZlckJhc2VXaWR0aFxuICAgIHRoaXMuX2NvbXBSZWYuaW5zdGFuY2UucG9wb3ZlciA9IHRoaXNcbiAgICB0aGlzLl9jb21wUmVmLmluc3RhbmNlLnBvcG92ZXJDb250ZXh0ID0gdGhpcy5zZWFtUG9wb3ZlckNvbnRleHRcbiAgICB0aGlzLl9jb21wUmVmLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG5cbiAgICB0aGlzLl9wb3BvdmVyQ2xvc2VkU3Vic2NyaXB0aW9uID0gdGhpcy5fY29tcFJlZi5pbnN0YW5jZS5fYWZ0ZXJFeGl0LnN1YnNjcmliZSh2ID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdjbG9zZWQnLCB2KVxuICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZXNldFBvcG92ZXIoKVxuXG4gICAgICB0aGlzLl9wb3BvdmVyQ2xvc2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICAgIHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcblxuICAgICAgdGhpcy5fYWN0aXZlID0gZmFsc2VcbiAgICAgIHRoaXMuX2Nsb3NpbmcgPSBmYWxzZVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWN0aXZlKSB7IHJldHVybiB9XG5cbiAgICBpZiAoIXRoaXMuX2Nsb3NpbmcpIHtcbiAgICAgIGlmICh0aGlzLl9jb21wUmVmICYmIHRoaXMuX2NvbXBSZWYuaW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5fY2xvc2luZyA9IHRydWVcbiAgICAgICAgdGhpcy5fY29tcFJlZi5pbnN0YW5jZS5fc3RhcnRFeGl0aW5nKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcG9wb3Zlck9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgPz8gZmFsc2VcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbjogSFRNTEVsZW1lbnQpOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pXG4gICAgICAud2l0aFBvc2l0aW9ucyh0aGlzLmdldFBvc2l0aW9ucygpKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAud2l0aFB1c2godHJ1ZSlcblxuICAgIHJldHVybiBwb3NpdGlvblN0cmF0ZWd5XG4gIH1cblxuICBwcml2YXRlIGdldFBvc2l0aW9ucygpOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgIH0sXG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIHBvcG92ZXIgdHJpZ2dlci5cbiAgICogQHBhcmFtIG9yaWdpbiBTb3VyY2Ugb2YgdGhlIHBvcG92ZXIgdHJpZ2dlcidzIGZvY3VzLlxuICAgKi9cbiAgZm9jdXMob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJykge1xuICAgIGlmICh0aGlzLl9mb2N1c01vbml0b3IpIHtcbiAgICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9lbGVtZW50UmVmLCBvcmlnaW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHJlc2V0cyB0aGUgcG9wb3ZlciB3aGVuIGl0J3MgY2xvc2VkLCBtb3N0IGltcG9ydGFudGx5IHJlc3RvcmluZ1xuICAgKiBmb2N1cyB0byB0aGUgcG9wb3ZlciB0cmlnZ2VyIGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cbiAgICovXG4gIHByaXZhdGUgX3Jlc2V0UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAvLyBXZSBzaG91bGQgcmVzZXQgZm9jdXMgaWYgdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB1c2luZyBhIGtleWJvYXJkIG9yXG4gICAgLy8gaWYgd2UgaGF2ZSBhIHRvcC1sZXZlbCB0cmlnZ2VyIHdoaWNoIG1pZ2h0IGNhdXNlIGZvY3VzIHRvIGJlIGxvc3RcbiAgICAvLyB3aGVuIGNsaWNraW5nIG9uIHRoZSBiYWNrZHJvcC5cbiAgICBpZiAodGhpcy5yZXN0b3JlRm9jdXMpIHtcbiAgICAgIGlmICghdGhpcy5fb3BlbmVkQnkpIHtcbiAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBmb2N1cyBzdHlsZSB3aWxsIHNob3cgdXAgYm90aCBmb3IgYHByb2dyYW1gIGFuZFxuICAgICAgICAvLyBga2V5Ym9hcmRgIHNvIHdlIGRvbid0IGhhdmUgdG8gc3BlY2lmeSB3aGljaCBvbmUgaXQgaXMuXG4gICAgICAgIHRoaXMuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX29wZW5lZEJ5ID0gbnVsbFxuICB9XG5cbiAgLyoqIFJldHVybnMgYSBzdHJlYW0gdGhhdCBlbWl0cyB3aGVuZXZlciBhbiBhY3Rpb24gdGhhdCBzaG91bGQgY2xvc2UgdGhlIHBvcG92ZXIgb2NjdXJzLiAqL1xuICBwcml2YXRlIF9wb3BvdmVyQ2xvc2luZ0FjdGlvbnMoKSB7XG4gICAgY29uc3QgYmFja2Ryb3AgPSB0aGlzLl9vdmVybGF5UmVmPy5iYWNrZHJvcENsaWNrKCkgPz8gb2YoKVxuICAgIGNvbnN0IGRldGFjaG1lbnRzID0gdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNobWVudHMoKSA/PyBvZigpXG4gICAgY29uc3QgaG92ZXIgPSBvZigpXG5cbiAgICByZXR1cm4gbWVyZ2UoYmFja2Ryb3AsIGhvdmVyLCBkZXRhY2htZW50cylcbiAgfVxuXG59XG4iXX0=
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vcG9wb3Zlci9wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZCLCtCQUErQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDbkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRTlDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQWdCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFvRCxNQUFNLGVBQWUsQ0FBQTtBQUMxSSxPQUFPLEVBQUUsZUFBZSxFQUFhLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNuRixPQUFPLEVBQWEsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7Ozs7QUFFOUQsb0RBQW9EO0FBQ3BELE1BQU0sMkJBQTJCLEdBQUcsK0JBQStCLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQVd0RixNQUFNLE9BQU8sdUJBQXVCO0lBTWxDOzs7T0FHRztJQUNILElBQ0ksb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUN0RSxJQUFJLG9CQUFvQixDQUFDLEtBQW9CO1FBQzNDLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM5QyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFO1lBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDdEM7SUFDSCxDQUFDO0lBR0QsSUFDSSxtQkFBbUIsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQ3BFLElBQUksbUJBQW1CLENBQUMsR0FBWSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFrQ3BHLFlBQVksQ0FBQyxLQUFpQjtRQUM1QixJQUFJLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsdUVBQXVFO1lBQ3ZFLG9FQUFvRTtZQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtTQUNyRDtJQUNILENBQUM7SUFHRCxRQUFRLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDZixDQUFDO0lBR0Qsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUNwQjtJQUNILENBQUM7SUFFRCxZQUNVLFdBQW9DLEVBQ3BDLGlCQUFtQyxFQUNuQyxRQUFpQixFQUNqQixhQUEyQjtRQUgzQixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBOUVwQixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFnQjdDLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQTtRQUtoRSx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQTtRQUVsRSxlQUFlO1FBQ2Ysb0NBQW9DO1FBQ3BDLDhCQUE4QjtRQUM5Qix3QkFBd0I7UUFDeEIsdUJBQXVCO1FBQ3ZCLCtCQUErQjtRQUMvQixVQUFVO1FBRVYscUVBQXFFO1FBQ3JFLCtCQUErQjtRQUMvQixVQUFVO1FBRVYsa0VBQWtFO1FBQ2xFLFNBQVM7UUFDVCxrQkFBa0I7UUFDbEIsSUFBSTtRQUVJLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFDZixhQUFRLEdBQUcsS0FBSyxDQUFBO1FBR2hCLCtCQUEwQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUE7UUFDL0MsZ0NBQTJCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQTtRQUVqRCxpQkFBWSxHQUFHLElBQUksQ0FBQTtRQUUxQix1RUFBdUU7UUFDdkUsc0VBQXNFO1FBQ3RFLGNBQVMsR0FBNkIsSUFBSSxDQUFBO1FBdUQxQzs7O1dBR0c7UUFDSyxzQkFBaUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQTtRQTlCeEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFDaEYsMkJBQTJCLENBQUMsQ0FBQTtRQUVoQyxJQUFJLENBQUMscUJBQXFCO2FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQTtnQkFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQTthQUMvQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFDbkYsMkJBQTJCLENBQUMsQ0FBQTtRQUVoQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDN0MsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRTlDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDaEMsQ0FBQztJQVFNLE1BQU07UUFDWCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzVDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1NBQ25CO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU07U0FBRTtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtRQUVuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGFBQWEsRUFBRSxhQUFhO1lBQzVCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztTQUMxRSxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7UUFFdEcsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtRQUVyRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFBO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFOUMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEYsMkJBQTJCO1lBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQTthQUMxQjtZQUVELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtZQUVwQixJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDN0MsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFBO1lBRTlDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFNO1NBQUU7UUFFN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO2dCQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtnQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUE7YUFDdkM7U0FDRjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsSUFBSSxLQUFLLENBQUE7SUFDakQsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE1BQW1CO1FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7YUFDOUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO2FBQzNCLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDbEMsc0JBQXNCLENBQUMsS0FBSyxDQUFDO2FBQzdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVqQixPQUFPLGdCQUFnQixDQUFBO0lBQ3pCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE9BQU87WUFDTDtnQkFDRSxPQUFPLEVBQUUsUUFBUTtnQkFDakIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixRQUFRLEVBQUUsS0FBSzthQUNoQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsUUFBUSxFQUFFLFFBQVE7YUFDbkI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUUsUUFBUTtnQkFDakIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7YUFDaEI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSzthQUNoQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxRQUFRO2FBQ25CO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsUUFBUTthQUNuQjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFNBQXNCLFNBQVM7UUFDbkMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUE7U0FDdEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWE7UUFDbkIsc0VBQXNFO1FBQ3RFLG9FQUFvRTtRQUNwRSxpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNuQixnRUFBZ0U7Z0JBQ2hFLDBEQUEwRDtnQkFDMUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO2FBQ2I7U0FDRjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFBO0lBQ3ZCLENBQUM7SUFFRCwyRkFBMkY7SUFDbkYsc0JBQXNCO1FBQzVCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUE7UUFDMUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQTtRQUMzRCxNQUFNLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQTtRQUVsQixPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQzVDLENBQUM7O29IQXBRVSx1QkFBdUI7d0dBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQVRuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6Qix1REFBdUQ7b0JBQ3ZELElBQUksRUFBRTt3QkFDSixlQUFlLEVBQUUsTUFBTTt3QkFDdkIsc0JBQXNCLEVBQUUsdUJBQXVCO3FCQUNoRDtvQkFDRCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7aUxBS1UsV0FBVztzQkFBbkIsS0FBSztnQkFPRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBV0YsbUJBQW1CO3NCQUR0QixLQUFLO2dCQW9DTixZQUFZO3NCQURYLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUUsUUFBUSxDQUFFO2dCQVV2QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUUsUUFBUSxDQUFFO2dCQU1uQyxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luLCBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgRVNDQVBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJ1xuaW1wb3J0IHsgQ29ubmVjdGlvblBvc2l0aW9uUGFpciwgT3ZlcmxheSwgT3ZlcmxheVJlZiwgUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5J1xuaW1wb3J0IHsgbm9ybWFsaXplUGFzc2l2ZUxpc3RlbmVyT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSdcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnXG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBtZXJnZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50J1xuXG4vKiogT3B0aW9ucyBmb3IgYmluZGluZyBhIHBhc3NpdmUgZXZlbnQgbGlzdGVuZXIuICovXG5jb25zdCBwYXNzaXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSBub3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zKHsgcGFzc2l2ZTogdHJ1ZSB9KVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2VhbVBvcG92ZXJdJyxcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnVzZS1ob3N0LXByb3BlcnR5LWRlY29yYXRvclxuICBob3N0OiB7XG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAndHJ1ZScsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ3BvcG92ZXJPcGVuKCkgfHwgbnVsbCdcbiAgfSxcbiAgZXhwb3J0QXM6ICdzZWFtUG9wb3Zlcidcbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbVBvcG92ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgQElucHV0KCkgc2VhbVBvcG92ZXI/OiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbFxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgd2lkdGggZm9yIGEgcG9wb3ZlciB0aGF0IHdpbGwgc2NhbGUgZG93biBpZiB0aGUgd2luZG93IGlubmVyV2lkdGggaXNcbiAgICogc21hbGxlciB0aGFuIHRoZSB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWFtUG9wb3ZlckJhc2VXaWR0aCgpIHsgcmV0dXJuIHRoaXMuX3NlYW1Qb3BvdmVyQmFzZVdpZHRoLnZhbHVlIH1cbiAgc2V0IHNlYW1Qb3BvdmVyQmFzZVdpZHRoKHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgY29uc3QgX3ZhbCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCBudWxsKVxuICAgIGlmIChfdmFsICE9PSB0aGlzLl9zZWFtUG9wb3ZlckJhc2VXaWR0aC52YWx1ZSkge1xuICAgICAgdGhpcy5fc2VhbVBvcG92ZXJCYXNlV2lkdGgubmV4dChfdmFsKVxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9zZWFtUG9wb3ZlckJhc2VXaWR0aCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbClcblxuICBASW5wdXQoKVxuICBnZXQgc2VhbVBvcG92ZXJEaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuX3NlYW1Qb3BvdmVyRGlzYWJsZWQudmFsdWUgfVxuICBzZXQgc2VhbVBvcG92ZXJEaXNhYmxlZCh2YWw6IGJvb2xlYW4pIHsgdGhpcy5fc2VhbVBvcG92ZXJEaXNhYmxlZC5uZXh0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpKSB9XG4gIHByaXZhdGUgX3NlYW1Qb3BvdmVyRGlzYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuXG4gIC8vIG5nT25Jbml0KCkge1xuICAvLyAgIHRoaXMuX3NlYW1Qb3BvdmVyRGlzYWJsZWQucGlwZShcbiAgLy8gICAgIHN3aXRjaE1hcChkaXNhYmxlZCA9PiB7XG4gIC8vICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAvLyAgICAgICAgIHRoaXMuY2xvc2UoKVxuICAvLyAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gIC8vICAgICAgIH1cblxuICAvLyAgICAgICBpZiAoISh0aGlzLl9lbGVtZW50UmVmICYmIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpIHtcbiAgLy8gICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgcmV0dXJuIGZyb21FdmVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gIC8vICAgICB9KVxuICAvLyAgICkuc3Vic2NyaWJlKClcbiAgLy8gfVxuXG4gIHByaXZhdGUgX2FjdGl2ZSA9IGZhbHNlXG4gIHByaXZhdGUgX2Nsb3NpbmcgPSBmYWxzZVxuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBwcml2YXRlIF9jb21wUmVmOiBDb21wb25lbnRSZWY8UG9wb3ZlckNvbXBvbmVudD4gfCB1bmRlZmluZWQgfCBudWxsXG4gIHByaXZhdGUgX3BvcG92ZXJDbG9zZWRTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFlcbiAgcHJpdmF0ZSBfY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFlcblxuICBwdWJsaWMgcmVzdG9yZUZvY3VzID0gdHJ1ZVxuXG4gIC8vIFRyYWNraW5nIGlucHV0IHR5cGUgaXMgbmVjZXNzYXJ5IHNvIGl0J3MgcG9zc2libGUgdG8gb25seSBhdXRvLWZvY3VzXG4gIC8vIHRoZSBmaXJzdCBpdGVtIG9mIHRoZSBsaXN0IHdoZW4gdGhlIG1lbnUgaXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmRcbiAgX29wZW5lZEJ5OiAnbW91c2UnIHwgJ3RvdWNoJyB8IG51bGwgPSBudWxsXG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyAnJGV2ZW50JyBdKVxuICBfb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIWlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIoZXZlbnQpKSB7XG4gICAgICAvLyBTaW5jZSByaWdodCBvciBtaWRkbGUgYnV0dG9uIGNsaWNrcyB3b24ndCB0cmlnZ2VyIHRoZSBgY2xpY2tgIGV2ZW50LFxuICAgICAgLy8gd2Ugc2hvdWxkbid0IGNvbnNpZGVyIHRoZSBtZW51IGFzIG9wZW5lZCBieSBtb3VzZSBpbiB0aG9zZSBjYXNlcy5cbiAgICAgIHRoaXMuX29wZW5lZEJ5ID0gZXZlbnQuYnV0dG9uID09PSAwID8gJ21vdXNlJyA6IG51bGxcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsgJyRldmVudCcgXSlcbiAgX29uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudG9nZ2xlKClcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbICckZXZlbnQnIF0pXG4gIF9vbkRvY3VtZW50S2V5ZG93bihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSkge1xuICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvclxuICApIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQsXG4gICAgICAgIHBhc3NpdmVFdmVudExpc3RlbmVyT3B0aW9ucylcblxuICAgIHRoaXMuX3NlYW1Qb3BvdmVyQmFzZVdpZHRoXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHcgPT4ge1xuICAgICAgICBpZiAodGhpcy5fY29tcFJlZiAmJiB0aGlzLl9jb21wUmVmLmluc3RhbmNlKSB7XG4gICAgICAgICAgdGhpcy5fY29tcFJlZi5pbnN0YW5jZS5iYXNlV2lkdGggPSB3XG4gICAgICAgICAgdGhpcy5fY29tcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbG9zZVBvcG92ZXIoKVxuXG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLl9oYW5kbGVUb3VjaFN0YXJ0LFxuICAgICAgICBwYXNzaXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMpXG5cbiAgICB0aGlzLl9wb3BvdmVyQ2xvc2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICB0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG5cbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQodW5kZWZpbmVkKVxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdG91Y2ggc3RhcnQgZXZlbnRzIG9uIHRoZSB0cmlnZ2VyLlxuICAgKiBOZWVkcyB0byBiZSBhbiBhcnJvdyBmdW5jdGlvbiBzbyB3ZSBjYW4gZWFzaWx5IHVzZSBhZGRFdmVudExpc3RlbmVyIGFuZCByZW1vdmVFdmVudExpc3RlbmVyLlxuICAgKi9cbiAgcHJpdmF0ZSBfaGFuZGxlVG91Y2hTdGFydCA9ICgpID0+IHRoaXMuX29wZW5lZEJ5ID0gJ3RvdWNoJ1xuXG4gIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZSB8fCB0aGlzLnNlYW1Qb3BvdmVyRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuUG9wb3ZlcigpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5Qb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hY3RpdmUgfHwgIXRoaXMuc2VhbVBvcG92ZXIpIHsgcmV0dXJuIH1cbiAgICB0aGlzLl9hY3RpdmUgPSB0cnVlXG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAndHJhbnNwYXJlbnQnLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5nZXRPdmVybGF5UG9zaXRpb24odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSxcbiAgICB9KVxuXG4gICAgdGhpcy5fY29tcFJlZiA9IHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoUG9wb3ZlckNvbXBvbmVudCwgdGhpcy5fdmlld0NvbnRhaW5lclJlZikpXG5cbiAgICB0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbiA9IHRoaXMuX3BvcG92ZXJDbG9zaW5nQWN0aW9ucygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlUG9wb3ZlcigpKVxuXG4gICAgdGhpcy5fY29tcFJlZi5pbnN0YW5jZS50ZW1wbGF0ZSA9IHRoaXMuc2VhbVBvcG92ZXJcbiAgICB0aGlzLl9jb21wUmVmLmluc3RhbmNlLmJhc2VXaWR0aCA9IHRoaXMuc2VhbVBvcG92ZXJCYXNlV2lkdGhcbiAgICB0aGlzLl9jb21wUmVmLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG5cbiAgICB0aGlzLl9wb3BvdmVyQ2xvc2VkU3Vic2NyaXB0aW9uID0gdGhpcy5fY29tcFJlZi5pbnN0YW5jZS5fYWZ0ZXJFeGl0LnN1YnNjcmliZSh2ID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdjbG9zZWQnLCB2KVxuICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZXNldFBvcG92ZXIoKVxuXG4gICAgICB0aGlzLl9wb3BvdmVyQ2xvc2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICAgIHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcblxuICAgICAgdGhpcy5fYWN0aXZlID0gZmFsc2VcbiAgICAgIHRoaXMuX2Nsb3NpbmcgPSBmYWxzZVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWN0aXZlKSB7IHJldHVybiB9XG5cbiAgICBpZiAoIXRoaXMuX2Nsb3NpbmcpIHtcbiAgICAgIGlmICh0aGlzLl9jb21wUmVmICYmIHRoaXMuX2NvbXBSZWYuaW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5fY2xvc2luZyA9IHRydWVcbiAgICAgICAgdGhpcy5fY29tcFJlZi5pbnN0YW5jZS5fc3RhcnRFeGl0aW5nKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcG9wb3Zlck9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgPz8gZmFsc2VcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbjogSFRNTEVsZW1lbnQpOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pXG4gICAgICAud2l0aFBvc2l0aW9ucyh0aGlzLmdldFBvc2l0aW9ucygpKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAud2l0aFB1c2godHJ1ZSlcblxuICAgIHJldHVybiBwb3NpdGlvblN0cmF0ZWd5XG4gIH1cblxuICBwcml2YXRlIGdldFBvc2l0aW9ucygpOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgIH0sXG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIHBvcG92ZXIgdHJpZ2dlci5cbiAgICogQHBhcmFtIG9yaWdpbiBTb3VyY2Ugb2YgdGhlIHBvcG92ZXIgdHJpZ2dlcidzIGZvY3VzLlxuICAgKi9cbiAgZm9jdXMob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJykge1xuICAgIGlmICh0aGlzLl9mb2N1c01vbml0b3IpIHtcbiAgICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9lbGVtZW50UmVmLCBvcmlnaW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHJlc2V0cyB0aGUgcG9wb3ZlciB3aGVuIGl0J3MgY2xvc2VkLCBtb3N0IGltcG9ydGFudGx5IHJlc3RvcmluZ1xuICAgKiBmb2N1cyB0byB0aGUgcG9wb3ZlciB0cmlnZ2VyIGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cbiAgICovXG4gIHByaXZhdGUgX3Jlc2V0UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAvLyBXZSBzaG91bGQgcmVzZXQgZm9jdXMgaWYgdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB1c2luZyBhIGtleWJvYXJkIG9yXG4gICAgLy8gaWYgd2UgaGF2ZSBhIHRvcC1sZXZlbCB0cmlnZ2VyIHdoaWNoIG1pZ2h0IGNhdXNlIGZvY3VzIHRvIGJlIGxvc3RcbiAgICAvLyB3aGVuIGNsaWNraW5nIG9uIHRoZSBiYWNrZHJvcC5cbiAgICBpZiAodGhpcy5yZXN0b3JlRm9jdXMpIHtcbiAgICAgIGlmICghdGhpcy5fb3BlbmVkQnkpIHtcbiAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBmb2N1cyBzdHlsZSB3aWxsIHNob3cgdXAgYm90aCBmb3IgYHByb2dyYW1gIGFuZFxuICAgICAgICAvLyBga2V5Ym9hcmRgIHNvIHdlIGRvbid0IGhhdmUgdG8gc3BlY2lmeSB3aGljaCBvbmUgaXQgaXMuXG4gICAgICAgIHRoaXMuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX29wZW5lZEJ5ID0gbnVsbFxuICB9XG5cbiAgLyoqIFJldHVybnMgYSBzdHJlYW0gdGhhdCBlbWl0cyB3aGVuZXZlciBhbiBhY3Rpb24gdGhhdCBzaG91bGQgY2xvc2UgdGhlIHBvcG92ZXIgb2NjdXJzLiAqL1xuICBwcml2YXRlIF9wb3BvdmVyQ2xvc2luZ0FjdGlvbnMoKSB7XG4gICAgY29uc3QgYmFja2Ryb3AgPSB0aGlzLl9vdmVybGF5UmVmPy5iYWNrZHJvcENsaWNrKCkgPz8gb2YoKVxuICAgIGNvbnN0IGRldGFjaG1lbnRzID0gdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNobWVudHMoKSA/PyBvZigpXG4gICAgY29uc3QgaG92ZXIgPSBvZigpXG5cbiAgICByZXR1cm4gbWVyZ2UoYmFja2Ryb3AsIGhvdmVyLCBkZXRhY2htZW50cylcbiAgfVxuXG59XG4iXX0=
@@ -1,6 +1,3 @@
1
1
  export * from './table/table.component';
2
- export * from './table-column.component';
3
- export * from './table-cell-tpl.directive';
4
- export * from './table-column-header-tpl.directive';
5
2
  export * from './table.module';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMscUNBQXFDLENBQUE7QUFFbkQsY0FBYyxnQkFBZ0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFibGUvdGFibGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1jb2x1bW4uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1jZWxsLXRwbC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWNvbHVtbi1oZWFkZXItdHBsLmRpcmVjdGl2ZSdcblxuZXhwb3J0ICogZnJvbSAnLi90YWJsZS5tb2R1bGUnXG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUE7QUFFdkMsY0FBYyxnQkFBZ0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFibGUvdGFibGUuY29tcG9uZW50J1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLm1vZHVsZSdcbiJdfQ==
@@ -1,54 +1,17 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { coerceArray } from '@angular/cdk/coercion';
3
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
4
- import { merge, Subject, Subscription } from 'rxjs';
3
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
5
4
  import { InputBoolean } from '@theseam/ui-common/core';
6
- import { TheSeamTableColumnComponent } from '../table-column.component';
7
5
  import * as i0 from "@angular/core";
8
6
  import * as i1 from "@angular/platform-browser";
9
7
  import * as i2 from "@angular/common";
10
8
  import * as i3 from "@angular/cdk/table";
11
9
  import * as i4 from "@theseam/ui-common/table-cell-type";
12
- function mergeColumnsAndTplColumns(columns, tplColumns) {
13
- const newCols = [];
14
- for (const col of columns) {
15
- const newCol = {
16
- ...((typeof col === 'string') ? {
17
- prop: col,
18
- name: col,
19
- } : col),
20
- };
21
- const tplCol = tplColumns.find(c => c.prop === newCol.prop);
22
- // newCol.cellTypeConfig = tplCol?.cellTypeConfig
23
- if (tplCol) {
24
- if (tplCol.name !== undefined && tplCol.name !== null) {
25
- newCol.name = tplCol.name ?? undefined;
26
- }
27
- if (tplCol.cellTemplate !== undefined && tplCol.cellTemplate !== null) {
28
- newCol.cellTemplate = tplCol.cellTemplate ?? undefined;
29
- }
30
- if (tplCol.headerTemplate !== undefined && tplCol.headerTemplate !== null) {
31
- newCol.headerTemplate = tplCol.headerTemplate ?? undefined;
32
- }
33
- if (tplCol.cellClass !== undefined && tplCol.cellClass !== null) {
34
- newCol.cellClass = tplCol.cellClass ?? undefined;
35
- }
36
- if (tplCol.headerClass !== undefined && tplCol.headerClass !== null) {
37
- newCol.headerClass = tplCol.headerClass ?? undefined;
38
- }
39
- }
40
- newCols.push(newCol);
41
- }
42
- return newCols;
43
- }
44
10
  export class TableComponent {
45
11
  get columns() { return this._columns; }
46
12
  set columns(value) {
47
13
  this._columns = value;
48
- // this._setColumns(value || [])
49
- const cols = mergeColumnsAndTplColumns(value || [], this._columnComponents?.toArray() ?? []);
50
- // this._setColumns(cols)
51
- this._pendingColumns = cols;
14
+ this._setColumns(value || []);
52
15
  }
53
16
  get rows() { return this._rows; }
54
17
  set rows(value) {
@@ -63,56 +26,14 @@ export class TableComponent {
63
26
  }
64
27
  }
65
28
  get displayedRows() { return this._displayedRows; }
66
- set columnComponents(value) {
67
- // this._columnsManager.setTemplateColumns(translateTemplateColumns(value?.toArray() ?? []))
68
- this._columnComponents = value;
69
- if (value?.toArray().length === 0)
70
- return;
71
- const cols = mergeColumnsAndTplColumns(this._columns || [], value?.toArray() ?? []);
72
- // this._setColumns(cols)
73
- this._pendingColumns = cols;
74
- if (this._columnComponentChange)
75
- this._columnComponentChange.unsubscribe();
76
- const obsArr = value?.toArray().map(c => c.columnChange$);
77
- if (obsArr && obsArr.length > 0) {
78
- this._columnComponentChange = merge(obsArr).subscribe(() => {
79
- const _cols = mergeColumnsAndTplColumns(this._columns || [], value?.toArray() ?? []);
80
- // this._setColumns(_cols)
81
- this._pendingColumns = _cols;
82
- });
83
- }
84
- }
85
29
  constructor(_sanitizer) {
86
30
  this._sanitizer = _sanitizer;
87
- this._ngUnsubscribe = new Subject();
88
31
  this._rows = [];
89
32
  this._displayedRows = [];
90
33
  this.hasHeader = true;
91
- this.columnsChange = new EventEmitter();
92
34
  this.actionRefreshRequest = new EventEmitter();
93
- this._columnComponentChange = Subscription.EMPTY;
94
- }
95
- ngOnInit() {
96
- this._updateColumns();
97
- }
98
- ngAfterContentChecked() {
99
- this._updateColumns();
100
- }
101
- ngOnChanges(changes) {
102
- if (changes.columns) {
103
- this._updateColumns();
104
- }
105
- }
106
- _updateColumns() {
107
- const pending = this._pendingColumns;
108
- this._pendingColumns = undefined;
109
- if (pending) {
110
- this._setColumns(pending);
111
- }
112
35
  }
113
- // TODO: Improve column handling, like datatable, to avoid excessive updates.
114
36
  _setColumns(cols) {
115
- const prev = this.displayedRecords;
116
37
  const newCols = [];
117
38
  for (const col of cols) {
118
39
  if (typeof col === 'string') {
@@ -143,7 +64,6 @@ export class TableComponent {
143
64
  }
144
65
  this.displayedRecords = newCols;
145
66
  this.displayedColumns = newCols.map(c => c.prop);
146
- this.columnsChange.emit({ previous: prev, current: newCols });
147
67
  }
148
68
  triggerActionRefreshRequest() {
149
69
  this.actionRefreshRequest.emit(undefined);
@@ -153,13 +73,13 @@ export class TableComponent {
153
73
  }
154
74
  }
155
75
  TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TableComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
156
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TableComponent, selector: "seam-table", inputs: { columns: "columns", rows: "rows", trackBy: "trackBy", size: "size", hasHeader: "hasHeader" }, outputs: { columnsChange: "columnsChange", actionRefreshRequest: "actionRefreshRequest" }, queries: [{ propertyName: "columnComponents", predicate: TheSeamTableColumnComponent }], usesOnChanges: true, ngImport: i0, template: "<table cdk-table [dataSource]=\"displayedRows\" class=\"table table-header-divider-indented mb-0\"\n [class.table-striped]=\"rows && rows.length > 0\"\n [class.table-sm]=\"size === 'sm'\"\n [class.table-no-header]=\"!hasHeader\">\n <ng-container *ngFor=\"let r of displayedRecords; first as isFirst; trackBy:_trackByRecords\">\n <ng-container [cdkColumnDef]=\"r.prop\">\n <th cdk-header-cell *cdkHeaderCellDef [class]=\"r.headerClass\">\n <ng-container *ngIf=\"hasHeader\">\n <ng-container *ngIf=\"$any(r)?.headerTemplate; else noHeaderTpl\">\n <ng-template\n [ngTemplateOutlet]=\"$any(r)?.headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: r.name, prop: r.prop, column: r }\">\n </ng-template>\n </ng-container>\n <ng-template #noHeaderTpl>\n {{ r.name }}\n </ng-template>\n </ng-container>\n </th>\n <td cdk-cell *cdkCellDef=\"let element; index as rowIndex\"\n [attr.colspan]=\"element?._emptyDisplay && isFirst ? 2 : undefined\"\n [class]=\"element?._emptyDisplay ? undefined : r.cellClass\"\n [class.border-top-0]=\"element?._emptyDisplay && isFirst\"\n [class.d-none]=\"element?._emptyDisplay && !isFirst\"\n [style]=\"$any(r)?.cellTypeConfig?.styles\">\n\n <span [style]=\"$any(r)?.cellTypeConfig?.styles\"></span>\n\n <ng-container *ngIf=\"element?._emptyDisplay && isFirst; else hasDataTpl\">\n No records found\n </ng-container>\n\n <ng-template #hasDataTpl>\n <seam-table-cell-type-selector *ngIf=\"$any(r)?.cellType; else noCellType\"\n [type]=\"$any(r)?.cellType\"\n [value]=\"element[r.prop]\"\n [rowIndex]=\"rowIndex\"\n [row]=\"element\"\n [colData]=\"r\">\n </seam-table-cell-type-selector>\n <ng-template #noCellType>\n <ng-container *ngIf=\"$any(r)?.cellTemplate; else noCellTpl\">\n <ng-template\n [ngTemplateOutlet]=\"$any(r)?.cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: element[r.prop], row: element, rowIndex: rowIndex, column: r }\">\n </ng-template>\n </ng-container>\n </ng-template>\n <ng-template #noCellTpl>\n <div class=\"td-text-truncate\" [title]=\"element[r.prop]\">\n {{ element[r.prop] }}\n </div>\n </ng-template>\n </ng-template>\n\n </td>\n </ng-container>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"displayedColumns\"></tr>\n <tr cdk-row *cdkRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>\n", styles: [":host{display:block}:host .table-no-header ::ng-deep thead{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.CdkTable, selector: "cdk-table, table[cdk-table]", inputs: ["trackBy", "dataSource", "multiTemplateDataRows", "fixedLayout"], outputs: ["contentChanged"], exportAs: ["cdkTable"] }, { kind: "directive", type: i3.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "directive", type: i3.CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: i3.CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: i3.CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["sticky", "cdkColumnDef", "stickyEnd"] }, { kind: "directive", type: i3.CdkCell, selector: "cdk-cell, td[cdk-cell]" }, { kind: "component", type: i3.CdkRow, selector: "cdk-row, tr[cdk-row]" }, { kind: "directive", type: i3.CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "component", type: i3.CdkHeaderRow, selector: "cdk-header-row, tr[cdk-header-row]" }, { kind: "directive", type: i3.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "component", type: i4.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
76
+ TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TableComponent, selector: "seam-table", inputs: { columns: "columns", rows: "rows", trackBy: "trackBy", size: "size", hasHeader: "hasHeader" }, outputs: { actionRefreshRequest: "actionRefreshRequest" }, ngImport: i0, template: "<table cdk-table [dataSource]=\"displayedRows\" class=\"table table-header-divider-indented mb-0\"\n [class.table-striped]=\"rows && rows.length > 0\"\n [class.table-sm]=\"size === 'sm'\"\n [class.table-no-header]=\"!hasHeader\">\n <ng-container *ngFor=\"let r of displayedRecords; first as isFirst; trackBy:_trackByRecords\">\n <ng-container [cdkColumnDef]=\"r.prop\">\n <th cdk-header-cell *cdkHeaderCellDef>\n <ng-container *ngIf=\"hasHeader\">\n {{ r.name }}\n </ng-container>\n </th>\n <td cdk-cell *cdkCellDef=\"let element; index as rowIndex\"\n [attr.colspan]=\"element?._emptyDisplay && isFirst ? 2 : undefined\"\n [class.border-top-0]=\"element?._emptyDisplay && isFirst\"\n [class.d-none]=\"element?._emptyDisplay && !isFirst\"\n [style]=\"$any(r)?.cellTypeConfig?.styles\">\n\n <span [style]=\"$any(r)?.cellTypeConfig?.styles\"></span>\n\n <ng-container *ngIf=\"element?._emptyDisplay && isFirst; else hasDataTpl\">\n No records found\n </ng-container>\n\n <ng-template #hasDataTpl>\n <seam-table-cell-type-selector *ngIf=\"$any(r)?.cellType; else noCellType\"\n [type]=\"$any(r)?.cellType\"\n [value]=\"element[r.prop]\"\n [rowIndex]=\"rowIndex\"\n [row]=\"element\"\n [colData]=\"r\">\n </seam-table-cell-type-selector>\n <ng-template #noCellType>\n <div class=\"td-text-truncate\" [title]=\"element[r.prop]\">\n {{ element[r.prop] }}\n </div>\n </ng-template>\n </ng-template>\n\n </td>\n </ng-container>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"displayedColumns\"></tr>\n <tr cdk-row *cdkRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>\n", styles: [":host{display:block}:host .table-no-header ::ng-deep thead{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CdkTable, selector: "cdk-table, table[cdk-table]", inputs: ["trackBy", "dataSource", "multiTemplateDataRows", "fixedLayout"], outputs: ["contentChanged"], exportAs: ["cdkTable"] }, { kind: "directive", type: i3.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "directive", type: i3.CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: i3.CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: i3.CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["sticky", "cdkColumnDef", "stickyEnd"] }, { kind: "directive", type: i3.CdkCell, selector: "cdk-cell, td[cdk-cell]" }, { kind: "component", type: i3.CdkRow, selector: "cdk-row, tr[cdk-row]" }, { kind: "directive", type: i3.CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "component", type: i3.CdkHeaderRow, selector: "cdk-header-row, tr[cdk-header-row]" }, { kind: "directive", type: i3.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "component", type: i4.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
157
77
  __decorate([
158
78
  InputBoolean()
159
79
  ], TableComponent.prototype, "hasHeader", void 0);
160
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TableComponent, decorators: [{
161
81
  type: Component,
162
- args: [{ selector: 'seam-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table cdk-table [dataSource]=\"displayedRows\" class=\"table table-header-divider-indented mb-0\"\n [class.table-striped]=\"rows && rows.length > 0\"\n [class.table-sm]=\"size === 'sm'\"\n [class.table-no-header]=\"!hasHeader\">\n <ng-container *ngFor=\"let r of displayedRecords; first as isFirst; trackBy:_trackByRecords\">\n <ng-container [cdkColumnDef]=\"r.prop\">\n <th cdk-header-cell *cdkHeaderCellDef [class]=\"r.headerClass\">\n <ng-container *ngIf=\"hasHeader\">\n <ng-container *ngIf=\"$any(r)?.headerTemplate; else noHeaderTpl\">\n <ng-template\n [ngTemplateOutlet]=\"$any(r)?.headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: r.name, prop: r.prop, column: r }\">\n </ng-template>\n </ng-container>\n <ng-template #noHeaderTpl>\n {{ r.name }}\n </ng-template>\n </ng-container>\n </th>\n <td cdk-cell *cdkCellDef=\"let element; index as rowIndex\"\n [attr.colspan]=\"element?._emptyDisplay && isFirst ? 2 : undefined\"\n [class]=\"element?._emptyDisplay ? undefined : r.cellClass\"\n [class.border-top-0]=\"element?._emptyDisplay && isFirst\"\n [class.d-none]=\"element?._emptyDisplay && !isFirst\"\n [style]=\"$any(r)?.cellTypeConfig?.styles\">\n\n <span [style]=\"$any(r)?.cellTypeConfig?.styles\"></span>\n\n <ng-container *ngIf=\"element?._emptyDisplay && isFirst; else hasDataTpl\">\n No records found\n </ng-container>\n\n <ng-template #hasDataTpl>\n <seam-table-cell-type-selector *ngIf=\"$any(r)?.cellType; else noCellType\"\n [type]=\"$any(r)?.cellType\"\n [value]=\"element[r.prop]\"\n [rowIndex]=\"rowIndex\"\n [row]=\"element\"\n [colData]=\"r\">\n </seam-table-cell-type-selector>\n <ng-template #noCellType>\n <ng-container *ngIf=\"$any(r)?.cellTemplate; else noCellTpl\">\n <ng-template\n [ngTemplateOutlet]=\"$any(r)?.cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: element[r.prop], row: element, rowIndex: rowIndex, column: r }\">\n </ng-template>\n </ng-container>\n </ng-template>\n <ng-template #noCellTpl>\n <div class=\"td-text-truncate\" [title]=\"element[r.prop]\">\n {{ element[r.prop] }}\n </div>\n </ng-template>\n </ng-template>\n\n </td>\n </ng-container>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"displayedColumns\"></tr>\n <tr cdk-row *cdkRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>\n", styles: [":host{display:block}:host .table-no-header ::ng-deep thead{display:none}\n"] }]
82
+ args: [{ selector: 'seam-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table cdk-table [dataSource]=\"displayedRows\" class=\"table table-header-divider-indented mb-0\"\n [class.table-striped]=\"rows && rows.length > 0\"\n [class.table-sm]=\"size === 'sm'\"\n [class.table-no-header]=\"!hasHeader\">\n <ng-container *ngFor=\"let r of displayedRecords; first as isFirst; trackBy:_trackByRecords\">\n <ng-container [cdkColumnDef]=\"r.prop\">\n <th cdk-header-cell *cdkHeaderCellDef>\n <ng-container *ngIf=\"hasHeader\">\n {{ r.name }}\n </ng-container>\n </th>\n <td cdk-cell *cdkCellDef=\"let element; index as rowIndex\"\n [attr.colspan]=\"element?._emptyDisplay && isFirst ? 2 : undefined\"\n [class.border-top-0]=\"element?._emptyDisplay && isFirst\"\n [class.d-none]=\"element?._emptyDisplay && !isFirst\"\n [style]=\"$any(r)?.cellTypeConfig?.styles\">\n\n <span [style]=\"$any(r)?.cellTypeConfig?.styles\"></span>\n\n <ng-container *ngIf=\"element?._emptyDisplay && isFirst; else hasDataTpl\">\n No records found\n </ng-container>\n\n <ng-template #hasDataTpl>\n <seam-table-cell-type-selector *ngIf=\"$any(r)?.cellType; else noCellType\"\n [type]=\"$any(r)?.cellType\"\n [value]=\"element[r.prop]\"\n [rowIndex]=\"rowIndex\"\n [row]=\"element\"\n [colData]=\"r\">\n </seam-table-cell-type-selector>\n <ng-template #noCellType>\n <div class=\"td-text-truncate\" [title]=\"element[r.prop]\">\n {{ element[r.prop] }}\n </div>\n </ng-template>\n </ng-template>\n\n </td>\n </ng-container>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"displayedColumns\"></tr>\n <tr cdk-row *cdkRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>\n", styles: [":host{display:block}:host .table-no-header ::ng-deep thead{display:none}\n"] }]
163
83
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { columns: [{
164
84
  type: Input
165
85
  }], rows: [{
@@ -170,12 +90,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
170
90
  type: Input
171
91
  }], hasHeader: [{
172
92
  type: Input
173
- }], columnsChange: [{
174
- type: Output
175
93
  }], actionRefreshRequest: [{
176
94
  type: Output
177
- }], columnComponents: [{
178
- type: ContentChildren,
179
- args: [TheSeamTableColumnComponent]
180
95
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLEVBQXVCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUF5QyxNQUFNLGVBQWUsQ0FBQTtBQUUvTCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRXRELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFBOzs7Ozs7QUF1QnZFLFNBQVMseUJBQXlCLENBQUMsT0FBa0MsRUFBRSxVQUF5QztJQUM5RyxNQUFNLE9BQU8sR0FBbUIsRUFBRSxDQUFBO0lBRWxDLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ3pCLE1BQU0sTUFBTSxHQUFpQjtZQUMzQixHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksRUFBRSxHQUFHO2dCQUNULElBQUksRUFBRSxHQUFHO2FBQ1YsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQ1gsQ0FBQTtRQUNELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FB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LGdCQUFnQjtzQkFEbkIsZUFBZTt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInXG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbmltcG9ydCB7IFRoZVNlYW1UYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5cbi8qKlxuICogQW4gb3B0aW9uYWwgZnVuY3Rpb24gcGFzc2VkIGludG8gdGhlIGBOZ0Zvck9mYCBkaXJlY3RpdmUgdGhhdCBkZWZpbmVzIGhvdyB0byB0cmFja1xuICogY2hhbmdlcyBmb3IgaXRlbXMgaW4gYW4gaXRlcmFibGUuXG4gKiBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIGl0ZXJhdGlvbiBpbmRleCBhbmQgaXRlbSBJRC5cbiAqIFdoZW4gc3VwcGxpZWQsIEFuZ3VsYXIgdHJhY2tzIGNoYW5nZXMgYnkgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXG4gKlxuICogTk9URTogQ2FuJ3QgaW1wb3J0IHRoZSB0eXBlIGZyb20nQGFuZ3VsYXIvY29yZScsIGJlY2F1c2Ugb2YgYSBidWcgaW4gYW5ndWxhci1jbGknc1xuICogYnVpbGQgdGhhdCBjYW4ndCBmaW5kIGV4cG9ydGVkIHR5cGVzIHRoYXQgb25seSBleGlzdCBhdCBjb21waWxlIHRpbWUgaWYgdGhlcmVcbiAqIGFyZSBleHBvcnRzIHRoYXQgZXhpc3QgYXQgcnVudGltZSBpbiB0aGUgc2FtZSBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBUcmFja0J5RnVuY3Rpb248VD4gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4gYW55XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1uIHtcbiAgcHJvcDogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgY2VsbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PlxuICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT5cbiAgY2VsbENsYXNzPzogc3RyaW5nIC8vIHwgKChkYXRhOiBhbnkpID0+IHN0cmluZyB8IGFueSlcbiAgaGVhZGVyQ2xhc3M/OiBzdHJpbmcgLy8gfCAoKGRhdGE6IGFueSkgPT4gc3RyaW5nIHwgYW55KVxufVxuXG5mdW5jdGlvbiBtZXJnZUNvbHVtbnNBbmRUcGxDb2x1bW5zKGNvbHVtbnM6IChzdHJpbmcgfCBJVGFibGVDb2x1bW4pW10sIHRwbENvbHVtbnM6IFRoZVNlYW1UYWJsZUNvbHVtbkNvbXBvbmVudFtdKTogSVRhYmxlQ29sdW1uW10ge1xuICBjb25zdCBuZXdDb2xzOiBJVGFibGVDb2x1bW5bXSA9IFtdXG5cbiAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xuICAgIGNvbnN0IG5ld0NvbDogSVRhYmxlQ29sdW1uID0ge1xuICAgICAgLi4uKCh0eXBlb2YgY29sID09PSAnc3RyaW5nJykgPyB7XG4gICAgICAgICAgcHJvcDogY29sLFxuICAgICAgICAgIG5hbWU6IGNvbCxcbiAgICAgICAgfSA6IGNvbCksXG4gICAgfVxuICAgIGNvbnN0IHRwbENvbCA9IHRwbENvbHVtbnMuZmluZChjID0+IGMucHJvcCA9PT0gbmV3Q29sLnByb3ApXG4gICAgLy8gbmV3Q29sLmNlbGxUeXBlQ29uZmlnID0gdHBsQ29sPy5jZWxsVHlwZUNvbmZpZ1xuICAgIGlmICh0cGxDb2wpIHtcbiAgICAgIGlmICh0cGxDb2wubmFtZSAhPT0gdW5kZWZpbmVkICYmIHRwbENvbC5uYW1lICE9PSBudWxsKSB7XG4gICAgICAgIG5ld0NvbC5uYW1lID0gdHBsQ29sLm5hbWUgPz8gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBpZiAodHBsQ29sLmNlbGxUZW1wbGF0ZSAhPT0gdW5kZWZpbmVkICYmIHRwbENvbC5jZWxsVGVtcGxhdGUgIT09IG51bGwpIHtcbiAgICAgICAgbmV3Q29sLmNlbGxUZW1wbGF0ZSA9IHRwbENvbC5jZWxsVGVtcGxhdGUgPz8gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBpZiAodHBsQ29sLmhlYWRlclRlbXBsYXRlICE9PSB1bmRlZmluZWQgJiYgdHBsQ29sLmhlYWRlclRlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgIG5ld0NvbC5oZWFkZXJUZW1wbGF0ZSA9IHRwbENvbC5oZWFkZXJUZW1wbGF0ZSA/PyB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGlmICh0cGxDb2wuY2VsbENsYXNzICE9PSB1bmRlZmluZWQgJiYgdHBsQ29sLmNlbGxDbGFzcyAhPT0gbnVsbCkge1xuICAgICAgICBuZXdDb2wuY2VsbENsYXNzID0gdHBsQ29sLmNlbGxDbGFzcyA/PyB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGlmICh0cGxDb2wuaGVhZGVyQ2xhc3MgIT09IHVuZGVmaW5lZCAmJiB0cGxDb2wuaGVhZGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICAgICAgbmV3Q29sLmhlYWRlckNsYXNzID0gdHBsQ29sLmhlYWRlckNsYXNzID8/IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cblxuICAgIG5ld0NvbHMucHVzaChuZXdDb2wpXG4gIH1cblxuICByZXR1cm4gbmV3Q29sc1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQ8VCA9IGFueT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oYXNIZWFkZXI6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5zIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IChzdHJpbmcgfCBJVGFibGVDb2x1bW4pW10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IHZhbHVlXG4gICAgLy8gdGhpcy5fc2V0Q29sdW1ucyh2YWx1ZSB8fCBbXSlcbiAgICBjb25zdCBjb2xzID0gbWVyZ2VDb2x1bW5zQW5kVHBsQ29sdW1ucyh2YWx1ZSB8fCBbXSwgdGhpcy5fY29sdW1uQ29tcG9uZW50cz8udG9BcnJheSgpID8/IFtdKVxuICAgIC8vIHRoaXMuX3NldENvbHVtbnMoY29scylcbiAgICB0aGlzLl9wZW5kaW5nQ29sdW1ucyA9IGNvbHNcbiAgfVxuICBwcml2YXRlIF9jb2x1bW5zOiAoc3RyaW5nIHwgSVRhYmxlQ29sdW1uKVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpXG4gIGdldCByb3dzKCk6IFRbXSB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5fcm93cyB9XG4gIHNldCByb3dzKHZhbHVlOiBUW10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fcm93cyA9IHZhbHVlID8gY29lcmNlQXJyYXkodmFsdWUpIDogW11cblxuICAgIGlmICh0aGlzLl9yb3dzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRoaXMuX2Rpc3BsYXllZFJvd3MgPSBbXG4gICAgICAgIHsgX2VtcHR5RGlzcGxheTogdHJ1ZSB9IGFzIGFueVxuICAgICAgXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNwbGF5ZWRSb3dzID0gdGhpcy5fcm93c1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9yb3dzOiBUW10gfCB1bmRlZmluZWQgfCBudWxsID0gW11cblxuICBnZXQgZGlzcGxheWVkUm93cygpIHsgcmV0dXJuIHRoaXMuX2Rpc3BsYXllZFJvd3MgfVxuICBwcml2YXRlIF9kaXNwbGF5ZWRSb3dzOiBUW10gJiB7IF9jb2xTcGFuPzogbnVtYmVyIH0gPSBbXVxuXG4gIEBJbnB1dCgpIHRyYWNrQnk6IFRyYWNrQnlGdW5jdGlvbjxUPiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgaGFzSGVhZGVyID0gdHJ1ZVxuXG4gIHByaXZhdGUgX3BlbmRpbmdDb2x1bW5zPzogSVRhYmxlQ29sdW1uW11cblxuICBwdWJsaWMgZGlzcGxheWVkUmVjb3Jkcz86IElUYWJsZUNvbHVtbltdXG4gIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zPzogc3RyaW5nW11cblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgY29sdW1uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwcmV2aW91czogSVRhYmxlQ29sdW1uW10gfCB1bmRlZmluZWQsIGN1cnJlbnQ6IElUYWJsZUNvbHVtbltdIH0+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGlvblJlZnJlc2hSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgQENvbnRlbnRDaGlsZHJlbihUaGVTZWFtVGFibGVDb2x1bW5Db21wb25lbnQpXG4gIHNldCBjb2x1bW5Db21wb25lbnRzKHZhbHVlOiBRdWVyeUxpc3Q8VGhlU2VhbVRhYmxlQ29sdW1uQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIC8vIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldFRlbXBsYXRlQ29sdW1ucyh0cmFuc2xhdGVUZW1wbGF0ZUNvbHVtbnModmFsdWU/LnRvQXJyYXkoKSA/PyBbXSkpXG4gICAgdGhpcy5fY29sdW1uQ29tcG9uZW50cyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlPy50b0FycmF5KCkubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgICBjb25zdCBjb2xzID0gbWVyZ2VDb2x1bW5zQW5kVHBsQ29sdW1ucyh0aGlzLl9jb2x1bW5zIHx8IFtdLCB2YWx1ZT8udG9BcnJheSgpID8/IFtdKVxuICAgIC8vIHRoaXMuX3NldENvbHVtbnMoY29scylcbiAgICB0aGlzLl9wZW5kaW5nQ29sdW1ucyA9IGNvbHNcblxuICAgIGlmICh0aGlzLl9jb2x1bW5Db21wb25lbnRDaGFuZ2UpIHRoaXMuX2NvbHVtbkNvbXBvbmVudENoYW5nZS51bnN1YnNjcmliZSgpXG4gICAgY29uc3Qgb2JzQXJyID0gdmFsdWU/LnRvQXJyYXkoKS5tYXAoYyA9PiBjLmNvbHVtbkNoYW5nZSQpXG4gICAgaWYgKG9ic0FyciAmJiBvYnNBcnIubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fY29sdW1uQ29tcG9uZW50Q2hhbmdlID0gbWVyZ2Uob2JzQXJyKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBfY29scyA9IG1lcmdlQ29sdW1uc0FuZFRwbENvbHVtbnModGhpcy5fY29sdW1ucyB8fCBbXSwgdmFsdWU/LnRvQXJyYXkoKSA/PyBbXSlcbiAgICAgICAgLy8gdGhpcy5fc2V0Q29sdW1ucyhfY29scylcbiAgICAgICAgdGhpcy5fcGVuZGluZ0NvbHVtbnMgPSBfY29sc1xuICAgICAgfSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY29sdW1uQ29tcG9uZW50czogUXVlcnlMaXN0PFRoZVNlYW1UYWJsZUNvbHVtbkNvbXBvbmVudD4gfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfY29sdW1uQ29tcG9uZW50Q2hhbmdlID0gU3Vic2NyaXB0aW9uLkVNUFRZXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl91cGRhdGVDb2x1bW5zKClcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICB0aGlzLl91cGRhdGVDb2x1bW5zKClcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jb2x1bW5zKSB7XG4gICAgICB0aGlzLl91cGRhdGVDb2x1bW5zKClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVDb2x1bW5zKCkge1xuICAgIGNvbnN0IHBlbmRpbmcgPSB0aGlzLl9wZW5kaW5nQ29sdW1uc1xuICAgIHRoaXMuX3BlbmRpbmdDb2x1bW5zID0gdW5kZWZpbmVkXG4gICAgaWYgKHBlbmRpbmcpIHtcbiAgICAgIHRoaXMuX3NldENvbHVtbnMocGVuZGluZylcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiBJbXByb3ZlIGNvbHVtbiBoYW5kbGluZywgbGlrZSBkYXRhdGFibGUsIHRvIGF2b2lkIGV4Y2Vzc2l2ZSB1cGRhdGVzLlxuICBwcml2YXRlIF9zZXRDb2x1bW5zKGNvbHM6IChzdHJpbmcgfCBJVGFibGVDb2x1bW4pW10pIHtcbiAgICBjb25zdCBwcmV2ID0gdGhpcy5kaXNwbGF5ZWRSZWNvcmRzXG4gICAgY29uc3QgbmV3Q29sczogSVRhYmxlQ29sdW1uW10gPSBbXVxuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKHR5cGVvZiBjb2wgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbDogSVRhYmxlQ29sdW1uID0ge1xuICAgICAgICAgIHByb3A6IGNvbCxcbiAgICAgICAgICBuYW1lOiBjb2xcbiAgICAgICAgfVxuICAgICAgICBuZXdDb2xzLnB1c2gobmV3Q29sKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG5hbWUgPSBjb2wubmFtZVxuICAgICAgICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkIHx8IG5hbWUgPT09IG51bGwpIHtcbiAgICAgICAgICBuYW1lID0gY29sLnByb3BcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDb2w6IElUYWJsZUNvbHVtbiA9IHtcbiAgICAgICAgICAuLi5jb2wsXG4gICAgICAgICAgcHJvcDogY29sLnByb3AsXG4gICAgICAgICAgbmFtZVxuICAgICAgICB9XG4gICAgICAgIG5ld0NvbHMucHVzaChuZXdDb2wpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgbmV3Q29scykge1xuICAgICAgY29uc3QgX2NvbCA9IGNvbCBhcyBhbnlcbiAgICAgIGlmIChfY29sICYmIF9jb2wuY2VsbFR5cGVDb25maWcgJiYgX2NvbC5jZWxsVHlwZUNvbmZpZy5zdHlsZXMpIHtcbiAgICAgICAgX2NvbC5jZWxsVHlwZUNvbmZpZy5zdHlsZXMgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKF9jb2wuY2VsbFR5cGVDb25maWcuc3R5bGVzKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkUmVjb3JkcyA9IG5ld0NvbHNcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBuZXdDb2xzLm1hcChjID0+IGMucHJvcClcbiAgICB0aGlzLmNvbHVtbnNDaGFuZ2UuZW1pdCh7IHByZXZpb3VzOiBwcmV2LCBjdXJyZW50OiBuZXdDb2xzIH0pXG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlckFjdGlvblJlZnJlc2hSZXF1ZXN0KCkge1xuICAgIHRoaXMuYWN0aW9uUmVmcmVzaFJlcXVlc3QuZW1pdCh1bmRlZmluZWQpXG4gIH1cblxuICBfdHJhY2tCeVJlY29yZHMocjogYW55KSB7XG4gICAgcmV0dXJuIHIucHJvcCArIHIubmFtZVxuICB9XG5cbn1cbiIsIjx0YWJsZSBjZGstdGFibGUgW2RhdGFTb3VyY2VdPVwiZGlzcGxheWVkUm93c1wiIGNsYXNzPVwidGFibGUgdGFibGUtaGVhZGVyLWRpdmlkZXItaW5kZW50ZWQgbWItMFwiXG4gIFtjbGFzcy50YWJsZS1zdHJpcGVkXT1cInJvd3MgJiYgcm93cy5sZW5ndGggPiAwXCJcbiAgW2NsYXNzLnRhYmxlLXNtXT1cInNpemUgPT09ICdzbSdcIlxuICBbY2xhc3MudGFibGUtbm8taGVhZGVyXT1cIiFoYXNIZWFkZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgciBvZiBkaXNwbGF5ZWRSZWNvcmRzOyBmaXJzdCBhcyBpc0ZpcnN0OyB0cmFja0J5Ol90cmFja0J5UmVjb3Jkc1wiPlxuICAgIDxuZy1jb250YWluZXIgW2Nka0NvbHVtbkRlZl09XCJyLnByb3BcIj5cbiAgICAgIDx0aCBjZGstaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW2NsYXNzXT1cInIuaGVhZGVyQ2xhc3NcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0hlYWRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIkYW55KHIpPy5oZWFkZXJUZW1wbGF0ZTsgZWxzZSBub0hlYWRlclRwbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkocik/LmhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByLm5hbWUsIHByb3A6IHIucHJvcCwgY29sdW1uOiByIH1cIj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0hlYWRlclRwbD5cbiAgICAgICAgICAgIHt7IHIubmFtZSB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBjZGstY2VsbCAqY2RrQ2VsbERlZj1cImxldCBlbGVtZW50OyBpbmRleCBhcyByb3dJbmRleFwiXG4gICAgICAgIFthdHRyLmNvbHNwYW5dPVwiZWxlbWVudD8uX2VtcHR5RGlzcGxheSAmJiBpc0ZpcnN0ID8gMiA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtjbGFzc109XCJlbGVtZW50Py5fZW1wdHlEaXNwbGF5ID8gdW5kZWZpbmVkIDogci5jZWxsQ2xhc3NcIlxuICAgICAgICBbY2xhc3MuYm9yZGVyLXRvcC0wXT1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdFwiXG4gICAgICAgIFtjbGFzcy5kLW5vbmVdPVwiZWxlbWVudD8uX2VtcHR5RGlzcGxheSAmJiAhaXNGaXJzdFwiXG4gICAgICAgIFtzdHlsZV09XCIkYW55KHIpPy5jZWxsVHlwZUNvbmZpZz8uc3R5bGVzXCI+XG5cbiAgICAgICAgPHNwYW4gW3N0eWxlXT1cIiRhbnkocik/LmNlbGxUeXBlQ29uZmlnPy5zdHlsZXNcIj48L3NwYW4+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdDsgZWxzZSBoYXNEYXRhVHBsXCI+XG4gICAgICAgICAgTm8gcmVjb3JkcyBmb3VuZFxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2hhc0RhdGFUcGw+XG4gICAgICAgICAgPHNlYW0tdGFibGUtY2VsbC10eXBlLXNlbGVjdG9yICpuZ0lmPVwiJGFueShyKT8uY2VsbFR5cGU7IGVsc2Ugbm9DZWxsVHlwZVwiXG4gICAgICAgICAgICBbdHlwZV09XCIkYW55KHIpPy5jZWxsVHlwZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZWxlbWVudFtyLnByb3BdXCJcbiAgICAgICAgICAgIFtyb3dJbmRleF09XCJyb3dJbmRleFwiXG4gICAgICAgICAgICBbcm93XT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgW2NvbERhdGFdPVwiclwiPlxuICAgICAgICAgIDwvc2VhbS10YWJsZS1jZWxsLXR5cGUtc2VsZWN0b3I+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0NlbGxUeXBlPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiRhbnkocik/LmNlbGxUZW1wbGF0ZTsgZWxzZSBub0NlbGxUcGxcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShyKT8uY2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGVsZW1lbnRbci5wcm9wXSwgcm93OiBlbGVtZW50LCByb3dJbmRleDogcm93SW5kZXgsIGNvbHVtbjogciB9XCI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DZWxsVHBsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkLXRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiZWxlbWVudFtyLnByb3BdXCI+XG4gICAgICAgICAgICAgIHt7IGVsZW1lbnRbci5wcm9wXSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHRyIGNkay1oZWFkZXItcm93ICpjZGtIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgPHRyIGNkay1yb3cgKmNka1Jvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbjwvdGFibGU+XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTs7Ozs7O0FBeUJ0RCxNQUFNLE9BQU8sY0FBYztJQUd6QixJQUNJLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFDO0lBQ3RDLElBQUksT0FBTyxDQUFDLEtBQW1EO1FBQzdELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFHRCxJQUNJLElBQUksS0FBNkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUN4RCxJQUFJLElBQUksQ0FBQyxLQUE2QjtRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFNUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRztnQkFDcEIsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFTO2FBQy9CLENBQUE7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1NBQ2pDO0lBQ0gsQ0FBQztJQUdELElBQUksYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQSxDQUFDLENBQUM7SUFjbEQsWUFDbUIsVUFBd0I7UUFBeEIsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQWpCbkMsVUFBSyxHQUEyQixFQUFFLENBQUE7UUFHbEMsbUJBQWMsR0FBZ0MsRUFBRSxDQUFBO1FBTS9CLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFLdEIseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtJQUk5RCxDQUFDO0lBRUcsV0FBVyxDQUFDLElBQStCO1FBQ2pELE1BQU0sT0FBTyxHQUFtQixFQUFFLENBQUE7UUFFbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQzNCLE1BQU0sTUFBTSxHQUFpQjtvQkFDM0IsSUFBSSxFQUFFLEdBQUc7b0JBQ1QsSUFBSSxFQUFFLEdBQUc7aUJBQ1YsQ0FBQTtnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQ3JCO2lCQUFNO2dCQUNMLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7Z0JBQ25CLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUN2QyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtpQkFDaEI7Z0JBQ0QsTUFBTSxNQUFNLEdBQWlCO29CQUMzQixHQUFHLEdBQUc7b0JBQ04sSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUNkLElBQUk7aUJBQ0wsQ0FBQTtnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQ3JCO1NBQ0Y7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRTtZQUN6QixNQUFNLElBQUksR0FBRyxHQUFVLENBQUE7WUFDdkIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRTtnQkFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQ2xHO1NBQ0Y7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFBO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFTSwyQkFBMkI7UUFDaEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQU07UUFDcEIsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDeEIsQ0FBQzs7MkdBckZVLGNBQWM7K0ZBQWQsY0FBYyxxTkM3QjNCLG16REE2Q0E7QURpQjJCO0lBQWYsWUFBWSxFQUFFO2lEQUFpQjsyRkFqQzlCLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNO21HQU0zQyxPQUFPO3NCQURWLEtBQUs7Z0JBU0YsSUFBSTtzQkFEUCxLQUFLO2dCQWtCRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVtQixTQUFTO3NCQUFqQyxLQUFLO2dCQUthLG9CQUFvQjtzQkFBdEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlcidcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbi8qKlxuICogQW4gb3B0aW9uYWwgZnVuY3Rpb24gcGFzc2VkIGludG8gdGhlIGBOZ0Zvck9mYCBkaXJlY3RpdmUgdGhhdCBkZWZpbmVzIGhvdyB0byB0cmFja1xuICogY2hhbmdlcyBmb3IgaXRlbXMgaW4gYW4gaXRlcmFibGUuXG4gKiBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIGl0ZXJhdGlvbiBpbmRleCBhbmQgaXRlbSBJRC5cbiAqIFdoZW4gc3VwcGxpZWQsIEFuZ3VsYXIgdHJhY2tzIGNoYW5nZXMgYnkgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXG4gKlxuICogTk9URTogQ2FuJ3QgaW1wb3J0IHRoZSB0eXBlIGZyb20nQGFuZ3VsYXIvY29yZScsIGJlY2F1c2Ugb2YgYSBidWcgaW4gYW5ndWxhci1jbGknc1xuICogYnVpbGQgdGhhdCBjYW4ndCBmaW5kIGV4cG9ydGVkIHR5cGVzIHRoYXQgb25seSBleGlzdCBhdCBjb21waWxlIHRpbWUgaWYgdGhlcmVcbiAqIGFyZSBleHBvcnRzIHRoYXQgZXhpc3QgYXQgcnVudGltZSBpbiB0aGUgc2FtZSBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBUcmFja0J5RnVuY3Rpb248VD4gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4gYW55XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1uIHtcbiAgcHJvcDogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgPSBhbnk+IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hhc0hlYWRlcjogQm9vbGVhbklucHV0XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5zIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IChzdHJpbmcgfCBJVGFibGVDb2x1bW4pW10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IHZhbHVlXG4gICAgdGhpcy5fc2V0Q29sdW1ucyh2YWx1ZSB8fCBbXSlcbiAgfVxuICBwcml2YXRlIF9jb2x1bW5zOiAoc3RyaW5nIHwgSVRhYmxlQ29sdW1uKVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpXG4gIGdldCByb3dzKCk6IFRbXSB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5fcm93cyB9XG4gIHNldCByb3dzKHZhbHVlOiBUW10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fcm93cyA9IHZhbHVlID8gY29lcmNlQXJyYXkodmFsdWUpIDogW11cblxuICAgIGlmICh0aGlzLl9yb3dzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRoaXMuX2Rpc3BsYXllZFJvd3MgPSBbXG4gICAgICAgIHsgX2VtcHR5RGlzcGxheTogdHJ1ZSB9IGFzIGFueVxuICAgICAgXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNwbGF5ZWRSb3dzID0gdGhpcy5fcm93c1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9yb3dzOiBUW10gfCB1bmRlZmluZWQgfCBudWxsID0gW11cblxuICBnZXQgZGlzcGxheWVkUm93cygpIHsgcmV0dXJuIHRoaXMuX2Rpc3BsYXllZFJvd3MgfVxuICBwcml2YXRlIF9kaXNwbGF5ZWRSb3dzOiBUW10gJiB7IF9jb2xTcGFuPzogbnVtYmVyIH0gPSBbXVxuXG4gIEBJbnB1dCgpIHRyYWNrQnk6IFRyYWNrQnlGdW5jdGlvbjxUPiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgaGFzSGVhZGVyID0gdHJ1ZVxuXG4gIHB1YmxpYyBkaXNwbGF5ZWRSZWNvcmRzPzogSVRhYmxlQ29sdW1uW11cbiAgcHVibGljIGRpc3BsYXllZENvbHVtbnM/OiBzdHJpbmdbXVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBhY3Rpb25SZWZyZXNoUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkgeyB9XG5cbiAgcHJpdmF0ZSBfc2V0Q29sdW1ucyhjb2xzOiAoc3RyaW5nIHwgSVRhYmxlQ29sdW1uKVtdKSB7XG4gICAgY29uc3QgbmV3Q29sczogSVRhYmxlQ29sdW1uW10gPSBbXVxuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKHR5cGVvZiBjb2wgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbDogSVRhYmxlQ29sdW1uID0ge1xuICAgICAgICAgIHByb3A6IGNvbCxcbiAgICAgICAgICBuYW1lOiBjb2xcbiAgICAgICAgfVxuICAgICAgICBuZXdDb2xzLnB1c2gobmV3Q29sKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG5hbWUgPSBjb2wubmFtZVxuICAgICAgICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkIHx8IG5hbWUgPT09IG51bGwpIHtcbiAgICAgICAgICBuYW1lID0gY29sLnByb3BcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDb2w6IElUYWJsZUNvbHVtbiA9IHtcbiAgICAgICAgICAuLi5jb2wsXG4gICAgICAgICAgcHJvcDogY29sLnByb3AsXG4gICAgICAgICAgbmFtZVxuICAgICAgICB9XG4gICAgICAgIG5ld0NvbHMucHVzaChuZXdDb2wpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgbmV3Q29scykge1xuICAgICAgY29uc3QgX2NvbCA9IGNvbCBhcyBhbnlcbiAgICAgIGlmIChfY29sICYmIF9jb2wuY2VsbFR5cGVDb25maWcgJiYgX2NvbC5jZWxsVHlwZUNvbmZpZy5zdHlsZXMpIHtcbiAgICAgICAgX2NvbC5jZWxsVHlwZUNvbmZpZy5zdHlsZXMgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKF9jb2wuY2VsbFR5cGVDb25maWcuc3R5bGVzKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkUmVjb3JkcyA9IG5ld0NvbHNcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBuZXdDb2xzLm1hcChjID0+IGMucHJvcClcbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKSB7XG4gICAgdGhpcy5hY3Rpb25SZWZyZXNoUmVxdWVzdC5lbWl0KHVuZGVmaW5lZClcbiAgfVxuXG4gIF90cmFja0J5UmVjb3JkcyhyOiBhbnkpIHtcbiAgICByZXR1cm4gci5wcm9wICsgci5uYW1lXG4gIH1cblxufVxuIiwiPHRhYmxlIGNkay10YWJsZSBbZGF0YVNvdXJjZV09XCJkaXNwbGF5ZWRSb3dzXCIgY2xhc3M9XCJ0YWJsZSB0YWJsZS1oZWFkZXItZGl2aWRlci1pbmRlbnRlZCBtYi0wXCJcbiAgW2NsYXNzLnRhYmxlLXN0cmlwZWRdPVwicm93cyAmJiByb3dzLmxlbmd0aCA+IDBcIlxuICBbY2xhc3MudGFibGUtc21dPVwic2l6ZSA9PT0gJ3NtJ1wiXG4gIFtjbGFzcy50YWJsZS1uby1oZWFkZXJdPVwiIWhhc0hlYWRlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByIG9mIGRpc3BsYXllZFJlY29yZHM7IGZpcnN0IGFzIGlzRmlyc3Q7IHRyYWNrQnk6X3RyYWNrQnlSZWNvcmRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbY2RrQ29sdW1uRGVmXT1cInIucHJvcFwiPlxuICAgICAgPHRoIGNkay1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0hlYWRlclwiPlxuICAgICAgICAgIHt7IHIubmFtZSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgY2RrLWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgZWxlbWVudDsgaW5kZXggYXMgcm93SW5kZXhcIlxuICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdCA/IDIgOiB1bmRlZmluZWRcIlxuICAgICAgICBbY2xhc3MuYm9yZGVyLXRvcC0wXT1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdFwiXG4gICAgICAgIFtjbGFzcy5kLW5vbmVdPVwiZWxlbWVudD8uX2VtcHR5RGlzcGxheSAmJiAhaXNGaXJzdFwiXG4gICAgICAgIFtzdHlsZV09XCIkYW55KHIpPy5jZWxsVHlwZUNvbmZpZz8uc3R5bGVzXCI+XG5cbiAgICAgICAgPHNwYW4gW3N0eWxlXT1cIiRhbnkocik/LmNlbGxUeXBlQ29uZmlnPy5zdHlsZXNcIj48L3NwYW4+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdDsgZWxzZSBoYXNEYXRhVHBsXCI+XG4gICAgICAgICAgTm8gcmVjb3JkcyBmb3VuZFxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2hhc0RhdGFUcGw+XG4gICAgICAgICAgPHNlYW0tdGFibGUtY2VsbC10eXBlLXNlbGVjdG9yICpuZ0lmPVwiJGFueShyKT8uY2VsbFR5cGU7IGVsc2Ugbm9DZWxsVHlwZVwiXG4gICAgICAgICAgICBbdHlwZV09XCIkYW55KHIpPy5jZWxsVHlwZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZWxlbWVudFtyLnByb3BdXCJcbiAgICAgICAgICAgIFtyb3dJbmRleF09XCJyb3dJbmRleFwiXG4gICAgICAgICAgICBbcm93XT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgW2NvbERhdGFdPVwiclwiPlxuICAgICAgICAgIDwvc2VhbS10YWJsZS1jZWxsLXR5cGUtc2VsZWN0b3I+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0NlbGxUeXBlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkLXRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiZWxlbWVudFtyLnByb3BdXCI+XG4gICAgICAgICAgICAgIHt7IGVsZW1lbnRbci5wcm9wXSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHRyIGNkay1oZWFkZXItcm93ICpjZGtIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgPHRyIGNkay1yb3cgKmNka1Jvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbjwvdGFibGU+XG4iXX0=
@@ -3,26 +3,16 @@ import { CommonModule } from '@angular/common';
3
3
  import { NgModule } from '@angular/core';
4
4
  import { TheSeamTableCellTypeModule } from '@theseam/ui-common/table-cell-type';
5
5
  import { TableComponent } from './table/table.component';
6
- import { TheSeamTableColumnComponent } from './table-column.component';
7
- import { TheSeamTableCellTplDirective } from './table-cell-tpl.directive';
8
- import { TheSeamTableColumnHeaderTplDirective } from './table-column-header-tpl.directive';
9
6
  import * as i0 from "@angular/core";
10
7
  export class TheSeamTableModule {
11
8
  }
12
9
  TheSeamTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
10
  TheSeamTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTableModule, declarations: [TableComponent], imports: [CommonModule,
14
11
  CdkTableModule,
15
- TheSeamTableCellTypeModule,
16
- TheSeamTableColumnComponent,
17
- TheSeamTableCellTplDirective,
18
- TheSeamTableColumnHeaderTplDirective], exports: [TableComponent,
19
- TheSeamTableColumnComponent,
20
- TheSeamTableCellTplDirective,
21
- TheSeamTableColumnHeaderTplDirective] });
12
+ TheSeamTableCellTypeModule], exports: [TableComponent] });
22
13
  TheSeamTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTableModule, imports: [CommonModule,
23
14
  CdkTableModule,
24
- TheSeamTableCellTypeModule,
25
- TheSeamTableColumnComponent] });
15
+ TheSeamTableCellTypeModule] });
26
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTableModule, decorators: [{
27
17
  type: NgModule,
28
18
  args: [{
@@ -32,17 +22,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
32
22
  imports: [
33
23
  CommonModule,
34
24
  CdkTableModule,
35
- TheSeamTableCellTypeModule,
36
- TheSeamTableColumnComponent,
37
- TheSeamTableCellTplDirective,
38
- TheSeamTableColumnHeaderTplDirective,
25
+ TheSeamTableCellTypeModule
39
26
  ],
40
27
  exports: [
41
- TableComponent,
42
- TheSeamTableColumnComponent,
43
- TheSeamTableCellTplDirective,
44
- TheSeamTableColumnHeaderTplDirective,
28
+ TableComponent
45
29
  ]
46
30
  }]
47
31
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlL3RhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFeEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3hELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3RFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHFDQUFxQyxDQUFBOztBQXFCMUYsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQWpCM0IsY0FBYyxhQUdkLFlBQVk7UUFDWixjQUFjO1FBQ2QsMEJBQTBCO1FBQzFCLDJCQUEyQjtRQUMzQiw0QkFBNEI7UUFDNUIsb0NBQW9DLGFBR3BDLGNBQWM7UUFDZCwyQkFBMkI7UUFDM0IsNEJBQTRCO1FBQzVCLG9DQUFvQztnSEFHM0Isa0JBQWtCLFlBZDNCLFlBQVk7UUFDWixjQUFjO1FBQ2QsMEJBQTBCO1FBQzFCLDJCQUEyQjsyRkFXbEIsa0JBQWtCO2tCQW5COUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLDBCQUEwQjt3QkFDMUIsMkJBQTJCO3dCQUMzQiw0QkFBNEI7d0JBQzVCLG9DQUFvQztxQkFDckM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGNBQWM7d0JBQ2QsMkJBQTJCO3dCQUMzQiw0QkFBNEI7d0JBQzVCLG9DQUFvQztxQkFDckM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90YWJsZSdcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgVGhlU2VhbVRhYmxlQ2VsbFR5cGVNb2R1bGUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuXG5pbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUvdGFibGUuY29tcG9uZW50J1xuaW1wb3J0IHsgVGhlU2VhbVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1jb2x1bW4uY29tcG9uZW50J1xuaW1wb3J0IHsgVGhlU2VhbVRhYmxlQ2VsbFRwbERpcmVjdGl2ZSB9IGZyb20gJy4vdGFibGUtY2VsbC10cGwuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgVGhlU2VhbVRhYmxlQ29sdW1uSGVhZGVyVHBsRGlyZWN0aXZlIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4taGVhZGVyLXRwbC5kaXJlY3RpdmUnXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRhYmxlQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2RrVGFibGVNb2R1bGUsXG4gICAgVGhlU2VhbVRhYmxlQ2VsbFR5cGVNb2R1bGUsXG4gICAgVGhlU2VhbVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgIFRoZVNlYW1UYWJsZUNlbGxUcGxEaXJlY3RpdmUsXG4gICAgVGhlU2VhbVRhYmxlQ29sdW1uSGVhZGVyVHBsRGlyZWN0aXZlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVGFibGVDb21wb25lbnQsXG4gICAgVGhlU2VhbVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgIFRoZVNlYW1UYWJsZUNlbGxUcGxEaXJlY3RpdmUsXG4gICAgVGhlU2VhbVRhYmxlQ29sdW1uSGVhZGVyVHBsRGlyZWN0aXZlLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1UYWJsZU1vZHVsZSB7IH1cbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlL3RhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFeEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBOztBQWV4RCxNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBWDNCLGNBQWMsYUFHZCxZQUFZO1FBQ1osY0FBYztRQUNkLDBCQUEwQixhQUcxQixjQUFjO2dIQUdMLGtCQUFrQixZQVIzQixZQUFZO1FBQ1osY0FBYztRQUNkLDBCQUEwQjsyRkFNakIsa0JBQWtCO2tCQWI5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsMEJBQTBCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsY0FBYztxQkFDZjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1RhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBUaGVTZWFtVGFibGVDZWxsVHlwZU1vZHVsZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi90YWJsZS1jZWxsLXR5cGUnXG5cbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS90YWJsZS5jb21wb25lbnQnXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRhYmxlQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2RrVGFibGVNb2R1bGUsXG4gICAgVGhlU2VhbVRhYmxlQ2VsbFR5cGVNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFRhYmxlQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbVRhYmxlTW9kdWxlIHsgfVxuIl19
@@ -101,9 +101,7 @@ export class TableCellTypeStringComponent {
101
101
  if (configAction.type === 'link') {
102
102
  link = this._parseConfigValue(configAction.link);
103
103
  if (link !== undefined && link !== null) {
104
- newTplType = this._parseConfigValue(configAction.asset)
105
- ? 'link-encrypted'
106
- : this._parseConfigValue(configAction.external) ? 'link-external' : 'link';
104
+ newTplType = this._parseConfigValue(configAction.asset) ? 'link-encrypted' : 'link';
107
105
  download = !!this._parseConfigValue(configAction.download);
108
106
  detectMimeContent = !!this._parseConfigValue(configAction.detectMimeContent);
109
107
  queryParams = this._parseConfigValue(configAction.queryParams);
@@ -161,7 +159,7 @@ export class TableCellTypeStringComponent {
161
159
  }
162
160
  }
163
161
  TableCellTypeStringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TableCellTypeStringComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: i2.DatatableComponent, optional: true }, { token: i3.TableComponent, optional: true }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
164
- TableCellTypeStringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TableCellTypeStringComponent, selector: "seam-table-cell-type-string", inputs: { value: "value", config: "config", title: "title", style: "style", classAttr: "classAttr" }, host: { properties: { "attr.title": "this._titleAttr", "attr.style": "this._styleAttr", "class": "this._classAttr" } }, ngImport: i0, template: "<ng-template #popoverTpl>\n {{ value }}\n</ng-template>\n\n<ng-template #noPopover>\n <div class=\"text-truncate\">\n {{ value }}\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!_tplType || _tplType === 'default'\">\n <div *ngIf=\"canPopover; else noPopover\" [seamPopover]=\"popoverTpl\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </div>\n</ng-container>\n\n\n\n<ng-container *ngIf=\"_tplType === 'link'\">\n <a class=\"d-block text-body text-decoration-none\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-external'\">\n <a class=\"d-block text-body text-decoration-none\"\n [attr.href]=\"_link\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-encrypted'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'button'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [attr.title]=\"_title\"\n (click)=\"_doButtonAction()\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverContext", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "directive", type: i7.EncryptedAssetLinkDirective, selector: "[seamEncryptedAssetLink]", inputs: ["seamEncryptedAssetLink", "seamShowLoadingOverlay", "seamDetectMimeFromContent", "seamDownloadAsset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
162
+ TableCellTypeStringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TableCellTypeStringComponent, selector: "seam-table-cell-type-string", inputs: { value: "value", config: "config", title: "title", style: "style", classAttr: "classAttr" }, host: { properties: { "attr.title": "this._titleAttr", "attr.style": "this._styleAttr", "class": "this._classAttr" } }, ngImport: i0, template: "<ng-template #popoverTpl>\n {{ value }}\n</ng-template>\n\n<ng-template #noPopover>\n <div class=\"text-truncate\">\n {{ value }}\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!_tplType || _tplType === 'default'\">\n <div *ngIf=\"canPopover; else noPopover\" [seamPopover]=\"popoverTpl\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </div>\n</ng-container>\n\n\n\n<ng-container *ngIf=\"_tplType === 'link'\">\n <a class=\"d-block text-body text-decoration-none\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-external'\">\n <a class=\"d-block text-body text-decoration-none\"\n [attr.href]=\"_link\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-encrypted'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'button'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [attr.title]=\"_title\"\n (click)=\"_doButtonAction()\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "directive", type: i7.EncryptedAssetLinkDirective, selector: "[seamEncryptedAssetLink]", inputs: ["seamEncryptedAssetLink", "seamShowLoadingOverlay", "seamDetectMimeFromContent", "seamDownloadAsset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
165
163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TableCellTypeStringComponent, decorators: [{
166
164
  type: Component,
167
165
  args: [{ selector: 'seam-table-cell-type-string', host: {}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #popoverTpl>\n {{ value }}\n</ng-template>\n\n<ng-template #noPopover>\n <div class=\"text-truncate\">\n {{ value }}\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!_tplType || _tplType === 'default'\">\n <div *ngIf=\"canPopover; else noPopover\" [seamPopover]=\"popoverTpl\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </div>\n</ng-container>\n\n\n\n<ng-container *ngIf=\"_tplType === 'link'\">\n <a class=\"d-block text-body text-decoration-none\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-external'\">\n <a class=\"d-block text-body text-decoration-none\"\n [attr.href]=\"_link\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-encrypted'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'button'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [attr.title]=\"_title\"\n (click)=\"_doButtonAction()\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n" }]
@@ -194,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
194
192
  type: HostBinding,
195
193
  args: ['class']
196
194
  }] } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdGFibGUtY2VsbC10eXBlcy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLXN0cmluZy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUkxQyxPQUFPLEVBQWdDLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFBOzs7Ozs7Ozs7QUFjbEcsTUFBTSxPQUFPLDRCQUE0QjtJQUl2QyxJQUNJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBQ2xDLElBQUksS0FBSyxDQUFDLEdBQThCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2pCLHlFQUF5RTtRQUN6RSxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1NBQ3ZCO0lBQ0gsQ0FBQztJQUdELElBQ0ksTUFBTSxLQUFL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ZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vZGF0YXRhYmxlJ1xuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUnXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLCBUQUJMRV9DRUxMX0RBVEEgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuaW1wb3J0IHR5cGUgeyBUYWJsZUNlbGxEYXRhLCBUaGVTZWFtVGFibGVDb2x1bW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nLCBUYWJsZUNlbGxUeXBlU3RyaW5nQ29uZmlnQWN0aW9uIH0gZnJvbSAnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLWNvbmZpZydcblxuZXhwb3J0IHR5cGUgU3RyaW5nVGVtcGxhdGVUeXBlID0gJ2RlZmF1bHQnIHwgJ2xpbmsnIHwgJ2xpbmstZXh0ZXJuYWwnIHwgJ2xpbmstZW5jcnlwdGVkJyB8ICdidXR0b24nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFibGUtY2VsbC10eXBlLXN0cmluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuc2NzcyddLFxuICBob3N0OiB7IH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbFR5cGVTdHJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZSB9XG4gIHNldCB2YWx1ZSh2YWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbFxuICAgIC8vIFRPRE86IFRoaXMgaXMgdGVtcG9yYXJ5IHRvIHRlc3QgdGhlIGZlYXR1cmUgYW5kIHdpbGwgYmUgZml4ZWQgd2hlbiB0aGVcbiAgICAvLyBkeW5hbWljIGNvbHVtbiBkYXRhIGlzIGZpeGVkLiBUaGUgcGxhbiBpcyB0byBhZGQgYSBjb25maWcgdG9nZ2xlIHRvXG4gICAgLy8gYWx3YXlzIGVuYWJsZSBhbmQgZGVwZW5kaW5nIG9uIHBlcmZvcm1hbmNlIGl0IGNvdWxkIHRyeSB0byBkZWNpZGUgb24gaXRzXG4gICAgLy8gb3duIGJhc2VkIG9uIGNvbnRlbnQgc2l6ZS5cbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDMwKSB7XG4gICAgICB0aGlzLmNhblBvcG92ZXIgPSB0cnVlXG4gICAgfVxuICB9XG4gIF92YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIGdldCBjb25maWcoKSB7IHJldHVybiB0aGlzLl9jb25maWcgfVxuICBzZXQgY29uZmlnKHZhbHVlOiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX2NvbmZpZyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNldENvbmZpZyh2YWx1ZSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY29uZmlnOiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIF90cGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgX2xpbms/OiBzdHJpbmdcbiAgX3RpdGxlPzogc3RyaW5nXG4gIF9xdWVyeVBhcmFtcz86IHsgW2s6IHN0cmluZ106IGFueSB9XG5cbiAgX3N0eWxlPzogc3RyaW5nXG4gIF9jbGFzcz86IHN0cmluZ1xuXG4gIF9idXR0b25BY3Rpb24/OiBUYWJsZUNlbGxUeXBlU3RyaW5nQ29uZmlnQWN0aW9uXG5cbiAgX3RhYmxlQ2VsbERhdGE/OiBUYWJsZUNlbGxEYXRhPCdzdHJpbmcnLCBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nPlxuICBfcm93PzogYW55XG4gIF9yb3dJbmRleD86IG51bWJlclxuICBfY29sRGF0YT86IFRoZVNlYW1UYWJsZUNvbHVtbjwnc3RyaW5nJywgVGFibGVDZWxsVHlwZUNvbmZpZ1N0cmluZz5cblxuICBfZG93bmxvYWQ/OiBib29sZWFuXG4gIF9kZXRlY3RNaW1lQ29udGVudD86IGJvb2xlYW5cblxuICBASW5wdXQoKVxuICBzZXQgdGl0bGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgeyB0aGlzLl90aXRsZSA9IHZhbHVlIH1cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl90aXRsZSB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRpdGxlJykgZ2V0IF90aXRsZUF0dHIoKSB7IHJldHVybiB0aGlzLnRpdGxlIHx8IHRoaXMudmFsdWUgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzdHlsZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3N0eWxlID0gdmFsdWUgfVxuICBnZXQgc3R5bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3N0eWxlIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuc3R5bGUnKSBnZXQgX3N0eWxlQXR0cigpIHsgcmV0dXJuIHRoaXMuc3R5bGUgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjbGFzc0F0dHIodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgeyB0aGlzLl9jbGFzcyA9IHZhbHVlIH1cbiAgZ2V0IGNsYXNzQXR0cigpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fY2xhc3MgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgX2NsYXNzQXR0cigpIHsgcmV0dXJuIHRoaXMuY2xhc3NBdHRyIH1cblxuICBjYW5Qb3BvdmVyID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZGY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlQ2VsbFR5cGVIZWxwZXJzOiBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RhdGF0YWJsZT86IERhdGF0YWJsZUNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF90YWJsZT86IFRhYmxlQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEFCTEVfQ0VMTF9EQVRBKSByZWFkb25seSBfdGFibGVEYXRhPzogVGFibGVDZWxsRGF0YTwnc3RyaW5nJywgVGFibGVDZWxsVHlwZUNvbmZpZ1N0cmluZz5cbiAgKSB7XG4gICAgY29uc3QgX2RhdGEgPSBfdGFibGVEYXRhXG4gICAgdGhpcy5fdGFibGVDZWxsRGF0YSA9IF90YWJsZURhdGFcblxuICAgIHRoaXMuX3JvdyA9IF9kYXRhICYmIF9kYXRhLnJvd1xuICAgIHRoaXMuX3Jvd0luZGV4ID0gX2RhdGEgJiYgX2RhdGEucm93SW5kZXhcblxuICAgIHRoaXMudmFsdWUgPSBfZGF0YSAmJiBfZGF0YS52YWx1ZVxuICAgIHRoaXMuX2NvbERhdGEgPSBfZGF0YSAmJiBfZGF0YS5jb2xEYXRhXG4gICAgaWYgKF9kYXRhICYmIF9kYXRhLmNvbERhdGEgJiYgKF9kYXRhLmNvbERhdGEgYXMgYW55KS5jZWxsVHlwZUNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSAoX2RhdGEuY29sRGF0YSBhcyBhbnkpLmNlbGxUeXBlQ29uZmlnXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgX2RhdGEgPSB0aGlzLl90YWJsZURhdGFcbiAgICBpZiAoX2RhdGEpIHtcbiAgICAgIF9kYXRhLmNoYW5nZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodi5jaGFuZ2VzLCAndmFsdWUnKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHYuY2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIHRoaXMuX2NkZi5tYXJrRm9yQ2hlY2soKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodi5jaGFuZ2VzLCAnY29sRGF0YScpKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xEYXRhID0gdi5jaGFuZ2VzLmNvbERhdGEuY3VycmVudFZhbHVlXG4gICAgICAgICAgICBpZiAoY29sRGF0YSAmJiBjb2xEYXRhLmNlbGxUeXBlQ29uZmlnICE9PSB0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbERhdGEuY2VsbFR5cGVDb25maWdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2LmNoYW5nZXMsICdyb3cnKSkge1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZ1xuICAgICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb24oY29uZmlnQWN0aW9uPzogVGFibGVDZWxsVHlwZVN0cmluZ0NvbmZpZ0FjdGlvbikge1xuICAgIGxldCBuZXdUcGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgICBsZXQgbGluazogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRvd25sb2FkID0gZmFsc2VcbiAgICBsZXQgZGV0ZWN0TWltZUNvbnRlbnQgPSBmYWxzZVxuICAgIGxldCBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWRcblxuICAgIGlmIChjb25maWdBY3Rpb24pIHtcbiAgICAgIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgIGxpbmsgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5saW5rKVxuICAgICAgICBpZiAobGluayAhPT0gdW5kZWZpbmVkICYmIGxpbmsgIT09IG51bGwpIHtcbiAgICAgICAgICBuZXdUcGxUeXBlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uYXNzZXQpXG4gICAgICAgICAgICA/ICdsaW5rLWVuY3J5cHRlZCdcbiAgICAgICAgICAgIDogdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uZXh0ZXJuYWwpID8gJ2xpbmstZXh0ZXJuYWwnIDogJ2xpbmsnXG4gICAgICAgICAgZG93bmxvYWQgPSAhIXRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnQWN0aW9uLmRvd25sb2FkKVxuICAgICAgICAgIGRldGVjdE1pbWVDb250ZW50ID0gISF0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5kZXRlY3RNaW1lQ29udGVudClcbiAgICAgICAgICBxdWVyeVBhcmFtcyA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnQWN0aW9uLnF1ZXJ5UGFyYW1zKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbmZpZ0FjdGlvbi50eXBlID09PSAnbW9kYWwnKSB7XG4gICAgICAgIG5ld1RwbFR5cGUgPSAnYnV0dG9uJ1xuICAgICAgICB0aGlzLl9idXR0b25BY3Rpb24gPSBjb25maWdBY3Rpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl90cGxUeXBlID0gbmV3VHBsVHlwZVxuICAgIHRoaXMuX2xpbmsgPSBsaW5rXG4gICAgdGhpcy5fZG93bmxvYWQgPSBkb3dubG9hZFxuICAgIHRoaXMuX2RldGVjdE1pbWVDb250ZW50ID0gZGV0ZWN0TWltZUNvbnRlbnRcbiAgICB0aGlzLl9xdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zXG4gIH1cblxuICBwdWJsaWMgc2V0Q29uZmlnKGNvbmZpZz86IFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWNvbmZpZykgeyByZXR1cm4gfVxuXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy50aXRsZUF0dHIpXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICB0aGlzLnRpdGxlID0gdGl0bGVcbiAgICB9XG5cbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnLnN0eWxlQXR0cilcbiAgICBpZiAoc3R5bGUpIHtcbiAgICAgIHRoaXMuc3R5bGUgPSBzdHlsZVxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzQXR0ciA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnLmNsYXNzQXR0cilcbiAgICBpZiAoY2xhc3NBdHRyKSB7XG4gICAgICB0aGlzLmNsYXNzQXR0ciA9IGNsYXNzQXR0clxuICAgIH1cblxuICAgIHRoaXMuc2V0QWN0aW9uKGNvbmZpZy5hY3Rpb24pXG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUNvbmZpZ1ZhbHVlKHZhbDogYW55KSB7XG4gICAgY29uc3QgY29udGV4dEZuID0gKCkgPT4gdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMuZ2V0VmFsdWVDb250ZXh0KHZhbCwgdGhpcy5fdGFibGVDZWxsRGF0YSlcbiAgICByZXR1cm4gdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMucGFyc2VWYWx1ZVByb3AodmFsLCBjb250ZXh0Rm4pXG4gIH1cblxuICBfZG9CdXR0b25BY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2J1dHRvbkFjdGlvbiAmJiB0aGlzLl9idXR0b25BY3Rpb24udHlwZSA9PT0gJ21vZGFsJykge1xuICAgICAgY29uc3QgY29udGV4dEZuID0gKCkgPT4gdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMuZ2V0VmFsdWVDb250ZXh0KHRoaXMudmFsdWUsIHRoaXMuX3RhYmxlQ2VsbERhdGEpXG4gICAgICB0aGlzLl90YWJsZUNlbGxUeXBlSGVscGVycy5oYW5kbGVNb2RhbEFjdGlvbih0aGlzLl9idXR0b25BY3Rpb24sIGNvbnRleHRGbilcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICByID0+IHt9LFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSxcbiAgICAgICAgICAoKSA9PiB0aGlzLl9hY3Rpb25SZWZyZXNoUmVxdWVzdCgpXG4gICAgICAgIClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hY3Rpb25SZWZyZXNoUmVxdWVzdCgpIHtcbiAgICBpZiAodGhpcy5fZGF0YXRhYmxlKSB7XG4gICAgICB0aGlzLl9kYXRhdGFibGUudHJpZ2dlckFjdGlvblJlZnJlc2hSZXF1ZXN0KClcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3RhYmxlKSB7XG4gICAgICB0aGlzLl90YWJsZS50cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8bmctdGVtcGxhdGUgI3BvcG92ZXJUcGw+XG4gIHt7IHZhbHVlIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vUG9wb3Zlcj5cbiAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICB7eyB2YWx1ZSB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhX3RwbFR5cGUgfHwgX3RwbFR5cGUgPT09ICdkZWZhdWx0J1wiPlxuICA8ZGl2ICpuZ0lmPVwiY2FuUG9wb3ZlcjsgZWxzZSBub1BvcG92ZXJcIiBbc2VhbVBvcG92ZXJdPVwicG9wb3ZlclRwbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90cGxUeXBlID09PSAnbGluaydcIj5cbiAgPGEgY2xhc3M9XCJkLWJsb2NrIHRleHQtYm9keSB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgW3JvdXRlckxpbmtdPVwiX2xpbmtcIlxuICAgIFtxdWVyeVBhcmFtc109XCJfcXVlcnlQYXJhbXNcIlxuICAgIFthdHRyLnRpdGxlXT1cIl90aXRsZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2E+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90cGxUeXBlID09PSAnbGluay1leHRlcm5hbCdcIj5cbiAgPGEgY2xhc3M9XCJkLWJsb2NrIHRleHQtYm9keSB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgW2F0dHIuaHJlZl09XCJfbGlua1wiXG4gICAgW2F0dHIudGl0bGVdPVwiX3RpdGxlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiX3RwbFR5cGUgPT09ICdsaW5rLWVuY3J5cHRlZCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBkLWJsb2NrIHRleHQtYm9keSB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW3NlYW1FbmNyeXB0ZWRBc3NldExpbmtdPVwiX2xpbmtcIlxuICAgIFtzZWFtRGV0ZWN0TWltZUZyb21Db250ZW50XT1cIl9kZXRlY3RNaW1lQ29udGVudFwiXG4gICAgW3NlYW1Eb3dubG9hZEFzc2V0XT1cIl9kb3dubG9hZFwiXG4gICAgW2F0dHIudGl0bGVdPVwiX3RpdGxlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2J1dHRvbidcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBkLWJsb2NrIHRleHQtYm9keSB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIudGl0bGVdPVwiX3RpdGxlXCJcbiAgICAoY2xpY2spPVwiX2RvQnV0dG9uQWN0aW9uKClcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9idXR0b24+XG48L25nLWNvbnRhaW5lcj5cblxuIl19
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdGFibGUtY2VsbC10eXBlcy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLXN0cmluZy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUkxQyxPQUFPLEVBQWdDLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFBOzs7Ozs7Ozs7QUFjbEcsTUFBTSxPQUFPLDRCQUE0QjtJQUl2QyxJQUNJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBQ2xDLElBQUksS0FBSyxDQUFDLEdBQThCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2pCLHlFQUF5RTtRQUN6RSxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1NBQ3ZCO0lBQ0gsQ0FBQztJQUdELElBQ0ksTUFBTSxLQUFL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QWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUM7aUJBQ3hFLFNBQVMsQ0FDUixDQUFDLENBQUMsRUFBRSxHQUFFLENBQUM7WUFDUCxzQ0FBc0M7WUFDdEMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUN6QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FDbkMsQ0FBQTtTQUNKO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1NBQzlDO2FBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsQ0FBQTtTQUMxQztJQUNILENBQUM7O3lIQW5NVSw0QkFBNEIsK0xBdUVqQixlQUFlOzZHQXZFMUIsNEJBQTRCLGlTQzlCekMsc3BEQXlEQTsyRkQzQmEsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLDZCQUE2QixRQUdqQyxFQUFHLG1CQUNRLHVCQUF1QixDQUFDLE1BQU07OzBCQXVFNUMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzRDQWxFakMsS0FBSztzQkFEUixLQUFLO2dCQWVGLE1BQU07c0JBRFQsS0FBSztnQkE2QkYsS0FBSztzQkFEUixLQUFLO2dCQUl5QixVQUFVO3NCQUF4QyxXQUFXO3VCQUFDLFlBQVk7Z0JBR3JCLEtBQUs7c0JBRFIsS0FBSztnQkFJeUIsVUFBVTtzQkFBeEMsV0FBVzt1QkFBQyxZQUFZO2dCQUdyQixTQUFTO3NCQURaLEtBQUs7Z0JBSW9CLFVBQVU7c0JBQW5DLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vZGF0YXRhYmxlJ1xuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUnXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLCBUQUJMRV9DRUxMX0RBVEEgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuaW1wb3J0IHR5cGUgeyBUYWJsZUNlbGxEYXRhLCBUaGVTZWFtVGFibGVDb2x1bW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nLCBUYWJsZUNlbGxUeXBlU3RyaW5nQ29uZmlnQWN0aW9uIH0gZnJvbSAnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLWNvbmZpZydcblxuZXhwb3J0IHR5cGUgU3RyaW5nVGVtcGxhdGVUeXBlID0gJ2RlZmF1bHQnIHwgJ2xpbmsnIHwgJ2xpbmstZXh0ZXJuYWwnIHwgJ2xpbmstZW5jcnlwdGVkJyB8ICdidXR0b24nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFibGUtY2VsbC10eXBlLXN0cmluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuc2NzcyddLFxuICBob3N0OiB7IH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbFR5cGVTdHJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZSB9XG4gIHNldCB2YWx1ZSh2YWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbFxuICAgIC8vIFRPRE86IFRoaXMgaXMgdGVtcG9yYXJ5IHRvIHRlc3QgdGhlIGZlYXR1cmUgYW5kIHdpbGwgYmUgZml4ZWQgd2hlbiB0aGVcbiAgICAvLyBkeW5hbWljIGNvbHVtbiBkYXRhIGlzIGZpeGVkLiBUaGUgcGxhbiBpcyB0byBhZGQgYSBjb25maWcgdG9nZ2xlIHRvXG4gICAgLy8gYWx3YXlzIGVuYWJsZSBhbmQgZGVwZW5kaW5nIG9uIHBlcmZvcm1hbmNlIGl0IGNvdWxkIHRyeSB0byBkZWNpZGUgb24gaXRzXG4gICAgLy8gb3duIGJhc2VkIG9uIGNvbnRlbnQgc2l6ZS5cbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDMwKSB7XG4gICAgICB0aGlzLmNhblBvcG92ZXIgPSB0cnVlXG4gICAgfVxuICB9XG4gIF92YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIGdldCBjb25maWcoKSB7IHJldHVybiB0aGlzLl9jb25maWcgfVxuICBzZXQgY29uZmlnKHZhbHVlOiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX2NvbmZpZyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNldENvbmZpZyh2YWx1ZSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY29uZmlnOiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIF90cGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgX2xpbms/OiBzdHJpbmdcbiAgX3RpdGxlPzogc3RyaW5nXG4gIF9xdWVyeVBhcmFtcz86IHsgW2s6IHN0cmluZ106IGFueSB9XG5cbiAgX3N0eWxlPzogc3RyaW5nXG4gIF9jbGFzcz86IHN0cmluZ1xuXG4gIF9idXR0b25BY3Rpb24/OiBUYWJsZUNlbGxUeXBlU3RyaW5nQ29uZmlnQWN0aW9uXG5cbiAgX3RhYmxlQ2VsbERhdGE/OiBUYWJsZUNlbGxEYXRhPCdzdHJpbmcnLCBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nPlxuICBfcm93PzogYW55XG4gIF9yb3dJbmRleD86IG51bWJlclxuICBfY29sRGF0YT86IFRoZVNlYW1UYWJsZUNvbHVtbjwnc3RyaW5nJywgVGFibGVDZWxsVHlwZUNvbmZpZ1N0cmluZz5cblxuICBfZG93bmxvYWQ/OiBib29sZWFuXG4gIF9kZXRlY3RNaW1lQ29udGVudD86IGJvb2xlYW5cblxuICBASW5wdXQoKVxuICBzZXQgdGl0bGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgeyB0aGlzLl90aXRsZSA9IHZhbHVlIH1cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl90aXRsZSB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRpdGxlJykgZ2V0IF90aXRsZUF0dHIoKSB7IHJldHVybiB0aGlzLnRpdGxlIHx8IHRoaXMudmFsdWUgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzdHlsZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3N0eWxlID0gdmFsdWUgfVxuICBnZXQgc3R5bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3N0eWxlIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuc3R5bGUnKSBnZXQgX3N0eWxlQXR0cigpIHsgcmV0dXJuIHRoaXMuc3R5bGUgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjbGFzc0F0dHIodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgeyB0aGlzLl9jbGFzcyA9IHZhbHVlIH1cbiAgZ2V0IGNsYXNzQXR0cigpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fY2xhc3MgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgX2NsYXNzQXR0cigpIHsgcmV0dXJuIHRoaXMuY2xhc3NBdHRyIH1cblxuICBjYW5Qb3BvdmVyID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZGY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlQ2VsbFR5cGVIZWxwZXJzOiBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RhdGF0YWJsZT86IERhdGF0YWJsZUNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF90YWJsZT86IFRhYmxlQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEFCTEVfQ0VMTF9EQVRBKSByZWFkb25seSBfdGFibGVEYXRhPzogVGFibGVDZWxsRGF0YTwnc3RyaW5nJywgVGFibGVDZWxsVHlwZUNvbmZpZ1N0cmluZz5cbiAgKSB7XG4gICAgY29uc3QgX2RhdGEgPSBfdGFibGVEYXRhXG4gICAgdGhpcy5fdGFibGVDZWxsRGF0YSA9IF90YWJsZURhdGFcblxuICAgIHRoaXMuX3JvdyA9IF9kYXRhICYmIF9kYXRhLnJvd1xuICAgIHRoaXMuX3Jvd0luZGV4ID0gX2RhdGEgJiYgX2RhdGEucm93SW5kZXhcblxuICAgIHRoaXMudmFsdWUgPSBfZGF0YSAmJiBfZGF0YS52YWx1ZVxuICAgIHRoaXMuX2NvbERhdGEgPSBfZGF0YSAmJiBfZGF0YS5jb2xEYXRhXG4gICAgaWYgKF9kYXRhICYmIF9kYXRhLmNvbERhdGEgJiYgKF9kYXRhLmNvbERhdGEgYXMgYW55KS5jZWxsVHlwZUNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSAoX2RhdGEuY29sRGF0YSBhcyBhbnkpLmNlbGxUeXBlQ29uZmlnXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgX2RhdGEgPSB0aGlzLl90YWJsZURhdGFcbiAgICBpZiAoX2RhdGEpIHtcbiAgICAgIF9kYXRhLmNoYW5nZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodi5jaGFuZ2VzLCAndmFsdWUnKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHYuY2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIHRoaXMuX2NkZi5tYXJrRm9yQ2hlY2soKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodi5jaGFuZ2VzLCAnY29sRGF0YScpKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xEYXRhID0gdi5jaGFuZ2VzLmNvbERhdGEuY3VycmVudFZhbHVlXG4gICAgICAgICAgICBpZiAoY29sRGF0YSAmJiBjb2xEYXRhLmNlbGxUeXBlQ29uZmlnICE9PSB0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbERhdGEuY2VsbFR5cGVDb25maWdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2LmNoYW5nZXMsICdyb3cnKSkge1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZ1xuICAgICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb24oY29uZmlnQWN0aW9uPzogVGFibGVDZWxsVHlwZVN0cmluZ0NvbmZpZ0FjdGlvbikge1xuICAgIGxldCBuZXdUcGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgICBsZXQgbGluazogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRvd25sb2FkID0gZmFsc2VcbiAgICBsZXQgZGV0ZWN0TWltZUNvbnRlbnQgPSBmYWxzZVxuICAgIGxldCBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWRcblxuICAgIGlmIChjb25maWdBY3Rpb24pIHtcbiAgICAgIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgIGxpbmsgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5saW5rKVxuICAgICAgICBpZiAobGluayAhPT0gdW5kZWZpbmVkICYmIGxpbmsgIT09IG51bGwpIHtcbiAgICAgICAgICBuZXdUcGxUeXBlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uYXNzZXQpID8gJ2xpbmstZW5jcnlwdGVkJyA6ICdsaW5rJ1xuICAgICAgICAgIGRvd25sb2FkID0gISF0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5kb3dubG9hZClcbiAgICAgICAgICBkZXRlY3RNaW1lQ29udGVudCA9ICEhdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uZGV0ZWN0TWltZUNvbnRlbnQpXG4gICAgICAgICAgcXVlcnlQYXJhbXMgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5xdWVyeVBhcmFtcylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ21vZGFsJykge1xuICAgICAgICBuZXdUcGxUeXBlID0gJ2J1dHRvbidcbiAgICAgICAgdGhpcy5fYnV0dG9uQWN0aW9uID0gY29uZmlnQWN0aW9uXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHBsVHlwZSA9IG5ld1RwbFR5cGVcbiAgICB0aGlzLl9saW5rID0gbGlua1xuICAgIHRoaXMuX2Rvd25sb2FkID0gZG93bmxvYWRcbiAgICB0aGlzLl9kZXRlY3RNaW1lQ29udGVudCA9IGRldGVjdE1pbWVDb250ZW50XG4gICAgdGhpcy5fcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtc1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWc/OiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFjb25maWcpIHsgcmV0dXJuIH1cblxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWcudGl0bGVBdHRyKVxuICAgIGlmICh0aXRsZSkge1xuICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgfVxuXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy5zdHlsZUF0dHIpXG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICB0aGlzLnN0eWxlID0gc3R5bGVcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc0F0dHIgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy5jbGFzc0F0dHIpXG4gICAgaWYgKGNsYXNzQXR0cikge1xuICAgICAgdGhpcy5jbGFzc0F0dHIgPSBjbGFzc0F0dHJcbiAgICB9XG5cbiAgICB0aGlzLnNldEFjdGlvbihjb25maWcuYWN0aW9uKVxuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VDb25maWdWYWx1ZSh2YWw6IGFueSkge1xuICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh2YWwsIHRoaXMuX3RhYmxlQ2VsbERhdGEpXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLnBhcnNlVmFsdWVQcm9wKHZhbCwgY29udGV4dEZuKVxuICB9XG5cbiAgX2RvQnV0dG9uQWN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9idXR0b25BY3Rpb24gJiYgdGhpcy5fYnV0dG9uQWN0aW9uLnR5cGUgPT09ICdtb2RhbCcpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh0aGlzLnZhbHVlLCB0aGlzLl90YWJsZUNlbGxEYXRhKVxuICAgICAgdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMuaGFuZGxlTW9kYWxBY3Rpb24odGhpcy5fYnV0dG9uQWN0aW9uLCBjb250ZXh0Rm4pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgciA9PiB7fSxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGVyciA9PiBjb25zb2xlLmVycm9yKGVyciksXG4gICAgICAgICAgKCkgPT4gdGhpcy5fYWN0aW9uUmVmcmVzaFJlcXVlc3QoKVxuICAgICAgICApXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWN0aW9uUmVmcmVzaFJlcXVlc3QoKSB7XG4gICAgaWYgKHRoaXMuX2RhdGF0YWJsZSkge1xuICAgICAgdGhpcy5fZGF0YXRhYmxlLnRyaWdnZXJBY3Rpb25SZWZyZXNoUmVxdWVzdCgpXG4gICAgfSBlbHNlIGlmICh0aGlzLl90YWJsZSkge1xuICAgICAgdGhpcy5fdGFibGUudHJpZ2dlckFjdGlvblJlZnJlc2hSZXF1ZXN0KClcbiAgICB9XG4gIH1cblxufVxuIiwiPG5nLXRlbXBsYXRlICNwb3BvdmVyVHBsPlxuICB7eyB2YWx1ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub1BvcG92ZXI+XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAge3sgdmFsdWUgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIV90cGxUeXBlIHx8IF90cGxUeXBlID09PSAnZGVmYXVsdCdcIj5cbiAgPGRpdiAqbmdJZj1cImNhblBvcG92ZXI7IGVsc2Ugbm9Qb3BvdmVyXCIgW3NlYW1Qb3BvdmVyXT1cInBvcG92ZXJUcGxcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuXG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2xpbmsnXCI+XG4gIDxhIGNsYXNzPVwiZC1ibG9jayB0ZXh0LWJvZHkgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgIFtyb3V0ZXJMaW5rXT1cIl9saW5rXCJcbiAgICBbcXVlcnlQYXJhbXNdPVwiX3F1ZXJ5UGFyYW1zXCJcbiAgICBbYXR0ci50aXRsZV09XCJfdGl0bGVcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9hPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2xpbmstZXh0ZXJuYWwnXCI+XG4gIDxhIGNsYXNzPVwiZC1ibG9jayB0ZXh0LWJvZHkgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgIFthdHRyLmhyZWZdPVwiX2xpbmtcIlxuICAgIFthdHRyLnRpdGxlXT1cIl90aXRsZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2E+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90cGxUeXBlID09PSAnbGluay1lbmNyeXB0ZWQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTAgZC1ibG9jayB0ZXh0LWJvZHkgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtzZWFtRW5jcnlwdGVkQXNzZXRMaW5rXT1cIl9saW5rXCJcbiAgICBbc2VhbURldGVjdE1pbWVGcm9tQ29udGVudF09XCJfZGV0ZWN0TWltZUNvbnRlbnRcIlxuICAgIFtzZWFtRG93bmxvYWRBc3NldF09XCJfZG93bmxvYWRcIlxuICAgIFthdHRyLnRpdGxlXT1cIl90aXRsZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiX3RwbFR5cGUgPT09ICdidXR0b24nXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTAgZC1ibG9jayB0ZXh0LWJvZHkgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFthdHRyLnRpdGxlXT1cIl90aXRsZVwiXG4gICAgKGNsaWNrKT1cIl9kb0J1dHRvbkFjdGlvbigpXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG5cbiJdfQ==