ngx-mat-lib
Version:
A bunch of utilities and components to use in your Angular 7+ apps!
151 lines (150 loc) • 14 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable } from "@angular/core";
import { NativeDateAdapter } from "@angular/material";
/** @type {?} */
var xmatSep = "/";
/** @type {?} */
var xmatDay = "DD";
/** @type {?} */
var xmatMonth = "MM";
/** @type {?} */
var xmatYear = "YYYY";
/** @type {?} */
var xmatCurrentYear = new Date().getFullYear();
/** @type {?} */
var xmatCentury = Math.round(xmatCurrentYear / 100);
/** @type {?} */
export var XMAT_LOCALE_IT = "it-IT";
/** @type {?} */
export var XMAT_LOCALE_EN = "en-GB";
/** @type {?} */
export var XMAT_LOCALE_FR = "fr-FR";
/** @type {?} */
export var XMAT_FORMATS = {
"it-IT": "" + xmatDay + xmatSep + xmatMonth + xmatSep + xmatYear,
"en-GB": "" + xmatMonth + xmatSep + xmatDay + xmatSep + xmatYear,
"fr-FR": "" + xmatDay + xmatSep + xmatMonth + xmatSep + xmatYear
};
/** @type {?} */
export var XMAT_DATE_FORMATS = {
parse: {
dateInput: { month: "numeric", year: "numeric", day: "numeric" }
},
display: {
dateInput: XMAT_FORMATS[XMAT_LOCALE_IT],
monthYearLabel: "" + xmatMonth + xmatSep + xmatYear,
dateA11yLabel: XMAT_FORMATS[XMAT_LOCALE_IT],
monthYearA11yLabel: "" + xmatMonth + xmatSep + xmatYear
}
};
var XmatMatDateLocale = /** @class */ (function (_super) {
tslib_1.__extends(XmatMatDateLocale, _super);
function XmatMatDateLocale() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.displayFormat = XMAT_DATE_FORMATS.display.dateInput;
return _this;
}
/**
* @param {?} value
* @return {?}
*/
XmatMatDateLocale.prototype.parse = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (this.displayFormat === XMAT_DATE_FORMATS.display.dateInput) {
if ((typeof value === typeof "") && value.length > 0) {
/** @type {?} */
var str = value.split(xmatSep);
if (str.length < 3) {
return new Date("xmat");
}
/** @type {?} */
var yearBak = str[2];
if (str[2].length < 4) {
str[2] = xmatCentury + str[2];
}
if (str[2].length !== 4) {
return new Date("xmat");
}
/** @type {?} */
var year = +str[2];
/** @type {?} */
var month = +str[1] - 1;
/** @type {?} */
var day = +str[0];
return new Date(year, month, day);
}
else {
return null;
}
}
else {
console.warn("Date input format not valid." +
" Be sure to use XMAT_DATE_FORMATS" +
" or extend this class with your own 'parser' and format 'methods'");
console.info("For a complete guide visit github.com/tonysamperi/ngx-mat-lib");
return null;
}
};
/**
* @param {?} date
* @param {?} displayFormat
* @return {?}
*/
XmatMatDateLocale.prototype.format = /**
* @param {?} date
* @param {?} displayFormat
* @return {?}
*/
function (date, displayFormat) {
this.displayFormat = displayFormat;
if (displayFormat === XMAT_DATE_FORMATS.display.dateInput) {
/** @type {?} */
var day = date.getDate();
/** @type {?} */
var month = date.getMonth() + 1;
/** @type {?} */
var year = date.getFullYear();
return this._addLeadingZeroes(day) + xmatSep + this._addLeadingZeroes(month) + xmatSep + year;
}
else {
/** @type {?} */
var formattedDate = "";
try {
formattedDate = date.toLocaleDateString(XMAT_LOCALE_IT, displayFormat);
}
catch (e) {
console.warn("Catched error while printing ", e);
formattedDate = date.toDateString();
}
return formattedDate;
}
};
/**
* @param {?} n
* @return {?}
*/
XmatMatDateLocale.prototype._addLeadingZeroes = /**
* @param {?} n
* @return {?}
*/
function (n) {
return ("0" + n).slice(-2);
};
XmatMatDateLocale.decorators = [
{ type: Injectable }
];
return XmatMatDateLocale;
}(NativeDateAdapter));
export { XmatMatDateLocale };
if (false) {
/** @type {?} */
XmatMatDateLocale.prototype.displayFormat;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1hdC1kYXRlLWxvY2FsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1hdC1saWIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMveG1hdC1kYXRlLWxvY2FsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFcEQsSUFBTSxPQUFPLEdBQVcsR0FBRyxDQUFDOztBQUM1QixJQUFNLE9BQU8sR0FBVyxJQUFJLENBQUM7O0FBQzdCLElBQU0sU0FBUyxHQUFXLElBQUksQ0FBQzs7QUFDL0IsSUFBTSxRQUFRLEdBQVcsTUFBTSxDQUFDOztBQUNoQyxJQUFNLGVBQWUsR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDOztBQUN6RCxJQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsQ0FBQzs7QUFHOUQsV0FBYSxjQUFjLEdBQVcsT0FBTyxDQUFDOztBQUU5QyxXQUFhLGNBQWMsR0FBVyxPQUFPLENBQUM7O0FBRTlDLFdBQWEsY0FBYyxHQUFXLE9BQU8sQ0FBQzs7QUFHOUMsV0FBYSxZQUFZLEdBQUc7SUFDeEIsT0FBTyxFQUFFLEtBQUcsT0FBTyxHQUFHLE9BQU8sR0FBRyxTQUFTLEdBQUcsT0FBTyxHQUFHLFFBQVU7SUFDaEUsT0FBTyxFQUFFLEtBQUcsU0FBUyxHQUFHLE9BQU8sR0FBRyxPQUFPLEdBQUcsT0FBTyxHQUFHLFFBQVU7SUFDaEUsT0FBTyxFQUFFLEtBQUcsT0FBTyxHQUFHLE9BQU8sR0FBRyxTQUFTLEdBQUcsT0FBTyxHQUFHLFFBQVU7Q0FDbkUsQ0FBQzs7QUFJRixXQUFhLGlCQUFpQixHQUFHO0lBQzdCLEtBQUssRUFBRTtRQUNILFNBQVMsRUFBRSxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDO0tBQ2pFO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsU0FBUyxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUM7UUFDdkMsY0FBYyxFQUFFLEtBQUcsU0FBUyxHQUFHLE9BQU8sR0FBRyxRQUFVO1FBQ25ELGFBQWEsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDO1FBQzNDLGtCQUFrQixFQUFFLEtBQUcsU0FBUyxHQUFHLE9BQU8sR0FBRyxRQUFVO0tBQzFEO0NBQ0osQ0FBQzs7SUFHcUMsNkNBQWlCOzs7UUFFcEQsc0JBQWlDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7Ozs7Ozs7SUFFckUsaUNBQUs7Ozs7SUFBTCxVQUFNLEtBQVU7UUFDWixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUM1RCxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs7Z0JBQ2xELElBQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ2hCLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzNCOztnQkFDRCxJQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqQztnQkFDRCxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUNyQixPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMzQjs7Z0JBQ0QsSUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7O2dCQUNyQixJQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7O2dCQUMxQixJQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFcEIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ3JDO2lCQUNJO2dCQUNELE9BQU8sSUFBSSxDQUFDO2FBQ2Y7U0FDSjthQUNJO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyw4QkFBOEI7Z0JBQ3ZDLG1DQUFtQztnQkFDbkMsbUVBQW1FLENBQUMsQ0FBQztZQUN6RSxPQUFPLENBQUMsSUFBSSxDQUFDLCtEQUErRCxDQUFDLENBQUM7WUFDOUUsT0FBTyxJQUFJLENBQUM7U0FDZjtLQUNKOzs7Ozs7SUFFRCxrQ0FBTTs7Ozs7SUFBTixVQUFPLElBQVUsRUFBRSxhQUFxQjtRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLGFBQWEsS0FBSyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFOztZQUN2RCxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7O1lBQzNCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7O1lBQ2xDLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDakc7YUFDSTs7WUFDRCxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSTtnQkFDQSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQzthQUMxRTtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDdkM7WUFDRCxPQUFPLGFBQWEsQ0FBQztTQUN4QjtLQUNKOzs7OztJQUVPLDZDQUFpQjs7OztjQUFDLENBQVM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O2dCQTNEbEMsVUFBVTs7NEJBdENYO0VBdUN1QyxpQkFBaUI7U0FBM0MsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtOYXRpdmVEYXRlQWRhcHRlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsXCI7XG5cbmNvbnN0IHhtYXRTZXA6IHN0cmluZyA9IFwiL1wiO1xuY29uc3QgeG1hdERheTogc3RyaW5nID0gXCJERFwiO1xuY29uc3QgeG1hdE1vbnRoOiBzdHJpbmcgPSBcIk1NXCI7XG5jb25zdCB4bWF0WWVhcjogc3RyaW5nID0gXCJZWVlZXCI7XG5jb25zdCB4bWF0Q3VycmVudFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbmNvbnN0IHhtYXRDZW50dXJ5OiBudW1iZXIgPSBNYXRoLnJvdW5kKHhtYXRDdXJyZW50WWVhciAvIDEwMCk7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFhNQVRfTE9DQUxFX0lUOiBzdHJpbmcgPSBcIml0LUlUXCI7XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBYTUFUX0xPQ0FMRV9FTjogc3RyaW5nID0gXCJlbi1HQlwiO1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgWE1BVF9MT0NBTEVfRlI6IHN0cmluZyA9IFwiZnItRlJcIjtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgWE1BVF9GT1JNQVRTID0ge1xuICAgIFwiaXQtSVRcIjogYCR7eG1hdERheX0ke3htYXRTZXB9JHt4bWF0TW9udGh9JHt4bWF0U2VwfSR7eG1hdFllYXJ9YCxcbiAgICBcImVuLUdCXCI6IGAke3htYXRNb250aH0ke3htYXRTZXB9JHt4bWF0RGF5fSR7eG1hdFNlcH0ke3htYXRZZWFyfWAsXG4gICAgXCJmci1GUlwiOiBgJHt4bWF0RGF5fSR7eG1hdFNlcH0ke3htYXRNb250aH0ke3htYXRTZXB9JHt4bWF0WWVhcn1gXG59O1xuXG4vLyBUSVA6IENPUFkgVEhJUyBUTyBDVVNUT01JWkUgQ0FMRU5EQVIgRk9STUFUUyEhXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBYTUFUX0RBVEVfRk9STUFUUyA9IHtcbiAgICBwYXJzZToge1xuICAgICAgICBkYXRlSW5wdXQ6IHttb250aDogXCJudW1lcmljXCIsIHllYXI6IFwibnVtZXJpY1wiLCBkYXk6IFwibnVtZXJpY1wifVxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6IFhNQVRfRk9STUFUU1tYTUFUX0xPQ0FMRV9JVF0sXG4gICAgICAgIG1vbnRoWWVhckxhYmVsOiBgJHt4bWF0TW9udGh9JHt4bWF0U2VwfSR7eG1hdFllYXJ9YCxcbiAgICAgICAgZGF0ZUExMXlMYWJlbDogWE1BVF9GT1JNQVRTW1hNQVRfTE9DQUxFX0lUXSxcbiAgICAgICAgbW9udGhZZWFyQTExeUxhYmVsOiBgJHt4bWF0TW9udGh9JHt4bWF0U2VwfSR7eG1hdFllYXJ9YFxuICAgIH1cbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBYbWF0TWF0RGF0ZUxvY2FsZSBleHRlbmRzIE5hdGl2ZURhdGVBZGFwdGVyIHtcblxuICAgIGRpc3BsYXlGb3JtYXQ6IE9iamVjdCB8IHN0cmluZyA9IFhNQVRfREFURV9GT1JNQVRTLmRpc3BsYXkuZGF0ZUlucHV0O1xuXG4gICAgcGFyc2UodmFsdWU6IGFueSk6IERhdGUgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheUZvcm1hdCA9PT0gWE1BVF9EQVRFX0ZPUk1BVFMuZGlzcGxheS5kYXRlSW5wdXQpIHtcbiAgICAgICAgICAgIGlmICgodHlwZW9mIHZhbHVlID09PSB0eXBlb2YgXCJcIikgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLnNwbGl0KHhtYXRTZXApO1xuICAgICAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoXCJ4bWF0XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB5ZWFyQmFrID0gc3RyWzJdO1xuICAgICAgICAgICAgICAgIGlmIChzdHJbMl0ubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgICAgICAgICBzdHJbMl0gPSB4bWF0Q2VudHVyeSArIHN0clsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHN0clsyXS5sZW5ndGggIT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKFwieG1hdFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeWVhciA9ICtzdHJbMl07XG4gICAgICAgICAgICAgICAgY29uc3QgbW9udGggPSArc3RyWzFdIC0gMTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXkgPSArc3RyWzBdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJEYXRlIGlucHV0IGZvcm1hdCBub3QgdmFsaWQuXCIgK1xuICAgICAgICAgICAgICAgIFwiIEJlIHN1cmUgdG8gdXNlIFhNQVRfREFURV9GT1JNQVRTXCIgK1xuICAgICAgICAgICAgICAgIFwiIG9yIGV4dGVuZCB0aGlzIGNsYXNzIHdpdGggeW91ciBvd24gJ3BhcnNlcicgYW5kIGZvcm1hdCAnbWV0aG9kcydcIik7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oXCJGb3IgYSBjb21wbGV0ZSBndWlkZSB2aXNpdCBnaXRodWIuY29tL3RvbnlzYW1wZXJpL25neC1tYXQtbGliXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3JtYXQoZGF0ZTogRGF0ZSwgZGlzcGxheUZvcm1hdDogT2JqZWN0KTogc3RyaW5nIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5Rm9ybWF0ID0gZGlzcGxheUZvcm1hdDtcbiAgICAgICAgaWYgKGRpc3BsYXlGb3JtYXQgPT09IFhNQVRfREFURV9GT1JNQVRTLmRpc3BsYXkuZGF0ZUlucHV0KSB7XG4gICAgICAgICAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkTGVhZGluZ1plcm9lcyhkYXkpICsgeG1hdFNlcCArIHRoaXMuX2FkZExlYWRpbmdaZXJvZXMobW9udGgpICsgeG1hdFNlcCArIHllYXI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVkRGF0ZSA9IFwiXCI7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvcm1hdHRlZERhdGUgPSBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhYTUFUX0xPQ0FMRV9JVCwgZGlzcGxheUZvcm1hdCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiQ2F0Y2hlZCBlcnJvciB3aGlsZSBwcmludGluZyBcIiwgZSk7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IGRhdGUudG9EYXRlU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZExlYWRpbmdaZXJvZXMobjogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiAoXCIwXCIgKyBuKS5zbGljZSgtMik7XG4gICAgfVxufVxuIl19