@fundamental-ngx/core 0.58.0-rc.61 → 0.58.0-rc.62
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.
|
@@ -922,7 +922,7 @@ class FdDatetimeAdapter extends DatetimeAdapter {
|
|
|
922
922
|
* Date.parse('10:30 AM') doesn't work so we need do a trick
|
|
923
923
|
* and prepend it by a date string.
|
|
924
924
|
*/
|
|
925
|
-
const dateStr = new Intl.DateTimeFormat('en-
|
|
925
|
+
const dateStr = new Intl.DateTimeFormat('en-US').format(new Date());
|
|
926
926
|
const dateTimeString = `${dateStr} ${timeStr}`;
|
|
927
927
|
return new Date(Date.parse(dateTimeString));
|
|
928
928
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-datetime.mjs","sources":["../tmp-esm2022/datetime/datetime-adapter.js","../tmp-esm2022/datetime/datetime-formats.js","../tmp-esm2022/datetime/datetime-format.pipes.js","../tmp-esm2022/datetime/datetime-utils.js","../tmp-esm2022/datetime/fd-date.utils.js","../tmp-esm2022/datetime/fd-date.js","../tmp-esm2022/datetime/fd-date-formats.js","../tmp-esm2022/datetime/fd-datetime-adapter.js","../tmp-esm2022/datetime/fd-datetime-pipes.module.js","../tmp-esm2022/datetime/fd-datetime.module.js","../tmp-esm2022/datetime/provide-date-time.js","../tmp-esm2022/datetime/fundamental-ngx-core-datetime.js"],"sourcesContent":["import { Subject } from 'rxjs';\n/**\n * Datetime Adapter is an abstract class that must be implemented by each adapter.\n * It's used to encapsulate a date/time manipulations as result\n * others places that uses it remain date type agnostic.\n *\n */\nexport class DatetimeAdapter {\n constructor() {\n /** @hidden */\n this._localeChanges = new Subject();\n this.localeChanges = this._localeChanges.asObservable();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale) {\n this.locale = locale;\n this._localeChanges.next();\n }\n /**\n * Set hours, minutes and seconds at once.\n * @param date The date to set time to.\n * @param hours\n * @param minutes\n * @param seconds\n * @returns The new date instance.\n */\n setTime(date, hours, minutes, seconds) {\n date = this.setHours(date, hours);\n date = this.setMinutes(date, minutes);\n date = this.setSeconds(date, seconds);\n return date;\n }\n /**\n * Get Amount of weeks in given month/year\n * @param year The year of the date\n * @param month The month of the date\n * @param firstDayOfWeek The first day of week. 1 - Sunday, 2 - Monday...\n * @returns Number of weeks in the given month\n */\n getAmountOfWeeks(year, month, firstDayOfWeek) {\n const firstOfMonth = new Date(year, month - 1, 1);\n const lastOfMonth = new Date(year, month, 0);\n const dayOffset = (firstOfMonth.getDay() - firstDayOfWeek + 8) % 7;\n const used = dayOffset + lastOfMonth.getDate();\n return Math.ceil(used / 7);\n }\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first, second) {\n return (this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second) ||\n this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9kYXRldGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0M7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLGVBQWU7SUFzVGpDO1FBSEEsY0FBYztRQUNOLG1CQUFjLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFDRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsT0FBTyxDQUFDLElBQU8sRUFBRSxLQUFhLEVBQUUsT0FBZSxFQUFFLE9BQWU7UUFDNUQsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsY0FBc0I7UUFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3QyxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEtBQVEsRUFBRSxNQUFTO1FBQzNCLE9BQU8sQ0FDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUNuRCxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogRGF0ZXRpbWUgQWRhcHRlciBpcyBhbiBhYnN0cmFjdCBjbGFzcyB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBhZGFwdGVyLlxuICogSXQncyB1c2VkIHRvIGVuY2Fwc3VsYXRlIGEgZGF0ZS90aW1lIG1hbmlwdWxhdGlvbnMgYXMgcmVzdWx0XG4gKiBvdGhlcnMgcGxhY2VzIHRoYXQgdXNlcyBpdCByZW1haW4gZGF0ZSB0eXBlIGFnbm9zdGljLlxuICpcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGV0aW1lQWRhcHRlcjxEPiB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgeWVhciBjb21wb25lbnQgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgeWVhciBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB5ZWFyIG51bWJlci5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRZZWFyKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSBtb250aCBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBtb250aCBudW1iZXIgKG1pbiAxLCBtYXggMTIpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldE1vbnRoKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXkgb2YgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgZGF0ZSBvZiB0aGUgbW9udGggZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgZGF0ZSBudW1iZXIgKG1pbiAxLCBtYXggMzEpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldERhdGUoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBjb21wb25lbnQgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgZGF5IG9mIHRoZSB3ZWVrIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIGRheSBvZiB3ZWVrIG51bWJlciAobWluIDEsIG1heCA3LCAxID0gU3VuZGF5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgaG91cnMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgaG91cnMgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgaG91cnMgbnVtYmVyIChtaW4gMCwgbWF4IDIzKS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRIb3VycyhkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBtaW51dGVzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGV4dHJhY3QgdGhlIG1pbnV0ZXMgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbWludXRlcyBudW1iZXIgKG1pbiAwLCBtYXggNTkpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldE1pbnV0ZXMoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgc2Vjb25kcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSBzZWNvbmRzIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIHNlY29uZHMgbnVtYmVyIChtaW4gMCwgbWF4IDU5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRTZWNvbmRzKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaG91cnMuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gc2V0IGhvdXJzIHRvLlxuICAgICAqIEBwYXJhbSBob3Vyc1xuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBzZXRIb3VycyhkYXRlOiBELCBob3VyczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIFNldCBtaW51dGVzLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCBtaW51dGVzIHRvLlxuICAgICAqIEBwYXJhbSBtaW51dGVzXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHNldE1pbnV0ZXMoZGF0ZTogRCwgbWludXRlczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIFNldCBzZWNvbmRzLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCBzZWNvbmRzIHRvLlxuICAgICAqIEBwYXJhbSBzZWNvbmRzXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHNldFNlY29uZHMoZGF0ZTogRCwgc2Vjb25kczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgd2VlayBudW1iZXIgb2YgdGhlIGdpdmVuIGRhdGVcbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSB3ZWVrIG51bWJlciBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB3ZWVrIG51bWJlciAobWluIDEsIG1heCA1MykuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0V2Vla051bWJlcihkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgbmFtZXMgZm9yIHRoZSBtb250aHMuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdKYW51YXJ5Jywgc2hvcnQgPSAnSmFuJywgbmFycm93ID0gJ0onKS5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoIEphbnVhcnkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRhdGVzIG9mIHRoZSBtb250aC5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGRhdGUgb2YgdGhlIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICcxJy5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRheXMgb2YgdGhlIHdlZWsuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdTdW5kYXknLCBzaG9ydCA9ICdTdW4nLCBuYXJyb3cgPSAnUycpLlxuICAgICAqIEByZXR1cm5zIEFuIG9yZGVyZWQgbGlzdCBvZiBhbGwgd2Vla2RheSBuYW1lcywgc3RhcnRpbmcgd2l0aCBTdW5kYXkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmFtZSBmb3IgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZ2V0IHRoZSB5ZWFyIG5hbWUgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgZ2l2ZW4geWVhciAoZS5nLiAnMjAyMCcpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFllYXJOYW1lKGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIGZvciB0aGUgd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBnZXQgdGhlIHdlZWsgbmFtZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB0aGUgd2Vlay5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRXZWVrTmFtZShkYXRlOiBEKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgaG91ciBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGhvdXJzICgwIC0gMjQpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldEhvdXJOYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuOyBtZXJpZGlhbjogYm9vbGVhbiB9KTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBtaW51dGUgbmFtZXMuXG4gICAgICogQHJldHVybnMgQW4gb3JkZXJlZCBsaXN0IG9mIGFsbCBob3VycyAoMCAtIDI0KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRNaW51dGVOYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuIH0pOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBsaXN0IG9mIHNlY29uZCBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGhvdXJzICgwIC0gMjQpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFNlY29uZE5hbWVzKG9wdGlvbnM6IHsgdHdvRGlnaXQ6IGJvb2xlYW4gfSk6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgZGF5IHBlcmlvZHMuXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBkYXkgcGVyaW9kcywgc3RhcnRzIGZyb20gQU0gWydBTScsICdQTSddLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldERheVBlcmlvZE5hbWVzKCk6IFtzdHJpbmcsIHN0cmluZ107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICogQHJldHVybnMgVGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMC1pbmRleGVkLCAwID0gU3VuZGF5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgd2hvc2UgbW9udGggc2hvdWxkIGJlIGNoZWNrZWQuXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgZGF0ZSBmcm9tIGEgdXNlci1wcm92aWRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHBhcnNlLlxuICAgICAqIEBwYXJhbSBwYXJzZUZvcm1hdCBUaGUgZXhwZWN0ZWQgZm9ybWF0IG9mIHRoZSB2YWx1ZSBiZWluZyBwYXJzZWRcbiAgICAgKiAgICAgKHR5cGUgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50KS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgcGFyc2UodmFsdWU6IHVua25vd24sIHBhcnNlRm9ybWF0OiB1bmtub3duKTogRCB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIGEgZGF0ZSBhcyBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1hdC5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgdmFsdWUgdG8gZm9ybWF0LlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZy5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBmb3JtYXQoZGF0ZTogTnVsbGFibGU8RD4sIGRpc3BsYXlGb3JtYXQ6IHVua25vd24pOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZGF0ZSB3aXRoIHRoZSBnaXZlbiB5ZWFyLCBtb250aCwgYW5kIGRhdGUuXG4gICAgICogQHBhcmFtIHllYXIgVGhlIGZ1bGwgeWVhciBvZiB0aGUgZGF0ZS4gKGUuZy4gMTk4OSkuXG4gICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBvZiB0aGUgZGF0ZSAoMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBtb250aCBkYXRlLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIGxlbmd0aCBvZiB0aGUgZ2l2ZW4gbW9udGguXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlLCBvciBudWxsIGlmIGludmFsaWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoPzogbnVtYmVyLCBkYXRlPzogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdG9kYXkncyBkYXRlIHdoZXJlIHRpbWUgdmFsdWUgaXMgc2V0IHRvIDBcbiAgICAgKiBAcmV0dXJucyBUb2RheSdzIGRhdGUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdG9kYXkoKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgZGF0ZSBhbmQgdGltZSBhdCB0aGlzIG1vbWVudC5cbiAgICAgKiBAcmV0dXJucyBkYXRlIGFuZCB0aW1lIGF0IHRoaXMgbW9tZW50LlxuICAgICAqL1xuICAgIGFic3RyYWN0IG5vdygpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHllYXJzIHRvIHRoZSBkYXRlLiBZZWFycyBhcmUgY291bnRlZCBhcyBpZiBmbGlwcGluZyAxMiBwYWdlcyBvbiB0aGVcbiAgICAgKiBjYWxlbmRhciBmb3IgZWFjaCB5ZWFyIGFuZCB0aGVuIGZpbmRpbmcgdGhlIGNsb3Nlc3QgZGF0ZSBpbiB0aGUgbmV3IG1vbnRoLiBGb3IgZXhhbXBsZSB3aGVuXG4gICAgICogYWRkaW5nIDEgeWVhciB0byBGZWIgMjksIDIwMTYsIHRoZSByZXN1bHRpbmcgZGF0ZSB3aWxsIGJlIEZlYiAyOCwgMjAxNy5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBhZGQgeWVhcnMgdG8uXG4gICAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkIChtYXkgYmUgbmVnYXRpdmUpLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGRhdGUgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIGFkZGVkLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogRCwgeWVhcnM6IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHRoZSBnaXZlbiBudW1iZXIgb2YgbW9udGhzIHRvIHRoZSBkYXRlLiBNb250aHMgYXJlIGNvdW50ZWQgYXMgaWYgZmxpcHBpbmcgYSBwYWdlIG9uIHRoZVxuICAgICAqIGNhbGVuZGFyIGZvciBlYWNoIG1vbnRoIGFuZCB0aGVuIGZpbmRpbmcgdGhlIGNsb3Nlc3QgZGF0ZSBpbiB0aGUgbmV3IG1vbnRoLiBGb3IgZXhhbXBsZSB3aGVuXG4gICAgICogYWRkaW5nIDEgbW9udGggdG8gSmFuIDMxLCAyMDE3LCB0aGUgcmVzdWx0aW5nIGRhdGUgd2lsbCBiZSBGZWIgMjgsIDIwMTcuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYWRkIG1vbnRocyB0by5cbiAgICAgKiBAcGFyYW0gbW9udGhzIFRoZSBudW1iZXIgb2YgbW9udGhzIHRvIGFkZCAobWF5IGJlIG5lZ2F0aXZlKS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBvbmUgd2l0aCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgYWRkZWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogRCwgbW9udGhzOiBudW1iZXIpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGRheXMgdG8gdGhlIGRhdGUuIERheXMgYXJlIGNvdW50ZWQgYXMgaWYgbW92aW5nIG9uZSBjZWxsIG9uIHRoZVxuICAgICAqIGNhbGVuZGFyIGZvciBlYWNoIGRheS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBhZGQgZGF5cyB0by5cbiAgICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkIChtYXkgYmUgbmVnYXRpdmUpLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGRhdGUgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgYWRkZWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IEQsIGRheXM6IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBDbG9uZXMgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xvbmVcbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGNsb25lKGRhdGU6IEQpOiBEO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2sgZXF1YWxpdHkgb2YgMiBkYXRlcy5cbiAgICAgKiBEb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aW1lIHZhbHVlXG4gICAgICogQHBhcmFtIGRhdGUxIFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgICAqIEBwYXJhbSBkYXRlMiBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gICAgICogQHJldHVybnMgSWYgZGF0ZXMgYXJlIGVxdWFsIG9yIG5vdFxuICAgICAqL1xuICAgIGFic3RyYWN0IGRhdGVzRXF1YWwoZGF0ZTE6IE51bGxhYmxlPEQ+LCBkYXRlMjogTnVsbGFibGU8RD4pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2sgZXF1YWxpdHkgb2YgMiBkYXRlcyB0YWtpbmcgaW50byBhY2NvdW50IHRpbWUgdmFsdWUgYXMgd2VsbFxuICAgICAqIEBwYXJhbSBkYXRlMSBUaGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcGFyYW0gZGF0ZTIgVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgICAqIEByZXR1cm5zIElmIGRhdGVzIGFyZSBlcXVhbCBvciBub3RcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBkYXRlVGltZXNFcXVhbChkYXRlMTogTnVsbGFibGU8RD4sIGRhdGUyOiBOdWxsYWJsZTxEPik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gY2hlY2sgaWYgZGF0ZSBpcyBiZXR3ZWVuIDIgZGF0ZXNcbiAgICAgKiBAcGFyYW0gZGF0ZVRvQ2hlY2sgVGhlIGRhdGUgdG8gY2hlY2sgaWYgaXQncyBpbiBhIHJhbmdlXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSBUaGUgc3RhcnQgZGF0ZSBvZiBhIHJhbmdlXG4gICAgICogQHBhcmFtIGVuZERhdGUgVGhlIGVuZCBkYXRlIG9mIGEgcmFuZ2VcbiAgICAgKiBAcmV0dXJucyBJZiBkYXRlIGlzIGluIGEgZ2l2ZW4gZGF0ZSByYW5nZVxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzQmV0d2VlbihkYXRlVG9DaGVjazogRCwgc3RhcnREYXRlOiBELCBlbmREYXRlOiBEKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrcyB2YWxpZGl0eSBvZiBjdXJyZW50IGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYmUgY2hlY2tlZFxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogTnVsbGFibGU8RD4pOiBkYXRlIGlzIEQ7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBSRkMgMzMzOSBjb21wYXRpYmxlIHN0cmluZyAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRhdGUgc3RyaW5ncyB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggbmF0aXZlIEhUTUwgYXR0cmlidXRlc1xuICAgICAqIHN1Y2ggYXMgdGhlIGBtaW5gIG9yIGBtYXhgIGF0dHJpYnV0ZSBvZiBhbiBgPGlucHV0PmAuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZ2V0IHRoZSBJU08gZGF0ZSBzdHJpbmcgZm9yLlxuICAgICAqIEByZXR1cm5zIFRoZSBJU08gZGF0ZSBzdHJpbmcgZGF0ZSBzdHJpbmcuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdG9Jc284NjAxKGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIHBlcmlvZCBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgcGVyaW9kIGluZm8uXG4gICAgICovXG4gICAgYWJzdHJhY3QgaXNUaW1lRm9ybWF0SW5jbHVkZXNEYXlQZXJpb2QoZGlzcGxheUZvcm1hdDogdW5rbm93bik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIGhvdXJzIGluZm8uXG4gICAgICogQHBhcmFtIGRpc3BsYXlGb3JtYXQgVGhlIGZvcm1hdCB0byB1c2UgdG8gZGlzcGxheSB0aGUgZGF0ZSBhcyBhIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyBJZiB0aW1lIGZvcm1hdCBpbmNsdWRlcyBtaW51dGVzIGluZm8uXG4gICAgICovXG4gICAgYWJzdHJhY3QgaXNUaW1lRm9ybWF0SW5jbHVkZXNIb3VycyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEZvcm1hdCBvcHRpb24gaW5jbHVkZXMgbWludXRlcyBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgbWludXRlcyBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEZvcm1hdCBvcHRpb24gaW5jbHVkZXMgc2Vjb25kcyBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgc2Vjb25kcyBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIGJlaW5nIHJlZmVyZW5jZWQuXG4gICAgICogQHJldHVybnMgU3RyaW5nIHJlcHJlc2VudGluZyBob3cgbXVjaCB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIGRhdGUgcGFyYW0uXG4gICAgICovXG4gICAgYWJzdHJhY3QgZnJvbU5vdz8oZGF0ZTogRCk6IHN0cmluZztcblxuICAgIC8qKiBsb2NhbGUgY2hhbmdlcyBzdHJlYW0gKi9cbiAgICByZWFkb25seSBsb2NhbGVDaGFuZ2VzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICAgLyoqIGN1cnJlbnQgbG9jYWxlICovXG4gICAgcHJvdGVjdGVkIGxvY2FsZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sb2NhbGVDaGFuZ2VzOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sb2NhbGVDaGFuZ2VzID0gdGhpcy5fbG9jYWxlQ2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbG9jYWxlIHVzZWQgZm9yIGFsbCBkYXRlcy5cbiAgICAgKiBAcGFyYW0gbG9jYWxlIFRoZSBuZXcgbG9jYWxlLlxuICAgICAqL1xuICAgIHNldExvY2FsZShsb2NhbGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZTtcbiAgICAgICAgdGhpcy5fbG9jYWxlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIGF0IG9uY2UuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gc2V0IHRpbWUgdG8uXG4gICAgICogQHBhcmFtIGhvdXJzXG4gICAgICogQHBhcmFtIG1pbnV0ZXNcbiAgICAgKiBAcGFyYW0gc2Vjb25kc1xuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBzZXRUaW1lKGRhdGU6IEQsIGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM6IG51bWJlciwgc2Vjb25kczogbnVtYmVyKTogRCB7XG4gICAgICAgIGRhdGUgPSB0aGlzLnNldEhvdXJzKGRhdGUsIGhvdXJzKTtcbiAgICAgICAgZGF0ZSA9IHRoaXMuc2V0TWludXRlcyhkYXRlLCBtaW51dGVzKTtcbiAgICAgICAgZGF0ZSA9IHRoaXMuc2V0U2Vjb25kcyhkYXRlLCBzZWNvbmRzKTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IEFtb3VudCBvZiB3ZWVrcyBpbiBnaXZlbiBtb250aC95ZWFyXG4gICAgICogQHBhcmFtIHllYXIgVGhlIHllYXIgb2YgdGhlIGRhdGVcbiAgICAgKiBAcGFyYW0gbW9udGggVGhlIG1vbnRoIG9mIHRoZSBkYXRlXG4gICAgICogQHBhcmFtIGZpcnN0RGF5T2ZXZWVrIFRoZSBmaXJzdCBkYXkgb2Ygd2Vlay4gMSAtIFN1bmRheSwgMiAtIE1vbmRheS4uLlxuICAgICAqIEByZXR1cm5zIE51bWJlciBvZiB3ZWVrcyBpbiB0aGUgZ2l2ZW4gbW9udGhcbiAgICAgKi9cbiAgICBnZXRBbW91bnRPZldlZWtzKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZmlyc3REYXlPZldlZWs6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgMSk7XG4gICAgICAgIGNvbnN0IGxhc3RPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDApO1xuXG4gICAgICAgIGNvbnN0IGRheU9mZnNldCA9IChmaXJzdE9mTW9udGguZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlayArIDgpICUgNztcbiAgICAgICAgY29uc3QgdXNlZCA9IGRheU9mZnNldCArIGxhc3RPZk1vbnRoLmdldERhdGUoKTtcblxuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHVzZWQgLyA3KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB0d28gZGF0ZXMuXG4gICAgICogQHBhcmFtIGZpcnN0IFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyAwIGlmIHRoZSBkYXRlcyBhcmUgZXF1YWwsIGEgbnVtYmVyIGxlc3MgdGhhbiAwIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGVhcmxpZXIsXG4gICAgICogICAgIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGxhdGVyLlxuICAgICAqL1xuICAgIGNvbXBhcmVEYXRlKGZpcnN0OiBELCBzZWNvbmQ6IEQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5nZXRZZWFyKGZpcnN0KSAtIHRoaXMuZ2V0WWVhcihzZWNvbmQpIHx8XG4gICAgICAgICAgICB0aGlzLmdldE1vbnRoKGZpcnN0KSAtIHRoaXMuZ2V0TW9udGgoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXREYXRlKGZpcnN0KSAtIHRoaXMuZ2V0RGF0ZShzZWNvbmQpIHx8XG4gICAgICAgICAgICB0aGlzLmdldEhvdXJzKGZpcnN0KSAtIHRoaXMuZ2V0SG91cnMoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXRNaW51dGVzKGZpcnN0KSAtIHRoaXMuZ2V0TWludXRlcyhzZWNvbmQpIHx8XG4gICAgICAgICAgICB0aGlzLmdldFNlY29uZHMoZmlyc3QpIC0gdGhpcy5nZXRTZWNvbmRzKHNlY29uZClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=","import { InjectionToken } from '@angular/core';\n/**\n * DateTimeFormats injection token\n */\nexport const DATE_TIME_FORMATS = new InjectionToken('date-formats');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtZm9ybWF0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9kYXRldGltZS1mb3JtYXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF5Qi9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWtCLGNBQWMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEYXRlVGltZUZvcm1hdHMgaXMgaW50ZW5kZWQgdG8ga2VlcCBvcHRpb25zXG4gKiByZWxhdGVkIHRvIGRhdGUtdGltZSBmb3JtYXR0aW5nIC8gcGFyc2luZ1xuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZUZvcm1hdHMge1xuICAgIHBhcnNlOiB7XG4gICAgICAgIGRhdGVJbnB1dDogdW5rbm93bjtcbiAgICAgICAgdGltZUlucHV0OiB1bmtub3duO1xuICAgICAgICBkYXRlVGltZUlucHV0OiB1bmtub3duO1xuICAgIH07XG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6IHVua25vd247XG4gICAgICAgIHRpbWVJbnB1dDogdW5rbm93bjtcbiAgICAgICAgZGF0ZVRpbWVJbnB1dDogdW5rbm93bjtcblxuICAgICAgICBkYXRlQTExeUxhYmVsOiB1bmtub3duO1xuICAgICAgICBtb250aEExMXlMYWJlbDogdW5rbm93bjtcbiAgICAgICAgeWVhckExMXlMYWJlbDogdW5rbm93bjtcbiAgICB9O1xuICAgIHJhbmdlRGVsaW1pdGVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0ZVRpbWVGb3JtYXRzIGluamVjdGlvbiB0b2tlblxuICovXG5leHBvcnQgY29uc3QgREFURV9USU1FX0ZPUk1BVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF0ZVRpbWVGb3JtYXRzPignZGF0ZS1mb3JtYXRzJyk7XG4iXX0=","import { Inject, Optional, Pipe } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { Observable } from 'rxjs';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datetime-adapter\";\nimport * as i2 from \"rxjs\";\nexport class DateFormatPipe {\n /** @hidden */\n constructor(_dateTimeAdapter, _dateTimeFormats) {\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n }\n /** Format date object */\n transform(date, noDateMessage = '') {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\n }\n else {\n return noDateMessage;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFormatPipe, deps: [{ token: i1.DatetimeAdapter }, { token: DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFormatPipe, isStandalone: true, name: \"dateFormat\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFormatPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateFormat',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }] });\nexport class DateTimeFormatPipe {\n /** @hidden */\n constructor(_dateTimeAdapter, _dateTimeFormats) {\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n }\n /** Format date object */\n transform(date, noDateMessage = '') {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateTimeInput);\n }\n else {\n return noDateMessage;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateTimeFormatPipe, deps: [{ token: i1.DatetimeAdapter }, { token: DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DateTimeFormatPipe, isStandalone: true, name: \"dateTimeFormat\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateTimeFormatPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateTimeFormat',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }] });\nexport class DateFromNowPipe {\n /** @hidden */\n constructor(_dateTimeAdapter) {\n this._dateTimeAdapter = _dateTimeAdapter;\n }\n /** Format date object */\n transform(date, noDateMessage = '') {\n if (this._dateTimeAdapter.fromNow && typeof this._dateTimeAdapter.fromNow === 'function') {\n if (date) {\n return this._dateTimeAdapter.fromNow(date);\n }\n else {\n return noDateMessage;\n }\n }\n else {\n console.warn('No fromNow function provided to the DatetimeAdapter');\n return '';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFromNowPipe, deps: [{ token: i1.DatetimeAdapter }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFromNowPipe, isStandalone: true, name: \"dateFromNow\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFromNowPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateFromNow',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }] });\nexport class DayPeriodFormatPipe {\n /** @hidden */\n constructor(_dateTimeAdapter, _dateTimeFormats) {\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n }\n /** Format date object for day period */\n transform(date, customFormat = {}, noDateMessage = '') {\n if (!date) {\n return noDateMessage;\n }\n return this._dateTimeAdapter.format(date, customFormat);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DayPeriodFormatPipe, deps: [{ token: i1.DatetimeAdapter }, { token: DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DayPeriodFormatPipe, isStandalone: true, name: \"dayPeriodFormat\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DayPeriodFormatPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dayPeriodFormat',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }] });\nexport class TranslateDayPeriodPipe {\n /** @hidden */\n constructor(_language$) {\n this._language$ = _language$;\n /** @hidden */\n this._translationResolver = new TranslationResolver();\n this._currentLanguageSignal = toSignal(this._language$, { initialValue: {} });\n }\n /** Format date object for day period */\n transform(value) {\n if (!value) {\n return value;\n }\n const dayPeriodPattern = /(coreTime\\.\\w+Label)/;\n const match = value.match(dayPeriodPattern);\n if (match?.[0]) {\n const currentLanguage = this._currentLanguageSignal();\n const translatedValue = this._translationResolver.resolve(currentLanguage, match[0]);\n return translatedValue ? value.replace(dayPeriodPattern, translatedValue) : value;\n }\n // If no day period pattern is found, return the original value\n return value;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TranslateDayPeriodPipe, deps: [{ token: FD_LANGUAGE }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TranslateDayPeriodPipe, isStandalone: true, name: \"translateDayPeriod\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TranslateDayPeriodPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'translateDayPeriod',\n standalone: true,\n pure: false // required to update the value when the observable is resolved\n }]\n }], ctorParameters: () => [{ type: i2.Observable, decorators: [{\n type: Inject,\n args: [FD_LANGUAGE]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtZm9ybWF0LnBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2RhdGV0aW1lLWZvcm1hdC5waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUF1QyxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQU14RSxNQUFNLE9BQU8sY0FBYztJQUN2QixjQUFjO0lBQ2QsWUFDWSxnQkFBb0MsRUFDRyxnQkFBaUM7UUFEeEUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNHLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7SUFDakYsQ0FBQztJQUVKLHlCQUF5QjtJQUN6QixTQUFTLENBQUMsSUFBTyxFQUFFLGFBQWEsR0FBRyxFQUFFO1FBQ2pDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkYsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLGFBQWEsQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQzs4R0FkUSxjQUFjLGlEQUlDLGlCQUFpQjs0R0FKaEMsY0FBYzs7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDRixJ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T3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGRF9MQU5HVUFHRSwgRmRMYW5ndWFnZSwgRmRMYW5ndWFnZUtleUlkZW50aWZpZXIsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnLi9kYXRldGltZS1hZGFwdGVyJztcbmltcG9ydCB7IERBVEVfVElNRV9GT1JNQVRTLCBEYXRlVGltZUZvcm1hdHMgfSBmcm9tICcuL2RhdGV0aW1lLWZvcm1hdHMnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2RhdGVGb3JtYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUZvcm1hdFBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9kYXRlVGltZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRFX1RJTUVfRk9STUFUUykgcHJpdmF0ZSBfZGF0ZVRpbWVGb3JtYXRzOiBEYXRlVGltZUZvcm1hdHNcbiAgICApIHt9XG5cbiAgICAvKiogRm9ybWF0IGRhdGUgb2JqZWN0ICovXG4gICAgdHJhbnNmb3JtKGRhdGU6IEQsIG5vRGF0ZU1lc3NhZ2UgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmZvcm1hdChkYXRlLCB0aGlzLl9kYXRlVGltZUZvcm1hdHMuZGlzcGxheS5kYXRlSW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5vRGF0ZU1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZGF0ZVRpbWVGb3JtYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVGb3JtYXRQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFURV9USU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVUaW1lRm9ybWF0czogRGF0ZVRpbWVGb3JtYXRzXG4gICAgKSB7fVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCAqL1xuICAgIHRyYW5zZm9ybShkYXRlOiBELCBub0RhdGVNZXNzYWdlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mb3JtYXQoZGF0ZSwgdGhpcy5fZGF0ZVRpbWVGb3JtYXRzLmRpc3BsYXkuZGF0ZVRpbWVJbnB1dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbm9EYXRlTWVzc2FnZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdkYXRlRnJvbU5vdycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlRnJvbU5vd1BpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+KSB7fVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCAqL1xuICAgIHRyYW5zZm9ybShkYXRlOiBELCBub0RhdGVNZXNzYWdlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmZyb21Ob3cgJiYgdHlwZW9mIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mcm9tTm93ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZnJvbU5vdyhkYXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vRGF0ZU1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ05vIGZyb21Ob3cgZnVuY3Rpb24gcHJvdmlkZWQgdG8gdGhlIERhdGV0aW1lQWRhcHRlcicpO1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2RheVBlcmlvZEZvcm1hdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXlQZXJpb2RGb3JtYXRQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFURV9USU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVUaW1lRm9ybWF0czogRGF0ZVRpbWVGb3JtYXRzXG4gICAgKSB7fVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCBmb3IgZGF5IHBlcmlvZCAqL1xuICAgIHRyYW5zZm9ybShkYXRlOiBELCBjdXN0b21Gb3JtYXQ6IGFueSA9IHt9LCBub0RhdGVNZXNzYWdlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBub0RhdGVNZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mb3JtYXQoZGF0ZSwgY3VzdG9tRm9ybWF0KTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAndHJhbnNsYXRlRGF5UGVyaW9kJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHB1cmU6IGZhbHNlIC8vIHJlcXVpcmVkIHRvIHVwZGF0ZSB0aGUgdmFsdWUgd2hlbiB0aGUgb2JzZXJ2YWJsZSBpcyByZXNvbHZlZFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVEYXlQZXJpb2RQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGlvblJlc29sdmVyID0gbmV3IFRyYW5zbGF0aW9uUmVzb2x2ZXIoKTtcblxuICAgIC8qKiBTaWduYWwgdGhhdCB3aWxsIGhvbGQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50TGFuZ3VhZ2VTaWduYWw6IFNpZ25hbDxGZExhbmd1YWdlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoQEluamVjdChGRF9MQU5HVUFHRSkgcHJpdmF0ZSBfbGFuZ3VhZ2UkOiBPYnNlcnZhYmxlPEZkTGFuZ3VhZ2U+KSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRMYW5ndWFnZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuX2xhbmd1YWdlJCwgeyBpbml0aWFsVmFsdWU6IHt9IGFzIEZkTGFuZ3VhZ2UgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCBmb3IgZGF5IHBlcmlvZCAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXlQZXJpb2RQYXR0ZXJuID0gLyhjb3JlVGltZVxcLlxcdytMYWJlbCkvO1xuICAgICAgICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKGRheVBlcmlvZFBhdHRlcm4pO1xuXG4gICAgICAgIGlmIChtYXRjaD8uWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TGFuZ3VhZ2UgPSB0aGlzLl9jdXJyZW50TGFuZ3VhZ2VTaWduYWwoKTtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRWYWx1ZSA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgbWF0Y2hbMF0gYXMgRmRMYW5ndWFnZUtleUlkZW50aWZpZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlZFZhbHVlID8gdmFsdWUucmVwbGFjZShkYXlQZXJpb2RQYXR0ZXJuLCB0cmFuc2xhdGVkVmFsdWUpIDogdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBubyBkYXkgcGVyaW9kIHBhdHRlcm4gaXMgZm91bmQsIHJldHVybiB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbiJdfQ==","/**\n * Converts a given time string to a desired format.\n *\n * @param {string} inputStr - The input time string to be converted.\n * @returns {string} - The converted time string in the desired format.\n */\nexport function convertToDesiredFormat(inputStr) {\n const dayPeriodMapping = {\n morning: 0,\n afternoon: 12,\n evening: 12,\n night: 0\n };\n const dayPeriodPattern = /\\b(morning|afternoon|evening|night)\\b/;\n const amPmPattern = /\\b(AM|PM)\\b/i;\n const convertDayPeriod = (input) => {\n const match = input.match(dayPeriodPattern);\n if (match) {\n const period = match[0].toLowerCase();\n const timeShift = dayPeriodMapping[period];\n input = input.replace(dayPeriodPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n hours = (hours % 12) + timeShift;\n input = input.replace(timeMatch[0], `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`);\n }\n }\n return input;\n };\n const convertAmPm = (input) => {\n const match = input.match(amPmPattern);\n if (match) {\n const period = match[0].toUpperCase();\n input = input.replace(amPmPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n if (period === 'PM' && hours < 12) {\n hours += 12;\n }\n if (period === 'AM' && hours === 12) {\n hours = 0;\n }\n input = input.replace(timeMatch[0], `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`);\n }\n }\n return input;\n };\n inputStr = convertDayPeriod(inputStr);\n inputStr = convertAmPm(inputStr);\n return inputStr.replace(/\\bat\\b/i, '').trim();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZXRpbWUvZGF0ZXRpbWUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsUUFBZ0I7SUFDbkQsTUFBTSxnQkFBZ0IsR0FBRztRQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNWLFNBQVMsRUFBRSxFQUFFO1FBQ2IsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsQ0FBQztLQUNYLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLHVDQUF1QyxDQUFDO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQztJQUVuQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYSxFQUFVLEVBQUU7UUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEMsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMvQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25DLEtBQUssR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUNqQixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNoRixDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFO1FBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMvQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25DLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7b0JBQ2hDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDbEMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDZCxDQUFDO2dCQUNELEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUNqQixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNoRixDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVqQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gdGltZSBzdHJpbmcgdG8gYSBkZXNpcmVkIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXRTdHIgLSBUaGUgaW5wdXQgdGltZSBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgY29udmVydGVkIHRpbWUgc3RyaW5nIGluIHRoZSBkZXNpcmVkIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Rlc2lyZWRGb3JtYXQoaW5wdXRTdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF5UGVyaW9kTWFwcGluZyA9IHtcbiAgICAgICAgbW9ybmluZzogMCxcbiAgICAgICAgYWZ0ZXJub29uOiAxMixcbiAgICAgICAgZXZlbmluZzogMTIsXG4gICAgICAgIG5pZ2h0OiAwXG4gICAgfTtcblxuICAgIGNvbnN0IGRheVBlcmlvZFBhdHRlcm4gPSAvXFxiKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpXFxiLztcbiAgICBjb25zdCBhbVBtUGF0dGVybiA9IC9cXGIoQU18UE0pXFxiL2k7XG5cbiAgICBjb25zdCBjb252ZXJ0RGF5UGVyaW9kID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGlucHV0Lm1hdGNoKGRheVBlcmlvZFBhdHRlcm4pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcmlvZCA9IG1hdGNoWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCB0aW1lU2hpZnQgPSBkYXlQZXJpb2RNYXBwaW5nW3BlcmlvZF07XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoZGF5UGVyaW9kUGF0dGVybiwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVNYXRjaCA9IGlucHV0Lm1hdGNoKC9cXGR7MSwyfTpcXGR7Mn0vKTtcbiAgICAgICAgICAgIGlmICh0aW1lTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbaG91cnNTdHIsIG1pbnV0ZXNTdHJdID0gdGltZU1hdGNoWzBdLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgbGV0IGhvdXJzID0gTnVtYmVyKGhvdXJzU3RyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKG1pbnV0ZXNTdHIpO1xuICAgICAgICAgICAgICAgIGhvdXJzID0gKGhvdXJzICUgMTIpICsgdGltZVNoaWZ0O1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgdGltZU1hdGNoWzBdLFxuICAgICAgICAgICAgICAgICAgICBgJHtob3Vycy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH07XG5cbiAgICBjb25zdCBjb252ZXJ0QW1QbSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBpbnB1dC5tYXRjaChhbVBtUGF0dGVybik7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgY29uc3QgcGVyaW9kID0gbWF0Y2hbMF0udG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShhbVBtUGF0dGVybiwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVNYXRjaCA9IGlucHV0Lm1hdGNoKC9cXGR7MSwyfTpcXGR7Mn0vKTtcbiAgICAgICAgICAgIGlmICh0aW1lTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbaG91cnNTdHIsIG1pbnV0ZXNTdHJdID0gdGltZU1hdGNoWzBdLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgbGV0IGhvdXJzID0gTnVtYmVyKGhvdXJzU3RyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKG1pbnV0ZXNTdHIpO1xuICAgICAgICAgICAgICAgIGlmIChwZXJpb2QgPT09ICdQTScgJiYgaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgICAgICBob3VycyArPSAxMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBlcmlvZCA9PT0gJ0FNJyAmJiBob3VycyA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICAgICAgaG91cnMgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIHRpbWVNYXRjaFswXSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aG91cnMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9O1xuXG4gICAgaW5wdXRTdHIgPSBjb252ZXJ0RGF5UGVyaW9kKGlucHV0U3RyKTtcbiAgICBpbnB1dFN0ciA9IGNvbnZlcnRBbVBtKGlucHV0U3RyKTtcblxuICAgIHJldHVybiBpbnB1dFN0ci5yZXBsYWNlKC9cXGJhdFxcYi9pLCAnJykudHJpbSgpO1xufVxuIl19","/** Generate range of given lengths using given function. */\nexport function range(length, mapFn) {\n return Array.from(new Array(length)).map((_, index) => mapFn(index));\n}\n/** Adds 0 if number is less then 10 */\nexport function _leftPad(n) {\n return n === n % 10 ? `0${n}` : `${n}`;\n}\n/** Converts date to ISO8601 */\nexport function toIso8601(fdDate) {\n return [\n [fdDate.year, _leftPad(fdDate.month), _leftPad(fdDate.day)].join('-'),\n 'T',\n [_leftPad(fdDate.hour), _leftPad(fdDate.minute), _leftPad(fdDate.second)].join(':')\n ].join('');\n}\n/**\n * @param params e.g. { year: 2020, month: 1, day: 1, hour: 0, minute: 0, second: 0 }\n */\nexport function isValidByParams(params) {\n const { year, month, day, hour, minute, second } = params;\n if (!undefinedOrInRange(month, 1, 12) ||\n !undefinedOrInRange(day, 1, 31) ||\n !undefinedOrInRange(hour, 0, 23) ||\n !undefinedOrInRange(minute, 0, 59) ||\n !undefinedOrInRange(second, 0, 59)) {\n return false;\n }\n if (!isNaN(year) && !isNaN(month) && day != null && !isNaN(day)) {\n const tempDate = new Date(year, month - 1, day);\n if (tempDate.getMonth() + 1 !== month) {\n return false;\n }\n }\n const date = new Date(year, month - 1, day, hour, minute, second);\n return !Number.isNaN(date.getTime());\n}\nfunction undefinedOrInRange(value, from, to) {\n return value == null || (value >= from && value <= to);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCxNQUFNLFVBQVUsS0FBSyxDQUFJLE1BQWMsRUFBRSxLQUEyQjtJQUNoRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRUQsdUNBQXVDO0FBQ3ZDLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBUztJQUM5QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQU96QjtJQUNHLE9BQU87UUFDSCxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNyRSxHQUFHO1FBQ0gsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7S0FDdEYsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BTy9CO0lBQ0csTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzFELElBQ0ksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQy9CLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQ3BDLENBQUM7UUFDQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BDLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBeUIsRUFBRSxJQUFZLEVBQUUsRUFBVTtJQUMzRSxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEdlbmVyYXRlIHJhbmdlIG9mIGdpdmVuIGxlbmd0aHMgdXNpbmcgZ2l2ZW4gZnVuY3Rpb24uICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZ2U8VD4obGVuZ3RoOiBudW1iZXIsIG1hcEZuOiAoaW5kZXg6IG51bWJlcikgPT4gVCk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IEFycmF5KGxlbmd0aCkpLm1hcCgoXywgaW5kZXgpID0+IG1hcEZuKGluZGV4KSk7XG59XG5cbi8qKiBBZGRzIDAgaWYgbnVtYmVyIGlzIGxlc3MgdGhlbiAxMCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9sZWZ0UGFkKG46IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG4gPT09IG4gJSAxMCA/IGAwJHtufWAgOiBgJHtufWA7XG59XG5cbi8qKiBDb252ZXJ0cyBkYXRlIHRvIElTTzg2MDEgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0lzbzg2MDEoZmREYXRlOiB7XG4gICAgeWVhcjogbnVtYmVyO1xuICAgIG1vbnRoOiBudW1iZXI7XG4gICAgZGF5OiBudW1iZXI7XG4gICAgaG91cjogbnVtYmVyO1xuICAgIG1pbnV0ZTogbnVtYmVyO1xuICAgIHNlY29uZDogbnVtYmVyO1xufSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgW2ZkRGF0ZS55ZWFyLCBfbGVmdFBhZChmZERhdGUubW9udGgpLCBfbGVmdFBhZChmZERhdGUuZGF5KV0uam9pbignLScpLFxuICAgICAgICAnVCcsXG4gICAgICAgIFtfbGVmdFBhZChmZERhdGUuaG91ciksIF9sZWZ0UGFkKGZkRGF0ZS5taW51dGUpLCBfbGVmdFBhZChmZERhdGUuc2Vjb25kKV0uam9pbignOicpXG4gICAgXS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcGFyYW1zIGUuZy4geyB5ZWFyOiAyMDIwLCBtb250aDogMSwgZGF5OiAxLCBob3VyOiAwLCBtaW51dGU6IDAsIHNlY29uZDogMCB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQnlQYXJhbXMocGFyYW1zOiB7XG4gICAgeWVhcjogbnVtYmVyO1xuICAgIG1vbnRoOiBudW1iZXI7XG4gICAgZGF5PzogbnVtYmVyO1xuICAgIGhvdXI/OiBudW1iZXI7XG4gICAgbWludXRlPzogbnVtYmVyO1xuICAgIHNlY29uZD86IG51bWJlcjtcbn0pOiBib29sZWFuIHtcbiAgICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIH0gPSBwYXJhbXM7XG4gICAgaWYgKFxuICAgICAgICAhdW5kZWZpbmVkT3JJblJhbmdlKG1vbnRoLCAxLCAxMikgfHxcbiAgICAgICAgIXVuZGVmaW5lZE9ySW5SYW5nZShkYXksIDEsIDMxKSB8fFxuICAgICAgICAhdW5kZWZpbmVkT3JJblJhbmdlKGhvdXIsIDAsIDIzKSB8fFxuICAgICAgICAhdW5kZWZpbmVkT3JJblJhbmdlKG1pbnV0ZSwgMCwgNTkpIHx8XG4gICAgICAgICF1bmRlZmluZWRPckluUmFuZ2Uoc2Vjb25kLCAwLCA1OSlcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWlzTmFOKHllYXIpICYmICFpc05hTihtb250aCkgJiYgZGF5ICE9IG51bGwgJiYgIWlzTmFOKGRheSkpIHtcbiAgICAgICAgY29uc3QgdGVtcERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gICAgICAgIGlmICh0ZW1wRGF0ZS5nZXRNb250aCgpICsgMSAhPT0gbW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTtcbiAgICByZXR1cm4gIU51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSk7XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZE9ySW5SYW5nZSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCAodmFsdWUgPj0gZnJvbSAmJiB2YWx1ZSA8PSB0byk7XG59XG4iXX0=","import { INVALID_DATE_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { isValidByParams, toIso8601 } from './fd-date.utils';\n/**\n * FdDate class is used to represent date and time.\n *\n * It's a simplified analog of native Date instance.\n * It gives some convenience methods to work with date or time data.\n *\n */\nexport class FdDate {\n /**\n * Create FdDate\n * @param year e.g. 2020\n * @param month 1 = January, 12 = December\n * @param day 1 - 31\n * @param hour 0 - 23\n * @param minute 0 - 59\n * @param second 0 - 59\n */\n constructor(year, month = 1, day = 1, hour = 0, minute = 0, second = 0) {\n if (year === undefined) {\n return FdDate.getNow();\n }\n year = Number.parseInt(year + '', 10);\n month = Number.parseInt(month + '', 10);\n day = Number.parseInt(day + '', 10);\n hour = Number.parseInt(hour + '', 10);\n minute = Number.parseInt(minute + '', 10);\n second = Number.parseInt(second + '', 10);\n this._isValid = isValidByParams({\n year,\n month,\n day,\n hour,\n minute,\n second\n });\n this.year = this._isValid ? year : NaN;\n this.month = this._isValid ? month : NaN;\n this.day = this._isValid ? day : NaN;\n this.hour = this._isValid ? hour : NaN;\n this.minute = this._isValid ? minute : NaN;\n this.second = this._isValid ? second : NaN;\n return this;\n }\n /**\n * Create FdDate instance of the current moment\n */\n static getNow() {\n return FdDate.getFdDateByDate(new Date());\n }\n /**\n * Gets today's FdDate where hour, minute and second is set to 0\n */\n static getToday() {\n return FdDate.getNow().setTime(0, 0, 0);\n }\n /**\n * Convert js date object to FdDate model\n */\n static getFdDateByDate(date) {\n return new FdDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n }\n /**\n * Set hour, minute and second data\n * @param hour\n * @param minute\n * @param second\n */\n setTime(hour, minute, second) {\n this._isValid = isValidByParams({\n year: this.year,\n month: this.month,\n day: this.day,\n hour,\n minute,\n second\n });\n if (!this._isValid) {\n this.hour = NaN;\n this.minute = NaN;\n this.second = NaN;\n }\n else {\n this.hour = hour || hour === 0 ? hour : this.hour;\n this.minute = minute || minute === 0 ? minute : this.minute;\n this.second = second || second === 0 ? second : this.second;\n }\n return this;\n }\n /**\n * Get amount of milliseconds from 01.01.1970\n */\n getTimeStamp() {\n return this.toDate().getTime();\n }\n /**\n * Get number of weekday ex. Sunday = 1, Monday = 2, Tuesday = 3 etc.\n */\n getDayOfWeek() {\n return this.toDate().getDay() + 1;\n }\n /**\n * Get native date object from FdDate.\n */\n toDate() {\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isDateValid()) {\n return new Date(NaN);\n }\n return new Date(this.year, this.month - 1, this.day, this.hour, this.minute, this.second);\n }\n /**\n * Method that checks validity of current FdDate instance.\n */\n isDateValid() {\n return this instanceof FdDate && this._isValid;\n }\n /**\n * Get string representation in yyyy-mm-ddThh:mm:ss format\n */\n toString() {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this);\n }\n /**\n * The valueOf() method returns the primitive value of a FdDate.\n * Returns: The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date.\n */\n valueOf() {\n return this.getTimeStamp();\n }\n /**\n * Get date string in yyyy-mm-dd format\n */\n toDateString() {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this).split('T')[0];\n }\n /**\n * Get time string in hh:mm:ss format\n */\n toTimeString() {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this).split('T')[1];\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLE1BQU07SUFxQ2Y7Ozs7Ozs7O09BUUc7SUFDSCxZQUNJLElBQWEsRUFDYixRQUFnQixDQUFDLEVBQ2pCLE1BQWMsQ0FBQyxFQUNmLE9BQWUsQ0FBQyxFQUNoQixTQUFpQixDQUFDLEVBQ2xCLFNBQWlCLENBQUM7UUFFbEIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckIsT0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FB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Q0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDdEIsT0FBTyxrQkFBa0IsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sa0JBQWtCLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU5WQUxJRF9EQVRFX0VSUk9SIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgaXNWYWxpZEJ5UGFyYW1zLCB0b0lzbzg2MDEgfSBmcm9tICcuL2ZkLWRhdGUudXRpbHMnO1xuXG4vKipcbiAqIEZkRGF0ZSBjbGFzcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBkYXRlIGFuZCB0aW1lLlxuICpcbiAqIEl0J3MgYSBzaW1wbGlmaWVkIGFuYWxvZyBvZiBuYXRpdmUgRGF0ZSBpbnN0YW5jZS5cbiAqIEl0IGdpdmVzIHNvbWUgY29udmVuaWVuY2UgbWV0aG9kcyB0byB3b3JrIHdpdGggZGF0ZSBvciB0aW1lIGRhdGEuXG4gKlxuICovXG5leHBvcnQgY2xhc3MgRmREYXRlIHtcbiAgICAvKipcbiAgICAgKiBUaGUgeWVhciBvZiB0aGUgZGF0ZS5cbiAgICAgKi9cbiAgICB5ZWFyOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbW9udGggb2YgdGhlIGRhdGUuIDEgPSBKYW51YXJ5LCAxMiA9IERlY2VtYmVyLlxuICAgICAqL1xuICAgIG1vbnRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBEYXkgb2YgdGhlIGRhdGUuIFN0YXJ0cyBhdCAxLlxuICAgICAqL1xuICAgIGRheTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSBob3Vycy4gMCAtIDIzLlxuICAgICAqL1xuICAgIGhvdXI6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIERhdGUgbWludXRlcy4gMCAtIDU5LlxuICAgICAqL1xuICAgIG1pbnV0ZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSBzZWNvbmRzLiAwIC0gNTkuXG4gICAgICovXG4gICAgc2Vjb25kOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0aW9uIHN0YXRlXG4gICAgICovXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1ZhbGlkOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEZkRGF0ZVxuICAgICAqIEBwYXJhbSB5ZWFyIGUuZy4gMjAyMFxuICAgICAqIEBwYXJhbSBtb250aCAxID0gSmFudWFyeSwgMTIgPSBEZWNlbWJlclxuICAgICAqIEBwYXJhbSBkYXkgMSAtIDMxXG4gICAgICogQHBhcmFtIGhvdXIgMCAtIDIzXG4gICAgICogQHBhcmFtIG1pbnV0ZSAwIC0gNTlcbiAgICAgKiBAcGFyYW0gc2Vjb25kIDAgLSA1OVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICB5ZWFyPzogbnVtYmVyLFxuICAgICAgICBtb250aDogbnVtYmVyID0gMSxcbiAgICAgICAgZGF5OiBudW1iZXIgPSAxLFxuICAgICAgICBob3VyOiBudW1iZXIgPSAwLFxuICAgICAgICBtaW51dGU6IG51bWJlciA9IDAsXG4gICAgICAgIHNlY29uZDogbnVtYmVyID0gMFxuICAgICkge1xuICAgICAgICBpZiAoeWVhciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmREYXRlLmdldE5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgeWVhciA9IE51bWJlci5wYXJzZUludCh5ZWFyICsgJycsIDEwKTtcbiAgICAgICAgbW9udGggPSBOdW1iZXIucGFyc2VJbnQobW9udGggKyAnJywgMTApO1xuICAgICAgICBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF5ICsgJycsIDEwKTtcbiAgICAgICAgaG91ciA9IE51bWJlci5wYXJzZUludChob3VyICsgJycsIDEwKTtcbiAgICAgICAgbWludXRlID0gTnVtYmVyLnBhcnNlSW50KG1pbnV0ZSArICcnLCAxMCk7XG4gICAgICAgIHNlY29uZCA9IE51bWJlci5wYXJzZUludChzZWNvbmQgKyAnJywgMTApO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkQnlQYXJhbXMoe1xuICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgIG1vbnRoLFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgaG91cixcbiAgICAgICAgICAgIG1pbnV0ZSxcbiAgICAgICAgICAgIHNlY29uZFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnllYXIgPSB0aGlzLl9pc1ZhbGlkID8geWVhciA6IE5hTjtcbiAgICAgICAgdGhpcy5tb250aCA9IHRoaXMuX2lzVmFsaWQgPyBtb250aCA6IE5hTjtcbiAgICAgICAgdGhpcy5kYXkgPSB0aGlzLl9pc1ZhbGlkID8gZGF5IDogTmFOO1xuICAgICAgICB0aGlzLmhvdXIgPSB0aGlzLl9pc1ZhbGlkID8gaG91ciA6IE5hTjtcbiAgICAgICAgdGhpcy5taW51dGUgPSB0aGlzLl9pc1ZhbGlkID8gbWludXRlIDogTmFOO1xuICAgICAgICB0aGlzLnNlY29uZCA9IHRoaXMuX2lzVmFsaWQgPyBzZWNvbmQgOiBOYU47XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEZkRGF0ZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCBtb21lbnRcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0Tm93KCk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBGZERhdGUuZ2V0RmREYXRlQnlEYXRlKG5ldyBEYXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdG9kYXkncyBGZERhdGUgd2hlcmUgaG91ciwgbWludXRlIGFuZCBzZWNvbmQgaXMgc2V0IHRvIDBcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0VG9kYXkoKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIEZkRGF0ZS5nZXROb3coKS5zZXRUaW1lKDAsIDAsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBDb252ZXJ0IGpzIGRhdGUgb2JqZWN0IHRvIEZkRGF0ZSBtb2RlbFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRGZERhdGVCeURhdGUoZGF0ZTogRGF0ZSk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRmREYXRlKFxuICAgICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgICAgICAgZGF0ZS5nZXRIb3VycygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNaW51dGVzKCksXG4gICAgICAgICAgICBkYXRlLmdldFNlY29uZHMoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBob3VyLCBtaW51dGUgYW5kIHNlY29uZCBkYXRhXG4gICAgICogQHBhcmFtIGhvdXJcbiAgICAgKiBAcGFyYW0gbWludXRlXG4gICAgICogQHBhcmFtIHNlY29uZFxuICAgICAqL1xuICAgIHNldFRpbWUoaG91cjogbnVtYmVyLCBtaW51dGU/OiBudW1iZXIsIHNlY29uZD86IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkQnlQYXJhbXMoe1xuICAgICAgICAgICAgeWVhcjogdGhpcy55ZWFyLFxuICAgICAgICAgICAgbW9udGg6IHRoaXMubW9udGgsXG4gICAgICAgICAgICBkYXk6IHRoaXMuZGF5LFxuICAgICAgICAgICAgaG91cixcbiAgICAgICAgICAgIG1pbnV0ZSxcbiAgICAgICAgICAgIHNlY29uZFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaG91ciA9IE5hTjtcbiAgICAgICAgICAgIHRoaXMubWludXRlID0gTmFOO1xuICAgICAgICAgICAgdGhpcy5zZWNvbmQgPSBOYU47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhvdXIgPSBob3VyIHx8IGhvdXIgPT09IDAgPyBob3VyIDogdGhpcy5ob3VyO1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSBtaW51dGUgfHwgbWludXRlID09PSAwID8gbWludXRlIDogdGhpcy5taW51dGU7XG4gICAgICAgICAgICB0aGlzLnNlY29uZCA9IHNlY29uZCB8fCBzZWNvbmQgPT09IDAgPyBzZWNvbmQgOiB0aGlzLnNlY29uZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIGZyb20gMDEuMDEuMTk3MFxuICAgICAqL1xuICAgIGdldFRpbWVTdGFtcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUoKS5nZXRUaW1lKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IG51bWJlciBvZiB3ZWVrZGF5IGV4LiBTdW5kYXkgPSAxLCBNb25kYXkgPSAyLCBUdWVzZGF5ID0gMyBldGMuXG4gICAgICovXG4gICAgZ2V0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLmdldERheSgpICsgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgbmF0aXZlIGRhdGUgb2JqZWN0IGZyb20gRmREYXRlLlxuICAgICAqL1xuICAgIHRvRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgLy8gV2UgaGF2ZSBzdHJpY3RlciB2YWxpZGF0aW9uIHJ1bGVzIHRoYW4gRGF0ZSBvYmplY3QuXG4gICAgICAgIC8vIEZvciBleGFtcGxlLCBEYXRlIGFsbG93cyB2YWx1ZXMgZm9yIG1vbnRoPTEwMCBvciBmb3IgZGF5PTEwMC5cbiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIGRvIHRoaXMgdHJpY2sgZm9yIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgdmFsaWRhdGlvbiBzdGF0dXNcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGggLSAxLCB0aGlzLmRheSwgdGhpcy5ob3VyLCB0aGlzLm1pbnV0ZSwgdGhpcy5zZWNvbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrcyB2YWxpZGl0eSBvZiBjdXJyZW50IEZkRGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBpc0RhdGVWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBGZERhdGUgJiYgdGhpcy5faXNWYWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGluIHl5eXktbW0tZGRUaGg6bW06c3MgZm9ybWF0XG4gICAgICovXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0RBVEVfRVJST1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnllYXIgfHwgIXRoaXMubW9udGggfHwgIXRoaXMuZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Jc284NjAxKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZU9mKCkgbWV0aG9kIHJldHVybnMgdGhlIHByaW1pdGl2ZSB2YWx1ZSBvZiBhIEZkRGF0ZS5cbiAgICAgKiBSZXR1cm5zOiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQyBhbmQgdGhlIGdpdmVuIGRhdGUuXG4gICAgICovXG4gICAgdmFsdWVPZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUaW1lU3RhbXAoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgZGF0ZSBzdHJpbmcgaW4geXl5eS1tbS1kZCBmb3JtYXRcbiAgICAgKi9cbiAgICB0b0RhdGVTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0RBVEVfRVJST1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnllYXIgfHwgIXRoaXMubW9udGggfHwgIXRoaXMuZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Jc284NjAxKHRoaXMpLnNwbGl0KCdUJylbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRpbWUgc3RyaW5nIGluIGhoOm1tOnNzIGZvcm1hdFxuICAgICAqL1xuICAgIHRvVGltZVN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfREFURV9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMueWVhciB8fCAhdGhpcy5tb250aCB8fCAhdGhpcy5kYXkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9Jc284NjAxKHRoaXMpLnNwbGl0KCdUJylbMV07XG4gICAgfVxufVxuIl19","const dateInput = { year: 'numeric', month: 'numeric', day: 'numeric' };\nconst timeInput = { hour: 'numeric', minute: '2-digit' };\nconst dateTimeInput = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit'\n};\nexport const FD_DATETIME_FORMATS = {\n parse: {\n dateInput,\n timeInput,\n dateTimeInput\n },\n display: {\n dateInput,\n timeInput,\n dateTimeInput,\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthA11yLabel: { month: 'long', year: 'numeric' },\n yearA11yLabel: { year: 'numeric' }\n },\n rangeDelimiter: ' - '\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS1mb3JtYXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2ZkLWRhdGUtZm9ybWF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDeEUsTUFBTSxTQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUN6RCxNQUFNLGFBQWEsR0FBRztJQUNsQixJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxTQUFTO0lBQ2hCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsU0FBUztDQUNwQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQW9CO0lBQ2hELEtBQUssRUFBRTtRQUNILFNBQVM7UUFDVCxTQUFTO1FBQ1QsYUFBYTtLQUNoQjtJQUNELE9BQU8sRUFBRTtRQUNMLFNBQVM7UUFDVCxTQUFTO1FBQ1QsYUFBYTtRQUViLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ2pFLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtRQUNsRCxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0tBQ3JDO0lBQ0QsY0FBYyxFQUFFLEtBQUs7Q0FDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVUaW1lRm9ybWF0cyB9IGZyb20gJy4vZGF0ZXRpbWUtZm9ybWF0cyc7XG5cbmNvbnN0IGRhdGVJbnB1dCA9IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ251bWVyaWMnLCBkYXk6ICdudW1lcmljJyB9O1xuY29uc3QgdGltZUlucHV0ID0geyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH07XG5jb25zdCBkYXRlVGltZUlucHV0ID0ge1xuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ251bWVyaWMnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICBtaW51dGU6ICcyLWRpZ2l0J1xufTtcblxuZXhwb3J0IGNvbnN0IEZEX0RBVEVUSU1FX0ZPUk1BVFM6IERhdGVUaW1lRm9ybWF0cyA9IHtcbiAgICBwYXJzZToge1xuICAgICAgICBkYXRlSW5wdXQsXG4gICAgICAgIHRpbWVJbnB1dCxcbiAgICAgICAgZGF0ZVRpbWVJbnB1dFxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQsXG4gICAgICAgIHRpbWVJbnB1dCxcbiAgICAgICAgZGF0ZVRpbWVJbnB1dCxcblxuICAgICAgICBkYXRlQTExeUxhYmVsOiB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICdsb25nJywgZGF5OiAnbnVtZXJpYycgfSxcbiAgICAgICAgbW9udGhBMTF5TGFiZWw6IHsgbW9udGg6ICdsb25nJywgeWVhcjogJ251bWVyaWMnIH0sXG4gICAgICAgIHllYXJBMTF5TGFiZWw6IHsgeWVhcjogJ251bWVyaWMnIH1cbiAgICB9LFxuICAgIHJhbmdlRGVsaW1pdGVyOiAnIC0gJ1xufTtcbiJdfQ==","import { Platform } from '@angular/cdk/platform';\nimport { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\nimport { INVALID_DATE_ERROR, LETTERS_UNICODE_RANGE } from '@fundamental-ngx/cdk/utils';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { FdDate } from './fd-date';\nimport { range, toIso8601 } from './fd-date.utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/platform\";\nconst AM_DAY_PERIOD_DEFAULT = 'AM';\nconst PM_DAY_PERIOD_DEFAULT = 'PM';\n/**\n * DatetimeAdapter implementation based on FdDate.\n *\n * This uses FdDate as a date model and relies on Intl.DateTimeFormat\n * for formatting and translation purposes.\n *\n */\nexport class FdDatetimeAdapter extends DatetimeAdapter {\n /** @hidden */\n constructor(localeId, platform) {\n super();\n super.setLocale(localeId);\n this._fixYearsRangeIssue = platform.TRIDENT || platform.EDGE;\n }\n /** Get year */\n getYear(date) {\n return date.year;\n }\n /** Get month */\n getMonth(date) {\n return date.month;\n }\n /** Get date */\n getDate(date) {\n return date.day;\n }\n /** Get day of week */\n getDayOfWeek(date) {\n return this._createDateInstanceByFdDate(date).getDay() + 1;\n }\n /** Get hours */\n getHours(date) {\n return date.hour;\n }\n /** Get minutes */\n getMinutes(date) {\n return date.minute;\n }\n /** Get seconds */\n getSeconds(date) {\n return date.second;\n }\n /** Get week number */\n getWeekNumber(fdDate) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n const firstWeek = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 + Math.round(((date.getTime() - firstWeek.getTime()) / 86400000 - 3 + ((firstWeek.getDay() + 6) % 7)) / 7));\n }\n /** Get month names */\n getMonthNames(style) {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, (i) => this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, i, 1))));\n }\n /** Get date names */\n getDateNames() {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, (i) => this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1))));\n }\n /** Get day of week names */\n getDayOfWeekNames(style) {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, (i) => this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1))));\n }\n /** Get year name */\n getYearName(date) {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(dateTimeFormat, dateInstance));\n }\n /** Get week name */\n getWeekName(date) {\n const weekNumber = this.getWeekNumber(date);\n return weekNumber.toLocaleString(this.locale);\n }\n /** Get hour names */\n getHourNames({ meridian, twoDigit }) {\n return range(24, (hour) => {\n if (meridian) {\n hour = hour === 0 || hour === 12 ? 12 : hour % 12;\n }\n return hour.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n /** Get minute names */\n getMinuteNames({ twoDigit }) {\n return range(60, (minute) => minute.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 }));\n }\n /** Get second names */\n getSecondNames({ twoDigit }) {\n return range(60, (second) => second.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 }));\n }\n /** Get day period names */\n getDayPeriodNames() {\n const DEFAULT_PERIODS = [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n const formatter = new Intl.DateTimeFormat(this.locale, {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true\n });\n try {\n const am = formatter.formatToParts(new Date(2020, 0, 1, 6)).find(({ type }) => type === 'dayPeriod')?.value;\n const pm = formatter\n .formatToParts(new Date(2020, 0, 1, 16))\n .find(({ type }) => type === 'dayPeriod')?.value;\n return am && pm ? [am, pm] : DEFAULT_PERIODS;\n }\n catch {\n const dayPeriodRegexp = new RegExp(`(${LETTERS_UNICODE_RANGE}+\\\\.*)+`, 'g');\n const amRegExpMatch = formatter.format(new Date(2020, 0, 1, 6)).match(dayPeriodRegexp);\n const pmRegExpMatch = formatter.format(new Date(2020, 0, 1, 16)).match(dayPeriodRegexp);\n return amRegExpMatch && pmRegExpMatch\n ? [amRegExpMatch[0], pmRegExpMatch[0]]\n : [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n }\n }\n /** Set hours */\n setHours(date, hours) {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setHours(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n /** Set minutes */\n setMinutes(date, hours) {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setMinutes(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n /** Set seconds */\n setSeconds(date, hours) {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setSeconds(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n /** Get first day of week */\n getFirstDayOfWeek() {\n // can't retrieve this info from Intl object or Date object, default to Sunday.\n return 0;\n }\n /** Get number of days in a month */\n getNumDaysInMonth(fdDate) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date.getDate();\n }\n /** Create a date object */\n createDate(year, month = 1, date = 1) {\n return new FdDate(year, month, date);\n }\n /** Get a today date object */\n today() {\n return FdDate.getToday();\n }\n /** Get a now date object */\n now() {\n return FdDate.getNow();\n }\n /** Parse any value to date object */\n parse(value, parseFormat = {}) {\n if (!value && value !== 0) {\n return null;\n }\n if (value instanceof FdDate) {\n return this.clone(value);\n }\n /**\n * We have no way using the native JS Date to set the parse format or locale,\n * so we ignore these parameters.\n */\n let date = new Date(Date.parse(value));\n if (typeof value === 'number') {\n date = new Date(value);\n }\n // Check if we are dealing with a time string\n if (Number.isNaN(date.valueOf()) &&\n typeof value === 'string' &&\n !parseFormat.year &&\n !parseFormat.day &&\n !parseFormat.month &&\n parseFormat.hour) {\n date = this._parseTimeString(value);\n }\n return this._createFdDateFromDateInstance(date);\n }\n /** Format date object to string */\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n return INVALID_DATE_ERROR;\n }\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._fixYearsRangeIssue && (date.year < 1 || date.year > 9999)) {\n date = this.clone(date);\n date.year = Math.max(1, Math.min(9999, date.year));\n }\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n return displayFormat.dayPeriod\n ? this._formatWithDayPeriod(date, displayFormat)\n : this._formatWithIntl(date, displayFormat);\n }\n /** Add years to a date */\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n /** Add months to a date */\n addCalendarMonths(fdDate, months) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setMonth(date.getMonth() + months);\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n if (date.getDate() !== fdDate.day) {\n date.setDate(0);\n }\n return this._createFdDateFromDateInstance(date);\n }\n /** Add days to a date */\n addCalendarDays(fdDate, days) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setDate(date.getDate() + days);\n return this._createFdDateFromDateInstance(date);\n }\n /** Clone a date object */\n clone(date) {\n return new FdDate(date.year, date.month, date.day, date.hour, date.minute, date.second);\n }\n /** Check if date object is valid */\n isValid(date) {\n if (!(date instanceof FdDate)) {\n return false;\n }\n return date.isDateValid();\n }\n /** Check if date between given dates */\n isBetween(dateToCheck, startDate, endDate) {\n const date = this._createDateInstanceByFdDate(dateToCheck);\n const start = this._createDateInstanceByFdDate(startDate);\n const end = this._createDateInstanceByFdDate(endDate);\n return date.getTime() > start.getTime() && date.getTime() < end.getTime();\n }\n /** Check if dates are equal */\n datesEqual(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n // skip time value\n const date1Str = this.toIso8601(date1).split('T')[0];\n const date2Str = this.toIso8601(date2).split('T')[0];\n return date1Str === date2Str;\n }\n /** Check if dates and time are equal */\n dateTimesEqual(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return this.toIso8601(date1) === this.toIso8601(date2);\n }\n /** Format date object to ISO8601 string */\n toIso8601(fdDate) {\n return toIso8601(fdDate);\n }\n /** Check if a time format includes a day period */\n isTimeFormatIncludesDayPeriod(displayFormat) {\n if (typeof displayFormat?.hour12 === 'boolean') {\n return displayFormat.hour12;\n }\n const formattedDateNoPeriodOption = this.format(this.createDate(2020), displayFormat);\n const formattedDateWithPeriodOption = this.format(this.createDate(2020), { ...displayFormat, hour12: true });\n return formattedDateWithPeriodOption === formattedDateNoPeriodOption;\n }\n /** Check if a time format includes hours */\n isTimeFormatIncludesHours(displayFormat) {\n return typeof displayFormat?.hour === 'string';\n }\n /** Check if a time format includes minutes */\n isTimeFormatIncludesMinutes(displayFormat) {\n return typeof displayFormat?.minute === 'string';\n }\n /** Check if a time format includes seconds */\n isTimeFormatIncludesSeconds(displayFormat) {\n return typeof displayFormat?.second === 'string';\n }\n /** Format with custom pattern including day period names */\n _formatWithDayPeriod(date, displayFormat) {\n const formattedTime = this._formatWithIntl(date, { ...displayFormat, dayPeriod: undefined });\n const dayPeriodName = this._getDayPeriodName(date);\n return this._insertDayPeriod(formattedTime, dayPeriodName, displayFormat);\n }\n /** Insert day period into the formatted string */\n _insertDayPeriod(formattedTime, dayPeriodName, displayFormat) {\n if (displayFormat.year || displayFormat.month || displayFormat.day) {\n return formattedTime\n .replace(/(\\d{1,2}:\\d{2})( [AP]M)?/, `$1 ${dayPeriodName}`)\n .replace(/,\\s*(\\d{1,2}:\\d{2})/, `, at $1 ${dayPeriodName}`);\n }\n else {\n return formattedTime.replace(/(\\d{1,2}:\\d{2}(:\\d{2})?)/, `$1 ${dayPeriodName}`);\n }\n }\n /** Get day period name based on the hour */\n _getDayPeriodName(date) {\n const hour = date.hour;\n if (hour < 6) {\n return 'coreTime.nightLabel';\n }\n else if (hour < 12) {\n return 'coreTime.morningLabel';\n }\n else if (hour < 18) {\n return 'coreTime.afternoonLabel';\n }\n else {\n return 'coreTime.eveningLabel';\n }\n }\n /** Format date using Intl.DateTimeFormat */\n _formatWithIntl(date, displayFormat) {\n const formatter = new Intl.DateTimeFormat(this.locale, displayFormat);\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(formatter, dateInstance));\n }\n /**\n * @hidden\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n _stripDirectionalityCharacters(str) {\n return str.replace(/[\\u200e\\u200f]/g, '').replace(/\\u202f/g, ' ');\n }\n /** @hidden */\n _format(formatter, date) {\n if (Number.isNaN(date.valueOf())) {\n return INVALID_DATE_ERROR;\n }\n date = this._createUTCDateInstance(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return formatter.format(date);\n }\n /**\n * @hidden\n * Create native Date instance from FdDate\n * @param date FdDate instance\n * @returns date Native date instance\n */\n _createDateInstanceByFdDate(fdDate) {\n const { year, month, day, hour, minute, second } = fdDate;\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isValid(fdDate)) {\n return new Date(NaN);\n }\n const date = new Date();\n date.setFullYear(year, month - 1, day);\n date.setHours(hour, minute, second, 0);\n return date;\n }\n /**\n * @hidden\n * Create native Date instance in UTC\n * @param year The year\n * @param month The month as a number between 0 and 11\n * @param day The date as a number between 1 and 31.\n * @param hours The hours as a number between 0 - 24\n * @param minutes The minutes as a number between 0 - 59\n * @param seconds The seconds as a number between 0 - 59\n * @param milliseconds The milliseconds as a number between 0 - 59\n */\n _createUTCDateInstance(year, month, day, hours = 0, minutes = 0, seconds = 0, milliseconds = 0) {\n const utcDate = new Date();\n utcDate.setUTCFullYear(year, month, day);\n utcDate.setUTCHours(hours, minutes, seconds, milliseconds);\n return utcDate;\n }\n /** @hidden */\n _createFdDateFromDateInstance(date) {\n return new FdDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n }\n /**\n * @hidden\n *\n * Since FdDatetimeAdapter can parse only \"en-US\" locale\n * there is no reason to create comprehensive time parse\n * that can understand plenty of locales.\n *\n * @param timeStr Time string to parse (E.g. '10:30 PM')\n * @returns date Native date instance\n *\n */\n _parseTimeString(timeStr) {\n /**\n * Date.parse('10:30 AM') doesn't work so we need do a trick\n * and prepend it by a date string.\n */\n const dateStr = new Intl.DateTimeFormat('en-GB').format(new Date());\n const dateTimeString = `${dateStr} ${timeStr}`;\n return new Date(Date.parse(dateTimeString));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapter, deps: [{ token: LOCALE_ID, optional: true }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: i1.Platform }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRldGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUVuRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQU1uQzs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBdUI7SUFJMUQsY0FBYztJQUNkLFlBQTJDLFFBQWdCLEVBQUUsUUFBa0I7UUFDM0UsS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDakUsQ0FBQztJQUtELGVBQWU7SUFDZixPQUFPLENBQUMsSUFBWTtRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixRQUFRLENBQUMsSUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIs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O0lBQ04sNkJBQTZCLENBQUMsSUFBVTtRQUM1QyxPQUFPLElBQUksTUFBTSxDQUNiLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFDbkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUNkLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FDcEIsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ssZ0JBQWdCLENBQUMsT0FBZTtRQUNwQzs7O1dBR0c7UUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLGNBQWMsR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMvQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDOzhHQWxmUSxpQkFBaUIsa0JBS00sU0FBUztrSEFMaEMsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkFNTSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIExPQ0FMRV9JRCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSU5WQUxJRF9EQVRFX0VSUk9SLCBMRVRURVJTX1VOSUNPREVfUkFOR0UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmltcG9ydCB7IEZkTGFuZ3VhZ2VLZXlJZGVudGlmaWVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJy4vZGF0ZXRpbWUtYWRhcHRlcic7XG5pbXBvcnQgeyBGZERhdGUgfSBmcm9tICcuL2ZkLWRhdGUnO1xuaW1wb3J0IHsgcmFuZ2UsIHRvSXNvODYwMSB9IGZyb20gJy4vZmQtZGF0ZS51dGlscyc7XG5cbmNvbnN0IEFNX0RBWV9QRVJJT0RfREVGQVVMVCA9ICdBTSc7XG5jb25zdCBQTV9EQVlfUEVSSU9EX0RFRkFVTFQgPSAnUE0nO1xuXG50eXBlIEN1c3RvbURhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IE9taXQ8SW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMsICdkYXlQZXJpb2QnPiAmIHtcbiAgICBkYXlQZXJpb2Q/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBEYXRldGltZUFkYXB0ZXIgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gRmREYXRlLlxuICpcbiAqIFRoaXMgdXNlcyBGZERhdGUgYXMgYSBkYXRlIG1vZGVsIGFuZCByZWxpZXMgb24gSW50bC5EYXRlVGltZUZvcm1hdFxuICogZm9yIGZvcm1hdHRpbmcgYW5kIHRyYW5zbGF0aW9uIHB1cnBvc2VzLlxuICpcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZkRGF0ZXRpbWVBZGFwdGVyIGV4dGVuZHMgRGF0ZXRpbWVBZGFwdGVyPEZkRGF0ZT4ge1xuICAgIC8qKiBXaGV0aGVyIHRvIGNsYW1wIHRoZSBkYXRlIGJldHdlZW4gMSBhbmQgOTk5OSB0byBhdm9pZCBJRSBhbmQgRWRnZSBlcnJvcnMuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZml4WWVhcnNSYW5nZUlzc3VlOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlSWQ6IHN0cmluZywgcGxhdGZvcm06IFBsYXRmb3JtKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHN1cGVyLnNldExvY2FsZShsb2NhbGVJZCk7XG4gICAgICAgIHRoaXMuX2ZpeFllYXJzUmFuZ2VJc3N1ZSA9IHBsYXRmb3JtLlRSSURFTlQgfHwgcGxhdGZvcm0uRURHRTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZyb21Ob3c/KGRhdGU6IEZkRGF0ZSk6IHN0cmluZztcblxuICAgIC8qKiBHZXQgeWVhciAqL1xuICAgIGdldFllYXIoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUueWVhcjtcbiAgICB9XG5cbiAgICAvKiogR2V0IG1vbnRoICovXG4gICAgZ2V0TW9udGgoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUubW9udGg7XG4gICAgfVxuXG4gICAgLyoqIEdldCBkYXRlICovXG4gICAgZ2V0RGF0ZShkYXRlOiBGZERhdGUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5kYXk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBkYXkgb2Ygd2VlayAqL1xuICAgIGdldERheU9mV2VlayhkYXRlOiBGZERhdGUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZGF0ZSkuZ2V0RGF5KCkgKyAxO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaG91cnMgKi9cbiAgICBnZXRIb3VycyhkYXRlOiBGZERhdGUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5ob3VyO1xuICAgIH1cblxuICAgIC8qKiBHZXQgbWludXRlcyAqL1xuICAgIGdldE1pbnV0ZXMoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUubWludXRlO1xuICAgIH1cblxuICAgIC8qKiBHZXQgc2Vjb25kcyAqL1xuICAgIGdldFNlY29uZHMoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuc2Vjb25kO1xuICAgIH1cblxuICAgIC8qKiBHZXQgd2VlayBudW1iZXIgKi9cbiAgICBnZXRXZWVrTnVtYmVyKGZkRGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGZkRGF0ZSk7XG5cbiAgICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMyAtICgoZGF0ZS5nZXREYXkoKSArIDYpICUgNykpO1xuXG4gICAgICAgIC8vIEphbnVhcnkgNCBpcyBhbHdheXMgaW4gd2VlayAxLlxuICAgICAgICBjb25zdCBmaXJzdFdlZWsgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDQpO1xuXG4gICAgICAgIC8vIEFkanVzdCB0byBUaHVyc2RheSBpbiB3ZWVrIDEgYW5kIGNvdW50IG51bWJlciBvZiB3ZWVrcyBmcm9tIGRhdGUgdG8gd2VlazEuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAxICsgTWF0aC5yb3VuZCgoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3RXZWVrLmdldFRpbWUoKSkgLyA4NjQwMDAwMCAtIDMgKyAoKGZpcnN0V2Vlay5nZXREYXkoKSArIDYpICUgNykpIC8gNylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IG1vbnRoIG5hbWVzICovXG4gICAgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBkYXRlVGltZUZvcm1hdCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7IG1vbnRoOiBzdHlsZSwgdGltZVpvbmU6ICd1dGMnIH0pO1xuICAgICAgICByZXR1cm4gcmFuZ2UoMTIsIChpKSA9PlxuICAgICAgICAgICAgdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBuZXcgRGF0ZSgyMDE3LCBpLCAxKSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBkYXRlIG5hbWVzICovXG4gICAgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgZGF0ZVRpbWVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwgeyBkYXk6ICdudW1lcmljJywgdGltZVpvbmU6ICd1dGMnIH0pO1xuICAgICAgICByZXR1cm4gcmFuZ2UoMzEsIChpKSA9PlxuICAgICAgICAgICAgdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZGF5IG9mIHdlZWsgbmFtZXMgKi9cbiAgICBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBkYXRlVGltZUZvcm1hdCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7IHdlZWtkYXk6IHN0eWxlLCB0aW1lWm9uZTogJ3V0YycgfSk7XG4gICAgICAgIHJldHVybiByYW5nZSg3LCAoaSkgPT5cbiAgICAgICAgICAgIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChkYXRlVGltZUZvcm1hdCwgbmV3IERhdGUoMjAxNywgMCwgaSArIDEpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHllYXIgbmFtZSAqL1xuICAgIGdldFllYXJOYW1lKGRhdGU6IEZkRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGVUaW1lRm9ybWF0ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnLCB0aW1lWm9uZTogJ3V0YycgfSk7XG4gICAgICAgIGNvbnN0IGRhdGVJbnN0YW5jZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGRhdGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBkYXRlSW5zdGFuY2UpKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHdlZWsgbmFtZSAqL1xuICAgIGdldFdlZWtOYW1lKGRhdGU6IEZkRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHdlZWtOdW1iZXIgPSB0aGlzLmdldFdlZWtOdW1iZXIoZGF0ZSk7XG4gICAgICAgIHJldHVybiB3ZWVrTnVtYmVyLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGhvdXIgbmFtZXMgKi9cbiAgICBnZXRIb3VyTmFtZXMoeyBtZXJpZGlhbiwgdHdvRGlnaXQgfTogeyB0d29EaWdpdDogYm9vbGVhbjsgbWVyaWRpYW46IGJvb2xlYW4gfSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlKDI0LCAoaG91cikgPT4ge1xuICAgICAgICAgICAgaWYgKG1lcmlkaWFuKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IGhvdXIgPT09IDAgfHwgaG91ciA9PT0gMTIgPyAxMiA6IGhvdXIgJSAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBob3VyLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlLCB7IG1pbmltdW1JbnRlZ2VyRGlnaXRzOiB0d29EaWdpdCA/IDIgOiAxIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogR2V0IG1pbnV0ZSBuYW1lcyAqL1xuICAgIGdldE1pbnV0ZU5hbWVzKHsgdHdvRGlnaXQgfTogeyB0d29EaWdpdDogYm9vbGVhbiB9KTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gcmFuZ2UoNjAsIChtaW51dGUpID0+IG1pbnV0ZS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSwgeyBtaW5pbXVtSW50ZWdlckRpZ2l0czogdHdvRGlnaXQgPyAyIDogMSB9KSk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBzZWNvbmQgbmFtZXMgKi9cbiAgICBnZXRTZWNvbmROYW1lcyh7IHR3b0RpZ2l0IH06IHsgdHdvRGlnaXQ6IGJvb2xlYW4gfSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlKDYwLCAoc2Vjb25kKSA9PiBzZWNvbmQudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgbWluaW11bUludGVnZXJEaWdpdHM6IHR3b0RpZ2l0ID8gMiA6IDEgfSkpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZGF5IHBlcmlvZCBuYW1lcyAqL1xuICAgIGdldERheVBlcmlvZE5hbWVzKCk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICAgICAgICBjb25zdCBERUZBVUxUX1BFUklPRFM6IFtzdHJpbmcsIHN0cmluZ10gPSBbQU1fREFZX1BFUklPRF9ERUZBVUxULCBQTV9EQVlfUEVSSU9EX0RFRkFVTFRdO1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7XG4gICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgICAgIGhvdXIxMjogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYW0gPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLCAwLCAxLCA2KSkuZmluZCgoeyB0eXBlIH0pID0+IHR5cGUgPT09ICdkYXlQZXJpb2QnKT8udmFsdWU7XG4gICAgICAgICAgICBjb25zdCBwbSA9IGZvcm1hdHRlclxuICAgICAgICAgICAgICAgIC5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKDIwMjAsIDAsIDEsIDE2KSlcbiAgICAgICAgICAgICAgICAuZmluZCgoeyB0eXBlIH0pID0+IHR5cGUgPT09ICdkYXlQZXJpb2QnKT8udmFsdWU7XG5cbiAgICAgICAgICAgIHJldHVybiBhbSAmJiBwbSA/IFthbSwgcG1dIDogREVGQVVMVF9QRVJJT0RTO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGNvbnN0IGRheVBlcmlvZFJlZ2V4cCA9IG5ldyBSZWdFeHAoYCgke0xFVFRFUlNfVU5JQ09ERV9SQU5HRX0rXFxcXC4qKStgLCAnZycpO1xuICAgICAgICAgICAgY29uc3QgYW1SZWdFeHBNYXRjaCA9IGZvcm1hdHRlci5mb3JtYXQobmV3IERhdGUoMjAyMCwgMCwgMSwgNikpLm1hdGNoKGRheVBlcmlvZFJlZ2V4cCk7XG4gICAgICAgICAgICBjb25zdCBwbVJlZ0V4cE1hdGNoID0gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDIwLCAwLCAxLCAxNikpLm1hdGNoKGRheVBlcmlvZFJlZ2V4cCk7XG5cbiAgICAgICAgICAgIHJldHVybiBhbVJlZ0V4cE1hdGNoICYmIHBtUmVnRXhwTWF0Y2hcbiAgICAgICAgICAgICAgICA/IFthbVJlZ0V4cE1hdGNoWzBdLCBwbVJlZ0V4cE1hdGNoWzBdXVxuICAgICAgICAgICAgICAgIDogW0FNX0RBWV9QRVJJT0RfREVGQVVMVCwgUE1fREFZX1BFUklPRF9ERUZBVUxUXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBTZXQgaG91cnMgKi9cbiAgICBzZXRIb3VycyhkYXRlOiBGZERhdGUsIGhvdXJzOiBudW1iZXIpOiBGZERhdGUge1xuICAgICAgICBjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShkYXRlKTtcbiAgICAgICAgZGF0ZUluc3RhbmNlLnNldEhvdXJzKGhvdXJzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZkRGF0ZUZyb21EYXRlSW5zdGFuY2UoZGF0ZUluc3RhbmNlKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IG1pbnV0ZXMgKi9cbiAgICBzZXRNaW51dGVzKGRhdGU6IEZkRGF0ZSwgaG91cnM6IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIGNvbnN0IGRhdGVJbnN0YW5jZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGRhdGUpO1xuICAgICAgICBkYXRlSW5zdGFuY2Uuc2V0TWludXRlcyhob3Vycyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGVJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBzZWNvbmRzICovXG4gICAgc2V0U2Vjb25kcyhkYXRlOiBGZERhdGUsIGhvdXJzOiBudW1iZXIpOiBGZERhdGUge1xuICAgICAgICBjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShkYXRlKTtcbiAgICAgICAgZGF0ZUluc3RhbmNlLnNldFNlY29uZHMoaG91cnMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRmREYXRlRnJvbURhdGVJbnN0YW5jZShkYXRlSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZmlyc3QgZGF5IG9mIHdlZWsgKi9cbiAgICBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xuICAgICAgICAvLyBjYW4ndCByZXRyaWV2ZSB0aGlzIGluZm8gZnJvbSBJbnRsIG9iamVjdCBvciBEYXRlIG9iamVjdCwgZGVmYXVsdCB0byBTdW5kYXkuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKiBHZXQgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCAqL1xuICAgIGdldE51bURheXNJbk1vbnRoKGZkRGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGZkRGF0ZSk7XG4gICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgMSk7XG4gICAgICAgIGRhdGUuc2V0RGF0ZSgwKTtcbiAgICAgICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBkYXRlIG9iamVjdCAqL1xuICAgIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aCA9IDEsIGRhdGUgPSAxKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGZERhdGUoeWVhciwgbW9udGgsIGRhdGUpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgYSB0b2RheSBkYXRlIG9iamVjdCAqL1xuICAgIHRvZGF5KCk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBGZERhdGUuZ2V0VG9kYXkoKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGEgbm93IGRhdGUgb2JqZWN0ICovXG4gICAgbm93KCk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBGZERhdGUuZ2V0Tm93KCk7XG4gICAgfVxuXG4gICAgLyoqIFBhcnNlIGFueSB2YWx1ZSB0byBkYXRlIG9iamVjdCAqL1xuICAgIHBhcnNlKHZhbHVlOiBhbnksIHBhcnNlRm9ybWF0OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KTogRmREYXRlIHwgbnVsbCB7XG4gICAgICAgIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlIGhhdmUgbm8gd2F5IHVzaW5nIHRoZSBuYXRpdmUgSlMgRGF0ZSB0byBzZXQgdGhlIHBhcnNlIGZvcm1hdCBvciBsb2NhbGUsXG4gICAgICAgICAqIHNvIHdlIGlnbm9yZSB0aGVzZSBwYXJhbWV0ZXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShEYXRlLnBhcnNlKHZhbHVlKSk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHRpbWUgc3RyaW5nXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIE51bWJlci5pc05hTihkYXRlLnZhbHVlT2YoKSkgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICFwYXJzZUZvcm1hdC55ZWFyICYmXG4gICAgICAgICAgICAhcGFyc2VGb3JtYXQuZGF5ICYmXG4gICAgICAgICAgICAhcGFyc2VGb3JtYXQubW9udGggJiZcbiAgICAgICAgICAgIHBhcnNlRm9ybWF0LmhvdXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBkYXRlID0gdGhpcy5fcGFyc2VUaW1lU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGUpO1xuICAgIH1cblxuICAgIC8qKiBGb3JtYXQgZGF0ZSBvYmplY3QgdG8gc3RyaW5nICovXG4gICAgZm9ybWF0KGRhdGU6IEZkRGF0ZSwgZGlzcGxheUZvcm1hdDogQ3VzdG9tRGF0ZVRpbWVGb3JtYXRPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0RBVEVfRVJST1I7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBJRSBhbmQgRWRnZSB0aGUgaTE4biBBUEkgd2lsbCB0aHJvdyBhIGhhcmQgZXJyb3IgdGhhdCBjYW4gY3Jhc2ggdGhlIGVudGlyZSBhcHBcbiAgICAgICAgLy8gaWYgd2UgYXR0ZW1wdCB0byBmb3JtYXQgYSBkYXRlIHdob3NlIHllYXIgaXMgbGVzcyB0aGFuIDEgb3IgZ3JlYXRlciB0aGFuIDk5OTkuXG4gICAgICAgIGlmICh0aGlzLl9maXhZZWFyc1JhbmdlSXNzdWUgJiYgKGRhdGUueWVhciA8IDEgfHwgZGF0ZS55ZWFyID4gOTk5OSkpIHtcbiAgICAgICAgICAgIGRhdGUgPSB0aGlzLmNsb25lKGRhdGUpO1xuICAgICAgICAgICAgZGF0ZS55ZWFyID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oOTk5OSwgZGF0ZS55ZWFyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZGlzcGxheUZvcm1hdCA9IHsgLi4uZGlzcGxheUZvcm1hdCwgdGltZVpvbmU6ICd1dGMnIH07XG5cbiAgICAgICAgcmV0dXJuIGRpc3BsYXlGb3JtYXQuZGF5UGVyaW9kXG4gICAgICAgICAgICA/IHRoaXMuX2Zvcm1hdFdpdGhEYXlQZXJpb2QoZGF0ZSwgZGlzcGxheUZvcm1hdClcbiAgICAgICAgICAgIDogdGhpcy5fZm9ybWF0V2l0aEludGwoZGF0ZSwgZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuXG4gICAgLyoqIEFkZCB5ZWFycyB0byBhIGRhdGUgKi9cbiAgICBhZGRDYWxlbmRhclllYXJzKGRhdGU6IEZkRGF0ZSwgeWVhcnM6IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZENhbGVuZGFyTW9udGhzKGRhdGUsIHllYXJzICogMTIpO1xuICAgIH1cblxuICAgIC8qKiBBZGQgbW9udGhzIHRvIGEgZGF0ZSAqL1xuICAgIGFkZENhbGVuZGFyTW9udGhzKGZkRGF0ZTogRmREYXRlLCBtb250aHM6IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShmZERhdGUpO1xuXG4gICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgbW9udGhzKTtcblxuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHdpbmQgdXAgaW4gdGhlIHdyb25nIG1vbnRoIGlmIHRoZSBvcmlnaW5hbCBtb250aCBoYXMgbW9yZSBkYXlzIHRoYW4gdGhlIG5ld1xuICAgICAgICAvLyBtb250aC4gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gZ28gdG8gdGhlIGxhc3QgZGF5IG9mIHRoZSBkZXNpcmVkIG1vbnRoLlxuICAgICAgICBpZiAoZGF0ZS5nZXREYXRlKCkgIT09IGZkRGF0ZS5kYXkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0RGF0ZSgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGUpO1xuICAgIH1cblxuICAgIC8qKiBBZGQgZGF5cyB0byBhIGRhdGUgKi9cbiAgICBhZGRDYWxlbmRhckRheXMoZmREYXRlOiBGZERhdGUsIGRheXM6IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShmZERhdGUpO1xuICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkYXlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZkRGF0ZUZyb21EYXRlSW5zdGFuY2UoZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIENsb25lIGEgZGF0ZSBvYmplY3QgKi9cbiAgICBjbG9uZShkYXRlOiBGZERhdGUpOiBGZERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IEZkRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5LCBkYXRlLmhvdXIsIGRhdGUubWludXRlLCBkYXRlLnNlY29uZCk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGRhdGUgb2JqZWN0IGlzIHZhbGlkICovXG4gICAgaXNWYWxpZChkYXRlOiBGZERhdGUpOiBkYXRlIGlzIEZkRGF0ZSB7XG4gICAgICAgIGlmICghKGRhdGUgaW5zdGFuY2VvZiBGZERhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuaXNEYXRlVmFsaWQoKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgZGF0ZSBiZXR3ZWVuIGdpdmVuIGRhdGVzICovXG4gICAgaXNCZXR3ZWVuKGRhdGVUb0NoZWNrOiBGZERhdGUsIHN0YXJ0RGF0ZTogRmREYXRlLCBlbmREYXRlOiBGZERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGRhdGVUb0NoZWNrKTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShzdGFydERhdGUpO1xuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShlbmREYXRlKTtcbiAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpID4gc3RhcnQuZ2V0VGltZSgpICYmIGRhdGUuZ2V0VGltZSgpIDwgZW5kLmdldFRpbWUoKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgZGF0ZXMgYXJlIGVxdWFsICovXG4gICAgZGF0ZXNFcXVhbChkYXRlMTogRmREYXRlLCBkYXRlMjogRmREYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghZGF0ZTEgfHwgIWRhdGUyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2tpcCB0aW1lIHZhbHVlXG4gICAgICAgIGNvbnN0IGRhdGUxU3RyID0gdGhpcy50b0lzbzg2MDEoZGF0ZTEpLnNwbGl0KCdUJylbMF07XG4gICAgICAgIGNvbnN0IGRhdGUyU3RyID0gdGhpcy50b0lzbzg2MDEoZGF0ZTIpLnNwbGl0KCdUJylbMF07XG4gICAgICAgIHJldHVybiBkYXRlMVN0ciA9PT0gZGF0ZTJTdHI7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGRhdGVzIGFuZCB0aW1lIGFyZSBlcXVhbCAqL1xuICAgIGRhdGVUaW1lc0VxdWFsKGRhdGUxOiBGZERhdGUsIGRhdGUyOiBGZERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFkYXRlMSB8fCAhZGF0ZTIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50b0lzbzg2MDEoZGF0ZTEpID09PSB0aGlzLnRvSXNvODYwMShkYXRlMik7XG4gICAgfVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCB0byBJU084NjAxIHN0cmluZyAqL1xuICAgIHRvSXNvODYwMShmZERhdGU6IEZkRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0b0lzbzg2MDEoZmREYXRlKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgYSB0aW1lIGZvcm1hdCBpbmNsdWRlcyBhIGRheSBwZXJpb2QgKi9cbiAgICBpc1RpbWVGb3JtYXRJbmNsdWRlc0RheVBlcmlvZChkaXNwbGF5Rm9ybWF0OiBDdXN0b21EYXRlVGltZUZvcm1hdE9wdGlvbnMpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0Py5ob3VyMTIgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlGb3JtYXQuaG91cjEyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGVOb1BlcmlvZE9wdGlvbiA9IHRoaXMuZm9ybWF0KHRoaXMuY3JlYXRlRGF0ZSgyMDIwKSwgZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGVXaXRoUGVyaW9kT3B0aW9uID0gdGhpcy5mb3JtYXQodGhpcy5jcmVhdGVEYXRlKDIwMjApLCB7IC4uLmRpc3BsYXlGb3JtYXQsIGhvdXIxMjogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGVXaXRoUGVyaW9kT3B0aW9uID09PSBmb3JtYXR0ZWREYXRlTm9QZXJpb2RPcHRpb247XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGEgdGltZSBmb3JtYXQgaW5jbHVkZXMgaG91cnMgKi9cbiAgICBpc1RpbWVGb3JtYXRJbmNsdWRlc0hvdXJzKGRpc3BsYXlGb3JtYXQ6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZGlzcGxheUZvcm1hdD8uaG91ciA9PT0gJ3N0cmluZyc7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGEgdGltZSBmb3JtYXQgaW5jbHVkZXMgbWludXRlcyAqL1xuICAgIGlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhkaXNwbGF5Rm9ybWF0OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGRpc3BsYXlGb3JtYXQ/Lm1pbnV0ZSA9PT0gJ3N0cmluZyc7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGEgdGltZSBmb3JtYXQgaW5jbHVkZXMgc2Vjb25kcyAqL1xuICAgIGlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhkaXNwbGF5Rm9ybWF0OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGRpc3BsYXlGb3JtYXQ/LnNlY29uZCA9PT0gJ3N0cmluZyc7XG4gICAgfVxuXG4gICAgLyoqIEZvcm1hdCB3aXRoIGN1c3RvbSBwYXR0ZXJuIGluY2x1ZGluZyBkYXkgcGVyaW9kIG5hbWVzICovXG4gICAgcHJpdmF0ZSBfZm9ybWF0V2l0aERheVBlcmlvZChkYXRlOiBGZERhdGUsIGRpc3BsYXlGb3JtYXQ6IEN1c3RvbURhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB0aGlzLl9mb3JtYXRXaXRoSW50bChkYXRlLCB7IC4uLmRpc3BsYXlGb3JtYXQsIGRheVBlcmlvZDogdW5kZWZpbmVkIH0pO1xuICAgICAgICBjb25zdCBkYXlQZXJpb2ROYW1lID0gdGhpcy5fZ2V0RGF5UGVyaW9kTmFtZShkYXRlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5faW5zZXJ0RGF5UGVyaW9kKGZvcm1hdHRlZFRpbWUsIGRheVBlcmlvZE5hbWUsIGRpc3BsYXlGb3JtYXQpO1xuICAgIH1cblxuICAgIC8qKiBJbnNlcnQgZGF5IHBlcmlvZCBpbnRvIHRoZSBmb3JtYXR0ZWQgc3RyaW5nICovXG4gICAgcHJpdmF0ZSBfaW5zZXJ0RGF5UGVyaW9kKFxuICAgICAgICBmb3JtYXR0ZWRUaW1lOiBzdHJpbmcsXG4gICAgICAgIGRheVBlcmlvZE5hbWU6IEZkTGFuZ3VhZ2VLZXlJZGVudGlmaWVyLFxuICAgICAgICBkaXNwbGF5Rm9ybWF0OiBDdXN0b21EYXRlVGltZUZvcm1hdE9wdGlvbnNcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGlzcGxheUZvcm1hdC55ZWFyIHx8IGRpc3BsYXlGb3JtYXQubW9udGggfHwgZGlzcGxheUZvcm1hdC5kYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyhcXGR7MSwyfTpcXGR7Mn0pKCBbQVBdTSk/LywgYCQxICR7ZGF5UGVyaW9kTmFtZX1gKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sXFxzKihcXGR7MSwyfTpcXGR7Mn0pLywgYCwgYXQgJDEgJHtkYXlQZXJpb2ROYW1lfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFRpbWUucmVwbGFjZSgvKFxcZHsxLDJ9OlxcZHsyfSg6XFxkezJ9KT8pLywgYCQxICR7ZGF5UGVyaW9kTmFtZX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBHZXQgZGF5IHBlcmlvZCBuYW1lIGJhc2VkIG9uIHRoZSBob3VyICovXG4gICAgcHJpdmF0ZSBfZ2V0RGF5UGVyaW9kTmFtZShkYXRlOiBGZERhdGUpOiBGZExhbmd1YWdlS2V5SWRlbnRpZmllciB7XG4gICAgICAgIGNvbnN0IGhvdXIgPSBkYXRlLmhvdXI7XG4gICAgICAgIGlmIChob3VyIDwgNikge1xuICAgICAgICAgICAgcmV0dXJuICdjb3JlVGltZS5uaWdodExhYmVsJztcbiAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgIHJldHVybiAnY29yZVRpbWUubW9ybmluZ0xhYmVsJztcbiAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgIHJldHVybiAnY29yZVRpbWUuYWZ0ZXJub29uTGFiZWwnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdjb3JlVGltZS5ldmVuaW5nTGFiZWwnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIHVzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQgKi9cbiAgICBwcml2YXRlIF9mb3JtYXRXaXRoSW50bChkYXRlOiBGZERhdGUsIGRpc3BsYXlGb3JtYXQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCBkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgY29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZGF0ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZm9ybWF0dGVyLCBkYXRlSW5zdGFuY2UpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU3RyaXAgb3V0IHVuaWNvZGUgTFRSIGFuZCBSVEwgY2hhcmFjdGVycy4gRWRnZSBhbmQgSUUgaW5zZXJ0IHRoZXNlIGludG8gZm9ybWF0dGVkIGRhdGVzIHdoaWxlXG4gICAgICogb3RoZXIgYnJvd3NlcnMgZG8gbm90LiBXZSByZW1vdmUgdGhlbSB0byBtYWtlIG91dHB1dCBjb25zaXN0ZW50IGFuZCBiZWNhdXNlIHRoZXkgaW50ZXJmZXJlIHdpdGhcbiAgICAgKiBkYXRlIHBhcnNpbmcuXG4gICAgICogQHBhcmFtIHN0ciBUaGUgc3RyaW5nIHRvIHN0cmlwIGRpcmVjdGlvbiBjaGFyYWN0ZXJzIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIHN0cmlwcGVkIHN0cmluZy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1xcdTIwMGVcXHUyMDBmXS9nLCAnJykucmVwbGFjZSgvXFx1MjAyZi9nLCAnICcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybWF0KGZvcm1hdHRlcjogSW50bC5EYXRlVGltZUZvcm1hdCwgZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oZGF0ZS52YWx1ZU9mKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9EQVRFX0VSUk9SO1xuICAgICAgICB9XG4gICAgICAgIGRhdGUgPSB0aGlzLl9jcmVhdGVVVENEYXRlSW5zdGFuY2UoXG4gICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICBkYXRlLmdldERhdGUoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0TWludXRlcygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRTZWNvbmRzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbGxpc2Vjb25kcygpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KGRhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDcmVhdGUgbmF0aXZlIERhdGUgaW5zdGFuY2UgZnJvbSBGZERhdGVcbiAgICAgKiBAcGFyYW0gZGF0ZSBGZERhdGUgaW5zdGFuY2VcbiAgICAgKiBAcmV0dXJucyBkYXRlIE5hdGl2ZSBkYXRlIGluc3RhbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZmREYXRlOiBGZERhdGUpOiBEYXRlIHtcbiAgICAgICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCB9ID0gZmREYXRlO1xuICAgICAgICAvLyBXZSBoYXZlIHN0cmljdGVyIHZhbGlkYXRpb24gcnVsZXMgdGhhbiBEYXRlIG9iamVjdC5cbiAgICAgICAgLy8gRm9yIGV4YW1wbGUsIERhdGUgYWxsb3dzIHZhbHVlcyBmb3IgbW9udGg9MTAwIG9yIGZvciBkYXk9MTAwLlxuICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gZG8gdGhpcyB0cmljayBmb3IgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSB2YWxpZGF0aW9uIHN0YXR1c1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZChmZERhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gICAgICAgIGRhdGUuc2V0SG91cnMoaG91ciwgbWludXRlLCBzZWNvbmQsIDApO1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlIG5hdGl2ZSBEYXRlIGluc3RhbmNlIGluIFVUQ1xuICAgICAqIEBwYXJhbSB5ZWFyIFRoZSB5ZWFyXG4gICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBhcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDExXG4gICAgICogQHBhcmFtIGRheSBUaGUgZGF0ZSBhcyBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDMxLlxuICAgICAqIEBwYXJhbSBob3VycyBUaGUgaG91cnMgYXMgYSBudW1iZXIgYmV0d2VlbiAwIC0gMjRcbiAgICAgKiBAcGFyYW0gbWludXRlcyBUaGUgbWludXRlcyBhcyBhIG51bWJlciBiZXR3ZWVuIDAgLSA1OVxuICAgICAqIEBwYXJhbSBzZWNvbmRzIFRoZSBzZWNvbmRzIGFzIGEgbnVtYmVyIGJldHdlZW4gMCAtIDU5XG4gICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyBUaGUgbWlsbGlzZWNvbmRzIGFzIGEgbnVtYmVyIGJldHdlZW4gMCAtIDU5XG4gICAgICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlVVRDRGF0ZUluc3RhbmNlKFxuICAgICAgICB5ZWFyOiBudW1iZXIsXG4gICAgICAgIG1vbnRoOiBudW1iZXIsXG4gICAgICAgIGRheTogbnVtYmVyLFxuICAgICAgICBob3VycyA9IDAsXG4gICAgICAgIG1pbnV0ZXMgPSAwLFxuICAgICAgICBzZWNvbmRzID0gMCxcbiAgICAgICAgbWlsbGlzZWNvbmRzID0gMFxuICAgICk6IERhdGUge1xuICAgICAgICBjb25zdCB1dGNEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgdXRjRGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCBtb250aCwgZGF5KTtcbiAgICAgICAgdXRjRGF0ZS5zZXRVVENIb3Vycyhob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgcmV0dXJuIHV0Y0RhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGU6IERhdGUpOiBGZERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IEZkRGF0ZShcbiAgICAgICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAgICAgICBkYXRlLmdldERhdGUoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0TWludXRlcygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRTZWNvbmRzKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICpcbiAgICAgKiBTaW5jZSBGZERhdGV0aW1lQWRhcHRlciBjYW4gcGFyc2Ugb25seSBcImVuLVVTXCIgbG9jYWxlXG4gICAgICogdGhlcmUgaXMgbm8gcmVhc29uIHRvIGNyZWF0ZSBjb21wcmVoZW5zaXZlIHRpbWUgcGFyc2VcbiAgICAgKiB0aGF0IGNhbiB1bmRlcnN0YW5kIHBsZW50eSBvZiBsb2NhbGVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRpbWVTdHIgVGltZSBzdHJpbmcgdG8gcGFyc2UgKEUuZy4gJzEwOjMwIFBNJylcbiAgICAgKiBAcmV0dXJucyBkYXRlIE5hdGl2ZSBkYXRlIGluc3RhbmNlXG4gICAgICpcbiAgICAgKi9cbiAgICBwcml2YXRlIF9wYXJzZVRpbWVTdHJpbmcodGltZVN0cjogc3RyaW5nKTogRGF0ZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEYXRlLnBhcnNlKCcxMDozMCBBTScpIGRvZXNuJ3Qgd29yayBzbyB3ZSBuZWVkIGRvIGEgdHJpY2tcbiAgICAgICAgICogYW5kIHByZXBlbmQgaXQgYnkgYSBkYXRlIHN0cmluZy5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGRhdGVTdHIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tR0InKS5mb3JtYXQobmV3IERhdGUoKSk7XG4gICAgICAgIGNvbnN0IGRhdGVUaW1lU3RyaW5nID0gYCR7ZGF0ZVN0cn0gJHt0aW1lU3RyfWA7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLnBhcnNlKGRhdGVUaW1lU3RyaW5nKSk7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { DateFormatPipe, DateFromNowPipe, DateTimeFormatPipe, DayPeriodFormatPipe, TranslateDayPeriodPipe } from './datetime-format.pipes';\nimport * as i0 from \"@angular/core\";\nconst PIPES = [\n DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe\n];\n/**\n * @deprecated\n * Use imports of `DateFormatPipe`, `DateTimeFormatPipe`, `DateFromNowPipe` instead.\n */\nexport class FdDatetimePipesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule, imports: [DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe], exports: [DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...PIPES],\n exports: [...PIPES]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZXRpbWUtcGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2ZkLWRhdGV0aW1lLXBpcGVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFDSCxjQUFjLEVBQ2QsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3pCLE1BQU0seUJBQXlCLENBQUM7O0FBRWpDLE1BQU0sS0FBSyxHQUFvQjtJQUMzQixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsc0JBQXNCO0NBQ3pCLENBQUM7QUFFRjs7O0dBR0c7QUFLSCxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7K0dBQXJCLHFCQUFxQixZQWY5QixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsc0JBQXNCLGFBSnRCLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixzQkFBc0I7K0dBV2IscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEYXRlRm9ybWF0UGlwZSxcbiAgICBEYXRlRnJvbU5vd1BpcGUsXG4gICAgRGF0ZVRpbWVGb3JtYXRQaXBlLFxuICAgIERheVBlcmlvZEZvcm1hdFBpcGUsXG4gICAgVHJhbnNsYXRlRGF5UGVyaW9kUGlwZVxufSBmcm9tICcuL2RhdGV0aW1lLWZvcm1hdC5waXBlcyc7XG5cbmNvbnN0IFBJUEVTOiBUeXBlPHVua25vd24+W10gPSBbXG4gICAgRGF0ZUZvcm1hdFBpcGUsXG4gICAgRGF0ZVRpbWVGb3JtYXRQaXBlLFxuICAgIERhdGVGcm9tTm93UGlwZSxcbiAgICBEYXlQZXJpb2RGb3JtYXRQaXBlLFxuICAgIFRyYW5zbGF0ZURheVBlcmlvZFBpcGVcbl07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBpbXBvcnRzIG9mIGBEYXRlRm9ybWF0UGlwZWAsIGBEYXRlVGltZUZvcm1hdFBpcGVgLCBgRGF0ZUZyb21Ob3dQaXBlYCBpbnN0ZWFkLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFsuLi5QSVBFU10sXG4gICAgZXhwb3J0czogWy4uLlBJUEVTXVxufSlcbmV4cG9ydCBjbGFzcyBGZERhdGV0aW1lUGlwZXNNb2R1bGUge31cbiJdfQ==","import { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\nimport { FdDatetimePipesModule } from './fd-datetime-pipes.module';\nimport * as i0 from \"@angular/core\";\nexport class FdDatetimeAdapterModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, imports: [PlatformModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, providers: [{ provide: DatetimeAdapter, useClass: FdDatetimeAdapter }], imports: [PlatformModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [PlatformModule],\n providers: [{ provide: DatetimeAdapter, useClass: FdDatetimeAdapter }]\n }]\n }] });\nexport class FdDatetimeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, imports: [FdDatetimeAdapterModule, FdDatetimePipesModule], exports: [FdDatetimePipesModule, FdDatetimeAdapterModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, providers: [{ provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS }], imports: [FdDatetimeAdapterModule, FdDatetimePipesModule, FdDatetimePipesModule, FdDatetimeAdapterModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [FdDatetimeAdapterModule, FdDatetimePipesModule],\n exports: [FdDatetimePipesModule, FdDatetimeAdapterModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS }]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZXRpbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2ZkLWRhdGV0aW1lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBTW5FLE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjsrR0FBdkIsdUJBQXVCLFlBSHRCLGNBQWM7K0dBR2YsdUJBQXVCLGFBRnJCLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLFlBRDVELGNBQWM7OzJGQUdmLHVCQUF1QjtrQkFKbkMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQ3pCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztpQkFDekU7O0FBUUQsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFQaEIsdUJBQXVCLEVBR0cscUJBQXFCLGFBQzlDLHFCQUFxQixFQUp0Qix1QkFBdUI7K0dBT3ZCLGdCQUFnQixhQUZkLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLENBQUMsWUFGaEUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQzlDLHFCQUFxQixFQUp0Qix1QkFBdUI7OzJGQU92QixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsdUJBQXVCLEVBQUUscUJBQXFCLENBQUM7b0JBQ3pELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLHVCQUF1QixDQUFDO29CQUN6RCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztpQkFDN0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGF0Zm9ybU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGV0aW1lLWFkYXB0ZXInO1xuaW1wb3J0IHsgREFURV9USU1FX0ZPUk1BVFMgfSBmcm9tICcuL2RhdGV0aW1lLWZvcm1hdHMnO1xuaW1wb3J0IHsgRkRfREFURVRJTUVfRk9STUFUUyB9IGZyb20gJy4vZmQtZGF0ZS1mb3JtYXRzJztcbmltcG9ydCB7IEZkRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnLi9mZC1kYXRldGltZS1hZGFwdGVyJztcbmltcG9ydCB7IEZkRGF0ZXRpbWVQaXBlc01vZHVsZSB9IGZyb20gJy4vZmQtZGF0ZXRpbWUtcGlwZXMubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbUGxhdGZvcm1Nb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLCB1c2VDbGFzczogRmREYXRldGltZUFkYXB0ZXIgfV1cbn0pXG5leHBvcnQgY2xhc3MgRmREYXRldGltZUFkYXB0ZXJNb2R1bGUge31cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbRmREYXRldGltZUFkYXB0ZXJNb2R1bGUsIEZkRGF0ZXRpbWVQaXBlc01vZHVsZV0sXG4gICAgZXhwb3J0czogW0ZkRGF0ZXRpbWVQaXBlc01vZHVsZSwgRmREYXRldGltZUFkYXB0ZXJNb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogREFURV9USU1FX0ZPUk1BVFMsIHVzZVZhbHVlOiBGRF9EQVRFVElNRV9GT1JNQVRTIH1dXG59KVxuZXhwb3J0IGNsYXNzIEZkRGF0ZXRpbWVNb2R1bGUge31cbiJdfQ==","import { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\n/**\n * Provides default datetime formats and datetime adapter.\n */\nexport function provideDateTimeFormats() {\n return [\n { provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS },\n {\n provide: DatetimeAdapter,\n useClass: FdDatetimeAdapter\n }\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1kYXRlLXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZXRpbWUvcHJvdmlkZS1kYXRlLXRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNsQyxPQUFPO1FBQ0gsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO1FBQzdEO1lBQ0ksT0FBTyxFQUFFLGVBQWU7WUFDeEIsUUFBUSxFQUFFLGlCQUFpQjtTQUM5QjtLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJy4vZGF0ZXRpbWUtYWRhcHRlcic7XG5pbXBvcnQgeyBEQVRFX1RJTUVfRk9STUFUUyB9IGZyb20gJy4vZGF0ZXRpbWUtZm9ybWF0cyc7XG5pbXBvcnQgeyBGRF9EQVRFVElNRV9GT1JNQVRTIH0gZnJvbSAnLi9mZC1kYXRlLWZvcm1hdHMnO1xuaW1wb3J0IHsgRmREYXRldGltZUFkYXB0ZXIgfSBmcm9tICcuL2ZkLWRhdGV0aW1lLWFkYXB0ZXInO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRlZmF1bHQgZGF0ZXRpbWUgZm9ybWF0cyBhbmQgZGF0ZXRpbWUgYWRhcHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEYXRlVGltZUZvcm1hdHMoKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgeyBwcm92aWRlOiBEQVRFX1RJTUVfRk9STUFUUywgdXNlVmFsdWU6IEZEX0RBVEVUSU1FX0ZPUk1BVFMgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IEZkRGF0ZXRpbWVBZGFwdGVyXG4gICAgICAgIH1cbiAgICBdO1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWNvcmUtZGF0ZXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZXRpbWUvZnVuZGFtZW50YWwtbmd4LWNvcmUtZGF0ZXRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["i1.DatetimeAdapter"],"mappings":";;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,CAAC;AAC7B,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE;AAC3C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAC/D,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,MAAM,EAAE;AACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAClC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AAC3C,QAAQ,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC7C,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC7C,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;AAClD,QAAQ,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AACzD,QAAQ,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,QAAQ,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC;AAC1E,QAAQ,MAAM,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE;AACtD,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAClC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,QAAQ,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1D,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxD,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACtD,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxD,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC5D,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC5D,IAAI;AACJ;;AC/DA;AACA;AACA;AACY,MAAC,iBAAiB,GAAG,IAAI,cAAc,CAAC,cAAc;;ACK3D,MAAM,cAAc,CAAC;AAC5B;AACA,IAAI,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE;AACpD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,EAAE,EAAE;AACxC,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9F,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,aAAa;AAChC,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,eAAkB,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AACtP,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AACtK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACxH,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,YAAY;AACtC,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,eAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACjG,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,iBAAiB;AAC5C,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,MAAM,kBAAkB,CAAC;AAChC;AACA,IAAI,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE;AACpD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,EAAE,EAAE;AACxC,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;AAClG,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,aAAa;AAChC,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,eAAkB,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1P,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC9K;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,gBAAgB;AAC1C,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,eAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACjG,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,iBAAiB;AAC5C,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,MAAM,eAAe,CAAC;AAC7B;AACA,IAAI,WAAW,CAAC,gBAAgB,EAAE;AAClC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,EAAE,EAAE;AACxC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,UAAU,EAAE;AAClG,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1D,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,OAAO,aAAa;AACpC,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC;AAC/E,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,eAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AACzM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AACxK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzH,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,aAAa;AACvC,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,eAAkB,EAAE,CAAC,EAAE,CAAC;AAC5D,MAAM,mBAAmB,CAAC;AACjC;AACA,IAAI,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE;AACpD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE;AAC3D,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,OAAO,aAAa;AAChC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;AAC/D,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,eAAkB,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3P,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAChL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,iBAAiB;AAC3C,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,eAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACjG,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,iBAAiB;AAC5C,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,MAAM,sBAAsB,CAAC;AACpC;AACA,IAAI,WAAW,CAAC,UAAU,EAAE;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,EAAE;AAC7D,QAAQ,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AACrF,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,MAAM,gBAAgB,GAAG,sBAAsB;AACvD,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnD,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACxB,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,EAAE;AACjE,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAChG,YAAY,OAAO,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG,KAAK;AAC7F,QAAQ;AACR;AACA,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AACzM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACnM;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AAChI,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,oBAAoB;AAC9C,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,IAAI,EAAE,KAAK;AAC/B,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;AACvE,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,WAAW;AACtC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;;ACnKxB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE;AACjD,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,EAAE;AACrB,QAAQ,OAAO,EAAE,EAAE;AACnB,QAAQ,KAAK,EAAE;AACf,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG,uCAAuC;AACpE,IAAI,MAAM,WAAW,GAAG,cAAc;AACtC,IAAI,MAAM,gBAAgB,GAAG,CAAC,KAAK,KAAK;AACxC,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnD,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACjD,YAAY,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACtD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AAC9D,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;AAC1D,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACtE,gBAAgB,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5C,gBAAgB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAClD,gBAAgB,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,SAAS;AAChD,gBAAgB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClI,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI,CAAC;AACL,IAAI,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AACnC,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;AAC9C,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACjD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AACzD,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;AAC1D,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACtE,gBAAgB,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5C,gBAAgB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAClD,gBAAgB,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;AACnD,oBAAoB,KAAK,IAAI,EAAE;AAC/B,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACrD,oBAAoB,KAAK,GAAG,CAAC;AAC7B,gBAAgB;AAChB,gBAAgB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClI,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI,CAAC;AACL,IAAI,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AACzC,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;AACpC,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AACjD;;ACxDA;AACO,SAAS,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;AACrC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AACxE;AACA;AACO,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC5B,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE;AAClC,IAAI,OAAO;AACX,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7E,QAAQ,GAAG;AACX,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;AAC1F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACd;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,MAAM,EAAE;AACxC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;AAC7D,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AACzC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACvC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACxC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1C,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;AAC5C,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACrE,QAAQ,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AACvD,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,KAAK,EAAE;AAC/C,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AACrE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;AAC7C,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;AAC1D;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE;AAC5E,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,YAAY,OAAO,MAAM,CAAC,MAAM,EAAE;AAClC,QAAQ;AACR,QAAQ,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC;AAC7C,QAAQ,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC;AAC/C,QAAQ,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC;AAC3C,QAAQ,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC;AAC7C,QAAQ,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC;AACjD,QAAQ,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC;AACjD,QAAQ,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACxC,YAAY,IAAI;AAChB,YAAY,KAAK;AACjB,YAAY,GAAG;AACf,YAAY,IAAI;AAChB,YAAY,MAAM;AAClB,YAAY;AACZ,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG;AAC9C,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG;AAChD,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG;AAC5C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG;AAC9C,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG;AAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG;AAClD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,MAAM,GAAG;AACpB,QAAQ,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC;AACjD,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,QAAQ,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/C,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,eAAe,CAAC,IAAI,EAAE;AACjC,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACzI,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACxC,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI;AAC3B,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;AAC7B,YAAY,GAAG,EAAE,IAAI,CAAC,GAAG;AACzB,YAAY,IAAI;AAChB,YAAY,MAAM;AAClB,YAAY;AACZ,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,IAAI,CAAC,IAAI,GAAG,GAAG;AAC3B,YAAY,IAAI,CAAC,MAAM,GAAG,GAAG;AAC7B,YAAY,IAAI,CAAC,MAAM,GAAG,GAAG;AAC7B,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;AAC7D,YAAY,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;AACvE,YAAY,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;AACvE,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;AACtC,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC;AACzC,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC;AAChC,QAAQ;AACR,QAAQ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AACjG,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,QAAQ;AACtD,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACpD,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC;AAC9B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,YAAY,EAAE;AAClC,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACpD,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACpD,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI;AACJ;;ACnKA,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;AACvE,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;AACxD,MAAM,aAAa,GAAG;AACtB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,KAAK,EAAE,SAAS;AACpB,IAAI,GAAG,EAAE,SAAS;AAClB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE;AACZ,CAAC;AACW,MAAC,mBAAmB,GAAG;AACnC,IAAI,KAAK,EAAE;AACX,QAAQ,SAAS;AACjB,QAAQ,SAAS;AACjB,QAAQ;AACR,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,SAAS;AACjB,QAAQ,SAAS;AACjB,QAAQ,aAAa;AACrB,QAAQ,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE;AACzE,QAAQ,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;AAC1D,QAAQ,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS;AACxC,KAAK;AACL,IAAI,cAAc,EAAE;AACpB;;AChBA,MAAM,qBAAqB,GAAG,IAAI;AAClC,MAAM,qBAAqB,GAAG,IAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iBAAiB,SAAS,eAAe,CAAC;AACvD;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;AACpC,QAAQ,KAAK,EAAE;AACf,QAAQ,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI;AACpE,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,OAAO,IAAI,CAAC,IAAI;AACxB,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,KAAK;AACzB,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,OAAO,IAAI,CAAC,GAAG;AACvB,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC;AAClE,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,IAAI;AACxB,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AAC7D,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D;AACA,QAAQ,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5H,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACtG,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxH,IAAI;AACJ;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACxG,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5H,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACxG,QAAQ,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3H,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACzG,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAC9F,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACnD,QAAQ,OAAO,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;AACzC,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK;AACnC,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE;AACjE,YAAY;AACZ,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/F,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;AACjC,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpH,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;AACjC,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpH,IAAI;AACJ;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,MAAM,eAAe,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;AAC9E,QAAQ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/D,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,MAAM,EAAE,SAAS;AAC7B,YAAY,MAAM,EAAE;AACpB,SAAS,CAAC;AACV,QAAQ,IAAI;AACZ,YAAY,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK;AACvH,YAAY,MAAM,EAAE,GAAG;AACvB,iBAAiB,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACvD,iBAAiB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK;AAChE,YAAY,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,eAAe;AACxD,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;AACvF,YAAY,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;AAClG,YAAY,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;AACnG,YAAY,OAAO,aAAa,IAAI;AACpC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AACrD,kBAAkB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;AAChE,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC;AAC/D,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;AACtC,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC;AAC/D,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;AACtC,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC;AAC/D,IAAI;AACJ;AACA,IAAI,iBAAiB,GAAG;AACxB;AACA,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,MAAM,EAAE;AAC9B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AAC7D,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE;AAC7B,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE;AAC1C,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AAC5C,IAAI;AACJ;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,MAAM,CAAC,QAAQ,EAAE;AAChC,IAAI;AACJ;AACA,IAAI,GAAG,GAAG;AACV,QAAQ,OAAO,MAAM,CAAC,MAAM,EAAE;AAC9B,IAAI;AACJ;AACA,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,EAAE;AACnC,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;AACnC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AACrC,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAClC,QAAQ;AACR;AACA,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,YAAY,OAAO,KAAK,KAAK,QAAQ;AACrC,YAAY,CAAC,WAAW,CAAC,IAAI;AAC7B,YAAY,CAAC,WAAW,CAAC,GAAG;AAC5B,YAAY,CAAC,WAAW,CAAC,KAAK;AAC9B,YAAY,WAAW,CAAC,IAAI,EAAE;AAC9B,YAAY,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC/C,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACjC,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;AAC7E,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACnC,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAQ;AACR,QAAQ,aAAa,GAAG,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC7D,QAAQ,OAAO,aAAa,CAAC;AAC7B,cAAc,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,aAAa;AAC3D,cAAc,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE;AACtC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AAC7D,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC;AAC/C;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE;AAC3C,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3B,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE;AAClC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AAC7D,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC3C,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,KAAK,CAAC,IAAI,EAAE;AAChB,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AAC/F,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC,EAAE;AACvC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE;AACjC,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE;AAC/C,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;AAClE,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;AACjE,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC;AAC7D,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;AACjF,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,OAAO,QAAQ,KAAK,QAAQ;AACpC,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE;AACjC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC9D,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,MAAM,EAAE;AACtB,QAAQ,OAAO,SAAS,CAAC,MAAM,CAAC;AAChC,IAAI;AACJ;AACA,IAAI,6BAA6B,CAAC,aAAa,EAAE;AACjD,QAAQ,IAAI,OAAO,aAAa,EAAE,MAAM,KAAK,SAAS,EAAE;AACxD,YAAY,OAAO,aAAa,CAAC,MAAM;AACvC,QAAQ;AACR,QAAQ,MAAM,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;AAC7F,QAAQ,MAAM,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACpH,QAAQ,OAAO,6BAA6B,KAAK,2BAA2B;AAC5E,IAAI;AACJ;AACA,IAAI,yBAAyB,CAAC,aAAa,EAAE;AAC7C,QAAQ,OAAO,OAAO,aAAa,EAAE,IAAI,KAAK,QAAQ;AACtD,IAAI;AACJ;AACA,IAAI,2BAA2B,CAAC,aAAa,EAAE;AAC/C,QAAQ,OAAO,OAAO,aAAa,EAAE,MAAM,KAAK,QAAQ;AACxD,IAAI;AACJ;AACA,IAAI,2BAA2B,CAAC,aAAa,EAAE;AAC/C,QAAQ,OAAO,OAAO,aAAa,EAAE,MAAM,KAAK,QAAQ;AACxD,IAAI;AACJ;AACA,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE;AAC9C,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACpG,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC1D,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;AACjF,IAAI;AACJ;AACA,IAAI,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE;AAClE,QAAQ,IAAI,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE;AAC5E,YAAY,OAAO;AACnB,iBAAiB,OAAO,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC1E,iBAAiB,OAAO,CAAC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3E,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,aAAa,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3F,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,IAAI,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;AACtB,YAAY,OAAO,qBAAqB;AACxC,QAAQ;AACR,aAAa,IAAI,IAAI,GAAG,EAAE,EAAE;AAC5B,YAAY,OAAO,uBAAuB;AAC1C,QAAQ;AACR,aAAa,IAAI,IAAI,GAAG,EAAE,EAAE;AAC5B,YAAY,OAAO,yBAAyB;AAC5C,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,uBAAuB;AAC1C,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE;AACzC,QAAQ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;AAC7E,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACzF,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8BAA8B,CAAC,GAAG,EAAE;AACxC,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AACzE,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE;AAC7B,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AAC1C,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR,QAAQ,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AAC9K,QAAQ,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,2BAA2B,CAAC,MAAM,EAAE;AACxC,QAAQ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;AACjE;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnC,YAAY,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC;AAChC,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;AAC/B,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AAC9C,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9C,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE;AACpG,QAAQ,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE;AAClC,QAAQ,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AAChD,QAAQ,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC;AAClE,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ;AACA,IAAI,6BAA6B,CAAC,IAAI,EAAE;AACxC,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACzI,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC9B;AACA;AACA;AACA;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAC3E,QAAQ,MAAM,cAAc,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtD,QAAQ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AACnD,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAChP,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACvI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnE,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,SAAS;AACpC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;;ACna/C,MAAM,KAAK,GAAG;AACd,IAAI,cAAc;AAClB,IAAI,kBAAkB;AACtB,IAAI,eAAe;AACnB,IAAI,mBAAmB;AACvB,IAAI;AACJ,CAAC;AACD;AACA;AACA;AACA;AACO,MAAM,qBAAqB,CAAC;AACnC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,cAAc;AAC9J,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,mBAAmB;AAC/B,YAAY,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc;AAC7D,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,mBAAmB;AAC/B,YAAY,sBAAsB,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACxI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC;AAC/H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;AACvC,oBAAoB,OAAO,EAAE,CAAC,GAAG,KAAK;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACzBN,MAAM,uBAAuB,CAAC;AACrC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACrK,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC7O;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,cAAc,CAAC;AAC7C,oBAAoB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AACzF,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;AACN,MAAM,gBAAgB,CAAC;AAC9B,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,EAAE,OAAO,EAAE,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAC;AACzP,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAC;AAC1T;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC1H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;AAC7E,oBAAoB,OAAO,EAAE,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;AAC7E,oBAAoB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AAC7F,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC5Bb;AACA;AACA;AACO,SAAS,sBAAsB,GAAG;AACzC,IAAI,OAAO;AACX,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AACrE,QAAQ;AACR,YAAY,OAAO,EAAE,eAAe;AACpC,YAAY,QAAQ,EAAE;AACtB;AACA,KAAK;AACL;;ACfA;AACA;AACA;;;;"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-datetime.mjs","sources":["../tmp-esm2022/datetime/datetime-adapter.js","../tmp-esm2022/datetime/datetime-formats.js","../tmp-esm2022/datetime/datetime-format.pipes.js","../tmp-esm2022/datetime/datetime-utils.js","../tmp-esm2022/datetime/fd-date.utils.js","../tmp-esm2022/datetime/fd-date.js","../tmp-esm2022/datetime/fd-date-formats.js","../tmp-esm2022/datetime/fd-datetime-adapter.js","../tmp-esm2022/datetime/fd-datetime-pipes.module.js","../tmp-esm2022/datetime/fd-datetime.module.js","../tmp-esm2022/datetime/provide-date-time.js","../tmp-esm2022/datetime/fundamental-ngx-core-datetime.js"],"sourcesContent":["import { Subject } from 'rxjs';\n/**\n * Datetime Adapter is an abstract class that must be implemented by each adapter.\n * It's used to encapsulate a date/time manipulations as result\n * others places that uses it remain date type agnostic.\n *\n */\nexport class DatetimeAdapter {\n constructor() {\n /** @hidden */\n this._localeChanges = new Subject();\n this.localeChanges = this._localeChanges.asObservable();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale) {\n this.locale = locale;\n this._localeChanges.next();\n }\n /**\n * Set hours, minutes and seconds at once.\n * @param date The date to set time to.\n * @param hours\n * @param minutes\n * @param seconds\n * @returns The new date instance.\n */\n setTime(date, hours, minutes, seconds) {\n date = this.setHours(date, hours);\n date = this.setMinutes(date, minutes);\n date = this.setSeconds(date, seconds);\n return date;\n }\n /**\n * Get Amount of weeks in given month/year\n * @param year The year of the date\n * @param month The month of the date\n * @param firstDayOfWeek The first day of week. 1 - Sunday, 2 - Monday...\n * @returns Number of weeks in the given month\n */\n getAmountOfWeeks(year, month, firstDayOfWeek) {\n const firstOfMonth = new Date(year, month - 1, 1);\n const lastOfMonth = new Date(year, month, 0);\n const dayOffset = (firstOfMonth.getDay() - firstDayOfWeek + 8) % 7;\n const used = dayOffset + lastOfMonth.getDate();\n return Math.ceil(used / 7);\n }\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first, second) {\n return (this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second) ||\n this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9kYXRldGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0M7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLGVBQWU7SUFzVGpDO1FBSEEsY0FBYztRQUNOLG1CQUFjLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFDRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsT0FBTyxDQUFDLElBQU8sRUFBRSxLQUFhLEVBQUUsT0FBZSxFQUFFLE9BQWU7UUFDNUQsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsY0FBc0I7UUFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3QyxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEtBQVEsRUFBRSxNQUFTO1FBQzNCLE9BQU8sQ0FDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUNuRCxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogRGF0ZXRpbWUgQWRhcHRlciBpcyBhbiBhYnN0cmFjdCBjbGFzcyB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBhZGFwdGVyLlxuICogSXQncyB1c2VkIHRvIGVuY2Fwc3VsYXRlIGEgZGF0ZS90aW1lIG1hbmlwdWxhdGlvbnMgYXMgcmVzdWx0XG4gKiBvdGhlcnMgcGxhY2VzIHRoYXQgdXNlcyBpdCByZW1haW4gZGF0ZSB0eXBlIGFnbm9zdGljLlxuICpcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGV0aW1lQWRhcHRlcjxEPiB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgeWVhciBjb21wb25lbnQgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgeWVhciBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB5ZWFyIG51bWJlci5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRZZWFyKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSBtb250aCBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBtb250aCBudW1iZXIgKG1pbiAxLCBtYXggMTIpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldE1vbnRoKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXkgb2YgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgZGF0ZSBvZiB0aGUgbW9udGggZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgZGF0ZSBudW1iZXIgKG1pbiAxLCBtYXggMzEpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldERhdGUoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBjb21wb25lbnQgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgZGF5IG9mIHRoZSB3ZWVrIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIGRheSBvZiB3ZWVrIG51bWJlciAobWluIDEsIG1heCA3LCAxID0gU3VuZGF5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgaG91cnMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgaG91cnMgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgaG91cnMgbnVtYmVyIChtaW4gMCwgbWF4IDIzKS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRIb3VycyhkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBtaW51dGVzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGV4dHJhY3QgdGhlIG1pbnV0ZXMgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbWludXRlcyBudW1iZXIgKG1pbiAwLCBtYXggNTkpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldE1pbnV0ZXMoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgc2Vjb25kcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSBzZWNvbmRzIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIHNlY29uZHMgbnVtYmVyIChtaW4gMCwgbWF4IDU5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRTZWNvbmRzKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaG91cnMuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gc2V0IGhvdXJzIHRvLlxuICAgICAqIEBwYXJhbSBob3Vyc1xuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBzZXRIb3VycyhkYXRlOiBELCBob3VyczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIFNldCBtaW51dGVzLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCBtaW51dGVzIHRvLlxuICAgICAqIEBwYXJhbSBtaW51dGVzXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHNldE1pbnV0ZXMoZGF0ZTogRCwgbWludXRlczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIFNldCBzZWNvbmRzLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCBzZWNvbmRzIHRvLlxuICAgICAqIEBwYXJhbSBzZWNvbmRzXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHNldFNlY29uZHMoZGF0ZTogRCwgc2Vjb25kczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgd2VlayBudW1iZXIgb2YgdGhlIGdpdmVuIGRhdGVcbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSB3ZWVrIG51bWJlciBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB3ZWVrIG51bWJlciAobWluIDEsIG1heCA1MykuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0V2Vla051bWJlcihkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgbmFtZXMgZm9yIHRoZSBtb250aHMuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdKYW51YXJ5Jywgc2hvcnQgPSAnSmFuJywgbmFycm93ID0gJ0onKS5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoIEphbnVhcnkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRhdGVzIG9mIHRoZSBtb250aC5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGRhdGUgb2YgdGhlIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICcxJy5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRheXMgb2YgdGhlIHdlZWsuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdTdW5kYXknLCBzaG9ydCA9ICdTdW4nLCBuYXJyb3cgPSAnUycpLlxuICAgICAqIEByZXR1cm5zIEFuIG9yZGVyZWQgbGlzdCBvZiBhbGwgd2Vla2RheSBuYW1lcywgc3RhcnRpbmcgd2l0aCBTdW5kYXkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmFtZSBmb3IgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZ2V0IHRoZSB5ZWFyIG5hbWUgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgZ2l2ZW4geWVhciAoZS5nLiAnMjAyMCcpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFllYXJOYW1lKGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIGZvciB0aGUgd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBnZXQgdGhlIHdlZWsgbmFtZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB0aGUgd2Vlay5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRXZWVrTmFtZShkYXRlOiBEKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgaG91ciBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGhvdXJzICgwIC0gMjQpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldEhvdXJOYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuOyBtZXJpZGlhbjogYm9vbGVhbiB9KTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBtaW51dGUgbmFtZXMuXG4gICAgICogQHJldHVybnMgQW4gb3JkZXJlZCBsaXN0IG9mIGFsbCBob3VycyAoMCAtIDI0KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRNaW51dGVOYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuIH0pOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBsaXN0IG9mIHNlY29uZCBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGhvdXJzICgwIC0gMjQpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFNlY29uZE5hbWVzKG9wdGlvbnM6IHsgdHdvRGlnaXQ6IGJvb2xlYW4gfSk6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgZGF5IHBlcmlvZHMuXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBkYXkgcGVyaW9kcywgc3RhcnRzIGZyb20gQU0gWydBTScsICdQTSddLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldERheVBlcmlvZE5hbWVzKCk6IFtzdHJpbmcsIHN0cmluZ107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICogQHJldHVybnMgVGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMC1pbmRleGVkLCAwID0gU3VuZGF5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgd2hvc2UgbW9udGggc2hvdWxkIGJlIGNoZWNrZWQuXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgZGF0ZSBmcm9tIGEgdXNlci1wcm92aWRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHBhcnNlLlxuICAgICAqIEBwYXJhbSBwYXJzZUZvcm1hdCBUaGUgZXhwZWN0ZWQgZm9ybWF0IG9mIHRoZSB2YWx1ZSBiZWluZyBwYXJzZWRcbiAgICAgKiAgICAgKHR5cGUgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50KS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgcGFyc2UodmFsdWU6IHVua25vd24sIHBhcnNlRm9ybWF0OiB1bmtub3duKTogRCB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIGEgZGF0ZSBhcyBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1hdC5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgdmFsdWUgdG8gZm9ybWF0LlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZy5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBmb3JtYXQoZGF0ZTogTnVsbGFibGU8RD4sIGRpc3BsYXlGb3JtYXQ6IHVua25vd24pOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZGF0ZSB3aXRoIHRoZSBnaXZlbiB5ZWFyLCBtb250aCwgYW5kIGRhdGUuXG4gICAgICogQHBhcmFtIHllYXIgVGhlIGZ1bGwgeWVhciBvZiB0aGUgZGF0ZS4gKGUuZy4gMTk4OSkuXG4gICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBvZiB0aGUgZGF0ZSAoMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBtb250aCBkYXRlLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIGxlbmd0aCBvZiB0aGUgZ2l2ZW4gbW9udGguXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlLCBvciBudWxsIGlmIGludmFsaWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoPzogbnVtYmVyLCBkYXRlPzogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdG9kYXkncyBkYXRlIHdoZXJlIHRpbWUgdmFsdWUgaXMgc2V0IHRvIDBcbiAgICAgKiBAcmV0dXJucyBUb2RheSdzIGRhdGUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdG9kYXkoKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgZGF0ZSBhbmQgdGltZSBhdCB0aGlzIG1vbWVudC5cbiAgICAgKiBAcmV0dXJucyBkYXRlIGFuZCB0aW1lIGF0IHRoaXMgbW9tZW50LlxuICAgICAqL1xuICAgIGFic3RyYWN0IG5vdygpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHllYXJzIHRvIHRoZSBkYXRlLiBZZWFycyBhcmUgY291bnRlZCBhcyBpZiBmbGlwcGluZyAxMiBwYWdlcyBvbiB0aGVcbiAgICAgKiBjYWxlbmRhciBmb3IgZWFjaCB5ZWFyIGFuZCB0aGVuIGZpbmRpbmcgdGhlIGNsb3Nlc3QgZGF0ZSBpbiB0aGUgbmV3IG1vbnRoLiBGb3IgZXhhbXBsZSB3aGVuXG4gICAgICogYWRkaW5nIDEgeWVhciB0byBGZWIgMjksIDIwMTYsIHRoZSByZXN1bHRpbmcgZGF0ZSB3aWxsIGJlIEZlYiAyOCwgMjAxNy5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBhZGQgeWVhcnMgdG8uXG4gICAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkIChtYXkgYmUgbmVnYXRpdmUpLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGRhdGUgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIGFkZGVkLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogRCwgeWVhcnM6IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHRoZSBnaXZlbiBudW1iZXIgb2YgbW9udGhzIHRvIHRoZSBkYXRlLiBNb250aHMgYXJlIGNvdW50ZWQgYXMgaWYgZmxpcHBpbmcgYSBwYWdlIG9uIHRoZVxuICAgICAqIGNhbGVuZGFyIGZvciBlYWNoIG1vbnRoIGFuZCB0aGVuIGZpbmRpbmcgdGhlIGNsb3Nlc3QgZGF0ZSBpbiB0aGUgbmV3IG1vbnRoLiBGb3IgZXhhbXBsZSB3aGVuXG4gICAgICogYWRkaW5nIDEgbW9udGggdG8gSmFuIDMxLCAyMDE3LCB0aGUgcmVzdWx0aW5nIGRhdGUgd2lsbCBiZSBGZWIgMjgsIDIwMTcuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYWRkIG1vbnRocyB0by5cbiAgICAgKiBAcGFyYW0gbW9udGhzIFRoZSBudW1iZXIgb2YgbW9udGhzIHRvIGFkZCAobWF5IGJlIG5lZ2F0aXZlKS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBvbmUgd2l0aCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgYWRkZWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogRCwgbW9udGhzOiBudW1iZXIpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGRheXMgdG8gdGhlIGRhdGUuIERheXMgYXJlIGNvdW50ZWQgYXMgaWYgbW92aW5nIG9uZSBjZWxsIG9uIHRoZVxuICAgICAqIGNhbGVuZGFyIGZvciBlYWNoIGRheS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBhZGQgZGF5cyB0by5cbiAgICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkIChtYXkgYmUgbmVnYXRpdmUpLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGRhdGUgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgYWRkZWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IEQsIGRheXM6IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBDbG9uZXMgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xvbmVcbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGNsb25lKGRhdGU6IEQpOiBEO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2sgZXF1YWxpdHkgb2YgMiBkYXRlcy5cbiAgICAgKiBEb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aW1lIHZhbHVlXG4gICAgICogQHBhcmFtIGRhdGUxIFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgICAqIEBwYXJhbSBkYXRlMiBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gICAgICogQHJldHVybnMgSWYgZGF0ZXMgYXJlIGVxdWFsIG9yIG5vdFxuICAgICAqL1xuICAgIGFic3RyYWN0IGRhdGVzRXF1YWwoZGF0ZTE6IE51bGxhYmxlPEQ+LCBkYXRlMjogTnVsbGFibGU8RD4pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2sgZXF1YWxpdHkgb2YgMiBkYXRlcyB0YWtpbmcgaW50byBhY2NvdW50IHRpbWUgdmFsdWUgYXMgd2VsbFxuICAgICAqIEBwYXJhbSBkYXRlMSBUaGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcGFyYW0gZGF0ZTIgVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgICAqIEByZXR1cm5zIElmIGRhdGVzIGFyZSBlcXVhbCBvciBub3RcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBkYXRlVGltZXNFcXVhbChkYXRlMTogTnVsbGFibGU8RD4sIGRhdGUyOiBOdWxsYWJsZTxEPik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gY2hlY2sgaWYgZGF0ZSBpcyBiZXR3ZWVuIDIgZGF0ZXNcbiAgICAgKiBAcGFyYW0gZGF0ZVRvQ2hlY2sgVGhlIGRhdGUgdG8gY2hlY2sgaWYgaXQncyBpbiBhIHJhbmdlXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSBUaGUgc3RhcnQgZGF0ZSBvZiBhIHJhbmdlXG4gICAgICogQHBhcmFtIGVuZERhdGUgVGhlIGVuZCBkYXRlIG9mIGEgcmFuZ2VcbiAgICAgKiBAcmV0dXJucyBJZiBkYXRlIGlzIGluIGEgZ2l2ZW4gZGF0ZSByYW5nZVxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzQmV0d2VlbihkYXRlVG9DaGVjazogRCwgc3RhcnREYXRlOiBELCBlbmREYXRlOiBEKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrcyB2YWxpZGl0eSBvZiBjdXJyZW50IGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYmUgY2hlY2tlZFxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogTnVsbGFibGU8RD4pOiBkYXRlIGlzIEQ7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBSRkMgMzMzOSBjb21wYXRpYmxlIHN0cmluZyAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRhdGUgc3RyaW5ncyB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggbmF0aXZlIEhUTUwgYXR0cmlidXRlc1xuICAgICAqIHN1Y2ggYXMgdGhlIGBtaW5gIG9yIGBtYXhgIGF0dHJpYnV0ZSBvZiBhbiBgPGlucHV0PmAuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZ2V0IHRoZSBJU08gZGF0ZSBzdHJpbmcgZm9yLlxuICAgICAqIEByZXR1cm5zIFRoZSBJU08gZGF0ZSBzdHJpbmcgZGF0ZSBzdHJpbmcuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdG9Jc284NjAxKGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIHBlcmlvZCBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgcGVyaW9kIGluZm8uXG4gICAgICovXG4gICAgYWJzdHJhY3QgaXNUaW1lRm9ybWF0SW5jbHVkZXNEYXlQZXJpb2QoZGlzcGxheUZvcm1hdDogdW5rbm93bik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIGhvdXJzIGluZm8uXG4gICAgICogQHBhcmFtIGRpc3BsYXlGb3JtYXQgVGhlIGZvcm1hdCB0byB1c2UgdG8gZGlzcGxheSB0aGUgZGF0ZSBhcyBhIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyBJZiB0aW1lIGZvcm1hdCBpbmNsdWRlcyBtaW51dGVzIGluZm8uXG4gICAgICovXG4gICAgYWJzdHJhY3QgaXNUaW1lRm9ybWF0SW5jbHVkZXNIb3VycyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEZvcm1hdCBvcHRpb24gaW5jbHVkZXMgbWludXRlcyBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgbWludXRlcyBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEZvcm1hdCBvcHRpb24gaW5jbHVkZXMgc2Vjb25kcyBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgc2Vjb25kcyBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIGJlaW5nIHJlZmVyZW5jZWQuXG4gICAgICogQHJldHVybnMgU3RyaW5nIHJlcHJlc2VudGluZyBob3cgbXVjaCB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIGRhdGUgcGFyYW0uXG4gICAgICovXG4gICAgYWJzdHJhY3QgZnJvbU5vdz8oZGF0ZTogRCk6IHN0cmluZztcblxuICAgIC8qKiBsb2NhbGUgY2hhbmdlcyBzdHJlYW0gKi9cbiAgICByZWFkb25seSBsb2NhbGVDaGFuZ2VzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICAgLyoqIGN1cnJlbnQgbG9jYWxlICovXG4gICAgcHJvdGVjdGVkIGxvY2FsZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sb2NhbGVDaGFuZ2VzOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sb2NhbGVDaGFuZ2VzID0gdGhpcy5fbG9jYWxlQ2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbG9jYWxlIHVzZWQgZm9yIGFsbCBkYXRlcy5cbiAgICAgKiBAcGFyYW0gbG9jYWxlIFRoZSBuZXcgbG9jYWxlLlxuICAgICAqL1xuICAgIHNldExvY2FsZShsb2NhbGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZTtcbiAgICAgICAgdGhpcy5fbG9jYWxlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIGF0IG9uY2UuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gc2V0IHRpbWUgdG8uXG4gICAgICogQHBhcmFtIGhvdXJzXG4gICAgICogQHBhcmFtIG1pbnV0ZXNcbiAgICAgKiBAcGFyYW0gc2Vjb25kc1xuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBzZXRUaW1lKGRhdGU6IEQsIGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM6IG51bWJlciwgc2Vjb25kczogbnVtYmVyKTogRCB7XG4gICAgICAgIGRhdGUgPSB0aGlzLnNldEhvdXJzKGRhdGUsIGhvdXJzKTtcbiAgICAgICAgZGF0ZSA9IHRoaXMuc2V0TWludXRlcyhkYXRlLCBtaW51dGVzKTtcbiAgICAgICAgZGF0ZSA9IHRoaXMuc2V0U2Vjb25kcyhkYXRlLCBzZWNvbmRzKTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IEFtb3VudCBvZiB3ZWVrcyBpbiBnaXZlbiBtb250aC95ZWFyXG4gICAgICogQHBhcmFtIHllYXIgVGhlIHllYXIgb2YgdGhlIGRhdGVcbiAgICAgKiBAcGFyYW0gbW9udGggVGhlIG1vbnRoIG9mIHRoZSBkYXRlXG4gICAgICogQHBhcmFtIGZpcnN0RGF5T2ZXZWVrIFRoZSBmaXJzdCBkYXkgb2Ygd2Vlay4gMSAtIFN1bmRheSwgMiAtIE1vbmRheS4uLlxuICAgICAqIEByZXR1cm5zIE51bWJlciBvZiB3ZWVrcyBpbiB0aGUgZ2l2ZW4gbW9udGhcbiAgICAgKi9cbiAgICBnZXRBbW91bnRPZldlZWtzKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZmlyc3REYXlPZldlZWs6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgMSk7XG4gICAgICAgIGNvbnN0IGxhc3RPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDApO1xuXG4gICAgICAgIGNvbnN0IGRheU9mZnNldCA9IChmaXJzdE9mTW9udGguZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlayArIDgpICUgNztcbiAgICAgICAgY29uc3QgdXNlZCA9IGRheU9mZnNldCArIGxhc3RPZk1vbnRoLmdldERhdGUoKTtcblxuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHVzZWQgLyA3KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB0d28gZGF0ZXMuXG4gICAgICogQHBhcmFtIGZpcnN0IFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyAwIGlmIHRoZSBkYXRlcyBhcmUgZXF1YWwsIGEgbnVtYmVyIGxlc3MgdGhhbiAwIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGVhcmxpZXIsXG4gICAgICogICAgIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGxhdGVyLlxuICAgICAqL1xuICAgIGNvbXBhcmVEYXRlKGZpcnN0OiBELCBzZWNvbmQ6IEQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5nZXRZZWFyKGZpcnN0KSAtIHRoaXMuZ2V0WWVhcihzZWNvbmQpIHx8XG4gICAgICAgICAgICB0aGlzLmdldE1vbnRoKGZpcnN0KSAtIHRoaXMuZ2V0TW9udGgoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXREYXRlKGZpcnN0KSAtIHRoaXMuZ2V0RGF0ZShzZWNvbmQpIHx8XG4gICAgICAgICAgICB0aGlzLmdldEhvdXJzKGZpcnN0KSAtIHRoaXMuZ2V0SG91cnMoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXRNaW51dGVzKGZpcnN0KSAtIHRoaXMuZ2V0TWludXRlcyhzZWNvbmQpIHx8XG4gICAgICAgICAgICB0aGlzLmdldFNlY29uZHMoZmlyc3QpIC0gdGhpcy5nZXRTZWNvbmRzKHNlY29uZClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=","import { InjectionToken } from '@angular/core';\n/**\n * DateTimeFormats injection token\n */\nexport const DATE_TIME_FORMATS = new InjectionToken('date-formats');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtZm9ybWF0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9kYXRldGltZS1mb3JtYXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF5Qi9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWtCLGNBQWMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEYXRlVGltZUZvcm1hdHMgaXMgaW50ZW5kZWQgdG8ga2VlcCBvcHRpb25zXG4gKiByZWxhdGVkIHRvIGRhdGUtdGltZSBmb3JtYXR0aW5nIC8gcGFyc2luZ1xuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZUZvcm1hdHMge1xuICAgIHBhcnNlOiB7XG4gICAgICAgIGRhdGVJbnB1dDogdW5rbm93bjtcbiAgICAgICAgdGltZUlucHV0OiB1bmtub3duO1xuICAgICAgICBkYXRlVGltZUlucHV0OiB1bmtub3duO1xuICAgIH07XG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6IHVua25vd247XG4gICAgICAgIHRpbWVJbnB1dDogdW5rbm93bjtcbiAgICAgICAgZGF0ZVRpbWVJbnB1dDogdW5rbm93bjtcblxuICAgICAgICBkYXRlQTExeUxhYmVsOiB1bmtub3duO1xuICAgICAgICBtb250aEExMXlMYWJlbDogdW5rbm93bjtcbiAgICAgICAgeWVhckExMXlMYWJlbDogdW5rbm93bjtcbiAgICB9O1xuICAgIHJhbmdlRGVsaW1pdGVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0ZVRpbWVGb3JtYXRzIGluamVjdGlvbiB0b2tlblxuICovXG5leHBvcnQgY29uc3QgREFURV9USU1FX0ZPUk1BVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF0ZVRpbWVGb3JtYXRzPignZGF0ZS1mb3JtYXRzJyk7XG4iXX0=","import { Inject, Optional, Pipe } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { Observable } from 'rxjs';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datetime-adapter\";\nimport * as i2 from \"rxjs\";\nexport class DateFormatPipe {\n /** @hidden */\n constructor(_dateTimeAdapter, _dateTimeFormats) {\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n }\n /** Format date object */\n transform(date, noDateMessage = '') {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\n }\n else {\n return noDateMessage;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFormatPipe, deps: [{ token: i1.DatetimeAdapter }, { token: DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFormatPipe, isStandalone: true, name: \"dateFormat\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFormatPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateFormat',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }] });\nexport class DateTimeFormatPipe {\n /** @hidden */\n constructor(_dateTimeAdapter, _dateTimeFormats) {\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n }\n /** Format date object */\n transform(date, noDateMessage = '') {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateTimeInput);\n }\n else {\n return noDateMessage;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateTimeFormatPipe, deps: [{ token: i1.DatetimeAdapter }, { token: DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DateTimeFormatPipe, isStandalone: true, name: \"dateTimeFormat\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateTimeFormatPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateTimeFormat',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }] });\nexport class DateFromNowPipe {\n /** @hidden */\n constructor(_dateTimeAdapter) {\n this._dateTimeAdapter = _dateTimeAdapter;\n }\n /** Format date object */\n transform(date, noDateMessage = '') {\n if (this._dateTimeAdapter.fromNow && typeof this._dateTimeAdapter.fromNow === 'function') {\n if (date) {\n return this._dateTimeAdapter.fromNow(date);\n }\n else {\n return noDateMessage;\n }\n }\n else {\n console.warn('No fromNow function provided to the DatetimeAdapter');\n return '';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFromNowPipe, deps: [{ token: i1.DatetimeAdapter }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFromNowPipe, isStandalone: true, name: \"dateFromNow\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DateFromNowPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateFromNow',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }] });\nexport class DayPeriodFormatPipe {\n /** @hidden */\n constructor(_dateTimeAdapter, _dateTimeFormats) {\n this._dateTimeAdapter = _dateTimeAdapter;\n this._dateTimeFormats = _dateTimeFormats;\n }\n /** Format date object for day period */\n transform(date, customFormat = {}, noDateMessage = '') {\n if (!date) {\n return noDateMessage;\n }\n return this._dateTimeAdapter.format(date, customFormat);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DayPeriodFormatPipe, deps: [{ token: i1.DatetimeAdapter }, { token: DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DayPeriodFormatPipe, isStandalone: true, name: \"dayPeriodFormat\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DayPeriodFormatPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dayPeriodFormat',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATE_TIME_FORMATS]\n }] }] });\nexport class TranslateDayPeriodPipe {\n /** @hidden */\n constructor(_language$) {\n this._language$ = _language$;\n /** @hidden */\n this._translationResolver = new TranslationResolver();\n this._currentLanguageSignal = toSignal(this._language$, { initialValue: {} });\n }\n /** Format date object for day period */\n transform(value) {\n if (!value) {\n return value;\n }\n const dayPeriodPattern = /(coreTime\\.\\w+Label)/;\n const match = value.match(dayPeriodPattern);\n if (match?.[0]) {\n const currentLanguage = this._currentLanguageSignal();\n const translatedValue = this._translationResolver.resolve(currentLanguage, match[0]);\n return translatedValue ? value.replace(dayPeriodPattern, translatedValue) : value;\n }\n // If no day period pattern is found, return the original value\n return value;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TranslateDayPeriodPipe, deps: [{ token: FD_LANGUAGE }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TranslateDayPeriodPipe, isStandalone: true, name: \"translateDayPeriod\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TranslateDayPeriodPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'translateDayPeriod',\n standalone: true,\n pure: false // required to update the value when the observable is resolved\n }]\n }], ctorParameters: () => [{ type: i2.Observable, decorators: [{\n type: Inject,\n args: [FD_LANGUAGE]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtZm9ybWF0LnBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2RhdGV0aW1lLWZvcm1hdC5waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUF1QyxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQU14RSxNQUFNLE9BQU8sY0FBYztJQUN2QixjQUFjO0lBQ2QsWUFDWSxnQkFBb0MsRUFDRyxnQkFBaUM7UUFEeEUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNHLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7SUFDakYsQ0FBQztJQUVKLHlCQUF5QjtJQUN6QixTQUFTLENBQUMsSUFBTyxFQUFFLGFBQWEsR0FBRyxFQUFFO1FBQ2pDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkYsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLGFBQWEsQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQzs4R0FkUSxjQUFjLGlEQUlDLGlCQUFpQjs0R0FKaEMsY0FBYzs7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDRixJ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T3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGRF9MQU5HVUFHRSwgRmRMYW5ndWFnZSwgRmRMYW5ndWFnZUtleUlkZW50aWZpZXIsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnLi9kYXRldGltZS1hZGFwdGVyJztcbmltcG9ydCB7IERBVEVfVElNRV9GT1JNQVRTLCBEYXRlVGltZUZvcm1hdHMgfSBmcm9tICcuL2RhdGV0aW1lLWZvcm1hdHMnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2RhdGVGb3JtYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUZvcm1hdFBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9kYXRlVGltZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRFX1RJTUVfRk9STUFUUykgcHJpdmF0ZSBfZGF0ZVRpbWVGb3JtYXRzOiBEYXRlVGltZUZvcm1hdHNcbiAgICApIHt9XG5cbiAgICAvKiogRm9ybWF0IGRhdGUgb2JqZWN0ICovXG4gICAgdHJhbnNmb3JtKGRhdGU6IEQsIG5vRGF0ZU1lc3NhZ2UgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmZvcm1hdChkYXRlLCB0aGlzLl9kYXRlVGltZUZvcm1hdHMuZGlzcGxheS5kYXRlSW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5vRGF0ZU1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZGF0ZVRpbWVGb3JtYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVGb3JtYXRQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFURV9USU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVUaW1lRm9ybWF0czogRGF0ZVRpbWVGb3JtYXRzXG4gICAgKSB7fVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCAqL1xuICAgIHRyYW5zZm9ybShkYXRlOiBELCBub0RhdGVNZXNzYWdlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mb3JtYXQoZGF0ZSwgdGhpcy5fZGF0ZVRpbWVGb3JtYXRzLmRpc3BsYXkuZGF0ZVRpbWVJbnB1dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbm9EYXRlTWVzc2FnZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdkYXRlRnJvbU5vdycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlRnJvbU5vd1BpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+KSB7fVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCAqL1xuICAgIHRyYW5zZm9ybShkYXRlOiBELCBub0RhdGVNZXNzYWdlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmZyb21Ob3cgJiYgdHlwZW9mIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mcm9tTm93ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZnJvbU5vdyhkYXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vRGF0ZU1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ05vIGZyb21Ob3cgZnVuY3Rpb24gcHJvdmlkZWQgdG8gdGhlIERhdGV0aW1lQWRhcHRlcicpO1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2RheVBlcmlvZEZvcm1hdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXlQZXJpb2RGb3JtYXRQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFURV9USU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVUaW1lRm9ybWF0czogRGF0ZVRpbWVGb3JtYXRzXG4gICAgKSB7fVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCBmb3IgZGF5IHBlcmlvZCAqL1xuICAgIHRyYW5zZm9ybShkYXRlOiBELCBjdXN0b21Gb3JtYXQ6IGFueSA9IHt9LCBub0RhdGVNZXNzYWdlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBub0RhdGVNZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mb3JtYXQoZGF0ZSwgY3VzdG9tRm9ybWF0KTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAndHJhbnNsYXRlRGF5UGVyaW9kJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHB1cmU6IGZhbHNlIC8vIHJlcXVpcmVkIHRvIHVwZGF0ZSB0aGUgdmFsdWUgd2hlbiB0aGUgb2JzZXJ2YWJsZSBpcyByZXNvbHZlZFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVEYXlQZXJpb2RQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGlvblJlc29sdmVyID0gbmV3IFRyYW5zbGF0aW9uUmVzb2x2ZXIoKTtcblxuICAgIC8qKiBTaWduYWwgdGhhdCB3aWxsIGhvbGQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50TGFuZ3VhZ2VTaWduYWw6IFNpZ25hbDxGZExhbmd1YWdlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoQEluamVjdChGRF9MQU5HVUFHRSkgcHJpdmF0ZSBfbGFuZ3VhZ2UkOiBPYnNlcnZhYmxlPEZkTGFuZ3VhZ2U+KSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRMYW5ndWFnZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuX2xhbmd1YWdlJCwgeyBpbml0aWFsVmFsdWU6IHt9IGFzIEZkTGFuZ3VhZ2UgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCBmb3IgZGF5IHBlcmlvZCAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXlQZXJpb2RQYXR0ZXJuID0gLyhjb3JlVGltZVxcLlxcdytMYWJlbCkvO1xuICAgICAgICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKGRheVBlcmlvZFBhdHRlcm4pO1xuXG4gICAgICAgIGlmIChtYXRjaD8uWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TGFuZ3VhZ2UgPSB0aGlzLl9jdXJyZW50TGFuZ3VhZ2VTaWduYWwoKTtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRWYWx1ZSA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgbWF0Y2hbMF0gYXMgRmRMYW5ndWFnZUtleUlkZW50aWZpZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlZFZhbHVlID8gdmFsdWUucmVwbGFjZShkYXlQZXJpb2RQYXR0ZXJuLCB0cmFuc2xhdGVkVmFsdWUpIDogdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBubyBkYXkgcGVyaW9kIHBhdHRlcm4gaXMgZm91bmQsIHJldHVybiB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbiJdfQ==","/**\n * Converts a given time string to a desired format.\n *\n * @param {string} inputStr - The input time string to be converted.\n * @returns {string} - The converted time string in the desired format.\n */\nexport function convertToDesiredFormat(inputStr) {\n const dayPeriodMapping = {\n morning: 0,\n afternoon: 12,\n evening: 12,\n night: 0\n };\n const dayPeriodPattern = /\\b(morning|afternoon|evening|night)\\b/;\n const amPmPattern = /\\b(AM|PM)\\b/i;\n const convertDayPeriod = (input) => {\n const match = input.match(dayPeriodPattern);\n if (match) {\n const period = match[0].toLowerCase();\n const timeShift = dayPeriodMapping[period];\n input = input.replace(dayPeriodPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n hours = (hours % 12) + timeShift;\n input = input.replace(timeMatch[0], `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`);\n }\n }\n return input;\n };\n const convertAmPm = (input) => {\n const match = input.match(amPmPattern);\n if (match) {\n const period = match[0].toUpperCase();\n input = input.replace(amPmPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n if (period === 'PM' && hours < 12) {\n hours += 12;\n }\n if (period === 'AM' && hours === 12) {\n hours = 0;\n }\n input = input.replace(timeMatch[0], `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`);\n }\n }\n return input;\n };\n inputStr = convertDayPeriod(inputStr);\n inputStr = convertAmPm(inputStr);\n return inputStr.replace(/\\bat\\b/i, '').trim();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZXRpbWUvZGF0ZXRpbWUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsUUFBZ0I7SUFDbkQsTUFBTSxnQkFBZ0IsR0FBRztRQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNWLFNBQVMsRUFBRSxFQUFFO1FBQ2IsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsQ0FBQztLQUNYLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLHVDQUF1QyxDQUFDO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQztJQUVuQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYSxFQUFVLEVBQUU7UUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEMsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMvQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25DLEtBQUssR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUNqQixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNoRixDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFO1FBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMvQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25DLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7b0JBQ2hDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDbEMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDZCxDQUFDO2dCQUNELEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUNqQixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNoRixDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVqQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gdGltZSBzdHJpbmcgdG8gYSBkZXNpcmVkIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXRTdHIgLSBUaGUgaW5wdXQgdGltZSBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgY29udmVydGVkIHRpbWUgc3RyaW5nIGluIHRoZSBkZXNpcmVkIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Rlc2lyZWRGb3JtYXQoaW5wdXRTdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF5UGVyaW9kTWFwcGluZyA9IHtcbiAgICAgICAgbW9ybmluZzogMCxcbiAgICAgICAgYWZ0ZXJub29uOiAxMixcbiAgICAgICAgZXZlbmluZzogMTIsXG4gICAgICAgIG5pZ2h0OiAwXG4gICAgfTtcblxuICAgIGNvbnN0IGRheVBlcmlvZFBhdHRlcm4gPSAvXFxiKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpXFxiLztcbiAgICBjb25zdCBhbVBtUGF0dGVybiA9IC9cXGIoQU18UE0pXFxiL2k7XG5cbiAgICBjb25zdCBjb252ZXJ0RGF5UGVyaW9kID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGlucHV0Lm1hdGNoKGRheVBlcmlvZFBhdHRlcm4pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcmlvZCA9IG1hdGNoWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCB0aW1lU2hpZnQgPSBkYXlQZXJpb2RNYXBwaW5nW3BlcmlvZF07XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoZGF5UGVyaW9kUGF0dGVybiwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVNYXRjaCA9IGlucHV0Lm1hdGNoKC9cXGR7MSwyfTpcXGR7Mn0vKTtcbiAgICAgICAgICAgIGlmICh0aW1lTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbaG91cnNTdHIsIG1pbnV0ZXNTdHJdID0gdGltZU1hdGNoWzBdLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgbGV0IGhvdXJzID0gTnVtYmVyKGhvdXJzU3RyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKG1pbnV0ZXNTdHIpO1xuICAgICAgICAgICAgICAgIGhvdXJzID0gKGhvdXJzICUgMTIpICsgdGltZVNoaWZ0O1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgdGltZU1hdGNoWzBdLFxuICAgICAgICAgICAgICAgICAgICBgJHtob3Vycy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH07XG5cbiAgICBjb25zdCBjb252ZXJ0QW1QbSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBpbnB1dC5tYXRjaChhbVBtUGF0dGVybik7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgY29uc3QgcGVyaW9kID0gbWF0Y2hbMF0udG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShhbVBtUGF0dGVybiwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVNYXRjaCA9IGlucHV0Lm1hdGNoKC9cXGR7MSwyfTpcXGR7Mn0vKTtcbiAgICAgICAgICAgIGlmICh0aW1lTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbaG91cnNTdHIsIG1pbnV0ZXNTdHJdID0gdGltZU1hdGNoWzBdLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgbGV0IGhvdXJzID0gTnVtYmVyKGhvdXJzU3RyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKG1pbnV0ZXNTdHIpO1xuICAgICAgICAgICAgICAgIGlmIChwZXJpb2QgPT09ICdQTScgJiYgaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgICAgICBob3VycyArPSAxMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBlcmlvZCA9PT0gJ0FNJyAmJiBob3VycyA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICAgICAgaG91cnMgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIHRpbWVNYXRjaFswXSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aG91cnMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9O1xuXG4gICAgaW5wdXRTdHIgPSBjb252ZXJ0RGF5UGVyaW9kKGlucHV0U3RyKTtcbiAgICBpbnB1dFN0ciA9IGNvbnZlcnRBbVBtKGlucHV0U3RyKTtcblxuICAgIHJldHVybiBpbnB1dFN0ci5yZXBsYWNlKC9cXGJhdFxcYi9pLCAnJykudHJpbSgpO1xufVxuIl19","/** Generate range of given lengths using given function. */\nexport function range(length, mapFn) {\n return Array.from(new Array(length)).map((_, index) => mapFn(index));\n}\n/** Adds 0 if number is less then 10 */\nexport function _leftPad(n) {\n return n === n % 10 ? `0${n}` : `${n}`;\n}\n/** Converts date to ISO8601 */\nexport function toIso8601(fdDate) {\n return [\n [fdDate.year, _leftPad(fdDate.month), _leftPad(fdDate.day)].join('-'),\n 'T',\n [_leftPad(fdDate.hour), _leftPad(fdDate.minute), _leftPad(fdDate.second)].join(':')\n ].join('');\n}\n/**\n * @param params e.g. { year: 2020, month: 1, day: 1, hour: 0, minute: 0, second: 0 }\n */\nexport function isValidByParams(params) {\n const { year, month, day, hour, minute, second } = params;\n if (!undefinedOrInRange(month, 1, 12) ||\n !undefinedOrInRange(day, 1, 31) ||\n !undefinedOrInRange(hour, 0, 23) ||\n !undefinedOrInRange(minute, 0, 59) ||\n !undefinedOrInRange(second, 0, 59)) {\n return false;\n }\n if (!isNaN(year) && !isNaN(month) && day != null && !isNaN(day)) {\n const tempDate = new Date(year, month - 1, day);\n if (tempDate.getMonth() + 1 !== month) {\n return false;\n }\n }\n const date = new Date(year, month - 1, day, hour, minute, second);\n return !Number.isNaN(date.getTime());\n}\nfunction undefinedOrInRange(value, from, to) {\n return value == null || (value >= from && value <= to);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCxNQUFNLFVBQVUsS0FBSyxDQUFJLE1BQWMsRUFBRSxLQUEyQjtJQUNoRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRUQsdUNBQXVDO0FBQ3ZDLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBUztJQUM5QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQU96QjtJQUNHLE9BQU87UUFDSCxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNyRSxHQUFHO1FBQ0gsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7S0FDdEYsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BTy9CO0lBQ0csTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzFELElBQ0ksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQy9CLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQ3BDLENBQUM7UUFDQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BDLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBeUIsRUFBRSxJQUFZLEVBQUUsRUFBVTtJQUMzRSxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEdlbmVyYXRlIHJhbmdlIG9mIGdpdmVuIGxlbmd0aHMgdXNpbmcgZ2l2ZW4gZnVuY3Rpb24uICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZ2U8VD4obGVuZ3RoOiBudW1iZXIsIG1hcEZuOiAoaW5kZXg6IG51bWJlcikgPT4gVCk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IEFycmF5KGxlbmd0aCkpLm1hcCgoXywgaW5kZXgpID0+IG1hcEZuKGluZGV4KSk7XG59XG5cbi8qKiBBZGRzIDAgaWYgbnVtYmVyIGlzIGxlc3MgdGhlbiAxMCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9sZWZ0UGFkKG46IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG4gPT09IG4gJSAxMCA/IGAwJHtufWAgOiBgJHtufWA7XG59XG5cbi8qKiBDb252ZXJ0cyBkYXRlIHRvIElTTzg2MDEgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0lzbzg2MDEoZmREYXRlOiB7XG4gICAgeWVhcjogbnVtYmVyO1xuICAgIG1vbnRoOiBudW1iZXI7XG4gICAgZGF5OiBudW1iZXI7XG4gICAgaG91cjogbnVtYmVyO1xuICAgIG1pbnV0ZTogbnVtYmVyO1xuICAgIHNlY29uZDogbnVtYmVyO1xufSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgW2ZkRGF0ZS55ZWFyLCBfbGVmdFBhZChmZERhdGUubW9udGgpLCBfbGVmdFBhZChmZERhdGUuZGF5KV0uam9pbignLScpLFxuICAgICAgICAnVCcsXG4gICAgICAgIFtfbGVmdFBhZChmZERhdGUuaG91ciksIF9sZWZ0UGFkKGZkRGF0ZS5taW51dGUpLCBfbGVmdFBhZChmZERhdGUuc2Vjb25kKV0uam9pbignOicpXG4gICAgXS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcGFyYW1zIGUuZy4geyB5ZWFyOiAyMDIwLCBtb250aDogMSwgZGF5OiAxLCBob3VyOiAwLCBtaW51dGU6IDAsIHNlY29uZDogMCB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQnlQYXJhbXMocGFyYW1zOiB7XG4gICAgeWVhcjogbnVtYmVyO1xuICAgIG1vbnRoOiBudW1iZXI7XG4gICAgZGF5PzogbnVtYmVyO1xuICAgIGhvdXI/OiBudW1iZXI7XG4gICAgbWludXRlPzogbnVtYmVyO1xuICAgIHNlY29uZD86IG51bWJlcjtcbn0pOiBib29sZWFuIHtcbiAgICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIH0gPSBwYXJhbXM7XG4gICAgaWYgKFxuICAgICAgICAhdW5kZWZpbmVkT3JJblJhbmdlKG1vbnRoLCAxLCAxMikgfHxcbiAgICAgICAgIXVuZGVmaW5lZE9ySW5SYW5nZShkYXksIDEsIDMxKSB8fFxuICAgICAgICAhdW5kZWZpbmVkT3JJblJhbmdlKGhvdXIsIDAsIDIzKSB8fFxuICAgICAgICAhdW5kZWZpbmVkT3JJblJhbmdlKG1pbnV0ZSwgMCwgNTkpIHx8XG4gICAgICAgICF1bmRlZmluZWRPckluUmFuZ2Uoc2Vjb25kLCAwLCA1OSlcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWlzTmFOKHllYXIpICYmICFpc05hTihtb250aCkgJiYgZGF5ICE9IG51bGwgJiYgIWlzTmFOKGRheSkpIHtcbiAgICAgICAgY29uc3QgdGVtcERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gICAgICAgIGlmICh0ZW1wRGF0ZS5nZXRNb250aCgpICsgMSAhPT0gbW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTtcbiAgICByZXR1cm4gIU51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSk7XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZE9ySW5SYW5nZSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCAodmFsdWUgPj0gZnJvbSAmJiB2YWx1ZSA8PSB0byk7XG59XG4iXX0=","import { INVALID_DATE_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { isValidByParams, toIso8601 } from './fd-date.utils';\n/**\n * FdDate class is used to represent date and time.\n *\n * It's a simplified analog of native Date instance.\n * It gives some convenience methods to work with date or time data.\n *\n */\nexport class FdDate {\n /**\n * Create FdDate\n * @param year e.g. 2020\n * @param month 1 = January, 12 = December\n * @param day 1 - 31\n * @param hour 0 - 23\n * @param minute 0 - 59\n * @param second 0 - 59\n */\n constructor(year, month = 1, day = 1, hour = 0, minute = 0, second = 0) {\n if (year === undefined) {\n return FdDate.getNow();\n }\n year = Number.parseInt(year + '', 10);\n month = Number.parseInt(month + '', 10);\n day = Number.parseInt(day + '', 10);\n hour = Number.parseInt(hour + '', 10);\n minute = Number.parseInt(minute + '', 10);\n second = Number.parseInt(second + '', 10);\n this._isValid = isValidByParams({\n year,\n month,\n day,\n hour,\n minute,\n second\n });\n this.year = this._isValid ? year : NaN;\n this.month = this._isValid ? month : NaN;\n this.day = this._isValid ? day : NaN;\n this.hour = this._isValid ? hour : NaN;\n this.minute = this._isValid ? minute : NaN;\n this.second = this._isValid ? second : NaN;\n return this;\n }\n /**\n * Create FdDate instance of the current moment\n */\n static getNow() {\n return FdDate.getFdDateByDate(new Date());\n }\n /**\n * Gets today's FdDate where hour, minute and second is set to 0\n */\n static getToday() {\n return FdDate.getNow().setTime(0, 0, 0);\n }\n /**\n * Convert js date object to FdDate model\n */\n static getFdDateByDate(date) {\n return new FdDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n }\n /**\n * Set hour, minute and second data\n * @param hour\n * @param minute\n * @param second\n */\n setTime(hour, minute, second) {\n this._isValid = isValidByParams({\n year: this.year,\n month: this.month,\n day: this.day,\n hour,\n minute,\n second\n });\n if (!this._isValid) {\n this.hour = NaN;\n this.minute = NaN;\n this.second = NaN;\n }\n else {\n this.hour = hour || hour === 0 ? hour : this.hour;\n this.minute = minute || minute === 0 ? minute : this.minute;\n this.second = second || second === 0 ? second : this.second;\n }\n return this;\n }\n /**\n * Get amount of milliseconds from 01.01.1970\n */\n getTimeStamp() {\n return this.toDate().getTime();\n }\n /**\n * Get number of weekday ex. Sunday = 1, Monday = 2, Tuesday = 3 etc.\n */\n getDayOfWeek() {\n return this.toDate().getDay() + 1;\n }\n /**\n * Get native date object from FdDate.\n */\n toDate() {\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isDateValid()) {\n return new Date(NaN);\n }\n return new Date(this.year, this.month - 1, this.day, this.hour, this.minute, this.second);\n }\n /**\n * Method that checks validity of current FdDate instance.\n */\n isDateValid() {\n return this instanceof FdDate && this._isValid;\n }\n /**\n * Get string representation in yyyy-mm-ddThh:mm:ss format\n */\n toString() {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this);\n }\n /**\n * The valueOf() method returns the primitive value of a FdDate.\n * Returns: The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date.\n */\n valueOf() {\n return this.getTimeStamp();\n }\n /**\n * Get date string in yyyy-mm-dd format\n */\n toDateString() {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this).split('T')[0];\n }\n /**\n * Get time string in hh:mm:ss format\n */\n toTimeString() {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this).split('T')[1];\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLE1BQU07SUFxQ2Y7Ozs7Ozs7O09BUUc7SUFDSCxZQUNJLElBQWEsRUFDYixRQUFnQixDQUFDLEVBQ2pCLE1BQWMsQ0FBQyxFQUNmLE9BQWUsQ0FBQyxFQUNoQixTQUFpQixDQUFDLEVBQ2xCLFNBQWlCLENBQUM7UUFFbEIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckIsT0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FB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Q0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDdEIsT0FBTyxrQkFBa0IsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sa0JBQWtCLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU5WQUxJRF9EQVRFX0VSUk9SIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgaXNWYWxpZEJ5UGFyYW1zLCB0b0lzbzg2MDEgfSBmcm9tICcuL2ZkLWRhdGUudXRpbHMnO1xuXG4vKipcbiAqIEZkRGF0ZSBjbGFzcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBkYXRlIGFuZCB0aW1lLlxuICpcbiAqIEl0J3MgYSBzaW1wbGlmaWVkIGFuYWxvZyBvZiBuYXRpdmUgRGF0ZSBpbnN0YW5jZS5cbiAqIEl0IGdpdmVzIHNvbWUgY29udmVuaWVuY2UgbWV0aG9kcyB0byB3b3JrIHdpdGggZGF0ZSBvciB0aW1lIGRhdGEuXG4gKlxuICovXG5leHBvcnQgY2xhc3MgRmREYXRlIHtcbiAgICAvKipcbiAgICAgKiBUaGUgeWVhciBvZiB0aGUgZGF0ZS5cbiAgICAgKi9cbiAgICB5ZWFyOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbW9udGggb2YgdGhlIGRhdGUuIDEgPSBKYW51YXJ5LCAxMiA9IERlY2VtYmVyLlxuICAgICAqL1xuICAgIG1vbnRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBEYXkgb2YgdGhlIGRhdGUuIFN0YXJ0cyBhdCAxLlxuICAgICAqL1xuICAgIGRheTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSBob3Vycy4gMCAtIDIzLlxuICAgICAqL1xuICAgIGhvdXI6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIERhdGUgbWludXRlcy4gMCAtIDU5LlxuICAgICAqL1xuICAgIG1pbnV0ZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSBzZWNvbmRzLiAwIC0gNTkuXG4gICAgICovXG4gICAgc2Vjb25kOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0aW9uIHN0YXRlXG4gICAgICovXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1ZhbGlkOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEZkRGF0ZVxuICAgICAqIEBwYXJhbSB5ZWFyIGUuZy4gMjAyMFxuICAgICAqIEBwYXJhbSBtb250aCAxID0gSmFudWFyeSwgMTIgPSBEZWNlbWJlclxuICAgICAqIEBwYXJhbSBkYXkgMSAtIDMxXG4gICAgICogQHBhcmFtIGhvdXIgMCAtIDIzXG4gICAgICogQHBhcmFtIG1pbnV0ZSAwIC0gNTlcbiAgICAgKiBAcGFyYW0gc2Vjb25kIDAgLSA1OVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICB5ZWFyPzogbnVtYmVyLFxuICAgICAgICBtb250aDogbnVtYmVyID0gMSxcbiAgICAgICAgZGF5OiBudW1iZXIgPSAxLFxuICAgICAgICBob3VyOiBudW1iZXIgPSAwLFxuICAgICAgICBtaW51dGU6IG51bWJlciA9IDAsXG4gICAgICAgIHNlY29uZDogbnVtYmVyID0gMFxuICAgICkge1xuICAgICAgICBpZiAoeWVhciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmREYXRlLmdldE5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgeWVhciA9IE51bWJlci5wYXJzZUludCh5ZWFyICsgJycsIDEwKTtcbiAgICAgICAgbW9udGggPSBOdW1iZXIucGFyc2VJbnQobW9udGggKyAnJywgMTApO1xuICAgICAgICBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF5ICsgJycsIDEwKTtcbiAgICAgICAgaG91ciA9IE51bWJlci5wYXJzZUludChob3VyICsgJycsIDEwKTtcbiAgICAgICAgbWludXRlID0gTnVtYmVyLnBhcnNlSW50KG1pbnV0ZSArICcnLCAxMCk7XG4gICAgICAgIHNlY29uZCA9IE51bWJlci5wYXJzZUludChzZWNvbmQgKyAnJywgMTApO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkQnlQYXJhbXMoe1xuICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgIG1vbnRoLFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgaG91cixcbiAgICAgICAgICAgIG1pbnV0ZSxcbiAgICAgICAgICAgIHNlY29uZFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnllYXIgPSB0aGlzLl9pc1ZhbGlkID8geWVhciA6IE5hTjtcbiAgICAgICAgdGhpcy5tb250aCA9IHRoaXMuX2lzVmFsaWQgPyBtb250aCA6IE5hTjtcbiAgICAgICAgdGhpcy5kYXkgPSB0aGlzLl9pc1ZhbGlkID8gZGF5IDogTmFOO1xuICAgICAgICB0aGlzLmhvdXIgPSB0aGlzLl9pc1ZhbGlkID8gaG91ciA6IE5hTjtcbiAgICAgICAgdGhpcy5taW51dGUgPSB0aGlzLl9pc1ZhbGlkID8gbWludXRlIDogTmFOO1xuICAgICAgICB0aGlzLnNlY29uZCA9IHRoaXMuX2lzVmFsaWQgPyBzZWNvbmQgOiBOYU47XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEZkRGF0ZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCBtb21lbnRcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0Tm93KCk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBGZERhdGUuZ2V0RmREYXRlQnlEYXRlKG5ldyBEYXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdG9kYXkncyBGZERhdGUgd2hlcmUgaG91ciwgbWludXRlIGFuZCBzZWNvbmQgaXMgc2V0IHRvIDBcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0VG9kYXkoKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIEZkRGF0ZS5nZXROb3coKS5zZXRUaW1lKDAsIDAsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBDb252ZXJ0IGpzIGRhdGUgb2JqZWN0IHRvIEZkRGF0ZSBtb2RlbFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRGZERhdGVCeURhdGUoZGF0ZTogRGF0ZSk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRmREYXRlKFxuICAgICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgICAgICAgZGF0ZS5nZXRIb3VycygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNaW51dGVzKCksXG4gICAgICAgICAgICBkYXRlLmdldFNlY29uZHMoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBob3VyLCBtaW51dGUgYW5kIHNlY29uZCBkYXRhXG4gICAgICogQHBhcmFtIGhvdXJcbiAgICAgKiBAcGFyYW0gbWludXRlXG4gICAgICogQHBhcmFtIHNlY29uZFxuICAgICAqL1xuICAgIHNldFRpbWUoaG91cjogbnVtYmVyLCBtaW51dGU/OiBudW1iZXIsIHNlY29uZD86IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkQnlQYXJhbXMoe1xuICAgICAgICAgICAgeWVhcjogdGhpcy55ZWFyLFxuICAgICAgICAgICAgbW9udGg6IHRoaXMubW9udGgsXG4gICAgICAgICAgICBkYXk6IHRoaXMuZGF5LFxuICAgICAgICAgICAgaG91cixcbiAgICAgICAgICAgIG1pbnV0ZSxcbiAgICAgICAgICAgIHNlY29uZFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaG91ciA9IE5hTjtcbiAgICAgICAgICAgIHRoaXMubWludXRlID0gTmFOO1xuICAgICAgICAgICAgdGhpcy5zZWNvbmQgPSBOYU47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhvdXIgPSBob3VyIHx8IGhvdXIgPT09IDAgPyBob3VyIDogdGhpcy5ob3VyO1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSBtaW51dGUgfHwgbWludXRlID09PSAwID8gbWludXRlIDogdGhpcy5taW51dGU7XG4gICAgICAgICAgICB0aGlzLnNlY29uZCA9IHNlY29uZCB8fCBzZWNvbmQgPT09IDAgPyBzZWNvbmQgOiB0aGlzLnNlY29uZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIGZyb20gMDEuMDEuMTk3MFxuICAgICAqL1xuICAgIGdldFRpbWVTdGFtcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUoKS5nZXRUaW1lKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IG51bWJlciBvZiB3ZWVrZGF5IGV4LiBTdW5kYXkgPSAxLCBNb25kYXkgPSAyLCBUdWVzZGF5ID0gMyBldGMuXG4gICAgICovXG4gICAgZ2V0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLmdldERheSgpICsgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgbmF0aXZlIGRhdGUgb2JqZWN0IGZyb20gRmREYXRlLlxuICAgICAqL1xuICAgIHRvRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgLy8gV2UgaGF2ZSBzdHJpY3RlciB2YWxpZGF0aW9uIHJ1bGVzIHRoYW4gRGF0ZSBvYmplY3QuXG4gICAgICAgIC8vIEZvciBleGFtcGxlLCBEYXRlIGFsbG93cyB2YWx1ZXMgZm9yIG1vbnRoPTEwMCBvciBmb3IgZGF5PTEwMC5cbiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIGRvIHRoaXMgdHJpY2sgZm9yIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgdmFsaWRhdGlvbiBzdGF0dXNcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGggLSAxLCB0aGlzLmRheSwgdGhpcy5ob3VyLCB0aGlzLm1pbnV0ZSwgdGhpcy5zZWNvbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrcyB2YWxpZGl0eSBvZiBjdXJyZW50IEZkRGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBpc0RhdGVWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBGZERhdGUgJiYgdGhpcy5faXNWYWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGluIHl5eXktbW0tZGRUaGg6bW06c3MgZm9ybWF0XG4gICAgICovXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0RBVEVfRVJST1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnllYXIgfHwgIXRoaXMubW9udGggfHwgIXRoaXMuZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Jc284NjAxKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZU9mKCkgbWV0aG9kIHJldHVybnMgdGhlIHByaW1pdGl2ZSB2YWx1ZSBvZiBhIEZkRGF0ZS5cbiAgICAgKiBSZXR1cm5zOiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQyBhbmQgdGhlIGdpdmVuIGRhdGUuXG4gICAgICovXG4gICAgdmFsdWVPZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUaW1lU3RhbXAoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgZGF0ZSBzdHJpbmcgaW4geXl5eS1tbS1kZCBmb3JtYXRcbiAgICAgKi9cbiAgICB0b0RhdGVTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0RBVEVfRVJST1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnllYXIgfHwgIXRoaXMubW9udGggfHwgIXRoaXMuZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Jc284NjAxKHRoaXMpLnNwbGl0KCdUJylbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRpbWUgc3RyaW5nIGluIGhoOm1tOnNzIGZvcm1hdFxuICAgICAqL1xuICAgIHRvVGltZVN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfREFURV9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMueWVhciB8fCAhdGhpcy5tb250aCB8fCAhdGhpcy5kYXkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9Jc284NjAxKHRoaXMpLnNwbGl0KCdUJylbMV07XG4gICAgfVxufVxuIl19","const dateInput = { year: 'numeric', month: 'numeric', day: 'numeric' };\nconst timeInput = { hour: 'numeric', minute: '2-digit' };\nconst dateTimeInput = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit'\n};\nexport const FD_DATETIME_FORMATS = {\n parse: {\n dateInput,\n timeInput,\n dateTimeInput\n },\n display: {\n dateInput,\n timeInput,\n dateTimeInput,\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthA11yLabel: { month: 'long', year: 'numeric' },\n yearA11yLabel: { year: 'numeric' }\n },\n rangeDelimiter: ' - '\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS1mb3JtYXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2ZkLWRhdGUtZm9ybWF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDeEUsTUFBTSxTQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUN6RCxNQUFNLGFBQWEsR0FBRztJQUNsQixJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxTQUFTO0lBQ2hCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsU0FBUztDQUNwQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQW9CO0lBQ2hELEtBQUssRUFBRTtRQUNILFNBQVM7UUFDVCxTQUFTO1FBQ1QsYUFBYTtLQUNoQjtJQUNELE9BQU8sRUFBRTtRQUNMLFNBQVM7UUFDVCxTQUFTO1FBQ1QsYUFBYTtRQUViLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ2pFLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtRQUNsRCxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0tBQ3JDO0lBQ0QsY0FBYyxFQUFFLEtBQUs7Q0FDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVUaW1lRm9ybWF0cyB9IGZyb20gJy4vZGF0ZXRpbWUtZm9ybWF0cyc7XG5cbmNvbnN0IGRhdGVJbnB1dCA9IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ251bWVyaWMnLCBkYXk6ICdudW1lcmljJyB9O1xuY29uc3QgdGltZUlucHV0ID0geyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH07XG5jb25zdCBkYXRlVGltZUlucHV0ID0ge1xuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ251bWVyaWMnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICBtaW51dGU6ICcyLWRpZ2l0J1xufTtcblxuZXhwb3J0IGNvbnN0IEZEX0RBVEVUSU1FX0ZPUk1BVFM6IERhdGVUaW1lRm9ybWF0cyA9IHtcbiAgICBwYXJzZToge1xuICAgICAgICBkYXRlSW5wdXQsXG4gICAgICAgIHRpbWVJbnB1dCxcbiAgICAgICAgZGF0ZVRpbWVJbnB1dFxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQsXG4gICAgICAgIHRpbWVJbnB1dCxcbiAgICAgICAgZGF0ZVRpbWVJbnB1dCxcblxuICAgICAgICBkYXRlQTExeUxhYmVsOiB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICdsb25nJywgZGF5OiAnbnVtZXJpYycgfSxcbiAgICAgICAgbW9udGhBMTF5TGFiZWw6IHsgbW9udGg6ICdsb25nJywgeWVhcjogJ251bWVyaWMnIH0sXG4gICAgICAgIHllYXJBMTF5TGFiZWw6IHsgeWVhcjogJ251bWVyaWMnIH1cbiAgICB9LFxuICAgIHJhbmdlRGVsaW1pdGVyOiAnIC0gJ1xufTtcbiJdfQ==","import { Platform } from '@angular/cdk/platform';\nimport { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\nimport { INVALID_DATE_ERROR, LETTERS_UNICODE_RANGE } from '@fundamental-ngx/cdk/utils';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { FdDate } from './fd-date';\nimport { range, toIso8601 } from './fd-date.utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/platform\";\nconst AM_DAY_PERIOD_DEFAULT = 'AM';\nconst PM_DAY_PERIOD_DEFAULT = 'PM';\n/**\n * DatetimeAdapter implementation based on FdDate.\n *\n * This uses FdDate as a date model and relies on Intl.DateTimeFormat\n * for formatting and translation purposes.\n *\n */\nexport class FdDatetimeAdapter extends DatetimeAdapter {\n /** @hidden */\n constructor(localeId, platform) {\n super();\n super.setLocale(localeId);\n this._fixYearsRangeIssue = platform.TRIDENT || platform.EDGE;\n }\n /** Get year */\n getYear(date) {\n return date.year;\n }\n /** Get month */\n getMonth(date) {\n return date.month;\n }\n /** Get date */\n getDate(date) {\n return date.day;\n }\n /** Get day of week */\n getDayOfWeek(date) {\n return this._createDateInstanceByFdDate(date).getDay() + 1;\n }\n /** Get hours */\n getHours(date) {\n return date.hour;\n }\n /** Get minutes */\n getMinutes(date) {\n return date.minute;\n }\n /** Get seconds */\n getSeconds(date) {\n return date.second;\n }\n /** Get week number */\n getWeekNumber(fdDate) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n const firstWeek = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 + Math.round(((date.getTime() - firstWeek.getTime()) / 86400000 - 3 + ((firstWeek.getDay() + 6) % 7)) / 7));\n }\n /** Get month names */\n getMonthNames(style) {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, (i) => this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, i, 1))));\n }\n /** Get date names */\n getDateNames() {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, (i) => this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1))));\n }\n /** Get day of week names */\n getDayOfWeekNames(style) {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, (i) => this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1))));\n }\n /** Get year name */\n getYearName(date) {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(dateTimeFormat, dateInstance));\n }\n /** Get week name */\n getWeekName(date) {\n const weekNumber = this.getWeekNumber(date);\n return weekNumber.toLocaleString(this.locale);\n }\n /** Get hour names */\n getHourNames({ meridian, twoDigit }) {\n return range(24, (hour) => {\n if (meridian) {\n hour = hour === 0 || hour === 12 ? 12 : hour % 12;\n }\n return hour.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n /** Get minute names */\n getMinuteNames({ twoDigit }) {\n return range(60, (minute) => minute.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 }));\n }\n /** Get second names */\n getSecondNames({ twoDigit }) {\n return range(60, (second) => second.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 }));\n }\n /** Get day period names */\n getDayPeriodNames() {\n const DEFAULT_PERIODS = [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n const formatter = new Intl.DateTimeFormat(this.locale, {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true\n });\n try {\n const am = formatter.formatToParts(new Date(2020, 0, 1, 6)).find(({ type }) => type === 'dayPeriod')?.value;\n const pm = formatter\n .formatToParts(new Date(2020, 0, 1, 16))\n .find(({ type }) => type === 'dayPeriod')?.value;\n return am && pm ? [am, pm] : DEFAULT_PERIODS;\n }\n catch {\n const dayPeriodRegexp = new RegExp(`(${LETTERS_UNICODE_RANGE}+\\\\.*)+`, 'g');\n const amRegExpMatch = formatter.format(new Date(2020, 0, 1, 6)).match(dayPeriodRegexp);\n const pmRegExpMatch = formatter.format(new Date(2020, 0, 1, 16)).match(dayPeriodRegexp);\n return amRegExpMatch && pmRegExpMatch\n ? [amRegExpMatch[0], pmRegExpMatch[0]]\n : [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n }\n }\n /** Set hours */\n setHours(date, hours) {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setHours(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n /** Set minutes */\n setMinutes(date, hours) {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setMinutes(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n /** Set seconds */\n setSeconds(date, hours) {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setSeconds(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n /** Get first day of week */\n getFirstDayOfWeek() {\n // can't retrieve this info from Intl object or Date object, default to Sunday.\n return 0;\n }\n /** Get number of days in a month */\n getNumDaysInMonth(fdDate) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date.getDate();\n }\n /** Create a date object */\n createDate(year, month = 1, date = 1) {\n return new FdDate(year, month, date);\n }\n /** Get a today date object */\n today() {\n return FdDate.getToday();\n }\n /** Get a now date object */\n now() {\n return FdDate.getNow();\n }\n /** Parse any value to date object */\n parse(value, parseFormat = {}) {\n if (!value && value !== 0) {\n return null;\n }\n if (value instanceof FdDate) {\n return this.clone(value);\n }\n /**\n * We have no way using the native JS Date to set the parse format or locale,\n * so we ignore these parameters.\n */\n let date = new Date(Date.parse(value));\n if (typeof value === 'number') {\n date = new Date(value);\n }\n // Check if we are dealing with a time string\n if (Number.isNaN(date.valueOf()) &&\n typeof value === 'string' &&\n !parseFormat.year &&\n !parseFormat.day &&\n !parseFormat.month &&\n parseFormat.hour) {\n date = this._parseTimeString(value);\n }\n return this._createFdDateFromDateInstance(date);\n }\n /** Format date object to string */\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n return INVALID_DATE_ERROR;\n }\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._fixYearsRangeIssue && (date.year < 1 || date.year > 9999)) {\n date = this.clone(date);\n date.year = Math.max(1, Math.min(9999, date.year));\n }\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n return displayFormat.dayPeriod\n ? this._formatWithDayPeriod(date, displayFormat)\n : this._formatWithIntl(date, displayFormat);\n }\n /** Add years to a date */\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n /** Add months to a date */\n addCalendarMonths(fdDate, months) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setMonth(date.getMonth() + months);\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n if (date.getDate() !== fdDate.day) {\n date.setDate(0);\n }\n return this._createFdDateFromDateInstance(date);\n }\n /** Add days to a date */\n addCalendarDays(fdDate, days) {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setDate(date.getDate() + days);\n return this._createFdDateFromDateInstance(date);\n }\n /** Clone a date object */\n clone(date) {\n return new FdDate(date.year, date.month, date.day, date.hour, date.minute, date.second);\n }\n /** Check if date object is valid */\n isValid(date) {\n if (!(date instanceof FdDate)) {\n return false;\n }\n return date.isDateValid();\n }\n /** Check if date between given dates */\n isBetween(dateToCheck, startDate, endDate) {\n const date = this._createDateInstanceByFdDate(dateToCheck);\n const start = this._createDateInstanceByFdDate(startDate);\n const end = this._createDateInstanceByFdDate(endDate);\n return date.getTime() > start.getTime() && date.getTime() < end.getTime();\n }\n /** Check if dates are equal */\n datesEqual(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n // skip time value\n const date1Str = this.toIso8601(date1).split('T')[0];\n const date2Str = this.toIso8601(date2).split('T')[0];\n return date1Str === date2Str;\n }\n /** Check if dates and time are equal */\n dateTimesEqual(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return this.toIso8601(date1) === this.toIso8601(date2);\n }\n /** Format date object to ISO8601 string */\n toIso8601(fdDate) {\n return toIso8601(fdDate);\n }\n /** Check if a time format includes a day period */\n isTimeFormatIncludesDayPeriod(displayFormat) {\n if (typeof displayFormat?.hour12 === 'boolean') {\n return displayFormat.hour12;\n }\n const formattedDateNoPeriodOption = this.format(this.createDate(2020), displayFormat);\n const formattedDateWithPeriodOption = this.format(this.createDate(2020), { ...displayFormat, hour12: true });\n return formattedDateWithPeriodOption === formattedDateNoPeriodOption;\n }\n /** Check if a time format includes hours */\n isTimeFormatIncludesHours(displayFormat) {\n return typeof displayFormat?.hour === 'string';\n }\n /** Check if a time format includes minutes */\n isTimeFormatIncludesMinutes(displayFormat) {\n return typeof displayFormat?.minute === 'string';\n }\n /** Check if a time format includes seconds */\n isTimeFormatIncludesSeconds(displayFormat) {\n return typeof displayFormat?.second === 'string';\n }\n /** Format with custom pattern including day period names */\n _formatWithDayPeriod(date, displayFormat) {\n const formattedTime = this._formatWithIntl(date, { ...displayFormat, dayPeriod: undefined });\n const dayPeriodName = this._getDayPeriodName(date);\n return this._insertDayPeriod(formattedTime, dayPeriodName, displayFormat);\n }\n /** Insert day period into the formatted string */\n _insertDayPeriod(formattedTime, dayPeriodName, displayFormat) {\n if (displayFormat.year || displayFormat.month || displayFormat.day) {\n return formattedTime\n .replace(/(\\d{1,2}:\\d{2})( [AP]M)?/, `$1 ${dayPeriodName}`)\n .replace(/,\\s*(\\d{1,2}:\\d{2})/, `, at $1 ${dayPeriodName}`);\n }\n else {\n return formattedTime.replace(/(\\d{1,2}:\\d{2}(:\\d{2})?)/, `$1 ${dayPeriodName}`);\n }\n }\n /** Get day period name based on the hour */\n _getDayPeriodName(date) {\n const hour = date.hour;\n if (hour < 6) {\n return 'coreTime.nightLabel';\n }\n else if (hour < 12) {\n return 'coreTime.morningLabel';\n }\n else if (hour < 18) {\n return 'coreTime.afternoonLabel';\n }\n else {\n return 'coreTime.eveningLabel';\n }\n }\n /** Format date using Intl.DateTimeFormat */\n _formatWithIntl(date, displayFormat) {\n const formatter = new Intl.DateTimeFormat(this.locale, displayFormat);\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(formatter, dateInstance));\n }\n /**\n * @hidden\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n _stripDirectionalityCharacters(str) {\n return str.replace(/[\\u200e\\u200f]/g, '').replace(/\\u202f/g, ' ');\n }\n /** @hidden */\n _format(formatter, date) {\n if (Number.isNaN(date.valueOf())) {\n return INVALID_DATE_ERROR;\n }\n date = this._createUTCDateInstance(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return formatter.format(date);\n }\n /**\n * @hidden\n * Create native Date instance from FdDate\n * @param date FdDate instance\n * @returns date Native date instance\n */\n _createDateInstanceByFdDate(fdDate) {\n const { year, month, day, hour, minute, second } = fdDate;\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isValid(fdDate)) {\n return new Date(NaN);\n }\n const date = new Date();\n date.setFullYear(year, month - 1, day);\n date.setHours(hour, minute, second, 0);\n return date;\n }\n /**\n * @hidden\n * Create native Date instance in UTC\n * @param year The year\n * @param month The month as a number between 0 and 11\n * @param day The date as a number between 1 and 31.\n * @param hours The hours as a number between 0 - 24\n * @param minutes The minutes as a number between 0 - 59\n * @param seconds The seconds as a number between 0 - 59\n * @param milliseconds The milliseconds as a number between 0 - 59\n */\n _createUTCDateInstance(year, month, day, hours = 0, minutes = 0, seconds = 0, milliseconds = 0) {\n const utcDate = new Date();\n utcDate.setUTCFullYear(year, month, day);\n utcDate.setUTCHours(hours, minutes, seconds, milliseconds);\n return utcDate;\n }\n /** @hidden */\n _createFdDateFromDateInstance(date) {\n return new FdDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n }\n /**\n * @hidden\n *\n * Since FdDatetimeAdapter can parse only \"en-US\" locale\n * there is no reason to create comprehensive time parse\n * that can understand plenty of locales.\n *\n * @param timeStr Time string to parse (E.g. '10:30 PM')\n * @returns date Native date instance\n *\n */\n _parseTimeString(timeStr) {\n /**\n * Date.parse('10:30 AM') doesn't work so we need do a trick\n * and prepend it by a date string.\n */\n const dateStr = new Intl.DateTimeFormat('en-US').format(new Date());\n const dateTimeString = `${dateStr} ${timeStr}`;\n return new Date(Date.parse(dateTimeString));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapter, deps: [{ token: LOCALE_ID, optional: true }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: i1.Platform }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRldGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUVuRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQU1uQzs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBdUI7SUFJMUQsY0FBYztJQUNkLFlBQTJDLFFBQWdCLEVBQUUsUUFBa0I7UUFDM0UsS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDakUsQ0FBQztJQUtELGVBQWU7SUFDZixPQUFPLENBQUMsSUFBWTtRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixRQUFRLENBQUMsSUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIs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O0lBQ04sNkJBQTZCLENBQUMsSUFBVTtRQUM1QyxPQUFPLElBQUksTUFBTSxDQUNiLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFDbkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUNkLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FDcEIsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ssZ0JBQWdCLENBQUMsT0FBZTtRQUNwQzs7O1dBR0c7UUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLGNBQWMsR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMvQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDOzhHQWxmUSxpQkFBaUIsa0JBS00sU0FBUztrSEFMaEMsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkFNTSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIExPQ0FMRV9JRCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSU5WQUxJRF9EQVRFX0VSUk9SLCBMRVRURVJTX1VOSUNPREVfUkFOR0UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmltcG9ydCB7IEZkTGFuZ3VhZ2VLZXlJZGVudGlmaWVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJy4vZGF0ZXRpbWUtYWRhcHRlcic7XG5pbXBvcnQgeyBGZERhdGUgfSBmcm9tICcuL2ZkLWRhdGUnO1xuaW1wb3J0IHsgcmFuZ2UsIHRvSXNvODYwMSB9IGZyb20gJy4vZmQtZGF0ZS51dGlscyc7XG5cbmNvbnN0IEFNX0RBWV9QRVJJT0RfREVGQVVMVCA9ICdBTSc7XG5jb25zdCBQTV9EQVlfUEVSSU9EX0RFRkFVTFQgPSAnUE0nO1xuXG50eXBlIEN1c3RvbURhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IE9taXQ8SW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMsICdkYXlQZXJpb2QnPiAmIHtcbiAgICBkYXlQZXJpb2Q/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBEYXRldGltZUFkYXB0ZXIgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gRmREYXRlLlxuICpcbiAqIFRoaXMgdXNlcyBGZERhdGUgYXMgYSBkYXRlIG1vZGVsIGFuZCByZWxpZXMgb24gSW50bC5EYXRlVGltZUZvcm1hdFxuICogZm9yIGZvcm1hdHRpbmcgYW5kIHRyYW5zbGF0aW9uIHB1cnBvc2VzLlxuICpcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZkRGF0ZXRpbWVBZGFwdGVyIGV4dGVuZHMgRGF0ZXRpbWVBZGFwdGVyPEZkRGF0ZT4ge1xuICAgIC8qKiBXaGV0aGVyIHRvIGNsYW1wIHRoZSBkYXRlIGJldHdlZW4gMSBhbmQgOTk5OSB0byBhdm9pZCBJRSBhbmQgRWRnZSBlcnJvcnMuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZml4WWVhcnNSYW5nZUlzc3VlOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlSWQ6IHN0cmluZywgcGxhdGZvcm06IFBsYXRmb3JtKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHN1cGVyLnNldExvY2FsZShsb2NhbGVJZCk7XG4gICAgICAgIHRoaXMuX2ZpeFllYXJzUmFuZ2VJc3N1ZSA9IHBsYXRmb3JtLlRSSURFTlQgfHwgcGxhdGZvcm0uRURHRTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZyb21Ob3c/KGRhdGU6IEZkRGF0ZSk6IHN0cmluZztcblxuICAgIC8qKiBHZXQgeWVhciAqL1xuICAgIGdldFllYXIoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUueWVhcjtcbiAgICB9XG5cbiAgICAvKiogR2V0IG1vbnRoICovXG4gICAgZ2V0TW9udGgoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUubW9udGg7XG4gICAgfVxuXG4gICAgLyoqIEdldCBkYXRlICovXG4gICAgZ2V0RGF0ZShkYXRlOiBGZERhdGUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5kYXk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBkYXkgb2Ygd2VlayAqL1xuICAgIGdldERheU9mV2VlayhkYXRlOiBGZERhdGUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZGF0ZSkuZ2V0RGF5KCkgKyAxO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaG91cnMgKi9cbiAgICBnZXRIb3VycyhkYXRlOiBGZERhdGUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5ob3VyO1xuICAgIH1cblxuICAgIC8qKiBHZXQgbWludXRlcyAqL1xuICAgIGdldE1pbnV0ZXMoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUubWludXRlO1xuICAgIH1cblxuICAgIC8qKiBHZXQgc2Vjb25kcyAqL1xuICAgIGdldFNlY29uZHMoZGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuc2Vjb25kO1xuICAgIH1cblxuICAgIC8qKiBHZXQgd2VlayBudW1iZXIgKi9cbiAgICBnZXRXZWVrTnVtYmVyKGZkRGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGZkRGF0ZSk7XG5cbiAgICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMyAtICgoZGF0ZS5nZXREYXkoKSArIDYpICUgNykpO1xuXG4gICAgICAgIC8vIEphbnVhcnkgNCBpcyBhbHdheXMgaW4gd2VlayAxLlxuICAgICAgICBjb25zdCBmaXJzdFdlZWsgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDQpO1xuXG4gICAgICAgIC8vIEFkanVzdCB0byBUaHVyc2RheSBpbiB3ZWVrIDEgYW5kIGNvdW50IG51bWJlciBvZiB3ZWVrcyBmcm9tIGRhdGUgdG8gd2VlazEuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAxICsgTWF0aC5yb3VuZCgoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3RXZWVrLmdldFRpbWUoKSkgLyA4NjQwMDAwMCAtIDMgKyAoKGZpcnN0V2Vlay5nZXREYXkoKSArIDYpICUgNykpIC8gNylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IG1vbnRoIG5hbWVzICovXG4gICAgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBkYXRlVGltZUZvcm1hdCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7IG1vbnRoOiBzdHlsZSwgdGltZVpvbmU6ICd1dGMnIH0pO1xuICAgICAgICByZXR1cm4gcmFuZ2UoMTIsIChpKSA9PlxuICAgICAgICAgICAgdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBuZXcgRGF0ZSgyMDE3LCBpLCAxKSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBkYXRlIG5hbWVzICovXG4gICAgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgZGF0ZVRpbWVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwgeyBkYXk6ICdudW1lcmljJywgdGltZVpvbmU6ICd1dGMnIH0pO1xuICAgICAgICByZXR1cm4gcmFuZ2UoMzEsIChpKSA9PlxuICAgICAgICAgICAgdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZGF5IG9mIHdlZWsgbmFtZXMgKi9cbiAgICBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBkYXRlVGltZUZvcm1hdCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7IHdlZWtkYXk6IHN0eWxlLCB0aW1lWm9uZTogJ3V0YycgfSk7XG4gICAgICAgIHJldHVybiByYW5nZSg3LCAoaSkgPT5cbiAgICAgICAgICAgIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChkYXRlVGltZUZvcm1hdCwgbmV3IERhdGUoMjAxNywgMCwgaSArIDEpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHllYXIgbmFtZSAqL1xuICAgIGdldFllYXJOYW1lKGRhdGU6IEZkRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGVUaW1lRm9ybWF0ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnLCB0aW1lWm9uZTogJ3V0YycgfSk7XG4gICAgICAgIGNvbnN0IGRhdGVJbnN0YW5jZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGRhdGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBkYXRlSW5zdGFuY2UpKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHdlZWsgbmFtZSAqL1xuICAgIGdldFdlZWtOYW1lKGRhdGU6IEZkRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHdlZWtOdW1iZXIgPSB0aGlzLmdldFdlZWtOdW1iZXIoZGF0ZSk7XG4gICAgICAgIHJldHVybiB3ZWVrTnVtYmVyLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGhvdXIgbmFtZXMgKi9cbiAgICBnZXRIb3VyTmFtZXMoeyBtZXJpZGlhbiwgdHdvRGlnaXQgfTogeyB0d29EaWdpdDogYm9vbGVhbjsgbWVyaWRpYW46IGJvb2xlYW4gfSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlKDI0LCAoaG91cikgPT4ge1xuICAgICAgICAgICAgaWYgKG1lcmlkaWFuKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IGhvdXIgPT09IDAgfHwgaG91ciA9PT0gMTIgPyAxMiA6IGhvdXIgJSAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBob3VyLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlLCB7IG1pbmltdW1JbnRlZ2VyRGlnaXRzOiB0d29EaWdpdCA/IDIgOiAxIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogR2V0IG1pbnV0ZSBuYW1lcyAqL1xuICAgIGdldE1pbnV0ZU5hbWVzKHsgdHdvRGlnaXQgfTogeyB0d29EaWdpdDogYm9vbGVhbiB9KTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gcmFuZ2UoNjAsIChtaW51dGUpID0+IG1pbnV0ZS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSwgeyBtaW5pbXVtSW50ZWdlckRpZ2l0czogdHdvRGlnaXQgPyAyIDogMSB9KSk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBzZWNvbmQgbmFtZXMgKi9cbiAgICBnZXRTZWNvbmROYW1lcyh7IHR3b0RpZ2l0IH06IHsgdHdvRGlnaXQ6IGJvb2xlYW4gfSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlKDYwLCAoc2Vjb25kKSA9PiBzZWNvbmQudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgbWluaW11bUludGVnZXJEaWdpdHM6IHR3b0RpZ2l0ID8gMiA6IDEgfSkpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZGF5IHBlcmlvZCBuYW1lcyAqL1xuICAgIGdldERheVBlcmlvZE5hbWVzKCk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICAgICAgICBjb25zdCBERUZBVUxUX1BFUklPRFM6IFtzdHJpbmcsIHN0cmluZ10gPSBbQU1fREFZX1BFUklPRF9ERUZBVUxULCBQTV9EQVlfUEVSSU9EX0RFRkFVTFRdO1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7XG4gICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgICAgIGhvdXIxMjogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYW0gPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLCAwLCAxLCA2KSkuZmluZCgoeyB0eXBlIH0pID0+IHR5cGUgPT09ICdkYXlQZXJpb2QnKT8udmFsdWU7XG4gICAgICAgICAgICBjb25zdCBwbSA9IGZvcm1hdHRlclxuICAgICAgICAgICAgICAgIC5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKDIwMjAsIDAsIDEsIDE2KSlcbiAgICAgICAgICAgICAgICAuZmluZCgoeyB0eXBlIH0pID0+IHR5cGUgPT09ICdkYXlQZXJpb2QnKT8udmFsdWU7XG5cbiAgICAgICAgICAgIHJldHVybiBhbSAmJiBwbSA/IFthbSwgcG1dIDogREVGQVVMVF9QRVJJT0RTO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGNvbnN0IGRheVBlcmlvZFJlZ2V4cCA9IG5ldyBSZWdFeHAoYCgke0xFVFRFUlNfVU5JQ09ERV9SQU5HRX0rXFxcXC4qKStgLCAnZycpO1xuICAgICAgICAgICAgY29uc3QgYW1SZWdFeHBNYXRjaCA9IGZvcm1hdHRlci5mb3JtYXQobmV3IERhdGUoMjAyMCwgMCwgMSwgNikpLm1hdGNoKGRheVBlcmlvZFJlZ2V4cCk7XG4gICAgICAgICAgICBjb25zdCBwbVJlZ0V4cE1hdGNoID0gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDIwLCAwLCAxLCAxNikpLm1hdGNoKGRheVBlcmlvZFJlZ2V4cCk7XG5cbiAgICAgICAgICAgIHJldHVybiBhbVJlZ0V4cE1hdGNoICYmIHBtUmVnRXhwTWF0Y2hcbiAgICAgICAgICAgICAgICA/IFthbVJlZ0V4cE1hdGNoWzBdLCBwbVJlZ0V4cE1hdGNoWzBdXVxuICAgICAgICAgICAgICAgIDogW0FNX0RBWV9QRVJJT0RfREVGQVVMVCwgUE1fREFZX1BFUklPRF9ERUZBVUxUXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBTZXQgaG91cnMgKi9cbiAgICBzZXRIb3VycyhkYXRlOiBGZERhdGUsIGhvdXJzOiBudW1iZXIpOiBGZERhdGUge1xuICAgICAgICBjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShkYXRlKTtcbiAgICAgICAgZGF0ZUluc3RhbmNlLnNldEhvdXJzKGhvdXJzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZkRGF0ZUZyb21EYXRlSW5zdGFuY2UoZGF0ZUluc3RhbmNlKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IG1pbnV0ZXMgKi9cbiAgICBzZXRNaW51dGVzKGRhdGU6IEZkRGF0ZSwgaG91cnM6IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIGNvbnN0IGRhdGVJbnN0YW5jZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGRhdGUpO1xuICAgICAgICBkYXRlSW5zdGFuY2Uuc2V0TWludXRlcyhob3Vycyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGVJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBzZWNvbmRzICovXG4gICAgc2V0U2Vjb25kcyhkYXRlOiBGZERhdGUsIGhvdXJzOiBudW1iZXIpOiBGZERhdGUge1xuICAgICAgICBjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShkYXRlKTtcbiAgICAgICAgZGF0ZUluc3RhbmNlLnNldFNlY29uZHMoaG91cnMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRmREYXRlRnJvbURhdGVJbnN0YW5jZShkYXRlSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgZmlyc3QgZGF5IG9mIHdlZWsgKi9cbiAgICBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xuICAgICAgICAvLyBjYW4ndCByZXRyaWV2ZSB0aGlzIGluZm8gZnJvbSBJbnRsIG9iamVjdCBvciBEYXRlIG9iamVjdCwgZGVmYXVsdCB0byBTdW5kYXkuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKiBHZXQgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCAqL1xuICAgIGdldE51bURheXNJbk1vbnRoKGZkRGF0ZTogRmREYXRlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGZkRGF0ZSk7XG4gICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgMSk7XG4gICAgICAgIGRhdGUuc2V0RGF0ZSgwKTtcbiAgICAgICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBkYXRlIG9iamVjdCAqL1xuICAgIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aCA9IDEsIGRhdGUgPSAxKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGZERhdGUoeWVhciwgbW9udGgsIGRhdGUpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgYSB0b2RheSBkYXRlIG9iamVjdCAqL1xuICAgIHRvZGF5KCk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBGZERhdGUuZ2V0VG9kYXkoKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGEgbm93IGRhdGUgb2JqZWN0ICovXG4gICAgbm93KCk6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiBGZERhdGUuZ2V0Tm93KCk7XG4gICAgfVxuXG4gICAgLyoqIFBhcnNlIGFueSB2YWx1ZSB0byBkYXRlIG9iamVjdCAqL1xuICAgIHBhcnNlKHZhbHVlOiBhbnksIHBhcnNlRm9ybWF0OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KTogRmREYXRlIHwgbnVsbCB7XG4gICAgICAgIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlIGhhdmUgbm8gd2F5IHVzaW5nIHRoZSBuYXRpdmUgSlMgRGF0ZSB0byBzZXQgdGhlIHBhcnNlIGZvcm1hdCBvciBsb2NhbGUsXG4gICAgICAgICAqIHNvIHdlIGlnbm9yZSB0aGVzZSBwYXJhbWV0ZXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShEYXRlLnBhcnNlKHZhbHVlKSk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHRpbWUgc3RyaW5nXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIE51bWJlci5pc05hTihkYXRlLnZhbHVlT2YoKSkgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICFwYXJzZUZvcm1hdC55ZWFyICYmXG4gICAgICAgICAgICAhcGFyc2VGb3JtYXQuZGF5ICYmXG4gICAgICAgICAgICAhcGFyc2VGb3JtYXQubW9udGggJiZcbiAgICAgICAgICAgIHBhcnNlRm9ybWF0LmhvdXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBkYXRlID0gdGhpcy5fcGFyc2VUaW1lU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGUpO1xuICAgIH1cblxuICAgIC8qKiBGb3JtYXQgZGF0ZSBvYmplY3QgdG8gc3RyaW5nICovXG4gICAgZm9ybWF0KGRhdGU6IEZkRGF0ZSwgZGlzcGxheUZvcm1hdDogQ3VzdG9tRGF0ZVRpbWVGb3JtYXRPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0RBVEVfRVJST1I7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBJRSBhbmQgRWRnZSB0aGUgaTE4biBBUEkgd2lsbCB0aHJvdyBhIGhhcmQgZXJyb3IgdGhhdCBjYW4gY3Jhc2ggdGhlIGVudGlyZSBhcHBcbiAgICAgICAgLy8gaWYgd2UgYXR0ZW1wdCB0byBmb3JtYXQgYSBkYXRlIHdob3NlIHllYXIgaXMgbGVzcyB0aGFuIDEgb3IgZ3JlYXRlciB0aGFuIDk5OTkuXG4gICAgICAgIGlmICh0aGlzLl9maXhZZWFyc1JhbmdlSXNzdWUgJiYgKGRhdGUueWVhciA8IDEgfHwgZGF0ZS55ZWFyID4gOTk5OSkpIHtcbiAgICAgICAgICAgIGRhdGUgPSB0aGlzLmNsb25lKGRhdGUpO1xuICAgICAgICAgICAgZGF0ZS55ZWFyID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oOTk5OSwgZGF0ZS55ZWFyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZGlzcGxheUZvcm1hdCA9IHsgLi4uZGlzcGxheUZvcm1hdCwgdGltZVpvbmU6ICd1dGMnIH07XG5cbiAgICAgICAgcmV0dXJuIGRpc3BsYXlGb3JtYXQuZGF5UGVyaW9kXG4gICAgICAgICAgICA/IHRoaXMuX2Zvcm1hdFdpdGhEYXlQZXJpb2QoZGF0ZSwgZGlzcGxheUZvcm1hdClcbiAgICAgICAgICAgIDogdGhpcy5fZm9ybWF0V2l0aEludGwoZGF0ZSwgZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuXG4gICAgLyoqIEFkZCB5ZWFycyB0byBhIGRhdGUgKi9cbiAgICBhZGRDYWxlbmRhclllYXJzKGRhdGU6IEZkRGF0ZSwgeWVhcnM6IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZENhbGVuZGFyTW9udGhzKGRhdGUsIHllYXJzICogMTIpO1xuICAgIH1cblxuICAgIC8qKiBBZGQgbW9udGhzIHRvIGEgZGF0ZSAqL1xuICAgIGFkZENhbGVuZGFyTW9udGhzKGZkRGF0ZTogRmREYXRlLCBtb250aHM6IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShmZERhdGUpO1xuXG4gICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgbW9udGhzKTtcblxuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHdpbmQgdXAgaW4gdGhlIHdyb25nIG1vbnRoIGlmIHRoZSBvcmlnaW5hbCBtb250aCBoYXMgbW9yZSBkYXlzIHRoYW4gdGhlIG5ld1xuICAgICAgICAvLyBtb250aC4gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gZ28gdG8gdGhlIGxhc3QgZGF5IG9mIHRoZSBkZXNpcmVkIG1vbnRoLlxuICAgICAgICBpZiAoZGF0ZS5nZXREYXRlKCkgIT09IGZkRGF0ZS5kYXkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0RGF0ZSgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGUpO1xuICAgIH1cblxuICAgIC8qKiBBZGQgZGF5cyB0byBhIGRhdGUgKi9cbiAgICBhZGRDYWxlbmRhckRheXMoZmREYXRlOiBGZERhdGUsIGRheXM6IG51bWJlcik6IEZkRGF0ZSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShmZERhdGUpO1xuICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkYXlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZkRGF0ZUZyb21EYXRlSW5zdGFuY2UoZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIENsb25lIGEgZGF0ZSBvYmplY3QgKi9cbiAgICBjbG9uZShkYXRlOiBGZERhdGUpOiBGZERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IEZkRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5LCBkYXRlLmhvdXIsIGRhdGUubWludXRlLCBkYXRlLnNlY29uZCk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGRhdGUgb2JqZWN0IGlzIHZhbGlkICovXG4gICAgaXNWYWxpZChkYXRlOiBGZERhdGUpOiBkYXRlIGlzIEZkRGF0ZSB7XG4gICAgICAgIGlmICghKGRhdGUgaW5zdGFuY2VvZiBGZERhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuaXNEYXRlVmFsaWQoKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgZGF0ZSBiZXR3ZWVuIGdpdmVuIGRhdGVzICovXG4gICAgaXNCZXR3ZWVuKGRhdGVUb0NoZWNrOiBGZERhdGUsIHN0YXJ0RGF0ZTogRmREYXRlLCBlbmREYXRlOiBGZERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2NyZWF0ZURhdGVJbnN0YW5jZUJ5RmREYXRlKGRhdGVUb0NoZWNrKTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShzdGFydERhdGUpO1xuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLl9jcmVhdGVEYXRlSW5zdGFuY2VCeUZkRGF0ZShlbmREYXRlKTtcbiAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpID4gc3RhcnQuZ2V0VGltZSgpICYmIGRhdGUuZ2V0VGltZSgpIDwgZW5kLmdldFRpbWUoKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgZGF0ZXMgYXJlIGVxdWFsICovXG4gICAgZGF0ZXNFcXVhbChkYXRlMTogRmREYXRlLCBkYXRlMjogRmREYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghZGF0ZTEgfHwgIWRhdGUyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2tpcCB0aW1lIHZhbHVlXG4gICAgICAgIGNvbnN0IGRhdGUxU3RyID0gdGhpcy50b0lzbzg2MDEoZGF0ZTEpLnNwbGl0KCdUJylbMF07XG4gICAgICAgIGNvbnN0IGRhdGUyU3RyID0gdGhpcy50b0lzbzg2MDEoZGF0ZTIpLnNwbGl0KCdUJylbMF07XG4gICAgICAgIHJldHVybiBkYXRlMVN0ciA9PT0gZGF0ZTJTdHI7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGRhdGVzIGFuZCB0aW1lIGFyZSBlcXVhbCAqL1xuICAgIGRhdGVUaW1lc0VxdWFsKGRhdGUxOiBGZERhdGUsIGRhdGUyOiBGZERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFkYXRlMSB8fCAhZGF0ZTIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50b0lzbzg2MDEoZGF0ZTEpID09PSB0aGlzLnRvSXNvODYwMShkYXRlMik7XG4gICAgfVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIG9iamVjdCB0byBJU084NjAxIHN0cmluZyAqL1xuICAgIHRvSXNvODYwMShmZERhdGU6IEZkRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0b0lzbzg2MDEoZmREYXRlKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgYSB0aW1lIGZvcm1hdCBpbmNsdWRlcyBhIGRheSBwZXJpb2QgKi9cbiAgICBpc1RpbWVGb3JtYXRJbmNsdWRlc0RheVBlcmlvZChkaXNwbGF5Rm9ybWF0OiBDdXN0b21EYXRlVGltZUZvcm1hdE9wdGlvbnMpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0Py5ob3VyMTIgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlGb3JtYXQuaG91cjEyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGVOb1BlcmlvZE9wdGlvbiA9IHRoaXMuZm9ybWF0KHRoaXMuY3JlYXRlRGF0ZSgyMDIwKSwgZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGVXaXRoUGVyaW9kT3B0aW9uID0gdGhpcy5mb3JtYXQodGhpcy5jcmVhdGVEYXRlKDIwMjApLCB7IC4uLmRpc3BsYXlGb3JtYXQsIGhvdXIxMjogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGVXaXRoUGVyaW9kT3B0aW9uID09PSBmb3JtYXR0ZWREYXRlTm9QZXJpb2RPcHRpb247XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGEgdGltZSBmb3JtYXQgaW5jbHVkZXMgaG91cnMgKi9cbiAgICBpc1RpbWVGb3JtYXRJbmNsdWRlc0hvdXJzKGRpc3BsYXlGb3JtYXQ6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZGlzcGxheUZvcm1hdD8uaG91ciA9PT0gJ3N0cmluZyc7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGEgdGltZSBmb3JtYXQgaW5jbHVkZXMgbWludXRlcyAqL1xuICAgIGlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhkaXNwbGF5Rm9ybWF0OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGRpc3BsYXlGb3JtYXQ/Lm1pbnV0ZSA9PT0gJ3N0cmluZyc7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIGEgdGltZSBmb3JtYXQgaW5jbHVkZXMgc2Vjb25kcyAqL1xuICAgIGlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhkaXNwbGF5Rm9ybWF0OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGRpc3BsYXlGb3JtYXQ/LnNlY29uZCA9PT0gJ3N0cmluZyc7XG4gICAgfVxuXG4gICAgLyoqIEZvcm1hdCB3aXRoIGN1c3RvbSBwYXR0ZXJuIGluY2x1ZGluZyBkYXkgcGVyaW9kIG5hbWVzICovXG4gICAgcHJpdmF0ZSBfZm9ybWF0V2l0aERheVBlcmlvZChkYXRlOiBGZERhdGUsIGRpc3BsYXlGb3JtYXQ6IEN1c3RvbURhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB0aGlzLl9mb3JtYXRXaXRoSW50bChkYXRlLCB7IC4uLmRpc3BsYXlGb3JtYXQsIGRheVBlcmlvZDogdW5kZWZpbmVkIH0pO1xuICAgICAgICBjb25zdCBkYXlQZXJpb2ROYW1lID0gdGhpcy5fZ2V0RGF5UGVyaW9kTmFtZShkYXRlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5faW5zZXJ0RGF5UGVyaW9kKGZvcm1hdHRlZFRpbWUsIGRheVBlcmlvZE5hbWUsIGRpc3BsYXlGb3JtYXQpO1xuICAgIH1cblxuICAgIC8qKiBJbnNlcnQgZGF5IHBlcmlvZCBpbnRvIHRoZSBmb3JtYXR0ZWQgc3RyaW5nICovXG4gICAgcHJpdmF0ZSBfaW5zZXJ0RGF5UGVyaW9kKFxuICAgICAgICBmb3JtYXR0ZWRUaW1lOiBzdHJpbmcsXG4gICAgICAgIGRheVBlcmlvZE5hbWU6IEZkTGFuZ3VhZ2VLZXlJZGVudGlmaWVyLFxuICAgICAgICBkaXNwbGF5Rm9ybWF0OiBDdXN0b21EYXRlVGltZUZvcm1hdE9wdGlvbnNcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGlzcGxheUZvcm1hdC55ZWFyIHx8IGRpc3BsYXlGb3JtYXQubW9udGggfHwgZGlzcGxheUZvcm1hdC5kYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyhcXGR7MSwyfTpcXGR7Mn0pKCBbQVBdTSk/LywgYCQxICR7ZGF5UGVyaW9kTmFtZX1gKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sXFxzKihcXGR7MSwyfTpcXGR7Mn0pLywgYCwgYXQgJDEgJHtkYXlQZXJpb2ROYW1lfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFRpbWUucmVwbGFjZSgvKFxcZHsxLDJ9OlxcZHsyfSg6XFxkezJ9KT8pLywgYCQxICR7ZGF5UGVyaW9kTmFtZX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBHZXQgZGF5IHBlcmlvZCBuYW1lIGJhc2VkIG9uIHRoZSBob3VyICovXG4gICAgcHJpdmF0ZSBfZ2V0RGF5UGVyaW9kTmFtZShkYXRlOiBGZERhdGUpOiBGZExhbmd1YWdlS2V5SWRlbnRpZmllciB7XG4gICAgICAgIGNvbnN0IGhvdXIgPSBkYXRlLmhvdXI7XG4gICAgICAgIGlmIChob3VyIDwgNikge1xuICAgICAgICAgICAgcmV0dXJuICdjb3JlVGltZS5uaWdodExhYmVsJztcbiAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgIHJldHVybiAnY29yZVRpbWUubW9ybmluZ0xhYmVsJztcbiAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgIHJldHVybiAnY29yZVRpbWUuYWZ0ZXJub29uTGFiZWwnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdjb3JlVGltZS5ldmVuaW5nTGFiZWwnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZvcm1hdCBkYXRlIHVzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQgKi9cbiAgICBwcml2YXRlIF9mb3JtYXRXaXRoSW50bChkYXRlOiBGZERhdGUsIGRpc3BsYXlGb3JtYXQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCBkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgY29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5fY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZGF0ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZm9ybWF0dGVyLCBkYXRlSW5zdGFuY2UpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU3RyaXAgb3V0IHVuaWNvZGUgTFRSIGFuZCBSVEwgY2hhcmFjdGVycy4gRWRnZSBhbmQgSUUgaW5zZXJ0IHRoZXNlIGludG8gZm9ybWF0dGVkIGRhdGVzIHdoaWxlXG4gICAgICogb3RoZXIgYnJvd3NlcnMgZG8gbm90LiBXZSByZW1vdmUgdGhlbSB0byBtYWtlIG91dHB1dCBjb25zaXN0ZW50IGFuZCBiZWNhdXNlIHRoZXkgaW50ZXJmZXJlIHdpdGhcbiAgICAgKiBkYXRlIHBhcnNpbmcuXG4gICAgICogQHBhcmFtIHN0ciBUaGUgc3RyaW5nIHRvIHN0cmlwIGRpcmVjdGlvbiBjaGFyYWN0ZXJzIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIHN0cmlwcGVkIHN0cmluZy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1xcdTIwMGVcXHUyMDBmXS9nLCAnJykucmVwbGFjZSgvXFx1MjAyZi9nLCAnICcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybWF0KGZvcm1hdHRlcjogSW50bC5EYXRlVGltZUZvcm1hdCwgZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oZGF0ZS52YWx1ZU9mKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9EQVRFX0VSUk9SO1xuICAgICAgICB9XG4gICAgICAgIGRhdGUgPSB0aGlzLl9jcmVhdGVVVENEYXRlSW5zdGFuY2UoXG4gICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICBkYXRlLmdldERhdGUoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0TWludXRlcygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRTZWNvbmRzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbGxpc2Vjb25kcygpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KGRhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDcmVhdGUgbmF0aXZlIERhdGUgaW5zdGFuY2UgZnJvbSBGZERhdGVcbiAgICAgKiBAcGFyYW0gZGF0ZSBGZERhdGUgaW5zdGFuY2VcbiAgICAgKiBAcmV0dXJucyBkYXRlIE5hdGl2ZSBkYXRlIGluc3RhbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlRGF0ZUluc3RhbmNlQnlGZERhdGUoZmREYXRlOiBGZERhdGUpOiBEYXRlIHtcbiAgICAgICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCB9ID0gZmREYXRlO1xuICAgICAgICAvLyBXZSBoYXZlIHN0cmljdGVyIHZhbGlkYXRpb24gcnVsZXMgdGhhbiBEYXRlIG9iamVjdC5cbiAgICAgICAgLy8gRm9yIGV4YW1wbGUsIERhdGUgYWxsb3dzIHZhbHVlcyBmb3IgbW9udGg9MTAwIG9yIGZvciBkYXk9MTAwLlxuICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gZG8gdGhpcyB0cmljayBmb3IgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSB2YWxpZGF0aW9uIHN0YXR1c1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZChmZERhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gICAgICAgIGRhdGUuc2V0SG91cnMoaG91ciwgbWludXRlLCBzZWNvbmQsIDApO1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlIG5hdGl2ZSBEYXRlIGluc3RhbmNlIGluIFVUQ1xuICAgICAqIEBwYXJhbSB5ZWFyIFRoZSB5ZWFyXG4gICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBhcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDExXG4gICAgICogQHBhcmFtIGRheSBUaGUgZGF0ZSBhcyBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDMxLlxuICAgICAqIEBwYXJhbSBob3VycyBUaGUgaG91cnMgYXMgYSBudW1iZXIgYmV0d2VlbiAwIC0gMjRcbiAgICAgKiBAcGFyYW0gbWludXRlcyBUaGUgbWludXRlcyBhcyBhIG51bWJlciBiZXR3ZWVuIDAgLSA1OVxuICAgICAqIEBwYXJhbSBzZWNvbmRzIFRoZSBzZWNvbmRzIGFzIGEgbnVtYmVyIGJldHdlZW4gMCAtIDU5XG4gICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyBUaGUgbWlsbGlzZWNvbmRzIGFzIGEgbnVtYmVyIGJldHdlZW4gMCAtIDU5XG4gICAgICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlVVRDRGF0ZUluc3RhbmNlKFxuICAgICAgICB5ZWFyOiBudW1iZXIsXG4gICAgICAgIG1vbnRoOiBudW1iZXIsXG4gICAgICAgIGRheTogbnVtYmVyLFxuICAgICAgICBob3VycyA9IDAsXG4gICAgICAgIG1pbnV0ZXMgPSAwLFxuICAgICAgICBzZWNvbmRzID0gMCxcbiAgICAgICAgbWlsbGlzZWNvbmRzID0gMFxuICAgICk6IERhdGUge1xuICAgICAgICBjb25zdCB1dGNEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgdXRjRGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCBtb250aCwgZGF5KTtcbiAgICAgICAgdXRjRGF0ZS5zZXRVVENIb3Vycyhob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgcmV0dXJuIHV0Y0RhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jcmVhdGVGZERhdGVGcm9tRGF0ZUluc3RhbmNlKGRhdGU6IERhdGUpOiBGZERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IEZkRGF0ZShcbiAgICAgICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAgICAgICBkYXRlLmdldERhdGUoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0TWludXRlcygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRTZWNvbmRzKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICpcbiAgICAgKiBTaW5jZSBGZERhdGV0aW1lQWRhcHRlciBjYW4gcGFyc2Ugb25seSBcImVuLVVTXCIgbG9jYWxlXG4gICAgICogdGhlcmUgaXMgbm8gcmVhc29uIHRvIGNyZWF0ZSBjb21wcmVoZW5zaXZlIHRpbWUgcGFyc2VcbiAgICAgKiB0aGF0IGNhbiB1bmRlcnN0YW5kIHBsZW50eSBvZiBsb2NhbGVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRpbWVTdHIgVGltZSBzdHJpbmcgdG8gcGFyc2UgKEUuZy4gJzEwOjMwIFBNJylcbiAgICAgKiBAcmV0dXJucyBkYXRlIE5hdGl2ZSBkYXRlIGluc3RhbmNlXG4gICAgICpcbiAgICAgKi9cbiAgICBwcml2YXRlIF9wYXJzZVRpbWVTdHJpbmcodGltZVN0cjogc3RyaW5nKTogRGF0ZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEYXRlLnBhcnNlKCcxMDozMCBBTScpIGRvZXNuJ3Qgd29yayBzbyB3ZSBuZWVkIGRvIGEgdHJpY2tcbiAgICAgICAgICogYW5kIHByZXBlbmQgaXQgYnkgYSBkYXRlIHN0cmluZy5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGRhdGVTdHIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnKS5mb3JtYXQobmV3IERhdGUoKSk7XG4gICAgICAgIGNvbnN0IGRhdGVUaW1lU3RyaW5nID0gYCR7ZGF0ZVN0cn0gJHt0aW1lU3RyfWA7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLnBhcnNlKGRhdGVUaW1lU3RyaW5nKSk7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { DateFormatPipe, DateFromNowPipe, DateTimeFormatPipe, DayPeriodFormatPipe, TranslateDayPeriodPipe } from './datetime-format.pipes';\nimport * as i0 from \"@angular/core\";\nconst PIPES = [\n DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe\n];\n/**\n * @deprecated\n * Use imports of `DateFormatPipe`, `DateTimeFormatPipe`, `DateFromNowPipe` instead.\n */\nexport class FdDatetimePipesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule, imports: [DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe], exports: [DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimePipesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...PIPES],\n exports: [...PIPES]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZXRpbWUtcGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2ZkLWRhdGV0aW1lLXBpcGVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFDSCxjQUFjLEVBQ2QsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3pCLE1BQU0seUJBQXlCLENBQUM7O0FBRWpDLE1BQU0sS0FBSyxHQUFvQjtJQUMzQixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsc0JBQXNCO0NBQ3pCLENBQUM7QUFFRjs7O0dBR0c7QUFLSCxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7K0dBQXJCLHFCQUFxQixZQWY5QixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsc0JBQXNCLGFBSnRCLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixzQkFBc0I7K0dBV2IscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEYXRlRm9ybWF0UGlwZSxcbiAgICBEYXRlRnJvbU5vd1BpcGUsXG4gICAgRGF0ZVRpbWVGb3JtYXRQaXBlLFxuICAgIERheVBlcmlvZEZvcm1hdFBpcGUsXG4gICAgVHJhbnNsYXRlRGF5UGVyaW9kUGlwZVxufSBmcm9tICcuL2RhdGV0aW1lLWZvcm1hdC5waXBlcyc7XG5cbmNvbnN0IFBJUEVTOiBUeXBlPHVua25vd24+W10gPSBbXG4gICAgRGF0ZUZvcm1hdFBpcGUsXG4gICAgRGF0ZVRpbWVGb3JtYXRQaXBlLFxuICAgIERhdGVGcm9tTm93UGlwZSxcbiAgICBEYXlQZXJpb2RGb3JtYXRQaXBlLFxuICAgIFRyYW5zbGF0ZURheVBlcmlvZFBpcGVcbl07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBpbXBvcnRzIG9mIGBEYXRlRm9ybWF0UGlwZWAsIGBEYXRlVGltZUZvcm1hdFBpcGVgLCBgRGF0ZUZyb21Ob3dQaXBlYCBpbnN0ZWFkLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFsuLi5QSVBFU10sXG4gICAgZXhwb3J0czogWy4uLlBJUEVTXVxufSlcbmV4cG9ydCBjbGFzcyBGZERhdGV0aW1lUGlwZXNNb2R1bGUge31cbiJdfQ==","import { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\nimport { FdDatetimePipesModule } from './fd-datetime-pipes.module';\nimport * as i0 from \"@angular/core\";\nexport class FdDatetimeAdapterModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, imports: [PlatformModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, providers: [{ provide: DatetimeAdapter, useClass: FdDatetimeAdapter }], imports: [PlatformModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeAdapterModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [PlatformModule],\n providers: [{ provide: DatetimeAdapter, useClass: FdDatetimeAdapter }]\n }]\n }] });\nexport class FdDatetimeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, imports: [FdDatetimeAdapterModule, FdDatetimePipesModule], exports: [FdDatetimePipesModule, FdDatetimeAdapterModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, providers: [{ provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS }], imports: [FdDatetimeAdapterModule, FdDatetimePipesModule, FdDatetimePipesModule, FdDatetimeAdapterModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdDatetimeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [FdDatetimeAdapterModule, FdDatetimePipesModule],\n exports: [FdDatetimePipesModule, FdDatetimeAdapterModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS }]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZXRpbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGV0aW1lL2ZkLWRhdGV0aW1lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBTW5FLE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjsrR0FBdkIsdUJBQXVCLFlBSHRCLGNBQWM7K0dBR2YsdUJBQXVCLGFBRnJCLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLFlBRDVELGNBQWM7OzJGQUdmLHVCQUF1QjtrQkFKbkMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQ3pCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztpQkFDekU7O0FBUUQsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFQaEIsdUJBQXVCLEVBR0cscUJBQXFCLGFBQzlDLHFCQUFxQixFQUp0Qix1QkFBdUI7K0dBT3ZCLGdCQUFnQixhQUZkLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLENBQUMsWUFGaEUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQzlDLHFCQUFxQixFQUp0Qix1QkFBdUI7OzJGQU92QixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsdUJBQXVCLEVBQUUscUJBQXFCLENBQUM7b0JBQ3pELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLHVCQUF1QixDQUFDO29CQUN6RCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztpQkFDN0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGF0Zm9ybU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGV0aW1lLWFkYXB0ZXInO1xuaW1wb3J0IHsgREFURV9USU1FX0ZPUk1BVFMgfSBmcm9tICcuL2RhdGV0aW1lLWZvcm1hdHMnO1xuaW1wb3J0IHsgRkRfREFURVRJTUVfRk9STUFUUyB9IGZyb20gJy4vZmQtZGF0ZS1mb3JtYXRzJztcbmltcG9ydCB7IEZkRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnLi9mZC1kYXRldGltZS1hZGFwdGVyJztcbmltcG9ydCB7IEZkRGF0ZXRpbWVQaXBlc01vZHVsZSB9IGZyb20gJy4vZmQtZGF0ZXRpbWUtcGlwZXMubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbUGxhdGZvcm1Nb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLCB1c2VDbGFzczogRmREYXRldGltZUFkYXB0ZXIgfV1cbn0pXG5leHBvcnQgY2xhc3MgRmREYXRldGltZUFkYXB0ZXJNb2R1bGUge31cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbRmREYXRldGltZUFkYXB0ZXJNb2R1bGUsIEZkRGF0ZXRpbWVQaXBlc01vZHVsZV0sXG4gICAgZXhwb3J0czogW0ZkRGF0ZXRpbWVQaXBlc01vZHVsZSwgRmREYXRldGltZUFkYXB0ZXJNb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogREFURV9USU1FX0ZPUk1BVFMsIHVzZVZhbHVlOiBGRF9EQVRFVElNRV9GT1JNQVRTIH1dXG59KVxuZXhwb3J0IGNsYXNzIEZkRGF0ZXRpbWVNb2R1bGUge31cbiJdfQ==","import { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\n/**\n * Provides default datetime formats and datetime adapter.\n */\nexport function provideDateTimeFormats() {\n return [\n { provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS },\n {\n provide: DatetimeAdapter,\n useClass: FdDatetimeAdapter\n }\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1kYXRlLXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZXRpbWUvcHJvdmlkZS1kYXRlLXRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNsQyxPQUFPO1FBQ0gsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO1FBQzdEO1lBQ0ksT0FBTyxFQUFFLGVBQWU7WUFDeEIsUUFBUSxFQUFFLGlCQUFpQjtTQUM5QjtLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJy4vZGF0ZXRpbWUtYWRhcHRlcic7XG5pbXBvcnQgeyBEQVRFX1RJTUVfRk9STUFUUyB9IGZyb20gJy4vZGF0ZXRpbWUtZm9ybWF0cyc7XG5pbXBvcnQgeyBGRF9EQVRFVElNRV9GT1JNQVRTIH0gZnJvbSAnLi9mZC1kYXRlLWZvcm1hdHMnO1xuaW1wb3J0IHsgRmREYXRldGltZUFkYXB0ZXIgfSBmcm9tICcuL2ZkLWRhdGV0aW1lLWFkYXB0ZXInO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRlZmF1bHQgZGF0ZXRpbWUgZm9ybWF0cyBhbmQgZGF0ZXRpbWUgYWRhcHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEYXRlVGltZUZvcm1hdHMoKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgeyBwcm92aWRlOiBEQVRFX1RJTUVfRk9STUFUUywgdXNlVmFsdWU6IEZEX0RBVEVUSU1FX0ZPUk1BVFMgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IEZkRGF0ZXRpbWVBZGFwdGVyXG4gICAgICAgIH1cbiAgICBdO1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWNvcmUtZGF0ZXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZXRpbWUvZnVuZGFtZW50YWwtbmd4LWNvcmUtZGF0ZXRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["i1.DatetimeAdapter"],"mappings":";;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,CAAC;AAC7B,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE;AAC3C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAC/D,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,MAAM,EAAE;AACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAClC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AAC3C,QAAQ,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC7C,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC7C,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;AAClD,QAAQ,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AACzD,QAAQ,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,QAAQ,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC;AAC1E,QAAQ,MAAM,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE;AACtD,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAClC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,QAAQ,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1D,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxD,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACtD,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxD,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC5D,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC5D,IAAI;AACJ;;AC/DA;AACA;AACA;AACY,MAAC,iBAAiB,GAAG,IAAI,cAAc,CAAC,cAAc;;ACK3D,MAAM,cAAc,CAAC;AAC5B;AACA,IAAI,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE;AACpD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,EAAE,EAAE;AACxC,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9F,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,aAAa;AAChC,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,eAAkB,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AACtP,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AACtK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACxH,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,YAAY;AACtC,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,eAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACjG,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,iBAAiB;AAC5C,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,MAAM,kBAAkB,CAAC;AAChC;AACA,IAAI,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE;AACpD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,EAAE,EAAE;AACxC,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;AAClG,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,aAAa;AAChC,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,eAAkB,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1P,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC9K;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,gBAAgB;AAC1C,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,eAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACjG,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,iBAAiB;AAC5C,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,MAAM,eAAe,CAAC;AAC7B;AACA,IAAI,WAAW,CAAC,gBAAgB,EAAE;AAClC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,EAAE,EAAE;AACxC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,UAAU,EAAE;AAClG,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1D,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,OAAO,aAAa;AACpC,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC;AAC/E,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,eAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AACzM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AACxK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzH,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,aAAa;AACvC,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,eAAkB,EAAE,CAAC,EAAE,CAAC;AAC5D,MAAM,mBAAmB,CAAC;AACjC;AACA,IAAI,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE;AACpD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE;AAC3D,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,OAAO,aAAa;AAChC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;AAC/D,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,eAAkB,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3P,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAChL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,iBAAiB;AAC3C,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,eAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACjG,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,iBAAiB;AAC5C,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,MAAM,sBAAsB,CAAC;AACpC;AACA,IAAI,WAAW,CAAC,UAAU,EAAE;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,EAAE;AAC7D,QAAQ,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AACrF,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,MAAM,gBAAgB,GAAG,sBAAsB;AACvD,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnD,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACxB,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,EAAE;AACjE,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAChG,YAAY,OAAO,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG,KAAK;AAC7F,QAAQ;AACR;AACA,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AACzM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACnM;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AAChI,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,oBAAoB;AAC9C,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,IAAI,EAAE,KAAK;AAC/B,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;AACvE,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,WAAW;AACtC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;;ACnKxB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE;AACjD,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,EAAE;AACrB,QAAQ,OAAO,EAAE,EAAE;AACnB,QAAQ,KAAK,EAAE;AACf,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG,uCAAuC;AACpE,IAAI,MAAM,WAAW,GAAG,cAAc;AACtC,IAAI,MAAM,gBAAgB,GAAG,CAAC,KAAK,KAAK;AACxC,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnD,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACjD,YAAY,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACtD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AAC9D,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;AAC1D,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACtE,gBAAgB,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5C,gBAAgB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAClD,gBAAgB,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,SAAS;AAChD,gBAAgB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClI,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI,CAAC;AACL,IAAI,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AACnC,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;AAC9C,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACjD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AACzD,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;AAC1D,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACtE,gBAAgB,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5C,gBAAgB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAClD,gBAAgB,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;AACnD,oBAAoB,KAAK,IAAI,EAAE;AAC/B,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACrD,oBAAoB,KAAK,GAAG,CAAC;AAC7B,gBAAgB;AAChB,gBAAgB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClI,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI,CAAC;AACL,IAAI,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AACzC,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;AACpC,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AACjD;;ACxDA;AACO,SAAS,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;AACrC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AACxE;AACA;AACO,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC5B,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE;AAClC,IAAI,OAAO;AACX,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7E,QAAQ,GAAG;AACX,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;AAC1F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACd;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,MAAM,EAAE;AACxC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;AAC7D,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AACzC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACvC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACxC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1C,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;AAC5C,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACrE,QAAQ,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AACvD,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,KAAK,EAAE;AAC/C,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AACrE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;AAC7C,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;AAC1D;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE;AAC5E,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,YAAY,OAAO,MAAM,CAAC,MAAM,EAAE;AAClC,QAAQ;AACR,QAAQ,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC;AAC7C,QAAQ,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC;AAC/C,QAAQ,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC;AAC3C,QAAQ,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC;AAC7C,QAAQ,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC;AACjD,QAAQ,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC;AACjD,QAAQ,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACxC,YAAY,IAAI;AAChB,YAAY,KAAK;AACjB,YAAY,GAAG;AACf,YAAY,IAAI;AAChB,YAAY,MAAM;AAClB,YAAY;AACZ,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG;AAC9C,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG;AAChD,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG;AAC5C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG;AAC9C,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG;AAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG;AAClD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,MAAM,GAAG;AACpB,QAAQ,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC;AACjD,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,QAAQ,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/C,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,eAAe,CAAC,IAAI,EAAE;AACjC,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACzI,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACxC,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI;AAC3B,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;AAC7B,YAAY,GAAG,EAAE,IAAI,CAAC,GAAG;AACzB,YAAY,IAAI;AAChB,YAAY,MAAM;AAClB,YAAY;AACZ,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,IAAI,CAAC,IAAI,GAAG,GAAG;AAC3B,YAAY,IAAI,CAAC,MAAM,GAAG,GAAG;AAC7B,YAAY,IAAI,CAAC,MAAM,GAAG,GAAG;AAC7B,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;AAC7D,YAAY,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;AACvE,YAAY,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;AACvE,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;AACtC,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC;AACzC,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC;AAChC,QAAQ;AACR,QAAQ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AACjG,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,QAAQ;AACtD,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACpD,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC;AAC9B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,YAAY,EAAE;AAClC,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACpD,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACpD,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI;AACJ;;ACnKA,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;AACvE,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;AACxD,MAAM,aAAa,GAAG;AACtB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,KAAK,EAAE,SAAS;AACpB,IAAI,GAAG,EAAE,SAAS;AAClB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE;AACZ,CAAC;AACW,MAAC,mBAAmB,GAAG;AACnC,IAAI,KAAK,EAAE;AACX,QAAQ,SAAS;AACjB,QAAQ,SAAS;AACjB,QAAQ;AACR,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,SAAS;AACjB,QAAQ,SAAS;AACjB,QAAQ,aAAa;AACrB,QAAQ,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE;AACzE,QAAQ,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;AAC1D,QAAQ,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS;AACxC,KAAK;AACL,IAAI,cAAc,EAAE;AACpB;;AChBA,MAAM,qBAAqB,GAAG,IAAI;AAClC,MAAM,qBAAqB,GAAG,IAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iBAAiB,SAAS,eAAe,CAAC;AACvD;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;AACpC,QAAQ,KAAK,EAAE;AACf,QAAQ,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI;AACpE,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,OAAO,IAAI,CAAC,IAAI;AACxB,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,KAAK;AACzB,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,OAAO,IAAI,CAAC,GAAG;AACvB,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC;AAClE,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,IAAI;AACxB,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AAC7D,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D;AACA,QAAQ,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5H,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACtG,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxH,IAAI;AACJ;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACxG,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5H,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACxG,QAAQ,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3H,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACzG,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAC9F,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACnD,QAAQ,OAAO,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;AACzC,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK;AACnC,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE;AACjE,YAAY;AACZ,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/F,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;AACjC,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpH,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;AACjC,QAAQ,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpH,IAAI;AACJ;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,MAAM,eAAe,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;AAC9E,QAAQ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/D,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,MAAM,EAAE,SAAS;AAC7B,YAAY,MAAM,EAAE;AACpB,SAAS,CAAC;AACV,QAAQ,IAAI;AACZ,YAAY,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK;AACvH,YAAY,MAAM,EAAE,GAAG;AACvB,iBAAiB,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACvD,iBAAiB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK;AAChE,YAAY,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,eAAe;AACxD,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;AACvF,YAAY,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;AAClG,YAAY,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;AACnG,YAAY,OAAO,aAAa,IAAI;AACpC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AACrD,kBAAkB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;AAChE,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC;AAC/D,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;AACtC,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC;AAC/D,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;AACtC,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC;AAC/D,IAAI;AACJ;AACA,IAAI,iBAAiB,GAAG;AACxB;AACA,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,MAAM,EAAE;AAC9B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AAC7D,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE;AAC7B,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE;AAC1C,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AAC5C,IAAI;AACJ;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,MAAM,CAAC,QAAQ,EAAE;AAChC,IAAI;AACJ;AACA,IAAI,GAAG,GAAG;AACV,QAAQ,OAAO,MAAM,CAAC,MAAM,EAAE;AAC9B,IAAI;AACJ;AACA,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,EAAE;AACnC,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;AACnC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AACrC,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAClC,QAAQ;AACR;AACA,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,YAAY,OAAO,KAAK,KAAK,QAAQ;AACrC,YAAY,CAAC,WAAW,CAAC,IAAI;AAC7B,YAAY,CAAC,WAAW,CAAC,GAAG;AAC5B,YAAY,CAAC,WAAW,CAAC,KAAK;AAC9B,YAAY,WAAW,CAAC,IAAI,EAAE;AAC9B,YAAY,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC/C,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACjC,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;AAC7E,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACnC,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAQ;AACR,QAAQ,aAAa,GAAG,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC7D,QAAQ,OAAO,aAAa,CAAC;AAC7B,cAAc,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,aAAa;AAC3D,cAAc,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE;AACtC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AAC7D,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC;AAC/C;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE;AAC3C,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3B,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE;AAClC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AAC7D,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC3C,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ;AACA,IAAI,KAAK,CAAC,IAAI,EAAE;AAChB,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AAC/F,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC,EAAE;AACvC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE;AACjC,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE;AAC/C,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;AAClE,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;AACjE,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC;AAC7D,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;AACjF,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,OAAO,QAAQ,KAAK,QAAQ;AACpC,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE;AACjC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC9D,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,MAAM,EAAE;AACtB,QAAQ,OAAO,SAAS,CAAC,MAAM,CAAC;AAChC,IAAI;AACJ;AACA,IAAI,6BAA6B,CAAC,aAAa,EAAE;AACjD,QAAQ,IAAI,OAAO,aAAa,EAAE,MAAM,KAAK,SAAS,EAAE;AACxD,YAAY,OAAO,aAAa,CAAC,MAAM;AACvC,QAAQ;AACR,QAAQ,MAAM,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;AAC7F,QAAQ,MAAM,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACpH,QAAQ,OAAO,6BAA6B,KAAK,2BAA2B;AAC5E,IAAI;AACJ;AACA,IAAI,yBAAyB,CAAC,aAAa,EAAE;AAC7C,QAAQ,OAAO,OAAO,aAAa,EAAE,IAAI,KAAK,QAAQ;AACtD,IAAI;AACJ;AACA,IAAI,2BAA2B,CAAC,aAAa,EAAE;AAC/C,QAAQ,OAAO,OAAO,aAAa,EAAE,MAAM,KAAK,QAAQ;AACxD,IAAI;AACJ;AACA,IAAI,2BAA2B,CAAC,aAAa,EAAE;AAC/C,QAAQ,OAAO,OAAO,aAAa,EAAE,MAAM,KAAK,QAAQ;AACxD,IAAI;AACJ;AACA,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE;AAC9C,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACpG,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC1D,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;AACjF,IAAI;AACJ;AACA,IAAI,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE;AAClE,QAAQ,IAAI,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE;AAC5E,YAAY,OAAO;AACnB,iBAAiB,OAAO,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC1E,iBAAiB,OAAO,CAAC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3E,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,aAAa,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3F,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,IAAI,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;AACtB,YAAY,OAAO,qBAAqB;AACxC,QAAQ;AACR,aAAa,IAAI,IAAI,GAAG,EAAE,EAAE;AAC5B,YAAY,OAAO,uBAAuB;AAC1C,QAAQ;AACR,aAAa,IAAI,IAAI,GAAG,EAAE,EAAE;AAC5B,YAAY,OAAO,yBAAyB;AAC5C,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,uBAAuB;AAC1C,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE;AACzC,QAAQ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;AAC7E,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACnE,QAAQ,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACzF,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8BAA8B,CAAC,GAAG,EAAE;AACxC,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AACzE,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE;AAC7B,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AAC1C,YAAY,OAAO,kBAAkB;AACrC,QAAQ;AACR,QAAQ,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AAC9K,QAAQ,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,2BAA2B,CAAC,MAAM,EAAE;AACxC,QAAQ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;AACjE;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnC,YAAY,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC;AAChC,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;AAC/B,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AAC9C,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9C,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE;AACpG,QAAQ,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE;AAClC,QAAQ,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AAChD,QAAQ,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC;AAClE,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ;AACA,IAAI,6BAA6B,CAAC,IAAI,EAAE;AACxC,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACzI,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC9B;AACA;AACA;AACA;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAC3E,QAAQ,MAAM,cAAc,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtD,QAAQ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AACnD,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAChP,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACvI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnE,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,SAAS;AACpC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;;ACna/C,MAAM,KAAK,GAAG;AACd,IAAI,cAAc;AAClB,IAAI,kBAAkB;AACtB,IAAI,eAAe;AACnB,IAAI,mBAAmB;AACvB,IAAI;AACJ,CAAC;AACD;AACA;AACA;AACA;AACO,MAAM,qBAAqB,CAAC;AACnC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,cAAc;AAC9J,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,mBAAmB;AAC/B,YAAY,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc;AAC7D,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAC3B,YAAY,mBAAmB;AAC/B,YAAY,sBAAsB,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACxI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC;AAC/H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;AACvC,oBAAoB,OAAO,EAAE,CAAC,GAAG,KAAK;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACzBN,MAAM,uBAAuB,CAAC;AACrC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACrK,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC7O;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,cAAc,CAAC;AAC7C,oBAAoB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AACzF,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;AACN,MAAM,gBAAgB,CAAC;AAC9B,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,EAAE,OAAO,EAAE,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAC;AACzP,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAC;AAC1T;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC1H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;AAC7E,oBAAoB,OAAO,EAAE,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;AAC7E,oBAAoB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AAC7F,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC5Bb;AACA;AACA;AACO,SAAS,sBAAsB,GAAG;AACzC,IAAI,OAAO;AACX,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AACrE,QAAQ;AACR,YAAY,OAAO,EAAE,eAAe;AACpC,YAAY,QAAQ,EAAE;AACtB;AACA,KAAK;AACL;;ACfA;AACA;AACA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fundamental-ngx/core",
|
|
3
|
-
"version": "0.58.0-rc.
|
|
3
|
+
"version": "0.58.0-rc.62",
|
|
4
4
|
"schematics": "./schematics/collection.json",
|
|
5
5
|
"ng-update": {
|
|
6
6
|
"migrations": "./schematics/migrations.json"
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"@angular/forms": "^20.0.0",
|
|
24
24
|
"@angular/platform-browser": "^20.0.0",
|
|
25
25
|
"@angular/router": "^20.0.0",
|
|
26
|
-
"@fundamental-ngx/cdk": "0.58.0-rc.
|
|
27
|
-
"@fundamental-ngx/i18n": "0.58.0-rc.
|
|
26
|
+
"@fundamental-ngx/cdk": "0.58.0-rc.62",
|
|
27
|
+
"@fundamental-ngx/i18n": "0.58.0-rc.62",
|
|
28
28
|
"@sap-theming/theming-base-content": "^11.31.0",
|
|
29
29
|
"fundamental-styles": "0.40.1",
|
|
30
30
|
"rxjs": "^7.8.0"
|
|
@@ -243,22 +243,22 @@
|
|
|
243
243
|
"types": "./multi-combobox/index.d.ts",
|
|
244
244
|
"default": "./fesm2022/fundamental-ngx-core-multi-combobox.mjs"
|
|
245
245
|
},
|
|
246
|
-
"./nested-list": {
|
|
247
|
-
"types": "./nested-list/index.d.ts",
|
|
248
|
-
"default": "./fesm2022/fundamental-ngx-core-nested-list.mjs"
|
|
249
|
-
},
|
|
250
246
|
"./multi-input": {
|
|
251
247
|
"types": "./multi-input/index.d.ts",
|
|
252
248
|
"default": "./fesm2022/fundamental-ngx-core-multi-input.mjs"
|
|
253
249
|
},
|
|
254
|
-
"./
|
|
255
|
-
"types": "./
|
|
256
|
-
"default": "./fesm2022/fundamental-ngx-core-
|
|
250
|
+
"./nested-list": {
|
|
251
|
+
"types": "./nested-list/index.d.ts",
|
|
252
|
+
"default": "./fesm2022/fundamental-ngx-core-nested-list.mjs"
|
|
257
253
|
},
|
|
258
254
|
"./notification": {
|
|
259
255
|
"types": "./notification/index.d.ts",
|
|
260
256
|
"default": "./fesm2022/fundamental-ngx-core-notification.mjs"
|
|
261
257
|
},
|
|
258
|
+
"./object-attribute": {
|
|
259
|
+
"types": "./object-attribute/index.d.ts",
|
|
260
|
+
"default": "./fesm2022/fundamental-ngx-core-object-attribute.mjs"
|
|
261
|
+
},
|
|
262
262
|
"./object-identifier": {
|
|
263
263
|
"types": "./object-identifier/index.d.ts",
|
|
264
264
|
"default": "./fesm2022/fundamental-ngx-core-object-identifier.mjs"
|
|
@@ -375,14 +375,14 @@
|
|
|
375
375
|
"types": "./table/index.d.ts",
|
|
376
376
|
"default": "./fesm2022/fundamental-ngx-core-table.mjs"
|
|
377
377
|
},
|
|
378
|
-
"./tests": {
|
|
379
|
-
"types": "./tests/index.d.ts",
|
|
380
|
-
"default": "./fesm2022/fundamental-ngx-core-tests.mjs"
|
|
381
|
-
},
|
|
382
378
|
"./tabs": {
|
|
383
379
|
"types": "./tabs/index.d.ts",
|
|
384
380
|
"default": "./fesm2022/fundamental-ngx-core-tabs.mjs"
|
|
385
381
|
},
|
|
382
|
+
"./tests": {
|
|
383
|
+
"types": "./tests/index.d.ts",
|
|
384
|
+
"default": "./fesm2022/fundamental-ngx-core-tests.mjs"
|
|
385
|
+
},
|
|
386
386
|
"./text": {
|
|
387
387
|
"types": "./text/index.d.ts",
|
|
388
388
|
"default": "./fesm2022/fundamental-ngx-core-text.mjs"
|