ets-fe-ng-sdk 17.0.430 → 18.0.0

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 (186) hide show
  1. package/esm2022/lib/Reusables/reusable-comps/find-item/find-item.component.mjs +4 -4
  2. package/esm2022/lib/Reusables/reusable-comps/find-item/find-item.module.mjs +4 -4
  3. package/esm2022/lib/Reusables/reusable-comps/watermark/watermark.component.mjs +3 -3
  4. package/esm2022/lib/Reusables/reusable-pages/extra-pages/extra-pages-routing.module.mjs +4 -4
  5. package/esm2022/lib/Reusables/reusable-pages/extra-pages/extra-pages.module.mjs +4 -4
  6. package/esm2022/lib/Reusables/reusable-pages/logger/logger-routing.module.mjs +4 -4
  7. package/esm2022/lib/Reusables/reusable-pages/logger/logger.component.mjs +4 -4
  8. package/esm2022/lib/Reusables/reusable-pages/logger/logger.interface.mjs +1 -1
  9. package/esm2022/lib/Reusables/reusable-pages/logger/logger.module.mjs +4 -4
  10. package/esm2022/lib/Reusables/reusable-pages/logger/logger.service.mjs +3 -3
  11. package/esm2022/lib/Reusables/reusable-pages/page-not-found/page-not-found.component.mjs +3 -3
  12. package/esm2022/lib/Reusables/reusable-pages/reset/reset-routing.module.mjs +4 -4
  13. package/esm2022/lib/Reusables/reusable-pages/reset/reset.component.mjs +4 -4
  14. package/esm2022/lib/Reusables/reusable-pages/reset/reset.module.mjs +4 -4
  15. package/esm2022/lib/Reusables/reusable-pages/robot/robot-routing.module.mjs +4 -4
  16. package/esm2022/lib/Reusables/reusable-pages/robot/robot.component.mjs +3 -3
  17. package/esm2022/lib/Reusables/reusable-pages/robot/robot.module.mjs +4 -4
  18. package/esm2022/lib/Reusables/reusable-pages/timeout-tester/timeout-tester-routing.module.mjs +4 -4
  19. package/esm2022/lib/Reusables/reusable-pages/timeout-tester/timeout-tester.component.mjs +4 -4
  20. package/esm2022/lib/Reusables/reusable-pages/timeout-tester/timeout-tester.module.mjs +4 -4
  21. package/esm2022/lib/Reusables/reusable-pages/user-activity/ua-extras/user-activity.service.mjs +3 -3
  22. package/esm2022/lib/Reusables/reusable-pages/version/version-routing.module.mjs +4 -4
  23. package/esm2022/lib/Reusables/reusable-pages/version/version.component.mjs +3 -3
  24. package/esm2022/lib/Reusables/reusable-pages/version/version.module.mjs +4 -4
  25. package/esm2022/lib/Reusables/reusable-pages/version/version.service.mjs +4 -4
  26. package/esm2022/lib/Services/Interceptors/authentication-interceptor.service.mjs +5 -5
  27. package/esm2022/lib/Services/Interceptors/global-error-handler.service.mjs +3 -3
  28. package/esm2022/lib/Services/Interceptors/logger-interceptor.service.mjs +5 -5
  29. package/esm2022/lib/Services/Interceptors/request-loader-interceptor.service.mjs +5 -5
  30. package/esm2022/lib/Services/Interceptors/request-timeout.service.mjs +4 -4
  31. package/esm2022/lib/Services/api.service.mjs +4 -4
  32. package/esm2022/lib/Services/app.service.mjs +3 -3
  33. package/esm2022/lib/Services/base.effect.mjs +3 -3
  34. package/esm2022/lib/Services/base.facade.service.mjs +1 -1
  35. package/esm2022/lib/Services/base.service.mjs +4 -4
  36. package/esm2022/lib/Services/cache/cache-updater.service.mjs +3 -3
  37. package/esm2022/lib/Services/cache/cache.service.mjs +4 -4
  38. package/esm2022/lib/Services/cache/local-cache.service.mjs +4 -4
  39. package/esm2022/lib/Services/cache/saver.service.mjs +3 -3
  40. package/esm2022/lib/Services/debouncer.service.mjs +4 -4
  41. package/esm2022/lib/Services/htmler.service.mjs +3 -3
  42. package/esm2022/lib/Services/input.service.mjs +4 -4
  43. package/esm2022/lib/Services/page-loader.service.mjs +7 -7
  44. package/esm2022/lib/Services/page.service.mjs +3 -3
  45. package/esm2022/lib/Services/route.service.mjs +4 -4
  46. package/esm2022/lib/Services/service-worker/check-for-update.service.mjs +4 -4
  47. package/esm2022/lib/Services/service-worker/handle-unrecoverable-state.service.mjs +3 -3
  48. package/esm2022/lib/Services/service-worker/log-update.service.mjs +4 -4
  49. package/esm2022/lib/Services/service-worker/prompt-update.service.mjs +3 -3
  50. package/esm2022/lib/Services/service-worker/service-worker.service.mjs +4 -4
  51. package/esm2022/lib/Services/storage.service.mjs +4 -4
  52. package/esm2022/lib/Services/theme.service.mjs +3 -3
  53. package/esm2022/lib/Services/translation.service.mjs +4 -4
  54. package/esm2022/lib/Services/utility.service.mjs +4 -4
  55. package/esm2022/lib/Services/window-security.service.mjs +4 -4
  56. package/esm2022/lib/Shared/classes/page-loader.class.mjs +1 -1
  57. package/esm2022/lib/Shared/components/add-item/add-item.component.mjs +3 -3
  58. package/esm2022/lib/Shared/components/autocomplete/autocomplete-td-rf/autocomplete-td-rf.component.mjs +4 -4
  59. package/esm2022/lib/Shared/components/autocomplete/autocomplete.component.mjs +4 -4
  60. package/esm2022/lib/Shared/components/autocomplete/autocomplete.service.mjs +4 -4
  61. package/esm2022/lib/Shared/components/btn/btn-lg/btn-lg.component.mjs +3 -3
  62. package/esm2022/lib/Shared/components/btn/btn-link/btn-link.component.mjs +3 -3
  63. package/esm2022/lib/Shared/components/btn/btn.component.mjs +4 -4
  64. package/esm2022/lib/Shared/components/btn/btn.service.mjs +4 -4
  65. package/esm2022/lib/Shared/components/btn/details-btn/details-btn.component.mjs +3 -3
  66. package/esm2022/lib/Shared/components/card/card.component.mjs +3 -3
  67. package/esm2022/lib/Shared/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
  68. package/esm2022/lib/Shared/components/confirm-dialog/confirm-dialog.service.mjs +4 -4
  69. package/esm2022/lib/Shared/components/core/button/button.component.mjs +3 -3
  70. package/esm2022/lib/Shared/components/documents-name-display/documents-name-display.component.mjs +4 -4
  71. package/esm2022/lib/Shared/components/editable-text-case/editable-text-case.component.mjs +4 -4
  72. package/esm2022/lib/Shared/components/export-table/export-table.component.mjs +4 -4
  73. package/esm2022/lib/Shared/components/fields-to-display/fields-to-display.component.mjs +4 -4
  74. package/esm2022/lib/Shared/components/file-upload/file-upload.component.mjs +4 -4
  75. package/esm2022/lib/Shared/components/form-error/form-error.component.mjs +4 -4
  76. package/esm2022/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.mjs +6 -6
  77. package/esm2022/lib/Shared/components/form-generator/form-generator.base.component.mjs +11 -2
  78. package/esm2022/lib/Shared/components/form-generator/form-generator.component.mjs +4 -4
  79. package/esm2022/lib/Shared/components/form-generator/form-generator.service.mjs +3 -3
  80. package/esm2022/lib/Shared/components/form-link/form-link.component.mjs +3 -3
  81. package/esm2022/lib/Shared/components/form-tab-headers/form-tab-headers.component.mjs +3 -3
  82. package/esm2022/lib/Shared/components/index-comp-layout/index-comp-layout.component.mjs +7 -7
  83. package/esm2022/lib/Shared/components/info-dialog/info-dialog.component.mjs +4 -4
  84. package/esm2022/lib/Shared/components/info-dialog/info-dialog.service.mjs +4 -4
  85. package/esm2022/lib/Shared/components/info-icon/info-icon.component.mjs +3 -3
  86. package/esm2022/lib/Shared/components/input/date-input/date-input.component.mjs +5 -5
  87. package/esm2022/lib/Shared/components/input/day-hour-min-input/day-hour-min-input.component.mjs +4 -4
  88. package/esm2022/lib/Shared/components/input/input-base.component.mjs +4 -4
  89. package/esm2022/lib/Shared/components/input/input-basic.component.mjs +4 -4
  90. package/esm2022/lib/Shared/components/input/input-control.component.mjs +3 -3
  91. package/esm2022/lib/Shared/components/input/input-label/input-label.component.mjs +3 -3
  92. package/esm2022/lib/Shared/components/input/input-td-rf.component.mjs +4 -4
  93. package/esm2022/lib/Shared/components/input/input.component.mjs +3 -3
  94. package/esm2022/lib/Shared/components/input/input.service.mjs +4 -4
  95. package/esm2022/lib/Shared/components/input/inputs-pipes.pipe.mjs +26 -26
  96. package/esm2022/lib/Shared/components/input/validation-message/validation-message.component.mjs +6 -6
  97. package/esm2022/lib/Shared/components/input/validation-message/validation-message.service.mjs +3 -3
  98. package/esm2022/lib/Shared/components/input/year-month-td-rf/year-month-td-rf.component.mjs +3 -3
  99. package/esm2022/lib/Shared/components/input-NgModel/input-ngmodel.component.mjs +4 -4
  100. package/esm2022/lib/Shared/components/input-NgModel/validation-message-ngmodel/validation-message-ngmodel.component.mjs +3 -3
  101. package/esm2022/lib/Shared/components/input-table/input-table.component.mjs +4 -4
  102. package/esm2022/lib/Shared/components/input-table/input-table.service.mjs +3 -3
  103. package/esm2022/lib/Shared/components/label/label.component.mjs +3 -3
  104. package/esm2022/lib/Shared/components/loader/loader-animations/blinking-blocks/blinking-blocks.component.mjs +3 -3
  105. package/esm2022/lib/Shared/components/loader/loader-animations/bouncing-ball/bouncing-ball.component.mjs +3 -3
  106. package/esm2022/lib/Shared/components/loader/loader-animations/fading-bars/fading-bars.component.mjs +3 -3
  107. package/esm2022/lib/Shared/components/loader/loader-animations/fading-circles/fading-circles.component.mjs +3 -3
  108. package/esm2022/lib/Shared/components/loader/loader-animations/ring-ripples/ring-ripples.component.mjs +3 -3
  109. package/esm2022/lib/Shared/components/loader/loader.component.mjs +3 -3
  110. package/esm2022/lib/Shared/components/loader/spinner.component.mjs +3 -3
  111. package/esm2022/lib/Shared/components/modal/modal-body.directive.mjs +3 -3
  112. package/esm2022/lib/Shared/components/modal/modal-footer.directive.mjs +3 -3
  113. package/esm2022/lib/Shared/components/modal/modal.component.mjs +3 -3
  114. package/esm2022/lib/Shared/components/modal-form/modal-form.component.mjs +3 -3
  115. package/esm2022/lib/Shared/components/modal-header/modal-header.component.mjs +3 -3
  116. package/esm2022/lib/Shared/components/narration-history-comp/narration-history-comp.component.mjs +4 -4
  117. package/esm2022/lib/Shared/components/notifications/notifications.component.mjs +3 -3
  118. package/esm2022/lib/Shared/components/notifications/notifications.service.mjs +3 -3
  119. package/esm2022/lib/Shared/components/page-center-body/page-center-body.component.mjs +3 -3
  120. package/esm2022/lib/Shared/components/page-template/page-template.component.mjs +4 -4
  121. package/esm2022/lib/Shared/components/page-to-component/page-to-component.component.mjs +6 -6
  122. package/esm2022/lib/Shared/components/page-to-component/page-to-component.directive.mjs +3 -3
  123. package/esm2022/lib/Shared/components/page-to-component/page-to-component.service.mjs +3 -3
  124. package/esm2022/lib/Shared/components/paginator/paginator.component.mjs +4 -4
  125. package/esm2022/lib/Shared/components/phone-number/phone-number.component.mjs +4 -4
  126. package/esm2022/lib/Shared/components/phone-number/phone-number.model.mjs +1 -1
  127. package/esm2022/lib/Shared/components/phone-number/phone-number.service.mjs +3 -3
  128. package/esm2022/lib/Shared/components/rich-text-editor/rich-text-editor.component.mjs +12 -12
  129. package/esm2022/lib/Shared/components/rich-text-editor-rf/rich-text-editor-rf.component.mjs +12 -12
  130. package/esm2022/lib/Shared/components/row-actions/row-actions.component.mjs +3 -3
  131. package/esm2022/lib/Shared/components/svg-icon/svg-icon.component.mjs +3 -3
  132. package/esm2022/lib/Shared/components/svg-icon/svg-icon.service.mjs +3 -3
  133. package/esm2022/lib/Shared/components/table-https/table-https.component.mjs +4 -4
  134. package/esm2022/lib/Shared/components/table-input/table-input-row/table-input-row.component.mjs +3 -3
  135. package/esm2022/lib/Shared/components/table-input/table-input.component.mjs +4 -4
  136. package/esm2022/lib/Shared/components/table-plain/table-base.component.mjs +4 -4
  137. package/esm2022/lib/Shared/components/table-plain/table-plain.component.mjs +4 -4
  138. package/esm2022/lib/Shared/components/table-plain/table-plain.service.mjs +3 -3
  139. package/esm2022/lib/Shared/components/table-plain/table.pipe.mjs +20 -20
  140. package/esm2022/lib/Shared/components/text/text.component.mjs +3 -3
  141. package/esm2022/lib/Shared/components/text-area-modal/text-area-modal.component.mjs +3 -3
  142. package/esm2022/lib/Shared/components/text-area-modal/text-area-modal.service.mjs +3 -3
  143. package/esm2022/lib/Shared/components/text-case-1/text-case-1.component.mjs +4 -4
  144. package/esm2022/lib/Shared/components/text-case-2/text-case-2.component.mjs +3 -3
  145. package/esm2022/lib/Shared/components/text-case-2/text-case.service.mjs +4 -4
  146. package/esm2022/lib/Shared/components/text-case-input/text-case-input.component.mjs +3 -3
  147. package/esm2022/lib/Shared/components/toggle-input-form/toggle-input-form.component.mjs +3 -3
  148. package/esm2022/lib/Shared/components/translator-case/translator-case.component.mjs +3 -3
  149. package/esm2022/lib/Shared/components/vertical-nav/vertical-nav.component.mjs +4 -4
  150. package/esm2022/lib/Shared/components/view-form-buttons/view-form-buttons.component.mjs +3 -3
  151. package/esm2022/lib/Shared/components/webcam-media/webcam-media.component.mjs +4 -4
  152. package/esm2022/lib/Shared/directives/commafy-number.directive.mjs +3 -3
  153. package/esm2022/lib/Shared/directives/drag-drop-file-upload.directive.mjs +4 -4
  154. package/esm2022/lib/Shared/directives/form-invalid-class.directive.mjs +3 -3
  155. package/esm2022/lib/Shared/directives/index.directive.mjs +23 -23
  156. package/esm2022/lib/Shared/directives/input-formatter.directive.mjs +14 -14
  157. package/esm2022/lib/Shared/directives/integer-only.directive.mjs +4 -4
  158. package/esm2022/lib/Shared/directives/mHref.directive.mjs +3 -3
  159. package/esm2022/lib/Shared/directives/negative-number-only.directive.mjs +4 -4
  160. package/esm2022/lib/Shared/directives/responsiveness.directive.mjs +20 -20
  161. package/esm2022/lib/Shared/directives/translator.directive.mjs +4 -4
  162. package/esm2022/lib/Shared/models/form.class.mjs +1 -1
  163. package/esm2022/lib/Shared/pipes/form-invalid-class.pipe.mjs +3 -3
  164. package/esm2022/lib/Shared/pipes/paginator.pipe.mjs +3 -3
  165. package/esm2022/lib/Shared/pipes/translate.pipe.mjs +7 -7
  166. package/esm2022/lib/Shared/pipes/utility.pipe.mjs +134 -134
  167. package/esm2022/lib/Shared/prototypes/prototypes.mjs +1 -1
  168. package/esm2022/lib/Shared/shared.module.mjs +4 -4
  169. package/esm2022/lib/authentication/web-user/web-user-authentication.guard.mjs +1 -1
  170. package/esm2022/lib/authentication/web-user/web-user-authentication.interceptor.mjs +1 -1
  171. package/esm2022/lib/authentication/web-user/web-user-authentication.service.mjs +3 -3
  172. package/esm2022/lib/authentication/web-user/web-user-forgot-password.component.mjs +4 -4
  173. package/esm2022/lib/authentication/web-user/web-user-login.component.mjs +4 -4
  174. package/esm2022/lib/authentication/web-user/web-user-reset-password.component.mjs +4 -4
  175. package/esm2022/lib/configs/base-functions.mjs +1 -1
  176. package/fesm2022/ets-fe-ng-sdk.mjs +766 -758
  177. package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
  178. package/lib/Services/utility.service.d.ts +5 -5
  179. package/lib/Shared/components/btn/btn.component.d.ts +3 -3
  180. package/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.d.ts +1 -1
  181. package/lib/Shared/components/form-generator/form-generator.base.component.d.ts +3 -0
  182. package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
  183. package/lib/Shared/components/input/input-base.component.d.ts +3 -7
  184. package/lib/Shared/components/table-https/table-https.component.d.ts +3 -3
  185. package/lib/Shared/components/text-case-2/text-case.service.d.ts +1 -1
  186. package/package.json +1 -1
@@ -159,10 +159,10 @@ export class DateInputComponent {
159
159
  this.matCalendar.activeDate = new Date(this.formValue().date);
160
160
  }
161
161
  }
162
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.InputService }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: DateInputComponent, isStandalone: true, selector: "date-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, inpCl: { classPropertyName: "inpCl", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, cls: { classPropertyName: "cls", publicName: "cls", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: false, isRequired: false, transformFunction: null }, _max: { classPropertyName: "_max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, _min: { classPropertyName: "_min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, showValidation: { classPropertyName: "showValidation", publicName: "showValidation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChanged: "valueChanged" }, viewQueries: [{ propertyName: "matCalendar", first: true, predicate: MatCalendar, descendants: true }], ngImport: i0, template: "<div class=\"customdate ps-2 {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100 align-items-center\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formattedValue()\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
162
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.InputService }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
163
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: DateInputComponent, isStandalone: true, selector: "date-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, inpCl: { classPropertyName: "inpCl", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, cls: { classPropertyName: "cls", publicName: "cls", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: false, isRequired: false, transformFunction: null }, _max: { classPropertyName: "_max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, _min: { classPropertyName: "_min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, showValidation: { classPropertyName: "showValidation", publicName: "showValidation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChanged: "valueChanged" }, viewQueries: [{ propertyName: "matCalendar", first: true, predicate: MatCalendar, descendants: true }], ngImport: i0, template: "<div class=\"customdate ps-2 {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100 align-items-center\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formattedValue()\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::-webkit-input-placeholder{text-transform:none;color:var(--phFC)}:host :-ms-input-placeholder{text-transform:none;color:var(--phFC)}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
164
164
  }
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DateInputComponent, decorators: [{
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DateInputComponent, decorators: [{
166
166
  type: Component,
167
167
  args: [{ selector: 'date-input', standalone: true, imports: [
168
168
  AsyncPipe,
@@ -187,7 +187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
187
187
  NgSwitchDefault,
188
188
  ReactiveFormsModule,
189
189
  MatMenuModule,
190
- ], template: "<div class=\"customdate ps-2 {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100 align-items-center\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formattedValue()\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"] }]
190
+ ], template: "<div class=\"customdate ps-2 {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100 align-items-center\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formattedValue()\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::-webkit-input-placeholder{text-transform:none;color:var(--phFC)}:host :-ms-input-placeholder{text-transform:none;color:var(--phFC)}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"] }]
191
191
  }], ctorParameters: () => [{ type: i1.InputService }, { type: i2.DatePipe }], propDecorators: { valueChanged: [{
192
192
  type: Output
193
193
  }], value: [{
@@ -211,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
211
211
  type: ViewChild,
212
212
  args: [MatCalendar]
213
213
  }] } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEksT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFB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QUFxQix3bEJBRXJCLG1CQUFtQixpTkFDbkIsYUFBYTs7MkZBS0osa0JBQWtCO2tCQTlCOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsUUFBUTt3QkFDUixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxLQUFLO3dCQUNMLElBQUk7d0JBQ0osUUFBUTt3QkFDUixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGFBQWE7cUJBQ2Q7d0dBeUJTLFlBQVk7c0JBQXJCLE1BQU07Z0JBS00sS0FBSztzQkFBakIsS0FBSztnQkFpQ0csS0FBSztzQkFBYixLQUFLO2dCQUdGLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxLQUFLO2dCQU1SLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxLQUFLO2dCQUtILE9BQU87c0JBQWYsS0FBSztnQkFJYSxLQUFLO3NCQUF2QixLQUFLO3VCQUFDLE1BQU07Z0JBS0osY0FBYztzQkFBdEIsS0FBSztnQkFDa0IsV0FBVztzQkFBbEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBEYXRlUGlwZSwgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgVXBwZXJDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSwgTWF0UmlwcGxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRDYWxlbmRhciwgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IElucHV0Q2xhc3NQaXBlIH0gZnJvbSAnLi4vaW5wdXRzLXBpcGVzLnBpcGUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0ZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgVXBwZXJDYXNlUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJbnB1dENsYXNzUGlwZSxcbiAgICBEYXRlUGlwZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBOZ0ZvcixcbiAgICBOZ0lmLFxuICAgIE5nU3dpdGNoLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIGNodW5rc0xlbmd0aDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZm9ybSA9IHNpZ25hbChcbiAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGRhdGU6IG5ldyBGb3JtQ29udHJvbDxEYXRlPihudWxsKSxcbiAgICAgIGhvdXJzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICAgIG1pbnV0ZXM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgc2Vjb25kczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgICBtZXJpZGllbTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gICAgICByYXdWYWx1ZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgfSksXG4gICk7XG5cbiAgZm9ybWF0dGVkVmFsdWUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb250cm9sVmFsdWUoKSwgYE1NTS4gZGQsIHl5eXkke3RoaXMuc2hvd1RpbWUoKSA/ICcuIGhoOm1tOnNzIGEnIDogJyd9YCk7XG4gIH0pO1xuXG4gIC8vIGZvcm1WYWx1ZSA9IHNpZ25hbCh0aGlzLmZvcm0oKS5nZXRSYXdWYWx1ZSgpKTtcbiAgZm9ybVZhbHVlID0gdG9TaWduYWwodGhpcy5mb3JtKCkudmFsdWVDaGFuZ2VzKTtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBzaG93VGltZSA9IHNpZ25hbDxib29sZWFuPihudWxsKTtcbiAgc2tpcFBhdGNoRnJvbUNvbnRyb2w6IGJvb2xlYW47XG4gIHNraXBQYXRjaENvbnRyb2w6IGJvb2xlYW47XG4gIGNvbnRyb2xWYWx1ZSA9IHNpZ25hbDxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCAmJiB2ID09IHRoaXMuY29udHJvbFZhbHVlKCkpIHtcbiAgICAgIHRoaXMuc2tpcFBhdGNoRnJvbUNvbnRyb2wgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHYpIHtcbiAgICAgIHRoaXMuY29udHJvbFZhbHVlLnNldCh2KTtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5za2lwUGF0Y2hDb250cm9sID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybSgpLmNvbnRyb2xzLmRhdGUucGF0Y2hWYWx1ZShuZXcgRGF0ZSh2KSwgeyBlbWl0RXZlbnQ6ICF0aGlzLnNob3dUaW1lKCkgfSk7XG4gICAgICBpZiAoIXRoaXMuc2hvd1RpbWUoKSkgcmV0dXJuO1xuICAgICAgY29uc3QgdGltZUNvbXAgPSB2LnNwbGl0KCdUJyk/LlsxXTtcbiAgICAgIC8vIGlmICghdGltZUNvbXApIHJldHVybjtcblxuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGltZUNvbXAgPyB0aW1lQ29tcC5zcGxpdCgnOicpIDogWycxMicsICcwMCcsICcwMCddO1xuICAgICAgdGhpcy5mb3JtKCkucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGhvdXJzOiAoJzAnICsgKCtob3VycyAlIDEyKSkuc2xpY2UoLTIpLFxuICAgICAgICBtaW51dGVzLFxuICAgICAgICBzZWNvbmRzOiBzZWNvbmRzPy5zbGljZSgwLCAyKSxcbiAgICAgICAgbWVyaWRpZW06ICtob3VycyA+IDEyID8gMTIgOiAwLFxuICAgICAgfSk7XG4gICAgICAvLyB0aGlzLm1hdENhbGVuZGFyPy51cGRhdGVUb2RheXNEYXRlKCk7XG4gICAgICAvLyB0aGlzLm1hdENhbGVuZGFyPy5fZ29Ub0RhdGVJblZpZXcodGhpcy5mb3JtLmNvbnRyb2xzLmRhdGUudmFsdWUsJ21vbnRoJylcbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybWF0dGVkVmFsdWUoKSkge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAvLyB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtKCkucmVzZXQoKTtcbiAgICB9XG4gICAgY29uc3QgZm9ybVZhbCA9IHRoaXMuZm9ybVZhbHVlKCk7XG4gIH1cbiAgaW5wQ2wgPSBpbnB1dDxzdHJpbmc+KCdjb250cm9sLWJnLWdyYXknKTtcbiAgY2xzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBASW5wdXQoKSB2YWxpZDogYm9vbGVhbjtcbiAgbWF4ID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWF4JylcbiAgc2V0IF9tYXgodjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWF4LnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgbWluID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWluJylcbiAgc2V0IF9taW4odjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWluLnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgZGVidWcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgICB0aGlzLnNob3dUaW1lLnNldCh2ID09ICdkYXRldGltZS1sb2NhbCcpO1xuICAgIHRoaXMudHlwZSA9IHY7XG4gICAgdGhpcy5jaHVua3NMZW5ndGggPSB0aGlzLnNob3dUaW1lKCkgPyB0aGlzLmlTLmRhdGVJbnB1dENodW5rcy5sZW5ndGggOiB0aGlzLmlTLmRhdGVJbnB1dENodW5rcy5maW5kSW5kZXgoKHgpID0+IHguaXNUaW1lKTtcbiAgfVxuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgQFZpZXdDaGlsZChNYXRDYWxlbmRhcikgbWF0Q2FsZW5kYXI6IE1hdENhbGVuZGFyPGFueT47XG4gIHN1YnM6IHsgW3g6IHN0cmluZ106IFN1YnNjcmlwdGlvbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlTOiBJbnB1dFNlcnZpY2UsXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgKSB7XG4gICAgdGhpcy5mb3JtYXR0ZXJGdW5jdGlvbigpO1xuICB9XG4gIGZvcm1hdHRlckZ1bmN0aW9uID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybSgpXG4gICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgICAgICBpZiAoIU9iamVjdC52YWx1ZXMoY2hhbmdlKS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdChudWxsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRhdGUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtZXJpZGllbSB9ID0gY2hhbmdlO1xuICAgICAgICBpZiAoIWRhdGUpIHJldHVybjtcbiAgICAgICAgY29uc3QgW2RheVN0ciwgc2hvcnRNb250aCwgZGF5LCB5ZWFyXSA9IGRhdGUudG9EYXRlU3RyaW5nKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgY29uc3QgZGF0ZUlTT1N0cmluZyA9IGAke3llYXJ9LSR7Q29uZmlnLk1vbnRoc1tkYXRlPy5nZXRNb250aCgpXT8uaXNvU3RyfS0ke2RheX1gO1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgdGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnNraXBQYXRjaENvbnRyb2wpIHtcbiAgICAgICAgICB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgICAvLyAgIGRhdGUsXG4gICAgICAgICAgLy8gICBob3VycyxcbiAgICAgICAgICAvLyAgIG1pbnV0ZXMsXG4gICAgICAgICAgLy8gICBzZWNvbmRzLFxuICAgICAgICAgIC8vICAgbWVyaWRpZW0sXG4gICAgICAgICAgLy8gICB0aGlzLnNob3dUaW1lLFxuICAgICAgICAgIC8vICAgZGF0ZUlTT1N0cmluZyArXG4gICAgICAgICAgLy8gICAgIGBUJHsoJzAnICsgKCgraG91cnMgJSAxMikgKyBtZXJpZGllbSkpLnNsaWNlKC0yKSB8fCAnMDAnfToke21pbnV0ZXMgfHwgJzAwJ306JHtcbiAgICAgICAgICAvLyAgICAgICBzZWNvbmRzIHx8ICcwMCdcbiAgICAgICAgICAvLyAgICAgfWBcbiAgICAgICAgICAvLyApO1xuICAgICAgICAgIGlmICh0aGlzLnNob3dUaW1lKCkpXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KGRhdGVJU09TdHJpbmcgKyBgVCR7KCcwJyArICgoK2hvdXJzICUgMTIpICsgbWVyaWRpZW0pKS5zbGljZSgtMikgfHwgJzAwJ306JHttaW51dGVzIHx8ICcwMCd9OiR7c2Vjb25kcyB8fCAnMDAnfWApO1xuICAgICAgICAgIGVsc2UgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdChkYXRlSVNPU3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH07XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy9DYWxsZWQgb25jZSwgYmVmb3JlIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgT25EZXN0cm95JyB0byB0aGUgY2xhc3MuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zdWJzIHx8IHt9KSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuc3Vicywga2V5KSkge1xuICAgICAgICB0aGlzLnN1YnM/LltrZXldPy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBuZ0FmdGVyQ29udGVudEluaXQgd2hlbiB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZC4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmZvcm1WYWx1ZSgpPy5kYXRlKSB7XG4gICAgICB0aGlzLm1hdENhbGVuZGFyLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvcm1WYWx1ZSgpLmRhdGUpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImN1c3RvbWRhdGUgcHMtMiB7eyBjbHMoKSB9fSB7eyBpbnB1dENsYXNzKCkgfX1cIiBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiByZWFkb25seSgpIHx8IGRpc2FibGVkKCkgfVwiPlxuICA8ZGl2IGNsYXNzPVwicm93IGctMSB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wgb3ZlcmZsb3ctYXV0byBoaWRlLXNjcm9sbC14XCIgW2Zvcm1Hcm91cF09XCJmb3JtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZvcm0yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpUy5kYXRlSW5wdXRDaHVua3M7bGV0IGNpPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIidhdXRvJ3x8aXRlbS53aWR0aFwiIGNsYXNzPVwiICBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKm5nSWY9XCJjaTxjaHVua3NMZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5zZXBlcmF0b3J9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBub2Zvcm1hdCBjbGFzcz1cImQtaS1mXCIgaWQ9XCJ7e3RoaXMuaWR9fV9kaV97e2l0ZW0uZm9ybUNvbnRyb2xOYW1lfX1cIiBbdHlwZV09XCJpdGVtLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5mb3JtQ29udHJvbE5hbWVcIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIyMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpdGVtLmxhYmVsXCIgW3N0eWxlLndpZHRoLmNoXT1cIml0ZW0/Lmxlbmd0aFwiIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwidy0xMDAgYm9yZGVyLTBcIlxuICAgICAgICBbdmFsdWVdPVwiZm9ybWF0dGVkVmFsdWUoKVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaVMuZm9ybWF0VXNlcklucHV0KCRldmVudCwgZm9ybSgpLCBzaG93VGltZSgpLCBpZCgpKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eXt7IHNob3dUaW1lKCkgPyAnIGhoOm1tOnNzOmFhJyA6ICcnIH19XCJcbiAgICAgICAgW3JlYWRPbmx5XT1cImRpc2FibGVkKClcIiAvPlxuICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJ3LTEwMCBib3JkZXItMFwiIFt2YWx1ZV09XCJmb3JtLmNvbnRyb2xzLmZvcm1hdHRlZFZhbHVlLnZhbHVlXCIgKGNoYW5nZSk9XCJmb3JtYXRVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImNvbnRyb2w/LmRpc2FibGVkXCIgW21hdC1tZW51LXRyaWdnZXItZm9yXT1cImNvbnRyb2w/LmRpc2FibGVkfHxyZWFkb25seT9udWxsOnBpY2tlclwiPiAtLT5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFkaXNhYmxlZCgpICYmICFyZWFkb25seSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxuICAgICAgICAgIG1hdEljb25TdWZmaXhcbiAgICAgICAgICBbbWF0LW1lbnUtdHJpZ2dlci1mb3JdPVwicGlja2VyXCJcbiAgICAgICAgICAoY2xpY2spPVwiZm9ybVZhbHVlKCk/LmRhdGUgPyBtYXRDYWxSZWYuX2dvVG9EYXRlSW5WaWV3KGZvcm1WYWx1ZSgpPy5kYXRlLCAnbW9udGgnKSA6IG51bGxcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG1hdC1tZW51IGNsYXNzPVwiZnVsbC13aWR0aFwiICNwaWNrZXI9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYWZ0ZXJcIj5cbiAgPGRpdiBjbGFzcz1cImN1c3RvbWRhdGUtcGlja2VyXCIgW25nQ2xhc3NdPVwieyAncGUtMyc6IHNob3dUaW1lKCkgfVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbS0wIGd5LTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctYXV0b1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udFwiICNjYWxlbmRhckNvbnQ+XG4gICAgICAgICAgPG1hdC1jYWxlbmRhclxuICAgICAgICAgICAgI21hdENhbFJlZlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImZvcm1WYWx1ZSgpPy5kYXRlXCJcbiAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heCgpXCJcbiAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbigpXCJcbiAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJmb3JtKCkuY29udHJvbHMuZGF0ZS5wYXRjaFZhbHVlKCRldmVudClcIj48L21hdC1jYWxlbmRhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoc2hvd1RpbWUoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtMTAgb3ZlcmZsb3ctaGlkZGVuIG14LTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1vcHRpb25zLWNvbnQgaGlkZS1zY3JvbGxcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImNhbGVuZGFyQ29udC5vZmZzZXRIZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja3ktdG9wIGJnLXdoaXRlIHJvdW5kZWQtMTAgdGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdIUicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMuaG91cnNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpUy50aW1lSG91cnMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyb3VuZGVkLTEwXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnTUlOJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz1cImhpZGUtc2Nyb2xsXCIgW2Zvcm1Db250cm9sXT1cImZvcm0oKS5jb250cm9scy5taW51dGVzXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZU1pbnV0ZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyb3VuZGVkLTEwXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnUycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMuc2Vjb25kc1wiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGlTLnRpbWVTZWNvbmRzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBvdmVyZmxvdy1oaWRkZW4gbXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLW9wdGlvbnMtY29udCBoaWRlLXNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiaGlkZS1zY3JvbGxcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybSgpLmNvbnRyb2xzLm1lcmlkaWVtXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZU1lcmlkaWVtKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtLmluY3JlbWVudG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT5cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEksT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFB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QixjQUFjLDhCQUNkLGdCQUFnQiw4QkFDaEIsbUJBQW1CLCtCQUNuQixPQUFPLCtFQUlQLGdCQUFnQixvREFFaEIsZUFBZSw4QkFDZixlQUFlLDhCQUNmLHFCQUFxQix3bEJBRXJCLG1CQUFtQixpTkFDbkIsYUFBYTs7MkZBS0osa0JBQWtCO2tCQTlCOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsUUFBUTt3QkFDUixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxLQUFLO3dCQUNMLElBQUk7d0JBQ0osUUFBUTt3QkFDUixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGFBQWE7cUJBQ2Q7d0dBeUJTLFlBQVk7c0JBQXJCLE1BQU07Z0JBS00sS0FBSztzQkFBakIsS0FBSztnQkFpQ0csS0FBSztzQkFBYixLQUFLO2dCQUdGLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxLQUFLO2dCQU1SLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxLQUFLO2dCQUtILE9BQU87c0JBQWYsS0FBSztnQkFJYSxLQUFLO3NCQUF2QixLQUFLO3VCQUFDLE1BQU07Z0JBS0osY0FBYztzQkFBdEIsS0FBSztnQkFDa0IsV0FBVztzQkFBbEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBEYXRlUGlwZSwgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgVXBwZXJDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSwgTWF0UmlwcGxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRDYWxlbmRhciwgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IElucHV0Q2xhc3NQaXBlIH0gZnJvbSAnLi4vaW5wdXRzLXBpcGVzLnBpcGUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0ZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgVXBwZXJDYXNlUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJbnB1dENsYXNzUGlwZSxcbiAgICBEYXRlUGlwZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBOZ0ZvcixcbiAgICBOZ0lmLFxuICAgIE5nU3dpdGNoLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIGNodW5rc0xlbmd0aDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZm9ybSA9IHNpZ25hbChcbiAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGRhdGU6IG5ldyBGb3JtQ29udHJvbDxEYXRlPihudWxsKSxcbiAgICAgIGhvdXJzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICAgIG1pbnV0ZXM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgc2Vjb25kczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgICBtZXJpZGllbTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gICAgICByYXdWYWx1ZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgfSksXG4gICk7XG5cbiAgZm9ybWF0dGVkVmFsdWUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb250cm9sVmFsdWUoKSwgYE1NTS4gZGQsIHl5eXkke3RoaXMuc2hvd1RpbWUoKSA/ICcuIGhoOm1tOnNzIGEnIDogJyd9YCk7XG4gIH0pO1xuXG4gIC8vIGZvcm1WYWx1ZSA9IHNpZ25hbCh0aGlzLmZvcm0oKS5nZXRSYXdWYWx1ZSgpKTtcbiAgZm9ybVZhbHVlID0gdG9TaWduYWwodGhpcy5mb3JtKCkudmFsdWVDaGFuZ2VzKTtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBzaG93VGltZSA9IHNpZ25hbDxib29sZWFuPihudWxsKTtcbiAgc2tpcFBhdGNoRnJvbUNvbnRyb2w6IGJvb2xlYW47XG4gIHNraXBQYXRjaENvbnRyb2w6IGJvb2xlYW47XG4gIGNvbnRyb2xWYWx1ZSA9IHNpZ25hbDxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCAmJiB2ID09IHRoaXMuY29udHJvbFZhbHVlKCkpIHtcbiAgICAgIHRoaXMuc2tpcFBhdGNoRnJvbUNvbnRyb2wgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHYpIHtcbiAgICAgIHRoaXMuY29udHJvbFZhbHVlLnNldCh2KTtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5za2lwUGF0Y2hDb250cm9sID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybSgpLmNvbnRyb2xzLmRhdGUucGF0Y2hWYWx1ZShuZXcgRGF0ZSh2KSwgeyBlbWl0RXZlbnQ6ICF0aGlzLnNob3dUaW1lKCkgfSk7XG4gICAgICBpZiAoIXRoaXMuc2hvd1RpbWUoKSkgcmV0dXJuO1xuICAgICAgY29uc3QgdGltZUNvbXAgPSB2LnNwbGl0KCdUJyk/LlsxXTtcbiAgICAgIC8vIGlmICghdGltZUNvbXApIHJldHVybjtcblxuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGltZUNvbXAgPyB0aW1lQ29tcC5zcGxpdCgnOicpIDogWycxMicsICcwMCcsICcwMCddO1xuICAgICAgdGhpcy5mb3JtKCkucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGhvdXJzOiAoJzAnICsgKCtob3VycyAlIDEyKSkuc2xpY2UoLTIpLFxuICAgICAgICBtaW51dGVzLFxuICAgICAgICBzZWNvbmRzOiBzZWNvbmRzPy5zbGljZSgwLCAyKSxcbiAgICAgICAgbWVyaWRpZW06ICtob3VycyA+IDEyID8gMTIgOiAwLFxuICAgICAgfSk7XG4gICAgICAvLyB0aGlzLm1hdENhbGVuZGFyPy51cGRhdGVUb2RheXNEYXRlKCk7XG4gICAgICAvLyB0aGlzLm1hdENhbGVuZGFyPy5fZ29Ub0RhdGVJblZpZXcodGhpcy5mb3JtLmNvbnRyb2xzLmRhdGUudmFsdWUsJ21vbnRoJylcbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybWF0dGVkVmFsdWUoKSkge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAvLyB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtKCkucmVzZXQoKTtcbiAgICB9XG4gICAgY29uc3QgZm9ybVZhbCA9IHRoaXMuZm9ybVZhbHVlKCk7XG4gIH1cbiAgaW5wQ2wgPSBpbnB1dDxzdHJpbmc+KCdjb250cm9sLWJnLWdyYXknKTtcbiAgY2xzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBASW5wdXQoKSB2YWxpZDogYm9vbGVhbjtcbiAgbWF4ID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWF4JylcbiAgc2V0IF9tYXgodjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWF4LnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgbWluID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWluJylcbiAgc2V0IF9taW4odjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWluLnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgZGVidWcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgICB0aGlzLnNob3dUaW1lLnNldCh2ID09ICdkYXRldGltZS1sb2NhbCcpO1xuICAgIHRoaXMudHlwZSA9IHY7XG4gICAgdGhpcy5jaHVua3NMZW5ndGggPSB0aGlzLnNob3dUaW1lKCkgPyB0aGlzLmlTLmRhdGVJbnB1dENodW5rcy5sZW5ndGggOiB0aGlzLmlTLmRhdGVJbnB1dENodW5rcy5maW5kSW5kZXgoKHgpID0+IHguaXNUaW1lKTtcbiAgfVxuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgQFZpZXdDaGlsZChNYXRDYWxlbmRhcikgbWF0Q2FsZW5kYXI6IE1hdENhbGVuZGFyPGFueT47XG4gIHN1YnM6IHsgW3g6IHN0cmluZ106IFN1YnNjcmlwdGlvbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlTOiBJbnB1dFNlcnZpY2UsXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgKSB7XG4gICAgdGhpcy5mb3JtYXR0ZXJGdW5jdGlvbigpO1xuICB9XG4gIGZvcm1hdHRlckZ1bmN0aW9uID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybSgpXG4gICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgICAgICBpZiAoIU9iamVjdC52YWx1ZXMoY2hhbmdlKS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdChudWxsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRhdGUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtZXJpZGllbSB9ID0gY2hhbmdlO1xuICAgICAgICBpZiAoIWRhdGUpIHJldHVybjtcbiAgICAgICAgY29uc3QgW2RheVN0ciwgc2hvcnRNb250aCwgZGF5LCB5ZWFyXSA9IGRhdGUudG9EYXRlU3RyaW5nKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgY29uc3QgZGF0ZUlTT1N0cmluZyA9IGAke3llYXJ9LSR7Q29uZmlnLk1vbnRoc1tkYXRlPy5nZXRNb250aCgpXT8uaXNvU3RyfS0ke2RheX1gO1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgdGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnNraXBQYXRjaENvbnRyb2wpIHtcbiAgICAgICAgICB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgICAvLyAgIGRhdGUsXG4gICAgICAgICAgLy8gICBob3VycyxcbiAgICAgICAgICAvLyAgIG1pbnV0ZXMsXG4gICAgICAgICAgLy8gICBzZWNvbmRzLFxuICAgICAgICAgIC8vICAgbWVyaWRpZW0sXG4gICAgICAgICAgLy8gICB0aGlzLnNob3dUaW1lLFxuICAgICAgICAgIC8vICAgZGF0ZUlTT1N0cmluZyArXG4gICAgICAgICAgLy8gICAgIGBUJHsoJzAnICsgKCgraG91cnMgJSAxMikgKyBtZXJpZGllbSkpLnNsaWNlKC0yKSB8fCAnMDAnfToke21pbnV0ZXMgfHwgJzAwJ306JHtcbiAgICAgICAgICAvLyAgICAgICBzZWNvbmRzIHx8ICcwMCdcbiAgICAgICAgICAvLyAgICAgfWBcbiAgICAgICAgICAvLyApO1xuICAgICAgICAgIGlmICh0aGlzLnNob3dUaW1lKCkpXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KGRhdGVJU09TdHJpbmcgKyBgVCR7KCcwJyArICgoK2hvdXJzICUgMTIpICsgbWVyaWRpZW0pKS5zbGljZSgtMikgfHwgJzAwJ306JHttaW51dGVzIHx8ICcwMCd9OiR7c2Vjb25kcyB8fCAnMDAnfWApO1xuICAgICAgICAgIGVsc2UgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdChkYXRlSVNPU3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH07XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy9DYWxsZWQgb25jZSwgYmVmb3JlIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgT25EZXN0cm95JyB0byB0aGUgY2xhc3MuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zdWJzIHx8IHt9KSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuc3Vicywga2V5KSkge1xuICAgICAgICB0aGlzLnN1YnM/LltrZXldPy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBuZ0FmdGVyQ29udGVudEluaXQgd2hlbiB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZC4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmZvcm1WYWx1ZSgpPy5kYXRlKSB7XG4gICAgICB0aGlzLm1hdENhbGVuZGFyLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvcm1WYWx1ZSgpLmRhdGUpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImN1c3RvbWRhdGUgcHMtMiB7eyBjbHMoKSB9fSB7eyBpbnB1dENsYXNzKCkgfX1cIiBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiByZWFkb25seSgpIHx8IGRpc2FibGVkKCkgfVwiPlxuICA8ZGl2IGNsYXNzPVwicm93IGctMSB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wgb3ZlcmZsb3ctYXV0byBoaWRlLXNjcm9sbC14XCIgW2Zvcm1Hcm91cF09XCJmb3JtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZvcm0yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpUy5kYXRlSW5wdXRDaHVua3M7bGV0IGNpPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIidhdXRvJ3x8aXRlbS53aWR0aFwiIGNsYXNzPVwiICBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKm5nSWY9XCJjaTxjaHVua3NMZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5zZXBlcmF0b3J9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBub2Zvcm1hdCBjbGFzcz1cImQtaS1mXCIgaWQ9XCJ7e3RoaXMuaWR9fV9kaV97e2l0ZW0uZm9ybUNvbnRyb2xOYW1lfX1cIiBbdHlwZV09XCJpdGVtLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5mb3JtQ29udHJvbE5hbWVcIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIyMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpdGVtLmxhYmVsXCIgW3N0eWxlLndpZHRoLmNoXT1cIml0ZW0/Lmxlbmd0aFwiIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwidy0xMDAgYm9yZGVyLTBcIlxuICAgICAgICBbdmFsdWVdPVwiZm9ybWF0dGVkVmFsdWUoKVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaVMuZm9ybWF0VXNlcklucHV0KCRldmVudCwgZm9ybSgpLCBzaG93VGltZSgpLCBpZCgpKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eXt7IHNob3dUaW1lKCkgPyAnIGhoOm1tOnNzOmFhJyA6ICcnIH19XCJcbiAgICAgICAgW3JlYWRPbmx5XT1cImRpc2FibGVkKClcIiAvPlxuICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJ3LTEwMCBib3JkZXItMFwiIFt2YWx1ZV09XCJmb3JtLmNvbnRyb2xzLmZvcm1hdHRlZFZhbHVlLnZhbHVlXCIgKGNoYW5nZSk9XCJmb3JtYXRVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImNvbnRyb2w/LmRpc2FibGVkXCIgW21hdC1tZW51LXRyaWdnZXItZm9yXT1cImNvbnRyb2w/LmRpc2FibGVkfHxyZWFkb25seT9udWxsOnBpY2tlclwiPiAtLT5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFkaXNhYmxlZCgpICYmICFyZWFkb25seSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxuICAgICAgICAgIG1hdEljb25TdWZmaXhcbiAgICAgICAgICBbbWF0LW1lbnUtdHJpZ2dlci1mb3JdPVwicGlja2VyXCJcbiAgICAgICAgICAoY2xpY2spPVwiZm9ybVZhbHVlKCk/LmRhdGUgPyBtYXRDYWxSZWYuX2dvVG9EYXRlSW5WaWV3KGZvcm1WYWx1ZSgpPy5kYXRlLCAnbW9udGgnKSA6IG51bGxcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG1hdC1tZW51IGNsYXNzPVwiZnVsbC13aWR0aFwiICNwaWNrZXI9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYWZ0ZXJcIj5cbiAgPGRpdiBjbGFzcz1cImN1c3RvbWRhdGUtcGlja2VyXCIgW25nQ2xhc3NdPVwieyAncGUtMyc6IHNob3dUaW1lKCkgfVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbS0wIGd5LTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctYXV0b1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udFwiICNjYWxlbmRhckNvbnQ+XG4gICAgICAgICAgPG1hdC1jYWxlbmRhclxuICAgICAgICAgICAgI21hdENhbFJlZlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImZvcm1WYWx1ZSgpPy5kYXRlXCJcbiAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heCgpXCJcbiAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbigpXCJcbiAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJmb3JtKCkuY29udHJvbHMuZGF0ZS5wYXRjaFZhbHVlKCRldmVudClcIj48L21hdC1jYWxlbmRhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoc2hvd1RpbWUoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtMTAgb3ZlcmZsb3ctaGlkZGVuIG14LTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1vcHRpb25zLWNvbnQgaGlkZS1zY3JvbGxcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImNhbGVuZGFyQ29udC5vZmZzZXRIZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja3ktdG9wIGJnLXdoaXRlIHJvdW5kZWQtMTAgdGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdIUicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMuaG91cnNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpUy50aW1lSG91cnMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyb3VuZGVkLTEwXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnTUlOJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz1cImhpZGUtc2Nyb2xsXCIgW2Zvcm1Db250cm9sXT1cImZvcm0oKS5jb250cm9scy5taW51dGVzXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZU1pbnV0ZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyb3VuZGVkLTEwXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnUycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMuc2Vjb25kc1wiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGlTLnRpbWVTZWNvbmRzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBvdmVyZmxvdy1oaWRkZW4gbXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLW9wdGlvbnMtY29udCBoaWRlLXNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiaGlkZS1zY3JvbGxcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybSgpLmNvbnRyb2xzLm1lcmlkaWVtXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZU1lcmlkaWVtKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtLmluY3JlbWVudG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT5cbiJdfQ==
@@ -127,10 +127,10 @@ export class DayHourMinInputComponent extends InputBasicComponent {
127
127
  this.sub2?.unsubscribe();
128
128
  this.sub3?.unsubscribe();
129
129
  }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DayHourMinInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: DayHourMinInputComponent, isStandalone: true, selector: "app-day-hour-min-input", inputs: { clearOnDisable: { classPropertyName: "clearOnDisable", publicName: "clearOnDisable", isSignal: true, isRequired: false, transformFunction: null }, toMins: { classPropertyName: "toMins", publicName: "toMins", isSignal: false, isRequired: false, transformFunction: null }, mins: { classPropertyName: "mins", publicName: "mins", isSignal: false, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@if (verbose()) {\n <div>disabledSignal: {{ disabledSignal() }}</div>\n <div>validSignal: {{ validSignal() }}</div>\n <div>invalidSignal: {{ invalidSignal() }}</div>\n <div>valueSignal: {{ valueSignal() }}</div>\n <div>hasValue: {{ hasValue() }}</div>\n <div>dirtySignal: {{ dirtySignal() }}</div>\n <div>touchedSignal: {{ touchedSignal() }}</div>\n <div>errorsSignal: {{ errorsSignaljson() }}</div>\n <div>pendingSignal: {{ pendingSignal() }}</div>\n <div>requiredSignal: {{ requiredSignal() }}</div>\n <div>pristineSignal: {{ pristineSignal() }}</div>\n <div>controlRequiredSignal: {{ controlRequiredSignal() }}</div>\n <div>isRequiredSignal: {{ isRequiredSignal() }}</div>\n <div class=\"\">onControlObtainedList Length: {{ onControlObtainedList().length }}</div>\n <div class=\"\">subForm: {{ subFormValue() | json }}</div>\n}\n<div class=\"row\">\n @if (showLabelSignal()) {\n <app-input-label\n [colored]=\"coloredSignal()\"\n [form]=\"form()\"\n [hint]=\"hint\"\n [id]=\"idSignal()\"\n [invalidCheckbox]=\"invalidCheckboxSignal()\"\n [isRequired]=\"isRequiredSignal()\"\n [label]=\"labelSignal()\"\n [lblCl]=\"lblCl\"\n [light]=\"light\"\n [mini]=\"miniSignal()\"\n [showLabel]=\"showLabelSignal()\"\n [small]=\"smallSignal()\"\n [stacked]=\"stackedSignal()\"\n [theme]=\"theme\"\n [xsmall]=\"xsmall\" />\n }\n <div class=\"{{ stackedSignal() ? 'col-12' : 'col-md' }} position-relative\">\n <div class=\"row\">\n <div class=\"col-4\">\n <app-input-basic\n [showLabel]=\"false\"\n [form]=\"subForm\"\n name=\"days\"\n [min]=\"0\"\n [type]=\"typeSignal()\"\n [noFormat]=\"true\"\n [stacked]=\"true\"\n [clearOnDisable]=\"clearOnDisable()\"\n placeholder=\"days\"\n [showValidation]=\"daysTag.invalidSignal()\"\n #daysTag />\n </div>\n <div class=\"col-4\">\n <app-input-basic\n [showLabel]=\"false\"\n [form]=\"subForm\"\n name=\"hours\"\n [min]=\"0\"\n [type]=\"typeSignal()\"\n [noFormat]=\"true\"\n [stacked]=\"true\"\n [clearOnDisable]=\"clearOnDisable()\"\n placeholder=\"hours\"\n [showValidation]=\"hoursTag.invalidSignal()\"\n #hoursTag />\n </div>\n <div class=\"col-4\">\n <app-input-basic\n [showLabel]=\"false\"\n [form]=\"subForm\"\n name=\"mins\"\n [min]=\"0\"\n [type]=\"typeSignal()\"\n [noFormat]=\"true\"\n [stacked]=\"true\"\n [clearOnDisable]=\"clearOnDisable()\"\n placeholder=\"minutes\"\n [showValidation]=\"minsTag.invalidSignal()\"\n #minsTag />\n </div>\n </div>\n </div>\n</div>\n@if (showValidationMsgSignal()) {\n <app-validation-message\n [label]=\"labelSignal()\"\n [minLength]=\"minLength\"\n [maxLength]=\"maxLength\"\n [control]=\"control()\" />\n}\n", styles: [""], dependencies: [{ kind: "component", type: InputLabelComponent, selector: "app-input-label", inputs: ["colored", "form", "hint", "inlineHint", "id", "invalidCheckbox", "isRequired", "label", "labelLink", "lblCl", "light", "mini", "showLabel", "showRequiredTag", "small", "stacked", "theme", "xsmall"] }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "input", "contextData", "decimalPoints", "files", "hide", "hint", "clearOnDisable", "labelLink", "lblCl", "light", "loading", "multiple", "optionsFunc", "theme", "vms", "xsmall", "setCurrentDate", "options"], outputs: ["mSelectedOptionLabel"] }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"], outputs: ["labelChange"] }, { kind: "pipe", type: JsonPipe, name: "json" }] }); }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DayHourMinInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: DayHourMinInputComponent, isStandalone: true, selector: "app-day-hour-min-input", inputs: { clearOnDisable: { classPropertyName: "clearOnDisable", publicName: "clearOnDisable", isSignal: true, isRequired: false, transformFunction: null }, toMins: { classPropertyName: "toMins", publicName: "toMins", isSignal: false, isRequired: false, transformFunction: null }, mins: { classPropertyName: "mins", publicName: "mins", isSignal: false, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@if (verbose()) {\n <div>disabledSignal: {{ disabledSignal() }}</div>\n <div>validSignal: {{ validSignal() }}</div>\n <div>invalidSignal: {{ invalidSignal() }}</div>\n <div>valueSignal: {{ valueSignal() }}</div>\n <div>hasValue: {{ hasValue() }}</div>\n <div>dirtySignal: {{ dirtySignal() }}</div>\n <div>touchedSignal: {{ touchedSignal() }}</div>\n <div>errorsSignal: {{ errorsSignaljson() }}</div>\n <div>pendingSignal: {{ pendingSignal() }}</div>\n <div>requiredSignal: {{ requiredSignal() }}</div>\n <div>pristineSignal: {{ pristineSignal() }}</div>\n <div>controlRequiredSignal: {{ controlRequiredSignal() }}</div>\n <div>isRequiredSignal: {{ isRequiredSignal() }}</div>\n <div class=\"\">onControlObtainedList Length: {{ onControlObtainedList().length }}</div>\n <div class=\"\">subForm: {{ subFormValue() | json }}</div>\n}\n<div class=\"row\">\n @if (showLabelSignal()) {\n <app-input-label\n [colored]=\"coloredSignal()\"\n [form]=\"form()\"\n [hint]=\"hint\"\n [id]=\"idSignal()\"\n [invalidCheckbox]=\"invalidCheckboxSignal()\"\n [isRequired]=\"isRequiredSignal()\"\n [label]=\"labelSignal()\"\n [lblCl]=\"lblCl\"\n [light]=\"light\"\n [mini]=\"miniSignal()\"\n [showLabel]=\"showLabelSignal()\"\n [small]=\"smallSignal()\"\n [stacked]=\"stackedSignal()\"\n [theme]=\"theme\"\n [xsmall]=\"xsmall\" />\n }\n <div class=\"{{ stackedSignal() ? 'col-12' : 'col-md' }} position-relative\">\n <div class=\"row\">\n <div class=\"col-4\">\n <app-input-basic\n [showLabel]=\"false\"\n [form]=\"subForm\"\n name=\"days\"\n [min]=\"0\"\n [type]=\"typeSignal()\"\n [noFormat]=\"true\"\n [stacked]=\"true\"\n [clearOnDisable]=\"clearOnDisable()\"\n placeholder=\"days\"\n [showValidation]=\"daysTag.invalidSignal()\"\n #daysTag />\n </div>\n <div class=\"col-4\">\n <app-input-basic\n [showLabel]=\"false\"\n [form]=\"subForm\"\n name=\"hours\"\n [min]=\"0\"\n [type]=\"typeSignal()\"\n [noFormat]=\"true\"\n [stacked]=\"true\"\n [clearOnDisable]=\"clearOnDisable()\"\n placeholder=\"hours\"\n [showValidation]=\"hoursTag.invalidSignal()\"\n #hoursTag />\n </div>\n <div class=\"col-4\">\n <app-input-basic\n [showLabel]=\"false\"\n [form]=\"subForm\"\n name=\"mins\"\n [min]=\"0\"\n [type]=\"typeSignal()\"\n [noFormat]=\"true\"\n [stacked]=\"true\"\n [clearOnDisable]=\"clearOnDisable()\"\n placeholder=\"minutes\"\n [showValidation]=\"minsTag.invalidSignal()\"\n #minsTag />\n </div>\n </div>\n </div>\n</div>\n@if (showValidationMsgSignal()) {\n <app-validation-message\n [label]=\"labelSignal()\"\n [minLength]=\"minLength\"\n [maxLength]=\"maxLength\"\n [control]=\"control()\" />\n}\n", styles: [""], dependencies: [{ kind: "component", type: InputLabelComponent, selector: "app-input-label", inputs: ["colored", "form", "hint", "inlineHint", "id", "invalidCheckbox", "isRequired", "label", "labelLink", "lblCl", "light", "mini", "showLabel", "showRequiredTag", "small", "stacked", "theme", "xsmall"] }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "input", "contextData", "decimalPoints", "files", "hide", "hint", "clearOnDisable", "labelLink", "lblCl", "light", "loading", "multiple", "optionsFunc", "theme", "vms", "xsmall", "setCurrentDate", "options"], outputs: ["mSelectedOptionLabel"] }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"], outputs: ["labelChange"] }, { kind: "pipe", type: JsonPipe, name: "json" }] }); }
132
132
  }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DayHourMinInputComponent, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DayHourMinInputComponent, decorators: [{
134
134
  type: Component,
135
135
  args: [{ selector: 'app-day-hour-min-input', standalone: true, imports: [NgIf, InputLabelComponent, InputBasicComponent, ValidationMessageComponent, JsonPipe], template: "@if (verbose()) {\n <div>disabledSignal: {{ disabledSignal() }}</div>\n <div>validSignal: {{ validSignal() }}</div>\n <div>invalidSignal: {{ invalidSignal() }}</div>\n <div>valueSignal: {{ valueSignal() }}</div>\n <div>hasValue: {{ hasValue() }}</div>\n <div>dirtySignal: {{ dirtySignal() }}</div>\n <div>touchedSignal: {{ touchedSignal() }}</div>\n <div>errorsSignal: {{ errorsSignaljson() }}</div>\n <div>pendingSignal: {{ pendingSignal() }}</div>\n <div>requiredSignal: {{ requiredSignal() }}</div>\n <div>pristineSignal: {{ pristineSignal() }}</div>\n <div>controlRequiredSignal: {{ controlRequiredSignal() }}</div>\n <div>isRequiredSignal: {{ isRequiredSignal() }}</div>\n <div class=\"\">onControlObtainedList Length: {{ onControlObtainedList().length }}</div>\n <div class=\"\">subForm: {{ subFormValue() | json }}</div>\n}\n<div class=\"row\">\n @if (showLabelSignal()) {\n <app-input-label\n [colored]=\"coloredSignal()\"\n [form]=\"form()\"\n [hint]=\"hint\"\n [id]=\"idSignal()\"\n [invalidCheckbox]=\"invalidCheckboxSignal()\"\n [isRequired]=\"isRequiredSignal()\"\n [label]=\"labelSignal()\"\n [lblCl]=\"lblCl\"\n [light]=\"light\"\n [mini]=\"miniSignal()\"\n [showLabel]=\"showLabelSignal()\"\n [small]=\"smallSignal()\"\n [stacked]=\"stackedSignal()\"\n [theme]=\"theme\"\n [xsmall]=\"xsmall\" />\n }\n <div class=\"{{ stackedSignal() ? 'col-12' : 'col-md' }} position-relative\">\n <div class=\"row\">\n <div class=\"col-4\">\n <app-input-basic\n [showLabel]=\"false\"\n [form]=\"subForm\"\n name=\"days\"\n [min]=\"0\"\n [type]=\"typeSignal()\"\n [noFormat]=\"true\"\n [stacked]=\"true\"\n [clearOnDisable]=\"clearOnDisable()\"\n placeholder=\"days\"\n [showValidation]=\"daysTag.invalidSignal()\"\n #daysTag />\n </div>\n <div class=\"col-4\">\n <app-input-basic\n [showLabel]=\"false\"\n [form]=\"subForm\"\n name=\"hours\"\n [min]=\"0\"\n [type]=\"typeSignal()\"\n [noFormat]=\"true\"\n [stacked]=\"true\"\n [clearOnDisable]=\"clearOnDisable()\"\n placeholder=\"hours\"\n [showValidation]=\"hoursTag.invalidSignal()\"\n #hoursTag />\n </div>\n <div class=\"col-4\">\n <app-input-basic\n [showLabel]=\"false\"\n [form]=\"subForm\"\n name=\"mins\"\n [min]=\"0\"\n [type]=\"typeSignal()\"\n [noFormat]=\"true\"\n [stacked]=\"true\"\n [clearOnDisable]=\"clearOnDisable()\"\n placeholder=\"minutes\"\n [showValidation]=\"minsTag.invalidSignal()\"\n #minsTag />\n </div>\n </div>\n </div>\n</div>\n@if (showValidationMsgSignal()) {\n <app-validation-message\n [label]=\"labelSignal()\"\n [minLength]=\"minLength\"\n [maxLength]=\"maxLength\"\n [control]=\"control()\" />\n}\n" }]
136
136
  }], ctorParameters: () => [], propDecorators: { toMins: [{
@@ -138,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
138
138
  }], mins: [{
139
139
  type: Input
140
140
  }] } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWhvdXItbWluLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXktaG91ci1taW4taW5wdXQvZGF5LWhvdXItbWluLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXktaG91ci1taW4taW5wdXQvZGF5LWhvdXItbWluLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFnQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVN0RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsbUJBQW1CO0lBNkIvRCxJQUFhLElBQUksQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMs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QUM7OEdBeEhVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDBmQ2pCckMsKytGQTBGQSwwREQzRWtCLG1CQUFtQiw2UUFBRSxtQkFBbUIsNlZBQUUsMEJBQTBCLHNOQUFFLFFBQVE7OzJGQUVuRix3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBR3RCLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBRSxRQUFRLENBQUM7d0RBS3RGLE1BQU07c0JBQWQsS0FBSztnQkEwQk8sSUFBSTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0TGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC1sYWJlbC9pbnB1dC1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSnNvblBpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRheS1ob3VyLW1pbi1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXktaG91ci1taW4taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXktaG91ci1taW4taW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIElucHV0TGFiZWxDb21wb25lbnQsIElucHV0QmFzaWNDb21wb25lbnQsIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LCBKc29uUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIERheUhvdXJNaW5JbnB1dENvbXBvbmVudCBleHRlbmRzIElucHV0QmFzaWNDb21wb25lbnQge1xuICAvLyBASW5wdXQoKSBmb3JtYXQ6ICdobScgfCAnbScgfCAnZGhtJyA9ICdobSc7XG4gIG92ZXJyaWRlIGNsZWFyT25EaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBASW5wdXQoKSB0b01pbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVhZG9ubHkgc3ViRm9ybSA9IG5ldyBGb3JtR3JvdXAoXG4gICAge1xuICAgICAgZGF5czogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgaG91cnM6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcbiAgICAgIG1pbnM6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcbiAgICB9LFxuICAgIC8vIHRoaXMudmFsaWRhdGVGcm9tUGFyZW50LmJpbmQodGhpcylcbiAgKTtcbiAgc3ViMTogU3Vic2NyaXB0aW9uO1xuICBzdWIyOiBTdWJzY3JpcHRpb247XG4gIHN1YjM6IFN1YnNjcmlwdGlvbjtcbiAgdXBkYXRlU3ViRm9ybTogYm9vbGVhbiA9IHRydWU7XG4gIHJlYWRvbmx5IHN1YkZvcm1WYWx1ZSA9IHRvU2lnbmFsKFxuICAgIHRoaXMuc3ViRm9ybS52YWx1ZUNoYW5nZXMucGlwZShtYXAoKCkgPT4gdGhpcy5zdWJGb3JtLmdldFJhd1ZhbHVlKCkpKSxcbiAgICB7IGluaXRpYWxWYWx1ZTogdGhpcy5zdWJGb3JtLmdldFJhd1ZhbHVlKCkgfSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZGlzYWJsZUZ1bmMgPSAoY29udHJvbCA9IHRoaXMuY29udHJvbCgpLCBkaXNhYmxlOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKGNvbnRyb2w/LnBhcmVudD8uZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoZGlzYWJsZSkge1xuICAgICAgaWYgKHRoaXMuY2xlYXJPbkRpc2FibGUoKSkgdGhpcy5zdWJGb3JtPy5yZXNldCgpO1xuICAgICAgdGhpcy5zdWJGb3JtPy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHRoaXMuc3ViRm9ybT8uZW5hYmxlKCk7XG4gIH07XG5cbiAgQElucHV0KCkgc2V0IG1pbnModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuc3ViRm9ybS5wYXRjaFZhbHVlKHRoaXMudVMubWludXRlc1RvRGF5SG91ck1pbih2YWx1ZSkpO1xuICB9XG4gIHB1YmxpYyB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMudHlwZVNpZ25hbC51cGRhdGUoKHR5cGUpID0+IHR5cGUgfHwgJ251bWJlcicpO1xuXG4gICAgdGhpcy5zdWIxID0gdGhpcy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgaWYgKHRoaXMudXBkYXRlU3ViRm9ybSkge1xuICAgICAgICBpZiAocj8udG9TdHJpbmcoKS5pbmRleE9mKCc6JykgPT0gJy0xJylcbiAgICAgICAgICB0aGlzLnN1YkZvcm0/LnBhdGNoVmFsdWUodGhpcy51Uy5taW51dGVzVG9EYXlIb3VyTWluKCtyKSk7XG4gICAgICB9IGVsc2UgdGhpcy51cGRhdGVTdWJGb3JtID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2woKT8uZGlzYWJsZWQgJiYgdGhpcy5zdWJGb3JtPy5lbmFibGVkKSB7XG4gICAgICAgIHRoaXMuc3ViRm9ybT8uZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2woKT8uZW5hYmxlZCAmJiB0aGlzLnN1YkZvcm0/LmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc3ViRm9ybS5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLzJcbiAgICB0aGlzLnN1YjIgPSB0aGlzLmNvbnRyb2woKT8uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgICAgaWYgKHRoaXMuY29udHJvbCgpPy5lcnJvcnMgJiYgKHRoaXMuY29udHJvbCgpPy5kaXJ0eSB8fCB0aGlzLmNvbnRyb2woKT8udG91Y2hlZCkpIHtcbiAgICAgICAgdGhpcy5zdWJGb3JtPy5nZXQoJ2RheXMnKS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLnN1YkZvcm0/LmdldCgnaG91cnMnKS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLnN1YkZvcm0/LmdldCgnbWlucycpLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuc3ViRm9ybT8ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zdWJGb3JtPy5nZXQoJ2RheXMnKS5zZXRFcnJvcnModGhpcy5jb250cm9sKCk/LmVycm9ycyk7XG4gICAgICB0aGlzLnN1YkZvcm0/LmdldCgnaG91cnMnKS5zZXRFcnJvcnModGhpcy5jb250cm9sKCk/LmVycm9ycyk7XG4gICAgICB0aGlzLnN1YkZvcm0/LmdldCgnbWlucycpLnNldEVycm9ycyh0aGlzLmNvbnRyb2woKT8uZXJyb3JzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3ViMyA9IHRoaXMuc3ViRm9ybT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgICBpZiAodGhpcy5jb250cm9sKCk/LnByaXN0aW5lKSB0aGlzLmNvbnRyb2woKT8ubWFya0FzRGlydHkoKTtcbiAgICAgIGlmICghdGhpcy5jb250cm9sKCk/LmRpc2FibGVkKSB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLnRvTWluc1xuICAgICAgICAgID8gdGhpcy51Uy5kYXlIb3VyTWluVG9NaW51dGVzKHI/LmRheXMsIHI/LmhvdXJzLCBwYXJzZUludChyPy5taW5zIHx8IDApKVxuICAgICAgICAgIDogdGhpcy51Uy5kYXlIb3VyTWluVG9Ib3VyTWludXRlcyhyPy5kYXlzLCByPy5ob3Vycywgcj8ubWlucyk7XG4gICAgICAgIHRoaXMudXBkYXRlU3ViRm9ybSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50b01pbnMpIHRoaXMuY29udHJvbCgpPy5wYXRjaFZhbHVlKHRpbWUgPT0gJzAnID8gbnVsbCA6IHRpbWUpO1xuICAgICAgICBlbHNlIHRoaXMuY29udHJvbCgpPy5wYXRjaFZhbHVlKHRpbWUgPT0gJzAwOjAwJyA/IG51bGwgOiB0aW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGFzeW5jIGlzUGFyZW50VmFsaWQoKSB7XG4gIC8vICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMpID0+IHtcbiAgLy8gICAgIGlmICh0aGlzLnN1YkZvcm0/LnByaXN0aW5lKSByZXMobnVsbCk7XG4gIC8vICAgICBlbHNlIHtcbiAgLy8gICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gIC8vICAgICAgICAgdGhpcy5zdWJGb3JtPy5nZXQoJ2RheXMnKS5zZXRFcnJvcnModGhpcy5jb250cm9sKCk/LmVycm9ycyk7XG4gIC8vICAgICAgICAgdGhpcy5zdWJGb3JtPy5nZXQoJ2hvdXJzJykuc2V0RXJyb3JzKHRoaXMuY29udHJvbCgpPy5lcnJvcnMpO1xuICAvLyAgICAgICAgIHRoaXMuc3ViRm9ybT8uZ2V0KCdtaW5zJykuc2V0RXJyb3JzKHRoaXMuY29udHJvbCgpPy5lcnJvcnMpO1xuICAvLyAgICAgICAgIGNvbnN0IGVyciA9IHRoaXMuY29udHJvbCgpPy5lcnJvcnM7XG4gIC8vICAgICAgICAgcmVzKGVycik7XG4gIC8vICAgICAgIH0sIDEwMCk7XG4gIC8vICAgICB9XG4gIC8vICAgfSk7XG4gIC8vIH1cbiAgdmFsaWRhdGVGcm9tUGFyZW50KGZvcm06IEZvcm1Hcm91cCkge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgY29uc3QgY29udHJvbHM6IHsgW3g6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbCB9ID0ge1xuICAgICAgZGF5czogZm9ybS5nZXQoJ2RheXMnKSxcbiAgICAgIGhvdXJzOiBmb3JtLmdldCgnaG91cnMnKSxcbiAgICAgIG1pbnM6IGZvcm0uZ2V0KCdtaW5zJyksXG4gICAgfTtcbiAgICBpZiAoY29udHJvbHMuZGF5cy52YWx1ZSB8fCBjb250cm9scy5ob3Vycy52YWx1ZSB8fCBjb250cm9scy5taW5zLnZhbHVlKSB7XG4gICAgICBjb250cm9scy5kYXlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICBjb250cm9scy5ob3Vycy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgY29udHJvbHMubWlucy5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cbiAgICAvLyBmb3JtPy5nZXQoJ2RheXMnKS5tYXJrQXNEaXJ0eSgpO1xuICAgIGZvcm0/LmdldCgnZGF5cycpLnNldEVycm9ycyh0aGlzLmNvbnRyb2woKT8uZXJyb3JzKTtcbiAgICAvLyBmb3JtPy5nZXQoJ2hvdXJzJykubWFya0FzRGlydHkoKTtcbiAgICBmb3JtPy5nZXQoJ2hvdXJzJykuc2V0RXJyb3JzKHRoaXMuY29udHJvbCgpPy5lcnJvcnMpO1xuICAgIC8vIGZvcm0/LmdldCgnbWlucycpLm1hcmtBc0RpcnR5KCk7XG4gICAgZm9ybT8uZ2V0KCdtaW5zJykuc2V0RXJyb3JzKHRoaXMuY29udHJvbCgpPy5lcnJvcnMpO1xuICAgIC8vIHJldHVybiB0aGlzLmNvbnRyb2woKT8uZXJyb3JzO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViMT8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN1YjI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWIzPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCJAaWYgKHZlcmJvc2UoKSkge1xuICA8ZGl2PmRpc2FibGVkU2lnbmFsOiB7eyBkaXNhYmxlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+dmFsaWRTaWduYWw6IHt7IHZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5pbnZhbGlkU2lnbmFsOiB7eyBpbnZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj52YWx1ZVNpZ25hbDoge3sgdmFsdWVTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2Pmhhc1ZhbHVlOiB7eyBoYXNWYWx1ZSgpIH19PC9kaXY+XG4gIDxkaXY+ZGlydHlTaWduYWw6IHt7IGRpcnR5U2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj50b3VjaGVkU2lnbmFsOiB7eyB0b3VjaGVkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5lcnJvcnNTaWduYWw6IHt7IGVycm9yc1NpZ25hbGpzb24oKSB9fTwvZGl2PlxuICA8ZGl2PnBlbmRpbmdTaWduYWw6IHt7IHBlbmRpbmdTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2PnJlcXVpcmVkU2lnbmFsOiB7eyByZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+cHJpc3RpbmVTaWduYWw6IHt7IHByaXN0aW5lU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5jb250cm9sUmVxdWlyZWRTaWduYWw6IHt7IGNvbnRyb2xSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+aXNSZXF1aXJlZFNpZ25hbDoge3sgaXNSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJcIj5vbkNvbnRyb2xPYnRhaW5lZExpc3QgTGVuZ3RoOiB7eyBvbkNvbnRyb2xPYnRhaW5lZExpc3QoKS5sZW5ndGggfX08L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIlwiPnN1YkZvcm06IHt7IHN1YkZvcm1WYWx1ZSgpIHwganNvbiB9fTwvZGl2PlxufVxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICBAaWYgKHNob3dMYWJlbFNpZ25hbCgpKSB7XG4gICAgPGFwcC1pbnB1dC1sYWJlbFxuICAgICAgW2NvbG9yZWRdPVwiY29sb3JlZFNpZ25hbCgpXCJcbiAgICAgIFtmb3JtXT1cImZvcm0oKVwiXG4gICAgICBbaGludF09XCJoaW50XCJcbiAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgIFtpbnZhbGlkQ2hlY2tib3hdPVwiaW52YWxpZENoZWNrYm94U2lnbmFsKClcIlxuICAgICAgW2lzUmVxdWlyZWRdPVwiaXNSZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCJcbiAgICAgIFtsYmxDbF09XCJsYmxDbFwiXG4gICAgICBbbGlnaHRdPVwibGlnaHRcIlxuICAgICAgW21pbmldPVwibWluaVNpZ25hbCgpXCJcbiAgICAgIFtzaG93TGFiZWxdPVwic2hvd0xhYmVsU2lnbmFsKClcIlxuICAgICAgW3NtYWxsXT1cInNtYWxsU2lnbmFsKClcIlxuICAgICAgW3N0YWNrZWRdPVwic3RhY2tlZFNpZ25hbCgpXCJcbiAgICAgIFt0aGVtZV09XCJ0aGVtZVwiXG4gICAgICBbeHNtYWxsXT1cInhzbWFsbFwiIC8+XG4gIH1cbiAgPGRpdiBjbGFzcz1cInt7IHN0YWNrZWRTaWduYWwoKSA/ICdjb2wtMTInIDogJ2NvbC1tZCcgfX0gcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgPGFwcC1pbnB1dC1iYXNpY1xuICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgIFtmb3JtXT1cInN1YkZvcm1cIlxuICAgICAgICAgIG5hbWU9XCJkYXlzXCJcbiAgICAgICAgICBbbWluXT1cIjBcIlxuICAgICAgICAgIFt0eXBlXT1cInR5cGVTaWduYWwoKVwiXG4gICAgICAgICAgW25vRm9ybWF0XT1cInRydWVcIlxuICAgICAgICAgIFtzdGFja2VkXT1cInRydWVcIlxuICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJjbGVhck9uRGlzYWJsZSgpXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cImRheXNcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJkYXlzVGFnLmludmFsaWRTaWduYWwoKVwiXG4gICAgICAgICAgI2RheXNUYWcgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICBbZm9ybV09XCJzdWJGb3JtXCJcbiAgICAgICAgICBuYW1lPVwiaG91cnNcIlxuICAgICAgICAgIFttaW5dPVwiMFwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICBbbm9Gb3JtYXRdPVwidHJ1ZVwiXG4gICAgICAgICAgW3N0YWNrZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cImNsZWFyT25EaXNhYmxlKClcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiaG91cnNcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJob3Vyc1RhZy5pbnZhbGlkU2lnbmFsKClcIlxuICAgICAgICAgICNob3Vyc1RhZyAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgPGFwcC1pbnB1dC1iYXNpY1xuICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgIFtmb3JtXT1cInN1YkZvcm1cIlxuICAgICAgICAgIG5hbWU9XCJtaW5zXCJcbiAgICAgICAgICBbbWluXT1cIjBcIlxuICAgICAgICAgIFt0eXBlXT1cInR5cGVTaWduYWwoKVwiXG4gICAgICAgICAgW25vRm9ybWF0XT1cInRydWVcIlxuICAgICAgICAgIFtzdGFja2VkXT1cInRydWVcIlxuICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJjbGVhck9uRGlzYWJsZSgpXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1pbnV0ZXNcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJtaW5zVGFnLmludmFsaWRTaWduYWwoKVwiXG4gICAgICAgICAgI21pbnNUYWcgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuQGlmIChzaG93VmFsaWRhdGlvbk1zZ1NpZ25hbCgpKSB7XG4gIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlXG4gICAgW2xhYmVsXT1cImxhYmVsU2lnbmFsKClcIlxuICAgIFttaW5MZW5ndGhdPVwibWluTGVuZ3RoXCJcbiAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgW2NvbnRyb2xdPVwiY29udHJvbCgpXCIgLz5cbn1cbiJdfQ==
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWhvdXItbWluLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXktaG91ci1taW4taW5wdXQvZGF5LWhvdXItbWluLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXktaG91ci1taW4taW5wdXQvZGF5LWhvdXItbWluLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFnQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVN0RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsbUJBQW1CO0lBNkIvRCxJQUFhLElBQUksQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMs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LEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQXhIVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwwZkNqQnJDLCsrRkEwRkEsMEREM0VrQixtQkFBbUIsNlFBQUUsbUJBQW1CLDZWQUFFLDBCQUEwQixzTkFBRSxRQUFROzsyRkFFbkYsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHdCQUF3QixjQUd0QixJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxDQUFDO3dEQUt0RixNQUFNO3NCQUFkLEtBQUs7Z0JBMEJPLElBQUk7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5wdXRCYXNpY0NvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0LWJhc2ljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtbGFiZWwvaW5wdXQtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEpzb25QaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kYXktaG91ci1taW4taW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF5LWhvdXItbWluLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF5LWhvdXItbWluLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBJbnB1dExhYmVsQ29tcG9uZW50LCBJbnB1dEJhc2ljQ29tcG9uZW50LCBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCwgSnNvblBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXlIb3VyTWluSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEJhc2ljQ29tcG9uZW50IHtcbiAgLy8gQElucHV0KCkgZm9ybWF0OiAnaG0nIHwgJ20nIHwgJ2RobScgPSAnaG0nO1xuICBvdmVycmlkZSBjbGVhck9uRGlzYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgQElucHV0KCkgdG9NaW5zOiBib29sZWFuID0gZmFsc2U7XG4gIHJlYWRvbmx5IHN1YkZvcm0gPSBuZXcgRm9ybUdyb3VwKFxuICAgIHtcbiAgICAgIGRheXM6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcbiAgICAgIGhvdXJzOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICBtaW5zOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgfSxcbiAgICAvLyB0aGlzLnZhbGlkYXRlRnJvbVBhcmVudC5iaW5kKHRoaXMpXG4gICk7XG4gIHN1YjE6IFN1YnNjcmlwdGlvbjtcbiAgc3ViMjogU3Vic2NyaXB0aW9uO1xuICBzdWIzOiBTdWJzY3JpcHRpb247XG4gIHVwZGF0ZVN1YkZvcm06IGJvb2xlYW4gPSB0cnVlO1xuICByZWFkb25seSBzdWJGb3JtVmFsdWUgPSB0b1NpZ25hbChcbiAgICB0aGlzLnN1YkZvcm0udmFsdWVDaGFuZ2VzLnBpcGUobWFwKCgpID0+IHRoaXMuc3ViRm9ybS5nZXRSYXdWYWx1ZSgpKSksXG4gICAgeyBpbml0aWFsVmFsdWU6IHRoaXMuc3ViRm9ybS5nZXRSYXdWYWx1ZSgpIH0sXG4gICk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGRpc2FibGVGdW5jID0gKGNvbnRyb2wgPSB0aGlzLmNvbnRyb2woKSwgZGlzYWJsZTogYm9vbGVhbikgPT4ge1xuICAgIGlmIChjb250cm9sPy5wYXJlbnQ/LmRpc2FibGVkKSByZXR1cm47XG4gICAgaWYgKGRpc2FibGUpIHtcbiAgICAgIGlmICh0aGlzLmNsZWFyT25EaXNhYmxlKCkpIHRoaXMuc3ViRm9ybT8ucmVzZXQoKTtcbiAgICAgIHRoaXMuc3ViRm9ybT8uZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB0aGlzLnN1YkZvcm0/LmVuYWJsZSgpO1xuICB9O1xuXG4gIEBJbnB1dCgpIHNldCBtaW5zKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN1YkZvcm0ucGF0Y2hWYWx1ZSh0aGlzLnVTLm1pbnV0ZXNUb0RheUhvdXJNaW4odmFsdWUpKTtcbiAgfVxuICBwdWJsaWMgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnR5cGVTaWduYWwudXBkYXRlKCh0eXBlKSA9PiB0eXBlIHx8ICdudW1iZXInKTtcblxuICAgIHRoaXMuc3ViMSA9IHRoaXMudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIGlmICh0aGlzLnVwZGF0ZVN1YkZvcm0pIHtcbiAgICAgICAgaWYgKHI/LnRvU3RyaW5nKCkuaW5kZXhPZignOicpID09ICctMScpXG4gICAgICAgICAgdGhpcy5zdWJGb3JtPy5wYXRjaFZhbHVlKHRoaXMudVMubWludXRlc1RvRGF5SG91ck1pbigrcikpO1xuICAgICAgfSBlbHNlIHRoaXMudXBkYXRlU3ViRm9ybSA9IHRydWU7XG4gICAgICBpZiAodGhpcy5jb250cm9sKCk/LmRpc2FibGVkICYmIHRoaXMuc3ViRm9ybT8uZW5hYmxlZCkge1xuICAgICAgICB0aGlzLnN1YkZvcm0/LmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sKCk/LmVuYWJsZWQgJiYgdGhpcy5zdWJGb3JtPy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnN1YkZvcm0uZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8yXG4gICAgdGhpcy5zdWIyID0gdGhpcy5jb250cm9sKCk/LnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2woKT8uZXJyb3JzICYmICh0aGlzLmNvbnRyb2woKT8uZGlydHkgfHwgdGhpcy5jb250cm9sKCk/LnRvdWNoZWQpKSB7XG4gICAgICAgIHRoaXMuc3ViRm9ybT8uZ2V0KCdkYXlzJykubWFya0FzRGlydHkoKTtcbiAgICAgICAgdGhpcy5zdWJGb3JtPy5nZXQoJ2hvdXJzJykubWFya0FzRGlydHkoKTtcbiAgICAgICAgdGhpcy5zdWJGb3JtPy5nZXQoJ21pbnMnKS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLnN1YkZvcm0/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3ViRm9ybT8uZ2V0KCdkYXlzJykuc2V0RXJyb3JzKHRoaXMuY29udHJvbCgpPy5lcnJvcnMpO1xuICAgICAgdGhpcy5zdWJGb3JtPy5nZXQoJ2hvdXJzJykuc2V0RXJyb3JzKHRoaXMuY29udHJvbCgpPy5lcnJvcnMpO1xuICAgICAgdGhpcy5zdWJGb3JtPy5nZXQoJ21pbnMnKS5zZXRFcnJvcnModGhpcy5jb250cm9sKCk/LmVycm9ycyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YjMgPSB0aGlzLnN1YkZvcm0/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgICAgaWYgKHRoaXMuY29udHJvbCgpPy5wcmlzdGluZSkgdGhpcy5jb250cm9sKCk/Lm1hcmtBc0RpcnR5KCk7XG4gICAgICBpZiAoIXRoaXMuY29udHJvbCgpPy5kaXNhYmxlZCkge1xuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy50b01pbnNcbiAgICAgICAgICA/IHRoaXMudVMuZGF5SG91ck1pblRvTWludXRlcyhyPy5kYXlzLCByPy5ob3VycywgcGFyc2VJbnQocj8ubWlucyB8fCAwKSlcbiAgICAgICAgICA6IHRoaXMudVMuZGF5SG91ck1pblRvSG91ck1pbnV0ZXMocj8uZGF5cywgcj8uaG91cnMsIHI/Lm1pbnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZVN1YkZvcm0gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMudG9NaW5zKSB0aGlzLmNvbnRyb2woKT8ucGF0Y2hWYWx1ZSh0aW1lID09ICcwJyA/IG51bGwgOiB0aW1lKTtcbiAgICAgICAgZWxzZSB0aGlzLmNvbnRyb2woKT8ucGF0Y2hWYWx1ZSh0aW1lID09ICcwMDowMCcgPyBudWxsIDogdGltZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBhc3luYyBpc1BhcmVudFZhbGlkKCkge1xuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzKSA9PiB7XG4gIC8vICAgICBpZiAodGhpcy5zdWJGb3JtPy5wcmlzdGluZSkgcmVzKG51bGwpO1xuICAvLyAgICAgZWxzZSB7XG4gIC8vICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgICAgIHRoaXMuc3ViRm9ybT8uZ2V0KCdkYXlzJykuc2V0RXJyb3JzKHRoaXMuY29udHJvbCgpPy5lcnJvcnMpO1xuICAvLyAgICAgICAgIHRoaXMuc3ViRm9ybT8uZ2V0KCdob3VycycpLnNldEVycm9ycyh0aGlzLmNvbnRyb2woKT8uZXJyb3JzKTtcbiAgLy8gICAgICAgICB0aGlzLnN1YkZvcm0/LmdldCgnbWlucycpLnNldEVycm9ycyh0aGlzLmNvbnRyb2woKT8uZXJyb3JzKTtcbiAgLy8gICAgICAgICBjb25zdCBlcnIgPSB0aGlzLmNvbnRyb2woKT8uZXJyb3JzO1xuICAvLyAgICAgICAgIHJlcyhlcnIpO1xuICAvLyAgICAgICB9LCAxMDApO1xuICAvLyAgICAgfVxuICAvLyAgIH0pO1xuICAvLyB9XG4gIHZhbGlkYXRlRnJvbVBhcmVudChmb3JtOiBGb3JtR3JvdXApIHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGNvbnN0IGNvbnRyb2xzOiB7IFt4OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2wgfSA9IHtcbiAgICAgIGRheXM6IGZvcm0uZ2V0KCdkYXlzJyksXG4gICAgICBob3VyczogZm9ybS5nZXQoJ2hvdXJzJyksXG4gICAgICBtaW5zOiBmb3JtLmdldCgnbWlucycpLFxuICAgIH07XG4gICAgaWYgKGNvbnRyb2xzLmRheXMudmFsdWUgfHwgY29udHJvbHMuaG91cnMudmFsdWUgfHwgY29udHJvbHMubWlucy52YWx1ZSkge1xuICAgICAgY29udHJvbHMuZGF5cy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgY29udHJvbHMuaG91cnMubWFya0FzRGlydHkoKTtcbiAgICAgIGNvbnRyb2xzLm1pbnMubWFya0FzRGlydHkoKTtcbiAgICB9XG4gICAgLy8gZm9ybT8uZ2V0KCdkYXlzJykubWFya0FzRGlydHkoKTtcbiAgICBmb3JtPy5nZXQoJ2RheXMnKS5zZXRFcnJvcnModGhpcy5jb250cm9sKCk/LmVycm9ycyk7XG4gICAgLy8gZm9ybT8uZ2V0KCdob3VycycpLm1hcmtBc0RpcnR5KCk7XG4gICAgZm9ybT8uZ2V0KCdob3VycycpLnNldEVycm9ycyh0aGlzLmNvbnRyb2woKT8uZXJyb3JzKTtcbiAgICAvLyBmb3JtPy5nZXQoJ21pbnMnKS5tYXJrQXNEaXJ0eSgpO1xuICAgIGZvcm0/LmdldCgnbWlucycpLnNldEVycm9ycyh0aGlzLmNvbnRyb2woKT8uZXJyb3JzKTtcbiAgICAvLyByZXR1cm4gdGhpcy5jb250cm9sKCk/LmVycm9ycztcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YjE/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWIyPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3ViMz8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiQGlmICh2ZXJib3NlKCkpIHtcbiAgPGRpdj5kaXNhYmxlZFNpZ25hbDoge3sgZGlzYWJsZWRTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2PnZhbGlkU2lnbmFsOiB7eyB2YWxpZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+aW52YWxpZFNpZ25hbDoge3sgaW52YWxpZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+dmFsdWVTaWduYWw6IHt7IHZhbHVlU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5oYXNWYWx1ZToge3sgaGFzVmFsdWUoKSB9fTwvZGl2PlxuICA8ZGl2PmRpcnR5U2lnbmFsOiB7eyBkaXJ0eVNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+dG91Y2hlZFNpZ25hbDoge3sgdG91Y2hlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+ZXJyb3JzU2lnbmFsOiB7eyBlcnJvcnNTaWduYWxqc29uKCkgfX08L2Rpdj5cbiAgPGRpdj5wZW5kaW5nU2lnbmFsOiB7eyBwZW5kaW5nU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5yZXF1aXJlZFNpZ25hbDoge3sgcmVxdWlyZWRTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2PnByaXN0aW5lU2lnbmFsOiB7eyBwcmlzdGluZVNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+Y29udHJvbFJlcXVpcmVkU2lnbmFsOiB7eyBjb250cm9sUmVxdWlyZWRTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2PmlzUmVxdWlyZWRTaWduYWw6IHt7IGlzUmVxdWlyZWRTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiXCI+b25Db250cm9sT2J0YWluZWRMaXN0IExlbmd0aDoge3sgb25Db250cm9sT2J0YWluZWRMaXN0KCkubGVuZ3RoIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJcIj5zdWJGb3JtOiB7eyBzdWJGb3JtVmFsdWUoKSB8IGpzb24gfX08L2Rpdj5cbn1cbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgQGlmIChzaG93TGFiZWxTaWduYWwoKSkge1xuICAgIDxhcHAtaW5wdXQtbGFiZWxcbiAgICAgIFtjb2xvcmVkXT1cImNvbG9yZWRTaWduYWwoKVwiXG4gICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgW2hpbnRdPVwiaGludFwiXG4gICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICBbaW52YWxpZENoZWNrYm94XT1cImludmFsaWRDaGVja2JveFNpZ25hbCgpXCJcbiAgICAgIFtpc1JlcXVpcmVkXT1cImlzUmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICBbbGFiZWxdPVwibGFiZWxTaWduYWwoKVwiXG4gICAgICBbbGJsQ2xdPVwibGJsQ2xcIlxuICAgICAgW2xpZ2h0XT1cImxpZ2h0XCJcbiAgICAgIFttaW5pXT1cIm1pbmlTaWduYWwoKVwiXG4gICAgICBbc2hvd0xhYmVsXT1cInNob3dMYWJlbFNpZ25hbCgpXCJcbiAgICAgIFtzbWFsbF09XCJzbWFsbFNpZ25hbCgpXCJcbiAgICAgIFtzdGFja2VkXT1cInN0YWNrZWRTaWduYWwoKVwiXG4gICAgICBbdGhlbWVdPVwidGhlbWVcIlxuICAgICAgW3hzbWFsbF09XCJ4c21hbGxcIiAvPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJ7eyBzdGFja2VkU2lnbmFsKCkgPyAnY29sLTEyJyA6ICdjb2wtbWQnIH19IHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICBbZm9ybV09XCJzdWJGb3JtXCJcbiAgICAgICAgICBuYW1lPVwiZGF5c1wiXG4gICAgICAgICAgW21pbl09XCIwXCJcbiAgICAgICAgICBbdHlwZV09XCJ0eXBlU2lnbmFsKClcIlxuICAgICAgICAgIFtub0Zvcm1hdF09XCJ0cnVlXCJcbiAgICAgICAgICBbc3RhY2tlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwiY2xlYXJPbkRpc2FibGUoKVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJkYXlzXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwiZGF5c1RhZy5pbnZhbGlkU2lnbmFsKClcIlxuICAgICAgICAgICNkYXlzVGFnIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICA8YXBwLWlucHV0LWJhc2ljXG4gICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgW2Zvcm1dPVwic3ViRm9ybVwiXG4gICAgICAgICAgbmFtZT1cImhvdXJzXCJcbiAgICAgICAgICBbbWluXT1cIjBcIlxuICAgICAgICAgIFt0eXBlXT1cInR5cGVTaWduYWwoKVwiXG4gICAgICAgICAgW25vRm9ybWF0XT1cInRydWVcIlxuICAgICAgICAgIFtzdGFja2VkXT1cInRydWVcIlxuICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJjbGVhck9uRGlzYWJsZSgpXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cImhvdXJzXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwiaG91cnNUYWcuaW52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICAjaG91cnNUYWcgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICBbZm9ybV09XCJzdWJGb3JtXCJcbiAgICAgICAgICBuYW1lPVwibWluc1wiXG4gICAgICAgICAgW21pbl09XCIwXCJcbiAgICAgICAgICBbdHlwZV09XCJ0eXBlU2lnbmFsKClcIlxuICAgICAgICAgIFtub0Zvcm1hdF09XCJ0cnVlXCJcbiAgICAgICAgICBbc3RhY2tlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwiY2xlYXJPbkRpc2FibGUoKVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJtaW51dGVzXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwibWluc1RhZy5pbnZhbGlkU2lnbmFsKClcIlxuICAgICAgICAgICNtaW5zVGFnIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbkBpZiAoc2hvd1ZhbGlkYXRpb25Nc2dTaWduYWwoKSkge1xuICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZVxuICAgIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCJcbiAgICBbbWluTGVuZ3RoXT1cIm1pbkxlbmd0aFwiXG4gICAgW21heExlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgIFtjb250cm9sXT1cImNvbnRyb2woKVwiIC8+XG59XG4iXX0=