@fundamental-ngx/core 0.58.0-rc.69 → 0.58.0-rc.70

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 (51) hide show
  1. package/button/index.d.ts +1 -1
  2. package/card/index.d.ts +8 -4
  3. package/dialog/index.d.ts +2 -2
  4. package/feed-input/index.d.ts +1 -1
  5. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +4 -4
  6. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
  8. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  10. package/fesm2022/fundamental-ngx-core-feed-input.mjs +2 -2
  11. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  12. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  14. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-menu.mjs +2 -2
  16. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  18. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  20. package/fesm2022/fundamental-ngx-core-nested-list.mjs +4 -4
  21. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  22. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  24. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +2 -2
  25. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  26. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +3 -3
  27. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  28. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  30. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  32. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  34. package/form/index.d.ts +2 -2
  35. package/input-group/index.d.ts +1 -1
  36. package/list/index.d.ts +4 -4
  37. package/menu/index.d.ts +2 -2
  38. package/message-box/index.d.ts +1 -1
  39. package/multi-combobox/index.d.ts +2 -2
  40. package/multi-input/index.d.ts +1 -1
  41. package/nested-list/index.d.ts +11 -11
  42. package/overflow-layout/index.d.ts +4 -4
  43. package/package.json +40 -40
  44. package/popover/index.d.ts +2 -2
  45. package/segmented-button/index.d.ts +3 -3
  46. package/table/index.d.ts +2 -2
  47. package/tabs/index.d.ts +3 -3
  48. package/time/index.d.ts +1 -1
  49. package/time-picker/index.d.ts +1 -1
  50. package/toolbar/index.d.ts +1 -1
  51. package/tree/index.d.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-time-picker.mjs","sources":["../tmp-esm2022/time-picker/errors.js","../tmp-esm2022/time-picker/time-picker.component.js","../tmp-esm2022/time-picker/time-picker.module.js","../tmp-esm2022/time-picker/fundamental-ngx-core-time-picker.js"],"sourcesContent":["/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider) {\n return Error(`FdTime: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RpbWUtcGlja2VyL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLG9DQUFvQyxDQUFDLFFBQWdCO0lBQ2pFLE9BQU8sS0FBSyxDQUNSLGlDQUFpQyxRQUFRLHlDQUF5QztRQUM5RSxtRUFBbUU7UUFDbkUsd0JBQXdCLENBQy9CLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIENyZWF0ZXMgYW4gZXJyb3IgdG8gYmUgdGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byB1c2UgYW4gaW52YWxpZCBkYXRlIGltcGxlbWVudGF0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1pc3NpbmdEYXRlSW1wbGVtZW50YXRpb25FcnJvcihwcm92aWRlcjogc3RyaW5nKTogRXJyb3Ige1xuICAgIHJldHVybiBFcnJvcihcbiAgICAgICAgYEZkVGltZTogTm8gcHJvdmlkZXIgZm91bmQgZm9yICR7cHJvdmlkZXJ9LiBZb3UgbXVzdCBpbXBvcnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgYCArXG4gICAgICAgICAgICBgbW9kdWxlcyBhdCB5b3VyIGFwcGxpY2F0aW9uIHJvb3Q6IEZkRGF0ZXRpbWVNb2R1bGUsIG9yIHByb3ZpZGUgYSBgICtcbiAgICAgICAgICAgIGBjdXN0b20gaW1wbGVtZW50YXRpb24uYFxuICAgICk7XG59XG4iXX0=","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, EventEmitter, forwardRef, inject, Inject, Input, Optional, Output, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { DATE_TIME_FORMATS, DatetimeAdapter, TranslateDayPeriodPipe } from '@fundamental-ngx/core/datetime';\nimport { FormMessageComponent, PopoverFormMessageService, registerFormItemControl } from '@fundamental-ngx/core/form';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent, PopoverService } from '@fundamental-ngx/core/popover';\nimport { ValueStateAriaMessageService } from '@fundamental-ngx/core/shared';\nimport { TimeComponent } from '@fundamental-ngx/core/time';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { createMissingDateImplementationError } from './errors';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/datetime\";\nimport * as i2 from \"@fundamental-ngx/core/form\";\nimport * as i3 from \"@angular/forms\";\nlet timePickerCounter = 0;\nexport class TimePickerComponent {\n /** Text displayed in message */\n set message(message) {\n this._message = message;\n }\n /** Type of the message. Can be 'success' | 'error' | 'warning' | 'information' */\n set messageType(messageType) {\n this._messageType = messageType;\n }\n /**\n * The trigger events that will open/close the message box.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n set messageTriggers(triggers) {\n this._messageTriggers = triggers;\n this._popoverFormMessage.triggers = triggers;\n }\n /**\n * The state of the form control - applies css classes.\n * Also this is applied to message.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n set state(state) {\n this._state = state;\n }\n get state() {\n if (this._state == null && this.useValidation && this._isInvalidTimeInput) {\n return 'error';\n }\n return this._state ?? 'default';\n }\n /** @hidden */\n get _placeholder() {\n return this.placeholder || this._getPlaceholder();\n }\n /** @hidden */\n constructor(_changeDetectorRef, _elementRef, \n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n _dateTimeAdapter, _dateTimeFormats, _popoverFormMessage) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n this._popoverFormMessage = _popoverFormMessage;\n /** If it is mandatory field */\n this.required = false;\n /** Whether to show spinner buttons */\n this.spinnerButtons = true;\n /** Whether a null input is considered valid(success). */\n this.allowNull = true;\n /** Defines if time component should be used with tablet mode */\n this.tablet = false;\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n this.placement = 'bottom-start';\n /** Whether to validate the time picker input. */\n this.useValidation = true;\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n this.buttonFocusable = true;\n /**\n * When set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n this.keepTwoDigitsTime = false;\n /**\n * Value state \"success\" aria message.\n */\n this.valueStateSuccessMessage = inject(ValueStateAriaMessageService).success;\n /**\n * Value state \"information\" aria message.\n */\n this.valueStateInformationMessage = inject(ValueStateAriaMessageService).information;\n /**\n * Value state \"warning\" aria message.\n */\n this.valueStateWarningMessage = inject(ValueStateAriaMessageService).warning;\n /**\n * Value state \"error\" aria message.\n */\n this.valueStateErrorMessage = inject(ValueStateAriaMessageService).error;\n /** Event emitted when the state of the isOpen property changes. */\n this.isOpenChange = new EventEmitter();\n /** @hidden */\n this._message = null;\n /** @hidden */\n this._messageType = null;\n /** @hidden */\n this._messageTriggers = ['focusin', 'focusout'];\n /**\n * @hidden\n * Whether the input time is valid(success). Internal use.\n */\n this._isInvalidTimeInput = false;\n /**\n * @hidden\n * Input field value\n */\n this._inputTimeValue = '';\n /** @hidden */\n this._formValueStateMessageId = `fd-time-picker-form-message-${timePickerCounter++}`;\n /** @hidden */\n this._state = null;\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._subscriptions = new Subscription();\n /** @hidden */\n this.onChange = () => { };\n /** @hidden */\n this.onTouched = () => { };\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n /** @hidden */\n ngOnInit() {\n this._calculateTimeOptions();\n this._formatTimeInputField();\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._calculateTimeOptions();\n this._formatTimeInputField();\n this._changeDetectorRef.detectChanges();\n });\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (['displayHours', 'displayMinutes', 'displaySeconds', 'meridian', 'displayFormat'].some((change) => change in changes)) {\n this._calculateTimeOptions();\n }\n if (changes.displayFormat) {\n this._formatTimeInputField();\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n /** @hidden */\n ngAfterViewInit() {\n this.initialiseVariablesInMessageService();\n }\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate() {\n if (this._isInvalidTimeInput) {\n return {\n timeValidation: {\n valid: false\n }\n };\n }\n return null;\n }\n /**\n * Returns the current value of the time input.\n */\n getTime() {\n return this.time;\n }\n /**\n * Returns format options to be used during time formatting.\n */\n getDisplayFormat() {\n return this.displayFormat || this._dateTimeFormats.display.timeInput;\n }\n /**\n * Returns format options to be used during time parsing.\n */\n getParseFormat() {\n return this.parseFormat || this._dateTimeFormats.parse.timeInput;\n }\n /** @hidden */\n _getFormattedTime(time = this.time) {\n let formattedTime = '';\n try {\n if (this.allowNull && time === null) {\n return '';\n }\n formattedTime = this._dateTimeAdapter.format(time, this.getDisplayFormat());\n }\n catch { }\n return formattedTime;\n }\n /**\n * @hidden\n * When the open state is changed, there should be at least one active item, which by default is hour.\n */\n _setIsOpen(isOpen) {\n this.isOpen = isOpen;\n this._onOpenStateChanged(isOpen);\n }\n /**\n * @hidden\n * Time input field changes handler\n */\n _timeInputChanged(inputValue) {\n inputValue = inputValue.trim();\n // check if value has been changed\n if (this._inputTimeValue === inputValue) {\n return;\n }\n this._inputTimeValue = inputValue;\n if (inputValue === '') {\n this.time = null;\n this._isInvalidTimeInput = !this.allowNull;\n }\n if (inputValue !== '') {\n // Regex to detect and rearrange day period in the time string\n const dayPeriodPattern = /\\b(night|morning|afternoon|evening)\\b/g;\n inputValue = inputValue.replace(dayPeriodPattern, '').trim();\n this.time = this._dateTimeAdapter.parse(inputValue, this.getParseFormat());\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(this.time);\n }\n this.onChange(this.time);\n this._changeDetectorRef.detectChanges();\n }\n /** @hidden */\n _inputGroupClicked($event) {\n if (!this.isOpen && !this.disabled) {\n $event.stopPropagation();\n this._setIsOpen(true);\n }\n }\n /** @hidden */\n _addOnButtonClicked() {\n if (!this.disabled) {\n this._setIsOpen(!this.isOpen);\n }\n }\n /** @hidden */\n _popoverClosed() {\n this._setIsOpen(false);\n }\n /** @hidden */\n _getPlaceholder() {\n let retVal = '';\n if (this._displayHours) {\n retVal = retVal + 'hh';\n }\n if (this._displayMinutes) {\n retVal = retVal + ':mm';\n }\n if (this._displaySeconds) {\n retVal = retVal + ':ss';\n }\n if (this._meridian) {\n retVal = retVal + ' am/pm';\n }\n return retVal;\n }\n /** @hidden */\n _timeComponentValueChanged(time) {\n if (this._dateTimeAdapter.dateTimesEqual(time, this.time)) {\n return;\n }\n this._inputTimeValue = this._getFormattedTime(time);\n this.time = time;\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n this.onChange(time);\n this._changeDetectorRef.detectChanges();\n }\n // #region ControlValueAccessor\n /** @hidden */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /** @hidden */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /** @hidden */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.detectChanges();\n }\n /** @hidden */\n writeValue(time) {\n if (!time) {\n this.time = null;\n this._inputTimeValue = '';\n this._isInvalidTimeInput = !this.allowNull;\n }\n else {\n this.time = this._dateTimeAdapter.parse(time, this.getParseFormat());\n this._inputTimeValue = this._getFormattedTime(time);\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n }\n this._changeDetectorRef.markForCheck();\n }\n // #endregion ControlValueAccessor\n /** @hidden */\n _formatTimeInputField(time = this.time) {\n return (this._inputTimeValue = this._getFormattedTime(time));\n }\n /** @hidden */\n _changeMessageVisibility() {\n if (this.isOpen) {\n this._popoverFormMessage.hide();\n }\n else {\n this._popoverFormMessage.show();\n }\n }\n /** @hidden */\n _onOpenStateChanged(isOpen) {\n this.isOpenChange.emit(isOpen);\n this._changeMessageVisibility();\n if (isOpen) {\n this._changeDetectorRef.detectChanges();\n this.child.focusActiveColumn();\n }\n // focus input control every time popup is closed\n if (!isOpen && this._inputElement) {\n this._inputElement.nativeElement.focus();\n }\n }\n /** @hidden */\n _focusOut(event) {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n /** @hidden */\n _calculateTimeOptions() {\n const format = this.getDisplayFormat();\n // default meridian option based on format option\n this._meridian =\n this.meridian != null ? this.meridian : this._dateTimeAdapter.isTimeFormatIncludesDayPeriod(format);\n // default seconds option based on format option\n this._displaySeconds =\n this.displaySeconds != null\n ? this.displaySeconds\n : this._dateTimeAdapter.isTimeFormatIncludesSeconds(format);\n // default minutes option based on format option\n this._displayMinutes =\n this.displayMinutes != null\n ? this.displayMinutes\n : this._dateTimeAdapter.isTimeFormatIncludesMinutes(format);\n // default hours option based on format option\n this._displayHours =\n this.displayHours != null ? this.displayHours : this._dateTimeAdapter.isTimeFormatIncludesHours(format);\n }\n /** @hidden */\n initialiseVariablesInMessageService() {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._formMessageTemplate;\n this._popoverFormMessage.triggers = this._messageTriggers;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.DatetimeAdapter, optional: true }, { token: DATE_TIME_FORMATS, optional: true }, { token: i2.PopoverFormMessageService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: TimePickerComponent, isStandalone: true, selector: \"fd-time-picker\", inputs: { time: \"time\", inputId: \"inputId\", disabled: \"disabled\", required: \"required\", spinnerButtons: \"spinnerButtons\", meridian: \"meridian\", displaySeconds: \"displaySeconds\", displayMinutes: \"displayMinutes\", displayHours: \"displayHours\", placeholder: \"placeholder\", timePickerInputLabel: \"timePickerInputLabel\", timePickerButtonLabel: \"timePickerButtonLabel\", ariaLabelledBy: \"ariaLabelledBy\", allowNull: \"allowNull\", tablet: \"tablet\", message: \"message\", messageType: \"messageType\", messageTriggers: \"messageTriggers\", placement: \"placement\", useValidation: \"useValidation\", state: \"state\", buttonFocusable: \"buttonFocusable\", keepTwoDigitsTime: \"keepTwoDigitsTime\", displayFormat: \"displayFormat\", parseFormat: \"parseFormat\", valueStateSuccessMessage: \"valueStateSuccessMessage\", valueStateInformationMessage: \"valueStateInformationMessage\", valueStateWarningMessage: \"valueStateWarningMessage\", valueStateErrorMessage: \"valueStateErrorMessage\" }, outputs: { isOpenChange: \"isOpenChange\" }, host: { listeners: { \"focusout\": \"_focusOut($event)\", \"blur\": \"onTouched()\" }, classAttribute: \"fd-time-picker fd-timepicker-custom\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n PopoverFormMessageService,\n PopoverService,\n registerFormItemControl(TimePickerComponent)\n ], viewQueries: [{ propertyName: \"child\", first: true, predicate: TimeComponent, descendants: true }, { propertyName: \"_inputGroupElement\", first: true, predicate: [\"inputGroupComponent\"], descendants: true, read: ElementRef }, { propertyName: \"_inputElement\", first: true, predicate: InputGroupInputDirective, descendants: true, read: ElementRef }, { propertyName: \"_formMessageTemplate\", first: true, predicate: [\"formMessageTemplate\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<fd-popover\\n [(isOpen)]=\\\"isOpen\\\"\\n (isOpenChange)=\\\"_onOpenStateChanged($event)\\\"\\n [triggers]=\\\"[]\\\"\\n [disabled]=\\\"disabled\\\"\\n [placement]=\\\"placement\\\"\\n [closeOnEscapeKey]=\\\"true\\\"\\n [focusAutoCapture]=\\\"false\\\"\\n [focusTrapped]=\\\"true\\\"\\n>\\n <fd-popover-control>\\n <fd-input-group\\n #inputGroupComponent\\n (addOnButtonClicked)=\\\"_addOnButtonClicked()\\\"\\n [button]=\\\"true\\\"\\n [state]=\\\"state\\\"\\n [disabled]=\\\"disabled\\\"\\n [buttonFocusable]=\\\"buttonFocusable\\\"\\n [isControl]=\\\"true\\\"\\n [isExpanded]=\\\"isOpen\\\"\\n [glyphAriaLabel]=\\\"timePickerButtonLabel || ('coreTimePicker.timePickerButtonLabel' | fdTranslate)\\\"\\n glyph=\\\"fob-watch\\\"\\n >\\n <input\\n type=\\\"text\\\"\\n class=\\\"fd-input\\\"\\n fd-input-group-input\\n [value]=\\\"_inputTimeValue | translateDayPeriod\\\"\\n (focusout)=\\\"_timeInputChanged($any($event.currentTarget).value)\\\"\\n (keyup.enter)=\\\"_timeInputChanged($any($event.currentTarget).value)\\\"\\n [disabled]=\\\"disabled\\\"\\n [attr.id]=\\\"inputId\\\"\\n [placeholder]=\\\"_placeholder\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-label]=\\\"timePickerInputLabel || ('coreTimePicker.timePickerInputLabel' | fdTranslate)\\\"\\n [attr.aria-describedby]=\\\"_formValueStateMessageId\\\"\\n [attr.aria-required]=\\\"required\\\"\\n />\\n </fd-input-group>\\n </fd-popover-control>\\n <fd-popover-body>\\n <ng-template [ngTemplateOutlet]=\\\"formMessageTemplate\\\"></ng-template>\\n <ng-content></ng-content>\\n @if (isOpen) {\\n <fd-time\\n [tablet]=\\\"tablet\\\"\\n [disabled]=\\\"disabled\\\"\\n [keepTwoDigits]=\\\"keepTwoDigitsTime\\\"\\n [ngModel]=\\\"time\\\"\\n (ngModelChange)=\\\"_timeComponentValueChanged($event)\\\"\\n [meridian]=\\\"_meridian\\\"\\n [displayHours]=\\\"_displayHours\\\"\\n [displayMinutes]=\\\"_displayMinutes\\\"\\n [displaySeconds]=\\\"_displaySeconds\\\"\\n [spinnerButtons]=\\\"spinnerButtons\\\"\\n ></fd-time>\\n }\\n </fd-popover-body>\\n</fd-popover>\\n<div [style.display]=\\\"'none'\\\" aria-hidden=\\\"true\\\">\\n <div [attr.id]=\\\"_formValueStateMessageId\\\" aria-atomic=\\\"true\\\" aria-live=\\\"assertive\\\">\\n @switch (state) {\\n @case ('success') {\\n {{ valueStateSuccessMessage }}\\n }\\n @case ('information') {\\n {{ valueStateInformationMessage }}\\n }\\n @case ('warning') {\\n {{ valueStateWarningMessage }}\\n }\\n @case ('error') {\\n {{ valueStateErrorMessage }}\\n }\\n }\\n {{ _message }}\\n </div>\\n</div>\\n<ng-template #formMessageTemplate>\\n @if (_message) {\\n <fd-form-message [embedded]=\\\"true\\\" [type]=\\\"state\\\">\\n {{ _message }}\\n </fd-form-message>\\n }\\n</ng-template>\\n\", styles: [\".fd-timepicker-custom{display:inline-block}.fd-timepicker-custom fd-popover{display:block}.fd-timepicker-custom fd-time{width:auto}\\n\"], dependencies: [{ kind: \"component\", type: PopoverComponent, selector: \"fd-popover\", inputs: [\"title\", \"trigger\", \"fixedPosition\", \"id\", \"mobile\", \"mobileConfig\", \"preventSpaceKeyScroll\"] }, { kind: \"component\", type: PopoverControlComponent, selector: \"fd-popover-control, [fdPopoverControl]\" }, { kind: \"component\", type: InputGroupComponent, selector: \"fd-input-group\", inputs: [\"placement\", \"required\", \"inline\", \"addOnText\", \"buttonFocusable\", \"type\", \"glyph\", \"glyphFont\", \"button\", \"isControl\", \"showFocus\", \"isExpanded\", \"glyphAriaLabel\", \"addonButtonAriaHidden\", \"iconTitle\", \"ariaLabelledBy\", \"ariaLabel\"], outputs: [\"addOnButtonClicked\", \"search\"] }, { kind: \"directive\", type: InputGroupInputDirective, selector: \"[fdInputGroupInput], [fd-input-group-input]\", inputs: [\"class\"] }, { kind: \"component\", type: PopoverBodyComponent, selector: \"fd-popover-body\", inputs: [\"minWidth\", \"maxWidth\", \"minHeight\", \"maxHeight\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: FormMessageComponent, selector: \"fd-form-message\", inputs: [\"type\", \"static\", \"embedded\", \"class\"] }, { kind: \"component\", type: TimeComponent, selector: \"fd-time\", inputs: [\"meridian\", \"validate\", \"keepTwoDigits\", \"disabled\", \"displaySeconds\", \"displayMinutes\", \"displayHours\", \"tablet\", \"elementsAtOnce\", \"time\", \"spinnerButtons\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }, { kind: \"pipe\", type: TranslateDayPeriodPipe, name: \"translateDayPeriod\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fd-time-picker', host: {\n '(focusout)': '_focusOut($event)',\n '(blur)': 'onTouched()',\n class: 'fd-time-picker fd-timepicker-custom'\n }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n PopoverFormMessageService,\n PopoverService,\n registerFormItemControl(TimePickerComponent)\n ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n PopoverComponent,\n PopoverControlComponent,\n InputGroupComponent,\n InputGroupInputDirective,\n PopoverBodyComponent,\n NgTemplateOutlet,\n FormMessageComponent,\n TimeComponent,\n FormsModule,\n FdTranslatePipe,\n TranslateDayPeriodPipe\n ], template: \"<fd-popover\\n [(isOpen)]=\\\"isOpen\\\"\\n (isOpenChange)=\\\"_onOpenStateChanged($event)\\\"\\n [triggers]=\\\"[]\\\"\\n [disabled]=\\\"disabled\\\"\\n [placement]=\\\"placement\\\"\\n [closeOnEscapeKey]=\\\"true\\\"\\n [focusAutoCapture]=\\\"false\\\"\\n [focusTrapped]=\\\"true\\\"\\n>\\n <fd-popover-control>\\n <fd-input-group\\n #inputGroupComponent\\n (addOnButtonClicked)=\\\"_addOnButtonClicked()\\\"\\n [button]=\\\"true\\\"\\n [state]=\\\"state\\\"\\n [disabled]=\\\"disabled\\\"\\n [buttonFocusable]=\\\"buttonFocusable\\\"\\n [isControl]=\\\"true\\\"\\n [isExpanded]=\\\"isOpen\\\"\\n [glyphAriaLabel]=\\\"timePickerButtonLabel || ('coreTimePicker.timePickerButtonLabel' | fdTranslate)\\\"\\n glyph=\\\"fob-watch\\\"\\n >\\n <input\\n type=\\\"text\\\"\\n class=\\\"fd-input\\\"\\n fd-input-group-input\\n [value]=\\\"_inputTimeValue | translateDayPeriod\\\"\\n (focusout)=\\\"_timeInputChanged($any($event.currentTarget).value)\\\"\\n (keyup.enter)=\\\"_timeInputChanged($any($event.currentTarget).value)\\\"\\n [disabled]=\\\"disabled\\\"\\n [attr.id]=\\\"inputId\\\"\\n [placeholder]=\\\"_placeholder\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-label]=\\\"timePickerInputLabel || ('coreTimePicker.timePickerInputLabel' | fdTranslate)\\\"\\n [attr.aria-describedby]=\\\"_formValueStateMessageId\\\"\\n [attr.aria-required]=\\\"required\\\"\\n />\\n </fd-input-group>\\n </fd-popover-control>\\n <fd-popover-body>\\n <ng-template [ngTemplateOutlet]=\\\"formMessageTemplate\\\"></ng-template>\\n <ng-content></ng-content>\\n @if (isOpen) {\\n <fd-time\\n [tablet]=\\\"tablet\\\"\\n [disabled]=\\\"disabled\\\"\\n [keepTwoDigits]=\\\"keepTwoDigitsTime\\\"\\n [ngModel]=\\\"time\\\"\\n (ngModelChange)=\\\"_timeComponentValueChanged($event)\\\"\\n [meridian]=\\\"_meridian\\\"\\n [displayHours]=\\\"_displayHours\\\"\\n [displayMinutes]=\\\"_displayMinutes\\\"\\n [displaySeconds]=\\\"_displaySeconds\\\"\\n [spinnerButtons]=\\\"spinnerButtons\\\"\\n ></fd-time>\\n }\\n </fd-popover-body>\\n</fd-popover>\\n<div [style.display]=\\\"'none'\\\" aria-hidden=\\\"true\\\">\\n <div [attr.id]=\\\"_formValueStateMessageId\\\" aria-atomic=\\\"true\\\" aria-live=\\\"assertive\\\">\\n @switch (state) {\\n @case ('success') {\\n {{ valueStateSuccessMessage }}\\n }\\n @case ('information') {\\n {{ valueStateInformationMessage }}\\n }\\n @case ('warning') {\\n {{ valueStateWarningMessage }}\\n }\\n @case ('error') {\\n {{ valueStateErrorMessage }}\\n }\\n }\\n {{ _message }}\\n </div>\\n</div>\\n<ng-template #formMessageTemplate>\\n @if (_message) {\\n <fd-form-message [embedded]=\\\"true\\\" [type]=\\\"state\\\">\\n {{ _message }}\\n </fd-form-message>\\n }\\n</ng-template>\\n\", styles: [\".fd-timepicker-custom{display:inline-block}.fd-timepicker-custom fd-popover{display:block}.fd-timepicker-custom fd-time{width:auto}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.DatetimeAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }, { type: i2.PopoverFormMessageService }], propDecorators: { time: [{\n type: Input\n }], inputId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], required: [{\n type: Input\n }], spinnerButtons: [{\n type: Input\n }], meridian: [{\n type: Input\n }], displaySeconds: [{\n type: Input\n }], displayMinutes: [{\n type: Input\n }], displayHours: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], timePickerInputLabel: [{\n type: Input\n }], timePickerButtonLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], allowNull: [{\n type: Input\n }], tablet: [{\n type: Input\n }], message: [{\n type: Input\n }], messageType: [{\n type: Input\n }], messageTriggers: [{\n type: Input\n }], placement: [{\n type: Input\n }], useValidation: [{\n type: Input\n }], state: [{\n type: Input\n }], buttonFocusable: [{\n type: Input\n }], keepTwoDigitsTime: [{\n type: Input\n }], displayFormat: [{\n type: Input\n }], parseFormat: [{\n type: Input\n }], valueStateSuccessMessage: [{\n type: Input\n }], valueStateInformationMessage: [{\n type: Input\n }], valueStateWarningMessage: [{\n type: Input\n }], valueStateErrorMessage: [{\n type: Input\n }], isOpenChange: [{\n type: Output\n }], child: [{\n type: ViewChild,\n args: [TimeComponent]\n }], _inputGroupElement: [{\n type: ViewChild,\n args: ['inputGroupComponent', { read: ElementRef }]\n }], _inputElement: [{\n type: ViewChild,\n args: [InputGroupInputDirective, { read: ElementRef }]\n }], _formMessageTemplate: [{\n type: ViewChild,\n args: ['formMessageTemplate']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFFZixzQkFBc0IsRUFDekIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBRUgsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDMUIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRyxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsY0FBYyxFQUNqQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBYSw0QkFBNEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxP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QUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLeEMsb0JBQW9CO3NCQURwQyxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgREFURV9USU1FX0ZPUk1BVFMsXG4gICAgRGF0ZXRpbWVBZGFwdGVyLFxuICAgIERhdGVUaW1lRm9ybWF0cyxcbiAgICBUcmFuc2xhdGVEYXlQZXJpb2RQaXBlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQge1xuICAgIEZvcm1JdGVtQ29udHJvbCxcbiAgICBGb3JtTWVzc2FnZUNvbXBvbmVudCxcbiAgICBQb3BvdmVyRm9ybU1lc3NhZ2VTZXJ2aWNlLFxuICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IElucHV0R3JvdXBDb21wb25lbnQsIElucHV0R3JvdXBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pbnB1dC1ncm91cCc7XG5pbXBvcnQge1xuICAgIFBvcG92ZXJCb2R5Q29tcG9uZW50LFxuICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQsXG4gICAgUG9wb3ZlclNlcnZpY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgUGxhY2VtZW50LCBWYWx1ZVN0YXRlQXJpYU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBUaW1lQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpbWUnO1xuXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmxldCB0aW1lUGlja2VyQ291bnRlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGltZS1waWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdfZm9jdXNPdXQoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxuICAgICAgICBjbGFzczogJ2ZkLXRpbWUtcGlja2VyIGZkLXRpbWVwaWNrZXItY3VzdG9tJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBQb3BvdmVyRm9ybU1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBQb3BvdmVyU2VydmljZSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woVGltZVBpY2tlckNvbXBvbmVudClcbiAgICBdLFxuICAgIHN0eWxlVXJsOiAnLi90aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgICAgICBJbnB1dEdyb3VwQ29tcG9uZW50LFxuICAgICAgICBJbnB1dEdyb3VwSW5wdXREaXJlY3RpdmUsXG4gICAgICAgIFBvcG92ZXJCb2R5Q29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBGb3JtTWVzc2FnZUNvbXBvbmVudCxcbiAgICAgICAgVGltZUNvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgVHJhbnNsYXRlRGF5UGVyaW9kUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlckNvbXBvbmVudDxEPlxuICAgIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFZhbGlkYXRvciwgRm9ybUl0ZW1Db250cm9sXG57XG4gICAgLyoqXG4gICAgICogRGF0ZSB0aW1lIG9iamVjdCByZXByZXNlbnRhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGltZTogTnVsbGFibGU8RD47XG5cbiAgICAvKiogSWQgYXR0cmlidXRlIGZvciBpbnB1dCBlbGVtZW50IGluc2lkZSBUaW1lUGlja2VyIGNvbXBvbmVudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgLyoqIERpc2FibGVzIHRoZSBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiBJZiBpdCBpcyBtYW5kYXRvcnkgZmllbGQgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBzaG93IHNwaW5uZXIgYnV0dG9ucyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3Bpbm5lckJ1dHRvbnMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHVzZXMgdGhlIDI0IGhvdXIgY2xvY2sgKGhvdXJzIHJhbmdpbmcgZnJvbSAwIHRvIDIzKS5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZSBmb3JtYXQgb3B0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtZXJpZGlhbjogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgaW5wdXQgZm9yIHNlY29uZHMuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U2Vjb25kczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgaW5wdXQgZm9yIG1pbnV0ZXMuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5TWludXRlczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgaW5wdXQgZm9yIGhvdXJzLlxuICAgICAqIERlZmF1bHQgdmFsdWUgYmFzZWQgb24gdGhlIGN1cnJlbnQgbG9jYWxlIGZvcm1hdCBvcHRpb25cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUhvdXJzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCB0aW1lIHBpY2tlciBwbGFjZWhvbGRlciB3aGljaCBpcyBzZXQgZGVwZW5kYW50IG9uIHRoZSBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcy5cbiAgICAgKiBPdGhlcndpc2UgSXQgY2FuIGJlIHNldCB0byBhIGRlZmF1bHQgdmFsdWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIHRpbWUgcGlja2VyIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGltZVBpY2tlcklucHV0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgdGltZSBwaWNrZXIgdG9nZ2xlIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRpbWVQaWNrZXJCdXR0b25MYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEFyaWEtbGFiZWxsZWRieSBmb3IgdGhlIHRpbWUgcGlja2VyIHRvZ2dsZSBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBXaGV0aGVyIGEgbnVsbCBpbnB1dCBpcyBjb25zaWRlcmVkIHZhbGlkKHN1Y2Nlc3MpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dOdWxsID0gdHJ1ZTtcblxuICAgIC8qKiBEZWZpbmVzIGlmIHRpbWUgY29tcG9uZW50IHNob3VsZCBiZSB1c2VkIHdpdGggdGFibGV0IG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmxldCA9IGZhbHNlO1xuXG4gICAgLyoqIFRleHQgZGlzcGxheWVkIGluIG1lc3NhZ2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB9XG5cbiAgICAvKiogVHlwZSBvZiB0aGUgbWVzc2FnZS4gQ2FuIGJlICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnd2FybmluZycgfCAnaW5mb3JtYXRpb24nICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbWVzc2FnZVR5cGUobWVzc2FnZVR5cGU6IEZvcm1TdGF0ZXMpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZVR5cGUgPSBtZXNzYWdlVHlwZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdHJpZ2dlciBldmVudHMgdGhhdCB3aWxsIG9wZW4vY2xvc2UgdGhlIG1lc3NhZ2UgYm94LlxuICAgICAqIEFjY2VwdHMgYW55IFtIVE1MIERPTSBFdmVudHNdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvZG9tX29ial9ldmVudC5hc3ApLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1lc3NhZ2VUcmlnZ2Vycyh0cmlnZ2Vyczogc3RyaW5nW10pIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZVRyaWdnZXJzID0gdHJpZ2dlcnM7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS50cmlnZ2VycyA9IHRyaWdnZXJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBUaGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyLiBJdCBjYW4gYmUgb25lIG9mOiB0b3AsIHRvcC1zdGFydCwgdG9wLWVuZCwgYm90dG9tLFxuICAgICAqICBib3R0b20tc3RhcnQsIGJvdHRvbS1lbmQsIHJpZ2h0LCByaWdodC1zdGFydCwgcmlnaHQtZW5kLCBsZWZ0LCBsZWZ0LXN0YXJ0LCBsZWZ0LWVuZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgICAvKiogV2hldGhlciB0byB2YWxpZGF0ZSB0aGUgdGltZSBwaWNrZXIgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICB1c2VWYWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgc3RhdGUgb2YgdGhlIGZvcm0gY29udHJvbCAtIGFwcGxpZXMgY3NzIGNsYXNzZXMuXG4gICAgICogIEFsc28gdGhpcyBpcyBhcHBsaWVkIHRvIG1lc3NhZ2UuXG4gICAgICogIENhbiBiZSBgc3VjY2Vzc2AsIGBlcnJvcmAsIGB3YXJuaW5nYCwgYGluZm9ybWF0aW9uYCBvciBibGFuayBmb3IgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGF0ZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlO1xuICAgIH1cblxuICAgIGdldCBzdGF0ZSgpOiBGb3JtU3RhdGVzIHtcbiAgICAgICAgaWYgKHRoaXMuX3N0YXRlID09IG51bGwgJiYgdGhpcy51c2VWYWxpZGF0aW9uICYmIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlID8/ICdkZWZhdWx0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIEFkZE9uIEJ1dHRvbiBzaG91bGQgYmUgZm9jdXNhYmxlXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYnV0dG9uRm9jdXNhYmxlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIHRydWUsIHRpbWUgaW5wdXRzIHdvbid0IGFsbG93IHRvIGhhdmUgMSBkaWdpdFxuICAgICAqIGZvciBleGFtcGxlIDkgd2lsbCBiZWNvbWUgMDlcbiAgICAgKiBidXQgMTIgd2lsbCBiZSBrZXB0IGFzIDEyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAga2VlcFR3b0RpZ2l0c1RpbWUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIERpc3BsYXkgZm9ybWF0IG9wdGlvbiB0byBjdXN0b21pemUgdGltZSBmb3JtYXQgaW4gaW5wdXQgY29udHJvbC5cbiAgICAgKiBNdXN0IGJlIGEgZm9ybWF0IG9wdGlvbiB0aGF0IGlzIHVuZGVyc3RhbmRhYmxlIGJ5IERhdGV0aW1lQWRhcHRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlGb3JtYXQ6IHVua25vd247XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZSBmb3JtYXQgb3B0aW9uIHRvIGN1c3RvbWl6ZSB0aW1lIGZvcm1hdCBpbiBpbnB1dCBjb250cm9sLlxuICAgICAqIE11c3QgYmUgYSBmb3JtYXQgb3B0aW9uIHRoYXQgaXMgdW5kZXJzdGFuZGFibGUgYnkgRGF0ZXRpbWVBZGFwdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFyc2VGb3JtYXQ6IHVua25vd247XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBzdGF0ZSBcInN1Y2Nlc3NcIiBhcmlhIG1lc3NhZ2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZVN0YXRlU3VjY2Vzc01lc3NhZ2U6IHN0cmluZyA9IGluamVjdChWYWx1ZVN0YXRlQXJpYU1lc3NhZ2VTZXJ2aWNlKS5zdWNjZXNzO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgc3RhdGUgXCJpbmZvcm1hdGlvblwiIGFyaWEgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlU3RhdGVJbmZvcm1hdGlvbk1lc3NhZ2U6IHN0cmluZyA9IGluamVjdChWYWx1ZVN0YXRlQXJpYU1lc3NhZ2VTZXJ2aWNlKS5pbmZvcm1hdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFZhbHVlIHN0YXRlIFwid2FybmluZ1wiIGFyaWEgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlU3RhdGVXYXJuaW5nTWVzc2FnZTogc3RyaW5nID0gaW5qZWN0KFZhbHVlU3RhdGVBcmlhTWVzc2FnZVNlcnZpY2UpLndhcm5pbmc7XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBzdGF0ZSBcImVycm9yXCIgYXJpYSBtZXNzYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWVTdGF0ZUVycm9yTWVzc2FnZTogc3RyaW5nID0gaW5qZWN0KFZhbHVlU3RhdGVBcmlhTWVzc2FnZVNlcnZpY2UpLmVycm9yO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc3RhdGUgb2YgdGhlIGlzT3BlbiBwcm9wZXJ0eSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChUaW1lQ29tcG9uZW50KVxuICAgIGNoaWxkOiBUaW1lQ29tcG9uZW50PEQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwQ29tcG9uZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX2lucHV0R3JvdXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKElucHV0R3JvdXBJbnB1dERpcmVjdGl2ZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX2lucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZm9ybU1lc3NhZ2VUZW1wbGF0ZScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9ybU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVzc2FnZVR5cGU6IEZvcm1TdGF0ZXMgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VUcmlnZ2Vyczogc3RyaW5nW10gPSBbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBXaGV0aGVyIHRoZSBpbnB1dCB0aW1lIGlzIHZhbGlkKHN1Y2Nlc3MpLiBJbnRlcm5hbCB1c2UuXG4gICAgICovXG4gICAgX2lzSW52YWxpZFRpbWVJbnB1dCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEluZGljYXRlcyB3aGVuIHBvcG92ZXIgaXMgb3BlbmVkXG4gICAgICovXG4gICAgaXNPcGVuOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVyaWRpYW46IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5U2Vjb25kczogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlNaW51dGVzOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheUhvdXJzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIElucHV0IGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgX2lucHV0VGltZVZhbHVlID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mb3JtVmFsdWVTdGF0ZU1lc3NhZ2VJZCA9IGBmZC10aW1lLXBpY2tlci1mb3JtLW1lc3NhZ2UtJHt0aW1lUGlja2VyQ291bnRlcisrfWA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0YXRlOiBGb3JtU3RhdGVzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXIgfHwgdGhpcy5fZ2V0UGxhY2Vob2xkZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIC8vIFVzZSBAT3B0aW9uYWwgdG8gYXZvaWQgYW5ndWxhciBpbmplY3Rpb24gZXJyb3IgbWVzc2FnZSBhbmQgdGhyb3cgb3VyIG93biB3aGljaCBpcyBtb3JlIHByZWNpc2Ugb25lXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEVfVElNRV9GT1JNQVRTKSBwcml2YXRlIF9kYXRlVGltZUZvcm1hdHM6IERhdGVUaW1lRm9ybWF0cyxcbiAgICAgICAgcHJpdmF0ZSBfcG9wb3ZlckZvcm1NZXNzYWdlOiBQb3BvdmVyRm9ybU1lc3NhZ2VTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVBZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RhdGVUaW1lQWRhcHRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVGb3JtYXRzKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RBVEVfVElNRV9GT1JNQVRTJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAoXzogTnVsbGFibGU8RD4pID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlVGltZU9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5fZm9ybWF0VGltZUlucHV0RmllbGQoKTtcblxuICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIubG9jYWxlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZVRpbWVPcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRUaW1lSW5wdXRGaWVsZCgpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgWydkaXNwbGF5SG91cnMnLCAnZGlzcGxheU1pbnV0ZXMnLCAnZGlzcGxheVNlY29uZHMnLCAnbWVyaWRpYW4nLCAnZGlzcGxheUZvcm1hdCddLnNvbWUoXG4gICAgICAgICAgICAgICAgKGNoYW5nZSkgPT4gY2hhbmdlIGluIGNoYW5nZXNcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVUaW1lT3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc3BsYXlGb3JtYXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFRpbWVJbnB1dEZpZWxkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGlzZVZhcmlhYmxlc0luTWVzc2FnZVNlcnZpY2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIFZhbGlkYXRvciBJbnRlcmZhY2UsIGFkZHMgdmFsaWRhdGlvbiBzdXBwb3J0IGZvciBmb3Jtc1xuICAgICAqL1xuICAgIHZhbGlkYXRlKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aW1lVmFsaWRhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgdGltZSBpbnB1dC5cbiAgICAgKi9cbiAgICBnZXRUaW1lKCk6IE51bGxhYmxlPEQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGZvcm1hdCBvcHRpb25zIHRvIGJlIHVzZWQgZHVyaW5nIHRpbWUgZm9ybWF0dGluZy5cbiAgICAgKi9cbiAgICBnZXREaXNwbGF5Rm9ybWF0KCk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5Rm9ybWF0IHx8IHRoaXMuX2RhdGVUaW1lRm9ybWF0cy5kaXNwbGF5LnRpbWVJbnB1dDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGZvcm1hdCBvcHRpb25zIHRvIGJlIHVzZWQgZHVyaW5nIHRpbWUgcGFyc2luZy5cbiAgICAgKi9cbiAgICBnZXRQYXJzZUZvcm1hdCgpOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VGb3JtYXQgfHwgdGhpcy5fZGF0ZVRpbWVGb3JtYXRzLnBhcnNlLnRpbWVJbnB1dDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRGb3JtYXR0ZWRUaW1lKHRpbWUgPSB0aGlzLnRpbWUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgZm9ybWF0dGVkVGltZSA9ICcnO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd051bGwgJiYgdGltZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvcm1hdHRlZFRpbWUgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZm9ybWF0KHRpbWUhLCB0aGlzLmdldERpc3BsYXlGb3JtYXQoKSk7XG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkVGltZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQGhpZGRlblxuICAgICAqICBXaGVuIHRoZSBvcGVuIHN0YXRlIGlzIGNoYW5nZWQsIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgYWN0aXZlIGl0ZW0sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgaG91ci5cbiAgICAgKi9cbiAgICBfc2V0SXNPcGVuKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGlzT3BlbjtcbiAgICAgICAgdGhpcy5fb25PcGVuU3RhdGVDaGFuZ2VkKGlzT3Blbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRpbWUgaW5wdXQgZmllbGQgY2hhbmdlcyBoYW5kbGVyXG4gICAgICovXG4gICAgX3RpbWVJbnB1dENoYW5nZWQoaW5wdXRWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnRyaW0oKTtcblxuICAgICAgICAvLyBjaGVjayBpZiB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgIGlmICh0aGlzLl9pbnB1dFRpbWVWYWx1ZSA9PT0gaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5wdXRUaW1lVmFsdWUgPSBpbnB1dFZhbHVlO1xuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy50aW1lID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCA9ICF0aGlzLmFsbG93TnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgLy8gUmVnZXggdG8gZGV0ZWN0IGFuZCByZWFycmFuZ2UgZGF5IHBlcmlvZCBpbiB0aGUgdGltZSBzdHJpbmdcbiAgICAgICAgICAgIGNvbnN0IGRheVBlcmlvZFBhdHRlcm4gPSAvXFxiKG5pZ2h0fG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmcpXFxiL2c7XG4gICAgICAgICAgICBpbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS5yZXBsYWNlKGRheVBlcmlvZFBhdHRlcm4sICcnKS50cmltKCk7XG5cbiAgICAgICAgICAgIHRoaXMudGltZSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5wYXJzZShpbnB1dFZhbHVlLCB0aGlzLmdldFBhcnNlRm9ybWF0KCkpO1xuICAgICAgICAgICAgdGhpcy5faXNJbnZhbGlkVGltZUlucHV0ID0gIXRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1ZhbGlkKHRoaXMudGltZSEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnRpbWUpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbnB1dEdyb3VwQ2xpY2tlZCgkZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbiAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5fc2V0SXNPcGVuKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWRkT25CdXR0b25DbGlja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldElzT3BlbighdGhpcy5pc09wZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9wb3ZlckNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0SXNPcGVuKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmV0VmFsID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlIb3Vycykge1xuICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsICsgJ2hoJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZGlzcGxheU1pbnV0ZXMpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArICc6bW0nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kaXNwbGF5U2Vjb25kcykge1xuICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsICsgJzpzcyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX21lcmlkaWFuKSB7XG4gICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyAnIGFtL3BtJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGltZUNvbXBvbmVudFZhbHVlQ2hhbmdlZCh0aW1lOiBEKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZGF0ZVRpbWVzRXF1YWwodGltZSwgdGhpcy50aW1lISkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbnB1dFRpbWVWYWx1ZSA9IHRoaXMuX2dldEZvcm1hdHRlZFRpbWUodGltZSk7XG4gICAgICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCA9ICF0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aW1lKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aW1lKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8vICNyZWdpb24gQ29udHJvbFZhbHVlQWNjZXNzb3JcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHRpbWU6IE51bGxhYmxlPEQ+KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh0aW1lOiBEKTogdm9pZCB7XG4gICAgICAgIGlmICghdGltZSkge1xuICAgICAgICAgICAgdGhpcy50aW1lID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0VGltZVZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLl9pc0ludmFsaWRUaW1lSW5wdXQgPSAhdGhpcy5hbGxvd051bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRpbWUgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIucGFyc2UodGltZSwgdGhpcy5nZXRQYXJzZUZvcm1hdCgpKTtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0VGltZVZhbHVlID0gdGhpcy5fZ2V0Rm9ybWF0dGVkVGltZSh0aW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCA9ICF0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mb3JtYXRUaW1lSW5wdXRGaWVsZCh0aW1lID0gdGhpcy50aW1lKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9pbnB1dFRpbWVWYWx1ZSA9IHRoaXMuX2dldEZvcm1hdHRlZFRpbWUodGltZSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoYW5nZU1lc3NhZ2VWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS5oaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2Uuc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25PcGVuU3RhdGVDaGFuZ2VkKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGlzT3Blbik7XG4gICAgICAgIHRoaXMuX2NoYW5nZU1lc3NhZ2VWaXNpYmlsaXR5KCk7XG4gICAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2hpbGQuZm9jdXNBY3RpdmVDb2x1bW4oKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb2N1cyBpbnB1dCBjb250cm9sIGV2ZXJ5IHRpbWUgcG9wdXAgaXMgY2xvc2VkXG4gICAgICAgIGlmICghaXNPcGVuICYmIHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVRpbWVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmdldERpc3BsYXlGb3JtYXQoKTtcblxuICAgICAgICAvLyBkZWZhdWx0IG1lcmlkaWFuIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX21lcmlkaWFuID1cbiAgICAgICAgICAgIHRoaXMubWVyaWRpYW4gIT0gbnVsbCA/IHRoaXMubWVyaWRpYW4gOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNUaW1lRm9ybWF0SW5jbHVkZXNEYXlQZXJpb2QoZm9ybWF0KTtcblxuICAgICAgICAvLyBkZWZhdWx0IHNlY29uZHMgb3B0aW9uIGJhc2VkIG9uIGZvcm1hdCBvcHRpb25cbiAgICAgICAgdGhpcy5fZGlzcGxheVNlY29uZHMgPVxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5U2Vjb25kcyAhPSBudWxsXG4gICAgICAgICAgICAgICAgPyB0aGlzLmRpc3BsYXlTZWNvbmRzXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNUaW1lRm9ybWF0SW5jbHVkZXNTZWNvbmRzKGZvcm1hdCk7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBtaW51dGVzIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlNaW51dGVzID1cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1pbnV0ZXMgIT0gbnVsbFxuICAgICAgICAgICAgICAgID8gdGhpcy5kaXNwbGF5TWludXRlc1xuICAgICAgICAgICAgICAgIDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhmb3JtYXQpO1xuXG4gICAgICAgIC8vIGRlZmF1bHQgaG91cnMgb3B0aW9uIGJhc2VkIG9uIGZvcm1hdCBvcHRpb25cbiAgICAgICAgdGhpcy5fZGlzcGxheUhvdXJzID1cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUhvdXJzICE9IG51bGwgPyB0aGlzLmRpc3BsYXlIb3VycyA6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1RpbWVGb3JtYXRJbmNsdWRlc0hvdXJzKGZvcm1hdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGluaXRpYWxpc2VWYXJpYWJsZXNJbk1lc3NhZ2VTZXJ2aWNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UuaW5pdCh0aGlzLl9pbnB1dEdyb3VwRWxlbWVudCk7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS5tZXNzYWdlID0gdGhpcy5fZm9ybU1lc3NhZ2VUZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLnRyaWdnZXJzID0gdGhpcy5fbWVzc2FnZVRyaWdnZXJzO1xuICAgIH1cbn1cbiIsIjxmZC1wb3BvdmVyXG4gICAgWyhpc09wZW4pXT1cImlzT3BlblwiXG4gICAgKGlzT3BlbkNoYW5nZSk9XCJfb25PcGVuU3RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcGxhY2VtZW50XT1cInBsYWNlbWVudFwiXG4gICAgW2Nsb3NlT25Fc2NhcGVLZXldPVwidHJ1ZVwiXG4gICAgW2ZvY3VzQXV0b0NhcHR1cmVdPVwiZmFsc2VcIlxuICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4+XG4gICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgPGZkLWlucHV0LWdyb3VwXG4gICAgICAgICAgICAjaW5wdXRHcm91cENvbXBvbmVudFxuICAgICAgICAgICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJfYWRkT25CdXR0b25DbGlja2VkKClcIlxuICAgICAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzdGF0ZV09XCJzdGF0ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2J1dHRvbkZvY3VzYWJsZV09XCJidXR0b25Gb2N1c2FibGVcIlxuICAgICAgICAgICAgW2lzQ29udHJvbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpc0V4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgICAgICBbZ2x5cGhBcmlhTGFiZWxdPVwidGltZVBpY2tlckJ1dHRvbkxhYmVsIHx8ICgnY29yZVRpbWVQaWNrZXIudGltZVBpY2tlckJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBnbHlwaD1cImZvYi13YXRjaFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0XCJcbiAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJfaW5wdXRUaW1lVmFsdWUgfCB0cmFuc2xhdGVEYXlQZXJpb2RcIlxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJfdGltZUlucHV0Q2hhbmdlZCgkYW55KCRldmVudC5jdXJyZW50VGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJfdGltZUlucHV0Q2hhbmdlZCgkYW55KCRldmVudC5jdXJyZW50VGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIl9wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRpbWVQaWNrZXJJbnB1dExhYmVsIHx8ICgnY29yZVRpbWVQaWNrZXIudGltZVBpY2tlcklucHV0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIl9mb3JtVmFsdWVTdGF0ZU1lc3NhZ2VJZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2ZkLWlucHV0LWdyb3VwPlxuICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJmb3JtTWVzc2FnZVRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICBAaWYgKGlzT3Blbikge1xuICAgICAgICAgICAgPGZkLXRpbWVcbiAgICAgICAgICAgICAgICBbdGFibGV0XT1cInRhYmxldFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBba2VlcFR3b0RpZ2l0c109XCJrZWVwVHdvRGlnaXRzVGltZVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidGltZVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3RpbWVDb21wb25lbnRWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW21lcmlkaWFuXT1cIl9tZXJpZGlhblwiXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXlIb3Vyc109XCJfZGlzcGxheUhvdXJzXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheU1pbnV0ZXNdPVwiX2Rpc3BsYXlNaW51dGVzXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheVNlY29uZHNdPVwiX2Rpc3BsYXlTZWNvbmRzXCJcbiAgICAgICAgICAgICAgICBbc3Bpbm5lckJ1dHRvbnNdPVwic3Bpbm5lckJ1dHRvbnNcIlxuICAgICAgICAgICAgPjwvZmQtdGltZT5cbiAgICAgICAgfVxuICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuPC9mZC1wb3BvdmVyPlxuPGRpdiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8ZGl2IFthdHRyLmlkXT1cIl9mb3JtVmFsdWVTdGF0ZU1lc3NhZ2VJZFwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxuICAgICAgICBAc3dpdGNoIChzdGF0ZSkge1xuICAgICAgICAgICAgQGNhc2UgKCdzdWNjZXNzJykge1xuICAgICAgICAgICAgICAgIHt7IHZhbHVlU3RhdGVTdWNjZXNzTWVzc2FnZSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdpbmZvcm1hdGlvbicpIHtcbiAgICAgICAgICAgICAgICB7eyB2YWx1ZVN0YXRlSW5mb3JtYXRpb25NZXNzYWdlIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ3dhcm5pbmcnKSB7XG4gICAgICAgICAgICAgICAge3sgdmFsdWVTdGF0ZVdhcm5pbmdNZXNzYWdlIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgIHt7IHZhbHVlU3RhdGVFcnJvck1lc3NhZ2UgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB7eyBfbWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2Zvcm1NZXNzYWdlVGVtcGxhdGU+XG4gICAgQGlmIChfbWVzc2FnZSkge1xuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlIFtlbWJlZGRlZF09XCJ0cnVlXCIgW3R5cGVdPVwic3RhdGVcIj5cbiAgICAgICAgICAgIHt7IF9tZXNzYWdlIH19XG4gICAgICAgIDwvZmQtZm9ybS1tZXNzYWdlPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=","import { NgModule } from '@angular/core';\nimport { TimePickerComponent } from './time-picker.component';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct import of `TimePickerComponent`\n */\nexport class TimePickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerModule, imports: [TimePickerComponent], exports: [TimePickerComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerModule, imports: [TimePickerComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [TimePickerComponent],\n exports: [TimePickerComponent]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUU5RDs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixZQUhmLG1CQUFtQixhQUNuQixtQkFBbUI7K0dBRXBCLGdCQUFnQixZQUhmLG1CQUFtQjs7MkZBR3BCLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdGltZS1waWNrZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnQgb2YgYFRpbWVQaWNrZXJDb21wb25lbnRgXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1RpbWVQaWNrZXJDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtUaW1lUGlja2VyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWNvcmUtdGltZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdGltZS1waWNrZXIvZnVuZGFtZW50YWwtbmd4LWNvcmUtdGltZS1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-time-picker.mjs","sources":["../tmp-esm2022/time-picker/errors.js","../tmp-esm2022/time-picker/time-picker.component.js","../tmp-esm2022/time-picker/time-picker.module.js","../tmp-esm2022/time-picker/fundamental-ngx-core-time-picker.js"],"sourcesContent":["/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider) {\n return Error(`FdTime: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RpbWUtcGlja2VyL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLG9DQUFvQyxDQUFDLFFBQWdCO0lBQ2pFLE9BQU8sS0FBSyxDQUNSLGlDQUFpQyxRQUFRLHlDQUF5QztRQUM5RSxtRUFBbUU7UUFDbkUsd0JBQXdCLENBQy9CLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIENyZWF0ZXMgYW4gZXJyb3IgdG8gYmUgdGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byB1c2UgYW4gaW52YWxpZCBkYXRlIGltcGxlbWVudGF0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1pc3NpbmdEYXRlSW1wbGVtZW50YXRpb25FcnJvcihwcm92aWRlcjogc3RyaW5nKTogRXJyb3Ige1xuICAgIHJldHVybiBFcnJvcihcbiAgICAgICAgYEZkVGltZTogTm8gcHJvdmlkZXIgZm91bmQgZm9yICR7cHJvdmlkZXJ9LiBZb3UgbXVzdCBpbXBvcnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgYCArXG4gICAgICAgICAgICBgbW9kdWxlcyBhdCB5b3VyIGFwcGxpY2F0aW9uIHJvb3Q6IEZkRGF0ZXRpbWVNb2R1bGUsIG9yIHByb3ZpZGUgYSBgICtcbiAgICAgICAgICAgIGBjdXN0b20gaW1wbGVtZW50YXRpb24uYFxuICAgICk7XG59XG4iXX0=","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, EventEmitter, forwardRef, inject, Inject, Input, Optional, Output, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { DATE_TIME_FORMATS, DatetimeAdapter, TranslateDayPeriodPipe } from '@fundamental-ngx/core/datetime';\nimport { FormMessageComponent, PopoverFormMessageService, registerFormItemControl } from '@fundamental-ngx/core/form';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent, PopoverService } from '@fundamental-ngx/core/popover';\nimport { ValueStateAriaMessageService } from '@fundamental-ngx/core/shared';\nimport { TimeComponent } from '@fundamental-ngx/core/time';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { createMissingDateImplementationError } from './errors';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/datetime\";\nimport * as i2 from \"@fundamental-ngx/core/form\";\nimport * as i3 from \"@angular/forms\";\nlet timePickerCounter = 0;\nexport class TimePickerComponent {\n /** Text displayed in message */\n set message(message) {\n this._message = message;\n }\n /** Type of the message. Can be 'success' | 'error' | 'warning' | 'information' */\n set messageType(messageType) {\n this._messageType = messageType;\n }\n /**\n * The trigger events that will open/close the message box.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n set messageTriggers(triggers) {\n this._messageTriggers = triggers;\n this._popoverFormMessage.triggers = triggers;\n }\n /**\n * The state of the form control - applies css classes.\n * Also this is applied to message.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n set state(state) {\n this._state = state;\n }\n get state() {\n if (this._state == null && this.useValidation && this._isInvalidTimeInput) {\n return 'error';\n }\n return this._state ?? 'default';\n }\n /** @hidden */\n get _placeholder() {\n return this.placeholder || this._getPlaceholder();\n }\n /** @hidden */\n constructor(_changeDetectorRef, _elementRef, \n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n _dateTimeAdapter, _dateTimeFormats, _popoverFormMessage) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n this._popoverFormMessage = _popoverFormMessage;\n /** If it is mandatory field */\n this.required = false;\n /** Whether to show spinner buttons */\n this.spinnerButtons = true;\n /** Whether a null input is considered valid(success). */\n this.allowNull = true;\n /** Defines if time component should be used with tablet mode */\n this.tablet = false;\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n this.placement = 'bottom-start';\n /** Whether to validate the time picker input. */\n this.useValidation = true;\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n this.buttonFocusable = true;\n /**\n * When set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n this.keepTwoDigitsTime = false;\n /**\n * Value state \"success\" aria message.\n */\n this.valueStateSuccessMessage = inject(ValueStateAriaMessageService).success;\n /**\n * Value state \"information\" aria message.\n */\n this.valueStateInformationMessage = inject(ValueStateAriaMessageService).information;\n /**\n * Value state \"warning\" aria message.\n */\n this.valueStateWarningMessage = inject(ValueStateAriaMessageService).warning;\n /**\n * Value state \"error\" aria message.\n */\n this.valueStateErrorMessage = inject(ValueStateAriaMessageService).error;\n /** Event emitted when the state of the isOpen property changes. */\n this.isOpenChange = new EventEmitter();\n /** @hidden */\n this._message = null;\n /** @hidden */\n this._messageType = null;\n /** @hidden */\n this._messageTriggers = ['focusin', 'focusout'];\n /**\n * @hidden\n * Whether the input time is valid(success). Internal use.\n */\n this._isInvalidTimeInput = false;\n /**\n * @hidden\n * Input field value\n */\n this._inputTimeValue = '';\n /** @hidden */\n this._formValueStateMessageId = `fd-time-picker-form-message-${timePickerCounter++}`;\n /** @hidden */\n this._state = null;\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._subscriptions = new Subscription();\n /** @hidden */\n this.onChange = () => { };\n /** @hidden */\n this.onTouched = () => { };\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n /** @hidden */\n ngOnInit() {\n this._calculateTimeOptions();\n this._formatTimeInputField();\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._calculateTimeOptions();\n this._formatTimeInputField();\n this._changeDetectorRef.detectChanges();\n });\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (['displayHours', 'displayMinutes', 'displaySeconds', 'meridian', 'displayFormat'].some((change) => change in changes)) {\n this._calculateTimeOptions();\n }\n if (changes.displayFormat) {\n this._formatTimeInputField();\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n /** @hidden */\n ngAfterViewInit() {\n this.initialiseVariablesInMessageService();\n }\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate() {\n if (this._isInvalidTimeInput) {\n return {\n timeValidation: {\n valid: false\n }\n };\n }\n return null;\n }\n /**\n * Returns the current value of the time input.\n */\n getTime() {\n return this.time;\n }\n /**\n * Returns format options to be used during time formatting.\n */\n getDisplayFormat() {\n return this.displayFormat || this._dateTimeFormats.display.timeInput;\n }\n /**\n * Returns format options to be used during time parsing.\n */\n getParseFormat() {\n return this.parseFormat || this._dateTimeFormats.parse.timeInput;\n }\n /** @hidden */\n _getFormattedTime(time = this.time) {\n let formattedTime = '';\n try {\n if (this.allowNull && time === null) {\n return '';\n }\n formattedTime = this._dateTimeAdapter.format(time, this.getDisplayFormat());\n }\n catch { }\n return formattedTime;\n }\n /**\n * @hidden\n * When the open state is changed, there should be at least one active item, which by default is hour.\n */\n _setIsOpen(isOpen) {\n this.isOpen = isOpen;\n this._onOpenStateChanged(isOpen);\n }\n /**\n * @hidden\n * Time input field changes handler\n */\n _timeInputChanged(inputValue) {\n inputValue = inputValue.trim();\n // check if value has been changed\n if (this._inputTimeValue === inputValue) {\n return;\n }\n this._inputTimeValue = inputValue;\n if (inputValue === '') {\n this.time = null;\n this._isInvalidTimeInput = !this.allowNull;\n }\n if (inputValue !== '') {\n // Regex to detect and rearrange day period in the time string\n const dayPeriodPattern = /\\b(night|morning|afternoon|evening)\\b/g;\n inputValue = inputValue.replace(dayPeriodPattern, '').trim();\n this.time = this._dateTimeAdapter.parse(inputValue, this.getParseFormat());\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(this.time);\n }\n this.onChange(this.time);\n this._changeDetectorRef.detectChanges();\n }\n /** @hidden */\n _inputGroupClicked($event) {\n if (!this.isOpen && !this.disabled) {\n $event.stopPropagation();\n this._setIsOpen(true);\n }\n }\n /** @hidden */\n _addOnButtonClicked() {\n if (!this.disabled) {\n this._setIsOpen(!this.isOpen);\n }\n }\n /** @hidden */\n _popoverClosed() {\n this._setIsOpen(false);\n }\n /** @hidden */\n _getPlaceholder() {\n let retVal = '';\n if (this._displayHours) {\n retVal = retVal + 'hh';\n }\n if (this._displayMinutes) {\n retVal = retVal + ':mm';\n }\n if (this._displaySeconds) {\n retVal = retVal + ':ss';\n }\n if (this._meridian) {\n retVal = retVal + ' am/pm';\n }\n return retVal;\n }\n /** @hidden */\n _timeComponentValueChanged(time) {\n if (this._dateTimeAdapter.dateTimesEqual(time, this.time)) {\n return;\n }\n this._inputTimeValue = this._getFormattedTime(time);\n this.time = time;\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n this.onChange(time);\n this._changeDetectorRef.detectChanges();\n }\n // #region ControlValueAccessor\n /** @hidden */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /** @hidden */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /** @hidden */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.detectChanges();\n }\n /** @hidden */\n writeValue(time) {\n if (!time) {\n this.time = null;\n this._inputTimeValue = '';\n this._isInvalidTimeInput = !this.allowNull;\n }\n else {\n this.time = this._dateTimeAdapter.parse(time, this.getParseFormat());\n this._inputTimeValue = this._getFormattedTime(time);\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n }\n this._changeDetectorRef.markForCheck();\n }\n // #endregion ControlValueAccessor\n /** @hidden */\n _formatTimeInputField(time = this.time) {\n return (this._inputTimeValue = this._getFormattedTime(time));\n }\n /** @hidden */\n _changeMessageVisibility() {\n if (this.isOpen) {\n this._popoverFormMessage.hide();\n }\n else {\n this._popoverFormMessage.show();\n }\n }\n /** @hidden */\n _onOpenStateChanged(isOpen) {\n this.isOpenChange.emit(isOpen);\n this._changeMessageVisibility();\n if (isOpen) {\n this._changeDetectorRef.detectChanges();\n this.child.focusActiveColumn();\n }\n // focus input control every time popup is closed\n if (!isOpen && this._inputElement) {\n this._inputElement.nativeElement.focus();\n }\n }\n /** @hidden */\n _focusOut(event) {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n /** @hidden */\n _calculateTimeOptions() {\n const format = this.getDisplayFormat();\n // default meridian option based on format option\n this._meridian =\n this.meridian != null ? this.meridian : this._dateTimeAdapter.isTimeFormatIncludesDayPeriod(format);\n // default seconds option based on format option\n this._displaySeconds =\n this.displaySeconds != null\n ? this.displaySeconds\n : this._dateTimeAdapter.isTimeFormatIncludesSeconds(format);\n // default minutes option based on format option\n this._displayMinutes =\n this.displayMinutes != null\n ? this.displayMinutes\n : this._dateTimeAdapter.isTimeFormatIncludesMinutes(format);\n // default hours option based on format option\n this._displayHours =\n this.displayHours != null ? this.displayHours : this._dateTimeAdapter.isTimeFormatIncludesHours(format);\n }\n /** @hidden */\n initialiseVariablesInMessageService() {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._formMessageTemplate;\n this._popoverFormMessage.triggers = this._messageTriggers;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.DatetimeAdapter, optional: true }, { token: DATE_TIME_FORMATS, optional: true }, { token: i2.PopoverFormMessageService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: TimePickerComponent, isStandalone: true, selector: \"fd-time-picker\", inputs: { time: \"time\", inputId: \"inputId\", disabled: \"disabled\", required: \"required\", spinnerButtons: \"spinnerButtons\", meridian: \"meridian\", displaySeconds: \"displaySeconds\", displayMinutes: \"displayMinutes\", displayHours: \"displayHours\", placeholder: \"placeholder\", timePickerInputLabel: \"timePickerInputLabel\", timePickerButtonLabel: \"timePickerButtonLabel\", ariaLabelledBy: \"ariaLabelledBy\", allowNull: \"allowNull\", tablet: \"tablet\", message: \"message\", messageType: \"messageType\", messageTriggers: \"messageTriggers\", placement: \"placement\", useValidation: \"useValidation\", state: \"state\", buttonFocusable: \"buttonFocusable\", keepTwoDigitsTime: \"keepTwoDigitsTime\", displayFormat: \"displayFormat\", parseFormat: \"parseFormat\", valueStateSuccessMessage: \"valueStateSuccessMessage\", valueStateInformationMessage: \"valueStateInformationMessage\", valueStateWarningMessage: \"valueStateWarningMessage\", valueStateErrorMessage: \"valueStateErrorMessage\" }, outputs: { isOpenChange: \"isOpenChange\" }, host: { listeners: { \"focusout\": \"_focusOut($event)\", \"blur\": \"onTouched()\" }, classAttribute: \"fd-time-picker fd-timepicker-custom\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n PopoverFormMessageService,\n PopoverService,\n registerFormItemControl(TimePickerComponent)\n ], viewQueries: [{ propertyName: \"child\", first: true, predicate: TimeComponent, descendants: true }, { propertyName: \"_inputGroupElement\", first: true, predicate: [\"inputGroupComponent\"], descendants: true, read: ElementRef }, { propertyName: \"_inputElement\", first: true, predicate: InputGroupInputDirective, descendants: true, read: ElementRef }, { propertyName: \"_formMessageTemplate\", first: true, predicate: [\"formMessageTemplate\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<fd-popover\\n [(isOpen)]=\\\"isOpen\\\"\\n (isOpenChange)=\\\"_onOpenStateChanged($event)\\\"\\n [triggers]=\\\"[]\\\"\\n [disabled]=\\\"disabled\\\"\\n [placement]=\\\"placement\\\"\\n [closeOnEscapeKey]=\\\"true\\\"\\n [focusAutoCapture]=\\\"false\\\"\\n [focusTrapped]=\\\"true\\\"\\n>\\n <fd-popover-control>\\n <fd-input-group\\n #inputGroupComponent\\n (addOnButtonClicked)=\\\"_addOnButtonClicked()\\\"\\n [button]=\\\"true\\\"\\n [state]=\\\"state\\\"\\n [disabled]=\\\"disabled\\\"\\n [buttonFocusable]=\\\"buttonFocusable\\\"\\n [isControl]=\\\"true\\\"\\n [isExpanded]=\\\"isOpen\\\"\\n [glyphAriaLabel]=\\\"timePickerButtonLabel || ('coreTimePicker.timePickerButtonLabel' | fdTranslate)\\\"\\n glyph=\\\"fob-watch\\\"\\n >\\n <input\\n type=\\\"text\\\"\\n class=\\\"fd-input\\\"\\n fd-input-group-input\\n [value]=\\\"_inputTimeValue | translateDayPeriod\\\"\\n (focusout)=\\\"_timeInputChanged($any($event.currentTarget).value)\\\"\\n (keyup.enter)=\\\"_timeInputChanged($any($event.currentTarget).value)\\\"\\n [disabled]=\\\"disabled\\\"\\n [attr.id]=\\\"inputId\\\"\\n [placeholder]=\\\"_placeholder\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-label]=\\\"timePickerInputLabel || ('coreTimePicker.timePickerInputLabel' | fdTranslate)\\\"\\n [attr.aria-describedby]=\\\"_formValueStateMessageId\\\"\\n [attr.aria-required]=\\\"required\\\"\\n />\\n </fd-input-group>\\n </fd-popover-control>\\n <fd-popover-body>\\n <ng-template [ngTemplateOutlet]=\\\"formMessageTemplate\\\"></ng-template>\\n <ng-content></ng-content>\\n @if (isOpen) {\\n <fd-time\\n [tablet]=\\\"tablet\\\"\\n [disabled]=\\\"disabled\\\"\\n [keepTwoDigits]=\\\"keepTwoDigitsTime\\\"\\n [ngModel]=\\\"time\\\"\\n (ngModelChange)=\\\"_timeComponentValueChanged($event)\\\"\\n [meridian]=\\\"_meridian\\\"\\n [displayHours]=\\\"_displayHours\\\"\\n [displayMinutes]=\\\"_displayMinutes\\\"\\n [displaySeconds]=\\\"_displaySeconds\\\"\\n [spinnerButtons]=\\\"spinnerButtons\\\"\\n ></fd-time>\\n }\\n </fd-popover-body>\\n</fd-popover>\\n<div [style.display]=\\\"'none'\\\" aria-hidden=\\\"true\\\">\\n <div [attr.id]=\\\"_formValueStateMessageId\\\" aria-atomic=\\\"true\\\" aria-live=\\\"assertive\\\">\\n @switch (state) {\\n @case ('success') {\\n {{ valueStateSuccessMessage }}\\n }\\n @case ('information') {\\n {{ valueStateInformationMessage }}\\n }\\n @case ('warning') {\\n {{ valueStateWarningMessage }}\\n }\\n @case ('error') {\\n {{ valueStateErrorMessage }}\\n }\\n }\\n {{ _message }}\\n </div>\\n</div>\\n<ng-template #formMessageTemplate>\\n @if (_message) {\\n <fd-form-message [embedded]=\\\"true\\\" [type]=\\\"state\\\">\\n {{ _message }}\\n </fd-form-message>\\n }\\n</ng-template>\\n\", styles: [\".fd-timepicker-custom{display:inline-block}.fd-timepicker-custom fd-popover{display:block}.fd-timepicker-custom fd-time{width:auto}\\n\"], dependencies: [{ kind: \"component\", type: PopoverComponent, selector: \"fd-popover\", inputs: [\"title\", \"trigger\", \"fixedPosition\", \"id\", \"mobile\", \"mobileConfig\", \"preventSpaceKeyScroll\"] }, { kind: \"component\", type: PopoverControlComponent, selector: \"fd-popover-control, [fdPopoverControl]\" }, { kind: \"component\", type: InputGroupComponent, selector: \"fd-input-group\", inputs: [\"placement\", \"required\", \"inline\", \"addOnText\", \"buttonFocusable\", \"type\", \"glyph\", \"glyphFont\", \"button\", \"isControl\", \"showFocus\", \"isExpanded\", \"glyphAriaLabel\", \"addonButtonAriaHidden\", \"iconTitle\", \"ariaLabelledBy\", \"ariaLabel\"], outputs: [\"addOnButtonClicked\", \"search\"] }, { kind: \"directive\", type: InputGroupInputDirective, selector: \"[fdInputGroupInput], [fd-input-group-input]\", inputs: [\"class\"] }, { kind: \"component\", type: PopoverBodyComponent, selector: \"fd-popover-body\", inputs: [\"minWidth\", \"maxWidth\", \"minHeight\", \"maxHeight\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: FormMessageComponent, selector: \"fd-form-message\", inputs: [\"type\", \"static\", \"embedded\", \"class\"] }, { kind: \"component\", type: TimeComponent, selector: \"fd-time\", inputs: [\"meridian\", \"validate\", \"keepTwoDigits\", \"disabled\", \"displaySeconds\", \"displayMinutes\", \"displayHours\", \"tablet\", \"elementsAtOnce\", \"time\", \"spinnerButtons\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }, { kind: \"pipe\", type: TranslateDayPeriodPipe, name: \"translateDayPeriod\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fd-time-picker', host: {\n '(focusout)': '_focusOut($event)',\n '(blur)': 'onTouched()',\n class: 'fd-time-picker fd-timepicker-custom'\n }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n PopoverFormMessageService,\n PopoverService,\n registerFormItemControl(TimePickerComponent)\n ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n PopoverComponent,\n PopoverControlComponent,\n InputGroupComponent,\n InputGroupInputDirective,\n PopoverBodyComponent,\n NgTemplateOutlet,\n FormMessageComponent,\n TimeComponent,\n FormsModule,\n FdTranslatePipe,\n TranslateDayPeriodPipe\n ], template: \"<fd-popover\\n [(isOpen)]=\\\"isOpen\\\"\\n (isOpenChange)=\\\"_onOpenStateChanged($event)\\\"\\n [triggers]=\\\"[]\\\"\\n [disabled]=\\\"disabled\\\"\\n [placement]=\\\"placement\\\"\\n [closeOnEscapeKey]=\\\"true\\\"\\n [focusAutoCapture]=\\\"false\\\"\\n [focusTrapped]=\\\"true\\\"\\n>\\n <fd-popover-control>\\n <fd-input-group\\n #inputGroupComponent\\n (addOnButtonClicked)=\\\"_addOnButtonClicked()\\\"\\n [button]=\\\"true\\\"\\n [state]=\\\"state\\\"\\n [disabled]=\\\"disabled\\\"\\n [buttonFocusable]=\\\"buttonFocusable\\\"\\n [isControl]=\\\"true\\\"\\n [isExpanded]=\\\"isOpen\\\"\\n [glyphAriaLabel]=\\\"timePickerButtonLabel || ('coreTimePicker.timePickerButtonLabel' | fdTranslate)\\\"\\n glyph=\\\"fob-watch\\\"\\n >\\n <input\\n type=\\\"text\\\"\\n class=\\\"fd-input\\\"\\n fd-input-group-input\\n [value]=\\\"_inputTimeValue | translateDayPeriod\\\"\\n (focusout)=\\\"_timeInputChanged($any($event.currentTarget).value)\\\"\\n (keyup.enter)=\\\"_timeInputChanged($any($event.currentTarget).value)\\\"\\n [disabled]=\\\"disabled\\\"\\n [attr.id]=\\\"inputId\\\"\\n [placeholder]=\\\"_placeholder\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-label]=\\\"timePickerInputLabel || ('coreTimePicker.timePickerInputLabel' | fdTranslate)\\\"\\n [attr.aria-describedby]=\\\"_formValueStateMessageId\\\"\\n [attr.aria-required]=\\\"required\\\"\\n />\\n </fd-input-group>\\n </fd-popover-control>\\n <fd-popover-body>\\n <ng-template [ngTemplateOutlet]=\\\"formMessageTemplate\\\"></ng-template>\\n <ng-content></ng-content>\\n @if (isOpen) {\\n <fd-time\\n [tablet]=\\\"tablet\\\"\\n [disabled]=\\\"disabled\\\"\\n [keepTwoDigits]=\\\"keepTwoDigitsTime\\\"\\n [ngModel]=\\\"time\\\"\\n (ngModelChange)=\\\"_timeComponentValueChanged($event)\\\"\\n [meridian]=\\\"_meridian\\\"\\n [displayHours]=\\\"_displayHours\\\"\\n [displayMinutes]=\\\"_displayMinutes\\\"\\n [displaySeconds]=\\\"_displaySeconds\\\"\\n [spinnerButtons]=\\\"spinnerButtons\\\"\\n ></fd-time>\\n }\\n </fd-popover-body>\\n</fd-popover>\\n<div [style.display]=\\\"'none'\\\" aria-hidden=\\\"true\\\">\\n <div [attr.id]=\\\"_formValueStateMessageId\\\" aria-atomic=\\\"true\\\" aria-live=\\\"assertive\\\">\\n @switch (state) {\\n @case ('success') {\\n {{ valueStateSuccessMessage }}\\n }\\n @case ('information') {\\n {{ valueStateInformationMessage }}\\n }\\n @case ('warning') {\\n {{ valueStateWarningMessage }}\\n }\\n @case ('error') {\\n {{ valueStateErrorMessage }}\\n }\\n }\\n {{ _message }}\\n </div>\\n</div>\\n<ng-template #formMessageTemplate>\\n @if (_message) {\\n <fd-form-message [embedded]=\\\"true\\\" [type]=\\\"state\\\">\\n {{ _message }}\\n </fd-form-message>\\n }\\n</ng-template>\\n\", styles: [\".fd-timepicker-custom{display:inline-block}.fd-timepicker-custom fd-popover{display:block}.fd-timepicker-custom fd-time{width:auto}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.DatetimeAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }, { type: i2.PopoverFormMessageService }], propDecorators: { time: [{\n type: Input\n }], inputId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], required: [{\n type: Input\n }], spinnerButtons: [{\n type: Input\n }], meridian: [{\n type: Input\n }], displaySeconds: [{\n type: Input\n }], displayMinutes: [{\n type: Input\n }], displayHours: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], timePickerInputLabel: [{\n type: Input\n }], timePickerButtonLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], allowNull: [{\n type: Input\n }], tablet: [{\n type: Input\n }], message: [{\n type: Input\n }], messageType: [{\n type: Input\n }], messageTriggers: [{\n type: Input\n }], placement: [{\n type: Input\n }], useValidation: [{\n type: Input\n }], state: [{\n type: Input\n }], buttonFocusable: [{\n type: Input\n }], keepTwoDigitsTime: [{\n type: Input\n }], displayFormat: [{\n type: Input\n }], parseFormat: [{\n type: Input\n }], valueStateSuccessMessage: [{\n type: Input\n }], valueStateInformationMessage: [{\n type: Input\n }], valueStateWarningMessage: [{\n type: Input\n }], valueStateErrorMessage: [{\n type: Input\n }], isOpenChange: [{\n type: Output\n }], child: [{\n type: ViewChild,\n args: [TimeComponent]\n }], _inputGroupElement: [{\n type: ViewChild,\n args: ['inputGroupComponent', { read: ElementRef }]\n }], _inputElement: [{\n type: ViewChild,\n args: [InputGroupInputDirective, { read: ElementRef }]\n }], _formMessageTemplate: [{\n type: ViewChild,\n args: ['formMessageTemplate']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFFZixzQkFBc0IsRUFDekIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBRUgsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDMUIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRyxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsY0FBYyxFQUNqQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBYSw0QkFBNEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7OztBQUVoRSxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQTBDMUIsTUFBTSxPQUFPLG1CQUFtQjtJQWdGNUIsZ0NBQWdDO0lBQ2hDLElBQ0ksT0FBTyxDQUFDLE9BQWU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELGtGQUFrRjtJQUNsRixJQUNJLFdBQVcsQ0FBQyxXQUF1QjtRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxlQUFlLENBQUMsUUFBa0I7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUNqRCxDQUFDO0lBYUQ7Ozs7T0FJRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDeEUsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQThIRCxjQUFjO0lBQ2QsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsY0FBYztJQUNkLFlBQ1ksa0JBQXFDLEVBQ3JDLFdBQXVCO0lBQy9CLHFHQUFxRztJQUNqRixnQkFBb0MsRUFDVCxnQkFBaUMsRUFDeEUsbUJBQThDO1FBTDlDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFFWCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ1QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUN4RSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJCO1FBelAxRCwrQkFBK0I7UUFFL0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixzQ0FBc0M7UUFFdEMsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFpRHRCLHlEQUF5RDtRQUV6RCxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGdFQUFnRTtRQUVoRSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBd0JmOzs7V0FHRztRQUVILGNBQVMsR0FBYyxjQUFjLENBQUM7UUFFdEMsaURBQWlEO1FBRWpELGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBbUJyQjs7O1dBR0c7UUFFSCxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2Qjs7OztXQUlHO1FBRUgsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBZ0IxQjs7V0FFRztRQUVILDZCQUF3QixHQUFXLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUVoRjs7V0FFRztRQUVILGlDQUE0QixHQUFXLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUV4Rjs7V0FFRztRQUVILDZCQUF3QixHQUFXLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUVoRjs7V0FFRztRQUVILDJCQUFzQixHQUFXLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUU1RSxtRUFBbUU7UUFFbkUsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBa0IzQyxjQUFjO1FBQ2QsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFFL0IsY0FBYztRQUNkLGlCQUFZLEdBQXNCLElBQUksQ0FBQztRQUV2QyxjQUFjO1FBQ2QscUJBQWdCLEdBQWEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFckQ7OztXQUdHO1FBQ0gsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBb0I1Qjs7O1dBR0c7UUFDSCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUVyQixjQUFjO1FBQ2QsNkJBQXdCLEdBQUcsK0JBQStCLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztRQUVoRixjQUFjO1FBQ04sV0FBTSxHQUFzQixJQUFJLENBQUM7UUFFekMsY0FBYztRQUNHLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxELGNBQWM7UUFDTixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUF3QjVDLGNBQWM7UUFDZCxhQUFRLEdBQTZCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUM5QyxjQUFjO1FBQ2QsY0FBUyxHQUFlLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQVg3QixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekIsTUFBTSxvQ0FBb0MsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekIsTUFBTSxvQ0FBb0MsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDTCxDQUFDO0lBT0QsY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzFGLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQ0ksQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FDbEYsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQ2hDLEVBQ0gsQ0FBQztZQUNDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsT0FBTztnQkFDSCxjQUFjLEVBQUU7b0JBQ1osS0FBSyxFQUFFLEtBQUs7aUJBQ2Y7YUFDSixDQUFDO1FBQ04sQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUk7UUFDOUIsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sRUFBRSxDQUFDO1lBQ2QsQ0FBQztZQUNELGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1FBRVYsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxNQUFlO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsVUFBa0I7UUFDaEMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvQixrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUM7UUFFbEMsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDcEIsOERBQThEO1lBQzlELE1BQU0sZ0JBQWdCLEdBQUcsd0NBQXdDLENBQUM7WUFDbEUsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFN0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFLLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsTUFBa0I7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLGNBQWM7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVoQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsTUFBTSxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixNQUFNLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWM7SUFDZCwwQkFBMEIsQ0FBQyxJQUFPO1FBQzlCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUssQ0FBQyxFQUFFLENBQUM7WUFDekQsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCwrQkFBK0I7SUFFL0IsY0FBYztJQUNkLGdCQUFnQixDQUFDLEVBQStCO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLENBQUMsRUFBTztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztJQUNkLGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztJQUNkLFVBQVUsQ0FBQyxJQUFPO1FBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxrQ0FBa0M7SUFFbEMsY0FBYztJQUNkLHFCQUFxQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSTtRQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsY0FBYztJQUNkLHdCQUF3QjtRQUNwQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxtQkFBbUIsQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFDRCxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0MsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ0osU0FBUyxDQUFDLEtBQWlCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDaEUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLHFCQUFxQjtRQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV2QyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLFNBQVM7WUFDVixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDZCQUE2QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhHLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsZUFBZTtZQUNoQixJQUFJLENBQUMsY0FBYyxJQUFJLElBQUk7Z0JBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRSxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLGVBQWU7WUFDaEIsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJO2dCQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWM7Z0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEUsOENBQThDO1FBQzlDLElBQUksQ0FBQyxhQUFhO1lBQ2QsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRUQsY0FBYztJQUNOLG1DQUFtQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQzlELENBQUM7OEdBampCUSxtQkFBbUIsNEhBeVFKLGlCQUFpQjtrR0F6UWhDLG1CQUFtQiwwcUNBaENqQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFDRDtnQkFDSSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbEQsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUNELHlCQUF5QjtZQUN6QixjQUFjO1lBQ2QsdUJBQXVCLENBQUMsbUJBQW1CLENBQUM7U0FDL0MsaUVBOE1VLGFBQWEsdUlBSWtCLFVBQVUsNkRBSXpDLHdCQUF3QiwyQkFBVSxVQUFVLGdLQ3BTM0QsK3BHQXFGQSwrTERGUSxnQkFBZ0IsK0pBQ2hCLHVCQUF1QixtRkFDdkIsbUJBQW1CLDBWQUNuQix3QkFBd0IsMkdBQ3hCLG9CQUFvQix3SEFDcEIsZ0JBQWdCLG9KQUNoQixvQkFBb0IsNkdBQ3BCLGFBQWEsNE5BQ2IsV0FBVywwVkFDWCxlQUFlLCtDQUNmLHNCQUFzQjs7MkZBR2pCLG1CQUFtQjtrQkF4Qy9CLFNBQVM7K0JBQ0ksZ0JBQWdCLFFBRXBCO3dCQUNGLFlBQVksRUFBRSxtQkFBbUI7d0JBQ2pDLFFBQVEsRUFBRSxhQUFhO3dCQUN2QixLQUFLLEVBQUUscUNBQXFDO3FCQUMvQyxhQUNVO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNELHlCQUF5Qjt3QkFDekIsY0FBYzt3QkFDZCx1QkFBdUIscUJBQXFCO3FCQUMvQyxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNMLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGVBQWU7d0JBQ2Ysc0JBQXNCO3FCQUN6Qjs7MEJBMFFJLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCO2lGQWxRekMsSUFBSTtzQkFESCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFRTixRQUFRO3NCQURQLEtBQUs7Z0JBUU4sY0FBYztzQkFEYixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsS0FBSztnQkFRTixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sV0FBVztzQkFEVixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFLTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS0YsT0FBTztzQkFEVixLQUFLO2dCQU9GLFdBQVc7c0JBRGQsS0FBSztnQkFVRixlQUFlO3NCQURsQixLQUFLO2dCQVdOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBU0YsS0FBSztzQkFEUixLQUFLO2dCQWlCTixlQUFlO3NCQURkLEtBQUs7Z0JBU04saUJBQWlCO3NCQURoQixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFRTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQU9OLDRCQUE0QjtzQkFEM0IsS0FBSztnQkFPTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBT04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxLQUFLO3NCQURKLFNBQVM7dUJBQUMsYUFBYTtnQkFLeEIsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLdEQsYUFBYTtzQkFEWixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLeEMsb0JBQW9CO3NCQURwQyxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgREFURV9USU1FX0ZPUk1BVFMsXG4gICAgRGF0ZXRpbWVBZGFwdGVyLFxuICAgIERhdGVUaW1lRm9ybWF0cyxcbiAgICBUcmFuc2xhdGVEYXlQZXJpb2RQaXBlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQge1xuICAgIEZvcm1JdGVtQ29udHJvbCxcbiAgICBGb3JtTWVzc2FnZUNvbXBvbmVudCxcbiAgICBQb3BvdmVyRm9ybU1lc3NhZ2VTZXJ2aWNlLFxuICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IElucHV0R3JvdXBDb21wb25lbnQsIElucHV0R3JvdXBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pbnB1dC1ncm91cCc7XG5pbXBvcnQge1xuICAgIFBvcG92ZXJCb2R5Q29tcG9uZW50LFxuICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQsXG4gICAgUG9wb3ZlclNlcnZpY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgUGxhY2VtZW50LCBWYWx1ZVN0YXRlQXJpYU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBUaW1lQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpbWUnO1xuXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmxldCB0aW1lUGlja2VyQ291bnRlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGltZS1waWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdfZm9jdXNPdXQoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxuICAgICAgICBjbGFzczogJ2ZkLXRpbWUtcGlja2VyIGZkLXRpbWVwaWNrZXItY3VzdG9tJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBQb3BvdmVyRm9ybU1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBQb3BvdmVyU2VydmljZSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woVGltZVBpY2tlckNvbXBvbmVudClcbiAgICBdLFxuICAgIHN0eWxlVXJsOiAnLi90aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgICAgICBJbnB1dEdyb3VwQ29tcG9uZW50LFxuICAgICAgICBJbnB1dEdyb3VwSW5wdXREaXJlY3RpdmUsXG4gICAgICAgIFBvcG92ZXJCb2R5Q29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBGb3JtTWVzc2FnZUNvbXBvbmVudCxcbiAgICAgICAgVGltZUNvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgVHJhbnNsYXRlRGF5UGVyaW9kUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlckNvbXBvbmVudDxEPlxuICAgIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFZhbGlkYXRvciwgRm9ybUl0ZW1Db250cm9sXG57XG4gICAgLyoqXG4gICAgICogRGF0ZSB0aW1lIG9iamVjdCByZXByZXNlbnRhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGltZTogTnVsbGFibGU8RD47XG5cbiAgICAvKiogSWQgYXR0cmlidXRlIGZvciBpbnB1dCBlbGVtZW50IGluc2lkZSBUaW1lUGlja2VyIGNvbXBvbmVudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgLyoqIERpc2FibGVzIHRoZSBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiBJZiBpdCBpcyBtYW5kYXRvcnkgZmllbGQgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBzaG93IHNwaW5uZXIgYnV0dG9ucyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3Bpbm5lckJ1dHRvbnMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHVzZXMgdGhlIDI0IGhvdXIgY2xvY2sgKGhvdXJzIHJhbmdpbmcgZnJvbSAwIHRvIDIzKS5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZSBmb3JtYXQgb3B0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtZXJpZGlhbjogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgaW5wdXQgZm9yIHNlY29uZHMuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U2Vjb25kczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgaW5wdXQgZm9yIG1pbnV0ZXMuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5TWludXRlczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgaW5wdXQgZm9yIGhvdXJzLlxuICAgICAqIERlZmF1bHQgdmFsdWUgYmFzZWQgb24gdGhlIGN1cnJlbnQgbG9jYWxlIGZvcm1hdCBvcHRpb25cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUhvdXJzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCB0aW1lIHBpY2tlciBwbGFjZWhvbGRlciB3aGljaCBpcyBzZXQgZGVwZW5kYW50IG9uIHRoZSBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcy5cbiAgICAgKiBPdGhlcndpc2UgSXQgY2FuIGJlIHNldCB0byBhIGRlZmF1bHQgdmFsdWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIHRpbWUgcGlja2VyIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGltZVBpY2tlcklucHV0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgdGltZSBwaWNrZXIgdG9nZ2xlIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRpbWVQaWNrZXJCdXR0b25MYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEFyaWEtbGFiZWxsZWRieSBmb3IgdGhlIHRpbWUgcGlja2VyIHRvZ2dsZSBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBXaGV0aGVyIGEgbnVsbCBpbnB1dCBpcyBjb25zaWRlcmVkIHZhbGlkKHN1Y2Nlc3MpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dOdWxsID0gdHJ1ZTtcblxuICAgIC8qKiBEZWZpbmVzIGlmIHRpbWUgY29tcG9uZW50IHNob3VsZCBiZSB1c2VkIHdpdGggdGFibGV0IG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmxldCA9IGZhbHNlO1xuXG4gICAgLyoqIFRleHQgZGlzcGxheWVkIGluIG1lc3NhZ2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB9XG5cbiAgICAvKiogVHlwZSBvZiB0aGUgbWVzc2FnZS4gQ2FuIGJlICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnd2FybmluZycgfCAnaW5mb3JtYXRpb24nICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbWVzc2FnZVR5cGUobWVzc2FnZVR5cGU6IEZvcm1TdGF0ZXMpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZVR5cGUgPSBtZXNzYWdlVHlwZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdHJpZ2dlciBldmVudHMgdGhhdCB3aWxsIG9wZW4vY2xvc2UgdGhlIG1lc3NhZ2UgYm94LlxuICAgICAqIEFjY2VwdHMgYW55IFtIVE1MIERPTSBFdmVudHNdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvZG9tX29ial9ldmVudC5hc3ApLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1lc3NhZ2VUcmlnZ2Vycyh0cmlnZ2Vyczogc3RyaW5nW10pIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZVRyaWdnZXJzID0gdHJpZ2dlcnM7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS50cmlnZ2VycyA9IHRyaWdnZXJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBUaGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyLiBJdCBjYW4gYmUgb25lIG9mOiB0b3AsIHRvcC1zdGFydCwgdG9wLWVuZCwgYm90dG9tLFxuICAgICAqICBib3R0b20tc3RhcnQsIGJvdHRvbS1lbmQsIHJpZ2h0LCByaWdodC1zdGFydCwgcmlnaHQtZW5kLCBsZWZ0LCBsZWZ0LXN0YXJ0LCBsZWZ0LWVuZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgICAvKiogV2hldGhlciB0byB2YWxpZGF0ZSB0aGUgdGltZSBwaWNrZXIgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICB1c2VWYWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgc3RhdGUgb2YgdGhlIGZvcm0gY29udHJvbCAtIGFwcGxpZXMgY3NzIGNsYXNzZXMuXG4gICAgICogIEFsc28gdGhpcyBpcyBhcHBsaWVkIHRvIG1lc3NhZ2UuXG4gICAgICogIENhbiBiZSBgc3VjY2Vzc2AsIGBlcnJvcmAsIGB3YXJuaW5nYCwgYGluZm9ybWF0aW9uYCBvciBibGFuayBmb3IgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGF0ZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlO1xuICAgIH1cblxuICAgIGdldCBzdGF0ZSgpOiBGb3JtU3RhdGVzIHtcbiAgICAgICAgaWYgKHRoaXMuX3N0YXRlID09IG51bGwgJiYgdGhpcy51c2VWYWxpZGF0aW9uICYmIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlID8/ICdkZWZhdWx0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIEFkZE9uIEJ1dHRvbiBzaG91bGQgYmUgZm9jdXNhYmxlXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYnV0dG9uRm9jdXNhYmxlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIHRydWUsIHRpbWUgaW5wdXRzIHdvbid0IGFsbG93IHRvIGhhdmUgMSBkaWdpdFxuICAgICAqIGZvciBleGFtcGxlIDkgd2lsbCBiZWNvbWUgMDlcbiAgICAgKiBidXQgMTIgd2lsbCBiZSBrZXB0IGFzIDEyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAga2VlcFR3b0RpZ2l0c1RpbWUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIERpc3BsYXkgZm9ybWF0IG9wdGlvbiB0byBjdXN0b21pemUgdGltZSBmb3JtYXQgaW4gaW5wdXQgY29udHJvbC5cbiAgICAgKiBNdXN0IGJlIGEgZm9ybWF0IG9wdGlvbiB0aGF0IGlzIHVuZGVyc3RhbmRhYmxlIGJ5IERhdGV0aW1lQWRhcHRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlGb3JtYXQ6IHVua25vd247XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZSBmb3JtYXQgb3B0aW9uIHRvIGN1c3RvbWl6ZSB0aW1lIGZvcm1hdCBpbiBpbnB1dCBjb250cm9sLlxuICAgICAqIE11c3QgYmUgYSBmb3JtYXQgb3B0aW9uIHRoYXQgaXMgdW5kZXJzdGFuZGFibGUgYnkgRGF0ZXRpbWVBZGFwdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFyc2VGb3JtYXQ6IHVua25vd247XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBzdGF0ZSBcInN1Y2Nlc3NcIiBhcmlhIG1lc3NhZ2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZVN0YXRlU3VjY2Vzc01lc3NhZ2U6IHN0cmluZyA9IGluamVjdChWYWx1ZVN0YXRlQXJpYU1lc3NhZ2VTZXJ2aWNlKS5zdWNjZXNzO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgc3RhdGUgXCJpbmZvcm1hdGlvblwiIGFyaWEgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlU3RhdGVJbmZvcm1hdGlvbk1lc3NhZ2U6IHN0cmluZyA9IGluamVjdChWYWx1ZVN0YXRlQXJpYU1lc3NhZ2VTZXJ2aWNlKS5pbmZvcm1hdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFZhbHVlIHN0YXRlIFwid2FybmluZ1wiIGFyaWEgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlU3RhdGVXYXJuaW5nTWVzc2FnZTogc3RyaW5nID0gaW5qZWN0KFZhbHVlU3RhdGVBcmlhTWVzc2FnZVNlcnZpY2UpLndhcm5pbmc7XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBzdGF0ZSBcImVycm9yXCIgYXJpYSBtZXNzYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWVTdGF0ZUVycm9yTWVzc2FnZTogc3RyaW5nID0gaW5qZWN0KFZhbHVlU3RhdGVBcmlhTWVzc2FnZVNlcnZpY2UpLmVycm9yO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc3RhdGUgb2YgdGhlIGlzT3BlbiBwcm9wZXJ0eSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChUaW1lQ29tcG9uZW50KVxuICAgIGNoaWxkOiBUaW1lQ29tcG9uZW50PEQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwQ29tcG9uZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX2lucHV0R3JvdXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKElucHV0R3JvdXBJbnB1dERpcmVjdGl2ZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX2lucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZm9ybU1lc3NhZ2VUZW1wbGF0ZScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9ybU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVzc2FnZVR5cGU6IEZvcm1TdGF0ZXMgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VUcmlnZ2Vyczogc3RyaW5nW10gPSBbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBXaGV0aGVyIHRoZSBpbnB1dCB0aW1lIGlzIHZhbGlkKHN1Y2Nlc3MpLiBJbnRlcm5hbCB1c2UuXG4gICAgICovXG4gICAgX2lzSW52YWxpZFRpbWVJbnB1dCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEluZGljYXRlcyB3aGVuIHBvcG92ZXIgaXMgb3BlbmVkXG4gICAgICovXG4gICAgaXNPcGVuOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVyaWRpYW46IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5U2Vjb25kczogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlNaW51dGVzOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheUhvdXJzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIElucHV0IGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgX2lucHV0VGltZVZhbHVlID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mb3JtVmFsdWVTdGF0ZU1lc3NhZ2VJZCA9IGBmZC10aW1lLXBpY2tlci1mb3JtLW1lc3NhZ2UtJHt0aW1lUGlja2VyQ291bnRlcisrfWA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0YXRlOiBGb3JtU3RhdGVzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXIgfHwgdGhpcy5fZ2V0UGxhY2Vob2xkZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIC8vIFVzZSBAT3B0aW9uYWwgdG8gYXZvaWQgYW5ndWxhciBpbmplY3Rpb24gZXJyb3IgbWVzc2FnZSBhbmQgdGhyb3cgb3VyIG93biB3aGljaCBpcyBtb3JlIHByZWNpc2Ugb25lXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEVfVElNRV9GT1JNQVRTKSBwcml2YXRlIF9kYXRlVGltZUZvcm1hdHM6IERhdGVUaW1lRm9ybWF0cyxcbiAgICAgICAgcHJpdmF0ZSBfcG9wb3ZlckZvcm1NZXNzYWdlOiBQb3BvdmVyRm9ybU1lc3NhZ2VTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVBZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RhdGVUaW1lQWRhcHRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVGb3JtYXRzKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RBVEVfVElNRV9GT1JNQVRTJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAoXzogTnVsbGFibGU8RD4pID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlVGltZU9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5fZm9ybWF0VGltZUlucHV0RmllbGQoKTtcblxuICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIubG9jYWxlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZVRpbWVPcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRUaW1lSW5wdXRGaWVsZCgpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgWydkaXNwbGF5SG91cnMnLCAnZGlzcGxheU1pbnV0ZXMnLCAnZGlzcGxheVNlY29uZHMnLCAnbWVyaWRpYW4nLCAnZGlzcGxheUZvcm1hdCddLnNvbWUoXG4gICAgICAgICAgICAgICAgKGNoYW5nZSkgPT4gY2hhbmdlIGluIGNoYW5nZXNcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVUaW1lT3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc3BsYXlGb3JtYXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFRpbWVJbnB1dEZpZWxkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGlzZVZhcmlhYmxlc0luTWVzc2FnZVNlcnZpY2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIFZhbGlkYXRvciBJbnRlcmZhY2UsIGFkZHMgdmFsaWRhdGlvbiBzdXBwb3J0IGZvciBmb3Jtc1xuICAgICAqL1xuICAgIHZhbGlkYXRlKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aW1lVmFsaWRhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgdGltZSBpbnB1dC5cbiAgICAgKi9cbiAgICBnZXRUaW1lKCk6IE51bGxhYmxlPEQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGZvcm1hdCBvcHRpb25zIHRvIGJlIHVzZWQgZHVyaW5nIHRpbWUgZm9ybWF0dGluZy5cbiAgICAgKi9cbiAgICBnZXREaXNwbGF5Rm9ybWF0KCk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5Rm9ybWF0IHx8IHRoaXMuX2RhdGVUaW1lRm9ybWF0cy5kaXNwbGF5LnRpbWVJbnB1dDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGZvcm1hdCBvcHRpb25zIHRvIGJlIHVzZWQgZHVyaW5nIHRpbWUgcGFyc2luZy5cbiAgICAgKi9cbiAgICBnZXRQYXJzZUZvcm1hdCgpOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VGb3JtYXQgfHwgdGhpcy5fZGF0ZVRpbWVGb3JtYXRzLnBhcnNlLnRpbWVJbnB1dDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRGb3JtYXR0ZWRUaW1lKHRpbWUgPSB0aGlzLnRpbWUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgZm9ybWF0dGVkVGltZSA9ICcnO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd051bGwgJiYgdGltZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvcm1hdHRlZFRpbWUgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZm9ybWF0KHRpbWUhLCB0aGlzLmdldERpc3BsYXlGb3JtYXQoKSk7XG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkVGltZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQGhpZGRlblxuICAgICAqICBXaGVuIHRoZSBvcGVuIHN0YXRlIGlzIGNoYW5nZWQsIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgYWN0aXZlIGl0ZW0sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgaG91ci5cbiAgICAgKi9cbiAgICBfc2V0SXNPcGVuKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGlzT3BlbjtcbiAgICAgICAgdGhpcy5fb25PcGVuU3RhdGVDaGFuZ2VkKGlzT3Blbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRpbWUgaW5wdXQgZmllbGQgY2hhbmdlcyBoYW5kbGVyXG4gICAgICovXG4gICAgX3RpbWVJbnB1dENoYW5nZWQoaW5wdXRWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnRyaW0oKTtcblxuICAgICAgICAvLyBjaGVjayBpZiB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgIGlmICh0aGlzLl9pbnB1dFRpbWVWYWx1ZSA9PT0gaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5wdXRUaW1lVmFsdWUgPSBpbnB1dFZhbHVlO1xuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy50aW1lID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCA9ICF0aGlzLmFsbG93TnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgLy8gUmVnZXggdG8gZGV0ZWN0IGFuZCByZWFycmFuZ2UgZGF5IHBlcmlvZCBpbiB0aGUgdGltZSBzdHJpbmdcbiAgICAgICAgICAgIGNvbnN0IGRheVBlcmlvZFBhdHRlcm4gPSAvXFxiKG5pZ2h0fG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmcpXFxiL2c7XG4gICAgICAgICAgICBpbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS5yZXBsYWNlKGRheVBlcmlvZFBhdHRlcm4sICcnKS50cmltKCk7XG5cbiAgICAgICAgICAgIHRoaXMudGltZSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5wYXJzZShpbnB1dFZhbHVlLCB0aGlzLmdldFBhcnNlRm9ybWF0KCkpO1xuICAgICAgICAgICAgdGhpcy5faXNJbnZhbGlkVGltZUlucHV0ID0gIXRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1ZhbGlkKHRoaXMudGltZSEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnRpbWUpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbnB1dEdyb3VwQ2xpY2tlZCgkZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbiAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5fc2V0SXNPcGVuKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWRkT25CdXR0b25DbGlja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldElzT3BlbighdGhpcy5pc09wZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9wb3ZlckNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0SXNPcGVuKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmV0VmFsID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlIb3Vycykge1xuICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsICsgJ2hoJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZGlzcGxheU1pbnV0ZXMpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArICc6bW0nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kaXNwbGF5U2Vjb25kcykge1xuICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsICsgJzpzcyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX21lcmlkaWFuKSB7XG4gICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyAnIGFtL3BtJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGltZUNvbXBvbmVudFZhbHVlQ2hhbmdlZCh0aW1lOiBEKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZGF0ZVRpbWVzRXF1YWwodGltZSwgdGhpcy50aW1lISkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbnB1dFRpbWVWYWx1ZSA9IHRoaXMuX2dldEZvcm1hdHRlZFRpbWUodGltZSk7XG4gICAgICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCA9ICF0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aW1lKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aW1lKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8vICNyZWdpb24gQ29udHJvbFZhbHVlQWNjZXNzb3JcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHRpbWU6IE51bGxhYmxlPEQ+KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh0aW1lOiBEKTogdm9pZCB7XG4gICAgICAgIGlmICghdGltZSkge1xuICAgICAgICAgICAgdGhpcy50aW1lID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0VGltZVZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLl9pc0ludmFsaWRUaW1lSW5wdXQgPSAhdGhpcy5hbGxvd051bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRpbWUgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIucGFyc2UodGltZSwgdGhpcy5nZXRQYXJzZUZvcm1hdCgpKTtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0VGltZVZhbHVlID0gdGhpcy5fZ2V0Rm9ybWF0dGVkVGltZSh0aW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCA9ICF0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mb3JtYXRUaW1lSW5wdXRGaWVsZCh0aW1lID0gdGhpcy50aW1lKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9pbnB1dFRpbWVWYWx1ZSA9IHRoaXMuX2dldEZvcm1hdHRlZFRpbWUodGltZSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoYW5nZU1lc3NhZ2VWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS5oaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2Uuc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25PcGVuU3RhdGVDaGFuZ2VkKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGlzT3Blbik7XG4gICAgICAgIHRoaXMuX2NoYW5nZU1lc3NhZ2VWaXNpYmlsaXR5KCk7XG4gICAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2hpbGQuZm9jdXNBY3RpdmVDb2x1bW4oKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb2N1cyBpbnB1dCBjb250cm9sIGV2ZXJ5IHRpbWUgcG9wdXAgaXMgY2xvc2VkXG4gICAgICAgIGlmICghaXNPcGVuICYmIHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9mb2N1c091dChldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlVGltZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuZ2V0RGlzcGxheUZvcm1hdCgpO1xuXG4gICAgICAgIC8vIGRlZmF1bHQgbWVyaWRpYW4gb3B0aW9uIGJhc2VkIG9uIGZvcm1hdCBvcHRpb25cbiAgICAgICAgdGhpcy5fbWVyaWRpYW4gPVxuICAgICAgICAgICAgdGhpcy5tZXJpZGlhbiAhPSBudWxsID8gdGhpcy5tZXJpZGlhbiA6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1RpbWVGb3JtYXRJbmNsdWRlc0RheVBlcmlvZChmb3JtYXQpO1xuXG4gICAgICAgIC8vIGRlZmF1bHQgc2Vjb25kcyBvcHRpb24gYmFzZWQgb24gZm9ybWF0IG9wdGlvblxuICAgICAgICB0aGlzLl9kaXNwbGF5U2Vjb25kcyA9XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlTZWNvbmRzICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IHRoaXMuZGlzcGxheVNlY29uZHNcbiAgICAgICAgICAgICAgICA6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1RpbWVGb3JtYXRJbmNsdWRlc1NlY29uZHMoZm9ybWF0KTtcblxuICAgICAgICAvLyBkZWZhdWx0IG1pbnV0ZXMgb3B0aW9uIGJhc2VkIG9uIGZvcm1hdCBvcHRpb25cbiAgICAgICAgdGhpcy5fZGlzcGxheU1pbnV0ZXMgPVxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TWludXRlcyAhPSBudWxsXG4gICAgICAgICAgICAgICAgPyB0aGlzLmRpc3BsYXlNaW51dGVzXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNUaW1lRm9ybWF0SW5jbHVkZXNNaW51dGVzKGZvcm1hdCk7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBob3VycyBvcHRpb24gYmFzZWQgb24gZm9ybWF0IG9wdGlvblxuICAgICAgICB0aGlzLl9kaXNwbGF5SG91cnMgPVxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SG91cnMgIT0gbnVsbCA/IHRoaXMuZGlzcGxheUhvdXJzIDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVGltZUZvcm1hdEluY2x1ZGVzSG91cnMoZm9ybWF0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgaW5pdGlhbGlzZVZhcmlhYmxlc0luTWVzc2FnZVNlcnZpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS5pbml0KHRoaXMuX2lucHV0R3JvdXBFbGVtZW50KTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLm1lc3NhZ2UgPSB0aGlzLl9mb3JtTWVzc2FnZVRlbXBsYXRlO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UudHJpZ2dlcnMgPSB0aGlzLl9tZXNzYWdlVHJpZ2dlcnM7XG4gICAgfVxufVxuIiwiPGZkLXBvcG92ZXJcbiAgICBbKGlzT3BlbildPVwiaXNPcGVuXCJcbiAgICAoaXNPcGVuQ2hhbmdlKT1cIl9vbk9wZW5TdGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtwbGFjZW1lbnRdPVwicGxhY2VtZW50XCJcbiAgICBbY2xvc2VPbkVzY2FwZUtleV09XCJ0cnVlXCJcbiAgICBbZm9jdXNBdXRvQ2FwdHVyZV09XCJmYWxzZVwiXG4gICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCJcbj5cbiAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtaW5wdXQtZ3JvdXBcbiAgICAgICAgICAgICNpbnB1dEdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgICAoYWRkT25CdXR0b25DbGlja2VkKT1cIl9hZGRPbkJ1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICBbYnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbYnV0dG9uRm9jdXNhYmxlXT1cImJ1dHRvbkZvY3VzYWJsZVwiXG4gICAgICAgICAgICBbaXNDb250cm9sXT1cInRydWVcIlxuICAgICAgICAgICAgW2lzRXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICAgICAgICAgIFtnbHlwaEFyaWFMYWJlbF09XCJ0aW1lUGlja2VyQnV0dG9uTGFiZWwgfHwgKCdjb3JlVGltZVBpY2tlci50aW1lUGlja2VyQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIGdseXBoPVwiZm9iLXdhdGNoXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXRcIlxuICAgICAgICAgICAgICAgIGZkLWlucHV0LWdyb3VwLWlucHV0XG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIl9pbnB1dFRpbWVWYWx1ZSB8IHRyYW5zbGF0ZURheVBlcmlvZFwiXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIl90aW1lSW5wdXRDaGFuZ2VkKCRhbnkoJGV2ZW50LmN1cnJlbnRUYXJnZXQpLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIl90aW1lSW5wdXRDaGFuZ2VkKCRhbnkoJGV2ZW50LmN1cnJlbnRUYXJnZXQpLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiX3BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGltZVBpY2tlcklucHV0TGFiZWwgfHwgKCdjb3JlVGltZVBpY2tlci50aW1lUGlja2VySW5wdXRMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiX2Zvcm1WYWx1ZVN0YXRlTWVzc2FnZUlkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZmQtaW5wdXQtZ3JvdXA+XG4gICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgPGZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvcm1NZXNzYWdlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIEBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgICA8ZmQtdGltZVxuICAgICAgICAgICAgICAgIFt0YWJsZXRdPVwidGFibGV0XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtrZWVwVHdvRGlnaXRzXT1cImtlZXBUd29EaWdpdHNUaW1lXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdGltZUNvbXBvbmVudFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbbWVyaWRpYW5dPVwiX21lcmlkaWFuXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheUhvdXJzXT1cIl9kaXNwbGF5SG91cnNcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5TWludXRlc109XCJfZGlzcGxheU1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5U2Vjb25kc109XCJfZGlzcGxheVNlY29uZHNcIlxuICAgICAgICAgICAgICAgIFtzcGlubmVyQnV0dG9uc109XCJzcGlubmVyQnV0dG9uc1wiXG4gICAgICAgICAgICA+PC9mZC10aW1lPlxuICAgICAgICB9XG4gICAgPC9mZC1wb3BvdmVyLWJvZHk+XG48L2ZkLXBvcG92ZXI+XG48ZGl2IFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgIDxkaXYgW2F0dHIuaWRdPVwiX2Zvcm1WYWx1ZVN0YXRlTWVzc2FnZUlkXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XG4gICAgICAgIEBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICAgICAgICBAY2FzZSAoJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAge3sgdmFsdWVTdGF0ZVN1Y2Nlc3NNZXNzYWdlIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ2luZm9ybWF0aW9uJykge1xuICAgICAgICAgICAgICAgIHt7IHZhbHVlU3RhdGVJbmZvcm1hdGlvbk1lc3NhZ2UgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnd2FybmluZycpIHtcbiAgICAgICAgICAgICAgICB7eyB2YWx1ZVN0YXRlV2FybmluZ01lc3NhZ2UgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAge3sgdmFsdWVTdGF0ZUVycm9yTWVzc2FnZSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHt7IF9tZXNzYWdlIH19XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZm9ybU1lc3NhZ2VUZW1wbGF0ZT5cbiAgICBAaWYgKF9tZXNzYWdlKSB7XG4gICAgICAgIDxmZC1mb3JtLW1lc3NhZ2UgW2VtYmVkZGVkXT1cInRydWVcIiBbdHlwZV09XCJzdGF0ZVwiPlxuICAgICAgICAgICAge3sgX21lc3NhZ2UgfX1cbiAgICAgICAgPC9mZC1mb3JtLW1lc3NhZ2U+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { TimePickerComponent } from './time-picker.component';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct import of `TimePickerComponent`\n */\nexport class TimePickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerModule, imports: [TimePickerComponent], exports: [TimePickerComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerModule, imports: [TimePickerComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimePickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [TimePickerComponent],\n exports: [TimePickerComponent]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUU5RDs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixZQUhmLG1CQUFtQixhQUNuQixtQkFBbUI7K0dBRXBCLGdCQUFnQixZQUhmLG1CQUFtQjs7MkZBR3BCLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdGltZS1waWNrZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnQgb2YgYFRpbWVQaWNrZXJDb21wb25lbnRgXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1RpbWVQaWNrZXJDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtUaW1lUGlja2VyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWNvcmUtdGltZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdGltZS1waWNrZXIvZnVuZGFtZW50YWwtbmd4LWNvcmUtdGltZS1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}