tango-app-ui-manage-settings 3.0.11-dev → 3.0.13-dev

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 (31) hide show
  1. package/esm2022/lib/components/payments-subscription/payments-subscription.component.mjs +720 -165
  2. package/esm2022/lib/components/payments-subscription/subscription-popups/add-stepprice/add-stepprice.component.mjs +8 -4
  3. package/esm2022/lib/components/payments-subscription/subscription-popups/credit-note/credit-note.component.mjs +146 -9
  4. package/esm2022/lib/components/payments-subscription/subscription-popups/multidropdown/multidropdown.component.mjs +124 -72
  5. package/esm2022/lib/components/payments-subscription/subscription-popups/need-help/need-help.component.mjs +76 -39
  6. package/esm2022/lib/components/payments-subscription/subscription-popups/pricing-revised/pricing-revised.component.mjs +29 -22
  7. package/esm2022/lib/components/payments-subscription/subscription-popups/product-confirmation/product-confirmation.component.mjs +116 -18
  8. package/esm2022/lib/components/payments-subscription/subscription-popups/subscription-approval/subscription-approval.component.mjs +76 -25
  9. package/esm2022/lib/components/payments-subscription/subscription-popups/successfull-subscription/successfull-subscription.component.mjs +15 -6
  10. package/esm2022/lib/components/payments-subscription/subscription-popups/trail-settings/trail-settings.component.mjs +8 -8
  11. package/esm2022/lib/components/payments-subscription/subscription-popups/update/update.component.mjs +52 -19
  12. package/esm2022/lib/components/payments-subscription/subscription-popups/upgrade-plan/upgrade-plan.component.mjs +125 -35
  13. package/esm2022/lib/components/tango-manage-settings/tango-manage-settings.component.mjs +2 -2
  14. package/esm2022/lib/services/payment-subscription.service.mjs +141 -4
  15. package/esm2022/lib/tango-manage-settings.module.mjs +6 -2
  16. package/fesm2022/tango-app-ui-manage-settings.mjs +1613 -430
  17. package/fesm2022/tango-app-ui-manage-settings.mjs.map +1 -1
  18. package/lib/components/payments-subscription/payments-subscription.component.d.ts +83 -20
  19. package/lib/components/payments-subscription/subscription-popups/credit-note/credit-note.component.d.ts +32 -4
  20. package/lib/components/payments-subscription/subscription-popups/multidropdown/multidropdown.component.d.ts +14 -4
  21. package/lib/components/payments-subscription/subscription-popups/need-help/need-help.component.d.ts +23 -4
  22. package/lib/components/payments-subscription/subscription-popups/pricing-revised/pricing-revised.component.d.ts +6 -2
  23. package/lib/components/payments-subscription/subscription-popups/product-confirmation/product-confirmation.component.d.ts +19 -10
  24. package/lib/components/payments-subscription/subscription-popups/subscription-approval/subscription-approval.component.d.ts +14 -8
  25. package/lib/components/payments-subscription/subscription-popups/successfull-subscription/successfull-subscription.component.d.ts +5 -1
  26. package/lib/components/payments-subscription/subscription-popups/update/update.component.d.ts +19 -5
  27. package/lib/components/payments-subscription/subscription-popups/upgrade-plan/upgrade-plan.component.d.ts +28 -7
  28. package/lib/components/tango-manage-settings/tango-manage-settings.component.d.ts +1 -1
  29. package/lib/services/payment-subscription.service.d.ts +34 -3
  30. package/lib/tango-manage-settings.module.d.ts +1 -1
  31. package/package.json +1 -1
@@ -1,5 +1,7 @@
1
- import { Component, HostListener, Input } from '@angular/core';
1
+ import { Component, HostListener, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
2
3
  import { ProductConfirmationComponent } from '../product-confirmation/product-confirmation.component';
4
+ import Swal from 'sweetalert2';
3
5
  import * as i0 from "@angular/core";
4
6
  import * as i1 from "tango-app-ui-global";
5
7
  import * as i2 from "@ng-bootstrap/ng-bootstrap";
@@ -10,27 +12,36 @@ export class MultidropdownComponent {
10
12
  globalService;
11
13
  modalService;
12
14
  PaymentSubscriptionService;
15
+ changeDetector;
13
16
  text = "";
17
+ product = [];
18
+ productList = [];
19
+ type = "product";
20
+ stores = [];
21
+ clientId;
22
+ selectAll = false;
23
+ clientProduct = [];
24
+ data = new EventEmitter();
14
25
  unsubscribe = [];
26
+ destroy$ = new Subject();
15
27
  dataObject = [
16
- { Description: 'Clients', Issues: [{ storeName: "Tango Traffic", storeId: "1-1", _id: '6587235475734652hffdgd' },
17
- { storeName: "Tango Zone", storeId: "1-23", _id: '6587235475734652hffdgd' },
18
- { storeName: "Tango SOP", storeId: "1-24", _id: '6587235475734652hffdgd' },
19
- { storeName: "Priority Support", storeId: "1-24", _id: '6587235475734652hffdgd' }] },
28
+ { Description: 'Clients', Issues: [] },
20
29
  ];
21
30
  dummyArray = [];
22
31
  noFilter = false;
23
32
  responseArray = [];
24
- constructor(layout, globalService, modalService, PaymentSubscriptionService) {
33
+ constructor(layout, globalService, modalService, PaymentSubscriptionService, changeDetector) {
25
34
  this.layout = layout;
26
35
  this.globalService = globalService;
27
36
  this.modalService = modalService;
28
37
  this.PaymentSubscriptionService = PaymentSubscriptionService;
38
+ this.changeDetector = changeDetector;
29
39
  }
30
40
  ngOnDestroy() {
31
41
  this.unsubscribe.forEach((sb) => sb.unsubscribe());
42
+ this.destroy$.next(true);
43
+ this.destroy$.complete();
32
44
  }
33
- // @Input() dataObject: any[] = [];
34
45
  Opendropdown = false;
35
46
  permission = [
36
47
  { group: 'Super Admin', description: 'Lorem ipsum dolor sit amet, consectetur ' },
@@ -46,21 +57,16 @@ export class MultidropdownComponent {
46
57
  date: null,
47
58
  };
48
59
  ngOnInit() {
60
+ this.dataObject[0].Issues = this.productList;
49
61
  this.dummyArray = JSON.parse(JSON.stringify(this.dataObject));
50
62
  this.responseArray = JSON.parse(JSON.stringify(this.dataObject));
51
63
  const subscr = this.layout.layoutConfigSubject
52
64
  .asObservable()
53
- .subscribe(() => {
65
+ .pipe(takeUntil(this.destroy$)).subscribe(() => {
54
66
  });
55
67
  this.unsubscribe.push(subscr);
56
- try {
57
- const headerFilters = JSON.parse(localStorage.getItem('header-filters') || '{}');
58
- if (headerFilters.stores) {
59
- this.selectedValuesArray = [headerFilters.stores];
60
- }
61
- }
62
- catch (error) {
63
- }
68
+ this.selectedValuesArray = [this.product?.map((item) => item?.product || item)];
69
+ this.changeDetector.detectChanges();
64
70
  }
65
71
  onClick(event) {
66
72
  const target = event.target;
@@ -74,7 +80,6 @@ export class MultidropdownComponent {
74
80
  }
75
81
  }
76
82
  opendropdown(e) {
77
- console.log(687);
78
83
  e.stopPropagation();
79
84
  this.Opendropdown = !this.Opendropdown;
80
85
  }
@@ -82,41 +87,31 @@ export class MultidropdownComponent {
82
87
  event.stopPropagation();
83
88
  this.dataObject.forEach((item, i) => {
84
89
  if (i !== index) {
85
- item.isOpen = false; // Close other dropdowns
90
+ item.isOpen = false;
86
91
  }
87
92
  });
88
93
  this.dataObject[index].isOpen = !this.dataObject[index].isOpen;
94
+ this.selectedValuesArray = [this.product?.map((item) => item?.product || item)];
89
95
  }
90
- // searchData(event:any,i:any){
91
- // const filteredIssues = this.dummyArray[i].Issues.filter((item:any) => new RegExp(event.target.value,'i').test(item.storeId))
92
- // this.dataObject[i].Issues = filteredIssues;
93
- // if(filteredIssues.length){
94
- // this.noFilter =false;
95
- // }else{
96
- // this.noFilter = true;
97
- // }
98
- // }
99
96
  toggleCheckbox(issue, index) {
100
97
  const currentIssues = this.dataObject[index].Issues;
101
98
  this.selectedValuesArray[index] = this.selectedValuesArray[index] || [];
102
- const selectedValues = this.selectedValuesArray[index]; // Retrieve selected values array for the current dropdown index
99
+ const selectedValues = this.selectedValuesArray[index];
103
100
  if (issue === 'Select All') {
104
- const currentIssues = this.dataObject[index].Issues.map((item) => item.storeId);
101
+ const currentIssues = this.dataObject[index].Issues.map((item) => item.text);
105
102
  if (selectedValues.length === currentIssues.length) {
106
- // If all items are already selected, deselect all
107
103
  this.selectedValuesArray[index] = [];
108
104
  }
109
105
  else {
110
- // Otherwise, select all items
111
106
  this.selectedValuesArray[index] = [...currentIssues];
112
107
  }
113
108
  }
114
109
  else {
115
110
  if (selectedValues.includes(issue)) {
116
- this.selectedValuesArray[index] = selectedValues.filter((item) => item !== issue); // Deselect the individual item if already selected
111
+ this.selectedValuesArray[index] = selectedValues.filter((item) => item !== issue);
117
112
  }
118
113
  else {
119
- this.selectedValuesArray[index].push(issue); // Select the individual item if not already selected
114
+ this.selectedValuesArray[index].push(issue);
120
115
  }
121
116
  }
122
117
  const selectAllId = `selectall${index}`;
@@ -137,55 +132,112 @@ export class MultidropdownComponent {
137
132
  this.selectedValuesArray = [];
138
133
  this.Opendropdown = false;
139
134
  }
140
- Apply() {
141
- var selectedValue = [];
142
- for (let i = 0; i < this.selectedValuesArray.length; i++) {
143
- const selectedValues = this.selectedValuesArray[i];
144
- const issues = this.dataObject[i].Issues;
145
- if (selectedValues) {
146
- this.selectedValuesArray[i] = selectedValues.map((selectedId) => {
147
- const issue = issues.find((issueItem) => issueItem.storeId === selectedId);
148
- selectedValue.push(issue);
149
- return issue ? issue : ''; // Get the text corresponding to the id
135
+ productconfirmation() {
136
+ let showPopup = false;
137
+ if (this.type == 'stores') {
138
+ let product = this.clientProduct.map((item) => item.product);
139
+ if (this.selectAll) {
140
+ product.forEach((item) => {
141
+ if (!this.selectedValuesArray[0].includes(item)) {
142
+ showPopup = true;
143
+ }
150
144
  });
151
145
  }
146
+ this.selectedValuesArray[0].forEach((item) => {
147
+ if (!product.includes(item)) {
148
+ showPopup = true;
149
+ }
150
+ });
151
+ }
152
+ if (this.type == 'products' || (this.type == 'stores' && showPopup)) {
153
+ const modalRef = this.modalService.open(ProductConfirmationComponent, {
154
+ centered: true, size: 'md', scrollable: true
155
+ });
156
+ modalRef.componentInstance.productList = this.product.map((item) => item?.product || item);
157
+ modalRef.componentInstance.updatedProduct = this.selectedValuesArray[0];
158
+ modalRef.componentInstance.type = this.type;
159
+ modalRef.componentInstance.stores = this.stores;
160
+ modalRef.componentInstance.clientId = this.clientId;
161
+ modalRef.result.then((result) => {
162
+ this.data.emit(result);
163
+ });
164
+ }
165
+ else {
166
+ let products = [];
167
+ this.selectedValuesArray[0].forEach((item) => {
168
+ let details = this.clientProduct.find((ele) => ele.product == item);
169
+ let type = details?.status || 'trial';
170
+ products.push({
171
+ name: item,
172
+ type: type
173
+ });
174
+ });
175
+ this.product.forEach((item) => {
176
+ if (!this.selectedValuesArray[0].includes(item)) {
177
+ products.push({
178
+ name: item,
179
+ type: 'unsubscribe'
180
+ });
181
+ }
182
+ });
183
+ let params = {
184
+ clientId: this.clientId,
185
+ product: products,
186
+ store: this.stores
187
+ };
188
+ this.PaymentSubscriptionService.updateStore(params).subscribe((res) => {
189
+ if (res && res.code == 200) {
190
+ this.data.emit('store');
191
+ Swal.fire({
192
+ iconHtml: `<img src="../../../../assets/tango/toast-icons/Envelope-Open-icon.svg">`,
193
+ html: `<div class="col-md-12 mt-5"><div class="toasttitile">${res.message}</div></div>`,
194
+ toast: true,
195
+ position: 'bottom',
196
+ showConfirmButton: false,
197
+ showCloseButton: true,
198
+ timer: 6000,
199
+ timerProgressBar: true,
200
+ customClass: 'custom-toast-container',
201
+ didOpen: (toast) => {
202
+ toast.addEventListener('mouseenter', Swal.stopTimer);
203
+ toast.addEventListener('mouseleave', Swal.resumeTimer);
204
+ }
205
+ });
206
+ }
207
+ });
152
208
  }
153
- // this.globalService.sendData(this.selectedFilters);
154
- console.log(this.selectedFilters);
155
- this.Opendropdown = false;
156
- this.selectedValuesArray.forEach((item, index) => {
157
- item = item.map((ele) => ele.storeId);
158
- this.selectedValuesArray[index] = item;
159
- });
160
- this.responseArray.forEach((item, index) => {
161
- item.Issues = this.selectedValuesArray[index] ? this.selectedValuesArray[index] : [];
162
- });
163
- // this.selectedFilters.stores=this.responseArray
164
- this.selectedFilters.stores = this.responseArray[0].Issues;
165
- localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
166
209
  }
167
- productconfirmation() {
168
- // this.activeModal.close();
169
- const modalRef = this.modalService.open(ProductConfirmationComponent, {
170
- centered: true, size: 'md', scrollable: true
171
- });
172
- modalRef.result.then((result) => {
173
- console.log('result', result);
174
- // if (result == 'unsubscribed') {
175
- // this.toast.getErrorToast('Unsubscribed Tango Suite for “Brand Name” successfully')
176
- // }
177
- });
210
+ convertUpper(data) {
211
+ let [firstWord, secondWord] = data.replace(/([a-z])([A-Z])/g, '$1 $2').split(' ');
212
+ firstWord = firstWord.charAt(0).toUpperCase() + firstWord.slice(1);
213
+ return firstWord + ' ' + secondWord;
178
214
  }
179
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MultidropdownComponent, deps: [{ token: i1.LayoutService }, { token: i1.GlobalStateService }, { token: i2.NgbModal }, { token: i3.PaymentSubscriptionService }], target: i0.ɵɵFactoryTarget.Component });
180
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MultidropdownComponent, selector: "lib-multidropdown", inputs: { text: "text" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"mt-2 dropdown1 position-relative cursor-pointer\" *ngFor=\"let item of dataObject; let i = index\">\r\n <a (click)=\"Dropdown('Clients',i,$event)\">\r\n <span *ngIf=\"!text.length\"><svg width=\"44\" height=\"44\"\r\n viewBox=\"0 0 44 44\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_3094_38243)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\"\r\n height=\"40\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\"\r\n height=\"39\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M22.0003 15.1665V26.8332M16.167 20.9998H27.8337\"\r\n stroke=\"#344054\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3094_38243\"\r\n x=\"0\" y=\"0\" width=\"44\"\r\n height=\"44\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_3094_38243\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_3094_38243\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>{{text}}</span>\r\n <button type=\"button\" class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"text.length\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-2\">Add Products</span> </button>\r\n </a>\r\n <!-- <span class=\"\">{{ selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined ?\r\n selectedValuesArray[i]?.length + ' ' + 'Clients'.split(' ').pop() : 'Clients' }}</span> -->\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute end-0 \" [ngClass]=\"!text.length ? 'left' : 'addselect'\">\r\n <div class=\"form-check d-flex align-items-center px-5 mt-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[i]?.length === item.Issues.length\"\r\n (change)=\"toggleCheckbox('Select All', i)\">\r\n <label class=\"form-check-label ms-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div class=\"mt-3 d-flex align-items-center mx-2\">\r\n \r\n <!-- <input type=\"text\" [(ngModel)]=\"searchValue\" (input)=\"searchData($event,i)\"\r\n class=\"form-control searchinput ps-14 py-2 mt-2\" placeholder=\"Search\" autocomplete=\"off\" /> -->\r\n </div>\r\n <div *ngFor=\"let issue of item.Issues\" class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"issue.storeName\" id=\"option{{issue.storeId}}\"\r\n [checked]=\"selectedValuesArray[i]?.includes(issue.storeId)\" (change)=\"toggleCheckbox(issue.storeId,i)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{issue.storeId}}\">\r\n {{ issue.storeName }}\r\n </label>\r\n </div>\r\n <div class=\"mt-4 d-flex justify-content-center \">\r\n <span class=\"form-check-label\" *ngIf=\"noFilter\">No filters available</span>\r\n </div>\r\n <div role=\"group\" class=\"d-flex justify-content-between mb-4 mx-5\">\r\n <button class=\"btn btn-outline w-100 me-2\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-100 ms-2\" (click)=\"productconfirmation()\">Apply</button>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n<!-- <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n</div> -->\r\n\r\n", styles: [".dropdown1{float:right}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.dropdown1 .dropdown{position:relative;display:inline-block}.dropdown1 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.dropdown1 .dropdown-content{z-index:1;padding:0;height:300px;overflow:auto;right:0;border-radius:12px;background:var(--White, #FFF);box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814}.dropdown1 .dropdown-content label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.dropdown1 .dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown1 .dropdown button{padding:10px;font-size:16px;cursor:pointer}.dropdown1 input[type=checkbox]{width:16px!important;height:16px!important;margin:-3px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}.dropdown1 input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}.dropdown1 input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
215
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MultidropdownComponent, deps: [{ token: i1.LayoutService }, { token: i1.GlobalStateService }, { token: i2.NgbModal }, { token: i3.PaymentSubscriptionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
216
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MultidropdownComponent, selector: "lib-multidropdown", inputs: { text: "text", product: "product", productList: "productList", type: "type", stores: "stores", clientId: "clientId", selectAll: "selectAll", clientProduct: "clientProduct" }, outputs: { data: "data" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"mt-2 dropdown1 position-relative cursor-pointer\" *ngFor=\"let item of dataObject; let i = index\">\r\n <a (click)=\"Dropdown('Clients',i,$event)\">\r\n <span *ngIf=\"!text.length\"><svg width=\"44\" height=\"44\"\r\n viewBox=\"0 0 44 44\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_3094_38243)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\"\r\n height=\"40\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\"\r\n height=\"39\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M22.0003 15.1665V26.8332M16.167 20.9998H27.8337\"\r\n stroke=\"#344054\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3094_38243\"\r\n x=\"0\" y=\"0\" width=\"44\"\r\n height=\"44\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_3094_38243\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_3094_38243\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>{{text}}</span>\r\n <button type=\"button\" class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"text.length\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-2\">Add Products</span> </button>\r\n </a>\r\n <!-- <span class=\"\">{{ selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined ?\r\n selectedValuesArray[i]?.length + ' ' + 'Clients'.split(' ').pop() : 'Clients' }}</span> -->\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute end-0 \" [ngClass]=\"!text.length ? 'left' : 'addselect'\">\r\n <div class=\"form-check d-flex align-items-center px-5 mt-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[i]?.length === item.Issues.length\"\r\n (change)=\"toggleCheckbox('Select All', i)\">\r\n <label class=\"form-check-label ms-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div class=\"mt-3 d-flex align-items-center mx-2\">\r\n \r\n <!-- <input type=\"text\" [(ngModel)]=\"searchValue\" (input)=\"searchData($event,i)\"\r\n class=\"form-control searchinput ps-14 py-2 mt-2\" placeholder=\"Search\" autocomplete=\"off\" /> -->\r\n </div>\r\n <div *ngFor=\"let issue of item.Issues\" class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"issue.text\" id=\"option{{issue.text}}\"\r\n [checked]=\"selectedValuesArray[i]?.includes(issue.text)\" (change)=\"toggleCheckbox(issue.text,i)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{issue.text}}\">\r\n {{ convertUpper(issue.text) }}\r\n </label>\r\n </div>\r\n <div class=\"mt-4 d-flex justify-content-center \">\r\n <span class=\"form-check-label\" *ngIf=\"noFilter\">No filters available</span>\r\n </div>\r\n <div role=\"group\" class=\"d-flex justify-content-between mb-4 mx-5\">\r\n <button class=\"btn btn-outline w-100 me-2\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-100 ms-2\" (click)=\"productconfirmation()\">Apply</button>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n\r\n", styles: [".dropdown1{float:right}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.dropdown1 .dropdown{position:relative;display:inline-block}.dropdown1 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.dropdown1 .dropdown-content{z-index:1;padding:0;height:300px;overflow:auto;right:0;border-radius:12px;background:var(--White, #FFF);box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814}.dropdown1 .dropdown-content label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.dropdown1 .dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown1 .dropdown button{padding:10px;font-size:16px;cursor:pointer}.dropdown1 input[type=checkbox]{width:16px!important;height:16px!important;margin:-3px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}.dropdown1 input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}.dropdown1 input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
181
217
  }
182
218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MultidropdownComponent, decorators: [{
183
219
  type: Component,
184
- args: [{ selector: 'lib-multidropdown', template: "<div class=\"mt-2 dropdown1 position-relative cursor-pointer\" *ngFor=\"let item of dataObject; let i = index\">\r\n <a (click)=\"Dropdown('Clients',i,$event)\">\r\n <span *ngIf=\"!text.length\"><svg width=\"44\" height=\"44\"\r\n viewBox=\"0 0 44 44\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_3094_38243)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\"\r\n height=\"40\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\"\r\n height=\"39\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M22.0003 15.1665V26.8332M16.167 20.9998H27.8337\"\r\n stroke=\"#344054\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3094_38243\"\r\n x=\"0\" y=\"0\" width=\"44\"\r\n height=\"44\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_3094_38243\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_3094_38243\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>{{text}}</span>\r\n <button type=\"button\" class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"text.length\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-2\">Add Products</span> </button>\r\n </a>\r\n <!-- <span class=\"\">{{ selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined ?\r\n selectedValuesArray[i]?.length + ' ' + 'Clients'.split(' ').pop() : 'Clients' }}</span> -->\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute end-0 \" [ngClass]=\"!text.length ? 'left' : 'addselect'\">\r\n <div class=\"form-check d-flex align-items-center px-5 mt-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[i]?.length === item.Issues.length\"\r\n (change)=\"toggleCheckbox('Select All', i)\">\r\n <label class=\"form-check-label ms-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div class=\"mt-3 d-flex align-items-center mx-2\">\r\n \r\n <!-- <input type=\"text\" [(ngModel)]=\"searchValue\" (input)=\"searchData($event,i)\"\r\n class=\"form-control searchinput ps-14 py-2 mt-2\" placeholder=\"Search\" autocomplete=\"off\" /> -->\r\n </div>\r\n <div *ngFor=\"let issue of item.Issues\" class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"issue.storeName\" id=\"option{{issue.storeId}}\"\r\n [checked]=\"selectedValuesArray[i]?.includes(issue.storeId)\" (change)=\"toggleCheckbox(issue.storeId,i)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{issue.storeId}}\">\r\n {{ issue.storeName }}\r\n </label>\r\n </div>\r\n <div class=\"mt-4 d-flex justify-content-center \">\r\n <span class=\"form-check-label\" *ngIf=\"noFilter\">No filters available</span>\r\n </div>\r\n <div role=\"group\" class=\"d-flex justify-content-between mb-4 mx-5\">\r\n <button class=\"btn btn-outline w-100 me-2\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-100 ms-2\" (click)=\"productconfirmation()\">Apply</button>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n<!-- <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n</div> -->\r\n\r\n", styles: [".dropdown1{float:right}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.dropdown1 .dropdown{position:relative;display:inline-block}.dropdown1 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.dropdown1 .dropdown-content{z-index:1;padding:0;height:300px;overflow:auto;right:0;border-radius:12px;background:var(--White, #FFF);box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814}.dropdown1 .dropdown-content label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.dropdown1 .dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown1 .dropdown button{padding:10px;font-size:16px;cursor:pointer}.dropdown1 input[type=checkbox]{width:16px!important;height:16px!important;margin:-3px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}.dropdown1 input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}.dropdown1 input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}\n"] }]
185
- }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i1.GlobalStateService }, { type: i2.NgbModal }, { type: i3.PaymentSubscriptionService }], propDecorators: { text: [{
220
+ args: [{ selector: 'lib-multidropdown', template: "<div class=\"mt-2 dropdown1 position-relative cursor-pointer\" *ngFor=\"let item of dataObject; let i = index\">\r\n <a (click)=\"Dropdown('Clients',i,$event)\">\r\n <span *ngIf=\"!text.length\"><svg width=\"44\" height=\"44\"\r\n viewBox=\"0 0 44 44\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_3094_38243)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\"\r\n height=\"40\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\"\r\n height=\"39\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M22.0003 15.1665V26.8332M16.167 20.9998H27.8337\"\r\n stroke=\"#344054\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3094_38243\"\r\n x=\"0\" y=\"0\" width=\"44\"\r\n height=\"44\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_3094_38243\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_3094_38243\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>{{text}}</span>\r\n <button type=\"button\" class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"text.length\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-2\">Add Products</span> </button>\r\n </a>\r\n <!-- <span class=\"\">{{ selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined ?\r\n selectedValuesArray[i]?.length + ' ' + 'Clients'.split(' ').pop() : 'Clients' }}</span> -->\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute end-0 \" [ngClass]=\"!text.length ? 'left' : 'addselect'\">\r\n <div class=\"form-check d-flex align-items-center px-5 mt-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[i]?.length === item.Issues.length\"\r\n (change)=\"toggleCheckbox('Select All', i)\">\r\n <label class=\"form-check-label ms-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div class=\"mt-3 d-flex align-items-center mx-2\">\r\n \r\n <!-- <input type=\"text\" [(ngModel)]=\"searchValue\" (input)=\"searchData($event,i)\"\r\n class=\"form-control searchinput ps-14 py-2 mt-2\" placeholder=\"Search\" autocomplete=\"off\" /> -->\r\n </div>\r\n <div *ngFor=\"let issue of item.Issues\" class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"issue.text\" id=\"option{{issue.text}}\"\r\n [checked]=\"selectedValuesArray[i]?.includes(issue.text)\" (change)=\"toggleCheckbox(issue.text,i)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{issue.text}}\">\r\n {{ convertUpper(issue.text) }}\r\n </label>\r\n </div>\r\n <div class=\"mt-4 d-flex justify-content-center \">\r\n <span class=\"form-check-label\" *ngIf=\"noFilter\">No filters available</span>\r\n </div>\r\n <div role=\"group\" class=\"d-flex justify-content-between mb-4 mx-5\">\r\n <button class=\"btn btn-outline w-100 me-2\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-100 ms-2\" (click)=\"productconfirmation()\">Apply</button>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n\r\n", styles: [".dropdown1{float:right}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.dropdown1 .dropdown{position:relative;display:inline-block}.dropdown1 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.dropdown1 .dropdown-content{z-index:1;padding:0;height:300px;overflow:auto;right:0;border-radius:12px;background:var(--White, #FFF);box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814}.dropdown1 .dropdown-content label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.dropdown1 .dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown1 .dropdown button{padding:10px;font-size:16px;cursor:pointer}.dropdown1 input[type=checkbox]{width:16px!important;height:16px!important;margin:-3px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}.dropdown1 input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}.dropdown1 input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}\n"] }]
221
+ }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i1.GlobalStateService }, { type: i2.NgbModal }, { type: i3.PaymentSubscriptionService }, { type: i0.ChangeDetectorRef }], propDecorators: { text: [{
222
+ type: Input
223
+ }], product: [{
224
+ type: Input
225
+ }], productList: [{
226
+ type: Input
227
+ }], type: [{
228
+ type: Input
229
+ }], stores: [{
230
+ type: Input
231
+ }], clientId: [{
232
+ type: Input
233
+ }], selectAll: [{
234
+ type: Input
235
+ }], clientProduct: [{
186
236
  type: Input
237
+ }], data: [{
238
+ type: Output
187
239
  }], onClick: [{
188
240
  type: HostListener,
189
241
  args: ['document:click', ['$event']]
190
242
  }] } });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlkcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL3BheW1lbnRzLXN1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcG9wdXBzL211bHRpZHJvcGRvd24vbXVsdGlkcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL3BheW1lbnRzLXN1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcG9wdXBzL211bHRpZHJvcGRvd24vbXVsdGlkcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBS2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDOzs7Ozs7QUFRdEcsTUFBTSxPQUFPLHNCQUFzQjtJQWViO0lBQThCO0lBQTJDO0lBQWdDO0lBZHBILElBQUksR0FBVSxFQUFFLENBQUM7SUFDbEIsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFFekMsVUFBVSxHQUFRO1FBQ2hCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxHQUFHLEVBQUUsd0JBQXdCLEVBQUM7Z0JBQzdHLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSx3QkFBd0IsRUFBRTtnQkFDekUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLHdCQUF3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RUFBQyxJQUFJLEVBQUMsVUFBVSxFQUFDLElBQUk7U0FDeEMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM5QixrQ0FBa0M7WUFDbEMsdUZBQXVGO1lBQ3ZGLElBQUk7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBaE1VLHNCQUFzQjsyRkFBdEIsc0JBQXNCLGlKQ2JuQyxrMk5BdUdBOzsyRkQxRmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG1CQUFtQjttTEFNcEIsSUFBSTtzQkFBWixLQUFLO2dCQThETixPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7ICBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9wYXltZW50LXN1YnNjcmlwdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSxMYXlvdXRTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFByb2R1Y3RDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9wcm9kdWN0LWNvbmZpcm1hdGlvbi9wcm9kdWN0LWNvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbXVsdGlkcm9wZG93bicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9tdWx0aWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE11bHRpZHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgdGV4dDpzdHJpbmcgPSBcIlwiO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHsgRGVzY3JpcHRpb246ICdDbGllbnRzJywgSXNzdWVzOiBbeyBzdG9yZU5hbWU6IFwiVGFuZ28gVHJhZmZpY1wiLHN0b3JlSWQ6IFwiMS0xXCIsX2lkOiAnNjU4NzIzNTQ3NTczNDY1MmhmZmRnZCd9LCBcclxuICAgIHsgc3RvcmVOYW1lOiBcIlRhbmdvIFpvbmVcIixzdG9yZUlkOiBcIjEtMjNcIixfaWQ6ICc2NTg3MjM1NDc1NzM0NjUyaGZmZGdkJyB9LCBcclxuICAgIHsgc3RvcmVOYW1lOiBcIlRhbmdvIFNPUFwiLHN0b3JlSWQ6IFwiMS0yNFwiLF9pZDogJzY1ODcyMzU0NzU3MzQ2NTJoZmZkZ2QnfSwgIFxyXG4gICAgeyBzdG9yZU5hbWU6IFwiUHJpb3JpdHkgU3VwcG9ydFwiLHN0b3JlSWQ6IFwiMS0yNFwiLF9pZDogJzY1ODcyMzU0NzU3MzQ2NTJoZmZkZ2QnfV0gfSxcclxuICAgIFxyXG4gIF07XHJcblxyXG4gIGR1bW15QXJyYXk6IGFueSA9W107XHJcbiAgbm9GaWx0ZXI6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIHJlc3BvbnNlQXJyYXk6IGFueT1bXTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxheW91dDogTGF5b3V0U2VydmljZSxwcml2YXRlIGdsb2JhbFNlcnZpY2U6IEdsb2JhbFN0YXRlU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6TmdiTW9kYWwsICBwcml2YXRlIFBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlOiBQYXltZW50U3Vic2NyaXB0aW9uU2VydmljZSwpIHt9XHJcblxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmZvckVhY2goKHNiKSA9PiBzYi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcbiAgLy8gQElucHV0KCkgZGF0YU9iamVjdDogYW55W10gPSBbXTtcclxuICBPcGVuZHJvcGRvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcGVybWlzc2lvbiA9IFtcclxuICAgIHsgZ3JvdXA6ICdTdXBlciBBZG1pbicsIGRlc2NyaXB0aW9uOiAnTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyICcgfSxcclxuICAgIHsgZ3JvdXA6ICdBZG1pbicsIGRlc2NyaXB0aW9uOiAnTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyICcgfSxcclxuICAgIHsgZ3JvdXA6ICdVc2VyJywgZGVzY3JpcHRpb246ICdMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgJyB9LFxyXG4gIF1cclxuXHJcbiAgXHJcbiAgc2hvd2Ryb3Bkb3duOiBhbnk7XHJcbiAgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZ1tdID0gW107XHJcbiAgc2VsZWN0ZWRWYWx1ZXNBcnJheTogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIHN0b3JlOiBudWxsLFxyXG4gICAgc3RvcmVzOiBbXSxcclxuICAgIGRhdGU6IG51bGwsXHJcblxyXG4gIH07XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmR1bW15QXJyYXkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YU9iamVjdCkpXHJcbiAgICB0aGlzLnJlc3BvbnNlQXJyYXkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YU9iamVjdCkpXHJcbiAgICBjb25zdCBzdWJzY3IgPSB0aGlzLmxheW91dC5sYXlvdXRDb25maWdTdWJqZWN0XHJcbiAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLnB1c2goc3Vic2NyKTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlckZpbHRlcnM6IGFueSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgfHwgJ3t9J1xyXG4gICAgICApO1xyXG4gICAgaWYoaGVhZGVyRmlsdGVycy5zdG9yZXMpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXkgPSBbaGVhZGVyRmlsdGVycy5zdG9yZXNdO1xyXG4gICAgfVxyXG4gICBcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiBcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGljayAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0XHJcbiAgICAgIHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmKCF0YXJnZXQuY2xvc2VzdCgnLmRyb3Bkb3duMScpKSB7XHJcbiAgICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZighdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bi1jb250ZW50Jykpe1xyXG4gICAgICB0aGlzLmRhdGFPYmplY3QuZm9yRWFjaCgoaXRlbTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7IFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5kcm9wZG93bihlOk1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnNvbGUubG9nKDY4Nyk7XHJcbiAgICBcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLk9wZW5kcm9wZG93biA9ICF0aGlzLk9wZW5kcm9wZG93bjtcclxuICB9XHJcblxyXG4gIERyb3Bkb3duKHZhbHVlOiBhbnksIGluZGV4OiBudW1iZXIsZXZlbnQ6TW91c2VFdmVudCkge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZGF0YU9iamVjdC5mb3JFYWNoKChpdGVtOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaSAhPT0gaW5kZXgpIHtcclxuICAgICAgICBpdGVtLmlzT3BlbiA9IGZhbHNlOyAvLyBDbG9zZSBvdGhlciBkcm9wZG93bnNcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbaW5kZXhdLmlzT3BlbiA9ICF0aGlzLmRhdGFPYmplY3RbaW5kZXhdLmlzT3BlbjtcclxuXHJcbiAgfVxyXG4gIC8vIHNlYXJjaERhdGEoZXZlbnQ6YW55LGk6YW55KXtcclxuICAvLyAgIGNvbnN0IGZpbHRlcmVkSXNzdWVzID0gdGhpcy5kdW1teUFycmF5W2ldLklzc3Vlcy5maWx0ZXIoKGl0ZW06YW55KSA9PiAgbmV3IFJlZ0V4cChldmVudC50YXJnZXQudmFsdWUsJ2knKS50ZXN0KGl0ZW0uc3RvcmVJZCkpXHJcbiAgLy8gICB0aGlzLmRhdGFPYmplY3RbaV0uSXNzdWVzID0gZmlsdGVyZWRJc3N1ZXM7XHJcbiAgLy8gICBpZihmaWx0ZXJlZElzc3Vlcy5sZW5ndGgpe1xyXG4gIC8vICAgICB0aGlzLm5vRmlsdGVyID1mYWxzZTtcclxuICAvLyAgIH1lbHNle1xyXG4gIC8vICAgICB0aGlzLm5vRmlsdGVyID0gdHJ1ZTtcclxuICAvLyAgIH1cclxuICAvLyAgIH1cclxuICB0b2dnbGVDaGVja2JveChpc3N1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XHJcblxyXG4gICAgY29uc3QgY3VycmVudElzc3VlcyA9IHRoaXMuZGF0YU9iamVjdFtpbmRleF0uSXNzdWVzO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0gfHwgW107XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF07IC8vIFJldHJpZXZlIHNlbGVjdGVkIHZhbHVlcyBhcnJheSBmb3IgdGhlIGN1cnJlbnQgZHJvcGRvd24gaW5kZXhcclxuXHJcbiAgICBpZiAoaXNzdWUgPT09ICdTZWxlY3QgQWxsJykge1xyXG4gICAgICBjb25zdCBjdXJyZW50SXNzdWVzID0gdGhpcy5kYXRhT2JqZWN0W2luZGV4XS5Jc3N1ZXMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uc3RvcmVJZCk7XHJcbiAgICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IGN1cnJlbnRJc3N1ZXMubGVuZ3RoKSB7XHJcblxyXG4gICAgICAgIC8vIElmIGFsbCBpdGVtcyBhcmUgYWxyZWFkeSBzZWxlY3RlZCwgZGVzZWxlY3QgYWxsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSA9IFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIE90aGVyd2lzZSwgc2VsZWN0IGFsbCBpdGVtc1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0gPSBbLi4uY3VycmVudElzc3Vlc107XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhpc3N1ZSkpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSA9IHNlbGVjdGVkVmFsdWVzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtICE9PSBpc3N1ZSk7IC8vIERlc2VsZWN0IHRoZSBpbmRpdmlkdWFsIGl0ZW0gaWYgYWxyZWFkeSBzZWxlY3RlZFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0ucHVzaChpc3N1ZSkgLy8gU2VsZWN0IHRoZSBpbmRpdmlkdWFsIGl0ZW0gaWYgbm90IGFscmVhZHkgc2VsZWN0ZWRcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdEFsbElkID0gYHNlbGVjdGFsbCR7aW5kZXh9YDtcclxuICAgIGNvbnN0IHNlbGVjdEFsbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3RBbGxJZCkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChzZWxlY3RBbGxFbGVtZW50KSB7XHJcbiAgICAgIHNlbGVjdEFsbEVsZW1lbnQuY2hlY2tlZCA9IHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gY3VycmVudElzc3Vlcy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgY3VycmVudElzc3Vlcy5mb3JFYWNoKChpdGVtOiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgaXNDaGVja2VkID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XS5pbmNsdWRlcyhpdGVtKTtcclxuICAgICAgY29uc3QgY2hlY2tib3hJZCA9IGBvcHRpb24ke2l0ZW19YDtcclxuICAgICAgY29uc3QgY2hlY2tib3hFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2hlY2tib3hJZCkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgaWYgKGNoZWNrYm94RWxlbWVudCkge1xyXG4gICAgICAgIGNoZWNrYm94RWxlbWVudC5jaGVja2VkID0gaXNDaGVja2VkO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBSZXNldCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheSA9IFtdO1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIEFwcGx5KCkge1xyXG4gICAgdmFyIHNlbGVjdGVkVmFsdWU6YW55ID1bXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaV07XHJcbiAgICAgIGNvbnN0IGlzc3VlcyA9IHRoaXMuZGF0YU9iamVjdFtpXS5Jc3N1ZXM7XHJcblxyXG4gICAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaV0gPSBzZWxlY3RlZFZhbHVlcy5tYXAoKHNlbGVjdGVkSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXNzdWUgPSBpc3N1ZXMuZmluZCgoaXNzdWVJdGVtOiBhbnkpID0+IGlzc3VlSXRlbS5zdG9yZUlkID09PSBzZWxlY3RlZElkKTtcclxuICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaChpc3N1ZSk7XHJcbiAgICAgICAgICByZXR1cm4gaXNzdWUgPyBpc3N1ZSA6ICcnOyAvLyBHZXQgdGhlIHRleHQgY29ycmVzcG9uZGluZyB0byB0aGUgaWRcclxuICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmdsb2JhbFNlcnZpY2Uuc2VuZERhdGEodGhpcy5zZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZEZpbHRlcnMpXHJcbiAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5LmZvckVhY2goKGl0ZW06YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICBpdGVtID0gaXRlbS5tYXAoKGVsZTphbnkpID0+IGVsZS5zdG9yZUlkKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSA9IGl0ZW1cclxuICAgIH0pXHJcbiAgICB0aGlzLnJlc3BvbnNlQXJyYXkuZm9yRWFjaCgoaXRlbTphbnksaW5kZXg6YW55KT0+e1xyXG4gICAgICBpdGVtLklzc3VlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaW5kZXhdIDpbXVxyXG4gICB9KVxyXG4gIC8vICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXM9dGhpcy5yZXNwb25zZUFycmF5XHJcbiAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3Jlcz10aGlzLnJlc3BvbnNlQXJyYXlbMF0uSXNzdWVzXHJcbiAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdoZWFkZXItZmlsdGVycycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgfVxyXG5cclxuICBwcm9kdWN0Y29uZmlybWF0aW9uKCkge1xyXG4gICAgLy8gdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFByb2R1Y3RDb25maXJtYXRpb25Db21wb25lbnQse1xyXG4gICAgICBjZW50ZXJlZDp0cnVlLHNpemU6J21kJyxzY3JvbGxhYmxlOnRydWVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygncmVzdWx0JywgcmVzdWx0KTtcclxuICAgICAgLy8gaWYgKHJlc3VsdCA9PSAndW5zdWJzY3JpYmVkJykge1xyXG4gICAgICAvLyAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnVW5zdWJzY3JpYmVkIFRhbmdvIFN1aXRlIGZvciDigJxCcmFuZCBOYW1l4oCdIHN1Y2Nlc3NmdWxseScpXHJcbiAgICAgIC8vIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm10LTIgZHJvcGRvd24xICBwb3NpdGlvbi1yZWxhdGl2ZSBjdXJzb3ItcG9pbnRlclwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFPYmplY3Q7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8YSAoY2xpY2spPVwiRHJvcGRvd24oJ0NsaWVudHMnLGksJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0ZXh0Lmxlbmd0aFwiPjxzdmcgd2lkdGg9XCI0NFwiIGhlaWdodD1cIjQ0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDQ0IDQ0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8zMDk0XzM4MjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0MFwiIHJ4PVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMzlcIiByeD1cIjcuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjIuMDAwMyAxNS4xNjY1VjI2LjgzMzJNMTYuMTY3IDIwLjk5OThIMjcuODMzN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzMwOTRfMzgyNDNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzMwOTRfMzgyNDNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW49XCJTb3VyY2VHcmFwaGljXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMzA5NF8zODI0M1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz57e3RleHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tb3V0bGluZSAgYnRuIGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBtZS00XCIgKm5nSWY9XCJ0ZXh0Lmxlbmd0aFwiPjxzdmdcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjQ5OTMgNC4xNjY3NVYxNS44MzM0TTQuNjY2MDIgMTAuMDAwMUgxNi4zMzI3XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJteC0yXCI+QWRkIFByb2R1Y3RzPC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cIlwiPnt7IHNlbGVjdGVkVmFsdWVzQXJyYXlbaV0/Lmxlbmd0aCAhPT0gbnVsbCAmJiBzZWxlY3RlZFZhbHVlc0FycmF5W2ldPy5sZW5ndGggIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzQXJyYXlbaV0/Lmxlbmd0aCArICcgJyArICdDbGllbnRzJy5zcGxpdCgnICcpLnBvcCgpIDogJ0NsaWVudHMnIH19PC9zcGFuPiAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzT3BlblwiIGNsYXNzPVwiZHJvcGRvd24tY29udGVudCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCBcIiBbbmdDbGFzc109XCIhdGV4dC5sZW5ndGggPyAnbGVmdCcgOiAnYWRkc2VsZWN0J1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtNSBtdC01XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlNlbGVjdCBBbGxcIiBpZD1cInNlbGVjdGFsbHt7aX19XCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkVmFsdWVzQXJyYXlbaV0/Lmxlbmd0aCA9PT0gaXRlbS5Jc3N1ZXMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQ2hlY2tib3goJ1NlbGVjdCBBbGwnLCBpKVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1zLTNcIiBmb3I9XCJzZWxlY3RhbGx7e2l9fVwiPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWdyYXkgbXQtM1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXgtMlwiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgKGlucHV0KT1cInNlYXJjaERhdGEoJGV2ZW50LGkpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaGlucHV0IHBzLTE0IHB5LTIgIG10LTJcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGlzc3VlIG9mIGl0ZW0uSXNzdWVzXCIgY2xhc3M9XCJmb3JtLWNoZWNrIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHktMyBweC01XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwiY2hlY2tib3hcIiBbdmFsdWVdPVwiaXNzdWUuc3RvcmVOYW1lXCIgaWQ9XCJvcHRpb257e2lzc3VlLnN0b3JlSWR9fVwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFZhbHVlc0FycmF5W2ldPy5pbmNsdWRlcyhpc3N1ZS5zdG9yZUlkKVwiIChjaGFuZ2UpPVwidG9nZ2xlQ2hlY2tib3goaXNzdWUuc3RvcmVJZCxpKVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHB4LTMgY3Vyc29yLXBvaW50ZXJcIiBmb3I9XCJvcHRpb257e2lzc3VlLnN0b3JlSWR9fVwiPlxyXG4gICAgICAgICAgICAgICAge3sgaXNzdWUuc3RvcmVOYW1lIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiICpuZ0lmPVwibm9GaWx0ZXJcIj5ObyBmaWx0ZXJzIGF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHJvbGU9XCJncm91cFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTQgbXgtNVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwIG1lLTJcIiAoY2xpY2spPVwiUmVzZXQoKVwiPiBSZXNldCA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBtcy0yXCIgKGNsaWNrKT1cInByb2R1Y3Rjb25maXJtYXRpb24oKVwiPkFwcGx5PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuIFxyXG48L2Rpdj5cclxuPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0xMy4zMzMzIDEuNjY2NjNWNC45OTk5Nk02LjY2NjY3IDEuNjY2NjNWNC45OTk5Nk0yLjUgOC4zMzMyOUgxNy41TTQuMTY2NjcgMy4zMzMyOUgxNS44MzMzQzE2Ljc1MzggMy4zMzMyOSAxNy41IDQuMDc5NDggMTcuNSA0Ljk5OTk2VjE2LjY2NjZDMTcuNSAxNy41ODcxIDE2Ljc1MzggMTguMzMzMyAxNS44MzMzIDE4LjMzMzNINC4xNjY2N0MzLjI0NjE5IDE4LjMzMzMgMi41IDE3LjU4NzEgMi41IDE2LjY2NjZWNC45OTk5NkMyLjUgNC4wNzk0OCAzLjI0NjE5IDMuMzMzMjkgNC4xNjY2NyAzLjMzMzI5WlwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8aW5wdXQgY2xhc3M9XCJmeC1kYXRlLXJhbmdlIGZvcm0tY29udHJvbCBwcy0xNFwiIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgbmd4RGF0ZXJhbmdlcGlja2VyTWQgW2Ryb3BzXT1cIidkb3duJ1wiXHJcbiAgICAgICAgW29wZW5zXT1cIidyaWdodCdcIiBbcmFuZ2VzXT1cInJhbmdlc1wiIFtzaG93Q3VzdG9tUmFuZ2VMYWJlbF09XCJ0cnVlXCIgW2Fsd2F5c1Nob3dDYWxlbmRhcnNdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtrZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlXT1cInRydWVcIiBbc2hvd0NhbmNlbF09XCJ0cnVlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVSYW5nZVwiXHJcbiAgICAgICAgW2xvY2FsZV09XCJ7IGZvcm1hdDogJ0RELU1NLVlZWVknLCBmaXJzdERheTogMSwgbW9udGhOYW1lczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10gfVwiXHJcbiAgICAgICAgKGRhdGVzVXBkYXRlZCk9XCJkYXRlY2hhbmdlKCRldmVudClcIiBuYW1lPVwiZGF0ZXJhbmdlXCIgLz5cclxuPC9kaXY+IC0tPlxyXG5cclxuIl19
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlkcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL3BheW1lbnRzLXN1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcG9wdXBzL211bHRpZHJvcGRvd24vbXVsdGlkcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL3BheW1lbnRzLXN1YnNjcmlwdGlvbi9zdWJzY3JpcHRpb24tcG9wdXBzL211bHRpZHJvcGRvd24vbXVsdGlkcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXdDLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0gsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3RHLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBUS9CLE1BQU0sT0FBTyxzQkFBc0I7SUFxQmI7SUFBK0I7SUFBMkM7SUFBZ0M7SUFBZ0U7SUFwQnJMLElBQUksR0FBVSxFQUFFLENBQUM7SUFDakIsT0FBTyxHQUFRLEVBQUUsQ0FBQztJQUNsQixXQUFXLEdBQU0sRUFBRSxDQUFDO0lBQ3BCLElBQUksR0FBUSxTQUFTLENBQUM7SUFDdEIsTUFBTSxHQUFPLEVBQUUsQ0FBQztJQUNoQixRQUFRLENBQVE7SUFDaEIsU0FBUyxHQUFXLEtBQUssQ0FBQztJQUMxQixhQUFhLEdBQU8sRUFBRSxDQUFDO0lBQ3RCLElBQUksR0FB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QUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxJQUFJO3NCQUFiLE1BQU07Z0JBc0RQLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIENoYW5nZURldGVjdG9yUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyAgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvcGF5bWVudC1zdWJzY3JpcHRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSxMYXlvdXRTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFByb2R1Y3RDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9wcm9kdWN0LWNvbmZpcm1hdGlvbi9wcm9kdWN0LWNvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tdWx0aWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGlkcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL211bHRpZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTXVsdGlkcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSB0ZXh0OnN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgcHJvZHVjdDogYW55ID0gW107XHJcbiAgQElucHV0KCkgcHJvZHVjdExpc3Q6YW55ID1bXTtcclxuICBASW5wdXQoKSB0eXBlOnN0cmluZz1cInByb2R1Y3RcIjtcclxuICBASW5wdXQoKSBzdG9yZXM6YW55ID0gW107XHJcbiAgQElucHV0KCkgY2xpZW50SWQ6c3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlbGVjdEFsbDpib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xpZW50UHJvZHVjdDphbnkgPSBbXTtcclxuICBAT3V0cHV0KCkgZGF0YSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBkYXRhT2JqZWN0OiBhbnkgPSBbXHJcbiAgICB7IERlc2NyaXB0aW9uOiAnQ2xpZW50cycsIElzc3VlczogW10gfSxcclxuICAgIFxyXG4gIF07XHJcblxyXG4gIGR1bW15QXJyYXk6IGFueSA9W107XHJcbiAgbm9GaWx0ZXI6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIHJlc3BvbnNlQXJyYXk6IGFueT1bXTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxheW91dDogTGF5b3V0U2VydmljZSwgcHJpdmF0ZSBnbG9iYWxTZXJ2aWNlOiBHbG9iYWxTdGF0ZVNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBQYXltZW50U3Vic2NyaXB0aW9uU2VydmljZTogUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuXHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5mb3JFYWNoKChzYikgPT4gc2IudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBPcGVuZHJvcGRvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcGVybWlzc2lvbiA9IFtcclxuICAgIHsgZ3JvdXA6ICdTdXBlciBBZG1pbicsIGRlc2NyaXB0aW9uOiAnTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyICcgfSxcclxuICAgIHsgZ3JvdXA6ICdBZG1pbicsIGRlc2NyaXB0aW9uOiAnTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyICcgfSxcclxuICAgIHsgZ3JvdXA6ICdVc2VyJywgZGVzY3JpcHRpb246ICdMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgJyB9LFxyXG4gIF1cclxuXHJcbiAgXHJcbiAgc2hvd2Ryb3Bkb3duOiBhbnk7XHJcbiAgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZ1tdID0gW107XHJcbiAgc2VsZWN0ZWRWYWx1ZXNBcnJheTogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIHN0b3JlOiBudWxsLFxyXG4gICAgc3RvcmVzOiBbXSxcclxuICAgIGRhdGU6IG51bGwsXHJcblxyXG4gIH07XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbMF0uSXNzdWVzID0gdGhpcy5wcm9kdWN0TGlzdDtcclxuICAgIHRoaXMuZHVtbXlBcnJheSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhT2JqZWN0KSlcclxuICAgIHRoaXMucmVzcG9uc2VBcnJheSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhT2JqZWN0KSlcclxuICAgIGNvbnN0IHN1YnNjciA9IHRoaXMubGF5b3V0LmxheW91dENvbmZpZ1N1YmplY3RcclxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLnB1c2goc3Vic2NyKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheSA9IFt0aGlzLnByb2R1Y3Q/Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtPy5wcm9kdWN0IHx8IGl0ZW0pXTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBcclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGljayAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0XHJcbiAgICAgIHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmKCF0YXJnZXQuY2xvc2VzdCgnLmRyb3Bkb3duMScpKSB7XHJcbiAgICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZighdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bi1jb250ZW50Jykpe1xyXG4gICAgICB0aGlzLmRhdGFPYmplY3QuZm9yRWFjaCgoaXRlbTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7IFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgb3BlbmRyb3Bkb3duKGU6TW91c2VFdmVudCkge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gIXRoaXMuT3BlbmRyb3Bkb3duO1xyXG4gIH1cclxuXHJcbiAgRHJvcGRvd24odmFsdWU6IGFueSwgaW5kZXg6IG51bWJlcixldmVudDpNb3VzZUV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0LmZvckVhY2goKGl0ZW06IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpICE9PSBpbmRleCkge1xyXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0W2luZGV4XS5pc09wZW4gPSAhdGhpcy5kYXRhT2JqZWN0W2luZGV4XS5pc09wZW47XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXkgPSBbdGhpcy5wcm9kdWN0Py5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8ucHJvZHVjdCB8fCBpdGVtKV07XHJcbiAgfVxyXG4gIFxyXG4gIHRvZ2dsZUNoZWNrYm94KGlzc3VlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50SXNzdWVzID0gdGhpcy5kYXRhT2JqZWN0W2luZGV4XS5Jc3N1ZXM7XHJcbiAgICBcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0gPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaW5kZXhdIHx8IFtdO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaW5kZXhdO1xyXG5cclxuICAgIGlmIChpc3N1ZSA9PT0gJ1NlbGVjdCBBbGwnKSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRJc3N1ZXMgPSB0aGlzLmRhdGFPYmplY3RbaW5kZXhdLklzc3Vlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS50ZXh0KTtcclxuICAgICAgaWYgKHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gY3VycmVudElzc3Vlcy5sZW5ndGgpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSA9IFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0gPSBbLi4uY3VycmVudElzc3Vlc107XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhpc3N1ZSkpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSA9IHNlbGVjdGVkVmFsdWVzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtICE9PSBpc3N1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XS5wdXNoKGlzc3VlKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0QWxsSWQgPSBgc2VsZWN0YWxsJHtpbmRleH1gO1xyXG4gICAgY29uc3Qgc2VsZWN0QWxsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdEFsbElkKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKHNlbGVjdEFsbEVsZW1lbnQpIHtcclxuICAgICAgc2VsZWN0QWxsRWxlbWVudC5jaGVja2VkID0gc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSBjdXJyZW50SXNzdWVzLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50SXNzdWVzLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICBjb25zdCBpc0NoZWNrZWQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaW5kZXhdLmluY2x1ZGVzKGl0ZW0pO1xyXG4gICAgICBjb25zdCBjaGVja2JveElkID0gYG9wdGlvbiR7aXRlbX1gO1xyXG4gICAgICBjb25zdCBjaGVja2JveEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjaGVja2JveElkKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICBpZiAoY2hlY2tib3hFbGVtZW50KSB7XHJcbiAgICAgICAgY2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSBpc0NoZWNrZWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIFJlc2V0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5ID0gW107XHJcbiAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvZHVjdGNvbmZpcm1hdGlvbigpIHtcclxuICAgIGxldCBzaG93UG9wdXA6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYodGhpcy50eXBlID09ICdzdG9yZXMnKSB7XHJcbiAgICAgIGxldCBwcm9kdWN0ID0gdGhpcy5jbGllbnRQcm9kdWN0Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnByb2R1Y3QpO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RBbGwpIHtcclxuICAgICAgICBwcm9kdWN0LmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5pbmNsdWRlcyhpdGVtKSkge1xyXG4gICAgICAgICAgICBzaG93UG9wdXAgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCFwcm9kdWN0LmluY2x1ZGVzKGl0ZW0pKSB7XHJcbiAgICAgICAgICBzaG93UG9wdXAgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHRoaXMudHlwZSA9PSAncHJvZHVjdHMnIHx8ICh0aGlzLnR5cGUgPT0gJ3N0b3JlcycgJiYgc2hvd1BvcHVwKSkge1xyXG4gICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oUHJvZHVjdENvbmZpcm1hdGlvbkNvbXBvbmVudCx7XHJcbiAgICAgICAgY2VudGVyZWQ6dHJ1ZSxzaXplOidtZCcsc2Nyb2xsYWJsZTp0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5wcm9kdWN0TGlzdCA9IHRoaXMucHJvZHVjdC5tYXAoKGl0ZW06YW55KT0+aXRlbT8ucHJvZHVjdCB8fCBpdGVtKTtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXBkYXRlZFByb2R1Y3QgPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF07XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnR5cGUgPSB0aGlzLnR5cGU7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlcyA9IHRoaXMuc3RvcmVzO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEuZW1pdChyZXN1bHQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcHJvZHVjdHM6YW55ID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5mb3JFYWNoKChpdGVtOmFueSkgPT4ge1xyXG4gICAgICAgIGxldCBkZXRhaWxzID0gdGhpcy5jbGllbnRQcm9kdWN0LmZpbmQoKGVsZTphbnkpPT4gZWxlLnByb2R1Y3QgPT0gaXRlbSlcclxuICAgICAgICBsZXQgdHlwZSA9IGRldGFpbHM/LnN0YXR1cyB8fCAndHJpYWwnXHJcbiAgICAgICAgcHJvZHVjdHMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiBpdGVtLFxyXG4gICAgICAgICAgdHlwZTogdHlwZVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMucHJvZHVjdC5mb3JFYWNoKChpdGVtOmFueSkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmluY2x1ZGVzKGl0ZW0pKSB7XHJcbiAgICAgICAgICBwcm9kdWN0cy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogaXRlbSxcclxuICAgICAgICAgICAgdHlwZTogJ3Vuc3Vic2NyaWJlJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgcHJvZHVjdDogcHJvZHVjdHMsXHJcbiAgICAgICAgc3RvcmU6IHRoaXMuc3RvcmVzXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS51cGRhdGVTdG9yZShwYXJhbXMpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5kYXRhLmVtaXQoJ3N0b3JlJyk7XHJcbiAgICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgICBpY29uSHRtbDogYDxpbWcgIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy90YW5nby90b2FzdC1pY29ucy9FbnZlbG9wZS1PcGVuLWljb24uc3ZnXCI+YCxcclxuICAgICAgICAgICAgaHRtbDogYDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbXQtNVwiPjxkaXYgY2xhc3M9XCJ0b2FzdHRpdGlsZVwiPiR7cmVzLm1lc3NhZ2V9PC9kaXY+PC9kaXY+YCxcclxuICAgICAgICAgICAgdG9hc3Q6IHRydWUsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgIHRpbWVyOiA2MDAwLFxyXG4gICAgICAgICAgICB0aW1lclByb2dyZXNzQmFyOiB0cnVlLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczogJ2N1c3RvbS10b2FzdC1jb250YWluZXInLFxyXG4gICAgICAgICAgICBkaWRPcGVuOiAodG9hc3QpID0+IHtcclxuICAgICAgICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgICAgICAgICAgICAgdG9hc3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIFN3YWwucmVzdW1lVGltZXIpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnZlcnRVcHBlcihkYXRhOmFueSkge1xyXG4gICAgbGV0IFtmaXJzdFdvcmQsIHNlY29uZFdvcmRdID0gZGF0YS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKS5zcGxpdCgnICcpO1xyXG4gICAgZmlyc3RXb3JkID0gZmlyc3RXb3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZmlyc3RXb3JkLnNsaWNlKDEpO1xyXG4gICAgcmV0dXJuIGZpcnN0V29yZCArICcgJyArIHNlY29uZFdvcmQ7XHJcbiAgfVxyXG5cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwibXQtMiBkcm9wZG93bjEgIHBvc2l0aW9uLXJlbGF0aXZlIGN1cnNvci1wb2ludGVyXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YU9iamVjdDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxhIChjbGljayk9XCJEcm9wZG93bignQ2xpZW50cycsaSwkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRleHQubGVuZ3RoXCI+PHN2ZyB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiNDRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzMwOTRfMzgyNDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjQwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjQwXCIgcng9XCI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIzOVwiIHJ4PVwiNy41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMi4wMDAzIDE1LjE2NjVWMjYuODMzMk0xNi4xNjcgMjAuOTk5OEgyNy44MzM3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMzA5NF8zODI0M1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1clxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMzA5NF8zODI0M1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbj1cIlNvdXJjZUdyYXBoaWNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18zMDk0XzM4MjQzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPnt7dGV4dH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1vdXRsaW5lICBidG4gYWxpZ24taXRlbXMtZW5kIHRleHQtbm93cmFwIG1lLTRcIiAqbmdJZj1cInRleHQubGVuZ3RoXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNDk5MyA0LjE2Njc1VjE1LjgzMzRNNC42NjYwMiAxMC4wMDAxSDE2LjMzMjdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm14LTJcIj5BZGQgUHJvZHVjdHM8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiXCI+e3sgc2VsZWN0ZWRWYWx1ZXNBcnJheVtpXT8ubGVuZ3RoICE9PSBudWxsICYmIHNlbGVjdGVkVmFsdWVzQXJyYXlbaV0/Lmxlbmd0aCAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXNBcnJheVtpXT8ubGVuZ3RoICsgJyAnICsgJ0NsaWVudHMnLnNwbGl0KCcgJykucG9wKCkgOiAnQ2xpZW50cycgfX08L3NwYW4+IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNPcGVuXCIgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIFwiIFtuZ0NsYXNzXT1cIiF0ZXh0Lmxlbmd0aCA/ICdsZWZ0JyA6ICdhZGRzZWxlY3QnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC01IG10LTVcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiU2VsZWN0IEFsbFwiIGlkPVwic2VsZWN0YWxse3tpfX1cIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRWYWx1ZXNBcnJheVtpXT8ubGVuZ3RoID09PSBpdGVtLklzc3Vlcy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVDaGVja2JveCgnU2VsZWN0IEFsbCcsIGkpXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXMtM1wiIGZvcj1cInNlbGVjdGFsbHt7aX19XCI+XHJcbiAgICAgICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItZ3JheSBtdC0zXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBteC0yXCI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiAoaW5wdXQpPVwic2VhcmNoRGF0YSgkZXZlbnQsaSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoaW5wdXQgcHMtMTQgcHktMiAgbXQtMlwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXNzdWUgb2YgaXRlbS5Jc3N1ZXNcIiBjbGFzcz1cImZvcm0tY2hlY2sgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweS0zIHB4LTVcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJjaGVja2JveFwiIFt2YWx1ZV09XCJpc3N1ZS50ZXh0XCIgaWQ9XCJvcHRpb257e2lzc3VlLnRleHR9fVwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFZhbHVlc0FycmF5W2ldPy5pbmNsdWRlcyhpc3N1ZS50ZXh0KVwiIChjaGFuZ2UpPVwidG9nZ2xlQ2hlY2tib3goaXNzdWUudGV4dCxpKVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHB4LTMgY3Vyc29yLXBvaW50ZXJcIiBmb3I9XCJvcHRpb257e2lzc3VlLnRleHR9fVwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29udmVydFVwcGVyKGlzc3VlLnRleHQpIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiICpuZ0lmPVwibm9GaWx0ZXJcIj5ObyBmaWx0ZXJzIGF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHJvbGU9XCJncm91cFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTQgbXgtNVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwIG1lLTJcIiAoY2xpY2spPVwiUmVzZXQoKVwiPiBSZXNldCA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBtcy0yXCIgKGNsaWNrKT1cInByb2R1Y3Rjb25maXJtYXRpb24oKVwiPkFwcGx5PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuIFxyXG48L2Rpdj5cclxuXHJcbiJdfQ==