buildingproduct-library 0.2.76 → 0.2.78

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 (116) hide show
  1. package/assets/images/pdf-icon.svg +45 -0
  2. package/{buildingproduct-library-0.2.76.tgz → buildingproduct-library-0.2.78.tgz} +0 -0
  3. package/bundles/buildingproduct-library.umd.js +3471 -2489
  4. package/bundles/buildingproduct-library.umd.js.map +1 -1
  5. package/esm2015/lib/account-dropdown/account-dropdown.component.js +38 -4
  6. package/esm2015/lib/account-dropdown/account-dropdown.service.js +3 -3
  7. package/esm2015/lib/checkout/add-new-address/add-new-address.component.js +22 -13
  8. package/esm2015/lib/checkout/checkout.module.js +10 -2
  9. package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +7 -28
  10. package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +2 -3
  11. package/esm2015/lib/checkout/order-review/delivery-information/delivery-information.component.js +1 -1
  12. package/esm2015/lib/checkout/order-review/order-review-grid/order-review-grid.component.js +86 -16
  13. package/esm2015/lib/checkout/order-review/order-review-list/order-review-list.component.js +72 -15
  14. package/esm2015/lib/checkout/order-review/order-review.component.js +3 -27
  15. package/esm2015/lib/contact-us/contact-us.component.js +1 -1
  16. package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +2 -2
  17. package/esm2015/lib/custom-cart/custom-cart.component.js +3 -27
  18. package/esm2015/lib/custom-cart/custom-cart.module.js +3 -3
  19. package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +110 -52
  20. package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +2 -2
  21. package/esm2015/lib/custom-navigation/custom-navigation.component.js +122 -0
  22. package/esm2015/lib/custom-navigation/custom-navigation.module.js +3 -3
  23. package/esm2015/lib/custom-order-details/custom-order-details.component.js +26 -21
  24. package/esm2015/lib/custom-order-details/custom-order-details.module.js +15 -7
  25. package/esm2015/lib/custom-order-details/download-popup/download-popup.component.js +1 -1
  26. package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +105 -22
  27. package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +89 -23
  28. package/esm2015/lib/custom-order-history/custom-order-history.component.js +49 -22
  29. package/esm2015/lib/custom-order-history/custom-order-history.module.js +10 -2
  30. package/esm2015/lib/custom-order-history/slider-progress/slider-progress.component.js +1 -1
  31. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +2 -2
  32. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.js +2 -2
  33. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +4 -28
  34. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +1 -1
  35. package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +6 -4
  36. package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +2 -2
  37. package/esm2015/lib/custom-saved-cart/saved-cart.service.js +11 -2
  38. package/esm2015/lib/custom-search/custom-search.component.js +3 -3
  39. package/esm2015/lib/custom-user-account/custom-user-account.component.js +2 -2
  40. package/esm2015/lib/directives/custom-directives.module.js +1 -1
  41. package/esm2015/lib/directives/custom-paginatior.directive.js +101 -31
  42. package/esm2015/lib/find-store/find-store.component.js +2 -2
  43. package/esm2015/lib/help-support/help-support.component.js +1 -1
  44. package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +2 -2
  45. package/esm2015/lib/my-account/account-statements/account-statements.component.js +2 -2
  46. package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +51 -17
  47. package/esm2015/lib/my-account/my-account.component.js +2 -2
  48. package/esm2015/lib/my-account/my-account.module.js +11 -3
  49. package/esm2015/lib/my-team/my-team.component.js +25 -17
  50. package/esm2015/lib/my-team/my-team.module.js +11 -7
  51. package/esm2015/lib/services/endPointURL.js +6 -1
  52. package/esm2015/lib/services/user-account-detail-service.service.js +172 -4
  53. package/esm2015/lib/shared/CustomProduct.js +5 -4
  54. package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +20 -11
  55. package/esm2015/lib/shared/custom-breadcrum/custom-breadcrum.component.js +17 -7
  56. package/esm2015/lib/shared/custom-cart-detail/custom-cart-detail.component.js +1 -1
  57. package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +198 -102
  58. package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +64 -22
  59. package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +129 -80
  60. package/esm2015/lib/shared/date-range-picker/date-range-picker.component.js +59 -9
  61. package/esm2015/lib/shared/regEx.validator.js +3 -1
  62. package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +1 -1
  63. package/esm2015/lib/shared/shared-components.module.js +21 -10
  64. package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +116 -31
  65. package/esm2015/lib/spa-custom-header.module.js +14 -13
  66. package/esm2015/public-api.js +2 -2
  67. package/fesm2015/buildingproduct-library.js +1996 -1081
  68. package/fesm2015/buildingproduct-library.js.map +1 -1
  69. package/lib/checkout/add-new-address/add-new-address.component.d.ts +1 -0
  70. package/lib/checkout/checkout.module.d.ts +12 -10
  71. package/lib/checkout/custom-checkout/custom-checkout.component.d.ts +2 -5
  72. package/lib/checkout/order-review/order-review-grid/order-review-grid.component.d.ts +8 -2
  73. package/lib/checkout/order-review/order-review-list/order-review-list.component.d.ts +5 -2
  74. package/lib/checkout/order-review/order-review.component.d.ts +1 -4
  75. package/lib/custom-cart/custom-cart.component.d.ts +1 -4
  76. package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +11 -3
  77. package/lib/custom-navigation/{custom-navigation/custom-navigation.component.d.ts → custom-navigation.component.d.ts} +1 -1
  78. package/lib/custom-navigation/custom-navigation.module.d.ts +1 -1
  79. package/lib/custom-order-details/custom-order-details.component.d.ts +5 -2
  80. package/lib/custom-order-details/custom-order-details.module.d.ts +6 -4
  81. package/lib/custom-order-details/order-detail-grid/order-detail-grid.component.d.ts +14 -4
  82. package/lib/custom-order-details/order-detail-list/order-detail-list.component.d.ts +10 -3
  83. package/lib/custom-order-history/custom-order-history.component.d.ts +3 -0
  84. package/lib/custom-order-history/custom-order-history.module.d.ts +8 -6
  85. package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.d.ts +1 -4
  86. package/lib/custom-saved-cart/custom-saved-cart.component.d.ts +1 -0
  87. package/lib/custom-saved-cart/saved-cart.service.d.ts +1 -0
  88. package/lib/custom-search/custom-search.component.d.ts +1 -1
  89. package/lib/directives/custom-paginatior.directive.d.ts +6 -1
  90. package/lib/find-store/find-store.component.d.ts +1 -1
  91. package/lib/my-account/account-statements/account-statements.component.d.ts +1 -1
  92. package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +8 -2
  93. package/lib/my-account/my-account.component.d.ts +1 -1
  94. package/lib/my-account/my-account.module.d.ts +7 -5
  95. package/lib/my-team/my-team.component.d.ts +2 -0
  96. package/lib/my-team/my-team.module.d.ts +7 -6
  97. package/lib/services/endPointURL.d.ts +3 -0
  98. package/lib/services/user-account-detail-service.service.d.ts +27 -1
  99. package/lib/shared/CustomProduct.d.ts +1 -0
  100. package/lib/shared/active-saved-cart/active-saved-cart.component.d.ts +3 -1
  101. package/lib/shared/custom-breadcrum/custom-breadcrum.component.d.ts +3 -1
  102. package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +17 -9
  103. package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +8 -6
  104. package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +11 -3
  105. package/lib/shared/date-range-picker/date-range-picker.component.d.ts +11 -3
  106. package/lib/shared/regEx.validator.d.ts +2 -0
  107. package/lib/shared/shared-components.module.d.ts +10 -8
  108. package/lib/shared/shared-download-order/shared-download-order.component.d.ts +6 -4
  109. package/lib/spa-custom-header.module.d.ts +7 -6
  110. package/package.json +3 -1
  111. package/public-api.d.ts +1 -1
  112. package/esm2015/lib/custom-navigation/custom-navigation/custom-navigation.component.js +0 -121
  113. package/esm2015/lib/preference/preference.component.js +0 -19
  114. package/esm2015/lib/preference/preference.module.js +0 -45
  115. package/lib/preference/preference.component.d.ts +0 -8
  116. package/lib/preference/preference.module.d.ts +0 -10
@@ -8,9 +8,10 @@ import * as i3 from "@spartacus/core";
8
8
  import * as i4 from "@spartacus/user/account/core";
9
9
  import * as i5 from "../shared/custom-breadcrum/custom-breadcrum.component";
10
10
  import * as i6 from "@angular/material/paginator";
11
- import * as i7 from "@ng-bootstrap/ng-bootstrap";
12
- import * as i8 from "@angular/common";
13
- import * as i9 from "../directives/custom-paginatior.directive";
11
+ import * as i7 from "@angular/material/radio";
12
+ import * as i8 from "@ng-bootstrap/ng-bootstrap";
13
+ import * as i9 from "@angular/common";
14
+ import * as i10 from "../directives/custom-paginatior.directive";
14
15
  export class MyTeamComponent {
15
16
  constructor(formBuilder, teamMemberService, cd, cmsService, userService) {
16
17
  this.formBuilder = formBuilder;
@@ -64,6 +65,7 @@ export class MyTeamComponent {
64
65
  this.accountLength = [];
65
66
  this.currentUserRole = '';
66
67
  this.showActiveDeactiveModal = false;
68
+ this.selectedRole = '';
67
69
  }
68
70
  ngOnInit() {
69
71
  this.breadcrumbData.push({ url: '/', name: 'Home' }, { url: '/', name: 'My Team' });
@@ -89,7 +91,7 @@ export class MyTeamComponent {
89
91
  mobile: [
90
92
  '',
91
93
  [
92
- Validators.required,
94
+ //Validators.required,
93
95
  Validators.minLength(10),
94
96
  Validators.maxLength(16),
95
97
  ],
@@ -131,6 +133,7 @@ export class MyTeamComponent {
131
133
  return this.registerForm.controls;
132
134
  }
133
135
  clearEdit() {
136
+ this.isError = false;
134
137
  this.isEdit = false;
135
138
  this.selectedItemsList = [];
136
139
  this.orgUnits = null;
@@ -203,6 +206,7 @@ export class MyTeamComponent {
203
206
  this.isError = false;
204
207
  }
205
208
  inviteMember() {
209
+ this.isError = false;
206
210
  this.selectedRowData = {};
207
211
  this.showModal = true;
208
212
  this.getAllUnits();
@@ -212,13 +216,11 @@ export class MyTeamComponent {
212
216
  this.submitted = false;
213
217
  this.registerForm.reset();
214
218
  this.initializeInviteForm();
219
+ this.selectedRole = '';
215
220
  this.cd.detectChanges();
216
221
  }
217
222
  editMember(data) {
218
- if (this.currentUserEmail == data.displayUid) {
219
- this.showModal = false;
220
- return;
221
- }
223
+ this.isError = false;
222
224
  this.selectedItemsList = [];
223
225
  this.selectedOrgUnits = [];
224
226
  this.isEdit = true;
@@ -230,6 +232,7 @@ export class MyTeamComponent {
230
232
  this.getRoles();
231
233
  }
232
234
  changeStatus(data) {
235
+ this.isError = false;
233
236
  if (this.currentUserEmail == data.displayUid) {
234
237
  this.showActiveDeactiveModal = false;
235
238
  return;
@@ -246,6 +249,7 @@ export class MyTeamComponent {
246
249
  }
247
250
  }
248
251
  updateStatus() {
252
+ this.isError = false;
249
253
  let reqData = {
250
254
  customerId: this.selectedUid,
251
255
  active: !this.selectedStatus,
@@ -257,6 +261,8 @@ export class MyTeamComponent {
257
261
  this.showWaitCursor.next(false);
258
262
  this.getTeamList();
259
263
  }, (error) => {
264
+ this.errorMessage = error.error.errors[0].message;
265
+ this.isError = true;
260
266
  this.showToast = false;
261
267
  this.showWaitCursor.next(false);
262
268
  });
@@ -304,13 +310,9 @@ export class MyTeamComponent {
304
310
  this.userAllRoles = rolesData;
305
311
  }
306
312
  changeSelection(event, data) {
307
- if (event.currentTarget.checked) {
308
- this.selectedItemsList.push(data);
309
- }
310
- else {
311
- const ind = this.selectedItemsList.findIndex((element) => element.uid == data.uid);
312
- this.selectedItemsList.splice(ind, 1);
313
- }
313
+ this.selectedRole = data.uid;
314
+ this.selectedItemsList = [];
315
+ this.selectedItemsList.push(data);
314
316
  }
315
317
  fetchSelectedItems() {
316
318
  this.selectedItemsList = [];
@@ -360,6 +362,7 @@ export class MyTeamComponent {
360
362
  this.cd.detectChanges();
361
363
  if (this.selectedUid != undefined && this.selectedUid) {
362
364
  this.selectedRowData.roles.forEach((element) => {
365
+ var _a;
363
366
  this.defaultRoles.forEach((data) => {
364
367
  if (data.uid === element) {
365
368
  data.selected = true;
@@ -367,6 +370,7 @@ export class MyTeamComponent {
367
370
  this.cd.markForCheck();
368
371
  }
369
372
  });
373
+ this.selectedRole = (_a = this.selectedItemsList[0]) === null || _a === void 0 ? void 0 : _a.uid;
370
374
  });
371
375
  }
372
376
  }
@@ -381,6 +385,10 @@ export class MyTeamComponent {
381
385
  closeUpdateToast() {
382
386
  this.createUpdateToast = false;
383
387
  }
388
+ findOrgUnit(data) {
389
+ var _a, _b;
390
+ return (_b = (_a = this.orgUnits) === null || _a === void 0 ? void 0 : _a.find((element) => element.uid == data.uid)) === null || _b === void 0 ? void 0 : _b.name;
391
+ }
384
392
  checkOrgUnit(event, data) {
385
393
  if (event.currentTarget.checked) {
386
394
  this.selectedOrgUnits.push(data);
@@ -419,7 +427,7 @@ export class MyTeamComponent {
419
427
  }
420
428
  }
421
429
  MyTeamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MyTeamComponent, deps: [{ token: i1.FormBuilder }, { token: i2.TeamMemberService }, { token: i0.ChangeDetectorRef }, { token: i3.CmsService }, { token: i4.UserAccountService }], target: i0.ɵɵFactoryTarget.Component });
422
- MyTeamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MyTeamComponent, selector: "lib-my-team", viewQueries: [{ propertyName: "closeConfirmModal", first: true, predicate: ["closeConfirmModal"], descendants: true }, { propertyName: "closeInviteModal", first: true, predicate: ["closeInviteModal"], descendants: true }], ngImport: i0, template: "<div class=\"loading \" *ngIf=\"showWaitCursor | async \">Loading&#8230;</div>\r\n<app-custom-breadcrum [customCrumbData]=\"breadcrumbData\" class=\"products-breadcums\"></app-custom-breadcrum>\r\n<ng-container *ngIf=\"isTeamAvailable == 'hasData' \">\r\n <div class=\"team-members\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-8 col-12 m-auto\">\r\n <h1 class=\"heading\">\r\n My Team\r\n </h1>\r\n <p>{{myTeamParagraph?.content}}</p>\r\n </div>\r\n <div class=\"col-sm-4 col-12 d-flex justify-content-end\">\r\n <div class=\"invite-btn-bg\">\r\n <button type=\"button\" class=\"btn mobile-invite-btn dimond-primary-btn\" data-toggle=\"modal\" data-target=\"#inviteMemberModal\" (click)=\"inviteMember()\">Invite Member</button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col col-12 m-auto\">\r\n <div class=\"dropdown sort-by d-flex align-items-center justify-content-between\">\r\n <h6 class=\"members-count\">{{totalRecords}} members in your team</h6>\r\n <select name=\"\" id=\"\" class=\"sort-btn\" (change)=\"sortBy($event)\">\r\n <option value=\"byName\" selected>Sort by: Name (Ascending)</option>\r\n <option value=\"byNameDesc\">Sort by: Name (Descending)</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table members-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">Name</th>\r\n <th scope=\"col\">Account</th>\r\n <th scope=\"col\">Role</th>\r\n <th scope=\"col\">Email</th>\r\n <th scope=\"col\">Mobile #</th>\r\n <th scope=\"col\">Status</th>\r\n <th scope=\"col\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [ngClass]=\"{'disabled-text': team.active == false}\" *ngFor=\"let team of dataSource; let i= index\">\r\n <td>{{team.name}}</td>\r\n <td>\r\n <ul>\r\n <li class=\"ellipsis\" *ngFor=\"let account of team?.accounts?.slice(0,3)\">\r\n {{account.name}}</li>\r\n <ng-container *ngIf=\"team?.accounts?.length > 3\">\r\n <li class=\"viewMore-link\" data-toggle=\"modal\" data-target=\"#accountModal\" (click)=\"viewMore(team.accounts, team.name)\">+ {{getMoreCount(team.accounts, team)}} more</li>\r\n </ng-container>\r\n </ul>\r\n </td>\r\n <td>\r\n <ul>\r\n <li *ngFor=\"let role of team?.displayRoles?.slice(0,3)\">{{role}}</li>\r\n <ng-container *ngIf=\"team?.displayRoles?.length > 3\">\r\n <li class=\"viewMore-link\" data-toggle=\"modal\" data-target=\"#rolesModal\" (click)=\"viewMoreRoles(team.displayRoles, team.name )\">+ {{team.displayRoles.length - 3}} more</li>\r\n </ng-container>\r\n </ul>\r\n </td>\r\n <td>{{team.displayUid}}</td>\r\n <td>{{team.phoneNumber}}</td>\r\n <td [ngClass]=\"team.active == true ? 'status-active' : 'status-deactive'\">\r\n {{team.active == true ? 'Active' : 'Deactivated'}}</td>\r\n <td>\r\n <div class=\"d-flex justify-content-between action-item\">\r\n <img [src]=\"team.active == false || (currentUserRole == 'B2B Manager' && team?.roles.includes('B2B Owner')) ?'../../../../assets/images/EditIcondisabled.svg' : '../../../../assets/images/EditIconEnabled.svg'\" [ngClass]=\"{'disabled': (team.active == false || (currentUserRole == 'B2B Manager' && team?.roles.includes('B2B Owner')) )}\"\r\n alt=\"edit\" data-toggle=\"modal\" data-target=\"#inviteMemberModal\" (click)=\"editMember(dataSource[i])\">\r\n <img placement=\"bottom\" ngbTooltip=\"{{team.active == false ? 'Activate' : 'Deactivate'}}\" [src]=\"team.active == false ? '../../../../assets/images/ActivateIcon.svg' : '../../../../assets/images/DisableIcon.svg' \" [ngClass]=\"{'disabled': (currentUserEmail == team?.displayUid || (currentUserRole == 'B2B Manager' && team?.roles.includes('B2B Owner')))}\"\r\n alt=\"activate\" data-toggle=\"modal\" data-target=\"#memberActivateModal\" (click)=\"changeStatus(dataSource[i])\">\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <mat-paginator appPagination [hidden]=\"myTeamListData && myTeamListData?.length == 0\" [length]=\"testPaginator?.length\" [pageSizeOptions]=\"[20, 40, 60 ]\" (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"isTeamAvailable == 'noData'\">\r\n <div class=\"container noteam-text\">\r\n <div class=\"row justify-content-md-center\">\r\n <div class=\"col-sm-9 col-sm-offset-3\">\r\n <div class=\"text-center\">\r\n <img class=\"mb-4\" src=\"../../../../assets/images/AlertIcon.svg\" alt=\"alert\">\r\n <h3 class=\"mb-2\">Your team list is empty!</h3>\r\n <p>{{myTeamParagraph?.content}}</p>\r\n <button type=\"button\" class=\"btn add-btn\" data-toggle=\"modal\" data-target=\"#inviteMemberModal\" (click)=\"inviteMember()\">Invite Member</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<div class=\"modal fade\" *ngIf=\"showModal\" id=\"inviteMemberModal\" role=\"dialog\" aria-labelledby=\"inviteMemberLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" role=\"document\" *ngIf=\"showModal\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{isEdit == true ? 'Edit' : 'Invite'}} Member</h5>\r\n <i class=\"icon-close invite-pop-close\" #closeInviteModal data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"clearEdit()\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"register-form\">\r\n <form [formGroup]=\"registerForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"modal-scroll\">\r\n <div class=\"form-group\">\r\n <label class=\"required\">First Name</label>\r\n <input type=\"text\" formControlName=\"firstName\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': submitted && f.firstName.errors }\" [(ngModel)]=\"selectedRowData.firstName\" />\r\n <div *ngIf=\"submitted && f.firstName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.firstName.errors.required\">First name is required</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Last Name</label>\r\n <input type=\"text\" formControlName=\"lastName\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': submitted && f.lastName.errors }\" [(ngModel)]=\"selectedRowData.lastName\" />\r\n <div *ngIf=\"submitted && f.lastName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.lastName.errors.required\">Last name is required</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Email</label>\r\n <input type=\"text\" formControlName=\"email\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': submitted && f.email.errors }\" [(ngModel)]=\"selectedRowData.displayUid\" [readonly]=\"isEdit == true\" />\r\n <div *ngIf=\"submitted && f.email.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.email.errors.required\">Email is required</div>\r\n <div *ngIf=\"f.email.errors.email\">Email is invalid</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Mobile</label>\r\n <input inputmode=\"numeric\" type=\"tel\" formControlName=\"mobile\" maxlength=\"16\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': submitted && f.mobile.errors }\" [(ngModel)]=\"selectedRowData.phoneNumber\" (keypress)=\"numberOnly($event)\" (keyup)=\"numberMobile($event)\"\r\n />\r\n <div *ngIf=\"submitted && f.mobile.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.mobile.errors.required\">Mobile is required</div>\r\n <div *ngIf=\"f.mobile.errors.minlength\">\r\n Number must be at least 10 characters\r\n </div>\r\n <div *ngIf=\"f.mobile.errors.maxlength\">\r\n Number must not exceed 16 characters\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Desk Phone</label>\r\n <input inputmode=\"numeric\" type=\"tel\" formControlName=\"deskPhone\" class=\"form-control\" (keypress)=\"numberOnly($event)\" (keyup)=\"numberMobile($event)\" [(ngModel)]=\"selectedRowData.deskPhone\" />\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Job Title</label>\r\n <input type=\"text\" formControlName=\"jobTitle\" class=\"form-control\" [(ngModel)]=\"selectedRowData.jobTitle\" />\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Account</label>\r\n <button [disabled]=\" currentUserEmail == selectedRowData?.displayUid\" [ngClass]=\"{ 'isAccount-invalid': submitted && selectedOrgUnits?.length == 0 }\" class=\"btn account-custom-input position-relative\" type=\"button\" id=\"branchAccountDropdown\" data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i class=\"fas fa-chevron-down account-downarrow float-right\"></i>\r\n Please Select <span *ngIf=\"selectedOrgUnits?.length > 0\"class=\"float-right pr-3\">{{selectedOrgUnits?.length}} Selected</span>\r\n </button>\r\n <div *ngIf=\"selectedOrgUnits?.length == 0 && submitted\" class=\"isInvalid\"> Account is required </div>\r\n <div class=\"dropdown-menu account-dropdown\" aria-labelledby=\"dropdownMenuButton\">\r\n <ul class=\"accounts-list\" *ngIf=\"orgUnits\">\r\n <div *ngFor=\"let unit of orgUnits\">\r\n <li class=\"list-border-bottom\">\r\n <label class=\"accountItem\">\r\n <input type=\"checkbox\" [checked]=\"getCheckedStatuses(unit.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0 form-control\"\r\n (change)=\"checkOrgUnit($event , {uid: unit.uid} )\"\r\n [value]=\"unit.uid\" />\r\n {{unit.name}}\r\n </label>\r\n </li>\r\n <li *ngFor=\"let data of unit?.children; let ind = index\" class=\"sec-child list-border-bottom\">\r\n <div [ngClass]=\"data?.children?.length > 0 ? 'list-border-bottom secPaddingLft' : ''\">\r\n <label class=\"accountItem \">\r\n <input type=\"checkbox\" [checked]=\"getCheckedStatuses(data.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event , {uid: data.uid} ) \"\r\n [value]=\"data.uid\" />\r\n {{data.name}}\r\n </label>\r\n </div>\r\n\r\n <ul class=\"thrd-child\">\r\n <li *ngFor=\"let child of data?.children\">\r\n <label class=\"accountItem\">\r\n <input type=\"checkbox\" [checked]=\"getCheckedStatuses(child.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event , {uid: child.uid} )\"\r\n [value]=\"child.uid\" />\r\n {{child.name}}\r\n </label>\r\n <ul *ngIf=\"child && child.children\">\r\n <li *ngFor=\"let check of child?.children\">\r\n <label class=\"accountItem\">\r\n <input type=\"checkbox\"\r\n [checked]=\"getCheckedStatuses(check.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event , {uid: check.uid} )\"\r\n [value]=\"check.uid\" />\r\n {{check.name}}\r\n </label>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </li>\r\n </div>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Roles</label>\r\n <div *ngFor=\"let role of defaultRoles; let i = index;\" class=\"role-checkbox\">\r\n <label>\r\n <input type=\"checkbox\" [value]=\"role.uid\" name=\"role-dropdown-group\"\r\n (change)=\"changeSelection($event, {uid: role.uid})\" class=\"form-control\"\r\n [disabled]=\" currentUserEmail == selectedRowData?.displayUid\" [checked]=\"role?.selected === true\"> {{role?.name}}<br>\r\n </label>\r\n </div>\r\n <div *ngIf=\"selectedItemsList?.length == 0 && submitted\" class=\"isInvalid\"> Role is required </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"d-sm-flex justify-content-end d-block btn-mobile-view\">\r\n <button type=\"button\" class=\"btn mobile-cancel-btn dimond-secondary-btn mr-5\" data-dismiss=\"modal\" (click)=\"clearEdit()\">Cancel</button>\r\n <button type=\"submit\" class=\"btn mobile-save-btn dimond-primary-btn float-right\">{{isEdit ? 'Save' : 'Invite'}}</button>\r\n </div>\r\n <div *ngIf=\"isError\" class=\"error-block alert alert-danger justify-content-start\" role=\"alert\">\r\n <img class=\"mr-3\" src=\"../../../../assets/images/erroricon.svg\" alt=\"alert\">\r\n <p>{{errorMessage}}</p>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" *ngIf=\"showActiveDeactiveModal\" id=\"memberActivateModal\" role=\"dialog\" aria-labelledby=\"memberActivateLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{isActive ? 'Deactivate' : 'Activate'}} Member</h5>\r\n <i class=\"icon-close invite-pop-close\" #closeConfirmModal data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <span>Are you sure you want to {{isActive ? 'deactivate' : 'activate'}} <b>{{selectedUserName}}</b> from\r\n your team list?</span>\r\n <div class=\"d-block d-sm-flex justify-content-end mobile-action-btn mt-4\">\r\n <button type=\"button\" class=\"btn dimond-secondary-btn mobile-cancel-btn mr-5\" data-dismiss=\"modal\">No</button>\r\n <button type=\"submit\" class=\"btn dimond-primary-btn float-right mobile-save-btn\" (click)=\"updateStatus()\">Yes</button>\r\n </div>\r\n <div *ngIf=\"isError\" class=\"error-block alert alert-danger justify-content-start\" role=\"alert\">\r\n <img class=\"mr-3\" src=\"../../../../assets/images/erroricon.svg\" alt=\"alert\">\r\n <p>{{errorMessage}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" id=\"accountModal\" role=\"dialog\" aria-labelledby=\"accountLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Accounts</h5>\r\n <i class=\"icon-close invite-pop-close\" data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <h4>{{selectedUserName}}</h4>\r\n <span>{{userAllAccounts.length + childrenLength}} accounts</span>\r\n <ul class=\"accounts-list account-data-table\">\r\n <li *ngFor=\"let data of userAllAccounts; let i = index;\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\" style=\"padding-left: 15px ;\">{{data.name}}</label>\r\n </div>\r\n <div *ngIf=\"data?.children?.length\">\r\n <ul>\r\n <li *ngFor=\"let childrenData of data.children\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\" style=\"padding-left: 50px ;\">{{childrenData.name}}</label>\r\n </div>\r\n <div *ngIf=\"childrenData?.children?.length\">\r\n <ul>\r\n <li *ngFor=\"let grandChild of childrenData.children\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\" style=\"padding-left: 75px ;\">{{grandChild.name}}</label>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" id=\"rolesModal\" role=\"dialog\" aria-labelledby=\"accountLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Roles</h5>\r\n <i class=\"icon-close invite-pop-close\" data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <h4>{{selectedUserName}}</h4>\r\n <span>{{userAllRoles.length}} roles</span>\r\n <div class=\"accounts-list account-data-table\">\r\n <ul>\r\n <li *ngFor=\"let data of userAllRoles; let i = index;\" class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"roleIndex py-2\">{{i+1}}</span>\r\n <span class=\"index-lebel pl-2\">{{data}}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ngb-toast *ngIf=\"showToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img [src]=\"!isActive ?'../../../../assets/images/ActivateIcon.svg' : '../../../../assets/images/DisableIcon.svg'\"> {{isActive ? 'Deactivated' : 'Activated'}} {{selectedUserName}}\r\n <i class=\"icon-close toast-close\" aria-label=\"Close\" (click)=\"closeToast()\"></i>\r\n</ngb-toast>\r\n<ngb-toast *ngIf=\"createUpdateToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img src=\"../../../../assets/images/Invited.svg\"> {{isCreate ? 'One new member invited !' : 'Save was successful'}}\r\n <i class=\"icon-close toast-close\" aria-label=\"Close\" (click)=\"closeUpdateToast()\"></i>\r\n</ngb-toast>", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative;z-index:10}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.isAccount-invalid{border:1px solid var(--cx-color-danger)!important}.isInvalid{color:#db0002;margin-top:.25rem;font-size:.875rem}.team-members{margin:40px 0}.team-members .sort-by .sort-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;height:40px;padding:0 15px;text-transform:none;text-align:left;position:relative}.team-members .sort-by .sort-btn .arrow-down{position:absolute;right:10px}.team-members .sort-by .sort-btn option{height:40px}.team-members .sort-by .dropdown-toggle:after{display:none}.team-members .sort-by .dropdown-menu.show{top:-11px!important;width:200px}.members-count{font-family:\"Arial Bold\",sans-serif;margin-bottom:0}.heading{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:54px;color:#1d1d1b;margin-bottom:25px}.add-btn{text-transform:uppercase;background-color:#1d1d1b;color:#fff;padding:8px 25px;font-size:var(--fontsize14);border:none;border-radius:0;height:40px}.search-input{border:none;border-bottom:1px solid #707070;background-color:transparent}.members-table{margin-top:30px;background-color:#fff}.members-table thead{background-color:#646363}.members-table thead th{color:#fff;text-align:left;font-family:\"Arial Bold\",sans-serif;font-size:var(--fontsize14)}.members-table tr.disabled-text td{color:#8d8d8d}.members-table td{border-bottom:1px solid #E0E0E0;position:relative;color:#1d1d1b}.members-table td i{cursor:pointer}.members-table td .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}.members-table td:first-child{font-family:\"Arial Bold\",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:100px}.members-table td:nth-child(2){white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:100px}.members-table .viewMore-link{color:#b61828;cursor:pointer;text-decoration:underline}.members-table .action-item{padding-right:30px}.members-table .action-item img{cursor:pointer}.members-table .action-item .disabled{opacity:.5}.status-default,.status-deactive:before,.status-expired:before,.status-pending:before,.status-active:before{content:\"\";width:8px;height:8px;border-radius:50%;position:absolute;left:0px;top:50%;transform:translate(-50%,-50%)}.status-active:before{background-color:#2aa900}.status-pending:before{background-color:#ff7d00}.status-expired:before{background-color:#d0021b}.status-deactive{color:#8d8d8d}.status-deactive:before{background-color:#8d8d8d}.noteam-text{padding:5rem 3rem;display:flex;align-items:center}#inviteMemberModal .modal-header .invite-pop-close,#memberActivateModal .modal-header .invite-pop-close,#rolesModal .modal-header .invite-pop-close,#accountModal .modal-header .invite-pop-close{font-size:var(--fontsize24);font-family:\"Arial Bold\",sans-serif;cursor:pointer}#inviteMemberModal .modal-header .modal-title,#memberActivateModal .modal-header .modal-title,#rolesModal .modal-header .modal-title,#accountModal .modal-header .modal-title{font-size:var(--fontsize28)}.register-form .modal-scroll{max-height:70vh;overflow:auto;padding-right:15px}.register-form .form-group>label{font-family:\"Arial Bold\",sans-serif}.register-form .form-group>.form-control{border-radius:0;font-family:\"Arial Regular\",sans-serif;color:#1d1d1d}.register-form .required:after{content:\" *\";color:#b61828}.register-form .form-control.is-invalid{background-image:none!important}.register-form .role-checkbox{margin-left:36px;position:relative}.register-form .role-checkbox label{display:inline-block;cursor:pointer}.register-form .role-checkbox input[type=checkbox]{accent-color:#B61828;top:-4px}.register-form .account-dropdown .form-check input[type=checkbox]:checked{background-color:#b61828;border-color:#fafafa}.error-block{margin-top:30px;border-radius:3px;padding:10px 40px;text-align:left;font-weight:normal}.error-block .alert-icon{color:#b61828;margin-right:1rem}.error-block p{font-size:13px;margin-bottom:0}.disabled{pointer-events:none}#accountModal .modal-body h4{font-family:\"Arial Bold\",sans-serif}::ng-deep .tooltip-inner{padding:2px 10px!important}::ng-deep .toast{top:20%;left:50%;position:fixed;min-width:500px;max-width:500px;transform:translate(-50%);z-index:9999;background-color:#1d1d1b}::ng-deep .toast .toast-body{color:#fff}::ng-deep .toast .toast-body img{margin-right:10px}::ng-deep .toast .toast-body .toast-close{top:50%;right:5%;position:absolute;transform:translate(-50%,-50%);cursor:pointer}::ng-deep .toast .toast-header{background-color:#1d1d1b;color:#fff;padding:15px;border-radius:0}::ng-deep .toast .toast-header .close{color:#fff;opacity:1;text-shadow:none}::ng-deep .mat-paginator .mat-paginator-range-label{display:none!important}::ng-deep .mat-paginator .mat-icon-button{background-color:#b61828!important}::ng-deep .mat-paginator .mat-mini-fab,::ng-deep .mat-paginator .mat-icon-button{width:30px;height:30px;line-height:30px}::ng-deep .mat-paginator .mat-paginator-page-size-label,::ng-deep .mat-paginator .mat-select-value-text{font-size:var(--fontsize16);color:#1d1d1b;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-select-panel .mat-option-text{font-size:var(--fontsize16)!important;color:#1d1d1b!important;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-container .mat-paginator-page-size{margin-right:40px;align-items:center}::ng-deep .mat-paginator-container .mat-paginator-page-size .mat-paginator-page-size-select{margin:0}::ng-deep .mat-paginator-container .mat-paginator-page-size .mat-form-field-wrapper{padding-bottom:0}::ng-deep .mat-paginator-container .mat-form-field-infix{border:1px solid #E0E0E0;padding:6px;height:40px;display:flex;align-items:center;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-container .mat-form-field-underline{background:none}::ng-deep .mat-paginator-container .mat-form-field-underline .mat-form-field-ripple{display:none}::ng-deep .mat-paginator-container .mat-select-arrow{color:#1d1d1b}::ng-deep .mat-paginator-container .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:#1d1d1b}::ng-deep body .cdk-overlay-container .mat-tooltip{display:none}::ng-deep .mat-paginator-range-actions button{margin:0!important}::ng-deep .mat-paginator-range-actions .mat-icon-button{width:60px;height:40px;line-height:40px;border-radius:0;background-color:#fff!important;color:#1d1d1b!important;border:1px solid #E0E0E0;cursor:pointer}::ng-deep .mat-paginator-range-actions .mat-mini-fab{border-radius:0;margin:0!important;box-shadow:none;height:40px;width:35px;display:flex;align-items:center;justify-content:center;border:1px solid #E0E0E0;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-range-actions .mat-button-disabled{color:#8d8d8d!important}::ng-deep .mat-paginator-range-actions .mat-paginator-page-size{margin-right:30px}::ng-deep .mat-paginator-range-actions .mat-paginator-icon{display:none}::ng-deep .mat-paginator-range-actions .mat-paginator-navigation-previous .mat-button-wrapper:before{content:\"PREV\";position:absolute;left:50%;top:0;width:auto;transform:translate(-50%);font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-range-actions .mat-paginator-navigation-next .mat-button-wrapper:before{content:\"NEXT\";position:absolute;left:50%;top:0;width:auto;transform:translate(-50%);font-family:\"Arial Bold\",sans-serif}.accounts-list .list-border-bottom{border-bottom:1px solid #E0E0E0}.accounts-list input[type=checkbox]{margin-top:0}.accounts-list .accountItem{padding:10px 0 10px 45px;margin-bottom:0}.accounts-list .secPaddingLft{margin-left:-50px}.accounts-list .secPaddingLft .accountItem{padding-left:95px}.accounts-list .sec-child{padding-left:50px}.accounts-list .sec-child :last-child{border-bottom:0}.accounts-list .thrd-child{padding-left:50px}.account-data-table{border:1px solid #E0E0E0;max-height:300px;overflow:auto;margin:15px 0;counter-reset:my-sec-counter}.account-data-table .indexId{display:inline-block;padding:0 15px;border-right:1px solid #E0E0E0}.account-data-table .indexId:before{counter-increment:my-sec-counter;content:counter(my-sec-counter)}.account-data-table .roleIndex{display:inline-block;padding:0 15px;border-right:1px solid #E0E0E0}.account-data-table .index-lebel{margin-bottom:0}@media (max-width: 991px) and (min-width: 768px){.modal-lg{max-width:720px!important;min-width:720px!important}.action-item{padding-right:0!important}}@media screen and (max-width: 767px){::ng-deep .CompanyPageTemplate .BodyContent{display:block}.add-btn{width:100%}.team-members .sort-by{display:block!important}.team-members .sort-by .dropdown-menu.show{width:100%!important}.team-members .sort-by .sort-btn{width:100%}.team-members .members-count{margin-bottom:2rem}#accountModal .modal-body,#rolesModal .modal-body,#inviteMemberModal .modal-body,#memberActivateModal .modal-body{padding:1rem}#accountModal .modal-content,#rolesModal .modal-content,#inviteMemberModal .modal-content,#memberActivateModal .modal-content{min-height:100vh}#accountModal .mobile-action-btn,#rolesModal .mobile-action-btn,#inviteMemberModal .mobile-action-btn,#memberActivateModal .mobile-action-btn{position:fixed;bottom:0;left:15px;right:15px}.action-item{padding-right:0!important}.invite-btn-bg{border:2px solid #E0E0E0;width:100%;height:80px;position:fixed;bottom:0;z-index:20;left:0;background:#ffffff;display:flex;align-items:center}.mobile-invite-btn{position:absolute;z-index:9;left:15px;max-width:100%;width:calc(100% - 30px)}.mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}.mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}.btn-mobile-view{position:absolute;bottom:0;max-width:100%;right:20px;left:20px}::ng-deep .toast{min-width:300px;max-width:300px}::ng-deep .mat-paginator-container{display:contents!important}}::ng-deep cx-page-layout.CompanyPageTemplate .BodyContent{margin:0!important}.account-custom-input{background-color:#fff;border:1px solid #E0E0E0;border-radius:0;padding:.375rem .75rem;font-size:var(--fontsize16);line-height:var(--fontsize22);width:100%;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.placeholder-icon{position:relative;right:30px;top:0;z-index:4}::placeholder{color:#fff}.btn:focus{box-shadow:none}.menu .parent-dropdown-item{cursor:pointer}.custom-arrow{position:absolute;right:20px;top:10px}.register-form .dropdown-menu{background-color:#fff;top:-11px!important;left:-5px!important;width:calc(100% - 79px);padding:0}.register-form .dropdown-menu .menu{max-height:28rem;overflow:auto;padding:0 15px}.register-form .dropdown-menu .menu .parent-dropdown-item{background-color:#393939;color:#c6c6c6;border-bottom:1px solid #525252}.register-form .dropdown-menu .menu .parent-dropdown-item.selected{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .accountdata{width:90%;display:inline-block}.register-form .dropdown-menu .menu .parent-dropdown-item .accountIcon{width:10%}.register-form .dropdown-menu .menu .parent-dropdown-item .labelOneChild{padding:7px 0}.register-form .dropdown-menu .menu .parent-dropdown-item .labelOneChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .labelTwoChild{padding:7px 0 7px 15px}.register-form .dropdown-menu .menu .parent-dropdown-item .labelTwoChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .labelThreeChild{padding:7px 0 7px 30px}.register-form .dropdown-menu .menu .parent-dropdown-item .labelThreeChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .child-menu{padding:0}.register-form .dropdown-menu .menu .child-menu .child-dropdown-item{border-top:1px solid #525252;padding:0}.register-form .dropdown-menu .menu .subchild-menu .subdropdown-item{border-top:1px solid #525252}\n"], components: [{ type: i5.CustomBreadcrumComponent, selector: "app-custom-breadcrum", inputs: ["customCrumbData"] }, { type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i7.NgbToast, selector: "ngb-toast", inputs: ["delay", "autohide", "animation", "header"], outputs: ["shown", "hidden"], exportAs: ["ngbToast"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i9.AppPaginationDirective, selector: "[appPagination]", inputs: ["showTotalPages"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }], pipes: { "async": i8.AsyncPipe } });
430
+ MyTeamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MyTeamComponent, selector: "lib-my-team", viewQueries: [{ propertyName: "closeConfirmModal", first: true, predicate: ["closeConfirmModal"], descendants: true }, { propertyName: "closeInviteModal", first: true, predicate: ["closeInviteModal"], descendants: true }], ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading&#8230;</div>\r\n<app-custom-breadcrum\r\n [customCrumbData]=\"breadcrumbData\"\r\n class=\"products-breadcums\"\r\n></app-custom-breadcrum>\r\n<ng-container *ngIf=\"isTeamAvailable == 'hasData'\">\r\n <div class=\"team-members\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-9 col-12 m-auto\">\r\n <h1 class=\"heading\">My Team</h1>\r\n <p *ngIf=\"myTeamParagraph?.content\">{{ myTeamParagraph?.content }}</p>\r\n </div>\r\n <div class=\"col-sm-3 col-12 d-flex justify-content-end\">\r\n <div class=\"invite-btn-bg\">\r\n <button\r\n type=\"button\"\r\n class=\"btn mobile-invite-btn dimond-primary-btn\"\r\n data-toggle=\"modal\"\r\n data-target=\"#inviteMemberModal\"\r\n (click)=\"inviteMember()\"\r\n >\r\n Invite Member\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col col-12 m-auto\">\r\n <div\r\n class=\"dropdown sort-by d-flex align-items-center justify-content-between\"\r\n >\r\n <h6 class=\"members-count\">\r\n {{ totalRecords }} members in your team\r\n </h6>\r\n <select name=\"\" id=\"\" class=\"sort-btn\" (change)=\"sortBy($event)\">\r\n <option value=\"byName\" selected>Sort by: Name (Ascending)</option>\r\n <option value=\"byNameDesc\">Sort by: Name (Descending)</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table members-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">Name</th>\r\n <th scope=\"col\">Account</th>\r\n <th scope=\"col\">Role</th>\r\n <th scope=\"col\">Email</th>\r\n <th scope=\"col\">Mobile #</th>\r\n <th scope=\"col\">Status</th>\r\n <th scope=\"col\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n [ngClass]=\"{ 'disabled-text': team.active == false }\"\r\n *ngFor=\"let team of dataSource; let i = index\"\r\n >\r\n <td>{{ team.name }}</td>\r\n <td>\r\n <ul>\r\n <li\r\n class=\"ellipsis\"\r\n *ngFor=\"let account of team?.accounts?.slice(0, 3)\"\r\n >\r\n {{ account.name }}\r\n </li>\r\n <ng-container *ngIf=\"team?.accounts?.length > 3\">\r\n <li\r\n class=\"viewMore-link\"\r\n data-toggle=\"modal\"\r\n data-target=\"#accountModal\"\r\n (click)=\"viewMore(team.accounts, team.name)\"\r\n >\r\n + {{ getMoreCount(team.accounts, team) }} more\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </td>\r\n <td>\r\n <ul>\r\n <li *ngFor=\"let role of team?.displayRoles?.slice(0, 3)\">\r\n {{ role }}\r\n </li>\r\n <ng-container *ngIf=\"team?.displayRoles?.length > 3\">\r\n <li\r\n class=\"viewMore-link\"\r\n data-toggle=\"modal\"\r\n data-target=\"#rolesModal\"\r\n (click)=\"viewMoreRoles(team.displayRoles, team.name)\"\r\n >\r\n + {{ team.displayRoles.length - 3 }} more\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </td>\r\n <td>{{ team.displayUid }}</td>\r\n <td>{{ team.phoneNumber }}</td>\r\n <td\r\n [ngClass]=\"\r\n team.active == true ? 'status-active' : 'status-deactive'\r\n \"\r\n >\r\n {{ team.active == true ? \"Active\" : \"Deactivated\" }}\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-between action-item\">\r\n <img\r\n [src]=\"\r\n team.active == false ||\r\n (currentUserRole == 'B2B Manager' &&\r\n team?.roles.includes('B2B Owner'))\r\n ? '../../../../assets/images/EditIcondisabled.svg'\r\n : '../../../../assets/images/EditIconEnabled.svg'\r\n \"\r\n [ngClass]=\"{\r\n disabled:\r\n team.active == false ||\r\n (currentUserRole == 'B2B Manager' &&\r\n team?.roles.includes('B2B Owner')) ||\r\n !team.allowedToEdit\r\n }\"\r\n alt=\"edit\"\r\n data-toggle=\"modal\"\r\n data-target=\"#inviteMemberModal\"\r\n (click)=\"editMember(dataSource[i])\"\r\n class=\"mx-1\"\r\n />\r\n <img\r\n placement=\"bottom\"\r\n ngbTooltip=\"{{\r\n team.active == false ? 'Activate' : 'Deactivate'\r\n }}\"\r\n [src]=\"\r\n team.active == false\r\n ? '../../../../assets/images/ActivateIcon.svg'\r\n : '../../../../assets/images/DisableIcon.svg'\r\n \"\r\n [ngClass]=\"{\r\n disabled:\r\n currentUserEmail == team?.displayUid ||\r\n (currentUserRole == 'B2B Manager' &&\r\n team?.roles.includes('B2B Owner'))\r\n }\"\r\n alt=\"activate\"\r\n data-toggle=\"modal\"\r\n data-target=\"#memberActivateModal\"\r\n (click)=\"changeStatus(dataSource[i])\"\r\n class=\"mx-1\"\r\n />\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <mat-paginator\r\n appPagination\r\n [hidden]=\"myTeamListData && myTeamListData?.length == 0\"\r\n [length]=\"testPaginator?.length\"\r\n [pageSizeOptions]=\"[20, 40, 60]\"\r\n (page)=\"pageEvent($event)\"\r\n >\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"isTeamAvailable == 'noData'\">\r\n <div class=\"container noteam-text\">\r\n <div class=\"row justify-content-md-center\">\r\n <div class=\"col-sm-9 col-sm-offset-3\">\r\n <div class=\"text-center\">\r\n <img\r\n class=\"mb-4\"\r\n src=\"../../../../assets/images/AlertIcon.svg\"\r\n alt=\"alert\"\r\n />\r\n <h3 class=\"mb-2\">Your team list is empty!</h3>\r\n <p>{{ myTeamParagraph?.content }}</p>\r\n <button\r\n type=\"button\"\r\n class=\"btn add-btn\"\r\n data-toggle=\"modal\"\r\n data-target=\"#inviteMemberModal\"\r\n (click)=\"inviteMember()\"\r\n >\r\n Invite Member\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<div\r\n class=\"modal fade\"\r\n *ngIf=\"showModal\"\r\n id=\"inviteMemberModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"inviteMemberLabel\"\r\n aria-hidden=\"true\"\r\n>\r\n <div class=\"modal-dialog modal-lg\" role=\"document\" *ngIf=\"showModal\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">\r\n {{ isEdit == true ? \"Edit\" : \"Invite\" }} Member\r\n </h5>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n #closeInviteModal\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n (click)=\"clearEdit()\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"register-form\">\r\n <form [formGroup]=\"registerForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"modal-scroll\">\r\n <div class=\"form-group\">\r\n <label class=\"required\">First Name</label>\r\n <input\r\n type=\"text\"\r\n formControlName=\"firstName\"\r\n class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.firstName.errors }\"\r\n [(ngModel)]=\"selectedRowData.firstName\"\r\n />\r\n <div\r\n *ngIf=\"submitted && f.firstName.errors\"\r\n class=\"invalid-feedback\"\r\n >\r\n <div *ngIf=\"f.firstName.errors.required\">\r\n First name is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Last Name</label>\r\n <input\r\n type=\"text\"\r\n formControlName=\"lastName\"\r\n class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.lastName.errors }\"\r\n [(ngModel)]=\"selectedRowData.lastName\"\r\n />\r\n <div\r\n *ngIf=\"submitted && f.lastName.errors\"\r\n class=\"invalid-feedback\"\r\n >\r\n <div *ngIf=\"f.lastName.errors.required\">\r\n Last name is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Email</label>\r\n <input\r\n type=\"text\"\r\n formControlName=\"email\"\r\n class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.email.errors }\"\r\n [(ngModel)]=\"selectedRowData.displayUid\"\r\n [readonly]=\"isEdit == true\"\r\n />\r\n <div\r\n *ngIf=\"submitted && f.email.errors\"\r\n class=\"invalid-feedback\"\r\n >\r\n <div *ngIf=\"f.email.errors.required\">Email is required</div>\r\n <div *ngIf=\"f.email.errors.email\">Email is invalid</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Mobile</label>\r\n <input\r\n inputmode=\"numeric\"\r\n type=\"tel\"\r\n formControlName=\"mobile\"\r\n maxlength=\"16\"\r\n class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.mobile.errors }\"\r\n [(ngModel)]=\"selectedRowData.phoneNumber\"\r\n (keypress)=\"numberOnly($event)\"\r\n (keyup)=\"numberMobile($event)\"\r\n />\r\n <div\r\n *ngIf=\"submitted && f.mobile.errors\"\r\n class=\"invalid-feedback\"\r\n >\r\n <div *ngIf=\"f.mobile.errors.required\">Mobile is required</div>\r\n <div *ngIf=\"f.mobile.errors.minlength\">\r\n Number must be at least 10 characters\r\n </div>\r\n <div *ngIf=\"f.mobile.errors.maxlength\">\r\n Number must not exceed 16 characters\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Desk Phone</label>\r\n <input\r\n inputmode=\"numeric\"\r\n type=\"tel\"\r\n formControlName=\"deskPhone\"\r\n class=\"form-control\"\r\n (keypress)=\"numberOnly($event)\"\r\n (keyup)=\"numberMobile($event)\"\r\n [(ngModel)]=\"selectedRowData.deskPhone\"\r\n />\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Job Title</label>\r\n <input\r\n type=\"text\"\r\n formControlName=\"jobTitle\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"selectedRowData.jobTitle\"\r\n />\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Account</label>\r\n <button\r\n [ngClass]=\"{\r\n 'isAccount-invalid':\r\n submitted && selectedOrgUnits?.length == 0\r\n }\"\r\n class=\"btn account-custom-input position-relative\"\r\n type=\"button\"\r\n id=\"branchAccountDropdown\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <i\r\n class=\"fas fa-chevron-down account-downarrow float-right\"\r\n ></i>\r\n {{\r\n selectedOrgUnits?.length > 0\r\n ? findOrgUnit(selectedOrgUnits[0])\r\n : \" Please Select\"\r\n }}\r\n <span\r\n *ngIf=\"selectedOrgUnits?.length > 0\"\r\n class=\"float-right pr-3\"\r\n >{{ selectedOrgUnits?.length }} Selected</span\r\n >\r\n </button>\r\n <div\r\n *ngIf=\"selectedOrgUnits?.length == 0 && submitted\"\r\n class=\"isInvalid\"\r\n >\r\n Account is required\r\n </div>\r\n <div\r\n class=\"dropdown-menu account-dropdown\"\r\n aria-labelledby=\"dropdownMenuButton\"\r\n >\r\n <ul class=\"accounts-list\" *ngIf=\"orgUnits\">\r\n <div *ngFor=\"let unit of orgUnits\">\r\n <li class=\"list-border-bottom\">\r\n <label class=\"accountItem\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedStatuses(unit.uid)\"\r\n [disabled]=\"\r\n currentUserEmail == selectedRowData?.displayUid\r\n \"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0 form-control\"\r\n (change)=\"checkOrgUnit($event, { uid: unit.uid })\"\r\n [value]=\"unit.uid\"\r\n />\r\n {{ unit.name }}\r\n </label>\r\n </li>\r\n <li\r\n *ngFor=\"let data of unit?.children; let ind = index\"\r\n class=\"sec-child list-border-bottom\"\r\n >\r\n <div\r\n [ngClass]=\"\r\n data?.children?.length > 0\r\n ? 'list-border-bottom secPaddingLft'\r\n : ''\r\n \"\r\n >\r\n <label class=\"accountItem\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedStatuses(data.uid)\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event, { uid: data.uid })\"\r\n [value]=\"data.uid\"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n\r\n <ul class=\"thrd-child\">\r\n <li *ngFor=\"let child of data?.children\">\r\n <label class=\"accountItem\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedStatuses(child.uid)\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n (change)=\"\r\n checkOrgUnit($event, { uid: child.uid })\r\n \"\r\n [value]=\"child.uid\"\r\n />\r\n {{ child.name }}\r\n </label>\r\n <ul *ngIf=\"child && child.children\">\r\n <li *ngFor=\"let check of child?.children\">\r\n <label class=\"accountItem\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedStatuses(check.uid)\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n (change)=\"\r\n checkOrgUnit($event, { uid: check.uid })\r\n \"\r\n [value]=\"check.uid\"\r\n />\r\n {{ check.name }}\r\n </label>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </li>\r\n </div>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Roles</label>\r\n <mat-radio-group\r\n aria-labelledby=\"example-radio-group-label\"\r\n class=\"example-radio-group radio-btn-size\"\r\n >\r\n <mat-radio-button\r\n class=\"py-1\"\r\n *ngFor=\"let role of defaultRoles; let i = index\"\r\n [value]=\"role.uid\"\r\n name=\"role-dropdown-group\"\r\n (change)=\"changeSelection($event, { uid: role.uid })\"\r\n class=\"form-control zero-border\"\r\n [disabled]=\"currentUserEmail == selectedRowData?.displayUid\"\r\n [checked]=\"selectedRole == role.uid\"\r\n >\r\n {{ role?.name }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n <div\r\n *ngIf=\"selectedItemsList?.length == 0 && submitted\"\r\n class=\"isInvalid\"\r\n >\r\n Role is required\r\n </div>\r\n </div>\r\n </div>\r\n <hr />\r\n <div class=\"d-sm-flex justify-content-end d-block btn-mobile-view\">\r\n <button\r\n type=\"button\"\r\n class=\"btn mobile-cancel-btn dimond-secondary-btn mr-5\"\r\n data-dismiss=\"modal\"\r\n (click)=\"clearEdit()\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n type=\"submit\"\r\n class=\"btn mobile-save-btn dimond-primary-btn float-right\"\r\n >\r\n {{ isEdit ? \"Save\" : \"Invite\" }}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"isError\"\r\n class=\"error-block alert alert-danger justify-content-start\"\r\n role=\"alert\"\r\n >\r\n <img\r\n class=\"mr-3\"\r\n src=\"../../../../assets/images/erroricon.svg\"\r\n alt=\"alert\"\r\n />\r\n <p>{{ errorMessage }}</p>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"modal fade\"\r\n *ngIf=\"showActiveDeactiveModal\"\r\n id=\"memberActivateModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"memberActivateLabel\"\r\n aria-hidden=\"true\"\r\n>\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">\r\n {{ isActive ? \"Deactivate\" : \"Activate\" }} Member\r\n </h5>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n #closeConfirmModal\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <span\r\n >Are you sure you want to {{ isActive ? \"deactivate\" : \"activate\" }}\r\n <b>{{ selectedUserName }}</b> from your team list?</span\r\n >\r\n <div\r\n class=\"d-block d-sm-flex justify-content-end mobile-action-btn mt-4\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn dimond-secondary-btn mobile-cancel-btn mr-5\"\r\n data-dismiss=\"modal\"\r\n >\r\n No\r\n </button>\r\n <button\r\n type=\"submit\"\r\n class=\"btn dimond-primary-btn float-right mobile-save-btn\"\r\n (click)=\"updateStatus()\"\r\n >\r\n Yes\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"isError\"\r\n class=\"error-block alert alert-danger justify-content-start\"\r\n role=\"alert\"\r\n >\r\n <img\r\n class=\"mr-3\"\r\n src=\"../../../../assets/images/erroricon.svg\"\r\n alt=\"alert\"\r\n />\r\n <p>{{ errorMessage }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"modal fade\"\r\n id=\"accountModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"accountLabel\"\r\n aria-hidden=\"true\"\r\n>\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Accounts</h5>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <h4>{{ selectedUserName }}</h4>\r\n <span>{{ userAllAccounts.length + childrenLength }} accounts</span>\r\n <ul class=\"accounts-list account-data-table\">\r\n <li *ngFor=\"let data of userAllAccounts; let i = index\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\" style=\"padding-left: 15px\">{{\r\n data.name\r\n }}</label>\r\n </div>\r\n <div *ngIf=\"data?.children?.length\">\r\n <ul>\r\n <li *ngFor=\"let childrenData of data.children\">\r\n <div\r\n class=\"d-flex flex-row align-items-center list-border-bottom\"\r\n >\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\" style=\"padding-left: 50px\">{{\r\n childrenData.name\r\n }}</label>\r\n </div>\r\n <div *ngIf=\"childrenData?.children?.length\">\r\n <ul>\r\n <li *ngFor=\"let grandChild of childrenData.children\">\r\n <div\r\n class=\"d-flex flex-row align-items-center list-border-bottom\"\r\n >\r\n <span class=\"indexId py-2\"></span>\r\n <label\r\n class=\"index-lebel\"\r\n style=\"padding-left: 75px\"\r\n >{{ grandChild.name }}</label\r\n >\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"modal fade\"\r\n id=\"rolesModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"accountLabel\"\r\n aria-hidden=\"true\"\r\n>\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Roles</h5>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <h4>{{ selectedUserName }}</h4>\r\n <span>{{ userAllRoles.length }} roles</span>\r\n <div class=\"accounts-list account-data-table\">\r\n <ul>\r\n <li\r\n *ngFor=\"let data of userAllRoles; let i = index\"\r\n class=\"d-flex flex-row align-items-center list-border-bottom\"\r\n >\r\n <span class=\"roleIndex py-2\">{{ i + 1 }}</span>\r\n <span class=\"index-lebel pl-2\">{{ data }}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ngb-toast *ngIf=\"showToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img\r\n [src]=\"\r\n !isActive\r\n ? '../../../../assets/images/ActivateIcon.svg'\r\n : '../../../../assets/images/DisableIcon.svg'\r\n \"\r\n />\r\n {{ isActive ? \"Deactivated\" : \"Activated\" }} {{ selectedUserName }}\r\n <i\r\n class=\"icon-close toast-close\"\r\n aria-label=\"Close\"\r\n (click)=\"closeToast()\"\r\n ></i>\r\n</ngb-toast>\r\n<ngb-toast *ngIf=\"createUpdateToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img src=\"../../../../assets/images/Invited.svg\" />\r\n {{ isCreate ? \"One new member invited !\" : \"Save was successful\" }}\r\n <i\r\n class=\"icon-close toast-close\"\r\n aria-label=\"Close\"\r\n (click)=\"closeUpdateToast()\"\r\n ></i>\r\n</ngb-toast>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.isAccount-invalid{border:1px solid var(--cx-color-danger)!important}.isInvalid{color:#db0002;margin-top:.25rem;font-size:.875rem}.zero-border{border:0px;padding:0;height:auto;margin-bottom:.4rem}::ng-deep .mat-radio-button.mat-accent.mat-radio-checked:not(.mat-radio-disabled) .mat-radio-outer-circle{border-color:#b61828}::ng-deep .mat-radio-button.mat-accent.mat-radio-checked:not(.mat-radio-disabled) .mat-radio-inner-circle{background:#B61828}::ng-deep .mat-radio-button.mat-accent .mat-radio-label-content{color:initial}.team-members{margin:40px 0}.team-members .sort-by .sort-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;height:40px;padding:0 15px;text-transform:none;text-align:left;position:relative}.team-members .sort-by .sort-btn .arrow-down{position:absolute;right:10px}.team-members .sort-by .sort-btn option{height:40px}.team-members .sort-by .dropdown-toggle:after{display:none}.team-members .sort-by .dropdown-menu.show{top:-11px!important;width:200px}.members-count{font-family:\"Arial Bold\",sans-serif;margin-bottom:0}.heading{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:54px;color:#1d1d1b;margin-bottom:25px}.add-btn{text-transform:uppercase;background-color:#1d1d1b;color:#fff;padding:8px 25px;font-size:var(--fontsize14);border:none;border-radius:0;height:40px}.search-input{border:none;border-bottom:1px solid #707070;background-color:transparent}.members-table{margin-top:30px;background-color:#fff}.members-table thead{background-color:#646363}.members-table thead th{color:#fff;text-align:left;font-family:\"Arial Bold\",sans-serif;font-size:var(--fontsize14)}.members-table tr.disabled-text td{color:#8d8d8d}.members-table td{border-bottom:1px solid #E0E0E0;position:relative;color:#1d1d1b}.members-table td i{cursor:pointer}.members-table td .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}.members-table td:first-child{font-family:\"Arial Bold\",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:100px}.members-table td:nth-child(2){white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:100px}.members-table .viewMore-link{color:#b61828;cursor:pointer;text-decoration:underline}.members-table .action-item{padding-right:30px}.members-table .action-item img{cursor:pointer}.members-table .action-item .disabled{opacity:.5}.status-default,.status-deactive:before,.status-expired:before,.status-pending:before,.status-active:before{content:\"\";width:8px;height:8px;border-radius:50%;position:absolute;left:0px;top:50%;transform:translate(-50%,-50%)}.status-active:before{background-color:#2aa900}.status-pending:before{background-color:#ff7d00}.status-expired:before{background-color:#d0021b}.status-deactive{color:#8d8d8d}.status-deactive:before{background-color:#8d8d8d}.noteam-text{padding:5rem 3rem;display:flex;align-items:center}#inviteMemberModal .modal-header .invite-pop-close,#memberActivateModal .modal-header .invite-pop-close,#rolesModal .modal-header .invite-pop-close,#accountModal .modal-header .invite-pop-close{font-size:var(--fontsize24);font-family:\"Arial Bold\",sans-serif;cursor:pointer}#inviteMemberModal .modal-header .modal-title,#memberActivateModal .modal-header .modal-title,#rolesModal .modal-header .modal-title,#accountModal .modal-header .modal-title{font-size:var(--fontsize28)}.register-form .modal-scroll{max-height:70vh;overflow:auto;padding-right:15px}.register-form .form-group>label{font-family:\"Arial Bold\",sans-serif}.register-form .form-group>.form-control{border-radius:0;font-family:\"Arial Regular\",sans-serif;color:#1d1d1d}.register-form .required:after{content:\" *\";color:#b61828}.register-form .form-control.is-invalid{background-image:none!important}.register-form .role-checkbox{margin-left:36px;position:relative}.register-form .role-checkbox label{display:inline-block;cursor:pointer}.register-form .role-checkbox input[type=checkbox]{accent-color:#B61828;top:-4px}.register-form .account-dropdown .form-check input[type=checkbox]:checked{background-color:#b61828;border-color:#fafafa}.error-block{margin-top:30px;border-radius:3px;padding:10px 40px;text-align:left;font-weight:normal}.error-block .alert-icon{color:#b61828;margin-right:1rem}.error-block p{font-size:13px;margin-bottom:0}.disabled{pointer-events:none}#accountModal .modal-body h4{font-family:\"Arial Bold\",sans-serif}::ng-deep .tooltip-inner{padding:2px 10px!important}::ng-deep .toast{top:20%;left:50%;position:fixed;min-width:500px;max-width:500px;transform:translate(-50%);z-index:9999;background-color:#1d1d1b}::ng-deep .toast .toast-body{color:#fff}::ng-deep .toast .toast-body img{margin-right:10px}::ng-deep .toast .toast-body .toast-close{top:50%;right:5%;position:absolute;transform:translate(-50%,-50%);cursor:pointer}::ng-deep .toast .toast-header{background-color:#1d1d1b;color:#fff;padding:15px;border-radius:0}::ng-deep .toast .toast-header .close{color:#fff;opacity:1;text-shadow:none}::ng-deep .mat-paginator .mat-paginator-range-label{display:none!important}::ng-deep .mat-paginator .mat-icon-button{background-color:#b61828!important}::ng-deep .mat-paginator .mat-mini-fab,::ng-deep .mat-paginator .mat-icon-button{width:30px;height:30px;line-height:30px}::ng-deep .mat-paginator .mat-paginator-page-size-label,::ng-deep .mat-paginator .mat-select-value-text{font-size:var(--fontsize16);color:#1d1d1b;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-select-panel .mat-option-text{font-size:var(--fontsize16)!important;color:#1d1d1b!important;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-container .mat-paginator-page-size{margin-right:40px;align-items:center}::ng-deep .mat-paginator-container .mat-paginator-page-size .mat-paginator-page-size-select{margin:0}::ng-deep .mat-paginator-container .mat-paginator-page-size .mat-form-field-wrapper{padding-bottom:0}::ng-deep .mat-paginator-container .mat-form-field-infix{border:1px solid #e0e0e0;padding:6px;height:40px;display:flex;align-items:center;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-container .mat-form-field-underline{background:none}::ng-deep .mat-paginator-container .mat-form-field-underline .mat-form-field-ripple{display:none}::ng-deep .mat-paginator-container .mat-select-arrow{color:#1d1d1b}::ng-deep .mat-paginator-container .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:#1d1d1b}::ng-deep body .cdk-overlay-container .mat-tooltip{display:none}::ng-deep .mat-paginator-range-actions button{margin:0!important}::ng-deep .mat-paginator-range-actions .mat-icon-button{width:60px;height:40px;line-height:40px;border-radius:0;background-color:#fff!important;color:#1d1d1b!important;border:1px solid #E0E0E0;cursor:pointer}::ng-deep .mat-paginator-range-actions .mat-mini-fab{border-radius:0;margin:0!important;box-shadow:none;height:40px;width:35px;display:flex;align-items:center;justify-content:center;border:1px solid #E0E0E0;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-range-actions .mat-button-disabled{color:#8d8d8d!important}::ng-deep .mat-paginator-range-actions .mat-paginator-page-size{margin-right:30px}::ng-deep .mat-paginator-range-actions .mat-paginator-icon{display:none}::ng-deep .mat-paginator-range-actions .mat-paginator-navigation-previous .mat-button-wrapper:before{content:\"PREV\";position:absolute;left:50%;top:0;width:auto;transform:translate(-50%);font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-range-actions .mat-paginator-navigation-next .mat-button-wrapper:before{content:\"NEXT\";position:absolute;left:50%;top:0;width:auto;transform:translate(-50%);font-family:\"Arial Bold\",sans-serif}.accounts-list .list-border-bottom{border-bottom:1px solid #E0E0E0}.accounts-list input[type=checkbox]{margin-top:0}.accounts-list .accountItem{padding:10px 0 10px 45px;margin-bottom:0}.accounts-list .secPaddingLft{margin-left:-50px}.accounts-list .secPaddingLft .accountItem{padding-left:95px}.accounts-list .sec-child{padding-left:50px}.accounts-list .sec-child :last-child{border-bottom:0}.accounts-list .thrd-child{padding-left:50px}.account-data-table{border:1px solid #E0E0E0;max-height:300px;overflow:auto;margin:15px 0;counter-reset:my-sec-counter}.account-data-table .indexId{display:inline-block;padding:0 15px;border-right:1px solid #E0E0E0}.account-data-table .indexId:before{counter-increment:my-sec-counter;content:counter(my-sec-counter)}.account-data-table .roleIndex{display:inline-block;padding:0 15px;border-right:1px solid #E0E0E0}.account-data-table .index-lebel{margin-bottom:0}@media (max-width: 991px) and (min-width: 768px){.modal-lg{max-width:720px!important;min-width:720px!important}.action-item{padding-right:0!important}}@media screen and (max-width: 767px){::ng-deep .CompanyPageTemplate .BodyContent{display:block}.add-btn{width:100%}.team-members .sort-by{display:block!important}.team-members .sort-by .dropdown-menu.show{width:100%!important}.team-members .sort-by .sort-btn{width:100%}.team-members .members-count{margin-bottom:2rem}#accountModal .modal-body,#rolesModal .modal-body,#inviteMemberModal .modal-body,#memberActivateModal .modal-body{padding:1rem}#accountModal .modal-content,#rolesModal .modal-content,#inviteMemberModal .modal-content,#memberActivateModal .modal-content{min-height:100vh}#accountModal .mobile-action-btn,#rolesModal .mobile-action-btn,#inviteMemberModal .mobile-action-btn,#memberActivateModal .mobile-action-btn{position:fixed;bottom:0;left:15px;right:15px}.action-item{padding-right:0!important}.invite-btn-bg{border:2px solid #E0E0E0;width:100%;height:80px;position:fixed;bottom:0;z-index:1;left:0;background:#ffffff;display:flex;align-items:center}.mobile-invite-btn{position:absolute;z-index:9;left:15px;max-width:100%;width:calc(100% - 30px)}.mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}.mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}.btn-mobile-view{position:absolute;bottom:0;max-width:100%;right:20px;left:20px}::ng-deep .toast{min-width:300px;max-width:300px}::ng-deep .mat-paginator-container{display:contents!important}}::ng-deep cx-page-layout.CompanyPageTemplate .BodyContent{margin:0!important}.account-custom-input{background-color:#fff;border:1px solid #E0E0E0;border-radius:0;padding:.375rem .75rem;font-size:var(--fontsize16);line-height:var(--fontsize22);width:100%;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.placeholder-icon{position:relative;right:30px;top:0;z-index:4}::placeholder{color:#fff}.btn:focus{box-shadow:none}.menu .parent-dropdown-item{cursor:pointer}.custom-arrow{position:absolute;right:20px;top:10px}.register-form .dropdown-menu{background-color:#fff;top:-11px!important;left:-5px!important;width:calc(100% - 79px);max-height:250px;overflow:auto;padding:0}.register-form .dropdown-menu .menu{max-height:28rem;overflow:auto;padding:0 15px}.register-form .dropdown-menu .menu .parent-dropdown-item{background-color:#393939;color:#c6c6c6;border-bottom:1px solid #525252}.register-form .dropdown-menu .menu .parent-dropdown-item.selected{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .accountdata{width:90%;display:inline-block}.register-form .dropdown-menu .menu .parent-dropdown-item .accountIcon{width:10%}.register-form .dropdown-menu .menu .parent-dropdown-item .labelOneChild{padding:7px 0}.register-form .dropdown-menu .menu .parent-dropdown-item .labelOneChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .labelTwoChild{padding:7px 0 7px 15px}.register-form .dropdown-menu .menu .parent-dropdown-item .labelTwoChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .labelThreeChild{padding:7px 0 7px 30px}.register-form .dropdown-menu .menu .parent-dropdown-item .labelThreeChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .child-menu{padding:0}.register-form .dropdown-menu .menu .child-menu .child-dropdown-item{border-top:1px solid #525252;padding:0}.register-form .dropdown-menu .menu .subchild-menu .subdropdown-item{border-top:1px solid #525252}\n"], components: [{ type: i5.CustomBreadcrumComponent, selector: "app-custom-breadcrum", inputs: ["customCrumbData"] }, { type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i7.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i8.NgbToast, selector: "ngb-toast", inputs: ["delay", "autohide", "animation", "header"], outputs: ["shown", "hidden"], exportAs: ["ngbToast"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i10.AppPaginationDirective, selector: "[appPagination]", inputs: ["showTotalPages"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i7.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }], pipes: { "async": i9.AsyncPipe } });
423
431
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MyTeamComponent, decorators: [{
424
432
  type: Component,
425
433
  args: [{
@@ -434,4 +442,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
434
442
  type: ViewChild,
435
443
  args: ['closeInviteModal']
436
444
  }] } });
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktdGVhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL215LXRlYW0vbXktdGVhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL215LXRlYW0vbXktdGVhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVF2QyxNQUFNLE9BQU8sZUFBZTtJQTBEM0IsWUFDVSxXQUF3QixFQUN4QixpQkFBb0MsRUFDckMsRUFBcUIsRUFDckIsVUFBc0IsRUFDdEIsV0FBK0I7UUFKOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQTdEeEMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixrQkFBYSxHQUFHO1lBQ2QsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUM3QyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO1NBQ25ELENBQUM7UUFDRixVQUFLLEdBQUc7WUFDTixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtZQUMzQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUs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QUU7WUFDeEQsT0FBTyxLQUFLLENBQUM7U0FDWDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELFlBQVksQ0FBQyxDQUFNO1FBQ2pCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs2R0FyY1csZUFBZTtpR0FBZixlQUFlLGtSQ1o1Qixza3lCQTBWWTs0RkQ5VUMsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3ZDOzROQXlEZ0MsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDQyxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ21zU2VydmljZSB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XHJcbmltcG9ydCB7IFVzZXJBY2NvdW50U2VydmljZSB9IGZyb20gJ0BzcGFydGFjdXMvdXNlci9hY2NvdW50L2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVGVhbU1lbWJlclNlcnZpY2UgfSBmcm9tICcuL3RlYW0tbWVtYmVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdsaWItbXktdGVhbScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL215LXRlYW0uY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL215LXRlYW0uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE15VGVhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0cmVnaXN0ZXJGb3JtITogRm9ybUdyb3VwO1xyXG5cdHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG5cdHNvcnRieU9wdGlvbnMgPSBbXHJcblx0ICB7IG5hbWU6ICdOYW1lIChBc2NlbmRpbmcpJywgdmFsdWU6ICdieU5hbWUnIH0sXHJcblx0ICB7IG5hbWU6ICdOYW1lIChEZXNjZW5kaW5nKScsIHZhbHVlOiAnYnlOYW1lRGVzYycgfSxcclxuXHRdO1xyXG5cdHJvbGVzID0gW1xyXG5cdCAgeyByb2xlOiAnQWRtaW5pc3RyYXRvcicsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHQgIHsgcm9sZTogJ1B1cmNoYXNlcicsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHQgIHsgcm9sZTogJ0FjY291bnRzJywgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdCAgeyByb2xlOiAnU3VwcG9ydCcsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRdO1xyXG5cdGlzVGVhbTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGlzRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGlzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzaG93TW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRpc1ZpZXdNb3JlOiBib29sZWFuID0gZmFsc2U7XHJcblx0aXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzaG93VG9hc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRjcmVhdGVVcGRhdGVUb2FzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGlzQ3JlYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblx0YnV0dG9uUGxhY2Vob2xkZXI6IGFueSA9ICdJbnZpdGUnO1xyXG5cdG15VGVhbUxpc3REYXRhOiBhbnkgPSBbXTtcclxuXHRzZWxlY3RlZEl0ZW1zTGlzdDogYW55ID0gW107XHJcblx0bXlUZWFtUGFyYWdyYXBoOiBhbnk7XHJcblx0c2VsZWN0ZWRSb3dEYXRhOiBhbnk7XHJcblx0c2VsZWN0ZWRVc2VyTmFtZTogYW55O1xyXG5cdHNlbGVjdGVkVWlkOiBhbnk7XHJcblx0ZXJyb3JNZXNzYWdlOiBhbnk7XHJcblx0c29ydEJ5VmFsdWU6IGFueTtcclxuXHRkYXRhU291cmNlOiBhbnkgPSBbXTtcclxuXHRkZWZhdWx0Um9sZXM6IGFueSA9IFtdO1xyXG5cdHRlc3RQYWdpbmF0b3IgPSB7XHJcblx0ICBsZW5ndGg6IDEwMCxcclxuXHQgIHBhZ2VTaXplOiAyMCxcclxuXHQgIHBhZ2VJbmRleDogMCxcclxuXHR9O1xyXG5cdG9yZ1VuaXRzOiBhbnkgPSBbXTtcclxuXHRwYWdlU2l6ZTogbnVtYmVyID0gMjA7XHJcblx0Y3VycmVudFBhZ2U6IG51bWJlciA9IDA7XHJcblx0dG90YWxSZXN1bHRzOiBudW1iZXIgPSAwO1xyXG5cdGlzVGVhbUF2YWlsYWJsZTogc3RyaW5nID0gJyc7XHJcblx0c2VsZWN0ZWRTdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzaG93V2FpdEN1cnNvciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0c2VsZWN0ZWRPcmdVbml0czogYW55ID0gW107XHJcblx0YnJlYWRjcnVtYkRhdGE6IGFueSA9IFtdO1xyXG5cdHRvdGFsUmVjb3JkczogYW55O1xyXG5cdHVzZXJBbGxBY2NvdW50czogYW55ID0gW107XHJcblx0dXNlckFsbFJvbGVzOiBhbnkgPSBbXTtcclxuXHR0b3RhbExlbmd0aDogYW55ID0gW107XHJcblx0Y2hpbGRyZW5MZW5ndGg6IGFueSA9IFtdO1xyXG5cdGFjY291bnRMZW5ndGg6IGFueSA9IFtdO1xyXG5cdGN1cnJlbnRVc2VyRW1haWw6IGFueTtcclxuXHRjdXJyZW50VXNlclJvbGU6IGFueSA9ICcnO1xyXG4gIFx0c2hvd0FjdGl2ZURlYWN0aXZlTW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRAVmlld0NoaWxkKCdjbG9zZUNvbmZpcm1Nb2RhbCcpIGNsb3NlQ29uZmlybU1vZGFsOiBhbnk7XHJcblx0QFZpZXdDaGlsZCgnY2xvc2VJbnZpdGVNb2RhbCcpIGNsb3NlSW52aXRlTW9kYWw6IGFueTtcclxuXHRjb25zdHJ1Y3RvcihcclxuXHQgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG5cdCAgcHJpdmF0ZSB0ZWFtTWVtYmVyU2VydmljZTogVGVhbU1lbWJlclNlcnZpY2UsXHJcblx0ICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdCAgcHVibGljIGNtc1NlcnZpY2U6IENtc1NlcnZpY2UsXHJcblx0ICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJBY2NvdW50U2VydmljZVxyXG5cdCkge31cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHQgIHRoaXMuYnJlYWRjcnVtYkRhdGEucHVzaChcclxuXHRcdHsgdXJsOiAnLycsIG5hbWU6ICdIb21lJyB9LFxyXG5cdFx0eyB1cmw6ICcvJywgbmFtZTogJ015IFRlYW0nIH1cclxuXHQgICk7XHJcblx0ICB0aGlzLmdldFRlYW1MaXN0KCk7XHJcblx0ICB0aGlzLmluaXRpYWxpemVJbnZpdGVGb3JtKCk7XHJcblx0ICB0aGlzLmNtc1NlcnZpY2VcclxuXHRcdC5nZXRDb21wb25lbnREYXRhKCdVc2Vyc1BhZ2VQYXJhZ3JhcGhDb21wb25lbnQnKVxyXG5cdFx0LnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0ICB0aGlzLm15VGVhbVBhcmFncmFwaCA9IGRhdGE7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMudXNlclNlcnZpY2UuZ2V0KCkuc3Vic2NyaWJlKCAoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdGlmKGRhdGEpIHtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRVc2VyUm9sZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JvbGUnKTtcclxuXHRcdFx0ICBcdHRoaXMuY3VycmVudFVzZXJFbWFpbCA9IGRhdGE/LmVtYWlsO1xyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH1cclxuXHRpbml0aWFsaXplSW52aXRlRm9ybSgpIHtcclxuXHQgIHRoaXMucmVnaXN0ZXJGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcblx0XHRmaXJzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuXHRcdGxhc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcblx0XHRlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxyXG5cdFx0bW9iaWxlOiBbXHJcblx0XHQgICcnLFxyXG5cdFx0ICBbXHJcblx0XHRcdFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcblx0XHRcdFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSxcclxuXHRcdFx0VmFsaWRhdG9ycy5tYXhMZW5ndGgoMTYpLFxyXG5cdFx0ICBdLFxyXG5cdFx0XSxcclxuXHRcdGFjY291bnQ6IFsnJ10sXHJcblx0XHRyb2xlczogWycnXSxcclxuXHRcdGRlc2tQaG9uZTogWycnXSxcclxuXHRcdGpvYlRpdGxlOiBbJyddLFxyXG5cdCAgfSk7XHJcblx0fVxyXG5cdGdldFRlYW1MaXN0KCkge1xyXG5cdCAgdGhpcy50ZWFtTWVtYmVyU2VydmljZVxyXG5cdFx0LmdldE15VGVhbUxpc3QodGhpcy5wYWdlU2l6ZSwgdGhpcy5jdXJyZW50UGFnZSwgdGhpcy5zb3J0QnlWYWx1ZSlcclxuXHRcdC5zdWJzY3JpYmUoXHJcblx0XHQgIChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS51c2VycyAmJiBkYXRhLnVzZXJzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0ICB0aGlzLmlzVGVhbSA9IHRydWU7XHJcblx0XHRcdCAgdGhpcy5pc1RlYW1BdmFpbGFibGUgPSAnaGFzRGF0YSc7XHJcblx0XHRcdCAgdGhpcy5teVRlYW1MaXN0RGF0YSA9IGRhdGE/LnVzZXJzO1xyXG5cdFx0XHQgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGE/LnVzZXJzO1xyXG5cdFx0XHQgIHRoaXMudGVzdFBhZ2luYXRvci5sZW5ndGggPSBkYXRhLnBhZ2luYXRpb24udG90YWxSZXN1bHRzO1xyXG5cdFx0XHQgIHRoaXMudG90YWxSZWNvcmRzID0gZGF0YS5wYWdpbmF0aW9uLnRvdGFsUmVzdWx0cztcclxuXHRcdFx0ICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0XHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdCAgdGhpcy5pc1RlYW1BdmFpbGFibGUgPSAnbm9EYXRhJztcclxuXHRcdFx0fVxyXG5cdFx0ICB9LFxyXG5cdFx0ICAoZXJyb3I6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLmlzVGVhbUF2YWlsYWJsZSA9ICdub0RhdGEnO1xyXG5cdFx0ICB9XHJcblx0XHQpO1xyXG5cdH1cclxuICBcclxuXHRwYWdlRXZlbnQoJGV2ZW50OiBhbnkpIHtcclxuXHQgIHRoaXMucGFnZVNpemUgPSAkZXZlbnQucGFnZVNpemU7XHJcblx0ICB0aGlzLmN1cnJlbnRQYWdlID0gJGV2ZW50LnBhZ2VJbmRleDtcclxuXHQgIHRoaXMuZ2V0VGVhbUxpc3QoKTtcclxuXHR9XHJcblx0Z2V0IGYoKSB7XHJcblx0ICByZXR1cm4gdGhpcy5yZWdpc3RlckZvcm0uY29udHJvbHM7XHJcblx0fVxyXG5cdGNsZWFyRWRpdCgpIHtcclxuXHQgIHRoaXMuaXNFZGl0ID0gZmFsc2U7XHJcblx0ICB0aGlzLnNlbGVjdGVkSXRlbXNMaXN0ID0gW107XHJcblx0ICB0aGlzLm9yZ1VuaXRzID0gbnVsbDtcclxuXHQgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdCAgdGhpcy5zZWxlY3RlZE9yZ1VuaXRzID0gW107XHJcblx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdH1cclxuXHRvblN1Ym1pdCgpOiB2b2lkIHtcclxuXHQgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuXHQgIGlmIChcclxuXHRcdHRoaXMucmVnaXN0ZXJGb3JtLmludmFsaWQgfHxcclxuXHRcdHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5sZW5ndGggPT0gMCB8fFxyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5sZW5ndGggPT0gMFxyXG5cdCAgKSB7XHJcblx0XHRyZXR1cm47XHJcblx0ICB9XHJcblx0ICBsZXQgc2VsZWN0ZWRSb2xlczogYW55ID0gW107XHJcblx0ICB0aGlzLnNlbGVjdGVkSXRlbXNMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG5cdFx0c2VsZWN0ZWRSb2xlcy5wdXNoKGVsZW1lbnQudWlkKTtcclxuXHQgIH0pO1xyXG5cdCAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5yZWdpc3RlckZvcm07XHJcblx0ICBsZXQgdXNlciA9IHtcclxuXHRcdGN1c3RvbWVySWQ6IHRoaXMuc2VsZWN0ZWRVaWQgPyB0aGlzLnNlbGVjdGVkVWlkIDogbnVsbCxcclxuXHRcdHRpdGxlQ29kZTogJ21yJyxcclxuXHRcdGZpcnN0TmFtZTogdmFsdWU/LmZpcnN0TmFtZSxcclxuXHRcdGxhc3ROYW1lOiB2YWx1ZT8ubGFzdE5hbWUsXHJcblx0XHRlbWFpbDogdmFsdWU/LmVtYWlsLFxyXG5cdFx0cGhvbmVOdW1iZXI6IHZhbHVlPy5tb2JpbGUsXHJcblx0XHRhY2NvdW50czogdGhpcy5zZWxlY3RlZE9yZ1VuaXRzLFxyXG5cdFx0cm9sZXM6IHNlbGVjdGVkUm9sZXMsXHJcblx0XHRkZXNrUGhvbmU6IHZhbHVlPy5kZXNrUGhvbmUsXHJcblx0XHRqb2JUaXRsZTogdmFsdWU/LmpvYlRpdGxlLFxyXG5cdCAgfTtcclxuXHQgIGlmICghdGhpcy5pc0VkaXQgJiYgdGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcclxuXHRcdGRlbGV0ZSB1c2VyLmN1c3RvbWVySWQ7XHJcblx0XHR0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLmNyZWF0ZU1lbWJlcih1c2VyKS5zdWJzY3JpYmUoXHJcblx0XHQgIChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5pc0NyZWF0ZSA9IHRydWU7XHJcblx0XHRcdHRoaXMuY3JlYXRlVXBkYXRlVG9hc3QgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmNsb3NlSW52aXRlTW9kYWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLmdldFRlYW1MaXN0KCk7XHJcblx0XHRcdHRoaXMucmVnaXN0ZXJGb3JtLnJlc2V0KCk7XHJcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHQgIHRoaXMuY3JlYXRlVXBkYXRlVG9hc3QgPSBmYWxzZTtcclxuXHRcdFx0fSwgNDAwMCk7XHJcblx0XHQgIH0sXHJcblx0XHQgIChlcnJvcjogYW55KSA9PiB7XHJcblx0XHRcdHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IuZXJyb3IuZXJyb3JzWzBdLm1lc3NhZ2U7XHJcblx0XHRcdHRoaXMuaXNFcnJvciA9IHRydWU7XHJcblx0XHRcdHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHQgIH1cclxuXHRcdCk7XHJcblx0ICB9IGVsc2UgaWYgKHRoaXMuaXNFZGl0ICYmIHRoaXMucmVnaXN0ZXJGb3JtLnZhbGlkKSB7XHJcblx0XHR0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLnVwZGF0ZU1lbWJlcih1c2VyKS5zdWJzY3JpYmUoXHJcblx0XHQgIChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5pc0NyZWF0ZSA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLmNyZWF0ZVVwZGF0ZVRvYXN0ID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5jbG9zZUludml0ZU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuXHRcdFx0dGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdFx0dGhpcy5nZXRUZWFtTGlzdCgpO1xyXG5cdFx0XHR0aGlzLmNsZWFyRWRpdCgpO1xyXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0ICB0aGlzLmNyZWF0ZVVwZGF0ZVRvYXN0ID0gZmFsc2U7XHJcblx0XHRcdH0sIDQwMDApO1xyXG5cdFx0ICB9LFxyXG5cdFx0ICAoZXJyb3I6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLmVycm9yLmVycm9yc1swXS5tZXNzYWdlO1xyXG5cdFx0XHR0aGlzLmlzRXJyb3IgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0ICB9XHJcblx0XHQpO1xyXG5cdCAgfVxyXG4gIFxyXG5cdCAgaWYgKHRoaXMucmVnaXN0ZXJGb3JtLmludmFsaWQpIHtcclxuXHRcdHJldHVybjtcclxuXHQgIH1cclxuXHQgIHRoaXMuaXNFcnJvciA9IGZhbHNlO1xyXG5cdH1cclxuXHRpbnZpdGVNZW1iZXIoKSB7XHJcblx0ICB0aGlzLnNlbGVjdGVkUm93RGF0YSA9IHt9O1xyXG5cdCAgdGhpcy5zaG93TW9kYWwgPSB0cnVlO1xyXG5cdCAgdGhpcy5nZXRBbGxVbml0cygpO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVpZCA9IHVuZGVmaW5lZDtcclxuXHQgIHRoaXMuc2VsZWN0ZWRPcmdVbml0cyA9IFtdO1xyXG5cdCAgdGhpcy5nZXRSb2xlcygpO1xyXG5cdCAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuXHQgIHRoaXMucmVnaXN0ZXJGb3JtLnJlc2V0KCk7XHJcblx0ICB0aGlzLmluaXRpYWxpemVJbnZpdGVGb3JtKCk7XHJcblx0ICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblx0ZWRpdE1lbWJlcihkYXRhOiBhbnkpIHtcclxuXHQgIGlmKHRoaXMuY3VycmVudFVzZXJFbWFpbCA9PSBkYXRhLmRpc3BsYXlVaWQpIHtcclxuXHRcdFx0dGhpcy5zaG93TW9kYWwgPSBmYWxzZTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdCAgfVxyXG5cdCAgdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdCA9IFtdO1xyXG5cdCAgdGhpcy5zZWxlY3RlZE9yZ1VuaXRzID0gW107XHJcblx0ICB0aGlzLmlzRWRpdCA9IHRydWU7XHJcblx0ICB0aGlzLnNob3dNb2RhbCA9IHRydWU7XHJcblx0ICB0aGlzLnNlbGVjdGVkUm93RGF0YSA9IGRhdGE7XHJcblx0ICB0aGlzLnNlbGVjdGVkVWlkID0gZGF0YS5jdXN0b21lcklkO1xyXG5cdCAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuXHQgIHRoaXMuZ2V0QWxsVW5pdHMoKTtcclxuXHQgIHRoaXMuZ2V0Um9sZXMoKTtcclxuXHR9XHJcblx0Y2hhbmdlU3RhdHVzKGRhdGE6IGFueSkge1xyXG5cdFx0aWYodGhpcy5jdXJyZW50VXNlckVtYWlsID09IGRhdGEuZGlzcGxheVVpZCkge1xyXG5cdFx0dGhpcy5zaG93QWN0aXZlRGVhY3RpdmVNb2RhbCA9IGZhbHNlO1xyXG5cdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdCAgdGhpcy5zZWxlY3RlZFVzZXJOYW1lID0gZGF0YS5uYW1lO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVpZCA9IGRhdGEuY3VzdG9tZXJJZDtcclxuXHQgIHRoaXMuc2VsZWN0ZWRTdGF0dXMgPSBkYXRhLmFjdGl2ZTtcclxuXHQgIHRoaXMuc2hvd0FjdGl2ZURlYWN0aXZlTW9kYWwgPSB0cnVlO1xyXG5cdCAgaWYgKGRhdGEuYWN0aXZlID09IHRydWUpIHtcclxuXHRcdHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xyXG5cdCAgfSBlbHNlIHtcclxuXHRcdHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcclxuXHQgIH1cclxuXHR9XHJcblx0dXBkYXRlU3RhdHVzKCkge1xyXG5cdCAgbGV0IHJlcURhdGE6IGFueSA9IHtcclxuXHRcdGN1c3RvbWVySWQ6IHRoaXMuc2VsZWN0ZWRVaWQsXHJcblx0XHRhY3RpdmU6ICF0aGlzLnNlbGVjdGVkU3RhdHVzLFxyXG5cdFx0cm9sZXM6IFtdLFxyXG5cdCAgfTtcclxuXHQgIHRoaXMudGVhbU1lbWJlclNlcnZpY2UuYWN0aXZlRGVhY3RpdmUocmVxRGF0YSkuc3Vic2NyaWJlKFxyXG5cdFx0KHJlcykgPT4ge1xyXG5cdFx0ICB0aGlzLnNob3dUb2FzdCA9IHRydWU7XHJcblx0XHQgIHRoaXMuY2xvc2VDb25maXJtTW9kYWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG5cdFx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0ICB0aGlzLmdldFRlYW1MaXN0KCk7XHJcblx0XHR9LFxyXG5cdFx0KGVycm9yOiBhbnkpID0+IHtcclxuXHRcdCAgdGhpcy5zaG93VG9hc3QgPSBmYWxzZTtcclxuXHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdH1cclxuXHQgICk7XHJcblx0ICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdHRoaXMuc2hvd1RvYXN0ID0gZmFsc2U7XHJcblx0ICB9LCA0MDAwKTtcclxuXHR9XHJcblx0Z2V0TW9yZUNvdW50KGFjY291bnREYXRhOiBhbnksIHRlYW06IGFueSkge1xyXG5cdCAgdGhpcy51c2VyQWxsQWNjb3VudHMgPSBbXTtcclxuXHQgIHRoaXMuY2hpbGRyZW5MZW5ndGggPSBbXTtcclxuXHQgIHRoaXMuYWNjb3VudExlbmd0aCA9IFtdO1xyXG5cdCAgdGhpcy51c2VyQWxsQWNjb3VudHMgPSBhY2NvdW50RGF0YTtcclxuXHQgIHRoaXMudXNlckFsbEFjY291bnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG5cdFx0dGhpcy50b3RhbExlbmd0aCA9IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xyXG5cdFx0dGhpcy5hY2NvdW50TGVuZ3RoLnB1c2godGhpcy50b3RhbExlbmd0aCk7XHJcblx0XHRlbGVtZW50LmNoaWxkcmVuLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcblx0XHQgIGlmIChlbGUuY2hpbGRyZW4pIHtcclxuXHRcdFx0dGhpcy5hY2NvdW50TGVuZ3RoLnB1c2goZWxlLmNoaWxkcmVuLmxlbmd0aCk7XHJcblx0XHQgIH1cclxuXHRcdH0pO1xyXG5cdCAgfSk7XHJcblx0ICB0aGlzLmNoaWxkcmVuTGVuZ3RoID0gdGhpcy5hY2NvdW50TGVuZ3RoLnJlZHVjZShcclxuXHRcdChhOiBhbnksIGI6IGFueSkgPT4gYSArIGIsXHJcblx0XHQwXHJcblx0ICApO1xyXG5cdCAgcmV0dXJuIHRlYW0uYWNjb3VudHMubGVuZ3RoICsgdGhpcy5jaGlsZHJlbkxlbmd0aCAtIDM7XHJcblx0fVxyXG4gIFxyXG5cdHZpZXdNb3JlKGFjY291bnREYXRhOiBhbnksIG5hbWU6IHN0cmluZykge1xyXG5cdCAgdGhpcy51c2VyQWxsQWNjb3VudHMgPSBbXTtcclxuXHQgIHRoaXMuY2hpbGRyZW5MZW5ndGggPSBbXTtcclxuXHQgIHRoaXMuYWNjb3VudExlbmd0aCA9IFtdO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVzZXJOYW1lID0gbmFtZTtcclxuXHQgIHRoaXMudXNlckFsbEFjY291bnRzID0gYWNjb3VudERhdGE7XHJcblx0ICB0aGlzLnVzZXJBbGxBY2NvdW50cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHRcdHRoaXMudG90YWxMZW5ndGggPSBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcclxuXHRcdHRoaXMuYWNjb3VudExlbmd0aC5wdXNoKHRoaXMudG90YWxMZW5ndGgpO1xyXG5cdFx0ZWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG5cdFx0ICBpZiAoZWxlLmNoaWxkcmVuKSB7XHJcblx0XHRcdHRoaXMuYWNjb3VudExlbmd0aC5wdXNoKGVsZS5jaGlsZHJlbi5sZW5ndGgpO1xyXG5cdFx0ICB9XHJcblx0XHR9KTtcclxuXHQgIH0pO1xyXG5cdCAgdGhpcy5jaGlsZHJlbkxlbmd0aCA9IHRoaXMuYWNjb3VudExlbmd0aC5yZWR1Y2UoXHJcblx0XHQoYTogYW55LCBiOiBhbnkpID0+IGEgKyBiLFxyXG5cdFx0MFxyXG5cdCAgKTtcclxuXHR9XHJcblx0dmlld01vcmVSb2xlcyhyb2xlc0RhdGE6IGFueSwgbmFtZTogc3RyaW5nKSB7XHJcblx0ICB0aGlzLnVzZXJBbGxSb2xlcyA9IFtdO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVzZXJOYW1lID0gbmFtZTtcclxuXHQgIHRoaXMudXNlckFsbFJvbGVzID0gcm9sZXNEYXRhO1xyXG5cdH1cclxuICBcclxuXHRjaGFuZ2VTZWxlY3Rpb24oZXZlbnQ6IGFueSwgZGF0YTogYW55KSB7XHJcblx0ICBpZiAoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkSXRlbXNMaXN0LnB1c2goZGF0YSk7XHJcblx0ICB9IGVsc2Uge1xyXG5cdFx0Y29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5maW5kSW5kZXgoXHJcblx0XHQgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudWlkID09IGRhdGEudWlkXHJcblx0XHQpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5zcGxpY2UoaW5kLCAxKTtcclxuXHQgIH1cclxuXHR9XHJcblx0ZmV0Y2hTZWxlY3RlZEl0ZW1zKCkge1xyXG5cdCAgdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdCA9IFtdO1xyXG5cdCAgdGhpcy5yb2xlcy5maWx0ZXIoKHZhbHVlLCBpbmRleCkgPT4ge1xyXG5cdFx0aWYgKHZhbHVlLmlzQ2hlY2tlZCkge1xyXG5cdFx0ICB0aGlzLnNlbGVjdGVkSXRlbXNMaXN0LnB1c2godmFsdWUucm9sZSk7XHJcblx0XHR9XHJcblx0ICB9KTtcclxuXHR9XHJcbiAgXHJcblx0c29ydEJ5KGU6IGFueSkge1xyXG5cdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG5cdCAgdGhpcy5zb3J0QnlWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG5cdCAgdGhpcy50ZWFtTWVtYmVyU2VydmljZS5zb3J0TXlUZWFtKHRoaXMuc29ydEJ5VmFsdWUpLnN1YnNjcmliZShcclxuXHRcdChyZXM6IGFueSkgPT4ge1xyXG5cdFx0ICB0aGlzLmRhdGFTb3VyY2UgPSByZXM/LnVzZXJzO1xyXG5cdFx0ICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0fSxcclxuXHRcdChlcnJvcikgPT4ge1xyXG5cdFx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0fVxyXG5cdCAgKTtcclxuXHR9XHJcbiAgXHJcblx0YXZhaWxhYmxlVW5pdHMoKSB7XHJcblx0ICB0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLmF2YWlsYWJsZU9yZ1VuaXRzKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdGlmIChkYXRhKSB7XHJcblx0XHQgIHRoaXMub3JnVW5pdHMgPSBkYXRhLnVuaXROb2RlcztcclxuXHRcdH1cclxuXHQgIH0pO1xyXG5cdH1cclxuICBcclxuXHRnZXRBbGxVbml0cygpIHtcclxuXHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuXHQgIGNvbnN0IGRhdGE6IGFueSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdBY2NvdW50RGF0YScpO1xyXG5cdCAgdGhpcy5vcmdVbml0cyA9IEpTT04ucGFyc2UoZGF0YSk7XHJcblx0ICBpZih0aGlzLnNlbGVjdGVkVWlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVWlkKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRSb3dEYXRhLmIyYlVuaXRzPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHRcdCAgdGhpcy5zZWxlY3RlZE9yZ1VuaXRzLnB1c2goeyB1aWQ6IGVsZW1lbnQgfSk7XHJcblx0XHRcdH0pO1xyXG5cdCAgfVxyXG5cdCAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0fVxyXG4gIFxyXG5cdGdldFJvbGVzKCkge1xyXG5cdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG5cdCAgdGhpcy50ZWFtTWVtYmVyU2VydmljZS5nZXRBbGxSb2xlcygpLnN1YnNjcmliZShcclxuXHRcdChkYXRhOiBhbnkpID0+IHtcclxuXHRcdCAgaWYgKGRhdGEpIHtcclxuXHRcdFx0dGhpcy5kZWZhdWx0Um9sZXMgPSBkYXRhO1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRVaWQgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRVaWQpIHtcclxuXHRcdFx0ICB0aGlzLnNlbGVjdGVkUm93RGF0YS5yb2xlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRlZmF1bHRSb2xlcy5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0XHQgIGlmIChkYXRhLnVpZCA9PT0gZWxlbWVudCkge1xyXG5cdFx0XHRcdFx0ZGF0YS5zZWxlY3RlZCA9IHRydWU7XHJcblx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXNMaXN0LnB1c2goeyB1aWQ6IGVsZW1lbnQgfSk7XHJcblx0XHRcdFx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0XHRcdCAgfVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHQgIH0pO1xyXG5cdFx0XHR9XHJcblx0XHQgIH1cclxuXHRcdH0sXHJcblx0XHQoZXJyb3I6IGFueSkgPT4ge1xyXG5cdFx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0fVxyXG5cdCAgKTtcclxuXHR9XHJcbiAgXHJcblx0Y2xvc2VUb2FzdCgpIHtcclxuXHQgIHRoaXMuc2hvd1RvYXN0ID0gZmFsc2U7XHJcblx0ICByZXR1cm47XHJcblx0fVxyXG5cdGNsb3NlVXBkYXRlVG9hc3QoKSB7XHJcblx0ICB0aGlzLmNyZWF0ZVVwZGF0ZVRvYXN0ID0gZmFsc2U7XHJcblx0fVxyXG5cdGNoZWNrT3JnVW5pdChldmVudDogYW55LCBkYXRhOiBhbnkpIHtcclxuXHQgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5wdXNoKGRhdGEpO1xyXG5cdCAgfSBlbHNlIHtcclxuXHRcdGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5maW5kSW5kZXgoXHJcblx0XHQgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudWlkID09IGRhdGEudWlkXHJcblx0XHQpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZE9yZ1VuaXRzLnNwbGljZShpbmQsIDEpO1xyXG5cdCAgfVxyXG5cdH1cclxuXHRnZXRDaGVja2VkU3RhdHVzZXMoaWQ6IGFueSkge1xyXG5cdCAgaWYgKHRoaXMuc2VsZWN0ZWRVaWQgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRVaWQpIHtcclxuXHRcdGxldCBpbmQgPSB0aGlzLnNlbGVjdGVkUm93RGF0YS5iMmJVbml0cy5maW5kSW5kZXgoXHJcblx0XHQgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gaWRcclxuXHRcdCk7XHJcblx0XHRyZXR1cm4gaW5kID4gLTEgPyB0cnVlIDogZmFsc2U7XHJcblx0ICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuICBcclxuXHRnZXRDaGVja2VkU3RhdHVzZXNSb2xlKGlkOiBhbnkpIHtcclxuXHQgIGlmICh0aGlzLnNlbGVjdGVkVWlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVWlkKSB7XHJcblx0XHRsZXQgaW5kID0gdGhpcy5zZWxlY3RlZFJvd0RhdGEucm9sZXMuZmluZEluZGV4KFxyXG5cdFx0ICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGlkXHJcblx0XHQpO1xyXG5cdFx0cmV0dXJuIGluZCA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdCAgfSBlbHNlIHJldHVybiBmYWxzZTtcclxuXHR9XHJcblx0bnVtYmVyT25seShldmVudDogYW55KTogYm9vbGVhbiB7XHJcblx0ICBjb25zdCBjaGFyQ29kZSA9IGV2ZW50LndoaWNoID8gZXZlbnQud2hpY2ggOiBldmVudC5rZXlDb2RlO1xyXG5cdCAgaWYgKGNoYXJDb2RlID4gMzEgJiYgKGNoYXJDb2RlIDwgNDggfHwgY2hhckNvZGUgPiA1NykpIHtcclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHQgIH1cclxuXHQgIHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHRudW1iZXJNb2JpbGUoZTogYW55KSB7XHJcblx0ICBlLnRhcmdldC52YWx1ZSA9IGUudGFyZ2V0LnZhbHVlLnJlcGxhY2UoL1teXFxkXS9nLCAnJyk7XHJcblx0ICByZXR1cm4gZmFsc2U7XHJcblx0fVxyXG4gIH1cclxuIiwiPGRpdiBjbGFzcz1cImxvYWRpbmcgXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jIFwiPkxvYWRpbmcmIzgyMzA7PC9kaXY+XHJcbjxhcHAtY3VzdG9tLWJyZWFkY3J1bSBbY3VzdG9tQ3J1bWJEYXRhXT1cImJyZWFkY3J1bWJEYXRhXCIgY2xhc3M9XCJwcm9kdWN0cy1icmVhZGN1bXNcIj48L2FwcC1jdXN0b20tYnJlYWRjcnVtPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZWFtQXZhaWxhYmxlID09ICdoYXNEYXRhJyBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZWFtLW1lbWJlcnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOCBjb2wtMTIgbS1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNeSBUZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMT5cclxuICAgICAgICAgICAgICAgICAgICA8cD57e215VGVhbVBhcmFncmFwaD8uY29udGVudH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTQgY29sLTEyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludml0ZS1idG4tYmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gbW9iaWxlLWludml0ZS1idG4gZGltb25kLXByaW1hcnktYnRuXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2ludml0ZU1lbWJlck1vZGFsXCIgKGNsaWNrKT1cImludml0ZU1lbWJlcigpXCI+SW52aXRlIE1lbWJlcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtMTIgbS1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIHNvcnQtYnkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJtZW1iZXJzLWNvdW50XCI+e3t0b3RhbFJlY29yZHN9fSBtZW1iZXJzIGluIHlvdXIgdGVhbTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIlwiIGlkPVwiXCIgY2xhc3M9XCJzb3J0LWJ0blwiIChjaGFuZ2UpPVwic29ydEJ5KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJieU5hbWVcIiBzZWxlY3RlZD5Tb3J0IGJ5OiBOYW1lIChBc2NlbmRpbmcpPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYnlOYW1lRGVzY1wiPlNvcnQgYnk6IE5hbWUgKERlc2NlbmRpbmcpPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbWVtYmVycy10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+TmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkFjY291bnQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Sb2xlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RW1haWw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Nb2JpbGUgIzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlN0YXR1czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBbbmdDbGFzc109XCJ7J2Rpc2FibGVkLXRleHQnOiB0ZWFtLmFjdGl2ZSA9PSBmYWxzZX1cIiAqbmdGb3I9XCJsZXQgdGVhbSBvZiBkYXRhU291cmNlOyBsZXQgaT0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dGVhbS5uYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZWxsaXBzaXNcIiAqbmdGb3I9XCJsZXQgYWNjb3VudCBvZiB0ZWFtPy5hY2NvdW50cz8uc2xpY2UoMCwzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FjY291bnQubmFtZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVhbT8uYWNjb3VudHM/Lmxlbmd0aCA+IDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidmlld01vcmUtbGlua1wiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNhY2NvdW50TW9kYWxcIiAoY2xpY2spPVwidmlld01vcmUodGVhbS5hY2NvdW50cywgdGVhbS5uYW1lKVwiPisge3tnZXRNb3JlQ291bnQodGVhbS5hY2NvdW50cywgdGVhbSl9fSBtb3JlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJvbGUgb2YgdGVhbT8uZGlzcGxheVJvbGVzPy5zbGljZSgwLDMpXCI+e3tyb2xlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZWFtPy5kaXNwbGF5Um9sZXM/Lmxlbmd0aCA+IDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidmlld01vcmUtbGlua1wiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNyb2xlc01vZGFsXCIgKGNsaWNrKT1cInZpZXdNb3JlUm9sZXModGVhbS5kaXNwbGF5Um9sZXMsIHRlYW0ubmFtZSApXCI+KyB7e3RlYW0uZGlzcGxheVJvbGVzLmxlbmd0aCAtIDN9fSBtb3JlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3RlYW0uZGlzcGxheVVpZH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dGVhbS5waG9uZU51bWJlcn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInRlYW0uYWN0aXZlID09IHRydWUgPyAnc3RhdHVzLWFjdGl2ZScgOiAnc3RhdHVzLWRlYWN0aXZlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0ZWFtLmFjdGl2ZSA9PSB0cnVlID8gJ0FjdGl2ZScgOiAnRGVhY3RpdmF0ZWQnfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInRlYW0uYWN0aXZlID09IGZhbHNlIHx8IChjdXJyZW50VXNlclJvbGUgPT0gJ0IyQiBNYW5hZ2VyJyAmJiB0ZWFtPy5yb2xlcy5pbmNsdWRlcygnQjJCIE93bmVyJykpID8nLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9FZGl0SWNvbmRpc2FibGVkLnN2ZycgOiAnLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9FZGl0SWNvbkVuYWJsZWQuc3ZnJ1wiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiAodGVhbS5hY3RpdmUgPT0gZmFsc2UgIHx8IChjdXJyZW50VXNlclJvbGUgPT0gJ0IyQiBNYW5hZ2VyJyAmJiB0ZWFtPy5yb2xlcy5pbmNsdWRlcygnQjJCIE93bmVyJykpICl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZWRpdFwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNpbnZpdGVNZW1iZXJNb2RhbFwiIChjbGljayk9XCJlZGl0TWVtYmVyKGRhdGFTb3VyY2VbaV0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBwbGFjZW1lbnQ9XCJib3R0b21cIiBuZ2JUb29sdGlwPVwie3t0ZWFtLmFjdGl2ZSA9PSBmYWxzZSA/ICdBY3RpdmF0ZScgOiAnRGVhY3RpdmF0ZSd9fVwiIFtzcmNdPVwidGVhbS5hY3RpdmUgPT0gZmFsc2UgPyAnLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9BY3RpdmF0ZUljb24uc3ZnJyA6ICcuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0Rpc2FibGVJY29uLnN2ZycgXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IChjdXJyZW50VXNlckVtYWlsID09IHRlYW0/LmRpc3BsYXlVaWQgfHwgKGN1cnJlbnRVc2VyUm9sZSA9PSAnQjJCIE1hbmFnZXInICYmIHRlYW0/LnJvbGVzLmluY2x1ZGVzKCdCMkIgT3duZXInKSkpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImFjdGl2YXRlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI21lbWJlckFjdGl2YXRlTW9kYWxcIiAoY2xpY2spPVwiY2hhbmdlU3RhdHVzKGRhdGFTb3VyY2VbaV0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhZ2luYXRvciBhcHBQYWdpbmF0aW9uIFtoaWRkZW5dPVwibXlUZWFtTGlzdERhdGEgJiYgbXlUZWFtTGlzdERhdGE/Lmxlbmd0aCA9PSAwXCIgW2xlbmd0aF09XCJ0ZXN0UGFnaW5hdG9yPy5sZW5ndGhcIiBbcGFnZVNpemVPcHRpb25zXT1cIlsyMCwgNDAsIDYwIF1cIiAocGFnZSk9XCJwYWdlRXZlbnQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVhbUF2YWlsYWJsZSA9PSAnbm9EYXRhJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBub3RlYW0tdGV4dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTkgY29sLXNtLW9mZnNldC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibWItNFwiIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvQWxlcnRJY29uLnN2Z1wiIGFsdD1cImFsZXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibWItMlwiPllvdXIgdGVhbSBsaXN0IGlzIGVtcHR5ITwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+e3tteVRlYW1QYXJhZ3JhcGg/LmNvbnRlbnR9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBhZGQtYnRuXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2ludml0ZU1lbWJlck1vZGFsXCIgKGNsaWNrKT1cImludml0ZU1lbWJlcigpXCI+SW52aXRlIE1lbWJlcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiICpuZ0lmPVwic2hvd01vZGFsXCIgaWQ9XCJpbnZpdGVNZW1iZXJNb2RhbFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJpbnZpdGVNZW1iZXJMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiICpuZ0lmPVwic2hvd01vZGFsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57e2lzRWRpdCA9PSB0cnVlID8gJ0VkaXQnIDogJ0ludml0ZSd9fSBNZW1iZXI8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIiAjY2xvc2VJbnZpdGVNb2RhbCBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJjbGVhckVkaXQoKVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVnaXN0ZXItZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwicmVnaXN0ZXJGb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZXF1aXJlZFwiPkZpcnN0IE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLmZpcnN0TmFtZS5lcnJvcnMgfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLmZpcnN0TmFtZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmZpcnN0TmFtZS5lcnJvcnNcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYuZmlyc3ROYW1lLmVycm9ycy5yZXF1aXJlZFwiPkZpcnN0IG5hbWUgaXMgcmVxdWlyZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVxdWlyZWRcIj5MYXN0IE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYubGFzdE5hbWUuZXJyb3JzIH1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm93RGF0YS5sYXN0TmFtZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmxhc3ROYW1lLmVycm9yc1wiIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5sYXN0TmFtZS5lcnJvcnMucmVxdWlyZWRcIj5MYXN0IG5hbWUgaXMgcmVxdWlyZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVxdWlyZWRcIj5FbWFpbDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5lbWFpbC5lcnJvcnMgfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLmRpc3BsYXlVaWRcIiBbcmVhZG9ubHldPVwiaXNFZGl0ID09IHRydWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5lbWFpbC5lcnJvcnNcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLnJlcXVpcmVkXCI+RW1haWwgaXMgcmVxdWlyZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLmVtYWlsXCI+RW1haWwgaXMgaW52YWxpZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZXF1aXJlZFwiPk1vYmlsZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlucHV0bW9kZT1cIm51bWVyaWNcIiB0eXBlPVwidGVsXCIgZm9ybUNvbnRyb2xOYW1lPVwibW9iaWxlXCIgbWF4bGVuZ3RoPVwiMTZcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5tb2JpbGUuZXJyb3JzIH1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm93RGF0YS5waG9uZU51bWJlclwiIChrZXlwcmVzcyk9XCJudW1iZXJPbmx5KCRldmVudClcIiAoa2V5dXApPVwibnVtYmVyTW9iaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLm1vYmlsZS5lcnJvcnNcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYubW9iaWxlLmVycm9ycy5yZXF1aXJlZFwiPk1vYmlsZSBpcyByZXF1aXJlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5tb2JpbGUuZXJyb3JzLm1pbmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgMTAgY2hhcmFjdGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYubW9iaWxlLmVycm9ycy5tYXhsZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlciBtdXN0IG5vdCBleGNlZWQgMTYgY2hhcmFjdGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkRlc2sgUGhvbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpbnB1dG1vZGU9XCJudW1lcmljXCIgdHlwZT1cInRlbFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2tQaG9uZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGtleXByZXNzKT1cIm51bWJlck9ubHkoJGV2ZW50KVwiIChrZXl1cCk9XCJudW1iZXJNb2JpbGUoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLmRlc2tQaG9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Kb2IgVGl0bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImpvYlRpdGxlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm93RGF0YS5qb2JUaXRsZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJlcXVpcmVkXCI+QWNjb3VudDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIGN1cnJlbnRVc2VyRW1haWwgPT0gc2VsZWN0ZWRSb3dEYXRhPy5kaXNwbGF5VWlkXCIgW25nQ2xhc3NdPVwieyAnaXNBY2NvdW50LWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgc2VsZWN0ZWRPcmdVbml0cz8ubGVuZ3RoID09IDAgfVwiIGNsYXNzPVwiYnRuIGFjY291bnQtY3VzdG9tLWlucHV0IHBvc2l0aW9uLXJlbGF0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwiYnJhbmNoQWNjb3VudERyb3Bkb3duXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBhY2NvdW50LWRvd25hcnJvdyBmbG9hdC1yaWdodFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIFNlbGVjdCA8c3BhbiAqbmdJZj1cInNlbGVjdGVkT3JnVW5pdHM/Lmxlbmd0aCA+IDBcImNsYXNzPVwiZmxvYXQtcmlnaHQgcHItM1wiPnt7c2VsZWN0ZWRPcmdVbml0cz8ubGVuZ3RofX0gU2VsZWN0ZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkT3JnVW5pdHM/Lmxlbmd0aCA9PSAwICYmIHN1Ym1pdHRlZFwiIGNsYXNzPVwiaXNJbnZhbGlkXCI+IEFjY291bnQgaXMgcmVxdWlyZWQgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgYWNjb3VudC1kcm9wZG93blwiIGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duTWVudUJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY2NvdW50cy1saXN0XCIgKm5nSWY9XCJvcmdVbml0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdW5pdCBvZiBvcmdVbml0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhY2NvdW50SXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyh1bml0LnVpZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wIGZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGVja09yZ1VuaXQoJGV2ZW50ICwge3VpZDogdW5pdC51aWR9IClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ1bml0LnVpZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3VuaXQubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgdW5pdD8uY2hpbGRyZW47IGxldCBpbmQgPSBpbmRleFwiIGNsYXNzPVwic2VjLWNoaWxkIGxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImRhdGE/LmNoaWxkcmVuPy5sZW5ndGggPiAwID8gJ2xpc3QtYm9yZGVyLWJvdHRvbSBzZWNQYWRkaW5nTGZ0JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhY2NvdW50SXRlbSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZFN0YXR1c2VzKGRhdGEudWlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGVja09yZ1VuaXQoJGV2ZW50ICwgIHt1aWQ6IGRhdGEudWlkfSApIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnVpZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ0aHJkLWNoaWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGRhdGE/LmNoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWNjb3VudEl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyhjaGlsZC51aWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hlY2tPcmdVbml0KCRldmVudCAsICB7dWlkOiBjaGlsZC51aWR9ICApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjaGlsZC51aWRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NoaWxkLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiY2hpbGQgJiYgY2hpbGQuY2hpbGRyZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGVjayBvZiBjaGlsZD8uY2hpbGRyZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImFjY291bnRJdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyhjaGVjay51aWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCIgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoZWNrT3JnVW5pdCgkZXZlbnQgLCAge3VpZDogY2hlY2sudWlkfSAgKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjaGVjay51aWRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2hlY2submFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVxdWlyZWRcIj5Sb2xlczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm9sZSBvZiBkZWZhdWx0Um9sZXM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJyb2xlLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbdmFsdWVdPVwicm9sZS51aWRcIiBuYW1lPVwicm9sZS1kcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VTZWxlY3Rpb24oJGV2ZW50LCB7dWlkOiByb2xlLnVpZH0pXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiBjdXJyZW50VXNlckVtYWlsID09IHNlbGVjdGVkUm93RGF0YT8uZGlzcGxheVVpZFwiIFtjaGVja2VkXT1cInJvbGU/LnNlbGVjdGVkID09PSB0cnVlXCI+IHt7cm9sZT8ubmFtZX19PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zTGlzdD8ubGVuZ3RoID09IDAgJiYgc3VibWl0dGVkXCIgY2xhc3M9XCJpc0ludmFsaWRcIj4gUm9sZSBpcyByZXF1aXJlZCA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1zbS1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgZC1ibG9jayBidG4tbW9iaWxlLXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIG1vYmlsZS1jYW5jZWwtYnRuIGRpbW9uZC1zZWNvbmRhcnktYnRuIG1yLTVcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJjbGVhckVkaXQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gbW9iaWxlLXNhdmUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodFwiPnt7aXNFZGl0ID8gJ1NhdmUnIDogJ0ludml0ZSd9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRXJyb3JcIiBjbGFzcz1cImVycm9yLWJsb2NrIGFsZXJ0IGFsZXJ0LWRhbmdlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIiByb2xlPVwiYWxlcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtci0zXCIgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9lcnJvcmljb24uc3ZnXCIgYWx0PVwiYWxlcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7ZXJyb3JNZXNzYWdlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgKm5nSWY9XCJzaG93QWN0aXZlRGVhY3RpdmVNb2RhbFwiIGlkPVwibWVtYmVyQWN0aXZhdGVNb2RhbFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJtZW1iZXJBY3RpdmF0ZUxhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3tpc0FjdGl2ZSA/ICdEZWFjdGl2YXRlJyA6ICdBY3RpdmF0ZSd9fSBNZW1iZXI8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIiAjY2xvc2VDb25maXJtTW9kYWwgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHt7aXNBY3RpdmUgPyAnZGVhY3RpdmF0ZScgOiAnYWN0aXZhdGUnfX0gPGI+e3tzZWxlY3RlZFVzZXJOYW1lfX08L2I+IGZyb21cclxuICAgICAgICAgICAgICAgICAgICB5b3VyIHRlYW0gbGlzdD88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ibG9jayBkLXNtLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtb2JpbGUtYWN0aW9uLWJ0biBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gZGltb25kLXNlY29uZGFyeS1idG4gbW9iaWxlLWNhbmNlbC1idG4gbXItNVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Tm88L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBkaW1vbmQtcHJpbWFyeS1idG4gZmxvYXQtcmlnaHQgbW9iaWxlLXNhdmUtYnRuXCIgKGNsaWNrKT1cInVwZGF0ZVN0YXR1cygpXCI+WWVzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0Vycm9yXCIgY2xhc3M9XCJlcnJvci1ibG9jayBhbGVydCBhbGVydC1kYW5nZXIganVzdGlmeS1jb250ZW50LXN0YXJ0XCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm1yLTNcIiBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Vycm9yaWNvbi5zdmdcIiBhbHQ9XCJhbGVydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPnt7ZXJyb3JNZXNzYWdlfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIGlkPVwiYWNjb3VudE1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cImFjY291bnRMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWQgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkFjY291bnRzPC9oNT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi1jbG9zZSBpbnZpdGUtcG9wLWNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPGg0Pnt7c2VsZWN0ZWRVc2VyTmFtZX19PC9oND5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7dXNlckFsbEFjY291bnRzLmxlbmd0aCArIGNoaWxkcmVuTGVuZ3RofX0gYWNjb3VudHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY2NvdW50cy1saXN0IGFjY291bnQtZGF0YS10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiB1c2VyQWxsQWNjb3VudHM7IGxldCBpID0gaW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmRleElkIHB5LTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmRleC1sZWJlbFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxNXB4IDtcIj57e2RhdGEubmFtZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhPy5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGlsZHJlbkRhdGEgb2YgZGF0YS5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciAgbGlzdC1ib3JkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGV4SWQgcHktMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImluZGV4LWxlYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDUwcHggO1wiPnt7Y2hpbGRyZW5EYXRhLm5hbWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2hpbGRyZW5EYXRhPy5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncmFuZENoaWxkIG9mIGNoaWxkcmVuRGF0YS5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBsaXN0LWJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5kZXhJZCBweS0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5kZXgtbGViZWxcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogNzVweCA7XCI+e3tncmFuZENoaWxkLm5hbWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiBpZD1cInJvbGVzTW9kYWxcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiYWNjb3VudExhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+Um9sZXM8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8aDQ+e3tzZWxlY3RlZFVzZXJOYW1lfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t1c2VyQWxsUm9sZXMubGVuZ3RofX0gcm9sZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3VudHMtbGlzdCBhY2NvdW50LWRhdGEtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiB1c2VyQWxsUm9sZXM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlSW5kZXggcHktMlwiPnt7aSsxfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGV4LWxlYmVsIHBsLTJcIj57e2RhdGF9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48bmdiLXRvYXN0ICpuZ0lmPVwic2hvd1RvYXN0XCIgW2F1dG9oaWRlXT1cInRydWVcIiBbZGVsYXldPVwiNDAwMFwiPlxyXG4gICAgPGltZyBbc3JjXT1cIiFpc0FjdGl2ZSA/Jy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvQWN0aXZhdGVJY29uLnN2ZycgOiAnLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9EaXNhYmxlSWNvbi5zdmcnXCI+IHt7aXNBY3RpdmUgPyAnRGVhY3RpdmF0ZWQnIDogJ0FjdGl2YXRlZCd9fSB7e3NlbGVjdGVkVXNlck5hbWV9fVxyXG4gICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIHRvYXN0LWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNsb3NlVG9hc3QoKVwiPjwvaT5cclxuPC9uZ2ItdG9hc3Q+XHJcbjxuZ2ItdG9hc3QgKm5nSWY9XCJjcmVhdGVVcGRhdGVUb2FzdFwiIFthdXRvaGlkZV09XCJ0cnVlXCIgW2RlbGF5XT1cIjQwMDBcIj5cclxuICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9JbnZpdGVkLnN2Z1wiPiB7e2lzQ3JlYXRlID8gJ09uZSBuZXcgbWVtYmVyIGludml0ZWQgIScgOiAnU2F2ZSB3YXMgc3VjY2Vzc2Z1bCd9fVxyXG4gICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIHRvYXN0LWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNsb3NlVXBkYXRlVG9hc3QoKVwiPjwvaT5cclxuPC9uZ2ItdG9hc3Q+Il19
445
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktdGVhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL215LXRlYW0vbXktdGVhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL215LXRlYW0vbXktdGVhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFRdkMsTUFBTSxPQUFPLGVBQWU7SUEyRDFCLFlBQ1UsV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ3JDLEVBQXFCLEVBQ3JCLFVBQXNCLEVBQ3RCLFdBQStCO1FBSjlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDckMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUE5RHhDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsa0JBQWEsR0FBRztZQUNkLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDN0MsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtTQUNuRCxDQUFDO1FBQ0YsVUFBSyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7WUFDM0MsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFF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SUFBSSxFQUFFLENBQ2hDLENBQUM7WUFDRixPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDaEM7O1lBQU0sT0FBTyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDM0QsSUFBSSxRQUFRLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUU7WUFDckQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELFlBQVksQ0FBQyxDQUFNO1FBQ2pCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs2R0EzY1UsZUFBZTtpR0FBZixlQUFlLGtSQ1o1Qiw0dDNCQTRyQkE7NEZEaHJCYSxlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxTQUFTLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDeEM7NE5BMERpQyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNDLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDbXNTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcclxuaW1wb3J0IHsgVXNlckFjY291bnRTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy91c2VyL2FjY291bnQvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUZWFtTWVtYmVyU2VydmljZSB9IGZyb20gJy4vdGVhbS1tZW1iZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1teS10ZWFtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXktdGVhbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbXktdGVhbS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXlUZWFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICByZWdpc3RlckZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgc29ydGJ5T3B0aW9ucyA9IFtcclxuICAgIHsgbmFtZTogJ05hbWUgKEFzY2VuZGluZyknLCB2YWx1ZTogJ2J5TmFtZScgfSxcclxuICAgIHsgbmFtZTogJ05hbWUgKERlc2NlbmRpbmcpJywgdmFsdWU6ICdieU5hbWVEZXNjJyB9LFxyXG4gIF07XHJcbiAgcm9sZXMgPSBbXHJcbiAgICB7IHJvbGU6ICdBZG1pbmlzdHJhdG9yJywgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgeyByb2xlOiAnUHVyY2hhc2VyJywgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgeyByb2xlOiAnQWNjb3VudHMnLCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICB7IHJvbGU6ICdTdXBwb3J0JywgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG4gIF07XHJcbiAgaXNUZWFtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNFZGl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVmlld01vcmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dUb2FzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNyZWF0ZVVwZGF0ZVRvYXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNDcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBidXR0b25QbGFjZWhvbGRlcjogYW55ID0gJ0ludml0ZSc7XHJcbiAgbXlUZWFtTGlzdERhdGE6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkSXRlbXNMaXN0OiBhbnkgPSBbXTtcclxuICBteVRlYW1QYXJhZ3JhcGg6IGFueTtcclxuICBzZWxlY3RlZFJvd0RhdGE6IGFueTtcclxuICBzZWxlY3RlZFVzZXJOYW1lOiBhbnk7XHJcbiAgc2VsZWN0ZWRVaWQ6IGFueTtcclxuICBlcnJvck1lc3NhZ2U6IGFueTtcclxuICBzb3J0QnlWYWx1ZTogYW55O1xyXG4gIGRhdGFTb3VyY2U6IGFueSA9IFtdO1xyXG4gIGRlZmF1bHRSb2xlczogYW55ID0gW107XHJcbiAgdGVzdFBhZ2luYXRvciA9IHtcclxuICAgIGxlbmd0aDogMTAwLFxyXG4gICAgcGFnZVNpemU6IDIwLFxyXG4gICAgcGFnZUluZGV4OiAwLFxyXG4gIH07XHJcbiAgb3JnVW5pdHM6IGFueSA9IFtdO1xyXG4gIHBhZ2VTaXplOiBudW1iZXIgPSAyMDtcclxuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMDtcclxuICB0b3RhbFJlc3VsdHM6IG51bWJlciA9IDA7XHJcbiAgaXNUZWFtQXZhaWxhYmxlOiBzdHJpbmcgPSAnJztcclxuICBzZWxlY3RlZFN0YXR1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dXYWl0Q3Vyc29yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBzZWxlY3RlZE9yZ1VuaXRzOiBhbnkgPSBbXTtcclxuICBicmVhZGNydW1iRGF0YTogYW55ID0gW107XHJcbiAgdG90YWxSZWNvcmRzOiBhbnk7XHJcbiAgdXNlckFsbEFjY291bnRzOiBhbnkgPSBbXTtcclxuICB1c2VyQWxsUm9sZXM6IGFueSA9IFtdO1xyXG4gIHRvdGFsTGVuZ3RoOiBhbnkgPSBbXTtcclxuICBjaGlsZHJlbkxlbmd0aDogYW55ID0gW107XHJcbiAgYWNjb3VudExlbmd0aDogYW55ID0gW107XHJcbiAgY3VycmVudFVzZXJFbWFpbDogYW55O1xyXG4gIGN1cnJlbnRVc2VyUm9sZTogYW55ID0gJyc7XHJcbiAgc2hvd0FjdGl2ZURlYWN0aXZlTW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZFJvbGU6IHN0cmluZyA9ICcnO1xyXG4gIEBWaWV3Q2hpbGQoJ2Nsb3NlQ29uZmlybU1vZGFsJykgY2xvc2VDb25maXJtTW9kYWw6IGFueTtcclxuICBAVmlld0NoaWxkKCdjbG9zZUludml0ZU1vZGFsJykgY2xvc2VJbnZpdGVNb2RhbDogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHRlYW1NZW1iZXJTZXJ2aWNlOiBUZWFtTWVtYmVyU2VydmljZSxcclxuICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY21zU2VydmljZTogQ21zU2VydmljZSxcclxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlckFjY291bnRTZXJ2aWNlXHJcbiAgKSB7IH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYnJlYWRjcnVtYkRhdGEucHVzaChcclxuICAgICAgeyB1cmw6ICcvJywgbmFtZTogJ0hvbWUnIH0sXHJcbiAgICAgIHsgdXJsOiAnLycsIG5hbWU6ICdNeSBUZWFtJyB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRUZWFtTGlzdCgpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplSW52aXRlRm9ybSgpO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdVc2Vyc1BhZ2VQYXJhZ3JhcGhDb21wb25lbnQnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5teVRlYW1QYXJhZ3JhcGggPSBkYXRhO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0KCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRVc2VyUm9sZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JvbGUnKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRVc2VyRW1haWwgPSBkYXRhPy5lbWFpbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGluaXRpYWxpemVJbnZpdGVGb3JtKCkge1xyXG4gICAgdGhpcy5yZWdpc3RlckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgZmlyc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGxhc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXHJcbiAgICAgIG1vYmlsZTogW1xyXG4gICAgICAgICcnLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIC8vVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDE2KSxcclxuICAgICAgICBdLFxyXG4gICAgICBdLFxyXG4gICAgICBhY2NvdW50OiBbJyddLFxyXG4gICAgICByb2xlczogWycnXSxcclxuICAgICAgZGVza1Bob25lOiBbJyddLFxyXG4gICAgICBqb2JUaXRsZTogWycnXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRUZWFtTGlzdCgpIHtcclxuICAgIHRoaXMudGVhbU1lbWJlclNlcnZpY2VcclxuICAgICAgLmdldE15VGVhbUxpc3QodGhpcy5wYWdlU2l6ZSwgdGhpcy5jdXJyZW50UGFnZSwgdGhpcy5zb3J0QnlWYWx1ZSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnVzZXJzICYmIGRhdGEudXNlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzVGVhbSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaXNUZWFtQXZhaWxhYmxlID0gJ2hhc0RhdGEnO1xyXG4gICAgICAgICAgICB0aGlzLm15VGVhbUxpc3REYXRhID0gZGF0YT8udXNlcnM7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGE/LnVzZXJzO1xyXG4gICAgICAgICAgICB0aGlzLnRlc3RQYWdpbmF0b3IubGVuZ3RoID0gZGF0YS5wYWdpbmF0aW9uLnRvdGFsUmVzdWx0cztcclxuICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSBkYXRhLnBhZ2luYXRpb24udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1RlYW1BdmFpbGFibGUgPSAnbm9EYXRhJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5pc1RlYW1BdmFpbGFibGUgPSAnbm9EYXRhJztcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwYWdlRXZlbnQoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucGFnZVNpemUgPSAkZXZlbnQucGFnZVNpemU7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gJGV2ZW50LnBhZ2VJbmRleDtcclxuICAgIHRoaXMuZ2V0VGVhbUxpc3QoKTtcclxuICB9XHJcbiAgZ2V0IGYoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlckZvcm0uY29udHJvbHM7XHJcbiAgfVxyXG4gIGNsZWFyRWRpdCgpIHtcclxuICAgIHRoaXMuaXNFcnJvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0VkaXQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0xpc3QgPSBbXTtcclxuICAgIHRoaXMub3JnVW5pdHMgPSBudWxsO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3JnVW5pdHMgPSBbXTtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlZ2lzdGVyRm9ybS5pbnZhbGlkIHx8XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNMaXN0Lmxlbmd0aCA9PSAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHNlbGVjdGVkUm9sZXM6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgc2VsZWN0ZWRSb2xlcy5wdXNoKGVsZW1lbnQudWlkKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5yZWdpc3RlckZvcm07XHJcbiAgICBsZXQgdXNlciA9IHtcclxuICAgICAgY3VzdG9tZXJJZDogdGhpcy5zZWxlY3RlZFVpZCA/IHRoaXMuc2VsZWN0ZWRVaWQgOiBudWxsLFxyXG4gICAgICB0aXRsZUNvZGU6ICdtcicsXHJcbiAgICAgIGZpcnN0TmFtZTogdmFsdWU/LmZpcnN0TmFtZSxcclxuICAgICAgbGFzdE5hbWU6IHZhbHVlPy5sYXN0TmFtZSxcclxuICAgICAgZW1haWw6IHZhbHVlPy5lbWFpbCxcclxuICAgICAgcGhvbmVOdW1iZXI6IHZhbHVlPy5tb2JpbGUsXHJcbiAgICAgIGFjY291bnRzOiB0aGlzLnNlbGVjdGVkT3JnVW5pdHMsXHJcbiAgICAgIHJvbGVzOiBzZWxlY3RlZFJvbGVzLFxyXG4gICAgICBkZXNrUGhvbmU6IHZhbHVlPy5kZXNrUGhvbmUsXHJcbiAgICAgIGpvYlRpdGxlOiB2YWx1ZT8uam9iVGl0bGUsXHJcbiAgICB9O1xyXG4gICAgaWYgKCF0aGlzLmlzRWRpdCAmJiB0aGlzLnJlZ2lzdGVyRm9ybS52YWxpZCkge1xyXG4gICAgICBkZWxldGUgdXNlci5jdXN0b21lcklkO1xyXG4gICAgICB0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLmNyZWF0ZU1lbWJlcih1c2VyKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0NyZWF0ZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVVwZGF0ZVRvYXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2xvc2VJbnZpdGVNb2RhbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5nZXRUZWFtTGlzdCgpO1xyXG4gICAgICAgICAgdGhpcy5yZWdpc3RlckZvcm0ucmVzZXQoKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVVwZGF0ZVRvYXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB9LCA0MDAwKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLmVycm9yLmVycm9yc1swXS5tZXNzYWdlO1xyXG4gICAgICAgICAgdGhpcy5pc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRWRpdCAmJiB0aGlzLnJlZ2lzdGVyRm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLnVwZGF0ZU1lbWJlcih1c2VyKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0NyZWF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGVVcGRhdGVUb2FzdCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlSW52aXRlTW9kYWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuZ2V0VGVhbUxpc3QoKTtcclxuICAgICAgICAgIHRoaXMuY2xlYXJFZGl0KCk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVVcGRhdGVUb2FzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgfSwgNDAwMCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvci5lcnJvcnNbMF0ubWVzc2FnZTtcclxuICAgICAgICAgIHRoaXMuaXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZWdpc3RlckZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzRXJyb3IgPSBmYWxzZTtcclxuICB9XHJcbiAgaW52aXRlTWVtYmVyKCkge1xyXG4gICAgdGhpcy5pc0Vycm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93RGF0YSA9IHt9O1xyXG4gICAgdGhpcy5zaG93TW9kYWwgPSB0cnVlO1xyXG4gICAgdGhpcy5nZXRBbGxVbml0cygpO1xyXG4gICAgdGhpcy5zZWxlY3RlZFVpZCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmdVbml0cyA9IFtdO1xyXG4gICAgdGhpcy5nZXRSb2xlcygpO1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVnaXN0ZXJGb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVJbnZpdGVGb3JtKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm9sZSA9ICcnO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGVkaXRNZW1iZXIoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmlzRXJyb3IgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmdVbml0cyA9IFtdO1xyXG4gICAgdGhpcy5pc0VkaXQgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93TW9kYWwgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd0RhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5zZWxlY3RlZFVpZCA9IGRhdGEuY3VzdG9tZXJJZDtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmdldEFsbFVuaXRzKCk7XHJcbiAgICB0aGlzLmdldFJvbGVzKCk7XHJcbiAgfVxyXG4gIGNoYW5nZVN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuaXNFcnJvciA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFVzZXJFbWFpbCA9PSBkYXRhLmRpc3BsYXlVaWQpIHtcclxuICAgICAgdGhpcy5zaG93QWN0aXZlRGVhY3RpdmVNb2RhbCA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkVXNlck5hbWUgPSBkYXRhLm5hbWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkVWlkID0gZGF0YS5jdXN0b21lcklkO1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1cyA9IGRhdGEuYWN0aXZlO1xyXG4gICAgdGhpcy5zaG93QWN0aXZlRGVhY3RpdmVNb2RhbCA9IHRydWU7XHJcbiAgICBpZiAoZGF0YS5hY3RpdmUgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgdXBkYXRlU3RhdHVzKCkge1xyXG4gICAgdGhpcy5pc0Vycm9yID0gZmFsc2U7XHJcbiAgICBsZXQgcmVxRGF0YTogYW55ID0ge1xyXG4gICAgICBjdXN0b21lcklkOiB0aGlzLnNlbGVjdGVkVWlkLFxyXG4gICAgICBhY3RpdmU6ICF0aGlzLnNlbGVjdGVkU3RhdHVzLFxyXG4gICAgICByb2xlczogW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy50ZWFtTWVtYmVyU2VydmljZS5hY3RpdmVEZWFjdGl2ZShyZXFEYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dUb2FzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jbG9zZUNvbmZpcm1Nb2RhbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLmdldFRlYW1MaXN0KCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvci5lcnJvcnNbMF0ubWVzc2FnZTtcclxuICAgICAgICB0aGlzLmlzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1RvYXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dUb2FzdCA9IGZhbHNlO1xyXG4gICAgfSwgNDAwMCk7XHJcbiAgfVxyXG4gIGdldE1vcmVDb3VudChhY2NvdW50RGF0YTogYW55LCB0ZWFtOiBhbnkpIHtcclxuICAgIHRoaXMudXNlckFsbEFjY291bnRzID0gW107XHJcbiAgICB0aGlzLmNoaWxkcmVuTGVuZ3RoID0gW107XHJcbiAgICB0aGlzLmFjY291bnRMZW5ndGggPSBbXTtcclxuICAgIHRoaXMudXNlckFsbEFjY291bnRzID0gYWNjb3VudERhdGE7XHJcbiAgICB0aGlzLnVzZXJBbGxBY2NvdW50cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy50b3RhbExlbmd0aCA9IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICB0aGlzLmFjY291bnRMZW5ndGgucHVzaCh0aGlzLnRvdGFsTGVuZ3RoKTtcclxuICAgICAgZWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgIHRoaXMuYWNjb3VudExlbmd0aC5wdXNoKGVsZS5jaGlsZHJlbi5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hpbGRyZW5MZW5ndGggPSB0aGlzLmFjY291bnRMZW5ndGgucmVkdWNlKFxyXG4gICAgICAoYTogYW55LCBiOiBhbnkpID0+IGEgKyBiLFxyXG4gICAgICAwXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRlYW0uYWNjb3VudHMubGVuZ3RoICsgdGhpcy5jaGlsZHJlbkxlbmd0aCAtIDM7XHJcbiAgfVxyXG5cclxuICB2aWV3TW9yZShhY2NvdW50RGF0YTogYW55LCBuYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudXNlckFsbEFjY291bnRzID0gW107XHJcbiAgICB0aGlzLmNoaWxkcmVuTGVuZ3RoID0gW107XHJcbiAgICB0aGlzLmFjY291bnRMZW5ndGggPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VyTmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLnVzZXJBbGxBY2NvdW50cyA9IGFjY291bnREYXRhO1xyXG4gICAgdGhpcy51c2VyQWxsQWNjb3VudHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudG90YWxMZW5ndGggPSBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgdGhpcy5hY2NvdW50TGVuZ3RoLnB1c2godGhpcy50b3RhbExlbmd0aCk7XHJcbiAgICAgIGVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZWxlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICB0aGlzLmFjY291bnRMZW5ndGgucHVzaChlbGUuY2hpbGRyZW4ubGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNoaWxkcmVuTGVuZ3RoID0gdGhpcy5hY2NvdW50TGVuZ3RoLnJlZHVjZShcclxuICAgICAgKGE6IGFueSwgYjogYW55KSA9PiBhICsgYixcclxuICAgICAgMFxyXG4gICAgKTtcclxuICB9XHJcbiAgdmlld01vcmVSb2xlcyhyb2xlc0RhdGE6IGFueSwgbmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnVzZXJBbGxSb2xlcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJOYW1lID0gbmFtZTtcclxuICAgIHRoaXMudXNlckFsbFJvbGVzID0gcm9sZXNEYXRhO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU2VsZWN0aW9uKGV2ZW50OiBhbnksIGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvbGUgPSBkYXRhLnVpZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0xpc3QucHVzaChkYXRhKTtcclxuICB9XHJcbiAgZmV0Y2hTZWxlY3RlZEl0ZW1zKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5yb2xlcy5maWx0ZXIoKHZhbHVlLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAodmFsdWUuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5wdXNoKHZhbHVlLnJvbGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNvcnRCeShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuc29ydEJ5VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMudGVhbU1lbWJlclNlcnZpY2Uuc29ydE15VGVhbSh0aGlzLnNvcnRCeVZhbHVlKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHJlcz8udXNlcnM7XHJcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXZhaWxhYmxlVW5pdHMoKSB7XHJcbiAgICB0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLmF2YWlsYWJsZU9yZ1VuaXRzKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLm9yZ1VuaXRzID0gZGF0YS51bml0Tm9kZXM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsVW5pdHMoKSB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQWNjb3VudERhdGEnKTtcclxuICAgIHRoaXMub3JnVW5pdHMgPSBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRVaWQgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRVaWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0RhdGEuYjJiVW5pdHM/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5wdXNoKHsgdWlkOiBlbGVtZW50IH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um9sZXMoKSB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLmdldEFsbFJvbGVzKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdFJvbGVzID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVWlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVWlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dEYXRhLnJvbGVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFJvbGVzLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEudWlkID09PSBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgIGRhdGEuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNMaXN0LnB1c2goeyB1aWQ6IGVsZW1lbnQgfSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvbGUgPSB0aGlzLnNlbGVjdGVkSXRlbXNMaXN0WzBdPy51aWQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VUb2FzdCgpIHtcclxuICAgIHRoaXMuc2hvd1RvYXN0ID0gZmFsc2U7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNsb3NlVXBkYXRlVG9hc3QoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZVRvYXN0ID0gZmFsc2U7XHJcbiAgfVxyXG4gIGZpbmRPcmdVbml0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMub3JnVW5pdHM/LmZpbmQoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudWlkID09IGRhdGEudWlkXHJcbiAgICApPy5uYW1lOyBcclxuICB9XHJcbiAgY2hlY2tPcmdVbml0KGV2ZW50OiBhbnksIGRhdGE6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3JnVW5pdHMucHVzaChkYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC51aWQgPT0gZGF0YS51aWRcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9yZ1VuaXRzLnNwbGljZShpbmQsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRDaGVja2VkU3RhdHVzZXMoaWQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRVaWQgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRVaWQpIHtcclxuICAgICAgbGV0IGluZCA9IHRoaXMuc2VsZWN0ZWRSb3dEYXRhLmIyYlVuaXRzLmZpbmRJbmRleChcclxuICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGlkXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBpbmQgPiAtMSA/IHRydWUgOiBmYWxzZTtcclxuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkU3RhdHVzZXNSb2xlKGlkOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVWlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVWlkKSB7XHJcbiAgICAgIGxldCBpbmQgPSB0aGlzLnNlbGVjdGVkUm93RGF0YS5yb2xlcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudCA9PSBpZFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gaW5kID4gLTEgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBudW1iZXJPbmx5KGV2ZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoYXJDb2RlID0gZXZlbnQud2hpY2ggPyBldmVudC53aGljaCA6IGV2ZW50LmtleUNvZGU7XHJcbiAgICBpZiAoY2hhckNvZGUgPiAzMSAmJiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgbnVtYmVyTW9iaWxlKGU6IGFueSkge1xyXG4gICAgZS50YXJnZXQudmFsdWUgPSBlLnRhcmdldC52YWx1ZS5yZXBsYWNlKC9bXlxcZF0vZywgJycpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZ1wiICpuZ0lmPVwic2hvd1dhaXRDdXJzb3IgfCBhc3luY1wiPkxvYWRpbmcmIzgyMzA7PC9kaXY+XHJcbjxhcHAtY3VzdG9tLWJyZWFkY3J1bVxyXG4gIFtjdXN0b21DcnVtYkRhdGFdPVwiYnJlYWRjcnVtYkRhdGFcIlxyXG4gIGNsYXNzPVwicHJvZHVjdHMtYnJlYWRjdW1zXCJcclxuPjwvYXBwLWN1c3RvbS1icmVhZGNydW0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RlYW1BdmFpbGFibGUgPT0gJ2hhc0RhdGEnXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRlYW0tbWVtYmVyc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05IGNvbC0xMiBtLWF1dG9cIj5cclxuICAgICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmdcIj5NeSBUZWFtPC9oMT5cclxuICAgICAgICAgIDxwICpuZ0lmPVwibXlUZWFtUGFyYWdyYXBoPy5jb250ZW50XCI+e3sgbXlUZWFtUGFyYWdyYXBoPy5jb250ZW50IH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMyBjb2wtMTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZpdGUtYnRuLWJnXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtb2JpbGUtaW52aXRlLWJ0biBkaW1vbmQtcHJpbWFyeS1idG5cIlxyXG4gICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ludml0ZU1lbWJlck1vZGFsXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiaW52aXRlTWVtYmVyKClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgSW52aXRlIE1lbWJlclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLTEyIG0tYXV0b1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duIHNvcnQtYnkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1lbWJlcnMtY291bnRcIj5cclxuICAgICAgICAgICAgICB7eyB0b3RhbFJlY29yZHMgfX0gbWVtYmVycyBpbiB5b3VyIHRlYW1cclxuICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwiXCIgaWQ9XCJcIiBjbGFzcz1cInNvcnQtYnRuXCIgKGNoYW5nZSk9XCJzb3J0QnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJieU5hbWVcIiBzZWxlY3RlZD5Tb3J0IGJ5OiBOYW1lIChBc2NlbmRpbmcpPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJ5TmFtZURlc2NcIj5Tb3J0IGJ5OiBOYW1lIChEZXNjZW5kaW5nKTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG1lbWJlcnMtdGFibGVcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5BY2NvdW50PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+Um9sZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkVtYWlsPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+TW9iaWxlICM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TdGF0dXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQtdGV4dCc6IHRlYW0uYWN0aXZlID09IGZhbHNlIH1cIlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGVhbSBvZiBkYXRhU291cmNlOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHRkPnt7IHRlYW0ubmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlbGxpcHNpc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY2NvdW50IG9mIHRlYW0/LmFjY291bnRzPy5zbGljZSgwLCAzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFjY291bnQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZWFtPy5hY2NvdW50cz8ubGVuZ3RoID4gM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZpZXdNb3JlLWxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2FjY291bnRNb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdNb3JlKHRlYW0uYWNjb3VudHMsIHRlYW0ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKyB7eyBnZXRNb3JlQ291bnQodGVhbS5hY2NvdW50cywgdGVhbSkgfX0gbW9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcm9sZSBvZiB0ZWFtPy5kaXNwbGF5Um9sZXM/LnNsaWNlKDAsIDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvbGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVhbT8uZGlzcGxheVJvbGVzPy5sZW5ndGggPiAzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmlld01vcmUtbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjcm9sZXNNb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdNb3JlUm9sZXModGVhbS5kaXNwbGF5Um9sZXMsIHRlYW0ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKyB7eyB0ZWFtLmRpc3BsYXlSb2xlcy5sZW5ndGggLSAzIH19IG1vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD57eyB0ZWFtLmRpc3BsYXlVaWQgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+e3sgdGVhbS5waG9uZU51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGVhbS5hY3RpdmUgPT0gdHJ1ZSA/ICdzdGF0dXMtYWN0aXZlJyA6ICdzdGF0dXMtZGVhY3RpdmUnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHRlYW0uYWN0aXZlID09IHRydWUgPyBcIkFjdGl2ZVwiIDogXCJEZWFjdGl2YXRlZFwiIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhbS5hY3RpdmUgPT0gZmFsc2UgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudFVzZXJSb2xlID09ICdCMkIgTWFuYWdlcicgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYW0/LnJvbGVzLmluY2x1ZGVzKCdCMkIgT3duZXInKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvRWRpdEljb25kaXNhYmxlZC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0VkaXRJY29uRW5hYmxlZC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYW0uYWN0aXZlID09IGZhbHNlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudFVzZXJSb2xlID09ICdCMkIgTWFuYWdlcicgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhbT8ucm9sZXMuaW5jbHVkZXMoJ0IyQiBPd25lcicpKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRlYW0uYWxsb3dlZFRvRWRpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRhcmdldD1cIiNpbnZpdGVNZW1iZXJNb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0TWVtYmVyKGRhdGFTb3VyY2VbaV0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlYW0uYWN0aXZlID09IGZhbHNlID8gJ0FjdGl2YXRlJyA6ICdEZWFjdGl2YXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhbS5hY3RpdmUgPT0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvQWN0aXZhdGVJY29uLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvRGlzYWJsZUljb24uc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VXNlckVtYWlsID09IHRlYW0/LmRpc3BsYXlVaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50VXNlclJvbGUgPT0gJ0IyQiBNYW5hZ2VyJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFtPy5yb2xlcy5pbmNsdWRlcygnQjJCIE93bmVyJykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJhY3RpdmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRhcmdldD1cIiNtZW1iZXJBY3RpdmF0ZU1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVN0YXR1cyhkYXRhU291cmNlW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICAgICAgICBhcHBQYWdpbmF0aW9uXHJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwibXlUZWFtTGlzdERhdGEgJiYgbXlUZWFtTGlzdERhdGE/Lmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgICAgW2xlbmd0aF09XCJ0ZXN0UGFnaW5hdG9yPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cIlsyMCwgNDAsIDYwXVwiXHJcbiAgICAgICAgICAgIChwYWdlKT1cInBhZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RlYW1BdmFpbGFibGUgPT0gJ25vRGF0YSdcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIG5vdGVhbS10ZXh0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1tZC1jZW50ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05IGNvbC1zbS1vZmZzZXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICBjbGFzcz1cIm1iLTRcIlxyXG4gICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0FsZXJ0SWNvbi5zdmdcIlxyXG4gICAgICAgICAgICBhbHQ9XCJhbGVydFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwibWItMlwiPllvdXIgdGVhbSBsaXN0IGlzIGVtcHR5ITwvaDM+XHJcbiAgICAgICAgICA8cD57eyBteVRlYW1QYXJhZ3JhcGg/LmNvbnRlbnQgfX08L3A+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBhZGQtYnRuXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ludml0ZU1lbWJlck1vZGFsXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImludml0ZU1lbWJlcigpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgSW52aXRlIE1lbWJlclxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG48ZGl2XHJcbiAgY2xhc3M9XCJtb2RhbCBmYWRlXCJcclxuICAqbmdJZj1cInNob3dNb2RhbFwiXHJcbiAgaWQ9XCJpbnZpdGVNZW1iZXJNb2RhbFwiXHJcbiAgcm9sZT1cImRpYWxvZ1wiXHJcbiAgYXJpYS1sYWJlbGxlZGJ5PVwiaW52aXRlTWVtYmVyTGFiZWxcIlxyXG4gIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1cImRvY3VtZW50XCIgKm5nSWY9XCJzaG93TW9kYWxcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxyXG4gICAgICAgICAge3sgaXNFZGl0ID09IHRydWUgPyBcIkVkaXRcIiA6IFwiSW52aXRlXCIgfX0gTWVtYmVyXHJcbiAgICAgICAgPC9oNT5cclxuICAgICAgICA8aVxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIlxyXG4gICAgICAgICAgI2Nsb3NlSW52aXRlTW9kYWxcclxuICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJFZGl0KClcIlxyXG4gICAgICAgID48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWdpc3Rlci1mb3JtXCI+XHJcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInJlZ2lzdGVyRm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVxdWlyZWRcIj5GaXJzdCBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLmZpcnN0TmFtZS5lcnJvcnMgfVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLmZpcnN0TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmZpcnN0TmFtZS5lcnJvcnNcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5maXJzdE5hbWUuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRmlyc3QgbmFtZSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVxdWlyZWRcIj5MYXN0IE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFzdE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5sYXN0TmFtZS5lcnJvcnMgfVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLmxhc3ROYW1lXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIGYubGFzdE5hbWUuZXJyb3JzXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYubGFzdE5hbWUuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgTGFzdCBuYW1lIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZXF1aXJlZFwiPkVtYWlsPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYuZW1haWwuZXJyb3JzIH1cIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm93RGF0YS5kaXNwbGF5VWlkXCJcclxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzRWRpdCA9PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIGYuZW1haWwuZXJyb3JzXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLnJlcXVpcmVkXCI+RW1haWwgaXMgcmVxdWlyZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLmVtYWlsXCI+RW1haWwgaXMgaW52YWxpZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWw+TW9iaWxlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRlbFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1vYmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYubW9iaWxlLmVycm9ycyB9XCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJvd0RhdGEucGhvbmVOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwibnVtYmVyT25seSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm51bWJlck1vYmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIGYubW9iaWxlLmVycm9yc1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmLm1vYmlsZS5lcnJvcnMucmVxdWlyZWRcIj5Nb2JpbGUgaXMgcmVxdWlyZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYubW9iaWxlLmVycm9ycy5taW5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICBOdW1iZXIgbXVzdCBiZSBhdCBsZWFzdCAxMCBjaGFyYWN0ZXJzXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5tb2JpbGUuZXJyb3JzLm1heGxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIE51bWJlciBtdXN0IG5vdCBleGNlZWQgMTYgY2hhcmFjdGVyc1xyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsPkRlc2sgUGhvbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGVsXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVza1Bob25lXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwibnVtYmVyT25seSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm51bWJlck1vYmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJvd0RhdGEuZGVza1Bob25lXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWw+Sm9iIFRpdGxlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImpvYlRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm93RGF0YS5qb2JUaXRsZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVxdWlyZWRcIj5BY2NvdW50PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICdpc0FjY291bnQtaW52YWxpZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiYgc2VsZWN0ZWRPcmdVbml0cz8ubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGFjY291bnQtY3VzdG9tLWlucHV0IHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGlkPVwiYnJhbmNoQWNjb3VudERyb3Bkb3duXCJcclxuICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gYWNjb3VudC1kb3duYXJyb3cgZmxvYXQtcmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3JnVW5pdHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICAgICAgID8gZmluZE9yZ1VuaXQoc2VsZWN0ZWRPcmdVbml0c1swXSlcclxuICAgICAgICAgICAgICAgICAgICAgIDogXCIgUGxlYXNlIFNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZE9yZ1VuaXRzPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsb2F0LXJpZ2h0IHByLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgID57eyBzZWxlY3RlZE9yZ1VuaXRzPy5sZW5ndGggfX0gU2VsZWN0ZWQ8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRPcmdVbml0cz8ubGVuZ3RoID09IDAgJiYgc3VibWl0dGVkXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpc0ludmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICBBY2NvdW50IGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGFjY291bnQtZHJvcGRvd25cIlxyXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY2NvdW50cy1saXN0XCIgKm5nSWY9XCJvcmdVbml0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVuaXQgb2Ygb3JnVW5pdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhY2NvdW50SXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyh1bml0LnVpZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VXNlckVtYWlsID09IHNlbGVjdGVkUm93RGF0YT8uZGlzcGxheVVpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMCBmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGVja09yZ1VuaXQoJGV2ZW50LCB7IHVpZDogdW5pdC51aWQgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInVuaXQudWlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVuaXQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB1bml0Py5jaGlsZHJlbjsgbGV0IGluZCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWMtY2hpbGQgbGlzdC1ib3JkZXItYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uY2hpbGRyZW4/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbGlzdC1ib3JkZXItYm90dG9tIHNlY1BhZGRpbmdMZnQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWNjb3VudEl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkU3RhdHVzZXMoZGF0YS51aWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoZWNrT3JnVW5pdCgkZXZlbnQsIHsgdWlkOiBkYXRhLnVpZCB9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnVpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ0aHJkLWNoaWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBkYXRhPy5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWNjb3VudEl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkU3RhdHVzZXMoY2hpbGQudWlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrT3JnVW5pdCgkZXZlbnQsIHsgdWlkOiBjaGlsZC51aWQgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjaGlsZC51aWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGlsZC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiY2hpbGQgJiYgY2hpbGQuY2hpbGRyZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGVjayBvZiBjaGlsZD8uY2hpbGRyZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhY2NvdW50SXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyhjaGVjay51aWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrT3JnVW5pdCgkZXZlbnQsIHsgdWlkOiBjaGVjay51aWQgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNoZWNrLnVpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hlY2submFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZXF1aXJlZFwiPlJvbGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXBcclxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZXhhbXBsZS1yYWRpby1ncm91cC1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhhbXBsZS1yYWRpby1ncm91cCByYWRpby1idG4tc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm9sZSBvZiBkZWZhdWx0Um9sZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb2xlLnVpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInJvbGUtZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlU2VsZWN0aW9uKCRldmVudCwgeyB1aWQ6IHJvbGUudWlkIH0pXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB6ZXJvLWJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRVc2VyRW1haWwgPT0gc2VsZWN0ZWRSb3dEYXRhPy5kaXNwbGF5VWlkXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFJvbGUgPT0gcm9sZS51aWRcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvbGU/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRJdGVtc0xpc3Q/Lmxlbmd0aCA9PSAwICYmIHN1Ym1pdHRlZFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXNJbnZhbGlkXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgUm9sZSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aHIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtc20tZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGQtYmxvY2sgYnRuLW1vYmlsZS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtb2JpbGUtY2FuY2VsLWJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBtci01XCJcclxuICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckVkaXQoKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtb2JpbGUtc2F2ZS1idG4gZGltb25kLXByaW1hcnktYnRuIGZsb2F0LXJpZ2h0XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBpc0VkaXQgPyBcIlNhdmVcIiA6IFwiSW52aXRlXCIgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cImlzRXJyb3JcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItYmxvY2sgYWxlcnQgYWxlcnQtZGFuZ2VyIGp1c3RpZnktY29udGVudC1zdGFydFwiXHJcbiAgICAgICAgICAgICAgcm9sZT1cImFsZXJ0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXItM1wiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Vycm9yaWNvbi5zdmdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiYWxlcnRcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPHA+e3sgZXJyb3JNZXNzYWdlIH19PC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2XHJcbiAgY2xhc3M9XCJtb2RhbCBmYWRlXCJcclxuICAqbmdJZj1cInNob3dBY3RpdmVEZWFjdGl2ZU1vZGFsXCJcclxuICBpZD1cIm1lbWJlckFjdGl2YXRlTW9kYWxcIlxyXG4gIHJvbGU9XCJkaWFsb2dcIlxyXG4gIGFyaWEtbGFiZWxsZWRieT1cIm1lbWJlckFjdGl2YXRlTGFiZWxcIlxyXG4gIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XHJcbiAgICAgICAgICB7eyBpc0FjdGl2ZSA/IFwiRGVhY3RpdmF0ZVwiIDogXCJBY3RpdmF0ZVwiIH19IE1lbWJlclxyXG4gICAgICAgIDwvaDU+XHJcbiAgICAgICAgPGlcclxuICAgICAgICAgIGNsYXNzPVwiaWNvbi1jbG9zZSBpbnZpdGUtcG9wLWNsb3NlXCJcclxuICAgICAgICAgICNjbG9zZUNvbmZpcm1Nb2RhbFxyXG4gICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgICAgICA+PC9pPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB7eyBpc0FjdGl2ZSA/IFwiZGVhY3RpdmF0ZVwiIDogXCJhY3RpdmF0ZVwiIH19XHJcbiAgICAgICAgICA8Yj57eyBzZWxlY3RlZFVzZXJOYW1lIH19PC9iPiBmcm9tIHlvdXIgdGVhbSBsaXN0Pzwvc3BhblxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtYmxvY2sgZC1zbS1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbW9iaWxlLWFjdGlvbi1idG4gbXQtNFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gZGltb25kLXNlY29uZGFyeS1idG4gbW9iaWxlLWNhbmNlbC1idG4gbXItNVwiXHJcbiAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgTm9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gZGltb25kLXByaW1hcnktYnRuIGZsb2F0LXJpZ2h0IG1vYmlsZS1zYXZlLWJ0blwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVTdGF0dXMoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFllc1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJpc0Vycm9yXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItYmxvY2sgYWxlcnQgYWxlcnQtZGFuZ2VyIGp1c3RpZnktY29udGVudC1zdGFydFwiXHJcbiAgICAgICAgICByb2xlPVwiYWxlcnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgY2xhc3M9XCJtci0zXCJcclxuICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9lcnJvcmljb24uc3ZnXCJcclxuICAgICAgICAgICAgYWx0PVwiYWxlcnRcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwPnt7IGVycm9yTWVzc2FnZSB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2XHJcbiAgY2xhc3M9XCJtb2RhbCBmYWRlXCJcclxuICBpZD1cImFjY291bnRNb2RhbFwiXHJcbiAgcm9sZT1cImRpYWxvZ1wiXHJcbiAgYXJpYS1sYWJlbGxlZGJ5PVwiYWNjb3VudExhYmVsXCJcclxuICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWQgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkFjY291bnRzPC9oNT5cclxuICAgICAgICA8aVxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIlxyXG4gICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgICAgICA+PC9pPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICA8aDQ+e3sgc2VsZWN0ZWRVc2VyTmFtZSB9fTwvaDQ+XHJcbiAgICAgICAgPHNwYW4+e3sgdXNlckFsbEFjY291bnRzLmxlbmd0aCArIGNoaWxkcmVuTGVuZ3RoIH19IGFjY291bnRzPC9zcGFuPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cImFjY291bnRzLWxpc3QgYWNjb3VudC1kYXRhLXRhYmxlXCI+XHJcbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgdXNlckFsbEFjY291bnRzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5kZXhJZCBweS0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImluZGV4LWxlYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDE1cHhcIj57e1xyXG4gICAgICAgICAgICAgICAgZGF0YS5uYW1lXHJcbiAgICAgICAgICAgICAgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGE/LmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkcmVuRGF0YSBvZiBkYXRhLmNoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbGlzdC1ib3JkZXItYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5kZXhJZCBweS0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImluZGV4LWxlYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDUwcHhcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5EYXRhLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2hpbGRyZW5EYXRhPy5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncmFuZENoaWxkIG9mIGNoaWxkcmVuRGF0YS5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGxpc3QtYm9yZGVyLWJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGV4SWQgcHktMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5kZXgtbGViZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDc1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGdyYW5kQ2hpbGQubmFtZSB9fTwvbGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdlxyXG4gIGNsYXNzPVwibW9kYWwgZmFkZVwiXHJcbiAgaWQ9XCJyb2xlc01vZGFsXCJcclxuICByb2xlPVwiZGlhbG9nXCJcclxuICBhcmlhLWxhYmVsbGVkYnk9XCJhY2NvdW50TGFiZWxcIlxyXG4gIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+Um9sZXM8L2g1PlxyXG4gICAgICAgIDxpXHJcbiAgICAgICAgICBjbGFzcz1cImljb24tY2xvc2UgaW52aXRlLXBvcC1jbG9zZVwiXHJcbiAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgID48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgIDxoND57eyBzZWxlY3RlZFVzZXJOYW1lIH19PC9oND5cclxuICAgICAgICA8c3Bhbj57eyB1c2VyQWxsUm9sZXMubGVuZ3RoIH19IHJvbGVzPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY2NvdW50cy1saXN0IGFjY291bnQtZGF0YS10YWJsZVwiPlxyXG4gICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB1c2VyQWxsUm9sZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBsaXN0LWJvcmRlci1ib3R0b21cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlSW5kZXggcHktMlwiPnt7IGkgKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5kZXgtbGViZWwgcGwtMlwiPnt7IGRhdGEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPG5nYi10b2FzdCAqbmdJZj1cInNob3dUb2FzdFwiIFthdXRvaGlkZV09XCJ0cnVlXCIgW2RlbGF5XT1cIjQwMDBcIj5cclxuICA8aW1nXHJcbiAgICBbc3JjXT1cIlxyXG4gICAgICAhaXNBY3RpdmVcclxuICAgICAgICA/ICcuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0FjdGl2YXRlSWNvbi5zdmcnXHJcbiAgICAgICAgOiAnLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9EaXNhYmxlSWNvbi5zdmcnXHJcbiAgICBcIlxyXG4gIC8+XHJcbiAge3sgaXNBY3RpdmUgPyBcIkRlYWN0aXZhdGVkXCIgOiBcIkFjdGl2YXRlZFwiIH19IHt7IHNlbGVjdGVkVXNlck5hbWUgfX1cclxuICA8aVxyXG4gICAgY2xhc3M9XCJpY29uLWNsb3NlIHRvYXN0LWNsb3NlXCJcclxuICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAoY2xpY2spPVwiY2xvc2VUb2FzdCgpXCJcclxuICA+PC9pPlxyXG48L25nYi10b2FzdD5cclxuPG5nYi10b2FzdCAqbmdJZj1cImNyZWF0ZVVwZGF0ZVRvYXN0XCIgW2F1dG9oaWRlXT1cInRydWVcIiBbZGVsYXldPVwiNDAwMFwiPlxyXG4gIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9JbnZpdGVkLnN2Z1wiIC8+XHJcbiAge3sgaXNDcmVhdGUgPyBcIk9uZSBuZXcgbWVtYmVyIGludml0ZWQgIVwiIDogXCJTYXZlIHdhcyBzdWNjZXNzZnVsXCIgfX1cclxuICA8aVxyXG4gICAgY2xhc3M9XCJpY29uLWNsb3NlIHRvYXN0LWNsb3NlXCJcclxuICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAoY2xpY2spPVwiY2xvc2VVcGRhdGVUb2FzdCgpXCJcclxuICA+PC9pPlxyXG48L25nYi10b2FzdD5cclxuIl19