@flower-city-online/itinerary-lib 0.0.50 → 0.0.52

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 (61) hide show
  1. package/esm2022/lib/itinerary-app/_services/bottom-navigation.service.mjs +8 -8
  2. package/esm2022/lib/itinerary-app/_services/navigation-helper.service.mjs +128 -0
  3. package/esm2022/lib/itinerary-app/modules/archives/pages/main-archives/main-archives.component.mjs +20 -17
  4. package/esm2022/lib/itinerary-app/modules/itineraries/components/app-sidebar-desktop/app-sidebar-desktop.component.mjs +3 -3
  5. package/esm2022/lib/itinerary-app/modules/itineraries/itineraries.component.mjs +18 -15
  6. package/esm2022/lib/itinerary-app/modules/itineraries/pages/branched-itineraries/branched-itineraries.component.mjs +23 -45
  7. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/builder.component.mjs +23 -23
  8. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary/create-itinerary.component.mjs +21 -20
  9. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-mode/create-itinerary-draw-mode.component.mjs +23 -26
  10. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary/created-itinerary.component.mjs +17 -15
  11. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-preview.component.mjs +12 -9
  12. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/location-picker/location-picker.component.mjs +19 -18
  13. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/select-itinerary-event/select-itinerary-event.component.mjs +16 -14
  14. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-location/suggested-events-location.component.mjs +17 -15
  15. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-radius/suggested-events-route-radius.component.mjs +13 -13
  16. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-type/suggested-events-route-type.component.mjs +16 -14
  17. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comment-comparison/comment-comparison.component.mjs +13 -10
  18. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comment-search/comment-search.component.mjs +13 -10
  19. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comments-page.component.mjs +15 -12
  20. package/esm2022/lib/itinerary-app/modules/itineraries/pages/explore/explore.component.mjs +28 -43
  21. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/details/details.component.mjs +28 -36
  22. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/summary/summary.component.mjs +27 -31
  23. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/itinerary-detail.component.mjs +20 -16
  24. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/user-list/user-list.component.mjs +16 -16
  25. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-upvote-users/itinerary-upvote-users.component.mjs +17 -14
  26. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-users/itinerary-users.component.mjs +14 -9
  27. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-watching-users/itinerary-watching-users.component.mjs +14 -9
  28. package/esm2022/lib/itinerary-app/shared/comment/comment.component.mjs +17 -17
  29. package/esm2022/lib/itinerary-app/shared/custom-story-card/custom-story-card.component.mjs +16 -11
  30. package/fesm2022/flower-city-online-itinerary-lib.mjs +628 -531
  31. package/fesm2022/flower-city-online-itinerary-lib.mjs.map +1 -1
  32. package/lib/itinerary-app/_services/bottom-navigation.service.d.ts +3 -3
  33. package/lib/itinerary-app/_services/navigation-helper.service.d.ts +19 -0
  34. package/lib/itinerary-app/modules/archives/pages/main-archives/main-archives.component.d.ts +5 -3
  35. package/lib/itinerary-app/modules/itineraries/itineraries.component.d.ts +3 -1
  36. package/lib/itinerary-app/modules/itineraries/pages/branched-itineraries/branched-itineraries.component.d.ts +4 -3
  37. package/lib/itinerary-app/modules/itineraries/pages/builder/builder.component.d.ts +5 -3
  38. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary/create-itinerary.component.d.ts +5 -3
  39. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-mode/create-itinerary-draw-mode.component.d.ts +4 -3
  40. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary/created-itinerary.component.d.ts +4 -3
  41. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-preview.component.d.ts +3 -1
  42. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/location-picker/location-picker.component.d.ts +4 -3
  43. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/select-itinerary-event/select-itinerary-event.component.d.ts +4 -3
  44. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-location/suggested-events-location.component.d.ts +4 -3
  45. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-radius/suggested-events-route-radius.component.d.ts +4 -3
  46. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-type/suggested-events-route-type.component.d.ts +4 -3
  47. package/lib/itinerary-app/modules/itineraries/pages/comments/comment-comparison/comment-comparison.component.d.ts +5 -3
  48. package/lib/itinerary-app/modules/itineraries/pages/comments/comment-search/comment-search.component.d.ts +5 -3
  49. package/lib/itinerary-app/modules/itineraries/pages/comments/comments-page.component.d.ts +3 -1
  50. package/lib/itinerary-app/modules/itineraries/pages/explore/explore.component.d.ts +5 -3
  51. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/details/details.component.d.ts +6 -4
  52. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/summary/summary.component.d.ts +5 -3
  53. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/itinerary-detail.component.d.ts +5 -2
  54. package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/user-list/user-list.component.d.ts +5 -3
  55. package/lib/itinerary-app/modules/itineraries/pages/itinerary-upvote-users/itinerary-upvote-users.component.d.ts +5 -3
  56. package/lib/itinerary-app/modules/itineraries/pages/itinerary-users/itinerary-users.component.d.ts +5 -2
  57. package/lib/itinerary-app/modules/itineraries/pages/itinerary-watching-users/itinerary-watching-users.component.d.ts +5 -2
  58. package/lib/itinerary-app/shared/comment/comment.component.d.ts +5 -3
  59. package/lib/itinerary-app/shared/custom-story-card/custom-story-card.component.d.ts +5 -3
  60. package/package.json +1 -1
  61. package/styles.css +1 -1
@@ -3,14 +3,16 @@ import { ICONS } from '../../_constants/constants';
3
3
  import { ItinerariesRoutesEnum } from '../../_enums/ItenariesRoutes.enum';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../../_services/api.service";
6
- import * as i2 from "@angular/router";
7
- import * as i3 from "@angular/common";
8
- import * as i4 from "@naniteninja/ionic-lib";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/router";
8
+ import * as i4 from "../../_services/navigation-helper.service";
9
+ import * as i5 from "@naniteninja/ionic-lib";
9
10
  export class CustomStoryCardComponent {
10
11
  apiService;
11
- router;
12
12
  cdr;
13
13
  location;
14
+ route;
15
+ navHelper;
14
16
  libMenuItem;
15
17
  isDraft;
16
18
  cardData;
@@ -38,11 +40,12 @@ export class CustomStoryCardComponent {
38
40
  "https://static.gopro.com/assets/blta2b8522e5372af40/blt2d5eb5852c683074/671a428c24f2274281f1fb1a/02_HP_H13CE_375.jpg"
39
41
  ];
40
42
  image = "https://static.gopro.com/assets/blta2b8522e5372af40/blt2d5eb5852c683074/671a428c24f2274281f1fb1a/02_HP_H13CE_375.jpg";
41
- constructor(apiService, router, cdr, location) {
43
+ constructor(apiService, cdr, location, route, navHelper) {
42
44
  this.apiService = apiService;
43
- this.router = router;
44
45
  this.cdr = cdr;
45
46
  this.location = location;
47
+ this.route = route;
48
+ this.navHelper = navHelper;
46
49
  }
47
50
  onWheel(event) {
48
51
  if (!this.isScrolling) {
@@ -152,15 +155,17 @@ export class CustomStoryCardComponent {
152
155
  }
153
156
  //NAVIGATION
154
157
  navToUpdateComment() {
155
- this.router.navigate([ItinerariesRoutesEnum.COMMENTS, this.cardData?.id]);
158
+ if (this.cardData?.id) {
159
+ this.navHelper.navigate([ItinerariesRoutesEnum.COMMENTS_ROUTE, this.cardData.id], this.route);
160
+ }
156
161
  }
157
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomStoryCardComponent, deps: [{ token: i1.ApiService }, { token: i2.Router }, { token: i0.ChangeDetectorRef }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component });
158
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomStoryCardComponent, selector: "app-custom-story-card", inputs: { libMenuItem: "libMenuItem", isDraft: "isDraft" }, host: { listeners: { "window:wheel": "onWheel($event)" } }, ngImport: i0, template: "<div class=\"carousel-container w-full bg-transparent\">\r\n <div class=\"carousel\">\r\n <div\r\n class=\"card active bg-cover bg-center bg-no-repeat story-img bg-transparent m-0\"\r\n [style.background-image]=\"'url(' + image + ')'\"\r\n >\r\n <div class=\"flex h-[50px] items-center\">\r\n <button (click)=\"goBack()\">\r\n <img loading=\"lazy\" [src]=\"ICONS['back']\" alt=\"Back\" class=\"p-[13px]\"/>\r\n </button>\r\n <h5 class=\"text-secondary text-[10px] xs:text-[9px] flex gap-[6px] items-center mx-[8px]\">\r\n <img loading=\"lazy\" [src]=\"ICONS['userReal']\" alt=\"User\" />\r\n <span>{{ processedCardData?.userName }} </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['king']\" alt=\"Favorite\" />\r\n </h5>\r\n <lib-menu-btn (select)=\"handleMenueItemSelect()\" (click)=\"handleMenuClick()\" (change)=\"handleMenuItemChange()\"\r\n class=\"lib-menu-custom-class lib-menu-bg-none ms-auto\" [disableTextShadow]=\"true\" [menuItems]=\"libMenuItem\">\r\n <img loading=\"lazy\" [src]=\"ICONS['horizontalWhite']\" alt=\"tricolon\" class=\"p-[6px]\" />\r\n </lib-menu-btn>\r\n </div>\r\n\r\n <div class=\"flex px-[12px]\">\r\n <div class=\"progress-bar\"></div>\r\n <div class=\"progress-bar\"></div>\r\n <div class=\"progress-bar\"></div>\r\n </div>\r\n\r\n <div class=\"p-[12px]\">\r\n <div class=\"flex items-start story-content mb-[30px] p-[12px]\" *ngFor=\"let item of [1, 2, 3]\" style=\"height: 91.9px;\">\r\n <div class=\"items-center sm:text-[10px] xs:text-[9px] flex flex-col gap-y-[0px] px-1\">\r\n <img loading=\"lazy\" [src]=\"ICONS['upvote']\" alt=\"Upvote\" />\r\n <span [class]=\"!isDraft ? 'text-primary' : 'drah-voter-header'\">\r\n {{ processedCardData?.upVotes }}\r\n </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['downvote']\" alt=\"Downvote\" />\r\n </div>\r\n <div class=\"py-[8px] px-[4px]\">\r\n <h5 class=\"text-secondary mb-2 opacity-80 text-[20px] xs:text-[15px] flex gap-[6px] items-center\">\r\n <img loading=\"lazy\" class=\"story-avatar\" [src]=\"ICONS['userReal']\" alt=\"User\" width=\"20\" height=\"20\"/>\r\n <span class=\"story-author\">{{ processedCardData?.userName }} </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['king']\" alt=\"Favorite\" />\r\n </h5>\r\n <div class=\"relative\">\r\n <p class=\"story-text\">\r\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt and also other texts\r\n <span class=\"read-more-text\">Read More</span>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex items-start justify-end absolute story-right-info\">\r\n <div>\r\n <div class=\"mb-[26px] flex flex-col items-center\">\r\n <img loading=\"lazy\" [src]=\"ICONS['upvoteWhite']\" alt=\"Upvote\" />\r\n <span class=\"votes-Count\">\r\n {{ processedCardData?.upVotes }}\r\n </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['downvoteWhite']\" alt=\"Downvote\" />\r\n </div>\r\n\r\n <div class=\"mb-[26px] flex flex-col items-center\">\r\n <img loading=\"lazy\" class=\"mb-[4px]\" [src]=\"ICONS['message']\" alt=\"Message\" />\r\n <span class=\"votes-Count\"> 23 </span>\r\n </div>\r\n\r\n <div class=\"mb-[16px] flex flex-col items-center\">\r\n <img loading=\"lazy\" class=\"mb-[4px]\" [src]=\"ICONS['forward']\" alt=\"Forward\" />\r\n <span class=\"votes-Count\"> Share </span>\r\n </div>\r\n <div class=\"flex flex-col items-center\">\r\n <img loading=\"lazy\" class=\"mb-[4px]\" [src]=\"ICONS['badge_check']\" alt=\"Check\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-white absolute w-full story-bottom-info\">\r\n <div class=\"flex-1\">\r\n <h2 class=\"text-2xl font-bold story-title mb-[8px]\">Adventure Tour</h2>\r\n <div class=\"mb-[12px]\">\r\n <h5 class=\"text-secondary opacity-80 text-[10px] xs:text-[9px] flex gap-[6px] items-center\">\r\n <img loading=\"lazy\" [src]=\"ICONS['userReal']\" alt=\"User\" width=\"12px\" height=\"12px\" />\r\n <span>{{ processedCardData?.userName }} - {{ processedCardData?.timeAgo }}</span>\r\n </h5>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center justify-between w-full\">\r\n <!-- Left-aligned div -->\r\n <div class=\"flex space-x-1 justify-start\">\r\n <span class=\"story-bottom-info-badge ellipsis story-bottom-buttons-pink\"><img loading=\"lazy\" [src]=\"ICONS['temp']\" alt=\"Place\" />\r\n Palace</span>\r\n <span class=\"story-bottom-info-badge ellipsis story-bottom-buttons-white\"><img loading=\"lazy\" [src]=\"ICONS['coffee']\" alt=\"Coffee\" />\r\n Coffee</span>\r\n <span class=\"story-bottom-info-badge ellipsis story-bottom-buttons-white\"><img loading=\"lazy\" [src]=\"ICONS['template']\" alt=\"Temple\" />\r\n Temple</span>\r\n <span class=\"story-bottom-info-badge font-bold story-bottom-buttons-white\">More +6</span>\r\n </div>\r\n <!-- Right-aligned div -->\r\n <div class=\"flex justify-end items-end\">\r\n <div class=\"flex\">\r\n <div class=\"flex items-end gap-x-2\">\r\n <span class=\"text-xs user-text text-nowrap\">\r\n {{ processedCardData?.users }}\r\n <span *ngIf=\"processedCardData && processedCardData!.users > 0\">Users</span>\r\n </span>\r\n <img loading=\"lazy\" [src]=\"processedCardData?.userimageSrc\" alt=\"UserPic\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".card-component{--width: auto;background:#27242c;padding:0;box-sizing:border-box}.carousel-container{display:flex;justify-content:center;align-items:center;height:82.5vh;overflow:hidden;padding:0;box-sizing:border-box}.carousel{position:relative;width:90%;height:100%;display:flex;flex-direction:column;align-items:center}.card{background-color:gray;position:relative;width:100%;border-radius:6.56px;box-shadow:0 4px 6px #0000001a;overflow:hidden;align-items:center;font-size:1.5rem;font-weight:700;transition:transform .5s ease-in-out,opacity .3s ease;transform:translateY(100%)}.card.above{transform:translateY(-100%);border-radius:0 0 6.56px 6.56px;opacity:.5;z-index:1;height:10%;width:90%}.card.active{transform:translateY(0);opacity:1;z-index:2;height:100%}.card.below{transform:translateY(100%);border-radius:6.56px 6.56px 0 0;opacity:.5;z-index:1;height:10%;width:90%}.card.slide-up{animation:slideUpIn .5s ease-out forwards}.card.slide-down{animation:slideDownOut .5s ease-in forwards}@keyframes slideUpIn{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideDownOut{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}.header-container{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#1a1a1a;border-radius:12px 12px 0 0}.header-container .back-btn,.header-container .menu-btn{background:none;border:none;font-size:20px;color:#fff;cursor:pointer}.header-container .user-info{display:flex;align-items:center;gap:8px}.header-container .user-info .avatar{width:32px;height:32px;border-radius:50%}.header-container .user-info .username{color:#fff;font-size:18px;font-weight:600}.header-container .user-info .icon-crown{color:gold;font-size:18px}.progress-bar{width:100%;height:2px;background:linear-gradient(to right,#eaeaea80,#eaeaea80);margin-top:4px;border-radius:2px;margin-left:2px}.story-content{background:#27242c;box-shadow:9.0255px 8.205px 22.1535px #111014a6,-4.1025px -4.1025px 13.128px #cbc7d140;border-radius:6.564px}.votes-Count{font-weight:600;font-size:9.846px;color:#fff;text-shadow:0px 1.06548px 2.13097px rgba(0,0,0,.5);line-height:100%}.story-title{font-weight:500;font-size:19.692px;line-height:100%;display:flex;align-items:center;color:#fff;text-shadow:0px 1.07px 2.13px 0px rgba(0,0,0,.5019607843)}.story-bottom-info-badge{font-family:Gilroy;font-style:normal;font-weight:500;font-size:8.205px;line-height:100%;display:flex;align-items:center;text-wrap:nowrap}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.story-bottom-buttons-pink{color:#fe3c72}.story-bottom-buttons-white{color:#fff}.story-text{font-weight:400;font-size:9.846px;line-height:150%;text-align:start;letter-spacing:-.011em;color:#fffc;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.read-more-text{position:absolute;right:0;bottom:0;font-weight:400;font-size:9.846px;line-height:150%;letter-spacing:-.011em;color:#fe3c72;padding-left:4px;background-color:#27242c}.story-avatar{width:20px;height:20px}.story-author{font-weight:500;font-style:Medium;font-size:13.13px;line-height:160%;letter-spacing:0%}.story-img{position:relative;z-index:0}.story-img:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,#00000040,#0000001a 21.35%,#0000 51.04%,#00000038 69.27%,#00000059);z-index:1;pointer-events:none}.story-img>*{z-index:2}.pic-switch-bar{z-index:100}.custom-padding{padding-top:130px}.story-bottom-info{bottom:16px;padding:0 12px}.story-right-info{top:260px;right:8px}.user-text{font-size:9.85px;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MenuBtnComponent, selector: "lib-menu-btn", inputs: ["menuBtnIcon", "menuBtnTooltip", "menuBtnTooltipPosition", "menuBtnIconName", "menuBtnImgUrl", "menuBtnNotificationIconUrl", "menuDirection", "hasNotification", "menuItems", "disableTranslation", "listItem", "listItemIndex", "selectable", "overlayClass", "isUserMenu", "onlyCloseOnClickOutside", "hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
162
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomStoryCardComponent, deps: [{ token: i1.ApiService }, { token: i0.ChangeDetectorRef }, { token: i2.Location }, { token: i3.ActivatedRoute }, { token: i4.NavigationHelperService }], target: i0.ɵɵFactoryTarget.Component });
163
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomStoryCardComponent, selector: "app-custom-story-card", inputs: { libMenuItem: "libMenuItem", isDraft: "isDraft" }, host: { listeners: { "window:wheel": "onWheel($event)" } }, ngImport: i0, template: "<div class=\"carousel-container w-full bg-transparent\">\r\n <div class=\"carousel\">\r\n <div\r\n class=\"card active bg-cover bg-center bg-no-repeat story-img bg-transparent m-0\"\r\n [style.background-image]=\"'url(' + image + ')'\"\r\n >\r\n <div class=\"flex h-[50px] items-center\">\r\n <button (click)=\"goBack()\">\r\n <img loading=\"lazy\" [src]=\"ICONS['back']\" alt=\"Back\" class=\"p-[13px]\"/>\r\n </button>\r\n <h5 class=\"text-secondary text-[10px] xs:text-[9px] flex gap-[6px] items-center mx-[8px]\">\r\n <img loading=\"lazy\" [src]=\"ICONS['userReal']\" alt=\"User\" />\r\n <span>{{ processedCardData?.userName }} </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['king']\" alt=\"Favorite\" />\r\n </h5>\r\n <lib-menu-btn (select)=\"handleMenueItemSelect()\" (click)=\"handleMenuClick()\" (change)=\"handleMenuItemChange()\"\r\n class=\"lib-menu-custom-class lib-menu-bg-none ms-auto\" [disableTextShadow]=\"true\" [menuItems]=\"libMenuItem\">\r\n <img loading=\"lazy\" [src]=\"ICONS['horizontalWhite']\" alt=\"tricolon\" class=\"p-[6px]\" />\r\n </lib-menu-btn>\r\n </div>\r\n\r\n <div class=\"flex px-[12px]\">\r\n <div class=\"progress-bar\"></div>\r\n <div class=\"progress-bar\"></div>\r\n <div class=\"progress-bar\"></div>\r\n </div>\r\n\r\n <div class=\"p-[12px]\">\r\n <div class=\"flex items-start story-content mb-[30px] p-[12px]\" *ngFor=\"let item of [1, 2, 3]\" style=\"height: 91.9px;\">\r\n <div class=\"items-center sm:text-[10px] xs:text-[9px] flex flex-col gap-y-[0px] px-1\">\r\n <img loading=\"lazy\" [src]=\"ICONS['upvote']\" alt=\"Upvote\" />\r\n <span [class]=\"!isDraft ? 'text-primary' : 'drah-voter-header'\">\r\n {{ processedCardData?.upVotes }}\r\n </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['downvote']\" alt=\"Downvote\" />\r\n </div>\r\n <div class=\"py-[8px] px-[4px]\">\r\n <h5 class=\"text-secondary mb-2 opacity-80 text-[20px] xs:text-[15px] flex gap-[6px] items-center\">\r\n <img loading=\"lazy\" class=\"story-avatar\" [src]=\"ICONS['userReal']\" alt=\"User\" width=\"20\" height=\"20\"/>\r\n <span class=\"story-author\">{{ processedCardData?.userName }} </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['king']\" alt=\"Favorite\" />\r\n </h5>\r\n <div class=\"relative\">\r\n <p class=\"story-text\">\r\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt and also other texts\r\n <span class=\"read-more-text\">Read More</span>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex items-start justify-end absolute story-right-info\">\r\n <div>\r\n <div class=\"mb-[26px] flex flex-col items-center\">\r\n <img loading=\"lazy\" [src]=\"ICONS['upvoteWhite']\" alt=\"Upvote\" />\r\n <span class=\"votes-Count\">\r\n {{ processedCardData?.upVotes }}\r\n </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['downvoteWhite']\" alt=\"Downvote\" />\r\n </div>\r\n\r\n <div class=\"mb-[26px] flex flex-col items-center\">\r\n <img loading=\"lazy\" class=\"mb-[4px]\" [src]=\"ICONS['message']\" alt=\"Message\" />\r\n <span class=\"votes-Count\"> 23 </span>\r\n </div>\r\n\r\n <div class=\"mb-[16px] flex flex-col items-center\">\r\n <img loading=\"lazy\" class=\"mb-[4px]\" [src]=\"ICONS['forward']\" alt=\"Forward\" />\r\n <span class=\"votes-Count\"> Share </span>\r\n </div>\r\n <div class=\"flex flex-col items-center\">\r\n <img loading=\"lazy\" class=\"mb-[4px]\" [src]=\"ICONS['badge_check']\" alt=\"Check\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-white absolute w-full story-bottom-info\">\r\n <div class=\"flex-1\">\r\n <h2 class=\"text-2xl font-bold story-title mb-[8px]\">Adventure Tour</h2>\r\n <div class=\"mb-[12px]\">\r\n <h5 class=\"text-secondary opacity-80 text-[10px] xs:text-[9px] flex gap-[6px] items-center\">\r\n <img loading=\"lazy\" [src]=\"ICONS['userReal']\" alt=\"User\" width=\"12px\" height=\"12px\" />\r\n <span>{{ processedCardData?.userName }} - {{ processedCardData?.timeAgo }}</span>\r\n </h5>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center justify-between w-full\">\r\n <!-- Left-aligned div -->\r\n <div class=\"flex space-x-1 justify-start\">\r\n <span class=\"story-bottom-info-badge ellipsis story-bottom-buttons-pink\"><img loading=\"lazy\" [src]=\"ICONS['temp']\" alt=\"Place\" />\r\n Palace</span>\r\n <span class=\"story-bottom-info-badge ellipsis story-bottom-buttons-white\"><img loading=\"lazy\" [src]=\"ICONS['coffee']\" alt=\"Coffee\" />\r\n Coffee</span>\r\n <span class=\"story-bottom-info-badge ellipsis story-bottom-buttons-white\"><img loading=\"lazy\" [src]=\"ICONS['template']\" alt=\"Temple\" />\r\n Temple</span>\r\n <span class=\"story-bottom-info-badge font-bold story-bottom-buttons-white\">More +6</span>\r\n </div>\r\n <!-- Right-aligned div -->\r\n <div class=\"flex justify-end items-end\">\r\n <div class=\"flex\">\r\n <div class=\"flex items-end gap-x-2\">\r\n <span class=\"text-xs user-text text-nowrap\">\r\n {{ processedCardData?.users }}\r\n <span *ngIf=\"processedCardData && processedCardData!.users > 0\">Users</span>\r\n </span>\r\n <img loading=\"lazy\" [src]=\"processedCardData?.userimageSrc\" alt=\"UserPic\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".card-component{--width: auto;background:#27242c;padding:0;box-sizing:border-box}.carousel-container{display:flex;justify-content:center;align-items:center;height:82.5vh;overflow:hidden;padding:0;box-sizing:border-box}.carousel{position:relative;width:90%;height:100%;display:flex;flex-direction:column;align-items:center}.card{background-color:gray;position:relative;width:100%;border-radius:6.56px;box-shadow:0 4px 6px #0000001a;overflow:hidden;align-items:center;font-size:1.5rem;font-weight:700;transition:transform .5s ease-in-out,opacity .3s ease;transform:translateY(100%)}.card.above{transform:translateY(-100%);border-radius:0 0 6.56px 6.56px;opacity:.5;z-index:1;height:10%;width:90%}.card.active{transform:translateY(0);opacity:1;z-index:2;height:100%}.card.below{transform:translateY(100%);border-radius:6.56px 6.56px 0 0;opacity:.5;z-index:1;height:10%;width:90%}.card.slide-up{animation:slideUpIn .5s ease-out forwards}.card.slide-down{animation:slideDownOut .5s ease-in forwards}@keyframes slideUpIn{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideDownOut{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}.header-container{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#1a1a1a;border-radius:12px 12px 0 0}.header-container .back-btn,.header-container .menu-btn{background:none;border:none;font-size:20px;color:#fff;cursor:pointer}.header-container .user-info{display:flex;align-items:center;gap:8px}.header-container .user-info .avatar{width:32px;height:32px;border-radius:50%}.header-container .user-info .username{color:#fff;font-size:18px;font-weight:600}.header-container .user-info .icon-crown{color:gold;font-size:18px}.progress-bar{width:100%;height:2px;background:linear-gradient(to right,#eaeaea80,#eaeaea80);margin-top:4px;border-radius:2px;margin-left:2px}.story-content{background:#27242c;box-shadow:9.0255px 8.205px 22.1535px #111014a6,-4.1025px -4.1025px 13.128px #cbc7d140;border-radius:6.564px}.votes-Count{font-weight:600;font-size:9.846px;color:#fff;text-shadow:0px 1.06548px 2.13097px rgba(0,0,0,.5);line-height:100%}.story-title{font-weight:500;font-size:19.692px;line-height:100%;display:flex;align-items:center;color:#fff;text-shadow:0px 1.07px 2.13px 0px rgba(0,0,0,.5019607843)}.story-bottom-info-badge{font-family:Gilroy;font-style:normal;font-weight:500;font-size:8.205px;line-height:100%;display:flex;align-items:center;text-wrap:nowrap}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.story-bottom-buttons-pink{color:#fe3c72}.story-bottom-buttons-white{color:#fff}.story-text{font-weight:400;font-size:9.846px;line-height:150%;text-align:start;letter-spacing:-.011em;color:#fffc;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.read-more-text{position:absolute;right:0;bottom:0;font-weight:400;font-size:9.846px;line-height:150%;letter-spacing:-.011em;color:#fe3c72;padding-left:4px;background-color:#27242c}.story-avatar{width:20px;height:20px}.story-author{font-weight:500;font-style:Medium;font-size:13.13px;line-height:160%;letter-spacing:0%}.story-img{position:relative;z-index:0}.story-img:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,#00000040,#0000001a 21.35%,#0000 51.04%,#00000038 69.27%,#00000059);z-index:1;pointer-events:none}.story-img>*{z-index:2}.pic-switch-bar{z-index:100}.custom-padding{padding-top:130px}.story-bottom-info{bottom:16px;padding:0 12px}.story-right-info{top:260px;right:8px}.user-text{font-size:9.85px;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MenuBtnComponent, selector: "lib-menu-btn", inputs: ["menuBtnIcon", "menuBtnTooltip", "menuBtnTooltipPosition", "menuBtnIconName", "menuBtnImgUrl", "menuBtnNotificationIconUrl", "menuDirection", "hasNotification", "menuItems", "disableTranslation", "listItem", "listItemIndex", "selectable", "overlayClass", "isUserMenu", "onlyCloseOnClickOutside", "hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
159
164
  }
160
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomStoryCardComponent, decorators: [{
161
166
  type: Component,
162
167
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-custom-story-card', standalone: false, template: "<div class=\"carousel-container w-full bg-transparent\">\r\n <div class=\"carousel\">\r\n <div\r\n class=\"card active bg-cover bg-center bg-no-repeat story-img bg-transparent m-0\"\r\n [style.background-image]=\"'url(' + image + ')'\"\r\n >\r\n <div class=\"flex h-[50px] items-center\">\r\n <button (click)=\"goBack()\">\r\n <img loading=\"lazy\" [src]=\"ICONS['back']\" alt=\"Back\" class=\"p-[13px]\"/>\r\n </button>\r\n <h5 class=\"text-secondary text-[10px] xs:text-[9px] flex gap-[6px] items-center mx-[8px]\">\r\n <img loading=\"lazy\" [src]=\"ICONS['userReal']\" alt=\"User\" />\r\n <span>{{ processedCardData?.userName }} </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['king']\" alt=\"Favorite\" />\r\n </h5>\r\n <lib-menu-btn (select)=\"handleMenueItemSelect()\" (click)=\"handleMenuClick()\" (change)=\"handleMenuItemChange()\"\r\n class=\"lib-menu-custom-class lib-menu-bg-none ms-auto\" [disableTextShadow]=\"true\" [menuItems]=\"libMenuItem\">\r\n <img loading=\"lazy\" [src]=\"ICONS['horizontalWhite']\" alt=\"tricolon\" class=\"p-[6px]\" />\r\n </lib-menu-btn>\r\n </div>\r\n\r\n <div class=\"flex px-[12px]\">\r\n <div class=\"progress-bar\"></div>\r\n <div class=\"progress-bar\"></div>\r\n <div class=\"progress-bar\"></div>\r\n </div>\r\n\r\n <div class=\"p-[12px]\">\r\n <div class=\"flex items-start story-content mb-[30px] p-[12px]\" *ngFor=\"let item of [1, 2, 3]\" style=\"height: 91.9px;\">\r\n <div class=\"items-center sm:text-[10px] xs:text-[9px] flex flex-col gap-y-[0px] px-1\">\r\n <img loading=\"lazy\" [src]=\"ICONS['upvote']\" alt=\"Upvote\" />\r\n <span [class]=\"!isDraft ? 'text-primary' : 'drah-voter-header'\">\r\n {{ processedCardData?.upVotes }}\r\n </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['downvote']\" alt=\"Downvote\" />\r\n </div>\r\n <div class=\"py-[8px] px-[4px]\">\r\n <h5 class=\"text-secondary mb-2 opacity-80 text-[20px] xs:text-[15px] flex gap-[6px] items-center\">\r\n <img loading=\"lazy\" class=\"story-avatar\" [src]=\"ICONS['userReal']\" alt=\"User\" width=\"20\" height=\"20\"/>\r\n <span class=\"story-author\">{{ processedCardData?.userName }} </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['king']\" alt=\"Favorite\" />\r\n </h5>\r\n <div class=\"relative\">\r\n <p class=\"story-text\">\r\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt and also other texts\r\n <span class=\"read-more-text\">Read More</span>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex items-start justify-end absolute story-right-info\">\r\n <div>\r\n <div class=\"mb-[26px] flex flex-col items-center\">\r\n <img loading=\"lazy\" [src]=\"ICONS['upvoteWhite']\" alt=\"Upvote\" />\r\n <span class=\"votes-Count\">\r\n {{ processedCardData?.upVotes }}\r\n </span>\r\n <img loading=\"lazy\" [src]=\"ICONS['downvoteWhite']\" alt=\"Downvote\" />\r\n </div>\r\n\r\n <div class=\"mb-[26px] flex flex-col items-center\">\r\n <img loading=\"lazy\" class=\"mb-[4px]\" [src]=\"ICONS['message']\" alt=\"Message\" />\r\n <span class=\"votes-Count\"> 23 </span>\r\n </div>\r\n\r\n <div class=\"mb-[16px] flex flex-col items-center\">\r\n <img loading=\"lazy\" class=\"mb-[4px]\" [src]=\"ICONS['forward']\" alt=\"Forward\" />\r\n <span class=\"votes-Count\"> Share </span>\r\n </div>\r\n <div class=\"flex flex-col items-center\">\r\n <img loading=\"lazy\" class=\"mb-[4px]\" [src]=\"ICONS['badge_check']\" alt=\"Check\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-white absolute w-full story-bottom-info\">\r\n <div class=\"flex-1\">\r\n <h2 class=\"text-2xl font-bold story-title mb-[8px]\">Adventure Tour</h2>\r\n <div class=\"mb-[12px]\">\r\n <h5 class=\"text-secondary opacity-80 text-[10px] xs:text-[9px] flex gap-[6px] items-center\">\r\n <img loading=\"lazy\" [src]=\"ICONS['userReal']\" alt=\"User\" width=\"12px\" height=\"12px\" />\r\n <span>{{ processedCardData?.userName }} - {{ processedCardData?.timeAgo }}</span>\r\n </h5>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center justify-between w-full\">\r\n <!-- Left-aligned div -->\r\n <div class=\"flex space-x-1 justify-start\">\r\n <span class=\"story-bottom-info-badge ellipsis story-bottom-buttons-pink\"><img loading=\"lazy\" [src]=\"ICONS['temp']\" alt=\"Place\" />\r\n Palace</span>\r\n <span class=\"story-bottom-info-badge ellipsis story-bottom-buttons-white\"><img loading=\"lazy\" [src]=\"ICONS['coffee']\" alt=\"Coffee\" />\r\n Coffee</span>\r\n <span class=\"story-bottom-info-badge ellipsis story-bottom-buttons-white\"><img loading=\"lazy\" [src]=\"ICONS['template']\" alt=\"Temple\" />\r\n Temple</span>\r\n <span class=\"story-bottom-info-badge font-bold story-bottom-buttons-white\">More +6</span>\r\n </div>\r\n <!-- Right-aligned div -->\r\n <div class=\"flex justify-end items-end\">\r\n <div class=\"flex\">\r\n <div class=\"flex items-end gap-x-2\">\r\n <span class=\"text-xs user-text text-nowrap\">\r\n {{ processedCardData?.users }}\r\n <span *ngIf=\"processedCardData && processedCardData!.users > 0\">Users</span>\r\n </span>\r\n <img loading=\"lazy\" [src]=\"processedCardData?.userimageSrc\" alt=\"UserPic\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".card-component{--width: auto;background:#27242c;padding:0;box-sizing:border-box}.carousel-container{display:flex;justify-content:center;align-items:center;height:82.5vh;overflow:hidden;padding:0;box-sizing:border-box}.carousel{position:relative;width:90%;height:100%;display:flex;flex-direction:column;align-items:center}.card{background-color:gray;position:relative;width:100%;border-radius:6.56px;box-shadow:0 4px 6px #0000001a;overflow:hidden;align-items:center;font-size:1.5rem;font-weight:700;transition:transform .5s ease-in-out,opacity .3s ease;transform:translateY(100%)}.card.above{transform:translateY(-100%);border-radius:0 0 6.56px 6.56px;opacity:.5;z-index:1;height:10%;width:90%}.card.active{transform:translateY(0);opacity:1;z-index:2;height:100%}.card.below{transform:translateY(100%);border-radius:6.56px 6.56px 0 0;opacity:.5;z-index:1;height:10%;width:90%}.card.slide-up{animation:slideUpIn .5s ease-out forwards}.card.slide-down{animation:slideDownOut .5s ease-in forwards}@keyframes slideUpIn{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideDownOut{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}.header-container{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#1a1a1a;border-radius:12px 12px 0 0}.header-container .back-btn,.header-container .menu-btn{background:none;border:none;font-size:20px;color:#fff;cursor:pointer}.header-container .user-info{display:flex;align-items:center;gap:8px}.header-container .user-info .avatar{width:32px;height:32px;border-radius:50%}.header-container .user-info .username{color:#fff;font-size:18px;font-weight:600}.header-container .user-info .icon-crown{color:gold;font-size:18px}.progress-bar{width:100%;height:2px;background:linear-gradient(to right,#eaeaea80,#eaeaea80);margin-top:4px;border-radius:2px;margin-left:2px}.story-content{background:#27242c;box-shadow:9.0255px 8.205px 22.1535px #111014a6,-4.1025px -4.1025px 13.128px #cbc7d140;border-radius:6.564px}.votes-Count{font-weight:600;font-size:9.846px;color:#fff;text-shadow:0px 1.06548px 2.13097px rgba(0,0,0,.5);line-height:100%}.story-title{font-weight:500;font-size:19.692px;line-height:100%;display:flex;align-items:center;color:#fff;text-shadow:0px 1.07px 2.13px 0px rgba(0,0,0,.5019607843)}.story-bottom-info-badge{font-family:Gilroy;font-style:normal;font-weight:500;font-size:8.205px;line-height:100%;display:flex;align-items:center;text-wrap:nowrap}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.story-bottom-buttons-pink{color:#fe3c72}.story-bottom-buttons-white{color:#fff}.story-text{font-weight:400;font-size:9.846px;line-height:150%;text-align:start;letter-spacing:-.011em;color:#fffc;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.read-more-text{position:absolute;right:0;bottom:0;font-weight:400;font-size:9.846px;line-height:150%;letter-spacing:-.011em;color:#fe3c72;padding-left:4px;background-color:#27242c}.story-avatar{width:20px;height:20px}.story-author{font-weight:500;font-style:Medium;font-size:13.13px;line-height:160%;letter-spacing:0%}.story-img{position:relative;z-index:0}.story-img:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,#00000040,#0000001a 21.35%,#0000 51.04%,#00000038 69.27%,#00000059);z-index:1;pointer-events:none}.story-img>*{z-index:2}.pic-switch-bar{z-index:100}.custom-padding{padding-top:130px}.story-bottom-info{bottom:16px;padding:0 12px}.story-right-info{top:260px;right:8px}.user-text{font-size:9.85px;font-weight:600}\n"] }]
163
- }], ctorParameters: () => [{ type: i1.ApiService }, { type: i2.Router }, { type: i0.ChangeDetectorRef }, { type: i3.Location }], propDecorators: { libMenuItem: [{
168
+ }], ctorParameters: () => [{ type: i1.ApiService }, { type: i0.ChangeDetectorRef }, { type: i2.Location }, { type: i3.ActivatedRoute }, { type: i4.NavigationHelperService }], propDecorators: { libMenuItem: [{
164
169
  type: Input
165
170
  }], isDraft: [{
166
171
  type: Input
@@ -168,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
168
173
  type: HostListener,
169
174
  args: ['window:wheel', ['$event']]
170
175
  }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXN0b3J5LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXRpbmVyYXJ5LWxpYi9zcmMvbGliL2l0aW5lcmFyeS1hcHAvc2hhcmVkL2N1c3RvbS1zdG9yeS1jYXJkL2N1c3RvbS1zdG9yeS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL3NoYXJlZC9jdXN0b20tc3RvcnktY2FyZC9jdXN0b20tc3RvcnktY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVOLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBYTFFLE1BQU0sT0FBTyx3QkFBd0I7SUErQnpCO0lBQ0E7SUFDQTtJQUNBO0lBakNELFdBQVcsQ0FBaUI7SUFDNUIsT0FBTyxDQUFXO0lBQzNCLFFBQVEsQ0FBd0I7SUFDeEIsYUFBYSxDQUFxQjtJQUNsQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzVCLGlCQUFpQixDQUF3QjtJQUN6QyxLQUFLLEdBQVUsS0FBSyxDQUFDO0lBQ3JCLG9CQUFvQixHQUFHO1FBQ3JCLGVBQWUsRUFBRTtZQUNmLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ3ZDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzVDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxT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LE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLENBQUM7WUFDWixLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsRUFBRTtZQUNaLEtBQUssRUFBRSxDQUFDO1lBQ1IsUUFBUSxFQUFFLENBQUM7WUFDWCxNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxDQUFDO1lBQ1IsUUFBUSxFQUFFLEVBQUU7WUFDWixZQUFZLEVBQUUsRUFBRTtZQUNoQixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxxQkFBcUIsS0FBVyxDQUFDO0lBQ2pDLG9CQUFvQixLQUFXLENBQUM7SUFDaEMsZUFBZSxLQUFXLENBQUM7SUFFM0IsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQVk7SUFDWixrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7d0dBN0pVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLHFMQ3hCckMsOGtNQWlIQTs7NEZEekZhLHdCQUF3QjtrQkFQcEMsU0FBUztzQ0FDVyx1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLHVCQUF1QixjQUdyQixLQUFLOzJKQUdWLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQW9DTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBMaWJNZW51SXRlbSB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInOyAgIFxyXG5pbXBvcnQgeyBJQ09OUyB9IGZyb20gJy4uLy4uL19jb25zdGFudHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtIH0gZnJvbSAnLi4vLi4vX2VudW1zL0l0ZW5hcmllc1JvdXRlcy5lbnVtJztcclxuaW1wb3J0IHsgSUNhcmREYXRhIH0gZnJvbSAnLi4vLi4vX2ludGVyZmFjZS9jYXJkRGF0YSc7XHJcbmltcG9ydCB7IElpY29uIH0gZnJvbSAnLi4vLi4vX2ludGVyZmFjZS9pY29uJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tc3RvcnktY2FyZCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXN0b3J5LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2N1c3RvbS1zdG9yeS1jYXJkLmNvbXBvbmVudC5zY3NzJyxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21TdG9yeUNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGxpYk1lbnVJdGVtITogTGliTWVudUl0ZW1bXTtcclxuICBASW5wdXQoKSBpc0RyYWZ0ITogYm9vbGVhbjtcclxuICBjYXJkRGF0YTogSUNhcmREYXRhIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgc2Nyb2xsVGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgaXNTY3JvbGxpbmcgPSBmYWxzZTtcclxuICBwcm9jZXNzZWRDYXJkRGF0YTogSUNhcmREYXRhIHwgdW5kZWZpbmVkO1xyXG4gIElDT05TOiBJaWNvbiA9IElDT05TO1xyXG4gIGNhcmREYXRhRm9yTG9jYXRpb25zID0ge1xyXG4gICAgbG9jYXRpb25Db2x1bW4xOiBbXHJcbiAgICAgIHsgaWNvbjogSUNPTlNbJ3RlbXAnXSwgbmFtZTogJ1BhbGFjZScgfSxcclxuICAgICAgeyBpY29uOiBJQ09OU1sncGFsYWNlMiddLCBuYW1lOiAnVGVtcGxhdGUnIH0sXHJcbiAgICAgIHsgaWNvbjogSUNPTlNbJ3BhbGFjZTInXSwgbmFtZTogJ09wdGlvbmFsJyB9LFxyXG4gICAgICB7IGljb246IElDT05TWydwYWxhY2UyJ10sIG5hbWU6ICdPcHRpb25hbCcgfSxcclxuICAgIF0sXHJcbiAgICBsb2NhdGlvbkNvbHVtbjI6IFtcclxuICAgICAgeyBpY29uOiBJQ09OU1snY29mZmVlJ10sIG5hbWU6ICdDb2ZmZWUgc2hvcCcgfSxcclxuICAgICAgeyBpY29uOiBJQ09OU1sndGVtcGxhdGUnXSwgbmFtZTogJ09wdGlvbmFsJyB9LFxyXG4gICAgICB7IGljb246IElDT05TWyd0ZW1wbGF0ZSddLCBuYW1lOiAnT3B0aW9uYWwnIH0sXHJcbiAgICAgIHsgaWNvbjogSUNPTlNbJ3RlbXBsYXRlJ10sIG5hbWU6ICdPcHRpb25hbCcgfSxcclxuICAgIF0sXHJcbiAgfTtcclxuXHJcbiAgaW1hZ2VzOiBzdHJpbmdbXSA9IFtcclxuICAgIFwiaHR0cHM6Ly9zdGF0aWMuZ29wcm8uY29tL2Fzc2V0cy9ibHRhMmI4NTIyZTUzNzJhZjQwL2JsdDJkNWViNTg1MmM2ODMwNzQvNjcxYTQyOGMyNGYyMjc0MjgxZjFmYjFhLzAyX0hQX0gxM0NFXzM3NS5qcGdcIixcclxuICAgIFwiaHR0cHM6Ly9zdGF0aWMuZ29wcm8uY29tL2Fzc2V0cy9ibHRhMmI4NTIyZTUzNzJhZjQwL2JsdDJkNWViNTg1MmM2ODMwNzQvNjcxYTQyOGMyNGYyMjc0MjgxZjFmYjFhLzAyX0hQX0gxM0NFXzM3NS5qcGdcIixcclxuICAgIFwiaHR0cHM6Ly9zdGF0aWMuZ29wcm8uY29tL2Fzc2V0cy9ibHRhMmI4NTIyZTUzNzJhZjQwL2JsdDJkNWViNTg1MmM2ODMwNzQvNjcxYTQyOGMyNGYyMjc0MjgxZjFmYjFhLzAyX0hQX0gxM0NFXzM3NS5qcGdcIlxyXG4gIF1cclxuICBpbWFnZTogc3RyaW5nID0gXCJodHRwczovL3N0YXRpYy5nb3Byby5jb20vYXNzZXRzL2JsdGEyYjg1MjJlNTM3MmFmNDAvYmx0MmQ1ZWI1ODUyYzY4MzA3NC82NzFhNDI4YzI0ZjIyNzQyODFmMWZiMWEvMDJfSFBfSDEzQ0VfMzc1LmpwZ1wiO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblxyXG4gICkgeyB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp3aGVlbCcsIFsnJGV2ZW50J10pXHJcbiAgb25XaGVlbChldmVudDogV2hlZWxFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmlzU2Nyb2xsaW5nKSB7XHJcbiAgICAgIHRoaXMuaXNTY3JvbGxpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgaWYgKGV2ZW50LmRlbHRhWSA+IDApIHtcclxuICAgICAgICAvLyBUcmlnZ2VyIHlvdXIgXCJuZXh0IHZpZGVvXCIgb3IgY29udGVudCBjaGFuZ2UgaGVyZVxyXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmRlbHRhWSA8IDApIHtcclxuICAgICAgICAvLyBUcmlnZ2VyIHlvdXIgXCJwcmV2aW91cyB2aWRlb1wiIG9yIGNvbnRlbnQgY2hhbmdlIGhlcmVcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgZ2VzdHVyZSBpcyBmaW5pc2hlZFxyXG4gICAgICB0aGlzLnNjcm9sbFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IGZhbHNlO1xyXG4gICAgICB9LCA1MDApOyAvLyBBZGp1c3QgdGhpcyBkdXJhdGlvbiB0byBmZWVsIHNtb290aGVyIG9yIHN0cmljdGVyXHJcbiAgICB9XHJcblxyXG4gICAgLy8gT3B0aW9uYWw6IHJlc2V0IHRpbWVvdXQgaWYgbmV3IHNjcm9sbCBjb21lcyBiZWZvcmUgdGltZW91dCBlbmRzXHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxUaW1lb3V0KTtcclxuICAgIHRoaXMuc2Nyb2xsVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IGZhbHNlO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcclxuICAgIHRoaXMubGliTWVudUl0ZW0gPSB0aGlzLmxpYk1lbnVJdGVtLm1hcCgodmFsKSA9PiB7XHJcbiAgICAgIGlmICh2YWwudGl0bGUgPT09ICdFRElUX0NPTU1FTlQnKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnZhbCxcclxuICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uYXZUb1VwZGF0ZUNvbW1lbnQoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIEludmFsaWREYXRhQ2hlY2soZGF0YTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF0YT8udG9TdHJpbmcoKS5sZW5ndGggPT0gMCB8fFxyXG4gICAgICBkYXRhID09IG51bGwgfHxcclxuICAgICAgZGF0YSA9PSB1bmRlZmluZWQgfHxcclxuICAgICAgZGF0YSA9PSAnMCcgfHxcclxuICAgICAgZGF0YSA9PSAwIHx8XHJcbiAgICAgIGRhdGEgPT0gJy0nXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzQ2FyZERhdGEoZGF0YTogSUNhcmREYXRhKTogSUNhcmREYXRhIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIGlkOiBkYXRhLmlkID8/ICcwJyxcclxuICAgICAgdXBWb3RlczogdGhpcy5JbnZhbGlkRGF0YUNoZWNrKGRhdGEudXBWb3RlcykgPyAnMDAnIDogZGF0YS51cFZvdGVzLFxyXG4gICAgICB0aXRsZTogdGhpcy5JbnZhbGlkRGF0YUNoZWNrKGRhdGEudGl0bGUpXHJcbiAgICAgICAgPyAnVW50aXRsZWQgSXRpbmVyYXJ5J1xyXG4gICAgICAgIDogZGF0YS50aXRsZSxcclxuICAgICAgdXNlck5hbWU6IHRoaXMuSW52YWxpZERhdGFDaGVjayhkYXRhLnVzZXJOYW1lKSA/ICdZb3UnIDogZGF0YS51c2VyTmFtZSxcclxuICAgICAgdGltZUFnbzogdGhpcy5JbnZhbGlkRGF0YUNoZWNrKGRhdGEudGltZUFnbykgPyAnJyA6IGRhdGEudGltZUFnbyxcclxuICAgICAgdXNlcnM6IHRoaXMuSW52YWxpZERhdGFDaGVjayhkYXRhLnVzZXJzKSA/IDAgOiBkYXRhLnVzZXJzLFxyXG4gICAgICB2aWV3czogdGhpcy5JbnZhbGlkRGF0YUNoZWNrKGRhdGEudmlld3MpID8gMCA6IGRhdGEudmlld3MsXHJcbiAgICAgIGNvbW1lbnRzOiB0aGlzLkludmFsaWREYXRhQ2hlY2soZGF0YS5jb21tZW50cykgPyAwIDogZGF0YS5jb21tZW50cyxcclxuICAgICAgc2hhcmVzOiB0aGlzLkludmFsaWREYXRhQ2hlY2soZGF0YS5zaGFyZXMpID8gMCA6IGRhdGEuc2hhcmVzLFxyXG4gICAgICBpbWFnZVNyYzogdGhpcy5JbnZhbGlkRGF0YUNoZWNrKGRhdGEuaW1hZ2VTcmMpXHJcbiAgICAgICAgPyBJQ09OU1sndW50aXRsZWQnXVxyXG4gICAgICAgIDogZGF0YS5pbWFnZVNyYyxcclxuICAgICAgdXNlcmltYWdlU3JjOiB0aGlzLkludmFsaWREYXRhQ2hlY2soZGF0YS51c2VyaW1hZ2VTcmMpXHJcbiAgICAgICAgPyBJQ09OU1snbm90U3BlY2lmaWVkJ11cclxuICAgICAgICA6IGRhdGEudXNlcmltYWdlU3JjLFxyXG4gICAgICBsb2NhdGlvbjogdGhpcy5JbnZhbGlkRGF0YUNoZWNrKGRhdGEubG9jYXRpb24pXHJcbiAgICAgICAgPyAnTm90IFNwZWNpZmllZCdcclxuICAgICAgICA6IGRhdGEubG9jYXRpb24sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbG9hZENhcmREYXRhKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRHJhZnQpIHtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLmdldCgnL2Fzc2V0cy9kYXRhLmpzb24nKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmREYXRhID0gZGF0YSBhcyBJQ2FyZERhdGE7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzZWRDYXJkRGF0YSA9IHRoaXMucHJvY2Vzc0NhcmREYXRhKHRoaXMuY2FyZERhdGEpO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcmREYXRhID0gdGhpcy5jcmVhdGVEdW1teUNhcmQoKTtcclxuICAgICAgdGhpcy5wcm9jZXNzZWRDYXJkRGF0YSA9IHRoaXMucHJvY2Vzc0NhcmREYXRhKHRoaXMuY2FyZERhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjcmVhdGVEdW1teUNhcmQoKTogSUNhcmREYXRhIHtcclxuICAgIGxldCBjYXJkOiBJQ2FyZERhdGE7XHJcbiAgICBjYXJkID0ge1xyXG4gICAgICBpZDogJzEnLFxyXG4gICAgICB1cFZvdGVzOiAnJyxcclxuICAgICAgZG93blZvdGVzOiA1LFxyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIHVzZXJOYW1lOiAnJyxcclxuICAgICAgdGltZUFnbzogJycsXHJcbiAgICAgIGxvY2F0aW9uOiAnJyxcclxuICAgICAgdmlld3M6IDAsXHJcbiAgICAgIGNvbW1lbnRzOiAwLFxyXG4gICAgICBzaGFyZXM6IDAsXHJcbiAgICAgIHVzZXJzOiAwLFxyXG4gICAgICBpbWFnZVNyYzogJycsXHJcbiAgICAgIHVzZXJpbWFnZVNyYzogJycsXHJcbiAgICAgIGlzRHJhZnQ6IHRydWUsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBjYXJkO1xyXG4gIH1cclxuICBoYW5kbGVNZW51ZUl0ZW1TZWxlY3QoKTogdm9pZCB7IH1cclxuICBoYW5kbGVNZW51SXRlbUNoYW5nZSgpOiB2b2lkIHsgfVxyXG4gIGhhbmRsZU1lbnVDbGljaygpOiB2b2lkIHsgfVxyXG5cclxuICBnb0JhY2soKSB7XHJcbiAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcclxuICB9XHJcblxyXG4gIC8vTkFWSUdBVElPTlxyXG4gIG5hdlRvVXBkYXRlQ29tbWVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtJdGluZXJhcmllc1JvdXRlc0VudW0uQ09NTUVOVFMsIHRoaXMuY2FyZERhdGE/LmlkXSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJvdXNlbC1jb250YWluZXIgdy1mdWxsIGJnLXRyYW5zcGFyZW50XCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcm91c2VsXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY2FyZCBhY3RpdmUgYmctY292ZXIgYmctY2VudGVyIGJnLW5vLXJlcGVhdCBzdG9yeS1pbWcgYmctdHJhbnNwYXJlbnQgbS0wXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiJ3VybCgnICsgaW1hZ2UgKyAnKSdcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLVs1MHB4XSBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJnb0JhY2soKVwiPlxyXG4gICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiSUNPTlNbJ2JhY2snXVwiIGFsdD1cIkJhY2tcIiBjbGFzcz1cInAtWzEzcHhdXCIvPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cInRleHQtc2Vjb25kYXJ5IHRleHQtWzEwcHhdIHhzOnRleHQtWzlweF0gZmxleCBnYXAtWzZweF0gaXRlbXMtY2VudGVyIG14LVs4cHhdXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1sndXNlclJlYWwnXVwiIGFsdD1cIlVzZXJcIiAvPlxyXG4gICAgICAgICAgPHNwYW4+e3sgcHJvY2Vzc2VkQ2FyZERhdGE/LnVzZXJOYW1lIH19IDwvc3Bhbj5cclxuICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIklDT05TWydraW5nJ11cIiBhbHQ9XCJGYXZvcml0ZVwiIC8+XHJcbiAgICAgICAgPC9oNT5cclxuICAgICAgICA8bGliLW1lbnUtYnRuIChzZWxlY3QpPVwiaGFuZGxlTWVudWVJdGVtU2VsZWN0KClcIiAoY2xpY2spPVwiaGFuZGxlTWVudUNsaWNrKClcIiAoY2hhbmdlKT1cImhhbmRsZU1lbnVJdGVtQ2hhbmdlKClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaWItbWVudS1jdXN0b20tY2xhc3MgbGliLW1lbnUtYmctbm9uZSBtcy1hdXRvXCIgW2Rpc2FibGVUZXh0U2hhZG93XT1cInRydWVcIiBbbWVudUl0ZW1zXT1cImxpYk1lbnVJdGVtXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1snaG9yaXpvbnRhbFdoaXRlJ11cIiBhbHQ9XCJ0cmljb2xvblwiIGNsYXNzPVwicC1bNnB4XVwiIC8+XHJcbiAgICAgICAgPC9saWItbWVudS1idG4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggcHgtWzEycHhdXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhclwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInAtWzEycHhdXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtc3RhcnQgc3RvcnktY29udGVudCBtYi1bMzBweF0gcC1bMTJweF1cIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgWzEsIDIsIDNdXCIgc3R5bGU9XCJoZWlnaHQ6IDkxLjlweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtcy1jZW50ZXIgc206dGV4dC1bMTBweF0geHM6dGV4dC1bOXB4XSBmbGV4IGZsZXgtY29sIGdhcC15LVswcHhdIHB4LTFcIj5cclxuICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiSUNPTlNbJ3Vwdm90ZSddXCIgYWx0PVwiVXB2b3RlXCIgLz5cclxuICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIiFpc0RyYWZ0ID8gJ3RleHQtcHJpbWFyeScgOiAnZHJhaC12b3Rlci1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAge3sgcHJvY2Vzc2VkQ2FyZERhdGE/LnVwVm90ZXMgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1snZG93bnZvdGUnXVwiIGFsdD1cIkRvd252b3RlXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInB5LVs4cHhdIHB4LVs0cHhdXCI+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cInRleHQtc2Vjb25kYXJ5IG1iLTIgb3BhY2l0eS04MCB0ZXh0LVsyMHB4XSB4czp0ZXh0LVsxNXB4XSBmbGV4IGdhcC1bNnB4XSBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgY2xhc3M9XCJzdG9yeS1hdmF0YXJcIiBbc3JjXT1cIklDT05TWyd1c2VyUmVhbCddXCIgYWx0PVwiVXNlclwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiLz5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0b3J5LWF1dGhvclwiPnt7IHByb2Nlc3NlZENhcmREYXRhPy51c2VyTmFtZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiSUNPTlNbJ2tpbmcnXVwiIGFsdD1cIkZhdm9yaXRlXCIgLz5cclxuICAgICAgICAgICAgPC9oNT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdG9yeS10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCBhbmQgYWxzbyBvdGhlciB0ZXh0c1xyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkLW1vcmUtdGV4dFwiPlJlYWQgTW9yZTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWVuZCBhYnNvbHV0ZSBzdG9yeS1yaWdodC1pbmZvXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1bMjZweF0gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiSUNPTlNbJ3Vwdm90ZVdoaXRlJ11cIiBhbHQ9XCJVcHZvdGVcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZvdGVzLUNvdW50XCI+XHJcbiAgICAgICAgICAgICAge3sgcHJvY2Vzc2VkQ2FyZERhdGE/LnVwVm90ZXMgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1snZG93bnZvdGVXaGl0ZSddXCIgYWx0PVwiRG93bnZvdGVcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLVsyNnB4XSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgY2xhc3M9XCJtYi1bNHB4XVwiIFtzcmNdPVwiSUNPTlNbJ21lc3NhZ2UnXVwiIGFsdD1cIk1lc3NhZ2VcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZvdGVzLUNvdW50XCI+IDIzIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1bMTZweF0gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIGNsYXNzPVwibWItWzRweF1cIiBbc3JjXT1cIklDT05TWydmb3J3YXJkJ11cIiBhbHQ9XCJGb3J3YXJkXCIgLz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2b3Rlcy1Db3VudFwiPiBTaGFyZSA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgY2xhc3M9XCJtYi1bNHB4XVwiIFtzcmNdPVwiSUNPTlNbJ2JhZGdlX2NoZWNrJ11cIiBhbHQ9XCJDaGVja1wiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXdoaXRlIGFic29sdXRlIHctZnVsbCBzdG9yeS1ib3R0b20taW5mb1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cclxuICAgICAgICAgIDxoMiBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCBzdG9yeS10aXRsZSBtYi1bOHB4XVwiPkFkdmVudHVyZSBUb3VyPC9oMj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1bMTJweF1cIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgb3BhY2l0eS04MCB0ZXh0LVsxMHB4XSB4czp0ZXh0LVs5cHhdIGZsZXggZ2FwLVs2cHhdIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIklDT05TWyd1c2VyUmVhbCddXCIgYWx0PVwiVXNlclwiIHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiAvPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IHByb2Nlc3NlZENhcmREYXRhPy51c2VyTmFtZSB9fSAtIHt7IHByb2Nlc3NlZENhcmREYXRhPy50aW1lQWdvIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiB3LWZ1bGxcIj5cclxuICAgICAgICAgIDwhLS0gTGVmdC1hbGlnbmVkIGRpdiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHNwYWNlLXgtMSBqdXN0aWZ5LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcnktYm90dG9tLWluZm8tYmFkZ2UgZWxsaXBzaXMgc3RvcnktYm90dG9tLWJ1dHRvbnMtcGlua1wiPjxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIklDT05TWyd0ZW1wJ11cIiBhbHQ9XCJQbGFjZVwiIC8+XHJcbiAgICAgICAgICAgICAgUGFsYWNlPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0b3J5LWJvdHRvbS1pbmZvLWJhZGdlIGVsbGlwc2lzIHN0b3J5LWJvdHRvbS1idXR0b25zLXdoaXRlXCI+PGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiSUNPTlNbJ2NvZmZlZSddXCIgYWx0PVwiQ29mZmVlXCIgLz5cclxuICAgICAgICAgICAgICBDb2ZmZWU8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcnktYm90dG9tLWluZm8tYmFkZ2UgZWxsaXBzaXMgc3RvcnktYm90dG9tLWJ1dHRvbnMtd2hpdGVcIj48aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1sndGVtcGxhdGUnXVwiIGFsdD1cIlRlbXBsZVwiIC8+XHJcbiAgICAgICAgICAgICAgVGVtcGxlPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0b3J5LWJvdHRvbS1pbmZvLWJhZGdlIGZvbnQtYm9sZCBzdG9yeS1ib3R0b20tYnV0dG9ucy13aGl0ZVwiPk1vcmUgKzY8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gUmlnaHQtYWxpZ25lZCBkaXYgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1lbmQgZ2FwLXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIHVzZXItdGV4dCB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBwcm9jZXNzZWRDYXJkRGF0YT8udXNlcnMgfX1cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9jZXNzZWRDYXJkRGF0YSAmJiBwcm9jZXNzZWRDYXJkRGF0YSEudXNlcnMgPiAwXCI+VXNlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJwcm9jZXNzZWRDYXJkRGF0YT8udXNlcmltYWdlU3JjXCIgYWx0PVwiVXNlclBpY1wiIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXN0b3J5LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXRpbmVyYXJ5LWxpYi9zcmMvbGliL2l0aW5lcmFyeS1hcHAvc2hhcmVkL2N1c3RvbS1zdG9yeS1jYXJkL2N1c3RvbS1zdG9yeS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL3NoYXJlZC9jdXN0b20tc3RvcnktY2FyZC9jdXN0b20tc3RvcnktY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVOLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7OztBQWMxRSxNQUFNLE9BQU8sd0JBQXdCO0lBK0J6QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbENELFdBQVcsQ0FBaUI7SUFDNUIsT0FBTyxDQUFXO0lBQzNCLFFBQVEsQ0FBd0I7SUFDeEIsYUFBYSxDQUFxQjtJQUNsQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzVCLGlCQUFpQixDQUF3QjtJQUN6QyxLQUFLLEdBQVUsS0FBSyxDQUFDO0lBQ3JCLG9CQUFvQixHQUFHO1FBQ3JCLGVBQWUsRUFBRTtZQUNmLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ3ZDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzVDLEVBQUUsSUFBSSxFQUFFLEtBQUss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ZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBMaWJNZW51SXRlbSB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInOyAgIFxyXG5pbXBvcnQgeyBJQ09OUyB9IGZyb20gJy4uLy4uL19jb25zdGFudHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtIH0gZnJvbSAnLi4vLi4vX2VudW1zL0l0ZW5hcmllc1JvdXRlcy5lbnVtJztcclxuaW1wb3J0IHsgSUNhcmREYXRhIH0gZnJvbSAnLi4vLi4vX2ludGVyZmFjZS9jYXJkRGF0YSc7XHJcbmltcG9ydCB7IElpY29uIH0gZnJvbSAnLi4vLi4vX2ludGVyZmFjZS9pY29uJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvbmF2aWdhdGlvbi1oZWxwZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLXN0b3J5LWNhcmQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1zdG9yeS1jYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9jdXN0b20tc3RvcnktY2FyZC5jb21wb25lbnQuc2NzcycsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tU3RvcnlDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBsaWJNZW51SXRlbSE6IExpYk1lbnVJdGVtW107XHJcbiAgQElucHV0KCkgaXNEcmFmdCE6IGJvb2xlYW47XHJcbiAgY2FyZERhdGE6IElDYXJkRGF0YSB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIHNjcm9sbFRpbWVvdXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGlzU2Nyb2xsaW5nID0gZmFsc2U7XHJcbiAgcHJvY2Vzc2VkQ2FyZERhdGE6IElDYXJkRGF0YSB8IHVuZGVmaW5lZDtcclxuICBJQ09OUzogSWljb24gPSBJQ09OUztcclxuICBjYXJkRGF0YUZvckxvY2F0aW9ucyA9IHtcclxuICAgIGxvY2F0aW9uQ29sdW1uMTogW1xyXG4gICAgICB7IGljb246IElDT05TWyd0ZW1wJ10sIG5hbWU6ICdQYWxhY2UnIH0sXHJcbiAgICAgIHsgaWNvbjogSUNPTlNbJ3BhbGFjZTInXSwgbmFtZTogJ1RlbXBsYXRlJyB9LFxyXG4gICAgICB7IGljb246IElDT05TWydwYWxhY2UyJ10sIG5hbWU6ICdPcHRpb25hbCcgfSxcclxuICAgICAgeyBpY29uOiBJQ09OU1sncGFsYWNlMiddLCBuYW1lOiAnT3B0aW9uYWwnIH0sXHJcbiAgICBdLFxyXG4gICAgbG9jYXRpb25Db2x1bW4yOiBbXHJcbiAgICAgIHsgaWNvbjogSUNPTlNbJ2NvZmZlZSddLCBuYW1lOiAnQ29mZmVlIHNob3AnIH0sXHJcbiAgICAgIHsgaWNvbjogSUNPTlNbJ3RlbXBsYXRlJ10sIG5hbWU6ICdPcHRpb25hbCcgfSxcclxuICAgICAgeyBpY29uOiBJQ09OU1sndGVtcGxhdGUnXSwgbmFtZTogJ09wdGlvbmFsJyB9LFxyXG4gICAgICB7IGljb246IElDT05TWyd0ZW1wbGF0ZSddLCBuYW1lOiAnT3B0aW9uYWwnIH0sXHJcbiAgICBdLFxyXG4gIH07XHJcblxyXG4gIGltYWdlczogc3RyaW5nW10gPSBbXHJcbiAgICBcImh0dHBzOi8vc3RhdGljLmdvcHJvLmNvbS9hc3NldHMvYmx0YTJiODUyMmU1MzcyYWY0MC9ibHQyZDVlYjU4NTJjNjgzMDc0LzY3MWE0MjhjMjRmMjI3NDI4MWYxZmIxYS8wMl9IUF9IMTNDRV8zNzUuanBnXCIsXHJcbiAgICBcImh0dHBzOi8vc3RhdGljLmdvcHJvLmNvbS9hc3NldHMvYmx0YTJiODUyMmU1MzcyYWY0MC9ibHQyZDVlYjU4NTJjNjgzMDc0LzY3MWE0MjhjMjRmMjI3NDI4MWYxZmIxYS8wMl9IUF9IMTNDRV8zNzUuanBnXCIsXHJcbiAgICBcImh0dHBzOi8vc3RhdGljLmdvcHJvLmNvbS9hc3NldHMvYmx0YTJiODUyMmU1MzcyYWY0MC9ibHQyZDVlYjU4NTJjNjgzMDc0LzY3MWE0MjhjMjRmMjI3NDI4MWYxZmIxYS8wMl9IUF9IMTNDRV8zNzUuanBnXCJcclxuICBdXHJcbiAgaW1hZ2U6IHN0cmluZyA9IFwiaHR0cHM6Ly9zdGF0aWMuZ29wcm8uY29tL2Fzc2V0cy9ibHRhMmI4NTIyZTUzNzJhZjQwL2JsdDJkNWViNTg1MmM2ODMwNzQvNjcxYTQyOGMyNGYyMjc0MjgxZjFmYjFhLzAyX0hQX0gxM0NFXzM3NS5qcGdcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBuYXZIZWxwZXI6IE5hdmlnYXRpb25IZWxwZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OndoZWVsJywgWyckZXZlbnQnXSlcclxuICBvbldoZWVsKGV2ZW50OiBXaGVlbEV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTY3JvbGxpbmcpIHtcclxuICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IHRydWU7XHJcblxyXG4gICAgICBpZiAoZXZlbnQuZGVsdGFZID4gMCkge1xyXG4gICAgICAgIC8vIFRyaWdnZXIgeW91ciBcIm5leHQgdmlkZW9cIiBvciBjb250ZW50IGNoYW5nZSBoZXJlXHJcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGVsdGFZIDwgMCkge1xyXG4gICAgICAgIC8vIFRyaWdnZXIgeW91ciBcInByZXZpb3VzIHZpZGVvXCIgb3IgY29udGVudCBjaGFuZ2UgaGVyZVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBXYWl0IHVudGlsIHRoZSBnZXN0dXJlIGlzIGZpbmlzaGVkXHJcbiAgICAgIHRoaXMuc2Nyb2xsVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzU2Nyb2xsaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sIDUwMCk7IC8vIEFkanVzdCB0aGlzIGR1cmF0aW9uIHRvIGZlZWwgc21vb3RoZXIgb3Igc3RyaWN0ZXJcclxuICAgIH1cclxuXHJcbiAgICAvLyBPcHRpb25hbDogcmVzZXQgdGltZW91dCBpZiBuZXcgc2Nyb2xsIGNvbWVzIGJlZm9yZSB0aW1lb3V0IGVuZHNcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRpbWVvdXQpO1xyXG4gICAgdGhpcy5zY3JvbGxUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzU2Nyb2xsaW5nID0gZmFsc2U7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xyXG4gICAgdGhpcy5saWJNZW51SXRlbSA9IHRoaXMubGliTWVudUl0ZW0ubWFwKCh2YWwpID0+IHtcclxuICAgICAgaWYgKHZhbC50aXRsZSA9PT0gJ0VESVRfQ09NTUVOVCcpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4udmFsLFxyXG4gICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5hdlRvVXBkYXRlQ29tbWVudCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgSW52YWxpZERhdGFDaGVjayhkYXRhOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBkYXRhPy50b1N0cmluZygpLmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIGRhdGEgPT0gbnVsbCB8fFxyXG4gICAgICBkYXRhID09IHVuZGVmaW5lZCB8fFxyXG4gICAgICBkYXRhID09ICcwJyB8fFxyXG4gICAgICBkYXRhID09IDAgfHxcclxuICAgICAgZGF0YSA9PSAnLSdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NDYXJkRGF0YShkYXRhOiBJQ2FyZERhdGEpOiBJQ2FyZERhdGEge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgaWQ6IGRhdGEuaWQgPz8gJzAnLFxyXG4gICAgICB1cFZvdGVzOiB0aGlzLkludmFsaWREYXRhQ2hlY2soZGF0YS51cFZvdGVzKSA/ICcwMCcgOiBkYXRhLnVwVm90ZXMsXHJcbiAgICAgIHRpdGxlOiB0aGlzLkludmFsaWREYXRhQ2hlY2soZGF0YS50aXRsZSlcclxuICAgICAgICA/ICdVbnRpdGxlZCBJdGluZXJhcnknXHJcbiAgICAgICAgOiBkYXRhLnRpdGxlLFxyXG4gICAgICB1c2VyTmFtZTogdGhpcy5JbnZhbGlkRGF0YUNoZWNrKGRhdGEudXNlck5hbWUpID8gJ1lvdScgOiBkYXRhLnVzZXJOYW1lLFxyXG4gICAgICB0aW1lQWdvOiB0aGlzLkludmFsaWREYXRhQ2hlY2soZGF0YS50aW1lQWdvKSA/ICcnIDogZGF0YS50aW1lQWdvLFxyXG4gICAgICB1c2VyczogdGhpcy5JbnZhbGlkRGF0YUNoZWNrKGRhdGEudXNlcnMpID8gMCA6IGRhdGEudXNlcnMsXHJcbiAgICAgIHZpZXdzOiB0aGlzLkludmFsaWREYXRhQ2hlY2soZGF0YS52aWV3cykgPyAwIDogZGF0YS52aWV3cyxcclxuICAgICAgY29tbWVudHM6IHRoaXMuSW52YWxpZERhdGFDaGVjayhkYXRhLmNvbW1lbnRzKSA/IDAgOiBkYXRhLmNvbW1lbnRzLFxyXG4gICAgICBzaGFyZXM6IHRoaXMuSW52YWxpZERhdGFDaGVjayhkYXRhLnNoYXJlcykgPyAwIDogZGF0YS5zaGFyZXMsXHJcbiAgICAgIGltYWdlU3JjOiB0aGlzLkludmFsaWREYXRhQ2hlY2soZGF0YS5pbWFnZVNyYylcclxuICAgICAgICA/IElDT05TWyd1bnRpdGxlZCddXHJcbiAgICAgICAgOiBkYXRhLmltYWdlU3JjLFxyXG4gICAgICB1c2VyaW1hZ2VTcmM6IHRoaXMuSW52YWxpZERhdGFDaGVjayhkYXRhLnVzZXJpbWFnZVNyYylcclxuICAgICAgICA/IElDT05TWydub3RTcGVjaWZpZWQnXVxyXG4gICAgICAgIDogZGF0YS51c2VyaW1hZ2VTcmMsXHJcbiAgICAgIGxvY2F0aW9uOiB0aGlzLkludmFsaWREYXRhQ2hlY2soZGF0YS5sb2NhdGlvbilcclxuICAgICAgICA/ICdOb3QgU3BlY2lmaWVkJ1xyXG4gICAgICAgIDogZGF0YS5sb2NhdGlvbixcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBsb2FkQ2FyZERhdGEoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNEcmFmdCkge1xyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0KCcvYXNzZXRzL2RhdGEuanNvbicpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZERhdGEgPSBkYXRhIGFzIElDYXJkRGF0YTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NlZENhcmREYXRhID0gdGhpcy5wcm9jZXNzQ2FyZERhdGEodGhpcy5jYXJkRGF0YSk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FyZERhdGEgPSB0aGlzLmNyZWF0ZUR1bW15Q2FyZCgpO1xyXG4gICAgICB0aGlzLnByb2Nlc3NlZENhcmREYXRhID0gdGhpcy5wcm9jZXNzQ2FyZERhdGEodGhpcy5jYXJkRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNyZWF0ZUR1bW15Q2FyZCgpOiBJQ2FyZERhdGEge1xyXG4gICAgbGV0IGNhcmQ6IElDYXJkRGF0YTtcclxuICAgIGNhcmQgPSB7XHJcbiAgICAgIGlkOiAnMScsXHJcbiAgICAgIHVwVm90ZXM6ICcnLFxyXG4gICAgICBkb3duVm90ZXM6IDUsXHJcbiAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgdXNlck5hbWU6ICcnLFxyXG4gICAgICB0aW1lQWdvOiAnJyxcclxuICAgICAgbG9jYXRpb246ICcnLFxyXG4gICAgICB2aWV3czogMCxcclxuICAgICAgY29tbWVudHM6IDAsXHJcbiAgICAgIHNoYXJlczogMCxcclxuICAgICAgdXNlcnM6IDAsXHJcbiAgICAgIGltYWdlU3JjOiAnJyxcclxuICAgICAgdXNlcmltYWdlU3JjOiAnJyxcclxuICAgICAgaXNEcmFmdDogdHJ1ZSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGNhcmQ7XHJcbiAgfVxyXG4gIGhhbmRsZU1lbnVlSXRlbVNlbGVjdCgpOiB2b2lkIHsgfVxyXG4gIGhhbmRsZU1lbnVJdGVtQ2hhbmdlKCk6IHZvaWQgeyB9XHJcbiAgaGFuZGxlTWVudUNsaWNrKCk6IHZvaWQgeyB9XHJcblxyXG4gIGdvQmFjaygpIHtcclxuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgLy9OQVZJR0FUSU9OXHJcbiAgbmF2VG9VcGRhdGVDb21tZW50KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FyZERhdGE/LmlkKSB7XHJcbiAgICAgIHRoaXMubmF2SGVscGVyLm5hdmlnYXRlKFtJdGluZXJhcmllc1JvdXRlc0VudW0uQ09NTUVOVFNfUk9VVEUsIHRoaXMuY2FyZERhdGEuaWRdLCB0aGlzLnJvdXRlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcm91c2VsLWNvbnRhaW5lciB3LWZ1bGwgYmctdHJhbnNwYXJlbnRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWxcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjYXJkIGFjdGl2ZSBiZy1jb3ZlciBiZy1jZW50ZXIgYmctbm8tcmVwZWF0IHN0b3J5LWltZyBiZy10cmFuc3BhcmVudCBtLTBcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCIndXJsKCcgKyBpbWFnZSArICcpJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtWzUwcHhdIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImdvQmFjaygpXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1snYmFjayddXCIgYWx0PVwiQmFja1wiIGNsYXNzPVwicC1bMTNweF1cIi8+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgdGV4dC1bMTBweF0geHM6dGV4dC1bOXB4XSBmbGV4IGdhcC1bNnB4XSBpdGVtcy1jZW50ZXIgbXgtWzhweF1cIj5cclxuICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIklDT05TWyd1c2VyUmVhbCddXCIgYWx0PVwiVXNlclwiIC8+XHJcbiAgICAgICAgICA8c3Bhbj57eyBwcm9jZXNzZWRDYXJkRGF0YT8udXNlck5hbWUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiSUNPTlNbJ2tpbmcnXVwiIGFsdD1cIkZhdm9yaXRlXCIgLz5cclxuICAgICAgICA8L2g1PlxyXG4gICAgICAgIDxsaWItbWVudS1idG4gKHNlbGVjdCk9XCJoYW5kbGVNZW51ZUl0ZW1TZWxlY3QoKVwiIChjbGljayk9XCJoYW5kbGVNZW51Q2xpY2soKVwiIChjaGFuZ2UpPVwiaGFuZGxlTWVudUl0ZW1DaGFuZ2UoKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxpYi1tZW51LWN1c3RvbS1jbGFzcyBsaWItbWVudS1iZy1ub25lIG1zLWF1dG9cIiBbZGlzYWJsZVRleHRTaGFkb3ddPVwidHJ1ZVwiIFttZW51SXRlbXNdPVwibGliTWVudUl0ZW1cIj5cclxuICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIklDT05TWydob3Jpem9udGFsV2hpdGUnXVwiIGFsdD1cInRyaWNvbG9uXCIgY2xhc3M9XCJwLVs2cHhdXCIgLz5cclxuICAgICAgICA8L2xpYi1tZW51LWJ0bj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBweC1bMTJweF1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhclwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicC1bMTJweF1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBzdG9yeS1jb250ZW50IG1iLVszMHB4XSBwLVsxMnB4XVwiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBbMSwgMiwgM11cIiBzdHlsZT1cImhlaWdodDogOTEuOXB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1zLWNlbnRlciBzbTp0ZXh0LVsxMHB4XSB4czp0ZXh0LVs5cHhdIGZsZXggZmxleC1jb2wgZ2FwLXktWzBweF0gcHgtMVwiPlxyXG4gICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1sndXB2b3RlJ11cIiBhbHQ9XCJVcHZvdGVcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiIWlzRHJhZnQgPyAndGV4dC1wcmltYXJ5JyA6ICdkcmFoLXZvdGVyLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICB7eyBwcm9jZXNzZWRDYXJkRGF0YT8udXBWb3RlcyB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIklDT05TWydkb3dudm90ZSddXCIgYWx0PVwiRG93bnZvdGVcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktWzhweF0gcHgtWzRweF1cIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgbWItMiBvcGFjaXR5LTgwIHRleHQtWzIwcHhdIHhzOnRleHQtWzE1cHhdIGZsZXggZ2FwLVs2cHhdIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBjbGFzcz1cInN0b3J5LWF2YXRhclwiIFtzcmNdPVwiSUNPTlNbJ3VzZXJSZWFsJ11cIiBhbHQ9XCJVc2VyXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIvPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcnktYXV0aG9yXCI+e3sgcHJvY2Vzc2VkQ2FyZERhdGE/LnVzZXJOYW1lIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1sna2luZyddXCIgYWx0PVwiRmF2b3JpdGVcIiAvPlxyXG4gICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cInN0b3J5LXRleHRcIj5cclxuICAgICAgICAgICAgICAgIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IGFuZCBhbHNvIG90aGVyIHRleHRzXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWQtbW9yZS10ZXh0XCI+UmVhZCBNb3JlPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktZW5kIGFic29sdXRlIHN0b3J5LXJpZ2h0LWluZm9cIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLVsyNnB4XSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1sndXB2b3RlV2hpdGUnXVwiIGFsdD1cIlVwdm90ZVwiIC8+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidm90ZXMtQ291bnRcIj5cclxuICAgICAgICAgICAgICB7eyBwcm9jZXNzZWRDYXJkRGF0YT8udXBWb3RlcyB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIklDT05TWydkb3dudm90ZVdoaXRlJ11cIiBhbHQ9XCJEb3dudm90ZVwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItWzI2cHhdIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBjbGFzcz1cIm1iLVs0cHhdXCIgW3NyY109XCJJQ09OU1snbWVzc2FnZSddXCIgYWx0PVwiTWVzc2FnZVwiIC8+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidm90ZXMtQ291bnRcIj4gMjMgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLVsxNnB4XSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgY2xhc3M9XCJtYi1bNHB4XVwiIFtzcmNdPVwiSUNPTlNbJ2ZvcndhcmQnXVwiIGFsdD1cIkZvcndhcmRcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZvdGVzLUNvdW50XCI+IFNoYXJlIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBjbGFzcz1cIm1iLVs0cHhdXCIgW3NyY109XCJJQ09OU1snYmFkZ2VfY2hlY2snXVwiIGFsdD1cIkNoZWNrXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtd2hpdGUgYWJzb2x1dGUgdy1mdWxsIHN0b3J5LWJvdHRvbS1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxyXG4gICAgICAgICAgPGgyIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHN0b3J5LXRpdGxlIG1iLVs4cHhdXCI+QWR2ZW50dXJlIFRvdXI8L2gyPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLVsxMnB4XVwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSBvcGFjaXR5LTgwIHRleHQtWzEwcHhdIHhzOnRleHQtWzlweF0gZmxleCBnYXAtWzZweF0gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiSUNPTlNbJ3VzZXJSZWFsJ11cIiBhbHQ9XCJVc2VyXCIgd2lkdGg9XCIxMnB4XCIgaGVpZ2h0PVwiMTJweFwiIC8+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgcHJvY2Vzc2VkQ2FyZERhdGE/LnVzZXJOYW1lIH19IC0ge3sgcHJvY2Vzc2VkQ2FyZERhdGE/LnRpbWVBZ28gfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHctZnVsbFwiPlxyXG4gICAgICAgICAgPCEtLSBMZWZ0LWFsaWduZWQgZGl2IC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggc3BhY2UteC0xIGp1c3RpZnktc3RhcnRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdG9yeS1ib3R0b20taW5mby1iYWRnZSBlbGxpcHNpcyBzdG9yeS1ib3R0b20tYnV0dG9ucy1waW5rXCI+PGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiSUNPTlNbJ3RlbXAnXVwiIGFsdD1cIlBsYWNlXCIgLz5cclxuICAgICAgICAgICAgICBQYWxhY2U8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcnktYm90dG9tLWluZm8tYmFkZ2UgZWxsaXBzaXMgc3RvcnktYm90dG9tLWJ1dHRvbnMtd2hpdGVcIj48aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1snY29mZmVlJ11cIiBhbHQ9XCJDb2ZmZWVcIiAvPlxyXG4gICAgICAgICAgICAgIENvZmZlZTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdG9yeS1ib3R0b20taW5mby1iYWRnZSBlbGxpcHNpcyBzdG9yeS1ib3R0b20tYnV0dG9ucy13aGl0ZVwiPjxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIklDT05TWyd0ZW1wbGF0ZSddXCIgYWx0PVwiVGVtcGxlXCIgLz5cclxuICAgICAgICAgICAgICBUZW1wbGU8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcnktYm90dG9tLWluZm8tYmFkZ2UgZm9udC1ib2xkIHN0b3J5LWJvdHRvbS1idXR0b25zLXdoaXRlXCI+TW9yZSArNjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSBSaWdodC1hbGlnbmVkIGRpdiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWVuZCBnYXAteC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgdXNlci10ZXh0IHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHByb2Nlc3NlZENhcmREYXRhPy51c2VycyB9fVxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByb2Nlc3NlZENhcmREYXRhICYmIHByb2Nlc3NlZENhcmREYXRhIS51c2VycyA+IDBcIj5Vc2Vyczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cInByb2Nlc3NlZENhcmREYXRhPy51c2VyaW1hZ2VTcmNcIiBhbHQ9XCJVc2VyUGljXCIgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==