@sunbird-cb/utils-v2 0.0.19 → 0.0.20

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.
@@ -11,6 +11,7 @@ var EventService = (function () {
11
11
  function EventService(environment, utilitySvc) {
12
12
  this.utilitySvc = utilitySvc;
13
13
  this.todaysEvents = [];
14
+ this.todaysLiveEvents = [];
14
15
  this.eventsSubject = new Subject();
15
16
  this.events$ = this.eventsSubject.asObservable();
16
17
  this.eventsChatbotSubject = new Subject();
@@ -141,16 +142,26 @@ var EventService = (function () {
141
142
  var min = stime.substr(2, 3);
142
143
  return date + " " + hour + min;
143
144
  };
145
+ EventService.prototype.sortItemByTime = function (eventsdata) {
146
+ return eventsdata.sort((function (a, b) {
147
+ return (a.eventDate === b.eventDate) ? 0 : b.eventDate ? -1 : 1;
148
+ }));
149
+ };
144
150
  EventService.prototype.setEventListData = function (eventObj) {
145
151
  var _this = this;
146
152
  if (eventObj !== undefined) {
147
153
  this.todaysEvents = [];
154
+ this.todaysLiveEvents = [];
148
155
  var data_1 = eventObj;
149
156
  var isEventLive_1 = false;
150
157
  var isEventRecording_1 = false;
158
+ var isEventPast_1 = false;
159
+ var isEventFuture_1 = false;
151
160
  Object.keys(data_1).forEach((function (index) {
152
161
  isEventRecording_1 = false;
153
162
  isEventLive_1 = false;
163
+ isEventPast_1 = false;
164
+ isEventFuture_1 = false;
154
165
  var obj = data_1[index];
155
166
  var floor = Math.floor;
156
167
  var hours = floor(obj.duration / 60);
@@ -186,9 +197,21 @@ var EventService = (function () {
186
197
  else if (today >= eventendDate) {
187
198
  isEventRecording_1 = true;
188
199
  isEventLive_1 = false;
200
+ if (moment(today).isAfter(eventendDate) && moment(today).isAfter(eventDate)) {
201
+ isEventPast_1 = true;
202
+ }
203
+ }
204
+ else {
205
+ if (moment(today).isBefore(eventDate) && moment(today).isBefore(eventendDate)) {
206
+ isEventFuture_1 = true;
207
+ }
189
208
  }
190
209
  var eventDataObj = {
210
+ eventDate: eventDate,
211
+ eventendDate: eventendDate,
191
212
  isEventLive: isEventLive_1,
213
+ isEventFuture: isEventFuture_1,
214
+ isEventPast: isEventPast_1,
192
215
  isEventRecording: isEventRecording_1,
193
216
  event: obj,
194
217
  eventName: obj.name,
@@ -204,15 +227,30 @@ var EventService = (function () {
204
227
  pastevent: false,
205
228
  };
206
229
  var isToday = _this.compareDate(obj.startDate);
207
- if (isToday && isEventLive_1) {
230
+ if (isToday) {
208
231
  _this.todaysEvents.push(eventDataObj);
209
232
  }
233
+ if (isToday && isEventLive_1) {
234
+ _this.todaysLiveEvents.push(eventDataObj);
235
+ }
210
236
  }));
211
- this.todaysEvents = this.todaysEvents.sort((function (a, b) {
212
- return (a.isEventLive === b.isEventLive) ? 0 : b.isEventLive ? -1 : 1;
213
- }));
237
+ this.todaysLiveEvents = this.sortItemByTime(this.todaysLiveEvents);
238
+ this.todaysEvents = this.getTodaysEvents(this.todaysEvents);
214
239
  }
215
240
  };
241
+ EventService.prototype.getTodaysEvents = function (eventData) {
242
+ var liveEvents = [];
243
+ var pastEvents = [];
244
+ var futureEvents = [];
245
+ liveEvents = this.todaysLiveEvents;
246
+ pastEvents = eventData.filter((function (pastEvent) { return pastEvent.isEventPast; }));
247
+ futureEvents = eventData.filter((function (futureEvent) { return futureEvent.isEventFuture; }));
248
+ liveEvents = this.sortItemByTime(liveEvents);
249
+ futureEvents = this.sortItemByTime(futureEvents);
250
+ pastEvents = this.sortItemByTime(pastEvents);
251
+ this.todaysEvents = tslib_1.__spread(liveEvents, futureEvents, pastEvents);
252
+ return this.todaysEvents;
253
+ };
216
254
  EventService.decorators = [
217
255
  { type: Injectable, args: [{
218
256
  providedIn: 'root',
@@ -228,6 +266,7 @@ var EventService = (function () {
228
266
  export { EventService };
229
267
  if (false) {
230
268
  EventService.prototype.todaysEvents;
269
+ EventService.prototype.todaysLiveEvents;
231
270
  EventService.prototype.eventsSubject;
232
271
  EventService.prototype.events$;
233
272
  EventService.prototype.eventsChatbotSubject;
@@ -239,4 +278,4 @@ if (false) {
239
278
  EventService.prototype.environment;
240
279
  EventService.prototype.utilitySvc;
241
280
  }
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQTs7O0FBQzNCO0lBbUJFLHNCQUN5QixXQUFnQixFQUMvQixVQUEwQjtRQUExQixlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQWpCcEMsaUJBQVksR0FBUSxFQUFFLENBQUE7UUFFZCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQ3ZELFlBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBRTFDLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQzlELG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRXhELDBCQUFxQixHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQy9ELG9CQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRTFELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDekQsaUJBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBT3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO0lBRWhDLENBQUM7SUFFRCxvQ0FB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QUFFLE1BQU07aUJBQ25COzs7Z0RBa0JJLE1BQU0sU0FBQyxhQUFhO2dCQXhCaEIsY0FBYzs7O3VCQUh2QjtDQXdSQyxBQWpSRCxJQWlSQztTQTlRWSxZQUFZOztJQUN2QixvQ0FBc0I7SUFFdEIscUNBQThEO0lBQzlELCtCQUFrRDtJQUVsRCw0Q0FBcUU7SUFDckUsc0NBQWdFO0lBRWhFLDZDQUFzRTtJQUN0RSx1Q0FBa0U7SUFFbEUsdUNBQWdFO0lBQ2hFLG9DQUF5RDtJQUV6RCxtQ0FBZ0I7SUFHZCxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgV3NFdmVudHMgfSBmcm9tICcuL2V2ZW50Lm1vZGVsJ1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbGl0eS5zZXJ2aWNlJ1xyXG4vKiB0c2xpbnQ6ZGlzYWJsZSovXHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xyXG4gIHRvZGF5c0V2ZW50czogYW55ID0gW11cclxuICBcclxuICBwcml2YXRlIGV2ZW50c1N1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBldmVudHMkID0gdGhpcy5ldmVudHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIHByaXZhdGUgZXZlbnRzQ2hhdGJvdFN1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBjaGF0Ym90RXZlbnRzJCA9IHRoaXMuZXZlbnRzQ2hhdGJvdFN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgcHJpdmF0ZSBldmVudHNHZXRTdGFydFN1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBnZXRTdGFydEV2ZW50cyQgPSB0aGlzLmV2ZW50c0dldFN0YXJ0U3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBwcml2YXRlIGV2ZW50c1BSU3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGdldFBSRXZlbnRzJCA9IHRoaXMuZXZlbnRzUFJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIGVudmlyb25tZW50OiBhbnlcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVN2YzogVXRpbGl0eVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnRcclxuICAgIC8vIHRoaXMuZm9jdXNDaGFuZ2VFdmVudExpc3RlbmVyKClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgZXZlbnQucGFnZUNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZXZlbnQucGFnZUNvbnRleHQpXHJcbiAgICB0aGlzLmV2ZW50c1N1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoQ2hhdGJvdEV2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIHRoaXMuZXZlbnRzQ2hhdGJvdFN1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoR2V0U3RhcnRlZEV2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIHRoaXMuZXZlbnRzR2V0U3RhcnRTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaFBsYXRmb3JtUmF0aW5nRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNQUlN1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG5cclxuICAvLyBoZWxwZXIgZnVuY3Rpb25zXHJcbiAgcmFpc2VJbnRlcmFjdFRlbGVtZXRyeShlZGF0YTogV3NFdmVudHMuSVRlbGVtZXRyeUVkYXRhLCBvYmplY3Q6IGFueSwgcGFnZUNvbnRleHQ/OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0Pih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGVkYXRhLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBwYWdlQ29udGV4dDogdGhpcy5nZXRDb250ZXh0KHBhZ2VDb250ZXh0KSxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiAnJyxcclxuICAgICAgdG86ICdUZWxlbWV0cnknLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJhaXNlRmVlZGJhY2tUZWxlbWV0cnkoZWRhdGE6IFdzRXZlbnRzLklUZWxlbWV0cnlFZGF0YSwgb2JqZWN0OiBhbnksIGZyb20/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0Pih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGVkYXRhLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkZlZWRiYWNrLFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiBmcm9tIHx8ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gUmFpc2UgY3VzdG9tIGltcHJlc3Npb24gZXZlbnRzIGVnOm9uIHRhYiBjaGFuZ2VcclxuICByYWlzZUN1c3RvbUltcHJlc3Npb24ob2JqZWN0OiBhbnksIHBhZ2VDb250ZXh0PzogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0KSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbXByZXNzaW9uPih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBwYWdlQ29udGV4dDogdGhpcy5nZXRDb250ZXh0KHBhZ2VDb250ZXh0KSxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkltcHJlc3Npb24sXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBmb2N1c0NoYW5nZUV2ZW50TGlzdGVuZXIoKSB7XHJcbiAgLy8gICBmcm9tRXZlbnQod2luZG93LCAnZm9jdXMnKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoJ2ZvY3VzJywgJ2dhaW5lZCcsIHt9KVxyXG4gIC8vICAgfSlcclxuICAvLyAgIGZyb21FdmVudCh3aW5kb3csICdibHVyJykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KCdmb2N1cycsICdsb3N0Jywge30pXHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gTWV0aG9kIHRvIGdldCB0aGUgY29udGV4dCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGVsZW1ldHJ5IGludGVyYWN0IGV2ZW50XHJcbiAgcHJpdmF0ZSBnZXRDb250ZXh0KHBhZ2VDb250ZXh0OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQgfCB1bmRlZmluZWQpOiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQge1xyXG4gICAgY29uc3Qgcm91dGVEYXRhQ29udGV4dCA9IHRoaXMudXRpbGl0eVN2Yy5yb3V0ZURhdGFcclxuICAgIC8vIGluaXRpYWxpemUgd2l0aCB0aGUgcm91dGUgZGF0YSBjb25maWd1cmF0aW9uIC0gY3VycmVudCByb3V0ZSdzIHBhZ2VJRCAmIG1vZHVsZVxyXG4gICAgY29uc3QgZmluYWxDb250ZXh0OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQgPSB7XHJcbiAgICAgIHBhZ2VJZDogcm91dGVEYXRhQ29udGV4dC5wYWdlSWQsXHJcbiAgICAgIG1vZHVsZTogcm91dGVEYXRhQ29udGV4dC5tb2R1bGUsXHJcbiAgICB9XHJcbiAgICBpZiAocGFnZUNvbnRleHQpIHtcclxuICAgICAgLy8gaWYgY29udGV4dCBoYXMgcGFnZUlkRXh0LCBhcHBlbmQgaXQgdG8gdGhlIHJvdXRlJ3MgcGFnZUlkXHJcbiAgICAgIGlmIChwYWdlQ29udGV4dC5wYWdlSWRFeHQpIHtcclxuICAgICAgICBmaW5hbENvbnRleHQucGFnZUlkID0gYCR7cm91dGVEYXRhQ29udGV4dC5wYWdlSWR9XyR7cGFnZUNvbnRleHQucGFnZUlkRXh0fWBcclxuICAgICAgfSBlbHNlIGlmIChwYWdlQ29udGV4dC5wYWdlSWQpIHtcclxuICAgICAgICAvLyBlbHNlIGNvbnRleHQgaGFzIHBhZ2VJZCwgb3ZlcnJpZGUgaXQgdG8gdGhlIGZpbmFsIHBhZ2VJRFxyXG4gICAgICAgIGZpbmFsQ29udGV4dC5wYWdlSWQgPSBwYWdlQ29udGV4dC5wYWdlSWRcclxuICAgICAgfVxyXG4gICAgICAvLyBpZiBjb250ZXh0IGhhcyBtb2R1bGUsIG92ZXJyaWRlIGl0IHRvIHRoZSBmaW5hbCBtb2R1bGVcclxuICAgICAgaWYgKHBhZ2VDb250ZXh0Lm1vZHVsZSkge1xyXG4gICAgICAgIGZpbmFsQ29udGV4dC5tb2R1bGUgPSBwYWdlQ29udGV4dC5tb2R1bGVcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaW5hbENvbnRleHRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVUYWJUZWxlbWV0cnkoc3ViVHlwZTogc3RyaW5nLCBkYXRhOiBXc0V2ZW50cy5JVGVsZW1ldHJ5VGFiRGF0YSwgb2JqZWN0PzphbnkpIHtcclxuICAgIC8vIHJhaXNlIGEgdGFiIGNsaWNrIGludGVyYWN0IGV2ZW50XHJcbiAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXHJcbiAgICAgIHtcclxuICAgICAgICBzdWJUeXBlLFxyXG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFR5cGVzLkNMSUNLLFxyXG4gICAgICAgIGlkOiBgJHtfLmNhbWVsQ2FzZShkYXRhLmxhYmVsKX0tdGFiYCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIC8vIGNvbnRleHQ6IHtcclxuICAgICAgICAvLyAgIHBvc2l0aW9uOiBkYXRhLmluZGV4LFxyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgICAgLi4ub2JqZWN0XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgcGFnZUlkRXh0OiBgJHtfLmNhbWVsQ2FzZShkYXRhLmxhYmVsKX0tdGFiYCxcclxuICAgIH0pXHJcblxyXG4gICAgLy8gcmFpc2UgYSB0YWIgY2xpY2sgaW1wcmVzc2lvbiBldmVudFxyXG4gICAgdGhpcy5yYWlzZUN1c3RvbUltcHJlc3Npb24oe1xyXG4gICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBkYXRhLmluZGV4LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iamVjdFxyXG4gICAgICB9LHtcclxuICAgICAgcGFnZUlkRXh0OiBgJHtfLmNhbWVsQ2FzZShkYXRhLmxhYmVsKX0tdGFiYCxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRQdWJsaWNVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbWFpblVybCA9IHVybC5zcGxpdCgnL2NvbnRlbnQnKS5wb3AoKSB8fCAnJ1xyXG4gICAgcmV0dXJuIGAke3RoaXMuZW52aXJvbm1lbnQuY29udGVudEhvc3R9LyR7dGhpcy5lbnZpcm9ubWVudC5jb250ZW50QnVja2V0fS9jb250ZW50JHttYWluVXJsfWBcclxuICB9XHJcblxyXG4gIGFsbEV2ZW50RGF0ZUZvcm1hdChkYXRldGltZTogYW55KSB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldERhdGUoKVxyXG4gICAgY29uc3QgeWVhciA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRGdWxsWWVhcigpXHJcbiAgICBjb25zdCBtb250aCA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRNb250aCgpXHJcbiAgICBjb25zdCBob3VycyA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRIb3VycygpXHJcbiAgICBjb25zdCBtaW51dGVzID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldE1pbnV0ZXMoKVxyXG4gICAgY29uc3Qgc2Vjb25kcyA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRTZWNvbmRzKClcclxuICAgIGNvbnN0IGZvcm1hdGVkRGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VycywgbWludXRlcywgc2Vjb25kcywgMClcclxuICAgIC8vIGxldCBmb3JtYXQgPSAnWVlZWS1NTS1ERCBoaDptbSBhJ1xyXG4gICAgLy8gaWYgKCF0aW1lQWxsb3cpIHtcclxuICAgIGNvbnN0IGZvcm1hdCA9ICdZWVlZLU1NLUREJ1xyXG4gICAgLy8gfVxyXG4gICAgY29uc3QgcmVhZGFibGVEYXRlTW9udGggPSBtb21lbnQoZm9ybWF0ZWREYXRlKS5mb3JtYXQoZm9ybWF0KVxyXG4gICAgY29uc3QgZmluYWxEYXRlVGltZVZhbHVlID0gYCR7cmVhZGFibGVEYXRlTW9udGh9YFxyXG4gICAgcmV0dXJuIGZpbmFsRGF0ZVRpbWVWYWx1ZVxyXG4gIH1cclxuXHJcbiAgY29tcGFyZURhdGUoc3RhcnREYXRlOiBhbnkpIHtcclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLXRlbXBsYXRlXHJcbiAgICBjb25zdCBkYXkgPSAgKCcwJyArIChuZXcgRGF0ZSgpLmdldERhdGUoKSkpLnNsaWNlKC0yKVxyXG4gICAgY29uc3QgeWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKVxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci10ZW1wbGF0ZVxyXG4gICAgY29uc3QgbW9udGggPSAoJzAnICsgKG5vdy5nZXRNb250aCgpICsgMSkpLnNsaWNlKC0yKVxyXG4gICAgY29uc3QgdG9kYXlzZGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWBcclxuICAgIGlmIChzdGFydERhdGUgPT09IHRvZGF5c2RhdGUpICB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIGN1c3RvbURhdGVGb3JtYXQoZGF0ZTogYW55LCB0aW1lOiBhbnkpIHtcclxuICAgIGNvbnN0IHN0aW1lID0gdGltZS5zcGxpdCgnKycpWzBdXHJcbiAgICBjb25zdCBob3VyID0gc3RpbWUuc3Vic3RyKDAsIDIpXHJcbiAgICBjb25zdCBtaW4gPSBzdGltZS5zdWJzdHIoMiwgMylcclxuICAgIHJldHVybiBgJHtkYXRlfSAke2hvdXJ9JHttaW59YFxyXG4gfVxyXG5cclxuXHJcbiBzZXRFdmVudExpc3REYXRhKGV2ZW50T2JqOiBhbnkpIHtcclxuICBpZiAoZXZlbnRPYmogIT09IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy50b2RheXNFdmVudHMgPSBbXVxyXG4gICAgY29uc3QgZGF0YSA9IGV2ZW50T2JqXHJcbiAgICBsZXQgaXNFdmVudExpdmUgOiBib29sZWFuID0gZmFsc2VcclxuICAgIGxldCBpc0V2ZW50UmVjb3JkaW5nIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgIC8vIGNvbnNvbGUubG9nKCdzdHJpcCBjb21wJywgZGF0YSlcclxuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgXHJcbiAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSBmYWxzZVxyXG4gICAgICBpc0V2ZW50TGl2ZSA9IGZhbHNlXHJcbiAgICAgIGNvbnN0IG9iaiA9IGRhdGFbaW5kZXhdXHJcbiAgICAgIGNvbnN0IGZsb29yID0gTWF0aC5mbG9vclxyXG4gICAgICBjb25zdCBob3VycyA9IGZsb29yKG9iai5kdXJhdGlvbiAvIDYwKVxyXG4gICAgICBjb25zdCBtaW51dGVzID0gb2JqLmR1cmF0aW9uICUgNjBcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSAoaG91cnMgPT09IDApID8gKChtaW51dGVzID09PSAwKSA/ICctLS0nIDogYCR7bWludXRlc30gbWludXRlc2ApIDogKG1pbnV0ZXMgPT09IDApID8gKGhvdXJzID09PSAxKSA/XHJcbiAgICAgICAgYCR7aG91cnN9IGhvdXJgIDogYCR7aG91cnN9IGhvdXJzYCA6IChob3VycyA9PT0gMSkgPyBgJHtob3Vyc30gaG91ciAke21pbnV0ZXN9IG1pbnV0ZXNgIDpcclxuICAgICAgICBgJHtob3Vyc30gaG91cnMgJHttaW51dGVzfSBtaW51dGVzYFxyXG4gICAgICBjb25zdCBjcmVhdG9yZGF0YSA9IG9iai5jcmVhdG9yRGV0YWlscyAhPT0gdW5kZWZpbmVkID8gb2JqLmNyZWF0b3JEZXRhaWxzIDogW11cclxuICAgICAgY29uc3Qgc3RyID0gY3JlYXRvcmRhdGEgJiYgY3JlYXRvcmRhdGEubGVuZ3RoID4gMCA/IGNyZWF0b3JkYXRhLnJlcGxhY2UoL1xcXFwvZywgJycpIDogW11cclxuICAgICAgY29uc3QgY3JlYXRvckRldGFpbHMgPSBzdHIgJiYgc3RyLmxlbmd0aCA+IDAgPyBKU09OLnBhcnNlKHN0cikgOiBjcmVhdG9yZGF0YVxyXG5cclxuICAgICAgY29uc3Qgc3RpbWUgPSBvYmouc3RhcnRUaW1lLnNwbGl0KCcrJylbMF1cclxuICAgICAgY29uc3QgaG91ciA9IHN0aW1lLnN1YnN0cigwLCAyKVxyXG4gICAgICBjb25zdCBtaW4gPSBzdGltZS5zdWJzdHIoMiwgMylcclxuICAgICAgY29uc3Qgc3RhcnR0aW1lID0gYCR7aG91cn0ke21pbn1gXHJcblxyXG4gICAgICBjb25zdCBldGltZSA9IG9iai5lbmRUaW1lLnNwbGl0KCcrJylbMF1cclxuICAgICAgY29uc3QgZWhvdXIgPSBldGltZS5zdWJzdHIoMCwgMilcclxuICAgICAgY29uc3QgZW1pbiA9IGV0aW1lLnN1YnN0cigyLCAzKVxyXG4gICAgICBjb25zdCBlbmR0aW1lID0gYCR7ZWhvdXJ9JHtlbWlufWBcclxuICAgICAgY29uc3QgZXZlbnREYXRlID0gdGhpcy5jdXN0b21EYXRlRm9ybWF0KG9iai5zdGFydERhdGUsIG9iai5zdGFydFRpbWUpXHJcbiAgICAgIGNvbnN0IGV2ZW50ZW5kRGF0ZSA9IHRoaXMuY3VzdG9tRGF0ZUZvcm1hdChvYmouZW5kRGF0ZSwgb2JqLmVuZFRpbWUpXHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcclxuICAgICAgY29uc3QgdG9kYXkgPSBtb21lbnQobm93KS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW0nKVxyXG4gICAgICBpZiAobW9tZW50KHRvZGF5KS5pc0JldHdlZW4oZXZlbnREYXRlLCBldmVudGVuZERhdGUpKSB7XHJcbiAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IGZhbHNlXHJcbiAgICAgICAgaXNFdmVudExpdmUgPSB0cnVlXHJcbiAgICAgICAgaWYgKHRvZGF5ID49IGV2ZW50ZW5kRGF0ZSkge1xyXG4gICAgICAgICAgaWYgKG9iai5yZWNvcmRlZExpbmtzICYmIG9iai5yZWNvcmRlZExpbmtzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IHRydWVcclxuICAgICAgICAgICAgaXNFdmVudExpdmUgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0b2RheSA+PSBldmVudGVuZERhdGUpIHtcclxuICAgICAgICBpc0V2ZW50UmVjb3JkaW5nID0gdHJ1ZVxyXG4gICAgICAgIGlzRXZlbnRMaXZlID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBldmVudERhdGFPYmogPSB7XHJcbiAgICAgICAgaXNFdmVudExpdmUsXHJcbiAgICAgICAgaXNFdmVudFJlY29yZGluZyxcclxuICAgICAgICBldmVudDogb2JqLFxyXG4gICAgICAgIGV2ZW50TmFtZTogb2JqLm5hbWUsXHJcbiAgICAgICAgZXZlbnRTdGFydFRpbWU6IHN0YXJ0dGltZSxcclxuICAgICAgICBldmVudEVuZFRpbWU6IGVuZHRpbWUsXHJcbiAgICAgICAgZXZlbnRTdGFydERhdGU6IG9iai5zdGFydERhdGUsXHJcbiAgICAgICAgZXZlbnRDcmVhdGVkT246IHRoaXMuYWxsRXZlbnREYXRlRm9ybWF0KG9iai5jcmVhdGVkT24pLFxyXG4gICAgICAgIGV2ZW50RHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIGV2ZW50am9pbmVkOiBjcmVhdG9yRGV0YWlscy5sZW5ndGgsXHJcbiAgICAgICAgZXZlbnRUaHVtYm5haWw6IG9iai5hcHBJY29uICYmIChvYmouYXBwSWNvbiAhPT0gbnVsbCB8fCBvYmouYXBwSWNvbiAhPT0gdW5kZWZpbmVkKSA/XHJcbiAgICAgICAgICB0aGlzLmdldFB1YmxpY1VybChvYmouYXBwSWNvbikgOlxyXG4gICAgICAgICAgJy9hc3NldHMvaWNvbnMvRXZlbnRzX2RlZmF1bHQucG5nJyxcclxuICAgICAgICBwYXN0ZXZlbnQ6IGZhbHNlLFxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBpc1RvZGF5ID0gdGhpcy5jb21wYXJlRGF0ZShvYmouc3RhcnREYXRlKVxyXG4gICAgICBpZiAoaXNUb2RheSAmJiBpc0V2ZW50TGl2ZSkge1xyXG4gICAgICAgIHRoaXMudG9kYXlzRXZlbnRzLnB1c2goZXZlbnREYXRhT2JqKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy50b2RheXNFdmVudHMgPSB0aGlzLnRvZGF5c0V2ZW50cy5zb3J0KChhOmFueSwgYjphbnkpPT4ge1xyXG4gICAgICByZXR1cm4gKGEuaXNFdmVudExpdmUgPT09IGIuaXNFdmVudExpdmUpPyAwIDogYi5pc0V2ZW50TGl2ZT8gLTEgOiAxO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbn1cclxuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQTs7O0FBQzNCO0lBb0JFLHNCQUN5QixXQUFnQixFQUMvQixVQUEwQjtRQUExQixlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQWxCcEMsaUJBQVksR0FBUSxFQUFFLENBQUE7UUFDdEIscUJBQWdCLEdBQVEsRUFBRSxDQUFBO1FBRWxCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDdkQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFMUMseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDOUQsbUJBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFeEQsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDL0Qsb0JBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFMUQsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQTtRQUN6RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUE7UUFPdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxX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QUFDLFVBQUMsU0FBYyxJQUFLLE9BQUEsU0FBUyxDQUFDLFdBQVcsRUFBckIsQ0FBcUIsRUFBQyxDQUFBO1FBQ3hFLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFDLFVBQUMsV0FBZ0IsSUFBSyxPQUFBLFdBQVcsQ0FBQyxhQUFhLEVBQXpCLENBQXlCLEVBQUMsQ0FBQTtRQUNoRixVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM1QyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM1QyxJQUFJLENBQUMsWUFBWSxvQkFBUSxVQUFVLEVBQUssWUFBWSxFQUFLLFVBQVUsQ0FBQyxDQUFBO1FBRXBFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQTtJQUMxQixDQUFDOztnQkF2VEYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7O2dEQW1CSSxNQUFNLFNBQUMsYUFBYTtnQkF6QmhCLGNBQWM7Ozt1QkFIdkI7Q0FnVUMsQUF6VEQsSUF5VEM7U0F0VFksWUFBWTs7SUFDdkIsb0NBQXNCO0lBQ3RCLHdDQUEwQjtJQUUxQixxQ0FBOEQ7SUFDOUQsK0JBQWtEO0lBRWxELDRDQUFxRTtJQUNyRSxzQ0FBZ0U7SUFFaEUsNkNBQXNFO0lBQ3RFLHVDQUFrRTtJQUVsRSx1Q0FBZ0U7SUFDaEUsb0NBQXlEO0lBRXpELG1DQUFnQjtJQUdkLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBXc0V2ZW50cyB9IGZyb20gJy4vZXZlbnQubW9kZWwnXHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi91dGlsaXR5LnNlcnZpY2UnXHJcbi8qIHRzbGludDpkaXNhYmxlKi9cclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV2ZW50U2VydmljZSB7XHJcbiAgdG9kYXlzRXZlbnRzOiBhbnkgPSBbXVxyXG4gIHRvZGF5c0xpdmVFdmVudHM6IGFueSA9IFtdXHJcbiAgXHJcbiAgcHJpdmF0ZSBldmVudHNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8V3NFdmVudHMuSVdzRXZlbnRzPGFueT4+KClcclxuICBwdWJsaWMgZXZlbnRzJCA9IHRoaXMuZXZlbnRzU3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBwcml2YXRlIGV2ZW50c0NoYXRib3RTdWJqZWN0ID0gbmV3IFN1YmplY3Q8V3NFdmVudHMuSVdzRXZlbnRzPGFueT4+KClcclxuICBwdWJsaWMgY2hhdGJvdEV2ZW50cyQgPSB0aGlzLmV2ZW50c0NoYXRib3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIHByaXZhdGUgZXZlbnRzR2V0U3RhcnRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8V3NFdmVudHMuSVdzRXZlbnRzPGFueT4+KClcclxuICBwdWJsaWMgZ2V0U3RhcnRFdmVudHMkID0gdGhpcy5ldmVudHNHZXRTdGFydFN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgcHJpdmF0ZSBldmVudHNQUlN1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBnZXRQUkV2ZW50cyQgPSB0aGlzLmV2ZW50c1BSU3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBlbnZpcm9ubWVudDogYW55XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnksXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTdmM6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50XHJcbiAgICAvLyB0aGlzLmZvY3VzQ2hhbmdlRXZlbnRMaXN0ZW5lcigpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaEV2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIGV2ZW50LnBhZ2VDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KGV2ZW50LnBhZ2VDb250ZXh0KVxyXG4gICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaENoYXRib3RFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICB0aGlzLmV2ZW50c0NoYXRib3RTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaEdldFN0YXJ0ZWRFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICB0aGlzLmV2ZW50c0dldFN0YXJ0U3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hQbGF0Zm9ybVJhdGluZ0V2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIHRoaXMuZXZlbnRzUFJTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gaGVscGVyIGZ1bmN0aW9uc1xyXG4gIHJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoZWRhdGE6IFdzRXZlbnRzLklUZWxlbWV0cnlFZGF0YSwgb2JqZWN0OiBhbnksIHBhZ2VDb250ZXh0PzogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0KSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oe1xyXG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcclxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBlZGF0YSxcclxuICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgcGFnZUNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dChwYWdlQ29udGV4dCksXHJcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbnRlcmFjdCxcclxuICAgICAgfSxcclxuICAgICAgZnJvbTogJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByYWlzZUZlZWRiYWNrVGVsZW1ldHJ5KGVkYXRhOiBXc0V2ZW50cy5JVGVsZW1ldHJ5RWRhdGEsIG9iamVjdDogYW55LCBmcm9tPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oe1xyXG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcclxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBlZGF0YSxcclxuICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5GZWVkYmFjayxcclxuICAgICAgfSxcclxuICAgICAgZnJvbTogZnJvbSB8fCAnJyxcclxuICAgICAgdG86ICdUZWxlbWV0cnknLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIFJhaXNlIGN1c3RvbSBpbXByZXNzaW9uIGV2ZW50cyBlZzpvbiB0YWIgY2hhbmdlXHJcbiAgcmFpc2VDdXN0b21JbXByZXNzaW9uKG9iamVjdDogYW55LCBwYWdlQ29udGV4dD86IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCkge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW1wcmVzc2lvbj4oe1xyXG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcclxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgcGFnZUNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dChwYWdlQ29udGV4dCksXHJcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbXByZXNzaW9uLFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiAnJyxcclxuICAgICAgdG86ICdUZWxlbWV0cnknLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZm9jdXNDaGFuZ2VFdmVudExpc3RlbmVyKCkge1xyXG4gIC8vICAgZnJvbUV2ZW50KHdpbmRvdywgJ2ZvY3VzJykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KCdmb2N1cycsICdnYWluZWQnLCB7fSlcclxuICAvLyAgIH0pXHJcbiAgLy8gICBmcm9tRXZlbnQod2luZG93LCAnYmx1cicpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeSgnZm9jdXMnLCAnbG9zdCcsIHt9KVxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIC8vIE1ldGhvZCB0byBnZXQgdGhlIGNvbnRleHQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRlbGVtZXRyeSBpbnRlcmFjdCBldmVudFxyXG4gIHByaXZhdGUgZ2V0Q29udGV4dChwYWdlQ29udGV4dDogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0IHwgdW5kZWZpbmVkKTogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0IHtcclxuICAgIGNvbnN0IHJvdXRlRGF0YUNvbnRleHQgPSB0aGlzLnV0aWxpdHlTdmMucm91dGVEYXRhXHJcbiAgICAvLyBpbml0aWFsaXplIHdpdGggdGhlIHJvdXRlIGRhdGEgY29uZmlndXJhdGlvbiAtIGN1cnJlbnQgcm91dGUncyBwYWdlSUQgJiBtb2R1bGVcclxuICAgIGNvbnN0IGZpbmFsQ29udGV4dDogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0ID0ge1xyXG4gICAgICBwYWdlSWQ6IHJvdXRlRGF0YUNvbnRleHQucGFnZUlkLFxyXG4gICAgICBtb2R1bGU6IHJvdXRlRGF0YUNvbnRleHQubW9kdWxlLFxyXG4gICAgfVxyXG4gICAgaWYgKHBhZ2VDb250ZXh0KSB7XHJcbiAgICAgIC8vIGlmIGNvbnRleHQgaGFzIHBhZ2VJZEV4dCwgYXBwZW5kIGl0IHRvIHRoZSByb3V0ZSdzIHBhZ2VJZFxyXG4gICAgICBpZiAocGFnZUNvbnRleHQucGFnZUlkRXh0KSB7XHJcbiAgICAgICAgZmluYWxDb250ZXh0LnBhZ2VJZCA9IGAke3JvdXRlRGF0YUNvbnRleHQucGFnZUlkfV8ke3BhZ2VDb250ZXh0LnBhZ2VJZEV4dH1gXHJcbiAgICAgIH0gZWxzZSBpZiAocGFnZUNvbnRleHQucGFnZUlkKSB7XHJcbiAgICAgICAgLy8gZWxzZSBjb250ZXh0IGhhcyBwYWdlSWQsIG92ZXJyaWRlIGl0IHRvIHRoZSBmaW5hbCBwYWdlSURcclxuICAgICAgICBmaW5hbENvbnRleHQucGFnZUlkID0gcGFnZUNvbnRleHQucGFnZUlkXHJcbiAgICAgIH1cclxuICAgICAgLy8gaWYgY29udGV4dCBoYXMgbW9kdWxlLCBvdmVycmlkZSBpdCB0byB0aGUgZmluYWwgbW9kdWxlXHJcbiAgICAgIGlmIChwYWdlQ29udGV4dC5tb2R1bGUpIHtcclxuICAgICAgICBmaW5hbENvbnRleHQubW9kdWxlID0gcGFnZUNvbnRleHQubW9kdWxlXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmluYWxDb250ZXh0XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVGFiVGVsZW1ldHJ5KHN1YlR5cGU6IHN0cmluZywgZGF0YTogV3NFdmVudHMuSVRlbGVtZXRyeVRhYkRhdGEsIG9iamVjdD86YW55KSB7XHJcbiAgICAvLyByYWlzZSBhIHRhYiBjbGljayBpbnRlcmFjdCBldmVudFxyXG4gICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxyXG4gICAgICB7XHJcbiAgICAgICAgc3ViVHlwZSxcclxuICAgICAgICB0eXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RUeXBlcy5DTElDSyxcclxuICAgICAgICBpZDogYCR7Xy5jYW1lbENhc2UoZGF0YS5sYWJlbCl9LXRhYmAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICAvLyBjb250ZXh0OiB7XHJcbiAgICAgICAgLy8gICBwb3NpdGlvbjogZGF0YS5pbmRleCxcclxuICAgICAgICAvLyB9LFxyXG4gICAgICAgIC4uLm9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgIHBhZ2VJZEV4dDogYCR7Xy5jYW1lbENhc2UoZGF0YS5sYWJlbCl9LXRhYmAsXHJcbiAgICB9KVxyXG5cclxuICAgIC8vIHJhaXNlIGEgdGFiIGNsaWNrIGltcHJlc3Npb24gZXZlbnRcclxuICAgIHRoaXMucmFpc2VDdXN0b21JbXByZXNzaW9uKHtcclxuICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogZGF0YS5pbmRleCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5vYmplY3RcclxuICAgICAgfSx7XHJcbiAgICAgIHBhZ2VJZEV4dDogYCR7Xy5jYW1lbENhc2UoZGF0YS5sYWJlbCl9LXRhYmAsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0UHVibGljVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1haW5VcmwgPSB1cmwuc3BsaXQoJy9jb250ZW50JykucG9wKCkgfHwgJydcclxuICAgIHJldHVybiBgJHt0aGlzLmVudmlyb25tZW50LmNvbnRlbnRIb3N0fS8ke3RoaXMuZW52aXJvbm1lbnQuY29udGVudEJ1Y2tldH0vY29udGVudCR7bWFpblVybH1gXHJcbiAgfVxyXG5cclxuICBhbGxFdmVudERhdGVGb3JtYXQoZGF0ZXRpbWU6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXREYXRlKClcclxuICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0RnVsbFllYXIoKVxyXG4gICAgY29uc3QgbW9udGggPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0TW9udGgoKVxyXG4gICAgY29uc3QgaG91cnMgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0SG91cnMoKVxyXG4gICAgY29uc3QgbWludXRlcyA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRNaW51dGVzKClcclxuICAgIGNvbnN0IHNlY29uZHMgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0U2Vjb25kcygpXHJcbiAgICBjb25zdCBmb3JtYXRlZERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIDApXHJcbiAgICAvLyBsZXQgZm9ybWF0ID0gJ1lZWVktTU0tREQgaGg6bW0gYSdcclxuICAgIC8vIGlmICghdGltZUFsbG93KSB7XHJcbiAgICBjb25zdCBmb3JtYXQgPSAnWVlZWS1NTS1ERCdcclxuICAgIC8vIH1cclxuICAgIGNvbnN0IHJlYWRhYmxlRGF0ZU1vbnRoID0gbW9tZW50KGZvcm1hdGVkRGF0ZSkuZm9ybWF0KGZvcm1hdClcclxuICAgIGNvbnN0IGZpbmFsRGF0ZVRpbWVWYWx1ZSA9IGAke3JlYWRhYmxlRGF0ZU1vbnRofWBcclxuICAgIHJldHVybiBmaW5hbERhdGVUaW1lVmFsdWVcclxuICB9XHJcblxyXG4gIGNvbXBhcmVEYXRlKHN0YXJ0RGF0ZTogYW55KSB7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci10ZW1wbGF0ZVxyXG4gICAgY29uc3QgZGF5ID0gICgnMCcgKyAobmV3IERhdGUoKS5nZXREYXRlKCkpKS5zbGljZSgtMilcclxuICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKClcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItdGVtcGxhdGVcclxuICAgIGNvbnN0IG1vbnRoID0gKCcwJyArIChub3cuZ2V0TW9udGgoKSArIDEpKS5zbGljZSgtMilcclxuICAgIGNvbnN0IHRvZGF5c2RhdGUgPSBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gXHJcbiAgICBpZiAoc3RhcnREYXRlID09PSB0b2RheXNkYXRlKSAge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBjdXN0b21EYXRlRm9ybWF0KGRhdGU6IGFueSwgdGltZTogYW55KSB7XHJcbiAgICBjb25zdCBzdGltZSA9IHRpbWUuc3BsaXQoJysnKVswXVxyXG4gICAgY29uc3QgaG91ciA9IHN0aW1lLnN1YnN0cigwLCAyKVxyXG4gICAgY29uc3QgbWluID0gc3RpbWUuc3Vic3RyKDIsIDMpXHJcbiAgICByZXR1cm4gYCR7ZGF0ZX0gJHtob3VyfSR7bWlufWBcclxuIH1cclxuIHNvcnRJdGVtQnlUaW1lKGV2ZW50c2RhdGE6IGFueSkge1xyXG4gIHJldHVybiBldmVudHNkYXRhLnNvcnQoKGE6YW55LCBiOmFueSk9PiB7XHJcbiAgICByZXR1cm4gKGEuZXZlbnREYXRlID09PSBiLmV2ZW50RGF0ZSk/IDAgOiBiLmV2ZW50RGF0ZT8gLTEgOiAxO1xyXG4gIH0pO1xyXG59XHJcblxyXG5cclxuIHNldEV2ZW50TGlzdERhdGEoZXZlbnRPYmo6IGFueSkge1xyXG4gIGlmIChldmVudE9iaiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLnRvZGF5c0V2ZW50cyA9IFtdXHJcbiAgICB0aGlzLnRvZGF5c0xpdmVFdmVudHMgPSBbXVxyXG4gICAgY29uc3QgZGF0YSA9IGV2ZW50T2JqXHJcbiAgICBsZXQgaXNFdmVudExpdmUgOiBib29sZWFuID0gZmFsc2VcclxuICAgIGxldCBpc0V2ZW50UmVjb3JkaW5nIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICBsZXQgaXNFdmVudFBhc3QgOiBib29sZWFuID0gZmFsc2VcclxuICAgIGxldCBpc0V2ZW50RnV0dXJlIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgIC8vIGNvbnNvbGUubG9nKCdzdHJpcCBjb21wJywgZGF0YSlcclxuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgXHJcbiAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSBmYWxzZVxyXG4gICAgICBpc0V2ZW50TGl2ZSA9IGZhbHNlXHJcbiAgICAgIGlzRXZlbnRQYXN0ID0gZmFsc2VcclxuICAgICAgaXNFdmVudEZ1dHVyZSA9IGZhbHNlXHJcbiAgICAgIGNvbnN0IG9iaiA9IGRhdGFbaW5kZXhdXHJcbiAgICAgIGNvbnN0IGZsb29yID0gTWF0aC5mbG9vclxyXG4gICAgICBjb25zdCBob3VycyA9IGZsb29yKG9iai5kdXJhdGlvbiAvIDYwKVxyXG4gICAgICBjb25zdCBtaW51dGVzID0gb2JqLmR1cmF0aW9uICUgNjBcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSAoaG91cnMgPT09IDApID8gKChtaW51dGVzID09PSAwKSA/ICctLS0nIDogYCR7bWludXRlc30gbWludXRlc2ApIDogKG1pbnV0ZXMgPT09IDApID8gKGhvdXJzID09PSAxKSA/XHJcbiAgICAgICAgYCR7aG91cnN9IGhvdXJgIDogYCR7aG91cnN9IGhvdXJzYCA6IChob3VycyA9PT0gMSkgPyBgJHtob3Vyc30gaG91ciAke21pbnV0ZXN9IG1pbnV0ZXNgIDpcclxuICAgICAgICBgJHtob3Vyc30gaG91cnMgJHttaW51dGVzfSBtaW51dGVzYFxyXG4gICAgICBjb25zdCBjcmVhdG9yZGF0YSA9IG9iai5jcmVhdG9yRGV0YWlscyAhPT0gdW5kZWZpbmVkID8gb2JqLmNyZWF0b3JEZXRhaWxzIDogW11cclxuICAgICAgY29uc3Qgc3RyID0gY3JlYXRvcmRhdGEgJiYgY3JlYXRvcmRhdGEubGVuZ3RoID4gMCA/IGNyZWF0b3JkYXRhLnJlcGxhY2UoL1xcXFwvZywgJycpIDogW11cclxuICAgICAgY29uc3QgY3JlYXRvckRldGFpbHMgPSBzdHIgJiYgc3RyLmxlbmd0aCA+IDAgPyBKU09OLnBhcnNlKHN0cikgOiBjcmVhdG9yZGF0YVxyXG5cclxuICAgICAgY29uc3Qgc3RpbWUgPSBvYmouc3RhcnRUaW1lLnNwbGl0KCcrJylbMF1cclxuICAgICAgY29uc3QgaG91ciA9IHN0aW1lLnN1YnN0cigwLCAyKVxyXG4gICAgICBjb25zdCBtaW4gPSBzdGltZS5zdWJzdHIoMiwgMylcclxuICAgICAgY29uc3Qgc3RhcnR0aW1lID0gYCR7aG91cn0ke21pbn1gXHJcblxyXG4gICAgICBjb25zdCBldGltZSA9IG9iai5lbmRUaW1lLnNwbGl0KCcrJylbMF1cclxuICAgICAgY29uc3QgZWhvdXIgPSBldGltZS5zdWJzdHIoMCwgMilcclxuICAgICAgY29uc3QgZW1pbiA9IGV0aW1lLnN1YnN0cigyLCAzKVxyXG4gICAgICBjb25zdCBlbmR0aW1lID0gYCR7ZWhvdXJ9JHtlbWlufWBcclxuICAgICAgY29uc3QgZXZlbnREYXRlID0gdGhpcy5jdXN0b21EYXRlRm9ybWF0KG9iai5zdGFydERhdGUsIG9iai5zdGFydFRpbWUpXHJcbiAgICAgIGNvbnN0IGV2ZW50ZW5kRGF0ZSA9IHRoaXMuY3VzdG9tRGF0ZUZvcm1hdChvYmouZW5kRGF0ZSwgb2JqLmVuZFRpbWUpXHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcclxuICAgICAgY29uc3QgdG9kYXkgPSBtb21lbnQobm93KS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW0nKVxyXG4gICAgICBpZiAobW9tZW50KHRvZGF5KS5pc0JldHdlZW4oZXZlbnREYXRlLCBldmVudGVuZERhdGUpKSB7XHJcbiAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IGZhbHNlXHJcbiAgICAgICAgaXNFdmVudExpdmUgPSB0cnVlXHJcbiAgICAgICAgaWYgKHRvZGF5ID49IGV2ZW50ZW5kRGF0ZSkge1xyXG4gICAgICAgICAgaWYgKG9iai5yZWNvcmRlZExpbmtzICYmIG9iai5yZWNvcmRlZExpbmtzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IHRydWVcclxuICAgICAgICAgICAgaXNFdmVudExpdmUgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0b2RheSA+PSBldmVudGVuZERhdGUpIHtcclxuICAgICAgICBpc0V2ZW50UmVjb3JkaW5nID0gdHJ1ZVxyXG4gICAgICAgIGlzRXZlbnRMaXZlID0gZmFsc2VcclxuICAgICAgICBpZihtb21lbnQodG9kYXkpLmlzQWZ0ZXIoZXZlbnRlbmREYXRlKSAmJiBtb21lbnQodG9kYXkpLmlzQWZ0ZXIoZXZlbnREYXRlKSkge1xyXG4gICAgICAgICAgaXNFdmVudFBhc3QgPSB0cnVlXHJcbiAgICAgICAgfSBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZihtb21lbnQodG9kYXkpLmlzQmVmb3JlKGV2ZW50RGF0ZSkgJiYgbW9tZW50KHRvZGF5KS5pc0JlZm9yZShldmVudGVuZERhdGUpKSB7XHJcbiAgICAgICAgICBpc0V2ZW50RnV0dXJlID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zdCBldmVudERhdGFPYmogPSB7XHJcbiAgICAgICAgZXZlbnREYXRlLFxyXG4gICAgICAgIGV2ZW50ZW5kRGF0ZSxcclxuICAgICAgICBpc0V2ZW50TGl2ZSxcclxuICAgICAgICBpc0V2ZW50RnV0dXJlLFxyXG4gICAgICAgIGlzRXZlbnRQYXN0LFxyXG4gICAgICAgIGlzRXZlbnRSZWNvcmRpbmcsXHJcbiAgICAgICAgZXZlbnQ6IG9iaixcclxuICAgICAgICBldmVudE5hbWU6IG9iai5uYW1lLFxyXG4gICAgICAgIGV2ZW50U3RhcnRUaW1lOiBzdGFydHRpbWUsXHJcbiAgICAgICAgZXZlbnRFbmRUaW1lOiBlbmR0aW1lLFxyXG4gICAgICAgIGV2ZW50U3RhcnREYXRlOiBvYmouc3RhcnREYXRlLFxyXG4gICAgICAgIGV2ZW50Q3JlYXRlZE9uOiB0aGlzLmFsbEV2ZW50RGF0ZUZvcm1hdChvYmouY3JlYXRlZE9uKSxcclxuICAgICAgICBldmVudER1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBldmVudGpvaW5lZDogY3JlYXRvckRldGFpbHMubGVuZ3RoLFxyXG4gICAgICAgIGV2ZW50VGh1bWJuYWlsOiBvYmouYXBwSWNvbiAmJiAob2JqLmFwcEljb24gIT09IG51bGwgfHwgb2JqLmFwcEljb24gIT09IHVuZGVmaW5lZCkgP1xyXG4gICAgICAgICAgdGhpcy5nZXRQdWJsaWNVcmwob2JqLmFwcEljb24pIDpcclxuICAgICAgICAgICcvYXNzZXRzL2ljb25zL0V2ZW50c19kZWZhdWx0LnBuZycsXHJcbiAgICAgICAgcGFzdGV2ZW50OiBmYWxzZSxcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpc1RvZGF5ID0gdGhpcy5jb21wYXJlRGF0ZShvYmouc3RhcnREYXRlKVxyXG4gICAgICBpZiAoaXNUb2RheSkge1xyXG4gICAgICAgIHRoaXMudG9kYXlzRXZlbnRzLnB1c2goZXZlbnREYXRhT2JqKVxyXG4gICAgICB9XHJcbiAgICAgIGlmKGlzVG9kYXkgJiYgaXNFdmVudExpdmUpIHtcclxuICAgICAgICB0aGlzLnRvZGF5c0xpdmVFdmVudHMucHVzaChldmVudERhdGFPYmopXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy50b2RheXNMaXZlRXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZSh0aGlzLnRvZGF5c0xpdmVFdmVudHMpXHJcbiAgICB0aGlzLnRvZGF5c0V2ZW50cyA9IHRoaXMuZ2V0VG9kYXlzRXZlbnRzKHRoaXMudG9kYXlzRXZlbnRzKVxyXG4gIH1cclxuICB9XHJcbiAgZ2V0VG9kYXlzRXZlbnRzKGV2ZW50RGF0YTogYW55KSB7XHJcbiAgICBsZXQgbGl2ZUV2ZW50czogYW55ID0gW11cclxuICAgIGxldCBwYXN0RXZlbnRzOiBhbnkgPSBbXVxyXG4gICAgbGV0IGZ1dHVyZUV2ZW50czogYW55ID0gW11cclxuXHJcbiAgICBsaXZlRXZlbnRzID0gdGhpcy50b2RheXNMaXZlRXZlbnRzXHJcbiAgICBwYXN0RXZlbnRzID0gZXZlbnREYXRhLmZpbHRlcigocGFzdEV2ZW50OiBhbnkpID0+IHBhc3RFdmVudC5pc0V2ZW50UGFzdClcclxuICAgIGZ1dHVyZUV2ZW50cyA9IGV2ZW50RGF0YS5maWx0ZXIoKGZ1dHVyZUV2ZW50OiBhbnkpID0+IGZ1dHVyZUV2ZW50LmlzRXZlbnRGdXR1cmUpXHJcbiAgICBsaXZlRXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZShsaXZlRXZlbnRzKVxyXG4gICAgZnV0dXJlRXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZShmdXR1cmVFdmVudHMpXHJcbiAgICBwYXN0RXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZShwYXN0RXZlbnRzKVxyXG4gICAgdGhpcy50b2RheXNFdmVudHMgID0gWy4uLmxpdmVFdmVudHMsIC4uLmZ1dHVyZUV2ZW50cywgLi4ucGFzdEV2ZW50c11cclxuICAgIFxyXG4gICAgcmV0dXJuIHRoaXMudG9kYXlzRXZlbnRzXHJcbiAgfVxyXG4gIFxyXG59XHJcbiJdfQ==
@@ -1866,6 +1866,7 @@ class EventService {
1866
1866
  constructor(environment, utilitySvc) {
1867
1867
  this.utilitySvc = utilitySvc;
1868
1868
  this.todaysEvents = [];
1869
+ this.todaysLiveEvents = [];
1869
1870
  this.eventsSubject = new Subject();
1870
1871
  this.events$ = this.eventsSubject.asObservable();
1871
1872
  this.eventsChatbotSubject = new Subject();
@@ -1996,15 +1997,25 @@ class EventService {
1996
1997
  const min = stime.substr(2, 3);
1997
1998
  return `${date} ${hour}${min}`;
1998
1999
  }
2000
+ sortItemByTime(eventsdata) {
2001
+ return eventsdata.sort(((a, b) => {
2002
+ return (a.eventDate === b.eventDate) ? 0 : b.eventDate ? -1 : 1;
2003
+ }));
2004
+ }
1999
2005
  setEventListData(eventObj) {
2000
2006
  if (eventObj !== undefined) {
2001
2007
  this.todaysEvents = [];
2008
+ this.todaysLiveEvents = [];
2002
2009
  const data = eventObj;
2003
2010
  let isEventLive = false;
2004
2011
  let isEventRecording = false;
2012
+ let isEventPast = false;
2013
+ let isEventFuture = false;
2005
2014
  Object.keys(data).forEach(((index) => {
2006
2015
  isEventRecording = false;
2007
2016
  isEventLive = false;
2017
+ isEventPast = false;
2018
+ isEventFuture = false;
2008
2019
  const obj = data[index];
2009
2020
  const floor = Math.floor;
2010
2021
  const hours = floor(obj.duration / 60);
@@ -2040,9 +2051,21 @@ class EventService {
2040
2051
  else if (today >= eventendDate) {
2041
2052
  isEventRecording = true;
2042
2053
  isEventLive = false;
2054
+ if (moment(today).isAfter(eventendDate) && moment(today).isAfter(eventDate)) {
2055
+ isEventPast = true;
2056
+ }
2057
+ }
2058
+ else {
2059
+ if (moment(today).isBefore(eventDate) && moment(today).isBefore(eventendDate)) {
2060
+ isEventFuture = true;
2061
+ }
2043
2062
  }
2044
2063
  const eventDataObj = {
2064
+ eventDate,
2065
+ eventendDate,
2045
2066
  isEventLive,
2067
+ isEventFuture,
2068
+ isEventPast,
2046
2069
  isEventRecording,
2047
2070
  event: obj,
2048
2071
  eventName: obj.name,
@@ -2058,14 +2081,29 @@ class EventService {
2058
2081
  pastevent: false,
2059
2082
  };
2060
2083
  const isToday = this.compareDate(obj.startDate);
2061
- if (isToday && isEventLive) {
2084
+ if (isToday) {
2062
2085
  this.todaysEvents.push(eventDataObj);
2063
2086
  }
2087
+ if (isToday && isEventLive) {
2088
+ this.todaysLiveEvents.push(eventDataObj);
2089
+ }
2064
2090
  }));
2065
- this.todaysEvents = this.todaysEvents.sort(((a, b) => {
2066
- return (a.isEventLive === b.isEventLive) ? 0 : b.isEventLive ? -1 : 1;
2067
- }));
2068
- }
2091
+ this.todaysLiveEvents = this.sortItemByTime(this.todaysLiveEvents);
2092
+ this.todaysEvents = this.getTodaysEvents(this.todaysEvents);
2093
+ }
2094
+ }
2095
+ getTodaysEvents(eventData) {
2096
+ let liveEvents = [];
2097
+ let pastEvents = [];
2098
+ let futureEvents = [];
2099
+ liveEvents = this.todaysLiveEvents;
2100
+ pastEvents = eventData.filter(((pastEvent) => pastEvent.isEventPast));
2101
+ futureEvents = eventData.filter(((futureEvent) => futureEvent.isEventFuture));
2102
+ liveEvents = this.sortItemByTime(liveEvents);
2103
+ futureEvents = this.sortItemByTime(futureEvents);
2104
+ pastEvents = this.sortItemByTime(pastEvents);
2105
+ this.todaysEvents = [...liveEvents, ...futureEvents, ...pastEvents];
2106
+ return this.todaysEvents;
2069
2107
  }
2070
2108
  }
2071
2109
  EventService.decorators = [
@@ -2080,6 +2118,7 @@ EventService.ctorParameters = () => [
2080
2118
  /** @nocollapse */ EventService.ngInjectableDef = ɵɵdefineInjectable({ factory: function EventService_Factory() { return new EventService(ɵɵinject("environment"), ɵɵinject(UtilityService)); }, token: EventService, providedIn: "root" });
2081
2119
  if (false) {
2082
2120
  EventService.prototype.todaysEvents;
2121
+ EventService.prototype.todaysLiveEvents;
2083
2122
  EventService.prototype.eventsSubject;
2084
2123
  EventService.prototype.events$;
2085
2124
  EventService.prototype.eventsChatbotSubject;
@@ -2222,8 +2261,10 @@ class HorizontalScrollerV2Component {
2222
2261
  this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?
2223
2262
  this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets;
2224
2263
  arrLength = this.defaultMaxWidgets / arrLength;
2225
- for (let i = 0; i < arrLength; i += 1) {
2226
- this.bottomDotsArray.push(i);
2264
+ if (arrLength !== Infinity) {
2265
+ for (let i = 0; i < arrLength; i += 1) {
2266
+ this.bottomDotsArray.push(i);
2267
+ }
2227
2268
  }
2228
2269
  }
2229
2270
  }