@vendure/admin-ui 2.0.0-next.17 → 2.0.0-next.19

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 (157) hide show
  1. package/catalog/catalog.module.d.ts +8 -3
  2. package/catalog/components/assign-to-channel-dialog/assign-to-channel-dialog.component.d.ts +22 -0
  3. package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.d.ts +41 -0
  4. package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.d.ts +4 -0
  5. package/catalog/components/collection-list/collection-list-bulk-actions.d.ts +6 -0
  6. package/catalog/components/collection-list/collection-list.component.d.ts +7 -5
  7. package/catalog/components/collection-tree/collection-tree-node.component.d.ts +10 -6
  8. package/catalog/components/collection-tree/collection-tree.component.d.ts +3 -1
  9. package/catalog/components/facet-list/facet-list-bulk-actions.d.ts +5 -0
  10. package/catalog/components/facet-list/facet-list.component.d.ts +2 -1
  11. package/catalog/components/product-detail/product-detail.component.d.ts +1 -1
  12. package/catalog/components/product-list/product-list-bulk-actions.d.ts +6 -0
  13. package/catalog/components/product-list/product-list.component.d.ts +4 -2
  14. package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +2 -2
  15. package/catalog/public_api.d.ts +6 -0
  16. package/core/common/generated-types.d.ts +269 -2
  17. package/core/common/utilities/bulk-action-utils.d.ts +19 -0
  18. package/core/common/utilities/selection-manager.d.ts +7 -0
  19. package/core/common/version.d.ts +1 -1
  20. package/core/data/definitions/collection-definitions.d.ts +3 -0
  21. package/core/data/definitions/facet-definitions.d.ts +3 -0
  22. package/core/data/definitions/product-definitions.d.ts +1 -0
  23. package/core/data/providers/collection-data.service.d.ts +3 -0
  24. package/core/data/providers/facet-data.service.d.ts +3 -0
  25. package/core/data/providers/product-data.service.d.ts +1 -0
  26. package/core/providers/bulk-action-registry/bulk-action-registry.service.d.ts +9 -0
  27. package/core/providers/bulk-action-registry/bulk-action-types.d.ts +149 -0
  28. package/core/providers/bulk-action-registry/register-bulk-action.d.ts +53 -0
  29. package/core/providers/modal/modal.types.d.ts +2 -0
  30. package/core/providers/nav-builder/nav-builder-types.d.ts +1 -0
  31. package/core/public_api.d.ts +5 -0
  32. package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +1 -1
  33. package/core/shared/components/bulk-action-menu/bulk-action-menu.component.d.ts +32 -0
  34. package/core/shared/components/data-table/data-table.component.d.ts +27 -8
  35. package/core/shared/shared.module.d.ts +32 -31
  36. package/customer/components/customer-group-member-list/customer-group-member-list.component.d.ts +11 -4
  37. package/esm2020/catalog/catalog.module.mjs +31 -6
  38. package/esm2020/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +4 -1
  39. package/esm2020/catalog/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +50 -0
  40. package/esm2020/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.mjs +84 -0
  41. package/esm2020/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.mjs +69 -0
  42. package/esm2020/catalog/components/collection-contents/collection-contents.component.mjs +1 -1
  43. package/esm2020/catalog/components/collection-detail/collection-detail.component.mjs +3 -3
  44. package/esm2020/catalog/components/collection-list/collection-list-bulk-actions.mjs +143 -0
  45. package/esm2020/catalog/components/collection-list/collection-list.component.mjs +16 -7
  46. package/esm2020/catalog/components/collection-tree/collection-tree-node.component.mjs +13 -6
  47. package/esm2020/catalog/components/collection-tree/collection-tree.component.mjs +5 -3
  48. package/esm2020/catalog/components/facet-list/facet-list-bulk-actions.mjs +202 -0
  49. package/esm2020/catalog/components/facet-list/facet-list.component.mjs +14 -5
  50. package/esm2020/catalog/components/generate-product-variants/generate-product-variants.component.mjs +1 -1
  51. package/esm2020/catalog/components/option-value-input/option-value-input.component.mjs +1 -1
  52. package/esm2020/catalog/components/product-detail/product-detail.component.mjs +34 -22
  53. package/esm2020/catalog/components/product-list/product-list-bulk-actions.mjs +168 -0
  54. package/esm2020/catalog/components/product-list/product-list.component.mjs +9 -4
  55. package/esm2020/catalog/components/product-variants-editor/product-variants-editor.component.mjs +29 -18
  56. package/esm2020/catalog/components/product-variants-list/product-variants-list.component.mjs +3 -3
  57. package/esm2020/catalog/providers/routing/collection-resolver.mjs +2 -1
  58. package/esm2020/catalog/public_api.mjs +7 -1
  59. package/esm2020/core/common/generated-types.mjs +3 -2
  60. package/esm2020/core/common/introspection-result.mjs +266 -191
  61. package/esm2020/core/common/utilities/bulk-action-utils.mjs +35 -0
  62. package/esm2020/core/common/utilities/configurable-operation-utils.mjs +2 -2
  63. package/esm2020/core/common/utilities/selection-manager.mjs +33 -1
  64. package/esm2020/core/common/version.mjs +2 -2
  65. package/esm2020/core/data/definitions/collection-definitions.mjs +30 -1
  66. package/esm2020/core/data/definitions/facet-definitions.mjs +31 -1
  67. package/esm2020/core/data/definitions/order-definitions.mjs +443 -443
  68. package/esm2020/core/data/definitions/product-definitions.mjs +751 -743
  69. package/esm2020/core/data/providers/collection-data.service.mjs +17 -2
  70. package/esm2020/core/data/providers/facet-data.service.mjs +18 -2
  71. package/esm2020/core/data/providers/product-data.service.mjs +7 -2
  72. package/esm2020/core/data/utils/remove-readonly-custom-fields.mjs +1 -1
  73. package/esm2020/core/providers/bulk-action-registry/bulk-action-registry.service.mjs +28 -0
  74. package/esm2020/core/providers/bulk-action-registry/bulk-action-types.mjs +2 -0
  75. package/esm2020/core/providers/bulk-action-registry/register-bulk-action.mjs +63 -0
  76. package/esm2020/core/providers/modal/modal.service.mjs +2 -1
  77. package/esm2020/core/providers/modal/modal.types.mjs +1 -1
  78. package/esm2020/core/providers/nav-builder/nav-builder-types.mjs +1 -1
  79. package/esm2020/core/public_api.mjs +6 -1
  80. package/esm2020/core/shared/components/asset-gallery/asset-gallery.component.mjs +2 -2
  81. package/esm2020/core/shared/components/bulk-action-menu/bulk-action-menu.component.mjs +97 -0
  82. package/esm2020/core/shared/components/custom-field-control/custom-field-control.component.mjs +1 -1
  83. package/esm2020/core/shared/components/data-table/data-table.component.mjs +62 -19
  84. package/esm2020/core/shared/components/dropdown/dropdown-menu.component.mjs +2 -2
  85. package/esm2020/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +7 -4
  86. package/esm2020/core/shared/components/language-selector/language-selector.component.mjs +3 -3
  87. package/esm2020/core/shared/components/simple-dialog/simple-dialog.component.mjs +3 -3
  88. package/esm2020/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +1 -1
  89. package/esm2020/core/shared/pipes/custom-field-label.pipe.mjs +1 -1
  90. package/esm2020/core/shared/pipes/locale-currency.pipe.mjs +1 -1
  91. package/esm2020/core/shared/shared.module.mjs +7 -3
  92. package/esm2020/customer/components/customer-detail/customer-detail.component.mjs +1 -1
  93. package/esm2020/customer/components/customer-group-list/customer-group-list.component.mjs +3 -3
  94. package/esm2020/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +3 -3
  95. package/esm2020/customer/components/customer-list/customer-list.component.mjs +1 -1
  96. package/esm2020/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +1 -1
  97. package/esm2020/marketing/components/promotion-detail/promotion-detail.component.mjs +3 -3
  98. package/esm2020/marketing/components/promotion-list/promotion-list.component.mjs +1 -1
  99. package/esm2020/order/components/order-editor/order-editor.component.mjs +1 -1
  100. package/esm2020/order/components/order-list/order-list.component.mjs +1 -1
  101. package/esm2020/settings/components/administrator-list/administrator-list.component.mjs +1 -1
  102. package/esm2020/settings/components/channel-list/channel-list.component.mjs +1 -1
  103. package/esm2020/settings/components/country-list/country-list.component.mjs +1 -1
  104. package/esm2020/settings/components/payment-method-list/payment-method-list.component.mjs +1 -1
  105. package/esm2020/settings/components/role-list/role-list.component.mjs +1 -1
  106. package/esm2020/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +3 -1
  107. package/esm2020/settings/components/shipping-method-list/shipping-method-list.component.mjs +1 -1
  108. package/esm2020/settings/components/tax-category-list/tax-category-list.component.mjs +1 -1
  109. package/esm2020/settings/components/tax-rate-list/tax-rate-list.component.mjs +1 -1
  110. package/esm2020/settings/components/zone-list/zone-list.component.mjs +3 -3
  111. package/esm2020/settings/components/zone-member-list/zone-member-list.component.mjs +3 -3
  112. package/esm2020/system/components/job-list/job-list.component.mjs +1 -1
  113. package/fesm2015/vendure-admin-ui-catalog.mjs +829 -66
  114. package/fesm2015/vendure-admin-ui-catalog.mjs.map +1 -1
  115. package/fesm2015/vendure-admin-ui-core.mjs +1916 -1448
  116. package/fesm2015/vendure-admin-ui-core.mjs.map +1 -1
  117. package/fesm2015/vendure-admin-ui-customer.mjs +6 -6
  118. package/fesm2015/vendure-admin-ui-customer.mjs.map +1 -1
  119. package/fesm2015/vendure-admin-ui-dashboard.mjs +1 -1
  120. package/fesm2015/vendure-admin-ui-marketing.mjs +3 -3
  121. package/fesm2015/vendure-admin-ui-marketing.mjs.map +1 -1
  122. package/fesm2015/vendure-admin-ui-order.mjs +1 -1
  123. package/fesm2015/vendure-admin-ui-order.mjs.map +1 -1
  124. package/fesm2015/vendure-admin-ui-settings.mjs +14 -12
  125. package/fesm2015/vendure-admin-ui-settings.mjs.map +1 -1
  126. package/fesm2015/vendure-admin-ui-system.mjs +1 -1
  127. package/fesm2020/vendure-admin-ui-catalog.mjs +822 -65
  128. package/fesm2020/vendure-admin-ui-catalog.mjs.map +1 -1
  129. package/fesm2020/vendure-admin-ui-core.mjs +1909 -1448
  130. package/fesm2020/vendure-admin-ui-core.mjs.map +1 -1
  131. package/fesm2020/vendure-admin-ui-customer.mjs +6 -6
  132. package/fesm2020/vendure-admin-ui-customer.mjs.map +1 -1
  133. package/fesm2020/vendure-admin-ui-dashboard.mjs +1 -1
  134. package/fesm2020/vendure-admin-ui-marketing.mjs +3 -3
  135. package/fesm2020/vendure-admin-ui-marketing.mjs.map +1 -1
  136. package/fesm2020/vendure-admin-ui-order.mjs +1 -1
  137. package/fesm2020/vendure-admin-ui-order.mjs.map +1 -1
  138. package/fesm2020/vendure-admin-ui-settings.mjs +14 -12
  139. package/fesm2020/vendure-admin-ui-settings.mjs.map +1 -1
  140. package/fesm2020/vendure-admin-ui-system.mjs +1 -1
  141. package/package.json +2 -2
  142. package/settings/components/zone-member-list/zone-member-list.component.d.ts +3 -1
  143. package/static/i18n-messages/cs.json +19 -0
  144. package/static/i18n-messages/de.json +19 -0
  145. package/static/i18n-messages/en.json +22 -4
  146. package/static/i18n-messages/es.json +19 -0
  147. package/static/i18n-messages/fr.json +19 -0
  148. package/static/i18n-messages/it.json +19 -0
  149. package/static/i18n-messages/pl.json +19 -0
  150. package/static/i18n-messages/pt_BR.json +19 -0
  151. package/static/i18n-messages/pt_PT.json +19 -0
  152. package/static/i18n-messages/ru.json +19 -0
  153. package/static/i18n-messages/uk.json +19 -0
  154. package/static/i18n-messages/zh_Hans.json +19 -0
  155. package/static/i18n-messages/zh_Hant.json +19 -0
  156. package/static/styles/global/_overrides.scss +1 -1
  157. package/static/theme.min.css +1 -1
@@ -24,6 +24,7 @@ import { AssetPreviewDialogComponent } from './components/asset-preview-dialog/a
24
24
  import { AssetPreviewLinksComponent } from './components/asset-preview-links/asset-preview-links.component';
25
25
  import { AssetPreviewComponent } from './components/asset-preview/asset-preview.component';
26
26
  import { AssetSearchInputComponent } from './components/asset-search-input/asset-search-input.component';
27
+ import { BulkActionMenuComponent } from './components/bulk-action-menu/bulk-action-menu.component';
27
28
  import { ChannelAssignmentControlComponent } from './components/channel-assignment-control/channel-assignment-control.component';
28
29
  import { ChannelBadgeComponent } from './components/channel-badge/channel-badge.component';
29
30
  import { ChipComponent } from './components/chip/chip.component';
@@ -234,6 +235,7 @@ const DECLARATIONS = [
234
235
  ProductSearchInputComponent,
235
236
  ContextMenuComponent,
236
237
  RawHtmlDialogComponent,
238
+ BulkActionMenuComponent,
237
239
  ];
238
240
  const DYNAMIC_FORM_INPUTS = [
239
241
  TextFormInputComponent,
@@ -357,7 +359,8 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
357
359
  ProductMultiSelectorDialogComponent,
358
360
  ProductSearchInputComponent,
359
361
  ContextMenuComponent,
360
- RawHtmlDialogComponent, TextFormInputComponent,
362
+ RawHtmlDialogComponent,
363
+ BulkActionMenuComponent, TextFormInputComponent,
361
364
  PasswordFormInputComponent,
362
365
  NumberFormInputComponent,
363
366
  DateFormInputComponent,
@@ -491,7 +494,8 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
491
494
  ProductMultiSelectorDialogComponent,
492
495
  ProductSearchInputComponent,
493
496
  ContextMenuComponent,
494
- RawHtmlDialogComponent, TextFormInputComponent,
497
+ RawHtmlDialogComponent,
498
+ BulkActionMenuComponent, TextFormInputComponent,
495
499
  PasswordFormInputComponent,
496
500
  NumberFormInputComponent,
497
501
  DateFormInputComponent,
@@ -549,4 +553,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
549
553
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
550
554
  }]
551
555
  }] });
552
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL3NoYXJlZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxZQUFZLENBQUM7QUFDcEIsT0FBTyw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sdURBQXVELENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixHQUMxQixNQUFNLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzlHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztBQUN0SSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUM1RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUN2SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvRkFBb0YsQ0FBQztBQUN6SSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxRkFBcUYsQ0FBQztBQUNuSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQztBQUNySCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQztBQUM3SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQztBQUM3SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5RkFBeUYsQ0FBQztBQUM1SSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUNySCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxRkFBcUYsQ0FBQztBQUN0SSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUN6RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQztBQUM3SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUNySCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxxR0FBcUcsQ0FBQztBQUM3SixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5RkFBeUYsQ0FBQztBQUM1SSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUM3SCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQztBQUN0SSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvRkFBb0YsQ0FBQztBQUNuSSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxvR0FBb0csQ0FBQztBQUMxSixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvRkFBb0YsQ0FBQztBQUNuSSxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUMzQiw0QkFBNEIsR0FDL0IsTUFBTSxpRkFBaUYsQ0FBQztBQUN6RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUNySCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1R0FBdUcsQ0FBQztBQUN4SixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUNySCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOztBQUUzRixNQUFNLE9BQU8sR0FBRztJQUNaLGFBQWE7SUFDYixZQUFZO0lBQ1osV0FBVztJQUNYLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osY0FBYztJQUNkLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsYUFBYTtJQUNiLGNBQWM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHO0lBQ2pCLGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLHFCQUFxQjtJQUNyQiwyQkFBMkI7SUFDM0IseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUMxQixxQkFBcUI7SUFDckIsYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsc0JBQXNCO0lBQ3RCLDJCQUEyQjtJQUMzQixrQkFBa0I7SUFDbEIsd0JBQXdCO0lBQ3hCLDJCQUEyQjtJQUMzQiw2QkFBNkI7SUFDN0IsMkJBQTJCO0lBQzNCLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGtCQUFrQjtJQUNsQix5QkFBeUI7SUFDekIsaUJBQWlCO0lBQ2pCLG9CQUFvQjtJQUNwQiw4QkFBOEI7SUFDOUIsOEJBQThCO0lBQzlCLHNCQUFzQjtJQUN0QixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6Qix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixRQUFRO0lBQ1Isd0JBQXdCO0lBQ3hCLHFCQUFxQjtJQUNyQix3QkFBd0I7SUFDeEIseUJBQXlCO0lBQ3pCLG9CQUFvQjtJQUNwQixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLHNCQUFzQjtJQUN0Qix1QkFBdUI7SUFDdkIsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsdUJBQXVCO0lBQ3ZCLHFCQUFxQjtJQUNyQiwwQkFBMEI7SUFDMUIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixxQkFBcUI7SUFDckIsaUNBQWlDO0lBQ2pDLGdCQUFnQjtJQUNoQiwrQkFBK0I7SUFDL0Isc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQiwwQkFBMEI7SUFDMUIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQiw0QkFBNEI7SUFDNUIsV0FBVztJQUNYLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsc0JBQXNCO0lBQ3RCLDJCQUEyQjtJQUMzQix1QkFBdUI7SUFDdkIsaUNBQWlDO0lBQ2pDLGtCQUFrQjtJQUNsQiwrQkFBK0I7SUFDL0Isb0JBQW9CO0lBQ3BCLCtCQUErQjtJQUMvQixvQkFBb0I7SUFDcEIsY0FBYztJQUNkLGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIsb0JBQW9CO0lBQ3BCLG9CQUFvQjtJQUNwQix5QkFBeUI7SUFDekIsK0JBQStCO0lBQy9CLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsMkJBQTJCO0lBQzNCLHlCQUF5QjtJQUN6QixrQ0FBa0M7SUFDbEMsMEJBQTBCO0lBQzFCLG1DQUFtQztJQUNuQywyQkFBMkI7SUFDM0Isb0JBQW9CO0lBQ3BCLHNCQUFzQjtDQUN6QixDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBRztJQUN4QixzQkFBc0I7SUFDdEIsMEJBQTBCO0lBQzFCLHdCQUF3QjtJQUN4QixzQkFBc0I7SUFDdEIsMEJBQTBCO0lBQzFCLHlCQUF5QjtJQUN6Qix3QkFBd0I7SUFDeEIsNEJBQTRCO0lBQzVCLHlCQUF5QjtJQUN6QiwwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLDZCQUE2QjtJQUM3QixvQ0FBb0M7SUFDcEMsOEJBQThCO0lBQzlCLDRCQUE0QjtJQUM1QiwyQkFBMkI7SUFDM0IsK0JBQStCO0lBQy9CLDZCQUE2QjtJQUM3QiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDRCQUE0QjtJQUM1Qiw0QkFBNEI7SUFDNUIsc0NBQXNDO0lBQ3RDLGlDQUFpQztDQUNwQyxDQUFDO0FBZ0JGLE1BQU0sT0FBTyxZQUFZOzt5R0FBWixZQUFZOzBHQUFaLFlBQVksaUJBeklyQixrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLHVCQUF1QjtRQUN2QixxQkFBcUI7UUFDckIsMkJBQTJCO1FBQzNCLHlCQUF5QjtRQUN6QiwwQkFBMEI7UUFDMUIscUJBQXFCO1FBQ3JCLGFBQWE7UUFDYixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QiwyQkFBMkI7UUFDM0Isa0JBQWtCO1FBQ2xCLHdCQUF3QjtRQUN4QiwyQkFBMkI7UUFDM0IsNkJBQTZCO1FBQzdCLDJCQUEyQjtRQUMzQix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIseUJBQXlCO1FBQ3pCLGlCQUFpQjtRQUNqQixvQkFBb0I7UUFDcEIsOEJBQThCO1FBQzlCLDhCQUE4QjtRQUM5QixzQkFBc0I7UUFDdEIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUNyQix5QkFBeUI7UUFDekIsdUJBQXVCO1FBQ3ZCLHFCQUFxQjtRQUNyQixtQkFBbUI7UUFDbkIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixxQkFBcUI7UUFDckIsUUFBUTtRQUNSLHdCQUF3QjtRQUN4QixxQkFBcUI7UUFDckIsd0JBQXdCO1FBQ3hCLHlCQUF5QjtRQUN6QixvQkFBb0I7UUFDcEIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixzQkFBc0I7UUFDdEIsdUJBQXVCO1FBQ3ZCLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIsaUJBQWlCO1FBQ2pCLHVCQUF1QjtRQUN2QixxQkFBcUI7UUFDckIsMEJBQTBCO1FBQzFCLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIscUJBQXFCO1FBQ3JCLGlDQUFpQztRQUNqQyxnQkFBZ0I7UUFDaEIsK0JBQStCO1FBQy9CLHNCQUFzQjtRQUN0QixvQkFBb0I7UUFDcEIsMEJBQTBCO1FBQzFCLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsNEJBQTRCO1FBQzVCLFdBQVc7UUFDWCxZQUFZO1FBQ1oseUJBQXlCO1FBQ3pCLHNCQUFzQjtRQUN0QiwyQkFBMkI7UUFDM0IsdUJBQXVCO1FBQ3ZCLGlDQUFpQztRQUNqQyxrQkFBa0I7UUFDbEIsK0JBQStCO1FBQy9CLG9CQUFvQjtRQUNwQiwrQkFBK0I7UUFDL0Isb0JBQW9CO1FBQ3BCLGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQixvQkFBb0I7UUFDcEIseUJBQXlCO1FBQ3pCLCtCQUErQjtRQUMvQixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLDJCQUEyQjtRQUMzQix5QkFBeUI7UUFDekIsa0NBQWtDO1FBQ2xDLDBCQUEwQjtRQUMxQixtQ0FBbUM7UUFDbkMsMkJBQTJCO1FBQzNCLG9CQUFvQjtRQUNwQixzQkFBc0IsRUFJdEIsc0JBQXNCO1FBQ3RCLDBCQUEwQjtRQUMxQix3QkFBd0I7UUFDeEIsc0JBQXNCO1FBQ3RCLDBCQUEwQjtRQUMxQix5QkFBeUI7UUFDekIsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1Qix5QkFBeUI7UUFDekIsMEJBQTBCO1FBQzFCLDJCQUEyQjtRQUMzQiw2QkFBNkI7UUFDN0Isb0NBQW9DO1FBQ3BDLDhCQUE4QjtRQUM5Qiw0QkFBNEI7UUFDNUIsMkJBQTJCO1FBQzNCLCtCQUErQjtRQUMvQiw2QkFBNkI7UUFDN0IsMEJBQTBCO1FBQzFCLDBCQUEwQjtRQUMxQiw0QkFBNEI7UUFDNUIsNEJBQTRCO1FBQzVCLHNDQUFzQztRQUN0QyxpQ0FBaUMsYUFySWpDLGFBQWE7UUFDYixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixZQUFZO1FBQ1osY0FBYztRQUNkLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsYUFBYTtRQUNiLGNBQWMsYUFUZCxhQUFhO1FBQ2IsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLGNBQWM7UUFDZCxtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLGFBQWE7UUFDYixjQUFjLEVBSWQsa0JBQWtCO1FBQ2xCLHNCQUFzQjtRQUN0Qix1QkFBdUI7UUFDdkIscUJBQXFCO1FBQ3JCLDJCQUEyQjtRQUMzQix5QkFBeUI7UUFDekIsMEJBQTBCO1FBQzFCLHFCQUFxQjtRQUNyQixhQUFhO1FBQ2Isc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsMkJBQTJCO1FBQzNCLGtCQUFrQjtRQUNsQix3QkFBd0I7UUFDeEIsMkJBQTJCO1FBQzNCLDZCQUE2QjtRQUM3QiwyQkFBMkI7UUFDM0IsdUJBQXVCO1FBQ3ZCLHVCQUF1QjtRQUN2QixZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLHlCQUF5QjtRQUN6QixpQkFBaUI7UUFDakIsb0JBQW9CO1FBQ3BCLDhCQUE4QjtRQUM5Qiw4QkFBOEI7UUFDOUIsc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQixxQkFBcUI7UUFDckIseUJBQXlCO1FBQ3pCLHVCQUF1QjtRQUN2QixxQkFBcUI7UUFDckIsbUJBQW1CO1FBQ25CLGdCQUFnQjtRQUNoQixpQkFBaUI7UUFDakIscUJBQXFCO1FBQ3JCLFFBQVE7UUFDUix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLHdCQUF3QjtRQUN4Qix5QkFBeUI7UUFDekIsb0JBQW9CO1FBQ3BCLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsc0JBQXNCO1FBQ3RCLHVCQUF1QjtRQUN2QixpQkFBaUI7UUFDakIsdUJBQXVCO1FBQ3ZCLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIscUJBQXFCO1FBQ3JCLDBCQUEwQjtRQUMxQixtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLHFCQUFxQjtRQUNyQixpQ0FBaUM7UUFDakMsZ0JBQWdCO1FBQ2hCLCtCQUErQjtRQUMvQixzQkFBc0I7UUFDdEIsb0JBQW9CO1FBQ3BCLDBCQUEwQjtRQUMxQixnQkFBZ0I7UUFDaEIsbUJBQW1CO1FBQ25CLDRCQUE0QjtRQUM1QixXQUFXO1FBQ1gsWUFBWTtRQUNaLHlCQUF5QjtRQUN6QixzQkFBc0I7UUFDdEIsMkJBQTJCO1FBQzNCLHVCQUF1QjtRQUN2QixpQ0FBaUM7UUFDakMsa0JBQWtCO1FBQ2xCLCtCQUErQjtRQUMvQixvQkFBb0I7UUFDcEIsK0JBQStCO1FBQy9CLG9CQUFvQjtRQUNwQixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLHNCQUFzQjtRQUN0QixvQkFBb0I7UUFDcEIsb0JBQW9CO1FBQ3BCLHlCQUF5QjtRQUN6QiwrQkFBK0I7UUFDL0IscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQiwyQkFBMkI7UUFDM0IseUJBQXlCO1FBQ3pCLGtDQUFrQztRQUNsQywwQkFBMEI7UUFDMUIsbUNBQW1DO1FBQ25DLDJCQUEyQjtRQUMzQixvQkFBb0I7UUFDcEIsc0JBQXNCLEVBSXRCLHNCQUFzQjtRQUN0QiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLHNCQUFzQjtRQUN0QiwwQkFBMEI7UUFDMUIseUJBQXlCO1FBQ3pCLHdCQUF3QjtRQUN4Qiw0QkFBNEI7UUFDNUIseUJBQXlCO1FBQ3pCLDBCQUEwQjtRQUMxQiwyQkFBMkI7UUFDM0IsNkJBQTZCO1FBQzdCLG9DQUFvQztRQUNwQyw4QkFBOEI7UUFDOUIsNEJBQTRCO1FBQzVCLDJCQUEyQjtRQUMzQiwrQkFBK0I7UUFDL0IsNkJBQTZCO1FBQzdCLDBCQUEwQjtRQUMxQiwwQkFBMEI7UUFDMUIsNEJBQTRCO1FBQzVCLDRCQUE0QjtRQUM1QixzQ0FBc0M7UUFDdEMsaUNBQWlDOzBHQWlCeEIsWUFBWSxhQVZWO1FBQ1AsNkNBQTZDO1FBQzdDLCtDQUErQztRQUMvQywwREFBMEQ7UUFDMUQsNkVBQTZFO1FBQzdFLFlBQVk7UUFDWix3QkFBd0I7S0FDM0IsWUFWUSxDQUFDLE9BQU8sQ0FBQyxFQXpJbEIsYUFBYTtRQUNiLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLFlBQVk7UUFDWixjQUFjO1FBQ2QsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixhQUFhO1FBQ2IsY0FBYzsyRkE2SUwsWUFBWTtrQkFkeEIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsbUJBQW1CLENBQUM7b0JBQzlELFlBQVksRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcsbUJBQW1CLENBQUM7b0JBQ3ZELFNBQVMsRUFBRTt3QkFDUCw2Q0FBNkM7d0JBQzdDLCtDQUErQzt3QkFDL0MsMERBQTBEO3dCQUMxRCw2RUFBNkU7d0JBQzdFLFlBQVk7d0JBQ1osd0JBQXdCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2xhcml0eU1vZHVsZSB9IGZyb20gJ0BjbHIvYW5ndWxhcic7XHJcbmltcG9ydCAnQGNsci9pY29ucyc7XHJcbmltcG9ydCAnQGNsci9pY29ucy9zaGFwZXMvYWxsLXNoYXBlcyc7XHJcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0ICdAd2ViY29tcG9uZW50cy9jdXN0b20tZWxlbWVudHMvY3VzdG9tLWVsZW1lbnRzLm1pbi5qcyc7XHJcbmltcG9ydCB7IE5neFBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICduZ3gtcGFnaW5hdGlvbic7XHJcblxyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9wcm92aWRlcnMvbW9kYWwvbW9kYWwuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBBY3Rpb25CYXJJdGVtc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hY3Rpb24tYmFyLWl0ZW1zL2FjdGlvbi1iYXItaXRlbXMuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICAgIEFjdGlvbkJhckNvbXBvbmVudCxcclxuICAgIEFjdGlvbkJhckxlZnRDb21wb25lbnQsXHJcbiAgICBBY3Rpb25CYXJSaWdodENvbXBvbmVudCxcclxufSBmcm9tICcuL2NvbXBvbmVudHMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFkZHJlc3NGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FkZHJlc3MtZm9ybS9hZGRyZXNzLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWZmaXhlZElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FmZml4ZWQtaW5wdXQvYWZmaXhlZC1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQZXJjZW50YWdlU3VmZml4SW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWZmaXhlZC1pbnB1dC9wZXJjZW50YWdlLXN1ZmZpeC1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3NldEZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hc3NldC1maWxlLWlucHV0L2Fzc2V0LWZpbGUtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzZXRHYWxsZXJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Fzc2V0LWdhbGxlcnkvYXNzZXQtZ2FsbGVyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3NldFBpY2tlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hc3NldC1waWNrZXItZGlhbG9nL2Fzc2V0LXBpY2tlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzZXRQcmV2aWV3RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Fzc2V0LXByZXZpZXctZGlhbG9nL2Fzc2V0LXByZXZpZXctZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzc2V0UHJldmlld0xpbmtzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Fzc2V0LXByZXZpZXctbGlua3MvYXNzZXQtcHJldmlldy1saW5rcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3NldFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXNzZXQtcHJldmlldy9hc3NldC1wcmV2aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzc2V0U2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXNzZXQtc2VhcmNoLWlucHV0L2Fzc2V0LXNlYXJjaC1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFubmVsQXNzaWdubWVudENvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2hhbm5lbC1hc3NpZ25tZW50LWNvbnRyb2wvY2hhbm5lbC1hc3NpZ25tZW50LWNvbnRyb2wuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hhbm5lbEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoYW5uZWwtYmFkZ2UvY2hhbm5lbC1iYWRnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoaXAvY2hpcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maWd1cmFibGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb25maWd1cmFibGUtaW5wdXQvY29uZmlndXJhYmxlLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1cnJlbmN5SW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VycmVuY3ktaW5wdXQvY3VycmVuY3ktaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tRGV0YWlsQ29tcG9uZW50SG9zdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tZGV0YWlsLWNvbXBvbmVudC1ob3N0L2N1c3RvbS1kZXRhaWwtY29tcG9uZW50LWhvc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tRmllbGRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS1maWVsZC1jb250cm9sL2N1c3RvbS1maWVsZC1jb250cm9sLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbWVyTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tZXItbGFiZWwvY3VzdG9tZXItbGFiZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXRldGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRldGltZS1waWNrZXIvZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IERyb3Bkb3duTWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duVHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi10cmlnZ2VyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXROb3RlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VkaXQtbm90ZS1kaWFsb2cvZWRpdC1ub3RlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbXB0eVBsYWNlaG9sZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VtcHR5LXBsYWNlaG9sZGVyL2VtcHR5LXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eUluZm9Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW50aXR5LWluZm8vZW50aXR5LWluZm8uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uSG9zdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9leHRlbnNpb24taG9zdC9leHRlbnNpb24taG9zdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGYWNldFZhbHVlQ2hpcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mYWNldC12YWx1ZS1jaGlwL2ZhY2V0LXZhbHVlLWNoaXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmFjZXRWYWx1ZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZhY2V0LXZhbHVlLXNlbGVjdG9yL2ZhY2V0LXZhbHVlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvY2FsUG9pbnRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZvY2FsLXBvaW50LWNvbnRyb2wvZm9jYWwtcG9pbnQtY29udHJvbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC1jb250cm9sLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1pdGVtL2Zvcm0taXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtYXR0ZWRBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm1hdHRlZC1hZGRyZXNzL2Zvcm1hdHRlZC1hZGRyZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhlbHBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hlbHAtdG9vbHRpcC9oZWxwLXRvb2x0aXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGlzdG9yeUVudHJ5RGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hpc3RvcnktZW50cnktZGV0YWlsL2hpc3RvcnktZW50cnktZGV0YWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEl0ZW1zUGVyUGFnZUNvbnRyb2xzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2l0ZW1zLXBlci1wYWdlLWNvbnRyb2xzL2l0ZW1zLXBlci1wYWdlLWNvbnRyb2xzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExhYmVsZWREYXRhQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xhYmVsZWQtZGF0YS9sYWJlbGVkLWRhdGEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYW5hZ2VUYWdzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hbmFnZS10YWdzLWRpYWxvZy9tYW5hZ2UtdGFncy1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nQnV0dG9uc0RpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbC1kaWFsb2cvZGlhbG9nLWJ1dHRvbnMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50T3V0bGV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vZGFsLWRpYWxvZy9kaWFsb2ctY29tcG9uZW50LW91dGxldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbC1kaWFsb2cvZGlhbG9nLXRpdGxlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1vZGFsRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vZGFsLWRpYWxvZy9tb2RhbC1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JqZWN0VHJlZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9vYmplY3QtdHJlZS9vYmplY3QtdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPcmRlclN0YXRlTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvb3JkZXItc3RhdGUtbGFiZWwvb3JkZXItc3RhdGUtbGFiZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbnRyb2xzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24tY29udHJvbHMvcGFnaW5hdGlvbi1jb250cm9scy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9kdWN0TXVsdGlTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wcm9kdWN0LW11bHRpLXNlbGVjdG9yLWRpYWxvZy9wcm9kdWN0LW11bHRpLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9kdWN0U2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZHVjdC1zZWFyY2gtaW5wdXQvcHJvZHVjdC1zZWFyY2gtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvZHVjdFZhcmlhbnRTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnQtc2VsZWN0b3IvcHJvZHVjdC12YXJpYW50LXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4dGVybmFsSW1hZ2VEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9leHRlcm5hbC1pbWFnZS1kaWFsb2cvZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExpbmtEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9saW5rLWRpYWxvZy9saW5rLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yaWNoLXRleHQtZWRpdG9yL3Byb3NlbWlycm9yL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmF3SHRtbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yaWNoLXRleHQtZWRpdG9yL3Jhdy1odG1sLWRpYWxvZy9yYXctaHRtbC1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmljaFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9yaWNoLXRleHQtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlbGVjdFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zZWxlY3QtdG9nZ2xlL3NlbGVjdC10b2dnbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2ltcGxlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NpbXBsZS1kaWFsb2cvc2ltcGxlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdGF0dXNCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zdGF0dXMtYmFkZ2Uvc3RhdHVzLWJhZGdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmJlZEN1c3RvbUZpZWxkc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJiZWQtY3VzdG9tLWZpZWxkcy90YWJiZWQtY3VzdG9tLWZpZWxkcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZVJvd0FjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1yb3ctYWN0aW9uL3RhYmxlLXJvdy1hY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFnU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFnLXNlbGVjdG9yL3RhZy1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaW1lbGluZUVudHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RpbWVsaW5lLWVudHJ5L3RpbWVsaW5lLWVudHJ5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRpdGxlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGl0bGUtaW5wdXQvdGl0bGUtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWlFeHRlbnNpb25Qb2ludENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91aS1leHRlbnNpb24tcG9pbnQvdWktZXh0ZW5zaW9uLXBvaW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpc2FibGVkRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Rpc2FibGVkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElmRGVmYXVsdENoYW5uZWxBY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvaWYtZGVmYXVsdC1jaGFubmVsLWFjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJZk11bHRpY2hhbm5lbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9pZi1tdWx0aWNoYW5uZWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSWZQZXJtaXNzaW9uc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9pZi1wZXJtaXNzaW9ucy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCb29sZWFuRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL2Jvb2xlYW4tZm9ybS1pbnB1dC9ib29sZWFuLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSHRtbEVkaXRvckZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9jb2RlLWVkaXRvci1mb3JtLWlucHV0L2h0bWwtZWRpdG9yLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSnNvbkVkaXRvckZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9jb2RlLWVkaXRvci1mb3JtLWlucHV0L2pzb24tZWRpdG9yLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tYmluYXRpb25Nb2RlRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL2NvbWJpbmF0aW9uLW1vZGUtZm9ybS1pbnB1dC9jb21iaW5hdGlvbi1tb2RlLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VycmVuY3lGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvY3VycmVuY3ktZm9ybS1pbnB1dC9jdXJyZW5jeS1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbWVyR3JvdXBGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvY3VzdG9tZXItZ3JvdXAtZm9ybS1pbnB1dC9jdXN0b21lci1ncm91cC1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvZGF0ZS1mb3JtLWlucHV0L2RhdGUtZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL2R5bmFtaWMtZm9ybS1pbnB1dC9keW5hbWljLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmFjZXRWYWx1ZUZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9mYWNldC12YWx1ZS1mb3JtLWlucHV0L2ZhY2V0LXZhbHVlLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTnVtYmVyRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL251bWJlci1mb3JtLWlucHV0L251bWJlci1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhc3N3b3JkRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL3Bhc3N3b3JkLWZvcm0taW5wdXQvcGFzc3dvcmQtZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9kdWN0TXVsdGlTZWxlY3RvckZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9wcm9kdWN0LW11bHRpLXNlbGVjdG9yLWZvcm0taW5wdXQvcHJvZHVjdC1tdWx0aS1zZWxlY3Rvci1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFByb2R1Y3RTZWxlY3RvckZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9wcm9kdWN0LXNlbGVjdG9yLWZvcm0taW5wdXQvcHJvZHVjdC1zZWxlY3Rvci1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlbGF0aW9uQXNzZXRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9yZWxhdGlvbi1mb3JtLWlucHV0L2Fzc2V0L3JlbGF0aW9uLWFzc2V0LWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlbGF0aW9uQ3VzdG9tZXJJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9yZWxhdGlvbi1mb3JtLWlucHV0L2N1c3RvbWVyL3JlbGF0aW9uLWN1c3RvbWVyLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlbGF0aW9uR2VuZXJpY0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL3JlbGF0aW9uLWZvcm0taW5wdXQvZ2VuZXJpYy9yZWxhdGlvbi1nZW5lcmljLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlbGF0aW9uUHJvZHVjdFZhcmlhbnRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9yZWxhdGlvbi1mb3JtLWlucHV0L3Byb2R1Y3QtdmFyaWFudC9yZWxhdGlvbi1wcm9kdWN0LXZhcmlhbnQtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVsYXRpb25Qcm9kdWN0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvcmVsYXRpb24tZm9ybS1pbnB1dC9wcm9kdWN0L3JlbGF0aW9uLXByb2R1Y3QtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICAgIFJlbGF0aW9uQ2FyZENvbXBvbmVudCxcclxuICAgIFJlbGF0aW9uQ2FyZERldGFpbERpcmVjdGl2ZSxcclxuICAgIFJlbGF0aW9uQ2FyZFByZXZpZXdEaXJlY3RpdmUsXHJcbn0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL3JlbGF0aW9uLWZvcm0taW5wdXQvcmVsYXRpb24tY2FyZC9yZWxhdGlvbi1jYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlbGF0aW9uRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL3JlbGF0aW9uLWZvcm0taW5wdXQvcmVsYXRpb24tZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZWxhdGlvblNlbGVjdG9yRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL3JlbGF0aW9uLWZvcm0taW5wdXQvcmVsYXRpb24tc2VsZWN0b3ItZGlhbG9nL3JlbGF0aW9uLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSaWNoVGV4dEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9yaWNoLXRleHQtZm9ybS1pbnB1dC9yaWNoLXRleHQtZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvc2VsZWN0LWZvcm0taW5wdXQvc2VsZWN0LWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGV4dEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy90ZXh0LWZvcm0taW5wdXQvdGV4dC1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRhcmVhRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL3RleHRhcmVhLWZvcm0taW5wdXQvdGV4dGFyZWEtZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3NldFByZXZpZXdQaXBlIH0gZnJvbSAnLi9waXBlcy9hc3NldC1wcmV2aWV3LnBpcGUnO1xyXG5pbXBvcnQgeyBDaGFubmVsTGFiZWxQaXBlIH0gZnJvbSAnLi9waXBlcy9jaGFubmVsLWxhYmVsLnBpcGUnO1xyXG5pbXBvcnQgeyBDdXN0b21GaWVsZExhYmVsUGlwZSB9IGZyb20gJy4vcGlwZXMvY3VzdG9tLWZpZWxkLWxhYmVsLnBpcGUnO1xyXG5pbXBvcnQgeyBEdXJhdGlvblBpcGUgfSBmcm9tICcuL3BpcGVzL2R1cmF0aW9uLnBpcGUnO1xyXG5pbXBvcnQgeyBGaWxlU2l6ZVBpcGUgfSBmcm9tICcuL3BpcGVzL2ZpbGUtc2l6ZS5waXBlJztcclxuaW1wb3J0IHsgSGFzUGVybWlzc2lvblBpcGUgfSBmcm9tICcuL3BpcGVzL2hhcy1wZXJtaXNzaW9uLnBpcGUnO1xyXG5pbXBvcnQgeyBMb2NhbGVDdXJyZW5jeU5hbWVQaXBlIH0gZnJvbSAnLi9waXBlcy9sb2NhbGUtY3VycmVuY3ktbmFtZS5waXBlJztcclxuaW1wb3J0IHsgTG9jYWxlQ3VycmVuY3lQaXBlIH0gZnJvbSAnLi9waXBlcy9sb2NhbGUtY3VycmVuY3kucGlwZSc7XHJcbmltcG9ydCB7IExvY2FsZURhdGVQaXBlIH0gZnJvbSAnLi9waXBlcy9sb2NhbGUtZGF0ZS5waXBlJztcclxuaW1wb3J0IHsgTG9jYWxlTGFuZ3VhZ2VOYW1lUGlwZSB9IGZyb20gJy4vcGlwZXMvbG9jYWxlLWxhbmd1YWdlLW5hbWUucGlwZSc7XHJcbmltcG9ydCB7IExvY2FsZVJlZ2lvbk5hbWVQaXBlIH0gZnJvbSAnLi9waXBlcy9sb2NhbGUtcmVnaW9uLW5hbWUucGlwZSc7XHJcbmltcG9ydCB7IFNlbnRlbmNlQ2FzZVBpcGUgfSBmcm9tICcuL3BpcGVzL3NlbnRlbmNlLWNhc2UucGlwZSc7XHJcbmltcG9ydCB7IFNvcnRQaXBlIH0gZnJvbSAnLi9waXBlcy9zb3J0LnBpcGUnO1xyXG5pbXBvcnQgeyBTdGF0ZUkxOG5Ub2tlblBpcGUgfSBmcm9tICcuL3BpcGVzL3N0YXRlLWkxOG4tdG9rZW4ucGlwZSc7XHJcbmltcG9ydCB7IFN0cmluZ1RvQ29sb3JQaXBlIH0gZnJvbSAnLi9waXBlcy9zdHJpbmctdG8tY29sb3IucGlwZSc7XHJcbmltcG9ydCB7IFRpbWVBZ29QaXBlIH0gZnJvbSAnLi9waXBlcy90aW1lLWFnby5waXBlJztcclxuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZURldGFpbEd1YXJkIH0gZnJvbSAnLi9wcm92aWRlcnMvcm91dGluZy9jYW4tZGVhY3RpdmF0ZS1kZXRhaWwtZ3VhcmQnO1xyXG5cclxuY29uc3QgSU1QT1JUUyA9IFtcclxuICAgIENsYXJpdHlNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBOZ1NlbGVjdE1vZHVsZSxcclxuICAgIE5neFBhZ2luYXRpb25Nb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBPdmVybGF5TW9kdWxlLFxyXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXHJcbl07XHJcblxyXG5jb25zdCBERUNMQVJBVElPTlMgPSBbXHJcbiAgICBBY3Rpb25CYXJDb21wb25lbnQsXHJcbiAgICBBY3Rpb25CYXJMZWZ0Q29tcG9uZW50LFxyXG4gICAgQWN0aW9uQmFyUmlnaHRDb21wb25lbnQsXHJcbiAgICBBc3NldFByZXZpZXdDb21wb25lbnQsXHJcbiAgICBBc3NldFByZXZpZXdEaWFsb2dDb21wb25lbnQsXHJcbiAgICBBc3NldFNlYXJjaElucHV0Q29tcG9uZW50LFxyXG4gICAgQ29uZmlndXJhYmxlSW5wdXRDb21wb25lbnQsXHJcbiAgICBBZmZpeGVkSW5wdXRDb21wb25lbnQsXHJcbiAgICBDaGlwQ29tcG9uZW50LFxyXG4gICAgQ3VycmVuY3lJbnB1dENvbXBvbmVudCxcclxuICAgIExvY2FsZUN1cnJlbmN5TmFtZVBpcGUsXHJcbiAgICBDdXN0b21lckxhYmVsQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tRmllbGRDb250cm9sQ29tcG9uZW50LFxyXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gICAgRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgRmFjZXRWYWx1ZVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgSXRlbXNQZXJQYWdlQ29udHJvbHNDb21wb25lbnQsXHJcbiAgICBQYWdpbmF0aW9uQ29udHJvbHNDb21wb25lbnQsXHJcbiAgICBUYWJsZVJvd0FjdGlvbkNvbXBvbmVudCxcclxuICAgIEZhY2V0VmFsdWVDaGlwQ29tcG9uZW50LFxyXG4gICAgRmlsZVNpemVQaXBlLFxyXG4gICAgRm9ybUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRm9ybUZpZWxkQ29udHJvbERpcmVjdGl2ZSxcclxuICAgIEZvcm1JdGVtQ29tcG9uZW50LFxyXG4gICAgTW9kYWxEaWFsb2dDb21wb25lbnQsXHJcbiAgICBQZXJjZW50YWdlU3VmZml4SW5wdXRDb21wb25lbnQsXHJcbiAgICBEaWFsb2dDb21wb25lbnRPdXRsZXRDb21wb25lbnQsXHJcbiAgICBEaWFsb2dCdXR0b25zRGlyZWN0aXZlLFxyXG4gICAgRGlhbG9nVGl0bGVEaXJlY3RpdmUsXHJcbiAgICBTZWxlY3RUb2dnbGVDb21wb25lbnQsXHJcbiAgICBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgUmljaFRleHRFZGl0b3JDb21wb25lbnQsXHJcbiAgICBTaW1wbGVEaWFsb2dDb21wb25lbnQsXHJcbiAgICBUaXRsZUlucHV0Q29tcG9uZW50LFxyXG4gICAgU2VudGVuY2VDYXNlUGlwZSxcclxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgRHJvcGRvd25NZW51Q29tcG9uZW50LFxyXG4gICAgU29ydFBpcGUsXHJcbiAgICBEcm9wZG93blRyaWdnZXJEaXJlY3RpdmUsXHJcbiAgICBEcm9wZG93bkl0ZW1EaXJlY3RpdmUsXHJcbiAgICBPcmRlclN0YXRlTGFiZWxDb21wb25lbnQsXHJcbiAgICBGb3JtYXR0ZWRBZGRyZXNzQ29tcG9uZW50LFxyXG4gICAgTGFiZWxlZERhdGFDb21wb25lbnQsXHJcbiAgICBTdHJpbmdUb0NvbG9yUGlwZSxcclxuICAgIE9iamVjdFRyZWVDb21wb25lbnQsXHJcbiAgICBJZlBlcm1pc3Npb25zRGlyZWN0aXZlLFxyXG4gICAgSWZNdWx0aWNoYW5uZWxEaXJlY3RpdmUsXHJcbiAgICBIYXNQZXJtaXNzaW9uUGlwZSxcclxuICAgIEFjdGlvbkJhckl0ZW1zQ29tcG9uZW50LFxyXG4gICAgRGlzYWJsZWREaXJlY3RpdmUsXHJcbiAgICBBc3NldEZpbGVJbnB1dENvbXBvbmVudCxcclxuICAgIEFzc2V0R2FsbGVyeUNvbXBvbmVudCxcclxuICAgIEFzc2V0UGlja2VyRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgRW50aXR5SW5mb0NvbXBvbmVudCxcclxuICAgIERhdGV0aW1lUGlja2VyQ29tcG9uZW50LFxyXG4gICAgQ2hhbm5lbEJhZGdlQ29tcG9uZW50LFxyXG4gICAgQ2hhbm5lbEFzc2lnbm1lbnRDb250cm9sQ29tcG9uZW50LFxyXG4gICAgQ2hhbm5lbExhYmVsUGlwZSxcclxuICAgIElmRGVmYXVsdENoYW5uZWxBY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBFeHRlbnNpb25Ib3N0Q29tcG9uZW50LFxyXG4gICAgQ3VzdG9tRmllbGRMYWJlbFBpcGUsXHJcbiAgICBGb2NhbFBvaW50Q29udHJvbENvbXBvbmVudCxcclxuICAgIEFzc2V0UHJldmlld1BpcGUsXHJcbiAgICBMaW5rRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgRXh0ZXJuYWxJbWFnZURpYWxvZ0NvbXBvbmVudCxcclxuICAgIFRpbWVBZ29QaXBlLFxyXG4gICAgRHVyYXRpb25QaXBlLFxyXG4gICAgRW1wdHlQbGFjZWhvbGRlckNvbXBvbmVudCxcclxuICAgIFRpbWVsaW5lRW50cnlDb21wb25lbnQsXHJcbiAgICBIaXN0b3J5RW50cnlEZXRhaWxDb21wb25lbnQsXHJcbiAgICBFZGl0Tm90ZURpYWxvZ0NvbXBvbmVudCxcclxuICAgIFByb2R1Y3RTZWxlY3RvckZvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIFN0YXRlSTE4blRva2VuUGlwZSxcclxuICAgIFByb2R1Y3RWYXJpYW50U2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBIZWxwVG9vbHRpcENvbXBvbmVudCxcclxuICAgIEN1c3RvbWVyR3JvdXBGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBBZGRyZXNzRm9ybUNvbXBvbmVudCxcclxuICAgIExvY2FsZURhdGVQaXBlLFxyXG4gICAgTG9jYWxlQ3VycmVuY3lQaXBlLFxyXG4gICAgTG9jYWxlTGFuZ3VhZ2VOYW1lUGlwZSxcclxuICAgIExvY2FsZVJlZ2lvbk5hbWVQaXBlLFxyXG4gICAgVGFnU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBNYW5hZ2VUYWdzRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgUmVsYXRpb25TZWxlY3RvckRpYWxvZ0NvbXBvbmVudCxcclxuICAgIFJlbGF0aW9uQ2FyZENvbXBvbmVudCxcclxuICAgIFN0YXR1c0JhZGdlQ29tcG9uZW50LFxyXG4gICAgVGFiYmVkQ3VzdG9tRmllbGRzQ29tcG9uZW50LFxyXG4gICAgVWlFeHRlbnNpb25Qb2ludENvbXBvbmVudCxcclxuICAgIEN1c3RvbURldGFpbENvbXBvbmVudEhvc3RDb21wb25lbnQsXHJcbiAgICBBc3NldFByZXZpZXdMaW5rc0NvbXBvbmVudCxcclxuICAgIFByb2R1Y3RNdWx0aVNlbGVjdG9yRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgUHJvZHVjdFNlYXJjaElucHV0Q29tcG9uZW50LFxyXG4gICAgQ29udGV4dE1lbnVDb21wb25lbnQsXHJcbiAgICBSYXdIdG1sRGlhbG9nQ29tcG9uZW50LFxyXG5dO1xyXG5cclxuY29uc3QgRFlOQU1JQ19GT1JNX0lOUFVUUyA9IFtcclxuICAgIFRleHRGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBQYXNzd29yZEZvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIE51bWJlckZvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIERhdGVGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBDdXJyZW5jeUZvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIEJvb2xlYW5Gb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBTZWxlY3RGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBGYWNldFZhbHVlRm9ybUlucHV0Q29tcG9uZW50LFxyXG4gICAgRHluYW1pY0Zvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIFJlbGF0aW9uRm9ybUlucHV0Q29tcG9uZW50LFxyXG4gICAgUmVsYXRpb25Bc3NldElucHV0Q29tcG9uZW50LFxyXG4gICAgUmVsYXRpb25Qcm9kdWN0SW5wdXRDb21wb25lbnQsXHJcbiAgICBSZWxhdGlvblByb2R1Y3RWYXJpYW50SW5wdXRDb21wb25lbnQsXHJcbiAgICBSZWxhdGlvbkN1c3RvbWVySW5wdXRDb21wb25lbnQsXHJcbiAgICBSZWxhdGlvbkNhcmRQcmV2aWV3RGlyZWN0aXZlLFxyXG4gICAgUmVsYXRpb25DYXJkRGV0YWlsRGlyZWN0aXZlLFxyXG4gICAgUmVsYXRpb25TZWxlY3RvckRpYWxvZ0NvbXBvbmVudCxcclxuICAgIFJlbGF0aW9uR2VuZXJpY0lucHV0Q29tcG9uZW50LFxyXG4gICAgVGV4dGFyZWFGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBSaWNoVGV4dEZvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIEpzb25FZGl0b3JGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBIdG1sRWRpdG9yRm9ybUlucHV0Q29tcG9uZW50LFxyXG4gICAgUHJvZHVjdE11bHRpU2VsZWN0b3JGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBDb21iaW5hdGlvbk1vZGVGb3JtSW5wdXRDb21wb25lbnQsXHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW0lNUE9SVFNdLFxyXG4gICAgZXhwb3J0czogWy4uLklNUE9SVFMsIC4uLkRFQ0xBUkFUSU9OUywgLi4uRFlOQU1JQ19GT1JNX0lOUFVUU10sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5ERUNMQVJBVElPTlMsIC4uLkRZTkFNSUNfRk9STV9JTlBVVFNdLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBzaGFyZWQsIHNpbmNlIGxhenktbG9hZGVkXHJcbiAgICAgICAgLy8gbW9kdWxlcyBoYXZlIHRoZWlyIG93biBlbnRyeUNvbXBvbmVudHMgd2hpY2hcclxuICAgICAgICAvLyBhcmUgdW5rbm93biB0byB0aGUgQ29yZU1vZHVsZSBpbnN0YW5jZSBvZiBNb2RhbFNlcnZpY2UuXHJcbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE0MzI0I2lzc3VlY29tbWVudC0zMDU2NTA3NjNcclxuICAgICAgICBNb2RhbFNlcnZpY2UsXHJcbiAgICAgICAgQ2FuRGVhY3RpdmF0ZURldGFpbEd1YXJkLFxyXG4gICAgXSxcclxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNoYXJlZE1vZHVsZSB7fVxyXG4iXX0=
556
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL3NoYXJlZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxZQUFZLENBQUM7QUFDcEIsT0FBTyw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sdURBQXVELENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixHQUMxQixNQUFNLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFN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MkI7UUFDM0IsNkJBQTZCO1FBQzdCLG9DQUFvQztRQUNwQyw4QkFBOEI7UUFDOUIsNEJBQTRCO1FBQzVCLDJCQUEyQjtRQUMzQiwrQkFBK0I7UUFDL0IsNkJBQTZCO1FBQzdCLDBCQUEwQjtRQUMxQiwwQkFBMEI7UUFDMUIsNEJBQTRCO1FBQzVCLDRCQUE0QjtRQUM1QixzQ0FBc0M7UUFDdEMsaUNBQWlDOzBHQWlCeEIsWUFBWSxhQVZWO1FBQ1AsNkNBQTZDO1FBQzdDLCtDQUErQztRQUMvQywwREFBMEQ7UUFDMUQsNkVBQTZFO1FBQzdFLFlBQVk7UUFDWix3QkFBd0I7S0FDM0IsWUFWUSxDQUFDLE9BQU8sQ0FBQyxFQTFJbEIsYUFBYTtRQUNiLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLFlBQVk7UUFDWixjQUFjO1FBQ2QsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixhQUFhO1FBQ2IsY0FBYzsyRkE4SUwsWUFBWTtrQkFkeEIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsbUJBQW1CLENBQUM7b0JBQzlELFlBQVksRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcsbUJBQW1CLENBQUM7b0JBQ3ZELFNBQVMsRUFBRTt3QkFDUCw2Q0FBNkM7d0JBQzdDLCtDQUErQzt3QkFDL0MsMERBQTBEO3dCQUMxRCw2RUFBNkU7d0JBQzdFLFlBQVk7d0JBQ1osd0JBQXdCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2xhcml0eU1vZHVsZSB9IGZyb20gJ0BjbHIvYW5ndWxhcic7XHJcbmltcG9ydCAnQGNsci9pY29ucyc7XHJcbmltcG9ydCAnQGNsci9pY29ucy9zaGFwZXMvYWxsLXNoYXBlcyc7XHJcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0ICdAd2ViY29tcG9uZW50cy9jdXN0b20tZWxlbWVudHMvY3VzdG9tLWVsZW1lbnRzLm1pbi5qcyc7XHJcbmltcG9ydCB7IE5neFBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICduZ3gtcGFnaW5hdGlvbic7XHJcblxyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9wcm92aWRlcnMvbW9kYWwvbW9kYWwuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBBY3Rpb25CYXJJdGVtc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hY3Rpb24tYmFyLWl0ZW1zL2FjdGlvbi1iYXItaXRlbXMuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICAgIEFjdGlvbkJhckNvbXBvbmVudCxcclxuICAgIEFjdGlvbkJhckxlZnRDb21wb25lbnQsXHJcbiAgICBBY3Rpb25CYXJSaWdodENvbXBvbmVudCxcclxufSBmcm9tICcuL2NvbXBvbmVudHMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFkZHJlc3NGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FkZHJlc3MtZm9ybS9hZGRyZXNzLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWZmaXhlZElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FmZml4ZWQtaW5wdXQvYWZmaXhlZC1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQZXJjZW50YWdlU3VmZml4SW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWZmaXhlZC1pbnB1dC9wZXJjZW50YWdlLXN1ZmZpeC1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3NldEZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hc3NldC1maWxlLWlucHV0L2Fzc2V0LWZpbGUtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzZXRHYWxsZXJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Fzc2V0LWdhbGxlcnkvYXNzZXQtZ2FsbGVyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3NldFBpY2tlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hc3NldC1waWNrZXItZGlhbG9nL2Fzc2V0LXBpY2tlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzZXRQcmV2aWV3RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Fzc2V0LXByZXZpZXctZGlhbG9nL2Fzc2V0LXByZXZpZXctZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzc2V0UHJldmlld0xpbmtzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Fzc2V0LXByZXZpZXctbGlua3MvYXNzZXQtcHJldmlldy1saW5rcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3NldFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXNzZXQtcHJldmlldy9hc3NldC1wcmV2aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzc2V0U2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXNzZXQtc2VhcmNoLWlucHV0L2Fzc2V0LXNlYXJjaC1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdWxrQWN0aW9uTWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9idWxrLWFjdGlvbi1tZW51L2J1bGstYWN0aW9uLW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hhbm5lbEFzc2lnbm1lbnRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoYW5uZWwtYXNzaWdubWVudC1jb250cm9sL2NoYW5uZWwtYXNzaWdubWVudC1jb250cm9sLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoYW5uZWxCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGFubmVsLWJhZGdlL2NoYW5uZWwtYmFkZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hpcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGlwL2NoaXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZmlndXJhYmxlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLWlucHV0L2NvbmZpZ3VyYWJsZS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXJyZW5jeUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1cnJlbmN5LWlucHV0L2N1cnJlbmN5LWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbURldGFpbENvbXBvbmVudEhvc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLWRldGFpbC1jb21wb25lbnQtaG9zdC9jdXN0b20tZGV0YWlsLWNvbXBvbmVudC1ob3N0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbUZpZWxkQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tZmllbGQtY29udHJvbC9jdXN0b20tZmllbGQtY29udHJvbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21lckxhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbWVyLWxhYmVsL2N1c3RvbWVyLWxhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRhLXRhYmxlL2RhdGEtdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24taXRlbS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEcm9wZG93bk1lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24tbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93blRyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24tdHJpZ2dlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFZGl0Tm90ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lZGl0LW5vdGUtZGlhbG9nL2VkaXQtbm90ZS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW1wdHlQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lbXB0eS1wbGFjZWhvbGRlci9lbXB0eS1wbGFjZWhvbGRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnRpdHlJbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VudGl0eS1pbmZvL2VudGl0eS1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4dGVuc2lvbkhvc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZXh0ZW5zaW9uLWhvc3QvZXh0ZW5zaW9uLWhvc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmFjZXRWYWx1ZUNoaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmFjZXQtdmFsdWUtY2hpcC9mYWNldC12YWx1ZS1jaGlwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZhY2V0VmFsdWVTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mYWNldC12YWx1ZS1zZWxlY3Rvci9mYWNldC12YWx1ZS1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb2NhbFBvaW50Q29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mb2NhbC1wb2ludC1jb250cm9sL2ZvY2FsLXBvaW50LWNvbnRyb2wuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUZpZWxkQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udHJvbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0taXRlbS9mb3JtLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybWF0dGVkQWRkcmVzc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtYXR0ZWQtYWRkcmVzcy9mb3JtYXR0ZWQtYWRkcmVzcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIZWxwVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oZWxwLXRvb2x0aXAvaGVscC10b29sdGlwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhpc3RvcnlFbnRyeURldGFpbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oaXN0b3J5LWVudHJ5LWRldGFpbC9oaXN0b3J5LWVudHJ5LWRldGFpbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJdGVtc1BlclBhZ2VDb250cm9sc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pdGVtcy1wZXItcGFnZS1jb250cm9scy9pdGVtcy1wZXItcGFnZS1jb250cm9scy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYWJlbGVkRGF0YUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sYWJlbGVkLWRhdGEvbGFiZWxlZC1kYXRhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExhbmd1YWdlU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWFuYWdlVGFnc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYW5hZ2UtdGFncy1kaWFsb2cvbWFuYWdlLXRhZ3MtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0J1dHRvbnNEaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwtZGlhbG9nL2RpYWxvZy1idXR0b25zLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudE91dGxldENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbC1kaWFsb2cvZGlhbG9nLWNvbXBvbmVudC1vdXRsZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nVGl0bGVEaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwtZGlhbG9nL2RpYWxvZy10aXRsZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNb2RhbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbC1kaWFsb2cvbW9kYWwtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9iamVjdFRyZWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvb2JqZWN0LXRyZWUvb2JqZWN0LXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3JkZXJTdGF0ZUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL29yZGVyLXN0YXRlLWxhYmVsL29yZGVyLXN0YXRlLWxhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Db250cm9sc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYWdpbmF0aW9uLWNvbnRyb2xzL3BhZ2luYXRpb24tY29udHJvbHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvZHVjdE11bHRpU2VsZWN0b3JEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZHVjdC1tdWx0aS1zZWxlY3Rvci1kaWFsb2cvcHJvZHVjdC1tdWx0aS1zZWxlY3Rvci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvZHVjdFNlYXJjaElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Byb2R1Y3Qtc2VhcmNoLWlucHV0L3Byb2R1Y3Qtc2VhcmNoLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFByb2R1Y3RWYXJpYW50U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZHVjdC12YXJpYW50LXNlbGVjdG9yL3Byb2R1Y3QtdmFyaWFudC1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFeHRlcm5hbEltYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nL2V4dGVybmFsLWltYWdlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaW5rRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvbGluay1kaWFsb2cvbGluay1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29udGV4dE1lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9wcm9zZW1pcnJvci9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJhd0h0bWxEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9yYXctaHRtbC1kaWFsb2cvcmF3LWh0bWwtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJpY2hUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcmljaC10ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0LXRvZ2dsZS9zZWxlY3QtdG9nZ2xlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpbXBsZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zaW1wbGUtZGlhbG9nL3NpbXBsZS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RhdHVzQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc3RhdHVzLWJhZGdlL3N0YXR1cy1iYWRnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJiZWRDdXN0b21GaWVsZHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFiYmVkLWN1c3RvbS1maWVsZHMvdGFiYmVkLWN1c3RvbS1maWVsZHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVSb3dBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtcm93LWFjdGlvbi90YWJsZS1yb3ctYWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhZ1NlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhZy1zZWxlY3Rvci90YWctc2VsZWN0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGltZWxpbmVFbnRyeUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90aW1lbGluZS1lbnRyeS90aW1lbGluZS1lbnRyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaXRsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RpdGxlLWlucHV0L3RpdGxlLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVpRXh0ZW5zaW9uUG9pbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdWktZXh0ZW5zaW9uLXBvaW50L3VpLWV4dGVuc2lvbi1wb2ludC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaXNhYmxlZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9kaXNhYmxlZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJZkRlZmF1bHRDaGFubmVsQWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2lmLWRlZmF1bHQtY2hhbm5lbC1hY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSWZNdWx0aWNoYW5uZWxEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvaWYtbXVsdGljaGFubmVsLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElmUGVybWlzc2lvbnNEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvaWYtcGVybWlzc2lvbnMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm9vbGVhbkZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9ib29sZWFuLWZvcm0taW5wdXQvYm9vbGVhbi1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvY29kZS1lZGl0b3ItZm9ybS1pbnB1dC9odG1sLWVkaXRvci1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEpzb25FZGl0b3JGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvY29kZS1lZGl0b3ItZm9ybS1pbnB1dC9qc29uLWVkaXRvci1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbWJpbmF0aW9uTW9kZUZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9jb21iaW5hdGlvbi1tb2RlLWZvcm0taW5wdXQvY29tYmluYXRpb24tbW9kZS1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1cnJlbmN5Rm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL2N1cnJlbmN5LWZvcm0taW5wdXQvY3VycmVuY3ktZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21lckdyb3VwRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL2N1c3RvbWVyLWdyb3VwLWZvcm0taW5wdXQvY3VzdG9tZXItZ3JvdXAtZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXRlRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL2RhdGUtZm9ybS1pbnB1dC9kYXRlLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9keW5hbWljLWZvcm0taW5wdXQvZHluYW1pYy1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZhY2V0VmFsdWVGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvZmFjZXQtdmFsdWUtZm9ybS1pbnB1dC9mYWNldC12YWx1ZS1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE51bWJlckZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9udW1iZXItZm9ybS1pbnB1dC9udW1iZXItZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYXNzd29yZEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9wYXNzd29yZC1mb3JtLWlucHV0L3Bhc3N3b3JkLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvZHVjdE11bHRpU2VsZWN0b3JGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvcHJvZHVjdC1tdWx0aS1zZWxlY3Rvci1mb3JtLWlucHV0L3Byb2R1Y3QtbXVsdGktc2VsZWN0b3ItZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9kdWN0U2VsZWN0b3JGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvcHJvZHVjdC1zZWxlY3Rvci1mb3JtLWlucHV0L3Byb2R1Y3Qtc2VsZWN0b3ItZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZWxhdGlvbkFzc2V0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvcmVsYXRpb24tZm9ybS1pbnB1dC9hc3NldC9yZWxhdGlvbi1hc3NldC1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZWxhdGlvbkN1c3RvbWVySW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvcmVsYXRpb24tZm9ybS1pbnB1dC9jdXN0b21lci9yZWxhdGlvbi1jdXN0b21lci1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZWxhdGlvbkdlbmVyaWNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9yZWxhdGlvbi1mb3JtLWlucHV0L2dlbmVyaWMvcmVsYXRpb24tZ2VuZXJpYy1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZWxhdGlvblByb2R1Y3RWYXJpYW50SW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvcmVsYXRpb24tZm9ybS1pbnB1dC9wcm9kdWN0LXZhcmlhbnQvcmVsYXRpb24tcHJvZHVjdC12YXJpYW50LWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlbGF0aW9uUHJvZHVjdElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL3JlbGF0aW9uLWZvcm0taW5wdXQvcHJvZHVjdC9yZWxhdGlvbi1wcm9kdWN0LWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgICBSZWxhdGlvbkNhcmRDb21wb25lbnQsXHJcbiAgICBSZWxhdGlvbkNhcmREZXRhaWxEaXJlY3RpdmUsXHJcbiAgICBSZWxhdGlvbkNhcmRQcmV2aWV3RGlyZWN0aXZlLFxyXG59IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9yZWxhdGlvbi1mb3JtLWlucHV0L3JlbGF0aW9uLWNhcmQvcmVsYXRpb24tY2FyZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZWxhdGlvbkZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9yZWxhdGlvbi1mb3JtLWlucHV0L3JlbGF0aW9uLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVsYXRpb25TZWxlY3RvckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy9yZWxhdGlvbi1mb3JtLWlucHV0L3JlbGF0aW9uLXNlbGVjdG9yLWRpYWxvZy9yZWxhdGlvbi1zZWxlY3Rvci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmljaFRleHRGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvcmljaC10ZXh0LWZvcm0taW5wdXQvcmljaC10ZXh0LWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VsZWN0Rm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm0taW5wdXRzL3NlbGVjdC1mb3JtLWlucHV0L3NlbGVjdC1mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1pbnB1dHMvdGV4dC1mb3JtLWlucHV0L3RleHQtZm9ybS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0YXJlYUZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWlucHV0cy90ZXh0YXJlYS1mb3JtLWlucHV0L3RleHRhcmVhLWZvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzZXRQcmV2aWV3UGlwZSB9IGZyb20gJy4vcGlwZXMvYXNzZXQtcHJldmlldy5waXBlJztcclxuaW1wb3J0IHsgQ2hhbm5lbExhYmVsUGlwZSB9IGZyb20gJy4vcGlwZXMvY2hhbm5lbC1sYWJlbC5waXBlJztcclxuaW1wb3J0IHsgQ3VzdG9tRmllbGRMYWJlbFBpcGUgfSBmcm9tICcuL3BpcGVzL2N1c3RvbS1maWVsZC1sYWJlbC5waXBlJztcclxuaW1wb3J0IHsgRHVyYXRpb25QaXBlIH0gZnJvbSAnLi9waXBlcy9kdXJhdGlvbi5waXBlJztcclxuaW1wb3J0IHsgRmlsZVNpemVQaXBlIH0gZnJvbSAnLi9waXBlcy9maWxlLXNpemUucGlwZSc7XHJcbmltcG9ydCB7IEhhc1Blcm1pc3Npb25QaXBlIH0gZnJvbSAnLi9waXBlcy9oYXMtcGVybWlzc2lvbi5waXBlJztcclxuaW1wb3J0IHsgTG9jYWxlQ3VycmVuY3lOYW1lUGlwZSB9IGZyb20gJy4vcGlwZXMvbG9jYWxlLWN1cnJlbmN5LW5hbWUucGlwZSc7XHJcbmltcG9ydCB7IExvY2FsZUN1cnJlbmN5UGlwZSB9IGZyb20gJy4vcGlwZXMvbG9jYWxlLWN1cnJlbmN5LnBpcGUnO1xyXG5pbXBvcnQgeyBMb2NhbGVEYXRlUGlwZSB9IGZyb20gJy4vcGlwZXMvbG9jYWxlLWRhdGUucGlwZSc7XHJcbmltcG9ydCB7IExvY2FsZUxhbmd1YWdlTmFtZVBpcGUgfSBmcm9tICcuL3BpcGVzL2xvY2FsZS1sYW5ndWFnZS1uYW1lLnBpcGUnO1xyXG5pbXBvcnQgeyBMb2NhbGVSZWdpb25OYW1lUGlwZSB9IGZyb20gJy4vcGlwZXMvbG9jYWxlLXJlZ2lvbi1uYW1lLnBpcGUnO1xyXG5pbXBvcnQgeyBTZW50ZW5jZUNhc2VQaXBlIH0gZnJvbSAnLi9waXBlcy9zZW50ZW5jZS1jYXNlLnBpcGUnO1xyXG5pbXBvcnQgeyBTb3J0UGlwZSB9IGZyb20gJy4vcGlwZXMvc29ydC5waXBlJztcclxuaW1wb3J0IHsgU3RhdGVJMThuVG9rZW5QaXBlIH0gZnJvbSAnLi9waXBlcy9zdGF0ZS1pMThuLXRva2VuLnBpcGUnO1xyXG5pbXBvcnQgeyBTdHJpbmdUb0NvbG9yUGlwZSB9IGZyb20gJy4vcGlwZXMvc3RyaW5nLXRvLWNvbG9yLnBpcGUnO1xyXG5pbXBvcnQgeyBUaW1lQWdvUGlwZSB9IGZyb20gJy4vcGlwZXMvdGltZS1hZ28ucGlwZSc7XHJcbmltcG9ydCB7IENhbkRlYWN0aXZhdGVEZXRhaWxHdWFyZCB9IGZyb20gJy4vcHJvdmlkZXJzL3JvdXRpbmcvY2FuLWRlYWN0aXZhdGUtZGV0YWlsLWd1YXJkJztcclxuXHJcbmNvbnN0IElNUE9SVFMgPSBbXHJcbiAgICBDbGFyaXR5TW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgTmdTZWxlY3RNb2R1bGUsXHJcbiAgICBOZ3hQYWdpbmF0aW9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgT3ZlcmxheU1vZHVsZSxcclxuICAgIERyYWdEcm9wTW9kdWxlLFxyXG5dO1xyXG5cclxuY29uc3QgREVDTEFSQVRJT05TID0gW1xyXG4gICAgQWN0aW9uQmFyQ29tcG9uZW50LFxyXG4gICAgQWN0aW9uQmFyTGVmdENvbXBvbmVudCxcclxuICAgIEFjdGlvbkJhclJpZ2h0Q29tcG9uZW50LFxyXG4gICAgQXNzZXRQcmV2aWV3Q29tcG9uZW50LFxyXG4gICAgQXNzZXRQcmV2aWV3RGlhbG9nQ29tcG9uZW50LFxyXG4gICAgQXNzZXRTZWFyY2hJbnB1dENvbXBvbmVudCxcclxuICAgIENvbmZpZ3VyYWJsZUlucHV0Q29tcG9uZW50LFxyXG4gICAgQWZmaXhlZElucHV0Q29tcG9uZW50LFxyXG4gICAgQ2hpcENvbXBvbmVudCxcclxuICAgIEN1cnJlbmN5SW5wdXRDb21wb25lbnQsXHJcbiAgICBMb2NhbGVDdXJyZW5jeU5hbWVQaXBlLFxyXG4gICAgQ3VzdG9tZXJMYWJlbENvbXBvbmVudCxcclxuICAgIEN1c3RvbUZpZWxkQ29udHJvbENvbXBvbmVudCxcclxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcclxuICAgIERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcclxuICAgIEZhY2V0VmFsdWVTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIEl0ZW1zUGVyUGFnZUNvbnRyb2xzQ29tcG9uZW50LFxyXG4gICAgUGFnaW5hdGlvbkNvbnRyb2xzQ29tcG9uZW50LFxyXG4gICAgVGFibGVSb3dBY3Rpb25Db21wb25lbnQsXHJcbiAgICBGYWNldFZhbHVlQ2hpcENvbXBvbmVudCxcclxuICAgIEZpbGVTaXplUGlwZSxcclxuICAgIEZvcm1GaWVsZENvbXBvbmVudCxcclxuICAgIEZvcm1GaWVsZENvbnRyb2xEaXJlY3RpdmUsXHJcbiAgICBGb3JtSXRlbUNvbXBvbmVudCxcclxuICAgIE1vZGFsRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgUGVyY2VudGFnZVN1ZmZpeElucHV0Q29tcG9uZW50LFxyXG4gICAgRGlhbG9nQ29tcG9uZW50T3V0bGV0Q29tcG9uZW50LFxyXG4gICAgRGlhbG9nQnV0dG9uc0RpcmVjdGl2ZSxcclxuICAgIERpYWxvZ1RpdGxlRGlyZWN0aXZlLFxyXG4gICAgU2VsZWN0VG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgTGFuZ3VhZ2VTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIFJpY2hUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgU2ltcGxlRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgVGl0bGVJbnB1dENvbXBvbmVudCxcclxuICAgIFNlbnRlbmNlQ2FzZVBpcGUsXHJcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIERyb3Bkb3duTWVudUNvbXBvbmVudCxcclxuICAgIFNvcnRQaXBlLFxyXG4gICAgRHJvcGRvd25UcmlnZ2VyRGlyZWN0aXZlLFxyXG4gICAgRHJvcGRvd25JdGVtRGlyZWN0aXZlLFxyXG4gICAgT3JkZXJTdGF0ZUxhYmVsQ29tcG9uZW50LFxyXG4gICAgRm9ybWF0dGVkQWRkcmVzc0NvbXBvbmVudCxcclxuICAgIExhYmVsZWREYXRhQ29tcG9uZW50LFxyXG4gICAgU3RyaW5nVG9Db2xvclBpcGUsXHJcbiAgICBPYmplY3RUcmVlQ29tcG9uZW50LFxyXG4gICAgSWZQZXJtaXNzaW9uc0RpcmVjdGl2ZSxcclxuICAgIElmTXVsdGljaGFubmVsRGlyZWN0aXZlLFxyXG4gICAgSGFzUGVybWlzc2lvblBpcGUsXHJcbiAgICBBY3Rpb25CYXJJdGVtc0NvbXBvbmVudCxcclxuICAgIERpc2FibGVkRGlyZWN0aXZlLFxyXG4gICAgQXNzZXRGaWxlSW5wdXRDb21wb25lbnQsXHJcbiAgICBBc3NldEdhbGxlcnlDb21wb25lbnQsXHJcbiAgICBBc3NldFBpY2tlckRpYWxvZ0NvbXBvbmVudCxcclxuICAgIEVudGl0eUluZm9Db21wb25lbnQsXHJcbiAgICBEYXRldGltZVBpY2tlckNvbXBvbmVudCxcclxuICAgIENoYW5uZWxCYWRnZUNvbXBvbmVudCxcclxuICAgIENoYW5uZWxBc3NpZ25tZW50Q29udHJvbENvbXBvbmVudCxcclxuICAgIENoYW5uZWxMYWJlbFBpcGUsXHJcbiAgICBJZkRlZmF1bHRDaGFubmVsQWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgRXh0ZW5zaW9uSG9zdENvbXBvbmVudCxcclxuICAgIEN1c3RvbUZpZWxkTGFiZWxQaXBlLFxyXG4gICAgRm9jYWxQb2ludENvbnRyb2xDb21wb25lbnQsXHJcbiAgICBBc3NldFByZXZpZXdQaXBlLFxyXG4gICAgTGlua0RpYWxvZ0NvbXBvbmVudCxcclxuICAgIEV4dGVybmFsSW1hZ2VEaWFsb2dDb21wb25lbnQsXHJcbiAgICBUaW1lQWdvUGlwZSxcclxuICAgIER1cmF0aW9uUGlwZSxcclxuICAgIEVtcHR5UGxhY2Vob2xkZXJDb21wb25lbnQsXHJcbiAgICBUaW1lbGluZUVudHJ5Q29tcG9uZW50LFxyXG4gICAgSGlzdG9yeUVudHJ5RGV0YWlsQ29tcG9uZW50LFxyXG4gICAgRWRpdE5vdGVEaWFsb2dDb21wb25lbnQsXHJcbiAgICBQcm9kdWN0U2VsZWN0b3JGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBTdGF0ZUkxOG5Ub2tlblBpcGUsXHJcbiAgICBQcm9kdWN0VmFyaWFudFNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgSGVscFRvb2x0aXBDb21wb25lbnQsXHJcbiAgICBDdXN0b21lckdyb3VwRm9ybUlucHV0Q29tcG9uZW50LFxyXG4gICAgQWRkcmVzc0Zvcm1Db21wb25lbnQsXHJcbiAgICBMb2NhbGVEYXRlUGlwZSxcclxuICAgIExvY2FsZUN1cnJlbmN5UGlwZSxcclxuICAgIExvY2FsZUxhbmd1YWdlTmFtZVBpcGUsXHJcbiAgICBMb2NhbGVSZWdpb25OYW1lUGlwZSxcclxuICAgIFRhZ1NlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgTWFuYWdlVGFnc0RpYWxvZ0NvbXBvbmVudCxcclxuICAgIFJlbGF0aW9uU2VsZWN0b3JEaWFsb2dDb21wb25lbnQsXHJcbiAgICBSZWxhdGlvbkNhcmRDb21wb25lbnQsXHJcbiAgICBTdGF0dXNCYWRnZUNvbXBvbmVudCxcclxuICAgIFRhYmJlZEN1c3RvbUZpZWxkc0NvbXBvbmVudCxcclxuICAgIFVpRXh0ZW5zaW9uUG9pbnRDb21wb25lbnQsXHJcbiAgICBDdXN0b21EZXRhaWxDb21wb25lbnRIb3N0Q29tcG9uZW50LFxyXG4gICAgQXNzZXRQcmV2aWV3TGlua3NDb21wb25lbnQsXHJcbiAgICBQcm9kdWN0TXVsdGlTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCxcclxuICAgIFByb2R1Y3RTZWFyY2hJbnB1dENvbXBvbmVudCxcclxuICAgIENvbnRleHRNZW51Q29tcG9uZW50LFxyXG4gICAgUmF3SHRtbERpYWxvZ0NvbXBvbmVudCxcclxuICAgIEJ1bGtBY3Rpb25NZW51Q29tcG9uZW50LFxyXG5dO1xyXG5cclxuY29uc3QgRFlOQU1JQ19GT1JNX0lOUFVUUyA9IFtcclxuICAgIFRleHRGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBQYXNzd29yZEZvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIE51bWJlckZvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIERhdGVGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBDdXJyZW5jeUZvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIEJvb2xlYW5Gb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBTZWxlY3RGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBGYWNldFZhbHVlRm9ybUlucHV0Q29tcG9uZW50LFxyXG4gICAgRHluYW1pY0Zvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIFJlbGF0aW9uRm9ybUlucHV0Q29tcG9uZW50LFxyXG4gICAgUmVsYXRpb25Bc3NldElucHV0Q29tcG9uZW50LFxyXG4gICAgUmVsYXRpb25Qcm9kdWN0SW5wdXRDb21wb25lbnQsXHJcbiAgICBSZWxhdGlvblByb2R1Y3RWYXJpYW50SW5wdXRDb21wb25lbnQsXHJcbiAgICBSZWxhdGlvbkN1c3RvbWVySW5wdXRDb21wb25lbnQsXHJcbiAgICBSZWxhdGlvbkNhcmRQcmV2aWV3RGlyZWN0aXZlLFxyXG4gICAgUmVsYXRpb25DYXJkRGV0YWlsRGlyZWN0aXZlLFxyXG4gICAgUmVsYXRpb25TZWxlY3RvckRpYWxvZ0NvbXBvbmVudCxcclxuICAgIFJlbGF0aW9uR2VuZXJpY0lucHV0Q29tcG9uZW50LFxyXG4gICAgVGV4dGFyZWFGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBSaWNoVGV4dEZvcm1JbnB1dENvbXBvbmVudCxcclxuICAgIEpzb25FZGl0b3JGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBIdG1sRWRpdG9yRm9ybUlucHV0Q29tcG9uZW50LFxyXG4gICAgUHJvZHVjdE11bHRpU2VsZWN0b3JGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgICBDb21iaW5hdGlvbk1vZGVGb3JtSW5wdXRDb21wb25lbnQsXHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW0lNUE9SVFNdLFxyXG4gICAgZXhwb3J0czogWy4uLklNUE9SVFMsIC4uLkRFQ0xBUkFUSU9OUywgLi4uRFlOQU1JQ19GT1JNX0lOUFVUU10sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5ERUNMQVJBVElPTlMsIC4uLkRZTkFNSUNfRk9STV9JTlBVVFNdLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBzaGFyZWQsIHNpbmNlIGxhenktbG9hZGVkXHJcbiAgICAgICAgLy8gbW9kdWxlcyBoYXZlIHRoZWlyIG93biBlbnRyeUNvbXBvbmVudHMgd2hpY2hcclxuICAgICAgICAvLyBhcmUgdW5rbm93biB0byB0aGUgQ29yZU1vZHVsZSBpbnN0YW5jZSBvZiBNb2RhbFNlcnZpY2UuXHJcbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE0MzI0I2lzc3VlY29tbWVudC0zMDU2NTA3NjNcclxuICAgICAgICBNb2RhbFNlcnZpY2UsXHJcbiAgICAgICAgQ2FuRGVhY3RpdmF0ZURldGFpbEd1YXJkLFxyXG4gICAgXSxcclxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNoYXJlZE1vZHVsZSB7fVxyXG4iXX0=
@@ -406,7 +406,7 @@ export class CustomerDetailComponent extends BaseDetailComponent {
406
406
  }
407
407
  }
408
408
  CustomerDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CustomerDetailComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.ServerConfigService }, { token: i0.ChangeDetectorRef }, { token: i3.FormBuilder }, { token: i2.DataService }, { token: i2.ModalService }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Component });
409
- CustomerDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CustomerDetailComponent, selector: "vdr-customer-detail", usesInheritance: true, ngImport: i0, template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-customer-status-label [customer]=\"entity$ | async\"></vdr-customer-status-label>\r\n <div\r\n class=\"last-login\"\r\n *ngIf=\"(entity$ | async)?.user?.lastLogin as lastLogin\"\r\n [title]=\"lastLogin | localeDate: 'medium'\"\r\n >\r\n {{ 'customer.last-login' | translate }}: {{ lastLogin | timeAgo }}\r\n </div>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\r\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\" [readOnlyToggle]=\"!(isNew$ | async)\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.first-name' | translate\"\r\n for=\"firstName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.last-name' | translate\"\r\n for=\"lastName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.email-address' | translate\"\r\n for=\"emailAddress\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.phone-number' | translate\"\r\n for=\"phoneNumber\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.password' | translate\" for=\"password\" *ngIf=\"isNew$ | async\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Customer\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get(['customer', 'customFields'])\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"customer-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n\r\n<div class=\"groups\" *ngIf=\"(entity$ | async)?.groups as groups\">\r\n <label class=\"clr-control-label\">{{ 'customer.customer-groups' | translate }}</label>\r\n <ng-container *ngIf=\"groups.length; else noGroups\">\r\n <vdr-chip\r\n *ngFor=\"let group of groups\"\r\n [colorFrom]=\"group.id\"\r\n icon=\"times\"\r\n (iconClick)=\"removeFromGroup(group)\"\r\n >{{ group.name }}</vdr-chip\r\n >\r\n </ng-container>\r\n <ng-template #noGroups>\r\n {{ 'customer.not-a-member-of-any-groups' | translate }}\r\n </ng-template>\r\n <div>\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"addToGroup()\"\r\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-4\">\r\n <h3>{{ 'customer.addresses' | translate }}</h3>\r\n <vdr-address-card\r\n *ngFor=\"let addressForm of getAddressFormControls()\"\r\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\r\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\r\n [addressForm]=\"addressForm\"\r\n [customFields]=\"addressCustomFields\"\r\n [editable]=\"(['UpdateCustomer'] | hasPermission) && !addressesToDeleteIds.has(addressForm.value.id)\"\r\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\r\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\r\n (deleteAddress)=\"toggleDeleteAddress($event)\"\r\n ></vdr-address-card>\r\n <button class=\"btn btn-secondary\" (click)=\"addAddress()\" *vdrIfPermissions=\"'UpdateCustomer'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-address' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"clr-col-md-8\">\r\n <h3>{{ 'customer.orders' | translate }}</h3>\r\n <vdr-data-table\r\n [items]=\"orders$ | async\"\r\n [itemsPerPage]=\"ordersPerPage\"\r\n [totalItems]=\"ordersCount$ | async\"\r\n [currentPage]=\"currentOrdersPage\"\r\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\r\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\r\n (pageChange)=\"setOrderCurrentPage($event)\"\r\n >\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.state' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.total' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.updated-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-order=\"item\">\r\n <td class=\"left\">{{ order.code }}</td>\r\n <td class=\"left\">{{ order.state }}</td>\r\n <td class=\"left\">{{ order.totalWithTax | localeCurrency: order.currencyCode }}</td>\r\n <td class=\"left\">{{ order.updatedAt | localeDate: 'medium' }}</td>\r\n <td class=\"right\">\r\n <vdr-table-row-action\r\n iconShape=\"shopping-cart\"\r\n [label]=\"'common.open' | translate\"\r\n [linkTo]=\"['/orders/', order.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n</div>\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-6\">\r\n <vdr-customer-history\r\n [customer]=\"entity$ | async\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNoteToCustomer($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-customer-history>\r\n </div>\r\n</div>\r\n", styles: [".last-login{margin-left:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"], components: [{ type: i2.ActionBarComponent, selector: "vdr-action-bar" }, { type: i2.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { type: i2.EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { type: i4.CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { type: i2.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { type: i2.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { type: i2.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { type: i2.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { type: i2.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { type: i2.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { type: i5.AddressCardComponent, selector: "vdr-address-card", inputs: ["addressForm", "customFields", "availableCountries", "isDefaultBilling", "isDefaultShipping", "editable"], outputs: ["setAsDefaultShipping", "setAsDefaultBilling", "deleteAddress"] }, { type: i2.DataTableComponent, selector: "vdr-data-table", inputs: ["items", "itemsPerPage", "currentPage", "totalItems", "allSelected", "isRowSelectedFn", "emptyStateLabel"], outputs: ["allSelectChange", "rowSelectChange", "pageChange", "itemsPerPageChange"] }, { type: i2.DataTableColumnComponent, selector: "vdr-dt-column", inputs: ["expand"] }, { type: i2.TableRowActionComponent, selector: "vdr-table-row-action", inputs: ["linkTo", "label", "iconShape", "disabled"] }, { type: i6.CustomerHistoryComponent, selector: "vdr-customer-history", inputs: ["customer", "history"], outputs: ["addNote", "updateNote", "deleteNote"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i8.ClrLabel, selector: "label", inputs: ["for"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i7.AsyncPipe, "localeDate": i2.LocaleDatePipe, "translate": i9.TranslatePipe, "timeAgo": i2.TimeAgoPipe, "hasPermission": i2.HasPermissionPipe, "localeCurrency": i2.LocaleCurrencyPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
409
+ CustomerDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CustomerDetailComponent, selector: "vdr-customer-detail", usesInheritance: true, ngImport: i0, template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-customer-status-label [customer]=\"entity$ | async\"></vdr-customer-status-label>\r\n <div\r\n class=\"last-login\"\r\n *ngIf=\"(entity$ | async)?.user?.lastLogin as lastLogin\"\r\n [title]=\"lastLogin | localeDate: 'medium'\"\r\n >\r\n {{ 'customer.last-login' | translate }}: {{ lastLogin | timeAgo }}\r\n </div>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\r\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\" [readOnlyToggle]=\"!(isNew$ | async)\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.first-name' | translate\"\r\n for=\"firstName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.last-name' | translate\"\r\n for=\"lastName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.email-address' | translate\"\r\n for=\"emailAddress\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.phone-number' | translate\"\r\n for=\"phoneNumber\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.password' | translate\" for=\"password\" *ngIf=\"isNew$ | async\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Customer\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get(['customer', 'customFields'])\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"customer-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n\r\n<div class=\"groups\" *ngIf=\"(entity$ | async)?.groups as groups\">\r\n <label class=\"clr-control-label\">{{ 'customer.customer-groups' | translate }}</label>\r\n <ng-container *ngIf=\"groups.length; else noGroups\">\r\n <vdr-chip\r\n *ngFor=\"let group of groups\"\r\n [colorFrom]=\"group.id\"\r\n icon=\"times\"\r\n (iconClick)=\"removeFromGroup(group)\"\r\n >{{ group.name }}</vdr-chip\r\n >\r\n </ng-container>\r\n <ng-template #noGroups>\r\n {{ 'customer.not-a-member-of-any-groups' | translate }}\r\n </ng-template>\r\n <div>\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"addToGroup()\"\r\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-4\">\r\n <h3>{{ 'customer.addresses' | translate }}</h3>\r\n <vdr-address-card\r\n *ngFor=\"let addressForm of getAddressFormControls()\"\r\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\r\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\r\n [addressForm]=\"addressForm\"\r\n [customFields]=\"addressCustomFields\"\r\n [editable]=\"(['UpdateCustomer'] | hasPermission) && !addressesToDeleteIds.has(addressForm.value.id)\"\r\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\r\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\r\n (deleteAddress)=\"toggleDeleteAddress($event)\"\r\n ></vdr-address-card>\r\n <button class=\"btn btn-secondary\" (click)=\"addAddress()\" *vdrIfPermissions=\"'UpdateCustomer'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-address' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"clr-col-md-8\">\r\n <h3>{{ 'customer.orders' | translate }}</h3>\r\n <vdr-data-table\r\n [items]=\"orders$ | async\"\r\n [itemsPerPage]=\"ordersPerPage\"\r\n [totalItems]=\"ordersCount$ | async\"\r\n [currentPage]=\"currentOrdersPage\"\r\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\r\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\r\n (pageChange)=\"setOrderCurrentPage($event)\"\r\n >\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.state' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.total' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.updated-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-order=\"item\">\r\n <td class=\"left\">{{ order.code }}</td>\r\n <td class=\"left\">{{ order.state }}</td>\r\n <td class=\"left\">{{ order.totalWithTax | localeCurrency: order.currencyCode }}</td>\r\n <td class=\"left\">{{ order.updatedAt | localeDate: 'medium' }}</td>\r\n <td class=\"right\">\r\n <vdr-table-row-action\r\n iconShape=\"shopping-cart\"\r\n [label]=\"'common.open' | translate\"\r\n [linkTo]=\"['/orders/', order.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n</div>\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-6\">\r\n <vdr-customer-history\r\n [customer]=\"entity$ | async\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNoteToCustomer($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-customer-history>\r\n </div>\r\n</div>\r\n", styles: [".last-login{margin-left:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"], components: [{ type: i2.ActionBarComponent, selector: "vdr-action-bar" }, { type: i2.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { type: i2.EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { type: i4.CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { type: i2.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { type: i2.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { type: i2.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { type: i2.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { type: i2.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { type: i2.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { type: i5.AddressCardComponent, selector: "vdr-address-card", inputs: ["addressForm", "customFields", "availableCountries", "isDefaultBilling", "isDefaultShipping", "editable"], outputs: ["setAsDefaultShipping", "setAsDefaultBilling", "deleteAddress"] }, { type: i2.DataTableComponent, selector: "vdr-data-table", inputs: ["items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "selectionManager", "allSelected", "isRowSelectedFn"], outputs: ["pageChange", "itemsPerPageChange", "allSelectChange", "rowSelectChange"] }, { type: i2.DataTableColumnComponent, selector: "vdr-dt-column", inputs: ["expand"] }, { type: i2.TableRowActionComponent, selector: "vdr-table-row-action", inputs: ["linkTo", "label", "iconShape", "disabled"] }, { type: i6.CustomerHistoryComponent, selector: "vdr-customer-history", inputs: ["customer", "history"], outputs: ["addNote", "updateNote", "deleteNote"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i8.ClrLabel, selector: "label", inputs: ["for"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i7.AsyncPipe, "localeDate": i2.LocaleDatePipe, "translate": i9.TranslatePipe, "timeAgo": i2.TimeAgoPipe, "hasPermission": i2.HasPermissionPipe, "localeCurrency": i2.LocaleCurrencyPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
410
410
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CustomerDetailComponent, decorators: [{
411
411
  type: Component,
412
412
  args: [{ selector: 'vdr-customer-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-customer-status-label [customer]=\"entity$ | async\"></vdr-customer-status-label>\r\n <div\r\n class=\"last-login\"\r\n *ngIf=\"(entity$ | async)?.user?.lastLogin as lastLogin\"\r\n [title]=\"lastLogin | localeDate: 'medium'\"\r\n >\r\n {{ 'customer.last-login' | translate }}: {{ lastLogin | timeAgo }}\r\n </div>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\r\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\" [readOnlyToggle]=\"!(isNew$ | async)\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.first-name' | translate\"\r\n for=\"firstName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.last-name' | translate\"\r\n for=\"lastName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.email-address' | translate\"\r\n for=\"emailAddress\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.phone-number' | translate\"\r\n for=\"phoneNumber\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.password' | translate\" for=\"password\" *ngIf=\"isNew$ | async\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Customer\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get(['customer', 'customFields'])\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"customer-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n\r\n<div class=\"groups\" *ngIf=\"(entity$ | async)?.groups as groups\">\r\n <label class=\"clr-control-label\">{{ 'customer.customer-groups' | translate }}</label>\r\n <ng-container *ngIf=\"groups.length; else noGroups\">\r\n <vdr-chip\r\n *ngFor=\"let group of groups\"\r\n [colorFrom]=\"group.id\"\r\n icon=\"times\"\r\n (iconClick)=\"removeFromGroup(group)\"\r\n >{{ group.name }}</vdr-chip\r\n >\r\n </ng-container>\r\n <ng-template #noGroups>\r\n {{ 'customer.not-a-member-of-any-groups' | translate }}\r\n </ng-template>\r\n <div>\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"addToGroup()\"\r\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-4\">\r\n <h3>{{ 'customer.addresses' | translate }}</h3>\r\n <vdr-address-card\r\n *ngFor=\"let addressForm of getAddressFormControls()\"\r\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\r\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\r\n [addressForm]=\"addressForm\"\r\n [customFields]=\"addressCustomFields\"\r\n [editable]=\"(['UpdateCustomer'] | hasPermission) && !addressesToDeleteIds.has(addressForm.value.id)\"\r\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\r\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\r\n (deleteAddress)=\"toggleDeleteAddress($event)\"\r\n ></vdr-address-card>\r\n <button class=\"btn btn-secondary\" (click)=\"addAddress()\" *vdrIfPermissions=\"'UpdateCustomer'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-address' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"clr-col-md-8\">\r\n <h3>{{ 'customer.orders' | translate }}</h3>\r\n <vdr-data-table\r\n [items]=\"orders$ | async\"\r\n [itemsPerPage]=\"ordersPerPage\"\r\n [totalItems]=\"ordersCount$ | async\"\r\n [currentPage]=\"currentOrdersPage\"\r\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\r\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\r\n (pageChange)=\"setOrderCurrentPage($event)\"\r\n >\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.state' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.total' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.updated-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-order=\"item\">\r\n <td class=\"left\">{{ order.code }}</td>\r\n <td class=\"left\">{{ order.state }}</td>\r\n <td class=\"left\">{{ order.totalWithTax | localeCurrency: order.currencyCode }}</td>\r\n <td class=\"left\">{{ order.updatedAt | localeDate: 'medium' }}</td>\r\n <td class=\"right\">\r\n <vdr-table-row-action\r\n iconShape=\"shopping-cart\"\r\n [label]=\"'common.open' | translate\"\r\n [linkTo]=\"['/orders/', order.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n</div>\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-6\">\r\n <vdr-customer-history\r\n [customer]=\"entity$ | async\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNoteToCustomer($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-customer-history>\r\n </div>\r\n</div>\r\n", styles: [".last-login{margin-left:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"] }]
@@ -188,9 +188,9 @@ export class CustomerGroupListComponent extends BaseListComponent {
188
188
  }
189
189
  }
190
190
  CustomerGroupListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CustomerGroupListComponent, deps: [{ token: i1.DataService }, { token: i1.NotificationService }, { token: i1.ModalService }, { token: i2.ActivatedRoute }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
191
- CustomerGroupListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CustomerGroupListComponent, selector: "vdr-customer-group-list", usesInheritance: true, ngImport: i0, template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"emailSearchTerm\"\r\n [formControl]=\"searchTerm\"\r\n [placeholder]=\"'customer.search-by-group-name' | translate\"\r\n class=\"search-input ml3\"\r\n />\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\r\n <button class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" (click)=\"create()\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer-group' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n<div class=\"group-wrapper\">\r\n <div class=\"group-list\">\r\n <vdr-data-table\r\n [class.expanded]=\"activeGroup$ | async\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n >\r\n <ng-template let-group=\"item\">\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-entity-info [entity]=\"group\"></vdr-entity-info>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-chip [colorFrom]=\"group.id\">{{ group.name }}</vdr-chip>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['./', { contents: group.id }]\"\r\n queryParamsHandling=\"preserve\"\r\n >\r\n <clr-icon shape=\"view-list\"></clr-icon>\r\n {{ 'customer.view-group-members' | translate }}\r\n </a>\r\n </td>\r\n <td class=\"right align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <button class=\"btn btn-link btn-sm\" (click)=\"update(group)\">\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n </td>\r\n <td [class.active]=\"group.id === activeGroupId\" class=\"align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"delete(group.id)\"\r\n [disabled]=\"!('DeleteCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n <ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder></vdr-empty-placeholder>\r\n </ng-template>\r\n <div class=\"group-members\" [class.expanded]=\"activeGroup$ | async\">\r\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\r\n <div class=\"flex\">\r\n <div class=\"header-title-row\">{{ activeGroup.name }} ({{ membersTotal$ | async }})</div>\r\n <div class=\"flex-spacer\"></div>\r\n <button type=\"button\" class=\"close-button\" (click)=\"closeMembers()\">\r\n <clr-icon shape=\"close\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"controls\">\r\n <vdr-dropdown>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary btn-sm\"\r\n vdrDropdownTrigger\r\n [disabled]=\"selectedCustomerIds.length === 0\"\r\n >\r\n {{ 'common.with-selected' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"removeFromGroup(activeGroup, selectedCustomerIds)\"\r\n vdrDropdownItem\r\n [disabled]=\"!('UpdateCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'customer.remove-from-group' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addToGroup(activeGroup)\">\r\n {{ 'customer.add-customers-to-group' | translate: { groupName: activeGroup.name } }}\r\n </button>\r\n </div>\r\n <vdr-customer-group-member-list\r\n [members]=\"members$ | async\"\r\n [route]=\"route\"\r\n [totalItems]=\"membersTotal$ | async\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n ></vdr-customer-group-member-list>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".group-wrapper{display:flex;height:calc(100% - 50px)}.group-wrapper .group-list{flex:1;overflow:auto;margin-top:0}.group-wrapper .group-list .active{background-color:var(--clr-global-selection-color)}.group-wrapper .group-list.expanded{width:calc(100% - 40vw)}vdr-data-table ::ng-deep table{margin-top:0}.group-members{height:100%;width:0;opacity:0;visibility:hidden;overflow:auto;transition:width .3s,opacity .2s .3s,visibility 0s .3s}.group-members.expanded{width:40vw;visibility:visible;opacity:1;padding-left:12px}.group-members .close-button{margin:0;background:none;border:none;cursor:pointer}.group-members ::ng-deep table.table{margin-top:0}.group-members ::ng-deep table.table th{top:0}.group-members .controls{display:flex;justify-content:space-between}vdr-empty-placeholder{flex:1}\n"], components: [{ type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { type: i1.DataTableComponent, selector: "vdr-data-table", inputs: ["items", "itemsPerPage", "currentPage", "totalItems", "allSelected", "isRowSelectedFn", "emptyStateLabel"], outputs: ["allSelectChange", "rowSelectChange", "pageChange", "itemsPerPageChange"] }, { type: i1.EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { type: i1.EmptyPlaceholderComponent, selector: "vdr-empty-placeholder", inputs: ["emptyStateLabel"] }, { type: i3.CustomerGroupMemberListComponent, selector: "vdr-customer-group-member-list", inputs: ["members", "totalItems", "route", "selectedMemberIds"], outputs: ["selectionChange", "fetchParamsChange"] }], directives: [{ type: i1.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { type: i5.ClrIconCustomTag, selector: "clr-icon" }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i7.TranslatePipe, "async": i6.AsyncPipe, "hasPermission": i1.HasPermissionPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
191
+ CustomerGroupListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CustomerGroupListComponent, selector: "vdr-customer-group-list", usesInheritance: true, ngImport: i0, template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"emailSearchTerm\"\r\n [formControl]=\"searchTerm\"\r\n [placeholder]=\"'customer.search-by-group-name' | translate\"\r\n class=\"search-input ml3\"\r\n />\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\r\n <button class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" (click)=\"create()\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer-group' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n<div class=\"group-wrapper\">\r\n <div class=\"group-list\">\r\n <vdr-data-table\r\n [class.expanded]=\"activeGroup$ | async\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n >\r\n <ng-template let-group=\"item\">\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-entity-info [entity]=\"group\"></vdr-entity-info>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-chip [colorFrom]=\"group.id\">{{ group.name }}</vdr-chip>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['./', { contents: group.id }]\"\r\n queryParamsHandling=\"preserve\"\r\n >\r\n <clr-icon shape=\"view-list\"></clr-icon>\r\n {{ 'customer.view-group-members' | translate }}\r\n </a>\r\n </td>\r\n <td class=\"right align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <button class=\"btn btn-link btn-sm\" (click)=\"update(group)\">\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n </td>\r\n <td [class.active]=\"group.id === activeGroupId\" class=\"align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"delete(group.id)\"\r\n [disabled]=\"!('DeleteCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n <ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder></vdr-empty-placeholder>\r\n </ng-template>\r\n <div class=\"group-members\" [class.expanded]=\"activeGroup$ | async\">\r\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\r\n <div class=\"flex\">\r\n <div class=\"header-title-row\">{{ activeGroup.name }} ({{ membersTotal$ | async }})</div>\r\n <div class=\"flex-spacer\"></div>\r\n <button type=\"button\" class=\"close-button\" (click)=\"closeMembers()\">\r\n <clr-icon shape=\"close\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"controls\">\r\n <vdr-dropdown>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary btn-sm\"\r\n vdrDropdownTrigger\r\n [disabled]=\"selectedCustomerIds.length === 0\"\r\n >\r\n {{ 'common.with-selected' | translate: { count: selectedCustomerIds.length } }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"removeFromGroup(activeGroup, selectedCustomerIds)\"\r\n vdrDropdownItem\r\n [disabled]=\"!('UpdateCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'customer.remove-from-group' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addToGroup(activeGroup)\">\r\n {{ 'customer.add-customers-to-group' | translate: { groupName: activeGroup.name } }}\r\n </button>\r\n </div>\r\n <vdr-customer-group-member-list\r\n [members]=\"members$ | async\"\r\n [route]=\"route\"\r\n [totalItems]=\"membersTotal$ | async\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n ></vdr-customer-group-member-list>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".group-wrapper{display:flex;height:calc(100% - 50px)}.group-wrapper .group-list{flex:1;overflow:auto;margin-top:0}.group-wrapper .group-list .active{background-color:var(--clr-global-selection-color)}.group-wrapper .group-list.expanded{width:calc(100% - 40vw)}vdr-data-table ::ng-deep table{margin-top:0}.group-members{height:100%;width:0;opacity:0;visibility:hidden;overflow:auto;transition:width .3s,opacity .2s .3s,visibility 0s .3s}.group-members.expanded{width:40vw;visibility:visible;opacity:1;padding-left:12px}.group-members .close-button{margin:0;background:none;border:none;cursor:pointer}.group-members ::ng-deep table.table{margin-top:0}.group-members ::ng-deep table.table th{top:0}.group-members .controls{display:flex;justify-content:space-between}vdr-empty-placeholder{flex:1}\n"], components: [{ type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { type: i1.DataTableComponent, selector: "vdr-data-table", inputs: ["items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "selectionManager", "allSelected", "isRowSelectedFn"], outputs: ["pageChange", "itemsPerPageChange", "allSelectChange", "rowSelectChange"] }, { type: i1.EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { type: i1.EmptyPlaceholderComponent, selector: "vdr-empty-placeholder", inputs: ["emptyStateLabel"] }, { type: i3.CustomerGroupMemberListComponent, selector: "vdr-customer-group-member-list", inputs: ["members", "totalItems", "route", "selectedMemberIds"], outputs: ["selectionChange", "fetchParamsChange"] }], directives: [{ type: i1.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { type: i5.ClrIconCustomTag, selector: "clr-icon" }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i7.TranslatePipe, "async": i6.AsyncPipe, "hasPermission": i1.HasPermissionPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
192
192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CustomerGroupListComponent, decorators: [{
193
193
  type: Component,
194
- args: [{ selector: 'vdr-customer-group-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"emailSearchTerm\"\r\n [formControl]=\"searchTerm\"\r\n [placeholder]=\"'customer.search-by-group-name' | translate\"\r\n class=\"search-input ml3\"\r\n />\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\r\n <button class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" (click)=\"create()\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer-group' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n<div class=\"group-wrapper\">\r\n <div class=\"group-list\">\r\n <vdr-data-table\r\n [class.expanded]=\"activeGroup$ | async\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n >\r\n <ng-template let-group=\"item\">\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-entity-info [entity]=\"group\"></vdr-entity-info>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-chip [colorFrom]=\"group.id\">{{ group.name }}</vdr-chip>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['./', { contents: group.id }]\"\r\n queryParamsHandling=\"preserve\"\r\n >\r\n <clr-icon shape=\"view-list\"></clr-icon>\r\n {{ 'customer.view-group-members' | translate }}\r\n </a>\r\n </td>\r\n <td class=\"right align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <button class=\"btn btn-link btn-sm\" (click)=\"update(group)\">\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n </td>\r\n <td [class.active]=\"group.id === activeGroupId\" class=\"align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"delete(group.id)\"\r\n [disabled]=\"!('DeleteCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n <ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder></vdr-empty-placeholder>\r\n </ng-template>\r\n <div class=\"group-members\" [class.expanded]=\"activeGroup$ | async\">\r\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\r\n <div class=\"flex\">\r\n <div class=\"header-title-row\">{{ activeGroup.name }} ({{ membersTotal$ | async }})</div>\r\n <div class=\"flex-spacer\"></div>\r\n <button type=\"button\" class=\"close-button\" (click)=\"closeMembers()\">\r\n <clr-icon shape=\"close\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"controls\">\r\n <vdr-dropdown>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary btn-sm\"\r\n vdrDropdownTrigger\r\n [disabled]=\"selectedCustomerIds.length === 0\"\r\n >\r\n {{ 'common.with-selected' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"removeFromGroup(activeGroup, selectedCustomerIds)\"\r\n vdrDropdownItem\r\n [disabled]=\"!('UpdateCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'customer.remove-from-group' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addToGroup(activeGroup)\">\r\n {{ 'customer.add-customers-to-group' | translate: { groupName: activeGroup.name } }}\r\n </button>\r\n </div>\r\n <vdr-customer-group-member-list\r\n [members]=\"members$ | async\"\r\n [route]=\"route\"\r\n [totalItems]=\"membersTotal$ | async\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n ></vdr-customer-group-member-list>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".group-wrapper{display:flex;height:calc(100% - 50px)}.group-wrapper .group-list{flex:1;overflow:auto;margin-top:0}.group-wrapper .group-list .active{background-color:var(--clr-global-selection-color)}.group-wrapper .group-list.expanded{width:calc(100% - 40vw)}vdr-data-table ::ng-deep table{margin-top:0}.group-members{height:100%;width:0;opacity:0;visibility:hidden;overflow:auto;transition:width .3s,opacity .2s .3s,visibility 0s .3s}.group-members.expanded{width:40vw;visibility:visible;opacity:1;padding-left:12px}.group-members .close-button{margin:0;background:none;border:none;cursor:pointer}.group-members ::ng-deep table.table{margin-top:0}.group-members ::ng-deep table.table th{top:0}.group-members .controls{display:flex;justify-content:space-between}vdr-empty-placeholder{flex:1}\n"] }]
194
+ args: [{ selector: 'vdr-customer-group-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"emailSearchTerm\"\r\n [formControl]=\"searchTerm\"\r\n [placeholder]=\"'customer.search-by-group-name' | translate\"\r\n class=\"search-input ml3\"\r\n />\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\r\n <button class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" (click)=\"create()\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer-group' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n<div class=\"group-wrapper\">\r\n <div class=\"group-list\">\r\n <vdr-data-table\r\n [class.expanded]=\"activeGroup$ | async\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n >\r\n <ng-template let-group=\"item\">\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-entity-info [entity]=\"group\"></vdr-entity-info>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-chip [colorFrom]=\"group.id\">{{ group.name }}</vdr-chip>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['./', { contents: group.id }]\"\r\n queryParamsHandling=\"preserve\"\r\n >\r\n <clr-icon shape=\"view-list\"></clr-icon>\r\n {{ 'customer.view-group-members' | translate }}\r\n </a>\r\n </td>\r\n <td class=\"right align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <button class=\"btn btn-link btn-sm\" (click)=\"update(group)\">\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n </td>\r\n <td [class.active]=\"group.id === activeGroupId\" class=\"align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"delete(group.id)\"\r\n [disabled]=\"!('DeleteCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n <ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder></vdr-empty-placeholder>\r\n </ng-template>\r\n <div class=\"group-members\" [class.expanded]=\"activeGroup$ | async\">\r\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\r\n <div class=\"flex\">\r\n <div class=\"header-title-row\">{{ activeGroup.name }} ({{ membersTotal$ | async }})</div>\r\n <div class=\"flex-spacer\"></div>\r\n <button type=\"button\" class=\"close-button\" (click)=\"closeMembers()\">\r\n <clr-icon shape=\"close\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"controls\">\r\n <vdr-dropdown>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary btn-sm\"\r\n vdrDropdownTrigger\r\n [disabled]=\"selectedCustomerIds.length === 0\"\r\n >\r\n {{ 'common.with-selected' | translate: { count: selectedCustomerIds.length } }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"removeFromGroup(activeGroup, selectedCustomerIds)\"\r\n vdrDropdownItem\r\n [disabled]=\"!('UpdateCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'customer.remove-from-group' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addToGroup(activeGroup)\">\r\n {{ 'customer.add-customers-to-group' | translate: { groupName: activeGroup.name } }}\r\n </button>\r\n </div>\r\n <vdr-customer-group-member-list\r\n [members]=\"members$ | async\"\r\n [route]=\"route\"\r\n [totalItems]=\"membersTotal$ | async\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n ></vdr-customer-group-member-list>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".group-wrapper{display:flex;height:calc(100% - 50px)}.group-wrapper .group-list{flex:1;overflow:auto;margin-top:0}.group-wrapper .group-list .active{background-color:var(--clr-global-selection-color)}.group-wrapper .group-list.expanded{width:calc(100% - 40vw)}vdr-data-table ::ng-deep table{margin-top:0}.group-members{height:100%;width:0;opacity:0;visibility:hidden;overflow:auto;transition:width .3s,opacity .2s .3s,visibility 0s .3s}.group-members.expanded{width:40vw;visibility:visible;opacity:1;padding-left:12px}.group-members .close-button{margin:0;background:none;border:none;cursor:pointer}.group-members ::ng-deep table.table{margin-top:0}.group-members ::ng-deep table.table th{top:0}.group-members .controls{display:flex;justify-content:space-between}vdr-empty-placeholder{flex:1}\n"] }]
195
195
  }], ctorParameters: function () { return [{ type: i1.DataService }, { type: i1.NotificationService }, { type: i1.ModalService }, { type: i2.ActivatedRoute }, { type: i2.Router }]; } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZ3JvdXAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2N1c3RvbWVyL3NyYy9jb21wb25lbnRzL2N1c3RvbWVyLWdyb3VwLWxpc3QvY3VzdG9tZXItZ3JvdXAtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2N1c3RvbWVyL3NyYy9jb21wb25lbnRzL2N1c3RvbWVyLWdyb3VwLWxpc3QvY3VzdG9tZXItZ3JvdXAtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsY0FBYyxHQVFqQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUNILFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUMzSCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQzs7Ozs7Ozs7O0FBUzVILE1BQU0sT0FBTywwQkFDVCxTQUFRLGlCQUdQO0lBbUJELFlBQ1ksV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLFlBQTBCLEVBQzNCLEtBQXFCLEVBQ2xCLE1BQWM7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QyxJQUFJO2lCQUN4QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1lBQ2xDLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDOzt1SEFuUFEsMEJBQTBCOzJHQUExQiwwQkFBMEIsc0ZDdEN2Qyx3Mk1BNkhBOzJGRHZGYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0kseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xuaW1wb3J0IHtcbiAgICBCYXNlTGlzdENvbXBvbmVudCxcbiAgICBEYXRhU2VydmljZSxcbiAgICBEZWxldGlvblJlc3VsdCxcbiAgICBHZXRDdXN0b21lckdyb3Vwc1F1ZXJ5LFxuICAgIEdldEN1c3RvbWVyR3JvdXBXaXRoQ3VzdG9tZXJzUXVlcnksXG4gICAgSXRlbU9mLFxuICAgIExvZ2ljYWxPcGVyYXRvcixcbiAgICBNb2RhbFNlcnZpY2UsXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBTb3J0T3JkZXIsXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBFTVBUWSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbHRlcixcbiAgICBtYXAsXG4gICAgbWFwVG8sXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2VVbnRpbCxcbiAgICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQWRkQ3VzdG9tZXJUb0dyb3VwRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkLWN1c3RvbWVyLXRvLWdyb3VwLWRpYWxvZy9hZGQtY3VzdG9tZXItdG8tZ3JvdXAtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21lckdyb3VwRGV0YWlsRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9tZXItZ3JvdXAtZGV0YWlsLWRpYWxvZy9jdXN0b21lci1ncm91cC1kZXRhaWwtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21lckdyb3VwTWVtYmVyRmV0Y2hQYXJhbXMgfSBmcm9tICcuLi9jdXN0b21lci1ncm91cC1tZW1iZXItbGlzdC9jdXN0b21lci1ncm91cC1tZW1iZXItbGlzdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Zkci1jdXN0b21lci1ncm91cC1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tZXItZ3JvdXAtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tZXItZ3JvdXAtbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21lckdyb3VwTGlzdENvbXBvbmVudFxuICAgIGV4dGVuZHMgQmFzZUxpc3RDb21wb25lbnQ8XG4gICAgICAgIEdldEN1c3RvbWVyR3JvdXBzUXVlcnksXG4gICAgICAgIEdldEN1c3RvbWVyR3JvdXBzUXVlcnlbJ2N1c3RvbWVyR3JvdXBzJ11bJ2l0ZW1zJ11bbnVtYmVyXVxuICAgID5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIHNlYXJjaFRlcm0gPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIGFjdGl2ZUdyb3VwJDogT2JzZXJ2YWJsZTxJdGVtT2Y8R2V0Q3VzdG9tZXJHcm91cHNRdWVyeSwgJ2N1c3RvbWVyR3JvdXBzJz4gfCB1bmRlZmluZWQ+O1xuICAgIGFjdGl2ZUdyb3VwSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsaXN0SXNFbXB0eSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgbWVtYmVycyQ6IE9ic2VydmFibGU8XG4gICAgICAgIE5vbk51bGxhYmxlPEdldEN1c3RvbWVyR3JvdXBXaXRoQ3VzdG9tZXJzUXVlcnlbJ2N1c3RvbWVyR3JvdXAnXT5bJ2N1c3RvbWVycyddWydpdGVtcyddXG4gICAgPjtcbiAgICBtZW1iZXJzVG90YWwkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gICAgc2VsZWN0ZWRDdXN0b21lcklkczogc3RyaW5nW10gPSBbXTtcbiAgICBmZXRjaEdyb3VwTWVtYmVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEN1c3RvbWVyR3JvdXBNZW1iZXJGZXRjaFBhcmFtcz4oe1xuICAgICAgICBza2lwOiAwLFxuICAgICAgICB0YWtlOiAwLFxuICAgICAgICBmaWx0ZXJUZXJtOiAnJyxcbiAgICB9KTtcbiAgICBwcml2YXRlIHJlZnJlc2hBY3RpdmVHcm91cE1lbWJlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICApIHtcbiAgICAgICAgc3VwZXIocm91dGVyLCByb3V0ZSk7XG4gICAgICAgIHN1cGVyLnNldFF1ZXJ5Rm4oXG4gICAgICAgICAgICAoLi4uYXJnczogYW55W10pID0+XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5nZXRDdXN0b21lckdyb3VwTGlzdCguLi5hcmdzKS5yZWZldGNoT25DaGFubmVsQ2hhbmdlKCksXG4gICAgICAgICAgICBkYXRhID0+IGRhdGEuY3VzdG9tZXJHcm91cHMsXG4gICAgICAgICAgICAoc2tpcCwgdGFrZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHNraXAsXG4gICAgICAgICAgICAgICAgICAgIHRha2UsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeyBjb250YWluczogdGhpcy5zZWFyY2hUZXJtLnZhbHVlIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIodmFsdWUgPT4gMiA8IHZhbHVlLmxlbmd0aCB8fCB2YWx1ZS5sZW5ndGggPT09IDApLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoKCkpO1xuICAgICAgICBjb25zdCBhY3RpdmVHcm91cElkJCA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICAgICAgICAgIG1hcChwbSA9PiBwbS5nZXQoJ2NvbnRlbnRzJykpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiAodGhpcy5zZWxlY3RlZEN1c3RvbWVySWRzID0gW10pKSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5saXN0SXNFbXB0eSQgPSB0aGlzLml0ZW1zJC5waXBlKG1hcChncm91cHMgPT4gZ3JvdXBzLmxlbmd0aCA9PT0gMCkpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdyb3VwJCA9IGNvbWJpbmVMYXRlc3QodGhpcy5pdGVtcyQsIGFjdGl2ZUdyb3VwSWQkKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbZ3JvdXBzLCBhY3RpdmVHcm91cElkXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cHMuZmluZChnID0+IGcuaWQgPT09IGFjdGl2ZUdyb3VwSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKHZhbCA9PiAodGhpcy5hY3RpdmVHcm91cElkID0gdmFsPy5pZCkpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBtZW1iZXJzUmVzdWx0JCA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdyb3VwJCxcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hHcm91cE1lbWJlcnMkLFxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWN0aXZlR3JvdXBNZW1iZXJzJCxcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChbYWN0aXZlR3JvdXAsIHsgc2tpcCwgdGFrZSwgZmlsdGVyVGVybSB9XSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldEN1c3RvbWVyR3JvdXBXaXRoQ3VzdG9tZXJzKGFjdGl2ZUdyb3VwLmlkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbEFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBmaWx0ZXJUZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcFN0cmVhbShyZXMgPT4gcmVzLmN1c3RvbWVyR3JvdXA/LmN1c3RvbWVycyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5tZW1iZXJzJCA9IG1lbWJlcnNSZXN1bHQkLnBpcGUobWFwKHJlcyA9PiByZXM/Lml0ZW1zID8/IFtdKSk7XG4gICAgICAgIHRoaXMubWVtYmVyc1RvdGFsJCA9IG1lbWJlcnNSZXN1bHQkLnBpcGUobWFwKHJlcyA9PiByZXM/LnRvdGFsSXRlbXMgPz8gMCkpO1xuICAgIH1cblxuICAgIGNyZWF0ZSgpIHtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KEN1c3RvbWVyR3JvdXBEZXRhaWxEaWFsb2dDb21wb25lbnQsIHsgbG9jYWxzOiB7IGdyb3VwOiB7IG5hbWU6ICcnIH0gfSB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PlxuICAgICAgICAgICAgICAgICAgICByZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5jcmVhdGVDdXN0b21lckdyb3VwKHsgLi4ucmVzdWx0LCBjdXN0b21lcklkczogW10gfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogRU1QVFksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS1jcmVhdGUtc3VjY2VzcycpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDdXN0b21lckdyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnY29tbW9uLm5vdGlmeS1jcmVhdGUtZXJyb3InKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQ3VzdG9tZXJHcm91cCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZShncm91cElkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcbiAgICAgICAgICAgIC5kaWFsb2coe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBfKCdjdXN0b21lci5jb25maXJtLWRlbGV0ZS1jdXN0b21lci1ncm91cCcpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnc2Vjb25kYXJ5JywgbGFiZWw6IF8oJ2NvbW1vbi5jYW5jZWwnKSB9LFxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3BvbnNlID0+XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID8gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5kZWxldGVDdXN0b21lckdyb3VwKGdyb3VwSWQpIDogRU1QVFksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmRlbGV0ZUN1c3RvbWVyR3JvdXAucmVzdWx0ID09PSBEZWxldGlvblJlc3VsdC5ERUxFVEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldEN1c3RvbWVyR3JvdXBMaXN0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwU2luZ2xlKCgpID0+ICh7IGVycm9yTWVzc2FnZTogZmFsc2UgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHsgZXJyb3JNZXNzYWdlOiByZXN1bHQuZGVsZXRlQ3VzdG9tZXJHcm91cC5tZXNzYWdlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0LmVycm9yTWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihyZXN1bHQuZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS1kZWxldGUtc3VjY2VzcycpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQ3VzdG9tZXJHcm91cCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKF8oJ2NvbW1vbi5ub3RpZnktZGVsZXRlLWVycm9yJyksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0N1c3RvbWVyR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGUoZ3JvdXA6IEl0ZW1PZjxHZXRDdXN0b21lckdyb3Vwc1F1ZXJ5LCAnY3VzdG9tZXJHcm91cHMnPikge1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoQ3VzdG9tZXJHcm91cERldGFpbERpYWxvZ0NvbXBvbmVudCwgeyBsb2NhbHM6IHsgZ3JvdXAgfSB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PlxuICAgICAgICAgICAgICAgICAgICByZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci51cGRhdGVDdXN0b21lckdyb3VwKHsgaWQ6IGdyb3VwLmlkLCAuLi5yZXN1bHQgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogRU1QVFksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtc3VjY2VzcycpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDdXN0b21lckdyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtZXJyb3InKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQ3VzdG9tZXJHcm91cCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIGNsb3NlTWVtYmVycygpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcyB9O1xuICAgICAgICBkZWxldGUgcGFyYW1zLmNvbnRlbnRzO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJywgcGFyYW1zXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnIH0pO1xuICAgIH1cblxuICAgIGFkZFRvR3JvdXAoZ3JvdXA6IE5vbk51bGxhYmxlPEdldEN1c3RvbWVyR3JvdXBXaXRoQ3VzdG9tZXJzUXVlcnlbJ2N1c3RvbWVyR3JvdXAnXT4pIHtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KEFkZEN1c3RvbWVyVG9Hcm91cERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGxvY2Fsczoge1xuICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgcm91dGU6IHRoaXMucm91dGUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaXplOiAnbWQnLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChjdXN0b21lcklkcyA9PlxuICAgICAgICAgICAgICAgICAgICBjdXN0b21lcklkc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ3VzdG9tZXJzVG9Hcm91cChncm91cC5pZCwgY3VzdG9tZXJJZHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXBUbyhjdXN0b21lcklkcykpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IEVNUFRZLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKGBjdXN0b21lci5hZGQtY3VzdG9tZXJzLXRvLWdyb3VwLXN1Y2Nlc3NgKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tZXJDb3VudDogcmVzdWx0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZTogZ3JvdXAubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEFjdGl2ZUdyb3VwTWVtYmVycyQubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ3VzdG9tZXJJZHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlRnJvbUdyb3VwKFxuICAgICAgICBncm91cDogTm9uTnVsbGFibGU8R2V0Q3VzdG9tZXJHcm91cFdpdGhDdXN0b21lcnNRdWVyeVsnY3VzdG9tZXJHcm91cCddPixcbiAgICAgICAgY3VzdG9tZXJJZHM6IHN0cmluZ1tdLFxuICAgICkge1xuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLnJlbW92ZUN1c3RvbWVyc0Zyb21Hcm91cChncm91cC5pZCwgY3VzdG9tZXJJZHMpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oYGN1c3RvbWVyLnJlbW92ZS1jdXN0b21lcnMtZnJvbS1ncm91cC1zdWNjZXNzYCksIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tZXJDb3VudDogY3VzdG9tZXJJZHMubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBncm91cE5hbWU6IGdyb3VwLm5hbWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWN0aXZlR3JvdXBNZW1iZXJzJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEN1c3RvbWVySWRzID0gW107XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8dmRyLWFjdGlvbi1iYXI+XHJcbiAgICA8dmRyLWFiLWxlZnQ+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgbmFtZT1cImVtYWlsU2VhcmNoVGVybVwiXHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hUZXJtXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidjdXN0b21lci5zZWFyY2gtYnktZ3JvdXAtbmFtZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dCBtbDNcIlxyXG4gICAgICAgIC8+XHJcbiAgICA8L3Zkci1hYi1sZWZ0PlxyXG4gICAgPHZkci1hYi1yaWdodD5cclxuICAgICAgICA8dmRyLWFjdGlvbi1iYXItaXRlbXMgbG9jYXRpb25JZD1cImN1c3RvbWVyLWdyb3VwLWxpc3RcIj48L3Zkci1hY3Rpb24tYmFyLWl0ZW1zPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAqdmRySWZQZXJtaXNzaW9ucz1cIidDcmVhdGVDdXN0b21lckdyb3VwJ1wiIChjbGljayk9XCJjcmVhdGUoKVwiPlxyXG4gICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJwbHVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAge3sgJ2N1c3RvbWVyLmNyZWF0ZS1uZXctY3VzdG9tZXItZ3JvdXAnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L3Zkci1hYi1yaWdodD5cclxuPC92ZHItYWN0aW9uLWJhcj5cclxuPGRpdiBjbGFzcz1cImdyb3VwLXdyYXBwZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJncm91cC1saXN0XCI+XHJcbiAgICAgICAgPHZkci1kYXRhLXRhYmxlXHJcbiAgICAgICAgICAgIFtjbGFzcy5leHBhbmRlZF09XCJhY3RpdmVHcm91cCQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgIFtpdGVtc109XCJpdGVtcyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtcyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZSQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cInNldFBhZ2VOdW1iZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChpdGVtc1BlclBhZ2VDaGFuZ2UpPVwic2V0SXRlbXNQZXJQYWdlKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1ncm91cD1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxlZnQgYWxpZ24tbWlkZGxlXCIgW2NsYXNzLmFjdGl2ZV09XCJncm91cC5pZCA9PT0gYWN0aXZlR3JvdXBJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZW50aXR5LWluZm8gW2VudGl0eV09XCJncm91cFwiPjwvdmRyLWVudGl0eS1pbmZvPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxlZnQgYWxpZ24tbWlkZGxlXCIgW2NsYXNzLmFjdGl2ZV09XCJncm91cC5pZCA9PT0gYWN0aXZlR3JvdXBJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItY2hpcCBbY29sb3JGcm9tXT1cImdyb3VwLmlkXCI+e3sgZ3JvdXAubmFtZSB9fTwvdmRyLWNoaXA+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGVmdCBhbGlnbi1taWRkbGVcIiBbY2xhc3MuYWN0aXZlXT1cImdyb3VwLmlkID09PSBhY3RpdmVHcm91cElkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycuLycsIHsgY29udGVudHM6IGdyb3VwLmlkIH1dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZz1cInByZXNlcnZlXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInZpZXctbGlzdFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjdXN0b21lci52aWV3LWdyb3VwLW1lbWJlcnMnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInJpZ2h0IGFsaWduLW1pZGRsZVwiIFtjbGFzcy5hY3RpdmVdPVwiZ3JvdXAuaWQgPT09IGFjdGl2ZUdyb3VwSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbVwiIChjbGljayk9XCJ1cGRhdGUoZ3JvdXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImVkaXRcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnY29tbW9uLmVkaXQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIFtjbGFzcy5hY3RpdmVdPVwiZ3JvdXAuaWQgPT09IGFjdGl2ZUdyb3VwSWRcIiBjbGFzcz1cImFsaWduLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbVwiIHZkckRyb3Bkb3duVHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24uYWN0aW9ucycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImNhcmV0IGRvd25cIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51IHZkclBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGUoZ3JvdXAuaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISgnRGVsZXRlQ3VzdG9tZXJHcm91cCcgfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidHJhc2hcIiBjbGFzcz1cImlzLWRhbmdlclwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5kZWxldGUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC92ZHItZGF0YS10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eVBsYWNlaG9sZGVyPlxyXG4gICAgICAgIDx2ZHItZW1wdHktcGxhY2Vob2xkZXI+PC92ZHItZW1wdHktcGxhY2Vob2xkZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImdyb3VwLW1lbWJlcnNcIiBbY2xhc3MuZXhwYW5kZWRdPVwiYWN0aXZlR3JvdXAkIHwgYXN5bmNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlR3JvdXAkIHwgYXN5bmMgYXMgYWN0aXZlR3JvdXBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGUtcm93XCI+e3sgYWN0aXZlR3JvdXAubmFtZSB9fSAoe3sgbWVtYmVyc1RvdGFsJCB8IGFzeW5jIH19KTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc3BhY2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIChjbGljayk9XCJjbG9zZU1lbWJlcnMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImNsb3NlXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25UcmlnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RlZEN1c3RvbWVySWRzLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnY29tbW9uLndpdGgtc2VsZWN0ZWQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImNhcmV0IGRvd25cIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24tbWVudSB2ZHJQb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRnJvbUdyb3VwKGFjdGl2ZUdyb3VwLCBzZWxlY3RlZEN1c3RvbWVySWRzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZHJEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKCdVcGRhdGVDdXN0b21lckdyb3VwJyB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidHJhc2hcIiBjbGFzcz1cImlzLWRhbmdlclwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY3VzdG9tZXIucmVtb3ZlLWZyb20tZ3JvdXAnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duLW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc21cIiAoY2xpY2spPVwiYWRkVG9Hcm91cChhY3RpdmVHcm91cClcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnY3VzdG9tZXIuYWRkLWN1c3RvbWVycy10by1ncm91cCcgfCB0cmFuc2xhdGU6IHsgZ3JvdXBOYW1lOiBhY3RpdmVHcm91cC5uYW1lIH0gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHZkci1jdXN0b21lci1ncm91cC1tZW1iZXItbGlzdFxyXG4gICAgICAgICAgICAgICAgW21lbWJlcnNdPVwibWVtYmVycyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVdPVwicm91dGVcIlxyXG4gICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwibWVtYmVyc1RvdGFsJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZE1lbWJlcklkc109XCJzZWxlY3RlZEN1c3RvbWVySWRzXCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0ZWRDdXN0b21lcklkcyA9ICRldmVudFwiXHJcbiAgICAgICAgICAgICAgICAoZmV0Y2hQYXJhbXNDaGFuZ2UpPVwiZmV0Y2hHcm91cE1lbWJlcnMkLm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID48L3Zkci1jdXN0b21lci1ncm91cC1tZW1iZXItbGlzdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZ3JvdXAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2N1c3RvbWVyL3NyYy9jb21wb25lbnRzL2N1c3RvbWVyLWdyb3VwLWxpc3QvY3VzdG9tZXItZ3JvdXAtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2N1c3RvbWVyL3NyYy9jb21wb25lbnRzL2N1c3RvbWVyLWdyb3VwLWxpc3QvY3VzdG9tZXItZ3JvdXAtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsY0FBYyxHQVFqQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUNILFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUMzSCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQzs7Ozs7Ozs7O0FBUzVILE1BQU0sT0FBTywwQkFDVCxTQUFRLGlCQUdQO0lBbUJELFlBQ1ksV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLFlBQTBCLEVBQzNCLEtBQXFCLEVBQ2xCLE1BQWM7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QyxJQUFJO2lCQUN4QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1lBQ2xDLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDOzt1SEFuUFEsMEJBQTBCOzJHQUExQiwwQkFBMEIsc0ZDdEN2QywrNE1BNkhBOzJGRHZGYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0kseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgQmFzZUxpc3RDb21wb25lbnQsXHJcbiAgICBEYXRhU2VydmljZSxcclxuICAgIERlbGV0aW9uUmVzdWx0LFxyXG4gICAgR2V0Q3VzdG9tZXJHcm91cHNRdWVyeSxcclxuICAgIEdldEN1c3RvbWVyR3JvdXBXaXRoQ3VzdG9tZXJzUXVlcnksXHJcbiAgICBJdGVtT2YsXHJcbiAgICBMb2dpY2FsT3BlcmF0b3IsXHJcbiAgICBNb2RhbFNlcnZpY2UsXHJcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgU29ydE9yZGVyLFxyXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gICAgZGVib3VuY2VUaW1lLFxyXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXHJcbiAgICBmaWx0ZXIsXHJcbiAgICBtYXAsXHJcbiAgICBtYXBUbyxcclxuICAgIHN3aXRjaE1hcCxcclxuICAgIHRha2VVbnRpbCxcclxuICAgIHRhcCxcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBBZGRDdXN0b21lclRvR3JvdXBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtY3VzdG9tZXItdG8tZ3JvdXAtZGlhbG9nL2FkZC1jdXN0b21lci10by1ncm91cC1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tZXJHcm91cERldGFpbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbWVyLWdyb3VwLWRldGFpbC1kaWFsb2cvY3VzdG9tZXItZ3JvdXAtZGV0YWlsLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21lckdyb3VwTWVtYmVyRmV0Y2hQYXJhbXMgfSBmcm9tICcuLi9jdXN0b21lci1ncm91cC1tZW1iZXItbGlzdC9jdXN0b21lci1ncm91cC1tZW1iZXItbGlzdC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1jdXN0b21lci1ncm91cC1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jdXN0b21lci1ncm91cC1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2N1c3RvbWVyLWdyb3VwLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJHcm91cExpc3RDb21wb25lbnRcclxuICAgIGV4dGVuZHMgQmFzZUxpc3RDb21wb25lbnQ8XHJcbiAgICAgICAgR2V0Q3VzdG9tZXJHcm91cHNRdWVyeSxcclxuICAgICAgICBHZXRDdXN0b21lckdyb3Vwc1F1ZXJ5WydjdXN0b21lckdyb3VwcyddWydpdGVtcyddW251bWJlcl1cclxuICAgID5cclxuICAgIGltcGxlbWVudHMgT25Jbml0XHJcbntcclxuICAgIHNlYXJjaFRlcm0gPSBuZXcgRm9ybUNvbnRyb2woJycpO1xyXG4gICAgYWN0aXZlR3JvdXAkOiBPYnNlcnZhYmxlPEl0ZW1PZjxHZXRDdXN0b21lckdyb3Vwc1F1ZXJ5LCAnY3VzdG9tZXJHcm91cHMnPiB8IHVuZGVmaW5lZD47XHJcbiAgICBhY3RpdmVHcm91cElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBsaXN0SXNFbXB0eSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBtZW1iZXJzJDogT2JzZXJ2YWJsZTxcclxuICAgICAgICBOb25OdWxsYWJsZTxHZXRDdXN0b21lckdyb3VwV2l0aEN1c3RvbWVyc1F1ZXJ5WydjdXN0b21lckdyb3VwJ10+WydjdXN0b21lcnMnXVsnaXRlbXMnXVxyXG4gICAgPjtcclxuICAgIG1lbWJlcnNUb3RhbCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICAgIHNlbGVjdGVkQ3VzdG9tZXJJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBmZXRjaEdyb3VwTWVtYmVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEN1c3RvbWVyR3JvdXBNZW1iZXJGZXRjaFBhcmFtcz4oe1xyXG4gICAgICAgIHNraXA6IDAsXHJcbiAgICAgICAgdGFrZTogMCxcclxuICAgICAgICBmaWx0ZXJUZXJtOiAnJyxcclxuICAgIH0pO1xyXG4gICAgcHJpdmF0ZSByZWZyZXNoQWN0aXZlR3JvdXBNZW1iZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHJvdXRlciwgcm91dGUpO1xyXG4gICAgICAgIHN1cGVyLnNldFF1ZXJ5Rm4oXHJcbiAgICAgICAgICAgICguLi5hcmdzOiBhbnlbXSkgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIuZ2V0Q3VzdG9tZXJHcm91cExpc3QoLi4uYXJncykucmVmZXRjaE9uQ2hhbm5lbENoYW5nZSgpLFxyXG4gICAgICAgICAgICBkYXRhID0+IGRhdGEuY3VzdG9tZXJHcm91cHMsXHJcbiAgICAgICAgICAgIChza2lwLCB0YWtlKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHNraXAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZSxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeyBjb250YWluczogdGhpcy5zZWFyY2hUZXJtLnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLnNlYXJjaFRlcm0udmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+IDIgPCB2YWx1ZS5sZW5ndGggfHwgdmFsdWUubGVuZ3RoID09PSAwKSxcclxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoKCkpO1xyXG4gICAgICAgIGNvbnN0IGFjdGl2ZUdyb3VwSWQkID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxyXG4gICAgICAgICAgICBtYXAocG0gPT4gcG0uZ2V0KCdjb250ZW50cycpKSxcclxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgdGFwKCgpID0+ICh0aGlzLnNlbGVjdGVkQ3VzdG9tZXJJZHMgPSBbXSkpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5saXN0SXNFbXB0eSQgPSB0aGlzLml0ZW1zJC5waXBlKG1hcChncm91cHMgPT4gZ3JvdXBzLmxlbmd0aCA9PT0gMCkpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlR3JvdXAkID0gY29tYmluZUxhdGVzdCh0aGlzLml0ZW1zJCwgYWN0aXZlR3JvdXBJZCQpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoW2dyb3VwcywgYWN0aXZlR3JvdXBJZF0pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVHcm91cElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyb3Vwcy5maW5kKGcgPT4gZy5pZCA9PT0gYWN0aXZlR3JvdXBJZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0YXAodmFsID0+ICh0aGlzLmFjdGl2ZUdyb3VwSWQgPSB2YWw/LmlkKSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBtZW1iZXJzUmVzdWx0JCA9IGNvbWJpbmVMYXRlc3QoXHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR3JvdXAkLFxyXG4gICAgICAgICAgICB0aGlzLmZldGNoR3JvdXBNZW1iZXJzJCxcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWN0aXZlR3JvdXBNZW1iZXJzJCxcclxuICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2FjdGl2ZUdyb3VwLCB7IHNraXAsIHRha2UsIGZpbHRlclRlcm0gfV0pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVHcm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRDdXN0b21lckdyb3VwV2l0aEN1c3RvbWVycyhhY3RpdmVHcm91cC5pZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbEFkZHJlc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IGZpbHRlclRlcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXBTdHJlYW0ocmVzID0+IHJlcy5jdXN0b21lckdyb3VwPy5jdXN0b21lcnMpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5tZW1iZXJzJCA9IG1lbWJlcnNSZXN1bHQkLnBpcGUobWFwKHJlcyA9PiByZXM/Lml0ZW1zID8/IFtdKSk7XHJcbiAgICAgICAgdGhpcy5tZW1iZXJzVG90YWwkID0gbWVtYmVyc1Jlc3VsdCQucGlwZShtYXAocmVzID0+IHJlcz8udG90YWxJdGVtcyA/PyAwKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlKCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KEN1c3RvbWVyR3JvdXBEZXRhaWxEaWFsb2dDb21wb25lbnQsIHsgbG9jYWxzOiB7IGdyb3VwOiB7IG5hbWU6ICcnIH0gfSB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT5cclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLmNyZWF0ZUN1c3RvbWVyR3JvdXAoeyAuLi5yZXN1bHQsIGN1c3RvbWVySWRzOiBbXSB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IEVNUFRZLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktY3JlYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDdXN0b21lckdyb3VwJyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0N1c3RvbWVyR3JvdXAnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGUoZ3JvdXBJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmRpYWxvZyh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXygnY3VzdG9tZXIuY29uZmlybS1kZWxldGUtY3VzdG9tZXItZ3JvdXAnKSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdzZWNvbmRhcnknLCBsYWJlbDogXygnY29tbW9uLmNhbmNlbCcpIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnZGFuZ2VyJywgbGFiZWw6IF8oJ2NvbW1vbi5kZWxldGUnKSwgcmV0dXJuVmFsdWU6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3BvbnNlID0+XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPyB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLmRlbGV0ZUN1c3RvbWVyR3JvdXAoZ3JvdXBJZCkgOiBFTVBUWSxcclxuICAgICAgICAgICAgICAgICksXHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5kZWxldGVDdXN0b21lckdyb3VwLnJlc3VsdCA9PT0gRGVsZXRpb25SZXN1bHQuREVMRVRFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGxpc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRDdXN0b21lckdyb3VwTGlzdCgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwU2luZ2xlKCgpID0+ICh7IGVycm9yTWVzc2FnZTogZmFsc2UgfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7IGVycm9yTWVzc2FnZTogcmVzdWx0LmRlbGV0ZUN1c3RvbWVyR3JvdXAubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdC5lcnJvck1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihyZXN1bHQuZXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS1kZWxldGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDdXN0b21lckdyb3VwJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKF8oJ2NvbW1vbi5ub3RpZnktZGVsZXRlLWVycm9yJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQ3VzdG9tZXJHcm91cCcsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShncm91cDogSXRlbU9mPEdldEN1c3RvbWVyR3JvdXBzUXVlcnksICdjdXN0b21lckdyb3Vwcyc+KSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoQ3VzdG9tZXJHcm91cERldGFpbERpYWxvZ0NvbXBvbmVudCwgeyBsb2NhbHM6IHsgZ3JvdXAgfSB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT5cclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLnVwZGF0ZUN1c3RvbWVyR3JvdXAoeyBpZDogZ3JvdXAuaWQsIC4uLnJlc3VsdCB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IEVNUFRZLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDdXN0b21lckdyb3VwJyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0N1c3RvbWVyR3JvdXAnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZU1lbWJlcnMoKSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcyB9O1xyXG4gICAgICAgIGRlbGV0ZSBwYXJhbXMuY29udGVudHM7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLycsIHBhcmFtc10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRUb0dyb3VwKGdyb3VwOiBOb25OdWxsYWJsZTxHZXRDdXN0b21lckdyb3VwV2l0aEN1c3RvbWVyc1F1ZXJ5WydjdXN0b21lckdyb3VwJ10+KSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoQWRkQ3VzdG9tZXJUb0dyb3VwRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBncm91cCxcclxuICAgICAgICAgICAgICAgICAgICByb3V0ZTogdGhpcy5yb3V0ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaXplOiAnbWQnLFxyXG4gICAgICAgICAgICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGN1c3RvbWVySWRzID0+XHJcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tZXJJZHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDdXN0b21lcnNUb0dyb3VwKGdyb3VwLmlkLCBjdXN0b21lcklkcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwVG8oY3VzdG9tZXJJZHMpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IEVNUFRZLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXyhgY3VzdG9tZXIuYWRkLWN1c3RvbWVycy10by1ncm91cC1zdWNjZXNzYCksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tZXJDb3VudDogcmVzdWx0Lmxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBncm91cC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEFjdGl2ZUdyb3VwTWVtYmVycyQubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDdXN0b21lcklkcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRnJvbUdyb3VwKFxyXG4gICAgICAgIGdyb3VwOiBOb25OdWxsYWJsZTxHZXRDdXN0b21lckdyb3VwV2l0aEN1c3RvbWVyc1F1ZXJ5WydjdXN0b21lckdyb3VwJ10+LFxyXG4gICAgICAgIGN1c3RvbWVySWRzOiBzdHJpbmdbXSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIucmVtb3ZlQ3VzdG9tZXJzRnJvbUdyb3VwKGdyb3VwLmlkLCBjdXN0b21lcklkcykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oYGN1c3RvbWVyLnJlbW92ZS1jdXN0b21lcnMtZnJvbS1ncm91cC1zdWNjZXNzYCksIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21lckNvdW50OiBjdXN0b21lcklkcy5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBncm91cC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBY3RpdmVHcm91cE1lbWJlcnMkLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDdXN0b21lcklkcyA9IFtdO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjx2ZHItYWN0aW9uLWJhcj5cclxuICAgIDx2ZHItYWItbGVmdD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBuYW1lPVwiZW1haWxTZWFyY2hUZXJtXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2N1c3RvbWVyLnNlYXJjaC1ieS1ncm91cC1uYW1lJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0IG1sM1wiXHJcbiAgICAgICAgLz5cclxuICAgIDwvdmRyLWFiLWxlZnQ+XHJcbiAgICA8dmRyLWFiLXJpZ2h0PlxyXG4gICAgICAgIDx2ZHItYWN0aW9uLWJhci1pdGVtcyBsb2NhdGlvbklkPVwiY3VzdG9tZXItZ3JvdXAtbGlzdFwiPjwvdmRyLWFjdGlvbi1iYXItaXRlbXM+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiICp2ZHJJZlBlcm1pc3Npb25zPVwiJ0NyZWF0ZUN1c3RvbWVyR3JvdXAnXCIgKGNsaWNrKT1cImNyZWF0ZSgpXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICB7eyAnY3VzdG9tZXIuY3JlYXRlLW5ldy1jdXN0b21lci1ncm91cCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvdmRyLWFiLXJpZ2h0PlxyXG48L3Zkci1hY3Rpb24tYmFyPlxyXG48ZGl2IGNsYXNzPVwiZ3JvdXAtd3JhcHBlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImdyb3VwLWxpc3RcIj5cclxuICAgICAgICA8dmRyLWRhdGEtdGFibGVcclxuICAgICAgICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cImFjdGl2ZUdyb3VwJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgW2l0ZW1zXT1cIml0ZW1zJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2UkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwic2V0UGFnZU51bWJlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGl0ZW1zUGVyUGFnZUNoYW5nZSk9XCJzZXRJdGVtc1BlclBhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWdyb3VwPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGVmdCBhbGlnbi1taWRkbGVcIiBbY2xhc3MuYWN0aXZlXT1cImdyb3VwLmlkID09PSBhY3RpdmVHcm91cElkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1lbnRpdHktaW5mbyBbZW50aXR5XT1cImdyb3VwXCI+PC92ZHItZW50aXR5LWluZm8+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGVmdCBhbGlnbi1taWRkbGVcIiBbY2xhc3MuYWN0aXZlXT1cImdyb3VwLmlkID09PSBhY3RpdmVHcm91cElkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1jaGlwIFtjb2xvckZyb21dPVwiZ3JvdXAuaWRcIj57eyBncm91cC5uYW1lIH19PC92ZHItY2hpcD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsZWZ0IGFsaWduLW1pZGRsZVwiIFtjbGFzcy5hY3RpdmVdPVwiZ3JvdXAuaWQgPT09IGFjdGl2ZUdyb3VwSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy4vJywgeyBjb250ZW50czogZ3JvdXAuaWQgfV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nPVwicHJlc2VydmVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidmlldy1saXN0XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2N1c3RvbWVyLnZpZXctZ3JvdXAtbWVtYmVycycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicmlnaHQgYWxpZ24tbWlkZGxlXCIgW2NsYXNzLmFjdGl2ZV09XCJncm91cC5pZCA9PT0gYWN0aXZlR3JvdXBJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtXCIgKGNsaWNrKT1cInVwZGF0ZShncm91cClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiZWRpdFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24uZWRpdCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgW2NsYXNzLmFjdGl2ZV09XCJncm91cC5pZCA9PT0gYWN0aXZlR3JvdXBJZFwiIGNsYXNzPVwiYWxpZ24tbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtXCIgdmRyRHJvcGRvd25UcmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5hY3Rpb25zJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiY2FyZXQgZG93blwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnUgdmRyUG9zaXRpb249XCJib3R0b20tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShncm91cC5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKCdEZWxldGVDdXN0b21lckdyb3VwJyB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ0cmFzaFwiIGNsYXNzPVwiaXMtZGFuZ2VyXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY29tbW9uLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L3Zkci1kYXRhLXRhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5UGxhY2Vob2xkZXI+XHJcbiAgICAgICAgPHZkci1lbXB0eS1wbGFjZWhvbGRlcj48L3Zkci1lbXB0eS1wbGFjZWhvbGRlcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtbWVtYmVyc1wiIFtjbGFzcy5leHBhbmRlZF09XCJhY3RpdmVHcm91cCQgfCBhc3luY1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVHcm91cCQgfCBhc3luYyBhcyBhY3RpdmVHcm91cFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZS1yb3dcIj57eyBhY3RpdmVHcm91cC5uYW1lIH19ICh7eyBtZW1iZXJzVG90YWwkIHwgYXN5bmMgfX0pPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zcGFjZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlTWVtYmVycygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiY2xvc2VcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZHJEcm9wZG93blRyaWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkQ3VzdG9tZXJJZHMubGVuZ3RoID09PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24ud2l0aC1zZWxlY3RlZCcgfCB0cmFuc2xhdGU6IHsgY291bnQ6IHNlbGVjdGVkQ3VzdG9tZXJJZHMubGVuZ3RoIH0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiY2FyZXQgZG93blwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51IHZkclBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGcm9tR3JvdXAoYWN0aXZlR3JvdXAsIHNlbGVjdGVkQ3VzdG9tZXJJZHMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoJ1VwZGF0ZUN1c3RvbWVyR3JvdXAnIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ0cmFzaFwiIGNsYXNzPVwiaXMtZGFuZ2VyXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjdXN0b21lci5yZW1vdmUtZnJvbS1ncm91cCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJhZGRUb0dyb3VwKGFjdGl2ZUdyb3VwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdjdXN0b21lci5hZGQtY3VzdG9tZXJzLXRvLWdyb3VwJyB8IHRyYW5zbGF0ZTogeyBncm91cE5hbWU6IGFjdGl2ZUdyb3VwLm5hbWUgfSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8dmRyLWN1c3RvbWVyLWdyb3VwLW1lbWJlci1saXN0XHJcbiAgICAgICAgICAgICAgICBbbWVtYmVyc109XCJtZW1iZXJzJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIFtyb3V0ZV09XCJyb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJtZW1iZXJzVG90YWwkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkTWVtYmVySWRzXT1cInNlbGVjdGVkQ3VzdG9tZXJJZHNcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3RlZEN1c3RvbWVySWRzID0gJGV2ZW50XCJcclxuICAgICAgICAgICAgICAgIChmZXRjaFBhcmFtc0NoYW5nZSk9XCJmZXRjaEdyb3VwTWVtYmVycyQubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvdmRyLWN1c3RvbWVyLWdyb3VwLW1lbWJlci1saXN0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=