@vendure/admin-ui 3.0.3 → 3.0.4

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 (427) hide show
  1. package/catalog/components/collection-data-table/collection-data-table.component.d.ts +3 -5
  2. package/catalog/components/collection-list/collection-list.component.d.ts +1 -0
  3. package/catalog/components/facet-list/facet-list.component.d.ts +1 -0
  4. package/catalog/components/product-list/product-list.component.d.ts +3 -1
  5. package/catalog/components/product-variant-list/product-variant-list.component.d.ts +1 -1
  6. package/core/common/base-list.component.d.ts +13 -0
  7. package/core/common/version.d.ts +1 -1
  8. package/core/data/providers/base-data.service.d.ts +19 -2
  9. package/core/data/providers/collection-data.service.d.ts +2 -2
  10. package/core/data/providers/data.service.d.ts +3 -3
  11. package/core/data/query-result.d.ts +60 -4
  12. package/core/data/utils/add-custom-fields.d.ts +1 -1
  13. package/core/providers/alerts/alerts.service.d.ts +3 -0
  14. package/core/providers/auth/auth.service.d.ts +3 -1
  15. package/core/providers/data-table/data-table-config.service.d.ts +12 -0
  16. package/core/public_api.d.ts +1 -0
  17. package/core/shared/components/data-table-2/data-table2.component.d.ts +5 -5
  18. package/core/shared/components/data-table-filter-presets/filter-preset.service.d.ts +3 -4
  19. package/customer/components/customer-group-list/customer-group-list.component.d.ts +2 -0
  20. package/customer/components/customer-list/customer-list.component.d.ts +1 -0
  21. package/esm2022/catalog/catalog.module.mjs +5 -5
  22. package/esm2022/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +4 -4
  23. package/esm2022/catalog/components/asset-detail/asset-detail.component.mjs +4 -4
  24. package/esm2022/catalog/components/asset-list/asset-list.component.mjs +4 -4
  25. package/esm2022/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +4 -4
  26. package/esm2022/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.mjs +4 -4
  27. package/esm2022/catalog/components/collection-contents/collection-contents.component.mjs +4 -4
  28. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +11 -13
  29. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +4 -4
  30. package/esm2022/catalog/components/collection-list/collection-breadcrumb.pipe.mjs +4 -4
  31. package/esm2022/catalog/components/collection-list/collection-list.component.mjs +6 -5
  32. package/esm2022/catalog/components/collection-tree/collection-tree-node.component.mjs +4 -4
  33. package/esm2022/catalog/components/collection-tree/collection-tree.component.mjs +4 -4
  34. package/esm2022/catalog/components/collection-tree/collection-tree.service.mjs +4 -4
  35. package/esm2022/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.mjs +4 -4
  36. package/esm2022/catalog/components/create-facet-value-dialog/create-facet-value-dialog.component.mjs +4 -4
  37. package/esm2022/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.mjs +4 -4
  38. package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +4 -4
  39. package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +4 -4
  40. package/esm2022/catalog/components/facet-list/facet-list.component.mjs +6 -5
  41. package/esm2022/catalog/components/generate-product-variants/generate-product-variants.component.mjs +4 -4
  42. package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +4 -4
  43. package/esm2022/catalog/components/option-value-input/option-value-input.component.mjs +4 -4
  44. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +4 -4
  45. package/esm2022/catalog/components/product-list/product-list.component.mjs +7 -5
  46. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +4 -4
  47. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +4 -4
  48. package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +4 -4
  49. package/esm2022/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.mjs +4 -4
  50. package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +4 -4
  51. package/esm2022/catalog/components/product-variants-table/product-variants-table.component.mjs +4 -4
  52. package/esm2022/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +4 -4
  53. package/esm2022/catalog/components/variant-price-detail/variant-price-detail.component.mjs +4 -4
  54. package/esm2022/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.mjs +4 -4
  55. package/esm2022/catalog/providers/product-detail/product-detail.service.mjs +4 -4
  56. package/esm2022/catalog/providers/routing/product-variants-resolver.mjs +4 -4
  57. package/esm2022/core/app.component.mjs +4 -4
  58. package/esm2022/core/app.component.module.mjs +5 -5
  59. package/esm2022/core/common/base-list.component.mjs +26 -10
  60. package/esm2022/core/common/version.mjs +2 -2
  61. package/esm2022/core/components/alerts/alerts.component.mjs +4 -4
  62. package/esm2022/core/components/app-shell/app-shell.component.mjs +5 -5
  63. package/esm2022/core/components/base-nav/base-nav.component.mjs +4 -4
  64. package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +4 -4
  65. package/esm2022/core/components/channel-switcher/channel-switcher.component.mjs +4 -4
  66. package/esm2022/core/components/main-nav/main-nav.component.mjs +4 -4
  67. package/esm2022/core/components/notification/notification.component.mjs +4 -4
  68. package/esm2022/core/components/overlay-host/overlay-host.component.mjs +4 -4
  69. package/esm2022/core/components/settings-nav/settings-nav.component.mjs +4 -4
  70. package/esm2022/core/components/theme-switcher/theme-switcher.component.mjs +4 -4
  71. package/esm2022/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +4 -4
  72. package/esm2022/core/components/user-menu/user-menu.component.mjs +4 -4
  73. package/esm2022/core/core.module.mjs +5 -5
  74. package/esm2022/core/data/data.module.mjs +7 -7
  75. package/esm2022/core/data/providers/base-data.service.mjs +10 -11
  76. package/esm2022/core/data/providers/collection-data.service.mjs +3 -3
  77. package/esm2022/core/data/providers/data.service.mjs +8 -8
  78. package/esm2022/core/data/providers/fetch-adapter.mjs +4 -4
  79. package/esm2022/core/data/providers/interceptor.mjs +4 -4
  80. package/esm2022/core/data/providers/product-data.service.mjs +4 -2
  81. package/esm2022/core/data/query-result.mjs +96 -10
  82. package/esm2022/core/data/server-config.mjs +4 -4
  83. package/esm2022/core/data/utils/add-custom-fields.mjs +48 -30
  84. package/esm2022/core/extension/components/angular-route.component.mjs +7 -7
  85. package/esm2022/core/extension/components/route.component.mjs +4 -4
  86. package/esm2022/core/extension/providers/page-metadata.service.mjs +4 -4
  87. package/esm2022/core/providers/alerts/alerts.service.mjs +16 -6
  88. package/esm2022/core/providers/auth/auth.service.mjs +13 -9
  89. package/esm2022/core/providers/breadcrumb/breadcrumb.service.mjs +4 -4
  90. package/esm2022/core/providers/bulk-action-registry/bulk-action-registry.service.mjs +4 -4
  91. package/esm2022/core/providers/channel/channel.service.mjs +4 -4
  92. package/esm2022/core/providers/component-registry/component-registry.service.mjs +4 -4
  93. package/esm2022/core/providers/currency/currency.service.mjs +4 -4
  94. package/esm2022/core/providers/custom-detail-component/custom-detail-component.service.mjs +4 -4
  95. package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +4 -4
  96. package/esm2022/core/providers/custom-history-entry-component/history-entry-component.service.mjs +4 -4
  97. package/esm2022/core/providers/dashboard-widget/dashboard-widget.service.mjs +4 -4
  98. package/esm2022/core/providers/data-table/data-table-config.service.mjs +43 -0
  99. package/esm2022/core/providers/guard/auth.guard.mjs +4 -4
  100. package/esm2022/core/providers/health-check/health-check.service.mjs +4 -4
  101. package/esm2022/core/providers/i18n/custom-message-format-compiler.mjs +4 -4
  102. package/esm2022/core/providers/i18n/i18n.service.mjs +4 -4
  103. package/esm2022/core/providers/job-queue/job-queue.service.mjs +4 -4
  104. package/esm2022/core/providers/local-storage/local-storage.service.mjs +4 -4
  105. package/esm2022/core/providers/localization/localization.service.mjs +4 -4
  106. package/esm2022/core/providers/modal/modal.service.mjs +4 -4
  107. package/esm2022/core/providers/nav-builder/nav-builder.service.mjs +4 -4
  108. package/esm2022/core/providers/notification/notification.service.mjs +4 -4
  109. package/esm2022/core/providers/overlay-host/overlay-host.service.mjs +4 -4
  110. package/esm2022/core/providers/page/page.service.mjs +4 -4
  111. package/esm2022/core/providers/permissions/permissions.service.mjs +4 -4
  112. package/esm2022/core/public_api.mjs +2 -1
  113. package/esm2022/core/shared/components/action-bar/action-bar.component.mjs +10 -10
  114. package/esm2022/core/shared/components/action-bar-dropdown-menu/action-bar-dropdown-menu.component.mjs +4 -4
  115. package/esm2022/core/shared/components/action-bar-items/action-bar-base.component.mjs +4 -4
  116. package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +4 -4
  117. package/esm2022/core/shared/components/address-form/address-form.component.mjs +4 -4
  118. package/esm2022/core/shared/components/affixed-input/affixed-input.component.mjs +4 -4
  119. package/esm2022/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +4 -4
  120. package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +4 -4
  121. package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +4 -4
  122. package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +4 -4
  123. package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +4 -4
  124. package/esm2022/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +4 -4
  125. package/esm2022/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +4 -4
  126. package/esm2022/core/shared/components/asset-search-input/asset-search-input.component.mjs +4 -4
  127. package/esm2022/core/shared/components/assets/assets.component.mjs +4 -4
  128. package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +4 -4
  129. package/esm2022/core/shared/components/bulk-action-menu/bulk-action-menu.component.mjs +4 -4
  130. package/esm2022/core/shared/components/card/card.component.mjs +7 -7
  131. package/esm2022/core/shared/components/channel-assignment-control/channel-assignment-control.component.mjs +4 -4
  132. package/esm2022/core/shared/components/channel-badge/channel-badge.component.mjs +4 -4
  133. package/esm2022/core/shared/components/chart/chart.component.mjs +4 -4
  134. package/esm2022/core/shared/components/chip/chip.component.mjs +4 -4
  135. package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +4 -4
  136. package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +4 -4
  137. package/esm2022/core/shared/components/currency-input/currency-input.component.mjs +4 -4
  138. package/esm2022/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +4 -4
  139. package/esm2022/core/shared/components/custom-field-control/custom-field-control.component.mjs +4 -4
  140. package/esm2022/core/shared/components/customer-label/customer-label.component.mjs +4 -4
  141. package/esm2022/core/shared/components/data-table/data-table-column.component.mjs +4 -4
  142. package/esm2022/core/shared/components/data-table/data-table.component.mjs +4 -4
  143. package/esm2022/core/shared/components/data-table-2/data-table-column.component.mjs +4 -4
  144. package/esm2022/core/shared/components/data-table-2/data-table-custom-component.service.mjs +4 -4
  145. package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +5 -5
  146. package/esm2022/core/shared/components/data-table-2/data-table-search.component.mjs +4 -4
  147. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +45 -53
  148. package/esm2022/core/shared/components/data-table-column-picker/data-table-column-picker.component.mjs +4 -4
  149. package/esm2022/core/shared/components/data-table-filter-label/data-table-filter-label.component.mjs +4 -4
  150. package/esm2022/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.mjs +4 -4
  151. package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +4 -4
  152. package/esm2022/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +25 -37
  153. package/esm2022/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.mjs +4 -4
  154. package/esm2022/core/shared/components/data-table-filters/custom-filter-component.directive.mjs +4 -4
  155. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +4 -4
  156. package/esm2022/core/shared/components/datetime-picker/datetime-picker.component.mjs +4 -4
  157. package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +4 -4
  158. package/esm2022/core/shared/components/dropdown/dropdown-item.directive.mjs +4 -4
  159. package/esm2022/core/shared/components/dropdown/dropdown-menu.component.mjs +4 -4
  160. package/esm2022/core/shared/components/dropdown/dropdown-trigger.directive.mjs +4 -4
  161. package/esm2022/core/shared/components/dropdown/dropdown.component.mjs +4 -4
  162. package/esm2022/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.component.mjs +4 -4
  163. package/esm2022/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +4 -4
  164. package/esm2022/core/shared/components/empty-placeholder/empty-placeholder.component.mjs +4 -4
  165. package/esm2022/core/shared/components/entity-info/entity-info.component.mjs +4 -4
  166. package/esm2022/core/shared/components/extension-host/extension-host.component.mjs +4 -4
  167. package/esm2022/core/shared/components/extension-host/extension-host.service.mjs +4 -4
  168. package/esm2022/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +4 -4
  169. package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +4 -4
  170. package/esm2022/core/shared/components/focal-point-control/focal-point-control.component.mjs +4 -4
  171. package/esm2022/core/shared/components/form-field/form-field-control.directive.mjs +4 -4
  172. package/esm2022/core/shared/components/form-field/form-field.component.mjs +4 -4
  173. package/esm2022/core/shared/components/form-item/form-item.component.mjs +4 -4
  174. package/esm2022/core/shared/components/formatted-address/formatted-address.component.mjs +4 -4
  175. package/esm2022/core/shared/components/help-tooltip/help-tooltip.component.mjs +4 -4
  176. package/esm2022/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +4 -4
  177. package/esm2022/core/shared/components/items-per-page-controls/items-per-page-controls.component.mjs +4 -4
  178. package/esm2022/core/shared/components/labeled-data/labeled-data.component.mjs +4 -4
  179. package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +4 -4
  180. package/esm2022/core/shared/components/language-selector/language-selector.component.mjs +4 -4
  181. package/esm2022/core/shared/components/localized-text/localized-text.component.mjs +4 -4
  182. package/esm2022/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +4 -4
  183. package/esm2022/core/shared/components/modal-dialog/dialog-buttons.directive.mjs +4 -4
  184. package/esm2022/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +4 -4
  185. package/esm2022/core/shared/components/modal-dialog/dialog-title.directive.mjs +4 -4
  186. package/esm2022/core/shared/components/modal-dialog/modal-dialog.component.mjs +4 -4
  187. package/esm2022/core/shared/components/object-tree/object-tree.component.mjs +4 -4
  188. package/esm2022/core/shared/components/order-state-label/order-state-label.component.mjs +4 -4
  189. package/esm2022/core/shared/components/page/page.component.mjs +4 -4
  190. package/esm2022/core/shared/components/page-block/page-block.component.mjs +4 -4
  191. package/esm2022/core/shared/components/page-body/page-body.component.mjs +4 -4
  192. package/esm2022/core/shared/components/page-detail-layout/page-detail-layout.component.mjs +4 -4
  193. package/esm2022/core/shared/components/page-detail-layout/page-detail-sidebar.component.mjs +4 -4
  194. package/esm2022/core/shared/components/page-entity-info/page-entity-info.component.mjs +4 -4
  195. package/esm2022/core/shared/components/page-header/page-header.component.mjs +4 -4
  196. package/esm2022/core/shared/components/page-header-description/page-header-description.component.mjs +4 -4
  197. package/esm2022/core/shared/components/page-header-tabs/page-header-tabs.component.mjs +4 -4
  198. package/esm2022/core/shared/components/page-title/page-title.component.mjs +4 -4
  199. package/esm2022/core/shared/components/pagination-controls/pagination-controls.component.mjs +4 -4
  200. package/esm2022/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +4 -4
  201. package/esm2022/core/shared/components/product-search-input/product-search-input.component.mjs +4 -4
  202. package/esm2022/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +4 -4
  203. package/esm2022/core/shared/components/radio-card/radio-card-fieldset.component.mjs +4 -4
  204. package/esm2022/core/shared/components/radio-card/radio-card.component.mjs +4 -4
  205. package/esm2022/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +4 -4
  206. package/esm2022/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +4 -4
  207. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.mjs +4 -4
  208. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.mjs +4 -4
  209. package/esm2022/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +4 -4
  210. package/esm2022/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.mjs +4 -4
  211. package/esm2022/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +4 -4
  212. package/esm2022/core/shared/components/select-toggle/select-toggle.component.mjs +4 -4
  213. package/esm2022/core/shared/components/simple-dialog/simple-dialog.component.mjs +4 -4
  214. package/esm2022/core/shared/components/split-view/split-view.component.mjs +4 -4
  215. package/esm2022/core/shared/components/split-view/split-view.directive.mjs +7 -7
  216. package/esm2022/core/shared/components/status-badge/status-badge.component.mjs +4 -4
  217. package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +4 -4
  218. package/esm2022/core/shared/components/table-row-action/table-row-action.component.mjs +4 -4
  219. package/esm2022/core/shared/components/tag-selector/tag-selector.component.mjs +4 -4
  220. package/esm2022/core/shared/components/timeline-entry/timeline-entry.component.mjs +4 -4
  221. package/esm2022/core/shared/components/title-input/title-input.component.mjs +4 -4
  222. package/esm2022/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +4 -4
  223. package/esm2022/core/shared/components/zone-selector/zone-selector.component.mjs +4 -4
  224. package/esm2022/core/shared/directives/disabled.directive.mjs +4 -4
  225. package/esm2022/core/shared/directives/if-default-channel-active.directive.mjs +4 -4
  226. package/esm2022/core/shared/directives/if-directive-base.mjs +4 -4
  227. package/esm2022/core/shared/directives/if-multichannel.directive.mjs +4 -4
  228. package/esm2022/core/shared/directives/if-permissions.directive.mjs +4 -4
  229. package/esm2022/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +4 -4
  230. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.mjs +4 -4
  231. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +4 -4
  232. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +4 -4
  233. package/esm2022/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +4 -4
  234. package/esm2022/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +4 -4
  235. package/esm2022/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +4 -4
  236. package/esm2022/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.mjs +4 -4
  237. package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +4 -4
  238. package/esm2022/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +4 -4
  239. package/esm2022/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +4 -4
  240. package/esm2022/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +4 -4
  241. package/esm2022/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +4 -4
  242. package/esm2022/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +4 -4
  243. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +4 -4
  244. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +4 -4
  245. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +4 -4
  246. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +4 -4
  247. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +4 -4
  248. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +10 -10
  249. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +4 -4
  250. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.mjs +4 -4
  251. package/esm2022/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.mjs +4 -4
  252. package/esm2022/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +4 -4
  253. package/esm2022/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +4 -4
  254. package/esm2022/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +4 -4
  255. package/esm2022/core/shared/pipes/asset-preview.pipe.mjs +4 -4
  256. package/esm2022/core/shared/pipes/channel-label.pipe.mjs +4 -4
  257. package/esm2022/core/shared/pipes/custom-field-description.pipe.mjs +4 -4
  258. package/esm2022/core/shared/pipes/custom-field-label.pipe.mjs +4 -4
  259. package/esm2022/core/shared/pipes/duration.pipe.mjs +4 -4
  260. package/esm2022/core/shared/pipes/file-size.pipe.mjs +4 -4
  261. package/esm2022/core/shared/pipes/has-permission.pipe.mjs +4 -4
  262. package/esm2022/core/shared/pipes/locale-base.pipe.mjs +6 -6
  263. package/esm2022/core/shared/pipes/locale-currency-name.pipe.mjs +4 -4
  264. package/esm2022/core/shared/pipes/locale-currency.pipe.mjs +4 -4
  265. package/esm2022/core/shared/pipes/locale-date.pipe.mjs +4 -4
  266. package/esm2022/core/shared/pipes/locale-language-name.pipe.mjs +4 -4
  267. package/esm2022/core/shared/pipes/locale-region-name.pipe.mjs +4 -4
  268. package/esm2022/core/shared/pipes/sentence-case.pipe.mjs +4 -4
  269. package/esm2022/core/shared/pipes/sort.pipe.mjs +4 -4
  270. package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +4 -4
  271. package/esm2022/core/shared/pipes/string-to-color.pipe.mjs +4 -4
  272. package/esm2022/core/shared/pipes/time-ago.pipe.mjs +4 -4
  273. package/esm2022/core/shared/providers/routing/can-deactivate-detail-guard.mjs +4 -4
  274. package/esm2022/core/shared/shared.module.mjs +5 -5
  275. package/esm2022/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +4 -4
  276. package/esm2022/customer/components/address-card/address-card.component.mjs +4 -4
  277. package/esm2022/customer/components/address-detail-dialog/address-detail-dialog.component.mjs +4 -4
  278. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +4 -4
  279. package/esm2022/customer/components/customer-group-detail/customer-group-detail.component.mjs +4 -4
  280. package/esm2022/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +4 -4
  281. package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +7 -5
  282. package/esm2022/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +4 -4
  283. package/esm2022/customer/components/customer-history/customer-history-entry-host.component.mjs +4 -4
  284. package/esm2022/customer/components/customer-history/customer-history.component.mjs +4 -4
  285. package/esm2022/customer/components/customer-list/customer-list.component.mjs +6 -5
  286. package/esm2022/customer/components/customer-status-label/customer-status-label.component.mjs +4 -4
  287. package/esm2022/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.mjs +4 -4
  288. package/esm2022/customer/customer.module.mjs +5 -5
  289. package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +4 -4
  290. package/esm2022/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +4 -4
  291. package/esm2022/dashboard/dashboard.module.mjs +5 -5
  292. package/esm2022/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +8 -8
  293. package/esm2022/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +4 -4
  294. package/esm2022/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +8 -8
  295. package/esm2022/dashboard/widgets/test-widget/test-widget.component.mjs +8 -8
  296. package/esm2022/dashboard/widgets/welcome-widget/welcome-widget.component.mjs +8 -8
  297. package/esm2022/login/components/login/login.component.mjs +4 -4
  298. package/esm2022/login/login.module.mjs +5 -5
  299. package/esm2022/login/providers/login.guard.mjs +4 -4
  300. package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +4 -4
  301. package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +6 -5
  302. package/esm2022/marketing/marketing.module.mjs +5 -5
  303. package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +4 -4
  304. package/esm2022/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +4 -4
  305. package/esm2022/order/components/coupon-code-selector/coupon-code-selector.component.mjs +4 -4
  306. package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +4 -4
  307. package/esm2022/order/components/draft-order-variant-selector/draft-order-variant-selector.component.mjs +4 -4
  308. package/esm2022/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +4 -4
  309. package/esm2022/order/components/fulfillment-card/fulfillment-card.component.mjs +4 -4
  310. package/esm2022/order/components/fulfillment-detail/fulfillment-detail.component.mjs +4 -4
  311. package/esm2022/order/components/fulfillment-state-label/fulfillment-state-label.component.mjs +4 -4
  312. package/esm2022/order/components/line-fulfillment/line-fulfillment.component.mjs +4 -4
  313. package/esm2022/order/components/line-refunds/line-refunds.component.mjs +4 -4
  314. package/esm2022/order/components/modification-detail/modification-detail.component.mjs +4 -4
  315. package/esm2022/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +4 -4
  316. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +4 -17
  317. package/esm2022/order/components/order-data-table/order-total-column.component.mjs +4 -4
  318. package/esm2022/order/components/order-detail/order-detail.component.mjs +4 -4
  319. package/esm2022/order/components/order-editor/order-editor.component.mjs +4 -4
  320. package/esm2022/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +4 -4
  321. package/esm2022/order/components/order-history/order-history-entry-host.component.mjs +4 -4
  322. package/esm2022/order/components/order-history/order-history.component.mjs +4 -4
  323. package/esm2022/order/components/order-list/order-list.component.mjs +6 -5
  324. package/esm2022/order/components/order-modification-summary/order-modification-summary.component.mjs +4 -4
  325. package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +4 -4
  326. package/esm2022/order/components/order-process-graph/order-process-edge.component.mjs +4 -4
  327. package/esm2022/order/components/order-process-graph/order-process-graph.component.mjs +4 -4
  328. package/esm2022/order/components/order-process-graph/order-process-node.component.mjs +4 -4
  329. package/esm2022/order/components/order-process-graph-dialog/order-process-graph-dialog.component.mjs +4 -4
  330. package/esm2022/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +4 -4
  331. package/esm2022/order/components/order-table/order-table.component.mjs +4 -4
  332. package/esm2022/order/components/payment-detail/payment-detail.component.mjs +4 -4
  333. package/esm2022/order/components/payment-for-refund-selector/payment-for-refund-selector.component.mjs +4 -4
  334. package/esm2022/order/components/payment-state-label/payment-state-label.component.mjs +4 -4
  335. package/esm2022/order/components/refund-detail/refund-detail.component.mjs +4 -4
  336. package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +4 -4
  337. package/esm2022/order/components/refund-state-label/refund-state-label.component.mjs +4 -4
  338. package/esm2022/order/components/select-address-dialog/select-address-dialog.component.mjs +4 -4
  339. package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +4 -4
  340. package/esm2022/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.mjs +4 -4
  341. package/esm2022/order/components/seller-orders-card/seller-orders-card.component.mjs +4 -4
  342. package/esm2022/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +4 -4
  343. package/esm2022/order/components/simple-item-list/simple-item-list.component.mjs +4 -4
  344. package/esm2022/order/order.module.mjs +5 -5
  345. package/esm2022/order/providers/order-transition.service.mjs +4 -4
  346. package/esm2022/order/providers/routing/order.guard.mjs +4 -4
  347. package/esm2022/react/components/react-custom-column.component.mjs +4 -4
  348. package/esm2022/react/components/react-custom-detail.component.mjs +4 -4
  349. package/esm2022/react/components/react-form-input.component.mjs +4 -4
  350. package/esm2022/react/components/react-route.component.mjs +4 -4
  351. package/esm2022/react/directives/react-component-host.directive.mjs +4 -4
  352. package/esm2022/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +4 -4
  353. package/esm2022/settings/components/admin-detail/admin-detail.component.mjs +4 -4
  354. package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +6 -5
  355. package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +4 -4
  356. package/esm2022/settings/components/channel-list/channel-list.component.mjs +6 -5
  357. package/esm2022/settings/components/country-detail/country-detail.component.mjs +4 -4
  358. package/esm2022/settings/components/country-list/country-list.component.mjs +6 -5
  359. package/esm2022/settings/components/global-settings/global-settings.component.mjs +4 -4
  360. package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +4 -4
  361. package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +6 -5
  362. package/esm2022/settings/components/permission-grid/permission-grid.component.mjs +4 -4
  363. package/esm2022/settings/components/profile/profile.component.mjs +4 -4
  364. package/esm2022/settings/components/role-detail/role-detail.component.mjs +4 -4
  365. package/esm2022/settings/components/role-list/role-list.component.mjs +6 -5
  366. package/esm2022/settings/components/seller-detail/seller-detail.component.mjs +4 -4
  367. package/esm2022/settings/components/seller-list/seller-list.component.mjs +6 -5
  368. package/esm2022/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.mjs +4 -4
  369. package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +4 -4
  370. package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +6 -5
  371. package/esm2022/settings/components/shipping-method-test-result/shipping-method-test-result.component.mjs +4 -4
  372. package/esm2022/settings/components/stock-location-detail/stock-location-detail.component.mjs +4 -4
  373. package/esm2022/settings/components/stock-location-list/stock-location-list.component.mjs +6 -5
  374. package/esm2022/settings/components/tax-category-detail/tax-category-detail.component.mjs +4 -4
  375. package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +6 -5
  376. package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +4 -4
  377. package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +6 -5
  378. package/esm2022/settings/components/test-address-form/test-address-form.component.mjs +4 -4
  379. package/esm2022/settings/components/test-order-builder/test-order-builder.component.mjs +4 -4
  380. package/esm2022/settings/components/test-shipping-methods/test-shipping-methods.component.mjs +4 -4
  381. package/esm2022/settings/components/zone-detail/zone-detail.component.mjs +4 -4
  382. package/esm2022/settings/components/zone-list/zone-list.component.mjs +6 -5
  383. package/esm2022/settings/components/zone-member-list/zone-member-controls.directive.mjs +4 -4
  384. package/esm2022/settings/components/zone-member-list/zone-member-list-header.directive.mjs +4 -4
  385. package/esm2022/settings/components/zone-member-list/zone-member-list.component.mjs +4 -4
  386. package/esm2022/settings/providers/routing/profile-resolver.mjs +4 -4
  387. package/esm2022/settings/settings.module.mjs +5 -5
  388. package/esm2022/system/components/health-check/health-check.component.mjs +4 -4
  389. package/esm2022/system/components/job-list/job-list.component.mjs +4 -4
  390. package/esm2022/system/components/job-state-label/job-state-label.component.mjs +4 -4
  391. package/esm2022/system/system.module.mjs +5 -5
  392. package/fesm2022/vendure-admin-ui-catalog.mjs +120 -118
  393. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  394. package/fesm2022/vendure-admin-ui-core.mjs +1027 -876
  395. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  396. package/fesm2022/vendure-admin-ui-customer.mjs +48 -45
  397. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  398. package/fesm2022/vendure-admin-ui-dashboard.mjs +41 -41
  399. package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
  400. package/fesm2022/vendure-admin-ui-login.mjs +10 -10
  401. package/fesm2022/vendure-admin-ui-login.mjs.map +1 -1
  402. package/fesm2022/vendure-admin-ui-marketing.mjs +12 -11
  403. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  404. package/fesm2022/vendure-admin-ui-order.mjs +135 -147
  405. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  406. package/fesm2022/vendure-admin-ui-react.mjs +15 -15
  407. package/fesm2022/vendure-admin-ui-react.mjs.map +1 -1
  408. package/fesm2022/vendure-admin-ui-settings.mjs +131 -120
  409. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  410. package/fesm2022/vendure-admin-ui-system.mjs +13 -13
  411. package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
  412. package/marketing/components/promotion-list/promotion-list.component.d.ts +1 -0
  413. package/order/components/order-data-table/order-data-table.component.d.ts +2 -3
  414. package/order/components/order-list/order-list.component.d.ts +1 -0
  415. package/package.json +14 -14
  416. package/settings/components/administrator-list/administrator-list.component.d.ts +1 -0
  417. package/settings/components/channel-list/channel-list.component.d.ts +1 -0
  418. package/settings/components/country-list/country-list.component.d.ts +1 -0
  419. package/settings/components/payment-method-list/payment-method-list.component.d.ts +1 -0
  420. package/settings/components/role-list/role-list.component.d.ts +1 -0
  421. package/settings/components/seller-list/seller-list.component.d.ts +1 -0
  422. package/settings/components/shipping-method-list/shipping-method-list.component.d.ts +1 -0
  423. package/settings/components/stock-location-list/stock-location-list.component.d.ts +1 -0
  424. package/settings/components/tax-category-list/tax-category-list.component.d.ts +1 -0
  425. package/settings/components/tax-rate-list/tax-rate-list.component.d.ts +1 -0
  426. package/settings/components/zone-list/zone-list.component.d.ts +1 -0
  427. package/static/theme.min.css +1 -1
@@ -27,6 +27,7 @@ const GET_SELLER_LIST = gql `
27
27
  export class SellerListComponent extends TypedBaseListComponent {
28
28
  constructor() {
29
29
  super();
30
+ this.dataTableListId = 'seller-list';
30
31
  this.customFields = this.getCustomFieldConfig('Seller');
31
32
  this.filters = this.createFilterCollection()
32
33
  .addIdFilter()
@@ -65,11 +66,11 @@ export class SellerListComponent extends TypedBaseListComponent {
65
66
  refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],
66
67
  });
67
68
  }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SellerListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
69
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: SellerListComponent, selector: "vdr-seller-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"seller-list\" />\r\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"['SuperAdmin', 'CreateSeller']\" [routerLink]=\"['./', 'create']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-seller' | translate }}\r\n </a>\r\n <vdr-action-bar-dropdown-menu locationId=\"seller-list\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-data-table-2\r\n id=\"seller-list\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"seller-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n />\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'catalog.filter-by-name' | translate\"\r\n />\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-seller=\"item\">{{ seller.id }}</ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-seller=\"item\">\r\n {{ seller.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-seller=\"item\">\r\n {{ seller.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\r\n <ng-template let-seller=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', seller.id]\"\r\n ><span>{{ seller.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i4.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i4.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i4.ActionBarDropdownMenuComponent, selector: "vdr-action-bar-dropdown-menu", inputs: ["alwaysShow"] }, { kind: "directive", type: i4.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i4.ActionBarItemsComponent, selector: "vdr-action-bar-items" }, { kind: "component", type: i4.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i4.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i4.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i4.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: i4.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i4.PageBlockComponent, selector: "vdr-page-block" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SellerListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SellerListComponent, selector: "vdr-seller-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"seller-list\" />\r\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"['SuperAdmin', 'CreateSeller']\" [routerLink]=\"['./', 'create']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-seller' | translate }}\r\n </a>\r\n <vdr-action-bar-dropdown-menu locationId=\"seller-list\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-data-table-2\r\n [id]=\"dataTableListId\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"seller-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n />\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'catalog.filter-by-name' | translate\"\r\n />\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-seller=\"item\">{{ seller.id }}</ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-seller=\"item\">\r\n {{ seller.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-seller=\"item\">\r\n {{ seller.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\r\n <ng-template let-seller=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', seller.id]\"\r\n ><span>{{ seller.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i4.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i4.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i4.ActionBarDropdownMenuComponent, selector: "vdr-action-bar-dropdown-menu", inputs: ["alwaysShow"] }, { kind: "directive", type: i4.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i4.ActionBarItemsComponent, selector: "vdr-action-bar-items" }, { kind: "component", type: i4.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i4.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange", "visibleColumnsChange"] }, { kind: "component", type: i4.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i4.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: i4.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i4.PageBlockComponent, selector: "vdr-page-block" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
70
71
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SellerListComponent, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SellerListComponent, decorators: [{
72
73
  type: Component,
73
- args: [{ selector: 'vdr-seller-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"seller-list\" />\r\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"['SuperAdmin', 'CreateSeller']\" [routerLink]=\"['./', 'create']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-seller' | translate }}\r\n </a>\r\n <vdr-action-bar-dropdown-menu locationId=\"seller-list\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-data-table-2\r\n id=\"seller-list\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"seller-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n />\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'catalog.filter-by-name' | translate\"\r\n />\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-seller=\"item\">{{ seller.id }}</ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-seller=\"item\">\r\n {{ seller.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-seller=\"item\">\r\n {{ seller.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\r\n <ng-template let-seller=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', seller.id]\"\r\n ><span>{{ seller.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n" }]
74
+ args: [{ selector: 'vdr-seller-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"seller-list\" />\r\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"['SuperAdmin', 'CreateSeller']\" [routerLink]=\"['./', 'create']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-seller' | translate }}\r\n </a>\r\n <vdr-action-bar-dropdown-menu locationId=\"seller-list\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-data-table-2\r\n [id]=\"dataTableListId\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"seller-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n />\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'catalog.filter-by-name' | translate\"\r\n />\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-seller=\"item\">{{ seller.id }}</ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-seller=\"item\">\r\n {{ seller.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-seller=\"item\">\r\n {{ seller.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\r\n <ng-template let-seller=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', seller.id]\"\r\n ><span>{{ seller.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n" }]
74
75
  }], ctorParameters: () => [] });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsbGVyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXR0aW5ncy9zcmMvY29tcG9uZW50cy9zZWxsZXItbGlzdC9zZWxsZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3NlbGxlci1saXN0L3NlbGxlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFckMsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlMUIsQ0FBQztBQVFGLE1BQU0sT0FBTyxtQkFDVCxTQUFRLHNCQUErRDtJQXdCdkU7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQXRCSCxpQkFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2FBQzNDLFdBQVcsRUFBRTthQUNiLGNBQWMsRUFBRTthQUNoQixTQUFTLENBQUM7WUFDUCxJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDdEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDdkIsV0FBVyxFQUFFLE1BQU07U0FDdEIsQ0FBQzthQUNELHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDeEMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QixVQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2FBQ3ZDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO2FBQ2hDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQzthQUM5QixPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7YUFDOUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3pCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDdEMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUk1QixLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ1osUUFBUSxFQUFFLHFCQUFxQjtZQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUM5QixZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLEVBQUU7b0JBQ0wsSUFBSTtvQkFDSixJQUFJO29CQUNKLE1BQU0sRUFBRTt3QkFDSixJQUFJLEVBQUU7NEJBQ0YsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO3lCQUN6Qzt3QkFDRCxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUU7cUJBQ3RDO29CQUNELElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtpQkFDckM7YUFDSixDQUFDO1lBQ0Ysb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztTQUM3RSxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTdDUSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw4RUM1QmhDLHVzRkErREE7OzJGRG5DYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQgeyBHZXRTZWxsZXJMaXN0RG9jdW1lbnQsIFR5cGVkQmFzZUxpc3RDb21wb25lbnQgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgZ3FsIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xyXG5cclxuY29uc3QgR0VUX1NFTExFUl9MSVNUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0U2VsbGVyTGlzdCgkb3B0aW9uczogU2VsbGVyTGlzdE9wdGlvbnMpIHtcclxuICAgICAgICBzZWxsZXJzKG9wdGlvbnM6ICRvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIC4uLlNlbGxlckxpc3RJdGVtXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZyYWdtZW50IFNlbGxlckxpc3RJdGVtIG9uIFNlbGxlciB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICBuYW1lXHJcbiAgICB9XHJcbmA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXNlbGxlci1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxsZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxsZXItbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWxsZXJMaXN0Q29tcG9uZW50XHJcbiAgICBleHRlbmRzIFR5cGVkQmFzZUxpc3RDb21wb25lbnQ8dHlwZW9mIEdldFNlbGxlckxpc3REb2N1bWVudCwgJ3NlbGxlcnMnPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXRcclxue1xyXG4gICAgcmVhZG9ubHkgY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnU2VsbGVyJyk7XHJcbiAgICByZWFkb25seSBmaWx0ZXJzID0gdGhpcy5jcmVhdGVGaWx0ZXJDb2xsZWN0aW9uKClcclxuICAgICAgICAuYWRkSWRGaWx0ZXIoKVxyXG4gICAgICAgIC5hZGREYXRlRmlsdGVycygpXHJcbiAgICAgICAgLmFkZEZpbHRlcih7XHJcbiAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcclxuICAgICAgICAgICAgdHlwZTogeyBraW5kOiAndGV4dCcgfSxcclxuICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi5uYW1lJyksXHJcbiAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuYWRkQ3VzdG9tRmllbGRGaWx0ZXJzKHRoaXMuY3VzdG9tRmllbGRzKVxyXG4gICAgICAgIC5jb25uZWN0VG9Sb3V0ZSh0aGlzLnJvdXRlKTtcclxuXHJcbiAgICByZWFkb25seSBzb3J0cyA9IHRoaXMuY3JlYXRlU29ydENvbGxlY3Rpb24oKVxyXG4gICAgICAgIC5kZWZhdWx0U29ydCgnY3JlYXRlZEF0JywgJ0RFU0MnKVxyXG4gICAgICAgIC5hZGRTb3J0KHsgbmFtZTogJ2NyZWF0ZWRBdCcgfSlcclxuICAgICAgICAuYWRkU29ydCh7IG5hbWU6ICd1cGRhdGVkQXQnIH0pXHJcbiAgICAgICAgLmFkZFNvcnQoeyBuYW1lOiAnbmFtZScgfSlcclxuICAgICAgICAuYWRkQ3VzdG9tRmllbGRTb3J0cyh0aGlzLmN1c3RvbUZpZWxkcylcclxuICAgICAgICAuY29ubmVjdFRvUm91dGUodGhpcy5yb3V0ZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBzdXBlci5jb25maWd1cmUoe1xyXG4gICAgICAgICAgICBkb2N1bWVudDogR2V0U2VsbGVyTGlzdERvY3VtZW50LFxyXG4gICAgICAgICAgICBnZXRJdGVtczogZGF0YSA9PiBkYXRhLnNlbGxlcnMsXHJcbiAgICAgICAgICAgIHNldFZhcmlhYmxlczogKHNraXAsIHRha2UpID0+ICh7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2tpcCxcclxuICAgICAgICAgICAgICAgICAgICB0YWtlLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluczogdGhpcy5zZWFyY2hUZXJtQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5maWx0ZXJzLmNyZWF0ZUZpbHRlcklucHV0KCksXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzb3J0OiB0aGlzLnNvcnRzLmNyZWF0ZVNvcnRJbnB1dCgpLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0T25DaGFuZ2VzOiBbdGhpcy5maWx0ZXJzLnZhbHVlQ2hhbmdlcywgdGhpcy5zb3J0cy52YWx1ZUNoYW5nZXNdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjx2ZHItcGFnZS1ibG9jaz5cclxuICAgIDx2ZHItYWN0aW9uLWJhcj5cclxuICAgICAgICA8dmRyLWFiLWxlZnQ+IDwvdmRyLWFiLWxlZnQ+XHJcbiAgICAgICAgPHZkci1hYi1yaWdodD5cclxuICAgICAgICAgICAgPHZkci1hY3Rpb24tYmFyLWl0ZW1zIGxvY2F0aW9uSWQ9XCJzZWxsZXItbGlzdFwiIC8+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKnZkcklmUGVybWlzc2lvbnM9XCJbJ1N1cGVyQWRtaW4nLCAnQ3JlYXRlU2VsbGVyJ11cIiBbcm91dGVyTGlua109XCJbJy4vJywgJ2NyZWF0ZSddXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJwbHVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgIHt7ICdzZXR0aW5ncy5jcmVhdGUtbmV3LXNlbGxlcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8dmRyLWFjdGlvbi1iYXItZHJvcGRvd24tbWVudSBsb2NhdGlvbklkPVwic2VsbGVyLWxpc3RcIiAvPlxyXG4gICAgICAgIDwvdmRyLWFiLXJpZ2h0PlxyXG4gICAgPC92ZHItYWN0aW9uLWJhcj5cclxuPC92ZHItcGFnZS1ibG9jaz5cclxuPHZkci1kYXRhLXRhYmxlLTJcclxuICAgIGlkPVwic2VsbGVyLWxpc3RcIlxyXG4gICAgW2l0ZW1zXT1cIml0ZW1zJCB8IGFzeW5jXCJcclxuICAgIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlJCB8IGFzeW5jXCJcclxuICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXMkIHwgYXN5bmNcIlxyXG4gICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlJCB8IGFzeW5jXCJcclxuICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gICAgKHBhZ2VDaGFuZ2UpPVwic2V0UGFnZU51bWJlcigkZXZlbnQpXCJcclxuICAgIChpdGVtc1BlclBhZ2VDaGFuZ2UpPVwic2V0SXRlbXNQZXJQYWdlKCRldmVudClcIlxyXG4+XHJcbiAgICA8dmRyLWJ1bGstYWN0aW9uLW1lbnVcclxuICAgICAgICBsb2NhdGlvbklkPVwic2VsbGVyLWxpc3RcIlxyXG4gICAgICAgIFtob3N0Q29tcG9uZW50XT1cInRoaXNcIlxyXG4gICAgICAgIFtzZWxlY3Rpb25NYW5hZ2VyXT1cInNlbGVjdGlvbk1hbmFnZXJcIlxyXG4gICAgLz5cclxuICAgIDx2ZHItZHQyLXNlYXJjaFxyXG4gICAgICAgIFtzZWFyY2hUZXJtQ29udHJvbF09XCJzZWFyY2hUZXJtQ29udHJvbFwiXHJcbiAgICAgICAgW3NlYXJjaFRlcm1QbGFjZWhvbGRlcl09XCInY2F0YWxvZy5maWx0ZXItYnktbmFtZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgLz5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLmlkJyB8IHRyYW5zbGF0ZVwiIGlkPVwiaWRcIiBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXNlbGxlcj1cIml0ZW1cIj57eyBzZWxsZXIuaWQgfX08L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtblxyXG4gICAgICAgIFtoZWFkaW5nXT1cIidjb21tb24uY3JlYXRlZC1hdCcgfCB0cmFuc2xhdGVcIiBpZD1cImNyZWF0ZWQtYXRcIlxyXG4gICAgICAgIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCdjcmVhdGVkQXQnKVwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1zZWxsZXI9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIHt7IHNlbGxlci5jcmVhdGVkQXQgfCBsb2NhbGVEYXRlIDogJ3Nob3J0JyB9fVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgPHZkci1kdDItY29sdW1uXHJcbiAgICAgICAgW2hlYWRpbmddPVwiJ2NvbW1vbi51cGRhdGVkLWF0JyB8IHRyYW5zbGF0ZVwiIGlkPVwidXBkYXRlZC1hdFwiXHJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcclxuICAgICAgICBbc29ydF09XCJzb3J0cy5nZXQoJ3VwZGF0ZWRBdCcpXCJcclxuICAgID5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXNlbGxlcj1cIml0ZW1cIj5cclxuICAgICAgICAgICAge3sgc2VsbGVyLnVwZGF0ZWRBdCB8IGxvY2FsZURhdGUgOiAnc2hvcnQnIH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5uYW1lJyB8IHRyYW5zbGF0ZVwiIGlkPVwibmFtZVwiIFtvcHRpb25hbF09XCJmYWxzZVwiIFtzb3J0XT1cInNvcnRzLmdldCgnbmFtZScpXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1zZWxsZXI9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiYnV0dG9uLWdob3N0XCIgW3JvdXRlckxpbmtdPVwiWycuLycsIHNlbGxlci5pZF1cIlxyXG4gICAgICAgICAgICAgICAgPjxzcGFuPnt7IHNlbGxlci5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiYXJyb3cgcmlnaHRcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jdXN0b20tZmllbGQtY29sdW1uICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBjdXN0b21GaWVsZHNcIiBbY3VzdG9tRmllbGRdPVwiY3VzdG9tRmllbGRcIiBbc29ydHNdPVwic29ydHNcIiAvPlxyXG48L3Zkci1kYXRhLXRhYmxlLTI+XHJcbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsbGVyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXR0aW5ncy9zcmMvY29tcG9uZW50cy9zZWxsZXItbGlzdC9zZWxsZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3NlbGxlci1saXN0L3NlbGxlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFckMsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlMUIsQ0FBQztBQVFGLE1BQU0sT0FBTyxtQkFDVCxTQUFRLHNCQUErRDtJQXlCdkU7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQXZCWixvQkFBZSxHQUFHLGFBQWEsQ0FBQztRQUN2QixpQkFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2FBQzNDLFdBQVcsRUFBRTthQUNiLGNBQWMsRUFBRTthQUNoQixTQUFTLENBQUM7WUFDUCxJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDdEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDdkIsV0FBVyxFQUFFLE1BQU07U0FDdEIsQ0FBQzthQUNELHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDeEMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QixVQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2FBQ3ZDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO2FBQ2hDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQzthQUM5QixPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7YUFDOUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3pCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDdEMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUk1QixLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ1osUUFBUSxFQUFFLHFCQUFxQjtZQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUM5QixZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLEVBQUU7b0JBQ0wsSUFBSTtvQkFDSixJQUFJO29CQUNKLE1BQU0sRUFBRTt3QkFDSixJQUFJLEVBQUU7NEJBQ0YsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO3lCQUN6Qzt3QkFDRCxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUU7cUJBQ3RDO29CQUNELElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtpQkFDckM7YUFDSixDQUFDO1lBQ0Ysb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztTQUM3RSxDQUFDLENBQUM7SUFDUCxDQUFDOytHQTlDUSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw4RUM1QmhDLHl3RkFnRUE7OzRGRHBDYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQgeyBHZXRTZWxsZXJMaXN0RG9jdW1lbnQsIFR5cGVkQmFzZUxpc3RDb21wb25lbnQgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgZ3FsIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xyXG5cclxuY29uc3QgR0VUX1NFTExFUl9MSVNUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0U2VsbGVyTGlzdCgkb3B0aW9uczogU2VsbGVyTGlzdE9wdGlvbnMpIHtcclxuICAgICAgICBzZWxsZXJzKG9wdGlvbnM6ICRvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIC4uLlNlbGxlckxpc3RJdGVtXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZyYWdtZW50IFNlbGxlckxpc3RJdGVtIG9uIFNlbGxlciB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICBuYW1lXHJcbiAgICB9XHJcbmA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXNlbGxlci1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxsZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxsZXItbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWxsZXJMaXN0Q29tcG9uZW50XHJcbiAgICBleHRlbmRzIFR5cGVkQmFzZUxpc3RDb21wb25lbnQ8dHlwZW9mIEdldFNlbGxlckxpc3REb2N1bWVudCwgJ3NlbGxlcnMnPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXRcclxue1xyXG4gICAgZGF0YVRhYmxlTGlzdElkID0gJ3NlbGxlci1saXN0JztcclxuICAgIHJlYWRvbmx5IGN1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ1NlbGxlcicpO1xyXG4gICAgcmVhZG9ubHkgZmlsdGVycyA9IHRoaXMuY3JlYXRlRmlsdGVyQ29sbGVjdGlvbigpXHJcbiAgICAgICAgLmFkZElkRmlsdGVyKClcclxuICAgICAgICAuYWRkRGF0ZUZpbHRlcnMoKVxyXG4gICAgICAgIC5hZGRGaWx0ZXIoe1xyXG4gICAgICAgICAgICBuYW1lOiAnbmFtZScsXHJcbiAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ3RleHQnIH0sXHJcbiAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24ubmFtZScpLFxyXG4gICAgICAgICAgICBmaWx0ZXJGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmFkZEN1c3RvbUZpZWxkRmlsdGVycyh0aGlzLmN1c3RvbUZpZWxkcylcclxuICAgICAgICAuY29ubmVjdFRvUm91dGUodGhpcy5yb3V0ZSk7XHJcblxyXG4gICAgcmVhZG9ubHkgc29ydHMgPSB0aGlzLmNyZWF0ZVNvcnRDb2xsZWN0aW9uKClcclxuICAgICAgICAuZGVmYXVsdFNvcnQoJ2NyZWF0ZWRBdCcsICdERVNDJylcclxuICAgICAgICAuYWRkU29ydCh7IG5hbWU6ICdjcmVhdGVkQXQnIH0pXHJcbiAgICAgICAgLmFkZFNvcnQoeyBuYW1lOiAndXBkYXRlZEF0JyB9KVxyXG4gICAgICAgIC5hZGRTb3J0KHsgbmFtZTogJ25hbWUnIH0pXHJcbiAgICAgICAgLmFkZEN1c3RvbUZpZWxkU29ydHModGhpcy5jdXN0b21GaWVsZHMpXHJcbiAgICAgICAgLmNvbm5lY3RUb1JvdXRlKHRoaXMucm91dGUpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgc3VwZXIuY29uZmlndXJlKHtcclxuICAgICAgICAgICAgZG9jdW1lbnQ6IEdldFNlbGxlckxpc3REb2N1bWVudCxcclxuICAgICAgICAgICAgZ2V0SXRlbXM6IGRhdGEgPT4gZGF0YS5zZWxsZXJzLFxyXG4gICAgICAgICAgICBzZXRWYXJpYWJsZXM6IChza2lwLCB0YWtlKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHNraXAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZSxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHRoaXMuc2VhcmNoVGVybUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVycy5jcmVhdGVGaWx0ZXJJbnB1dCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc29ydDogdGhpcy5zb3J0cy5jcmVhdGVTb3J0SW5wdXQoKSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICByZWZyZXNoTGlzdE9uQ2hhbmdlczogW3RoaXMuZmlsdGVycy52YWx1ZUNoYW5nZXMsIHRoaXMuc29ydHMudmFsdWVDaGFuZ2VzXSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8dmRyLXBhZ2UtYmxvY2s+XHJcbiAgICA8dmRyLWFjdGlvbi1iYXI+XHJcbiAgICAgICAgPHZkci1hYi1sZWZ0PiA8L3Zkci1hYi1sZWZ0PlxyXG4gICAgICAgIDx2ZHItYWItcmlnaHQ+XHJcbiAgICAgICAgICAgIDx2ZHItYWN0aW9uLWJhci1pdGVtcyBsb2NhdGlvbklkPVwic2VsbGVyLWxpc3RcIiAvPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiICp2ZHJJZlBlcm1pc3Npb25zPVwiWydTdXBlckFkbWluJywgJ0NyZWF0ZVNlbGxlciddXCIgW3JvdXRlckxpbmtdPVwiWycuLycsICdjcmVhdGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGx1c1wiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICB7eyAnc2V0dGluZ3MuY3JlYXRlLW5ldy1zZWxsZXInIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPHZkci1hY3Rpb24tYmFyLWRyb3Bkb3duLW1lbnUgbG9jYXRpb25JZD1cInNlbGxlci1saXN0XCIgLz5cclxuICAgICAgICA8L3Zkci1hYi1yaWdodD5cclxuICAgIDwvdmRyLWFjdGlvbi1iYXI+XHJcbjwvdmRyLXBhZ2UtYmxvY2s+XHJcbjx2ZHItZGF0YS10YWJsZS0yXHJcbiAgICBbaWRdPVwiZGF0YVRhYmxlTGlzdElkXCJcclxuICAgIFtpdGVtc109XCJpdGVtcyQgfCBhc3luY1wiXHJcbiAgICBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZSQgfCBhc3luY1wiXHJcbiAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zJCB8IGFzeW5jXCJcclxuICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZSQgfCBhc3luY1wiXHJcbiAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcclxuICAgIChwYWdlQ2hhbmdlKT1cInNldFBhZ2VOdW1iZXIoJGV2ZW50KVwiXHJcbiAgICAoaXRlbXNQZXJQYWdlQ2hhbmdlKT1cInNldEl0ZW1zUGVyUGFnZSgkZXZlbnQpXCJcclxuICAgICh2aXNpYmxlQ29sdW1uc0NoYW5nZSk9XCJzZXRWaXNpYmxlQ29sdW1ucygkZXZlbnQpXCJcclxuPlxyXG4gICAgPHZkci1idWxrLWFjdGlvbi1tZW51XHJcbiAgICAgICAgbG9jYXRpb25JZD1cInNlbGxlci1saXN0XCJcclxuICAgICAgICBbaG9zdENvbXBvbmVudF09XCJ0aGlzXCJcclxuICAgICAgICBbc2VsZWN0aW9uTWFuYWdlcl09XCJzZWxlY3Rpb25NYW5hZ2VyXCJcclxuICAgIC8+XHJcbiAgICA8dmRyLWR0Mi1zZWFyY2hcclxuICAgICAgICBbc2VhcmNoVGVybUNvbnRyb2xdPVwic2VhcmNoVGVybUNvbnRyb2xcIlxyXG4gICAgICAgIFtzZWFyY2hUZXJtUGxhY2Vob2xkZXJdPVwiJ2NhdGFsb2cuZmlsdGVyLWJ5LW5hbWUnIHwgdHJhbnNsYXRlXCJcclxuICAgIC8+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5pZCcgfCB0cmFuc2xhdGVcIiBpZD1cImlkXCIgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1zZWxsZXI9XCJpdGVtXCI+e3sgc2VsbGVyLmlkIH19PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW5cclxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLmNyZWF0ZWQtYXQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJjcmVhdGVkLWF0XCJcclxuICAgICAgICBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIlxyXG4gICAgICAgIFtzb3J0XT1cInNvcnRzLmdldCgnY3JlYXRlZEF0JylcIlxyXG4gICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtc2VsbGVyPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICB7eyBzZWxsZXIuY3JlYXRlZEF0IHwgbG9jYWxlRGF0ZSA6ICdzaG9ydCcgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtblxyXG4gICAgICAgIFtoZWFkaW5nXT1cIidjb21tb24udXBkYXRlZC1hdCcgfCB0cmFuc2xhdGVcIiBpZD1cInVwZGF0ZWQtYXRcIlxyXG4gICAgICAgIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCd1cGRhdGVkQXQnKVwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1zZWxsZXI9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIHt7IHNlbGxlci51cGRhdGVkQXQgfCBsb2NhbGVEYXRlIDogJ3Nob3J0JyB9fVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24ubmFtZScgfCB0cmFuc2xhdGVcIiBpZD1cIm5hbWVcIiBbb3B0aW9uYWxdPVwiZmFsc2VcIiBbc29ydF09XCJzb3J0cy5nZXQoJ25hbWUnKVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtc2VsbGVyPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImJ1dHRvbi1naG9zdFwiIFtyb3V0ZXJMaW5rXT1cIlsnLi8nLCBzZWxsZXIuaWRdXCJcclxuICAgICAgICAgICAgICAgID48c3Bhbj57eyBzZWxsZXIubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImFycm93IHJpZ2h0XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgPHZkci1kdDItY3VzdG9tLWZpZWxkLWNvbHVtbiAqbmdGb3I9XCJsZXQgY3VzdG9tRmllbGQgb2YgY3VzdG9tRmllbGRzXCIgW2N1c3RvbUZpZWxkXT1cImN1c3RvbUZpZWxkXCIgW3NvcnRzXT1cInNvcnRzXCIgLz5cclxuPC92ZHItZGF0YS10YWJsZS0yPlxyXG4iXX0=
@@ -10,10 +10,10 @@ export class ShippingEligibilityTestResultComponent {
10
10
  this.testDataUpdated = false;
11
11
  this.runTest = new EventEmitter();
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ShippingEligibilityTestResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ShippingEligibilityTestResultComponent, selector: "vdr-shipping-eligibility-test-result", inputs: { testResult: "testResult", okToRun: "okToRun", testDataUpdated: "testDataUpdated", currencyCode: "currencyCode" }, outputs: { runTest: "runTest" }, ngImport: i0, template: "<vdr-card class=\"test-result\" [title]=\"'settings.test-result' | translate\">\r\n <div class=\"card-span\" *ngFor=\"let quote of testResult\">\r\n <div class=\"result-details\" [class.stale]=\"testDataUpdated\">\r\n <vdr-labeled-data [label]=\"'settings.shipping-method' | translate\">\r\n {{ quote.name }}\r\n </vdr-labeled-data>\r\n <div class=\"price-row\">\r\n <vdr-labeled-data [label]=\"'common.price' | translate\">\r\n {{ quote.price | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.price-with-tax' | translate\">\r\n {{ quote.priceWithTax | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n <vdr-object-tree *ngIf=\"quote.metadata\" [value]=\"quote.metadata\"></vdr-object-tree>\r\n </div>\r\n </div>\r\n <div class=\"card-span\" *ngIf=\"testResult?.length === 0\">\r\n <clr-icon shape=\"ban\" class=\"is-solid error\"></clr-icon>\r\n {{ 'settings.no-eligible-shipping-methods' | translate }}\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"btn btn-secondary\" (click)=\"runTest.emit()\" [disabled]=\"!okToRun\">\r\n {{ 'settings.test-shipping-methods' | translate }}\r\n </button>\r\n </div>\r\n</vdr-card>\r\n", styles: [":host{display:block}.result-details{transition:opacity .2s}.result-details.stale{opacity:.5}.price-row{display:flex}.price-row>*:not(:first-child){margin-inline-start:24px}clr-icon.error{color:var(--color-error-500)}\n"], dependencies: [{ kind: "directive", type: i1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { kind: "component", type: i3.ObjectTreeComponent, selector: "vdr-object-tree", inputs: ["value", "isArrayItem"] }, { kind: "component", type: i3.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i3.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShippingEligibilityTestResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ShippingEligibilityTestResultComponent, selector: "vdr-shipping-eligibility-test-result", inputs: { testResult: "testResult", okToRun: "okToRun", testDataUpdated: "testDataUpdated", currencyCode: "currencyCode" }, outputs: { runTest: "runTest" }, ngImport: i0, template: "<vdr-card class=\"test-result\" [title]=\"'settings.test-result' | translate\">\r\n <div class=\"card-span\" *ngFor=\"let quote of testResult\">\r\n <div class=\"result-details\" [class.stale]=\"testDataUpdated\">\r\n <vdr-labeled-data [label]=\"'settings.shipping-method' | translate\">\r\n {{ quote.name }}\r\n </vdr-labeled-data>\r\n <div class=\"price-row\">\r\n <vdr-labeled-data [label]=\"'common.price' | translate\">\r\n {{ quote.price | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.price-with-tax' | translate\">\r\n {{ quote.priceWithTax | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n <vdr-object-tree *ngIf=\"quote.metadata\" [value]=\"quote.metadata\"></vdr-object-tree>\r\n </div>\r\n </div>\r\n <div class=\"card-span\" *ngIf=\"testResult?.length === 0\">\r\n <clr-icon shape=\"ban\" class=\"is-solid error\"></clr-icon>\r\n {{ 'settings.no-eligible-shipping-methods' | translate }}\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"btn btn-secondary\" (click)=\"runTest.emit()\" [disabled]=\"!okToRun\">\r\n {{ 'settings.test-shipping-methods' | translate }}\r\n </button>\r\n </div>\r\n</vdr-card>\r\n", styles: [":host{display:block}.result-details{transition:opacity .2s}.result-details.stale{opacity:.5}.price-row{display:flex}.price-row>*:not(:first-child){margin-inline-start:24px}clr-icon.error{color:var(--color-error-500)}\n"], dependencies: [{ kind: "directive", type: i1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { kind: "component", type: i3.ObjectTreeComponent, selector: "vdr-object-tree", inputs: ["value", "isArrayItem"] }, { kind: "component", type: i3.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i3.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ShippingEligibilityTestResultComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShippingEligibilityTestResultComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'vdr-shipping-eligibility-test-result', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-card class=\"test-result\" [title]=\"'settings.test-result' | translate\">\r\n <div class=\"card-span\" *ngFor=\"let quote of testResult\">\r\n <div class=\"result-details\" [class.stale]=\"testDataUpdated\">\r\n <vdr-labeled-data [label]=\"'settings.shipping-method' | translate\">\r\n {{ quote.name }}\r\n </vdr-labeled-data>\r\n <div class=\"price-row\">\r\n <vdr-labeled-data [label]=\"'common.price' | translate\">\r\n {{ quote.price | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.price-with-tax' | translate\">\r\n {{ quote.priceWithTax | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n <vdr-object-tree *ngIf=\"quote.metadata\" [value]=\"quote.metadata\"></vdr-object-tree>\r\n </div>\r\n </div>\r\n <div class=\"card-span\" *ngIf=\"testResult?.length === 0\">\r\n <clr-icon shape=\"ban\" class=\"is-solid error\"></clr-icon>\r\n {{ 'settings.no-eligible-shipping-methods' | translate }}\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"btn btn-secondary\" (click)=\"runTest.emit()\" [disabled]=\"!okToRun\">\r\n {{ 'settings.test-shipping-methods' | translate }}\r\n </button>\r\n </div>\r\n</vdr-card>\r\n", styles: [":host{display:block}.result-details{transition:opacity .2s}.result-details.stale{opacity:.5}.price-row{display:flex}.price-row>*:not(:first-child){margin-inline-start:24px}clr-icon.error{color:var(--color-error-500)}\n"] }]
19
19
  }], propDecorators: { testResult: [{
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
27
27
  }], runTest: [{
28
28
  type: Output
29
29
  }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctZWxpZ2liaWxpdHktdGVzdC1yZXN1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXR0aW5ncy9zcmMvY29tcG9uZW50cy9zaGlwcGluZy1lbGlnaWJpbGl0eS10ZXN0LXJlc3VsdC9zaGlwcGluZy1lbGlnaWJpbGl0eS10ZXN0LXJlc3VsdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3NoaXBwaW5nLWVsaWdpYmlsaXR5LXRlc3QtcmVzdWx0L3NoaXBwaW5nLWVsaWdpYmlsaXR5LXRlc3QtcmVzdWx0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVVoRyxNQUFNLE9BQU8sc0NBQXNDO0lBTm5EO1FBUWEsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV2QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQUNoRDs4R0FOWSxzQ0FBc0M7a0dBQXRDLHNDQUFzQyx5T0NWbkQsdzZDQTJCQTs7MkZEakJhLHNDQUFzQztrQkFObEQsU0FBUzsrQkFDSSxzQ0FBc0MsbUJBRy9CLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDdXJyZW5jeUNvZGUsIFNoaXBwaW5nTWV0aG9kUXVvdGUgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItc2hpcHBpbmctZWxpZ2liaWxpdHktdGVzdC1yZXN1bHQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NoaXBwaW5nLWVsaWdpYmlsaXR5LXRlc3QtcmVzdWx0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NoaXBwaW5nLWVsaWdpYmlsaXR5LXRlc3QtcmVzdWx0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNoaXBwaW5nRWxpZ2liaWxpdHlUZXN0UmVzdWx0Q29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIHRlc3RSZXN1bHQ6IFNoaXBwaW5nTWV0aG9kUXVvdGVbXTtcclxuICAgIEBJbnB1dCgpIG9rVG9SdW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHRlc3REYXRhVXBkYXRlZCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgY3VycmVuY3lDb2RlOiBDdXJyZW5jeUNvZGU7XHJcbiAgICBAT3V0cHV0KCkgcnVuVGVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxufVxyXG4iLCI8dmRyLWNhcmQgY2xhc3M9XCJ0ZXN0LXJlc3VsdFwiIFt0aXRsZV09XCInc2V0dGluZ3MudGVzdC1yZXN1bHQnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1zcGFuXCIgKm5nRm9yPVwibGV0IHF1b3RlIG9mIHRlc3RSZXN1bHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWRldGFpbHNcIiBbY2xhc3Muc3RhbGVdPVwidGVzdERhdGFVcGRhdGVkXCI+XHJcbiAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhIFtsYWJlbF09XCInc2V0dGluZ3Muc2hpcHBpbmctbWV0aG9kJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgcXVvdGUubmFtZSB9fVxyXG4gICAgICAgICAgICA8L3Zkci1sYWJlbGVkLWRhdGE+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhIFtsYWJlbF09XCInY29tbW9uLnByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHF1b3RlLnByaWNlIHwgbG9jYWxlQ3VycmVuY3k6IGN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgPC92ZHItbGFiZWxlZC1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGEgW2xhYmVsXT1cIidjb21tb24ucHJpY2Utd2l0aC10YXgnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcXVvdGUucHJpY2VXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3k6IGN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgPC92ZHItbGFiZWxlZC1kYXRhPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHZkci1vYmplY3QtdHJlZSAqbmdJZj1cInF1b3RlLm1ldGFkYXRhXCIgW3ZhbHVlXT1cInF1b3RlLm1ldGFkYXRhXCI+PC92ZHItb2JqZWN0LXRyZWU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLXNwYW5cIiAqbmdJZj1cInRlc3RSZXN1bHQ/Lmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImJhblwiIGNsYXNzPVwiaXMtc29saWQgZXJyb3JcIj48L2Nsci1pY29uPlxyXG4gICAgICAgIHt7ICdzZXR0aW5ncy5uby1lbGlnaWJsZS1zaGlwcGluZy1tZXRob2RzJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwicnVuVGVzdC5lbWl0KClcIiBbZGlzYWJsZWRdPVwiIW9rVG9SdW5cIj5cclxuICAgICAgICAgICAge3sgJ3NldHRpbmdzLnRlc3Qtc2hpcHBpbmctbWV0aG9kcycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L3Zkci1jYXJkPlxyXG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctZWxpZ2liaWxpdHktdGVzdC1yZXN1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXR0aW5ncy9zcmMvY29tcG9uZW50cy9zaGlwcGluZy1lbGlnaWJpbGl0eS10ZXN0LXJlc3VsdC9zaGlwcGluZy1lbGlnaWJpbGl0eS10ZXN0LXJlc3VsdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3NoaXBwaW5nLWVsaWdpYmlsaXR5LXRlc3QtcmVzdWx0L3NoaXBwaW5nLWVsaWdpYmlsaXR5LXRlc3QtcmVzdWx0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVVoRyxNQUFNLE9BQU8sc0NBQXNDO0lBTm5EO1FBUWEsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV2QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQUNoRDsrR0FOWSxzQ0FBc0M7bUdBQXRDLHNDQUFzQyx5T0NWbkQsdzZDQTJCQTs7NEZEakJhLHNDQUFzQztrQkFObEQsU0FBUzsrQkFDSSxzQ0FBc0MsbUJBRy9CLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDdXJyZW5jeUNvZGUsIFNoaXBwaW5nTWV0aG9kUXVvdGUgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItc2hpcHBpbmctZWxpZ2liaWxpdHktdGVzdC1yZXN1bHQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NoaXBwaW5nLWVsaWdpYmlsaXR5LXRlc3QtcmVzdWx0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NoaXBwaW5nLWVsaWdpYmlsaXR5LXRlc3QtcmVzdWx0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNoaXBwaW5nRWxpZ2liaWxpdHlUZXN0UmVzdWx0Q29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIHRlc3RSZXN1bHQ6IFNoaXBwaW5nTWV0aG9kUXVvdGVbXTtcclxuICAgIEBJbnB1dCgpIG9rVG9SdW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHRlc3REYXRhVXBkYXRlZCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgY3VycmVuY3lDb2RlOiBDdXJyZW5jeUNvZGU7XHJcbiAgICBAT3V0cHV0KCkgcnVuVGVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxufVxyXG4iLCI8dmRyLWNhcmQgY2xhc3M9XCJ0ZXN0LXJlc3VsdFwiIFt0aXRsZV09XCInc2V0dGluZ3MudGVzdC1yZXN1bHQnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1zcGFuXCIgKm5nRm9yPVwibGV0IHF1b3RlIG9mIHRlc3RSZXN1bHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWRldGFpbHNcIiBbY2xhc3Muc3RhbGVdPVwidGVzdERhdGFVcGRhdGVkXCI+XHJcbiAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhIFtsYWJlbF09XCInc2V0dGluZ3Muc2hpcHBpbmctbWV0aG9kJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgcXVvdGUubmFtZSB9fVxyXG4gICAgICAgICAgICA8L3Zkci1sYWJlbGVkLWRhdGE+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhIFtsYWJlbF09XCInY29tbW9uLnByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHF1b3RlLnByaWNlIHwgbG9jYWxlQ3VycmVuY3k6IGN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgPC92ZHItbGFiZWxlZC1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGEgW2xhYmVsXT1cIidjb21tb24ucHJpY2Utd2l0aC10YXgnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcXVvdGUucHJpY2VXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3k6IGN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgPC92ZHItbGFiZWxlZC1kYXRhPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHZkci1vYmplY3QtdHJlZSAqbmdJZj1cInF1b3RlLm1ldGFkYXRhXCIgW3ZhbHVlXT1cInF1b3RlLm1ldGFkYXRhXCI+PC92ZHItb2JqZWN0LXRyZWU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLXNwYW5cIiAqbmdJZj1cInRlc3RSZXN1bHQ/Lmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImJhblwiIGNsYXNzPVwiaXMtc29saWQgZXJyb3JcIj48L2Nsci1pY29uPlxyXG4gICAgICAgIHt7ICdzZXR0aW5ncy5uby1lbGlnaWJsZS1zaGlwcGluZy1tZXRob2RzJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwicnVuVGVzdC5lbWl0KClcIiBbZGlzYWJsZWRdPVwiIW9rVG9SdW5cIj5cclxuICAgICAgICAgICAge3sgJ3NldHRpbmdzLnRlc3Qtc2hpcHBpbmctbWV0aG9kcycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L3Zkci1jYXJkPlxyXG4iXX0=
@@ -246,11 +246,11 @@ export class ShippingMethodDetailComponent extends TypedBaseDetailComponent {
246
246
  this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), shippingMethod, currentTranslation);
247
247
  }
248
248
  }
249
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ShippingMethodDetailComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DataService }, { token: i2.FormBuilder }, { token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
250
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ShippingMethodDetailComponent, selector: "vdr-shipping-method-detail", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n />\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"shipping-method-detail\" />\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"\r\n detailForm.pristine || detailForm.invalid || !selectedChecker || !selectedCalculator\r\n \"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"updatePermission\"\r\n [disabled]=\"\r\n detailForm.pristine || detailForm.invalid || !selectedChecker || !selectedCalculator\r\n \"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n <vdr-action-bar-dropdown-menu locationId=\"shipping-method-detail\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateCode(entity?.code, $event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n [readOnlyToggle]=\"updatePermission | hasPermission\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n formControlName=\"code\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-rich-text-editor\r\n class=\"form-grid-span\"\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [label]=\"'common.description' | translate\"\r\n ></vdr-rich-text-editor>\r\n <vdr-form-field\r\n [label]=\"'settings.fulfillment-handler' | translate\"\r\n for=\"fulfillmentHandler\"\r\n >\r\n <select\r\n name=\"fulfillmentHandler\"\r\n formControlName=\"fulfillmentHandler\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option *ngFor=\"let handler of fulfillmentHandlers\" [value]=\"handler.code\">\r\n {{ handler.code }}: {{ handler.description }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"ShippingMethod\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n\r\n <vdr-custom-detail-component-host\r\n locationId=\"shipping-method-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-card [title]=\"'settings.shipping-eligibility-checker' | translate\">\r\n <vdr-configurable-input\r\n class=\"card-span\"\r\n *ngIf=\"selectedChecker && selectedCheckerDefinition\"\r\n [operation]=\"selectedChecker\"\r\n [operationDefinition]=\"selectedCheckerDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"selectedChecker = null\"\r\n formControlName=\"checker\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedChecker || !selectedCheckerDefinition\" class=\"card-span\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let checker of checkers\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectChecker(checker)\"\r\n >\r\n {{ checker.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.shipping-calculator' | translate\">\r\n <vdr-configurable-input\r\n class=\"card-span\"\r\n *ngIf=\"selectedCalculator && selectedCalculatorDefinition\"\r\n [operation]=\"selectedCalculator\"\r\n [operationDefinition]=\"selectedCalculatorDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"selectedCalculator = null\"\r\n formControlName=\"calculator\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedCalculator || !selectedCalculatorDefinition\" class=\"card-span\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let calculator of calculators\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectCalculator(calculator)\"\r\n >\r\n {{ calculator.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.test-shipping-method' | translate\">\r\n <vdr-test-order-builder\r\n class=\"card-span\"\r\n (orderLinesChange)=\"setTestOrderLines($event)\"\r\n ></vdr-test-order-builder>\r\n <vdr-test-address-form\r\n (addressChange)=\"setTestAddress($event)\"\r\n class=\"mt-2\"\r\n ></vdr-test-address-form>\r\n <vdr-shipping-method-test-result\r\n class=\"mt-2\"\r\n [currencyCode]=\"(activeChannel$ | async)?.currencyCode\"\r\n [okToRun]=\"allTestDataPresent() && testDataUpdated && detailForm.valid\"\r\n [testDataUpdated]=\"testDataUpdated\"\r\n [testResult]=\"testResult$ | async\"\r\n (runTest)=\"runTest()\"\r\n ></vdr-shipping-method-test-result>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarDropdownMenuComponent, selector: "vdr-action-bar-dropdown-menu", inputs: ["alwaysShow"] }, { kind: "component", type: i1.ConfigurableInputComponent, selector: "vdr-configurable-input", inputs: ["operation", "operationDefinition", "readonly", "removable", "position", "hideDescription"], outputs: ["remove"] }, { kind: "component", type: i1.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"], outputs: ["readOnlyToggleChange"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select, vdr-currency-input" }, { kind: "component", type: i1.LanguageSelectorComponent, selector: "vdr-language-selector", inputs: ["currentLanguageCode", "availableLanguageCodes", "disabled"], outputs: ["languageCodeChange"] }, { kind: "component", type: i1.RichTextEditorComponent, selector: "vdr-rich-text-editor", inputs: ["label", "readonly"] }, { kind: "component", type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items" }, { kind: "directive", type: i1.DisabledDirective, selector: "[vdrDisabled]", inputs: ["vdrDisabled"] }, { kind: "component", type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i1.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: i1.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i1.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i1.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "component", type: i5.TestOrderBuilderComponent, selector: "vdr-test-order-builder", outputs: ["orderLinesChange"] }, { kind: "component", type: i6.TestAddressFormComponent, selector: "vdr-test-address-form", outputs: ["addressChange"] }, { kind: "component", type: i7.ShippingMethodTestResultComponent, selector: "vdr-shipping-method-test-result", inputs: ["testResult", "okToRun", "testDataUpdated", "currencyCode"], outputs: ["runTest"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
249
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShippingMethodDetailComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DataService }, { token: i2.FormBuilder }, { token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
250
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ShippingMethodDetailComponent, selector: "vdr-shipping-method-detail", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n />\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"shipping-method-detail\" />\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"\r\n detailForm.pristine || detailForm.invalid || !selectedChecker || !selectedCalculator\r\n \"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"updatePermission\"\r\n [disabled]=\"\r\n detailForm.pristine || detailForm.invalid || !selectedChecker || !selectedCalculator\r\n \"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n <vdr-action-bar-dropdown-menu locationId=\"shipping-method-detail\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateCode(entity?.code, $event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n [readOnlyToggle]=\"updatePermission | hasPermission\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n formControlName=\"code\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-rich-text-editor\r\n class=\"form-grid-span\"\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [label]=\"'common.description' | translate\"\r\n ></vdr-rich-text-editor>\r\n <vdr-form-field\r\n [label]=\"'settings.fulfillment-handler' | translate\"\r\n for=\"fulfillmentHandler\"\r\n >\r\n <select\r\n name=\"fulfillmentHandler\"\r\n formControlName=\"fulfillmentHandler\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option *ngFor=\"let handler of fulfillmentHandlers\" [value]=\"handler.code\">\r\n {{ handler.code }}: {{ handler.description }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"ShippingMethod\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n\r\n <vdr-custom-detail-component-host\r\n locationId=\"shipping-method-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-card [title]=\"'settings.shipping-eligibility-checker' | translate\">\r\n <vdr-configurable-input\r\n class=\"card-span\"\r\n *ngIf=\"selectedChecker && selectedCheckerDefinition\"\r\n [operation]=\"selectedChecker\"\r\n [operationDefinition]=\"selectedCheckerDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"selectedChecker = null\"\r\n formControlName=\"checker\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedChecker || !selectedCheckerDefinition\" class=\"card-span\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let checker of checkers\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectChecker(checker)\"\r\n >\r\n {{ checker.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.shipping-calculator' | translate\">\r\n <vdr-configurable-input\r\n class=\"card-span\"\r\n *ngIf=\"selectedCalculator && selectedCalculatorDefinition\"\r\n [operation]=\"selectedCalculator\"\r\n [operationDefinition]=\"selectedCalculatorDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"selectedCalculator = null\"\r\n formControlName=\"calculator\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedCalculator || !selectedCalculatorDefinition\" class=\"card-span\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let calculator of calculators\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectCalculator(calculator)\"\r\n >\r\n {{ calculator.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.test-shipping-method' | translate\">\r\n <vdr-test-order-builder\r\n class=\"card-span\"\r\n (orderLinesChange)=\"setTestOrderLines($event)\"\r\n ></vdr-test-order-builder>\r\n <vdr-test-address-form\r\n (addressChange)=\"setTestAddress($event)\"\r\n class=\"mt-2\"\r\n ></vdr-test-address-form>\r\n <vdr-shipping-method-test-result\r\n class=\"mt-2\"\r\n [currencyCode]=\"(activeChannel$ | async)?.currencyCode\"\r\n [okToRun]=\"allTestDataPresent() && testDataUpdated && detailForm.valid\"\r\n [testDataUpdated]=\"testDataUpdated\"\r\n [testResult]=\"testResult$ | async\"\r\n (runTest)=\"runTest()\"\r\n ></vdr-shipping-method-test-result>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarDropdownMenuComponent, selector: "vdr-action-bar-dropdown-menu", inputs: ["alwaysShow"] }, { kind: "component", type: i1.ConfigurableInputComponent, selector: "vdr-configurable-input", inputs: ["operation", "operationDefinition", "readonly", "removable", "position", "hideDescription"], outputs: ["remove"] }, { kind: "component", type: i1.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"], outputs: ["readOnlyToggleChange"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select, vdr-currency-input" }, { kind: "component", type: i1.LanguageSelectorComponent, selector: "vdr-language-selector", inputs: ["currentLanguageCode", "availableLanguageCodes", "disabled"], outputs: ["languageCodeChange"] }, { kind: "component", type: i1.RichTextEditorComponent, selector: "vdr-rich-text-editor", inputs: ["label", "readonly"] }, { kind: "component", type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items" }, { kind: "directive", type: i1.DisabledDirective, selector: "[vdrDisabled]", inputs: ["vdrDisabled"] }, { kind: "component", type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i1.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: i1.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i1.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i1.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "component", type: i5.TestOrderBuilderComponent, selector: "vdr-test-order-builder", outputs: ["orderLinesChange"] }, { kind: "component", type: i6.TestAddressFormComponent, selector: "vdr-test-address-form", outputs: ["addressChange"] }, { kind: "component", type: i7.ShippingMethodTestResultComponent, selector: "vdr-shipping-method-test-result", inputs: ["testResult", "okToRun", "testDataUpdated", "currencyCode"], outputs: ["runTest"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
251
251
  }
252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ShippingMethodDetailComponent, decorators: [{
252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShippingMethodDetailComponent, decorators: [{
253
253
  type: Component,
254
254
  args: [{ selector: 'vdr-shipping-method-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n />\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"shipping-method-detail\" />\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"\r\n detailForm.pristine || detailForm.invalid || !selectedChecker || !selectedCalculator\r\n \"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"updatePermission\"\r\n [disabled]=\"\r\n detailForm.pristine || detailForm.invalid || !selectedChecker || !selectedCalculator\r\n \"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n <vdr-action-bar-dropdown-menu locationId=\"shipping-method-detail\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateCode(entity?.code, $event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n [readOnlyToggle]=\"updatePermission | hasPermission\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n formControlName=\"code\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-rich-text-editor\r\n class=\"form-grid-span\"\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [label]=\"'common.description' | translate\"\r\n ></vdr-rich-text-editor>\r\n <vdr-form-field\r\n [label]=\"'settings.fulfillment-handler' | translate\"\r\n for=\"fulfillmentHandler\"\r\n >\r\n <select\r\n name=\"fulfillmentHandler\"\r\n formControlName=\"fulfillmentHandler\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option *ngFor=\"let handler of fulfillmentHandlers\" [value]=\"handler.code\">\r\n {{ handler.code }}: {{ handler.description }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"ShippingMethod\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n\r\n <vdr-custom-detail-component-host\r\n locationId=\"shipping-method-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-card [title]=\"'settings.shipping-eligibility-checker' | translate\">\r\n <vdr-configurable-input\r\n class=\"card-span\"\r\n *ngIf=\"selectedChecker && selectedCheckerDefinition\"\r\n [operation]=\"selectedChecker\"\r\n [operationDefinition]=\"selectedCheckerDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"selectedChecker = null\"\r\n formControlName=\"checker\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedChecker || !selectedCheckerDefinition\" class=\"card-span\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let checker of checkers\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectChecker(checker)\"\r\n >\r\n {{ checker.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.shipping-calculator' | translate\">\r\n <vdr-configurable-input\r\n class=\"card-span\"\r\n *ngIf=\"selectedCalculator && selectedCalculatorDefinition\"\r\n [operation]=\"selectedCalculator\"\r\n [operationDefinition]=\"selectedCalculatorDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"selectedCalculator = null\"\r\n formControlName=\"calculator\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedCalculator || !selectedCalculatorDefinition\" class=\"card-span\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let calculator of calculators\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectCalculator(calculator)\"\r\n >\r\n {{ calculator.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.test-shipping-method' | translate\">\r\n <vdr-test-order-builder\r\n class=\"card-span\"\r\n (orderLinesChange)=\"setTestOrderLines($event)\"\r\n ></vdr-test-order-builder>\r\n <vdr-test-address-form\r\n (addressChange)=\"setTestAddress($event)\"\r\n class=\"mt-2\"\r\n ></vdr-test-address-form>\r\n <vdr-shipping-method-test-result\r\n class=\"mt-2\"\r\n [currencyCode]=\"(activeChannel$ | async)?.currencyCode\"\r\n [okToRun]=\"allTestDataPresent() && testDataUpdated && detailForm.valid\"\r\n [testDataUpdated]=\"testDataUpdated\"\r\n [testResult]=\"testResult$ | async\"\r\n (runTest)=\"runTest()\"\r\n ></vdr-shipping-method-test-result>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n" }]
255
255
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.DataService }, { type: i2.FormBuilder }, { type: i1.NotificationService }] });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctbWV0aG9kLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3NoaXBwaW5nLW1ldGhvZC1kZXRhaWwvc2hpcHBpbmctbWV0aG9kLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3NoaXBwaW5nLW1ldGhvZC1kZXRhaWwvc2hpcHBpbmctbWV0aG9kLWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUNILGdDQUFnQyxFQUloQyx5QkFBeUIsRUFFekIsZUFBZSxFQUVmLGlCQUFpQixFQUNqQix1QkFBdUIsRUFLdkIsVUFBVSxFQUNWLHdCQUF3QixFQUl4Qiw0QkFBNEIsRUFDNUIsd0JBQXdCLEdBRTNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQUt0RSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxHQUFHLENB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QzVGLENBQUM7UUFDTixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxjQUFjLENBQUMsVUFBVSxJQUFJO2dCQUNuRCxJQUFJLEVBQUUsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJO2dCQUNyQyxJQUFJLEVBQUUsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2hHLENBQUM7UUFDTixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyx3QkFBd0IsQ0FDekIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUNyQyxjQUFjLEVBQ2Qsa0JBQWtCLENBQ3JCLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQzs4R0FoU1EsNkJBQTZCO2tHQUE3Qiw2QkFBNkIseUZDbEQxQyxneFNBK0xBOzsyRkQ3SWEsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNJLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UsXHJcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb24sXHJcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uLFxyXG4gICAgQ3JlYXRlU2hpcHBpbmdNZXRob2RJbnB1dCxcclxuICAgIGNyZWF0ZVVwZGF0ZWRUcmFuc2xhdGFibGUsXHJcbiAgICBEYXRhU2VydmljZSxcclxuICAgIGZpbmRUcmFuc2xhdGlvbixcclxuICAgIEdldEFjdGl2ZUNoYW5uZWxRdWVyeSxcclxuICAgIGdldENvbmZpZ0FyZ1ZhbHVlLFxyXG4gICAgZ2V0Q3VzdG9tRmllbGRzRGVmYXVsdHMsXHJcbiAgICBHZXRTaGlwcGluZ01ldGhvZERldGFpbERvY3VtZW50LFxyXG4gICAgR2V0U2hpcHBpbmdNZXRob2REZXRhaWxRdWVyeSxcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBQZXJtaXNzaW9uLFxyXG4gICAgU0hJUFBJTkdfTUVUSE9EX0ZSQUdNRU5ULFxyXG4gICAgU2hpcHBpbmdNZXRob2RGcmFnbWVudCxcclxuICAgIFRlc3RTaGlwcGluZ01ldGhvZElucHV0LFxyXG4gICAgVGVzdFNoaXBwaW5nTWV0aG9kUmVzdWx0LFxyXG4gICAgdG9Db25maWd1cmFibGVPcGVyYXRpb25JbnB1dCxcclxuICAgIFR5cGVkQmFzZURldGFpbENvbXBvbmVudCxcclxuICAgIFVwZGF0ZVNoaXBwaW5nTWV0aG9kSW5wdXQsXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IG5vcm1hbGl6ZVN0cmluZyB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvbm9ybWFsaXplLXN0cmluZyc7XHJcbmltcG9ydCB7IGdxbCB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcclxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFRlc3RBZGRyZXNzIH0gZnJvbSAnLi4vdGVzdC1hZGRyZXNzLWZvcm0vdGVzdC1hZGRyZXNzLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGVzdE9yZGVyTGluZSB9IGZyb20gJy4uL3Rlc3Qtb3JkZXItYnVpbGRlci90ZXN0LW9yZGVyLWJ1aWxkZXIuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfU0hJUFBJTkdfTUVUSE9EX0RFVEFJTCA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFNoaXBwaW5nTWV0aG9kRGV0YWlsKCRpZDogSUQhKSB7XHJcbiAgICAgICAgc2hpcHBpbmdNZXRob2QoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICAuLi5TaGlwcGluZ01ldGhvZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7U0hJUFBJTkdfTUVUSE9EX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1zaGlwcGluZy1tZXRob2QtZGV0YWlsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaGlwcGluZy1tZXRob2QtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NoaXBwaW5nLW1ldGhvZC1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hpcHBpbmdNZXRob2REZXRhaWxDb21wb25lbnRcclxuICAgIGV4dGVuZHMgVHlwZWRCYXNlRGV0YWlsQ29tcG9uZW50PHR5cGVvZiBHZXRTaGlwcGluZ01ldGhvZERldGFpbERvY3VtZW50LCAnc2hpcHBpbmdNZXRob2QnPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgICBjdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdTaGlwcGluZ01ldGhvZCcpO1xyXG4gICAgZGV0YWlsRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgbmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgICAgZnVsZmlsbG1lbnRIYW5kbGVyOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGNoZWNrZXI6IHt9IGFzIE5vbk51bGxhYmxlPEdldFNoaXBwaW5nTWV0aG9kRGV0YWlsUXVlcnlbJ3NoaXBwaW5nTWV0aG9kJ10+WydjaGVja2VyJ10sXHJcbiAgICAgICAgY2FsY3VsYXRvcjoge30gYXMgTm9uTnVsbGFibGU8R2V0U2hpcHBpbmdNZXRob2REZXRhaWxRdWVyeVsnc2hpcHBpbmdNZXRob2QnXT5bJ2NhbGN1bGF0b3InXSxcclxuICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoZ2V0Q3VzdG9tRmllbGRzRGVmYXVsdHModGhpcy5jdXN0b21GaWVsZHMpKSxcclxuICAgIH0pO1xyXG4gICAgY2hlY2tlcnM6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb25bXSA9IFtdO1xyXG4gICAgY2FsY3VsYXRvcnM6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb25bXSA9IFtdO1xyXG4gICAgZnVsZmlsbG1lbnRIYW5kbGVyczogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbltdID0gW107XHJcbiAgICBzZWxlY3RlZENoZWNrZXI/OiBDb25maWd1cmFibGVPcGVyYXRpb24gfCBudWxsO1xyXG4gICAgc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvbj86IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb247XHJcbiAgICBzZWxlY3RlZENhbGN1bGF0b3I/OiBDb25maWd1cmFibGVPcGVyYXRpb24gfCBudWxsO1xyXG4gICAgc2VsZWN0ZWRDYWxjdWxhdG9yRGVmaW5pdGlvbj86IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb247XHJcbiAgICBhY3RpdmVDaGFubmVsJDogT2JzZXJ2YWJsZTxHZXRBY3RpdmVDaGFubmVsUXVlcnlbJ2FjdGl2ZUNoYW5uZWwnXT47XHJcbiAgICB0ZXN0QWRkcmVzczogVGVzdEFkZHJlc3M7XHJcbiAgICB0ZXN0T3JkZXJMaW5lczogVGVzdE9yZGVyTGluZVtdO1xyXG4gICAgdGVzdERhdGFVcGRhdGVkID0gZmFsc2U7XHJcbiAgICB0ZXN0UmVzdWx0JDogT2JzZXJ2YWJsZTxUZXN0U2hpcHBpbmdNZXRob2RSZXN1bHQgfCB1bmRlZmluZWQ+O1xyXG4gICAgcmVhZG9ubHkgdXBkYXRlUGVybWlzc2lvbiA9IFtQZXJtaXNzaW9uLlVwZGF0ZVNldHRpbmdzLCBQZXJtaXNzaW9uLlVwZGF0ZVNoaXBwaW5nTWV0aG9kXTtcclxuICAgIHByaXZhdGUgZmV0Y2hUZXN0UmVzdWx0JCA9IG5ldyBTdWJqZWN0PFtUZXN0QWRkcmVzcywgVGVzdE9yZGVyTGluZVtdXT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5zaGlwcGluZ01ldGhvZC5nZXRTaGlwcGluZ01ldGhvZE9wZXJhdGlvbnMoKS5zaW5nbGUkLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VycyA9IGRhdGEuc2hpcHBpbmdFbGlnaWJpbGl0eUNoZWNrZXJzO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0b3JzID0gZGF0YS5zaGlwcGluZ0NhbGN1bGF0b3JzO1xyXG4gICAgICAgICAgICB0aGlzLmZ1bGZpbGxtZW50SGFuZGxlcnMgPSBkYXRhLmZ1bGZpbGxtZW50SGFuZGxlcnM7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvbiA9IGRhdGEuc2hpcHBpbmdFbGlnaWJpbGl0eUNoZWNrZXJzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICBjID0+IGMuY29kZSA9PT0gdGhpcy5lbnRpdHk/LmNoZWNrZXI/LmNvZGUsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yRGVmaW5pdGlvbiA9IGRhdGEuc2hpcHBpbmdDYWxjdWxhdG9ycy5maW5kKFxyXG4gICAgICAgICAgICAgICAgYyA9PiBjLmNvZGUgPT09IHRoaXMuZW50aXR5Py5jYWxjdWxhdG9yPy5jb2RlLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWwkID0gdGhpcy5kYXRhU2VydmljZS5zZXR0aW5nc1xyXG4gICAgICAgICAgICAuZ2V0QWN0aXZlQ2hhbm5lbCgpXHJcbiAgICAgICAgICAgIC5tYXBTdHJlYW0oZGF0YSA9PiBkYXRhLmFjdGl2ZUNoYW5uZWwpO1xyXG5cclxuICAgICAgICB0aGlzLnRlc3RSZXN1bHQkID0gdGhpcy5mZXRjaFRlc3RSZXN1bHQkLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2FkZHJlc3MsIGxpbmVzXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBjaGVja2VyLCBjYWxjdWxhdG9yIH0gPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDaGVja2VyIHx8ICF0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvciB8fCAhY2hlY2tlciB8fCAhY2FsY3VsYXRvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXQ6IFRlc3RTaGlwcGluZ01ldGhvZElucHV0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzczogeyAuLi5hZGRyZXNzLCBzdHJlZXRMaW5lMTogJ3Rlc3QnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbGluZXM6IGxpbmVzLm1hcChsID0+ICh7IHByb2R1Y3RWYXJpYW50SWQ6IGwuaWQsIHF1YW50aXR5OiBsLnF1YW50aXR5IH0pKSxcclxuICAgICAgICAgICAgICAgICAgICBjaGVja2VyOiB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHRoaXMuc2VsZWN0ZWRDaGVja2VyLCBjaGVja2VyKSxcclxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdG9yOiB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yLCBjYWxjdWxhdG9yKSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5zaGlwcGluZ01ldGhvZFxyXG4gICAgICAgICAgICAgICAgICAgIC50ZXN0U2hpcHBpbmdNZXRob2QoaW5wdXQpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFNpbmdsZShyZXN1bHQgPT4gcmVzdWx0LnRlc3RTaGlwcGluZ01ldGhvZCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cclxuICAgICAgICBtZXJnZShcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmdldChbJ2NoZWNrZXInXSkhLnZhbHVlQ2hhbmdlcyxcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmdldChbJ2NhbGN1bGF0b3InXSkhLnZhbHVlQ2hhbmdlcyxcclxuICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiAodGhpcy50ZXN0RGF0YVVwZGF0ZWQgPSB0cnVlKSk7XHJcbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ29kZShjdXJyZW50Q29kZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBuYW1lVmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGlmICghY3VycmVudENvZGUpIHtcclxuICAgICAgICAgICAgY29uc3QgY29kZUNvbnRyb2wgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY29kZSddKTtcclxuICAgICAgICAgICAgaWYgKGNvZGVDb250cm9sICYmIGNvZGVDb250cm9sLnByaXN0aW5lKSB7XHJcbiAgICAgICAgICAgICAgICBjb2RlQ29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVTdHJpbmcobmFtZVZhbHVlLCAnLScpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RDaGVja2VyKGNoZWNrZXI6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tlckRlZmluaXRpb24gPSBjaGVja2VyO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyID0gY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UoY2hlY2tlcik7XHJcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjaGVja2VyJyk7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZENoZWNrZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RDYWxjdWxhdG9yKGNhbGN1bGF0b3I6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvckRlZmluaXRpb24gPSBjYWxjdWxhdG9yO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yID0gY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UoY2FsY3VsYXRvcik7XHJcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjYWxjdWxhdG9yJyk7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZENhbGN1bGF0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGVja2VyID0gdGhpcy5zZWxlY3RlZENoZWNrZXI7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDYWxjdWxhdG9yID0gdGhpcy5zZWxlY3RlZENhbGN1bGF0b3I7XHJcbiAgICAgICAgY29uc3QgeyBjaGVja2VyLCBjYWxjdWxhdG9yIH0gPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgaWYgKCFzZWxlY3RlZENoZWNrZXIgfHwgIXNlbGVjdGVkQ2FsY3VsYXRvciB8fCAhY2hlY2tlciB8fCAhY2FsY3VsYXRvcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZGV0YWlsRm9ybS52YWx1ZTtcclxuICAgICAgICBjb25zdCBpbnB1dCA9IHtcclxuICAgICAgICAgICAgLi4uKHRoaXMuZ2V0VXBkYXRlZFNoaXBwaW5nTWV0aG9kKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBpZDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bGZpbGxtZW50SGFuZGxlckNvZGU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZXI6IHVuZGVmaW5lZCBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRvcjogdW5kZWZpbmVkIGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybSxcclxuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICApIGFzIENyZWF0ZVNoaXBwaW5nTWV0aG9kSW5wdXQpLFxyXG4gICAgICAgICAgICBjaGVja2VyOiB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHNlbGVjdGVkQ2hlY2tlciwgY2hlY2tlciksXHJcbiAgICAgICAgICAgIGNhbGN1bGF0b3I6IHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQoc2VsZWN0ZWRDYWxjdWxhdG9yLCBjYWxjdWxhdG9yKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2hpcHBpbmdNZXRob2QuY3JlYXRlU2hpcHBpbmdNZXRob2QoaW5wdXQpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdTaGlwcGluZ01ldGhvZCcsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJywgZGF0YS5jcmVhdGVTaGlwcGluZ01ldGhvZC5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnU2hpcHBpbmdNZXRob2QnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2hlY2tlciA9IHRoaXMuc2VsZWN0ZWRDaGVja2VyO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2FsY3VsYXRvciA9IHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yO1xyXG4gICAgICAgIGNvbnN0IHsgY2hlY2tlciwgY2FsY3VsYXRvciB9ID0gdGhpcy5kZXRhaWxGb3JtLnZhbHVlO1xyXG4gICAgICAgIGlmICghc2VsZWN0ZWRDaGVja2VyIHx8ICFzZWxlY3RlZENhbGN1bGF0b3IgfHwgIWNoZWNrZXIgfHwgIWNhbGN1bGF0b3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmVudGl0eSQsIHRoaXMubGFuZ3VhZ2VDb2RlJF0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChbc2hpcHBpbmdNZXRob2QsIGxhbmd1YWdlQ29kZV0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0aGlzLmdldFVwZGF0ZWRTaGlwcGluZ01ldGhvZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaXBwaW5nTWV0aG9kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIFVwZGF0ZVNoaXBwaW5nTWV0aG9kSW5wdXQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VyOiB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHNlbGVjdGVkQ2hlY2tlciwgY2hlY2tlciksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0b3I6IHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQoc2VsZWN0ZWRDYWxjdWxhdG9yLCBjYWxjdWxhdG9yKSxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnNoaXBwaW5nTWV0aG9kLnVwZGF0ZVNoaXBwaW5nTWV0aG9kKGlucHV0KTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnU2hpcHBpbmdNZXRob2QnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtZXJyb3InKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdTaGlwcGluZ01ldGhvZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRlc3RPcmRlckxpbmVzKGV2ZW50OiBUZXN0T3JkZXJMaW5lW10pIHtcclxuICAgICAgICB0aGlzLnRlc3RPcmRlckxpbmVzID0gZXZlbnQ7XHJcbiAgICAgICAgdGhpcy50ZXN0RGF0YVVwZGF0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRlc3RBZGRyZXNzKGV2ZW50OiBUZXN0QWRkcmVzcykge1xyXG4gICAgICAgIHRoaXMudGVzdEFkZHJlc3MgPSBldmVudDtcclxuICAgICAgICB0aGlzLnRlc3REYXRhVXBkYXRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYWxsVGVzdERhdGFQcmVzZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIShcclxuICAgICAgICAgICAgdGhpcy50ZXN0QWRkcmVzcyAmJlxyXG4gICAgICAgICAgICB0aGlzLnRlc3RPcmRlckxpbmVzICYmXHJcbiAgICAgICAgICAgIHRoaXMudGVzdE9yZGVyTGluZXMubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyICYmXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBydW5UZXN0KCkge1xyXG4gICAgICAgIHRoaXMuZmV0Y2hUZXN0UmVzdWx0JC5uZXh0KFt0aGlzLnRlc3RBZGRyZXNzLCB0aGlzLnRlc3RPcmRlckxpbmVzXSk7XHJcbiAgICAgICAgdGhpcy50ZXN0RGF0YVVwZGF0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdpdmVuIGEgU2hpcHBpbmdNZXRob2QgYW5kIHRoZSB2YWx1ZSBvZiB0aGUgZGV0YWlsRm9ybSwgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiB1cGRhdGVkIGNvcHkgd2hpY2hcclxuICAgICAqIGNhbiB0aGVuIGJlIHBlcnNpc3RlZCB0byB0aGUgQVBJLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFVwZGF0ZWRTaGlwcGluZ01ldGhvZChcclxuICAgICAgICBzaGlwcGluZ01ldGhvZDogTm9uTnVsbGFibGU8R2V0U2hpcHBpbmdNZXRob2REZXRhaWxRdWVyeVsnc2hpcHBpbmdNZXRob2QnXT4sXHJcbiAgICAgICAgZm9ybUdyb3VwOiB0eXBlb2YgdGhpcy5kZXRhaWxGb3JtLFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxyXG4gICAgKTogT21pdDxDcmVhdGVTaGlwcGluZ01ldGhvZElucHV0IHwgVXBkYXRlU2hpcHBpbmdNZXRob2RJbnB1dCwgJ2NoZWNrZXInIHwgJ2NhbGN1bGF0b3InPiB7XHJcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gZm9ybUdyb3VwLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gY3JlYXRlVXBkYXRlZFRyYW5zbGF0YWJsZSh7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0YWJsZTogc2hpcHBpbmdNZXRob2QsXHJcbiAgICAgICAgICAgIHVwZGF0ZWRGaWVsZHM6IGZvcm1WYWx1ZSxcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRDb25maWc6IHRoaXMuY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgIGRlZmF1bHRUcmFuc2xhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogc2hpcHBpbmdNZXRob2QubmFtZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzaGlwcGluZ01ldGhvZC5kZXNjcmlwdGlvbiB8fCAnJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4geyAuLi5pbnB1dCwgZnVsZmlsbG1lbnRIYW5kbGVyOiBmb3JtVmFsdWUuZnVsZmlsbG1lbnRIYW5kbGVyIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNldEZvcm1WYWx1ZXMoc2hpcHBpbmdNZXRob2Q6IFNoaXBwaW5nTWV0aG9kRnJhZ21lbnQsIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFRyYW5zbGF0aW9uID0gZmluZFRyYW5zbGF0aW9uKHNoaXBwaW5nTWV0aG9kLCBsYW5ndWFnZUNvZGUpO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgbmFtZTogY3VycmVudFRyYW5zbGF0aW9uPy5uYW1lID8/ICcnLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY3VycmVudFRyYW5zbGF0aW9uPy5kZXNjcmlwdGlvbiA/PyAnJyxcclxuICAgICAgICAgICAgY29kZTogc2hpcHBpbmdNZXRob2QuY29kZSxcclxuICAgICAgICAgICAgZnVsZmlsbG1lbnRIYW5kbGVyOiBzaGlwcGluZ01ldGhvZC5mdWxmaWxsbWVudEhhbmRsZXJDb2RlLFxyXG4gICAgICAgICAgICBjaGVja2VyOiBzaGlwcGluZ01ldGhvZC5jaGVja2VyIHx8IHt9LFxyXG4gICAgICAgICAgICBjYWxjdWxhdG9yOiBzaGlwcGluZ01ldGhvZC5jYWxjdWxhdG9yIHx8IHt9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZENoZWNrZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrZXIgPSBzaGlwcGluZ01ldGhvZC5jaGVja2VyICYmIHtcclxuICAgICAgICAgICAgICAgIGNvZGU6IHNoaXBwaW5nTWV0aG9kLmNoZWNrZXIuY29kZSxcclxuICAgICAgICAgICAgICAgIGFyZ3M6IHNoaXBwaW5nTWV0aG9kLmNoZWNrZXIuYXJncy5tYXAoYSA9PiAoeyAuLi5hLCB2YWx1ZTogZ2V0Q29uZmlnQXJnVmFsdWUoYS52YWx1ZSkgfSkpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yID0gc2hpcHBpbmdNZXRob2QuY2FsY3VsYXRvciAmJiB7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiBzaGlwcGluZ01ldGhvZC5jYWxjdWxhdG9yPy5jb2RlLFxyXG4gICAgICAgICAgICAgICAgYXJnczogc2hpcHBpbmdNZXRob2QuY2FsY3VsYXRvcj8uYXJncy5tYXAoYSA9PiAoeyAuLi5hLCB2YWx1ZTogZ2V0Q29uZmlnQXJnVmFsdWUoYS52YWx1ZSkgfSkpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY3VzdG9tRmllbGRzJ10pLFxyXG4gICAgICAgICAgICAgICAgc2hpcHBpbmdNZXRob2QsXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50VHJhbnNsYXRpb24sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjx2ZHItcGFnZS1ibG9jaz5cclxuICAgIDx2ZHItYWN0aW9uLWJhcj5cclxuICAgICAgICA8dmRyLWFiLWxlZnQ+XHJcbiAgICAgICAgICAgIDx2ZHItbGFuZ3VhZ2Utc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc05ldyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTGFuZ3VhZ2VDb2Rlc109XCJhdmFpbGFibGVMYW5ndWFnZXMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRMYW5ndWFnZUNvZGVdPVwibGFuZ3VhZ2VDb2RlJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIChsYW5ndWFnZUNvZGVDaGFuZ2UpPVwic2V0TGFuZ3VhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC92ZHItYWItbGVmdD5cclxuXHJcbiAgICAgICAgPHZkci1hYi1yaWdodD5cclxuICAgICAgICAgICAgPHZkci1hY3Rpb24tYmFyLWl0ZW1zIGxvY2F0aW9uSWQ9XCJzaGlwcGluZy1tZXRob2QtZGV0YWlsXCIgLz5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc05ldyQgfCBhc3luYzsgZWxzZSB1cGRhdGVCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICBkZXRhaWxGb3JtLnByaXN0aW5lIHx8IGRldGFpbEZvcm0uaW52YWxpZCB8fCAhc2VsZWN0ZWRDaGVja2VyIHx8ICFzZWxlY3RlZENhbGN1bGF0b3JcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7ICdjb21tb24uY3JlYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN1cGRhdGVCdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwidXBkYXRlUGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxGb3JtLnByaXN0aW5lIHx8IGRldGFpbEZvcm0uaW52YWxpZCB8fCAhc2VsZWN0ZWRDaGVja2VyIHx8ICFzZWxlY3RlZENhbGN1bGF0b3JcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24udXBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx2ZHItYWN0aW9uLWJhci1kcm9wZG93bi1tZW51IGxvY2F0aW9uSWQ9XCJzaGlwcGluZy1tZXRob2QtZGV0YWlsXCIgLz5cclxuICAgICAgICA8L3Zkci1hYi1yaWdodD5cclxuICAgIDwvdmRyLWFjdGlvbi1iYXI+XHJcbjwvdmRyLXBhZ2UtYmxvY2s+XHJcblxyXG48Zm9ybSBjbGFzcz1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImRldGFpbEZvcm1cIj5cclxuICAgIDx2ZHItcGFnZS1kZXRhaWwtbGF5b3V0PlxyXG4gICAgICAgIDx2ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cclxuICAgICAgICAgICAgPHZkci1jYXJkICpuZ0lmPVwiZW50aXR5JCB8IGFzeW5jIGFzIGVudGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1wYWdlLWVudGl0eS1pbmZvIFtlbnRpdHldPVwiZW50aXR5XCIgLz5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8L3Zkci1wYWdlLWRldGFpbC1zaWRlYmFyPlxyXG4gICAgICAgIDx2ZHItcGFnZS1ibG9jaz5cclxuICAgICAgICAgICAgPHZkci1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NvbW1vbi5uYW1lJyB8IHRyYW5zbGF0ZVwiIGZvcj1cIm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInVwZGF0ZUNvZGUoZW50aXR5Py5jb2RlLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidjb21tb24uY29kZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5VG9nZ2xlXT1cInVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItcmljaC10ZXh0LWVkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JpZC1zcGFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2NvbW1vbi5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci1yaWNoLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3NldHRpbmdzLmZ1bGZpbGxtZW50LWhhbmRsZXInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZnVsZmlsbG1lbnRIYW5kbGVyXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmdWxmaWxsbWVudEhhbmRsZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZnVsZmlsbG1lbnRIYW5kbGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2ZHJEaXNhYmxlZF09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGhhbmRsZXIgb2YgZnVsZmlsbG1lbnRIYW5kbGVyc1wiIFt2YWx1ZV09XCJoYW5kbGVyLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBoYW5kbGVyLmNvZGUgfX06IHt7IGhhbmRsZXIuZGVzY3JpcHRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcblxyXG4gICAgICAgICAgICA8dmRyLWNhcmRcclxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJjdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZHMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInY29tbW9uLmN1c3RvbS1maWVsZHMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHZkci10YWJiZWQtY3VzdG9tLWZpZWxkc1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU9XCJTaGlwcGluZ01ldGhvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc109XCJjdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZHNGb3JtR3JvdXBdPVwiZGV0YWlsRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpXCJcclxuICAgICAgICAgICAgICAgID48L3Zkci10YWJiZWQtY3VzdG9tLWZpZWxkcz5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuXHJcbiAgICAgICAgICAgIDx2ZHItY3VzdG9tLWRldGFpbC1jb21wb25lbnQtaG9zdFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb25JZD1cInNoaXBwaW5nLW1ldGhvZC1kZXRhaWxcIlxyXG4gICAgICAgICAgICAgICAgW2VudGl0eSRdPVwiZW50aXR5JFwiXHJcbiAgICAgICAgICAgICAgICBbZGV0YWlsRm9ybV09XCJkZXRhaWxGb3JtXCJcclxuICAgICAgICAgICAgPjwvdmRyLWN1c3RvbS1kZXRhaWwtY29tcG9uZW50LWhvc3Q+XHJcblxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidzZXR0aW5ncy5zaGlwcGluZy1lbGlnaWJpbGl0eS1jaGVja2VyJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1jb25maWd1cmFibGUtaW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtc3BhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZENoZWNrZXIgJiYgc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wZXJhdGlvbl09XCJzZWxlY3RlZENoZWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcGVyYXRpb25EZWZpbml0aW9uXT1cInNlbGVjdGVkQ2hlY2tlckRlZmluaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJzZWxlY3RlZENoZWNrZXIgPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2VyXCJcclxuICAgICAgICAgICAgICAgID48L3Zkci1jb25maWd1cmFibGUtaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkQ2hlY2tlciB8fCAhc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvblwiIGNsYXNzPVwiY2FyZC1zcGFuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIHZkckRyb3Bkb3duVHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5zZWxlY3QnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnUgdmRyUG9zaXRpb249XCJib3R0b20tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGVja2VyIG9mIGNoZWNrZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZHJEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2hlY2tlcihjaGVja2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hlY2tlci5kZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duLW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInc2V0dGluZ3Muc2hpcHBpbmctY2FsY3VsYXRvcicgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDx2ZHItY29uZmlndXJhYmxlLWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLXNwYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRDYWxjdWxhdG9yICYmIHNlbGVjdGVkQ2FsY3VsYXRvckRlZmluaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcGVyYXRpb25dPVwic2VsZWN0ZWRDYWxjdWxhdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3BlcmF0aW9uRGVmaW5pdGlvbl09XCJzZWxlY3RlZENhbGN1bGF0b3JEZWZpbml0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmUpPVwic2VsZWN0ZWRDYWxjdWxhdG9yID0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2FsY3VsYXRvclwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZHItY29uZmlndXJhYmxlLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZENhbGN1bGF0b3IgfHwgIXNlbGVjdGVkQ2FsY3VsYXRvckRlZmluaXRpb25cIiBjbGFzcz1cImNhcmQtc3BhblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiB2ZHJEcm9wZG93blRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJwbHVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24uc2VsZWN0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51IHZkclBvc2l0aW9uPVwiYm90dG9tLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2FsY3VsYXRvciBvZiBjYWxjdWxhdG9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENhbGN1bGF0b3IoY2FsY3VsYXRvcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNhbGN1bGF0b3IuZGVzY3JpcHRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ3NldHRpbmdzLnRlc3Qtc2hpcHBpbmctbWV0aG9kJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci10ZXN0LW9yZGVyLWJ1aWxkZXJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtc3BhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9yZGVyTGluZXNDaGFuZ2UpPVwic2V0VGVzdE9yZGVyTGluZXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZHItdGVzdC1vcmRlci1idWlsZGVyPlxyXG4gICAgICAgICAgICAgICAgPHZkci10ZXN0LWFkZHJlc3MtZm9ybVxyXG4gICAgICAgICAgICAgICAgICAgIChhZGRyZXNzQ2hhbmdlKT1cInNldFRlc3RBZGRyZXNzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZHItdGVzdC1hZGRyZXNzLWZvcm0+XHJcbiAgICAgICAgICAgICAgICA8dmRyLXNoaXBwaW5nLW1ldGhvZC10ZXN0LXJlc3VsdFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5Q29kZV09XCIoYWN0aXZlQ2hhbm5lbCQgfCBhc3luYyk/LmN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29rVG9SdW5dPVwiYWxsVGVzdERhdGFQcmVzZW50KCkgJiYgdGVzdERhdGFVcGRhdGVkICYmIGRldGFpbEZvcm0udmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0ZXN0RGF0YVVwZGF0ZWRdPVwidGVzdERhdGFVcGRhdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdGVzdFJlc3VsdF09XCJ0ZXN0UmVzdWx0JCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAocnVuVGVzdCk9XCJydW5UZXN0KClcIlxyXG4gICAgICAgICAgICAgICAgPjwvdmRyLXNoaXBwaW5nLW1ldGhvZC10ZXN0LXJlc3VsdD5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8L3Zkci1wYWdlLWJsb2NrPlxyXG4gICAgPC92ZHItcGFnZS1kZXRhaWwtbGF5b3V0PlxyXG48L2Zvcm0+XHJcbiJdfQ==
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctbWV0aG9kLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3NoaXBwaW5nLW1ldGhvZC1kZXRhaWwvc2hpcHBpbmctbWV0aG9kLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3NoaXBwaW5nLW1ldGhvZC1kZXRhaWwvc2hpcHBpbmctbWV0aG9kLWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUNILGdDQUFnQyxFQUloQyx5QkFBeUIsRUFFekIsZUFBZSxFQUVmLGlCQUFpQixFQUNqQix1QkFBdUIsRUFLdkIsVUFBVSxFQUNWLHdCQUF3QixFQUl4Qiw0QkFBNEIsRUFDNUIsd0JBQXdCLEdBRTNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQUt0RSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxHQUFHLENB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QzVGLENBQUM7UUFDTixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxjQUFjLENBQUMsVUFBVSxJQUFJO2dCQUNuRCxJQUFJLEVBQUUsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJO2dCQUNyQyxJQUFJLEVBQUUsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2hHLENBQUM7UUFDTixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyx3QkFBd0IsQ0FDekIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUNyQyxjQUFjLEVBQ2Qsa0JBQWtCLENBQ3JCLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQzsrR0FoU1EsNkJBQTZCO21HQUE3Qiw2QkFBNkIseUZDbEQxQyxneFNBK0xBOzs0RkQ3SWEsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNJLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UsXHJcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb24sXHJcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uLFxyXG4gICAgQ3JlYXRlU2hpcHBpbmdNZXRob2RJbnB1dCxcclxuICAgIGNyZWF0ZVVwZGF0ZWRUcmFuc2xhdGFibGUsXHJcbiAgICBEYXRhU2VydmljZSxcclxuICAgIGZpbmRUcmFuc2xhdGlvbixcclxuICAgIEdldEFjdGl2ZUNoYW5uZWxRdWVyeSxcclxuICAgIGdldENvbmZpZ0FyZ1ZhbHVlLFxyXG4gICAgZ2V0Q3VzdG9tRmllbGRzRGVmYXVsdHMsXHJcbiAgICBHZXRTaGlwcGluZ01ldGhvZERldGFpbERvY3VtZW50LFxyXG4gICAgR2V0U2hpcHBpbmdNZXRob2REZXRhaWxRdWVyeSxcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBQZXJtaXNzaW9uLFxyXG4gICAgU0hJUFBJTkdfTUVUSE9EX0ZSQUdNRU5ULFxyXG4gICAgU2hpcHBpbmdNZXRob2RGcmFnbWVudCxcclxuICAgIFRlc3RTaGlwcGluZ01ldGhvZElucHV0LFxyXG4gICAgVGVzdFNoaXBwaW5nTWV0aG9kUmVzdWx0LFxyXG4gICAgdG9Db25maWd1cmFibGVPcGVyYXRpb25JbnB1dCxcclxuICAgIFR5cGVkQmFzZURldGFpbENvbXBvbmVudCxcclxuICAgIFVwZGF0ZVNoaXBwaW5nTWV0aG9kSW5wdXQsXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IG5vcm1hbGl6ZVN0cmluZyB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvbm9ybWFsaXplLXN0cmluZyc7XHJcbmltcG9ydCB7IGdxbCB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcclxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFRlc3RBZGRyZXNzIH0gZnJvbSAnLi4vdGVzdC1hZGRyZXNzLWZvcm0vdGVzdC1hZGRyZXNzLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGVzdE9yZGVyTGluZSB9IGZyb20gJy4uL3Rlc3Qtb3JkZXItYnVpbGRlci90ZXN0LW9yZGVyLWJ1aWxkZXIuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfU0hJUFBJTkdfTUVUSE9EX0RFVEFJTCA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFNoaXBwaW5nTWV0aG9kRGV0YWlsKCRpZDogSUQhKSB7XHJcbiAgICAgICAgc2hpcHBpbmdNZXRob2QoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICAuLi5TaGlwcGluZ01ldGhvZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7U0hJUFBJTkdfTUVUSE9EX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1zaGlwcGluZy1tZXRob2QtZGV0YWlsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaGlwcGluZy1tZXRob2QtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NoaXBwaW5nLW1ldGhvZC1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hpcHBpbmdNZXRob2REZXRhaWxDb21wb25lbnRcclxuICAgIGV4dGVuZHMgVHlwZWRCYXNlRGV0YWlsQ29tcG9uZW50PHR5cGVvZiBHZXRTaGlwcGluZ01ldGhvZERldGFpbERvY3VtZW50LCAnc2hpcHBpbmdNZXRob2QnPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgICBjdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdTaGlwcGluZ01ldGhvZCcpO1xyXG4gICAgZGV0YWlsRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgbmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgICAgZnVsZmlsbG1lbnRIYW5kbGVyOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGNoZWNrZXI6IHt9IGFzIE5vbk51bGxhYmxlPEdldFNoaXBwaW5nTWV0aG9kRGV0YWlsUXVlcnlbJ3NoaXBwaW5nTWV0aG9kJ10+WydjaGVja2VyJ10sXHJcbiAgICAgICAgY2FsY3VsYXRvcjoge30gYXMgTm9uTnVsbGFibGU8R2V0U2hpcHBpbmdNZXRob2REZXRhaWxRdWVyeVsnc2hpcHBpbmdNZXRob2QnXT5bJ2NhbGN1bGF0b3InXSxcclxuICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoZ2V0Q3VzdG9tRmllbGRzRGVmYXVsdHModGhpcy5jdXN0b21GaWVsZHMpKSxcclxuICAgIH0pO1xyXG4gICAgY2hlY2tlcnM6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb25bXSA9IFtdO1xyXG4gICAgY2FsY3VsYXRvcnM6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb25bXSA9IFtdO1xyXG4gICAgZnVsZmlsbG1lbnRIYW5kbGVyczogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbltdID0gW107XHJcbiAgICBzZWxlY3RlZENoZWNrZXI/OiBDb25maWd1cmFibGVPcGVyYXRpb24gfCBudWxsO1xyXG4gICAgc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvbj86IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb247XHJcbiAgICBzZWxlY3RlZENhbGN1bGF0b3I/OiBDb25maWd1cmFibGVPcGVyYXRpb24gfCBudWxsO1xyXG4gICAgc2VsZWN0ZWRDYWxjdWxhdG9yRGVmaW5pdGlvbj86IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb247XHJcbiAgICBhY3RpdmVDaGFubmVsJDogT2JzZXJ2YWJsZTxHZXRBY3RpdmVDaGFubmVsUXVlcnlbJ2FjdGl2ZUNoYW5uZWwnXT47XHJcbiAgICB0ZXN0QWRkcmVzczogVGVzdEFkZHJlc3M7XHJcbiAgICB0ZXN0T3JkZXJMaW5lczogVGVzdE9yZGVyTGluZVtdO1xyXG4gICAgdGVzdERhdGFVcGRhdGVkID0gZmFsc2U7XHJcbiAgICB0ZXN0UmVzdWx0JDogT2JzZXJ2YWJsZTxUZXN0U2hpcHBpbmdNZXRob2RSZXN1bHQgfCB1bmRlZmluZWQ+O1xyXG4gICAgcmVhZG9ubHkgdXBkYXRlUGVybWlzc2lvbiA9IFtQZXJtaXNzaW9uLlVwZGF0ZVNldHRpbmdzLCBQZXJtaXNzaW9uLlVwZGF0ZVNoaXBwaW5nTWV0aG9kXTtcclxuICAgIHByaXZhdGUgZmV0Y2hUZXN0UmVzdWx0JCA9IG5ldyBTdWJqZWN0PFtUZXN0QWRkcmVzcywgVGVzdE9yZGVyTGluZVtdXT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5zaGlwcGluZ01ldGhvZC5nZXRTaGlwcGluZ01ldGhvZE9wZXJhdGlvbnMoKS5zaW5nbGUkLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VycyA9IGRhdGEuc2hpcHBpbmdFbGlnaWJpbGl0eUNoZWNrZXJzO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0b3JzID0gZGF0YS5zaGlwcGluZ0NhbGN1bGF0b3JzO1xyXG4gICAgICAgICAgICB0aGlzLmZ1bGZpbGxtZW50SGFuZGxlcnMgPSBkYXRhLmZ1bGZpbGxtZW50SGFuZGxlcnM7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvbiA9IGRhdGEuc2hpcHBpbmdFbGlnaWJpbGl0eUNoZWNrZXJzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICBjID0+IGMuY29kZSA9PT0gdGhpcy5lbnRpdHk/LmNoZWNrZXI/LmNvZGUsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yRGVmaW5pdGlvbiA9IGRhdGEuc2hpcHBpbmdDYWxjdWxhdG9ycy5maW5kKFxyXG4gICAgICAgICAgICAgICAgYyA9PiBjLmNvZGUgPT09IHRoaXMuZW50aXR5Py5jYWxjdWxhdG9yPy5jb2RlLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWwkID0gdGhpcy5kYXRhU2VydmljZS5zZXR0aW5nc1xyXG4gICAgICAgICAgICAuZ2V0QWN0aXZlQ2hhbm5lbCgpXHJcbiAgICAgICAgICAgIC5tYXBTdHJlYW0oZGF0YSA9PiBkYXRhLmFjdGl2ZUNoYW5uZWwpO1xyXG5cclxuICAgICAgICB0aGlzLnRlc3RSZXN1bHQkID0gdGhpcy5mZXRjaFRlc3RSZXN1bHQkLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2FkZHJlc3MsIGxpbmVzXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBjaGVja2VyLCBjYWxjdWxhdG9yIH0gPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDaGVja2VyIHx8ICF0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvciB8fCAhY2hlY2tlciB8fCAhY2FsY3VsYXRvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXQ6IFRlc3RTaGlwcGluZ01ldGhvZElucHV0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzczogeyAuLi5hZGRyZXNzLCBzdHJlZXRMaW5lMTogJ3Rlc3QnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbGluZXM6IGxpbmVzLm1hcChsID0+ICh7IHByb2R1Y3RWYXJpYW50SWQ6IGwuaWQsIHF1YW50aXR5OiBsLnF1YW50aXR5IH0pKSxcclxuICAgICAgICAgICAgICAgICAgICBjaGVja2VyOiB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHRoaXMuc2VsZWN0ZWRDaGVja2VyLCBjaGVja2VyKSxcclxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdG9yOiB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yLCBjYWxjdWxhdG9yKSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5zaGlwcGluZ01ldGhvZFxyXG4gICAgICAgICAgICAgICAgICAgIC50ZXN0U2hpcHBpbmdNZXRob2QoaW5wdXQpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFNpbmdsZShyZXN1bHQgPT4gcmVzdWx0LnRlc3RTaGlwcGluZ01ldGhvZCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cclxuICAgICAgICBtZXJnZShcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmdldChbJ2NoZWNrZXInXSkhLnZhbHVlQ2hhbmdlcyxcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmdldChbJ2NhbGN1bGF0b3InXSkhLnZhbHVlQ2hhbmdlcyxcclxuICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiAodGhpcy50ZXN0RGF0YVVwZGF0ZWQgPSB0cnVlKSk7XHJcbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ29kZShjdXJyZW50Q29kZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBuYW1lVmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGlmICghY3VycmVudENvZGUpIHtcclxuICAgICAgICAgICAgY29uc3QgY29kZUNvbnRyb2wgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY29kZSddKTtcclxuICAgICAgICAgICAgaWYgKGNvZGVDb250cm9sICYmIGNvZGVDb250cm9sLnByaXN0aW5lKSB7XHJcbiAgICAgICAgICAgICAgICBjb2RlQ29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVTdHJpbmcobmFtZVZhbHVlLCAnLScpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RDaGVja2VyKGNoZWNrZXI6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tlckRlZmluaXRpb24gPSBjaGVja2VyO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyID0gY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UoY2hlY2tlcik7XHJcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjaGVja2VyJyk7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZENoZWNrZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RDYWxjdWxhdG9yKGNhbGN1bGF0b3I6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvckRlZmluaXRpb24gPSBjYWxjdWxhdG9yO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yID0gY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UoY2FsY3VsYXRvcik7XHJcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjYWxjdWxhdG9yJyk7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZENhbGN1bGF0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGVja2VyID0gdGhpcy5zZWxlY3RlZENoZWNrZXI7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDYWxjdWxhdG9yID0gdGhpcy5zZWxlY3RlZENhbGN1bGF0b3I7XHJcbiAgICAgICAgY29uc3QgeyBjaGVja2VyLCBjYWxjdWxhdG9yIH0gPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgaWYgKCFzZWxlY3RlZENoZWNrZXIgfHwgIXNlbGVjdGVkQ2FsY3VsYXRvciB8fCAhY2hlY2tlciB8fCAhY2FsY3VsYXRvcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZGV0YWlsRm9ybS52YWx1ZTtcclxuICAgICAgICBjb25zdCBpbnB1dCA9IHtcclxuICAgICAgICAgICAgLi4uKHRoaXMuZ2V0VXBkYXRlZFNoaXBwaW5nTWV0aG9kKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBpZDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bGZpbGxtZW50SGFuZGxlckNvZGU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZXI6IHVuZGVmaW5lZCBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRvcjogdW5kZWZpbmVkIGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybSxcclxuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICApIGFzIENyZWF0ZVNoaXBwaW5nTWV0aG9kSW5wdXQpLFxyXG4gICAgICAgICAgICBjaGVja2VyOiB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHNlbGVjdGVkQ2hlY2tlciwgY2hlY2tlciksXHJcbiAgICAgICAgICAgIGNhbGN1bGF0b3I6IHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQoc2VsZWN0ZWRDYWxjdWxhdG9yLCBjYWxjdWxhdG9yKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2hpcHBpbmdNZXRob2QuY3JlYXRlU2hpcHBpbmdNZXRob2QoaW5wdXQpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdTaGlwcGluZ01ldGhvZCcsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJywgZGF0YS5jcmVhdGVTaGlwcGluZ01ldGhvZC5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnU2hpcHBpbmdNZXRob2QnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2hlY2tlciA9IHRoaXMuc2VsZWN0ZWRDaGVja2VyO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2FsY3VsYXRvciA9IHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yO1xyXG4gICAgICAgIGNvbnN0IHsgY2hlY2tlciwgY2FsY3VsYXRvciB9ID0gdGhpcy5kZXRhaWxGb3JtLnZhbHVlO1xyXG4gICAgICAgIGlmICghc2VsZWN0ZWRDaGVja2VyIHx8ICFzZWxlY3RlZENhbGN1bGF0b3IgfHwgIWNoZWNrZXIgfHwgIWNhbGN1bGF0b3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmVudGl0eSQsIHRoaXMubGFuZ3VhZ2VDb2RlJF0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChbc2hpcHBpbmdNZXRob2QsIGxhbmd1YWdlQ29kZV0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0aGlzLmdldFVwZGF0ZWRTaGlwcGluZ01ldGhvZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaXBwaW5nTWV0aG9kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIFVwZGF0ZVNoaXBwaW5nTWV0aG9kSW5wdXQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VyOiB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHNlbGVjdGVkQ2hlY2tlciwgY2hlY2tlciksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0b3I6IHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQoc2VsZWN0ZWRDYWxjdWxhdG9yLCBjYWxjdWxhdG9yKSxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnNoaXBwaW5nTWV0aG9kLnVwZGF0ZVNoaXBwaW5nTWV0aG9kKGlucHV0KTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnU2hpcHBpbmdNZXRob2QnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtZXJyb3InKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdTaGlwcGluZ01ldGhvZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRlc3RPcmRlckxpbmVzKGV2ZW50OiBUZXN0T3JkZXJMaW5lW10pIHtcclxuICAgICAgICB0aGlzLnRlc3RPcmRlckxpbmVzID0gZXZlbnQ7XHJcbiAgICAgICAgdGhpcy50ZXN0RGF0YVVwZGF0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRlc3RBZGRyZXNzKGV2ZW50OiBUZXN0QWRkcmVzcykge1xyXG4gICAgICAgIHRoaXMudGVzdEFkZHJlc3MgPSBldmVudDtcclxuICAgICAgICB0aGlzLnRlc3REYXRhVXBkYXRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYWxsVGVzdERhdGFQcmVzZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIShcclxuICAgICAgICAgICAgdGhpcy50ZXN0QWRkcmVzcyAmJlxyXG4gICAgICAgICAgICB0aGlzLnRlc3RPcmRlckxpbmVzICYmXHJcbiAgICAgICAgICAgIHRoaXMudGVzdE9yZGVyTGluZXMubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyICYmXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBydW5UZXN0KCkge1xyXG4gICAgICAgIHRoaXMuZmV0Y2hUZXN0UmVzdWx0JC5uZXh0KFt0aGlzLnRlc3RBZGRyZXNzLCB0aGlzLnRlc3RPcmRlckxpbmVzXSk7XHJcbiAgICAgICAgdGhpcy50ZXN0RGF0YVVwZGF0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdpdmVuIGEgU2hpcHBpbmdNZXRob2QgYW5kIHRoZSB2YWx1ZSBvZiB0aGUgZGV0YWlsRm9ybSwgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiB1cGRhdGVkIGNvcHkgd2hpY2hcclxuICAgICAqIGNhbiB0aGVuIGJlIHBlcnNpc3RlZCB0byB0aGUgQVBJLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFVwZGF0ZWRTaGlwcGluZ01ldGhvZChcclxuICAgICAgICBzaGlwcGluZ01ldGhvZDogTm9uTnVsbGFibGU8R2V0U2hpcHBpbmdNZXRob2REZXRhaWxRdWVyeVsnc2hpcHBpbmdNZXRob2QnXT4sXHJcbiAgICAgICAgZm9ybUdyb3VwOiB0eXBlb2YgdGhpcy5kZXRhaWxGb3JtLFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxyXG4gICAgKTogT21pdDxDcmVhdGVTaGlwcGluZ01ldGhvZElucHV0IHwgVXBkYXRlU2hpcHBpbmdNZXRob2RJbnB1dCwgJ2NoZWNrZXInIHwgJ2NhbGN1bGF0b3InPiB7XHJcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gZm9ybUdyb3VwLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gY3JlYXRlVXBkYXRlZFRyYW5zbGF0YWJsZSh7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0YWJsZTogc2hpcHBpbmdNZXRob2QsXHJcbiAgICAgICAgICAgIHVwZGF0ZWRGaWVsZHM6IGZvcm1WYWx1ZSxcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRDb25maWc6IHRoaXMuY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgIGRlZmF1bHRUcmFuc2xhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogc2hpcHBpbmdNZXRob2QubmFtZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzaGlwcGluZ01ldGhvZC5kZXNjcmlwdGlvbiB8fCAnJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4geyAuLi5pbnB1dCwgZnVsZmlsbG1lbnRIYW5kbGVyOiBmb3JtVmFsdWUuZnVsZmlsbG1lbnRIYW5kbGVyIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNldEZvcm1WYWx1ZXMoc2hpcHBpbmdNZXRob2Q6IFNoaXBwaW5nTWV0aG9kRnJhZ21lbnQsIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFRyYW5zbGF0aW9uID0gZmluZFRyYW5zbGF0aW9uKHNoaXBwaW5nTWV0aG9kLCBsYW5ndWFnZUNvZGUpO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgbmFtZTogY3VycmVudFRyYW5zbGF0aW9uPy5uYW1lID8/ICcnLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY3VycmVudFRyYW5zbGF0aW9uPy5kZXNjcmlwdGlvbiA/PyAnJyxcclxuICAgICAgICAgICAgY29kZTogc2hpcHBpbmdNZXRob2QuY29kZSxcclxuICAgICAgICAgICAgZnVsZmlsbG1lbnRIYW5kbGVyOiBzaGlwcGluZ01ldGhvZC5mdWxmaWxsbWVudEhhbmRsZXJDb2RlLFxyXG4gICAgICAgICAgICBjaGVja2VyOiBzaGlwcGluZ01ldGhvZC5jaGVja2VyIHx8IHt9LFxyXG4gICAgICAgICAgICBjYWxjdWxhdG9yOiBzaGlwcGluZ01ldGhvZC5jYWxjdWxhdG9yIHx8IHt9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZENoZWNrZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrZXIgPSBzaGlwcGluZ01ldGhvZC5jaGVja2VyICYmIHtcclxuICAgICAgICAgICAgICAgIGNvZGU6IHNoaXBwaW5nTWV0aG9kLmNoZWNrZXIuY29kZSxcclxuICAgICAgICAgICAgICAgIGFyZ3M6IHNoaXBwaW5nTWV0aG9kLmNoZWNrZXIuYXJncy5tYXAoYSA9PiAoeyAuLi5hLCB2YWx1ZTogZ2V0Q29uZmlnQXJnVmFsdWUoYS52YWx1ZSkgfSkpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yID0gc2hpcHBpbmdNZXRob2QuY2FsY3VsYXRvciAmJiB7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiBzaGlwcGluZ01ldGhvZC5jYWxjdWxhdG9yPy5jb2RlLFxyXG4gICAgICAgICAgICAgICAgYXJnczogc2hpcHBpbmdNZXRob2QuY2FsY3VsYXRvcj8uYXJncy5tYXAoYSA9PiAoeyAuLi5hLCB2YWx1ZTogZ2V0Q29uZmlnQXJnVmFsdWUoYS52YWx1ZSkgfSkpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY3VzdG9tRmllbGRzJ10pLFxyXG4gICAgICAgICAgICAgICAgc2hpcHBpbmdNZXRob2QsXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50VHJhbnNsYXRpb24sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjx2ZHItcGFnZS1ibG9jaz5cclxuICAgIDx2ZHItYWN0aW9uLWJhcj5cclxuICAgICAgICA8dmRyLWFiLWxlZnQ+XHJcbiAgICAgICAgICAgIDx2ZHItbGFuZ3VhZ2Utc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc05ldyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTGFuZ3VhZ2VDb2Rlc109XCJhdmFpbGFibGVMYW5ndWFnZXMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRMYW5ndWFnZUNvZGVdPVwibGFuZ3VhZ2VDb2RlJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIChsYW5ndWFnZUNvZGVDaGFuZ2UpPVwic2V0TGFuZ3VhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC92ZHItYWItbGVmdD5cclxuXHJcbiAgICAgICAgPHZkci1hYi1yaWdodD5cclxuICAgICAgICAgICAgPHZkci1hY3Rpb24tYmFyLWl0ZW1zIGxvY2F0aW9uSWQ9XCJzaGlwcGluZy1tZXRob2QtZGV0YWlsXCIgLz5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc05ldyQgfCBhc3luYzsgZWxzZSB1cGRhdGVCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICBkZXRhaWxGb3JtLnByaXN0aW5lIHx8IGRldGFpbEZvcm0uaW52YWxpZCB8fCAhc2VsZWN0ZWRDaGVja2VyIHx8ICFzZWxlY3RlZENhbGN1bGF0b3JcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7ICdjb21tb24uY3JlYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN1cGRhdGVCdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwidXBkYXRlUGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxGb3JtLnByaXN0aW5lIHx8IGRldGFpbEZvcm0uaW52YWxpZCB8fCAhc2VsZWN0ZWRDaGVja2VyIHx8ICFzZWxlY3RlZENhbGN1bGF0b3JcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24udXBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx2ZHItYWN0aW9uLWJhci1kcm9wZG93bi1tZW51IGxvY2F0aW9uSWQ9XCJzaGlwcGluZy1tZXRob2QtZGV0YWlsXCIgLz5cclxuICAgICAgICA8L3Zkci1hYi1yaWdodD5cclxuICAgIDwvdmRyLWFjdGlvbi1iYXI+XHJcbjwvdmRyLXBhZ2UtYmxvY2s+XHJcblxyXG48Zm9ybSBjbGFzcz1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImRldGFpbEZvcm1cIj5cclxuICAgIDx2ZHItcGFnZS1kZXRhaWwtbGF5b3V0PlxyXG4gICAgICAgIDx2ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cclxuICAgICAgICAgICAgPHZkci1jYXJkICpuZ0lmPVwiZW50aXR5JCB8IGFzeW5jIGFzIGVudGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1wYWdlLWVudGl0eS1pbmZvIFtlbnRpdHldPVwiZW50aXR5XCIgLz5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8L3Zkci1wYWdlLWRldGFpbC1zaWRlYmFyPlxyXG4gICAgICAgIDx2ZHItcGFnZS1ibG9jaz5cclxuICAgICAgICAgICAgPHZkci1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NvbW1vbi5uYW1lJyB8IHRyYW5zbGF0ZVwiIGZvcj1cIm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInVwZGF0ZUNvZGUoZW50aXR5Py5jb2RlLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidjb21tb24uY29kZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5VG9nZ2xlXT1cInVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItcmljaC10ZXh0LWVkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JpZC1zcGFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2NvbW1vbi5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci1yaWNoLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3NldHRpbmdzLmZ1bGZpbGxtZW50LWhhbmRsZXInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZnVsZmlsbG1lbnRIYW5kbGVyXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmdWxmaWxsbWVudEhhbmRsZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZnVsZmlsbG1lbnRIYW5kbGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2ZHJEaXNhYmxlZF09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGhhbmRsZXIgb2YgZnVsZmlsbG1lbnRIYW5kbGVyc1wiIFt2YWx1ZV09XCJoYW5kbGVyLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBoYW5kbGVyLmNvZGUgfX06IHt7IGhhbmRsZXIuZGVzY3JpcHRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcblxyXG4gICAgICAgICAgICA8dmRyLWNhcmRcclxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJjdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZHMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInY29tbW9uLmN1c3RvbS1maWVsZHMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHZkci10YWJiZWQtY3VzdG9tLWZpZWxkc1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU9XCJTaGlwcGluZ01ldGhvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc109XCJjdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZHNGb3JtR3JvdXBdPVwiZGV0YWlsRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpXCJcclxuICAgICAgICAgICAgICAgID48L3Zkci10YWJiZWQtY3VzdG9tLWZpZWxkcz5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuXHJcbiAgICAgICAgICAgIDx2ZHItY3VzdG9tLWRldGFpbC1jb21wb25lbnQtaG9zdFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb25JZD1cInNoaXBwaW5nLW1ldGhvZC1kZXRhaWxcIlxyXG4gICAgICAgICAgICAgICAgW2VudGl0eSRdPVwiZW50aXR5JFwiXHJcbiAgICAgICAgICAgICAgICBbZGV0YWlsRm9ybV09XCJkZXRhaWxGb3JtXCJcclxuICAgICAgICAgICAgPjwvdmRyLWN1c3RvbS1kZXRhaWwtY29tcG9uZW50LWhvc3Q+XHJcblxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidzZXR0aW5ncy5zaGlwcGluZy1lbGlnaWJpbGl0eS1jaGVja2VyJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1jb25maWd1cmFibGUtaW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtc3BhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZENoZWNrZXIgJiYgc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wZXJhdGlvbl09XCJzZWxlY3RlZENoZWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcGVyYXRpb25EZWZpbml0aW9uXT1cInNlbGVjdGVkQ2hlY2tlckRlZmluaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJzZWxlY3RlZENoZWNrZXIgPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2VyXCJcclxuICAgICAgICAgICAgICAgID48L3Zkci1jb25maWd1cmFibGUtaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkQ2hlY2tlciB8fCAhc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvblwiIGNsYXNzPVwiY2FyZC1zcGFuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIHZkckRyb3Bkb3duVHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5zZWxlY3QnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnUgdmRyUG9zaXRpb249XCJib3R0b20tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGVja2VyIG9mIGNoZWNrZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZHJEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2hlY2tlcihjaGVja2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hlY2tlci5kZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duLW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInc2V0dGluZ3Muc2hpcHBpbmctY2FsY3VsYXRvcicgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDx2ZHItY29uZmlndXJhYmxlLWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLXNwYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRDYWxjdWxhdG9yICYmIHNlbGVjdGVkQ2FsY3VsYXRvckRlZmluaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcGVyYXRpb25dPVwic2VsZWN0ZWRDYWxjdWxhdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3BlcmF0aW9uRGVmaW5pdGlvbl09XCJzZWxlY3RlZENhbGN1bGF0b3JEZWZpbml0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmUpPVwic2VsZWN0ZWRDYWxjdWxhdG9yID0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2FsY3VsYXRvclwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZHItY29uZmlndXJhYmxlLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZENhbGN1bGF0b3IgfHwgIXNlbGVjdGVkQ2FsY3VsYXRvckRlZmluaXRpb25cIiBjbGFzcz1cImNhcmQtc3BhblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiB2ZHJEcm9wZG93blRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJwbHVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24uc2VsZWN0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51IHZkclBvc2l0aW9uPVwiYm90dG9tLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2FsY3VsYXRvciBvZiBjYWxjdWxhdG9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENhbGN1bGF0b3IoY2FsY3VsYXRvcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNhbGN1bGF0b3IuZGVzY3JpcHRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ3NldHRpbmdzLnRlc3Qtc2hpcHBpbmctbWV0aG9kJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci10ZXN0LW9yZGVyLWJ1aWxkZXJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtc3BhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9yZGVyTGluZXNDaGFuZ2UpPVwic2V0VGVzdE9yZGVyTGluZXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZHItdGVzdC1vcmRlci1idWlsZGVyPlxyXG4gICAgICAgICAgICAgICAgPHZkci10ZXN0LWFkZHJlc3MtZm9ybVxyXG4gICAgICAgICAgICAgICAgICAgIChhZGRyZXNzQ2hhbmdlKT1cInNldFRlc3RBZGRyZXNzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZHItdGVzdC1hZGRyZXNzLWZvcm0+XHJcbiAgICAgICAgICAgICAgICA8dmRyLXNoaXBwaW5nLW1ldGhvZC10ZXN0LXJlc3VsdFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5Q29kZV09XCIoYWN0aXZlQ2hhbm5lbCQgfCBhc3luYyk/LmN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29rVG9SdW5dPVwiYWxsVGVzdERhdGFQcmVzZW50KCkgJiYgdGVzdERhdGFVcGRhdGVkICYmIGRldGFpbEZvcm0udmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0ZXN0RGF0YVVwZGF0ZWRdPVwidGVzdERhdGFVcGRhdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdGVzdFJlc3VsdF09XCJ0ZXN0UmVzdWx0JCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAocnVuVGVzdCk9XCJydW5UZXN0KClcIlxyXG4gICAgICAgICAgICAgICAgPjwvdmRyLXNoaXBwaW5nLW1ldGhvZC10ZXN0LXJlc3VsdD5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8L3Zkci1wYWdlLWJsb2NrPlxyXG4gICAgPC92ZHItcGFnZS1kZXRhaWwtbGF5b3V0PlxyXG48L2Zvcm0+XHJcbiJdfQ==