igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
153 lines • 16.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Pipe, Inject } from '@angular/core';
import { IGX_TIME_PICKER_COMPONENT } from './time-picker.common';
/**
* Formats `IgxTimePickerComponent` display value according to the `format` property,
* when the input element loses focus.
*
*/
var TimeDisplayFormatPipe = /** @class */ (function () {
function TimeDisplayFormatPipe(timePicker) {
this.timePicker = timePicker;
}
/**
* @param {?} value
* @return {?}
*/
TimeDisplayFormatPipe.prototype.transform = /**
* @param {?} value
* @return {?}
*/
function (value) {
/** @type {?} */
var maskAmPM = this.timePicker.parseMask();
/** @type {?} */
var mask = this.timePicker.parseMask(false);
if (!value || value === mask || value === maskAmPM) {
return '';
}
/** @type {?} */
var sections = value.split(/[\s:]+/);
/** @type {?} */
var hour = sections[0];
/** @type {?} */
var minutes = sections[1];
/** @type {?} */
var amPM = sections[2];
/** @type {?} */
var format = this.timePicker.format;
/** @type {?} */
var prompt = this.timePicker.promptChar;
/** @type {?} */
var regExp = new RegExp(this.timePicker.promptChar, 'g');
if (format.indexOf('hh') !== -1 || format.indexOf('HH') !== -1 && hour.indexOf(prompt) !== -1) {
hour = hour === prompt + prompt ? '00' : hour.replace(regExp, '0');
}
if (format.indexOf('mm') !== -1 && minutes.indexOf(prompt) !== -1) {
minutes = minutes === prompt + prompt ? '00' : minutes.replace(regExp, '0');
}
if (format.indexOf('hh') === -1 && format.indexOf('HH') === -1) {
hour = hour.indexOf(prompt) !== -1 ? hour.replace(regExp, '') : hour;
/** @type {?} */
var hourVal = parseInt(hour, 10);
hour = !hourVal ? '0' : hourVal < 10 && hourVal !== 0 ? hour.replace('0', '') : hour;
}
if (format.indexOf('mm') === -1) {
minutes = minutes.indexOf(prompt) !== -1 ? minutes.replace(regExp, '') : minutes;
/** @type {?} */
var minutesVal = parseInt(minutes, 10);
minutes = !minutesVal ? '0' : minutesVal < 10 && minutesVal !== 0 ? minutes.replace('0', '') : minutes;
}
if (format.indexOf('tt') !== -1 && (amPM !== 'AM' || amPM !== 'PM')) {
amPM = amPM.indexOf('p') !== -1 || amPM.indexOf('P') !== -1 ? 'PM' : 'AM';
}
return amPM ? hour + ":" + minutes + " " + amPM : hour + ":" + minutes;
};
TimeDisplayFormatPipe.decorators = [
{ type: Pipe, args: [{ name: 'displayFormat' },] }
];
/** @nocollapse */
TimeDisplayFormatPipe.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Inject, args: [IGX_TIME_PICKER_COMPONENT,] }] }
]; };
return TimeDisplayFormatPipe;
}());
export { TimeDisplayFormatPipe };
if (false) {
/**
* @type {?}
* @private
*/
TimeDisplayFormatPipe.prototype.timePicker;
}
/**
* Formats `IgxTimePickerComponent` display value according to the `format` property,
* when the input element gets focus.
*
*/
var TimeInputFormatPipe = /** @class */ (function () {
function TimeInputFormatPipe(timePicker) {
this.timePicker = timePicker;
}
/**
* @param {?} value
* @return {?}
*/
TimeInputFormatPipe.prototype.transform = /**
* @param {?} value
* @return {?}
*/
function (value) {
/** @type {?} */
var prompt = this.timePicker.promptChar;
/** @type {?} */
var regExp = new RegExp(prompt, 'g');
/** @type {?} */
var mask;
if (this.timePicker.cleared) {
this.timePicker.cleared = false;
mask = this.timePicker.parseMask(false);
}
else {
mask = this.timePicker.parseMask();
}
if (!value || value === mask) {
return mask;
}
/** @type {?} */
var sections = value.split(/[\s:]+/);
/** @type {?} */
var hour = sections[0].replace(regExp, '');
/** @type {?} */
var minutes = sections[1].replace(regExp, '');
/** @type {?} */
var amPM = sections[2];
/** @type {?} */
var leadZeroHour = (parseInt(hour, 10) < 10 && !hour.startsWith('0')) || hour === '0';
/** @type {?} */
var leadZeroMinutes = (parseInt(minutes, 10) < 10 && !minutes.startsWith('0')) || minutes === '0';
hour = leadZeroHour ? '0' + hour : hour;
minutes = leadZeroMinutes ? '0' + minutes : minutes;
return amPM ? hour + ":" + minutes + " " + amPM : hour + ":" + minutes;
};
TimeInputFormatPipe.decorators = [
{ type: Pipe, args: [{ name: 'inputFormat' },] }
];
/** @nocollapse */
TimeInputFormatPipe.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Inject, args: [IGX_TIME_PICKER_COMPONENT,] }] }
]; };
return TimeInputFormatPipe;
}());
export { TimeInputFormatPipe };
if (false) {
/**
* @type {?}
* @private
*/
TimeInputFormatPipe.prototype.timePicker;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIucGlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLnBpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLHlCQUF5QixFQUFxQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFPcEY7SUFHSywrQkFBdUQsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFBSSxDQUFDOzs7OztJQUV6Rix5Q0FBUzs7OztJQUFULFVBQVUsS0FBVTs7WUFFWCxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7O1lBQ3RDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDaEQsT0FBTyxFQUFFLENBQUM7U0FDYjs7WUFFSyxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7O1lBRWxDLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDOztZQUNsQixPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQzs7WUFDckIsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7O1lBRWhCLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU07O1lBQy9CLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVU7O1lBQ25DLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUM7UUFFMUQsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM1RixJQUFJLEdBQUcsSUFBSSxLQUFLLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDckU7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoRSxPQUFPLEdBQUcsT0FBTyxLQUFLLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDOUU7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM1RCxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs7Z0JBQy9ELE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3hGO1FBRUQsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzdCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDOztnQkFDM0UsVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7U0FDMUc7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNsRSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUM1RTtRQUVELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBSSxJQUFJLFNBQUksT0FBTyxTQUFJLElBQU0sQ0FBQyxDQUFDLENBQUksSUFBSSxTQUFJLE9BQVMsQ0FBQztJQUN0RSxDQUFDOztnQkFoREosSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBQzs7OztnREFHWixNQUFNLFNBQUMseUJBQXlCOztJQThDbEQsNEJBQUM7Q0FBQSxBQWpERCxJQWlEQztTQWhEWSxxQkFBcUI7Ozs7OztJQUVqQiwyQ0FBd0U7Ozs7Ozs7QUFvRHpGO0lBR0ksNkJBQXVELFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQUksQ0FBQzs7Ozs7SUFFekYsdUNBQVM7Ozs7SUFBVCxVQUFVLEtBQVU7O1lBQ1YsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTs7WUFDbkMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7O1lBRWxDLElBQVk7UUFDaEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNDO2FBQU07WUFDSCxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUN0QztRQUVELElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNmOztZQUVLLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQzs7WUFFbEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQzs7WUFDdEMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQzs7WUFDdkMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7O1lBRWxCLFlBQVksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxHQUFHOztZQUNqRixlQUFlLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxPQUFPLEtBQUssR0FBRztRQUVuRyxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRXBELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBSSxJQUFJLFNBQUksT0FBTyxTQUFJLElBQU0sQ0FBQyxDQUFDLENBQUksSUFBSSxTQUFJLE9BQVMsQ0FBQztJQUN0RSxDQUFDOztnQkFsQ0osSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTs7OztnREFHWixNQUFNLFNBQUMseUJBQXlCOztJQWdDakQsMEJBQUM7Q0FBQSxBQW5DRCxJQW1DQztTQWxDWSxtQkFBbUI7Ozs7OztJQUVoQix5Q0FBd0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUdYX1RJTUVfUElDS0VSX0NPTVBPTkVOVCwgSWd4VGltZVBpY2tlckJhc2UgfSBmcm9tICcuL3RpbWUtcGlja2VyLmNvbW1vbic7XG5cblxuLyoqXG4gKiBGb3JtYXRzIGBJZ3hUaW1lUGlja2VyQ29tcG9uZW50YCBkaXNwbGF5IHZhbHVlIGFjY29yZGluZyB0byB0aGUgYGZvcm1hdGAgcHJvcGVydHksXG4gKiB3aGVuIHRoZSBpbnB1dCBlbGVtZW50IGxvc2VzIGZvY3VzLlxuICoqL1xuQFBpcGUoeyBuYW1lOiAnZGlzcGxheUZvcm1hdCd9KVxuZXhwb3J0IGNsYXNzIFRpbWVEaXNwbGF5Rm9ybWF0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX1RJTUVfUElDS0VSX0NPTVBPTkVOVCkgcHJpdmF0ZSB0aW1lUGlja2VyOiBJZ3hUaW1lUGlja2VyQmFzZSkgeyB9XG5cbiAgICAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuXG4gICAgICAgIGNvbnN0IG1hc2tBbVBNID0gdGhpcy50aW1lUGlja2VyLnBhcnNlTWFzaygpO1xuICAgICAgICBjb25zdCBtYXNrID0gdGhpcy50aW1lUGlja2VyLnBhcnNlTWFzayhmYWxzZSk7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IG1hc2sgfHwgdmFsdWUgPT09IG1hc2tBbVBNKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IHZhbHVlLnNwbGl0KC9bXFxzOl0rLyk7XG5cbiAgICAgICAgbGV0IGhvdXIgPSBzZWN0aW9uc1swXTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBzZWN0aW9uc1sxXTtcbiAgICAgICAgbGV0IGFtUE0gPSBzZWN0aW9uc1syXTtcblxuICAgICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLnRpbWVQaWNrZXIuZm9ybWF0O1xuICAgICAgICBjb25zdCBwcm9tcHQgPSB0aGlzLnRpbWVQaWNrZXIucHJvbXB0Q2hhcjtcbiAgICAgICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cCh0aGlzLnRpbWVQaWNrZXIucHJvbXB0Q2hhciwgJ2cnKTtcblxuICAgICAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ2hoJykgIT09IC0xIHx8IGZvcm1hdC5pbmRleE9mKCdISCcpICE9PSAtMSAmJiBob3VyLmluZGV4T2YocHJvbXB0KSAhPT0gLTEpIHtcbiAgICAgICAgICAgaG91ciA9IGhvdXIgPT09IHByb21wdCArIHByb21wdCA/ICcwMCcgOiBob3VyLnJlcGxhY2UocmVnRXhwLCAnMCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1hdC5pbmRleE9mKCdtbScpICE9PSAtMSAmJiBtaW51dGVzLmluZGV4T2YocHJvbXB0KSAhPT0gLTEpIHtcbiAgICAgICAgICAgbWludXRlcyA9IG1pbnV0ZXMgPT09IHByb21wdCArIHByb21wdCA/ICcwMCcgOiBtaW51dGVzLnJlcGxhY2UocmVnRXhwLCAnMCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1hdC5pbmRleE9mKCdoaCcpID09PSAtMSAmJiBmb3JtYXQuaW5kZXhPZignSEgnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGhvdXIgPSBob3VyLmluZGV4T2YocHJvbXB0KSAhPT0gLTEgPyBob3VyLnJlcGxhY2UocmVnRXhwLCAnJykgOiBob3VyO1xuICAgICAgICAgICAgY29uc3QgaG91clZhbCA9IHBhcnNlSW50KGhvdXIsIDEwKTtcbiAgICAgICAgICAgIGhvdXIgPSAhaG91clZhbCA/ICcwJyA6IGhvdXJWYWwgPCAxMCAmJiBob3VyVmFsICE9PSAwID8gaG91ci5yZXBsYWNlKCcwJywgJycpIDogaG91cjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtYXQuaW5kZXhPZignbW0nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBtaW51dGVzLmluZGV4T2YocHJvbXB0KSAhPT0gLTEgPyBtaW51dGVzLnJlcGxhY2UocmVnRXhwLCAnJykgOiBtaW51dGVzO1xuICAgICAgICAgICAgY29uc3QgbWludXRlc1ZhbCA9IHBhcnNlSW50KG1pbnV0ZXMsIDEwKTtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSAhbWludXRlc1ZhbCA/ICcwJyA6IG1pbnV0ZXNWYWwgPCAxMCAmJiBtaW51dGVzVmFsICE9PSAwID8gbWludXRlcy5yZXBsYWNlKCcwJywgJycpIDogbWludXRlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtYXQuaW5kZXhPZigndHQnKSAhPT0gLTEgJiYgKGFtUE0gIT09ICdBTScgfHwgYW1QTSAhPT0gJ1BNJykpIHtcbiAgICAgICAgICAgYW1QTSA9IGFtUE0uaW5kZXhPZigncCcpICE9PSAtMSB8fCBhbVBNLmluZGV4T2YoJ1AnKSAhPT0gLTEgPyAnUE0nIDogJ0FNJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbVBNID8gYCR7aG91cn06JHttaW51dGVzfSAke2FtUE19YCA6IGAke2hvdXJ9OiR7bWludXRlc31gO1xuICAgIH1cbn1cblxuLyoqXG4gKiBGb3JtYXRzIGBJZ3hUaW1lUGlja2VyQ29tcG9uZW50YCBkaXNwbGF5IHZhbHVlIGFjY29yZGluZyB0byB0aGUgYGZvcm1hdGAgcHJvcGVydHksXG4gKiB3aGVuIHRoZSBpbnB1dCBlbGVtZW50IGdldHMgZm9jdXMuXG4gKiovXG5AUGlwZSh7IG5hbWU6ICdpbnB1dEZvcm1hdCcgfSlcbmV4cG9ydCBjbGFzcyBUaW1lSW5wdXRGb3JtYXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9USU1FX1BJQ0tFUl9DT01QT05FTlQpIHByaXZhdGUgdGltZVBpY2tlcjogSWd4VGltZVBpY2tlckJhc2UpIHsgfVxuXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwcm9tcHQgPSB0aGlzLnRpbWVQaWNrZXIucHJvbXB0Q2hhcjtcbiAgICAgICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChwcm9tcHQsICdnJyk7XG5cbiAgICAgICAgbGV0IG1hc2s6IHN0cmluZztcbiAgICAgICAgaWYgKHRoaXMudGltZVBpY2tlci5jbGVhcmVkKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXIuY2xlYXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgbWFzayA9IHRoaXMudGltZVBpY2tlci5wYXJzZU1hc2soZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFzayA9IHRoaXMudGltZVBpY2tlci5wYXJzZU1hc2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IG1hc2spIHtcbiAgICAgICAgICAgIHJldHVybiBtYXNrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSB2YWx1ZS5zcGxpdCgvW1xcczpdKy8pO1xuXG4gICAgICAgIGxldCBob3VyID0gc2VjdGlvbnNbMF0ucmVwbGFjZShyZWdFeHAsICcnKTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBzZWN0aW9uc1sxXS5yZXBsYWNlKHJlZ0V4cCwgJycpO1xuICAgICAgICBjb25zdCBhbVBNID0gc2VjdGlvbnNbMl07XG5cbiAgICAgICAgY29uc3QgbGVhZFplcm9Ib3VyID0gKHBhcnNlSW50KGhvdXIsIDEwKSA8IDEwICYmICFob3VyLnN0YXJ0c1dpdGgoJzAnKSkgfHwgaG91ciA9PT0gJzAnO1xuICAgICAgICBjb25zdCBsZWFkWmVyb01pbnV0ZXMgPSAocGFyc2VJbnQobWludXRlcywgMTApIDwgMTAgJiYgIW1pbnV0ZXMuc3RhcnRzV2l0aCgnMCcpKSB8fCBtaW51dGVzID09PSAnMCc7XG5cbiAgICAgICAgaG91ciA9IGxlYWRaZXJvSG91ciA/ICcwJyArIGhvdXIgOiBob3VyO1xuICAgICAgICBtaW51dGVzID0gbGVhZFplcm9NaW51dGVzID8gJzAnICsgbWludXRlcyA6IG1pbnV0ZXM7XG5cbiAgICAgICAgcmV0dXJuIGFtUE0gPyBgJHtob3VyfToke21pbnV0ZXN9ICR7YW1QTX1gIDogYCR7aG91cn06JHttaW51dGVzfWA7XG4gICAgfVxufVxuIl19