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
@@ -1,22 +1,26 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, ViewChild } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
- import * as moment from 'moment';
4
3
  import { CommonUtils } from '../../utils';
4
+ import * as moment from 'moment';
5
+ import { NgxMasonryComponent } from 'ngx-masonry';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../../services/my-account.service";
7
8
  import * as i2 from "@spartacus/core";
8
- import * as i3 from "../../shared/date-range-picker/date-range-picker.component";
9
- import * as i4 from "@angular/common";
10
- import * as i5 from "ngx-infinite-scroll";
11
- import * as i6 from "@angular/forms";
9
+ import * as i3 from "@angular/common/http";
10
+ import * as i4 from "../../shared/date-range-picker/date-range-picker.component";
11
+ import * as i5 from "ngx-masonry";
12
+ import * as i6 from "@angular/common";
13
+ import * as i7 from "ngx-infinite-scroll";
14
+ import * as i8 from "@angular/forms";
12
15
  // Future requirement
13
16
  // declare var require: any;
14
17
  // const FileSaver = require('file-saver');
15
18
  export class InvoiceCreditComponent {
16
- constructor(myAccountService, cmsService, cd) {
19
+ constructor(myAccountService, cmsService, cd, http) {
17
20
  this.myAccountService = myAccountService;
18
21
  this.cmsService = cmsService;
19
22
  this.cd = cd;
23
+ this.http = http;
20
24
  this.listview = true;
21
25
  this.isDesktop = true;
22
26
  this.isMobile = false;
@@ -37,9 +41,12 @@ export class InvoiceCreditComponent {
37
41
  this.billingStatuses = [];
38
42
  this.isInputValue = false;
39
43
  this.selectedDateKey = 'dateRange';
44
+ this.isFirstCall = true;
40
45
  }
41
46
  ngOnInit() {
42
- this.cmsService.getComponentData('EmptySearchInvoicesListComponent').subscribe((data) => {
47
+ this.cmsService
48
+ .getComponentData('EmptySearchInvoicesListComponent')
49
+ .subscribe((data) => {
43
50
  if (data) {
44
51
  this.noInvoiceCrditData = data.content;
45
52
  }
@@ -101,9 +108,15 @@ export class InvoiceCreditComponent {
101
108
  this.cd.markForCheck();
102
109
  });
103
110
  this.cd.markForCheck();
111
+ setTimeout(() => {
112
+ this.isFirstCall = false;
113
+ }, 2000);
104
114
  this.showWaitCursor.next(false);
105
115
  }, (error) => {
106
116
  this.invoiceCreditList = [];
117
+ setTimeout(() => {
118
+ this.isFirstCall = false;
119
+ }, 2000);
107
120
  this.showWaitCursor.next(false);
108
121
  });
109
122
  }
@@ -159,7 +172,9 @@ export class InvoiceCreditComponent {
159
172
  this.selectedStatuses.splice(ind, 1);
160
173
  this.selectedStatuses.push(event);
161
174
  this.invoiceCreditList = [];
162
- this.getInvoiceCreditData();
175
+ if (this.isFirstCall == false) {
176
+ this.getInvoiceCreditData();
177
+ }
163
178
  }
164
179
  getSearchDropdownData() {
165
180
  this.showWaitCursor.next(true);
@@ -191,6 +206,7 @@ export class InvoiceCreditComponent {
191
206
  this.getSearchResults();
192
207
  }
193
208
  checkInvoiceStatus(event, data, mobileData) {
209
+ var _a;
194
210
  this.currentPage = 0;
195
211
  if (event.currentTarget.checked) {
196
212
  this.selectedStatuses.push(data);
@@ -204,7 +220,8 @@ export class InvoiceCreditComponent {
204
220
  const ind = this.selectedStatuses.findIndex((element) => element.value == data.value);
205
221
  this.selectedStatuses.splice(ind, 1);
206
222
  this.invoiceCreditList = [];
207
- if (!mobileData) {
223
+ console.log(this.selectedStatuses);
224
+ if (!mobileData && ((_a = this.selectedStatuses) === null || _a === void 0 ? void 0 : _a.length) > 0) {
208
225
  this.getSearchResults();
209
226
  }
210
227
  this.cd.markForCheck();
@@ -233,15 +250,17 @@ export class InvoiceCreditComponent {
233
250
  value: this.searchText,
234
251
  };
235
252
  if (this.searchText != '') {
236
- // this.selectedStatuses = [];
237
- // this.selectedFilters = [];
253
+ this.selectedStatuses = [];
254
+ this.selectedFilters = [];
238
255
  this.selectedFilters.push(obj);
239
256
  }
240
257
  const reqObj = {
241
258
  searchParams: this.selectedFilters,
242
259
  };
243
260
  this.showWaitCursor.next(true);
244
- this.myAccountService.getInvoiceCreditSearchResults(reqObj, this.currentPage).subscribe((res) => {
261
+ this.myAccountService
262
+ .getInvoiceCreditSearchResults(reqObj, this.currentPage)
263
+ .subscribe((res) => {
245
264
  var _a, _b;
246
265
  if (res && ((_a = res === null || res === void 0 ? void 0 : res.documents) === null || _a === void 0 ? void 0 : _a.length) > 0) {
247
266
  if (this.currentPage > 0) {
@@ -294,11 +313,22 @@ export class InvoiceCreditComponent {
294
313
  toggleGridOrListView(event) {
295
314
  event.preventDefault();
296
315
  this.listview = !this.listview;
316
+ if (this.listview == false) {
317
+ setTimeout(() => {
318
+ this.reloadMasonaryGrid();
319
+ }, 1000);
320
+ }
297
321
  }
298
322
  // Future requirement
299
323
  // downloadPdf(pdfUrl: any, pdfName: string) {
300
324
  // FileSaver.saveAs(pdfUrl, pdfName);
301
325
  // }
326
+ reloadMasonaryGrid() {
327
+ if (this.masonry && (CommonUtils.isDesktop() || CommonUtils.isTablet())) {
328
+ this.masonry.reloadItems();
329
+ this.masonry.layout();
330
+ }
331
+ }
302
332
  search() {
303
333
  this.currentPage = 0;
304
334
  this.getSearchResults();
@@ -306,6 +336,7 @@ export class InvoiceCreditComponent {
306
336
  loadMoreRecord() {
307
337
  this.loaderImage.next(true);
308
338
  this.currentPage += 1;
339
+ this.getInvoiceCreditData();
309
340
  }
310
341
  onScroll() {
311
342
  if (!this.noSearchResults &&
@@ -332,8 +363,8 @@ export class InvoiceCreditComponent {
332
363
  this.myAccountService.setOrderNumber('');
333
364
  }
334
365
  }
335
- InvoiceCreditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: InvoiceCreditComponent, deps: [{ token: i1.MyAccountService }, { token: i2.CmsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
336
- InvoiceCreditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: InvoiceCreditComponent, selector: "app-invoice-credit", ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async \">Loading&#8230;</div>\r\n<div class=\"container px-0\" infiniteScroll [infiniteScrollDistance]=\"0\" [infiniteScrollThrottle]=\"1000\" (scrolled)=\"onScroll()\" (window:resize)=\"onResize($event)\">\r\n <div class=\"invoice-credit-content\">\r\n <span *ngIf=\"isDesktop\" class=\"d-flex justify-content-end\">\r\n <a href=\"javascript:void(0)\" (click)=\"clearAll()\"><u>Clear all</u></a>\r\n </span>\r\n <div class=\"invoice-search-block\">\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <select name=\"\" id=\"\" (change)=\"onChange($event)\">\r\n <option value=\"documentNumber\" [selected]=\"selectedOrderType == 'documentNumber'\">Invoice #</option>\r\n <option value=\"poNumber\" [selected]=\"selectedOrderType == 'poNumber'\">PO #</option>\r\n <option value=\"orderNumber\" [selected]=\"selectedOrderType == 'orderNumber'\">Order #</option>\r\n </select>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"searchText\" (input)=\"onSearchChange($event)\" aria-label=\"Text input with dropdown button\">\r\n <div class=\"input-group-append\">\r\n <button type=\"button\" class=\"btn search-btn\" (click)=\"search()\" [disabled]=\"!isInputValue\">\r\n <img src=\"../../../assets/images/icon-ionic-ios-search.svg\" alt=\"\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"filter-block\">\r\n <div class=\"custom-date-input\">\r\n <app-date-range-picker (selectedDate)=\"getSelectedDate($event)\" [(ngModel)]=\"selectedDateRange\"></app-date-range-picker>\r\n <!-- <img src=\"../../../../assets/images/ic_calender.svg\" alt=\"calender\" class=\"date-icon\"> -->\r\n </div>\r\n <ng-container *ngIf=\"isDesktop; else filterMobile\">\r\n <div class=\"btn-group\">\r\n <button class=\"btn custom-dropdown-btn position-relative\" type=\"button\" id=\"orderState\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n Invoice State\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderState\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceStates\">\r\n <input type=\"checkbox\"\r\n name=\"dropdown-group\" class=\"rounded-0\" id=\"orderStateLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\" (change)=\"checkInvoiceStatus($event,{ key: 'state' , value: data.key })\" />\r\n {{data.value}}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button class=\"btn custom-dropdown-btn position-relative\" type=\"button\" id=\"deliveryType\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n Invoice Type\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"deliveryType\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceTypes\">\r\n <input type=\"checkbox\"\r\n name=\"dropdown-group\" class=\"rounded-0\" id=\"deliveryTypeLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\" (change)=\"checkInvoiceStatus($event,{ key: 'documentType' , value: data.key })\" />\r\n {{data.value}}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button class=\"btn custom-dropdown-btn position-relative\" type=\"button\" id=\"orderStatus\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n Billing Status\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of billingStatuses\">\r\n <input type=\"checkbox\"\r\n name=\"dropdown-group\" class=\"rounded-0\" id=\"orderStatusLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\" (change)=\"checkInvoiceStatus($event,{ key: 'statuses' , value: data.key })\"/>\r\n {{data.value}}\r\n </label>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"chips-block\" *ngIf=\"selectedStatuses.length > 0\">\r\n <ng-container *ngIf=\"selectedStatuses && selectedStatuses.length>0\">\r\n <div class=\"chips\" *ngFor=\"let data of selectedStatuses\">\r\n <p class=\"chip-title\"> {{data.key == 'state' ? 'Invoice State' : data.key == 'documentType' ? 'Invoice Type' : data.key == 'statuses' ? 'Billing Status' : 'Date Range'}} :</p>\r\n <span class=\"chip-content ml-1\">{{data.value}}</span>\r\n <i class=\"fas fa-times-circle ml-3 close-icon\" (click)=\"removeChips(data)\"></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterMobile>\r\n <button type=\"button\" class=\"btn dimond-secondary-btn filter-btn\" data-toggle=\"modal\" data-target=\"#filterModal\">More Filters</button>\r\n </ng-template>\r\n </div>\r\n <hr>\r\n <!-- Filter Modal-->\r\n <div class=\"modal fade modal-right\" id=\"filterModal\" role=\"dialog\" aria-labelledby=\"inviteMemberLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\"></h5>\r\n <i class=\"icon-close filter-popup-close\" (click)=\"clearAll()\" data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\" d-flex justify-content-between main-view\">\r\n <div class=\"filter-head\">\r\n <h3>Filters</h3>\r\n </div>\r\n <a href=\"javascript:void(0)\" (click)=\"clearAll()\" class=\"clearAll\"> <u>Clear all</u></a>\r\n </div>\r\n <div id=\"main\">\r\n <div class=\"accordion\" id=\"faq\">\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead1\">\r\n <a href=\"#\" class=\"btn btn-header-link\" data-toggle=\"collapse\" data-target=\"#faq1\" aria-expanded=\"true\" aria-controls=\"faq1\">Invoice State</a>\r\n </div>\r\n\r\n <div id=\"faq1\" class=\"collapse show\" aria-labelledby=\"faqhead1\" data-parent=\"#faq\">\r\n <div class=\"card-body\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceStates\">\r\n <input type=\"checkbox\" name=\"dropdown-group\" class=\"rounded-0\" id=\"orderStateLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\" [value]=\"data.value\"\r\n (change)=\"checkInvoiceStatus($event,{ key: 'state' , value: data.key },'mobile')\" />\r\n {{data.value}}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead2\">\r\n <a href=\"#\" class=\"btn btn-header-link collapsed\" data-toggle=\"collapse\" data-target=\"#faq2\" aria-expanded=\"true\" aria-controls=\"faq2\">Invoice Type</a>\r\n </div>\r\n\r\n <div id=\"faq2\" class=\"collapse\" aria-labelledby=\"faqhead2\" data-parent=\"#faq\">\r\n <div class=\"card-body\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceTypes\">\r\n <input type=\"checkbox\" name=\"dropdown-group\" class=\"rounded-0\" id=\"deliveryTypeLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\" [value]=\"data.value\"\r\n (change)=\"checkInvoiceStatus($event,{ key: 'documentType' , value: data.key },'mobile')\" />\r\n {{data.value}}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead3\">\r\n <a href=\"#\" class=\"btn btn-header-link collapsed\" data-toggle=\"collapse\" data-target=\"#faq3\" aria-expanded=\"true\" aria-controls=\"faq3\">Billing Status</a>\r\n </div>\r\n\r\n <div id=\"faq3\" class=\"collapse\" aria-labelledby=\"faqhead3\" data-parent=\"#faq\">\r\n <div class=\"card-body\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of billingStatuses\">\r\n <input type=\"checkbox\" name=\"dropdown-group\" class=\"rounded-0\" id=\"orderStatusLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\" [value]=\"data.value\"\r\n (change)=\"checkInvoiceStatus($event,{ key: 'statuses' , value: data.key },'mobile')\" />\r\n {{data.value}}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-lg-flex d-sm-block justify-content-end d-block fixed-bottom\">\r\n <button type=\"button\" data-dismiss=\"modal\" (click)=\"clearAll()\" class=\"btn mobile-cancel-btn dimond-secondary-btn mr-lg-5\">Cancel</button>\r\n <button type=\"submit\" data-dismiss=\"modal\" class=\"btn mobile-save-btn dimond-primary-btn float-right\" (click)=\"onSubmit()\">Apply</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- NO SEARCH RESULTS -->\r\n <ng-container *ngIf=\"invoiceCreditList?.length == 0\">\r\n <div class=\"row empty-accountPage-container text-center\">\r\n <div class=\"col-sm-12 col-md-12 col-12\">\r\n <div class=\"text-center\" [innerHTML]=\"noInvoiceCrditData\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container>\r\n <div class=\"invoice-credit-table\" *ngIf=\"invoiceCreditList?.length > 0\">\r\n <span class=\"total-order\">{{totalResults}} Invoices and Credit Notes found</span>\r\n <div class=\"d-flex justify-content-between py-3\">\r\n <div>\r\n <div class=\"btn-group\">\r\n <select name=\"\" id=\"\" class=\"mr-3\" (change)=\"sortBy($event)\">\r\n <option value=\"{{option.code}}\" *ngFor=\"let option of invoiceSortLists\">{{option.value}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"main-view\" *ngIf=\"isDesktop\">\r\n <button [ngClass]=\"{'active': listview === false}\" class=\"btn btn-sm\" (click)=\"toggleGridOrListView($event)\">\r\n <img *ngIf=\"listview === false\" src=\"../../../assets/images/Grid-light.svg\" alt=\"gridviewlight\">\r\n <img *ngIf=\"listview === true\" src=\"../../../assets/images/Grid-dark.svg\" alt=\"gridviewdark\">\r\n Grid\r\n </button>\r\n <button [ngClass]=\"{'active': listview === true}\" class=\"btn btn-sm active\" (click)=\"toggleGridOrListView($event)\">\r\n <img *ngIf=\"listview === true\" class=\"list-img\" src=\"../../../assets/images/List-light.svg\" alt=\"listview\">\r\n <img *ngIf=\"listview === false\" class=\"list-img\" src=\"../../../assets/images/List-dark.svg\" alt=\"listview\">\r\n List\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- INVOICE CREDIT LIST -->\r\n <div class=\"list-view table-responsive\" *ngIf=\"listview && isDesktop && invoiceCreditList?.length > 0\">\r\n <table class=\"table account-list-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">Date</th>\r\n <th scope=\"col\">Type</th>\r\n <th scope=\"col\">Invoice #</th>\r\n <th scope=\"col\">Order #</th>\r\n <th scope=\"col\">PO #</th>\r\n <th scope=\"col\">Status</th>\r\n <th scope=\"col\">Total <span class=\"gst-text\">excl GST</span></th>\r\n <th scope=\"col\">Outstanding <span class=\"gst-text\">excl GST</span></th>\r\n <th scope=\"col\">Download</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of invoiceCreditList\">\r\n <td>{{data.date | date: 'dd/MM/yyyy'}}</td>\r\n <td>{{data.documentType.name}}</td>\r\n <td>{{data.documentNumber}}</td>\r\n <td>{{data.orderNumber}}</td>\r\n <td>{{data.poNumber}}</td>\r\n <td class=\"status-message {{data.className}}\">{{data.status}}</td>\r\n <td [ngClass]=\"{'negative-price':data.amount < 0}\">{{data.formattedAmount}}</td>\r\n <td [ngClass]=\"{'negative-price':data.openAmount < 0}\">{{data.formattedOpenAmount}}</td>\r\n <td>\r\n <!-- <a href=\"javascript:void(0)\" (click)=\"downloadPdf(data?.attachments[0]?.downloadURL, data?.attachments[0]?.realFileName)\">\r\n <img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a> -->\r\n <a *ngIf=\"data.attachments\" target=\"_blank\" href=\"{{data?.attachments[0]?.downloadURL }}\"><img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- INVOICE CREDIT GRID -->\r\n <div class=\"row grid-view\" *ngIf=\"(!listview || !isDesktop) && invoiceCreditList?.length > 0\">\r\n <div class=\"col-lg-3 col-md-6 col-sm-12 col-12\" *ngFor=\"let data of invoiceCreditList\">\r\n <div class=\"grid-tile\">\r\n <div class=\"grid-top\">\r\n <table>\r\n <tr>\r\n <th>Invoice #:</th>\r\n <td>{{data.documentNumber}}</td>\r\n </tr>\r\n <tr>\r\n <th>Type:</th>\r\n <td>{{data.documentType.name}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-middle\">\r\n <table>\r\n <tr>\r\n <th>Date:</th>\r\n <td>{{data.date | date: 'dd/MM/yyyy'}}</td>\r\n </tr>\r\n <tr>\r\n <th>Order #:</th>\r\n <td>{{data.orderNumber}}</td>\r\n </tr>\r\n <tr>\r\n <th>PO #:</th>\r\n <td>{{data.poNumber}}</td>\r\n </tr>\r\n <tr>\r\n <th>Total:</th>\r\n <td [ngClass]=\"{'negative-price':data.amount < 0}\">{{data.formattedAmount}}<span class=\"gst-text\">excl GST</span></td>\r\n </tr>\r\n <tr>\r\n <th>Outstanding:</th>\r\n <td [ngClass]=\"{'negative-price':data.openAmount < 0}\">{{data.formattedOpenAmount}}<span class=\"gst-text\">excl GST</span></td>\r\n </tr>\r\n <tr>\r\n <th>Status:</th>\r\n <td class=\"status-message {{data.className}} status-icon\">{{data.status}}</td>\r\n </tr>\r\n <tr>\r\n <th>Download:</th>\r\n <td>\r\n <!-- Future requirement-->\r\n <!-- <a href=\"javascript:void(0)\" (click)=\"downloadPdf(data?.attachments[0]?.downloadURL, data?.attachments[0]?.realFileName)\">\r\n <img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a> -->\r\n <a *ngIf=\"data.attachments\" target=\"_blank\" href=\"{{data?.attachments[0]?.downloadURL }}\"><img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</div>", 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}}::ng-deep cx-page-layout.AccountPageTemplate cx-page-slot{max-width:100%!important;padding:0}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-content{margin-top:30px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block{background-color:#fff;border:1px solid #E0E0E0;padding:35px 30px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .drop-down-btn{background-color:#f6f6f6;border:1px solid #E0E0E0;border-radius:0;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .search-btn{background-color:#000;color:#fff;border-radius:0}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .input-group-prepend select{border:1px solid #E0E0E0;border-right:10px solid #F6F6F6;background-color:#f6f6f6;cursor:pointer;padding:0 10px;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block{padding:20px 30px;border:1px solid #E0E0E0;margin-bottom:2.375rem;position:relative}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input{display:inline-block}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input mat-radio-group{display:none}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-inner-circle{background-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-outer-circle{border-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action{height:40px;border:1px solid #E0E0E0;vertical-align:middle;padding:12px;margin-right:30px;color:#161616;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action::placeholder{color:#1d1d1b}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .date-icon{position:absolute;left:180px;top:43px;height:auto;border:none;cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;height:40px;width:240px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .chips-block{margin-top:40px}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips{background-color:#e8e8e8;display:inline-block;margin-bottom:10px;padding:8px 12px;border-radius:20px;margin-right:24px;font-size:var(--fontsize14)}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .chip-title{display:inline;font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .chip-content{font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .close-icon{cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem{padding:10px 0 10px 50px;margin-bottom:0}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem input[type=checkbox]{margin-top:.1rem}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table{margin-top:1.25rem}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table select{height:40px;border:1px solid #E0E0E0;padding:0 12px;cursor:pointer;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .total-order{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .history-table-dropdown{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;width:240px;height:40px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .history-table-dropdown .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .status-message{text-transform:capitalize}::ng-deep cx-page-layout.AccountPageTemplate .status-default,::ng-deep cx-page-layout.AccountPageTemplate .status-deactive:before,::ng-deep cx-page-layout.AccountPageTemplate .status-open:before,::ng-deep cx-page-layout.AccountPageTemplate .status-paid:before,::ng-deep cx-page-layout.AccountPageTemplate .status-overdue:before{content:\"\";width:8px;height:8px;border-radius:50%;position:absolute;left:0px;top:50%;transform:translate(-50%,-50%)}::ng-deep cx-page-layout.AccountPageTemplate .status-overdue:before{background-color:#d0021b}::ng-deep cx-page-layout.AccountPageTemplate .status-paid:before{background-color:#2aa900}::ng-deep cx-page-layout.AccountPageTemplate .status-open:before{background-color:#ff7d00}::ng-deep cx-page-layout.AccountPageTemplate .status-deactive{color:#8d8d8d}::ng-deep cx-page-layout.AccountPageTemplate .status-deactive:before{background-color:#8d8d8d}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile{border:1px solid #E0E0E0;margin-bottom:30px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-top{padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle{background-color:#fff;padding:15px;border-top:1px solid #E0E0E0;border-bottom:1px solid #E0E0E0}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle .status-icon{position:relative;padding-left:10px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table{width:100%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr{vertical-align:baseline;line-height:2rem}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr th{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;width:50%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr td{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .price-bold{font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .gst-text{font-size:var(--fontsize14);font-family:\"Arial Regular\",sans-serif;display:block;line-height:10px}::ng-deep cx-page-layout.AccountPageTemplate .noResults{margin:5rem auto}::ng-deep cx-page-layout.AccountPageTemplate .noResults h3{margin-top:1.5rem;font-size:var(--fontsize28);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table thead{background-color:#646363;height:60px}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table thead th{border-bottom:none;vertical-align:middle;text-align:left;color:#fff;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody tr{background-color:#fff}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody tr:nth-child(even){background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody td{position:relative}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody td a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody .price-bold{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table .gst-text{font-size:var(--fontsize12);display:block;text-transform:none;font-style:italic}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table .negative-price{color:#d0021b}::ng-deep cx-page-layout.AccountPageTemplate .empty-accountPage-container{margin:5rem auto}#filterModal .modal-body .btn-group{display:block}#filterModal .modal-body .btn-group .custom-dropdown-btn{width:100%;display:flex;justify-content:space-between;border-bottom:1px solid #E0E0E0}#filterModal .modal-body .filter-head h3{font-family:\"Arial Bold\",sans-serif}#filterModal .modal-body .fixed-bottom{position:fixed;right:20px;left:20px}#filterModal .modal-body .mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-body .mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-content{height:100vh}#filterModal .modal-content .filter-popup-close{font-size:1.6rem;color:#1d1d1b}#main{margin:50px 0}#main #faq .card{margin-bottom:30px;border:0}#main #faq .card .card-header{padding:0;border-bottom:1px solid #E0E0E0;background-color:#fff}#main #faq .card .card-header .btn-header-link{display:block;text-align:left;padding-left:0;color:#161616;font-family:\"Arial Bold\",sans-serif}#main #faq .card .card-header .btn-header-link:after{content:\"\\f107\";font-family:\"Font Awesome 5 Free\";font-weight:900;float:right}#main #faq .card .card-header .btn-header-link.collapsed:after{content:\"\\f106\"}#main #faq .card .collapse{border:0}@media screen and (max-width: 991px){.invoice-search-block{background-color:transparent!important;border:none!important;padding:0!important}.invoice-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .fx-date-range-container{display:inline!important}::ng-deep .filter-block .dimond-secondary-btn{margin-bottom:0!important}::ng-deep .filter-block .custom-date-input .date-icon{top:-2px!important;left:150px!important}#filterModal .modal-dialog{margin:0}#filterModal .modal-body .fixed-bottom{position:absolute;right:20px;left:20px}#filterModal .modal-content{width:50%!important;float:right!important}::ng-deep .fx-date-range-container .md-drppicker{z-index:9}::ng-deep .fx-date-range-container .md-drppicker .ranges ul li button{padding-top:3px;padding-bottom:3px;margin-bottom:0}}@media screen and (min-width: 767px){#filterModal .modal-dialog{position:fixed;width:100%;max-width:500px!important;min-width:500px!important;margin-top:0;right:0px;padding-bottom:2rem}}@media screen and (max-width: 768px){.invoice-search-block{background-color:transparent!important;border:none!important;padding:0!important}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .d-flex-mobile{display:flex;align-items:center}::ng-deep .filter-block .custom-date-input .date-icon{position:absolute!important;left:150px!important;top:-2px!important}::ng-deep .filter-block .btn-group .custom-dropdown-btn{width:auto}::ng-deep .filter-block .filter-btn{border:1px solid #E0E0E0!important;float:right;text-transform:none}#filterModal .modal-dialog{margin:0}#filterModal .modal-content{width:100%!important}.input-group-prepend select{height:48px}}@media screen and (max-width: 440px){#filterModal .modal-body{padding:20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}@media only screen and (min-width: 360px) and (max-width: 440px){::ng-deep .filter-block .custom-date-input .ngx-daterangepicker-action{width:140px}::ng-deep .filter-block .custom-date-input .date-icon{width:auto;left:100px!important}::ng-deep .filter-block .custom-date-input .md-drppicker.double{width:100%}#filterModal .modal-body{padding:15px 20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}\n"], components: [{ type: i3.DateRangePickerComponent, selector: "app-date-range-picker", inputs: ["selectedDateRange"], outputs: ["selectedDate"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i4.AsyncPipe, "date": i4.DatePipe } });
366
+ InvoiceCreditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: InvoiceCreditComponent, deps: [{ token: i1.MyAccountService }, { token: i2.CmsService }, { token: i0.ChangeDetectorRef }, { token: i3.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
367
+ InvoiceCreditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: InvoiceCreditComponent, selector: "app-invoice-credit", viewQueries: [{ propertyName: "masonry", first: true, predicate: NgxMasonryComponent, descendants: true }], ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading&#8230;</div>\r\n<div\r\n class=\"container px-0\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"0\"\r\n [infiniteScrollThrottle]=\"1000\"\r\n (scrolled)=\"onScroll()\"\r\n (window:resize)=\"onResize($event)\"\r\n>\r\n <div class=\"invoice-credit-content\">\r\n <span *ngIf=\"isDesktop\" class=\"d-flex justify-content-end\">\r\n <a href=\"javascript:void(0)\" (click)=\"clearAll()\"><u>Clear all</u></a>\r\n </span>\r\n <div class=\"invoice-search-block\">\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <select name=\"\" id=\"\" (change)=\"onChange($event)\">\r\n <option\r\n value=\"documentNumber\"\r\n [selected]=\"selectedOrderType == 'documentNumber'\"\r\n >\r\n Invoice #\r\n </option>\r\n <option\r\n value=\"poNumber\"\r\n [selected]=\"selectedOrderType == 'poNumber'\"\r\n >\r\n PO #\r\n </option>\r\n <option\r\n value=\"orderNumber\"\r\n [selected]=\"selectedOrderType == 'orderNumber'\"\r\n >\r\n Order #\r\n </option>\r\n </select>\r\n </div>\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"searchText\"\r\n (keyup.enter)=\"search()\"\r\n (input)=\"onSearchChange($event)\"\r\n aria-label=\"Text input with dropdown button\"\r\n />\r\n <div class=\"input-group-append\">\r\n <button\r\n type=\"button\"\r\n class=\"btn search-btn\"\r\n (click)=\"search()\"\r\n [disabled]=\"!isInputValue\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-ionic-ios-search.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"filter-block\">\r\n <div class=\"custom-date-input\">\r\n <app-date-range-picker\r\n (selectedDate)=\"getSelectedDate($event)\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n ></app-date-range-picker>\r\n <!-- <img src=\"../../../../assets/images/ic_calender.svg\" alt=\"calender\" class=\"date-icon\"> -->\r\n </div>\r\n <ng-container *ngIf=\"isDesktop; else filterMobile\">\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderState\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Invoice State\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderState\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceStates\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus($event, { key: 'state', value: data.key })\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"deliveryType\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Invoice Type\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"deliveryType\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceTypes\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus($event, {\r\n key: 'documentType',\r\n value: data.key\r\n })\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderStatus\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Billing Status\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of billingStatuses\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus($event, {\r\n key: 'statuses',\r\n value: data.key\r\n })\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"chips-block\" *ngIf=\"selectedStatuses.length > 0\">\r\n <ng-container *ngIf=\"selectedStatuses && selectedStatuses.length > 0\">\r\n <div class=\"chips\" *ngFor=\"let data of selectedStatuses\">\r\n <p class=\"chip-title\">\r\n {{\r\n data.key == \"state\"\r\n ? \"Invoice State\"\r\n : data.key == \"documentType\"\r\n ? \"Invoice Type\"\r\n : data.key == \"statuses\"\r\n ? \"Billing Status\"\r\n : \"Date Range\"\r\n }}\r\n :\r\n </p>\r\n <span class=\"chip-content ml-1\">{{ data.value }}</span>\r\n <i\r\n class=\"fas fa-times-circle ml-3 close-icon\"\r\n (click)=\"removeChips(data)\"\r\n ></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterMobile>\r\n <button\r\n type=\"button\"\r\n class=\"btn dimond-secondary-btn filter-btn\"\r\n data-toggle=\"modal\"\r\n data-target=\"#filterModal\"\r\n >\r\n More Filters\r\n </button>\r\n </ng-template>\r\n </div>\r\n <hr />\r\n <!-- Filter Modal-->\r\n <div\r\n class=\"modal fade modal-right\"\r\n id=\"filterModal\"\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\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\"></h5>\r\n <i\r\n class=\"icon-close filter-popup-close\"\r\n (click)=\"clearAll()\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"d-flex justify-content-between main-view\">\r\n <div class=\"filter-head\">\r\n <h3>Filters</h3>\r\n </div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"clearAll()\"\r\n class=\"clearAll\"\r\n >\r\n <u>Clear all</u></a\r\n >\r\n </div>\r\n <div id=\"main\">\r\n <div class=\"accordion\" id=\"faq\">\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead1\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq1\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq1\"\r\n >Invoice State</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq1\"\r\n class=\"collapse show\"\r\n aria-labelledby=\"faqhead1\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of invoiceStates\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus(\r\n $event,\r\n { key: 'state', value: data.key },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead2\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq2\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq2\"\r\n >Invoice Type</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq2\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead2\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of invoiceTypes\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus(\r\n $event,\r\n { key: 'documentType', value: data.key },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead3\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq3\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq3\"\r\n >Billing Status</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq3\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead3\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of billingStatuses\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus(\r\n $event,\r\n { key: 'statuses', value: data.key },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"d-lg-flex d-sm-block justify-content-end d-block fixed-bottom\"\r\n >\r\n <button\r\n type=\"button\"\r\n data-dismiss=\"modal\"\r\n (click)=\"clearAll()\"\r\n class=\"btn mobile-cancel-btn dimond-secondary-btn mr-lg-5\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n type=\"submit\"\r\n data-dismiss=\"modal\"\r\n class=\"btn mobile-save-btn dimond-primary-btn float-right\"\r\n (click)=\"onSubmit()\"\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- NO SEARCH RESULTS -->\r\n <ng-container *ngIf=\"invoiceCreditList?.length == 0\">\r\n <div class=\"row empty-accountPage-container text-center\">\r\n <div class=\"col-sm-12 col-md-12 col-12\">\r\n <div class=\"text-center\" [innerHTML]=\"noInvoiceCrditData\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container>\r\n <div class=\"invoice-credit-table\" *ngIf=\"invoiceCreditList?.length > 0\">\r\n <span class=\"total-order\"\r\n >{{ totalResults }} Invoices and Credit Notes found</span\r\n >\r\n <div class=\"d-flex justify-content-between py-3\">\r\n <div>\r\n <div class=\"btn-group\">\r\n <select name=\"\" id=\"\" class=\"mr-3\" (change)=\"sortBy($event)\">\r\n <option\r\n value=\"{{ option.code }}\"\r\n *ngFor=\"let option of invoiceSortLists\"\r\n >\r\n {{ option.value }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"main-view\" *ngIf=\"isDesktop\">\r\n <button\r\n [ngClass]=\"{ active: listview === false }\"\r\n class=\"btn btn-sm\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === false\"\r\n src=\"../../../assets/images/Grid-light.svg\"\r\n alt=\"gridviewlight\"\r\n />\r\n <img\r\n *ngIf=\"listview === true\"\r\n src=\"../../../assets/images/Grid-dark.svg\"\r\n alt=\"gridviewdark\"\r\n />\r\n Grid\r\n </button>\r\n <button\r\n [ngClass]=\"{ active: listview === true }\"\r\n class=\"btn btn-sm active\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === true\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-light.svg\"\r\n alt=\"listview\"\r\n />\r\n <img\r\n *ngIf=\"listview === false\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-dark.svg\"\r\n alt=\"listview\"\r\n />\r\n List\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- INVOICE CREDIT LIST -->\r\n <div\r\n class=\"list-view table-responsive\"\r\n *ngIf=\"listview && isDesktop && invoiceCreditList?.length > 0\"\r\n >\r\n <table class=\"table account-list-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">Date</th>\r\n <th scope=\"col\">Type</th>\r\n <th scope=\"col\">Invoice #</th>\r\n <th scope=\"col\">Order #</th>\r\n <th scope=\"col\">PO #</th>\r\n <th scope=\"col\">Status</th>\r\n <th scope=\"col\">Total <span class=\"gst-text\">excl GST</span></th>\r\n <th scope=\"col\">\r\n Outstanding <span class=\"gst-text\">excl GST</span>\r\n </th>\r\n <th scope=\"col\">Download</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of invoiceCreditList\">\r\n <td>{{ data.date | date : \"dd/MM/yyyy\" }}</td>\r\n <td>{{ data.documentType.name }}</td>\r\n <td>{{ data.documentNumber }}</td>\r\n <td>{{ data.orderNumber }}</td>\r\n <td>{{ data.poNumber }}</td>\r\n <td class=\"status-message {{ data.className }}\">\r\n {{ data.status }}\r\n </td>\r\n <td [ngClass]=\"{ 'negative-price': data.amount < 0 }\">\r\n {{ data.formattedAmount }}\r\n </td>\r\n <td [ngClass]=\"{ 'negative-price': data.openAmount < 0 }\">\r\n {{ data.formattedOpenAmount }}\r\n </td>\r\n <td>\r\n <!-- <a href=\"javascript:void(0)\" (click)=\"downloadPdf(data?.attachments[0]?.downloadURL, data?.attachments[0]?.realFileName)\">\r\n <img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a> -->\r\n <a\r\n *ngIf=\"data.attachments\"\r\n target=\"_blank\"\r\n href=\"{{ data?.attachments[0]?.downloadURL }}\"\r\n ><img\r\n src=\"../../../../assets/images/download-icon.svg\"\r\n alt=\"download\"\r\n class=\"mr-2\"\r\n />PDF</a\r\n >\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- INVOICE CREDIT GRID -->\r\n <ngx-masonry\r\n class=\"row grid-view\"\r\n *ngIf=\"(!listview || !isDesktop) && invoiceCreditList?.length > 0\"\r\n >\r\n <div\r\n ngxMasonryItem\r\n class=\"col-lg-3 col-md-6 col-sm-12 col-12\"\r\n *ngFor=\"let data of invoiceCreditList\"\r\n >\r\n <div class=\"grid-tile\">\r\n <div class=\"grid-top\">\r\n <table>\r\n <tr>\r\n <th>Invoice #:</th>\r\n <td>{{ data.documentNumber }}</td>\r\n </tr>\r\n <tr>\r\n <th>Type:</th>\r\n <td>{{ data.documentType.name }}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-middle\">\r\n <table>\r\n <tr>\r\n <th>Date:</th>\r\n <td>{{ data.date | date : \"dd/MM/yyyy\" }}</td>\r\n </tr>\r\n <tr>\r\n <th>Order #:</th>\r\n <td>{{ data.orderNumber }}</td>\r\n </tr>\r\n <tr>\r\n <th>PO #:</th>\r\n <td>{{ data.poNumber }}</td>\r\n </tr>\r\n <tr>\r\n <th>Total:</th>\r\n <td [ngClass]=\"{ 'negative-price': data.amount < 0 }\">\r\n {{ data.formattedAmount\r\n }}<span class=\"gst-text\">excl GST</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Outstanding:</th>\r\n <td [ngClass]=\"{ 'negative-price': data.openAmount < 0 }\">\r\n {{ data.formattedOpenAmount\r\n }}<span class=\"gst-text\">excl GST</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Status:</th>\r\n <td class=\"status-message {{ data.className }} status-icon\">\r\n {{ data.status }}\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Download:</th>\r\n <td>\r\n <!-- Future requirement-->\r\n <!-- <a href=\"javascript:void(0)\" (click)=\"downloadPdf(data?.attachments[0]?.downloadURL, data?.attachments[0]?.realFileName)\">\r\n <img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a> -->\r\n <a\r\n *ngIf=\"data.attachments\"\r\n target=\"_blank\"\r\n href=\"{{ data?.attachments[0]?.downloadURL }}\"\r\n ><img\r\n src=\"../../../../assets/images/download-icon.svg\"\r\n alt=\"download\"\r\n class=\"mr-2\"\r\n />PDF</a\r\n >\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </ngx-masonry>\r\n </ng-container>\r\n </div>\r\n</div>\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}}::ng-deep cx-page-layout.AccountPageTemplate cx-page-slot{max-width:100%!important;padding:0}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-content{margin-top:30px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block{background-color:#fff;border:1px solid #E0E0E0;padding:35px 30px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .drop-down-btn{background-color:#f6f6f6;border:1px solid #E0E0E0;border-radius:0;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .search-btn{background-color:#000;color:#fff;border-radius:0}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .input-group-prepend select{border:1px solid #E0E0E0;border-right:10px solid #F6F6F6;background-color:#f6f6f6;cursor:pointer;padding:0 10px;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block{padding:20px 30px;border:1px solid #E0E0E0;margin-bottom:2.375rem;position:relative}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input{display:inline-block}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input mat-radio-group{display:none}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-inner-circle{background-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-outer-circle{border-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action{height:40px;border:1px solid #E0E0E0;vertical-align:middle;padding:12px;margin-right:30px;color:#161616;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action::placeholder{color:#1d1d1b}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .date-icon{position:absolute;left:180px;top:43px;height:auto;border:none;cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;height:40px;width:240px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .chips-block{margin-top:40px}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips{background-color:#e8e8e8;display:inline-block;margin-bottom:10px;padding:8px 12px;border-radius:20px;margin-right:24px;font-size:var(--fontsize14)}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .chip-title{display:inline;font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .chip-content{font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .close-icon{cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem{padding:10px 0 10px 50px;margin-bottom:0}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem input[type=checkbox]{margin-top:.1rem}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table{margin-top:1.25rem}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table select{height:40px;border:1px solid #E0E0E0;padding:0 12px;cursor:pointer;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .total-order{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .history-table-dropdown{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;width:240px;height:40px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .history-table-dropdown .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .status-message{text-transform:capitalize}::ng-deep cx-page-layout.AccountPageTemplate .status-default,::ng-deep cx-page-layout.AccountPageTemplate .status-deactive:before,::ng-deep cx-page-layout.AccountPageTemplate .status-open:before,::ng-deep cx-page-layout.AccountPageTemplate .status-paid:before,::ng-deep cx-page-layout.AccountPageTemplate .status-overdue:before{content:\"\";width:8px;height:8px;border-radius:50%;position:absolute;left:0px;top:50%;transform:translate(-50%,-50%)}::ng-deep cx-page-layout.AccountPageTemplate .status-overdue:before{background-color:#d0021b}::ng-deep cx-page-layout.AccountPageTemplate .status-paid:before{background-color:#2aa900}::ng-deep cx-page-layout.AccountPageTemplate .status-open:before{background-color:#ff7d00}::ng-deep cx-page-layout.AccountPageTemplate .status-deactive{color:#8d8d8d}::ng-deep cx-page-layout.AccountPageTemplate .status-deactive:before{background-color:#8d8d8d}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile{border:1px solid #E0E0E0;margin-bottom:30px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-top{padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle{background-color:#fff;padding:15px;border-top:1px solid #E0E0E0;border-bottom:1px solid #E0E0E0}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle .status-icon{position:relative;padding-left:10px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table{width:100%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr{vertical-align:baseline;line-height:2rem}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr th{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;width:50%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr td{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .price-bold{font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .gst-text{font-size:var(--fontsize14);font-family:\"Arial Regular\",sans-serif;display:block;line-height:10px}::ng-deep cx-page-layout.AccountPageTemplate .noResults{margin:5rem auto}::ng-deep cx-page-layout.AccountPageTemplate .noResults h3{margin-top:1.5rem;font-size:var(--fontsize28);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table thead{background-color:#646363;height:60px}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table thead th{border-bottom:none;vertical-align:middle;text-align:left;color:#fff;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody tr{background-color:#fff}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody tr:nth-child(even){background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody td{position:relative}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody td a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody .price-bold{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table .gst-text{font-size:var(--fontsize12);display:block;text-transform:none;font-style:italic}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table .negative-price{color:#d0021b}::ng-deep cx-page-layout.AccountPageTemplate .empty-accountPage-container{margin:5rem auto}#filterModal .modal-body .btn-group{display:block}#filterModal .modal-body .btn-group .custom-dropdown-btn{width:100%;display:flex;justify-content:space-between;border-bottom:1px solid #E0E0E0}#filterModal .modal-body .filter-head h3{font-family:\"Arial Bold\",sans-serif}#filterModal .modal-body .fixed-bottom{position:fixed;right:20px;left:20px}#filterModal .modal-body .mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-body .mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-content{height:100vh}#filterModal .modal-content .filter-popup-close{font-size:1.6rem;color:#1d1d1b}#main{margin:50px 0}#main #faq .card{margin-bottom:30px;border:0}#main #faq .card .card-header{padding:0;border-bottom:1px solid #E0E0E0;background-color:#fff}#main #faq .card .card-header .btn-header-link{display:block;text-align:left;padding-left:0;color:#161616;font-family:\"Arial Bold\",sans-serif}#main #faq .card .card-header .btn-header-link:after{content:\"\\f107\";font-family:\"Font Awesome 5 Free\";font-weight:900;float:right}#main #faq .card .card-header .btn-header-link.collapsed:after{content:\"\\f106\"}#main #faq .card .collapse{border:0}@media screen and (max-width: 991px){.invoice-search-block{background-color:transparent!important;border:none!important;padding:0!important}.invoice-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .fx-date-range-container{display:inline!important}::ng-deep .filter-block .dimond-secondary-btn{margin-bottom:0!important}::ng-deep .filter-block .custom-date-input .date-icon{top:-2px!important;left:150px!important}#filterModal .modal-dialog{margin:0}#filterModal .modal-body .fixed-bottom{position:absolute;right:20px;left:20px}#filterModal .modal-content{width:50%!important;float:right!important}}@media screen and (min-width: 767px){#filterModal .modal-dialog{position:fixed;width:100%;max-width:500px!important;min-width:500px!important;margin-top:0;right:0px;padding-bottom:2rem}}@media screen and (max-width: 768px){.invoice-search-block{background-color:transparent!important;border:none!important;padding:0!important}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .d-flex-mobile{display:flex;align-items:center}::ng-deep .filter-block .custom-date-input .date-icon{position:absolute!important;left:150px!important;top:-2px!important}::ng-deep .filter-block .btn-group .custom-dropdown-btn{width:auto}::ng-deep .filter-block .filter-btn{border:1px solid #E0E0E0!important;float:right;text-transform:none}#filterModal .modal-dialog{margin:0}#filterModal .modal-content{width:100%!important}.input-group-prepend select{height:48px}::ng-deep .fx-date-range-container .md-drppicker.shown{width:100%!important;left:0px!important}::ng-deep .fx-date-range-container .md-drppicker.shown .calendar{max-width:100%}::ng-deep .fx-date-range-container .md-drppicker.shown .btn{width:calc(100% - 15px)!important}::ng-deep .fx-date-range-container .md-drppicker.shown .btn-default{width:calc(100% - 15px)!important;border:1px solid #1D1D1B;margin-right:0!important}}@media screen and (max-width: 440px){#filterModal .modal-body{padding:20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}@media only screen and (min-width: 360px) and (max-width: 440px){::ng-deep .filter-block .custom-date-input .ngx-daterangepicker-action{width:140px}::ng-deep .filter-block .custom-date-input .date-icon{width:auto;left:100px!important}::ng-deep .filter-block .custom-date-input .md-drppicker.double{width:100%}#filterModal .modal-body{padding:15px 20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}\n"], components: [{ type: i4.DateRangePickerComponent, selector: "app-date-range-picker", inputs: ["selectedDateRange"], outputs: ["selectedDate"] }, { type: i5.NgxMasonryComponent, selector: "[ngx-masonry], ngx-masonry", inputs: ["updateLayout", "ordered", "options"], outputs: ["layoutComplete", "removeComplete", "itemsLoaded"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgxMasonryDirective, selector: "[ngxMasonryItem], ngxMasonryItem", inputs: ["prepend"] }], pipes: { "async": i6.AsyncPipe, "date": i6.DatePipe } });
337
368
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: InvoiceCreditComponent, decorators: [{
338
369
  type: Component,
339
370
  args: [{
@@ -341,5 +372,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
341
372
  templateUrl: './invoice-credit.component.html',
342
373
  styleUrls: ['./invoice-credit.component.scss'],
343
374
  }]
344
- }], ctorParameters: function () { return [{ type: i1.MyAccountService }, { type: i2.CmsService }, { type: i0.ChangeDetectorRef }]; } });
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1jcmVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9teS1hY2NvdW50L2ludm9pY2UtY3JlZGl0L2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvbXktYWNjb3VudC9pbnZvaWNlLWNyZWRpdC9pbnZvaWNlLWNyZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7OztBQUkxQyxxQkFBcUI7QUFDckIsNEJBQTRCO0FBQzVCLDJDQUEyQztBQU8zQyxNQUFNLE9BQU8sc0JBQXNCO0lBMkJsQyxZQUNVLGdCQUFrQyxFQUNuQyxVQUFzQixFQUN0QixFQUFxQjtRQUZwQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ25DLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUE3QjlCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNyRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBR2xELGdCQUFX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LElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDOztvSEEvVlcsc0JBQXNCO3dHQUF0QixzQkFBc0IsMERDakJuQyx3a3BCQXNTTTs0RkRyUk8sc0JBQXNCO2tCQUxsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnOyAgXHJcbmltcG9ydCB7IENtc1NlcnZpY2UgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnOyBcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IENvbW1vblV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBNeUFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXktYWNjb3VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbi8vIEZ1dHVyZSByZXF1aXJlbWVudFxyXG4vLyBkZWNsYXJlIHZhciByZXF1aXJlOiBhbnk7XHJcbi8vIGNvbnN0IEZpbGVTYXZlciA9IHJlcXVpcmUoJ2ZpbGUtc2F2ZXInKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWludm9pY2UtY3JlZGl0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW52b2ljZS1jcmVkaXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnZvaWNlQ3JlZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cdGxpc3R2aWV3OiBib29sZWFuID0gdHJ1ZTtcclxuXHRpc0Rlc2t0b3AgPSB0cnVlO1xyXG5cdGlzTW9iaWxlID0gZmFsc2U7XHJcblx0aXNUYWJsZXQgPSBmYWxzZTtcclxuXHRzaG93V2FpdEN1cnNvciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGxvYWRlckltYWdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblx0dG90YWxSZXN1bHRzOiBhbnk7XHJcblx0aW52b2ljZVNvcnRMaXN0czogYW55O1xyXG5cdGN1cnJlbnRQYWdlID0gMDtcclxuXHRpbnZvaWNlQ3JlZGl0TGlzdDogYW55ID0gW107XHJcblx0c3RhdHVzTGlzdHM6IGFueSA9IFtdO1xyXG5cdHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG5cdGlzQ2xlYXJBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRub1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzb3J0QnlWYWx1ZTogYW55ID0gJ2J5RG9jdW1lbnRBc2MnO1xyXG5cdHNlbGVjdGVkT3JkZXJUeXBlOiBhbnkgPSAnZG9jdW1lbnROdW1iZXInO1xyXG5cdHNlbGVjdGVkU3RhdHVzZXM6IGFueSA9IFtdO1xyXG5cdGludm9pY2VTdGF0ZXM6IGFueSA9IFtdO1xyXG5cdGludm9pY2VUeXBlczogYW55ID0gW107XHJcblx0YmlsbGluZ1N0YXR1c2VzOiBhbnkgPSBbXTtcclxuXHRzZWxlY3RlZEZpbHRlcnM6IGFueTtcclxuXHRpc0lucHV0VmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzZWxlY3RlZERhdGVSYW5nZTogYW55O1xyXG5cdHNlbGVjdGVkRGF0ZUtleTogc3RyaW5nID0gJ2RhdGVSYW5nZSc7XHJcblx0bm9JbnZvaWNlQ3JkaXREYXRhOiBhbnk7XHJcbiAgXHJcblx0Y29uc3RydWN0b3IoXHJcblx0ICBwcml2YXRlIG15QWNjb3VudFNlcnZpY2U6IE15QWNjb3VudFNlcnZpY2UsXHJcblx0ICBwdWJsaWMgY21zU2VydmljZTogQ21zU2VydmljZSxcclxuXHQgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHsgfVxyXG4gIFxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdCAgdGhpcy5jbXNTZXJ2aWNlLmdldENvbXBvbmVudERhdGEoJ0VtcHR5U2VhcmNoSW52b2ljZXNMaXN0Q29tcG9uZW50Jykuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdGlmIChkYXRhKSB7XHJcblx0XHQgIHRoaXMubm9JbnZvaWNlQ3JkaXREYXRhID0gZGF0YS5jb250ZW50O1xyXG5cdFx0fVxyXG5cdCAgfSk7XHJcblx0ICBjb25zdCBvcmRlck51bWJlcjogYW55ID0gdGhpcy5teUFjY291bnRTZXJ2aWNlLmdldE9yZGVyTnVtYmVyKCk7XHJcblx0ICBpZiAob3JkZXJOdW1iZXIgIT0gbnVsbCkge1xyXG5cdFx0dGhpcy5zZWFyY2hUZXh0ID0gb3JkZXJOdW1iZXI7XHJcblx0XHR0aGlzLnNlbGVjdGVkT3JkZXJUeXBlID0gJ29yZGVyTnVtYmVyJztcclxuXHQgIH1cclxuXHQgIHRoaXMuZ2V0TGFzdE1vbnRoRGF0ZVJhbmdlKCk7XHJcblx0ICB0aGlzLmdldFNlYXJjaERyb3Bkb3duRGF0YSgpO1xyXG5cdCAgdGhpcy5nZXRJbnZvaWNlQ3JlZGl0RGF0YSgpO1xyXG5cdCAgLy8gdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcblx0ICB0aGlzLm9uUGFnZVJlZnJlc2goKTtcclxuXHR9XHJcbiAgXHJcblx0Z2V0SW52b2ljZUNyZWRpdERhdGEoKSB7XHJcblx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcblx0ICBjb25zdCByZXFPYmo6IGFueSA9IHtcclxuXHRcdHNlYXJjaFBhcmFtczogdGhpcy5zZWxlY3RlZFN0YXR1c2VzLFxyXG5cdCAgfTtcclxuXHQgIHRoaXMubXlBY2NvdW50U2VydmljZVxyXG5cdFx0LmdldEludm9pY2VzQ3JlZGl0TGlzdChyZXFPYmosIHRoaXMuY3VycmVudFBhZ2UpXHJcblx0XHQuc3Vic2NyaWJlKFxyXG5cdFx0ICAoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmlzQ2xlYXJBbGwgPT0gdHJ1ZSkge1xyXG5cdFx0XHQgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHRcdFx0ICB0aGlzLmlzQ2xlYXJBbGwgPSBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuXHRcdFx0ZGF0ZS5nZXRNb250aCgpO1xyXG5cdFx0XHRkYXRlLmdldERheSgpO1xyXG5cdFx0XHR0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcblx0XHRcdHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSB0aGlzLmludm9pY2VDcmVkaXRMaXN0LmNvbmNhdChcclxuXHRcdFx0ICBkYXRhLmRvY3VtZW50c1xyXG5cdFx0XHQpO1xyXG5cdFx0XHR0aGlzLnN0YXR1c0xpc3RzID0gZGF0YT8uZG9jdW1lbnRzPy5zdGF0dXM7XHJcblx0XHRcdHRoaXMuaW52b2ljZVNvcnRMaXN0cyA9IGRhdGE/LnNvcnRzO1xyXG5cdFx0XHR0aGlzLnRvdGFsUmVzdWx0cyA9IGRhdGE/LnBhZ2luYXRpb24/LnRvdGFsUmVzdWx0cztcclxuXHRcdFx0dGhpcy5nZXRTdGF0dXMoKTtcclxuXHRcdFx0dGhpcy5pbnZvaWNlU29ydExpc3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG5cdFx0XHQgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RG9jdW1lbnREZXNjJykge1xyXG5cdFx0XHRcdGVsZW1lbnQudmFsdWUgPSAnTmV3ZXN0IEludm9pY2UnO1xyXG5cdFx0XHQgIH1cclxuXHRcdFx0ICBpZiAoZWxlbWVudC5jb2RlID09ICdieURvY3VtZW50QXNjJykge1xyXG5cdFx0XHRcdGVsZW1lbnQudmFsdWUgPSAnT2xkZXN0IEludm9pY2UnO1xyXG5cdFx0XHQgIH1cclxuXHRcdFx0ICBpZiAoZWxlbWVudC5jb2RlID09ICdieVBPRGVzYycpIHtcclxuXHRcdFx0XHRlbGVtZW50LnZhbHVlID0gJ0hpZ2hlc3QgUE8gTnVtYmVyJztcclxuXHRcdFx0ICB9XHJcblx0XHRcdCAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0FzYycpIHtcclxuXHRcdFx0XHRlbGVtZW50LnZhbHVlID0gJ0xvd2VzdCBQTyBOdW1iZXInO1xyXG5cdFx0XHQgIH1cclxuXHRcdFx0ICBpZiAoZWxlbWVudC5jb2RlID09ICdieU9yZGVyQ29kZURlc2MnKSB7XHJcblx0XHRcdFx0ZWxlbWVudC52YWx1ZSA9ICdIaWdoZXN0IE9yZGVyIE51bWJlcic7XHJcblx0XHRcdCAgfVxyXG5cdFx0XHQgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5T3JkZXJDb2RlQXNjJykge1xyXG5cdFx0XHRcdGVsZW1lbnQudmFsdWUgPSAnTG93ZXN0IE9yZGVyIE51bWJlcic7XHJcblx0XHRcdCAgfVxyXG5cdFx0XHQgIHRoaXMubG9hZGVySW1hZ2UubmV4dChmYWxzZSk7XHJcblx0XHRcdCAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHQgIH0sXHJcblx0XHQgIChlcnJvcikgPT4ge1xyXG5cdFx0XHR0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcblx0XHRcdHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHQgIH1cclxuXHRcdCk7XHJcblx0fVxyXG4gIFxyXG5cdGdldFN0YXR1cygpIHtcclxuXHQgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcblx0XHRpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ29wZW4nKSB7XHJcblx0XHQgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1vcGVuJztcclxuXHRcdH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ2Nsb3NlZCcpIHtcclxuXHRcdCAgZWxlbWVudC5jbGFzc05hbWUgPSAnc3RhdHVzLXBhaWQnO1xyXG5cdFx0fSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAncGFpZCcpIHtcclxuXHRcdCAgZWxlbWVudC5jbGFzc05hbWUgPSAnc3RhdHVzLXBhaWQnO1xyXG5cdFx0fSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnb3ZlcmR1ZScpIHtcclxuXHRcdCAgZWxlbWVudC5jbGFzc05hbWUgPSAnc3RhdHVzLW92ZXJkdWUnO1xyXG5cdFx0fSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnb3V0c3RhbmRpbmcnKSB7XHJcblx0XHQgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1vcGVuJztcclxuXHRcdH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ3JlZnVuZCcpIHtcclxuXHRcdCAgZWxlbWVudC5jbGFzc05hbWUgPSAnc3RhdHVzLXBhaWQnO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sb2FkZXJJbWFnZS5uZXh0KGZhbHNlKTtcclxuXHRcdHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblx0ICB9KTtcclxuXHR9XHJcbiAgXHJcblx0Z2V0TGFzdE1vbnRoRGF0ZVJhbmdlKCkge1xyXG5cdCAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IFttb21lbnQoKS5zdWJ0cmFjdCgyOSwgJ2RheXMnKSwgbW9tZW50KCldO1xyXG5cdCAgY29uc3QgZGF0ZVZhbHVlID1cclxuXHRcdHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMF0uX2QuZ2V0RGF0ZSgpICtcclxuXHRcdCcvJyArXHJcblx0XHQodGhpcy5zZWxlY3RlZERhdGVSYW5nZVswXS5fZC5nZXRNb250aCgpICsgMSkgK1xyXG5cdFx0Jy8nICtcclxuXHRcdHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMF0uX2QuZ2V0RnVsbFllYXIoKSArXHJcblx0XHQnLCcgK1xyXG5cdFx0dGhpcy5zZWxlY3RlZERhdGVSYW5nZVsxXS5fZC5nZXREYXRlKCkgK1xyXG5cdFx0Jy8nICtcclxuXHRcdCh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzFdLl9kLmdldE1vbnRoKCkgKyAxKSArXHJcblx0XHQnLycgK1xyXG5cdFx0dGhpcy5zZWxlY3RlZERhdGVSYW5nZVsxXS5fZC5nZXRGdWxsWWVhcigpO1xyXG5cdCAgbGV0IG9iaiA9IHtcclxuXHRcdGtleTogdGhpcy5zZWxlY3RlZERhdGVLZXksXHJcblx0XHR2YWx1ZTogZGF0ZVZhbHVlLFxyXG5cdCAgfTtcclxuXHQgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5wdXNoKG9iaik7XHJcblx0fVxyXG4gIFxyXG5cdGdldFNlbGVjdGVkRGF0ZShldmVudDogYW55KSB7XHJcblx0ICBldmVudC5uYW1lID0gZXZlbnQudmFsdWU7XHJcblx0ICBldmVudC5rZXkgPSAnZGF0ZVJhbmdlJztcclxuXHQgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSBldmVudDtcclxuXHQgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5maW5kSW5kZXgoXHJcblx0XHQoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LmtleSA9PSAnZGF0ZVJhbmdlJ1xyXG5cdCAgKTtcclxuXHQgIGlmIChpbmQgPiAtMSkgdGhpcy5zZWxlY3RlZFN0YXR1c2VzLnNwbGljZShpbmQsIDEpO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzLnB1c2goZXZlbnQpO1xyXG5cdCAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG5cdCAgdGhpcy5nZXRJbnZvaWNlQ3JlZGl0RGF0YSgpO1xyXG5cdH1cclxuICBcclxuXHRnZXRTZWFyY2hEcm9wZG93bkRhdGEoKSB7XHJcblx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcblx0ICB0aGlzLm15QWNjb3VudFNlcnZpY2UuZ2V0SW52b2ljZUNyZWRpdFN0YXR1c2VzKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdGlmIChkYXRhKSB7XHJcblx0XHQgIHRoaXMuaW52b2ljZVN0YXRlcyA9IGRhdGEuc3RhdGVzO1xyXG5cdFx0ICB0aGlzLmludm9pY2VUeXBlcyA9IGRhdGEudHlwZXM7XHJcblx0XHQgIHRoaXMuYmlsbGluZ1N0YXR1c2VzID0gZGF0YS5zdGF0dXNlcztcclxuXHRcdCAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0ICB9KTtcclxuXHR9XHJcbiAgXHJcblx0Y2xlYXJBbGwoKSB7XHJcblx0XHR0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuXHRcdHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSAnZG9jdW1lbnROdW1iZXInO1xyXG5cdFx0dGhpcy5zZWxlY3RlZFN0YXR1c2VzID0gW107XHJcblx0XHR0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcblx0XHR0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xyXG5cdFx0dGhpcy5pc0NsZWFyQWxsID0gdHJ1ZTtcclxuXHRcdHRoaXMuaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcblx0XHQvLyB0aGlzLmdldExhc3RNb250aERhdGVSYW5nZSgpO1xyXG5cdFx0Ly8gdGhpcy5nZXRJbnZvaWNlQ3JlZGl0RGF0YSgpO1xyXG5cdH1cclxuICBcclxuXHRnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGE6IGFueSkge1xyXG5cdCAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZFN0YXR1c2VzLmZpbmRJbmRleChcclxuXHRcdChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG5cdCAgKTtcclxuXHQgIHJldHVybiBpbmQgPiAtMSA/IHRydWUgOiBmYWxzZTtcclxuXHQgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHQgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIFxyXG5cdH1cclxuICBcclxuXHRjaGVja0ludm9pY2VTdGF0dXMoZXZlbnQ6IGFueSwgZGF0YTogYW55LCBtb2JpbGVEYXRhPzogc3RyaW5nKSB7XHJcblx0ICB0aGlzLmN1cnJlbnRQYWdlID0gMDtcclxuXHQgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5wdXNoKGRhdGEpO1xyXG5cdFx0dGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG5cdFx0aWYgKCFtb2JpbGVEYXRhKSB7XHJcblx0XHQgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHQgIH0gZWxzZSB7XHJcblx0XHRjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuZmluZEluZGV4KFxyXG5cdFx0ICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LnZhbHVlID09IGRhdGEudmFsdWVcclxuXHRcdCk7XHJcblx0XHR0aGlzLnNlbGVjdGVkU3RhdHVzZXMuc3BsaWNlKGluZCwgMSk7XHJcblx0XHR0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcblx0XHRpZiAoIW1vYmlsZURhdGEpIHtcclxuXHRcdCAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdCAgfVxyXG5cdH1cclxuICBcclxuXHRyZW1vdmVDaGlwcyhkYXRhOiBhbnkpIHtcclxuXHRcdGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5maW5kSW5kZXgoXHJcblx0XHQgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5zcGxpY2UoaW5kLCAxKTtcclxuXHRcdHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHRcdGlmKHRoaXMuc2VsZWN0ZWRTdGF0dXNlcz8ubGVuZ3RoID09IDApIHtcclxuXHRcdCAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG5cdFx0ICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0ICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcblx0XHR9XHJcblx0XHRcclxuXHR9XHJcbiAgXHJcblx0b25DaGFuZ2UoZTogYW55KSB7XHJcblx0ICB0aGlzLnNlbGVjdGVkT3JkZXJUeXBlID0gZS50YXJnZXQudmFsdWU7XHJcblx0fVxyXG4gIFxyXG5cdGdldFNlYXJjaFJlc3VsdHMoKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZFN0YXR1c2VzKSk7XHJcblx0XHRjb25zdCBvYmogPSB7XHJcblx0XHQgIGtleTogdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSxcclxuXHRcdCAgdmFsdWU6IHRoaXMuc2VhcmNoVGV4dCxcclxuXHRcdH07XHJcblx0XHRpZiAodGhpcy5zZWFyY2hUZXh0ICE9ICcnKSB7XHJcblx0XHQgIC8vIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcyA9IFtdO1xyXG5cdFx0ICAvLyB0aGlzLnNlbGVjdGVkRmlsdGVycyA9IFtdO1xyXG5cdFx0ICB0aGlzLnNlbGVjdGVkRmlsdGVycy5wdXNoKG9iaik7XHJcblx0XHR9XHJcblx0XHRjb25zdCByZXFPYmo6IGFueSA9IHtcclxuXHRcdCAgc2VhcmNoUGFyYW1zOiB0aGlzLnNlbGVjdGVkRmlsdGVycyxcclxuXHRcdH07XHJcblx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcblx0XHR0aGlzLm15QWNjb3VudFNlcnZpY2UuZ2V0SW52b2ljZUNyZWRpdFNlYXJjaFJlc3VsdHMocmVxT2JqLCB0aGlzLmN1cnJlbnRQYWdlKS5zdWJzY3JpYmUoXHJcblx0XHQgIChyZXM6IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAocmVzICYmIHJlcz8uZG9jdW1lbnRzPy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdCAgaWYodGhpcy5jdXJyZW50UGFnZSA+IDApIHtcclxuXHRcdFx0XHR0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdC5jb25jYXQocmVzPy5kb2N1bWVudHMpO1xyXG5cdFx0XHQgIH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IHJlcz8uZG9jdW1lbnRzO1xyXG5cdFx0XHQgIH1cclxuXHRcdFx0ICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG5cdFx0XHQgIHRoaXMubm9TZWFyY2hSZXN1bHRzID0gZmFsc2U7XHJcblx0XHRcdCAgdGhpcy5nZXRTdGF0dXMoKTtcclxuXHRcdFx0ICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHQgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHRcdFx0ICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdCAgfSxcclxuXHRcdCAgKGVycm9yKSA9PiB7XHJcblx0XHRcdHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHRcdFx0dGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdCAgfVxyXG5cdFx0KTtcclxuXHR9XHJcbiAgXHJcblx0b25TZWFyY2hDaGFuZ2UoZTogYW55KSB7XHJcblx0ICBpZiAoZS50YXJnZXQudmFsdWUgPT0gJycgfHwgZS50YXJnZXQudmFsdWUuaW5kZXhPZignICcpID49IDApIHtcclxuXHRcdHRoaXMuaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcblx0ICB9IGVsc2Uge1xyXG5cdFx0dGhpcy5pc0lucHV0VmFsdWUgPSB0cnVlO1xyXG5cdCAgfVxyXG5cdH1cclxuICBcclxuXHRvblN1Ym1pdCgpIHtcclxuXHQgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG5cdH1cclxuICBcclxuXHRzb3J0QnkoZTogYW55KSB7XHJcblx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcblx0ICB0aGlzLnNvcnRCeVZhbHVlID0gZS50YXJnZXQudmFsdWU7XHJcblx0ICBjb25zdCByZXFPYmo6IGFueSA9IHtcclxuXHRcdHNlYXJjaFBhcmFtczogdGhpcy5zZWxlY3RlZEZpbHRlcnMsXHJcblx0ICB9O1xyXG5cdCAgdGhpcy5teUFjY291bnRTZXJ2aWNlLnNvcnRJbnZvaWNlQ3JlZGl0KHRoaXMuc29ydEJ5VmFsdWUsIHJlcU9iaikuc3Vic2NyaWJlKFxyXG5cdFx0KHJlczogYW55KSA9PiB7XHJcblx0XHQgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSByZXM/LmRvY3VtZW50cztcclxuXHRcdCAgdGhpcy5nZXRTdGF0dXMoKTtcclxuXHRcdCAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdH0sXHJcblx0XHQoZXJyb3IpID0+IHtcclxuXHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdH1cclxuXHQgICk7XHJcblx0fVxyXG4gIFxyXG5cdHRvZ2dsZUdyaWRPckxpc3RWaWV3KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHQgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0ICB0aGlzLmxpc3R2aWV3ID0gIXRoaXMubGlzdHZpZXc7XHJcblx0fVxyXG5cdC8vIEZ1dHVyZSByZXF1aXJlbWVudFxyXG5cdC8vIGRvd25sb2FkUGRmKHBkZlVybDogYW55LCBwZGZOYW1lOiBzdHJpbmcpIHtcclxuXHQvLyAgIEZpbGVTYXZlci5zYXZlQXMocGRmVXJsLCBwZGZOYW1lKTtcclxuXHQvLyB9XHJcblx0c2VhcmNoKCkge1xyXG5cdFx0dGhpcy5jdXJyZW50UGFnZSA9IDA7XHJcblx0XHR0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuXHR9XHJcblx0bG9hZE1vcmVSZWNvcmQoKSB7XHJcblx0ICB0aGlzLmxvYWRlckltYWdlLm5leHQodHJ1ZSk7XHJcblx0ICB0aGlzLmN1cnJlbnRQYWdlICs9IDE7XHQgIFxyXG5cdH1cclxuXHRvblNjcm9sbCgpIHtcclxuXHQgIGlmIChcclxuXHRcdCF0aGlzLm5vU2VhcmNoUmVzdWx0cyAmJlxyXG5cdFx0dGhpcy50b3RhbFJlc3VsdHMgPiB0aGlzLmludm9pY2VDcmVkaXRMaXN0Lmxlbmd0aFxyXG5cdCAgKSB7XHJcblx0XHR0aGlzLmxvYWRNb3JlUmVjb3JkKCk7XHJcblx0ICB9XHJcblx0fVxyXG4gIFxyXG5cdG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuXHQgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xyXG5cdCAgaWYgKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoIDwgOTkyKSB7XHJcblx0XHR0aGlzLmlzTW9iaWxlID0gdHJ1ZTtcclxuXHRcdHRoaXMuaXNEZXNrdG9wID0gZmFsc2U7XHJcblx0ICB9IGVsc2Uge1xyXG5cdFx0dGhpcy5pc0Rlc2t0b3AgPSB0cnVlO1xyXG5cdCAgfVxyXG5cdH1cclxuICBcclxuXHRvblBhZ2VSZWZyZXNoKCkge1xyXG5cdCAgdGhpcy5pc01vYmlsZSA9IENvbW1vblV0aWxzLmlzTW9iaWxlKCk7XHJcblx0ICB0aGlzLmlzVGFibGV0ID0gQ29tbW9uVXRpbHMuaXNUYWJsZXQoKTtcclxuXHQgIHRoaXMuaXNEZXNrdG9wID0gQ29tbW9uVXRpbHMuaXNEZXNrdG9wKCk7XHJcblx0fVxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdCAgdGhpcy5teUFjY291bnRTZXJ2aWNlLnNldE9yZGVyTnVtYmVyKCcnKTtcclxuXHR9XHJcbiAgfVxyXG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZ1wiICpuZ0lmPVwic2hvd1dhaXRDdXJzb3IgfCBhc3luYyBcIj5Mb2FkaW5nJiM4MjMwOzwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyIHB4LTBcIiBpbmZpbml0ZVNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIwXCIgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiMTAwMFwiIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCIgKHdpbmRvdzpyZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImludm9pY2UtY3JlZGl0LWNvbnRlbnRcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzRGVza3RvcFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiPjx1PkNsZWFyIGFsbDwvdT48L2E+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW52b2ljZS1zZWFyY2gtYmxvY2tcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtcHJlcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIlwiIGlkPVwiXCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9jdW1lbnROdW1iZXJcIiBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcmRlclR5cGUgPT0gJ2RvY3VtZW50TnVtYmVyJ1wiPkludm9pY2UgIzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInBvTnVtYmVyXCIgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdwb051bWJlcidcIj5QTyAjPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwib3JkZXJOdW1iZXJcIiBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcmRlclR5cGUgPT0gJ29yZGVyTnVtYmVyJ1wiPk9yZGVyICM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgKGlucHV0KT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIiBhcmlhLWxhYmVsPVwiVGV4dCBpbnB1dCB3aXRoIGRyb3Bkb3duIGJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIHNlYXJjaC1idG5cIiAoY2xpY2spPVwic2VhcmNoKClcIiBbZGlzYWJsZWRdPVwiIWlzSW5wdXRWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2ljb24taW9uaWMtaW9zLXNlYXJjaC5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRhdGUtaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtZGF0ZS1yYW5nZS1waWNrZXIgKHNlbGVjdGVkRGF0ZSk9XCJnZXRTZWxlY3RlZERhdGUoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIj48L2FwcC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGltZyBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2ljX2NhbGVuZGVyLnN2Z1wiIGFsdD1cImNhbGVuZGVyXCIgY2xhc3M9XCJkYXRlLWljb25cIj4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNEZXNrdG9wOyBlbHNlIGZpbHRlck1vYmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gY3VzdG9tLWRyb3Bkb3duLWJ0biBwb3NpdGlvbi1yZWxhdGl2ZVwiIHR5cGU9XCJidXR0b25cIiBpZD1cIm9yZGVyU3RhdGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9pY2UgU3RhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBjdXN0b20tYXJyb3ctZG93blwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJvcmRlclN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGludm9pY2VTdGF0ZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCIgY2xhc3M9XCJyb3VuZGVkLTBcIiBpZD1cIm9yZGVyU3RhdGVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiIChjaGFuZ2UpPVwiY2hlY2tJbnZvaWNlU3RhdHVzKCRldmVudCx7IGtleTogJ3N0YXRlJyAsIHZhbHVlOiBkYXRhLmtleSB9KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGN1c3RvbS1kcm9wZG93bi1idG4gcG9zaXRpb24tcmVsYXRpdmVcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJkZWxpdmVyeVR5cGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9pY2UgVHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGN1c3RvbS1hcnJvdy1kb3duXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImRlbGl2ZXJ5VHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlVHlwZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCIgY2xhc3M9XCJyb3VuZGVkLTBcIiBpZD1cImRlbGl2ZXJ5VHlwZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZEludm9pY2VTdGF0dXNlcyhkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCIgKGNoYW5nZSk9XCJjaGVja0ludm9pY2VTdGF0dXMoJGV2ZW50LHsga2V5OiAnZG9jdW1lbnRUeXBlJyAsIHZhbHVlOiBkYXRhLmtleSB9KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGN1c3RvbS1kcm9wZG93bi1idG4gcG9zaXRpb24tcmVsYXRpdmVcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJvcmRlclN0YXR1c1wiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlsbGluZyBTdGF0dXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBjdXN0b20tYXJyb3ctZG93blwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJvcmRlclN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBiaWxsaW5nU3RhdHVzZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCIgY2xhc3M9XCJyb3VuZGVkLTBcIiBpZD1cIm9yZGVyU3RhdHVzTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIiAoY2hhbmdlKT1cImNoZWNrSW52b2ljZVN0YXR1cygkZXZlbnQseyBrZXk6ICdzdGF0dXNlcycgLCB2YWx1ZTogZGF0YS5rZXkgfSlcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwcy1ibG9ja1wiICpuZ0lmPVwic2VsZWN0ZWRTdGF0dXNlcy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRTdGF0dXNlcyAmJiBzZWxlY3RlZFN0YXR1c2VzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBzXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsZWN0ZWRTdGF0dXNlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNoaXAtdGl0bGVcIj4ge3tkYXRhLmtleSA9PSAnc3RhdGUnID8gJ0ludm9pY2UgU3RhdGUnIDogZGF0YS5rZXkgPT0gJ2RvY3VtZW50VHlwZScgPyAnSW52b2ljZSBUeXBlJyA6IGRhdGEua2V5ID09ICdzdGF0dXNlcycgPyAnQmlsbGluZyBTdGF0dXMnIDogJ0RhdGUgUmFuZ2UnfX0gOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwLWNvbnRlbnQgbWwtMVwiPnt7ZGF0YS52YWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lcy1jaXJjbGUgbWwtMyBjbG9zZS1pY29uXCIgKGNsaWNrKT1cInJlbW92ZUNoaXBzKGRhdGEpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZpbHRlck1vYmlsZT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGRpbW9uZC1zZWNvbmRhcnktYnRuIGZpbHRlci1idG5cIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZmlsdGVyTW9kYWxcIj5Nb3JlIEZpbHRlcnM8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aHI+XHJcbiAgICAgICAgPCEtLSBGaWx0ZXIgTW9kYWwtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwgZmFkZSBtb2RhbC1yaWdodFwiIGlkPVwiZmlsdGVyTW9kYWxcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiaW52aXRlTWVtYmVyTGFiZWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGZpbHRlci1wb3B1cC1jbG9zZVwiIChjbGljayk9XCJjbGVhckFsbCgpXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWFpbi12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+RmlsdGVyczwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiIGNsYXNzPVwiY2xlYXJBbGxcIj4gPHU+Q2xlYXIgYWxsPC91PjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJtYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uXCIgaWQ9XCJmYXFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIiBpZD1cImZhcWhlYWQxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwiYnRuIGJ0bi1oZWFkZXItbGlua1wiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIiNmYXExXCIgYXJpYS1leHBhbmRlZD1cInRydWVcIiBhcmlhLWNvbnRyb2xzPVwiZmFxMVwiPkludm9pY2UgU3RhdGU8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImZhcTFcIiBjbGFzcz1cImNvbGxhcHNlIHNob3dcIiBhcmlhLWxhYmVsbGVkYnk9XCJmYXFoZWFkMVwiIGRhdGEtcGFyZW50PVwiI2ZhcVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGludm9pY2VTdGF0ZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIiBjbGFzcz1cInJvdW5kZWQtMFwiIGlkPVwib3JkZXJTdGF0ZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCIgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hlY2tJbnZvaWNlU3RhdHVzKCRldmVudCx7IGtleTogJ3N0YXRlJyAsIHZhbHVlOiBkYXRhLmtleSB9LCdtb2JpbGUnKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGEudmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwiZmFxaGVhZDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJidG4gYnRuLWhlYWRlci1saW5rIGNvbGxhcHNlZFwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIiNmYXEyXCIgYXJpYS1leHBhbmRlZD1cInRydWVcIiBhcmlhLWNvbnRyb2xzPVwiZmFxMlwiPkludm9pY2UgVHlwZTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiZmFxMlwiIGNsYXNzPVwiY29sbGFwc2VcIiBhcmlhLWxhYmVsbGVkYnk9XCJmYXFoZWFkMlwiIGRhdGEtcGFyZW50PVwiI2ZhcVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGludm9pY2VUeXBlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCIgaWQ9XCJkZWxpdmVyeVR5cGVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZEludm9pY2VTdGF0dXNlcyhkYXRhKVwiIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoZWNrSW52b2ljZVN0YXR1cygkZXZlbnQseyBrZXk6ICdkb2N1bWVudFR5cGUnICwgdmFsdWU6IGRhdGEua2V5IH0sJ21vYmlsZScpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgaWQ9XCJmYXFoZWFkM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImJ0biBidG4taGVhZGVyLWxpbmsgY29sbGFwc2VkXCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtdGFyZ2V0PVwiI2ZhcTNcIiBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiIGFyaWEtY29udHJvbHM9XCJmYXEzXCI+QmlsbGluZyBTdGF0dXM8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImZhcTNcIiBjbGFzcz1cImNvbGxhcHNlXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZmFxaGVhZDNcIiBkYXRhLXBhcmVudD1cIiNmYXFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBiaWxsaW5nU3RhdHVzZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIiBjbGFzcz1cInJvdW5kZWQtMFwiIGlkPVwib3JkZXJTdGF0dXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZEludm9pY2VTdGF0dXNlcyhkYXRhKVwiIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoZWNrSW52b2ljZVN0YXR1cygkZXZlbnQseyBrZXk6ICdzdGF0dXNlcycgLCB2YWx1ZTogZGF0YS5rZXkgfSwnbW9iaWxlJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtbGctZmxleCBkLXNtLWJsb2NrIGp1c3RpZnktY29udGVudC1lbmQgZC1ibG9jayBmaXhlZC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJjbGVhckFsbCgpXCIgY2xhc3M9XCJidG4gbW9iaWxlLWNhbmNlbC1idG4gZGltb25kLXNlY29uZGFyeS1idG4gbXItbGctNVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgY2xhc3M9XCJidG4gbW9iaWxlLXNhdmUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodFwiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIE5PIFNFQVJDSCBSRVNVTFRTIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBlbXB0eS1hY2NvdW50UGFnZS1jb250YWluZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTEyIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtpbm5lckhUTUxdPVwibm9JbnZvaWNlQ3JkaXREYXRhXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludm9pY2UtY3JlZGl0LXRhYmxlXCIgKm5nSWY9XCJpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1vcmRlclwiPnt7dG90YWxSZXN1bHRzfX0gSW52b2ljZXMgYW5kIENyZWRpdCBOb3RlcyBmb3VuZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIlwiIGlkPVwiXCIgY2xhc3M9XCJtci0zXCIgKGNoYW5nZSk9XCJzb3J0QnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwie3tvcHRpb24uY29kZX19XCIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBpbnZvaWNlU29ydExpc3RzXCI+e3tvcHRpb24udmFsdWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi12aWV3XCIgKm5nSWY9XCJpc0Rlc2t0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW25nQ2xhc3NdPVwieydhY3RpdmUnOiBsaXN0dmlldyA9PT0gZmFsc2V9XCIgY2xhc3M9XCJidG4gYnRuLXNtXCIgKGNsaWNrKT1cInRvZ2dsZUdyaWRPckxpc3RWaWV3KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImxpc3R2aWV3ID09PSBmYWxzZVwiIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvR3JpZC1saWdodC5zdmdcIiBhbHQ9XCJncmlkdmlld2xpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJsaXN0dmlldyA9PT0gdHJ1ZVwiIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvR3JpZC1kYXJrLnN2Z1wiIGFsdD1cImdyaWR2aWV3ZGFya1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogbGlzdHZpZXcgPT09IHRydWV9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGFjdGl2ZVwiIChjbGljayk9XCJ0b2dnbGVHcmlkT3JMaXN0VmlldygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJsaXN0dmlldyA9PT0gdHJ1ZVwiIGNsYXNzPVwibGlzdC1pbWdcIiBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0xpc3QtbGlnaHQuc3ZnXCIgYWx0PVwibGlzdHZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImxpc3R2aWV3ID09PSBmYWxzZVwiIGNsYXNzPVwibGlzdC1pbWdcIiBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0xpc3QtZGFyay5zdmdcIiBhbHQ9XCJsaXN0dmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIElOVk9JQ0UgQ1JFRElUIExJU1QgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LXZpZXcgdGFibGUtcmVzcG9uc2l2ZVwiICpuZ0lmPVwibGlzdHZpZXcgJiYgaXNEZXNrdG9wICYmIGludm9pY2VDcmVkaXRMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhY2NvdW50LWxpc3QtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkRhdGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+VHlwZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5JbnZvaWNlICM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T3JkZXIgIzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5QTyAjPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlN0YXR1czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Ub3RhbCA8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk91dHN0YW5kaW5nIDxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RG93bmxvYWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW52b2ljZUNyZWRpdExpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEuZGF0ZSB8IGRhdGU6ICdkZC9NTS95eXl5J319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEuZG9jdW1lbnRUeXBlLm5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhLmRvY3VtZW50TnVtYmVyfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZGF0YS5vcmRlck51bWJlcn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEucG9OdW1iZXJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzdGF0dXMtbWVzc2FnZSB7e2RhdGEuY2xhc3NOYW1lfX1cIj57e2RhdGEuc3RhdHVzfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsnbmVnYXRpdmUtcHJpY2UnOmRhdGEuYW1vdW50IDwgMH1cIj57e2RhdGEuZm9ybWF0dGVkQW1vdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsnbmVnYXRpdmUtcHJpY2UnOmRhdGEub3BlbkFtb3VudCA8IDB9XCI+e3tkYXRhLmZvcm1hdHRlZE9wZW5BbW91bnR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImRvd25sb2FkUGRmKGRhdGE/LmF0dGFjaG1lbnRzWzBdPy5kb3dubG9hZFVSTCwgZGF0YT8uYXR0YWNobWVudHNbMF0/LnJlYWxGaWxlTmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9kb3dubG9hZC1pY29uLnN2Z1wiIGFsdD1cImRvd25sb2FkXCIgY2xhc3M9XCJtci0yXCI+UERGPC9hPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImRhdGEuYXR0YWNobWVudHNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3tkYXRhPy5hdHRhY2htZW50c1swXT8uZG93bmxvYWRVUkwgfX1cIj48aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBJTlZPSUNFIENSRURJVCBHUklEIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGdyaWQtdmlld1wiICpuZ0lmPVwiKCFsaXN0dmlldyB8fCAhaXNEZXNrdG9wKSAmJiBpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC1tZC02IGNvbC1zbS0xMiBjb2wtMTJcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlQ3JlZGl0TGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXRpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+SW52b2ljZSAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEuZG9jdW1lbnROdW1iZXJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5UeXBlOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEuZG9jdW1lbnRUeXBlLm5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5EYXRlOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEuZGF0ZSB8IGRhdGU6ICdkZC9NTS95eXl5J319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk9yZGVyICM6PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZGF0YS5vcmRlck51bWJlcn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBPICM6PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZGF0YS5wb051bWJlcn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlRvdGFsOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7J25lZ2F0aXZlLXByaWNlJzpkYXRhLmFtb3VudCA8IDB9XCI+e3tkYXRhLmZvcm1hdHRlZEFtb3VudH19PHNwYW4gY2xhc3M9XCJnc3QtdGV4dFwiPmV4Y2wgR1NUPC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5PdXRzdGFuZGluZzo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieyduZWdhdGl2ZS1wcmljZSc6ZGF0YS5vcGVuQW1vdW50IDwgMH1cIj57e2RhdGEuZm9ybWF0dGVkT3BlbkFtb3VudH19PHNwYW4gY2xhc3M9XCJnc3QtdGV4dFwiPmV4Y2wgR1NUPC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TdGF0dXM6PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic3RhdHVzLW1lc3NhZ2Uge3tkYXRhLmNsYXNzTmFtZX19IHN0YXR1cy1pY29uXCI+e3tkYXRhLnN0YXR1c319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkRvd25sb2FkOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRnV0dXJlIHJlcXVpcmVtZW50LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZG93bmxvYWRQZGYoZGF0YT8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMLCBkYXRhPy5hdHRhY2htZW50c1swXT8ucmVhbEZpbGVOYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImRhdGEuYXR0YWNobWVudHNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3tkYXRhPy5hdHRhY2htZW50c1swXT8uZG93bmxvYWRVUkwgfX1cIj48aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
375
+ }], ctorParameters: function () { return [{ type: i1.MyAccountService }, { type: i2.CmsService }, { type: i0.ChangeDetectorRef }, { type: i3.HttpClient }]; }, propDecorators: { masonry: [{
376
+ type: ViewChild,
377
+ args: [NgxMasonryComponent, { static: false }]
378
+ }] } });
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1jcmVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9teS1hY2NvdW50L2ludm9pY2UtY3JlZGl0L2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvbXktYWNjb3VudC9pbnZvaWNlLWNyZWRpdC9pbnZvaWNlLWNyZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUcxQyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7QUFFbEQscUJBQXFCO0FBQ3JCLDRCQUE0QjtBQUM1QiwyQ0FBMkM7QUFPM0MsTUFBTSxPQUFPLHNCQUFzQjtJQTZCakMsWUFDVSxnQkFBa0MsRUFDbkMsVUFBc0IsRUFDdEIsRUFBcUIsRUFDcEIsSUFBZ0I7UUFIaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQVk7UUFoQzFCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMs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QVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7b0hBNVhVLHNCQUFzQjt3R0FBdEIsc0JBQXNCLG1HQTJCdEIsbUJBQW1CLGdEQzdDaEMsODF0QkFxbEJBOzRGRG5rQmEsc0JBQXNCO2tCQUxsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2lCQUMvQzt5TEE0Qm9ELE9BQU87c0JBQXpELFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tbW9uVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IE15QWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9teS1hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbXNTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE5neE1hc29ucnlDb21wb25lbnQgfSBmcm9tICduZ3gtbWFzb25yeSc7XHJcblxyXG4vLyBGdXR1cmUgcmVxdWlyZW1lbnRcclxuLy8gZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55O1xyXG4vLyBjb25zdCBGaWxlU2F2ZXIgPSByZXF1aXJlKCdmaWxlLXNhdmVyJyk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnZvaWNlLWNyZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnZvaWNlLWNyZWRpdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW52b2ljZUNyZWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBsaXN0dmlldzogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNEZXNrdG9wID0gdHJ1ZTtcclxuICBpc01vYmlsZSA9IGZhbHNlO1xyXG4gIGlzVGFibGV0ID0gZmFsc2U7XHJcbiAgc2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBsb2FkZXJJbWFnZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHRvdGFsUmVzdWx0czogYW55O1xyXG4gIGludm9pY2VTb3J0TGlzdHM6IGFueTtcclxuICBjdXJyZW50UGFnZSA9IDA7XHJcbiAgaW52b2ljZUNyZWRpdExpc3Q6IGFueSA9IFtdO1xyXG4gIHN0YXR1c0xpc3RzOiBhbnkgPSBbXTtcclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuICBpc0NsZWFyQWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbm9TZWFyY2hSZXN1bHRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc29ydEJ5VmFsdWU6IGFueSA9ICdieURvY3VtZW50QXNjJztcclxuICBzZWxlY3RlZE9yZGVyVHlwZTogYW55ID0gJ2RvY3VtZW50TnVtYmVyJztcclxuICBzZWxlY3RlZFN0YXR1c2VzOiBhbnkgPSBbXTtcclxuICBpbnZvaWNlU3RhdGVzOiBhbnkgPSBbXTtcclxuICBpbnZvaWNlVHlwZXM6IGFueSA9IFtdO1xyXG4gIGJpbGxpbmdTdGF0dXNlczogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRGaWx0ZXJzOiBhbnk7XHJcbiAgaXNJbnB1dFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueTtcclxuICBzZWxlY3RlZERhdGVLZXk6IHN0cmluZyA9ICdkYXRlUmFuZ2UnO1xyXG4gIG5vSW52b2ljZUNyZGl0RGF0YTogYW55O1xyXG4gIGlzRmlyc3RDYWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICBAVmlld0NoaWxkKE5neE1hc29ucnlDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBtYXNvbnJ5OiBOZ3hNYXNvbnJ5Q29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbXlBY2NvdW50U2VydmljZTogTXlBY2NvdW50U2VydmljZSxcclxuICAgIHB1YmxpYyBjbXNTZXJ2aWNlOiBDbXNTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdFbXB0eVNlYXJjaEludm9pY2VzTGlzdENvbXBvbmVudCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm5vSW52b2ljZUNyZGl0RGF0YSA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3Qgb3JkZXJOdW1iZXI6IGFueSA9IHRoaXMubXlBY2NvdW50U2VydmljZS5nZXRPcmRlck51bWJlcigpO1xyXG4gICAgaWYgKG9yZGVyTnVtYmVyICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gb3JkZXJOdW1iZXI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSAnb3JkZXJOdW1iZXInO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRMYXN0TW9udGhEYXRlUmFuZ2UoKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoRHJvcGRvd25EYXRhKCk7XHJcbiAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgICAvLyB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICAgIHRoaXMub25QYWdlUmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW52b2ljZUNyZWRpdERhdGEoKSB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICBjb25zdCByZXFPYmo6IGFueSA9IHtcclxuICAgICAgc2VhcmNoUGFyYW1zOiB0aGlzLnNlbGVjdGVkU3RhdHVzZXMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5teUFjY291bnRTZXJ2aWNlXHJcbiAgICAgIC5nZXRJbnZvaWNlc0NyZWRpdExpc3QocmVxT2JqLCB0aGlzLmN1cnJlbnRQYWdlKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmlzQ2xlYXJBbGwgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuaXNDbGVhckFsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgICAgZGF0ZS5nZXRNb250aCgpO1xyXG4gICAgICAgICAgZGF0ZS5nZXREYXkoKTtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSB0aGlzLmludm9pY2VDcmVkaXRMaXN0LmNvbmNhdChcclxuICAgICAgICAgICAgZGF0YS5kb2N1bWVudHNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c0xpc3RzID0gZGF0YT8uZG9jdW1lbnRzPy5zdGF0dXM7XHJcbiAgICAgICAgICB0aGlzLmludm9pY2VTb3J0TGlzdHMgPSBkYXRhPy5zb3J0cztcclxuICAgICAgICAgIHRoaXMudG90YWxSZXN1bHRzID0gZGF0YT8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgdGhpcy5nZXRTdGF0dXMoKTtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZVNvcnRMaXN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEb2N1bWVudERlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdOZXdlc3QgSW52b2ljZSc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEb2N1bWVudEFzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ09sZGVzdCBJbnZvaWNlJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieVBPRGVzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ0hpZ2hlc3QgUE8gTnVtYmVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieVBPQXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTG93ZXN0IFBPIE51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlPcmRlckNvZGVEZXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnSGlnaGVzdCBPcmRlciBOdW1iZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5T3JkZXJDb2RlQXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTG93ZXN0IE9yZGVyIE51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzKCkge1xyXG4gICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdvcGVuJykge1xyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1vcGVuJztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnY2xvc2VkJykge1xyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1wYWlkJztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAncGFpZCcpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtcGFpZCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ292ZXJkdWUnKSB7XHJcbiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnc3RhdHVzLW92ZXJkdWUnO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdvdXRzdGFuZGluZycpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtb3Blbic7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ3JlZnVuZCcpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtcGFpZCc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KGZhbHNlKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFzdE1vbnRoRGF0ZVJhbmdlKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IFttb21lbnQoKS5zdWJ0cmFjdCgyOSwgJ2RheXMnKSwgbW9tZW50KCldO1xyXG4gICAgY29uc3QgZGF0ZVZhbHVlID1cclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVswXS5fZC5nZXREYXRlKCkgK1xyXG4gICAgICAnLycgK1xyXG4gICAgICAodGhpcy5zZWxlY3RlZERhdGVSYW5nZVswXS5fZC5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAnLycgK1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAnLCcgK1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzFdLl9kLmdldERhdGUoKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgICh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzFdLl9kLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0RnVsbFllYXIoKTtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZERhdGVLZXksXHJcbiAgICAgIHZhbHVlOiBkYXRlVmFsdWUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzLnB1c2gob2JqKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkRGF0ZShldmVudDogYW55KSB7XHJcbiAgICBldmVudC5uYW1lID0gZXZlbnQudmFsdWU7XHJcbiAgICBldmVudC5rZXkgPSAnZGF0ZVJhbmdlJztcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSBldmVudDtcclxuICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQua2V5ID09ICdkYXRlUmFuZ2UnXHJcbiAgICApO1xyXG4gICAgaWYgKGluZCA+IC0xKSB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuc3BsaWNlKGluZCwgMSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhdHVzZXMucHVzaChldmVudCk7XHJcbiAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICBpZiAodGhpcy5pc0ZpcnN0Q2FsbCA9PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hEcm9wZG93bkRhdGEoKSB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLm15QWNjb3VudFNlcnZpY2UuZ2V0SW52b2ljZUNyZWRpdFN0YXR1c2VzKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VTdGF0ZXMgPSBkYXRhLnN0YXRlcztcclxuICAgICAgICB0aGlzLmludm9pY2VUeXBlcyA9IGRhdGEudHlwZXM7XHJcbiAgICAgICAgdGhpcy5iaWxsaW5nU3RhdHVzZXMgPSBkYXRhLnN0YXR1c2VzO1xyXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGwoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSAnZG9jdW1lbnROdW1iZXInO1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzID0gW107XHJcbiAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0NsZWFyQWxsID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLmdldExhc3RNb250aERhdGVSYW5nZSgpO1xyXG4gICAgLy8gdGhpcy5nZXRJbnZvaWNlQ3JlZGl0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZEludm9pY2VTdGF0dXNlcyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG4gICAgKTtcclxuICAgIHJldHVybiBpbmQgPiAtMSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJbnZvaWNlU3RhdHVzKGV2ZW50OiBhbnksIGRhdGE6IGFueSwgbW9iaWxlRGF0YT86IHN0cmluZykge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XHJcbiAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5wdXNoKGRhdGEpO1xyXG4gICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICAgIGlmICghbW9iaWxlRGF0YSkge1xyXG4gICAgICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuc3BsaWNlKGluZCwgMSk7XHJcbiAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFN0YXR1c2VzKVxyXG4gICAgICBpZiAoIW1vYmlsZURhdGEgJiYgdGhpcy5zZWxlY3RlZFN0YXR1c2VzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaXBzKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZFN0YXR1c2VzLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC52YWx1ZSA9PSBkYXRhLnZhbHVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzLnNwbGljZShpbmQsIDEpO1xyXG4gICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTdGF0dXNlcz8ubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSBlLnRhcmdldC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFJlc3VsdHMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZFN0YXR1c2VzKSk7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSxcclxuICAgICAgdmFsdWU6IHRoaXMuc2VhcmNoVGV4dCxcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0ICE9ICcnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5wdXNoKG9iaik7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXFPYmo6IGFueSA9IHtcclxuICAgICAgc2VhcmNoUGFyYW1zOiB0aGlzLnNlbGVjdGVkRmlsdGVycyxcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLm15QWNjb3VudFNlcnZpY2VcclxuICAgICAgLmdldEludm9pY2VDcmVkaXRTZWFyY2hSZXN1bHRzKHJlcU9iaiwgdGhpcy5jdXJyZW50UGFnZSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzPy5kb2N1bWVudHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IHRoaXMuaW52b2ljZUNyZWRpdExpc3QuY29uY2F0KFxyXG4gICAgICAgICAgICAgICAgcmVzPy5kb2N1bWVudHNcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSByZXM/LmRvY3VtZW50cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmdldFN0YXR1cygpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKGU6IGFueSkge1xyXG4gICAgaWYgKGUudGFyZ2V0LnZhbHVlID09ICcnIHx8IGUudGFyZ2V0LnZhbHVlLmluZGV4T2YoJyAnKSA+PSAwKSB7XHJcbiAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzSW5wdXRWYWx1ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgc29ydEJ5KGU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5zb3J0QnlWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgcmVxT2JqOiBhbnkgPSB7XHJcbiAgICAgIHNlYXJjaFBhcmFtczogdGhpcy5zZWxlY3RlZEZpbHRlcnMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5teUFjY291bnRTZXJ2aWNlLnNvcnRJbnZvaWNlQ3JlZGl0KHRoaXMuc29ydEJ5VmFsdWUsIHJlcU9iaikuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gcmVzPy5kb2N1bWVudHM7XHJcbiAgICAgICAgdGhpcy5nZXRTdGF0dXMoKTtcclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVHcmlkT3JMaXN0VmlldyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5saXN0dmlldyA9ICF0aGlzLmxpc3R2aWV3O1xyXG4gICAgaWYgKHRoaXMubGlzdHZpZXcgPT0gZmFsc2UpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWxvYWRNYXNvbmFyeUdyaWQoKTtcclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEZ1dHVyZSByZXF1aXJlbWVudFxyXG4gIC8vIGRvd25sb2FkUGRmKHBkZlVybDogYW55LCBwZGZOYW1lOiBzdHJpbmcpIHtcclxuICAvLyAgIEZpbGVTYXZlci5zYXZlQXMocGRmVXJsLCBwZGZOYW1lKTtcclxuICAvLyB9XHJcblxyXG4gIHJlbG9hZE1hc29uYXJ5R3JpZCgpIHtcclxuICAgIGlmICh0aGlzLm1hc29ucnkgJiYgKENvbW1vblV0aWxzLmlzRGVza3RvcCgpIHx8IENvbW1vblV0aWxzLmlzVGFibGV0KCkpKSB7XHJcbiAgICAgIHRoaXMubWFzb25yeS5yZWxvYWRJdGVtcygpXHJcbiAgICAgIHRoaXMubWFzb25yeS5sYXlvdXQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VhcmNoKCkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XHJcbiAgICB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICB9XHJcbiAgbG9hZE1vcmVSZWNvcmQoKSB7XHJcbiAgICB0aGlzLmxvYWRlckltYWdlLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlICs9IDE7XHJcbiAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgfVxyXG4gIG9uU2Nyb2xsKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5ub1NlYXJjaFJlc3VsdHMgJiZcclxuICAgICAgdGhpcy50b3RhbFJlc3VsdHMgPiB0aGlzLmludm9pY2VDcmVkaXRMaXN0Lmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9hZE1vcmVSZWNvcmQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoIDwgOTkyKSB7XHJcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzRGVza3RvcCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0Rlc2t0b3AgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlUmVmcmVzaCgpIHtcclxuICAgIHRoaXMuaXNNb2JpbGUgPSBDb21tb25VdGlscy5pc01vYmlsZSgpO1xyXG4gICAgdGhpcy5pc1RhYmxldCA9IENvbW1vblV0aWxzLmlzVGFibGV0KCk7XHJcbiAgICB0aGlzLmlzRGVza3RvcCA9IENvbW1vblV0aWxzLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubXlBY2NvdW50U2VydmljZS5zZXRPcmRlck51bWJlcignJyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jXCI+TG9hZGluZyYjODIzMDs8L2Rpdj5cclxuPGRpdlxyXG4gIGNsYXNzPVwiY29udGFpbmVyIHB4LTBcIlxyXG4gIGluZmluaXRlU2Nyb2xsXHJcbiAgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMFwiXHJcbiAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiMTAwMFwiXHJcbiAgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxyXG4gICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImludm9pY2UtY3JlZGl0LWNvbnRlbnRcIj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXNEZXNrdG9wXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj48dT5DbGVhciBhbGw8L3U+PC9hPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImludm9pY2Utc2VhcmNoLWJsb2NrXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1wcmVwZW5kXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJcIiBpZD1cIlwiIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJkb2N1bWVudE51bWJlclwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdkb2N1bWVudE51bWJlcidcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgSW52b2ljZSAjXHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJwb051bWJlclwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdwb051bWJlcidcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgUE8gI1xyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JkZXJOdW1iZXJcIlxyXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZE9yZGVyVHlwZSA9PSAnb3JkZXJOdW1iZXInXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIE9yZGVyICNcclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxyXG4gICAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRleHQgaW5wdXQgd2l0aCBkcm9wZG93biBidXR0b25cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gc2VhcmNoLWJ0blwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2goKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNJbnB1dFZhbHVlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaWNvbi1pb25pYy1pb3Mtc2VhcmNoLnN2Z1wiXHJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1ibG9ja1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRhdGUtaW5wdXRcIj5cclxuICAgICAgICA8YXBwLWRhdGUtcmFuZ2UtcGlja2VyXHJcbiAgICAgICAgICAoc2VsZWN0ZWREYXRlKT1cImdldFNlbGVjdGVkRGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgID48L2FwcC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgICAgICA8IS0tIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY19jYWxlbmRlci5zdmdcIiBhbHQ9XCJjYWxlbmRlclwiIGNsYXNzPVwiZGF0ZS1pY29uXCI+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGVza3RvcDsgZWxzZSBmaWx0ZXJNb2JpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGN1c3RvbS1kcm9wZG93bi1idG4gcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgSW52b2ljZSBTdGF0ZVxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0ZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlU3RhdGVzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0ZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tJbnZvaWNlU3RhdHVzKCRldmVudCwgeyBrZXk6ICdzdGF0ZScsIHZhbHVlOiBkYXRhLmtleSB9KVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIHt7IGRhdGEudmFsdWUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gY3VzdG9tLWRyb3Bkb3duLWJ0biBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZVwiXHJcbiAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxyXG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEludm9pY2UgVHlwZVxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZGVsaXZlcnlUeXBlXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGludm9pY2VUeXBlc1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tJbnZvaWNlU3RhdHVzKCRldmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2RvY3VtZW50VHlwZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBjdXN0b20tZHJvcGRvd24tYnRuIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNcIlxyXG4gICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBCaWxsaW5nIFN0YXR1c1xyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0dXNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgYmlsbGluZ1N0YXR1c2VzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrSW52b2ljZVN0YXR1cygkZXZlbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdzdGF0dXNlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2hpcHMtYmxvY2tcIiAqbmdJZj1cInNlbGVjdGVkU3RhdHVzZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFN0YXR1c2VzICYmIHNlbGVjdGVkU3RhdHVzZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBzXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsZWN0ZWRTdGF0dXNlc1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImNoaXAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgZGF0YS5rZXkgPT0gXCJzdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJJbnZvaWNlIFN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgOiBkYXRhLmtleSA9PSBcImRvY3VtZW50VHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJJbnZvaWNlIFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICA6IGRhdGEua2V5ID09IFwic3RhdHVzZXNcIlxyXG4gICAgICAgICAgICAgICAgICA/IFwiQmlsbGluZyBTdGF0dXNcIlxyXG4gICAgICAgICAgICAgICAgICA6IFwiRGF0ZSBSYW5nZVwiXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwLWNvbnRlbnQgbWwtMVwiPnt7IGRhdGEudmFsdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIG1sLTMgY2xvc2UtaWNvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNoaXBzKGRhdGEpXCJcclxuICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmaWx0ZXJNb2JpbGU+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBmaWx0ZXItYnRuXCJcclxuICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgZGF0YS10YXJnZXQ9XCIjZmlsdGVyTW9kYWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIE1vcmUgRmlsdGVyc1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgLz5cclxuICAgIDwhLS0gRmlsdGVyIE1vZGFsLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibW9kYWwgZmFkZSBtb2RhbC1yaWdodFwiXHJcbiAgICAgIGlkPVwiZmlsdGVyTW9kYWxcIlxyXG4gICAgICByb2xlPVwiZGlhbG9nXCJcclxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiaW52aXRlTWVtYmVyTGFiZWxcIlxyXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1cImRvY3VtZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj48L2g1PlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1jbG9zZSBmaWx0ZXItcG9wdXAtY2xvc2VcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcclxuICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYWluLXZpZXdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgIDxoMz5GaWx0ZXJzPC9oMz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyQWxsXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dT5DbGVhciBhbGw8L3U+PC9hXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cIm1haW5cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uXCIgaWQ9XCJmYXFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwiZmFxaGVhZDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWhlYWRlci1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjZmFxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmFxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+SW52b2ljZSBTdGF0ZTwvYVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmYXExXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbGxhcHNlIHNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZhcWhlYWQxXCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLXBhcmVudD1cIiNmYXFcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW52b2ljZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJbnZvaWNlU3RhdHVzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiAnc3RhdGUnLCB2YWx1ZTogZGF0YS5rZXkgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vYmlsZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgaWQ9XCJmYXFoZWFkMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taGVhZGVyLWxpbmsgY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjZmFxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmFxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+SW52b2ljZSBUeXBlPC9hXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImZhcTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZhcWhlYWQyXCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLXBhcmVudD1cIiNmYXFcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW52b2ljZVR5cGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW52b2ljZVN0YXR1cyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleTogJ2RvY3VtZW50VHlwZScsIHZhbHVlOiBkYXRhLmtleSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9iaWxlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEudmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIiBpZD1cImZhcWhlYWQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1oZWFkZXItbGluayBjb2xsYXBzZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRhcmdldD1cIiNmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5CaWxsaW5nIFN0YXR1czwvYVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbGxhcHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJmYXFoZWFkM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1wYXJlbnQ9XCIjZmFxXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGJpbGxpbmdTdGF0dXNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXR1c0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW52b2ljZVN0YXR1cyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleTogJ3N0YXR1c2VzJywgdmFsdWU6IGRhdGEua2V5IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2JpbGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtbGctZmxleCBkLXNtLWJsb2NrIGp1c3RpZnktY29udGVudC1lbmQgZC1ibG9jayBmaXhlZC1ib3R0b21cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtb2JpbGUtY2FuY2VsLWJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBtci1sZy01XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gbW9iaWxlLXNhdmUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBOTyBTRUFSQ0ggUkVTVUxUUyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID09IDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBlbXB0eS1hY2NvdW50UGFnZS1jb250YWluZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtMTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtpbm5lckhUTUxdPVwibm9JbnZvaWNlQ3JkaXREYXRhXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW52b2ljZS1jcmVkaXQtdGFibGVcIiAqbmdJZj1cImludm9pY2VDcmVkaXRMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1vcmRlclwiXHJcbiAgICAgICAgICA+e3sgdG90YWxSZXN1bHRzIH19IEludm9pY2VzIGFuZCBDcmVkaXQgTm90ZXMgZm91bmQ8L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweS0zXCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwiXCIgaWQ9XCJcIiBjbGFzcz1cIm1yLTNcIiAoY2hhbmdlKT1cInNvcnRCeSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgb3B0aW9uLmNvZGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGludm9pY2VTb3J0TGlzdHNcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmlld1wiICpuZ0lmPVwiaXNEZXNrdG9wXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGxpc3R2aWV3ID09PSBmYWxzZSB9XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlR3JpZE9yTGlzdFZpZXcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImxpc3R2aWV3ID09PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvR3JpZC1saWdodC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJncmlkdmlld2xpZ2h0XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0dyaWQtZGFyay5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJncmlkdmlld2RhcmtcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIEdyaWRcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogbGlzdHZpZXcgPT09IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVHcmlkT3JMaXN0VmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtaW1nXCJcclxuICAgICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9MaXN0LWxpZ2h0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWltZ1wiXHJcbiAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvTGlzdC1kYXJrLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICBMaXN0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIElOVk9JQ0UgQ1JFRElUIExJU1QgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxpc3QtdmlldyB0YWJsZS1yZXNwb25zaXZlXCJcclxuICAgICAgICAqbmdJZj1cImxpc3R2aWV3ICYmIGlzRGVza3RvcCAmJiBpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID4gMFwiXHJcbiAgICAgID5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhY2NvdW50LWxpc3QtdGFibGVcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkRhdGU8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlR5cGU8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkludm9pY2UgIzwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T3JkZXIgIzwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+UE8gIzwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U3RhdHVzPC90aD5cclxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Ub3RhbCA8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIE91dHN0YW5kaW5nIDxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkRvd25sb2FkPC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlQ3JlZGl0TGlzdFwiPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLmRhdGUgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLmRvY3VtZW50VHlwZS5uYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3sgZGF0YS5kb2N1bWVudE51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7IGRhdGEub3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLnBvTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzdGF0dXMtbWVzc2FnZSB7eyBkYXRhLmNsYXNzTmFtZSB9fVwiPlxyXG4gICAgICAgICAgICAgICAge3sgZGF0YS5zdGF0dXMgfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7ICduZWdhdGl2ZS1wcmljZSc6IGRhdGEuYW1vdW50IDwgMCB9XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhLmZvcm1hdHRlZEFtb3VudCB9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsgJ25lZ2F0aXZlLXByaWNlJzogZGF0YS5vcGVuQW1vdW50IDwgMCB9XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhLmZvcm1hdHRlZE9wZW5BbW91bnQgfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJkb3dubG9hZFBkZihkYXRhPy5hdHRhY2htZW50c1swXT8uZG93bmxvYWRVUkwsIGRhdGE/LmF0dGFjaG1lbnRzWzBdPy5yZWFsRmlsZU5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT4gLS0+XHJcbiAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuYXR0YWNobWVudHNcIlxyXG4gICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICBocmVmPVwie3sgZGF0YT8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMIH19XCJcclxuICAgICAgICAgICAgICAgICAgPjxpbWdcclxuICAgICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd25sb2FkLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJkb3dubG9hZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtci0yXCJcclxuICAgICAgICAgICAgICAgICAgLz5QREY8L2FcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSU5WT0lDRSBDUkVESVQgR1JJRCAtLT5cclxuICAgICAgPG5neC1tYXNvbnJ5XHJcbiAgICAgICAgY2xhc3M9XCJyb3cgZ3JpZC12aWV3XCJcclxuICAgICAgICAqbmdJZj1cIighbGlzdHZpZXcgfHwgIWlzRGVza3RvcCkgJiYgaW52b2ljZUNyZWRpdExpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgbmd4TWFzb25yeUl0ZW1cclxuICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29sLW1kLTYgY29sLXNtLTEyIGNvbC0xMlwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlQ3JlZGl0TGlzdFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtdGlsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC10b3BcIj5cclxuICAgICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5JbnZvaWNlICM6PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkPnt7IGRhdGEuZG9jdW1lbnROdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRoPlR5cGU6PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkPnt7IGRhdGEuZG9jdW1lbnRUeXBlLm5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+RGF0ZTo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+e3sgZGF0YS5kYXRlIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5PcmRlciAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD57eyBkYXRhLm9yZGVyTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5QTyAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD57eyBkYXRhLnBvTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Ub3RhbDo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieyAnbmVnYXRpdmUtcHJpY2UnOiBkYXRhLmFtb3VudCA8IDAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGEuZm9ybWF0dGVkQW1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+T3V0c3RhbmRpbmc6PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsgJ25lZ2F0aXZlLXByaWNlJzogZGF0YS5vcGVuQW1vdW50IDwgMCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5mb3JtYXR0ZWRPcGVuQW1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+U3RhdHVzOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInN0YXR1cy1tZXNzYWdlIHt7IGRhdGEuY2xhc3NOYW1lIH19IHN0YXR1cy1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5zdGF0dXMgfX1cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Eb3dubG9hZDo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBGdXR1cmUgcmVxdWlyZW1lbnQtLT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZG93bmxvYWRQZGYoZGF0YT8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMLCBkYXRhPy5hdHRhY2htZW50c1swXT8ucmVhbEZpbGVOYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5hdHRhY2htZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IGRhdGE/LmF0dGFjaG1lbnRzWzBdPy5kb3dubG9hZFVSTCB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd25sb2FkLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZG93bmxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5QREY8L2FcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmd4LW1hc29ucnk+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==