mantine-datepicker-jalali
Version:
jalali datepicker of mantine library
252 lines (245 loc) • 32.1 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var dayjs = require('dayjs');
var React = require('react');
var core = require('@mantine/core');
var hooks = require('@mantine/hooks');
var MonthLevelGroup = require('../MonthLevelGroup/MonthLevelGroup.js');
var YearLevelGroup = require('../YearLevelGroup/YearLevelGroup.js');
var DecadeLevelGroup = require('../DecadeLevelGroup/DecadeLevelGroup.js');
var clampLevel = require('./clamp-level/clamp-level.js');
var Calendar_styles = require('./Calendar.styles.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var __defProp = Object.defineProperty;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
const defaultProps = {
maxLevel: "decade",
minLevel: "month",
__updateDateOnYearSelect: true,
__updateDateOnMonthSelect: true
};
const Calendar = React.forwardRef((props, ref) => {
const _a = core.useComponentDefaultProps("Calendar", defaultProps, props), {
maxLevel,
minLevel,
defaultLevel,
level,
onLevelChange,
date,
defaultDate,
onDateChange,
numberOfColumns,
columnsToScroll,
ariaLabels,
onYearSelect,
onMonthSelect,
onYearMouseEnter,
onMonthMouseEnter,
__updateDateOnYearSelect,
__updateDateOnMonthSelect,
firstDayOfWeek,
weekdayFormat,
weekendDays,
getDayProps,
excludeDate,
renderDay,
hideOutsideDates,
hideWeekdays,
getDayAriaLabel,
monthLabelFormat,
__onDayClick,
__onDayMouseEnter,
monthsListFormat,
getMonthControlProps,
yearLabelFormat,
yearsListFormat,
getYearControlProps,
decadeLabelFormat,
minDate,
maxDate,
locale,
className,
classNames,
styles,
__staticSelector,
unstyled,
__preventFocus
} = _a, others = __objRest(_a, [
"maxLevel",
"minLevel",
"defaultLevel",
"level",
"onLevelChange",
"date",
"defaultDate",
"onDateChange",
"numberOfColumns",
"columnsToScroll",
"ariaLabels",
"onYearSelect",
"onMonthSelect",
"onYearMouseEnter",
"onMonthMouseEnter",
"__updateDateOnYearSelect",
"__updateDateOnMonthSelect",
"firstDayOfWeek",
"weekdayFormat",
"weekendDays",
"getDayProps",
"excludeDate",
"renderDay",
"hideOutsideDates",
"hideWeekdays",
"getDayAriaLabel",
"monthLabelFormat",
"__onDayClick",
"__onDayMouseEnter",
"monthsListFormat",
"getMonthControlProps",
"yearLabelFormat",
"yearsListFormat",
"getYearControlProps",
"decadeLabelFormat",
"minDate",
"maxDate",
"locale",
"className",
"classNames",
"styles",
"__staticSelector",
"unstyled",
"__preventFocus"
]);
const { classes, cx } = Calendar_styles(null, {
classNames,
styles,
unstyled,
name: ["Calendar", __staticSelector]
});
const [_level, setLevel] = hooks.useUncontrolled({
value: level ? clampLevel.clampLevel(level, minLevel, maxLevel) : void 0,
defaultValue: defaultLevel ? clampLevel.clampLevel(defaultLevel, minLevel, maxLevel) : void 0,
finalValue: clampLevel.clampLevel(void 0, minLevel, maxLevel),
onChange: onLevelChange
});
const [_date, setDate] = hooks.useUncontrolled({
value: date,
defaultValue: defaultDate,
finalValue: null,
onChange: onDateChange
});
const stylesApiProps = {
styles,
classNames,
unstyled,
__staticSelector: __staticSelector || "Calendar"
};
const _columnsToScroll = columnsToScroll || numberOfColumns || 1;
const currentDate = _date || new Date();
return /* @__PURE__ */ React__default.createElement(core.Box, __spreadValues({
className: cx(classes.calendar, className, locale === "fa" && classes.calendarRtl),
ref
}, others), _level === "month" && /* @__PURE__ */ React__default.createElement(MonthLevelGroup.MonthLevelGroup, __spreadValues({
month: currentDate,
minDate,
maxDate,
firstDayOfWeek,
weekdayFormat,
weekendDays,
getDayProps,
excludeDate,
renderDay,
hideOutsideDates,
hideWeekdays,
getDayAriaLabel,
onNext: () => setDate(dayjs__default(currentDate).add(_columnsToScroll, "month").toDate()),
onPrevious: () => setDate(dayjs__default(currentDate).subtract(_columnsToScroll, "month").toDate()),
hasNextLevel: maxLevel !== "month",
onLevelClick: () => setLevel("year"),
numberOfColumns,
locale,
levelControlAriaLabel: ariaLabels == null ? void 0 : ariaLabels.monthLevelControl,
nextLabel: ariaLabels == null ? void 0 : ariaLabels.nextMonth,
previousLabel: ariaLabels == null ? void 0 : ariaLabels.previousMonth,
monthLabelFormat,
__onDayClick,
__onDayMouseEnter,
__preventFocus
}, stylesApiProps)), _level === "year" && /* @__PURE__ */ React__default.createElement(YearLevelGroup.YearLevelGroup, __spreadValues({
year: currentDate,
numberOfColumns,
minDate,
maxDate,
monthsListFormat,
getMonthControlProps,
locale,
onNext: () => setDate(dayjs__default(currentDate).add(_columnsToScroll, "year").toDate()),
onPrevious: () => setDate(dayjs__default(currentDate).subtract(_columnsToScroll, "year").toDate()),
hasNextLevel: maxLevel !== "month" && maxLevel !== "year",
onLevelClick: () => setLevel("decade"),
levelControlAriaLabel: ariaLabels == null ? void 0 : ariaLabels.yearLevelControl,
nextLabel: ariaLabels == null ? void 0 : ariaLabels.nextYear,
previousLabel: ariaLabels == null ? void 0 : ariaLabels.previousYear,
yearLabelFormat,
__onControlMouseEnter: onMonthMouseEnter,
__onControlClick: (_event, payload) => {
__updateDateOnMonthSelect && setDate(payload);
setLevel(clampLevel.clampLevel("month", minLevel, maxLevel));
onMonthSelect == null ? void 0 : onMonthSelect(payload);
},
__preventFocus
}, stylesApiProps)), _level === "decade" && /* @__PURE__ */ React__default.createElement(DecadeLevelGroup.DecadeLevelGroup, __spreadValues({
decade: currentDate,
minDate,
maxDate,
yearsListFormat,
getYearControlProps,
locale,
onNext: () => setDate(dayjs__default(currentDate).add(10 * _columnsToScroll, "year").toDate()),
onPrevious: () => setDate(dayjs__default(currentDate).subtract(10 * _columnsToScroll, "year").toDate()),
hasNextLevel: false,
numberOfColumns,
levelControlAriaLabel: ariaLabels == null ? void 0 : ariaLabels.decadeLevelControl,
nextLabel: ariaLabels == null ? void 0 : ariaLabels.nextDecade,
previousLabel: ariaLabels == null ? void 0 : ariaLabels.previousDecade,
decadeLabelFormat,
__onControlMouseEnter: onYearMouseEnter,
__onControlClick: (_event, payload) => {
__updateDateOnYearSelect && setDate(payload);
setLevel(clampLevel.clampLevel("year", minLevel, maxLevel));
onYearSelect == null ? void 0 : onYearSelect(payload);
},
__preventFocus
}, stylesApiProps)));
});
Calendar.displayName = "@mantine/dates/Calendar";
exports.Calendar = Calendar;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NhbGVuZGFyL0NhbGVuZGFyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby11bnVzZWQtcHJvcC10eXBlcyAqL1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQm94LCBEZWZhdWx0UHJvcHMsIFNlbGVjdG9ycywgdXNlQ29tcG9uZW50RGVmYXVsdFByb3BzIH0gZnJvbSAnQG1hbnRpbmUvY29yZSc7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWQgfSBmcm9tICdAbWFudGluZS9ob29rcyc7XG5pbXBvcnQgeyBNb250aExldmVsR3JvdXAsIE1vbnRoTGV2ZWxHcm91cFN0eWxlc05hbWVzIH0gZnJvbSAnLi4vTW9udGhMZXZlbEdyb3VwJztcbmltcG9ydCB7IFllYXJMZXZlbEdyb3VwLCBZZWFyTGV2ZWxHcm91cFN0eWxlc05hbWVzIH0gZnJvbSAnLi4vWWVhckxldmVsR3JvdXAnO1xuaW1wb3J0IHsgRGVjYWRlTGV2ZWxHcm91cCwgRGVjYWRlTGV2ZWxHcm91cFN0eWxlc05hbWVzIH0gZnJvbSAnLi4vRGVjYWRlTGV2ZWxHcm91cCc7XG5pbXBvcnQgeyBDYWxlbmRhckxldmVsIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgY2xhbXBMZXZlbCB9IGZyb20gJy4vY2xhbXAtbGV2ZWwvY2xhbXAtbGV2ZWwnO1xuaW1wb3J0IHVzZVN0eWxlcyBmcm9tICcuL0NhbGVuZGFyLnN0eWxlcyc7XG5pbXBvcnQgeyBNb250aExldmVsU2V0dGluZ3MgfSBmcm9tICcuLi9Nb250aExldmVsJztcbmltcG9ydCB7IFllYXJMZXZlbFNldHRpbmdzIH0gZnJvbSAnLi4vWWVhckxldmVsJztcbmltcG9ydCB7IERlY2FkZUxldmVsU2V0dGluZ3MgfSBmcm9tICcuLi9EZWNhZGVMZXZlbCc7XG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyU3R5bGVzTmFtZXMgPVxuICB8IFNlbGVjdG9yczx0eXBlb2YgdXNlU3R5bGVzPlxuICB8IERlY2FkZUxldmVsR3JvdXBTdHlsZXNOYW1lc1xuICB8IFllYXJMZXZlbEdyb3VwU3R5bGVzTmFtZXNcbiAgfCBNb250aExldmVsR3JvdXBTdHlsZXNOYW1lcztcblxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhckFyaWFMYWJlbHMge1xuICBtb250aExldmVsQ29udHJvbD86IHN0cmluZztcbiAgeWVhckxldmVsQ29udHJvbD86IHN0cmluZztcbiAgZGVjYWRlTGV2ZWxDb250cm9sPzogc3RyaW5nO1xuXG4gIG5leHRNb250aD86IHN0cmluZztcbiAgcHJldmlvdXNNb250aD86IHN0cmluZztcblxuICBuZXh0WWVhcj86IHN0cmluZztcbiAgcHJldmlvdXNZZWFyPzogc3RyaW5nO1xuXG4gIG5leHREZWNhZGU/OiBzdHJpbmc7XG4gIHByZXZpb3VzRGVjYWRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyU2V0dGluZ3NcbiAgZXh0ZW5kcyBEZWNhZGVMZXZlbFNldHRpbmdzLFxuICAgIFllYXJMZXZlbFNldHRpbmdzLFxuICAgIE1vbnRoTGV2ZWxTZXR0aW5ncyB7XG4gIC8qKiBJbml0aWFsIGxldmVsIGRpc3BsYXllZCB0byB0aGUgdXNlciAoZGVjYWRlLCB5ZWFyLCBtb250aCksIHVzZWQgZm9yIHVuY29udHJvbGxlZCBjb21wb25lbnQgKi9cbiAgZGVmYXVsdExldmVsPzogQ2FsZW5kYXJMZXZlbDtcblxuICAvKiogQ3VycmVudCBsZXZlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgKGRlY2FkZSwgeWVhciwgbW9udGgpLCB1c2VkIGZvciBjb250cm9sbGVkIGNvbXBvbmVudCAqL1xuICBsZXZlbD86IENhbGVuZGFyTGV2ZWw7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGxldmVsIGNoYW5nZXMgKi9cbiAgb25MZXZlbENoYW5nZT8obGV2ZWw6IENhbGVuZGFyTGV2ZWwpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyB5ZWFyIG9uIGRlY2FkZSBsZXZlbCAqL1xuICBvblllYXJTZWxlY3Q/KGRhdGU6IERhdGUpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyBtb250aCBvbiB5ZWFyIGxldmVsICovXG4gIG9uTW9udGhTZWxlY3Q/KGRhdGU6IERhdGUpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBtb3VzZSBlbnRlcnMgeWVhciBjb250cm9sICovXG4gIG9uWWVhck1vdXNlRW50ZXI/KGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PiwgZGF0ZTogRGF0ZSk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1vdXNlIGVudGVycyBtb250aCBjb250cm9sICovXG4gIG9uTW9udGhNb3VzZUVudGVyPyhldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4sIGRhdGU6IERhdGUpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyU3lzdGVtUHJvcHNcbiAgZXh0ZW5kcyBEZWZhdWx0UHJvcHM8Q2FsZW5kYXJTdHlsZXNOYW1lcz4sXG4gICAgT21pdDxSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhSZWY8J2Rpdic+LCAndmFsdWUnIHwgJ2RlZmF1bHRWYWx1ZScgfCAnb25DaGFuZ2UnPiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyQmFzZVByb3BzIHtcbiAgX19zdGF0aWNTZWxlY3Rvcj86IHN0cmluZztcblxuICAvKiogUHJldmVudHMgZm9jdXMgc2hpZnQgd2hlbiBidXR0b25zIGFyZSBjbGlja2VkICovXG4gIF9fcHJldmVudEZvY3VzPzogYm9vbGVhbjtcblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGRhdGUgc2hvdWxkIGJlIHVwZGF0ZWQgd2hlbiB5ZWFyIGNvbnRyb2wgaXMgY2xpY2tlZCAqL1xuICBfX3VwZGF0ZURhdGVPblllYXJTZWxlY3Q/OiBib29sZWFuO1xuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZGF0ZSBzaG91bGQgYmUgdXBkYXRlZCB3aGVuIG1vbnRoIGNvbnRyb2wgaXMgY2xpY2tlZCAqL1xuICBfX3VwZGF0ZURhdGVPbk1vbnRoU2VsZWN0PzogYm9vbGVhbjtcblxuICAvKiogSW5pdGlhbCBkYXRlIHRoYXQgaXMgZGlzcGxheWVkLCB1c2VkIGZvciB1bmNvbnRyb2xsZWQgY29tcG9uZW50ICovXG4gIGRlZmF1bHREYXRlPzogRGF0ZTtcblxuICAvKiogRGF0ZSB0aGF0IGlzIGRpc3BsYXllZCwgdXNlZCBmb3IgY29udHJvbGxlZCBjb21wb25lbnQgKi9cbiAgZGF0ZT86IERhdGU7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGRhdGUgY2hhbmdlcyAqL1xuICBvbkRhdGVDaGFuZ2U/KGRhdGU6IERhdGUpOiB2b2lkO1xuXG4gIC8qKiBOdW1iZXIgb2YgY29sdW1ucyB0byByZW5kZXIgbmV4dCB0byBlYWNoIG90aGVyICovXG4gIG51bWJlck9mQ29sdW1ucz86IG51bWJlcjtcblxuICAvKiogTnVtYmVyIG9mIGNvbHVtbnMgdG8gc2Nyb2xsIHdoZW4gdXNlciBjbGlja3MgbmV4dC9wcmV2IG1vbnRoLCBkZWZhdWx0cyB0byBudW1iZXJPZkNvbHVtbnMgKi9cbiAgY29sdW1uc1RvU2Nyb2xsPzogbnVtYmVyO1xuXG4gIC8qKiBhcmlhLWxhYmVsIGF0dHJpYnV0ZXMgZm9yIGNvbnRyb2xzIG9uIGRpZmZlcmVudCBsZXZlbHMgKi9cbiAgYXJpYUxhYmVscz86IENhbGVuZGFyQXJpYUxhYmVscztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhclByb3BzIGV4dGVuZHMgQ2FsZW5kYXJTZXR0aW5ncywgQ2FsZW5kYXJCYXNlUHJvcHMsIENhbGVuZGFyU3lzdGVtUHJvcHMge1xuICAvKiogTWF4IGxldmVsIHRoYXQgdXNlciBjYW4gZ28gdXAgdG8gKGRlY2FkZSwgeWVhciwgbW9udGgpLCBkZWZhdWx0cyB0byBkZWNhZGUgKi9cbiAgbWF4TGV2ZWw/OiBDYWxlbmRhckxldmVsO1xuXG4gIC8qKiBNaW4gbGV2ZWwgdGhhdCB1c2VyIGNhbiBnbyBkb3duIHRvIChkZWNhZGUsIHllYXIsIG1vbnRoKSwgZGVmYXVsdHMgdG8gbW9udGggKi9cbiAgbWluTGV2ZWw/OiBDYWxlbmRhckxldmVsO1xufVxuXG5jb25zdCBkZWZhdWx0UHJvcHM6IFBhcnRpYWw8Q2FsZW5kYXJQcm9wcz4gPSB7XG4gIG1heExldmVsOiAnZGVjYWRlJyxcbiAgbWluTGV2ZWw6ICdtb250aCcsXG4gIF9fdXBkYXRlRGF0ZU9uWWVhclNlbGVjdDogdHJ1ZSxcbiAgX191cGRhdGVEYXRlT25Nb250aFNlbGVjdDogdHJ1ZSxcbn07XG5cbmV4cG9ydCBjb25zdCBDYWxlbmRhciA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIENhbGVuZGFyUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICAvLyBDYWxlbmRhckxldmVsIHByb3BzXG4gICAgbWF4TGV2ZWwsXG4gICAgbWluTGV2ZWwsXG4gICAgZGVmYXVsdExldmVsLFxuICAgIGxldmVsLFxuICAgIG9uTGV2ZWxDaGFuZ2UsXG4gICAgZGF0ZSxcbiAgICBkZWZhdWx0RGF0ZSxcbiAgICBvbkRhdGVDaGFuZ2UsXG4gICAgbnVtYmVyT2ZDb2x1bW5zLFxuICAgIGNvbHVtbnNUb1Njcm9sbCxcbiAgICBhcmlhTGFiZWxzLFxuICAgIG9uWWVhclNlbGVjdCxcbiAgICBvbk1vbnRoU2VsZWN0LFxuICAgIG9uWWVhck1vdXNlRW50ZXIsXG4gICAgb25Nb250aE1vdXNlRW50ZXIsXG4gICAgX191cGRhdGVEYXRlT25ZZWFyU2VsZWN0LFxuICAgIF9fdXBkYXRlRGF0ZU9uTW9udGhTZWxlY3QsXG5cbiAgICAvLyBNb250aExldmVsR3JvdXAgcHJvcHNcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICB3ZWVrZGF5Rm9ybWF0LFxuICAgIHdlZWtlbmREYXlzLFxuICAgIGdldERheVByb3BzLFxuICAgIGV4Y2x1ZGVEYXRlLFxuICAgIHJlbmRlckRheSxcbiAgICBoaWRlT3V0c2lkZURhdGVzLFxuICAgIGhpZGVXZWVrZGF5cyxcbiAgICBnZXREYXlBcmlhTGFiZWwsXG4gICAgbW9udGhMYWJlbEZvcm1hdCxcbiAgICBfX29uRGF5Q2xpY2ssXG4gICAgX19vbkRheU1vdXNlRW50ZXIsXG5cbiAgICAvLyBZZWFyTGV2ZWxHcm91cCBwcm9wc1xuICAgIG1vbnRoc0xpc3RGb3JtYXQsXG4gICAgZ2V0TW9udGhDb250cm9sUHJvcHMsXG4gICAgeWVhckxhYmVsRm9ybWF0LFxuXG4gICAgLy8gRGVjYWRlTGV2ZWxHcm91cCBwcm9wc1xuICAgIHllYXJzTGlzdEZvcm1hdCxcbiAgICBnZXRZZWFyQ29udHJvbFByb3BzLFxuICAgIGRlY2FkZUxhYmVsRm9ybWF0LFxuXG4gICAgLy8gT3RoZXIgcHJvcHNcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgbG9jYWxlLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjbGFzc05hbWVzLFxuICAgIHN0eWxlcyxcbiAgICBfX3N0YXRpY1NlbGVjdG9yLFxuICAgIHVuc3R5bGVkLFxuICAgIF9fcHJldmVudEZvY3VzLFxuICAgIC4uLm90aGVyc1xuICB9ID0gdXNlQ29tcG9uZW50RGVmYXVsdFByb3BzKCdDYWxlbmRhcicsIGRlZmF1bHRQcm9wcywgcHJvcHMpO1xuXG4gIGNvbnN0IHsgY2xhc3NlcywgY3ggfSA9IHVzZVN0eWxlcyhudWxsLCB7XG4gICAgY2xhc3NOYW1lcyxcbiAgICBzdHlsZXMsXG4gICAgdW5zdHlsZWQsXG4gICAgbmFtZTogWydDYWxlbmRhcicsIF9fc3RhdGljU2VsZWN0b3JdLFxuICB9KTtcblxuICBjb25zdCBbX2xldmVsLCBzZXRMZXZlbF0gPSB1c2VVbmNvbnRyb2xsZWQoe1xuICAgIHZhbHVlOiBsZXZlbCA/IGNsYW1wTGV2ZWwobGV2ZWwsIG1pbkxldmVsLCBtYXhMZXZlbCkgOiB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0TGV2ZWwgPyBjbGFtcExldmVsKGRlZmF1bHRMZXZlbCwgbWluTGV2ZWwsIG1heExldmVsKSA6IHVuZGVmaW5lZCxcbiAgICBmaW5hbFZhbHVlOiBjbGFtcExldmVsKHVuZGVmaW5lZCwgbWluTGV2ZWwsIG1heExldmVsKSxcbiAgICBvbkNoYW5nZTogb25MZXZlbENoYW5nZSxcbiAgfSk7XG5cbiAgY29uc3QgW19kYXRlLCBzZXREYXRlXSA9IHVzZVVuY29udHJvbGxlZCh7XG4gICAgdmFsdWU6IGRhdGUsXG4gICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0RGF0ZSxcbiAgICBmaW5hbFZhbHVlOiBudWxsLFxuICAgIG9uQ2hhbmdlOiBvbkRhdGVDaGFuZ2UsXG4gIH0pO1xuXG4gIGNvbnN0IHN0eWxlc0FwaVByb3BzID0ge1xuICAgIHN0eWxlcyxcbiAgICBjbGFzc05hbWVzLFxuICAgIHVuc3R5bGVkLFxuICAgIF9fc3RhdGljU2VsZWN0b3I6IF9fc3RhdGljU2VsZWN0b3IgfHwgJ0NhbGVuZGFyJyxcbiAgfTtcblxuICBjb25zdCBfY29sdW1uc1RvU2Nyb2xsID0gY29sdW1uc1RvU2Nyb2xsIHx8IG51bWJlck9mQ29sdW1ucyB8fCAxO1xuICBjb25zdCBjdXJyZW50RGF0ZSA9IF9kYXRlIHx8IG5ldyBEYXRlKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e2N4KGNsYXNzZXMuY2FsZW5kYXIsIGNsYXNzTmFtZSwgbG9jYWxlID09PSAnZmEnICYmIGNsYXNzZXMuY2FsZW5kYXJSdGwpfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB7Li4ub3RoZXJzfVxuICAgID5cbiAgICAgIHtfbGV2ZWwgPT09ICdtb250aCcgJiYgKFxuICAgICAgICA8TW9udGhMZXZlbEdyb3VwXG4gICAgICAgICAgbW9udGg9e2N1cnJlbnREYXRlfVxuICAgICAgICAgIG1pbkRhdGU9e21pbkRhdGV9XG4gICAgICAgICAgbWF4RGF0ZT17bWF4RGF0ZX1cbiAgICAgICAgICBmaXJzdERheU9mV2Vlaz17Zmlyc3REYXlPZldlZWt9XG4gICAgICAgICAgd2Vla2RheUZvcm1hdD17d2Vla2RheUZvcm1hdH1cbiAgICAgICAgICB3ZWVrZW5kRGF5cz17d2Vla2VuZERheXN9XG4gICAgICAgICAgZ2V0RGF5UHJvcHM9e2dldERheVByb3BzfVxuICAgICAgICAgIGV4Y2x1ZGVEYXRlPXtleGNsdWRlRGF0ZX1cbiAgICAgICAgICByZW5kZXJEYXk9e3JlbmRlckRheX1cbiAgICAgICAgICBoaWRlT3V0c2lkZURhdGVzPXtoaWRlT3V0c2lkZURhdGVzfVxuICAgICAgICAgIGhpZGVXZWVrZGF5cz17aGlkZVdlZWtkYXlzfVxuICAgICAgICAgIGdldERheUFyaWFMYWJlbD17Z2V0RGF5QXJpYUxhYmVsfVxuICAgICAgICAgIG9uTmV4dD17KCkgPT4gc2V0RGF0ZShkYXlqcyhjdXJyZW50RGF0ZSkuYWRkKF9jb2x1bW5zVG9TY3JvbGwsICdtb250aCcpLnRvRGF0ZSgpKX1cbiAgICAgICAgICBvblByZXZpb3VzPXsoKSA9PlxuICAgICAgICAgICAgc2V0RGF0ZShkYXlqcyhjdXJyZW50RGF0ZSkuc3VidHJhY3QoX2NvbHVtbnNUb1Njcm9sbCwgJ21vbnRoJykudG9EYXRlKCkpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhhc05leHRMZXZlbD17bWF4TGV2ZWwgIT09ICdtb250aCd9XG4gICAgICAgICAgb25MZXZlbENsaWNrPXsoKSA9PiBzZXRMZXZlbCgneWVhcicpfVxuICAgICAgICAgIG51bWJlck9mQ29sdW1ucz17bnVtYmVyT2ZDb2x1bW5zfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIGxldmVsQ29udHJvbEFyaWFMYWJlbD17YXJpYUxhYmVscz8ubW9udGhMZXZlbENvbnRyb2x9XG4gICAgICAgICAgbmV4dExhYmVsPXthcmlhTGFiZWxzPy5uZXh0TW9udGh9XG4gICAgICAgICAgcHJldmlvdXNMYWJlbD17YXJpYUxhYmVscz8ucHJldmlvdXNNb250aH1cbiAgICAgICAgICBtb250aExhYmVsRm9ybWF0PXttb250aExhYmVsRm9ybWF0fVxuICAgICAgICAgIF9fb25EYXlDbGljaz17X19vbkRheUNsaWNrfVxuICAgICAgICAgIF9fb25EYXlNb3VzZUVudGVyPXtfX29uRGF5TW91c2VFbnRlcn1cbiAgICAgICAgICBfX3ByZXZlbnRGb2N1cz17X19wcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgey4uLnN0eWxlc0FwaVByb3BzfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge19sZXZlbCA9PT0gJ3llYXInICYmIChcbiAgICAgICAgPFllYXJMZXZlbEdyb3VwXG4gICAgICAgICAgeWVhcj17Y3VycmVudERhdGV9XG4gICAgICAgICAgbnVtYmVyT2ZDb2x1bW5zPXtudW1iZXJPZkNvbHVtbnN9XG4gICAgICAgICAgbWluRGF0ZT17bWluRGF0ZX1cbiAgICAgICAgICBtYXhEYXRlPXttYXhEYXRlfVxuICAgICAgICAgIG1vbnRoc0xpc3RGb3JtYXQ9e21vbnRoc0xpc3RGb3JtYXR9XG4gICAgICAgICAgZ2V0TW9udGhDb250cm9sUHJvcHM9e2dldE1vbnRoQ29udHJvbFByb3BzfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIG9uTmV4dD17KCkgPT4gc2V0RGF0ZShkYXlqcyhjdXJyZW50RGF0ZSkuYWRkKF9jb2x1bW5zVG9TY3JvbGwsICd5ZWFyJykudG9EYXRlKCkpfVxuICAgICAgICAgIG9uUHJldmlvdXM9eygpID0+IHNldERhdGUoZGF5anMoY3VycmVudERhdGUpLnN1YnRyYWN0KF9jb2x1bW5zVG9TY3JvbGwsICd5ZWFyJykudG9EYXRlKCkpfVxuICAgICAgICAgIGhhc05leHRMZXZlbD17bWF4TGV2ZWwgIT09ICdtb250aCcgJiYgbWF4TGV2ZWwgIT09ICd5ZWFyJ31cbiAgICAgICAgICBvbkxldmVsQ2xpY2s9eygpID0+IHNldExldmVsKCdkZWNhZGUnKX1cbiAgICAgICAgICBsZXZlbENvbnRyb2xBcmlhTGFiZWw9e2FyaWFMYWJlbHM/LnllYXJMZXZlbENvbnRyb2x9XG4gICAgICAgICAgbmV4dExhYmVsPXthcmlhTGFiZWxzPy5uZXh0WWVhcn1cbiAgICAgICAgICBwcmV2aW91c0xhYmVsPXthcmlhTGFiZWxzPy5wcmV2aW91c1llYXJ9XG4gICAgICAgICAgeWVhckxhYmVsRm9ybWF0PXt5ZWFyTGFiZWxGb3JtYXR9XG4gICAgICAgICAgX19vbkNvbnRyb2xNb3VzZUVudGVyPXtvbk1vbnRoTW91c2VFbnRlcn1cbiAgICAgICAgICBfX29uQ29udHJvbENsaWNrPXsoX2V2ZW50LCBwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICBfX3VwZGF0ZURhdGVPbk1vbnRoU2VsZWN0ICYmIHNldERhdGUocGF5bG9hZCk7XG4gICAgICAgICAgICBzZXRMZXZlbChjbGFtcExldmVsKCdtb250aCcsIG1pbkxldmVsLCBtYXhMZXZlbCkpO1xuICAgICAgICAgICAgb25Nb250aFNlbGVjdD8uKHBheWxvYWQpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgX19wcmV2ZW50Rm9jdXM9e19fcHJldmVudEZvY3VzfVxuICAgICAgICAgIHsuLi5zdHlsZXNBcGlQcm9wc31cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtfbGV2ZWwgPT09ICdkZWNhZGUnICYmIChcbiAgICAgICAgPERlY2FkZUxldmVsR3JvdXBcbiAgICAgICAgICBkZWNhZGU9e2N1cnJlbnREYXRlfVxuICAgICAgICAgIG1pbkRhdGU9e21pbkRhdGV9XG4gICAgICAgICAgbWF4RGF0ZT17bWF4RGF0ZX1cbiAgICAgICAgICB5ZWFyc0xpc3RGb3JtYXQ9e3llYXJzTGlzdEZvcm1hdH1cbiAgICAgICAgICBnZXRZZWFyQ29udHJvbFByb3BzPXtnZXRZZWFyQ29udHJvbFByb3BzfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIG9uTmV4dD17KCkgPT5cbiAgICAgICAgICAgIHNldERhdGUoXG4gICAgICAgICAgICAgIGRheWpzKGN1cnJlbnREYXRlKVxuICAgICAgICAgICAgICAgIC5hZGQoMTAgKiBfY29sdW1uc1RvU2Nyb2xsLCAneWVhcicpXG4gICAgICAgICAgICAgICAgLnRvRGF0ZSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIG9uUHJldmlvdXM9eygpID0+XG4gICAgICAgICAgICBzZXREYXRlKFxuICAgICAgICAgICAgICBkYXlqcyhjdXJyZW50RGF0ZSlcbiAgICAgICAgICAgICAgICAuc3VidHJhY3QoMTAgKiBfY29sdW1uc1RvU2Nyb2xsLCAneWVhcicpXG4gICAgICAgICAgICAgICAgLnRvRGF0ZSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIGhhc05leHRMZXZlbD17ZmFsc2V9XG4gICAgICAgICAgbnVtYmVyT2ZDb2x1bW5zPXtudW1iZXJPZkNvbHVtbnN9XG4gICAgICAgICAgbGV2ZWxDb250cm9sQXJpYUxhYmVsPXthcmlhTGFiZWxzPy5kZWNhZGVMZXZlbENvbnRyb2x9XG4gICAgICAgICAgbmV4dExhYmVsPXthcmlhTGFiZWxzPy5uZXh0RGVjYWRlfVxuICAgICAgICAgIHByZXZpb3VzTGFiZWw9e2FyaWFMYWJlbHM/LnByZXZpb3VzRGVjYWRlfVxuICAgICAgICAgIGRlY2FkZUxhYmVsRm9ybWF0PXtkZWNhZGVMYWJlbEZvcm1hdH1cbiAgICAgICAgICBfX29uQ29udHJvbE1vdXNlRW50ZXI9e29uWWVhck1vdXNlRW50ZXJ9XG4gICAgICAgICAgX19vbkNvbnRyb2xDbGljaz17KF9ldmVudCwgcGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgX191cGRhdGVEYXRlT25ZZWFyU2VsZWN0ICYmIHNldERhdGUocGF5bG9hZCk7XG4gICAgICAgICAgICBzZXRMZXZlbChjbGFtcExldmVsKCd5ZWFyJywgbWluTGV2ZWwsIG1heExldmVsKSk7XG4gICAgICAgICAgICBvblllYXJTZWxlY3Q/LihwYXlsb2FkKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIF9fcHJldmVudEZvY3VzPXtfX3ByZXZlbnRGb2N1c31cbiAgICAgICAgICB7Li4uc3R5bGVzQXBpUHJvcHN9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufSk7XG5cbkNhbGVuZGFyLmRpc3BsYXlOYW1lID0gJ0BtYW50aW5lL2RhdGVzL0NhbGVuZGFyJztcbiJdLCJuYW1lcyI6WyJmb3J3YXJkUmVmIiwidXNlQ29tcG9uZW50RGVmYXVsdFByb3BzIiwidXNlU3R5bGVzIiwidXNlVW5jb250cm9sbGVkIiwiY2xhbXBMZXZlbCIsIlJlYWN0IiwiQm94IiwiTW9udGhMZXZlbEdyb3VwIiwiZGF5anMiLCJZZWFyTGV2ZWxHcm91cCIsIkRlY2FkZUxldmVsR3JvdXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ3RDLElBQUksbUJBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO0FBQ3ZELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBQ25ELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7QUFDekQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2hLLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztBQUMvQixFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksQ0FB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