@annalib/anna-core 4.3.6 → 4.3.8

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.
@@ -1,7 +1,7 @@
1
1
  // Angular import statements
2
2
  import { Injectable } from '@angular/core';
3
3
  // Third party import statements
4
- import dayjs from "dayjs";
4
+ import moment from "moment";
5
5
  import * as i0 from "@angular/core";
6
6
  export class AnnaDateTimeFormatService {
7
7
  constructor() {
@@ -9,16 +9,16 @@ export class AnnaDateTimeFormatService {
9
9
  }
10
10
  convertToNgbDateStandardFormat(date) {
11
11
  return {
12
- year: parseInt(dayjs(date, "MM/DD/YYYY").format("YYYY")),
13
- month: parseInt(dayjs(date, "MM/DD/YYYY").format("M")),
14
- day: parseInt(dayjs(date, "MM/DD/YYYY").format("D")),
12
+ year: parseInt(moment(date, "MM/DD/YYYY").format("YYYY")),
13
+ month: parseInt(moment(date, "MM/DD/YYYY").format("M")),
14
+ day: parseInt(moment(date, "MM/DD/YYYY").format("D")),
15
15
  };
16
16
  }
17
17
  convertToNgbDate(date, parseFormat) {
18
18
  return {
19
- year: parseInt(dayjs(date, parseFormat).format("YYYY")),
20
- month: parseInt(dayjs(date, parseFormat).format("M")),
21
- day: parseInt(dayjs(date, parseFormat).format("D")),
19
+ year: parseInt(moment(date, parseFormat).format("YYYY")),
20
+ month: parseInt(moment(date, parseFormat).format("M")),
21
+ day: parseInt(moment(date, parseFormat).format("D")),
22
22
  };
23
23
  }
24
24
  formatToTwelveHrs(time, callRemoveZero) {
@@ -109,8 +109,8 @@ export class AnnaDateTimeFormatService {
109
109
  }
110
110
  sortByTimeAscending(a, b) {
111
111
  let format = "HH:mm:ss";
112
- a = dayjs(a, format);
113
- b = dayjs(b, format);
112
+ a = moment(a, format);
113
+ b = moment(b, format);
114
114
  let results;
115
115
  results = a.hours() > b.hours() ? 1 : a.hours() < b.hours() ? -1 : 0;
116
116
  if (results === 0)
@@ -121,8 +121,8 @@ export class AnnaDateTimeFormatService {
121
121
  }
122
122
  sortByTimeDescending(a, b) {
123
123
  let format = "HH:mm:ss";
124
- a = dayjs(a, format);
125
- b = dayjs(b, format);
124
+ a = moment(a, format);
125
+ b = moment(b, format);
126
126
  let results;
127
127
  results = a.hours() < b.hours() ? 1 : a.hours() > b.hours() ? -1 : 0;
128
128
  if (results === 0)
@@ -132,26 +132,26 @@ export class AnnaDateTimeFormatService {
132
132
  return results;
133
133
  }
134
134
  convertNgbDateToMoment(ngbDate) {
135
- let converted = dayjs();
135
+ let converted = moment();
136
136
  converted.month(ngbDate.month - 1);
137
137
  converted.date(ngbDate.day);
138
138
  converted.year(ngbDate.year);
139
139
  return converted.format("MM/DD/YYYY");
140
140
  }
141
141
  compareDate(a, b, isAsc) {
142
- return isAsc ? dayjs(a).diff(b) : dayjs(b).diff(a);
142
+ return isAsc ? moment(a).diff(b) : moment(b).diff(a);
143
143
  }
144
- static formatTwentyFourHourTimeToHHMMAFormat(value, date) {
145
- value = dayjs(date ? date : '01/01/2000 ' + value).format("DD/MM/YYYY HH:mm:ss");
144
+ static formatTwentyFourHourTimeToHHMMAFormat(value) {
145
+ value = moment(value, ["HH:mm:ss"]).format("HH:mm:ss");
146
146
  return value[3] == "0" && value[4] == "0"
147
- ? dayjs(value, ["HH:mm:ss"]).format("hA").slice(0, -1)
148
- : dayjs(value, ["HH:mm:ss"]).format("h:mmA").slice(0, -1);
147
+ ? moment(value, ["HH:mm:ss"]).format("hA").slice(0, -1)
148
+ : moment(value, ["HH:mm:ss"]).format("h:mmA").slice(0, -1);
149
149
  }
150
- static formatTwelveHourTimeToHHMMAFormat(timeValue, date) {
151
- timeValue = dayjs(date ? date : '01/01/2000 ' + timeValue).format("DD/MM/YYYY HH:mm:ss");
152
- return timeValue[3] == "0" && timeValue[4] == "0"
153
- ? dayjs(timeValue).format("hA").slice(0, -1)
154
- : dayjs(timeValue).format("h:mmA").slice(0, -1);
150
+ static formatTwelveHourTimeToHHMMAFormat(value) {
151
+ value = moment(value, ["HH:mm:A"]).format("HH:mm:ss");
152
+ return value[3] == "0" && value[4] == "0"
153
+ ? moment(value, ["HH:mm:ss"]).format("hA").slice(0, -1)
154
+ : moment(value, ["HH:mm:ss"]).format("h:mmA").slice(0, -1);
155
155
  }
156
156
  formatDateAndHHMMATimeToStandardFormat(dateAndTime) {
157
157
  let standardFormat, date, time;
@@ -165,7 +165,7 @@ export class AnnaDateTimeFormatService {
165
165
  else {
166
166
  standardFormat = dateAndTime + " 00:00 AM";
167
167
  }
168
- return dayjs(standardFormat).format("MM/DD/YYYY hh:mm A");
168
+ return moment(standardFormat).format("MM/DD/YYYY hh:mm A");
169
169
  }
170
170
  compare(a, b, isAsc) {
171
171
  if (typeof a == 'string' && typeof b == 'string') {
@@ -176,11 +176,11 @@ export class AnnaDateTimeFormatService {
176
176
  }
177
177
  sortDataByBroadcastTimeAsc(firstParamTime, secondParamTime, broadcastTime) {
178
178
  let format = "HH:mm:ss";
179
- let a = dayjs(firstParamTime, format);
180
- let b = dayjs(secondParamTime, format);
181
- let broadcastdayjsDateTime = dayjs(broadcastTime, "HH:mm:ss");
182
- a = a.isBefore(broadcastdayjsDateTime) ? a.add(1, "d") : a;
183
- b = b.isBefore(broadcastdayjsDateTime) ? b.add(1, "d") : b;
179
+ let a = moment(firstParamTime, format);
180
+ let b = moment(secondParamTime, format);
181
+ let broadcastMomentDateTime = moment(broadcastTime, "HH:mm:ss");
182
+ a = a.isBefore(broadcastMomentDateTime) ? a.add(1, "d") : a;
183
+ b = b.isBefore(broadcastMomentDateTime) ? b.add(1, "d") : b;
184
184
  let result = a.isBefore(b) ? -1 : a.isAfter(b) ? 1 : 0;
185
185
  return result;
186
186
  }
@@ -193,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
193
193
  providedIn: 'root'
194
194
  }]
195
195
  }], ctorParameters: function () { return []; } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1kYXRlLXRpbWUtZm9ybWF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWRhdGUtdGltZS1mb3JtYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxnQ0FBZ0M7QUFDaEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQVExQixNQUFNLE9BQU8seUJBQXlCO0lBRXBDO1FBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxJQUFTO1FBQ3RDLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVMsRUFBRSxXQUFnQjtRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsTUFB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QUM7UUFDdkQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7c0hBeE1VLHlCQUF5QjswSEFBekIseUJBQXlCLGNBRnhCLE1BQU07MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5cclxuLy8gVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzIFxyXG5leHBvcnQgdHlwZSBOZ2JEYXRlVHlwZSA9IHsgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlciB9O1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc29sZS5sb2coXCJBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlIHNlcnZpY2UgY3JlYXRlZC5cIilcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb05nYkRhdGVTdGFuZGFyZEZvcm1hdChkYXRlOiBhbnkpOiBOZ2JEYXRlVHlwZSB8IE5nYkRhdGUge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgeWVhcjogcGFyc2VJbnQoZGF5anMoZGF0ZSwgXCJNTS9ERC9ZWVlZXCIpLmZvcm1hdChcIllZWVlcIikpLFxyXG4gICAgICBtb250aDogcGFyc2VJbnQoZGF5anMoZGF0ZSwgXCJNTS9ERC9ZWVlZXCIpLmZvcm1hdChcIk1cIikpLFxyXG4gICAgICBkYXk6IHBhcnNlSW50KGRheWpzKGRhdGUsIFwiTU0vREQvWVlZWVwiKS5mb3JtYXQoXCJEXCIpKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9OZ2JEYXRlKGRhdGU6IGFueSwgcGFyc2VGb3JtYXQ6IGFueSk6IE5nYkRhdGVUeXBlIHwgTmdiRGF0ZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB5ZWFyOiBwYXJzZUludChkYXlqcyhkYXRlLCBwYXJzZUZvcm1hdCkuZm9ybWF0KFwiWVlZWVwiKSksXHJcbiAgICAgIG1vbnRoOiBwYXJzZUludChkYXlqcyhkYXRlLCBwYXJzZUZvcm1hdCkuZm9ybWF0KFwiTVwiKSksXHJcbiAgICAgIGRheTogcGFyc2VJbnQoZGF5anMoZGF0ZSwgcGFyc2VGb3JtYXQpLmZvcm1hdChcIkRcIikpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFRvVHdlbHZlSHJzKHRpbWU6IGFueSwgY2FsbFJlbW92ZVplcm86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aW1lLmVuZHNXaXRoKCdBJykgfHwgdGltZS5lbmRzV2l0aCgnUCcpKSB7XHJcbiAgICAgIHRpbWUgPSB0aW1lLnN1YnN0cmluZygwLCB0aW1lLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gICAgbGV0IHRtcCA9IHRpbWUuc3BsaXQoXCI6XCIpO1xyXG4gICAgbGV0IGZvcm1hdHRlZFRpbWUgPSBbXTtcclxuICAgIGlmICgrdG1wWzBdID4gMTIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9ICgrdG1wWzBdIC0gMTIpLnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmICgrdG1wWzBdID09IDI0KSBmb3JtYXR0ZWRUaW1lWzJdID0gXCJBTVwiO1xyXG4gICAgICBlbHNlIGZvcm1hdHRlZFRpbWVbMl0gPSBcIlBNXCI7XHJcbiAgICB9IGVsc2UgaWYgKHRtcFswXSA9PSBcIjEyXCIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IHRtcFswXTtcclxuICAgICAgZm9ybWF0dGVkVGltZVsyXSA9IFwiUE1cIjtcclxuICAgIH0gZWxzZSBpZiAodG1wWzBdID09IFwiMDBcIikge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gXCIxMlwiXHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMl0gPSBcIkFNXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gdG1wWzBdO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzJdID0gXCJBTVwiO1xyXG4gICAgfVxyXG4gICAgZm9ybWF0dGVkVGltZVsxXSA9IHRtcFsxXTtcclxuICAgIGlmIChjYWxsUmVtb3ZlWmVybykgZm9ybWF0dGVkVGltZSA9IHRoaXMucmVtb3ZlWmVybyhmb3JtYXR0ZWRUaW1lKTtcclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdCh0aW1lOiBhbnksIGNhbGxBZGRaZXJvOiBhbnkpIHtcclxuICAgIGxldCB0bXAgPSB0aW1lLnNwbGl0KC9bIDpdKy8pO1xyXG4gICAgbGV0IGZvcm1hdHRlZFRpbWUgPSBbXTtcclxuICAgIGlmICh0bXBbMF0gIT0gXCIxMlwiICYmIHRtcFsyXSA9PSBcIlBNXCIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9ICgrdG1wWzBdICsgMTIpLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRtcFswXSA9PSBcIjEyXCIgJiYgdG1wWzJdID09IFwiQU1cIikge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gXCIwMFwiO1xyXG4gICAgfSBlbHNlIGZvcm1hdHRlZFRpbWVbMF0gPSB0bXBbMF0udG9TdHJpbmcoKTtcclxuICAgIGZvcm1hdHRlZFRpbWVbMV0gPSB0bXBbMV0udG9TdHJpbmcoKTtcclxuICAgIGlmIChjYWxsQWRkWmVybykgZm9ybWF0dGVkVGltZSA9IHRoaXMuYWRkWmVybyhmb3JtYXR0ZWRUaW1lKTtcclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlWmVybyh0aW1lOiBhbnkpIHtcclxuICAgIGxldCByZW1vdmVkWmVybztcclxuICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gdGltZTtcclxuICAgIGlmIChcclxuICAgICAgdGltZVswXSA9PSBcIjAxXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjAyXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjAzXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA0XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA1XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA2XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA3XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA4XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA5XCJcclxuICAgICkge1xyXG4gICAgICByZW1vdmVkWmVybyA9IHRpbWVbMF0udG9TdHJpbmcoKTtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IHJlbW92ZWRaZXJvLmNoYXJBdCgxKTtcclxuICAgICAgZm9ybWF0dGVkVGltZVsxXSA9IHRpbWVbMV07XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMl0gPSB0aW1lWzJdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1hdHRlZFRpbWU7XHJcbiAgfVxyXG5cclxuICBhZGRaZXJvKHRpbWU6IGFueSkge1xyXG4gICAgbGV0IGFkZGVkWmVybztcclxuICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gdGltZTtcclxuICAgIGlmICh0aW1lWzFdID09IFwiMFwiKSB0aW1lWzFdID0gXCIwXCIgKyB0aW1lWzFdO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aW1lWzBdID09IFwiMFwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIxXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjJcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiM1wiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI0XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjVcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiNlwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI3XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjhcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiOVwiXHJcbiAgICApIHtcclxuICAgICAgYWRkZWRaZXJvID0gXCIwXCIgKyB0aW1lWzBdO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gYWRkZWRaZXJvO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzFdID0gdGltZVsxXTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgc29ydEJ5VGltZUFzY2VuZGluZyhhOiBhbnksIGI6IGFueSkge1xyXG4gICAgbGV0IGZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuICAgIGEgPSBkYXlqcyhhLCBmb3JtYXQpO1xyXG4gICAgYiA9IGRheWpzKGIsIGZvcm1hdCk7XHJcblxyXG4gICAgbGV0IHJlc3VsdHM7XHJcblxyXG4gICAgcmVzdWx0cyA9IGEuaG91cnMoKSA+IGIuaG91cnMoKSA/IDEgOiBhLmhvdXJzKCkgPCBiLmhvdXJzKCkgPyAtMSA6IDA7XHJcblxyXG4gICAgaWYgKHJlc3VsdHMgPT09IDApIHJlc3VsdHMgPSBhLm1pbnV0ZXMoKSA+IGIubWludXRlcygpID8gMSA6IGEubWludXRlcygpIDwgYi5taW51dGVzKCkgPyAtMSA6IDA7XHJcblxyXG4gICAgaWYgKHJlc3VsdHMgPT09IDApIHJlc3VsdHMgPSBhLnNlY29uZHMoKSA+IGIuc2Vjb25kcygpID8gMSA6IGEuc2Vjb25kcygpIDwgYi5zZWNvbmRzKCkgPyAtMSA6IDA7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICBzb3J0QnlUaW1lRGVzY2VuZGluZyhhOiBhbnksIGI6IGFueSkge1xyXG4gICAgbGV0IGZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuICAgIGEgPSBkYXlqcyhhLCBmb3JtYXQpO1xyXG4gICAgYiA9IGRheWpzKGIsIGZvcm1hdCk7XHJcblxyXG4gICAgbGV0IHJlc3VsdHM7XHJcblxyXG4gICAgcmVzdWx0cyA9IGEuaG91cnMoKSA8IGIuaG91cnMoKSA/IDEgOiBhLmhvdXJzKCkgPiBiLmhvdXJzKCkgPyAtMSA6IDA7XHJcblxyXG4gICAgaWYgKHJlc3VsdHMgPT09IDApIHJlc3VsdHMgPSBhLm1pbnV0ZXMoKSA8IGIubWludXRlcygpID8gMSA6IGEubWludXRlcygpID4gYi5taW51dGVzKCkgPyAtMSA6IDA7XHJcblxyXG4gICAgaWYgKHJlc3VsdHMgPT09IDApIHJlc3VsdHMgPSBhLnNlY29uZHMoKSA8IGIuc2Vjb25kcygpID8gMSA6IGEuc2Vjb25kcygpID4gYi5zZWNvbmRzKCkgPyAtMSA6IDA7XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIGNvbnZlcnROZ2JEYXRlVG9Nb21lbnQobmdiRGF0ZTogTmdiRGF0ZSB8IE5nYkRhdGVUeXBlKTogc3RyaW5nIHtcclxuICAgIGxldCBjb252ZXJ0ZWQgPSBkYXlqcygpO1xyXG4gICAgY29udmVydGVkLm1vbnRoKG5nYkRhdGUubW9udGggLSAxKTtcclxuICAgIGNvbnZlcnRlZC5kYXRlKG5nYkRhdGUuZGF5KTtcclxuICAgIGNvbnZlcnRlZC55ZWFyKG5nYkRhdGUueWVhcik7XHJcbiAgICByZXR1cm4gY29udmVydGVkLmZvcm1hdChcIk1NL0REL1lZWVlcIik7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlRGF0ZShhOiBzdHJpbmcsIGI6IHN0cmluZywgaXNBc2M6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBpc0FzYyA/IGRheWpzKGEpLmRpZmYoYikgOiBkYXlqcyhiKS5kaWZmKGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmb3JtYXRUd2VudHlGb3VySG91clRpbWVUb0hITU1BRm9ybWF0KHZhbHVlOiBhbnksIGRhdGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgdmFsdWUgPSBkYXlqcyhkYXRlID8gZGF0ZSA6ICcwMS8wMS8yMDAwICcgKyB2YWx1ZSkuZm9ybWF0KFwiREQvTU0vWVlZWSBISDptbTpzc1wiKTtcclxuICAgIHJldHVybiB2YWx1ZVszXSA9PSBcIjBcIiAmJiB2YWx1ZVs0XSA9PSBcIjBcIlxyXG4gICAgICAgID8gZGF5anModmFsdWUsIFtcIkhIOm1tOnNzXCJdKS5mb3JtYXQoXCJoQVwiKS5zbGljZSgwLCAtMSlcclxuICAgICAgICA6IGRheWpzKHZhbHVlLCBbXCJISDptbTpzc1wiXSkuZm9ybWF0KFwiaDptbUFcIikuc2xpY2UoMCwgLTEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmb3JtYXRUd2VsdmVIb3VyVGltZVRvSEhNTUFGb3JtYXQodGltZVZhbHVlOiBhbnksIGRhdGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgdGltZVZhbHVlID0gZGF5anMoZGF0ZSA/IGRhdGUgOiAnMDEvMDEvMjAwMCAnICsgdGltZVZhbHVlKS5mb3JtYXQoXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCIpO1xyXG4gICAgcmV0dXJuIHRpbWVWYWx1ZVszXSA9PSBcIjBcIiAmJiB0aW1lVmFsdWVbNF0gPT0gXCIwXCJcclxuICAgICAgICA/IGRheWpzKHRpbWVWYWx1ZSkuZm9ybWF0KFwiaEFcIikuc2xpY2UoMCwgLTEpXHJcbiAgICAgICAgOiBkYXlqcyh0aW1lVmFsdWUpLmZvcm1hdChcImg6bW1BXCIpLnNsaWNlKDAsIC0xKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdERhdGVBbmRISE1NQVRpbWVUb1N0YW5kYXJkRm9ybWF0KGRhdGVBbmRUaW1lOiBhbnkpIHtcclxuICAgIGxldCBzdGFuZGFyZEZvcm1hdCwgZGF0ZSwgdGltZTtcclxuICAgIGlmIChkYXRlQW5kVGltZS5pbmNsdWRlcyhcInxcIikpIHtcclxuICAgICAgZGF0ZSA9IGRhdGVBbmRUaW1lLnNsaWNlKDAsIGRhdGVBbmRUaW1lLmluZGV4T2YoXCJ8XCIpKTtcclxuICAgICAgdGltZSA9IGRhdGVBbmRUaW1lLnNsaWNlKGRhdGVBbmRUaW1lLmluZGV4T2YoJ3wnKSArIDEsIGRhdGVBbmRUaW1lLmxlbmd0aCkudHJpbSgpO1xyXG5cclxuICAgICAgdGltZSA9IHRpbWUuc2xpY2UoMCwgMikgKyBcIjpcIiArIHRpbWUuc2xpY2UoMiwgNCkgKyBcIiBcIiArIHRpbWUuc2xpY2UoNCwgNSk7XHJcbiAgICAgIHRpbWUgPSB0aW1lICsgXCJNXCI7XHJcbiAgICAgIHN0YW5kYXJkRm9ybWF0ID0gZGF0ZSArIHRpbWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgc3RhbmRhcmRGb3JtYXQgPSBkYXRlQW5kVGltZSArIFwiIDAwOjAwIEFNXCJcclxuICAgIH1cclxuICAgIHJldHVybiBkYXlqcyhzdGFuZGFyZEZvcm1hdCkuZm9ybWF0KFwiTU0vREQvWVlZWSBoaDptbSBBXCIpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZShhOiBudW1iZXIgfCBzdHJpbmcsIGI6IG51bWJlciB8IHN0cmluZywgaXNBc2M6IGJvb2xlYW4pIHtcclxuICAgIGlmKHR5cGVvZiBhID09ICdzdHJpbmcnICYmIHR5cGVvZiBiID09ICdzdHJpbmcnKXtcclxuICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTtcclxuICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIChhIDwgYiA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xyXG4gIH1cclxuXHJcbiAgc29ydERhdGFCeUJyb2FkY2FzdFRpbWVBc2MoZmlyc3RQYXJhbVRpbWU6IHN0cmluZywgc2Vjb25kUGFyYW1UaW1lOiBzdHJpbmcsIGJyb2FkY2FzdFRpbWU6IHN0cmluZykge1xyXG4gICAgbGV0IGZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuXHJcbiAgICBsZXQgYSA9IGRheWpzKGZpcnN0UGFyYW1UaW1lLCBmb3JtYXQpO1xyXG4gICAgbGV0IGIgPSBkYXlqcyhzZWNvbmRQYXJhbVRpbWUsIGZvcm1hdCk7XHJcblxyXG4gICAgbGV0IGJyb2FkY2FzdGRheWpzRGF0ZVRpbWUgPSBkYXlqcyhicm9hZGNhc3RUaW1lLCBcIkhIOm1tOnNzXCIpO1xyXG5cclxuICAgIGEgPSBhLmlzQmVmb3JlKGJyb2FkY2FzdGRheWpzRGF0ZVRpbWUpID8gYS5hZGQoMSwgXCJkXCIpIDogYTtcclxuICAgIGIgPSBiLmlzQmVmb3JlKGJyb2FkY2FzdGRheWpzRGF0ZVRpbWUpID8gYi5hZGQoMSwgXCJkXCIpIDogYjtcclxuXHJcbiAgICBsZXQgcmVzdWx0ID0gYS5pc0JlZm9yZShiKSA/IC0xIDogYS5pc0FmdGVyKGIpID8gMSA6IDA7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBcclxufVxyXG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1kYXRlLXRpbWUtZm9ybWF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWRhdGUtdGltZS1mb3JtYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxnQ0FBZ0M7QUFDaEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOztBQVE1QixNQUFNLE9BQU8seUJBQXlCO0lBRXBDO1FBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxJQUFTO1FBQ3RDLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pELEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkQsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVMsRUFBRSxXQUFnQjtRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsTUFB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QkFBeUI7MEhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuLy8gVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzIFxyXG5leHBvcnQgdHlwZSBOZ2JEYXRlVHlwZSA9IHsgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlciB9O1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc29sZS5sb2coXCJBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlIHNlcnZpY2UgY3JlYXRlZC5cIilcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb05nYkRhdGVTdGFuZGFyZEZvcm1hdChkYXRlOiBhbnkpOiBOZ2JEYXRlVHlwZSB8IE5nYkRhdGUge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgeWVhcjogcGFyc2VJbnQobW9tZW50KGRhdGUsIFwiTU0vREQvWVlZWVwiKS5mb3JtYXQoXCJZWVlZXCIpKSxcclxuICAgICAgbW9udGg6IHBhcnNlSW50KG1vbWVudChkYXRlLCBcIk1NL0REL1lZWVlcIikuZm9ybWF0KFwiTVwiKSksXHJcbiAgICAgIGRheTogcGFyc2VJbnQobW9tZW50KGRhdGUsIFwiTU0vREQvWVlZWVwiKS5mb3JtYXQoXCJEXCIpKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9OZ2JEYXRlKGRhdGU6IGFueSwgcGFyc2VGb3JtYXQ6IGFueSk6IE5nYkRhdGVUeXBlIHwgTmdiRGF0ZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB5ZWFyOiBwYXJzZUludChtb21lbnQoZGF0ZSwgcGFyc2VGb3JtYXQpLmZvcm1hdChcIllZWVlcIikpLFxyXG4gICAgICBtb250aDogcGFyc2VJbnQobW9tZW50KGRhdGUsIHBhcnNlRm9ybWF0KS5mb3JtYXQoXCJNXCIpKSxcclxuICAgICAgZGF5OiBwYXJzZUludChtb21lbnQoZGF0ZSwgcGFyc2VGb3JtYXQpLmZvcm1hdChcIkRcIikpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFRvVHdlbHZlSHJzKHRpbWU6IGFueSwgY2FsbFJlbW92ZVplcm86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aW1lLmVuZHNXaXRoKCdBJykgfHwgdGltZS5lbmRzV2l0aCgnUCcpKSB7XHJcbiAgICAgIHRpbWUgPSB0aW1lLnN1YnN0cmluZygwLCB0aW1lLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gICAgbGV0IHRtcCA9IHRpbWUuc3BsaXQoXCI6XCIpO1xyXG4gICAgbGV0IGZvcm1hdHRlZFRpbWUgPSBbXTtcclxuICAgIGlmICgrdG1wWzBdID4gMTIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9ICgrdG1wWzBdIC0gMTIpLnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmICgrdG1wWzBdID09IDI0KSBmb3JtYXR0ZWRUaW1lWzJdID0gXCJBTVwiO1xyXG4gICAgICBlbHNlIGZvcm1hdHRlZFRpbWVbMl0gPSBcIlBNXCI7XHJcbiAgICB9IGVsc2UgaWYgKHRtcFswXSA9PSBcIjEyXCIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IHRtcFswXTtcclxuICAgICAgZm9ybWF0dGVkVGltZVsyXSA9IFwiUE1cIjtcclxuICAgIH0gZWxzZSBpZiAodG1wWzBdID09IFwiMDBcIikge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gXCIxMlwiXHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMl0gPSBcIkFNXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gdG1wWzBdO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzJdID0gXCJBTVwiO1xyXG4gICAgfVxyXG4gICAgZm9ybWF0dGVkVGltZVsxXSA9IHRtcFsxXTtcclxuICAgIGlmIChjYWxsUmVtb3ZlWmVybykgZm9ybWF0dGVkVGltZSA9IHRoaXMucmVtb3ZlWmVybyhmb3JtYXR0ZWRUaW1lKTtcclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdCh0aW1lOiBhbnksIGNhbGxBZGRaZXJvOiBhbnkpIHtcclxuICAgIGxldCB0bXAgPSB0aW1lLnNwbGl0KC9bIDpdKy8pO1xyXG4gICAgbGV0IGZvcm1hdHRlZFRpbWUgPSBbXTtcclxuICAgIGlmICh0bXBbMF0gIT0gXCIxMlwiICYmIHRtcFsyXSA9PSBcIlBNXCIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9ICgrdG1wWzBdICsgMTIpLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRtcFswXSA9PSBcIjEyXCIgJiYgdG1wWzJdID09IFwiQU1cIikge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gXCIwMFwiO1xyXG4gICAgfSBlbHNlIGZvcm1hdHRlZFRpbWVbMF0gPSB0bXBbMF0udG9TdHJpbmcoKTtcclxuICAgIGZvcm1hdHRlZFRpbWVbMV0gPSB0bXBbMV0udG9TdHJpbmcoKTtcclxuICAgIGlmIChjYWxsQWRkWmVybykgZm9ybWF0dGVkVGltZSA9IHRoaXMuYWRkWmVybyhmb3JtYXR0ZWRUaW1lKTtcclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlWmVybyh0aW1lOiBhbnkpIHtcclxuICAgIGxldCByZW1vdmVkWmVybztcclxuICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gdGltZTtcclxuICAgIGlmIChcclxuICAgICAgdGltZVswXSA9PSBcIjAxXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjAyXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjAzXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA0XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA1XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA2XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA3XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA4XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA5XCJcclxuICAgICkge1xyXG4gICAgICByZW1vdmVkWmVybyA9IHRpbWVbMF0udG9TdHJpbmcoKTtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IHJlbW92ZWRaZXJvLmNoYXJBdCgxKTtcclxuICAgICAgZm9ybWF0dGVkVGltZVsxXSA9IHRpbWVbMV07XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMl0gPSB0aW1lWzJdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1hdHRlZFRpbWU7XHJcbiAgfVxyXG5cclxuICBhZGRaZXJvKHRpbWU6IGFueSkge1xyXG4gICAgbGV0IGFkZGVkWmVybztcclxuICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gdGltZTtcclxuICAgIGlmICh0aW1lWzFdID09IFwiMFwiKSB0aW1lWzFdID0gXCIwXCIgKyB0aW1lWzFdO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aW1lWzBdID09IFwiMFwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIxXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjJcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiM1wiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI0XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjVcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiNlwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI3XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjhcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiOVwiXHJcbiAgICApIHtcclxuICAgICAgYWRkZWRaZXJvID0gXCIwXCIgKyB0aW1lWzBdO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gYWRkZWRaZXJvO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzFdID0gdGltZVsxXTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgc29ydEJ5VGltZUFzY2VuZGluZyhhOiBhbnksIGI6IGFueSkge1xyXG4gICAgbGV0IGZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuICAgIGEgPSBtb21lbnQoYSwgZm9ybWF0KTtcclxuICAgIGIgPSBtb21lbnQoYiwgZm9ybWF0KTtcclxuXHJcbiAgICBsZXQgcmVzdWx0cztcclxuXHJcbiAgICByZXN1bHRzID0gYS5ob3VycygpID4gYi5ob3VycygpID8gMSA6IGEuaG91cnMoKSA8IGIuaG91cnMoKSA/IC0xIDogMDtcclxuXHJcbiAgICBpZiAocmVzdWx0cyA9PT0gMCkgcmVzdWx0cyA9IGEubWludXRlcygpID4gYi5taW51dGVzKCkgPyAxIDogYS5taW51dGVzKCkgPCBiLm1pbnV0ZXMoKSA/IC0xIDogMDtcclxuXHJcbiAgICBpZiAocmVzdWx0cyA9PT0gMCkgcmVzdWx0cyA9IGEuc2Vjb25kcygpID4gYi5zZWNvbmRzKCkgPyAxIDogYS5zZWNvbmRzKCkgPCBiLnNlY29uZHMoKSA/IC0xIDogMDtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHNvcnRCeVRpbWVEZXNjZW5kaW5nKGE6IGFueSwgYjogYW55KSB7XHJcbiAgICBsZXQgZm9ybWF0ID0gXCJISDptbTpzc1wiO1xyXG4gICAgYSA9IG1vbWVudChhLCBmb3JtYXQpO1xyXG4gICAgYiA9IG1vbWVudChiLCBmb3JtYXQpO1xyXG5cclxuICAgIGxldCByZXN1bHRzO1xyXG5cclxuICAgIHJlc3VsdHMgPSBhLmhvdXJzKCkgPCBiLmhvdXJzKCkgPyAxIDogYS5ob3VycygpID4gYi5ob3VycygpID8gLTEgOiAwO1xyXG5cclxuICAgIGlmIChyZXN1bHRzID09PSAwKSByZXN1bHRzID0gYS5taW51dGVzKCkgPCBiLm1pbnV0ZXMoKSA/IDEgOiBhLm1pbnV0ZXMoKSA+IGIubWludXRlcygpID8gLTEgOiAwO1xyXG5cclxuICAgIGlmIChyZXN1bHRzID09PSAwKSByZXN1bHRzID0gYS5zZWNvbmRzKCkgPCBiLnNlY29uZHMoKSA/IDEgOiBhLnNlY29uZHMoKSA+IGIuc2Vjb25kcygpID8gLTEgOiAwO1xyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0TmdiRGF0ZVRvTW9tZW50KG5nYkRhdGU6IE5nYkRhdGUgfCBOZ2JEYXRlVHlwZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgY29udmVydGVkID0gbW9tZW50KCk7XHJcbiAgICBjb252ZXJ0ZWQubW9udGgobmdiRGF0ZS5tb250aCAtIDEpO1xyXG4gICAgY29udmVydGVkLmRhdGUobmdiRGF0ZS5kYXkpO1xyXG4gICAgY29udmVydGVkLnllYXIobmdiRGF0ZS55ZWFyKTtcclxuICAgIHJldHVybiBjb252ZXJ0ZWQuZm9ybWF0KFwiTU0vREQvWVlZWVwiKTtcclxuICB9XHJcblxyXG4gIGNvbXBhcmVEYXRlKGE6IHN0cmluZywgYjogc3RyaW5nLCBpc0FzYzogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGlzQXNjID8gbW9tZW50KGEpLmRpZmYoYikgOiBtb21lbnQoYikuZGlmZihhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0VHdlbnR5Rm91ckhvdXJUaW1lVG9ISE1NQUZvcm1hdCh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIHZhbHVlID0gbW9tZW50KHZhbHVlLCBbXCJISDptbTpzc1wiXSkuZm9ybWF0KFwiSEg6bW06c3NcIik7XHJcbiAgICByZXR1cm4gdmFsdWVbM10gPT0gXCIwXCIgJiYgdmFsdWVbNF0gPT0gXCIwXCJcclxuICAgICAgICA/IG1vbWVudCh2YWx1ZSwgW1wiSEg6bW06c3NcIl0pLmZvcm1hdChcImhBXCIpLnNsaWNlKDAsIC0xKVxyXG4gICAgICAgIDogbW9tZW50KHZhbHVlLCBbXCJISDptbTpzc1wiXSkuZm9ybWF0KFwiaDptbUFcIikuc2xpY2UoMCwgLTEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmb3JtYXRUd2VsdmVIb3VyVGltZVRvSEhNTUFGb3JtYXQodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSwgW1wiSEg6bW06QVwiXSkuZm9ybWF0KFwiSEg6bW06c3NcIik7XHJcbiAgICByZXR1cm4gdmFsdWVbM10gPT0gXCIwXCIgJiYgdmFsdWVbNF0gPT0gXCIwXCJcclxuICAgICAgICA/IG1vbWVudCh2YWx1ZSwgW1wiSEg6bW06c3NcIl0pLmZvcm1hdChcImhBXCIpLnNsaWNlKDAsIC0xKVxyXG4gICAgICAgIDogbW9tZW50KHZhbHVlLCBbXCJISDptbTpzc1wiXSkuZm9ybWF0KFwiaDptbUFcIikuc2xpY2UoMCwgLTEpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZUFuZEhITU1BVGltZVRvU3RhbmRhcmRGb3JtYXQoZGF0ZUFuZFRpbWU6IGFueSkge1xyXG4gICAgbGV0IHN0YW5kYXJkRm9ybWF0LCBkYXRlLCB0aW1lO1xyXG4gICAgaWYgKGRhdGVBbmRUaW1lLmluY2x1ZGVzKFwifFwiKSkge1xyXG4gICAgICBkYXRlID0gZGF0ZUFuZFRpbWUuc2xpY2UoMCwgZGF0ZUFuZFRpbWUuaW5kZXhPZihcInxcIikpO1xyXG4gICAgICB0aW1lID0gZGF0ZUFuZFRpbWUuc2xpY2UoZGF0ZUFuZFRpbWUuaW5kZXhPZignfCcpICsgMSwgZGF0ZUFuZFRpbWUubGVuZ3RoKS50cmltKCk7XHJcblxyXG4gICAgICB0aW1lID0gdGltZS5zbGljZSgwLCAyKSArIFwiOlwiICsgdGltZS5zbGljZSgyLCA0KSArIFwiIFwiICsgdGltZS5zbGljZSg0LCA1KTtcclxuICAgICAgdGltZSA9IHRpbWUgKyBcIk1cIjtcclxuICAgICAgc3RhbmRhcmRGb3JtYXQgPSBkYXRlICsgdGltZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzdGFuZGFyZEZvcm1hdCA9IGRhdGVBbmRUaW1lICsgXCIgMDA6MDAgQU1cIlxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1vbWVudChzdGFuZGFyZEZvcm1hdCkuZm9ybWF0KFwiTU0vREQvWVlZWSBoaDptbSBBXCIpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZShhOiBudW1iZXIgfCBzdHJpbmcsIGI6IG51bWJlciB8IHN0cmluZywgaXNBc2M6IGJvb2xlYW4pIHtcclxuICAgIGlmKHR5cGVvZiBhID09ICdzdHJpbmcnICYmIHR5cGVvZiBiID09ICdzdHJpbmcnKXtcclxuICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTtcclxuICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIChhIDwgYiA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xyXG4gIH1cclxuXHJcbiAgc29ydERhdGFCeUJyb2FkY2FzdFRpbWVBc2MoZmlyc3RQYXJhbVRpbWU6IHN0cmluZywgc2Vjb25kUGFyYW1UaW1lOiBzdHJpbmcsIGJyb2FkY2FzdFRpbWU6IHN0cmluZykge1xyXG4gICAgbGV0IGZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuXHJcbiAgICBsZXQgYSA9IG1vbWVudChmaXJzdFBhcmFtVGltZSwgZm9ybWF0KTtcclxuICAgIGxldCBiID0gbW9tZW50KHNlY29uZFBhcmFtVGltZSwgZm9ybWF0KTtcclxuXHJcbiAgICBsZXQgYnJvYWRjYXN0TW9tZW50RGF0ZVRpbWUgPSBtb21lbnQoYnJvYWRjYXN0VGltZSwgXCJISDptbTpzc1wiKTtcclxuXHJcbiAgICBhID0gYS5pc0JlZm9yZShicm9hZGNhc3RNb21lbnREYXRlVGltZSkgPyBhLmFkZCgxLCBcImRcIikgOiBhO1xyXG4gICAgYiA9IGIuaXNCZWZvcmUoYnJvYWRjYXN0TW9tZW50RGF0ZVRpbWUpID8gYi5hZGQoMSwgXCJkXCIpIDogYjtcclxuXHJcbiAgICBsZXQgcmVzdWx0ID0gYS5pc0JlZm9yZShiKSA/IC0xIDogYS5pc0FmdGVyKGIpID8gMSA6IDA7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBcclxufVxyXG4iXX0=