buildingproduct-library 0.2.74 → 0.2.76

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 (54) hide show
  1. package/assets/images/newtab.svg +11 -0
  2. package/{buildingproduct-library-0.2.74.tgz → buildingproduct-library-0.2.76.tgz} +0 -0
  3. package/bundles/buildingproduct-library.umd.js +527 -411
  4. package/bundles/buildingproduct-library.umd.js.map +1 -1
  5. package/esm2015/lib/account-dropdown/account-dropdown.component.js +16 -16
  6. package/esm2015/lib/account-dropdown/account-dropdown.module.js +6 -2
  7. package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +2 -2
  8. package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +1 -1
  9. package/esm2015/lib/checkout/order-review/order-review.component.js +1 -1
  10. package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +1 -1
  11. package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +57 -13
  12. package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +1 -1
  13. package/esm2015/lib/custom-navigation/custom-navigation.module.js +1 -11
  14. package/esm2015/lib/custom-order-details/custom-order-details.component.js +8 -6
  15. package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +2 -2
  16. package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +2 -2
  17. package/esm2015/lib/custom-order-history/custom-order-history.component.js +20 -19
  18. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +28 -17
  19. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +2 -2
  20. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +2 -2
  21. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.js +28 -10
  22. package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +4 -4
  23. package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +3 -3
  24. package/esm2015/lib/custom-search/custom-search.component.js +1 -1
  25. package/esm2015/lib/custom-user-account/custom-user-account.component.js +2 -2
  26. package/esm2015/lib/find-store/find-store.component.js +1 -1
  27. package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +6 -7
  28. package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +26 -25
  29. package/esm2015/lib/my-account/my-account.component.js +11 -1
  30. package/esm2015/lib/my-team/my-team.component.js +29 -10
  31. package/esm2015/lib/my-team/team-member.service.js +8 -36
  32. package/esm2015/lib/services/order.review.js +1 -1
  33. package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +6 -4
  34. package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +48 -22
  35. package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +66 -37
  36. package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +2 -4
  37. package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +2 -2
  38. package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +9 -9
  39. package/fesm2015/buildingproduct-library.js +405 -288
  40. package/fesm2015/buildingproduct-library.js.map +1 -1
  41. package/lib/account-dropdown/account-dropdown.component.d.ts +2 -0
  42. package/lib/account-dropdown/account-dropdown.module.d.ts +2 -1
  43. package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +13 -4
  44. package/lib/custom-order-history/custom-order-history.component.d.ts +1 -1
  45. package/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.d.ts +1 -0
  46. package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.d.ts +5 -1
  47. package/lib/my-account/account-dashboard/account-dashboard.component.d.ts +1 -1
  48. package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +2 -4
  49. package/lib/my-team/my-team.component.d.ts +6 -1
  50. package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +9 -10
  51. package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +9 -18
  52. package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +1 -2
  53. package/lib/shared/shared-download-order/shared-download-order.component.d.ts +1 -1
  54. package/package.json +1 -1
@@ -5,20 +5,18 @@ import { CommonUtils } from '../../utils';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "../../services/my-account.service";
7
7
  import * as i2 from "@spartacus/core";
8
- import * as i3 from "@angular/common/http";
9
- import * as i4 from "../../shared/date-range-picker/date-range-picker.component";
10
- import * as i5 from "@angular/common";
11
- import * as i6 from "ngx-infinite-scroll";
12
- import * as i7 from "@angular/forms";
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";
13
12
  // Future requirement
14
13
  // declare var require: any;
15
14
  // const FileSaver = require('file-saver');
16
15
  export class InvoiceCreditComponent {
17
- constructor(myAccountService, cmsService, cd, http) {
16
+ constructor(myAccountService, cmsService, cd) {
18
17
  this.myAccountService = myAccountService;
19
18
  this.cmsService = cmsService;
20
19
  this.cd = cd;
21
- this.http = http;
22
20
  this.listview = true;
23
21
  this.isDesktop = true;
24
22
  this.isMobile = false;
@@ -39,7 +37,6 @@ export class InvoiceCreditComponent {
39
37
  this.billingStatuses = [];
40
38
  this.isInputValue = false;
41
39
  this.selectedDateKey = 'dateRange';
42
- this.isSearchBtnClicked = false;
43
40
  }
44
41
  ngOnInit() {
45
42
  this.cmsService.getComponentData('EmptySearchInvoicesListComponent').subscribe((data) => {
@@ -180,12 +177,12 @@ export class InvoiceCreditComponent {
180
177
  this.searchText = '';
181
178
  this.selectedOrderType = 'documentNumber';
182
179
  this.selectedStatuses = [];
180
+ this.invoiceCreditList = [];
183
181
  this.noSearchResults = false;
184
182
  this.isClearAll = true;
185
183
  this.isInputValue = false;
186
- this.isSearchBtnClicked = false;
187
- this.getLastMonthDateRange();
188
- this.getInvoiceCreditData();
184
+ // this.getLastMonthDateRange();
185
+ // this.getInvoiceCreditData();
189
186
  }
190
187
  getCheckedInvoiceStatuses(data) {
191
188
  const ind = this.selectedStatuses.findIndex((element) => element.value == data.value);
@@ -214,24 +211,30 @@ export class InvoiceCreditComponent {
214
211
  }
215
212
  }
216
213
  removeChips(data) {
214
+ var _a;
217
215
  const ind = this.selectedStatuses.findIndex((element) => element.value == data.value);
218
216
  this.selectedStatuses.splice(ind, 1);
219
217
  this.invoiceCreditList = [];
220
- this.getInvoiceCreditData();
218
+ if (((_a = this.selectedStatuses) === null || _a === void 0 ? void 0 : _a.length) == 0) {
219
+ this.invoiceCreditList = [];
220
+ this.noSearchResults = true;
221
+ }
222
+ else {
223
+ this.getInvoiceCreditData();
224
+ }
221
225
  }
222
226
  onChange(e) {
223
227
  this.selectedOrderType = e.target.value;
224
228
  }
225
229
  getSearchResults() {
226
- this.isSearchBtnClicked = true;
227
230
  this.selectedFilters = JSON.parse(JSON.stringify(this.selectedStatuses));
228
231
  const obj = {
229
232
  key: this.selectedOrderType,
230
233
  value: this.searchText,
231
234
  };
232
235
  if (this.searchText != '') {
233
- this.selectedStatuses = [];
234
- this.selectedFilters = [];
236
+ // this.selectedStatuses = [];
237
+ // this.selectedFilters = [];
235
238
  this.selectedFilters.push(obj);
236
239
  }
237
240
  const reqObj = {
@@ -296,15 +299,13 @@ export class InvoiceCreditComponent {
296
299
  // downloadPdf(pdfUrl: any, pdfName: string) {
297
300
  // FileSaver.saveAs(pdfUrl, pdfName);
298
301
  // }
302
+ search() {
303
+ this.currentPage = 0;
304
+ this.getSearchResults();
305
+ }
299
306
  loadMoreRecord() {
300
307
  this.loaderImage.next(true);
301
308
  this.currentPage += 1;
302
- if (this.isSearchBtnClicked) {
303
- this.getSearchResults();
304
- }
305
- else {
306
- this.getInvoiceCreditData();
307
- }
308
309
  }
309
310
  onScroll() {
310
311
  if (!this.noSearchResults &&
@@ -331,8 +332,8 @@ export class InvoiceCreditComponent {
331
332
  this.myAccountService.setOrderNumber('');
332
333
  }
333
334
  }
334
- 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 });
335
- 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)=\"getSearchResults()\" [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: i4.DateRangePickerComponent, selector: "app-date-range-picker", inputs: ["selectedDateRange"], outputs: ["selectedDate"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i5.AsyncPipe, "date": i5.DatePipe } });
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 } });
336
337
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: InvoiceCreditComponent, decorators: [{
337
338
  type: Component,
338
339
  args: [{
@@ -340,5 +341,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
340
341
  templateUrl: './invoice-credit.component.html',
341
342
  styleUrls: ['./invoice-credit.component.scss'],
342
343
  }]
343
- }], ctorParameters: function () { return [{ type: i1.MyAccountService }, { type: i2.CmsService }, { type: i0.ChangeDetectorRef }, { type: i3.HttpClient }]; } });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1jcmVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9teS1hY2NvdW50L2ludm9pY2UtY3JlZGl0L2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvbXktYWNjb3VudC9pbnZvaWNlLWNyZWRpdC9pbnZvaWNlLWNyZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7QUFJMUMscUJBQXFCO0FBQ3JCLDRCQUE0QjtBQUM1QiwyQ0FBMkM7QUFPM0MsTUFBTSxPQUFPLHNCQUFzQjtJQTRCbEMsWUFDVSxnQkFBa0MsRUFDbkMsVUFBc0IsRUFDdEIsRUFBcUIsRUFDcEIsSUFBZ0I7UUFIaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQVk7UUEvQjFCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNyRCxnQkFBVyxHQUFHLElB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QUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7b0hBL1ZXLHNCQUFzQjt3R0FBdEIsc0JBQXNCLDBEQ2pCbkMsa2xwQkFzU007NEZEclJPLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJzsgIFxyXG5pbXBvcnQgeyBDbXNTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJzsgXHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25VdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHsgTXlBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL215LWFjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG4vLyBGdXR1cmUgcmVxdWlyZW1lbnRcclxuLy8gZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55O1xyXG4vLyBjb25zdCBGaWxlU2F2ZXIgPSByZXF1aXJlKCdmaWxlLXNhdmVyJyk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnZvaWNlLWNyZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnZvaWNlLWNyZWRpdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW52b2ljZUNyZWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRsaXN0dmlldzogYm9vbGVhbiA9IHRydWU7XHJcblx0aXNEZXNrdG9wID0gdHJ1ZTtcclxuXHRpc01vYmlsZSA9IGZhbHNlO1xyXG5cdGlzVGFibGV0ID0gZmFsc2U7XHJcblx0c2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRsb2FkZXJJbWFnZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHRvdGFsUmVzdWx0czogYW55O1xyXG5cdGludm9pY2VTb3J0TGlzdHM6IGFueTtcclxuXHRjdXJyZW50UGFnZSA9IDA7XHJcblx0aW52b2ljZUNyZWRpdExpc3Q6IGFueSA9IFtdO1xyXG5cdHN0YXR1c0xpc3RzOiBhbnkgPSBbXTtcclxuXHRzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuXHRpc0NsZWFyQWxsOiBib29sZWFuID0gZmFsc2U7XHJcblx0bm9TZWFyY2hSZXN1bHRzOiBib29sZWFuID0gZmFsc2U7XHJcblx0c29ydEJ5VmFsdWU6IGFueSA9ICdieURvY3VtZW50QXNjJztcclxuXHRzZWxlY3RlZE9yZGVyVHlwZTogYW55ID0gJ2RvY3VtZW50TnVtYmVyJztcclxuXHRzZWxlY3RlZFN0YXR1c2VzOiBhbnkgPSBbXTtcclxuXHRpbnZvaWNlU3RhdGVzOiBhbnkgPSBbXTtcclxuXHRpbnZvaWNlVHlwZXM6IGFueSA9IFtdO1xyXG5cdGJpbGxpbmdTdGF0dXNlczogYW55ID0gW107XHJcblx0c2VsZWN0ZWRGaWx0ZXJzOiBhbnk7XHJcblx0aXNJbnB1dFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcblx0c2VsZWN0ZWREYXRlUmFuZ2U6IGFueTtcclxuXHRzZWxlY3RlZERhdGVLZXk6IHN0cmluZyA9ICdkYXRlUmFuZ2UnO1xyXG5cdG5vSW52b2ljZUNyZGl0RGF0YTogYW55O1xyXG5cdGlzU2VhcmNoQnRuQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdCAgcHJpdmF0ZSBteUFjY291bnRTZXJ2aWNlOiBNeUFjY291bnRTZXJ2aWNlLFxyXG5cdCAgcHVibGljIGNtc1NlcnZpY2U6IENtc1NlcnZpY2UsXHJcblx0ICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdCAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcblx0KSB7IH1cclxuICBcclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHQgIHRoaXMuY21zU2VydmljZS5nZXRDb21wb25lbnREYXRhKCdFbXB0eVNlYXJjaEludm9pY2VzTGlzdENvbXBvbmVudCcpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRpZiAoZGF0YSkge1xyXG5cdFx0ICB0aGlzLm5vSW52b2ljZUNyZGl0RGF0YSA9IGRhdGEuY29udGVudDtcclxuXHRcdH1cclxuXHQgIH0pO1xyXG5cdCAgY29uc3Qgb3JkZXJOdW1iZXI6IGFueSA9IHRoaXMubXlBY2NvdW50U2VydmljZS5nZXRPcmRlck51bWJlcigpO1xyXG5cdCAgaWYgKG9yZGVyTnVtYmVyICE9IG51bGwpIHtcclxuXHRcdHRoaXMuc2VhcmNoVGV4dCA9IG9yZGVyTnVtYmVyO1xyXG5cdFx0dGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9ICdvcmRlck51bWJlcic7XHJcblx0ICB9XHJcblx0ICB0aGlzLmdldExhc3RNb250aERhdGVSYW5nZSgpO1xyXG5cdCAgdGhpcy5nZXRTZWFyY2hEcm9wZG93bkRhdGEoKTtcclxuXHQgIHRoaXMuZ2V0SW52b2ljZUNyZWRpdERhdGEoKTtcclxuXHQgIC8vIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG5cdCAgdGhpcy5vblBhZ2VSZWZyZXNoKCk7XHJcblx0fVxyXG4gIFxyXG5cdGdldEludm9pY2VDcmVkaXREYXRhKCkge1xyXG5cdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG5cdCAgY29uc3QgcmVxT2JqOiBhbnkgPSB7XHJcblx0XHRzZWFyY2hQYXJhbXM6IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcyxcclxuXHQgIH07XHJcblx0ICB0aGlzLm15QWNjb3VudFNlcnZpY2VcclxuXHRcdC5nZXRJbnZvaWNlc0NyZWRpdExpc3QocmVxT2JqLCB0aGlzLmN1cnJlbnRQYWdlKVxyXG5cdFx0LnN1YnNjcmliZShcclxuXHRcdCAgKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5pc0NsZWFyQWxsID09IHRydWUpIHtcclxuXHRcdFx0ICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcblx0XHRcdCAgdGhpcy5pc0NsZWFyQWxsID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdFx0bGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHRkYXRlLmdldEZ1bGxZZWFyKCk7XHJcblx0XHRcdGRhdGUuZ2V0TW9udGgoKTtcclxuXHRcdFx0ZGF0ZS5nZXREYXkoKTtcclxuXHRcdFx0dGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG5cdFx0XHR0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdC5jb25jYXQoXHJcblx0XHRcdCAgZGF0YS5kb2N1bWVudHNcclxuXHRcdFx0KTtcclxuXHRcdFx0dGhpcy5zdGF0dXNMaXN0cyA9IGRhdGE/LmRvY3VtZW50cz8uc3RhdHVzO1xyXG5cdFx0XHR0aGlzLmludm9pY2VTb3J0TGlzdHMgPSBkYXRhPy5zb3J0cztcclxuXHRcdFx0dGhpcy50b3RhbFJlc3VsdHMgPSBkYXRhPy5wYWdpbmF0aW9uPy50b3RhbFJlc3VsdHM7XHJcblx0XHRcdHRoaXMuZ2V0U3RhdHVzKCk7XHJcblx0XHRcdHRoaXMuaW52b2ljZVNvcnRMaXN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHRcdFx0ICBpZiAoZWxlbWVudC5jb2RlID09ICdieURvY3VtZW50RGVzYycpIHtcclxuXHRcdFx0XHRlbGVtZW50LnZhbHVlID0gJ05ld2VzdCBJbnZvaWNlJztcclxuXHRcdFx0ICB9XHJcblx0XHRcdCAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEb2N1bWVudEFzYycpIHtcclxuXHRcdFx0XHRlbGVtZW50LnZhbHVlID0gJ09sZGVzdCBJbnZvaWNlJztcclxuXHRcdFx0ICB9XHJcblx0XHRcdCAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0Rlc2MnKSB7XHJcblx0XHRcdFx0ZWxlbWVudC52YWx1ZSA9ICdIaWdoZXN0IFBPIE51bWJlcic7XHJcblx0XHRcdCAgfVxyXG5cdFx0XHQgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5UE9Bc2MnKSB7XHJcblx0XHRcdFx0ZWxlbWVudC52YWx1ZSA9ICdMb3dlc3QgUE8gTnVtYmVyJztcclxuXHRcdFx0ICB9XHJcblx0XHRcdCAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlPcmRlckNvZGVEZXNjJykge1xyXG5cdFx0XHRcdGVsZW1lbnQudmFsdWUgPSAnSGlnaGVzdCBPcmRlciBOdW1iZXInO1xyXG5cdFx0XHQgIH1cclxuXHRcdFx0ICBpZiAoZWxlbWVudC5jb2RlID09ICdieU9yZGVyQ29kZUFzYycpIHtcclxuXHRcdFx0XHRlbGVtZW50LnZhbHVlID0gJ0xvd2VzdCBPcmRlciBOdW1iZXInO1xyXG5cdFx0XHQgIH1cclxuXHRcdFx0ICB0aGlzLmxvYWRlckltYWdlLm5leHQoZmFsc2UpO1xyXG5cdFx0XHQgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0ICB9LFxyXG5cdFx0ICAoZXJyb3IpID0+IHtcclxuXHRcdFx0dGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0ICB9XHJcblx0XHQpO1xyXG5cdH1cclxuICBcclxuXHRnZXRTdGF0dXMoKSB7XHJcblx0ICB0aGlzLmludm9pY2VDcmVkaXRMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG5cdFx0aWYgKGVsZW1lbnQuc3RhdHVzID09ICdvcGVuJykge1xyXG5cdFx0ICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtb3Blbic7XHJcblx0XHR9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdjbG9zZWQnKSB7XHJcblx0XHQgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1wYWlkJztcclxuXHRcdH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ3BhaWQnKSB7XHJcblx0XHQgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1wYWlkJztcclxuXHRcdH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ292ZXJkdWUnKSB7XHJcblx0XHQgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1vdmVyZHVlJztcclxuXHRcdH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ291dHN0YW5kaW5nJykge1xyXG5cdFx0ICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtb3Blbic7XHJcblx0XHR9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdyZWZ1bmQnKSB7XHJcblx0XHQgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1wYWlkJztcclxuXHRcdH1cclxuXHRcdHRoaXMubG9hZGVySW1hZ2UubmV4dChmYWxzZSk7XHJcblx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdCAgfSk7XHJcblx0fVxyXG4gIFxyXG5cdGdldExhc3RNb250aERhdGVSYW5nZSgpIHtcclxuXHQgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSBbbW9tZW50KCkuc3VidHJhY3QoMjksICdkYXlzJyksIG1vbWVudCgpXTtcclxuXHQgIGNvbnN0IGRhdGVWYWx1ZSA9XHJcblx0XHR0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldERhdGUoKSArXHJcblx0XHQnLycgK1xyXG5cdFx0KHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMF0uX2QuZ2V0TW9udGgoKSArIDEpICtcclxuXHRcdCcvJyArXHJcblx0XHR0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldEZ1bGxZZWFyKCkgK1xyXG5cdFx0JywnICtcclxuXHRcdHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0RGF0ZSgpICtcclxuXHRcdCcvJyArXHJcblx0XHQodGhpcy5zZWxlY3RlZERhdGVSYW5nZVsxXS5fZC5nZXRNb250aCgpICsgMSkgK1xyXG5cdFx0Jy8nICtcclxuXHRcdHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0RnVsbFllYXIoKTtcclxuXHQgIGxldCBvYmogPSB7XHJcblx0XHRrZXk6IHRoaXMuc2VsZWN0ZWREYXRlS2V5LFxyXG5cdFx0dmFsdWU6IGRhdGVWYWx1ZSxcclxuXHQgIH07XHJcblx0ICB0aGlzLnNlbGVjdGVkU3RhdHVzZXMucHVzaChvYmopO1xyXG5cdH1cclxuICBcclxuXHRnZXRTZWxlY3RlZERhdGUoZXZlbnQ6IGFueSkge1xyXG5cdCAgZXZlbnQubmFtZSA9IGV2ZW50LnZhbHVlO1xyXG5cdCAgZXZlbnQua2V5ID0gJ2RhdGVSYW5nZSc7XHJcblx0ICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gZXZlbnQ7XHJcblx0ICBjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuZmluZEluZGV4KFxyXG5cdFx0KGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5rZXkgPT0gJ2RhdGVSYW5nZSdcclxuXHQgICk7XHJcblx0ICBpZiAoaW5kID4gLTEpIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5zcGxpY2UoaW5kLCAxKTtcclxuXHQgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5wdXNoKGV2ZW50KTtcclxuXHQgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHQgIHRoaXMuZ2V0SW52b2ljZUNyZWRpdERhdGEoKTtcclxuXHR9XHJcbiAgXHJcblx0Z2V0U2VhcmNoRHJvcGRvd25EYXRhKCkge1xyXG5cdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG5cdCAgdGhpcy5teUFjY291bnRTZXJ2aWNlLmdldEludm9pY2VDcmVkaXRTdGF0dXNlcygpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRpZiAoZGF0YSkge1xyXG5cdFx0ICB0aGlzLmludm9pY2VTdGF0ZXMgPSBkYXRhLnN0YXRlcztcclxuXHRcdCAgdGhpcy5pbnZvaWNlVHlwZXMgPSBkYXRhLnR5cGVzO1xyXG5cdFx0ICB0aGlzLmJpbGxpbmdTdGF0dXNlcyA9IGRhdGEuc3RhdHVzZXM7XHJcblx0XHQgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdCAgfSk7XHJcblx0fVxyXG4gIFxyXG5cdGNsZWFyQWxsKCkge1xyXG5cdCAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcblx0ICB0aGlzLnNlbGVjdGVkT3JkZXJUeXBlID0gJ2RvY3VtZW50TnVtYmVyJztcclxuXHQgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcyA9IFtdO1xyXG5cdCAgdGhpcy5ub1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcclxuXHQgIHRoaXMuaXNDbGVhckFsbCA9IHRydWU7XHJcblx0ICB0aGlzLmlzSW5wdXRWYWx1ZSA9IGZhbHNlO1xyXG5cdCAgdGhpcy5pc1NlYXJjaEJ0bkNsaWNrZWQgPSBmYWxzZTtcclxuXHQgIHRoaXMuZ2V0TGFzdE1vbnRoRGF0ZVJhbmdlKCk7XHJcblx0ICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcblx0fVxyXG4gIFxyXG5cdGdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YTogYW55KSB7XHJcblx0ICBjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuZmluZEluZGV4KFxyXG5cdFx0KGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC52YWx1ZSA9PSBkYXRhLnZhbHVlXHJcblx0ICApO1xyXG5cdCAgcmV0dXJuIGluZCA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdCAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG5cdCAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgXHJcblx0fVxyXG4gIFxyXG5cdGNoZWNrSW52b2ljZVN0YXR1cyhldmVudDogYW55LCBkYXRhOiBhbnksIG1vYmlsZURhdGE/OiBzdHJpbmcpIHtcclxuXHQgIHRoaXMuY3VycmVudFBhZ2UgPSAwO1xyXG5cdCAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZCkge1xyXG5cdFx0dGhpcy5zZWxlY3RlZFN0YXR1c2VzLnB1c2goZGF0YSk7XHJcblx0XHR0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcblx0XHRpZiAoIW1vYmlsZURhdGEpIHtcclxuXHRcdCAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdCAgfSBlbHNlIHtcclxuXHRcdGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5maW5kSW5kZXgoXHJcblx0XHQgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5zcGxpY2UoaW5kLCAxKTtcclxuXHRcdHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHRcdGlmICghbW9iaWxlRGF0YSkge1xyXG5cdFx0ICB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblx0ICB9XHJcblx0fVxyXG4gIFxyXG5cdHJlbW92ZUNoaXBzKGRhdGE6IGFueSkge1xyXG5cdCAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZFN0YXR1c2VzLmZpbmRJbmRleChcclxuXHRcdChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG5cdCAgKTtcclxuXHQgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5zcGxpY2UoaW5kLCAxKTtcclxuXHQgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHQgIHRoaXMuZ2V0SW52b2ljZUNyZWRpdERhdGEoKTtcclxuXHR9XHJcbiAgXHJcblx0b25DaGFuZ2UoZTogYW55KSB7XHJcblx0ICB0aGlzLnNlbGVjdGVkT3JkZXJUeXBlID0gZS50YXJnZXQudmFsdWU7XHJcblx0fVxyXG4gIFxyXG5cdGdldFNlYXJjaFJlc3VsdHMoKSB7XHJcblx0ICB0aGlzLmlzU2VhcmNoQnRuQ2xpY2tlZCA9IHRydWU7XHJcblx0ICB0aGlzLnNlbGVjdGVkRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZFN0YXR1c2VzKSk7XHJcblx0ICBjb25zdCBvYmogPSB7XHJcblx0XHRrZXk6IHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUsXHJcblx0XHR2YWx1ZTogdGhpcy5zZWFyY2hUZXh0LFxyXG5cdCAgfTtcclxuXHQgIGlmICh0aGlzLnNlYXJjaFRleHQgIT0gJycpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRTdGF0dXNlcyA9IFtdO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEZpbHRlcnMgPSBbXTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnB1c2gob2JqKTtcclxuXHQgIH1cclxuXHQgIGNvbnN0IHJlcU9iajogYW55ID0ge1xyXG5cdFx0c2VhcmNoUGFyYW1zOiB0aGlzLnNlbGVjdGVkRmlsdGVycyxcclxuXHQgIH07XHJcblx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcblx0ICB0aGlzLm15QWNjb3VudFNlcnZpY2UuZ2V0SW52b2ljZUNyZWRpdFNlYXJjaFJlc3VsdHMocmVxT2JqLCB0aGlzLmN1cnJlbnRQYWdlKS5zdWJzY3JpYmUoXHJcblx0XHQocmVzOiBhbnkpID0+IHtcclxuXHRcdCAgaWYgKHJlcyAmJiByZXM/LmRvY3VtZW50cz8ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRpZih0aGlzLmN1cnJlbnRQYWdlID4gMCkge1xyXG5cdFx0XHQgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSB0aGlzLmludm9pY2VDcmVkaXRMaXN0LmNvbmNhdChyZXM/LmRvY3VtZW50cyk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdCAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IHJlcz8uZG9jdW1lbnRzO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMudG90YWxSZXN1bHRzID0gcmVzPy5wYWdpbmF0aW9uPy50b3RhbFJlc3VsdHM7XHJcblx0XHRcdHRoaXMubm9TZWFyY2hSZXN1bHRzID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuZ2V0U3RhdHVzKCk7XHJcblx0XHRcdHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblx0XHQgIH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHRcdFx0dGhpcy5ub1NlYXJjaFJlc3VsdHMgPSB0cnVlO1xyXG5cdFx0ICB9XHJcblx0XHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHR9LFxyXG5cdFx0KGVycm9yKSA9PiB7XHJcblx0XHQgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuXHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdH1cclxuXHQgICk7XHJcblx0fVxyXG4gIFxyXG5cdG9uU2VhcmNoQ2hhbmdlKGU6IGFueSkge1xyXG5cdCAgaWYgKGUudGFyZ2V0LnZhbHVlID09ICcnIHx8IGUudGFyZ2V0LnZhbHVlLmluZGV4T2YoJyAnKSA+PSAwKSB7XHJcblx0XHR0aGlzLmlzSW5wdXRWYWx1ZSA9IGZhbHNlO1xyXG5cdCAgfSBlbHNlIHtcclxuXHRcdHRoaXMuaXNJbnB1dFZhbHVlID0gdHJ1ZTtcclxuXHQgIH1cclxuXHR9XHJcbiAgXHJcblx0b25TdWJtaXQoKSB7XHJcblx0ICB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuXHR9XHJcbiAgXHJcblx0c29ydEJ5KGU6IGFueSkge1xyXG5cdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG5cdCAgdGhpcy5zb3J0QnlWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG5cdCAgY29uc3QgcmVxT2JqOiBhbnkgPSB7XHJcblx0XHRzZWFyY2hQYXJhbXM6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLFxyXG5cdCAgfTtcclxuXHQgIHRoaXMubXlBY2NvdW50U2VydmljZS5zb3J0SW52b2ljZUNyZWRpdCh0aGlzLnNvcnRCeVZhbHVlLCByZXFPYmopLnN1YnNjcmliZShcclxuXHRcdChyZXM6IGFueSkgPT4ge1xyXG5cdFx0ICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gcmVzPy5kb2N1bWVudHM7XHJcblx0XHQgIHRoaXMuZ2V0U3RhdHVzKCk7XHJcblx0XHQgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblx0XHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHR9LFxyXG5cdFx0KGVycm9yKSA9PiB7XHJcblx0XHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHR9XHJcblx0ICApO1xyXG5cdH1cclxuICBcclxuXHR0b2dnbGVHcmlkT3JMaXN0VmlldyhldmVudDogYW55KTogdm9pZCB7XHJcblx0ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdCAgdGhpcy5saXN0dmlldyA9ICF0aGlzLmxpc3R2aWV3O1xyXG5cdH1cclxuXHQvLyBGdXR1cmUgcmVxdWlyZW1lbnRcclxuXHQvLyBkb3dubG9hZFBkZihwZGZVcmw6IGFueSwgcGRmTmFtZTogc3RyaW5nKSB7XHJcblx0Ly8gICBGaWxlU2F2ZXIuc2F2ZUFzKHBkZlVybCwgcGRmTmFtZSk7XHJcblx0Ly8gfVxyXG4gIFxyXG5cdGxvYWRNb3JlUmVjb3JkKCkge1xyXG5cdCAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KHRydWUpO1xyXG5cdCAgdGhpcy5jdXJyZW50UGFnZSArPSAxO1xyXG5cdCAgaWYodGhpcy5pc1NlYXJjaEJ0bkNsaWNrZWQpIHtcclxuXHRcdHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG5cdCAgfSBlbHNlIHtcclxuXHRcdHRoaXMuZ2V0SW52b2ljZUNyZWRpdERhdGEoKTtcclxuXHQgIH1cclxuXHQgIFxyXG5cdH1cclxuXHRvblNjcm9sbCgpIHtcclxuXHQgIGlmIChcclxuXHRcdCF0aGlzLm5vU2VhcmNoUmVzdWx0cyAmJlxyXG5cdFx0dGhpcy50b3RhbFJlc3VsdHMgPiB0aGlzLmludm9pY2VDcmVkaXRMaXN0Lmxlbmd0aFxyXG5cdCAgKSB7XHJcblx0XHR0aGlzLmxvYWRNb3JlUmVjb3JkKCk7XHJcblx0ICB9XHJcblx0fVxyXG4gIFxyXG5cdG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuXHQgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xyXG5cdCAgaWYgKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoIDwgOTkyKSB7XHJcblx0XHR0aGlzLmlzTW9iaWxlID0gdHJ1ZTtcclxuXHRcdHRoaXMuaXNEZXNrdG9wID0gZmFsc2U7XHJcblx0ICB9IGVsc2Uge1xyXG5cdFx0dGhpcy5pc0Rlc2t0b3AgPSB0cnVlO1xyXG5cdCAgfVxyXG5cdH1cclxuICBcclxuXHRvblBhZ2VSZWZyZXNoKCkge1xyXG5cdCAgdGhpcy5pc01vYmlsZSA9IENvbW1vblV0aWxzLmlzTW9iaWxlKCk7XHJcblx0ICB0aGlzLmlzVGFibGV0ID0gQ29tbW9uVXRpbHMuaXNUYWJsZXQoKTtcclxuXHQgIHRoaXMuaXNEZXNrdG9wID0gQ29tbW9uVXRpbHMuaXNEZXNrdG9wKCk7XHJcblx0fVxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdCAgdGhpcy5teUFjY291bnRTZXJ2aWNlLnNldE9yZGVyTnVtYmVyKCcnKTtcclxuXHR9XHJcbiAgfVxyXG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZ1wiICpuZ0lmPVwic2hvd1dhaXRDdXJzb3IgfCBhc3luYyBcIj5Mb2FkaW5nJiM4MjMwOzwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyIHB4LTBcIiBpbmZpbml0ZVNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIwXCIgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiMTAwMFwiIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCIgKHdpbmRvdzpyZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImludm9pY2UtY3JlZGl0LWNvbnRlbnRcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzRGVza3RvcFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiPjx1PkNsZWFyIGFsbDwvdT48L2E+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW52b2ljZS1zZWFyY2gtYmxvY2tcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtcHJlcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIlwiIGlkPVwiXCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9jdW1lbnROdW1iZXJcIiBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcmRlclR5cGUgPT0gJ2RvY3VtZW50TnVtYmVyJ1wiPkludm9pY2UgIzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInBvTnVtYmVyXCIgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdwb051bWJlcidcIj5QTyAjPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwib3JkZXJOdW1iZXJcIiBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcmRlclR5cGUgPT0gJ29yZGVyTnVtYmVyJ1wiPk9yZGVyICM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgKGlucHV0KT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIiBhcmlhLWxhYmVsPVwiVGV4dCBpbnB1dCB3aXRoIGRyb3Bkb3duIGJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIHNlYXJjaC1idG5cIiAoY2xpY2spPVwiZ2V0U2VhcmNoUmVzdWx0cygpXCIgW2Rpc2FibGVkXT1cIiFpc0lucHV0VmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY29uLWlvbmljLWlvcy1zZWFyY2guc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kYXRlLWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWRhdGUtcmFuZ2UtcGlja2VyIChzZWxlY3RlZERhdGUpPVwiZ2V0U2VsZWN0ZWREYXRlKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVJhbmdlXCI+PC9hcHAtZGF0ZS1yYW5nZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY19jYWxlbmRlci5zdmdcIiBhbHQ9XCJjYWxlbmRlclwiIGNsYXNzPVwiZGF0ZS1pY29uXCI+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGVza3RvcDsgZWxzZSBmaWx0ZXJNb2JpbGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGN1c3RvbS1kcm9wZG93bi1idG4gcG9zaXRpb24tcmVsYXRpdmVcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJvcmRlclN0YXRlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlIFN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlU3RhdGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCIgaWQ9XCJvcmRlclN0YXRlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIiAoY2hhbmdlKT1cImNoZWNrSW52b2ljZVN0YXR1cygkZXZlbnQseyBrZXk6ICdzdGF0ZScgLCB2YWx1ZTogZGF0YS5rZXkgfSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBjdXN0b20tZHJvcGRvd24tYnRuIHBvc2l0aW9uLXJlbGF0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwiZGVsaXZlcnlUeXBlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlIFR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBjdXN0b20tYXJyb3ctZG93blwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkZWxpdmVyeVR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW52b2ljZVR5cGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCIgaWQ9XCJkZWxpdmVyeVR5cGVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiIChjaGFuZ2UpPVwiY2hlY2tJbnZvaWNlU3RhdHVzKCRldmVudCx7IGtleTogJ2RvY3VtZW50VHlwZScgLCB2YWx1ZTogZGF0YS5rZXkgfSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBjdXN0b20tZHJvcGRvd24tYnRuIHBvc2l0aW9uLXJlbGF0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwib3JkZXJTdGF0dXNcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbGxpbmcgU3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgYmlsbGluZ1N0YXR1c2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCIgaWQ9XCJvcmRlclN0YXR1c0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZEludm9pY2VTdGF0dXNlcyhkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCIgKGNoYW5nZSk9XCJjaGVja0ludm9pY2VTdGF0dXMoJGV2ZW50LHsga2V5OiAnc3RhdHVzZXMnICwgdmFsdWU6IGRhdGEua2V5IH0pXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcHMtYmxvY2tcIiAqbmdJZj1cInNlbGVjdGVkU3RhdHVzZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkU3RhdHVzZXMgJiYgc2VsZWN0ZWRTdGF0dXNlcy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwc1wiICpuZ0Zvcj1cImxldCBkYXRhIG9mIHNlbGVjdGVkU3RhdHVzZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjaGlwLXRpdGxlXCI+IHt7ZGF0YS5rZXkgPT0gJ3N0YXRlJyA/ICdJbnZvaWNlIFN0YXRlJyA6IGRhdGEua2V5ID09ICdkb2N1bWVudFR5cGUnID8gJ0ludm9pY2UgVHlwZScgOiBkYXRhLmtleSA9PSAnc3RhdHVzZXMnID8gJ0JpbGxpbmcgU3RhdHVzJyA6ICdEYXRlIFJhbmdlJ319IDo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcC1jb250ZW50IG1sLTFcIj57e2RhdGEudmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIG1sLTMgY2xvc2UtaWNvblwiIChjbGljayk9XCJyZW1vdmVDaGlwcyhkYXRhKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWx0ZXJNb2JpbGU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBmaWx0ZXItYnRuXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2ZpbHRlck1vZGFsXCI+TW9yZSBGaWx0ZXJzPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGhyPlxyXG4gICAgICAgIDwhLS0gRmlsdGVyIE1vZGFsLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGUgbW9kYWwtcmlnaHRcIiBpZD1cImZpbHRlck1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cImludml0ZU1lbWJlckxhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPjwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi1jbG9zZSBmaWx0ZXItcG9wdXAtY2xvc2VcIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1haW4tdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPkZpbHRlcnM8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIiBjbGFzcz1cImNsZWFyQWxsXCI+IDx1PkNsZWFyIGFsbDwvdT48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibWFpblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjY29yZGlvblwiIGlkPVwiZmFxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgaWQ9XCJmYXFoZWFkMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImJ0biBidG4taGVhZGVyLWxpbmtcIiBkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS10YXJnZXQ9XCIjZmFxMVwiIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCIgYXJpYS1jb250cm9scz1cImZhcTFcIj5JbnZvaWNlIFN0YXRlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJmYXExXCIgY2xhc3M9XCJjb2xsYXBzZSBzaG93XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZmFxaGVhZDFcIiBkYXRhLXBhcmVudD1cIiNmYXFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlU3RhdGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCIgY2xhc3M9XCJyb3VuZGVkLTBcIiBpZD1cIm9yZGVyU3RhdGVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZEludm9pY2VTdGF0dXNlcyhkYXRhKVwiIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoZWNrSW52b2ljZVN0YXR1cygkZXZlbnQseyBrZXk6ICdzdGF0ZScgLCB2YWx1ZTogZGF0YS5rZXkgfSwnbW9iaWxlJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIiBpZD1cImZhcWhlYWQyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwiYnRuIGJ0bi1oZWFkZXItbGluayBjb2xsYXBzZWRcIiBkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS10YXJnZXQ9XCIjZmFxMlwiIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCIgYXJpYS1jb250cm9scz1cImZhcTJcIj5JbnZvaWNlIFR5cGU8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImZhcTJcIiBjbGFzcz1cImNvbGxhcHNlXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZmFxaGVhZDJcIiBkYXRhLXBhcmVudD1cIiNmYXFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlVHlwZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIiBjbGFzcz1cInJvdW5kZWQtMFwiIGlkPVwiZGVsaXZlcnlUeXBlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGVja0ludm9pY2VTdGF0dXMoJGV2ZW50LHsga2V5OiAnZG9jdW1lbnRUeXBlJyAsIHZhbHVlOiBkYXRhLmtleSB9LCdtb2JpbGUnKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGEudmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwiZmFxaGVhZDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJidG4gYnRuLWhlYWRlci1saW5rIGNvbGxhcHNlZFwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIiNmYXEzXCIgYXJpYS1leHBhbmRlZD1cInRydWVcIiBhcmlhLWNvbnRyb2xzPVwiZmFxM1wiPkJpbGxpbmcgU3RhdHVzPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJmYXEzXCIgY2xhc3M9XCJjb2xsYXBzZVwiIGFyaWEtbGFiZWxsZWRieT1cImZhcWhlYWQzXCIgZGF0YS1wYXJlbnQ9XCIjZmFxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgYmlsbGluZ1N0YXR1c2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCIgY2xhc3M9XCJyb3VuZGVkLTBcIiBpZD1cIm9yZGVyU3RhdHVzTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGVja0ludm9pY2VTdGF0dXMoJGV2ZW50LHsga2V5OiAnc3RhdHVzZXMnICwgdmFsdWU6IGRhdGEua2V5IH0sJ21vYmlsZScpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWxnLWZsZXggZC1zbS1ibG9jayBqdXN0aWZ5LWNvbnRlbnQtZW5kIGQtYmxvY2sgZml4ZWQtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiIGNsYXNzPVwiYnRuIG1vYmlsZS1jYW5jZWwtYnRuIGRpbW9uZC1zZWNvbmRhcnktYnRuIG1yLWxnLTVcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGNsYXNzPVwiYnRuIG1vYmlsZS1zYXZlLWJ0biBkaW1vbmQtcHJpbWFyeS1idG4gZmxvYXQtcmlnaHRcIiAoY2xpY2spPVwib25TdWJtaXQoKVwiPkFwcGx5PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBOTyBTRUFSQ0ggUkVTVUxUUyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW52b2ljZUNyZWRpdExpc3Q/Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZW1wdHktYWNjb3VudFBhZ2UtY29udGFpbmVyIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiBbaW5uZXJIVE1MXT1cIm5vSW52b2ljZUNyZGl0RGF0YVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZvaWNlLWNyZWRpdC10YWJsZVwiICpuZ0lmPVwiaW52b2ljZUNyZWRpdExpc3Q/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG90YWwtb3JkZXJcIj57e3RvdGFsUmVzdWx0c319IEludm9pY2VzIGFuZCBDcmVkaXQgTm90ZXMgZm91bmQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJcIiBpZD1cIlwiIGNsYXNzPVwibXItM1wiIChjaGFuZ2UpPVwic29ydEJ5KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInt7b3B0aW9uLmNvZGV9fVwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaW52b2ljZVNvcnRMaXN0c1wiPnt7b3B0aW9uLnZhbHVlfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmlld1wiICpuZ0lmPVwiaXNEZXNrdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogbGlzdHZpZXcgPT09IGZhbHNlfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbVwiIChjbGljayk9XCJ0b2dnbGVHcmlkT3JMaXN0VmlldygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJsaXN0dmlldyA9PT0gZmFsc2VcIiBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0dyaWQtbGlnaHQuc3ZnXCIgYWx0PVwiZ3JpZHZpZXdsaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIiBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0dyaWQtZGFyay5zdmdcIiBhbHQ9XCJncmlkdmlld2RhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGxpc3R2aWV3ID09PSB0cnVlfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBhY3RpdmVcIiAoY2xpY2spPVwidG9nZ2xlR3JpZE9yTGlzdFZpZXcoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIiBjbGFzcz1cImxpc3QtaW1nXCIgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9MaXN0LWxpZ2h0LnN2Z1wiIGFsdD1cImxpc3R2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJsaXN0dmlldyA9PT0gZmFsc2VcIiBjbGFzcz1cImxpc3QtaW1nXCIgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9MaXN0LWRhcmsuc3ZnXCIgYWx0PVwibGlzdHZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBJTlZPSUNFIENSRURJVCBMSVNUIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC12aWV3IHRhYmxlLXJlc3BvbnNpdmVcIiAqbmdJZj1cImxpc3R2aWV3ICYmIGlzRGVza3RvcCAmJiBpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWNjb3VudC1saXN0LXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5EYXRlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlR5cGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+SW52b2ljZSAjPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk9yZGVyICM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+UE8gIzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TdGF0dXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+VG90YWwgPHNwYW4gY2xhc3M9XCJnc3QtdGV4dFwiPmV4Y2wgR1NUPC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5PdXRzdGFuZGluZyA8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkRvd25sb2FkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGludm9pY2VDcmVkaXRMaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhLmRhdGUgfCBkYXRlOiAnZGQvTU0veXl5eSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhLmRvY3VtZW50VHlwZS5uYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZGF0YS5kb2N1bWVudE51bWJlcn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEub3JkZXJOdW1iZXJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhLnBvTnVtYmVyfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic3RhdHVzLW1lc3NhZ2Uge3tkYXRhLmNsYXNzTmFtZX19XCI+e3tkYXRhLnN0YXR1c319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7J25lZ2F0aXZlLXByaWNlJzpkYXRhLmFtb3VudCA8IDB9XCI+e3tkYXRhLmZvcm1hdHRlZEFtb3VudH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7J25lZ2F0aXZlLXByaWNlJzpkYXRhLm9wZW5BbW91bnQgPCAwfVwiPnt7ZGF0YS5mb3JtYXR0ZWRPcGVuQW1vdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJkb3dubG9hZFBkZihkYXRhPy5hdHRhY2htZW50c1swXT8uZG93bmxvYWRVUkwsIGRhdGE/LmF0dGFjaG1lbnRzWzBdPy5yZWFsRmlsZU5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJkYXRhLmF0dGFjaG1lbnRzXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cInt7ZGF0YT8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMIH19XCI+PGltZyBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd25sb2FkLWljb24uc3ZnXCIgYWx0PVwiZG93bmxvYWRcIiBjbGFzcz1cIm1yLTJcIj5QREY8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gSU5WT0lDRSBDUkVESVQgR1JJRCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBncmlkLXZpZXdcIiAqbmdJZj1cIighbGlzdHZpZXcgfHwgIWlzRGVza3RvcCkgJiYgaW52b2ljZUNyZWRpdExpc3Q/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wtbWQtNiBjb2wtc20tMTIgY29sLTEyXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW52b2ljZUNyZWRpdExpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC10aWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkludm9pY2UgIzo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhLmRvY3VtZW50TnVtYmVyfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+VHlwZTo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhLmRvY3VtZW50VHlwZS5uYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGF0ZTo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhLmRhdGUgfCBkYXRlOiAnZGQvTU0veXl5eSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5PcmRlciAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEub3JkZXJOdW1iZXJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QTyAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGEucG9OdW1iZXJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Ub3RhbDo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieyduZWdhdGl2ZS1wcmljZSc6ZGF0YS5hbW91bnQgPCAwfVwiPnt7ZGF0YS5mb3JtYXR0ZWRBbW91bnR9fTxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+T3V0c3RhbmRpbmc6PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsnbmVnYXRpdmUtcHJpY2UnOmRhdGEub3BlbkFtb3VudCA8IDB9XCI+e3tkYXRhLmZvcm1hdHRlZE9wZW5BbW91bnR9fTxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RhdHVzOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInN0YXR1cy1tZXNzYWdlIHt7ZGF0YS5jbGFzc05hbWV9fSBzdGF0dXMtaWNvblwiPnt7ZGF0YS5zdGF0dXN9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Eb3dubG9hZDo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZ1dHVyZSByZXF1aXJlbWVudC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImRvd25sb2FkUGRmKGRhdGE/LmF0dGFjaG1lbnRzWzBdPy5kb3dubG9hZFVSTCwgZGF0YT8uYXR0YWNobWVudHNbMF0/LnJlYWxGaWxlTmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd25sb2FkLWljb24uc3ZnXCIgYWx0PVwiZG93bmxvYWRcIiBjbGFzcz1cIm1yLTJcIj5QREY8L2E+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJkYXRhLmF0dGFjaG1lbnRzXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cInt7ZGF0YT8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMIH19XCI+PGltZyBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd25sb2FkLWljb24uc3ZnXCIgYWx0PVwiZG93bmxvYWRcIiBjbGFzcz1cIm1yLTJcIj5QREY8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=
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==