cmat 0.0.14 → 0.0.15

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 (251) hide show
  1. package/components/cascade/cascade-list/cascade-list.component.d.ts +3 -3
  2. package/components/cascade/options.interface.d.ts +1 -1
  3. package/components/custom-formly/types/multicheckbox/multicheckbox.component.d.ts +0 -1
  4. package/components/custom-formly/types/radio/radio.component.d.ts +0 -1
  5. package/components/custom-formly/types/table/table.component.d.ts +2 -2
  6. package/components/material-datetimepicker/clock.d.ts +2 -2
  7. package/components/navigation/navigation.types.d.ts +1 -1
  8. package/components/password-strength/mat-password-strength-validator.d.ts +1 -1
  9. package/components/popover/popover.component.d.ts +1 -3
  10. package/components/timeline/timeline.component.d.ts +1 -1
  11. package/components/transfer-picker/filter/filter.component.d.ts +1 -1
  12. package/components/transfer-picker/interface.d.ts +4 -4
  13. package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +2 -2
  14. package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.d.ts +1 -1
  15. package/components/transfer-picker/transfer-picker.component.d.ts +5 -5
  16. package/components/transfer-picker/transfer-picker.service.d.ts +6 -6
  17. package/components/upload/upload-queue/upload-queue.component.d.ts +1 -1
  18. package/directives/digit-only/mask.directive.d.ts +2 -0
  19. package/directives/equal-validator/equal-validator.directive.d.ts +1 -3
  20. package/esm2022/components/adapter/dayjs-date-adapter.mjs +5 -5
  21. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +3 -3
  22. package/esm2022/components/adapter/native-datetime-adapter.mjs +3 -3
  23. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
  24. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +6 -6
  25. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +9 -12
  26. package/esm2022/components/card/card.component.mjs +3 -3
  27. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +4 -4
  28. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +12 -10
  29. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +3 -3
  30. package/esm2022/components/cascade/options.interface.mjs +1 -1
  31. package/esm2022/components/chip-input/chip-input.component.mjs +8 -6
  32. package/esm2022/components/custom-formly/extension/addons.extension.mjs +2 -2
  33. package/esm2022/components/custom-formly/types/button/button.component.mjs +3 -3
  34. package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +3 -3
  35. package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +5 -5
  36. package/esm2022/components/custom-formly/types/chips/chips.component.mjs +5 -5
  37. package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +3 -3
  38. package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +3 -3
  39. package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +5 -5
  40. package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +4 -5
  41. package/esm2022/components/custom-formly/types/number/number.component.mjs +5 -5
  42. package/esm2022/components/custom-formly/types/quill/quill.component.mjs +5 -5
  43. package/esm2022/components/custom-formly/types/radio/radio.component.mjs +5 -6
  44. package/esm2022/components/custom-formly/types/rating/rating.component.mjs +3 -3
  45. package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +5 -5
  46. package/esm2022/components/custom-formly/types/select/select.component.mjs +5 -5
  47. package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +3 -3
  48. package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +5 -5
  49. package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +5 -5
  50. package/esm2022/components/custom-formly/types/table/table.component.mjs +5 -5
  51. package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +3 -3
  52. package/esm2022/components/custom-formly/types/tags/tags.component.mjs +7 -7
  53. package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +3 -3
  54. package/esm2022/components/custom-formly/types/upload/upload.component.mjs +3 -3
  55. package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +3 -3
  56. package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +3 -3
  57. package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +5 -5
  58. package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +3 -3
  59. package/esm2022/components/date-range/date-range.component.mjs +20 -15
  60. package/esm2022/components/drawer/drawer.component.mjs +3 -3
  61. package/esm2022/components/drawer/drawer.service.mjs +3 -3
  62. package/esm2022/components/fullscreen/fullscreen.component.mjs +5 -5
  63. package/esm2022/components/highlight/highlight.component.mjs +3 -3
  64. package/esm2022/components/highlight/highlight.service.mjs +3 -3
  65. package/esm2022/components/json-editor/json-editor.component.mjs +10 -10
  66. package/esm2022/components/masonry/masonry.component.mjs +3 -3
  67. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +7 -5
  68. package/esm2022/components/material-datetimepicker/calendar-body.mjs +6 -6
  69. package/esm2022/components/material-datetimepicker/calendar.mjs +6 -6
  70. package/esm2022/components/material-datetimepicker/clock.mjs +5 -5
  71. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +7 -5
  72. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
  73. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +9 -9
  74. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +11 -11
  75. package/esm2022/components/material-datetimepicker/month-view.mjs +5 -5
  76. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +5 -5
  77. package/esm2022/components/material-datetimepicker/time.mjs +10 -10
  78. package/esm2022/components/material-datetimepicker/year-view.mjs +5 -5
  79. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +5 -5
  80. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +5 -5
  81. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +3 -3
  82. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +3 -3
  83. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +3 -3
  84. package/esm2022/components/navigation/navigation.service.mjs +3 -3
  85. package/esm2022/components/navigation/navigation.types.mjs +1 -1
  86. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +5 -5
  87. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +3 -3
  88. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +3 -3
  89. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +3 -3
  90. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +5 -5
  91. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +5 -5
  92. package/esm2022/components/navigation/vertical/vertical.component.mjs +5 -5
  93. package/esm2022/components/pagination/pagination.component.mjs +5 -5
  94. package/esm2022/components/pagination/pagination.directive.mjs +3 -3
  95. package/esm2022/components/pagination/pagination.pipe.mjs +5 -5
  96. package/esm2022/components/pagination/pagination.service.mjs +4 -4
  97. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +5 -5
  98. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +6 -6
  99. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +5 -5
  100. package/esm2022/components/password-strength/mat-password-strength-validator.mjs +2 -2
  101. package/esm2022/components/popover/popover-trigger.mjs +3 -3
  102. package/esm2022/components/popover/popover.component.mjs +6 -6
  103. package/esm2022/components/popover/popover.target.mjs +3 -3
  104. package/esm2022/components/progress-bar/progress-bar.component.mjs +3 -3
  105. package/esm2022/components/rating/rating.component.mjs +11 -7
  106. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
  107. package/esm2022/components/select-search/select-search-clear.directive.mjs +3 -3
  108. package/esm2022/components/select-search/select-search.component.mjs +9 -9
  109. package/esm2022/components/select-tree/select-tree.component.mjs +10 -8
  110. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +11 -11
  111. package/esm2022/components/timeline/timeline.component.mjs +5 -8
  112. package/esm2022/components/toast/toast-modal.component.mjs +5 -5
  113. package/esm2022/components/toast/toast.component.mjs +5 -5
  114. package/esm2022/components/toast/toast.service.mjs +10 -10
  115. package/esm2022/components/transfer-picker/filter/filter.component.mjs +6 -6
  116. package/esm2022/components/transfer-picker/interface.mjs +1 -1
  117. package/esm2022/components/transfer-picker/search/search.component.mjs +3 -3
  118. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +4 -4
  119. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +4 -4
  120. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +4 -4
  121. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +8 -8
  122. package/esm2022/components/upload/files.util.service.mjs +3 -3
  123. package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +8 -8
  124. package/esm2022/components/upload/upload.component.mjs +5 -5
  125. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +3 -3
  126. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
  127. package/esm2022/directives/autofocus/autofocus.directive.mjs +3 -3
  128. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
  129. package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
  130. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +3 -3
  131. package/esm2022/directives/digit-only/digit-only.directive.mjs +6 -6
  132. package/esm2022/directives/digit-only/mask.directive.mjs +20 -5
  133. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +4 -4
  134. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +3 -3
  135. package/esm2022/lib/mock-api/mock-api.request-handler.mjs +1 -1
  136. package/esm2022/lib/mock-api/mock-api.service.mjs +4 -4
  137. package/esm2022/lib/mock-api/mock-api.types.mjs +1 -1
  138. package/esm2022/lib/mock-api/mock-api.utils.mjs +1 -2
  139. package/esm2022/pipes/bytes/bytes.pipe.mjs +3 -3
  140. package/esm2022/pipes/date-format/date-format.pipe.mjs +3 -3
  141. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +3 -3
  142. package/esm2022/pipes/group-by/group-by.pipe.mjs +4 -4
  143. package/esm2022/pipes/keys/keys.pipe.mjs +3 -3
  144. package/esm2022/pipes/secure/secure-pipe.mjs +3 -3
  145. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
  146. package/esm2022/public-api.mjs +1 -1
  147. package/esm2022/services/alert/alert.service.mjs +11 -10
  148. package/esm2022/services/config/config.service.mjs +3 -3
  149. package/esm2022/services/config/urlStateConfig.service.mjs +5 -5
  150. package/esm2022/services/confirmation/confirmation.service.mjs +3 -3
  151. package/esm2022/services/confirmation/dialog/dialog.component.mjs +3 -3
  152. package/esm2022/services/data/data.service.mjs +3 -3
  153. package/esm2022/services/loading/loading.interceptor.mjs +3 -3
  154. package/esm2022/services/loading/loading.service.mjs +3 -3
  155. package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
  156. package/esm2022/services/media-watcher/media-watcher.service.mjs +4 -4
  157. package/esm2022/services/platform/platform.service.mjs +3 -3
  158. package/esm2022/services/splash-screen/splash-screen.service.mjs +3 -3
  159. package/esm2022/services/title/title.service.mjs +4 -4
  160. package/esm2022/services/translation/translation.service.mjs +4 -4
  161. package/esm2022/services/utils/utils.service.mjs +9 -11
  162. package/fesm2022/cmat-components-adapter.mjs +10 -10
  163. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  164. package/fesm2022/cmat-components-breadcrumb.mjs +16 -19
  165. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  166. package/fesm2022/cmat-components-card.mjs +3 -3
  167. package/fesm2022/cmat-components-cascade.mjs +17 -15
  168. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  169. package/fesm2022/cmat-components-chip-input.mjs +7 -5
  170. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  171. package/fesm2022/cmat-components-custom-formly.mjs +94 -96
  172. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  173. package/fesm2022/cmat-components-date-range.mjs +19 -14
  174. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  175. package/fesm2022/cmat-components-drawer.mjs +6 -6
  176. package/fesm2022/cmat-components-fullscreen.mjs +4 -4
  177. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  178. package/fesm2022/cmat-components-highlight.mjs +6 -6
  179. package/fesm2022/cmat-components-json-editor.mjs +9 -9
  180. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  181. package/fesm2022/cmat-components-masonry.mjs +3 -3
  182. package/fesm2022/cmat-components-material-color-picker.mjs +6 -4
  183. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  184. package/fesm2022/cmat-components-material-datetimepicker.mjs +62 -60
  185. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  186. package/fesm2022/cmat-components-navigation.mjs +45 -45
  187. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  188. package/fesm2022/cmat-components-pagination.mjs +14 -14
  189. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  190. package/fesm2022/cmat-components-password-strength.mjs +14 -14
  191. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  192. package/fesm2022/cmat-components-popover.mjs +11 -11
  193. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  194. package/fesm2022/cmat-components-progress-bar.mjs +3 -3
  195. package/fesm2022/cmat-components-rating.mjs +9 -5
  196. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  197. package/fesm2022/cmat-components-select-search.mjs +14 -14
  198. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  199. package/fesm2022/cmat-components-select-tree.mjs +9 -7
  200. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  201. package/fesm2022/cmat-components-timeline.mjs +14 -17
  202. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  203. package/fesm2022/cmat-components-toast.mjs +17 -17
  204. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  205. package/fesm2022/cmat-components-transfer-picker.mjs +24 -24
  206. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  207. package/fesm2022/cmat-components-upload.mjs +14 -14
  208. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  209. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  210. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  211. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  212. package/fesm2022/cmat-directives-digit-only.mjs +24 -9
  213. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  214. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  215. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  216. package/fesm2022/cmat-lib-mock-api.mjs +6 -7
  217. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  218. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  219. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  220. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  221. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  222. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  223. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  224. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  225. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  226. package/fesm2022/cmat-services-alert.mjs +10 -9
  227. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  228. package/fesm2022/cmat-services-config.mjs +7 -7
  229. package/fesm2022/cmat-services-config.mjs.map +1 -1
  230. package/fesm2022/cmat-services-confirmation.mjs +6 -6
  231. package/fesm2022/cmat-services-data.mjs +3 -3
  232. package/fesm2022/cmat-services-loading.mjs +6 -6
  233. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  234. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  235. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  236. package/fesm2022/cmat-services-platform.mjs +3 -3
  237. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  238. package/fesm2022/cmat-services-title.mjs +3 -3
  239. package/fesm2022/cmat-services-title.mjs.map +1 -1
  240. package/fesm2022/cmat-services-translation.mjs +3 -3
  241. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  242. package/fesm2022/cmat-services-utils.mjs +8 -10
  243. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  244. package/lib/mock-api/mock-api.request-handler.d.ts +1 -3
  245. package/lib/mock-api/mock-api.service.d.ts +1 -3
  246. package/lib/mock-api/mock-api.types.d.ts +2 -4
  247. package/package.json +71 -71
  248. package/pipes/group-by/group-by.pipe.d.ts +1 -1
  249. package/services/config/urlStateConfig.service.d.ts +0 -1
  250. package/services/translation/translation.service.d.ts +2 -2
  251. package/services/utils/utils.service.d.ts +5 -7
@@ -11,7 +11,6 @@ const PATH_PARAM = {
11
11
  REGEX_IDENTIFIER: '/:[^/]+',
12
12
  REGEX_REPLACER: '/[^/]+',
13
13
  };
14
- /* eslint-disable @typescript-eslint/naming-convention */
15
14
  const ALIAS_PREFIX = '@';
16
15
  const isNonEmpty = (obj) => obj && Object.keys(obj).length > 0;
17
16
  export class CmatBreadcrumbService {
@@ -132,7 +131,7 @@ export class CmatBreadcrumbService {
132
131
  const resolvedSegment = this._resolvePathSegment(path, activatedRouteSnapshot);
133
132
  const routeLink = `${routeLinkPrefix}${resolvedSegment}`;
134
133
  const storeItem = this._getFromStore(routeLink, breadcrumb.alias);
135
- const label = this._extractLabel(storeItem?.label || breadcrumb?.label, resolvedSegment);
134
+ const label = this._extractLabel(storeItem?.label ?? breadcrumb?.label, resolvedSegment);
136
135
  let isAutoGeneratedLabel = false;
137
136
  let autoGeneratedLabel = '';
138
137
  if (!label) {
@@ -149,7 +148,7 @@ export class CmatBreadcrumbService {
149
148
  };
150
149
  }
151
150
  _prepareBreadcrumbList(activatedRouteSnapshot, routeLinkPrefix) {
152
- if (activatedRouteSnapshot.routeConfig && activatedRouteSnapshot.routeConfig.path) {
151
+ if (activatedRouteSnapshot.routeConfig?.path) {
153
152
  const breadcrumbItem = this._prepareBreadcrumbItem(activatedRouteSnapshot, routeLinkPrefix);
154
153
  this._currentBreadcrumbs.push(breadcrumbItem);
155
154
  if (activatedRouteSnapshot.firstChild) {
@@ -167,9 +166,7 @@ export class CmatBreadcrumbService {
167
166
  return void 0;
168
167
  }
169
168
  _getFromStore(routeLink, alias) {
170
- return this._dynamicBreadcrumbStore.find(item => ((alias && alias === item.alias) ||
171
- (routeLink && routeLink === item.routeLink) ||
172
- this._matchRegex(routeLink, item.routeRegex)));
169
+ return this._dynamicBreadcrumbStore.find(item => (((alias && alias === item.alias) ?? false) || (routeLink && routeLink === item.routeLink) || this._matchRegex(routeLink, item.routeRegex)));
173
170
  }
174
171
  /**
175
172
  * use exact match instead of regexp.test
@@ -201,7 +198,7 @@ export class CmatBreadcrumbService {
201
198
  * queryParams & fragments for previous breadcrumb path are copied over to new list
202
199
  */
203
200
  _getQueryParamsFromPreviousList(routeLink) {
204
- const { queryParams, fragment } = this._previousBreadcrumbs.find(item => item.routeLink === routeLink) ||
201
+ const { queryParams, fragment } = this._previousBreadcrumbs.find(item => item.routeLink === routeLink) ??
205
202
  {};
206
203
  return { queryParams, fragment };
207
204
  }
@@ -212,7 +209,7 @@ export class CmatBreadcrumbService {
212
209
  if (lastItem) {
213
210
  const { queryParams, fragment } = activatedRouteSnapshot;
214
211
  lastItem.queryParams = queryParams ? { ...queryParams } : undefined;
215
- lastItem.fragment = fragment === null ? void 0 : fragment;
212
+ lastItem.fragment = fragment ?? void 0;
216
213
  }
217
214
  }
218
215
  /**
@@ -324,13 +321,13 @@ export class CmatBreadcrumbService {
324
321
  }
325
322
  return config || {};
326
323
  }
327
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatBreadcrumbService, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
328
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatBreadcrumbService, providedIn: 'root' }); }
324
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatBreadcrumbService, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
325
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatBreadcrumbService, providedIn: 'root' }); }
329
326
  }
330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatBreadcrumbService, decorators: [{
327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatBreadcrumbService, decorators: [{
331
328
  type: Injectable,
332
329
  args: [{
333
330
  providedIn: 'root',
334
331
  }]
335
332
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }] });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUEwQyxjQUFjLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQWUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFRbkQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxHQUFHO0lBQ2YsTUFBTSxFQUFFLEdBQUc7SUFDWCxnQkFBZ0IsRUFBRSxTQUFTO0lBQzNCLGNBQWMsRUFBRSxRQUFRO0NBQzNCLENBQUM7QUFDRix5REFBeUQ7QUFFekQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBUSxFQUFXLEVBQUUsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBSzdFLE1BQU0sT0FBTyxxQkFBcUI7SUF5QjlCLFlBQW9CLGVBQStCLEVBQVUsT0FBZTtRQUF4RCxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBeEJwRSxjQUFTLEdBQUcsR0FBRyxDQUFDO1FBRWhCLG9CQUFlLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDN0Q7Ozs7V0FJRztRQUNLLDRCQUF1QixHQUErQixFQUFFLENBQUM7UUFFakU7Ozs7V0FJRztRQUNLLHdCQUFt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QyxDQUFDLE1BQU0sQ0FBQztRQUNqRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzlCLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQTRCO1FBQy9DLDZGQUE2RjtRQUM3RixJQUNJLE1BQU07WUFDTixDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsRUFDOUQsQ0FBQztZQUNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQVEsTUFBK0IsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQzs4R0F6WVEscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgR3VhcmRzQ2hlY2tFbmQsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBpc051bGwgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlICwgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDbWF0QnJlYWRjcnVtYiB9IGZyb20gJy4vdHlwZXMvYnJlYWRjcnVtYic7XHJcbmltcG9ydCB7IENtYXRCcmVhZGNydW1iRnVuY3Rpb24sIENtYXRCcmVhZGNydW1iT2JqZWN0LCB9IGZyb20gJy4vdHlwZXMvYnJlYWRjcnVtYi5jb25maWcnO1xyXG5cclxudHlwZSBDbWF0QnJlYWRjcnVtYkNvbmZpZyA9IENtYXRCcmVhZGNydW1iT2JqZWN0IHwgQ21hdEJyZWFkY3J1bWJGdW5jdGlvbiB8IHN0cmluZztcclxudHlwZSBTdG9yZU1hdGNoZXJLZXkgPSAncm91dGVMaW5rJyB8ICdyb3V0ZVJlZ2V4JyB8ICdhbGlhcyc7XHJcbmV4cG9ydCB0eXBlIENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbiA9IENtYXRCcmVhZGNydW1iICYgQ21hdEJyZWFkY3J1bWJPYmplY3Q7XHJcblxyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuY29uc3QgUEFUSF9QQVJBTSA9IHsgICAgXHJcbiAgICBQUkVGSVg6ICc6JyxcclxuICAgIFJFR0VYX0lERU5USUZJRVI6ICcvOlteL10rJyxcclxuICAgIFJFR0VYX1JFUExBQ0VSOiAnL1teL10rJyxcclxufTtcclxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXHJcblxyXG5jb25zdCBBTElBU19QUkVGSVggPSAnQCc7XHJcbmNvbnN0IGlzTm9uRW1wdHkgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IG9iaiAmJiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA+IDA7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0QnJlYWRjcnVtYlNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSBfYmFzZUhyZWYgPSAnLyc7XHJcblxyXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgLyoqXHJcbiAgICAgKiBkeW5hbWljQnJlYWRjcnVtYlN0b3JlIGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGR5bmFtaWNhbGx5IHVwZGF0ZWQgYnJlYWRjcnVtYnMuXHJcbiAgICAgKiBCcmVhZGNydW1icyBjYW4gYmUgc2V0IGZyb20gYW55d2hlcmUgKGNvbXBvbmVudCwgc2VydmljZSkgaW4gdGhlIGFwcC5cclxuICAgICAqIE9uIGV2ZXJ5IGJyZWFkY3J1bWIgdXBkYXRlIGNoZWNrIHRoaXMgc3RvcmUgYW5kIHVzZSB0aGUgaW5mbyBpZiBhdmFpbGFibGUuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2R5bmFtaWNCcmVhZGNydW1iU3RvcmU6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBicmVhZGNydW1iTGlzdCBmb3IgdGhlIGN1cnJlbnQgcm91dGVcclxuICAgICAqIFdoZW4gYnJlYWRjcnVtYiBpbmZvIGlzIGNoYW5nZWQgZHluYW1pY2FsbHksIGNoZWNrIGlmIHRoZSBjdXJyZW50QnJlYWRjcnVtYnMgaXMgZWZmZWN0ZWRcclxuICAgICAqIElmIGVmZmVjdGVkLCB1cGRhdGUgdGhlIGNoYW5nZSBhbmQgZW1pdCBhIG5ldyBzdHJlYW1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfY3VycmVudEJyZWFkY3J1bWJzOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNCcmVhZGNydW1iczogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEJyZWFkY3J1bWJzIG9ic2VydmFibGUgdG8gYmUgc3Vic2NyaWJlZCBieSBCcmVhZGNydW1iQ29tcG9uZW50XHJcbiAgICAgKiBFbWl0cyBvbiBldmVyeSByb3V0ZSBjaGFuZ2UgT1IgZHluYW1pYyB1cGRhdGUgb2YgYnJlYWRjcnVtYlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9icmVhZGNydW1icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10+KFtdKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgX3JvdXRlcjogUm91dGVyKSB7XHJcbiAgICAgICAgdGhpcy5fZGV0ZWN0Um91dGVDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJyZWFkY3J1bWJzJCgpOiBPYnNlcnZhYmxlPENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQodm9pZCAwKTtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIGJyZWFkY3J1bWIgZHluYW1pY2FsbHlcclxuICAgICAqXHJcbiAgICAgKiBrZXkgY2FuIGJlIGEgcGF0aCB8IGFsaWFzXHJcbiAgICAgKlxyXG4gICAgICogMSkgVXNpbmcgY29tcGxldGUgcm91dGUgcGF0aC4gcm91dGUgY2FuIGJlIHBhc3NlZCB0aGUgc2FtZSB3YXkgeW91IGRlZmluZSBhbmd1bGFyIHJvdXRlc1xyXG4gICAgICogLSBwYXRoIGNhbiBiZSBwYXNzZWQgYXMgJ2V4YWN0IHBhdGgocm91dGVMaW5rKScgb3IgJ3BhdGggd2l0aCBwYXJhbXMocm91dGVSZWdleCknXHJcbiAgICAgKiAtIHVwZGF0ZSBsYWJlbCBFeDogc2V0KCcvbWVudG9yJywgJ01lbnRvcicpLCBzZXQoJy9tZW50b3IvOmlkJywgJ01lbnRvciBEZXRhaWxzJylcclxuICAgICAqIC0gY2hhbmdlIHZpc2liaWxpdHkgRXg6IHNldCgnL21lbnRvci86aWQvZWRpdCcsIHsgc2tpcDogdHJ1ZSB9KVxyXG4gICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9SIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICogMikgVXNpbmcgcm91dGUgYWxpYXMgKHByZWZpeGVkIHdpdGggJ0AnKS4gYWxpYXMgc2hvdWxkIGJlIHVuaXF1ZSBmb3IgYSByb3V0ZVxyXG4gICAgICogLSB1cGRhdGUgbGFiZWwgRXg6IHNldCgnQG1lbnRvcicsICdFbmFibGVyJylcclxuICAgICAqIC0gY2hhbmdlIHZpc2liaWxpdHkgRXg6IHNldCgnQG1lbnRvckVkaXQnLCB7IHNraXA6IHRydWUgfSlcclxuICAgICAqXHJcbiAgICAgKlxyXG4gICAgICogdmFsdWUgY2FuIGJlIHN0cmluZyB8IEJyZWFkY3J1bWJPYmplY3QgfCBCcmVhZGNydW1iRnVuY3Rpb25cclxuICAgICAqL1xyXG4gICAgc2V0KGtleTogc3RyaW5nLCBicmVhZGNydW1iOiBzdHJpbmcgfCBDbWF0QnJlYWRjcnVtYk9iamVjdCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJPYmplY3QgPSB0aGlzLl9leHRyYWN0T2JqZWN0KGJyZWFkY3J1bWIpO1xyXG4gICAgICAgIGxldCB1cGRhdGVBcmdzOiBbU3RvcmVNYXRjaGVyS2V5LCBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25dO1xyXG5cclxuICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoQUxJQVNfUFJFRklYKSkge1xyXG4gICAgICAgICAgICB1cGRhdGVBcmdzID0gWydhbGlhcycsIHsgLi4uYnJlYWRjcnVtYk9iamVjdCwgYWxpYXM6IGtleS5zbGljZSgxKSB9XTtcclxuICAgICAgICB9IGVsc2UgaWYgKGtleS5pbmNsdWRlcyhQQVRIX1BBUkFNLlBSRUZJWCkpIHtcclxuICAgICAgICAgICAgdXBkYXRlQXJncyA9IFtcclxuICAgICAgICAgICAgICAgICdyb3V0ZVJlZ2V4JyxcclxuICAgICAgICAgICAgICAgIHsgLi4uYnJlYWRjcnVtYk9iamVjdCwgcm91dGVSZWdleDogdGhpcy5fYnVpbGRSZWdleChrZXkpIH0sXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXBkYXRlQXJncyA9IFtcclxuICAgICAgICAgICAgICAgICdyb3V0ZUxpbmsnLFxyXG4gICAgICAgICAgICAgICAgeyAuLi5icmVhZGNydW1iT2JqZWN0LCByb3V0ZUxpbms6IHRoaXMuX2Vuc3VyZUxlYWRpbmdTbGFzaChrZXkpIH0sXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBGb3IgdGhpcyByb3V0ZSBpZiBwcmV2aW91c2x5IGEgYnJlYWRjcnVtYiBpcyBub3QgZGVmaW5lZCB0aGF0IHNldHMgaXNBdXRvR2VuZXJhdGVkTGFiZWw6IHRydWVcclxuICAgICAgICAvLyBjaGFuZ2UgaXQgdG8gZmFsc2Ugc2luY2UgdGhpcyBpcyB1c2VyIHN1cHBsaWVkIHZhbHVlXHJcbiAgICAgICAgdXBkYXRlQXJnc1sxXS5pc0F1dG9HZW5lcmF0ZWRMYWJlbCA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLl91cGRhdGVTdG9yZSguLi51cGRhdGVBcmdzKTtcclxuICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50QnJlYWRjcnVtYnMoLi4udXBkYXRlQXJncyk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW5ldmVyIHJvdXRlIGNoYW5nZXMgYnVpbGQgYnJlYWRjcnVtYiBsaXN0IGFnYWluXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RldGVjdFJvdXRlQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICAvLyBTcGVjaWFsIGNhc2Ugd2hlcmUgYnJlYWRjcnVtYiBzZXJ2aWNlICYgY29tcG9uZW50IGluc3RhbnRpYXRlcyBhZnRlciBhIHJvdXRlIGlzIG5hdmlnYXRlZC5cclxuICAgICAgICAvLyBFeDogcHV0IGJyZWFkY3J1bWJzIHdpdGhpbiAqbmdJZiBhbmQgdGhpcy5yb3V0ZXIuZXZlbnRzIHdvdWxkIGJlIGVtcHR5XHJcbiAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBhbHNvIHJlcXVpcmVkIHdoZXJlICB7IGluaXRpYWxOYXZpZ2F0aW9uOiAnZW5hYmxlZEJsb2NraW5nJyB9IGlzIGFwcGxpZWQgdG8gcm91dGVzXHJcbiAgICAgICAgdGhpcy5fc2V0dXBCcmVhZGNydW1icyh0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdCk7XHJcblxyXG4gICAgICAgIHRoaXMuX3JvdXRlci5ldmVudHNcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIEd1YXJkc0NoZWNrRW5kID0+IGV2ZW50IGluc3RhbmNlb2YgR3VhcmRzQ2hlY2tFbmQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gYWN0aXZhdGVkUm91dGUgZG9lc24ndCBjYXJyeSBkYXRhIHdoZW4gc2hvdWxkUmV1c2VSb3V0ZSByZXR1cm5zIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIGV2ZW50IGRhdGEgd2l0aCBHdWFyZHNDaGVja0VuZCBhcyB3b3JrYXJvdW5kXHJcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3Igc2hvdWxkQWN0aXZhdGUgaW4gY2FzZSB3aGVyZSB0aGUgYXV0aEd1YXJkIHJldHVybnMgZmFsc2UgdGhlIGJyZWFkY3J1bWJzIHNob3VsZG4ndCBiZSBjaGFuZ2VkXHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuc2hvdWxkQWN0aXZhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cEJyZWFkY3J1bWJzKGV2ZW50LnN0YXRlLnJvb3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zZXR1cEJyZWFkY3J1bWJzKGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9wcmV2aW91c0JyZWFkY3J1bWJzID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzO1xyXG4gICAgICAgIC8vIGJyZWFkY3J1bWIgbGFiZWwgZm9yIGJhc2UgT1Igcm9vdCBwYXRoLiBVc3VhbGx5LCB0aGlzIGNhbiBiZSBzZXQgYXMgJ0hvbWUnXHJcbiAgICAgICAgY29uc3Qgcm9vdEJyZWFkY3J1bWIgPSB0aGlzLl9nZXRSb290QnJlYWRjcnVtYigpO1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icyA9IHJvb3RCcmVhZGNydW1iID8gW3Jvb3RCcmVhZGNydW1iXSA6IFtdO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVCcmVhZGNydW1iTGlzdChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCB0aGlzLl9iYXNlSHJlZik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZ2V0Um9vdEJyZWFkY3J1bWIoKTogQ21hdEJyZWFkY3J1bWIgfCB2b2lkIHtcclxuICAgICAgICBjb25zdCByb290Q29uZmlnID0gdGhpcy5fcm91dGVyLmNvbmZpZy5maW5kKGNvbmZpZyA9PiBjb25maWcucGF0aCA9PT0gJycpO1xyXG4gICAgICAgIGNvbnN0IHJvb3RCcmVhZGNydW1iID0gdGhpcy5fZXh0cmFjdE9iamVjdChyb290Q29uZmlnPy5kYXRhPy5bJ2JyZWFkY3J1bWInXSk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVJdGVtID0gdGhpcy5fZ2V0RnJvbVN0b3JlKCcvJywgcm9vdEJyZWFkY3J1bWIuYWxpYXMpO1xyXG5cclxuICAgICAgICBpZiAoaXNOb25FbXB0eShyb290QnJlYWRjcnVtYikgfHwgaXNOb25FbXB0eShzdG9yZUl0ZW0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdG9yZUl0ZW0sXHJcbiAgICAgICAgICAgICAgICAuLi5yb290QnJlYWRjcnVtYixcclxuICAgICAgICAgICAgICAgIHJvdXRlTGluazogdGhpcy5fYmFzZUhyZWYsXHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9nZXRRdWVyeVBhcmFtc0Zyb21QcmV2aW91c0xpc3QoJy8nKSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUJyZWFkY3J1bWJJdGVtKFxyXG4gICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICAgICAgcm91dGVMaW5rUHJlZml4OiBzdHJpbmdcclxuICAgICk6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbiB7XHJcbiAgICAgICAgY29uc3QgeyBwYXRoLCBicmVhZGNydW1iIH0gPSB0aGlzLl9wYXJzZVJvdXRlRGF0YShcclxuICAgICAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5yb3V0ZUNvbmZpZ1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc29sdmVkU2VnbWVudCA9IHRoaXMuX3Jlc29sdmVQYXRoU2VnbWVudChwYXRoLCBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTtcclxuICAgICAgICBjb25zdCByb3V0ZUxpbmsgPSBgJHtyb3V0ZUxpbmtQcmVmaXh9JHtyZXNvbHZlZFNlZ21lbnR9YDtcclxuICAgICAgICBjb25zdCBzdG9yZUl0ZW0gPSB0aGlzLl9nZXRGcm9tU3RvcmUocm91dGVMaW5rLCBicmVhZGNydW1iLmFsaWFzKTtcclxuXHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLl9leHRyYWN0TGFiZWwoXHJcbiAgICAgICAgICAgIHN0b3JlSXRlbT8ubGFiZWwgfHwgYnJlYWRjcnVtYj8ubGFiZWwsXHJcbiAgICAgICAgICAgIHJlc29sdmVkU2VnbWVudFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbGV0IGlzQXV0b0dlbmVyYXRlZExhYmVsID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGF1dG9HZW5lcmF0ZWRMYWJlbCA9ICcnO1xyXG4gICAgICAgIGlmICghbGFiZWwpIHtcclxuICAgICAgICAgICAgaXNBdXRvR2VuZXJhdGVkTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICBhdXRvR2VuZXJhdGVkTGFiZWwgPSByZXNvbHZlZFNlZ21lbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5zdG9yZUl0ZW0sXHJcbiAgICAgICAgICAgIC4uLmJyZWFkY3J1bWIsXHJcbiAgICAgICAgICAgIGxhYmVsOiBpc0F1dG9HZW5lcmF0ZWRMYWJlbCA/IGF1dG9HZW5lcmF0ZWRMYWJlbCA6IGxhYmVsLFxyXG4gICAgICAgICAgICByb3V0ZUxpbmssXHJcbiAgICAgICAgICAgIGlzQXV0b0dlbmVyYXRlZExhYmVsLFxyXG4gICAgICAgICAgICAuLi50aGlzLl9nZXRRdWVyeVBhcmFtc0Zyb21QcmV2aW91c0xpc3Qocm91dGVMaW5rKSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ByZXBhcmVCcmVhZGNydW1iTGlzdChcclxuICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgICAgIHJvdXRlTGlua1ByZWZpeDogc3RyaW5nXHJcbiAgICApOiBDbWF0QnJlYWRjcnVtYltdIHwgdm9pZCB7XHJcbiAgICAgICAgaWYgKGFjdGl2YXRlZFJvdXRlU25hcHNob3Qucm91dGVDb25maWcgJiYgYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWJJdGVtID0gdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJJdGVtKFxyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICAgICAgICAgIHJvdXRlTGlua1ByZWZpeFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iSXRlbSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJMaXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1iSXRlbS5yb3V0ZUxpbmsgKyAnLydcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJMaXN0KFxyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkLFxyXG4gICAgICAgICAgICAgICAgcm91dGVMaW5rUHJlZml4XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxhc3RDcnVtYiA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1ic1tcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmxlbmd0aCAtIDFcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuX3NldFF1ZXJ5UGFyYW1zRm9yQWN0aXZlQnJlYWRjcnVtYihsYXN0Q3J1bWIsIGFjdGl2YXRlZFJvdXRlU25hcHNob3QpO1xyXG5cclxuICAgICAgICAvLyByZW1vdmUgYnJlYWRjcnVtYiBpdGVtcyB0aGF0IG5lZWRzIHRvIGJlIGhpZGRlblxyXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzVG9TaG93ID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmZpbHRlcihcclxuICAgICAgICAgICAgaXRlbSA9PiAhaXRlbS5za2lwXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9icmVhZGNydW1icy5uZXh0KGJyZWFkY3J1bWJzVG9TaG93KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRGcm9tU3RvcmUocm91dGVMaW5rOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nKTogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uIHwgdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmUuZmluZChpdGVtID0+IChcclxuICAgICAgICAgICAgKGFsaWFzICYmIGFsaWFzID09PSBpdGVtLmFsaWFzKSB8fFxyXG4gICAgICAgICAgICAocm91dGVMaW5rICYmIHJvdXRlTGluayA9PT0gaXRlbS5yb3V0ZUxpbmspIHx8XHJcbiAgICAgICAgICAgIHRoaXMuX21hdGNoUmVnZXgocm91dGVMaW5rLCBpdGVtLnJvdXRlUmVnZXgpXHJcbiAgICAgICAgKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB1c2UgZXhhY3QgbWF0Y2ggaW5zdGVhZCBvZiByZWdleHAudGVzdFxyXG4gICAgICogZm9yIC9tZW50b3IvW14vXSsgd2Ugc2hvdWxkIG1hdGNoICcvbWVudG9yLzEyJyBidXQgbm90ICcvbWVudG9yLzEyL2FiYydcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbWF0Y2hSZWdleChyb3V0ZUxpbms/OiBzdHJpbmcsIHJvdXRlUmVnZXg/OiBzdHJpbmcpOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHJvdXRlUmVnZXggJiYgcm91dGVMaW5rKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gcm91dGVMaW5rLm1hdGNoKG5ldyBSZWdFeHAocm91dGVSZWdleCkpO1xyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMF0gPT09IHJvdXRlTGluaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWYgdGhlIHBhdGggc2VnbWVudCBoYXMgcm91dGUgcGFyYW1zLCByZWFkIHRoZSBwYXJhbSB2YWx1ZSBmcm9tIHVybFxyXG4gICAgICogZm9yIGVhY2ggc2VnbWVudCBvZiByb3V0ZSB0aGlzIGdldHMgY2FsbGVkXHJcbiAgICAgKlxyXG4gICAgICogZm9yIG1lbnRvci86aWQvdmlldyAtIGl0IGdldHMgY2FsbGVkIHdpdGggbWVudG9yLCA6aWQsIHZpZXcgMyB0aW1lc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yZXNvbHZlUGF0aFNlZ21lbnQoc2VnbWVudDogc3RyaW5nLCBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogc3RyaW5nIHtcclxuICAgICAgICAvL3F1aXJrIC1zZWdtZW50IGNhbiBiZSBkZWZpbmVkIGFzIHZpZXcvOmlkIGluIHJvdXRlIGNvbmZpZyBpbiB3aGljaCBjYXNlIHlvdSBuZWVkIHRvIG1ha2UgaXQgdmlldy88cmVzb2x2ZWQtcGFyYW0+XHJcbiAgICAgICAgaWYgKHNlZ21lbnQuaW5jbHVkZXMoUEFUSF9QQVJBTS5QUkVGSVgpKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGFjdGl2YXRlZFJvdXRlU25hcHNob3QucGFyYW1zKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnQgPSBzZWdtZW50LnJlcGxhY2UoYDoke2tleX1gLCBgJHt2YWx1ZX1gKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzZWdtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcXVlcnlQYXJhbXMgJiBmcmFnbWVudHMgZm9yIHByZXZpb3VzIGJyZWFkY3J1bWIgcGF0aCBhcmUgY29waWVkIG92ZXIgdG8gbmV3IGxpc3RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZ2V0UXVlcnlQYXJhbXNGcm9tUHJldmlvdXNMaXN0KHJvdXRlTGluazogc3RyaW5nKTogQ21hdEJyZWFkY3J1bWIge1xyXG4gICAgICAgIGNvbnN0IHsgcXVlcnlQYXJhbXMsIGZyYWdtZW50IH0gPVxyXG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c0JyZWFkY3J1bWJzLmZpbmQoaXRlbSA9PiBpdGVtLnJvdXRlTGluayA9PT0gcm91dGVMaW5rKSB8fFxyXG4gICAgICAgICAgICB7fTtcclxuICAgICAgICByZXR1cm4geyBxdWVyeVBhcmFtcywgZnJhZ21lbnQgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHNldCBjdXJyZW50IGFjdGl2YXRlZCByb3V0ZSBxdWVyeSBwYXJhbXMgdG8gdGhlIGxhc3QgYnJlYWRjcnVtYiBpdGVtXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3NldFF1ZXJ5UGFyYW1zRm9yQWN0aXZlQnJlYWRjcnVtYihcclxuICAgICAgICBsYXN0SXRlbTogQ21hdEJyZWFkY3J1bWIsXHJcbiAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGxhc3RJdGVtKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcXVlcnlQYXJhbXMsIGZyYWdtZW50IH0gPSBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90O1xyXG4gICAgICAgICAgICBsYXN0SXRlbS5xdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zID8geyAuLi5xdWVyeVBhcmFtcyB9IDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBsYXN0SXRlbS5mcmFnbWVudCA9IGZyYWdtZW50ID09PSBudWxsID8gdm9pZCAwIDogZnJhZ21lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yIGEgc3BlY2lmaWMgcm91dGUsIGJyZWFkY3J1bWIgY2FuIGJlIGRlZmluZWQgZWl0aGVyIG9uIHBhcmVudCBPUiBpdCdzIGNoaWxkKHdoaWNoIGhhcyBlbXB0eSBwYXRoKVxyXG4gICAgICogV2hlbiBib3RoIGFyZSBkZWZpbmVkLCBjaGlsZCB0YWtlcyBwcmVjZWRlbmNlXHJcbiAgICAgKlxyXG4gICAgICogRXg6IEJlbG93IHdlIGFyZSBzZXR0aW5nIGJyZWFkY3J1bWIgb24gYm90aCBwYXJlbnQgYW5kIGNoaWxkLlxyXG4gICAgICogU28sIGNoaWxkIHRha2VzIHByZWNlZGVuY2UgYW5kIFwiRGVmaW5lZCBPbiBDaGlsZFwiIGlzIGRpc3BsYXllZCBmb3IgdGhlIHJvdXRlICdob21lJ1xyXG4gICAgICogeyBwYXRoOiAnaG9tZScsIGxvYWRDaGlsZHJlbjogJy4vaG9tZS9ob21lLm1vZHVsZSNIb21lTW9kdWxlJyAsIGRhdGE6IHticmVhZGNydW1iOiBcIkRlZmluZWQgT24gTW9kdWxlXCJ9fVxyXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkRcclxuICAgICAqIGNoaWxkcmVuOiBbXHJcbiAgICAgKiAgIHsgcGF0aDogJycsIGNvbXBvbmVudDogU2hvd1VzZXJDb21wb25lbnQsIGRhdGE6IHticmVhZGNydW1iOiBcIkRlZmluZWQgT24gQ2hpbGRcIiB9XHJcbiAgICAgKiBdXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3BhcnNlUm91dGVEYXRhKHJvdXRlQ29uZmlnOiBSb3V0ZSB8IG51bGwpOiBhbnkge1xyXG4gICAgICAgIGlmIChpc051bGwocm91dGVDb25maWcpKVxyXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xyXG5cclxuICAgICAgICBjb25zdCB7IHBhdGgsIGRhdGEgfSA9IHJvdXRlQ29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLl9tZXJnZVdpdGhCYXNlQ2hpbGREYXRhKFxyXG4gICAgICAgICAgICByb3V0ZUNvbmZpZyxcclxuICAgICAgICAgICAgZGF0YT8uWydicmVhZGNydW1iJ11cclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4geyBwYXRoLCBicmVhZGNydW1iIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBnZXQgZW1wdHkgY2hpbGRyZW4gb2YgYSBtb2R1bGUgb3IgQ29tcG9uZW50LiBFbXB0eSBjaGlsZCBpcyB0aGUgb25lIHdpdGggcGF0aDogJydcclxuICAgICAqIFdoZW4gcGFyZW50IGFuZCBpdCdzIGNoaWxkcmVuICh0aGF0IGhhcyBlbXB0eSByb3V0ZSBwYXRoKSBkZWZpbmUgZGF0YSBtZXJnZSB0aGVtIGJvdGggd2l0aCBjaGlsZCB0YWtpbmcgcHJlY2VkZW5jZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tZXJnZVdpdGhCYXNlQ2hpbGREYXRhKFxyXG4gICAgICAgIHJvdXRlQ29uZmlnOiBhbnksXHJcbiAgICAgICAgY29uZmlnOiBDbWF0QnJlYWRjcnVtYkNvbmZpZ1xyXG4gICAgKTogQ21hdEJyZWFkY3J1bWJPYmplY3Qge1xyXG4gICAgICAgIGlmICghcm91dGVDb25maWcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V4dHJhY3RPYmplY3QoY29uZmlnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBiYXNlQ2hpbGQ6IFJvdXRlIHwgdm9pZCA9IHZvaWQgMDtcclxuICAgICAgICBpZiAocm91dGVDb25maWcubG9hZENoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIC8vIFRvIGhhbmRsZSBhIG1vZHVsZSB3aXRoIGVtcHR5IGNoaWxkIHJvdXRlXHJcbiAgICAgICAgICAgIGJhc2VDaGlsZCA9IHJvdXRlQ29uZmlnLl9sb2FkZWRSb3V0ZXMuZmluZCgocm91dGU6IHsgcGF0aDogc3RyaW5nOyB9KSA9PiByb3V0ZS5wYXRoID09PSAnJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyb3V0ZUNvbmZpZy5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAvLyBUbyBoYW5kbGUgYSBjb21wb25lbnQgd2l0aCBlbXB0eSBjaGlsZCByb3V0ZVxyXG4gICAgICAgICAgICBiYXNlQ2hpbGQgPSByb3V0ZUNvbmZpZy5jaGlsZHJlbi5maW5kKChyb3V0ZTogeyBwYXRoOiBzdHJpbmc7IH0pID0+IHJvdXRlLnBhdGggPT09ICcnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNoaWxkQ29uZmlnID0gYmFzZUNoaWxkPy5kYXRhPy5bJ2JyZWFkY3J1bWInXTtcclxuICAgICAgICByZXR1cm4gY2hpbGRDb25maWdcclxuICAgICAgICAgICAgPyB0aGlzLl9tZXJnZVdpdGhCYXNlQ2hpbGREYXRhKGJhc2VDaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZXh0cmFjdE9iamVjdChjb25maWcpLFxyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZXh0cmFjdE9iamVjdChjaGlsZENvbmZpZyksXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIDogdGhpcy5fZXh0cmFjdE9iamVjdChjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRoZSBzdG9yZSB0byByZXVzZSBmb3IgZHluYW1pYyBkZWNsYXJhdGlvbnNcclxuICAgICAqIElmIHRoZSBzdG9yZSBhbHJlYWR5IGhhcyB0aGlzIHJvdXRlIGRlZmluaXRpb24gdXBkYXRlIGl0LCBlbHNlIGFkZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF91cGRhdGVTdG9yZShrZXk6IHN0cmluZywgYnJlYWRjcnVtYjogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVJdGVtSW5kZXggPSB0aGlzLl9keW5hbWljQnJlYWRjcnVtYlN0b3JlLmZpbmRJbmRleChpdGVtID0+IChicmVhZGNydW1iIGFzIGFueSlba2V5XSA9PT0gKGl0ZW0gYXMgYW55KVtrZXldKTtcclxuICAgICAgICBpZiAoc3RvcmVJdGVtSW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLl9keW5hbWljQnJlYWRjcnVtYlN0b3JlW3N0b3JlSXRlbUluZGV4XSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmVbc3RvcmVJdGVtSW5kZXhdLFxyXG4gICAgICAgICAgICAgICAgLi4uYnJlYWRjcnVtYixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9keW5hbWljQnJlYWRjcnVtYlN0b3JlLnB1c2goeyAuLi5icmVhZGNydW1iIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIGJyZWFkY3J1bWIgaXMgcHJlc2VudCBpbiBjdXJyZW50IGJyZWFkY3J1bWJzIHVwZGF0ZSBpdCBhbmQgZW1pdCBuZXcgc3RyZWFtXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3VwZGF0ZUN1cnJlbnRCcmVhZGNydW1icyhcclxuICAgICAgICBrZXk6IHN0cmluZyxcclxuICAgICAgICBicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25cclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icy5maW5kSW5kZXgoaXRlbSA9PiBrZXkgPT09ICdyb3V0ZVJlZ2V4J1xyXG4gICAgICAgICAgICA/IHRoaXMuX21hdGNoUmVnZXgoaXRlbS5yb3V0ZUxpbmssIGJyZWFkY3J1bWJba2V5XSlcclxuICAgICAgICAgICAgOiAoYnJlYWRjcnVtYiBhcyBhbnkpW2tleV0gPT09IChpdGVtIGFzIGFueSlba2V5XSk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRCcmVhZGNydW1ic1tpdGVtSW5kZXhdID0ge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fY3VycmVudEJyZWFkY3J1bWJzW2l0ZW1JbmRleF0sXHJcbiAgICAgICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1ic1RvU2hvdyA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICBpdGVtID0+ICFpdGVtLnNraXBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5fYnJlYWRjcnVtYnMubmV4dChbLi4uYnJlYWRjcnVtYnNUb1Nob3ddKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3IgYSByb3V0ZSB3aXRoIHBhdGggcGFyYW0sIHdlIGNyZWF0ZSByZWdleCBkeW5hbWljYWxseSBmcm9tIGFuZ3VsYXIgcm91dGUgc3ludGF4XHJcbiAgICAgKiAnL21lbnRvci86aWQnIGJlY29tZXMgJy9tZW50b3IvW14vXScsXHJcbiAgICAgKiBicmVhZGNydW1iU2VydmljZS5zZXQoJy9tZW50b3IvOmlkJywgJ1VkYXknKSBzaG91bGQgdXBkYXRlICdVZGF5JyBhcyBsYWJlbCBmb3IgJy9tZW50b3IvMicgT1IgJ21lbnRvci9hZGEnXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2J1aWxkUmVnZXgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZW5zdXJlTGVhZGluZ1NsYXNoKHBhdGgpLnJlcGxhY2UoXHJcbiAgICAgICAgICAgIG5ldyBSZWdFeHAoUEFUSF9QQVJBTS5SRUdFWF9JREVOVElGSUVSLCAnZycpLFxyXG4gICAgICAgICAgICBQQVRIX1BBUkFNLlJFR0VYX1JFUExBQ0VSXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9lbnN1cmVMZWFkaW5nU2xhc2gocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKCcvJykgPyBwYXRoIDogYC8ke3BhdGh9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluIEFwcCdzIFJvdXRlQ29uZmlnLCBicmVhZGNydW1iIGNhbiBiZSBkZWZpbmVkIGFzIGEgc3RyaW5nIE9SIGEgZnVuY3Rpb24gT1IgYW4gb2JqZWN0XHJcbiAgICAgKlxyXG4gICAgICogc3RyaW5nOiBzaW1wbGUgc3RhdGljIGJyZWFkY3J1bWIgbGFiZWwgZm9yIGEgcGF0aFxyXG4gICAgICogZnVuY3Rpb246IGNhbGxiYWNrIHRoYXQgZ2V0cyBpbnZva2VkIHdpdGggcmVzb2x2ZWQgcGF0aCBwYXJhbVxyXG4gICAgICogb2JqZWN0OiBhZGRpdGlvbmFsIGRhdGEgZGVmaW5lZCBhbG9uZyB3aXRoIGJyZWFkY3J1bWIgbGFiZWwgdGhhdCBnZXRzIHBhc3NlZCB0byAqY21hdEJyZWFkY3J1bWJJdGVtIGRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9leHRyYWN0TGFiZWwoY29uZmlnOiBDbWF0QnJlYWRjcnVtYkNvbmZpZywgcmVzb2x2ZWRQYXJhbT86IHN0cmluZyk6IHN0cmluZyB8IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgPyBjb25maWcubGFiZWwgOiBjb25maWc7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBsYWJlbCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbGFiZWwocmVzb2x2ZWRQYXJhbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9leHRyYWN0T2JqZWN0KGNvbmZpZzogQ21hdEJyZWFkY3J1bWJDb25maWcpOiBDbWF0QnJlYWRjcnVtYk9iamVjdCB7XHJcbiAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSB7bGFiZWx9IGlmIGNvbmZpZyBpcyB1bmRlZmluZWQuIFRoaXMgaXMgaW1wb3J0YW50IHNpbmNlIHdlIG1lcmdlIHRoZSBjb25maWdzXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBjb25maWcgJiZcclxuICAgICAgICAgICAgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjb25maWcgPT09ICdmdW5jdGlvbicpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBjb25maWcgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIChjb25maWcgYXMgQ21hdEJyZWFkY3J1bWJPYmplY3QpIHx8IHt9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUEwQyxjQUFjLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQWMsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFRbkQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxHQUFHO0lBQ2YsTUFBTSxFQUFFLEdBQUc7SUFDWCxnQkFBZ0IsRUFBRSxTQUFTO0lBQzNCLGNBQWMsRUFBRSxRQUFRO0NBQzNCLENBQUM7QUFHRixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7QUFDekIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFRLEVBQVcsRUFBRSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFLN0UsTUFBTSxPQUFPLHFCQUFxQjtJQXlCOUIsWUFBb0IsZUFBK0IsRUFBVSxPQUFlO1FBQXhELG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVE7UUF4QnBFLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFFaEIsb0JBQWUsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM3RDs7OztXQUlHO1FBQ0ssNEJBQXVCLEdBQStCLEVBQUUsQ0FBQztRQUVqRTs7OztXQUlHO1FBQ0ssd0JBQW1CLEdBQStCLEVBQUUs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O1lBQzlCLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQTRCO1FBQy9DLDZGQUE2RjtRQUM3RixJQUNJLE1BQU07WUFDTixDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsRUFDOUQsQ0FBQztZQUNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQVEsTUFBK0IsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQzs4R0F2WVEscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgR3VhcmRzQ2hlY2tFbmQsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBpc051bGwgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENtYXRCcmVhZGNydW1iIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iJztcclxuaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWJGdW5jdGlvbiwgQ21hdEJyZWFkY3J1bWJPYmplY3QsIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iLmNvbmZpZyc7XHJcblxyXG50eXBlIENtYXRCcmVhZGNydW1iQ29uZmlnID0gQ21hdEJyZWFkY3J1bWJPYmplY3QgfCBDbWF0QnJlYWRjcnVtYkZ1bmN0aW9uIHwgc3RyaW5nO1xyXG50eXBlIFN0b3JlTWF0Y2hlcktleSA9ICdyb3V0ZUxpbmsnIHwgJ3JvdXRlUmVnZXgnIHwgJ2FsaWFzJztcclxuZXhwb3J0IHR5cGUgQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uID0gQ21hdEJyZWFkY3J1bWIgJiBDbWF0QnJlYWRjcnVtYk9iamVjdDtcclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG5jb25zdCBQQVRIX1BBUkFNID0ge1xyXG4gICAgUFJFRklYOiAnOicsXHJcbiAgICBSRUdFWF9JREVOVElGSUVSOiAnLzpbXi9dKycsXHJcbiAgICBSRUdFWF9SRVBMQUNFUjogJy9bXi9dKycsXHJcbn07XHJcblxyXG5cclxuY29uc3QgQUxJQVNfUFJFRklYID0gJ0AnO1xyXG5jb25zdCBpc05vbkVtcHR5ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiBvYmogJiYgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPiAwO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdEJyZWFkY3J1bWJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgX2Jhc2VIcmVmID0gJy8nO1xyXG5cclxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIC8qKlxyXG4gICAgICogZHluYW1pY0JyZWFkY3J1bWJTdG9yZSBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBkeW5hbWljYWxseSB1cGRhdGVkIGJyZWFkY3J1bWJzLlxyXG4gICAgICogQnJlYWRjcnVtYnMgY2FuIGJlIHNldCBmcm9tIGFueXdoZXJlIChjb21wb25lbnQsIHNlcnZpY2UpIGluIHRoZSBhcHAuXHJcbiAgICAgKiBPbiBldmVyeSBicmVhZGNydW1iIHVwZGF0ZSBjaGVjayB0aGlzIHN0b3JlIGFuZCB1c2UgdGhlIGluZm8gaWYgYXZhaWxhYmxlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9keW5hbWljQnJlYWRjcnVtYlN0b3JlOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogYnJlYWRjcnVtYkxpc3QgZm9yIHRoZSBjdXJyZW50IHJvdXRlXHJcbiAgICAgKiBXaGVuIGJyZWFkY3J1bWIgaW5mbyBpcyBjaGFuZ2VkIGR5bmFtaWNhbGx5LCBjaGVjayBpZiB0aGUgY3VycmVudEJyZWFkY3J1bWJzIGlzIGVmZmVjdGVkXHJcbiAgICAgKiBJZiBlZmZlY3RlZCwgdXBkYXRlIHRoZSBjaGFuZ2UgYW5kIGVtaXQgYSBuZXcgc3RyZWFtXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2N1cnJlbnRCcmVhZGNydW1iczogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10gPSBbXTtcclxuICAgIHByaXZhdGUgX3ByZXZpb3VzQnJlYWRjcnVtYnM6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCcmVhZGNydW1icyBvYnNlcnZhYmxlIHRvIGJlIHN1YnNjcmliZWQgYnkgQnJlYWRjcnVtYkNvbXBvbmVudFxyXG4gICAgICogRW1pdHMgb24gZXZlcnkgcm91dGUgY2hhbmdlIE9SIGR5bmFtaWMgdXBkYXRlIG9mIGJyZWFkY3J1bWJcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYnJlYWRjcnVtYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdPihbXSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgICAgIHRoaXMuX2RldGVjdFJvdXRlQ2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBicmVhZGNydW1icyQoKTogT2JzZXJ2YWJsZTxDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9icmVhZGNydW1icy5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KHZvaWQgMCk7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSBicmVhZGNydW1iIGR5bmFtaWNhbGx5XHJcbiAgICAgKlxyXG4gICAgICoga2V5IGNhbiBiZSBhIHBhdGggfCBhbGlhc1xyXG4gICAgICpcclxuICAgICAqIDEpIFVzaW5nIGNvbXBsZXRlIHJvdXRlIHBhdGguIHJvdXRlIGNhbiBiZSBwYXNzZWQgdGhlIHNhbWUgd2F5IHlvdSBkZWZpbmUgYW5ndWxhciByb3V0ZXNcclxuICAgICAqIC0gcGF0aCBjYW4gYmUgcGFzc2VkIGFzICdleGFjdCBwYXRoKHJvdXRlTGluayknIG9yICdwYXRoIHdpdGggcGFyYW1zKHJvdXRlUmVnZXgpJ1xyXG4gICAgICogLSB1cGRhdGUgbGFiZWwgRXg6IHNldCgnL21lbnRvcicsICdNZW50b3InKSwgc2V0KCcvbWVudG9yLzppZCcsICdNZW50b3IgRGV0YWlscycpXHJcbiAgICAgKiAtIGNoYW5nZSB2aXNpYmlsaXR5IEV4OiBzZXQoJy9tZW50b3IvOmlkL2VkaXQnLCB7IHNraXA6IHRydWUgfSlcclxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPUiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAqIDIpIFVzaW5nIHJvdXRlIGFsaWFzIChwcmVmaXhlZCB3aXRoICdAJykuIGFsaWFzIHNob3VsZCBiZSB1bmlxdWUgZm9yIGEgcm91dGVcclxuICAgICAqIC0gdXBkYXRlIGxhYmVsIEV4OiBzZXQoJ0BtZW50b3InLCAnRW5hYmxlcicpXHJcbiAgICAgKiAtIGNoYW5nZSB2aXNpYmlsaXR5IEV4OiBzZXQoJ0BtZW50b3JFZGl0JywgeyBza2lwOiB0cnVlIH0pXHJcbiAgICAgKlxyXG4gICAgICpcclxuICAgICAqIHZhbHVlIGNhbiBiZSBzdHJpbmcgfCBCcmVhZGNydW1iT2JqZWN0IHwgQnJlYWRjcnVtYkZ1bmN0aW9uXHJcbiAgICAgKi9cclxuICAgIHNldChrZXk6IHN0cmluZywgYnJlYWRjcnVtYjogc3RyaW5nIHwgQ21hdEJyZWFkY3J1bWJPYmplY3QpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBicmVhZGNydW1iT2JqZWN0ID0gdGhpcy5fZXh0cmFjdE9iamVjdChicmVhZGNydW1iKTtcclxuICAgICAgICBsZXQgdXBkYXRlQXJnczogW1N0b3JlTWF0Y2hlcktleSwgQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uXTtcclxuXHJcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKEFMSUFTX1BSRUZJWCkpIHtcclxuICAgICAgICAgICAgdXBkYXRlQXJncyA9IFsnYWxpYXMnLCB7IC4uLmJyZWFkY3J1bWJPYmplY3QsIGFsaWFzOiBrZXkuc2xpY2UoMSkgfV07XHJcbiAgICAgICAgfSBlbHNlIGlmIChrZXkuaW5jbHVkZXMoUEFUSF9QQVJBTS5QUkVGSVgpKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUFyZ3MgPSBbXHJcbiAgICAgICAgICAgICAgICAncm91dGVSZWdleCcsXHJcbiAgICAgICAgICAgICAgICB7IC4uLmJyZWFkY3J1bWJPYmplY3QsIHJvdXRlUmVnZXg6IHRoaXMuX2J1aWxkUmVnZXgoa2V5KSB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUFyZ3MgPSBbXHJcbiAgICAgICAgICAgICAgICAncm91dGVMaW5rJyxcclxuICAgICAgICAgICAgICAgIHsgLi4uYnJlYWRjcnVtYk9iamVjdCwgcm91dGVMaW5rOiB0aGlzLl9lbnN1cmVMZWFkaW5nU2xhc2goa2V5KSB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRm9yIHRoaXMgcm91dGUgaWYgcHJldmlvdXNseSBhIGJyZWFkY3J1bWIgaXMgbm90IGRlZmluZWQgdGhhdCBzZXRzIGlzQXV0b0dlbmVyYXRlZExhYmVsOiB0cnVlXHJcbiAgICAgICAgLy8gY2hhbmdlIGl0IHRvIGZhbHNlIHNpbmNlIHRoaXMgaXMgdXNlciBzdXBwbGllZCB2YWx1ZVxyXG4gICAgICAgIHVwZGF0ZUFyZ3NbMV0uaXNBdXRvR2VuZXJhdGVkTGFiZWwgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5fdXBkYXRlU3RvcmUoLi4udXBkYXRlQXJncyk7XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEJyZWFkY3J1bWJzKC4uLnVwZGF0ZUFyZ3MpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuZXZlciByb3V0ZSBjaGFuZ2VzIGJ1aWxkIGJyZWFkY3J1bWIgbGlzdCBhZ2FpblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kZXRlY3RSb3V0ZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gU3BlY2lhbCBjYXNlIHdoZXJlIGJyZWFkY3J1bWIgc2VydmljZSAmIGNvbXBvbmVudCBpbnN0YW50aWF0ZXMgYWZ0ZXIgYSByb3V0ZSBpcyBuYXZpZ2F0ZWQuXHJcbiAgICAgICAgLy8gRXg6IHB1dCBicmVhZGNydW1icyB3aXRoaW4gKm5nSWYgYW5kIHRoaXMucm91dGVyLmV2ZW50cyB3b3VsZCBiZSBlbXB0eVxyXG4gICAgICAgIC8vIFRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGVyZSAgeyBpbml0aWFsTmF2aWdhdGlvbjogJ2VuYWJsZWRCbG9ja2luZycgfSBpcyBhcHBsaWVkIHRvIHJvdXRlc1xyXG4gICAgICAgIHRoaXMuX3NldHVwQnJlYWRjcnVtYnModGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QpO1xyXG5cclxuICAgICAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSxcclxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBHdWFyZHNDaGVja0VuZCA9PiBldmVudCBpbnN0YW5jZW9mIEd1YXJkc0NoZWNrRW5kKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGFjdGl2YXRlZFJvdXRlIGRvZXNuJ3QgY2FycnkgZGF0YSB3aGVuIHNob3VsZFJldXNlUm91dGUgcmV0dXJucyBmYWxzZVxyXG4gICAgICAgICAgICAgICAgLy8gdXNlIHRoZSBldmVudCBkYXRhIHdpdGggR3VhcmRzQ2hlY2tFbmQgYXMgd29ya2Fyb3VuZFxyXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHNob3VsZEFjdGl2YXRlIGluIGNhc2Ugd2hlcmUgdGhlIGF1dGhHdWFyZCByZXR1cm5zIGZhbHNlIHRoZSBicmVhZGNydW1icyBzaG91bGRuJ3QgYmUgY2hhbmdlZFxyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnNob3VsZEFjdGl2YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBCcmVhZGNydW1icyhldmVudC5zdGF0ZS5yb290KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0dXBCcmVhZGNydW1icyhhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcHJldmlvdXNCcmVhZGNydW1icyA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icztcclxuICAgICAgICAvLyBicmVhZGNydW1iIGxhYmVsIGZvciBiYXNlIE9SIHJvb3QgcGF0aC4gVXN1YWxseSwgdGhpcyBjYW4gYmUgc2V0IGFzICdIb21lJ1xyXG4gICAgICAgIGNvbnN0IHJvb3RCcmVhZGNydW1iID0gdGhpcy5fZ2V0Um9vdEJyZWFkY3J1bWIoKTtcclxuICAgICAgICB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnMgPSByb290QnJlYWRjcnVtYiA/IFtyb290QnJlYWRjcnVtYl0gOiBbXTtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlQnJlYWRjcnVtYkxpc3QoYWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgdGhpcy5fYmFzZUhyZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldFJvb3RCcmVhZGNydW1iKCk6IENtYXRCcmVhZGNydW1iIHwgdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgcm9vdENvbmZpZyA9IHRoaXMuX3JvdXRlci5jb25maWcuZmluZChjb25maWcgPT4gY29uZmlnLnBhdGggPT09ICcnKTtcclxuICAgICAgICBjb25zdCByb290QnJlYWRjcnVtYiA9IHRoaXMuX2V4dHJhY3RPYmplY3Qocm9vdENvbmZpZz8uZGF0YT8uWydicmVhZGNydW1iJ10pO1xyXG4gICAgICAgIGNvbnN0IHN0b3JlSXRlbSA9IHRoaXMuX2dldEZyb21TdG9yZSgnLycsIHJvb3RCcmVhZGNydW1iLmFsaWFzKTtcclxuXHJcbiAgICAgICAgaWYgKGlzTm9uRW1wdHkocm9vdEJyZWFkY3J1bWIpIHx8IGlzTm9uRW1wdHkoc3RvcmVJdGVtKSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RvcmVJdGVtLFxyXG4gICAgICAgICAgICAgICAgLi4ucm9vdEJyZWFkY3J1bWIsXHJcbiAgICAgICAgICAgICAgICByb3V0ZUxpbms6IHRoaXMuX2Jhc2VIcmVmLFxyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZ2V0UXVlcnlQYXJhbXNGcm9tUHJldmlvdXNMaXN0KCcvJyksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ByZXBhcmVCcmVhZGNydW1iSXRlbShcclxuICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgICAgIHJvdXRlTGlua1ByZWZpeDogc3RyaW5nXHJcbiAgICApOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24ge1xyXG4gICAgICAgIGNvbnN0IHsgcGF0aCwgYnJlYWRjcnVtYiB9ID0gdGhpcy5fcGFyc2VSb3V0ZURhdGEoXHJcbiAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3Qucm91dGVDb25maWdcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCByZXNvbHZlZFNlZ21lbnQgPSB0aGlzLl9yZXNvbHZlUGF0aFNlZ21lbnQocGF0aCwgYWN0aXZhdGVkUm91dGVTbmFwc2hvdCk7XHJcbiAgICAgICAgY29uc3Qgcm91dGVMaW5rID0gYCR7cm91dGVMaW5rUHJlZml4fSR7cmVzb2x2ZWRTZWdtZW50fWA7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVJdGVtID0gdGhpcy5fZ2V0RnJvbVN0b3JlKHJvdXRlTGluaywgYnJlYWRjcnVtYi5hbGlhcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5fZXh0cmFjdExhYmVsKFxyXG4gICAgICAgICAgICBzdG9yZUl0ZW0/LmxhYmVsID8/IGJyZWFkY3J1bWI/LmxhYmVsLFxyXG4gICAgICAgICAgICByZXNvbHZlZFNlZ21lbnRcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBpc0F1dG9HZW5lcmF0ZWRMYWJlbCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBhdXRvR2VuZXJhdGVkTGFiZWwgPSAnJztcclxuICAgICAgICBpZiAoIWxhYmVsKSB7XHJcbiAgICAgICAgICAgIGlzQXV0b0dlbmVyYXRlZExhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgICAgYXV0b0dlbmVyYXRlZExhYmVsID0gcmVzb2x2ZWRTZWdtZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uc3RvcmVJdGVtLFxyXG4gICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICBsYWJlbDogaXNBdXRvR2VuZXJhdGVkTGFiZWwgPyBhdXRvR2VuZXJhdGVkTGFiZWwgOiBsYWJlbCxcclxuICAgICAgICAgICAgcm91dGVMaW5rLFxyXG4gICAgICAgICAgICBpc0F1dG9HZW5lcmF0ZWRMYWJlbCxcclxuICAgICAgICAgICAgLi4udGhpcy5fZ2V0UXVlcnlQYXJhbXNGcm9tUHJldmlvdXNMaXN0KHJvdXRlTGluayksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQnJlYWRjcnVtYkxpc3QoXHJcbiAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICByb3V0ZUxpbmtQcmVmaXg6IHN0cmluZ1xyXG4gICAgKTogQ21hdEJyZWFkY3J1bWJbXSB8IHZvaWQge1xyXG4gICAgICAgIGlmIChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnJvdXRlQ29uZmlnPy5wYXRoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWJJdGVtID0gdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJJdGVtKFxyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICAgICAgICAgIHJvdXRlTGlua1ByZWZpeFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iSXRlbSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJMaXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1iSXRlbS5yb3V0ZUxpbmsgKyAnLydcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJMaXN0KFxyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkLFxyXG4gICAgICAgICAgICAgICAgcm91dGVMaW5rUHJlZml4XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxhc3RDcnVtYiA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1ic1tcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmxlbmd0aCAtIDFcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuX3NldFF1ZXJ5UGFyYW1zRm9yQWN0aXZlQnJlYWRjcnVtYihsYXN0Q3J1bWIsIGFjdGl2YXRlZFJvdXRlU25hcHNob3QpO1xyXG5cclxuICAgICAgICAvLyByZW1vdmUgYnJlYWRjcnVtYiBpdGVtcyB0aGF0IG5lZWRzIHRvIGJlIGhpZGRlblxyXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzVG9TaG93ID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmZpbHRlcihcclxuICAgICAgICAgICAgaXRlbSA9PiAhaXRlbS5za2lwXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9icmVhZGNydW1icy5uZXh0KGJyZWFkY3J1bWJzVG9TaG93KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRGcm9tU3RvcmUocm91dGVMaW5rOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nKTogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uIHwgdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmUuZmluZChpdGVtID0+IChcclxuICAgICAgICAgICAgKChhbGlhcyAmJiBhbGlhcyA9PT0gaXRlbS5hbGlhcykgPz8gZmFsc2UpIHx8IChyb3V0ZUxpbmsgJiYgcm91dGVMaW5rID09PSBpdGVtLnJvdXRlTGluaykgfHwgdGhpcy5fbWF0Y2hSZWdleChyb3V0ZUxpbmssIGl0ZW0ucm91dGVSZWdleClcclxuICAgICAgICApKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHVzZSBleGFjdCBtYXRjaCBpbnN0ZWFkIG9mIHJlZ2V4cC50ZXN0XHJcbiAgICAgKiBmb3IgL21lbnRvci9bXi9dKyB3ZSBzaG91bGQgbWF0Y2ggJy9tZW50b3IvMTInIGJ1dCBub3QgJy9tZW50b3IvMTIvYWJjJ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tYXRjaFJlZ2V4KHJvdXRlTGluaz86IHN0cmluZywgcm91dGVSZWdleD86IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgICAgICBpZiAocm91dGVSZWdleCAmJiByb3V0ZUxpbmspIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSByb3V0ZUxpbmsubWF0Y2gobmV3IFJlZ0V4cChyb3V0ZVJlZ2V4KSk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaFswXSA9PT0gcm91dGVMaW5rO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpZiB0aGUgcGF0aCBzZWdtZW50IGhhcyByb3V0ZSBwYXJhbXMsIHJlYWQgdGhlIHBhcmFtIHZhbHVlIGZyb20gdXJsXHJcbiAgICAgKiBmb3IgZWFjaCBzZWdtZW50IG9mIHJvdXRlIHRoaXMgZ2V0cyBjYWxsZWRcclxuICAgICAqXHJcbiAgICAgKiBmb3IgbWVudG9yLzppZC92aWV3IC0gaXQgZ2V0cyBjYWxsZWQgd2l0aCBtZW50b3IsIDppZCwgdmlldyAzIHRpbWVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Jlc29sdmVQYXRoU2VnbWVudChzZWdtZW50OiBzdHJpbmcsIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vcXVpcmsgLXNlZ21lbnQgY2FuIGJlIGRlZmluZWQgYXMgdmlldy86aWQgaW4gcm91dGUgY29uZmlnIGluIHdoaWNoIGNhc2UgeW91IG5lZWQgdG8gbWFrZSBpdCB2aWV3LzxyZXNvbHZlZC1wYXJhbT5cclxuICAgICAgICBpZiAoc2VnbWVudC5pbmNsdWRlcyhQQVRIX1BBUkFNLlBSRUZJWCkpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5wYXJhbXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudCA9IHNlZ21lbnQucmVwbGFjZShgOiR7a2V5fWAsIGAke3ZhbHVlfWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlZ21lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBxdWVyeVBhcmFtcyAmIGZyYWdtZW50cyBmb3IgcHJldmlvdXMgYnJlYWRjcnVtYiBwYXRoIGFyZSBjb3BpZWQgb3ZlciB0byBuZXcgbGlzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9nZXRRdWVyeVBhcmFtc0Zyb21QcmV2aW91c0xpc3Qocm91dGVMaW5rOiBzdHJpbmcpOiBDbWF0QnJlYWRjcnVtYiB7XHJcbiAgICAgICAgY29uc3QgeyBxdWVyeVBhcmFtcywgZnJhZ21lbnQgfSA9XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzQnJlYWRjcnVtYnMuZmluZChpdGVtID0+IGl0ZW0ucm91dGVMaW5rID09PSByb3V0ZUxpbmspID8/XHJcbiAgICAgICAgICAgIHt9O1xyXG4gICAgICAgIHJldHVybiB7IHF1ZXJ5UGFyYW1zLCBmcmFnbWVudCB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlIHF1ZXJ5IHBhcmFtcyB0byB0aGUgbGFzdCBicmVhZGNydW1iIGl0ZW1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc2V0UXVlcnlQYXJhbXNGb3JBY3RpdmVCcmVhZGNydW1iKFxyXG4gICAgICAgIGxhc3RJdGVtOiBDbWF0QnJlYWRjcnVtYixcclxuICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBpZiAobGFzdEl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgeyBxdWVyeVBhcmFtcywgZnJhZ21lbnQgfSA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3Q7XHJcbiAgICAgICAgICAgIGxhc3RJdGVtLnF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgPyB7IC4uLnF1ZXJ5UGFyYW1zIH0gOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGxhc3RJdGVtLmZyYWdtZW50ID0gZnJhZ21lbnQgPz8gdm9pZCAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvciBhIHNwZWNpZmljIHJvdXRlLCBicmVhZGNydW1iIGNhbiBiZSBkZWZpbmVkIGVpdGhlciBvbiBwYXJlbnQgT1IgaXQncyBjaGlsZCh3aGljaCBoYXMgZW1wdHkgcGF0aClcclxuICAgICAqIFdoZW4gYm90aCBhcmUgZGVmaW5lZCwgY2hpbGQgdGFrZXMgcHJlY2VkZW5jZVxyXG4gICAgICpcclxuICAgICAqIEV4OiBCZWxvdyB3ZSBhcmUgc2V0dGluZyBicmVhZGNydW1iIG9uIGJvdGggcGFyZW50IGFuZCBjaGlsZC5cclxuICAgICAqIFNvLCBjaGlsZCB0YWtlcyBwcmVjZWRlbmNlIGFuZCBcIkRlZmluZWQgT24gQ2hpbGRcIiBpcyBkaXNwbGF5ZWQgZm9yIHRoZSByb3V0ZSAnaG9tZSdcclxuICAgICAqIHsgcGF0aDogJ2hvbWUnLCBsb2FkQ2hpbGRyZW46ICcuL2hvbWUvaG9tZS5tb2R1bGUjSG9tZU1vZHVsZScgLCBkYXRhOiB7YnJlYWRjcnVtYjogXCJEZWZpbmVkIE9uIE1vZHVsZVwifX1cclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5EXHJcbiAgICAgKiBjaGlsZHJlbjogW1xyXG4gICAgICogICB7IHBhdGg6ICcnLCBjb21wb25lbnQ6IFNob3dVc2VyQ29tcG9uZW50LCBkYXRhOiB7YnJlYWRjcnVtYjogXCJEZWZpbmVkIE9uIENoaWxkXCIgfVxyXG4gICAgICogXVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9wYXJzZVJvdXRlRGF0YShyb3V0ZUNvbmZpZzogUm91dGUgfCBudWxsKTogYW55IHtcclxuICAgICAgICBpZiAoaXNOdWxsKHJvdXRlQ29uZmlnKSlcclxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcclxuXHJcbiAgICAgICAgY29uc3QgeyBwYXRoLCBkYXRhIH0gPSByb3V0ZUNvbmZpZztcclxuICAgICAgICBjb25zdCBicmVhZGNydW1iID0gdGhpcy5fbWVyZ2VXaXRoQmFzZUNoaWxkRGF0YShcclxuICAgICAgICAgICAgcm91dGVDb25maWcsXHJcbiAgICAgICAgICAgIGRhdGE/LlsnYnJlYWRjcnVtYiddXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHsgcGF0aCwgYnJlYWRjcnVtYiB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZ2V0IGVtcHR5IGNoaWxkcmVuIG9mIGEgbW9kdWxlIG9yIENvbXBvbmVudC4gRW1wdHkgY2hpbGQgaXMgdGhlIG9uZSB3aXRoIHBhdGg6ICcnXHJcbiAgICAgKiBXaGVuIHBhcmVudCBhbmQgaXQncyBjaGlsZHJlbiAodGhhdCBoYXMgZW1wdHkgcm91dGUgcGF0aCkgZGVmaW5lIGRhdGEgbWVyZ2UgdGhlbSBib3RoIHdpdGggY2hpbGQgdGFraW5nIHByZWNlZGVuY2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbWVyZ2VXaXRoQmFzZUNoaWxkRGF0YShcclxuICAgICAgICByb3V0ZUNvbmZpZzogYW55LFxyXG4gICAgICAgIGNvbmZpZzogQ21hdEJyZWFkY3J1bWJDb25maWdcclxuICAgICk6IENtYXRCcmVhZGNydW1iT2JqZWN0IHtcclxuICAgICAgICBpZiAoIXJvdXRlQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9leHRyYWN0T2JqZWN0KGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYmFzZUNoaWxkOiBSb3V0ZSB8IHZvaWQgPSB2b2lkIDA7XHJcbiAgICAgICAgaWYgKHJvdXRlQ29uZmlnLmxvYWRDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAvLyBUbyBoYW5kbGUgYSBtb2R1bGUgd2l0aCBlbXB0eSBjaGlsZCByb3V0ZVxyXG4gICAgICAgICAgICBiYXNlQ2hpbGQgPSByb3V0ZUNvbmZpZy5fbG9hZGVkUm91dGVzLmZpbmQoKHJvdXRlOiB7IHBhdGg6IHN0cmluZzsgfSkgPT4gcm91dGUucGF0aCA9PT0gJycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocm91dGVDb25maWcuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgLy8gVG8gaGFuZGxlIGEgY29tcG9uZW50IHdpdGggZW1wdHkgY2hpbGQgcm91dGVcclxuICAgICAgICAgICAgYmFzZUNoaWxkID0gcm91dGVDb25maWcuY2hpbGRyZW4uZmluZCgocm91dGU6IHsgcGF0aDogc3RyaW5nOyB9KSA9PiByb3V0ZS5wYXRoID09PSAnJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjaGlsZENvbmZpZyA9IGJhc2VDaGlsZD8uZGF0YT8uWydicmVhZGNydW1iJ107XHJcbiAgICAgICAgcmV0dXJuIGNoaWxkQ29uZmlnXHJcbiAgICAgICAgICAgID8gdGhpcy5fbWVyZ2VXaXRoQmFzZUNoaWxkRGF0YShiYXNlQ2hpbGQsIHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2V4dHJhY3RPYmplY3QoY29uZmlnKSxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2V4dHJhY3RPYmplY3QoY2hpbGRDb25maWcpLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICA6IHRoaXMuX2V4dHJhY3RPYmplY3QoY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSB0aGUgc3RvcmUgdG8gcmV1c2UgZm9yIGR5bmFtaWMgZGVjbGFyYXRpb25zXHJcbiAgICAgKiBJZiB0aGUgc3RvcmUgYWxyZWFkeSBoYXMgdGhpcyByb3V0ZSBkZWZpbml0aW9uIHVwZGF0ZSBpdCwgZWxzZSBhZGRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdXBkYXRlU3RvcmUoa2V5OiBzdHJpbmcsIGJyZWFkY3J1bWI6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN0b3JlSXRlbUluZGV4ID0gdGhpcy5fZHluYW1pY0JyZWFkY3J1bWJTdG9yZS5maW5kSW5kZXgoaXRlbSA9PiAoYnJlYWRjcnVtYiBhcyBhbnkpW2tleV0gPT09IChpdGVtIGFzIGFueSlba2V5XSk7XHJcbiAgICAgICAgaWYgKHN0b3JlSXRlbUluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5fZHluYW1pY0JyZWFkY3J1bWJTdG9yZVtzdG9yZUl0ZW1JbmRleF0gPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9keW5hbWljQnJlYWRjcnVtYlN0b3JlW3N0b3JlSXRlbUluZGV4XSxcclxuICAgICAgICAgICAgICAgIC4uLmJyZWFkY3J1bWIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fZHluYW1pY0JyZWFkY3J1bWJTdG9yZS5wdXNoKHsgLi4uYnJlYWRjcnVtYiB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBicmVhZGNydW1iIGlzIHByZXNlbnQgaW4gY3VycmVudCBicmVhZGNydW1icyB1cGRhdGUgaXQgYW5kIGVtaXQgbmV3IHN0cmVhbVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF91cGRhdGVDdXJyZW50QnJlYWRjcnVtYnMoXHJcbiAgICAgICAga2V5OiBzdHJpbmcsXHJcbiAgICAgICAgYnJlYWRjcnVtYjogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uXHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnMuZmluZEluZGV4KGl0ZW0gPT4ga2V5ID09PSAncm91dGVSZWdleCdcclxuICAgICAgICAgICAgPyB0aGlzLl9tYXRjaFJlZ2V4KGl0ZW0ucm91dGVMaW5rLCBicmVhZGNydW1iW2tleV0pXHJcbiAgICAgICAgICAgIDogKGJyZWFkY3J1bWIgYXMgYW55KVtrZXldID09PSAoaXRlbSBhcyBhbnkpW2tleV0pO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnNbaXRlbUluZGV4XSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2N1cnJlbnRCcmVhZGNydW1ic1tpdGVtSW5kZXhdLFxyXG4gICAgICAgICAgICAgICAgLi4uYnJlYWRjcnVtYixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgYnJlYWRjcnVtYnNUb1Nob3cgPSB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgaXRlbSA9PiAhaXRlbS5za2lwXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuX2JyZWFkY3J1bWJzLm5leHQoWy4uLmJyZWFkY3J1bWJzVG9TaG93XSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yIGEgcm91dGUgd2l0aCBwYXRoIHBhcmFtLCB3ZSBjcmVhdGUgcmVnZXggZHluYW1pY2FsbHkgZnJvbSBhbmd1bGFyIHJvdXRlIHN5bnRheFxyXG4gICAgICogJy9tZW50b3IvOmlkJyBiZWNvbWVzICcvbWVudG9yL1teL10nLFxyXG4gICAgICogYnJlYWRjcnVtYlNlcnZpY2Uuc2V0KCcvbWVudG9yLzppZCcsICdVZGF5Jykgc2hvdWxkIHVwZGF0ZSAnVWRheScgYXMgbGFiZWwgZm9yICcvbWVudG9yLzInIE9SICdtZW50b3IvYWRhJ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9idWlsZFJlZ2V4KHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Vuc3VyZUxlYWRpbmdTbGFzaChwYXRoKS5yZXBsYWNlKFxyXG4gICAgICAgICAgICBuZXcgUmVnRXhwKFBBVEhfUEFSQU0uUkVHRVhfSURFTlRJRklFUiwgJ2cnKSxcclxuICAgICAgICAgICAgUEFUSF9QQVJBTS5SRUdFWF9SRVBMQUNFUlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZW5zdXJlTGVhZGluZ1NsYXNoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aCgnLycpID8gcGF0aCA6IGAvJHtwYXRofWA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbiBBcHAncyBSb3V0ZUNvbmZpZywgYnJlYWRjcnVtYiBjYW4gYmUgZGVmaW5lZCBhcyBhIHN0cmluZyBPUiBhIGZ1bmN0aW9uIE9SIGFuIG9iamVjdFxyXG4gICAgICpcclxuICAgICAqIHN0cmluZzogc2ltcGxlIHN0YXRpYyBicmVhZGNydW1iIGxhYmVsIGZvciBhIHBhdGhcclxuICAgICAqIGZ1bmN0aW9uOiBjYWxsYmFjayB0aGF0IGdldHMgaW52b2tlZCB3aXRoIHJlc29sdmVkIHBhdGggcGFyYW1cclxuICAgICAqIG9iamVjdDogYWRkaXRpb25hbCBkYXRhIGRlZmluZWQgYWxvbmcgd2l0aCBicmVhZGNydW1iIGxhYmVsIHRoYXQgZ2V0cyBwYXNzZWQgdG8gKmNtYXRCcmVhZGNydW1iSXRlbSBkaXJlY3RpdmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZXh0cmFjdExhYmVsKGNvbmZpZzogQ21hdEJyZWFkY3J1bWJDb25maWcsIHJlc29sdmVkUGFyYW0/OiBzdHJpbmcpOiBzdHJpbmcgfCB2b2lkIHtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IHR5cGVvZiBjb25maWcgPT09ICdvYmplY3QnID8gY29uZmlnLmxhYmVsIDogY29uZmlnO1xyXG4gICAgICAgIGlmICh0eXBlb2YgbGFiZWwgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxhYmVsKHJlc29sdmVkUGFyYW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGFiZWw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZXh0cmFjdE9iamVjdChjb25maWc6IENtYXRCcmVhZGNydW1iQ29uZmlnKTogQ21hdEJyZWFkY3J1bWJPYmplY3Qge1xyXG4gICAgICAgIC8vIGRvbid0IGluY2x1ZGUge2xhYmVsfSBpZiBjb25maWcgaXMgdW5kZWZpbmVkLiBUaGlzIGlzIGltcG9ydGFudCBzaW5jZSB3ZSBtZXJnZSB0aGUgY29uZmlnc1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgY29uZmlnICYmXHJcbiAgICAgICAgICAgICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY29uZmlnID09PSAnZnVuY3Rpb24nKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBsYWJlbDogY29uZmlnIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoY29uZmlnIGFzIENtYXRCcmVhZGNydW1iT2JqZWN0KSB8fCB7fTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -30,10 +30,10 @@ export class CmatCardComponent {
30
30
  this.flippable = coerceBooleanProperty(changes['flippable'].currentValue);
31
31
  }
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CmatCardComponent, isStandalone: true, selector: "cmat-card", inputs: { expanded: "expanded", face: "face", flippable: "flippable" }, host: { properties: { "class": "this.classList" } }, exportAs: ["cmatCard"], usesOnChanges: true, ngImport: i0, template: "<!-- Flippable card -->\n@if (flippable) {\n <!-- Front -->\n <div class=\"cmat-card-front\">\n <ng-content select=\"[cmatCardFront]\"></ng-content>\n </div>\n <!-- Back -->\n <div class=\"cmat-card-back overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\n <ng-content select=\"[cmatCardBack]\"></ng-content>\n </div>\n}\n\n<!-- Normal card -->\n@if (!flippable) {\n <!-- Content -->\n <ng-content></ng-content>\n <!-- Expansion -->\n @if (expanded) {\n <div class=\"cmat-card-expansion\" [@expandCollapse]>\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\n </div>\n }\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n"], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: CmatCardComponent, isStandalone: true, selector: "cmat-card", inputs: { expanded: "expanded", face: "face", flippable: "flippable" }, host: { properties: { "class": "this.classList" } }, exportAs: ["cmatCard"], usesOnChanges: true, ngImport: i0, template: "<!-- Flippable card -->\n@if (flippable) {\n <!-- Front -->\n <div class=\"cmat-card-front\">\n <ng-content select=\"[cmatCardFront]\"></ng-content>\n </div>\n <!-- Back -->\n <div class=\"cmat-card-back overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\n <ng-content select=\"[cmatCardBack]\"></ng-content>\n </div>\n}\n\n<!-- Normal card -->\n@if (!flippable) {\n <!-- Content -->\n <ng-content></ng-content>\n <!-- Expansion -->\n @if (expanded) {\n <div class=\"cmat-card-expansion\" [@expandCollapse]>\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\n </div>\n }\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n"], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatCardComponent, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatCardComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'cmat-card', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: cmatAnimations, exportAs: 'cmatCard', standalone: true, imports: [], template: "<!-- Flippable card -->\n@if (flippable) {\n <!-- Front -->\n <div class=\"cmat-card-front\">\n <ng-content select=\"[cmatCardFront]\"></ng-content>\n </div>\n <!-- Back -->\n <div class=\"cmat-card-back overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\n <ng-content select=\"[cmatCardBack]\"></ng-content>\n </div>\n}\n\n<!-- Normal card -->\n@if (!flippable) {\n <!-- Content -->\n <ng-content></ng-content>\n <!-- Expansion -->\n @if (expanded) {\n <div class=\"cmat-card-expansion\" [@expandCollapse]>\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\n </div>\n }\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n"] }]
39
39
  }], propDecorators: { expanded: [{
@@ -36,14 +36,14 @@ export class CmatCascadeBottomSheetComponent {
36
36
  this.selected.setValue(this.root.steps.length - 1);
37
37
  }
38
38
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatCascadeBottomSheetComponent, deps: [{ token: MAT_BOTTOM_SHEET_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CmatCascadeBottomSheetComponent, isStandalone: true, selector: "cmat-cascade-bottom-sheet", exportAs: ["cmatCascadeBottomSheet"], ngImport: i0, template: "<div role=\"presentation\" class=\"cmat-cascade-bottom-sheet\" (click)=\"clickHandle($event)\">\n <div class=\"sheet-header flex items-center\">\n <p class=\"sheet-title\">{{root.placeholder}}</p>\n <button type=\"button\" mat-icon-button (click)=\"root.bottomSheetRef.dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\n </button>\n </div>\n <mat-tab-group [selectedIndex]=\"selected.value\" (selectedIndexChange)=\"selected.setValue($event);\">\n @for (menuItem of root.steps; track step; let step = $index) {\n <mat-tab\n [label]=\"labels[step] || '\u9009\u62E9'\">\n <mat-list class=\"menu-list overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\n @for (listItem of menuItem; track i; let i = $index) {\n <mat-list-item class=\"menu-item\"\n [class.active]=\"listItem.active\" [class.disabled]=\"listItem.disabled\"\n (click)=\"root.selectHandle($event, step, i); select(listItem.disabled,listItem.label);\">\n <div matLine>{{listItem.label}}</div>\n </mat-list-item>\n }\n </mat-list>\n </mat-tab>\n }\n </mat-tab-group>\n</div>", styles: [".cmat-cascade-bottom-sheet{padding:0;margin:-8px -16px}.cmat-cascade-bottom-sheet .sheet-header{display:flex;flex:1 1 0%;align-items:center;font-size:1rem;border-bottom-width:1px;padding:12px 16px}.cmat-cascade-bottom-sheet .sheet-header .sheet-title{margin:0;padding:0;letter-spacing:.05rem;text-align:center;flex-grow:1}.cmat-cascade-bottom-sheet .menu-list{vertical-align:top;box-sizing:border-box;margin:0;padding:0;width:100%;overflow:hidden;position:relative;height:204px}.cmat-cascade-bottom-sheet .menu-item{padding:0 16px;text-overflow:ellipsis;box-sizing:border-box;cursor:pointer!important;font-size:14px;line-height:3em}.cmat-cascade-bottom-sheet .menu-item.disabled{cursor:not-allowed!important;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatCascadeBottomSheetComponent, deps: [{ token: MAT_BOTTOM_SHEET_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: CmatCascadeBottomSheetComponent, isStandalone: true, selector: "cmat-cascade-bottom-sheet", exportAs: ["cmatCascadeBottomSheet"], ngImport: i0, template: "<div role=\"presentation\" class=\"cmat-cascade-bottom-sheet\" (click)=\"clickHandle($event)\">\n <div class=\"sheet-header flex items-center\">\n <p class=\"sheet-title\">{{root.placeholder}}</p>\n <button type=\"button\" mat-icon-button (click)=\"root.bottomSheetRef.dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\n </button>\n </div>\n <mat-tab-group [selectedIndex]=\"selected.value\" (selectedIndexChange)=\"selected.setValue($event);\">\n @for (menuItem of root.steps; track step; let step = $index) {\n <mat-tab\n [label]=\"labels[step] || '\u9009\u62E9'\">\n <mat-list class=\"menu-list overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\n @for (listItem of menuItem; track i; let i = $index) {\n <mat-list-item class=\"menu-item\"\n [class.active]=\"listItem.active\" [class.disabled]=\"listItem.disabled\"\n (click)=\"root.selectHandle($event, step, i); select(listItem.disabled,listItem.label);\">\n <div matLine>{{listItem.label}}</div>\n </mat-list-item>\n }\n </mat-list>\n </mat-tab>\n }\n </mat-tab-group>\n</div>", styles: [".cmat-cascade-bottom-sheet{padding:0;margin:-8px -16px}.cmat-cascade-bottom-sheet .sheet-header{display:flex;flex:1 1 0%;align-items:center;font-size:1rem;border-bottom-width:1px;padding:12px 16px}.cmat-cascade-bottom-sheet .sheet-header .sheet-title{margin:0;padding:0;letter-spacing:.05rem;text-align:center;flex-grow:1}.cmat-cascade-bottom-sheet .menu-list{vertical-align:top;box-sizing:border-box;margin:0;padding:0;width:100%;overflow:hidden;position:relative;height:204px}.cmat-cascade-bottom-sheet .menu-item{padding:0 16px;text-overflow:ellipsis;box-sizing:border-box;cursor:pointer!important;font-size:14px;line-height:3em}.cmat-cascade-bottom-sheet .menu-item.disabled{cursor:not-allowed!important;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatCascadeBottomSheetComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatCascadeBottomSheetComponent, decorators: [{
43
43
  type: Component,
44
44
  args: [{ selector: 'cmat-cascade-bottom-sheet', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatCascadeBottomSheet', standalone: true, imports: [MatButtonModule, MatTabsModule, MatListModule, MatIconModule], template: "<div role=\"presentation\" class=\"cmat-cascade-bottom-sheet\" (click)=\"clickHandle($event)\">\n <div class=\"sheet-header flex items-center\">\n <p class=\"sheet-title\">{{root.placeholder}}</p>\n <button type=\"button\" mat-icon-button (click)=\"root.bottomSheetRef.dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\n </button>\n </div>\n <mat-tab-group [selectedIndex]=\"selected.value\" (selectedIndexChange)=\"selected.setValue($event);\">\n @for (menuItem of root.steps; track step; let step = $index) {\n <mat-tab\n [label]=\"labels[step] || '\u9009\u62E9'\">\n <mat-list class=\"menu-list overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\n @for (listItem of menuItem; track i; let i = $index) {\n <mat-list-item class=\"menu-item\"\n [class.active]=\"listItem.active\" [class.disabled]=\"listItem.disabled\"\n (click)=\"root.selectHandle($event, step, i); select(listItem.disabled,listItem.label);\">\n <div matLine>{{listItem.label}}</div>\n </mat-list-item>\n }\n </mat-list>\n </mat-tab>\n }\n </mat-tab-group>\n</div>", styles: [".cmat-cascade-bottom-sheet{padding:0;margin:-8px -16px}.cmat-cascade-bottom-sheet .sheet-header{display:flex;flex:1 1 0%;align-items:center;font-size:1rem;border-bottom-width:1px;padding:12px 16px}.cmat-cascade-bottom-sheet .sheet-header .sheet-title{margin:0;padding:0;letter-spacing:.05rem;text-align:center;flex-grow:1}.cmat-cascade-bottom-sheet .menu-list{vertical-align:top;box-sizing:border-box;margin:0;padding:0;width:100%;overflow:hidden;position:relative;height:204px}.cmat-cascade-bottom-sheet .menu-item{padding:0 16px;text-overflow:ellipsis;box-sizing:border-box;cursor:pointer!important;font-size:14px;line-height:3em}.cmat-cascade-bottom-sheet .menu-item.disabled{cursor:not-allowed!important;pointer-events:none}\n"] }]
45
45
  }], ctorParameters: () => [{ type: i5.CmatCascadeListComponent, decorators: [{
46
46
  type: Inject,
47
47
  args: [MAT_BOTTOM_SHEET_DATA]
48
48
  }] }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZS1ib3R0b20tc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2Nhc2NhZGUvY2FzY2FkZS1ib3R0b20tc2hlZXQvY2FzY2FkZS1ib3R0b20tc2hlZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2Nhc2NhZGUvY2FzY2FkZS1ib3R0b20tc2hlZXQvY2FzY2FkZS1ib3R0b20tc2hlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQWNoRCxNQUFNLE9BQU8sK0JBQStCO0lBSXhDLFlBQzBDLElBQThCO1FBQTlCLFNBQUksR0FBSixJQUFJLENBQTBCO1FBSnhFLGFBQVEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBS2xCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQXlDLEVBQUUsRUFBRTtZQUNsRSxNQUFNLEtBQUssR0FBdUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQWlDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuSCxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZO1FBQ3BCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQWlCLEVBQUUsS0FBYTtRQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0wsQ0FBQzs4R0F6QlEsK0JBQStCLGtCQUs1QixxQkFBcUI7a0dBTHhCLCtCQUErQiwySEN0QjVDLDJzQ0F1Qk0sbXhCREhRLGVBQWUsMklBQUUsYUFBYSwybUJBQUUsYUFBYSx1UkFBRSxhQUFhOzsyRkFFN0QsK0JBQStCO2tCQVYzQyxTQUFTOytCQUNJLDJCQUEyQixpQkFHdEIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDOzswQkFPbEUsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0JPVFRPTV9TSEVFVF9EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcclxuaW1wb3J0IHsgaXNOdWxsLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IENtYXRDYXNjYWRlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2NhZGUtbGlzdC9jYXNjYWRlLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ21hdENhc2NhZGVPcHRpb25zSW50ZXJmYWNlIH0gZnJvbSAnLi4vb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtY2FzY2FkZS1ib3R0b20tc2hlZXQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nhc2NhZGUtYm90dG9tLXNoZWV0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Nhc2NhZGUtYm90dG9tLXNoZWV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBleHBvcnRBczogJ2NtYXRDYXNjYWRlQm90dG9tU2hlZXQnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtNYXRCdXR0b25Nb2R1bGUsIE1hdFRhYnNNb2R1bGUsIE1hdExpc3RNb2R1bGUsIE1hdEljb25Nb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0Q2FzY2FkZUJvdHRvbVNoZWV0Q29tcG9uZW50IHtcclxuICAgIHNlbGVjdGVkID0gbmV3IEZvcm1Db250cm9sKDApO1xyXG4gICAgbGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTUFUX0JPVFRPTV9TSEVFVF9EQVRBKSBwdWJsaWMgcm9vdDogQ21hdENhc2NhZGVMaXN0Q29tcG9uZW50LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5yb290LnN0ZXBzLmZvckVhY2goKGl0ZW1zOiBBcnJheTxDbWF0Q2FzY2FkZU9wdGlvbnNJbnRlcmZhY2U+KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0ZXBzOiBBcnJheTxDbWF0Q2FzY2FkZU9wdGlvbnNJbnRlcmZhY2U+ID0gaXRlbXMuZmlsdGVyKChpdGVtOiBDbWF0Q2FzY2FkZU9wdGlvbnNJbnRlcmZhY2UpID0+IGl0ZW0uYWN0aXZlKTtcclxuICAgICAgICAgICAgaWYgKHN0ZXBzWzBdICYmICFpc1VuZGVmaW5lZChzdGVwc1swXS5sYWJlbCkpIHsgdGhpcy5sYWJlbHMucHVzaChzdGVwc1swXS5sYWJlbCk7IH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGlja0hhbmRsZShldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3QoZGlzYWJsZWQ6IGJvb2xlYW4sIGxhYmVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNOdWxsKHRoaXMuc2VsZWN0ZWQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsc1t0aGlzLnNlbGVjdGVkLnZhbHVlXSA9IGxhYmVsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbHMgPSB0aGlzLmxhYmVscy5zbGljZSgwLCB0aGlzLnNlbGVjdGVkLnZhbHVlICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5zZXRWYWx1ZSh0aGlzLnJvb3Quc3RlcHMubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwiY21hdC1jYXNjYWRlLWJvdHRvbS1zaGVldFwiIChjbGljayk9XCJjbGlja0hhbmRsZSgkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJzaGVldC1oZWFkZXIgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICA8cCBjbGFzcz1cInNoZWV0LXRpdGxlXCI+e3tyb290LnBsYWNlaG9sZGVyfX08L3A+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyb290LmJvdHRvbVNoZWV0UmVmLmRpc21pc3MoKVwiPlxuICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfb3V0bGluZTp4LW1hcmsnXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxtYXQtdGFiLWdyb3VwIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkLnZhbHVlXCIgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwic2VsZWN0ZWQuc2V0VmFsdWUoJGV2ZW50KTtcIj5cbiAgICBAZm9yIChtZW51SXRlbSBvZiByb290LnN0ZXBzOyB0cmFjayBzdGVwOyBsZXQgc3RlcCA9ICRpbmRleCkge1xuICAgICAgPG1hdC10YWJcbiAgICAgICAgW2xhYmVsXT1cImxhYmVsc1tzdGVwXSB8fCAn6YCJ5oupJ1wiPlxuICAgICAgICA8bWF0LWxpc3QgY2xhc3M9XCJtZW51LWxpc3Qgb3ZlcmZsb3cteS1hdXRvIGxnOm92ZXJmbG93LXktaGlkZGVuIGxnOmhvdmVyOm92ZXJmbG93LXktYXV0byBzY3JvbGxiYXItY3VzdG9tXCI+XG4gICAgICAgICAgQGZvciAobGlzdEl0ZW0gb2YgbWVudUl0ZW07IHRyYWNrIGk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8bWF0LWxpc3QtaXRlbSBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwibGlzdEl0ZW0uYWN0aXZlXCIgW2NsYXNzLmRpc2FibGVkXT1cImxpc3RJdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJvb3Quc2VsZWN0SGFuZGxlKCRldmVudCwgc3RlcCwgaSk7IHNlbGVjdChsaXN0SXRlbS5kaXNhYmxlZCxsaXN0SXRlbS5sYWJlbCk7XCI+XG4gICAgICAgICAgICAgIDxkaXYgbWF0TGluZT57e2xpc3RJdGVtLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8L21hdC10YWI+XG4gICAgfVxuICA8L21hdC10YWItZ3JvdXA+XG48L2Rpdj4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZS1ib3R0b20tc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2Nhc2NhZGUvY2FzY2FkZS1ib3R0b20tc2hlZXQvY2FzY2FkZS1ib3R0b20tc2hlZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2Nhc2NhZGUvY2FzY2FkZS1ib3R0b20tc2hlZXQvY2FzY2FkZS1ib3R0b20tc2hlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQWNoRCxNQUFNLE9BQU8sK0JBQStCO0lBSXhDLFlBQzBDLElBQThCO1FBQTlCLFNBQUksR0FBSixJQUFJLENBQTBCO1FBSnhFLGFBQVEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBS2xCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQW9DLEVBQUUsRUFBRTtZQUM3RCxNQUFNLEtBQUssR0FBa0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQWlDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5RyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZO1FBQ3BCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQWlCLEVBQUUsS0FBYTtRQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0wsQ0FBQzs4R0F6QlEsK0JBQStCLGtCQUs1QixxQkFBcUI7a0dBTHhCLCtCQUErQiwySEN0QjVDLDJzQ0F1Qk0sbXhCREhRLGVBQWUsMklBQUUsYUFBYSwybUJBQUUsYUFBYSx1UkFBRSxhQUFhOzsyRkFFN0QsK0JBQStCO2tCQVYzQyxTQUFTOytCQUNJLDJCQUEyQixpQkFHdEIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDOzswQkFPbEUsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0JPVFRPTV9TSEVFVF9EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcclxuaW1wb3J0IHsgaXNOdWxsLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IENtYXRDYXNjYWRlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2NhZGUtbGlzdC9jYXNjYWRlLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ21hdENhc2NhZGVPcHRpb25zSW50ZXJmYWNlIH0gZnJvbSAnLi4vb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtY2FzY2FkZS1ib3R0b20tc2hlZXQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nhc2NhZGUtYm90dG9tLXNoZWV0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Nhc2NhZGUtYm90dG9tLXNoZWV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBleHBvcnRBczogJ2NtYXRDYXNjYWRlQm90dG9tU2hlZXQnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtNYXRCdXR0b25Nb2R1bGUsIE1hdFRhYnNNb2R1bGUsIE1hdExpc3RNb2R1bGUsIE1hdEljb25Nb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0Q2FzY2FkZUJvdHRvbVNoZWV0Q29tcG9uZW50IHtcclxuICAgIHNlbGVjdGVkID0gbmV3IEZvcm1Db250cm9sKDApO1xyXG4gICAgbGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTUFUX0JPVFRPTV9TSEVFVF9EQVRBKSBwdWJsaWMgcm9vdDogQ21hdENhc2NhZGVMaXN0Q29tcG9uZW50LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5yb290LnN0ZXBzLmZvckVhY2goKGl0ZW1zOiBDbWF0Q2FzY2FkZU9wdGlvbnNJbnRlcmZhY2VbXSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGVwczogQ21hdENhc2NhZGVPcHRpb25zSW50ZXJmYWNlW10gPSBpdGVtcy5maWx0ZXIoKGl0ZW06IENtYXRDYXNjYWRlT3B0aW9uc0ludGVyZmFjZSkgPT4gaXRlbS5hY3RpdmUpO1xyXG4gICAgICAgICAgICBpZiAoc3RlcHNbMF0gJiYgIWlzVW5kZWZpbmVkKHN0ZXBzWzBdLmxhYmVsKSkgeyB0aGlzLmxhYmVscy5wdXNoKHN0ZXBzWzBdLmxhYmVsKTsgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrSGFuZGxlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdChkaXNhYmxlZDogYm9vbGVhbiwgbGFiZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKCFpc051bGwodGhpcy5zZWxlY3RlZC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxzW3RoaXMuc2VsZWN0ZWQudmFsdWVdID0gbGFiZWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVscyA9IHRoaXMubGFiZWxzLnNsaWNlKDAsIHRoaXMuc2VsZWN0ZWQudmFsdWUgKyAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLnNldFZhbHVlKHRoaXMucm9vdC5zdGVwcy5sZW5ndGggLSAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiByb2xlPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJjbWF0LWNhc2NhZGUtYm90dG9tLXNoZWV0XCIgKGNsaWNrKT1cImNsaWNrSGFuZGxlKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cInNoZWV0LWhlYWRlciBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgIDxwIGNsYXNzPVwic2hlZXQtdGl0bGVcIj57e3Jvb3QucGxhY2Vob2xkZXJ9fTwvcD5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJvb3QuYm90dG9tU2hlZXRSZWYuZGlzbWlzcygpXCI+XG4gICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOngtbWFyaydcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG1hdC10YWItZ3JvdXAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWQudmFsdWVcIiAoc2VsZWN0ZWRJbmRleENoYW5nZSk9XCJzZWxlY3RlZC5zZXRWYWx1ZSgkZXZlbnQpO1wiPlxuICAgIEBmb3IgKG1lbnVJdGVtIG9mIHJvb3Quc3RlcHM7IHRyYWNrIHN0ZXA7IGxldCBzdGVwID0gJGluZGV4KSB7XG4gICAgICA8bWF0LXRhYlxuICAgICAgICBbbGFiZWxdPVwibGFiZWxzW3N0ZXBdIHx8ICfpgInmi6knXCI+XG4gICAgICAgIDxtYXQtbGlzdCBjbGFzcz1cIm1lbnUtbGlzdCBvdmVyZmxvdy15LWF1dG8gbGc6b3ZlcmZsb3cteS1oaWRkZW4gbGc6aG92ZXI6b3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1jdXN0b21cIj5cbiAgICAgICAgICBAZm9yIChsaXN0SXRlbSBvZiBtZW51SXRlbTsgdHJhY2sgaTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIGNsYXNzPVwibWVudS1pdGVtXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJsaXN0SXRlbS5hY3RpdmVcIiBbY2xhc3MuZGlzYWJsZWRdPVwibGlzdEl0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicm9vdC5zZWxlY3RIYW5kbGUoJGV2ZW50LCBzdGVwLCBpKTsgc2VsZWN0KGxpc3RJdGVtLmRpc2FibGVkLGxpc3RJdGVtLmxhYmVsKTtcIj5cbiAgICAgICAgICAgICAgPGRpdiBtYXRMaW5lPnt7bGlzdEl0ZW0ubGFiZWx9fTwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICB9XG4gIDwvbWF0LXRhYi1ncm91cD5cbjwvZGl2PiJdfQ==