@sbb-esta/lyne-elements-experimental 2.11.2 → 3.0.0-next.1

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.
Files changed (67) hide show
  1. package/core/datetime/date-helper.js +142 -142
  2. package/core/timetable/access-leg-helper.js +52 -49
  3. package/core/timetable/timetable-helper.js +8 -7
  4. package/custom-elements.json +8 -8
  5. package/development/core/datetime/date-helper.js +10 -10
  6. package/development/core/timetable/access-leg-helper.js +15 -12
  7. package/development/core/timetable/timetable-helper.js +7 -6
  8. package/development/{differenceInMinutes-D5Nj8Stc.js → differenceInMinutes-CHSyWiQs.js} +3 -3
  9. package/development/{format-BQfaa1ZT.js → format-D0-yhzi4.js} +26 -22
  10. package/development/{isValid-DvieCZVi.js → isValid-Bo4R7iA7.js} +3 -3
  11. package/development/journey-summary/journey-summary.component.d.ts +5 -3
  12. package/development/journey-summary/journey-summary.component.d.ts.map +1 -1
  13. package/development/journey-summary/journey-summary.component.js +9 -5
  14. package/development/pearl-chain/pearl-chain.component.d.ts +5 -3
  15. package/development/pearl-chain/pearl-chain.component.d.ts.map +1 -1
  16. package/development/pearl-chain/pearl-chain.component.js +43 -29
  17. package/development/pearl-chain-time/pearl-chain-time.component.d.ts +5 -3
  18. package/development/pearl-chain-time/pearl-chain-time.component.d.ts.map +1 -1
  19. package/development/pearl-chain-time/pearl-chain-time.component.js +10 -6
  20. package/development/pearl-chain-vertical/pearl-chain-vertical.component.js +1 -1
  21. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +1 -1
  22. package/development/seat-reservation/common/mapper/icon-mapper.js +1 -1
  23. package/development/seat-reservation/common/mapper/mapper.js +16 -14
  24. package/development/seat-reservation/common/mapper/seat-reservation-sample-data.js +1 -1
  25. package/development/seat-reservation/common/svgs.js +1 -1
  26. package/development/seat-reservation/common/translations/i18n.js +3 -2
  27. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +33 -22
  28. package/development/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +7 -6
  29. package/development/seat-reservation/seat-reservation/seat-reservation.component.js +23 -16
  30. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +1 -1
  31. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +3 -2
  32. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +8 -7
  33. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +11 -7
  34. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +3 -2
  35. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +5 -4
  36. package/development/timetable-duration/timetable-duration.component.js +1 -1
  37. package/development/timetable-row/timetable-row.component.d.ts +5 -3
  38. package/development/timetable-row/timetable-row.component.d.ts.map +1 -1
  39. package/development/timetable-row/timetable-row.component.js +93 -59
  40. package/differenceInMinutes-BMqUZdhj.js +23 -0
  41. package/{format-lqeCzmzS.js → format-Dg8rkk7h.js} +442 -438
  42. package/isValid-DJ69OMZJ.js +45 -0
  43. package/journey-summary/journey-summary.component.d.ts +5 -3
  44. package/journey-summary/journey-summary.component.d.ts.map +1 -1
  45. package/journey-summary/journey-summary.component.js +8 -4
  46. package/package.json +2 -2
  47. package/pearl-chain/pearl-chain.component.d.ts +5 -3
  48. package/pearl-chain/pearl-chain.component.d.ts.map +1 -1
  49. package/pearl-chain/pearl-chain.component.js +99 -79
  50. package/pearl-chain-time/pearl-chain-time.component.d.ts +5 -3
  51. package/pearl-chain-time/pearl-chain-time.component.d.ts.map +1 -1
  52. package/pearl-chain-time/pearl-chain-time.component.js +49 -45
  53. package/seat-reservation/common/mapper/mapper.js +54 -50
  54. package/seat-reservation/common/translations/i18n.js +6 -5
  55. package/seat-reservation/seat-reservation/seat-reservation-base-element.js +115 -104
  56. package/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +41 -40
  57. package/seat-reservation/seat-reservation/seat-reservation.component.js +87 -78
  58. package/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +18 -15
  59. package/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +59 -58
  60. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +75 -71
  61. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +13 -12
  62. package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +24 -23
  63. package/timetable-row/timetable-row.component.d.ts +5 -3
  64. package/timetable-row/timetable-row.component.d.ts.map +1 -1
  65. package/timetable-row/timetable-row.component.js +251 -208
  66. package/differenceInMinutes-CP_C5onR.js +0 -23
  67. package/isValid-Ceq2O0NQ.js +0 -45
@@ -19,7 +19,7 @@ import "@sbb-esta/lyne-elements/card.js";
19
19
  import "@sbb-esta/lyne-elements/icon.js";
20
20
  import "@sbb-esta/lyne-elements/timetable-occupancy.js";
21
21
  import "../pearl-chain-time.js";
22
- import { f as format } from "../format-BQfaa1ZT.js";
22
+ import { f as format } from "../format-D0-yhzi4.js";
23
23
  const style = css`*,
24
24
  ::before,
25
25
  ::after {
@@ -243,18 +243,35 @@ const renderStringProduct = (vehicleName, line) => {
243
243
  </span>`;
244
244
  };
245
245
  const getReachableText = (legs) => {
246
- return legs?.find((leg) => leg.serviceJourney?.serviceAlteration?.reachableText)?.serviceJourney?.serviceAlteration?.reachableText;
246
+ var _a, _b, _c;
247
+ return (_c = (_b = (_a = legs == null ? void 0 : legs.find((leg) => {
248
+ var _a2, _b2;
249
+ return (_b2 = (_a2 = leg.serviceJourney) == null ? void 0 : _a2.serviceAlteration) == null ? void 0 : _b2.reachableText;
250
+ })) == null ? void 0 : _a.serviceJourney) == null ? void 0 : _b.serviceAlteration) == null ? void 0 : _c.reachableText;
247
251
  };
248
252
  const getDelayText = (legs) => {
249
- return legs?.find((leg) => leg.serviceJourney?.serviceAlteration?.delayText)?.serviceJourney?.serviceAlteration?.delayText;
253
+ var _a, _b, _c;
254
+ return (_c = (_b = (_a = legs == null ? void 0 : legs.find((leg) => {
255
+ var _a2, _b2;
256
+ return (_b2 = (_a2 = leg.serviceJourney) == null ? void 0 : _a2.serviceAlteration) == null ? void 0 : _b2.delayText;
257
+ })) == null ? void 0 : _a.serviceJourney) == null ? void 0 : _b.serviceAlteration) == null ? void 0 : _c.delayText;
250
258
  };
251
259
  const getRedirectedText = (legs) => {
252
- return legs?.find((leg) => !!leg.serviceJourney?.serviceAlteration?.redirectedText)?.serviceJourney?.serviceAlteration?.redirectedText;
260
+ var _a, _b, _c;
261
+ return (_c = (_b = (_a = legs == null ? void 0 : legs.find((leg) => {
262
+ var _a2, _b2;
263
+ return !!((_b2 = (_a2 = leg.serviceJourney) == null ? void 0 : _a2.serviceAlteration) == null ? void 0 : _b2.redirectedText);
264
+ })) == null ? void 0 : _a.serviceJourney) == null ? void 0 : _b.serviceAlteration) == null ? void 0 : _c.redirectedText;
253
265
  };
254
266
  const getUnplannedStop = (legs) => {
255
- return legs?.find((leg) => !!leg.serviceJourney?.serviceAlteration?.unplannedStopPointsText)?.serviceJourney?.serviceAlteration?.unplannedStopPointsText;
267
+ var _a, _b, _c;
268
+ return (_c = (_b = (_a = legs == null ? void 0 : legs.find((leg) => {
269
+ var _a2, _b2;
270
+ return !!((_b2 = (_a2 = leg.serviceJourney) == null ? void 0 : _a2.serviceAlteration) == null ? void 0 : _b2.unplannedStopPointsText);
271
+ })) == null ? void 0 : _a.serviceJourney) == null ? void 0 : _b.serviceAlteration) == null ? void 0 : _c.unplannedStopPointsText;
256
272
  };
257
273
  const sortSituation = (situations) => {
274
+ var _a;
258
275
  const priorities = {
259
276
  DISTURBANCE: 0,
260
277
  INFORMATION: 1,
@@ -263,59 +280,60 @@ const sortSituation = (situations) => {
263
280
  CONSTRUCTION_SITE: 4,
264
281
  END_MESSAGE: 5
265
282
  };
266
- return [...situations]?.sort((a, b) => priorities[a.cause] - priorities[b.cause]);
283
+ return (_a = [...situations]) == null ? void 0 : _a.sort((a, b) => priorities[a.cause] - priorities[b.cause]);
267
284
  };
268
285
  const getHimIcon = (situation) => {
269
- switch (situation?.cause) {
286
+ var _a;
287
+ switch (situation == null ? void 0 : situation.cause) {
270
288
  case "DISTURBANCE":
271
289
  return {
272
290
  name: "disruption",
273
- text: situation?.broadcastMessages?.length ? situation?.broadcastMessages[0].title : ""
291
+ text: ((_a = situation == null ? void 0 : situation.broadcastMessages) == null ? void 0 : _a.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
274
292
  };
275
293
  case "INFORMATION":
276
294
  return {
277
295
  name: "info",
278
- text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
296
+ text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
279
297
  };
280
298
  case "DELAY":
281
299
  return {
282
300
  name: "delay",
283
- text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
301
+ text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
284
302
  };
285
303
  case "TRAIN_REPLACEMENT_BY_BUS":
286
304
  return {
287
305
  name: "replacementbus",
288
- text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
306
+ text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
289
307
  };
290
308
  case "CONSTRUCTION_SITE":
291
309
  return {
292
310
  name: "construction",
293
- text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
311
+ text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
294
312
  };
295
313
  default:
296
314
  return {
297
315
  name: "info",
298
- text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
316
+ text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
299
317
  };
300
318
  }
301
319
  };
302
320
  const getCus = (trip, currentLanguage) => {
303
321
  const { summary, legs } = trip || {};
304
- const rideLegs = legs?.filter((leg) => isRideLeg(leg));
322
+ const rideLegs = legs == null ? void 0 : legs.filter((leg) => isRideLeg(leg));
305
323
  const { tripStatus } = summary || {};
306
- if (tripStatus?.cancelled || tripStatus?.partiallyCancelled)
307
- return { name: "cancellation", text: tripStatus?.cancelledText };
324
+ if ((tripStatus == null ? void 0 : tripStatus.cancelled) || (tripStatus == null ? void 0 : tripStatus.partiallyCancelled))
325
+ return { name: "cancellation", text: tripStatus == null ? void 0 : tripStatus.cancelledText };
308
326
  if (getReachableText(rideLegs))
309
327
  return { name: "missed-connection", text: getReachableText(rideLegs) };
310
- if (tripStatus?.alternative)
328
+ if (tripStatus == null ? void 0 : tripStatus.alternative)
311
329
  return { name: "alternative", text: tripStatus.alternativeText };
312
330
  if (getRedirectedText(rideLegs))
313
331
  return { name: "reroute", text: getRedirectedText(rideLegs) };
314
332
  if (getUnplannedStop(rideLegs))
315
333
  return { name: "add-stop", text: getUnplannedStop(rideLegs) };
316
- if (tripStatus?.delayed || tripStatus?.delayedUnknown)
334
+ if ((tripStatus == null ? void 0 : tripStatus.delayed) || (tripStatus == null ? void 0 : tripStatus.delayedUnknown))
317
335
  return { name: "delay", text: getDelayText(rideLegs) };
318
- if (tripStatus?.quayChanged) {
336
+ if (tripStatus == null ? void 0 : tripStatus.quayChanged) {
319
337
  const departure = rideLegs[0].departure;
320
338
  return {
321
339
  name: "platform-change",
@@ -501,7 +519,10 @@ let SbbTimetableRowElement = (() => {
501
519
  set active(value) {
502
520
  __privateSet(this, _active_accessor_storage, value);
503
521
  }
504
- /** A configured date which acts as the current date instead of the real current date. Recommended for testing purposes. */
522
+ /**
523
+ * A configured date which acts as the current date instead of the real current date.
524
+ * Only recommended for testing purposes.
525
+ */
505
526
  set now(value) {
506
527
  this._now = defaultDateAdapter.getValidDateOrNull(defaultDateAdapter.deserialize(value));
507
528
  }
@@ -528,13 +549,15 @@ let SbbTimetableRowElement = (() => {
528
549
  `;
529
550
  }
530
551
  _getRideLegs() {
531
- return this.trip?.legs?.filter((leg) => isRideLeg(leg)) ?? [];
552
+ var _a2, _b;
553
+ return ((_b = (_a2 = this.trip) == null ? void 0 : _a2.legs) == null ? void 0 : _b.filter((leg) => isRideLeg(leg))) ?? [];
532
554
  }
533
555
  _getQuayTypeStrings() {
534
- if (!this.trip.summary?.product)
556
+ var _a2, _b;
557
+ if (!((_a2 = this.trip.summary) == null ? void 0 : _a2.product))
535
558
  return null;
536
559
  const rideLegs = this._getRideLegs();
537
- const isShort = this.trip.summary.product?.vehicleMode === "TRAIN";
560
+ const isShort = ((_b = this.trip.summary.product) == null ? void 0 : _b.vehicleMode) === "TRAIN";
538
561
  const short = isShort ? rideLegs[0].serviceJourney.quayTypeShortName || "" : rideLegs[0].serviceJourney.quayTypeName || "";
539
562
  return {
540
563
  long: i18nFromPlatform[this._language.current] + " " + short,
@@ -543,64 +566,71 @@ let SbbTimetableRowElement = (() => {
543
566
  }
544
567
  /** map Quay */
545
568
  _renderQuayType() {
546
- if (!this.trip.summary?.product)
569
+ var _a2;
570
+ if (!((_a2 = this.trip.summary) == null ? void 0 : _a2.product))
547
571
  return void 0;
548
572
  const quayTypeStrings = this._getQuayTypeStrings();
549
573
  return html`
550
574
  <span class="sbb-timetable__row--quay">
551
- <span class="sbb-screen-reader-only">${quayTypeStrings?.long}&nbsp;</span>
575
+ <span class="sbb-screen-reader-only">${quayTypeStrings == null ? void 0 : quayTypeStrings.long}&nbsp;</span>
552
576
  <span class="sbb-timetable__row--quay-type" aria-hidden="true"
553
- >${quayTypeStrings?.short}</span
577
+ >${quayTypeStrings == null ? void 0 : quayTypeStrings.short}</span
554
578
  >
555
579
  </span>
556
580
  `;
557
581
  }
558
582
  _handleHimCus(trip) {
583
+ var _a2;
559
584
  const { situations } = trip || {};
560
585
  const sortedSituations = situations && sortSituation(situations);
561
586
  const cus = getCus(trip, this._language.current);
562
587
  return {
563
- cus: Object.keys(cus)?.length ? cus : null,
564
- him: situations?.length ? getHimIcon(sortedSituations[0]) : null
588
+ cus: ((_a2 = Object.keys(cus)) == null ? void 0 : _a2.length) ? cus : null,
589
+ him: (situations == null ? void 0 : situations.length) ? getHimIcon(sortedSituations[0]) : null
565
590
  };
566
591
  }
567
592
  _getAccessibilityText(trip) {
593
+ var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
568
594
  const { summary, legs, notices } = trip || {};
569
595
  const { departureWalk, arrivalWalk, departure, arrival, product, direction, occupancy, duration } = summary || {};
570
596
  const { departureTimeAttribute, arrivalTimeAttribute } = getDepartureArrivalTimeAttribute(legs, departureWalk || 0, arrivalWalk || 0, this._language.current, this.a11yFootpath);
571
597
  const rideLegs = this._getRideLegs();
572
- const departureTime = departure?.time ? removeTimezoneFromISOTimeString(departure.time) : void 0;
573
- const arrivalTime = arrival?.time ? removeTimezoneFromISOTimeString(arrival.time) : void 0;
598
+ const departureTime = (departure == null ? void 0 : departure.time) ? removeTimezoneFromISOTimeString(departure.time) : void 0;
599
+ const arrivalTime = (arrival == null ? void 0 : arrival.time) ? removeTimezoneFromISOTimeString(arrival.time) : void 0;
574
600
  const departureWalkText = departureTimeAttribute ? `${departureTimeAttribute.text} ${departureTimeAttribute.duration}, ` : "";
575
601
  const arrivalWalkText = arrivalTimeAttribute ? `${arrivalTimeAttribute.text} ${arrivalTimeAttribute.duration}, ` : "";
576
602
  const departureTimeText = departureTime ? `${i18nDeparture[this._language.current]}: ${format(departureTime, "HH:mm")}, ` : "";
577
603
  const getDepartureQuayText = () => {
578
- if (!departure?.quayFormatted) {
604
+ var _a3;
605
+ if (!(departure == null ? void 0 : departure.quayFormatted)) {
579
606
  return "";
580
607
  }
581
- const changedQuayPrefix = departure?.quayChanged ? `${i18nNew[this._language.current]} ` : "";
582
- return `${changedQuayPrefix}${this._getQuayTypeStrings()?.long} ${departure?.quayFormatted}, `;
608
+ const changedQuayPrefix = (departure == null ? void 0 : departure.quayChanged) ? `${i18nNew[this._language.current]} ` : "";
609
+ return `${changedQuayPrefix}${(_a3 = this._getQuayTypeStrings()) == null ? void 0 : _a3.long} ${departure == null ? void 0 : departure.quayFormatted}, `;
583
610
  };
584
611
  const meansOfTransportText = product && product.vehicleMode ? i18nMeansOfTransport[product.vehicleMode.toLowerCase()] && `${i18nMeansOfTransport[product.vehicleMode.toLowerCase()][this._language.current]}, ` : "";
585
- const vehicleSubModeText = product?.vehicleSubModeShortName ? `${product.vehicleSubModeShortName} ${product.line || ""}, ` : "";
612
+ const vehicleSubModeText = (product == null ? void 0 : product.vehicleSubModeShortName) ? `${product.vehicleSubModeShortName} ${product.line || ""}, ` : "";
586
613
  const directionText = `${i18nDirection[this._language.current]} ${direction}, `;
587
614
  const himCus = this._handleHimCus(trip);
588
- const cusText = himCus?.cus?.text ? `${i18nRealTimeInfo[this._language.current]}: ${himCus?.cus?.text}, ` : "";
589
- const himText = himCus?.him?.text ? `${i18nRealTimeInfo[this._language.current]}: ${himCus?.him?.text}, ` : "";
615
+ const cusText = ((_a2 = himCus == null ? void 0 : himCus.cus) == null ? void 0 : _a2.text) ? `${i18nRealTimeInfo[this._language.current]}: ${(_b = himCus == null ? void 0 : himCus.cus) == null ? void 0 : _b.text}, ` : "";
616
+ const himText = ((_c = himCus == null ? void 0 : himCus.him) == null ? void 0 : _c.text) ? `${i18nRealTimeInfo[this._language.current]}: ${(_d = himCus == null ? void 0 : himCus.him) == null ? void 0 : _d.text}, ` : "";
590
617
  const boardingText = this.boarding ? `${this.boarding.text}, ` : "";
591
- const priceText = `${this.price?.isDiscount ? i18nSupersaver[this._language.current] : ""} ${this.price?.text && this.price?.price ? (this.price?.text || "") + " " + (this.price?.price || "") + ", " : ""}`;
618
+ const priceText = `${((_e = this.price) == null ? void 0 : _e.isDiscount) ? i18nSupersaver[this._language.current] : ""} ${((_f = this.price) == null ? void 0 : _f.text) && ((_g = this.price) == null ? void 0 : _g.price) ? (((_h = this.price) == null ? void 0 : _h.text) || "") + " " + (((_i = this.price) == null ? void 0 : _i.price) || "") + ", " : ""}`;
592
619
  const transferProcedures = rideLegs.length > 2 ? `${rideLegs.length - 1} ${i18nTransferProcedures[this._language.current]}, ` : rideLegs.length > 1 ? `${rideLegs.length - 1} ${i18nTransferProcedure[this._language.current]}, ` : "";
593
620
  const arrivalTimeText = arrivalTime ? `${i18nArrival[this._language.current]}: ${format(arrivalTime, "HH:mm")}, ` : "";
594
621
  let occupancyText = "";
595
622
  if (occupancy) {
596
623
  if (occupancy.firstClass && occupancy.firstClass !== "UNKNOWN") {
597
- occupancyText += `${i18nClass.first[this._language.current]} ${i18nOccupancy[occupancy.firstClass.toLowerCase()]?.[this._language.current]}.`;
624
+ occupancyText += `${i18nClass.first[this._language.current]} ${(_j = i18nOccupancy[occupancy.firstClass.toLowerCase()]) == null ? void 0 : _j[this._language.current]}.`;
598
625
  }
599
626
  if (occupancy.secondClass && occupancy.secondClass !== "UNKNOWN") {
600
- occupancyText += ` ${i18nClass.second[this._language.current]} ${i18nOccupancy[occupancy.secondClass.toLowerCase()]?.[this._language.current]}.`;
627
+ occupancyText += ` ${i18nClass.second[this._language.current]} ${(_k = i18nOccupancy[occupancy.secondClass.toLowerCase()]) == null ? void 0 : _k[this._language.current]}.`;
601
628
  }
602
629
  }
603
- const attributes = notices && handleNotices(notices).length && handleNotices(notices)?.map((notice, index) => index < 4 && notice.text?.template).join(", ") + ", ";
630
+ const attributes = notices && handleNotices(notices).length && ((_l = handleNotices(notices)) == null ? void 0 : _l.map((notice, index) => {
631
+ var _a3;
632
+ return index < 4 && ((_a3 = notice.text) == null ? void 0 : _a3.template);
633
+ }).join(", ")) + ", ";
604
634
  const attributesText = attributes ? `${i18nTravelhints[this._language.current]}: ${attributes}` : "";
605
635
  const durationText = !!duration && duration > 0 ? `${i18nTripDuration[this._language.current]} ${durationToTime(duration, this._language.current).long}, ` : "";
606
636
  return [
@@ -620,9 +650,10 @@ let SbbTimetableRowElement = (() => {
620
650
  transferProcedures,
621
651
  occupancyText,
622
652
  attributesText
623
- ].map((e) => e?.trim()).filter((e) => e && e.length > 0).join(" ");
653
+ ].map((e) => e == null ? void 0 : e.trim()).filter((e) => e && e.length > 0).join(" ");
624
654
  }
625
655
  render() {
656
+ var _a2, _b, _c, _d;
626
657
  if (this.loadingTrip) {
627
658
  return this._renderSkeleton();
628
659
  }
@@ -653,7 +684,7 @@ let SbbTimetableRowElement = (() => {
653
684
  <div class="sbb-timetable__row" role="row">
654
685
  <div class="sbb-timetable__row-header" role="gridcell">
655
686
  <div class="sbb-timetable__row-details">
656
- ${product?.corporateIdentityPictogram && html`<span class="sbb-timetable__row-transport-wrapper">
687
+ ${(product == null ? void 0 : product.corporateIdentityPictogram) && html`<span class="sbb-timetable__row-transport-wrapper">
657
688
  <sbb-icon
658
689
  class="sbb-timetable__row-transport-icon"
659
690
  name="picto:${product.corporateIdentityPictogram}"
@@ -663,15 +694,15 @@ let SbbTimetableRowElement = (() => {
663
694
  &nbsp;
664
695
  </span>
665
696
  </span>`}
666
- ${product && (product.corporateIdentityIcon ? renderIconProduct(product.corporateIdentityIcon, product.name) : product.vehicleSubModeShortName && renderStringProduct(product.vehicleSubModeShortName, product?.line))}
697
+ ${product && (product.corporateIdentityIcon ? renderIconProduct(product.corporateIdentityIcon, product.name) : product.vehicleSubModeShortName && renderStringProduct(product.vehicleSubModeShortName, product == null ? void 0 : product.line))}
667
698
  </div>
668
699
  ${direction ? html`<p>${`${i18nDirection[this._language.current]} ${direction}`}</p>` : nothing}
669
700
  </div>
670
701
  <sbb-pearl-chain-time
671
702
  role="gridcell"
672
703
  .legs=${legs}
673
- .departureTime=${departure?.time}
674
- .arrivalTime=${arrival?.time}
704
+ .departureTime=${departure == null ? void 0 : departure.time}
705
+ .arrivalTime=${arrival == null ? void 0 : arrival.time}
675
706
  .departureWalk=${departureWalk}
676
707
  .arrivalWalk=${arrivalWalk}
677
708
  ?disable-animation=${this.disableAnimation}
@@ -679,32 +710,35 @@ let SbbTimetableRowElement = (() => {
679
710
  .now=${this.now}
680
711
  ></sbb-pearl-chain-time>
681
712
  <div class="sbb-timetable__row-footer" role="gridcell">
682
- ${product && departure?.quayFormatted ? html`<span
683
- class=${departure?.quayChanged ? `sbb-timetable__row-quay--changed` : nothing}
713
+ ${product && (departure == null ? void 0 : departure.quayFormatted) ? html`<span
714
+ class=${(departure == null ? void 0 : departure.quayChanged) ? `sbb-timetable__row-quay--changed` : nothing}
684
715
  >
685
716
  <span class="sbb-screen-reader-only">
686
- ${`${i18nDeparture[this._language.current]} ${departure?.quayChanged ? i18nNew[this._language.current] : ""}`}
717
+ ${`${i18nDeparture[this._language.current]} ${(departure == null ? void 0 : departure.quayChanged) ? i18nNew[this._language.current] : ""}`}
687
718
  &nbsp;
688
719
  </span>
689
- ${this._renderQuayType()} ${departure?.quayFormatted}
720
+ ${this._renderQuayType()} ${departure == null ? void 0 : departure.quayFormatted}
690
721
  </span>` : nothing}
691
- ${occupancy?.firstClass && occupancy?.firstClass !== "UNKNOWN" || occupancy?.secondClass && occupancy.secondClass !== "UNKNOWN" ? html`<sbb-timetable-occupancy
692
- .firstClassOccupancy=${occupancy?.firstClass?.toLowerCase()}
693
- .secondClassOccupancy=${occupancy?.secondClass?.toLowerCase()}
722
+ ${(occupancy == null ? void 0 : occupancy.firstClass) && (occupancy == null ? void 0 : occupancy.firstClass) !== "UNKNOWN" || (occupancy == null ? void 0 : occupancy.secondClass) && occupancy.secondClass !== "UNKNOWN" ? html`<sbb-timetable-occupancy
723
+ .firstClassOccupancy=${(_a2 = occupancy == null ? void 0 : occupancy.firstClass) == null ? void 0 : _a2.toLowerCase()}
724
+ .secondClassOccupancy=${(_b = occupancy == null ? void 0 : occupancy.secondClass) == null ? void 0 : _b.toLowerCase()}
694
725
  ></sbb-timetable-occupancy>` : nothing}
695
726
  ${noticeAttributes && noticeAttributes.length || this.boarding ? html`<ul class="sbb-timetable__row-hints" role="list">
696
- ${noticeAttributes?.map((notice, index) => index < 4 ? html`<li>
727
+ ${noticeAttributes == null ? void 0 : noticeAttributes.map((notice, index) => {
728
+ var _a3, _b2;
729
+ return index < 4 ? html`<li>
697
730
  <sbb-icon
698
731
  class="sbb-travel-hints__item"
699
- name=${"sa-" + notice.name?.toLowerCase()}
732
+ name=${"sa-" + ((_a3 = notice.name) == null ? void 0 : _a3.toLowerCase())}
700
733
  ></sbb-icon>
701
- <span class="sbb-screen-reader-only">${notice.text?.template}</span>
702
- </li>` : nothing)}
734
+ <span class="sbb-screen-reader-only">${(_b2 = notice.text) == null ? void 0 : _b2.template}</span>
735
+ </li>` : nothing;
736
+ })}
703
737
  ${this.boarding ? html`<li>
704
738
  <sbb-icon
705
739
  class="sbb-travel-hints__item"
706
- name=${this.boarding?.name}
707
- aria-label=${this.boarding?.text}
740
+ name=${(_c = this.boarding) == null ? void 0 : _c.name}
741
+ aria-label=${(_d = this.boarding) == null ? void 0 : _d.text}
708
742
  aria-hidden="false"
709
743
  ></sbb-icon>
710
744
  </li>` : nothing}
@@ -786,4 +820,4 @@ export {
786
820
  renderStringProduct,
787
821
  sortSituation
788
822
  };
789
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvdGltZXRhYmxlLXJvdy90aW1ldGFibGUtcm93LmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGRlZmF1bHREYXRlQWRhcHRlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kb20uanMnO1xuaW1wb3J0IHtcbiAgaTE4bkFycml2YWwsXG4gIGkxOG5DbGFzcyxcbiAgaTE4bkRlcGFydHVyZSxcbiAgaTE4bkRpcmVjdGlvbixcbiAgaTE4bkZyb21QbGF0Zm9ybSxcbiAgaTE4bk1lYW5zT2ZUcmFuc3BvcnQsXG4gIGkxOG5OZXcsXG4gIGkxOG5PY2N1cGFuY3ksXG4gIGkxOG5SZWFsVGltZUluZm8sXG4gIGkxOG5TdXBlcnNhdmVyLFxuICBpMThuVHJhbnNmZXJQcm9jZWR1cmUsXG4gIGkxOG5UcmFuc2ZlclByb2NlZHVyZXMsXG4gIGkxOG5UcmF2ZWxoaW50cyxcbiAgaTE4blRyaXBEdXJhdGlvbixcbiAgaTE4blRyaXBRdWF5Q2hhbmdlLFxufSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlTGlrZSwgU2JiT2NjdXBhbmN5IH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBkdXJhdGlvblRvVGltZSwgcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyB9IGZyb20gJy4uL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHR5cGUgeyBJVHJpcEl0ZW0sIE5vdGljZSwgUHRSaWRlTGVnLCBQdFNpdHVhdGlvbiB9IGZyb20gJy4uL2NvcmUvdGltZXRhYmxlLmpzJztcbmltcG9ydCB7IGdldERlcGFydHVyZUFycml2YWxUaW1lQXR0cmlidXRlLCBpc1JpZGVMZWcgfSBmcm9tICcuLi9jb3JlL3RpbWV0YWJsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RpbWV0YWJsZS1yb3cuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jYXJkLmpzJztcbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvaWNvbi5qcyc7XG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3RpbWV0YWJsZS1vY2N1cGFuY3kuanMnO1xuaW1wb3J0ICcuLi9wZWFybC1jaGFpbi10aW1lLmpzJztcblxuLyoqIEhpbUN1cyBpbnRlcmZhY2UgZm9yIG1hcHBlZCBpY29uIG5hbWUgYW5kIHRleHQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGltQ3VzIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0Pzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqIEJvYXJkaW5nIGljb24gaW50ZXJmYWNlIGZvciBtYXBwZWQgaWNvbiBuYW1lIGFuZCB0ZXh0ICovXG5leHBvcnQgaW50ZXJmYWNlIEJvYXJkaW5nIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2Uge1xuICBwcmljZT86IHN0cmluZztcbiAgdGV4dD86IHN0cmluZztcbiAgaXNEaXNjb3VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCByZW5kZXJJY29uUHJvZHVjdCA9IChpY29uOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0ID0+IHtcbiAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0XCI+XG4gICAgPHNiYi1pY29uIG5hbWU9JHtpY29ufT48L3NiYi1pY29uPlxuICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7bmFtZX08L3NwYW4+XG4gIDwvc3Bhbj5gO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbmRlclN0cmluZ1Byb2R1Y3QgPSAodmVoaWNsZU5hbWU6IHN0cmluZywgbGluZT86IHN0cmluZyB8IG51bGwpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gIGNvbnN0IHNwYWNlID0gWydNJywgJ0InLCAnVCddLmluY2x1ZGVzKHZlaGljbGVOYW1lKSA/ICcgJyA6ICcnO1xuICByZXR1cm4gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnRudW1iZXJcIj5cbiAgICAke2xpbmUgIT09IG51bGwgPyB2ZWhpY2xlTmFtZSArIHNwYWNlICsgbGluZSA6IHZlaGljbGVOYW1lfVxuICA8L3NwYW4+YDtcbn07XG5cbmNvbnN0IGdldFJlYWNoYWJsZVRleHQgPSAobGVnczogUHRSaWRlTGVnW10pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGxlZ3M/LmZpbmQoKGxlZykgPT4gbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVhY2hhYmxlVGV4dCk/LnNlcnZpY2VKb3VybmV5XG4gICAgPy5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVhY2hhYmxlVGV4dDtcbn07XG5cbmNvbnN0IGdldERlbGF5VGV4dCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiBsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5kZWxheVRleHQpPy5zZXJ2aWNlSm91cm5leVxuICAgID8uc2VydmljZUFsdGVyYXRpb24/LmRlbGF5VGV4dDtcbn07XG5cbmNvbnN0IGdldFJlZGlyZWN0ZWRUZXh0ID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+ICEhbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVkaXJlY3RlZFRleHQpXG4gICAgPy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnJlZGlyZWN0ZWRUZXh0O1xufTtcblxuY29uc3QgZ2V0VW5wbGFubmVkU3RvcCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiAhIWxlZy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnVucGxhbm5lZFN0b3BQb2ludHNUZXh0KVxuICAgID8uc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy51bnBsYW5uZWRTdG9wUG9pbnRzVGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBzb3J0U2l0dWF0aW9uID0gKHNpdHVhdGlvbnM6IFB0U2l0dWF0aW9uW10pOiBQdFNpdHVhdGlvbltdID0+IHtcbiAgY29uc3QgcHJpb3JpdGllcyA9IHtcbiAgICBESVNUVVJCQU5DRTogMCxcbiAgICBJTkZPUk1BVElPTjogMSxcbiAgICBERUxBWTogMixcbiAgICBUUkFJTl9SRVBMQUNFTUVOVF9CWV9CVVM6IDMsXG4gICAgQ09OU1RSVUNUSU9OX1NJVEU6IDQsXG4gICAgRU5EX01FU1NBR0U6IDUsXG4gIH07XG5cbiAgcmV0dXJuIFsuLi5zaXR1YXRpb25zXT8uc29ydChcbiAgICAoYTogUHRTaXR1YXRpb24sIGI6IFB0U2l0dWF0aW9uKSA9PiBwcmlvcml0aWVzW2EuY2F1c2UhXSAtIHByaW9yaXRpZXNbYi5jYXVzZSFdLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpbUljb24gPSAoc2l0dWF0aW9uOiBQdFNpdHVhdGlvbik6IEhpbUN1cyA9PiB7XG4gIHN3aXRjaCAoc2l0dWF0aW9uPy5jYXVzZSkge1xuICAgIGNhc2UgJ0RJU1RVUkJBTkNFJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdkaXNydXB0aW9uJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcz8ubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdJTkZPUk1BVElPTic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnaW5mbycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdERUxBWSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnZGVsYXknLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgY2FzZSAnVFJBSU5fUkVQTEFDRU1FTlRfQllfQlVTJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdyZXBsYWNlbWVudGJ1cycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdDT05TVFJVQ1RJT05fU0lURSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnY29uc3RydWN0aW9uJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnaW5mbycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cyA9ICh0cmlwOiBJVHJpcEl0ZW0sIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nKTogSGltQ3VzID0+IHtcbiAgY29uc3QgeyBzdW1tYXJ5LCBsZWdzIH0gPSB0cmlwIHx8IHt9O1xuICBjb25zdCByaWRlTGVncyA9IGxlZ3M/LmZpbHRlcigobGVnKSA9PiBpc1JpZGVMZWcobGVnKSkgYXMgUHRSaWRlTGVnW107XG4gIGNvbnN0IHsgdHJpcFN0YXR1cyB9ID0gc3VtbWFyeSB8fCB7fTtcblxuICBpZiAodHJpcFN0YXR1cz8uY2FuY2VsbGVkIHx8IHRyaXBTdGF0dXM/LnBhcnRpYWxseUNhbmNlbGxlZClcbiAgICByZXR1cm4geyBuYW1lOiAnY2FuY2VsbGF0aW9uJywgdGV4dDogdHJpcFN0YXR1cz8uY2FuY2VsbGVkVGV4dCB9O1xuICBpZiAoZ2V0UmVhY2hhYmxlVGV4dChyaWRlTGVncykpXG4gICAgcmV0dXJuIHsgbmFtZTogJ21pc3NlZC1jb25uZWN0aW9uJywgdGV4dDogZ2V0UmVhY2hhYmxlVGV4dChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LmFsdGVybmF0aXZlKSByZXR1cm4geyBuYW1lOiAnYWx0ZXJuYXRpdmUnLCB0ZXh0OiB0cmlwU3RhdHVzLmFsdGVybmF0aXZlVGV4dCB9O1xuICBpZiAoZ2V0UmVkaXJlY3RlZFRleHQocmlkZUxlZ3MpKSByZXR1cm4geyBuYW1lOiAncmVyb3V0ZScsIHRleHQ6IGdldFJlZGlyZWN0ZWRUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAoZ2V0VW5wbGFubmVkU3RvcChyaWRlTGVncykpIHJldHVybiB7IG5hbWU6ICdhZGQtc3RvcCcsIHRleHQ6IGdldFVucGxhbm5lZFN0b3AocmlkZUxlZ3MpIH07XG4gIGlmICh0cmlwU3RhdHVzPy5kZWxheWVkIHx8IHRyaXBTdGF0dXM/LmRlbGF5ZWRVbmtub3duKVxuICAgIHJldHVybiB7IG5hbWU6ICdkZWxheScsIHRleHQ6IGdldERlbGF5VGV4dChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LnF1YXlDaGFuZ2VkKSB7XG4gICAgY29uc3QgZGVwYXJ0dXJlID0gcmlkZUxlZ3NbMF0uZGVwYXJ0dXJlO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAncGxhdGZvcm0tY2hhbmdlJyxcbiAgICAgIHRleHQ6IGRlcGFydHVyZS5xdWF5Q2hhbmdlZCA/IGRlcGFydHVyZS5xdWF5Q2hhbmdlZFRleHQgOiBpMThuVHJpcFF1YXlDaGFuZ2VbY3VycmVudExhbmd1YWdlXSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHt9IGFzIEhpbUN1cztcbn07XG5cbmNvbnN0IGZpbmRBbmRSZXBsYWNlTm90aWNlID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmVzZXJ2YXRpb25Ob3RpY2UgPSBbJ1JSJywgJ1JLJywgJ1JDJywgJ1JMJywgJ1JNJywgJ1JTJywgJ1JVJywgJ1hQJywgJ1hSJywgJ1hUJ107XG5cbiAgcmV0dXJuIG5vdGljZXMucmVkdWNlKChmb3VuZE5vdGljZTogTm90aWNlIHwgdW5kZWZpbmVkLCBub3RpY2U6IE5vdGljZSk6IE5vdGljZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGZvdW5kTm90aWNlKSByZXR1cm4gZm91bmROb3RpY2U7XG4gICAgaWYgKHJlc2VydmF0aW9uTm90aWNlLmluY2x1ZGVzKG5vdGljZS5uYW1lKSkge1xuICAgICAgcmV0dXJuIHsgLi4ubm90aWNlLCBuYW1lOiAnUlInIH0gYXMgTm90aWNlO1xuICAgIH1cbiAgfSwgdW5kZWZpbmVkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJOb3RpY2VzID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlW10gPT4ge1xuICBjb25zdCBhbGxvd2VkTmFtZXMgPSBbJ1onLCAnU0InLCAnU1onLCAnVlInLCAnVEcnXTtcblxuICBjb25zdCBmaWx0ZXJOb3RpY2UgPSBub3RpY2VzLmZpbHRlcigobm90aWNlLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBub3RpY2VzLmZpbmRJbmRleCgobikgPT4gbi5uYW1lID09PSBub3RpY2UubmFtZSkgPT09IGluZGV4O1xuICB9KTtcblxuICByZXR1cm4gZmlsdGVyTm90aWNlXG4gICAgLmZpbHRlcigobm90aWNlKSA9PiBhbGxvd2VkTmFtZXMuaW5jbHVkZXMobm90aWNlLm5hbWUpKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhbGxvd2VkTmFtZXMuaW5kZXhPZihhLm5hbWUpIC0gYWxsb3dlZE5hbWVzLmluZGV4T2YoYi5uYW1lKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlTm90aWNlcyA9IChub3RpY2VzOiBOb3RpY2VbXSk6IE5vdGljZVtdID0+IHtcbiAgY29uc3QgcmVzZXJ2YXRpb25Ob3RpY2UgPSBmaW5kQW5kUmVwbGFjZU5vdGljZShub3RpY2VzKTtcbiAgY29uc3QgZmlsdGVyZWROb3RpY2VzID0gZmlsdGVyTm90aWNlcyhub3RpY2VzKTtcblxuICBpZiAocmVzZXJ2YXRpb25Ob3RpY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZpbHRlcmVkTm90aWNlcztcbiAgaWYgKCFmaWx0ZXJlZE5vdGljZXMubGVuZ3RoKSByZXR1cm4gW3Jlc2VydmF0aW9uTm90aWNlXTtcblxuICBpZiAoZmlsdGVyZWROb3RpY2VzWzBdLm5hbWUgPT09ICdaJyAmJiBmaWx0ZXJlZE5vdGljZXNbMV0pIHtcbiAgICByZXR1cm4gW2ZpbHRlcmVkTm90aWNlc1swXSwgcmVzZXJ2YXRpb25Ob3RpY2UsIGZpbHRlcmVkTm90aWNlc1sxXV0uY29uY2F0KFxuICAgICAgZmlsdGVyZWROb3RpY2VzLnNsaWNlKDIpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gW3Jlc2VydmF0aW9uTm90aWNlLCAuLi5maWx0ZXJlZE5vdGljZXNdO1xufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJpcCwgYWN0aW5nIGFzIGEgY29udGFpbmVyIGZvciBhbGwgdGhlIGBzYmItdGltZXRhYmxlLSpgIGNvbXBvbmVudHMuXG4gKiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXRpbWV0YWJsZS1yb3cnKVxuY2xhc3MgU2JiVGltZXRhYmxlUm93RWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHRyaXAgUHJvcC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogT2JqZWN0IH0pIHB1YmxpYyBhY2Nlc3NvciB0cmlwOiBJVHJpcEl0ZW0gPSBudWxsITtcblxuICAvKiogVGhlIHByaWNlIFByb3AsIHdoaWNoIGNvbnNpc3RzIG9mIHRoZSBkYXRhIGZvciB0aGUgYmFkZ2UuICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IE9iamVjdCB9KSBwdWJsaWMgYWNjZXNzb3IgcHJpY2U6IFByaWNlID0gbnVsbCE7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIHNiYi1wZWFybC1jaGFpbiBjb21wb25lbnQgLSBpZiB0cnVlIHRoZSBwb3NpdGlvbiB3b24ndCBiZSBhbmltYXRlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGUtYW5pbWF0aW9uJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZUFuaW1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSBub3RpY2VzIHNlY3Rpb24gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogT2JqZWN0IH0pIHB1YmxpYyBhY2Nlc3NvciBib2FyZGluZzogQm9hcmRpbmcgPSBudWxsITtcblxuICAvKipcbiAgICogVGhlIGxvYWRpbmcgc3RhdGUgLVxuICAgKiB3aGVuIHRoaXMgaXMgdHJ1ZSBpdCB3aWxsIGJlIHJlbmRlciBza2VsZXRvbiB3aXRoIGFuIGlkbGluZyBhbmltYXRpb25cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsb2FkaW5nLXRyaXAnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsb2FkaW5nVHJpcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgRm9vdHBhdGggYXR0cmlidXRlIGZvciByZW5kZXJpbmcgZGlmZmVyZW50IGljb25zXG4gICAqIHRydWU6IHJlbmRlciBhMTF5LWljb25cbiAgICogZmFsc2U6IHJlbmRlciB3YWxrLWljb25cbiAgICogZGVmYXVsdDogcmVuZGVyIHdhbGstaWNvblxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ExMXktZm9vdHBhdGgnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhMTF5Rm9vdHBhdGg6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGxvYWRpbmcgc3RhdGUgLVxuICAgKiB3aGVuIHRoaXMgaXMgdHJ1ZSBpdCB3aWxsIGJlIHJlbmRlciBza2VsZXRvbiB3aXRoIGFuIGlkbGluZyBhbmltYXRpb25cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsb2FkaW5nLXByaWNlJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbG9hZGluZ1ByaWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEhpZGRlbiBsYWJlbCBmb3IgdGhlIGNhcmQgYWN0aW9uLiBJdCBvdmVycmlkZXMgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFjY2Vzc2liaWxpdHkgdGV4dCBmb3IgdGhlIGNvbXBvbmVudC4gVXNlIHRoaXMgcHJvcCB0byBwcm92aWRlIGN1c3RvbSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2NhcmQtYWN0aW9uLWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgY2FyZEFjdGlvbkxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgc2JiLWNhcmQgY29tcG9uZW50IGFzIGFyaWEtZXhwYW5kZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWV4cGFuZGVkJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZW4gdGhpcyBwcm9wIGlzIHRydWUgdGhlIHNiYi1jYXJkIHdpbGwgYmUgaW4gdGhlIGFjdGl2ZSBzdGF0ZS4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuIFJlY29tbWVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2UgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ub3cgPSBkZWZhdWx0RGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKGRlZmF1bHREYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICB9XG4gIHB1YmxpYyBnZXQgbm93KCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9ub3cgPz8gbmV3IERhdGUoKTtcbiAgfVxuICBwcml2YXRlIF9ub3c6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsb2FkaW5nVHJpcCcpKSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLCAncm9sZScsICF0aGlzLmxvYWRpbmdUcmlwID8gJ3Jvd2dyb3VwJyA6IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgc2tlbGV0b24gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGluZyBzdGF0ZSAqL1xuICBwcml2YXRlIF9yZW5kZXJTa2VsZXRvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLWNhcmQgc2l6ZT1cImxcIiBjbGFzcz1cInNiYi1sb2FkaW5nXCI+XG4gICAgICAgICR7dGhpcy5sb2FkaW5nUHJpY2VcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYXJkLWJhZGdlIGNsYXNzPVwic2JiLWxvYWRpbmdfX2JhZGdlXCI+PC9zYmItY2FyZC1iYWRnZT5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3Jvd1wiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fcm93XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1sb2FkaW5nX19yb3dcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NiYi1jYXJkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSaWRlTGVncygpOiBQdFJpZGVMZWdbXSB7XG4gICAgcmV0dXJuIHRoaXMudHJpcD8ubGVncz8uZmlsdGVyKChsZWcpID0+IGlzUmlkZUxlZyhsZWcpKSA/PyBbXTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFF1YXlUeXBlU3RyaW5ncygpOiB7IGxvbmc6IHN0cmluZzsgc2hvcnQ6IHN0cmluZyB9IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnRyaXAuc3VtbWFyeT8ucHJvZHVjdCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcmlkZUxlZ3MgPSB0aGlzLl9nZXRSaWRlTGVncygpO1xuICAgIGNvbnN0IGlzU2hvcnQgPSB0aGlzLnRyaXAuc3VtbWFyeS5wcm9kdWN0Py52ZWhpY2xlTW9kZSA9PT0gJ1RSQUlOJztcbiAgICBjb25zdCBzaG9ydCA9IGlzU2hvcnRcbiAgICAgID8gcmlkZUxlZ3NbMF0uc2VydmljZUpvdXJuZXkucXVheVR5cGVTaG9ydE5hbWUgfHwgJydcbiAgICAgIDogcmlkZUxlZ3NbMF0uc2VydmljZUpvdXJuZXkucXVheVR5cGVOYW1lIHx8ICcnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvbmc6IGkxOG5Gcm9tUGxhdGZvcm1bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0gKyAnICcgKyBzaG9ydCxcbiAgICAgIHNob3J0LFxuICAgIH07XG4gIH1cblxuICAvKiogbWFwIFF1YXkgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyUXVheVR5cGUoKTogVGVtcGxhdGVSZXN1bHQgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy50cmlwLnN1bW1hcnk/LnByb2R1Y3QpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcXVheVR5cGVTdHJpbmdzID0gdGhpcy5fZ2V0UXVheVR5cGVTdHJpbmdzKCk7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy0tcXVheVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4ke3F1YXlUeXBlU3RyaW5ncz8ubG9uZ30mbmJzcDs8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LS1xdWF5LXR5cGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID4ke3F1YXlUeXBlU3RyaW5ncz8uc2hvcnR9PC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSGltQ3VzKHRyaXA6IElUcmlwSXRlbSk6IHsgY3VzOiBIaW1DdXMgfCBudWxsOyBoaW06IEhpbUN1cyB8IG51bGwgfSB7XG4gICAgY29uc3QgeyBzaXR1YXRpb25zIH0gPSB0cmlwIHx8IHt9O1xuICAgIGNvbnN0IHNvcnRlZFNpdHVhdGlvbnMgPSBzaXR1YXRpb25zICYmIHNvcnRTaXR1YXRpb24oc2l0dWF0aW9ucyk7XG4gICAgY29uc3QgY3VzID0gZ2V0Q3VzKHRyaXAsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGN1czogT2JqZWN0LmtleXMoY3VzKT8ubGVuZ3RoID8gY3VzIDogbnVsbCxcbiAgICAgIGhpbTogc2l0dWF0aW9ucz8ubGVuZ3RoID8gZ2V0SGltSWNvbihzb3J0ZWRTaXR1YXRpb25zWzBdKSA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEFjY2Vzc2liaWxpdHlUZXh0KHRyaXA6IElUcmlwSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBzdW1tYXJ5LCBsZWdzLCBub3RpY2VzIH0gPSB0cmlwIHx8IHt9O1xuICAgIGNvbnN0IHtcbiAgICAgIGRlcGFydHVyZVdhbGssXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgb2NjdXBhbmN5LFxuICAgICAgZHVyYXRpb24sXG4gICAgfSA9IHN1bW1hcnkgfHwge307XG5cbiAgICBjb25zdCB7IGRlcGFydHVyZVRpbWVBdHRyaWJ1dGUsIGFycml2YWxUaW1lQXR0cmlidXRlIH0gPSBnZXREZXBhcnR1cmVBcnJpdmFsVGltZUF0dHJpYnV0ZShcbiAgICAgIGxlZ3MsXG4gICAgICBkZXBhcnR1cmVXYWxrIHx8IDAsXG4gICAgICBhcnJpdmFsV2FsayB8fCAwLFxuICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgIHRoaXMuYTExeUZvb3RwYXRoLFxuICAgICk7XG5cbiAgICBjb25zdCByaWRlTGVncyA9IHRoaXMuX2dldFJpZGVMZWdzKCk7XG5cbiAgICBjb25zdCBkZXBhcnR1cmVUaW1lOiBEYXRlIHwgdW5kZWZpbmVkID0gZGVwYXJ0dXJlPy50aW1lXG4gICAgICA/IHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcoZGVwYXJ0dXJlLnRpbWUpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGFycml2YWxUaW1lOiBEYXRlIHwgdW5kZWZpbmVkID0gYXJyaXZhbD8udGltZVxuICAgICAgPyByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nKGFycml2YWwudGltZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZGVwYXJ0dXJlV2Fsa1RleHQgPSBkZXBhcnR1cmVUaW1lQXR0cmlidXRlXG4gICAgICA/IGAke2RlcGFydHVyZVRpbWVBdHRyaWJ1dGUudGV4dH0gJHtkZXBhcnR1cmVUaW1lQXR0cmlidXRlLmR1cmF0aW9ufSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGFycml2YWxXYWxrVGV4dCA9IGFycml2YWxUaW1lQXR0cmlidXRlXG4gICAgICA/IGAke2Fycml2YWxUaW1lQXR0cmlidXRlLnRleHR9ICR7YXJyaXZhbFRpbWVBdHRyaWJ1dGUuZHVyYXRpb259LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgZGVwYXJ0dXJlVGltZVRleHQgPSBkZXBhcnR1cmVUaW1lXG4gICAgICA/IGAke2kxOG5EZXBhcnR1cmVbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2Zvcm1hdChkZXBhcnR1cmVUaW1lLCAnSEg6bW0nKX0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBnZXREZXBhcnR1cmVRdWF5VGV4dCA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgaWYgKCFkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWQpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgICAvLyBhZGQgcHJlZml4IFwibmV3XCIgaWYgcXVheSB3YXMgY2hhbmdlZFxuICAgICAgY29uc3QgY2hhbmdlZFF1YXlQcmVmaXggPSBkZXBhcnR1cmU/LnF1YXlDaGFuZ2VkID8gYCR7aTE4bk5ld1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gYCA6ICcnO1xuICAgICAgcmV0dXJuIGAke2NoYW5nZWRRdWF5UHJlZml4fSR7XG4gICAgICAgIHRoaXMuX2dldFF1YXlUeXBlU3RyaW5ncygpPy5sb25nXG4gICAgICB9ICR7ZGVwYXJ0dXJlPy5xdWF5Rm9ybWF0dGVkfSwgYDtcbiAgICB9O1xuXG4gICAgY29uc3QgbWVhbnNPZlRyYW5zcG9ydFRleHQgPVxuICAgICAgcHJvZHVjdCAmJiBwcm9kdWN0LnZlaGljbGVNb2RlXG4gICAgICAgID8gaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXSAmJlxuICAgICAgICAgIGAke2kxOG5NZWFuc09mVHJhbnNwb3J0W3Byb2R1Y3QudmVoaWNsZU1vZGUudG9Mb3dlckNhc2UoKV1bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19LCBgXG4gICAgICAgIDogJyc7XG5cbiAgICBjb25zdCB2ZWhpY2xlU3ViTW9kZVRleHQgPSBwcm9kdWN0Py52ZWhpY2xlU3ViTW9kZVNob3J0TmFtZVxuICAgICAgPyBgJHtwcm9kdWN0LnZlaGljbGVTdWJNb2RlU2hvcnROYW1lfSAke3Byb2R1Y3QubGluZSB8fCAnJ30sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkaXJlY3Rpb25UZXh0ID0gYCR7aTE4bkRpcmVjdGlvblt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkaXJlY3Rpb259LCBgO1xuXG4gICAgY29uc3QgaGltQ3VzID0gdGhpcy5faGFuZGxlSGltQ3VzKHRyaXApO1xuICAgIGNvbnN0IGN1c1RleHQgPSBoaW1DdXM/LmN1cz8udGV4dFxuICAgICAgPyBgJHtpMThuUmVhbFRpbWVJbmZvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHtoaW1DdXM/LmN1cz8udGV4dH0sIGBcbiAgICAgIDogJyc7XG4gICAgY29uc3QgaGltVGV4dCA9IGhpbUN1cz8uaGltPy50ZXh0XG4gICAgICA/IGAke2kxOG5SZWFsVGltZUluZm9bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2hpbUN1cz8uaGltPy50ZXh0fSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGJvYXJkaW5nVGV4dCA9IHRoaXMuYm9hcmRpbmcgPyBgJHt0aGlzLmJvYXJkaW5nLnRleHR9LCBgIDogJyc7XG5cbiAgICBjb25zdCBwcmljZVRleHQgPSBgJHt0aGlzLnByaWNlPy5pc0Rpc2NvdW50ID8gaTE4blN1cGVyc2F2ZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0gOiAnJ30gJHtcbiAgICAgIHRoaXMucHJpY2U/LnRleHQgJiYgdGhpcy5wcmljZT8ucHJpY2VcbiAgICAgICAgPyAodGhpcy5wcmljZT8udGV4dCB8fCAnJykgKyAnICcgKyAodGhpcy5wcmljZT8ucHJpY2UgfHwgJycpICsgJywgJ1xuICAgICAgICA6ICcnXG4gICAgfWA7XG5cbiAgICBjb25zdCB0cmFuc2ZlclByb2NlZHVyZXMgPVxuICAgICAgcmlkZUxlZ3MubGVuZ3RoID4gMlxuICAgICAgICA/IGAke3JpZGVMZWdzLmxlbmd0aCAtIDF9ICR7aTE4blRyYW5zZmVyUHJvY2VkdXJlc1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sIGBcbiAgICAgICAgOiByaWRlTGVncy5sZW5ndGggPiAxXG4gICAgICAgICAgPyBgJHtyaWRlTGVncy5sZW5ndGggLSAxfSAke2kxOG5UcmFuc2ZlclByb2NlZHVyZVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sIGBcbiAgICAgICAgICA6ICcnO1xuXG4gICAgY29uc3QgYXJyaXZhbFRpbWVUZXh0ID0gYXJyaXZhbFRpbWVcbiAgICAgID8gYCR7aTE4bkFycml2YWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2Zvcm1hdChhcnJpdmFsVGltZSwgJ0hIOm1tJyl9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgbGV0IG9jY3VwYW5jeVRleHQ6IHN0cmluZyA9ICcnO1xuICAgIGlmIChvY2N1cGFuY3kpIHtcbiAgICAgIGlmIChvY2N1cGFuY3kuZmlyc3RDbGFzcyAmJiBvY2N1cGFuY3kuZmlyc3RDbGFzcyAhPT0gJ1VOS05PV04nKSB7XG4gICAgICAgIG9jY3VwYW5jeVRleHQgKz0gYCR7aTE4bkNsYXNzLmZpcnN0W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgIChcbiAgICAgICAgICAgIGkxOG5PY2N1cGFuY3lbb2NjdXBhbmN5LmZpcnN0Q2xhc3MudG9Mb3dlckNhc2UoKSBhcyBTYmJPY2N1cGFuY3ldIGFzIFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICApPy5bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgfS5gO1xuICAgICAgfVxuICAgICAgaWYgKG9jY3VwYW5jeS5zZWNvbmRDbGFzcyAmJiBvY2N1cGFuY3kuc2Vjb25kQ2xhc3MgIT09ICdVTktOT1dOJykge1xuICAgICAgICBvY2N1cGFuY3lUZXh0ICs9IGAgJHtpMThuQ2xhc3Muc2Vjb25kW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgIChcbiAgICAgICAgICAgIGkxOG5PY2N1cGFuY3lbb2NjdXBhbmN5LnNlY29uZENsYXNzLnRvTG93ZXJDYXNlKCkgYXMgU2JiT2NjdXBhbmN5XSBhcyBSZWNvcmQ8XG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICA+XG4gICAgICAgICAgKT8uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdXG4gICAgICAgIH0uYDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID1cbiAgICAgIG5vdGljZXMgJiZcbiAgICAgIGhhbmRsZU5vdGljZXMobm90aWNlcykubGVuZ3RoICYmXG4gICAgICBoYW5kbGVOb3RpY2VzKG5vdGljZXMpXG4gICAgICAgID8ubWFwKChub3RpY2UsIGluZGV4KSA9PiBpbmRleCA8IDQgJiYgbm90aWNlLnRleHQ/LnRlbXBsYXRlKVxuICAgICAgICAuam9pbignLCAnKSArICcsICc7XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzVGV4dCA9IGF0dHJpYnV0ZXNcbiAgICAgID8gYCR7aTE4blRyYXZlbGhpbnRzW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHthdHRyaWJ1dGVzfWBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkdXJhdGlvblRleHQgPVxuICAgICAgISFkdXJhdGlvbiAmJiBkdXJhdGlvbiA+IDBcbiAgICAgICAgPyBgJHtpMThuVHJpcER1cmF0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgICAgZHVyYXRpb25Ub1RpbWUoZHVyYXRpb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpLmxvbmdcbiAgICAgICAgICB9LCBgXG4gICAgICAgIDogJyc7XG5cbiAgICByZXR1cm4gW1xuICAgICAgZGVwYXJ0dXJlV2Fsa1RleHQsXG4gICAgICBkZXBhcnR1cmVUaW1lVGV4dCxcbiAgICAgIGdldERlcGFydHVyZVF1YXlUZXh0KCksXG4gICAgICBtZWFuc09mVHJhbnNwb3J0VGV4dCxcbiAgICAgIHZlaGljbGVTdWJNb2RlVGV4dCxcbiAgICAgIGRpcmVjdGlvblRleHQsXG4gICAgICBjdXNUZXh0LFxuICAgICAgYm9hcmRpbmdUZXh0LFxuICAgICAgcHJpY2VUZXh0LFxuICAgICAgY3VzVGV4dCA/ICcnIDogaGltVGV4dCxcbiAgICAgIGFycml2YWxUaW1lVGV4dCxcbiAgICAgIGFycml2YWxXYWxrVGV4dCxcbiAgICAgIGR1cmF0aW9uVGV4dCxcbiAgICAgIHRyYW5zZmVyUHJvY2VkdXJlcyxcbiAgICAgIG9jY3VwYW5jeVRleHQsXG4gICAgICBhdHRyaWJ1dGVzVGV4dCxcbiAgICBdXG4gICAgICAubWFwKChlKSA9PiBlPy50cmltKCkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlICYmIGUubGVuZ3RoID4gMClcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBpZiAodGhpcy5sb2FkaW5nVHJpcCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclNrZWxldG9uKCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBsZWdzLCBpZCwgbm90aWNlcywgc3VtbWFyeSB9ID0gdGhpcy50cmlwIHx8IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdCxcbiAgICAgIGRpcmVjdGlvbixcbiAgICAgIGRlcGFydHVyZVdhbGssXG4gICAgICBkZXBhcnR1cmUsXG4gICAgICBhcnJpdmFsLFxuICAgICAgYXJyaXZhbFdhbGssXG4gICAgICBvY2N1cGFuY3ksXG4gICAgICBkdXJhdGlvbixcbiAgICB9ID0gc3VtbWFyeSB8fCB7fTtcblxuICAgIGNvbnN0IGhpbUN1cyA9IHRoaXMuX2hhbmRsZUhpbUN1cyh0aGlzLnRyaXApO1xuICAgIGNvbnN0IGhhc0hpbUN1cyA9ICEhaGltQ3VzLmN1cyB8fCAhIWhpbUN1cy5oaW07XG5cbiAgICBjb25zdCBub3RpY2VBdHRyaWJ1dGVzID0gbm90aWNlcyAmJiBoYW5kbGVOb3RpY2VzKG5vdGljZXMpO1xuXG4gICAgY29uc3QgZHVyYXRpb25PYmogPSBkdXJhdGlvbiA/IGR1cmF0aW9uVG9UaW1lKGR1cmF0aW9uLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KSA6IG51bGw7XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItY2FyZCBzaXplPVwibFwiIGlkPSR7aWR9PlxuICAgICAgICA8c2JiLWNhcmQtYnV0dG9uXG4gICAgICAgICAgP2FjdGl2ZT0ke3RoaXMuYWN0aXZlfVxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9JHt0aGlzLmFjY2Vzc2liaWxpdHlFeHBhbmRlZCA/ICd0cnVlJyA6IG5vdGhpbmd9XG4gICAgICAgID5cbiAgICAgICAgICAke3RoaXMuY2FyZEFjdGlvbkxhYmVsID8gdGhpcy5jYXJkQWN0aW9uTGFiZWwgOiB0aGlzLl9nZXRBY2Nlc3NpYmlsaXR5VGV4dCh0aGlzLnRyaXApfVxuICAgICAgICA8L3NiYi1jYXJkLWJ1dHRvbj5cbiAgICAgICAgJHt0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY2xhc3M9XCJzYmItbG9hZGluZ19fYmFkZ2VcIj48L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICR7dGhpcy5wcmljZSAmJiAhdGhpcy5sb2FkaW5nUHJpY2VcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYXJkLWJhZGdlIGNvbG9yPSR7dGhpcy5wcmljZS5pc0Rpc2NvdW50ID8gJ2NoYXJjb2FsJyA6ICd3aGl0ZSd9PlxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UuaXNEaXNjb3VudFxuICAgICAgICAgICAgICAgID8gaHRtbGA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgJTxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiR7aTE4blN1cGVyc2F2ZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5gXG4gICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UudGV4dCA/IGh0bWxgPHNwYW4+JHt0aGlzLnByaWNlLnRleHR9PC9zcGFuPmAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UucHJpY2UgPyBodG1sYDxzcGFuPiR7dGhpcy5wcmljZS5wcmljZX08L3NwYW4+YCA6IG5vdGhpbmd9XG4gICAgICAgICAgICA8L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3dcIiByb2xlPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1oZWFkZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAke3Byb2R1Y3Q/LmNvcnBvcmF0ZUlkZW50aXR5UGljdG9ncmFtICYmXG4gICAgICAgICAgICAgIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXRyYW5zcG9ydC1pY29uXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJwaWN0bzoke3Byb2R1Y3QuY29ycG9yYXRlSWRlbnRpdHlQaWN0b2dyYW19XCJcbiAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICR7cHJvZHVjdCAmJlxuICAgICAgICAgICAgICAgICAgcHJvZHVjdC52ZWhpY2xlTW9kZSAmJlxuICAgICAgICAgICAgICAgICAgaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXSAmJlxuICAgICAgICAgICAgICAgICAgaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPmB9XG4gICAgICAgICAgICAgICR7cHJvZHVjdCAmJlxuICAgICAgICAgICAgICAocHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eUljb25cbiAgICAgICAgICAgICAgICA/IHJlbmRlckljb25Qcm9kdWN0KHByb2R1Y3QuY29ycG9yYXRlSWRlbnRpdHlJY29uLCBwcm9kdWN0Lm5hbWUpXG4gICAgICAgICAgICAgICAgOiBwcm9kdWN0LnZlaGljbGVTdWJNb2RlU2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgICByZW5kZXJTdHJpbmdQcm9kdWN0KHByb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWUsIHByb2R1Y3Q/LmxpbmUpKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtkaXJlY3Rpb25cbiAgICAgICAgICAgICAgPyBodG1sYDxwPiR7YCR7aTE4bkRpcmVjdGlvblt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkaXJlY3Rpb259YH08L3A+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNiYi1wZWFybC1jaGFpbi10aW1lXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgLmxlZ3M9JHtsZWdzfVxuICAgICAgICAgICAgLmRlcGFydHVyZVRpbWU9JHtkZXBhcnR1cmU/LnRpbWV9XG4gICAgICAgICAgICAuYXJyaXZhbFRpbWU9JHthcnJpdmFsPy50aW1lfVxuICAgICAgICAgICAgLmRlcGFydHVyZVdhbGs9JHtkZXBhcnR1cmVXYWxrfVxuICAgICAgICAgICAgLmFycml2YWxXYWxrPSR7YXJyaXZhbFdhbGt9XG4gICAgICAgICAgICA/ZGlzYWJsZS1hbmltYXRpb249JHt0aGlzLmRpc2FibGVBbmltYXRpb259XG4gICAgICAgICAgICA/YTExeS1mb290cGF0aD0ke3RoaXMuYTExeUZvb3RwYXRofVxuICAgICAgICAgICAgLm5vdz0ke3RoaXMubm93fVxuICAgICAgICAgID48L3NiYi1wZWFybC1jaGFpbi10aW1lPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctZm9vdGVyXCIgcm9sZT1cImdyaWRjZWxsXCI+XG4gICAgICAgICAgICAke3Byb2R1Y3QgJiYgZGVwYXJ0dXJlPy5xdWF5Rm9ybWF0dGVkXG4gICAgICAgICAgICAgID8gaHRtbGA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9JHtkZXBhcnR1cmU/LnF1YXlDaGFuZ2VkID8gYHNiYi10aW1ldGFibGVfX3Jvdy1xdWF5LS1jaGFuZ2VkYCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICR7YCR7aTE4bkRlcGFydHVyZVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmU/LnF1YXlDaGFuZ2VkID8gaTE4bk5ld1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSA6ICcnXG4gICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5fcmVuZGVyUXVheVR5cGUoKX0gJHtkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWR9XG4gICAgICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHsob2NjdXBhbmN5Py5maXJzdENsYXNzICYmIG9jY3VwYW5jeT8uZmlyc3RDbGFzcyAhPT0gJ1VOS05PV04nKSB8fFxuICAgICAgICAgICAgKG9jY3VwYW5jeT8uc2Vjb25kQ2xhc3MgJiYgb2NjdXBhbmN5LnNlY29uZENsYXNzICE9PSAnVU5LTk9XTicpXG4gICAgICAgICAgICAgID8gaHRtbGA8c2JiLXRpbWV0YWJsZS1vY2N1cGFuY3lcbiAgICAgICAgICAgICAgICAgIC5maXJzdENsYXNzT2NjdXBhbmN5PSR7b2NjdXBhbmN5Py5maXJzdENsYXNzPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgLnNlY29uZENsYXNzT2NjdXBhbmN5PSR7b2NjdXBhbmN5Py5zZWNvbmRDbGFzcz8udG9Mb3dlckNhc2UoKX1cbiAgICAgICAgICAgICAgICA+PC9zYmItdGltZXRhYmxlLW9jY3VwYW5jeT5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICR7KG5vdGljZUF0dHJpYnV0ZXMgJiYgbm90aWNlQXR0cmlidXRlcy5sZW5ndGgpIHx8IHRoaXMuYm9hcmRpbmdcbiAgICAgICAgICAgICAgPyBodG1sYDx1bCBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1oaW50c1wiIHJvbGU9XCJsaXN0XCI+XG4gICAgICAgICAgICAgICAgICAke25vdGljZUF0dHJpYnV0ZXM/Lm1hcCgobm90aWNlLCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPCA0XG4gICAgICAgICAgICAgICAgICAgICAgPyBodG1sYDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItdHJhdmVsLWhpbnRzX19pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSR7J3NhLScgKyBub3RpY2UubmFtZT8udG9Mb3dlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7bm90aWNlLnRleHQ/LnRlbXBsYXRlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+YFxuICAgICAgICAgICAgICAgICAgICAgIDogbm90aGluZyxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAke3RoaXMuYm9hcmRpbmdcbiAgICAgICAgICAgICAgICAgICAgPyBodG1sYDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYmItaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmF2ZWwtaGludHNfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSR7dGhpcy5ib2FyZGluZz8ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYm9hcmRpbmc/LnRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgICA8L3VsPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHtkdXJhdGlvbiAmJiBkdXJhdGlvbiA+IDBcbiAgICAgICAgICAgICAgPyBodG1sYDx0aW1lPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICR7YCR7aTE4blRyaXBEdXJhdGlvblt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkdXJhdGlvbk9iaiEubG9uZ31gfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JHtkdXJhdGlvbk9iaiEuc2hvcnR9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGltZT5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICR7aGFzSGltQ3VzICYmIChoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pXG4gICAgICAgICAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy13YXJuaW5nXCI+XG4gICAgICAgICAgICAgICAgICA8c2JiLWljb24gbmFtZT0keyhoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pIS5uYW1lfT48L3NiYi1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHsoaGltQ3VzLmN1cyB8fCBoaW1DdXMuaGltKSEudGV4dH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2JiLWNhcmQ+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRpbWV0YWJsZS1yb3cnOiBTYmJUaW1ldGFibGVSb3dFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdETyxNQUFNLG9CQUFvQixDQUFDLE1BQWMsU0FBZ0M7QUFDOUUsU0FBTztBQUFBLHFCQUNZLElBQUk7QUFBQSwyQ0FDa0IsSUFBSTtBQUFBO0FBRS9DO0FBRU8sTUFBTSxzQkFBc0IsQ0FBQyxhQUFxQixTQUF3QztBQUMvRixRQUFNLFFBQVEsQ0FBQyxLQUFLLEtBQUssR0FBRyxFQUFFLFNBQVMsV0FBVyxJQUFJLE1BQU07QUFDNUQsU0FBTztBQUFBLE1BQ0gsU0FBUyxPQUFPLGNBQWMsUUFBUSxPQUFPLFdBQVc7QUFBQTtBQUU5RDtBQUVBLE1BQU0sbUJBQW1CLENBQUMsU0FBZ0Q7QUFDeEUsU0FBTyxNQUFNLEtBQUssQ0FBQyxRQUFRLElBQUksZ0JBQWdCLG1CQUFtQixhQUFhLEdBQUcsZ0JBQzlFLG1CQUFtQjtBQUN6QjtBQUVBLE1BQU0sZUFBZSxDQUFDLFNBQWdEO0FBQ3BFLFNBQU8sTUFBTSxLQUFLLENBQUMsUUFBUSxJQUFJLGdCQUFnQixtQkFBbUIsU0FBUyxHQUFHLGdCQUMxRSxtQkFBbUI7QUFDekI7QUFFQSxNQUFNLG9CQUFvQixDQUFDLFNBQWdEO0FBQ3pFLFNBQU8sTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsbUJBQW1CLGNBQWMsR0FDOUUsZ0JBQWdCLG1CQUFtQjtBQUN6QztBQUVBLE1BQU0sbUJBQW1CLENBQUMsU0FBZ0Q7QUFDeEUsU0FBTyxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixtQkFBbUIsdUJBQXVCLEdBQ3ZGLGdCQUFnQixtQkFBbUI7QUFDekM7QUFFTyxNQUFNLGdCQUFnQixDQUFDLGVBQTRDO0FBQ3hFLFFBQU0sYUFBYTtBQUFBLElBQ2pCLGFBQWE7QUFBQSxJQUNiLGFBQWE7QUFBQSxJQUNiLE9BQU87QUFBQSxJQUNQLDBCQUEwQjtBQUFBLElBQzFCLG1CQUFtQjtBQUFBLElBQ25CLGFBQWE7QUFBQSxFQUFBO0FBR2YsU0FBTyxDQUFDLEdBQUcsVUFBVSxHQUFHLEtBQ3RCLENBQUMsR0FBZ0IsTUFBbUIsV0FBVyxFQUFFLEtBQU0sSUFBSSxXQUFXLEVBQUUsS0FBTSxDQUFDO0FBRW5GO0FBRU8sTUFBTSxhQUFhLENBQUMsY0FBa0M7QUFDM0QsVUFBUSxXQUFXLE9BQUE7QUFBQSxJQUNqQixLQUFLO0FBQ0gsYUFBTztBQUFBLFFBQ0wsTUFBTTtBQUFBLFFBQ04sTUFBTSxXQUFXLG1CQUFtQixTQUFTLFdBQVcsa0JBQWtCLENBQUMsRUFBRSxRQUFRO0FBQUEsTUFBQTtBQUFBLElBRXpGLEtBQUs7QUFDSCxhQUFPO0FBQUEsUUFDTCxNQUFNO0FBQUEsUUFDTixNQUFNLFdBQVcsa0JBQWtCLFNBQVMsV0FBVyxrQkFBa0IsQ0FBQyxFQUFFLFFBQVE7QUFBQSxNQUFBO0FBQUEsSUFFeEYsS0FBSztBQUNILGFBQU87QUFBQSxRQUNMLE1BQU07QUFBQSxRQUNOLE1BQU0sV0FBVyxrQkFBa0IsU0FBUyxXQUFXLGtCQUFrQixDQUFDLEVBQUUsUUFBUTtBQUFBLE1BQUE7QUFBQSxJQUV4RixLQUFLO0FBQ0gsYUFBTztBQUFBLFFBQ0wsTUFBTTtBQUFBLFFBQ04sTUFBTSxXQUFXLGtCQUFrQixTQUFTLFdBQVcsa0JBQWtCLENBQUMsRUFBRSxRQUFRO0FBQUEsTUFBQTtBQUFBLElBRXhGLEtBQUs7QUFDSCxhQUFPO0FBQUEsUUFDTCxNQUFNO0FBQUEsUUFDTixNQUFNLFdBQVcsa0JBQWtCLFNBQVMsV0FBVyxrQkFBa0IsQ0FBQyxFQUFFLFFBQVE7QUFBQSxNQUFBO0FBQUEsSUFFeEY7QUFDRSxhQUFPO0FBQUEsUUFDTCxNQUFNO0FBQUEsUUFDTixNQUFNLFdBQVcsa0JBQWtCLFNBQVMsV0FBVyxrQkFBa0IsQ0FBQyxFQUFFLFFBQVE7QUFBQSxNQUFBO0FBQUE7QUFHNUY7QUFFTyxNQUFNLFNBQVMsQ0FBQyxNQUFpQixvQkFBbUM7QUFDekUsUUFBTSxFQUFFLFNBQVMsS0FBQSxJQUFTLFFBQVEsQ0FBQTtBQUNsQyxRQUFNLFdBQVcsTUFBTSxPQUFPLENBQUMsUUFBUSxVQUFVLEdBQUcsQ0FBQztBQUNyRCxRQUFNLEVBQUUsZUFBZSxXQUFXLENBQUE7QUFFbEMsTUFBSSxZQUFZLGFBQWEsWUFBWTtBQUN2QyxXQUFPLEVBQUUsTUFBTSxnQkFBZ0IsTUFBTSxZQUFZLGNBQUE7QUFDbkQsTUFBSSxpQkFBaUIsUUFBUTtBQUMzQixXQUFPLEVBQUUsTUFBTSxxQkFBcUIsTUFBTSxpQkFBaUIsUUFBUSxFQUFBO0FBQ3JFLE1BQUksWUFBWTtBQUFhLFdBQU8sRUFBRSxNQUFNLGVBQWUsTUFBTSxXQUFXLGdCQUFBO0FBQzVFLE1BQUksa0JBQWtCLFFBQVE7QUFBRyxXQUFPLEVBQUUsTUFBTSxXQUFXLE1BQU0sa0JBQWtCLFFBQVEsRUFBQTtBQUMzRixNQUFJLGlCQUFpQixRQUFRO0FBQUcsV0FBTyxFQUFFLE1BQU0sWUFBWSxNQUFNLGlCQUFpQixRQUFRLEVBQUE7QUFDMUYsTUFBSSxZQUFZLFdBQVcsWUFBWTtBQUNyQyxXQUFPLEVBQUUsTUFBTSxTQUFTLE1BQU0sYUFBYSxRQUFRLEVBQUE7QUFDckQsTUFBSSxZQUFZLGFBQWE7QUFDM0IsVUFBTSxZQUFZLFNBQVMsQ0FBQyxFQUFFO0FBQzlCLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLE1BQU0sVUFBVSxjQUFjLFVBQVUsa0JBQWtCLG1CQUFtQixlQUFlO0FBQUEsSUFBQTtBQUFBO0FBSWhHLFNBQU8sQ0FBQTtBQUNUO0FBRUEsTUFBTSx1QkFBdUIsQ0FBQyxZQUF5QztBQUNyRSxRQUFNLG9CQUFvQixDQUFDLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQUk7QUFFckYsU0FBTyxRQUFRLE9BQU8sQ0FBQyxhQUFpQyxXQUFzQztBQUM1RixRQUFJO0FBQWEsYUFBTztBQUN4QixRQUFJLGtCQUFrQixTQUFTLE9BQU8sSUFBSSxHQUFHO0FBQzNDLGFBQU8sRUFBRSxHQUFHLFFBQVEsTUFBTSxLQUFBO0FBQUE7RUFDNUIsR0FDQyxNQUFTO0FBQ2Q7QUFFTyxNQUFNLGdCQUFnQixDQUFDLFlBQStCO0FBQzNELFFBQU0sZUFBZSxDQUFDLEtBQUssTUFBTSxNQUFNLE1BQU0sSUFBSTtBQUVqRCxRQUFNLGVBQWUsUUFBUSxPQUFPLENBQUMsUUFBUSxVQUFTO0FBQ3BELFdBQU8sUUFBUSxVQUFVLENBQUMsTUFBTSxFQUFFLFNBQVMsT0FBTyxJQUFJLE1BQU07QUFBQSxFQUFBLENBQzdEO0FBRUQsU0FBTyxhQUNKLE9BQU8sQ0FBQyxXQUFXLGFBQWEsU0FBUyxPQUFPLElBQUksQ0FBQyxFQUNyRCxLQUFLLENBQUMsR0FBRyxNQUFNLGFBQWEsUUFBUSxFQUFFLElBQUksSUFBSSxhQUFhLFFBQVEsRUFBRSxJQUFJLENBQUM7QUFDL0U7QUFFTyxNQUFNLGdCQUFnQixDQUFDLFlBQStCO0FBQzNELFFBQU0sb0JBQW9CLHFCQUFxQixPQUFPO0FBQ3RELFFBQU0sa0JBQWtCLGNBQWMsT0FBTztBQUU3QyxNQUFJLHNCQUFzQjtBQUFXLFdBQU87QUFDNUMsTUFBSSxDQUFDLGdCQUFnQjtBQUFRLFdBQU8sQ0FBQyxpQkFBaUI7QUFFdEQsTUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLFNBQVMsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHO0FBQ3pELFdBQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLG1CQUFtQixnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsT0FDakUsZ0JBQWdCLE1BQU0sQ0FBQyxDQUFDO0FBQUEsRUFBQTtBQUk1QixTQUFPLENBQUMsbUJBQW1CLEdBQUcsZUFBZTtBQUMvQztJQU9NLDBCQUFzQixNQUFBOzswQkFEM0IsY0FBYyxtQkFBbUIsQ0FBQzs7OztvQkFDRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUFVO0FBQUE7O0FBSWpCO0FBR0E7QUFLNUI7QUFHNEI7QUFRNUI7QUFVQTtBQVFBO0FBT0E7QUFLQTtBQUtBO0FBdEQ0Qyx5QkFBQSx5QkFKeEMsa0JBQUEsTUFBQSwwQkFBQSxHQUFzQixrQkFBQSxNQUFBLG9CQUlvQyxJQUFLO0FBR3ZCLHlCQUFBLDBCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLHFCQUFlLElBQUs7QUFLaEQseUJBQUEscUNBQUEsa0JBQUEsTUFBQSx3QkFBQSxHQUFBLGtCQUFBLE1BQUEsZ0NBQTRCLEtBQUs7QUFHTCx5QkFBQSw2QkFBQSxrQkFBQSxNQUFBLG1DQUFBLEdBQUEsa0JBQUEsTUFBQSx3QkFBcUIsSUFBSztBQVF0RCx5QkFBQSxnQ0FBQSxrQkFBQSxNQUFBLDJCQUFBLEdBQUEsa0JBQUEsTUFBQSwyQkFBdUIsS0FBSztBQVU1Qix5QkFBQSxpQ0FBQSxrQkFBQSxNQUFBLDhCQUFBLEdBQUEsa0JBQUEsTUFBQSw0QkFBd0IsS0FBSztBQVE3Qix5QkFBQSxpQ0FBQSxrQkFBQSxNQUFBLCtCQUFBLEdBQUEsa0JBQUEsTUFBQSw0QkFBd0IsS0FBSztBQU83Qix5QkFBQSxvQ0FBQSxrQkFBQSxNQUFBLCtCQUFBLEdBQUEsa0JBQUEsTUFBQSwrQkFBMEIsRUFBRTtBQUs1Qix5QkFBQSwwQ0FBQSxrQkFBQSxNQUFBLGtDQUFBLEdBQUEsa0JBQUEsTUFBQSxxQ0FBaUMsS0FBSztBQUt0Qyx5QkFBQSwyQkFBQSxrQkFBQSxNQUFBLHdDQUFBLEdBQUEsa0JBQUEsTUFBQSxzQkFBa0IsS0FBSztBQVUvQixXQUFBLFFBQUksa0JBQUEsTUFBQSx5QkFBQSxHQUFnQjtBQUVwQixXQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUFBLElBQUE7QUFBQTtBQUFBLElBbEV0QixJQUFnQixPQUFJO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFwQixJQUFnQixLQUFJLE9BQUE7QUFBQSx5QkFBQSx3QkFBQTtBQUFBLElBQUE7QUFBQTtBQUFBLElBR3BCLElBQWdCLFFBQUs7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXJCLElBQWdCLE1BQUssT0FBQTtBQUFBLHlCQUFBLHlCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFLakQsSUFBZ0IsbUJBQWdCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFoQyxJQUFnQixpQkFBZ0IsT0FBQTtBQUFBLHlCQUFBLG9DQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFHSixJQUFnQixXQUFRO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUF4QixJQUFnQixTQUFRLE9BQUE7QUFBQSx5QkFBQSw0QkFBQTtBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBUXBELElBQWdCLGNBQVc7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQTNCLElBQWdCLFlBQVcsT0FBQTtBQUFBLHlCQUFBLCtCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBVTNCLElBQWdCLGVBQVk7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQTVCLElBQWdCLGFBQVksT0FBQTtBQUFBLHlCQUFBLGdDQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFRNUIsSUFBZ0IsZUFBWTtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBNUIsSUFBZ0IsYUFBWSxPQUFBO0FBQUEseUJBQUEsZ0NBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFPNUIsSUFBZ0Isa0JBQWU7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQS9CLElBQWdCLGdCQUFlLE9BQUE7QUFBQSx5QkFBQSxtQ0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLElBSy9CLElBQWdCLHdCQUFxQjtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBckMsSUFBZ0Isc0JBQXFCLE9BQUE7QUFBQSx5QkFBQSx5Q0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLElBS3JDLElBQWdCLFNBQU07QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXRCLElBQWdCLE9BQU0sT0FBQTtBQUFBLHlCQUFBLDBCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFJdEIsSUFBVyxJQUFJLE9BQThCO0FBQzNDLFdBQUssT0FBTyxtQkFBbUIsbUJBQW1CLG1CQUFtQixZQUFZLEtBQUssQ0FBQztBQUFBLElBQUE7QUFBQSxJQUV6RixJQUFXLE1BQUc7QUFDWixhQUFPLEtBQUssUUFBUSxvQkFBSSxLQUFBO0FBQUE7SUFNUCxXQUFXLG1CQUF1QztBQUNuRSxZQUFNLFdBQVcsaUJBQWlCO0FBRWxDLFVBQUksa0JBQWtCLElBQUksYUFBYSxHQUFHO0FBQ3hDLDZCQUFxQixNQUFNLFFBQVEsQ0FBQyxLQUFLLGNBQWMsYUFBYSxJQUFJO0FBQUEsTUFBQTtBQUFBLElBQzFFO0FBQUE7QUFBQSxJQUlNLGtCQUFlO0FBQ3JCLGFBQU87QUFBQTtBQUFBLFVBRUQsS0FBSyxlQUNILHFFQUNBLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxJQVVULGVBQVk7QUFDbEIsYUFBTyxLQUFLLE1BQU0sTUFBTSxPQUFPLENBQUMsUUFBUSxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUE7QUFBQTtJQUdyRCxzQkFBbUI7QUFDekIsVUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO0FBQVMsZUFBTztBQUN4QyxZQUFNLFdBQVcsS0FBSyxhQUFBO0FBQ3RCLFlBQU0sVUFBVSxLQUFLLEtBQUssUUFBUSxTQUFTLGdCQUFnQjtBQUMzRCxZQUFNLFFBQVEsVUFDVixTQUFTLENBQUMsRUFBRSxlQUFlLHFCQUFxQixLQUNoRCxTQUFTLENBQUMsRUFBRSxlQUFlLGdCQUFnQjtBQUUvQyxhQUFPO0FBQUEsUUFDTCxNQUFNLGlCQUFpQixLQUFLLFVBQVUsT0FBTyxJQUFJLE1BQU07QUFBQSxRQUN2RDtBQUFBLE1BQUE7QUFBQTs7SUFLSSxrQkFBZTtBQUNyQixVQUFJLENBQUMsS0FBSyxLQUFLLFNBQVM7QUFBUyxlQUFPO0FBQ3hDLFlBQU0sa0JBQWtCLEtBQUssb0JBQUE7QUFDN0IsYUFBTztBQUFBO0FBQUEsK0NBRW9DLGlCQUFpQixJQUFJO0FBQUE7QUFBQSxhQUV2RCxpQkFBaUIsS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxJQU16QixjQUFjLE1BQWU7QUFDbkMsWUFBTSxFQUFFLGVBQWUsUUFBUSxDQUFBO0FBQy9CLFlBQU0sbUJBQW1CLGNBQWMsY0FBYyxVQUFVO0FBQy9ELFlBQU0sTUFBTSxPQUFPLE1BQU0sS0FBSyxVQUFVLE9BQU87QUFFL0MsYUFBTztBQUFBLFFBQ0wsS0FBSyxPQUFPLEtBQUssR0FBRyxHQUFHLFNBQVMsTUFBTTtBQUFBLFFBQ3RDLEtBQUssWUFBWSxTQUFTLFdBQVcsaUJBQWlCLENBQUMsQ0FBQyxJQUFJO0FBQUEsTUFBQTtBQUFBO0lBSXhELHNCQUFzQixNQUFlO0FBQzNDLFlBQU0sRUFBRSxTQUFTLE1BQU0sUUFBQSxJQUFZLFFBQVEsQ0FBQTtBQUMzQyxZQUFNLEVBQ0osZUFDQSxhQUNBLFdBQ0EsU0FDQSxTQUNBLFdBQ0EsV0FDQSxTQUFBLElBQ0UsV0FBVyxDQUFBO0FBRWYsWUFBTSxFQUFFLHdCQUF3QixxQkFBQSxJQUF5QixpQ0FDdkQsTUFDQSxpQkFBaUIsR0FDakIsZUFBZSxHQUNmLEtBQUssVUFBVSxTQUNmLEtBQUssWUFBWTtBQUduQixZQUFNLFdBQVcsS0FBSyxhQUFBO0FBRXRCLFlBQU0sZ0JBQWtDLFdBQVcsT0FDL0MsZ0NBQWdDLFVBQVUsSUFBSSxJQUM5QztBQUVKLFlBQU0sY0FBZ0MsU0FBUyxPQUMzQyxnQ0FBZ0MsUUFBUSxJQUFJLElBQzVDO0FBRUosWUFBTSxvQkFBb0IseUJBQ3RCLEdBQUcsdUJBQXVCLElBQUksSUFBSSx1QkFBdUIsUUFBUSxPQUNqRTtBQUVKLFlBQU0sa0JBQWtCLHVCQUNwQixHQUFHLHFCQUFxQixJQUFJLElBQUkscUJBQXFCLFFBQVEsT0FDN0Q7QUFFSixZQUFNLG9CQUFvQixnQkFDdEIsR0FBRyxjQUFjLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBSyxPQUFPLGVBQWUsT0FBTyxDQUFDLE9BQzNFO0FBRUosWUFBTSx1QkFBdUIsTUFBYTtBQUN4QyxZQUFJLENBQUMsV0FBVyxlQUFlO0FBQzdCLGlCQUFPO0FBQUEsUUFBQTtBQUlULGNBQU0sb0JBQW9CLFdBQVcsY0FBYyxHQUFHLFFBQVEsS0FBSyxVQUFVLE9BQU8sQ0FBQyxNQUFNO0FBQzNGLGVBQU8sR0FBRyxpQkFBaUIsR0FDekIsS0FBSyx1QkFBdUIsSUFDOUIsSUFBSSxXQUFXLGFBQWE7QUFBQSxNQUFBO0FBRzlCLFlBQU0sdUJBQ0osV0FBVyxRQUFRLGNBQ2YscUJBQXFCLFFBQVEsWUFBWSxhQUFhLEtBQ3RELEdBQUcscUJBQXFCLFFBQVEsWUFBWSxhQUFhLEVBQUUsS0FBSyxVQUFVLE9BQU8sQ0FBQyxPQUNsRjtBQUVOLFlBQU0scUJBQXFCLFNBQVMsMEJBQ2hDLEdBQUcsUUFBUSx1QkFBdUIsSUFBSSxRQUFRLFFBQVEsRUFBRSxPQUN4RDtBQUVKLFlBQU0sZ0JBQWdCLEdBQUcsY0FBYyxLQUFLLFVBQVUsT0FBTyxDQUFDLElBQUksU0FBUztBQUUzRSxZQUFNLFNBQVMsS0FBSyxjQUFjLElBQUk7QUFDdEMsWUFBTSxVQUFVLFFBQVEsS0FBSyxPQUN6QixHQUFHLGlCQUFpQixLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQUssUUFBUSxLQUFLLElBQUksT0FDakU7QUFDSixZQUFNLFVBQVUsUUFBUSxLQUFLLE9BQ3pCLEdBQUcsaUJBQWlCLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBSyxRQUFRLEtBQUssSUFBSSxPQUNqRTtBQUVKLFlBQU0sZUFBZSxLQUFLLFdBQVcsR0FBRyxLQUFLLFNBQVMsSUFBSSxPQUFPO0FBRWpFLFlBQU0sWUFBWSxHQUFHLEtBQUssT0FBTyxhQUFhLGVBQWUsS0FBSyxVQUFVLE9BQU8sSUFBSSxFQUFFLElBQ3ZGLEtBQUssT0FBTyxRQUFRLEtBQUssT0FBTyxTQUMzQixLQUFLLE9BQU8sUUFBUSxNQUFNLE9BQU8sS0FBSyxPQUFPLFNBQVMsTUFBTSxPQUM3RCxFQUNOO0FBRUEsWUFBTSxxQkFDSixTQUFTLFNBQVMsSUFDZCxHQUFHLFNBQVMsU0FBUyxDQUFDLElBQUksdUJBQXVCLEtBQUssVUFBVSxPQUFPLENBQUMsT0FDeEUsU0FBUyxTQUFTLElBQ2hCLEdBQUcsU0FBUyxTQUFTLENBQUMsSUFBSSxzQkFBc0IsS0FBSyxVQUFVLE9BQU8sQ0FBQyxPQUN2RTtBQUVSLFlBQU0sa0JBQWtCLGNBQ3BCLEdBQUcsWUFBWSxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQUssT0FBTyxhQUFhLE9BQU8sQ0FBQyxPQUN2RTtBQUVKLFVBQUksZ0JBQXdCO0FBQzVCLFVBQUksV0FBVztBQUNiLFlBQUksVUFBVSxjQUFjLFVBQVUsZUFBZSxXQUFXO0FBQzlELDJCQUFpQixHQUFHLFVBQVUsTUFBTSxLQUFLLFVBQVUsT0FBTyxDQUFDLElBRXZELGNBQWMsVUFBVSxXQUFXLGFBQTZCLElBSTlELEtBQUssVUFBVSxPQUFPLENBQzVCO0FBQUEsUUFBQTtBQUVGLFlBQUksVUFBVSxlQUFlLFVBQVUsZ0JBQWdCLFdBQVc7QUFDaEUsMkJBQWlCLElBQUksVUFBVSxPQUFPLEtBQUssVUFBVSxPQUFPLENBQUMsSUFFekQsY0FBYyxVQUFVLFlBQVksYUFBNkIsSUFJL0QsS0FBSyxVQUFVLE9BQU8sQ0FDNUI7QUFBQSxRQUFBO0FBQUEsTUFDRjtBQUdGLFlBQU0sYUFDSixXQUNBLGNBQWMsT0FBTyxFQUFFLFVBQ3ZCLGNBQWMsT0FBTyxHQUNqQixJQUFJLENBQUMsUUFBUSxVQUFVLFFBQVEsS0FBSyxPQUFPLE1BQU0sUUFBUSxFQUMxRCxLQUFLLElBQUksSUFBSTtBQUVsQixZQUFNLGlCQUFpQixhQUNuQixHQUFHLGdCQUFnQixLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQUssVUFBVSxLQUN6RDtBQUVKLFlBQU0sZUFDSixDQUFDLENBQUMsWUFBWSxXQUFXLElBQ3JCLEdBQUcsaUJBQWlCLEtBQUssVUFBVSxPQUFPLENBQUMsSUFDekMsZUFBZSxVQUFVLEtBQUssVUFBVSxPQUFPLEVBQUUsSUFDbkQsT0FDQTtBQUVOLGFBQU87QUFBQSxRQUNMO0FBQUEsUUFDQTtBQUFBLFFBQ0EscUJBQUE7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBLFVBQVUsS0FBSztBQUFBLFFBQ2Y7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQUEsRUFFQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFDcEIsT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUMvQixLQUFLLEdBQUc7QUFBQSxJQUFBO0FBQUEsSUFHTSxTQUFNO0FBQ3ZCLFVBQUksS0FBSyxhQUFhO0FBQ3BCLGVBQU8sS0FBSyxnQkFBQTtBQUFBLE1BQWU7QUFHN0IsWUFBTSxFQUFFLE1BQU0sSUFBSSxTQUFTLFlBQVksS0FBSyxRQUFRLENBQUE7QUFFcEQsWUFBTSxFQUNKLFNBQ0EsV0FDQSxlQUNBLFdBQ0EsU0FDQSxhQUNBLFdBQ0EsU0FBQSxJQUNFLFdBQVcsQ0FBQTtBQUVmLFlBQU0sU0FBUyxLQUFLLGNBQWMsS0FBSyxJQUFJO0FBQzNDLFlBQU0sWUFBWSxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxPQUFPO0FBRTNDLFlBQU0sbUJBQW1CLFdBQVcsY0FBYyxPQUFPO0FBRXpELFlBQU0sY0FBYyxXQUFXLGVBQWUsVUFBVSxLQUFLLFVBQVUsT0FBTyxJQUFJO0FBRWxGLGFBQU87QUFBQSw4QkFDbUIsRUFBRTtBQUFBO0FBQUEsb0JBRVosS0FBSyxNQUFNO0FBQUEsMEJBQ0wsS0FBSyx3QkFBd0IsU0FBUyxPQUFPO0FBQUE7QUFBQSxZQUUzRCxLQUFLLGtCQUFrQixLQUFLLGtCQUFrQixLQUFLLHNCQUFzQixLQUFLLElBQUksQ0FBQztBQUFBO0FBQUEsVUFFckYsS0FBSyxlQUNILHFFQUNBLE9BQU87QUFBQSxVQUNULEtBQUssU0FBUyxDQUFDLEtBQUssZUFDbEIsNkJBQTZCLEtBQUssTUFBTSxhQUFhLGFBQWEsT0FBTztBQUFBLGdCQUNyRSxLQUFLLE1BQU0sYUFDVDtBQUFBO0FBQUEseUJBRU8sZUFBZSxLQUFLLFVBQVUsT0FBTyxDQUFDO0FBQUE7QUFBQSw2QkFHN0MsT0FBTztBQUFBLGdCQUNULEtBQUssTUFBTSxPQUFPLGFBQWEsS0FBSyxNQUFNLElBQUksWUFBWSxPQUFPO0FBQUEsZ0JBQ2pFLEtBQUssTUFBTSxRQUFRLGFBQWEsS0FBSyxNQUFNLEtBQUssWUFBWSxPQUFPO0FBQUEsaUNBRXZFLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFJSCxTQUFTLDhCQUNYO0FBQUE7QUFBQTtBQUFBLGdDQUdrQixRQUFRLDBCQUEwQjtBQUFBO0FBQUE7QUFBQSxvQkFHOUMsV0FDRixRQUFRLGVBQ1IscUJBQXFCLFFBQVEsWUFBWSxhQUFhLEtBQ3RELHFCQUFxQixRQUFRLFlBQVksWUFBQSxDQUFhLEVBQUUsS0FBSyxVQUFVLE9BQU8sQ0FBQztBQUFBO0FBQUE7QUFBQSxzQkFHM0U7QUFBQSxnQkFDTixZQUNELFFBQVEsd0JBQ0wsa0JBQWtCLFFBQVEsdUJBQXVCLFFBQVEsSUFBSSxJQUM3RCxRQUFRLDJCQUNSLG9CQUFvQixRQUFRLHlCQUF5QixTQUFTLElBQUksRUFBRTtBQUFBO0FBQUEsY0FFeEUsWUFDRSxVQUFVLEdBQUcsY0FBYyxLQUFLLFVBQVUsT0FBTyxDQUFDLElBQUksU0FBUyxFQUFFLFNBQ2pFLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQSxvQkFJSCxJQUFJO0FBQUEsNkJBQ0ssV0FBVyxJQUFJO0FBQUEsMkJBQ2pCLFNBQVMsSUFBSTtBQUFBLDZCQUNYLGFBQWE7QUFBQSwyQkFDZixXQUFXO0FBQUEsaUNBQ0wsS0FBSyxnQkFBZ0I7QUFBQSw2QkFDekIsS0FBSyxZQUFZO0FBQUEsbUJBQzNCLEtBQUssR0FBRztBQUFBO0FBQUE7QUFBQSxjQUdiLFdBQVcsV0FBVyxnQkFDcEI7QUFBQSwwQkFDVSxXQUFXLGNBQWMscUNBQXFDLE9BQU87QUFBQTtBQUFBO0FBQUEsc0JBR3pFLEdBQUcsY0FBYyxLQUFLLFVBQVUsT0FBTyxDQUFDLElBQ3hDLFdBQVcsY0FBYyxRQUFRLEtBQUssVUFBVSxPQUFPLElBQUksRUFDN0QsRUFBRTtBQUFBO0FBQUE7QUFBQSxvQkFHRixLQUFLLGdCQUFBLENBQWlCLElBQUksV0FBVyxhQUFhO0FBQUEsMkJBRXRELE9BQU87QUFBQSxjQUNSLFdBQVcsY0FBYyxXQUFXLGVBQWUsYUFDckQsV0FBVyxlQUFlLFVBQVUsZ0JBQWdCLFlBQ2pEO0FBQUEseUNBQ3lCLFdBQVcsWUFBWSxZQUFBLENBQWE7QUFBQSwwQ0FDbkMsV0FBVyxhQUFhLFlBQUEsQ0FBYTtBQUFBLCtDQUUvRCxPQUFPO0FBQUEsY0FDUixvQkFBb0IsaUJBQWlCLFVBQVcsS0FBSyxXQUNwRDtBQUFBLG9CQUNJLGtCQUFrQixJQUFJLENBQUMsUUFBUSxVQUMvQixRQUFRLElBQ0o7QUFBQTtBQUFBO0FBQUEsbUNBR1csUUFBUSxPQUFPLE1BQU0sWUFBQSxDQUFhO0FBQUE7QUFBQSxpRUFFSixPQUFPLE1BQU0sUUFBUTtBQUFBLGlDQUU5RCxPQUFPLENBQ1o7QUFBQSxvQkFDQyxLQUFLLFdBQ0g7QUFBQTtBQUFBO0FBQUEsaUNBR1csS0FBSyxVQUFVLElBQUk7QUFBQSx1Q0FDYixLQUFLLFVBQVUsSUFBSTtBQUFBO0FBQUE7QUFBQSwrQkFJcEMsT0FBTztBQUFBLHlCQUViLE9BQU87QUFBQSxjQUNULFlBQVksV0FBVyxJQUNyQjtBQUFBO0FBQUEsc0JBRU0sR0FBRyxpQkFBaUIsS0FBSyxVQUFVLE9BQU8sQ0FBQyxJQUFJLFlBQWEsSUFBSSxFQUFFO0FBQUE7QUFBQSw2Q0FFM0MsWUFBYSxLQUFLO0FBQUEsMkJBRS9DLE9BQU87QUFBQSxjQUNULGNBQWMsT0FBTyxPQUFPLE9BQU8sT0FDakM7QUFBQSxvQ0FDb0IsT0FBTyxPQUFPLE9BQU8sS0FBTSxJQUFJO0FBQUEsMERBQ1QsT0FBTyxPQUFPLE9BQU8sS0FBTSxJQUFJO0FBQUEsMkJBRXpFLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxLQXhiTyx3Q0FHQSx5Q0FLNUIsb0RBRzRCLDRDQVE1QiwrQ0FVQSxnREFRQSxnREFPQSxtREFLQSx5REFLQTs7QUF0REMsdUJBQUEsQ0FBQSxTQUFTLEVBQUUsTUFBTSxPQUFBLENBQVEsQ0FBQztBQUcxQix3QkFBQSxDQUFBLFNBQVMsRUFBRSxNQUFNLE9BQUEsQ0FBUSxDQUFDO0FBRzFCLG1DQUFBLENBQUEsYUFDQSxTQUFTLEVBQUUsV0FBVyxxQkFBcUIsU0FBUyxNQUFNLE1BQU0sUUFBQSxDQUFTLENBQUM7QUFJMUUsMkJBQUEsQ0FBQSxTQUFTLEVBQUUsTUFBTSxPQUFBLENBQVEsQ0FBQztBQU0xQiw4QkFBQSxDQUFBLFVBQUEsR0FDQSxTQUFTLEVBQUUsV0FBVyxnQkFBZ0IsTUFBTSxRQUFBLENBQVMsQ0FBQztBQVN0RCwrQkFBQSxDQUFBLFVBQUEsR0FDQSxTQUFTLEVBQUUsV0FBVyxpQkFBaUIsTUFBTSxRQUFBLENBQVMsQ0FBQztBQU92RCwrQkFBQSxDQUFBLFVBQUEsR0FDQSxTQUFTLEVBQUUsV0FBVyxpQkFBaUIsTUFBTSxRQUFBLENBQVMsQ0FBQzttQ0FNdkQsYUFDQSxTQUFTLEVBQUUsV0FBVyxvQkFBQSxDQUFxQixDQUFDO0FBSTVDLHdDQUFBLENBQUEsVUFBQSxHQUNBLFNBQVMsRUFBRSxXQUFXLDBCQUEwQixNQUFNLFFBQUEsQ0FBUyxDQUFDOzBCQUloRSxhQUNBLFNBQVMsRUFBRSxNQUFNLFFBQUEsQ0FBUyxDQUFDO0FBSTNCLDBCQUFBLENBQUEsVUFBVTtBQXpEaUIsaUJBQUEsSUFBQSxNQUFBLGtCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsUUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxVQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0IsTUFBSSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBSixPQUFJO0FBQUEsSUFBQSxLQUFBLFVBQUEsYUFBQSxvQkFBQSx1QkFBQTtBQUdwQixpQkFBQSxJQUFBLE1BQUEsbUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxTQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLFdBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixPQUFLLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFMLFFBQUs7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLHFCQUFBLHdCQUFBO0FBS2pELGlCQUFBLElBQUEsTUFBQSw4QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLG9CQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLHNCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0Isa0JBQWdCLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFoQixtQkFBZ0I7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLGdDQUFBLG1DQUFBO0FBR0osaUJBQUEsSUFBQSxNQUFBLHNCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsWUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxjQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0IsVUFBUSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBUixXQUFRO0FBQUEsSUFBQSxLQUFBLFVBQUEsYUFBQSx3QkFBQSwyQkFBQTtBQVFwRCxpQkFBQSxJQUFBLE1BQUEseUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxlQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGlCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0IsYUFBVyxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBWCxjQUFXO0FBQUEsSUFBQSxLQUFBLFVBQUEsYUFBQSwyQkFBQSw4QkFBQTtBQVUzQixpQkFBQSxJQUFBLE1BQUEsMEJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxnQkFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxrQkFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQWdCLGNBQVksS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVosZUFBWTtBQUFBLElBQUEsS0FBQSxVQUFBLGFBQUEsNEJBQUEsK0JBQUE7QUFRNUIsaUJBQUEsSUFBQSxNQUFBLDBCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsZ0JBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsa0JBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixjQUFZLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFaLGVBQVk7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLDRCQUFBLCtCQUFBO0FBTzVCLGlCQUFBLElBQUEsTUFBQSw2QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLG1CQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLHFCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0IsaUJBQWUsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQWYsa0JBQWU7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLCtCQUFBLGtDQUFBO0FBSy9CLGlCQUFBLElBQUEsTUFBQSxtQ0FBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLHlCQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLDJCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0IsdUJBQXFCLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFyQix3QkFBcUI7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLHFDQUFBLHdDQUFBO0FBS3JDLGlCQUFBLElBQUEsTUFBQSxvQkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLFVBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsWUFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQWdCLFFBQU0sS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQU4sU0FBTTtBQUFBLElBQUEsS0FBQSxVQUFBLGFBQUEsc0JBQUEseUJBQUE7QUFJdEIsaUJBQUEsSUFBQSxNQUFBLHFCQUFBLEVBQUEsTUFBQSxVQUFBLE1BQUEsT0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxTQUFBLEtBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVcsTUFBRztBQUFBLElBQUEsS0FBQSxVQUFBLGFBQUEsTUFBQSwwQkFBQTtBQTlEaEIsaUJBQUEsTUFBQSxtQkFBQSxFQUFBLE9BQUEsV0FBQSxHQUFBLGtCQUFBLEVBQUEsTUFBQSxTQUFBLE1BQUEsV0FBQSxNQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsdUJBQUE7OztRQUN5QixHQUFBLFNBQXlCLE9BRDVDLGtCQUFBLFlBQUEsdUJBQUEsR0FBdUI7OzsifQ==
823
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvdGltZXRhYmxlLXJvdy90aW1ldGFibGUtcm93LmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGRlZmF1bHREYXRlQWRhcHRlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kb20uanMnO1xuaW1wb3J0IHtcbiAgaTE4bkFycml2YWwsXG4gIGkxOG5DbGFzcyxcbiAgaTE4bkRlcGFydHVyZSxcbiAgaTE4bkRpcmVjdGlvbixcbiAgaTE4bkZyb21QbGF0Zm9ybSxcbiAgaTE4bk1lYW5zT2ZUcmFuc3BvcnQsXG4gIGkxOG5OZXcsXG4gIGkxOG5PY2N1cGFuY3ksXG4gIGkxOG5SZWFsVGltZUluZm8sXG4gIGkxOG5TdXBlcnNhdmVyLFxuICBpMThuVHJhbnNmZXJQcm9jZWR1cmUsXG4gIGkxOG5UcmFuc2ZlclByb2NlZHVyZXMsXG4gIGkxOG5UcmF2ZWxoaW50cyxcbiAgaTE4blRyaXBEdXJhdGlvbixcbiAgaTE4blRyaXBRdWF5Q2hhbmdlLFxufSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPY2N1cGFuY3kgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGR1cmF0aW9uVG9UaW1lLCByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nIH0gZnJvbSAnLi4vY29yZS9kYXRldGltZS5qcyc7XG5pbXBvcnQgdHlwZSB7IElUcmlwSXRlbSwgTm90aWNlLCBQdFJpZGVMZWcsIFB0U2l0dWF0aW9uIH0gZnJvbSAnLi4vY29yZS90aW1ldGFibGUuanMnO1xuaW1wb3J0IHsgZ2V0RGVwYXJ0dXJlQXJyaXZhbFRpbWVBdHRyaWJ1dGUsIGlzUmlkZUxlZyB9IGZyb20gJy4uL2NvcmUvdGltZXRhYmxlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdGltZXRhYmxlLXJvdy5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NhcmQuanMnO1xuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9pY29uLmpzJztcbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvdGltZXRhYmxlLW9jY3VwYW5jeS5qcyc7XG5pbXBvcnQgJy4uL3BlYXJsLWNoYWluLXRpbWUuanMnO1xuXG4vKiogSGltQ3VzIGludGVyZmFjZSBmb3IgbWFwcGVkIGljb24gbmFtZSBhbmQgdGV4dCAqL1xuZXhwb3J0IGludGVyZmFjZSBIaW1DdXMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKiogQm9hcmRpbmcgaWNvbiBpbnRlcmZhY2UgZm9yIG1hcHBlZCBpY29uIG5hbWUgYW5kIHRleHQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9hcmRpbmcge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmljZSB7XG4gIHByaWNlPzogc3RyaW5nO1xuICB0ZXh0Pzogc3RyaW5nO1xuICBpc0Rpc2NvdW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHJlbmRlckljb25Qcm9kdWN0ID0gKGljb246IHN0cmluZywgbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgPT4ge1xuICByZXR1cm4gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnRcIj5cbiAgICA8c2JiLWljb24gbmFtZT0ke2ljb259Pjwvc2JiLWljb24+XG4gICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtuYW1lfTwvc3Bhbj5cbiAgPC9zcGFuPmA7XG59O1xuXG5leHBvcnQgY29uc3QgcmVuZGVyU3RyaW5nUHJvZHVjdCA9ICh2ZWhpY2xlTmFtZTogc3RyaW5nLCBsaW5lPzogc3RyaW5nIHwgbnVsbCk6IFRlbXBsYXRlUmVzdWx0ID0+IHtcbiAgY29uc3Qgc3BhY2UgPSBbJ00nLCAnQicsICdUJ10uaW5jbHVkZXModmVoaWNsZU5hbWUpID8gJyAnIDogJyc7XG4gIHJldHVybiBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXRyYW5zcG9ydG51bWJlclwiPlxuICAgICR7bGluZSAhPT0gbnVsbCA/IHZlaGljbGVOYW1lICsgc3BhY2UgKyBsaW5lIDogdmVoaWNsZU5hbWV9XG4gIDwvc3Bhbj5gO1xufTtcblxuY29uc3QgZ2V0UmVhY2hhYmxlVGV4dCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiBsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWFjaGFibGVUZXh0KT8uc2VydmljZUpvdXJuZXlcbiAgICA/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWFjaGFibGVUZXh0O1xufTtcblxuY29uc3QgZ2V0RGVsYXlUZXh0ID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+IGxlZy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LmRlbGF5VGV4dCk/LnNlcnZpY2VKb3VybmV5XG4gICAgPy5zZXJ2aWNlQWx0ZXJhdGlvbj8uZGVsYXlUZXh0O1xufTtcblxuY29uc3QgZ2V0UmVkaXJlY3RlZFRleHQgPSAobGVnczogUHRSaWRlTGVnW10pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGxlZ3M/LmZpbmQoKGxlZykgPT4gISFsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWRpcmVjdGVkVGV4dClcbiAgICA/LnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVkaXJlY3RlZFRleHQ7XG59O1xuXG5jb25zdCBnZXRVbnBsYW5uZWRTdG9wID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+ICEhbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8udW5wbGFubmVkU3RvcFBvaW50c1RleHQpXG4gICAgPy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnVucGxhbm5lZFN0b3BQb2ludHNUZXh0O1xufTtcblxuZXhwb3J0IGNvbnN0IHNvcnRTaXR1YXRpb24gPSAoc2l0dWF0aW9uczogUHRTaXR1YXRpb25bXSk6IFB0U2l0dWF0aW9uW10gPT4ge1xuICBjb25zdCBwcmlvcml0aWVzID0ge1xuICAgIERJU1RVUkJBTkNFOiAwLFxuICAgIElORk9STUFUSU9OOiAxLFxuICAgIERFTEFZOiAyLFxuICAgIFRSQUlOX1JFUExBQ0VNRU5UX0JZX0JVUzogMyxcbiAgICBDT05TVFJVQ1RJT05fU0lURTogNCxcbiAgICBFTkRfTUVTU0FHRTogNSxcbiAgfTtcblxuICByZXR1cm4gWy4uLnNpdHVhdGlvbnNdPy5zb3J0KFxuICAgIChhOiBQdFNpdHVhdGlvbiwgYjogUHRTaXR1YXRpb24pID0+IHByaW9yaXRpZXNbYS5jYXVzZSFdIC0gcHJpb3JpdGllc1tiLmNhdXNlIV0sXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGltSWNvbiA9IChzaXR1YXRpb246IFB0U2l0dWF0aW9uKTogSGltQ3VzID0+IHtcbiAgc3dpdGNoIChzaXR1YXRpb24/LmNhdXNlKSB7XG4gICAgY2FzZSAnRElTVFVSQkFOQ0UnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ2Rpc3J1cHRpb24nLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzPy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ0lORk9STUFUSU9OJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdpbmZvJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ0RFTEFZJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdkZWxheScsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdUUkFJTl9SRVBMQUNFTUVOVF9CWV9CVVMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ3JlcGxhY2VtZW50YnVzJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ0NPTlNUUlVDVElPTl9TSVRFJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdjb25zdHJ1Y3Rpb24nLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdpbmZvJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q3VzID0gKHRyaXA6IElUcmlwSXRlbSwgY3VycmVudExhbmd1YWdlOiBzdHJpbmcpOiBIaW1DdXMgPT4ge1xuICBjb25zdCB7IHN1bW1hcnksIGxlZ3MgfSA9IHRyaXAgfHwge307XG4gIGNvbnN0IHJpZGVMZWdzID0gbGVncz8uZmlsdGVyKChsZWcpID0+IGlzUmlkZUxlZyhsZWcpKSBhcyBQdFJpZGVMZWdbXTtcbiAgY29uc3QgeyB0cmlwU3RhdHVzIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gIGlmICh0cmlwU3RhdHVzPy5jYW5jZWxsZWQgfHwgdHJpcFN0YXR1cz8ucGFydGlhbGx5Q2FuY2VsbGVkKVxuICAgIHJldHVybiB7IG5hbWU6ICdjYW5jZWxsYXRpb24nLCB0ZXh0OiB0cmlwU3RhdHVzPy5jYW5jZWxsZWRUZXh0IH07XG4gIGlmIChnZXRSZWFjaGFibGVUZXh0KHJpZGVMZWdzKSlcbiAgICByZXR1cm4geyBuYW1lOiAnbWlzc2VkLWNvbm5lY3Rpb24nLCB0ZXh0OiBnZXRSZWFjaGFibGVUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAodHJpcFN0YXR1cz8uYWx0ZXJuYXRpdmUpIHJldHVybiB7IG5hbWU6ICdhbHRlcm5hdGl2ZScsIHRleHQ6IHRyaXBTdGF0dXMuYWx0ZXJuYXRpdmVUZXh0IH07XG4gIGlmIChnZXRSZWRpcmVjdGVkVGV4dChyaWRlTGVncykpIHJldHVybiB7IG5hbWU6ICdyZXJvdXRlJywgdGV4dDogZ2V0UmVkaXJlY3RlZFRleHQocmlkZUxlZ3MpIH07XG4gIGlmIChnZXRVbnBsYW5uZWRTdG9wKHJpZGVMZWdzKSkgcmV0dXJuIHsgbmFtZTogJ2FkZC1zdG9wJywgdGV4dDogZ2V0VW5wbGFubmVkU3RvcChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LmRlbGF5ZWQgfHwgdHJpcFN0YXR1cz8uZGVsYXllZFVua25vd24pXG4gICAgcmV0dXJuIHsgbmFtZTogJ2RlbGF5JywgdGV4dDogZ2V0RGVsYXlUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAodHJpcFN0YXR1cz8ucXVheUNoYW5nZWQpIHtcbiAgICBjb25zdCBkZXBhcnR1cmUgPSByaWRlTGVnc1swXS5kZXBhcnR1cmU7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdwbGF0Zm9ybS1jaGFuZ2UnLFxuICAgICAgdGV4dDogZGVwYXJ0dXJlLnF1YXlDaGFuZ2VkID8gZGVwYXJ0dXJlLnF1YXlDaGFuZ2VkVGV4dCA6IGkxOG5UcmlwUXVheUNoYW5nZVtjdXJyZW50TGFuZ3VhZ2VdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge30gYXMgSGltQ3VzO1xufTtcblxuY29uc3QgZmluZEFuZFJlcGxhY2VOb3RpY2UgPSAobm90aWNlczogTm90aWNlW10pOiBOb3RpY2UgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCByZXNlcnZhdGlvbk5vdGljZSA9IFsnUlInLCAnUksnLCAnUkMnLCAnUkwnLCAnUk0nLCAnUlMnLCAnUlUnLCAnWFAnLCAnWFInLCAnWFQnXTtcblxuICByZXR1cm4gbm90aWNlcy5yZWR1Y2UoKGZvdW5kTm90aWNlOiBOb3RpY2UgfCB1bmRlZmluZWQsIG5vdGljZTogTm90aWNlKTogTm90aWNlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoZm91bmROb3RpY2UpIHJldHVybiBmb3VuZE5vdGljZTtcbiAgICBpZiAocmVzZXJ2YXRpb25Ob3RpY2UuaW5jbHVkZXMobm90aWNlLm5hbWUpKSB7XG4gICAgICByZXR1cm4geyAuLi5ub3RpY2UsIG5hbWU6ICdSUicgfSBhcyBOb3RpY2U7XG4gICAgfVxuICB9LCB1bmRlZmluZWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlck5vdGljZXMgPSAobm90aWNlczogTm90aWNlW10pOiBOb3RpY2VbXSA9PiB7XG4gIGNvbnN0IGFsbG93ZWROYW1lcyA9IFsnWicsICdTQicsICdTWicsICdWUicsICdURyddO1xuXG4gIGNvbnN0IGZpbHRlck5vdGljZSA9IG5vdGljZXMuZmlsdGVyKChub3RpY2UsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIG5vdGljZXMuZmluZEluZGV4KChuKSA9PiBuLm5hbWUgPT09IG5vdGljZS5uYW1lKSA9PT0gaW5kZXg7XG4gIH0pO1xuXG4gIHJldHVybiBmaWx0ZXJOb3RpY2VcbiAgICAuZmlsdGVyKChub3RpY2UpID0+IGFsbG93ZWROYW1lcy5pbmNsdWRlcyhub3RpY2UubmFtZSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGFsbG93ZWROYW1lcy5pbmRleE9mKGEubmFtZSkgLSBhbGxvd2VkTmFtZXMuaW5kZXhPZihiLm5hbWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVOb3RpY2VzID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlW10gPT4ge1xuICBjb25zdCByZXNlcnZhdGlvbk5vdGljZSA9IGZpbmRBbmRSZXBsYWNlTm90aWNlKG5vdGljZXMpO1xuICBjb25zdCBmaWx0ZXJlZE5vdGljZXMgPSBmaWx0ZXJOb3RpY2VzKG5vdGljZXMpO1xuXG4gIGlmIChyZXNlcnZhdGlvbk5vdGljZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmlsdGVyZWROb3RpY2VzO1xuICBpZiAoIWZpbHRlcmVkTm90aWNlcy5sZW5ndGgpIHJldHVybiBbcmVzZXJ2YXRpb25Ob3RpY2VdO1xuXG4gIGlmIChmaWx0ZXJlZE5vdGljZXNbMF0ubmFtZSA9PT0gJ1onICYmIGZpbHRlcmVkTm90aWNlc1sxXSkge1xuICAgIHJldHVybiBbZmlsdGVyZWROb3RpY2VzWzBdLCByZXNlcnZhdGlvbk5vdGljZSwgZmlsdGVyZWROb3RpY2VzWzFdXS5jb25jYXQoXG4gICAgICBmaWx0ZXJlZE5vdGljZXMuc2xpY2UoMiksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBbcmVzZXJ2YXRpb25Ob3RpY2UsIC4uLmZpbHRlcmVkTm90aWNlc107XG59O1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0cmlwLCBhY3RpbmcgYXMgYSBjb250YWluZXIgZm9yIGFsbCB0aGUgYHNiYi10aW1ldGFibGUtKmAgY29tcG9uZW50cy5cbiAqICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdGltZXRhYmxlLXJvdycpXG5jbGFzcyBTYmJUaW1ldGFibGVSb3dFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBUaGUgdHJpcCBQcm9wLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIGFjY2Vzc29yIHRyaXA6IElUcmlwSXRlbSA9IG51bGwhO1xuXG4gIC8qKiBUaGUgcHJpY2UgUHJvcCwgd2hpY2ggY29uc2lzdHMgb2YgdGhlIGRhdGEgZm9yIHRoZSBiYWRnZS4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogT2JqZWN0IH0pIHB1YmxpYyBhY2Nlc3NvciBwcmljZTogUHJpY2UgPSBudWxsITtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgc2JiLXBlYXJsLWNoYWluIGNvbXBvbmVudCAtIGlmIHRydWUgdGhlIHBvc2l0aW9uIHdvbid0IGJlIGFuaW1hdGVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGlzYWJsZS1hbmltYXRpb24nLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNhYmxlQW5pbWF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIG5vdGljZXMgc2VjdGlvbiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIGFjY2Vzc29yIGJvYXJkaW5nOiBCb2FyZGluZyA9IG51bGwhO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9hZGluZyBzdGF0ZSAtXG4gICAqIHdoZW4gdGhpcyBpcyB0cnVlIGl0IHdpbGwgYmUgcmVuZGVyIHNrZWxldG9uIHdpdGggYW4gaWRsaW5nIGFuaW1hdGlvblxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvYWRpbmctdHJpcCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGxvYWRpbmdUcmlwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBGb290cGF0aCBhdHRyaWJ1dGUgZm9yIHJlbmRlcmluZyBkaWZmZXJlbnQgaWNvbnNcbiAgICogdHJ1ZTogcmVuZGVyIGExMXktaWNvblxuICAgKiBmYWxzZTogcmVuZGVyIHdhbGstaWNvblxuICAgKiBkZWZhdWx0OiByZW5kZXIgd2Fsay1pY29uXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYTExeS1mb290cGF0aCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGExMXlGb290cGF0aDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9hZGluZyBzdGF0ZSAtXG4gICAqIHdoZW4gdGhpcyBpcyB0cnVlIGl0IHdpbGwgYmUgcmVuZGVyIHNrZWxldG9uIHdpdGggYW4gaWRsaW5nIGFuaW1hdGlvblxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvYWRpbmctcHJpY2UnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsb2FkaW5nUHJpY2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSGlkZGVuIGxhYmVsIGZvciB0aGUgY2FyZCBhY3Rpb24uIEl0IG92ZXJyaWRlcyB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYWNjZXNzaWJpbGl0eSB0ZXh0IGZvciB0aGUgY29tcG9uZW50LiBVc2UgdGhpcyBwcm9wIHRvIHByb3ZpZGUgY3VzdG9tIGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gZm9yIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY2FyZC1hY3Rpb24tbGFiZWwnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjYXJkQWN0aW9uTGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSBzYmItY2FyZCBjb21wb25lbnQgYXMgYXJpYS1leHBhbmRlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktZXhwYW5kZWQnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5RXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hlbiB0aGlzIHByb3AgaXMgdHJ1ZSB0aGUgc2JiLWNhcmQgd2lsbCBiZSBpbiB0aGUgYWN0aXZlIHN0YXRlLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgY29uZmlndXJlZCBkYXRlIHdoaWNoIGFjdHMgYXMgdGhlIGN1cnJlbnQgZGF0ZSBpbnN0ZWFkIG9mIHRoZSByZWFsIGN1cnJlbnQgZGF0ZS5cbiAgICogT25seSByZWNvbW1lbmRlZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbm93KHZhbHVlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuX25vdyA9IGRlZmF1bHREYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoZGVmYXVsdERhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gIH1cbiAgcHVibGljIGdldCBub3coKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX25vdyA/PyBuZXcgRGF0ZSgpO1xuICB9XG4gIHByaXZhdGUgX25vdzogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2xvYWRpbmdUcmlwJykpIHtcbiAgICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMsICdyb2xlJywgIXRoaXMubG9hZGluZ1RyaXAgPyAncm93Z3JvdXAnIDogbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBza2VsZXRvbiByZW5kZXIgZnVuY3Rpb24gZm9yIHRoZSBsb2FkaW5nIHN0YXRlICovXG4gIHByaXZhdGUgX3JlbmRlclNrZWxldG9uKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItY2FyZCBzaXplPVwibFwiIGNsYXNzPVwic2JiLWxvYWRpbmdcIj5cbiAgICAgICAgJHt0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY2xhc3M9XCJzYmItbG9hZGluZ19fYmFkZ2VcIj48L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fd3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fcm93XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1sb2FkaW5nX19yb3dcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3Jvd1wiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2JiLWNhcmQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJpZGVMZWdzKCk6IFB0UmlkZUxlZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50cmlwPy5sZWdzPy5maWx0ZXIoKGxlZykgPT4gaXNSaWRlTGVnKGxlZykpID8/IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UXVheVR5cGVTdHJpbmdzKCk6IHsgbG9uZzogc3RyaW5nOyBzaG9ydDogc3RyaW5nIH0gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMudHJpcC5zdW1tYXJ5Py5wcm9kdWN0KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByaWRlTGVncyA9IHRoaXMuX2dldFJpZGVMZWdzKCk7XG4gICAgY29uc3QgaXNTaG9ydCA9IHRoaXMudHJpcC5zdW1tYXJ5LnByb2R1Y3Q/LnZlaGljbGVNb2RlID09PSAnVFJBSU4nO1xuICAgIGNvbnN0IHNob3J0ID0gaXNTaG9ydFxuICAgICAgPyByaWRlTGVnc1swXS5zZXJ2aWNlSm91cm5leS5xdWF5VHlwZVNob3J0TmFtZSB8fCAnJ1xuICAgICAgOiByaWRlTGVnc1swXS5zZXJ2aWNlSm91cm5leS5xdWF5VHlwZU5hbWUgfHwgJyc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9uZzogaTE4bkZyb21QbGF0Zm9ybVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSArICcgJyArIHNob3J0LFxuICAgICAgc2hvcnQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBtYXAgUXVheSAqL1xuICBwcml2YXRlIF9yZW5kZXJRdWF5VHlwZSgpOiBUZW1wbGF0ZVJlc3VsdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnRyaXAuc3VtbWFyeT8ucHJvZHVjdCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBxdWF5VHlwZVN0cmluZ3MgPSB0aGlzLl9nZXRRdWF5VHlwZVN0cmluZ3MoKTtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LS1xdWF5XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7cXVheVR5cGVTdHJpbmdzPy5sb25nfSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctLXF1YXktdHlwZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgPiR7cXVheVR5cGVTdHJpbmdzPy5zaG9ydH08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVIaW1DdXModHJpcDogSVRyaXBJdGVtKTogeyBjdXM6IEhpbUN1cyB8IG51bGw7IGhpbTogSGltQ3VzIHwgbnVsbCB9IHtcbiAgICBjb25zdCB7IHNpdHVhdGlvbnMgfSA9IHRyaXAgfHwge307XG4gICAgY29uc3Qgc29ydGVkU2l0dWF0aW9ucyA9IHNpdHVhdGlvbnMgJiYgc29ydFNpdHVhdGlvbihzaXR1YXRpb25zKTtcbiAgICBjb25zdCBjdXMgPSBnZXRDdXModHJpcCwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY3VzOiBPYmplY3Qua2V5cyhjdXMpPy5sZW5ndGggPyBjdXMgOiBudWxsLFxuICAgICAgaGltOiBzaXR1YXRpb25zPy5sZW5ndGggPyBnZXRIaW1JY29uKHNvcnRlZFNpdHVhdGlvbnNbMF0pIDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QWNjZXNzaWJpbGl0eVRleHQodHJpcDogSVRyaXBJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHN1bW1hcnksIGxlZ3MsIG5vdGljZXMgfSA9IHRyaXAgfHwge307XG4gICAgY29uc3Qge1xuICAgICAgZGVwYXJ0dXJlV2FsayxcbiAgICAgIGFycml2YWxXYWxrLFxuICAgICAgZGVwYXJ0dXJlLFxuICAgICAgYXJyaXZhbCxcbiAgICAgIHByb2R1Y3QsXG4gICAgICBkaXJlY3Rpb24sXG4gICAgICBvY2N1cGFuY3ksXG4gICAgICBkdXJhdGlvbixcbiAgICB9ID0gc3VtbWFyeSB8fCB7fTtcblxuICAgIGNvbnN0IHsgZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZSwgYXJyaXZhbFRpbWVBdHRyaWJ1dGUgfSA9IGdldERlcGFydHVyZUFycml2YWxUaW1lQXR0cmlidXRlKFxuICAgICAgbGVncyxcbiAgICAgIGRlcGFydHVyZVdhbGsgfHwgMCxcbiAgICAgIGFycml2YWxXYWxrIHx8IDAsXG4gICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgdGhpcy5hMTF5Rm9vdHBhdGgsXG4gICAgKTtcblxuICAgIGNvbnN0IHJpZGVMZWdzID0gdGhpcy5fZ2V0UmlkZUxlZ3MoKTtcblxuICAgIGNvbnN0IGRlcGFydHVyZVRpbWU6IERhdGUgfCB1bmRlZmluZWQgPSBkZXBhcnR1cmU/LnRpbWVcbiAgICAgID8gcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhkZXBhcnR1cmUudGltZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYXJyaXZhbFRpbWU6IERhdGUgfCB1bmRlZmluZWQgPSBhcnJpdmFsPy50aW1lXG4gICAgICA/IHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcoYXJyaXZhbC50aW1lKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkZXBhcnR1cmVXYWxrVGV4dCA9IGRlcGFydHVyZVRpbWVBdHRyaWJ1dGVcbiAgICAgID8gYCR7ZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZS50ZXh0fSAke2RlcGFydHVyZVRpbWVBdHRyaWJ1dGUuZHVyYXRpb259LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgYXJyaXZhbFdhbGtUZXh0ID0gYXJyaXZhbFRpbWVBdHRyaWJ1dGVcbiAgICAgID8gYCR7YXJyaXZhbFRpbWVBdHRyaWJ1dGUudGV4dH0gJHthcnJpdmFsVGltZUF0dHJpYnV0ZS5kdXJhdGlvbn0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkZXBhcnR1cmVUaW1lVGV4dCA9IGRlcGFydHVyZVRpbWVcbiAgICAgID8gYCR7aTE4bkRlcGFydHVyZVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7Zm9ybWF0KGRlcGFydHVyZVRpbWUsICdISDptbScpfSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGdldERlcGFydHVyZVF1YXlUZXh0ID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICBpZiAoIWRlcGFydHVyZT8ucXVheUZvcm1hdHRlZCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIC8vIGFkZCBwcmVmaXggXCJuZXdcIiBpZiBxdWF5IHdhcyBjaGFuZ2VkXG4gICAgICBjb25zdCBjaGFuZ2VkUXVheVByZWZpeCA9IGRlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBgJHtpMThuTmV3W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSBgIDogJyc7XG4gICAgICByZXR1cm4gYCR7Y2hhbmdlZFF1YXlQcmVmaXh9JHtcbiAgICAgICAgdGhpcy5fZ2V0UXVheVR5cGVTdHJpbmdzKCk/LmxvbmdcbiAgICAgIH0gJHtkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWR9LCBgO1xuICAgIH07XG5cbiAgICBjb25zdCBtZWFuc09mVHJhbnNwb3J0VGV4dCA9XG4gICAgICBwcm9kdWN0ICYmIHByb2R1Y3QudmVoaWNsZU1vZGVcbiAgICAgICAgPyBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldICYmXG4gICAgICAgICAgYCR7aTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sIGBcbiAgICAgICAgOiAnJztcblxuICAgIGNvbnN0IHZlaGljbGVTdWJNb2RlVGV4dCA9IHByb2R1Y3Q/LnZlaGljbGVTdWJNb2RlU2hvcnROYW1lXG4gICAgICA/IGAke3Byb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWV9ICR7cHJvZHVjdC5saW5lIHx8ICcnfSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGRpcmVjdGlvblRleHQgPSBgJHtpMThuRGlyZWN0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2RpcmVjdGlvbn0sIGA7XG5cbiAgICBjb25zdCBoaW1DdXMgPSB0aGlzLl9oYW5kbGVIaW1DdXModHJpcCk7XG4gICAgY29uc3QgY3VzVGV4dCA9IGhpbUN1cz8uY3VzPy50ZXh0XG4gICAgICA/IGAke2kxOG5SZWFsVGltZUluZm9bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2hpbUN1cz8uY3VzPy50ZXh0fSwgYFxuICAgICAgOiAnJztcbiAgICBjb25zdCBoaW1UZXh0ID0gaGltQ3VzPy5oaW0/LnRleHRcbiAgICAgID8gYCR7aTE4blJlYWxUaW1lSW5mb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7aGltQ3VzPy5oaW0/LnRleHR9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgYm9hcmRpbmdUZXh0ID0gdGhpcy5ib2FyZGluZyA/IGAke3RoaXMuYm9hcmRpbmcudGV4dH0sIGAgOiAnJztcblxuICAgIGNvbnN0IHByaWNlVGV4dCA9IGAke3RoaXMucHJpY2U/LmlzRGlzY291bnQgPyBpMThuU3VwZXJzYXZlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSA6ICcnfSAke1xuICAgICAgdGhpcy5wcmljZT8udGV4dCAmJiB0aGlzLnByaWNlPy5wcmljZVxuICAgICAgICA/ICh0aGlzLnByaWNlPy50ZXh0IHx8ICcnKSArICcgJyArICh0aGlzLnByaWNlPy5wcmljZSB8fCAnJykgKyAnLCAnXG4gICAgICAgIDogJydcbiAgICB9YDtcblxuICAgIGNvbnN0IHRyYW5zZmVyUHJvY2VkdXJlcyA9XG4gICAgICByaWRlTGVncy5sZW5ndGggPiAyXG4gICAgICAgID8gYCR7cmlkZUxlZ3MubGVuZ3RoIC0gMX0gJHtpMThuVHJhbnNmZXJQcm9jZWR1cmVzW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSwgYFxuICAgICAgICA6IHJpZGVMZWdzLmxlbmd0aCA+IDFcbiAgICAgICAgICA/IGAke3JpZGVMZWdzLmxlbmd0aCAtIDF9ICR7aTE4blRyYW5zZmVyUHJvY2VkdXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSwgYFxuICAgICAgICAgIDogJyc7XG5cbiAgICBjb25zdCBhcnJpdmFsVGltZVRleHQgPSBhcnJpdmFsVGltZVxuICAgICAgPyBgJHtpMThuQXJyaXZhbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7Zm9ybWF0KGFycml2YWxUaW1lLCAnSEg6bW0nKX0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBsZXQgb2NjdXBhbmN5VGV4dDogc3RyaW5nID0gJyc7XG4gICAgaWYgKG9jY3VwYW5jeSkge1xuICAgICAgaWYgKG9jY3VwYW5jeS5maXJzdENsYXNzICYmIG9jY3VwYW5jeS5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHtcbiAgICAgICAgb2NjdXBhbmN5VGV4dCArPSBgJHtpMThuQ2xhc3MuZmlyc3RbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuZmlyc3RDbGFzcy50b0xvd2VyQ2FzZSgpIGFzIFNiYk9jY3VwYW5jeV0gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgPlxuICAgICAgICAgICk/Llt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XVxuICAgICAgICB9LmA7XG4gICAgICB9XG4gICAgICBpZiAob2NjdXBhbmN5LnNlY29uZENsYXNzICYmIG9jY3VwYW5jeS5zZWNvbmRDbGFzcyAhPT0gJ1VOS05PV04nKSB7XG4gICAgICAgIG9jY3VwYW5jeVRleHQgKz0gYCAke2kxOG5DbGFzcy5zZWNvbmRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuc2Vjb25kQ2xhc3MudG9Mb3dlckNhc2UoKSBhcyBTYmJPY2N1cGFuY3ldIGFzIFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICApPy5bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgfS5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPVxuICAgICAgbm90aWNlcyAmJlxuICAgICAgaGFuZGxlTm90aWNlcyhub3RpY2VzKS5sZW5ndGggJiZcbiAgICAgIGhhbmRsZU5vdGljZXMobm90aWNlcylcbiAgICAgICAgPy5tYXAoKG5vdGljZSwgaW5kZXgpID0+IGluZGV4IDwgNCAmJiBub3RpY2UudGV4dD8udGVtcGxhdGUpXG4gICAgICAgIC5qb2luKCcsICcpICsgJywgJztcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXNUZXh0ID0gYXR0cmlidXRlc1xuICAgICAgPyBgJHtpMThuVHJhdmVsaGludHNbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2F0dHJpYnV0ZXN9YFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGR1cmF0aW9uVGV4dCA9XG4gICAgICAhIWR1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICA/IGAke2kxOG5UcmlwRHVyYXRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgICBkdXJhdGlvblRvVGltZShkdXJhdGlvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkubG9uZ1xuICAgICAgICAgIH0sIGBcbiAgICAgICAgOiAnJztcblxuICAgIHJldHVybiBbXG4gICAgICBkZXBhcnR1cmVXYWxrVGV4dCxcbiAgICAgIGRlcGFydHVyZVRpbWVUZXh0LFxuICAgICAgZ2V0RGVwYXJ0dXJlUXVheVRleHQoKSxcbiAgICAgIG1lYW5zT2ZUcmFuc3BvcnRUZXh0LFxuICAgICAgdmVoaWNsZVN1Yk1vZGVUZXh0LFxuICAgICAgZGlyZWN0aW9uVGV4dCxcbiAgICAgIGN1c1RleHQsXG4gICAgICBib2FyZGluZ1RleHQsXG4gICAgICBwcmljZVRleHQsXG4gICAgICBjdXNUZXh0ID8gJycgOiBoaW1UZXh0LFxuICAgICAgYXJyaXZhbFRpbWVUZXh0LFxuICAgICAgYXJyaXZhbFdhbGtUZXh0LFxuICAgICAgZHVyYXRpb25UZXh0LFxuICAgICAgdHJhbnNmZXJQcm9jZWR1cmVzLFxuICAgICAgb2NjdXBhbmN5VGV4dCxcbiAgICAgIGF0dHJpYnV0ZXNUZXh0LFxuICAgIF1cbiAgICAgIC5tYXAoKGUpID0+IGU/LnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUgJiYgZS5sZW5ndGggPiAwKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGlmICh0aGlzLmxvYWRpbmdUcmlwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2tlbGV0b24oKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxlZ3MsIGlkLCBub3RpY2VzLCBzdW1tYXJ5IH0gPSB0aGlzLnRyaXAgfHwge307XG5cbiAgICBjb25zdCB7XG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgZGVwYXJ0dXJlV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIG9jY3VwYW5jeSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gICAgY29uc3QgaGltQ3VzID0gdGhpcy5faGFuZGxlSGltQ3VzKHRoaXMudHJpcCk7XG4gICAgY29uc3QgaGFzSGltQ3VzID0gISFoaW1DdXMuY3VzIHx8ICEhaGltQ3VzLmhpbTtcblxuICAgIGNvbnN0IG5vdGljZUF0dHJpYnV0ZXMgPSBub3RpY2VzICYmIGhhbmRsZU5vdGljZXMobm90aWNlcyk7XG5cbiAgICBjb25zdCBkdXJhdGlvbk9iaiA9IGR1cmF0aW9uID8gZHVyYXRpb25Ub1RpbWUoZHVyYXRpb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpIDogbnVsbDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1jYXJkIHNpemU9XCJsXCIgaWQ9JHtpZH0+XG4gICAgICAgIDxzYmItY2FyZC1idXR0b25cbiAgICAgICAgICA/YWN0aXZlPSR7dGhpcy5hY3RpdmV9XG4gICAgICAgICAgYXJpYS1leHBhbmRlZD0ke3RoaXMuYWNjZXNzaWJpbGl0eUV4cGFuZGVkID8gJ3RydWUnIDogbm90aGluZ31cbiAgICAgICAgPlxuICAgICAgICAgICR7dGhpcy5jYXJkQWN0aW9uTGFiZWwgPyB0aGlzLmNhcmRBY3Rpb25MYWJlbCA6IHRoaXMuX2dldEFjY2Vzc2liaWxpdHlUZXh0KHRoaXMudHJpcCl9XG4gICAgICAgIDwvc2JiLWNhcmQtYnV0dG9uPlxuICAgICAgICAke3RoaXMubG9hZGluZ1ByaWNlXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FyZC1iYWRnZSBjbGFzcz1cInNiYi1sb2FkaW5nX19iYWRnZVwiPjwvc2JiLWNhcmQtYmFkZ2U+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgJHt0aGlzLnByaWNlICYmICF0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY29sb3I9JHt0aGlzLnByaWNlLmlzRGlzY291bnQgPyAnY2hhcmNvYWwnIDogJ3doaXRlJ30+XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS5pc0Rpc2NvdW50XG4gICAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAlPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICA+JHtpMThuU3VwZXJzYXZlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS50ZXh0ID8gaHRtbGA8c3Bhbj4ke3RoaXMucHJpY2UudGV4dH08L3NwYW4+YCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS5wcmljZSA/IGh0bWxgPHNwYW4+JHt0aGlzLnByaWNlLnByaWNlfTwvc3Bhbj5gIDogbm90aGluZ31cbiAgICAgICAgICAgIDwvc2JiLWNhcmQtYmFkZ2U+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvd1wiIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhlYWRlclwiIHJvbGU9XCJncmlkY2VsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICR7cHJvZHVjdD8uY29ycG9yYXRlSWRlbnRpdHlQaWN0b2dyYW0gJiZcbiAgICAgICAgICAgICAgaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzYmItaWNvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0LWljb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInBpY3RvOiR7cHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eVBpY3RvZ3JhbX1cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPlxuICAgICAgICAgICAgICAgICAgJHtwcm9kdWN0ICYmXG4gICAgICAgICAgICAgICAgICBwcm9kdWN0LnZlaGljbGVNb2RlICYmXG4gICAgICAgICAgICAgICAgICBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldICYmXG4gICAgICAgICAgICAgICAgICBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+YH1cbiAgICAgICAgICAgICAgJHtwcm9kdWN0ICYmXG4gICAgICAgICAgICAgIChwcm9kdWN0LmNvcnBvcmF0ZUlkZW50aXR5SWNvblxuICAgICAgICAgICAgICAgID8gcmVuZGVySWNvblByb2R1Y3QocHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eUljb24sIHByb2R1Y3QubmFtZSlcbiAgICAgICAgICAgICAgICA6IHByb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWUgJiZcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0cmluZ1Byb2R1Y3QocHJvZHVjdC52ZWhpY2xlU3ViTW9kZVNob3J0TmFtZSwgcHJvZHVjdD8ubGluZSkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAke2RpcmVjdGlvblxuICAgICAgICAgICAgICA/IGh0bWxgPHA+JHtgJHtpMThuRGlyZWN0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2RpcmVjdGlvbn1gfTwvcD5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2JiLXBlYXJsLWNoYWluLXRpbWVcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAubGVncz0ke2xlZ3N9XG4gICAgICAgICAgICAuZGVwYXJ0dXJlVGltZT0ke2RlcGFydHVyZT8udGltZX1cbiAgICAgICAgICAgIC5hcnJpdmFsVGltZT0ke2Fycml2YWw/LnRpbWV9XG4gICAgICAgICAgICAuZGVwYXJ0dXJlV2Fsaz0ke2RlcGFydHVyZVdhbGt9XG4gICAgICAgICAgICAuYXJyaXZhbFdhbGs9JHthcnJpdmFsV2Fsa31cbiAgICAgICAgICAgID9kaXNhYmxlLWFuaW1hdGlvbj0ke3RoaXMuZGlzYWJsZUFuaW1hdGlvbn1cbiAgICAgICAgICAgID9hMTF5LWZvb3RwYXRoPSR7dGhpcy5hMTF5Rm9vdHBhdGh9XG4gICAgICAgICAgICAubm93PSR7dGhpcy5ub3d9XG4gICAgICAgICAgPjwvc2JiLXBlYXJsLWNoYWluLXRpbWU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1mb290ZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgICR7cHJvZHVjdCAmJiBkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWRcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz0ke2RlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBgc2JiLXRpbWV0YWJsZV9fcm93LXF1YXktLWNoYW5nZWRgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuRGVwYXJ0dXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBpMThuTmV3W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdIDogJydcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJRdWF5VHlwZSgpfSAke2RlcGFydHVyZT8ucXVheUZvcm1hdHRlZH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAkeyhvY2N1cGFuY3k/LmZpcnN0Q2xhc3MgJiYgb2NjdXBhbmN5Py5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHx8XG4gICAgICAgICAgICAob2NjdXBhbmN5Py5zZWNvbmRDbGFzcyAmJiBvY2N1cGFuY3kuc2Vjb25kQ2xhc3MgIT09ICdVTktOT1dOJylcbiAgICAgICAgICAgICAgPyBodG1sYDxzYmItdGltZXRhYmxlLW9jY3VwYW5jeVxuICAgICAgICAgICAgICAgICAgLmZpcnN0Q2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LmZpcnN0Q2xhc3M/LnRvTG93ZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAuc2Vjb25kQ2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LnNlY29uZENsYXNzPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgID48L3NiYi10aW1ldGFibGUtb2NjdXBhbmN5PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHsobm90aWNlQXR0cmlidXRlcyAmJiBub3RpY2VBdHRyaWJ1dGVzLmxlbmd0aCkgfHwgdGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICA/IGh0bWxgPHVsIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhpbnRzXCIgcm9sZT1cImxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICR7bm90aWNlQXR0cmlidXRlcz8ubWFwKChub3RpY2UsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICBpbmRleCA8IDRcbiAgICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmF2ZWwtaGludHNfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHsnc2EtJyArIG5vdGljZS5uYW1lPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtub3RpY2UudGV4dD8udGVtcGxhdGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRyYXZlbC1oaW50c19faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHt0aGlzLmJvYXJkaW5nPy5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5ib2FyZGluZz8udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPmBcbiAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAgIDwvdWw+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAke2R1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICAgICAgICA/IGh0bWxgPHRpbWU+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuVHJpcER1cmF0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2R1cmF0aW9uT2JqIS5sb25nfWB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2R1cmF0aW9uT2JqIS5zaG9ydH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aW1lPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHtoYXNIaW1DdXMgJiYgKGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSlcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxzYmItaWNvbiBuYW1lPSR7KGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSkhLm5hbWV9Pjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4keyhoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pIS50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zYmItY2FyZD5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGltZXRhYmxlLXJvdyc6IFNiYlRpbWV0YWJsZVJvd0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYiIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0RhLE1BQUEsb0JBQW9CLENBQUMsTUFBYyxTQUFnQztBQUN2RSxTQUFBO0FBQUEscUJBQ1ksSUFBSTtBQUFBLDJDQUNrQixJQUFJO0FBQUE7QUFFL0M7QUFFYSxNQUFBLHNCQUFzQixDQUFDLGFBQXFCLFNBQXdDO0FBQ3pG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
@@ -0,0 +1,23 @@
1
+ import { t as u, m as d } from "./toDate-BCXKL_wM.js";
2
+ function f(n, r, e) {
3
+ const t = u(n, e == null ? void 0 : e.in);
4
+ return t.setTime(t.getTime() + r * d), t;
5
+ }
6
+ function c(n) {
7
+ return (r) => {
8
+ const t = (n ? Math[n] : Math.trunc)(r);
9
+ return t === 0 ? 0 : t;
10
+ };
11
+ }
12
+ function i(n, r) {
13
+ return +u(n) - +u(r);
14
+ }
15
+ function s(n, r, e) {
16
+ const t = i(n, r) / d;
17
+ return c(e == null ? void 0 : e.roundingMethod)(t);
18
+ }
19
+ export {
20
+ f as a,
21
+ s as d,
22
+ c as g
23
+ };