@hitsoft/e-donusum 1.0.46 → 1.0.47
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.
- package/config/providers/hit-providers/document-serial-route.provider.d.ts +9 -0
- package/esm2020/config/e-donusum-config.module.mjs +3 -1
- package/esm2020/config/providers/document-serial-route.provider.mjs +2 -2
- package/esm2020/config/providers/hit-providers/document-serial-route.provider.mjs +20 -0
- package/esm2020/lib/components/hit-despatches/hit-despatch.component.mjs +91 -17
- package/esm2020/lib/components/hit-document-serial/hit-document-serial.component.mjs +88 -0
- package/esm2020/lib/components/hit-document-serial/hit-document-serial.module.mjs +67 -0
- package/esm2020/lib/components/hit-invoices/hit-invoice.component.mjs +71 -17
- package/esm2020/lib/despatches/despatch/components/despatch.component.mjs +5 -4
- package/esm2020/lib/document-serials/document-serial/components/document-serial.component.mjs +5 -4
- package/esm2020/lib/document-serials/document-serial/document-serial-routing.module.mjs +16 -4
- package/esm2020/lib/e-donusum-routing.module.mjs +3 -1
- package/esm2020/lib/e-donusum.module.mjs +6 -1
- package/esm2020/lib/hit-proxy/hit-despatches/hit-despatch.service.mjs +6 -1
- package/esm2020/lib/hit-proxy/hit-document-serials/hit-document-serial.service.mjs +29 -0
- package/esm2020/lib/hit-proxy/hit-invoices/hit-invoice.service.mjs +6 -1
- package/esm2020/lib/invoices/invoice/components/invoice.component.mjs +5 -4
- package/esm2020/lib/proxy/despatches/despatch.service.mjs +2 -2
- package/esm2020/lib/proxy/despatches/models.mjs +1 -1
- package/esm2020/lib/proxy/document-serials/document-serial.service.mjs +2 -2
- package/esm2020/lib/proxy/document-serials/index.mjs +3 -0
- package/esm2020/lib/proxy/document-serials/models.mjs +1 -1
- package/esm2020/lib/proxy/invoices/invoice.service.mjs +2 -2
- package/esm2020/lib/proxy/invoices/models.mjs +1 -1
- package/fesm2015/hitsoft-e-donusum-config.mjs +117 -98
- package/fesm2015/hitsoft-e-donusum-config.mjs.map +1 -1
- package/fesm2015/hitsoft-e-donusum.mjs +340 -37
- package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
- package/fesm2020/hitsoft-e-donusum-config.mjs +117 -98
- package/fesm2020/hitsoft-e-donusum-config.mjs.map +1 -1
- package/fesm2020/hitsoft-e-donusum.mjs +343 -37
- package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
- package/lib/components/hit-despatches/hit-despatch.component.d.ts +13 -2
- package/lib/components/hit-document-serial/hit-document-serial.component.d.ts +33 -0
- package/lib/components/hit-document-serial/hit-document-serial.module.d.ts +15 -0
- package/lib/components/hit-invoices/hit-invoice.component.d.ts +13 -1
- package/lib/hit-proxy/hit-despatches/hit-despatch.service.d.ts +1 -0
- package/lib/hit-proxy/hit-document-serials/hit-document-serial.service.d.ts +13 -0
- package/lib/hit-proxy/hit-invoices/hit-invoice.service.d.ts +1 -0
- package/lib/proxy/despatches/models.d.ts +4 -0
- package/lib/proxy/document-serials/index.d.ts +2 -0
- package/lib/proxy/document-serials/models.d.ts +5 -0
- package/lib/proxy/invoices/models.d.ts +4 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ListService } from '@abp/ng.core';
|
|
1
|
+
import { isNullOrEmpty, ListService } from '@abp/ng.core';
|
|
2
2
|
import { DateAdapter } from '@abp/ng.theme.shared/extensions';
|
|
3
3
|
import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
|
|
4
4
|
import { NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap';
|
|
@@ -7,24 +7,29 @@ import * as i1 from "@abp/ng.core";
|
|
|
7
7
|
import * as i2 from "../../hit-proxy/hit-despatches/hit-despatch.service";
|
|
8
8
|
import * as i3 from "../../hit-proxy/hit-file-document-type/hit-file-document-type.service";
|
|
9
9
|
import * as i4 from "../../hit-proxy/hit-gib-partner-pks/hit-gib-partner-pk.service";
|
|
10
|
-
import * as i5 from "
|
|
11
|
-
import * as i6 from "@
|
|
12
|
-
import * as i7 from "@
|
|
13
|
-
import * as i8 from "
|
|
14
|
-
import * as i9 from "devextreme-angular
|
|
15
|
-
import * as i10 from "devextreme-angular/
|
|
16
|
-
import * as i11 from "
|
|
10
|
+
import * as i5 from "../../hit-proxy/hit-document-serials/hit-document-serial.service";
|
|
11
|
+
import * as i6 from "@abp/ng.theme.shared";
|
|
12
|
+
import * as i7 from "@angular/common";
|
|
13
|
+
import * as i8 from "@ng-bootstrap/ng-bootstrap";
|
|
14
|
+
import * as i9 from "devextreme-angular";
|
|
15
|
+
import * as i10 from "devextreme-angular/ui/nested";
|
|
16
|
+
import * as i11 from "devextreme-angular/core";
|
|
17
|
+
import * as i12 from "@abp/ng.components/page";
|
|
17
18
|
export class HitDespatchComponent {
|
|
18
|
-
constructor(list, service, fileDocumentTypeService, gibPartnerPkService, toasterService) {
|
|
19
|
+
constructor(list, service, fileDocumentTypeService, gibPartnerPkService, hitDocumentSerialService, confirmation, toasterService) {
|
|
19
20
|
this.list = list;
|
|
20
21
|
this.service = service;
|
|
21
22
|
this.fileDocumentTypeService = fileDocumentTypeService;
|
|
22
23
|
this.gibPartnerPkService = gibPartnerPkService;
|
|
24
|
+
this.hitDocumentSerialService = hitDocumentSerialService;
|
|
25
|
+
this.confirmation = confirmation;
|
|
23
26
|
this.toasterService = toasterService;
|
|
24
27
|
this.isFileModalOpen = false;
|
|
25
28
|
this.isFileModalBusy = false;
|
|
26
29
|
this.isPKModalOpen = false;
|
|
27
30
|
this.isPKModalBusy = false;
|
|
31
|
+
this.isSerialModalOpen = false;
|
|
32
|
+
this.isSerialModalBusy = false;
|
|
28
33
|
}
|
|
29
34
|
ngOnInit() {
|
|
30
35
|
this.despatchesDataSource = this.service.LoadDespatches;
|
|
@@ -44,14 +49,64 @@ export class HitDespatchComponent {
|
|
|
44
49
|
}
|
|
45
50
|
sendDespatchSingle(record) {
|
|
46
51
|
let ids = [record.id];
|
|
47
|
-
|
|
52
|
+
if (isNullOrEmpty(record.selectedDespatchSerial)) {
|
|
53
|
+
this.confirmation
|
|
54
|
+
.info('Belge seri seçimi yapılmadığı için entegratörde bulunan varsayılan seriyle gönderilecektir. Devam etmek istiyor musunuz?', { key: '::Bilgi', defaultValue: '' })
|
|
55
|
+
.subscribe((status) => {
|
|
56
|
+
if (status == "confirm")
|
|
57
|
+
this.service.sendDespatchById(ids).subscribe(() => this.dxDespatchInstance.instance.refresh());
|
|
58
|
+
else
|
|
59
|
+
this.toasterService.info("Herhangi bir işlem gerçekleştirilmedi.");
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.service.sendDespatchById(ids).subscribe(() => this.dxDespatchInstance.instance.refresh());
|
|
64
|
+
}
|
|
48
65
|
}
|
|
49
66
|
sendDespatchMultiple() {
|
|
50
67
|
let ids = [];
|
|
51
68
|
this.dxDespatchInstance.instance.getVisibleRows().filter(i => i.isSelected == true).forEach(element => {
|
|
52
|
-
ids.push(
|
|
69
|
+
ids.push({
|
|
70
|
+
id: element.data.id,
|
|
71
|
+
selectedSerial: element.data.selectedDespatchSerial
|
|
72
|
+
});
|
|
53
73
|
});
|
|
54
|
-
|
|
74
|
+
if (ids.filter(p => isNullOrEmpty(p.selectedSerial)).length > 0) {
|
|
75
|
+
this.confirmation
|
|
76
|
+
.info('Seri seçimi yapılmayan belgeler için entegratörde bulunan varsayılan seriyle gönderim yapılacaktır. Devam etmek istiyor musunuz?', { key: '::Bilgi', defaultValue: '' })
|
|
77
|
+
.subscribe((status) => {
|
|
78
|
+
if (status == "confirm")
|
|
79
|
+
this.service.sendDespatchById(ids.map(p => p.id)).subscribe(() => this.dxDespatchInstance.instance.refresh());
|
|
80
|
+
else
|
|
81
|
+
this.toasterService.info("Herhangi bir işlem gerçekleştirilmedi.");
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.service.sendDespatchById(ids.map(p => p.id)).subscribe(() => this.dxDespatchInstance.instance.refresh());
|
|
86
|
+
}
|
|
87
|
+
/*
|
|
88
|
+
debugger;
|
|
89
|
+
|
|
90
|
+
this.dxInvoiceInstance.instance.getVisibleRows().filter(i => i.isSelected == true).forEach(element => {
|
|
91
|
+
ids.push({
|
|
92
|
+
id: element.data.id,
|
|
93
|
+
selectedSerial: element.data.selectedInvoiceSerial
|
|
94
|
+
})
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
if(ids.filter(p => isNullOrEmpty(p.selectedSerial)).length > 0){
|
|
98
|
+
this.confirmation
|
|
99
|
+
.info('Seri seçimi yapılmayan belgeler için entegratörde bulunan varsayılan seriyle gönderim yapılacaktır. Devam etmek istiyor musunuz?', { key: '::Bilgi', defaultValue: '' })
|
|
100
|
+
.subscribe((status: Confirmation.Status) => {
|
|
101
|
+
if (status == "confirm")
|
|
102
|
+
this.invoiceService.sendInvoiceById(ids.map(p => p.id)).subscribe(() => this.dxInvoiceInstance.instance.refresh());
|
|
103
|
+
else this.toasterService.info("Herhangi bir işlem gerçekleştirilmedi.");
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
else{
|
|
107
|
+
this.invoiceService.sendInvoiceById(ids.map(p => p.id)).subscribe(() => this.dxInvoiceInstance.instance.refresh());
|
|
108
|
+
}
|
|
109
|
+
*/
|
|
55
110
|
}
|
|
56
111
|
setDespatchCancelWithOpen(record) {
|
|
57
112
|
this.service.setDespatchCancelById(record.id, 1).subscribe(() => {
|
|
@@ -75,6 +130,16 @@ export class HitDespatchComponent {
|
|
|
75
130
|
});
|
|
76
131
|
this.isPKModalOpen = true;
|
|
77
132
|
}
|
|
133
|
+
listActiveSeries(record) {
|
|
134
|
+
debugger;
|
|
135
|
+
this.hitDocumentSerialService.ListActiveSeriesForDocument(1).subscribe(serials => {
|
|
136
|
+
this.despatchSerialDataSource = serials.map(item => ({ Seri: item }));
|
|
137
|
+
;
|
|
138
|
+
this.serialModalSelectedDespatchId = record.id;
|
|
139
|
+
this.serialModalSelectedDespatchResourceDocEntry = record.resourceDocEntry;
|
|
140
|
+
});
|
|
141
|
+
this.isSerialModalOpen = true;
|
|
142
|
+
}
|
|
78
143
|
selectPKAddress(record) {
|
|
79
144
|
console.log(record.Adres, this.pkModalSelectedDespatchId, this.pkModalSelectedDespatchResourceDocEntry);
|
|
80
145
|
this.service.updateDespatchReceiver(this.pkModalSelectedDespatchId, record.Adres).subscribe(() => {
|
|
@@ -82,6 +147,12 @@ export class HitDespatchComponent {
|
|
|
82
147
|
this.dxDespatchInstance.instance.refresh();
|
|
83
148
|
});
|
|
84
149
|
}
|
|
150
|
+
selectDespatchSerial(record) {
|
|
151
|
+
this.service.updateDespatchSerial(this.serialModalSelectedDespatchId, record.Seri).subscribe(() => {
|
|
152
|
+
this.isSerialModalOpen = false;
|
|
153
|
+
this.dxDespatchInstance.instance.refresh();
|
|
154
|
+
});
|
|
155
|
+
}
|
|
85
156
|
getDespatchPreview(record) {
|
|
86
157
|
debugger;
|
|
87
158
|
this.service.getDespatchPreview(record.id, record.resourceDocType).subscribe(fatura => {
|
|
@@ -165,16 +236,19 @@ export class HitDespatchComponent {
|
|
|
165
236
|
});
|
|
166
237
|
}
|
|
167
238
|
}
|
|
168
|
-
HitDespatchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitDespatchComponent, deps: [{ token: i1.ListService }, { token: i2.HitDespatchService }, { token: i3.HitFileDocumentTypeService }, { token: i4.HitGibPartnerPkService }, { token: i5.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
|
|
169
|
-
HitDespatchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitDespatchComponent, selector: "lib-despatch", providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "dxDespatchInstance", first: true, predicate: ["dxDespatchInstance"], descendants: true }, { propertyName: "dxDespatchFileInstance", first: true, predicate: ["dxDespatchFileInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'eDonusum::Despatches' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <!-- <button\r\n class=\"btn btn-primary btn-sm mx-2\"\r\n type=\"button\"\r\n [disabled]=\"isExportToExcelBusy\"\r\n (click)=\"exportToExcel()\"\r\n >\r\n {{ 'eDonusum::ExportToExcel' | abpLocalization }}\r\n </button>\r\n -->\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendDespatchMultiple()\">\r\n <i class=\"fa fa-envelope me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::AddToQueue' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"getDespatchResponses()\">\r\n <i class=\"fa fa-question me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::CheckResponses' | abpLocalization }}\r\n </button>\r\n <!-- <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendInvoiceToEntegrator()\">\r\n <i class=\"fa fa-envelope me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::SendToEntegratorManual' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-warning\" type=\"button\"\r\n (click)=\"getInvoicesFromConnector()\">\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::GetFromConnectorManual' | abpLocalization }}\r\n </button> -->\r\n\r\n </div>\r\n </abp-page-toolbar-container>\r\n <p>G\u00F6nderimi tamamlanan ve g\u00F6nderilmesi beklenen irsaliyeleri listeleyen ekran</p>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchInstance [dataSource]=\"despatchesDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\" style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\" [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\" showCheckBoxesMode=\"always\">\r\n </dxo-selection>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <!-- <button ngbDropdownItem (click)=\"update(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"delete(row.data)\">\r\n <i class=\"fa fa-trash\" aria-hidden=\"true\"></i> {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button> -->\r\n <button ngbDropdownItem (click)=\"sendDespatchSingle(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-envelope\" aria-hidden=\"true\"></i> {{ 'eDonusum::AddToQueue' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setDespatchCancelWithOpen(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithOpen' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setDespatchCancelWithRevise(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithRevise' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listDespatchReceiverPK(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-pencil\" aria-hidden=\"true\"></i> {{ 'eDonusum::SelectReceiverPK' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchView(row.data)\" *ngIf=\"row.data.status == 300 || row.data.status == 340 || row.data.status == 380 || row.data.status == 700\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i> {{ 'eDonusum::GetPDFView' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchPreview(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::Preview' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchXML(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::PreviewXML' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"showAllFiles(row.data)\"\r\n *ngIf=\"row.data.status == 300 || row.data.status == 340 || row.data.status == 380 || row.data.status == 700\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::ShowAllFiles' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getReceiptAdvicePreview(row.data)\" *ngIf=\"row.data.status == 700\">\r\n <i class=\"fa fa-envelope\" aria-hidden=\"true\"></i> {{ 'eDonusum::ShowResponse' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"issueDate\" dataType=\"date\"\r\n caption=\"{{'eDonusum::IssueDate'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"resourceDocEntry\"\r\n caption=\"{{'eDonusum::ResourceDocEntry'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"despatchId\" caption=\"{{'eDonusum::DespatchId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column cellTemplate=\"docTypeTemplate\" dataField=\"resourceDocType\"\r\n caption=\"{{'eDonusum::ResourceDocType'|abpLocalization}}\">\r\n </dxi-column>\r\n <div *dxTemplate=\"let data of 'docTypeTemplate'\">\r\n {{getDocObjectName(data.data)}}\r\n </div>\r\n <dxi-column dataField=\"deliveryCustomerPartyName\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyName'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"deliveryCustomerPartyVknTckn\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyVknTckn'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"status\" caption=\"{{'eDonusum::Status'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"despatchStatusLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"profileId\" caption=\"{{'eDonusum::DespatchProfileId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"despatchAdviceTypeCode\"\r\n caption=\"{{'eDonusum::DespatchAdviceTypeCode'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"receiverResponse\" caption=\"{{'eDonusum::ReceiverResponse'|abpLocalization}}\"\r\n cellTemplate=\"iconTemplate\">\r\n <dxo-lookup [dataSource]=\"despatchReceiverResponseLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <div *dxTemplate=\"let data of 'iconTemplate'\">\r\n <i [ngClass]=\"getIconClass(data.data.receiverResponse)\"\r\n [ngStyle]=\"{'color':data.data.receiverResponse == '1' ? 'green' : data.data.receiverResponse == '2' ? 'red' : data.data.receiverResponse == '3' ? 'orange' : 'gray'}\"></i>\r\n {{getReceiverResponseName(data.data.receiverResponse)}}\r\n\r\n </div>\r\n\r\n <dxi-column dataField=\"receiverResponseDesc\"\r\n caption=\"{{'eDonusum::ReceiverResponseDesc'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"documentCurrencyCode\" caption=\"{{'eDonusum::DocCurrency'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedReceiverPK\" dataType=\"date\"\r\n caption=\"{{'eDonusum::SelectedReceiverPK'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"uuId\" caption=\"{{'eDonusum::UuId'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isFileModalBusy\" [(visible)]=\"isFileModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ 'eDonusum::DespatchFiles' | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchFileInstance [dataSource]=\"despatchFilesDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem (click)=\"DownloadFile(row.data)\">\r\n <i class=\"fa fa-download\" aria-hidden=\"true\"></i> {{ 'eDonusum::Download' | abpLocalization\r\n }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column [allowEditing]=\"false\" dataField=\"extraItem\" caption=\"{{'eDonusum::Name'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"despatchFileNameLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n<abp-modal [busy]=\"isPKModalBusy\" [(visible)]=\"isPKModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{pkModalSelectedDespatchResourceDocEntry}} {{ 'eDonusum::ReceiverPKS' | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxReceiverPKSInstance [dataSource]=\"despatchReceiverPKDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [width]=\"80\" cellTemplate=\"operationTemplate\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"selectPKAddress(row.data)\">\r\n <i class=\"fa fa-check\" aria-hidden=\"true\"></i> Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Adres\" caption=\"Adres\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i5.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i5.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i8.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i9.DxoColumnChooserComponent, selector: "dxo-column-chooser", inputs: ["allowSearch", "emptyPanelText", "enabled", "height", "mode", "searchTimeout", "sortOrder", "title", "width"] }, { kind: "component", type: i9.DxoColumnFixingComponent, selector: "dxo-column-fixing", inputs: ["enabled", "texts"] }, { kind: "component", type: i9.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i9.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i9.DxoLookupComponent, selector: "dxo-lookup", inputs: ["allowClearing", "calculateCellValue", "dataSource", "displayExpr", "valueExpr"] }, { kind: "component", type: i9.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i9.DxoFilterBuilderComponent, selector: "dxo-filter-builder", inputs: ["accessKey", "activeStateEnabled", "allowHierarchicalFields", "customOperations", "disabled", "elementAttr", "fields", "filterOperationDescriptions", "focusStateEnabled", "groupOperationDescriptions", "groupOperations", "height", "hint", "hoverStateEnabled", "maxGroupLevel", "onContentReady", "onDisposing", "onEditorPrepared", "onEditorPreparing", "onInitialized", "onOptionChanged", "onValueChanged", "rtlEnabled", "tabIndex", "value", "visible", "width"], outputs: ["valueChange"] }, { kind: "component", type: i9.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i9.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i9.DxoGroupingComponent, selector: "dxo-grouping", inputs: ["allowCollapsing", "autoExpandAll", "contextMenuEnabled", "expandMode", "texts"] }, { kind: "component", type: i9.DxoGroupPanelComponent, selector: "dxo-group-panel", inputs: ["allowColumnDragging", "emptyPanelText", "visible"], outputs: ["visibleChange"] }, { kind: "component", type: i9.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i9.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i9.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i9.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i9.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i10.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i11.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i11.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
239
|
+
HitDespatchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitDespatchComponent, deps: [{ token: i1.ListService }, { token: i2.HitDespatchService }, { token: i3.HitFileDocumentTypeService }, { token: i4.HitGibPartnerPkService }, { token: i5.HitDocumentSerialService }, { token: i6.ConfirmationService }, { token: i6.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
|
|
240
|
+
HitDespatchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitDespatchComponent, selector: "lib-despatch", providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "dxDespatchInstance", first: true, predicate: ["dxDespatchInstance"], descendants: true }, { propertyName: "dxDespatchFileInstance", first: true, predicate: ["dxDespatchFileInstance"], descendants: true }, { propertyName: "dxDespatchSerialInstance", first: true, predicate: ["dxDespatchSerialInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'eDonusum::Despatches' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <!-- <button\r\n class=\"btn btn-primary btn-sm mx-2\"\r\n type=\"button\"\r\n [disabled]=\"isExportToExcelBusy\"\r\n (click)=\"exportToExcel()\"\r\n >\r\n {{ 'eDonusum::ExportToExcel' | abpLocalization }}\r\n </button>\r\n -->\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendDespatchMultiple()\">\r\n <i class=\"fa fa-envelope me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::AddToQueue' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"getDespatchResponses()\">\r\n <i class=\"fa fa-question me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::CheckResponses' | abpLocalization }}\r\n </button>\r\n <!-- <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendInvoiceToEntegrator()\">\r\n <i class=\"fa fa-envelope me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::SendToEntegratorManual' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-warning\" type=\"button\"\r\n (click)=\"getInvoicesFromConnector()\">\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::GetFromConnectorManual' | abpLocalization }}\r\n </button> -->\r\n\r\n </div>\r\n </abp-page-toolbar-container>\r\n <p>G\u00F6nderimi tamamlanan ve g\u00F6nderilmesi beklenen irsaliyeleri listeleyen ekran</p>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchInstance [dataSource]=\"despatchesDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\" style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\" [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\" showCheckBoxesMode=\"always\">\r\n </dxo-selection>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <!-- <button ngbDropdownItem (click)=\"update(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"delete(row.data)\">\r\n <i class=\"fa fa-trash\" aria-hidden=\"true\"></i> {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button> -->\r\n <button ngbDropdownItem (click)=\"sendDespatchSingle(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-envelope\" aria-hidden=\"true\"></i> {{ 'eDonusum::AddToQueue' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setDespatchCancelWithOpen(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithOpen' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setDespatchCancelWithRevise(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithRevise' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listDespatchReceiverPK(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-pencil\" aria-hidden=\"true\"></i> {{ 'eDonusum::SelectReceiverPK' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listActiveSeries(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-tasks\" aria-hidden=\"true\"></i> {{ 'eDonusum::SelectSerialForDocument' |\r\n abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchView(row.data)\"\r\n *ngIf=\"row.data.status == 300 || row.data.status == 340 || row.data.status == 380 || row.data.status == 700\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i> {{ 'eDonusum::GetPDFView' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchPreview(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::Preview' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchXML(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::PreviewXML' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"showAllFiles(row.data)\"\r\n *ngIf=\"row.data.status == 300 || row.data.status == 340 || row.data.status == 380 || row.data.status == 700\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::ShowAllFiles' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getReceiptAdvicePreview(row.data)\" *ngIf=\"row.data.status == 700\">\r\n <i class=\"fa fa-envelope\" aria-hidden=\"true\"></i> {{ 'eDonusum::ShowResponse' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"issueDate\" dataType=\"date\"\r\n caption=\"{{'eDonusum::IssueDate'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"resourceDocEntry\"\r\n caption=\"{{'eDonusum::ResourceDocEntry'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"despatchId\" caption=\"{{'eDonusum::DespatchId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column cellTemplate=\"docTypeTemplate\" dataField=\"resourceDocType\"\r\n caption=\"{{'eDonusum::ResourceDocType'|abpLocalization}}\">\r\n </dxi-column>\r\n <div *dxTemplate=\"let data of 'docTypeTemplate'\">\r\n {{getDocObjectName(data.data)}}\r\n </div>\r\n <dxi-column dataField=\"deliveryCustomerPartyName\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyName'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"deliveryCustomerPartyVknTckn\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyVknTckn'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"status\" caption=\"{{'eDonusum::Status'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"despatchStatusLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"profileId\" caption=\"{{'eDonusum::DespatchProfileId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"despatchAdviceTypeCode\"\r\n caption=\"{{'eDonusum::DespatchAdviceTypeCode'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"receiverResponse\" caption=\"{{'eDonusum::ReceiverResponse'|abpLocalization}}\"\r\n cellTemplate=\"iconTemplate\">\r\n <dxo-lookup [dataSource]=\"despatchReceiverResponseLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <div *dxTemplate=\"let data of 'iconTemplate'\">\r\n <i [ngClass]=\"getIconClass(data.data.receiverResponse)\"\r\n [ngStyle]=\"{'color':data.data.receiverResponse == '1' ? 'green' : data.data.receiverResponse == '2' ? 'red' : data.data.receiverResponse == '3' ? 'orange' : 'gray'}\"></i>\r\n {{getReceiverResponseName(data.data.receiverResponse)}}\r\n\r\n </div>\r\n\r\n <dxi-column dataField=\"receiverResponseDesc\"\r\n caption=\"{{'eDonusum::ReceiverResponseDesc'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"documentCurrencyCode\" caption=\"{{'eDonusum::DocCurrency'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedReceiverPK\" dataType=\"date\"\r\n caption=\"{{'eDonusum::SelectedReceiverPK'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedDespatchSerial\"\r\n caption=\"{{'eDonusum::SelectedDespatchSerial'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"uuId\" caption=\"{{'eDonusum::UuId'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isFileModalBusy\" [(visible)]=\"isFileModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ 'eDonusum::DespatchFiles' | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchFileInstance [dataSource]=\"despatchFilesDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem (click)=\"DownloadFile(row.data)\">\r\n <i class=\"fa fa-download\" aria-hidden=\"true\"></i> {{ 'eDonusum::Download' | abpLocalization\r\n }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column [allowEditing]=\"false\" dataField=\"extraItem\" caption=\"{{'eDonusum::Name'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"despatchFileNameLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-modal [busy]=\"isSerialModalBusy\" [(visible)]=\"isSerialModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n Belge Seri Se\u00E7imi\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchSerialInstance [dataSource]=\"despatchSerialDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [width]=\"80\" cellTemplate=\"operationTemplate\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"selectDespatchSerial(row.data)\">\r\n <i class=\"fa fa-check\" aria-hidden=\"true\"></i> Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Seri\" caption=\"Seri\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-modal [busy]=\"isPKModalBusy\" [(visible)]=\"isPKModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{pkModalSelectedDespatchResourceDocEntry}} {{ 'eDonusum::ReceiverPKS' | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxReceiverPKSInstance [dataSource]=\"despatchReceiverPKDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [width]=\"80\" cellTemplate=\"operationTemplate\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"selectPKAddress(row.data)\">\r\n <i class=\"fa fa-check\" aria-hidden=\"true\"></i> Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Adres\" caption=\"Adres\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>", dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i8.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i8.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i8.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i8.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i9.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i10.DxoColumnChooserComponent, selector: "dxo-column-chooser", inputs: ["allowSearch", "emptyPanelText", "enabled", "height", "mode", "searchTimeout", "sortOrder", "title", "width"] }, { kind: "component", type: i10.DxoColumnFixingComponent, selector: "dxo-column-fixing", inputs: ["enabled", "texts"] }, { kind: "component", type: i10.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i10.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i10.DxoLookupComponent, selector: "dxo-lookup", inputs: ["allowClearing", "calculateCellValue", "dataSource", "displayExpr", "valueExpr"] }, { kind: "component", type: i10.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i10.DxoFilterBuilderComponent, selector: "dxo-filter-builder", inputs: ["accessKey", "activeStateEnabled", "allowHierarchicalFields", "customOperations", "disabled", "elementAttr", "fields", "filterOperationDescriptions", "focusStateEnabled", "groupOperationDescriptions", "groupOperations", "height", "hint", "hoverStateEnabled", "maxGroupLevel", "onContentReady", "onDisposing", "onEditorPrepared", "onEditorPreparing", "onInitialized", "onOptionChanged", "onValueChanged", "rtlEnabled", "tabIndex", "value", "visible", "width"], outputs: ["valueChange"] }, { kind: "component", type: i10.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i10.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i10.DxoGroupingComponent, selector: "dxo-grouping", inputs: ["allowCollapsing", "autoExpandAll", "contextMenuEnabled", "expandMode", "texts"] }, { kind: "component", type: i10.DxoGroupPanelComponent, selector: "dxo-group-panel", inputs: ["allowColumnDragging", "emptyPanelText", "visible"], outputs: ["visibleChange"] }, { kind: "component", type: i10.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i10.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i10.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i10.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i10.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i11.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i12.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i12.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
170
241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitDespatchComponent, decorators: [{
|
|
171
242
|
type: Component,
|
|
172
|
-
args: [{ selector: 'lib-despatch', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [title]=\"'eDonusum::Despatches' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <!-- <button\r\n class=\"btn btn-primary btn-sm mx-2\"\r\n type=\"button\"\r\n [disabled]=\"isExportToExcelBusy\"\r\n (click)=\"exportToExcel()\"\r\n >\r\n {{ 'eDonusum::ExportToExcel' | abpLocalization }}\r\n </button>\r\n -->\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendDespatchMultiple()\">\r\n <i class=\"fa fa-envelope me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::AddToQueue' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"getDespatchResponses()\">\r\n <i class=\"fa fa-question me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::CheckResponses' | abpLocalization }}\r\n </button>\r\n <!-- <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendInvoiceToEntegrator()\">\r\n <i class=\"fa fa-envelope me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::SendToEntegratorManual' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-warning\" type=\"button\"\r\n (click)=\"getInvoicesFromConnector()\">\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::GetFromConnectorManual' | abpLocalization }}\r\n </button> -->\r\n\r\n </div>\r\n </abp-page-toolbar-container>\r\n <p>G\u00F6nderimi tamamlanan ve g\u00F6nderilmesi beklenen irsaliyeleri listeleyen ekran</p>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchInstance [dataSource]=\"despatchesDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\" style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\" [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\" showCheckBoxesMode=\"always\">\r\n </dxo-selection>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <!-- <button ngbDropdownItem (click)=\"update(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"delete(row.data)\">\r\n <i class=\"fa fa-trash\" aria-hidden=\"true\"></i> {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button> -->\r\n <button ngbDropdownItem (click)=\"sendDespatchSingle(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-envelope\" aria-hidden=\"true\"></i> {{ 'eDonusum::AddToQueue' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setDespatchCancelWithOpen(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithOpen' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setDespatchCancelWithRevise(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithRevise' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listDespatchReceiverPK(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-pencil\" aria-hidden=\"true\"></i> {{ 'eDonusum::SelectReceiverPK' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchView(row.data)\" *ngIf=\"row.data.status == 300 || row.data.status == 340 || row.data.status == 380 || row.data.status == 700\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i> {{ 'eDonusum::GetPDFView' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchPreview(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::Preview' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchXML(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::PreviewXML' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"showAllFiles(row.data)\"\r\n *ngIf=\"row.data.status == 300 || row.data.status == 340 || row.data.status == 380 || row.data.status == 700\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::ShowAllFiles' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getReceiptAdvicePreview(row.data)\" *ngIf=\"row.data.status == 700\">\r\n <i class=\"fa fa-envelope\" aria-hidden=\"true\"></i> {{ 'eDonusum::ShowResponse' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"issueDate\" dataType=\"date\"\r\n caption=\"{{'eDonusum::IssueDate'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"resourceDocEntry\"\r\n caption=\"{{'eDonusum::ResourceDocEntry'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"despatchId\" caption=\"{{'eDonusum::DespatchId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column cellTemplate=\"docTypeTemplate\" dataField=\"resourceDocType\"\r\n caption=\"{{'eDonusum::ResourceDocType'|abpLocalization}}\">\r\n </dxi-column>\r\n <div *dxTemplate=\"let data of 'docTypeTemplate'\">\r\n {{getDocObjectName(data.data)}}\r\n </div>\r\n <dxi-column dataField=\"deliveryCustomerPartyName\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyName'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"deliveryCustomerPartyVknTckn\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyVknTckn'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"status\" caption=\"{{'eDonusum::Status'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"despatchStatusLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"profileId\" caption=\"{{'eDonusum::DespatchProfileId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"despatchAdviceTypeCode\"\r\n caption=\"{{'eDonusum::DespatchAdviceTypeCode'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"receiverResponse\" caption=\"{{'eDonusum::ReceiverResponse'|abpLocalization}}\"\r\n cellTemplate=\"iconTemplate\">\r\n <dxo-lookup [dataSource]=\"despatchReceiverResponseLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <div *dxTemplate=\"let data of 'iconTemplate'\">\r\n <i [ngClass]=\"getIconClass(data.data.receiverResponse)\"\r\n [ngStyle]=\"{'color':data.data.receiverResponse == '1' ? 'green' : data.data.receiverResponse == '2' ? 'red' : data.data.receiverResponse == '3' ? 'orange' : 'gray'}\"></i>\r\n {{getReceiverResponseName(data.data.receiverResponse)}}\r\n\r\n </div>\r\n\r\n <dxi-column dataField=\"receiverResponseDesc\"\r\n caption=\"{{'eDonusum::ReceiverResponseDesc'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"documentCurrencyCode\" caption=\"{{'eDonusum::DocCurrency'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedReceiverPK\" dataType=\"date\"\r\n caption=\"{{'eDonusum::SelectedReceiverPK'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"uuId\" caption=\"{{'eDonusum::UuId'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isFileModalBusy\" [(visible)]=\"isFileModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ 'eDonusum::DespatchFiles' | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchFileInstance [dataSource]=\"despatchFilesDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem (click)=\"DownloadFile(row.data)\">\r\n <i class=\"fa fa-download\" aria-hidden=\"true\"></i> {{ 'eDonusum::Download' | abpLocalization\r\n }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column [allowEditing]=\"false\" dataField=\"extraItem\" caption=\"{{'eDonusum::Name'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"despatchFileNameLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n<abp-modal [busy]=\"isPKModalBusy\" [(visible)]=\"isPKModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{pkModalSelectedDespatchResourceDocEntry}} {{ 'eDonusum::ReceiverPKS' | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxReceiverPKSInstance [dataSource]=\"despatchReceiverPKDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [width]=\"80\" cellTemplate=\"operationTemplate\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"selectPKAddress(row.data)\">\r\n <i class=\"fa fa-check\" aria-hidden=\"true\"></i> Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Adres\" caption=\"Adres\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n" }]
|
|
173
|
-
}], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.HitDespatchService }, { type: i3.HitFileDocumentTypeService }, { type: i4.HitGibPartnerPkService }, { type: i5.ToasterService }]; }, propDecorators: { dxDespatchInstance: [{
|
|
243
|
+
args: [{ selector: 'lib-despatch', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [title]=\"'eDonusum::Despatches' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <!-- <button\r\n class=\"btn btn-primary btn-sm mx-2\"\r\n type=\"button\"\r\n [disabled]=\"isExportToExcelBusy\"\r\n (click)=\"exportToExcel()\"\r\n >\r\n {{ 'eDonusum::ExportToExcel' | abpLocalization }}\r\n </button>\r\n -->\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendDespatchMultiple()\">\r\n <i class=\"fa fa-envelope me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::AddToQueue' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"getDespatchResponses()\">\r\n <i class=\"fa fa-question me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::CheckResponses' | abpLocalization }}\r\n </button>\r\n <!-- <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendInvoiceToEntegrator()\">\r\n <i class=\"fa fa-envelope me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::SendToEntegratorManual' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Despatches.Create'\" class=\"btn btn-xs btn-warning\" type=\"button\"\r\n (click)=\"getInvoicesFromConnector()\">\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::GetFromConnectorManual' | abpLocalization }}\r\n </button> -->\r\n\r\n </div>\r\n </abp-page-toolbar-container>\r\n <p>G\u00F6nderimi tamamlanan ve g\u00F6nderilmesi beklenen irsaliyeleri listeleyen ekran</p>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchInstance [dataSource]=\"despatchesDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\" style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\" [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\" showCheckBoxesMode=\"always\">\r\n </dxo-selection>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <!-- <button ngbDropdownItem (click)=\"update(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"delete(row.data)\">\r\n <i class=\"fa fa-trash\" aria-hidden=\"true\"></i> {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button> -->\r\n <button ngbDropdownItem (click)=\"sendDespatchSingle(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-envelope\" aria-hidden=\"true\"></i> {{ 'eDonusum::AddToQueue' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setDespatchCancelWithOpen(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithOpen' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setDespatchCancelWithRevise(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithRevise' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listDespatchReceiverPK(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-pencil\" aria-hidden=\"true\"></i> {{ 'eDonusum::SelectReceiverPK' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listActiveSeries(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-tasks\" aria-hidden=\"true\"></i> {{ 'eDonusum::SelectSerialForDocument' |\r\n abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchView(row.data)\"\r\n *ngIf=\"row.data.status == 300 || row.data.status == 340 || row.data.status == 380 || row.data.status == 700\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i> {{ 'eDonusum::GetPDFView' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchPreview(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::Preview' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getDespatchXML(row.data)\" *ngIf=\"row.data.status == 100\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::PreviewXML' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"showAllFiles(row.data)\"\r\n *ngIf=\"row.data.status == 300 || row.data.status == 340 || row.data.status == 380 || row.data.status == 700\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::ShowAllFiles' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getReceiptAdvicePreview(row.data)\" *ngIf=\"row.data.status == 700\">\r\n <i class=\"fa fa-envelope\" aria-hidden=\"true\"></i> {{ 'eDonusum::ShowResponse' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"issueDate\" dataType=\"date\"\r\n caption=\"{{'eDonusum::IssueDate'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"resourceDocEntry\"\r\n caption=\"{{'eDonusum::ResourceDocEntry'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"despatchId\" caption=\"{{'eDonusum::DespatchId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column cellTemplate=\"docTypeTemplate\" dataField=\"resourceDocType\"\r\n caption=\"{{'eDonusum::ResourceDocType'|abpLocalization}}\">\r\n </dxi-column>\r\n <div *dxTemplate=\"let data of 'docTypeTemplate'\">\r\n {{getDocObjectName(data.data)}}\r\n </div>\r\n <dxi-column dataField=\"deliveryCustomerPartyName\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyName'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"deliveryCustomerPartyVknTckn\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyVknTckn'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"status\" caption=\"{{'eDonusum::Status'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"despatchStatusLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"profileId\" caption=\"{{'eDonusum::DespatchProfileId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"despatchAdviceTypeCode\"\r\n caption=\"{{'eDonusum::DespatchAdviceTypeCode'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"receiverResponse\" caption=\"{{'eDonusum::ReceiverResponse'|abpLocalization}}\"\r\n cellTemplate=\"iconTemplate\">\r\n <dxo-lookup [dataSource]=\"despatchReceiverResponseLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <div *dxTemplate=\"let data of 'iconTemplate'\">\r\n <i [ngClass]=\"getIconClass(data.data.receiverResponse)\"\r\n [ngStyle]=\"{'color':data.data.receiverResponse == '1' ? 'green' : data.data.receiverResponse == '2' ? 'red' : data.data.receiverResponse == '3' ? 'orange' : 'gray'}\"></i>\r\n {{getReceiverResponseName(data.data.receiverResponse)}}\r\n\r\n </div>\r\n\r\n <dxi-column dataField=\"receiverResponseDesc\"\r\n caption=\"{{'eDonusum::ReceiverResponseDesc'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"documentCurrencyCode\" caption=\"{{'eDonusum::DocCurrency'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedReceiverPK\" dataType=\"date\"\r\n caption=\"{{'eDonusum::SelectedReceiverPK'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedDespatchSerial\"\r\n caption=\"{{'eDonusum::SelectedDespatchSerial'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"uuId\" caption=\"{{'eDonusum::UuId'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isFileModalBusy\" [(visible)]=\"isFileModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ 'eDonusum::DespatchFiles' | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchFileInstance [dataSource]=\"despatchFilesDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem (click)=\"DownloadFile(row.data)\">\r\n <i class=\"fa fa-download\" aria-hidden=\"true\"></i> {{ 'eDonusum::Download' | abpLocalization\r\n }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column [allowEditing]=\"false\" dataField=\"extraItem\" caption=\"{{'eDonusum::Name'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"despatchFileNameLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-modal [busy]=\"isSerialModalBusy\" [(visible)]=\"isSerialModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n Belge Seri Se\u00E7imi\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxDespatchSerialInstance [dataSource]=\"despatchSerialDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [width]=\"80\" cellTemplate=\"operationTemplate\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"selectDespatchSerial(row.data)\">\r\n <i class=\"fa fa-check\" aria-hidden=\"true\"></i> Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Seri\" caption=\"Seri\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-modal [busy]=\"isPKModalBusy\" [(visible)]=\"isPKModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{pkModalSelectedDespatchResourceDocEntry}} {{ 'eDonusum::ReceiverPKS' | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxReceiverPKSInstance [dataSource]=\"despatchReceiverPKDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"false\" [rowAlternationEnabled]=\"true\"\r\n style=\"height: 50vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [width]=\"80\" cellTemplate=\"operationTemplate\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"selectPKAddress(row.data)\">\r\n <i class=\"fa fa-check\" aria-hidden=\"true\"></i> Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Adres\" caption=\"Adres\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>" }]
|
|
244
|
+
}], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.HitDespatchService }, { type: i3.HitFileDocumentTypeService }, { type: i4.HitGibPartnerPkService }, { type: i5.HitDocumentSerialService }, { type: i6.ConfirmationService }, { type: i6.ToasterService }]; }, propDecorators: { dxDespatchInstance: [{
|
|
174
245
|
type: ViewChild,
|
|
175
246
|
args: ['dxDespatchInstance', { static: false }]
|
|
176
247
|
}], dxDespatchFileInstance: [{
|
|
177
248
|
type: ViewChild,
|
|
178
249
|
args: ['dxDespatchFileInstance', { static: false }]
|
|
250
|
+
}], dxDespatchSerialInstance: [{
|
|
251
|
+
type: ViewChild,
|
|
252
|
+
args: ['dxDespatchSerialInstance', { static: false }]
|
|
179
253
|
}] } });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUMsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBNkMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWM1RCxNQUFNLE9BQU8sb0JBQW9CO0lBcUI3QixZQUNvQixJQUFpQixFQUNqQixPQUEyQixFQUMxQix1QkFBbUQsRUFDbkQsbUJBQTJDLEVBQzNDLGNBQThCO1FBSi9CLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDMUIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQUNuRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWJuRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixrQkFBYSxHQUFHLEtBQUssQ0FBQztJQVVsQixDQUFDO0lBQ0wsUUFBUTtRQUNKLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJ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LE1BQU0sTUFBTSxHQUFHLHlCQUF5QixRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUE7WUFDakMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixNQUFNLDZEQUE2RCxDQUFDO1FBQ3pILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7aUhBckxRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHVDQUpsQixDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLHVRQ2JoRiw0M2ZBa1FBOzJGRGpQYSxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0ksY0FBYyxtQkFDUCx1QkFBdUIsQ0FBQyxPQUFPLGFBQ3JDLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7OE9BS3hCLGtCQUFrQjtzQkFBckUsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ00sc0JBQXNCO3NCQUE3RSxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgaXNOdWxsT3JFbXB0eSwgaXNOdWxsT3JVbmRlZmluZWQsIExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0byB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBIaXREZXNwYXRjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRGaWxlRG9jdW1lbnRUeXBlU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsZS1kb2N1bWVudC10eXBlL2hpdC1maWxlLWRvY3VtZW50LXR5cGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBIaXRHaWJQYXJ0bmVyUGtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1naWItcGFydG5lci1wa3MvaGl0LWdpYi1wYXJ0bmVyLXBrLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1kZXNwYXRjaCcsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgICBwcm92aWRlcnM6IFtMaXN0U2VydmljZSwgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hpdC1kZXNwYXRjaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0RGVzcGF0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcbiAgICBAVmlld0NoaWxkKCdkeERlc3BhdGNoSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhEZXNwYXRjaEluc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeERlc3BhdGNoRmlsZUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4RGVzcGF0Y2hGaWxlSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuXHJcbiAgICBkZXNwYXRjaGVzRGF0YVNvdXJjZTogYW55XHJcbiAgICBkZXNwYXRjaFN0YXR1c0xvb2t1cDogYW55XHJcbiAgICBkZXNwYXRjaFJlY2VpdmVyUmVzcG9uc2VMb29rdXA6IGFueVxyXG4gICAgZGVzcGF0Y2hPYmplY3RzRW51bUxvb2t1cDogYW55XHJcbiAgICBkZXNwYXRjaFJlY2VpdmVyUEtEYXRhU291cmNlOiBhbnlcclxuXHJcbiAgICBkZXNwYXRjaEZpbGVOYW1lTG9va3VwOiBhbnlcclxuICAgIGRlc3BhdGNoRmlsZXNEYXRhU291cmNlOiBhbnlcclxuXHJcbiAgICBpc0ZpbGVNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgIGlzRmlsZU1vZGFsQnVzeSA9IGZhbHNlO1xyXG5cclxuICAgIGlzUEtNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgIGlzUEtNb2RhbEJ1c3kgPSBmYWxzZTtcclxuICAgIHBrTW9kYWxTZWxlY3RlZERlc3BhdGNoSWQ6IGFueTtcclxuICAgIHBrTW9kYWxTZWxlY3RlZERlc3BhdGNoUmVzb3VyY2VEb2NFbnRyeTogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogSGl0RGVzcGF0Y2hTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsZURvY3VtZW50VHlwZVNlcnZpY2U6IEhpdEZpbGVEb2N1bWVudFR5cGVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ2liUGFydG5lclBrU2VydmljZTogSGl0R2liUGFydG5lclBrU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgICkgeyB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlc3BhdGNoZXNEYXRhU291cmNlID0gdGhpcy5zZXJ2aWNlLkxvYWREZXNwYXRjaGVzO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRTdGF0dXNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaFN0YXR1c0xvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFJlY2VpdmVyUmVzcG9uc2VzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRlc3BhdGNoUmVjZWl2ZXJSZXNwb25zZUxvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0U2FwT2JqZWN0cygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaE9iamVjdHNFbnVtTG9va3VwID0gbGlzdDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZmlsZURvY3VtZW50VHlwZVNlcnZpY2UuZ2V0RmlsZURvY3VtZW50VHlwZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICB0aGlzLmRlc3BhdGNoRmlsZU5hbWVMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc2VuZERlc3BhdGNoU2luZ2xlKHJlY29yZCkge1xyXG4gICAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW3JlY29yZC5pZF07XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbmREZXNwYXRjaEJ5SWQoaWRzKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kRGVzcGF0Y2hNdWx0aXBsZSgpIHtcclxuICAgICAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZHMucHVzaChlbGVtZW50LmRhdGEuaWQpXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbmREZXNwYXRjaEJ5SWQoaWRzKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpKTtcclxuICAgIH1cclxuICAgIHNldERlc3BhdGNoQ2FuY2VsV2l0aE9wZW4ocmVjb3JkKSB7XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5zZXREZXNwYXRjaENhbmNlbEJ5SWQocmVjb3JkLmlkLCAxKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKFwiQmVsZ2UgYmHFn2FyxLF5bGEgaXB0YWxlIMOnZWtpbGVyZWssIGtheW5ha3RhIGfDvG5jZWxsZW5kaS5cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVzcGF0Y2hDYW5jZWxXaXRoUmV2aXNlKHJlY29yZCkge1xyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0RGVzcGF0Y2hDYW5jZWxCeUlkKHJlY29yZC5pZCwgNikuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhcIkJlbGdlIGJhxZ9hcsSxeWxhIGlwdGFsZSDDp2VraWxlcmVrLCBrYXluYWt0YSBnw7xuY2VsbGVuZGkuXCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxpc3REZXNwYXRjaFJlY2VpdmVyUEsocmVjb3JkKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5naWJQYXJ0bmVyUGtTZXJ2aWNlLkdldEN1c3RvbWVyQWN0aXZlUEtTKHJlY29yZC5kZWxpdmVyeUN1c3RvbWVyUGFydHlWa25UY2tuLCAyKS5zdWJzY3JpYmUocGtzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaFJlY2VpdmVyUEtEYXRhU291cmNlID0gcGtzLm1hcChpdGVtID0+ICh7IEFkcmVzOiBpdGVtIH0pKTs7XHJcbiAgICAgICAgICAgIHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCA9IHJlY29yZC5pZDtcclxuICAgICAgICAgICAgdGhpcy5wa01vZGFsU2VsZWN0ZWREZXNwYXRjaFJlc291cmNlRG9jRW50cnkgPSByZWNvcmQucmVzb3VyY2VEb2NFbnRyeTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuaXNQS01vZGFsT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBzZWxlY3RQS0FkZHJlc3MocmVjb3JkKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVjb3JkLkFkcmVzLCB0aGlzLnBrTW9kYWxTZWxlY3RlZERlc3BhdGNoSWQsIHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hSZXNvdXJjZURvY0VudHJ5KVxyXG4gICAgICAgIHRoaXMuc2VydmljZS51cGRhdGVEZXNwYXRjaFJlY2VpdmVyKHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCwgcmVjb3JkLkFkcmVzKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzUEtNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIGdldERlc3BhdGNoUHJldmlldyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0RGVzcGF0Y2hQcmV2aWV3KHJlY29yZC5pZCxyZWNvcmQucmVzb3VyY2VEb2NUeXBlKS5zdWJzY3JpYmUoZmF0dXJhID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYGRhdGE6dGV4dC9odG1sO2Jhc2U2NCwke2ZhdHVyYS5wcmV2aWV3SFRNTH1gO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdUYWIgPSB3aW5kb3cub3BlbigpO1xyXG4gICAgICAgICAgICBuZXdUYWIuZG9jdW1lbnQudGl0bGUgPSByZWNvcmQuaWRcclxuICAgICAgICAgICAgbmV3VGFiLmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gYDxpZnJhbWUgc3JjPVwiJHtzb3VyY2V9XCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHN0eWxlPVwiYm9yZGVyOm5vbmU7XCI+PC9pZnJhbWU+YDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGdldERlc3BhdGNoWE1MKHJlY29yZCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXREZXNwYXRjaFhNTChyZWNvcmQuaWQsIHJlY29yZC5yZXNvdXJjZURvY1R5cGUpLnN1YnNjcmliZShpcnNhbGl5ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOiR7aXJzYWxpeWUubWltZVR5cGV9O2Jhc2U2NCwke2lyc2FsaXllLmNvbnRlbnR9YDtcclxuICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgbGluay5ocmVmID0gc291cmNlO1xyXG4gICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gYCR7aXJzYWxpeWUuZmlsZW5hbWV9YDtcclxuICAgICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERvY09iamVjdE5hbWUoZGF0YSkge1xyXG4gICAgICAgIHJldHVybiAoKGRhdGEuaXNEcmFmdCA/IFwiVGFzbGFrIFwiIDogXCJcIikgKyB0aGlzLmRlc3BhdGNoT2JqZWN0c0VudW1Mb29rdXAuZmluZCgoeCkgPT4geC5pZCA9PSAoZGF0YS5pc0RyYWZ0ID8gZGF0YS5yZXNvdXJjZVN1YkRvY1R5cGUgOiBkYXRhLnJlc291cmNlRG9jVHlwZSkpLmRpc3BsYXlOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJY29uQ2xhc3MocmVzcG9uc2VJZCkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZUlkID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiZmFzIGZhLWNsb2NrXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlSWQgPT0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtY2hlY2stY2lyY2xlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlSWQgPT0gMikge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtdGltZXMtY2lyY2xlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYocmVzcG9uc2VJZCA9PSAzKXtcclxuICAgICAgICAgICAgcmV0dXJuIFwiZmFzIGZhLW1pbnVzLWNpcmNsZVwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERlc3BhdGNoVmlldyhyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0RGVzcGF0Y2hWaWV3KHJlY29yZC51dUlkKS5zdWJzY3JpYmUoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOiR7aXRlbS5taW1lVHlwZX07YmFzZTY0LCR7aXRlbS5jb250ZW50fWA7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHNvdXJjZTtcclxuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGAke2l0ZW0uZmlsZW5hbWV9YDtcclxuICAgICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERlc3BhdGNoUmVzcG9uc2VzKCkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXREZXNwYXRjaFJlc3BvbnNlcyhuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgICAgIHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKVxyXG4gICAgICAgIH0pICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGdldFJlY2VpdmVyUmVzcG9uc2VOYW1lKHJlc3BvbnNlSWQpIHtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuZGVzcGF0Y2hSZWNlaXZlclJlc3BvbnNlTG9va3VwLmZpbmQoKHgpID0+IHguaWQgPT09IHJlc3BvbnNlSWQpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGlzcGxheU5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dBbGxGaWxlcyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLmRlc3BhdGNoRmlsZXNEYXRhU291cmNlID0gdGhpcy5zZXJ2aWNlLkxvYWREZXNwYXRjaEZpbGVzKHJlY29yZC51dUlkKVxyXG4gICAgICAgIHRoaXMuaXNGaWxlTW9kYWxPcGVuID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBEb3dubG9hZEZpbGUocmVjb3JkKXtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZG93bmxvYWRGaWxlQnlJZChyZWNvcmQuY29udGVudE1hc3RlcklkKS5zdWJzY3JpYmUoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOiR7aXRlbS5taW1lVHlwZX07YmFzZTY0LCR7aXRlbS5jb250ZW50fWA7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHNvdXJjZTtcclxuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGAke2l0ZW0uZmlsZW5hbWV9YDtcclxuICAgICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJlY2VpcHRBZHZpY2VQcmV2aWV3KHJlY29yZCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRSZWNlaXB0QWR2aWNlUHJldmlldyhyZWNvcmQuaWQsKS5zdWJzY3JpYmUoZGVzcGF0Y2ggPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YTp0ZXh0L2h0bWw7YmFzZTY0LCR7ZGVzcGF0Y2gucHJldmlld0hUTUx9YDtcclxuICAgICAgICAgICAgY29uc3QgbmV3VGFiID0gd2luZG93Lm9wZW4oKTtcclxuICAgICAgICAgICAgbmV3VGFiLmRvY3VtZW50LnRpdGxlID0gcmVjb3JkLmlkXHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IGA8aWZyYW1lIHNyYz1cIiR7c291cmNlfVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBzdHlsZT1cImJvcmRlcjpub25lO1wiPjwvaWZyYW1lPmA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidlRG9udXN1bTo6RGVzcGF0Y2hlcycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbXgtMlwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFeHBvcnRUb0V4Y2VsQnVzeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRUb0V4Y2VsKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyAnZURvbnVzdW06OkV4cG9ydFRvRXhjZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAtLT5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5EZXNwYXRjaGVzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJzZW5kRGVzcGF0Y2hNdWx0aXBsZSgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZSBtZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgIHt7ICdlRG9udXN1bTo6QWRkVG9RdWV1ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uRGVzcGF0Y2hlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1zdWNjZXNzXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwiZ2V0RGVzcGF0Y2hSZXNwb25zZXMoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcXVlc3Rpb24gbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkNoZWNrUmVzcG9uc2VzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPCEtLSA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkRlc3BhdGNoZXMuQ3JlYXRlJ1wiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tc3VjY2Vzc1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cInNlbmRJbnZvaWNlVG9FbnRlZ3JhdG9yKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpTZW5kVG9FbnRlZ3JhdG9yTWFudWFsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5EZXNwYXRjaGVzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4teHMgYnRuLXdhcm5pbmdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwiZ2V0SW52b2ljZXNGcm9tQ29ubmVjdG9yKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkdldEZyb21Db25uZWN0b3JNYW51YWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG4gICAgICAgICAgPHA+R8O2bmRlcmltaSB0YW1hbWxhbmFuIHZlIGfDtm5kZXJpbG1lc2kgYmVrbGVuZW4gaXJzYWxpeWVsZXJpIGxpc3RlbGV5ZW4gZWtyYW48L3A+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgIDxkeC1kYXRhLWdyaWQgI2R4RGVzcGF0Y2hJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaGVzRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCJcclxuICAgICAgICBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIiBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCJcclxuICAgICAgICBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNzV2aDtcIj5cclxuICAgICAgICA8ZHhvLXBhZ2VyIFt2aXNpYmxlXT1cInRydWVcIiBbc2hvd0luZm9dPVwidHJ1ZVwiIFthbGxvd2VkUGFnZVNpemVzXT1cIls1MCwxMDAsMjAwXVwiIFtzaG93TmF2aWdhdGlvbkJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc2hvd1BhZ2VTaXplU2VsZWN0b3JdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHhvLXBhZ2VyPlxyXG4gICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCI1MFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwibXVsdGlwbGVcIiBzZWxlY3RBbGxNb2RlPVwicGFnZVwiIHNob3dDaGVja0JveGVzTW9kZT1cImFsd2F5c1wiPlxyXG4gICAgICAgIDwvZHhvLXNlbGVjdGlvbj5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1jaG9vc2VyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW2VuYWJsZWRdPVwidHJ1ZVwiIG1vZGU9XCJzZWxlY3RcIj48L2R4by1jb2x1bW4tY2hvb3Nlcj5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgPGR4by1ncm91cC1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uRHJhZ2dpbmddPVwidHJ1ZVwiPjwvZHhvLWdyb3VwLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tZ3JvdXBpbmcgI2V4cGFuZCBbYXV0b0V4cGFuZEFsbF09XCJmYWxzZVwiIFthbGxvd0NvbGxhcHNpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbY29udGV4dE1lbnVFbmFibGVkXT1cInRydWVcIj48L2R4by1ncm91cGluZz5cclxuICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgPGR4by1leHBvcnQgW2VuYWJsZWRdPVwidHJ1ZVwiIFthbGxvd0V4cG9ydFNlbGVjdGVkRGF0YV09XCJmYWxzZVwiPjwvZHhvLWV4cG9ydD5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgPGR4by1maWx0ZXItYnVpbGRlciBbYWxsb3dIaWVyYXJjaGljYWxGaWVsZHNdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1idWlsZGVyPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXBhbmVsIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcGFuZWw+XHJcbiAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBbZml4ZWRdPVwidHJ1ZVwiIGRhdGFGaWVsZD1cImlkXCIgd2lkdGg9XCIxMjBcIiBbYWxsb3dHcm91cGluZ109XCJmYWxzZVwiIFthbGxvd0ZpbHRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBbYWxsb3dIZWFkZXJGaWx0ZXJpbmddPVwiZmFsc2VcIiBbYWxsb3dIaWRpbmddPVwiZmFsc2VcIiBbYWxsb3dSZW9yZGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCIgY2FwdGlvbj1cInt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj5cclxuICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRJZENvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb2cgbXItMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInVwZGF0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJkZWxldGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJzZW5kRGVzcGF0Y2hTaW5nbGUocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6QWRkVG9RdWV1ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNldERlc3BhdGNoQ2FuY2VsV2l0aE9wZW4ocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2V0Q2FuY2VsV2l0aE9wZW4nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJzZXREZXNwYXRjaENhbmNlbFdpdGhSZXZpc2Uocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2V0Q2FuY2VsV2l0aFJldmlzZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImxpc3REZXNwYXRjaFJlY2VpdmVyUEsocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuY2lsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlNlbGVjdFJlY2VpdmVyUEsnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXREZXNwYXRjaFZpZXcocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMzAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSAzNDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDM4MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkdldFBERlZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXREZXNwYXRjaFByZXZpZXcocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlByZXZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXREZXNwYXRjaFhNTChyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6UHJldmlld1hNTCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNob3dBbGxGaWxlcyhyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAzMDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDM0MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gMzgwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3MDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2hvd0FsbEZpbGVzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZ2V0UmVjZWlwdEFkdmljZVByZXZpZXcocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gNzAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2hvd1Jlc3BvbnNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzc3VlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06Oklzc3VlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVzb3VyY2VEb2NFbnRyeVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRlc3BhdGNoSWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRlc3BhdGNoSWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGNlbGxUZW1wbGF0ZT1cImRvY1R5cGVUZW1wbGF0ZVwiIGRhdGFGaWVsZD1cInJlc291cmNlRG9jVHlwZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jVHlwZSd8YWJwTG9jYWxpemF0aW9ufX1cIj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdkb2NUeXBlVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICB7e2dldERvY09iamVjdE5hbWUoZGF0YS5kYXRhKX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGVsaXZlcnlDdXN0b21lclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdDdXN0b21lclBhcnR5TmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGVsaXZlcnlDdXN0b21lclBhcnR5VmtuVGNrblwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdDdXN0b21lclBhcnR5VmtuVGNrbid8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwic3RhdHVzXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTdGF0dXMnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaFN0YXR1c0xvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwcm9maWxlSWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRlc3BhdGNoUHJvZmlsZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkZXNwYXRjaEFkdmljZVR5cGVDb2RlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RGVzcGF0Y2hBZHZpY2VUeXBlQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVjZWl2ZXJSZXNwb25zZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVjZWl2ZXJSZXNwb25zZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgY2VsbFRlbXBsYXRlPVwiaWNvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaFJlY2VpdmVyUmVzcG9uc2VMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdpY29uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UpXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydjb2xvcic6ZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzEnID8gJ2dyZWVuJyA6IGRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09ICcyJyA/ICdyZWQnIDogZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzMnID8gJ29yYW5nZScgOiAnZ3JheSd9XCI+PC9pPlxyXG4gICAgICAgICAge3tnZXRSZWNlaXZlclJlc3BvbnNlTmFtZShkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSl9fVxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVjZWl2ZXJSZXNwb25zZURlc2NcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZWNlaXZlclJlc3BvbnNlRGVzYyd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jdW1lbnRDdXJyZW5jeUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0N1cnJlbmN5J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzZWxlY3RlZFJlY2VpdmVyUEtcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTZWxlY3RlZFJlY2VpdmVyUEsnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInV1SWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlV1SWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc0ZpbGVNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzRmlsZU1vZGFsT3BlblwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ2xnJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6RGVzcGF0Y2hGaWxlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4RGVzcGF0Y2hGaWxlSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiZGVzcGF0Y2hGaWxlc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFtmaXhlZF09XCJ0cnVlXCIgZGF0YUZpZWxkPVwiaWRcIiB3aWR0aD1cIjEyMFwiIFthbGxvd0dyb3VwaW5nXT1cImZhbHNlXCIgW2FsbG93RmlsdGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCIgY2FwdGlvbj1cInt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlIFtkaXNhYmxlZF09XCJkaXNhYmxlZElkQ29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJEb3dubG9hZEZpbGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1kb3dubG9hZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpEb3dubG9hZCcgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIiBkYXRhRmllbGQ9XCJleHRyYUl0ZW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06Ok5hbWUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImRlc3BhdGNoRmlsZU5hbWVMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzUEtNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzUEtNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7e3BrTW9kYWxTZWxlY3RlZERlc3BhdGNoUmVzb3VyY2VEb2NFbnRyeX19IHt7ICdlRG9udXN1bTo6UmVjZWl2ZXJQS1MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeFJlY2VpdmVyUEtTSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiZGVzcGF0Y2hSZWNlaXZlclBLRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cImZhbHNlXCIgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiPlxyXG4gICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gW3dpZHRoXT1cIjgwXCIgY2VsbFRlbXBsYXRlPVwib3BlcmF0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgKGNsaWNrKT1cInNlbGVjdFBLQWRkcmVzcyhyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IFNlw6dcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJBZHJlc1wiIGNhcHRpb249XCJBZHJlc1wiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbiJdfQ==
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxhQUFhLEVBQXFCLFdBQVcsRUFBa0IsTUFBTSxjQUFjLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZTVELE1BQU0sT0FBTyxvQkFBb0I7SUE0QjdCLFlBQ29CLElBQWlCLEVBQ2pCLE9BQTJCLEVBQzFCLHVCQUFtRCxFQUNuRCxtQkFBMkMsRUFDM0Msd0JBQWtELEVBQ2xELFlBQWlDLEVBQ2pDLGNBQThCO1FBTi9CLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDMUIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQUNuRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXBCbkQsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsa0JB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c051bGxPclVuZGVmaW5lZCwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRHhEYXRhR3JpZENvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7IEhpdERlc3BhdGNoU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZGVzcGF0Y2hlcy9oaXQtZGVzcGF0Y2guc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdEZpbGVEb2N1bWVudFR5cGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1maWxlLWRvY3VtZW50LXR5cGUvaGl0LWZpbGUtZG9jdW1lbnQtdHlwZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgSGl0R2liUGFydG5lclBrU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZ2liLXBhcnRuZXItcGtzL2hpdC1naWItcGFydG5lci1way5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0RG9jdW1lbnRTZXJpYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1kb2N1bWVudC1zZXJpYWxzL2hpdC1kb2N1bWVudC1zZXJpYWwuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWRlc3BhdGNoJyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICAgIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXREZXNwYXRjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkeERlc3BhdGNoSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhEZXNwYXRjaEluc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeERlc3BhdGNoRmlsZUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4RGVzcGF0Y2hGaWxlSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4RGVzcGF0Y2hTZXJpYWxJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeERlc3BhdGNoU2VyaWFsSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuXHJcbiAgICBkZXNwYXRjaGVzRGF0YVNvdXJjZTogYW55XHJcbiAgICBkZXNwYXRjaFN0YXR1c0xvb2t1cDogYW55XHJcbiAgICBkZXNwYXRjaFJlY2VpdmVyUmVzcG9uc2VMb29rdXA6IGFueVxyXG4gICAgZGVzcGF0Y2hPYmplY3RzRW51bUxvb2t1cDogYW55XHJcbiAgICBkZXNwYXRjaFJlY2VpdmVyUEtEYXRhU291cmNlOiBhbnlcclxuICAgIGRlc3BhdGNoU2VyaWFsRGF0YVNvdXJjZTogYW55XHJcblxyXG4gICAgZGVzcGF0Y2hGaWxlTmFtZUxvb2t1cDogYW55XHJcbiAgICBkZXNwYXRjaEZpbGVzRGF0YVNvdXJjZTogYW55XHJcblxyXG4gICAgaXNGaWxlTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgICBpc0ZpbGVNb2RhbEJ1c3kgPSBmYWxzZTtcclxuXHJcbiAgICBpc1BLTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgICBpc1BLTW9kYWxCdXN5ID0gZmFsc2U7XHJcbiAgICBwa01vZGFsU2VsZWN0ZWREZXNwYXRjaElkOiBhbnk7XHJcbiAgICBwa01vZGFsU2VsZWN0ZWREZXNwYXRjaFJlc291cmNlRG9jRW50cnk6IGFueTtcclxuXHJcbiAgICBpc1NlcmlhbE1vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgaXNTZXJpYWxNb2RhbEJ1c3kgPSBmYWxzZTtcclxuICAgIHNlcmlhbE1vZGFsU2VsZWN0ZWREZXNwYXRjaElkOiBhbnk7XHJcbiAgICBzZXJpYWxNb2RhbFNlbGVjdGVkRGVzcGF0Y2hSZXNvdXJjZURvY0VudHJ5OiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBIaXREZXNwYXRjaFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmaWxlRG9jdW1lbnRUeXBlU2VydmljZTogSGl0RmlsZURvY3VtZW50VHlwZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBnaWJQYXJ0bmVyUGtTZXJ2aWNlOiBIaXRHaWJQYXJ0bmVyUGtTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0RG9jdW1lbnRTZXJpYWxTZXJ2aWNlOiBIaXREb2N1bWVudFNlcmlhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXHJcbiAgICApIHsgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXNwYXRjaGVzRGF0YVNvdXJjZSA9IHRoaXMuc2VydmljZS5Mb2FkRGVzcGF0Y2hlcztcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0U3RhdHVzZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVzcGF0Y2hTdGF0dXNMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRSZWNlaXZlclJlc3BvbnNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaFJlY2VpdmVyUmVzcG9uc2VMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFNhcE9iamVjdHMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVzcGF0Y2hPYmplY3RzRW51bUxvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmZpbGVEb2N1bWVudFR5cGVTZXJ2aWNlLmdldEZpbGVEb2N1bWVudFR5cGVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaEZpbGVOYW1lTG9va3VwID0gbGlzdDtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHNlbmREZXNwYXRjaFNpbmdsZShyZWNvcmQpIHtcclxuICAgICAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFtyZWNvcmQuaWRdO1xyXG5cclxuICAgICAgICBpZiAoaXNOdWxsT3JFbXB0eShyZWNvcmQuc2VsZWN0ZWREZXNwYXRjaFNlcmlhbCkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25cclxuICAgICAgICAgICAgICAgIC5pbmZvKCdCZWxnZSBzZXJpIHNlw6dpbWkgeWFwxLFsbWFkxLHEn8SxIGnDp2luIGVudGVncmF0w7ZyZGUgYnVsdW5hbiB2YXJzYXnEsWxhbiBzZXJpeWxlIGfDtm5kZXJpbGVjZWt0aXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiY29uZmlybVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VuZERlc3BhdGNoQnlJZChpZHMpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKFwiSGVyaGFuZ2kgYmlyIGnFn2xlbSBnZXLDp2VrbGXFn3RpcmlsbWVkaS5cIik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZW5kRGVzcGF0Y2hCeUlkKGlkcykuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZW5kRGVzcGF0Y2hNdWx0aXBsZSgpIHtcclxuICAgICAgICBsZXQgaWRzOiBBcnJheTx7IGlkOiBzdHJpbmcsIHNlbGVjdGVkU2VyaWFsOiBzdHJpbmcgfT4gPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKS5maWx0ZXIoaSA9PiBpLmlzU2VsZWN0ZWQgPT0gdHJ1ZSkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGVsZW1lbnQuZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VyaWFsOiBlbGVtZW50LmRhdGEuc2VsZWN0ZWREZXNwYXRjaFNlcmlhbFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmIChpZHMuZmlsdGVyKHAgPT4gaXNOdWxsT3JFbXB0eShwLnNlbGVjdGVkU2VyaWFsKSkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgLmluZm8oJ1Nlcmkgc2XDp2ltaSB5YXDEsWxtYXlhbiBiZWxnZWxlciBpw6dpbiBlbnRlZ3JhdMO2cmRlIGJ1bHVuYW4gdmFyc2F5xLFsYW4gc2VyaXlsZSBnw7ZuZGVyaW0geWFwxLFsYWNha3TEsXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiY29uZmlybVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VuZERlc3BhdGNoQnlJZChpZHMubWFwKHAgPT4gcC5pZCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKFwiSGVyaGFuZ2kgYmlyIGnFn2xlbSBnZXLDp2VrbGXFn3RpcmlsbWVkaS5cIik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZW5kRGVzcGF0Y2hCeUlkKGlkcy5tYXAocCA9PiBwLmlkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuXHJcbiAgICAgICAgdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5kYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTZXJpYWw6IGVsZW1lbnQuZGF0YS5zZWxlY3RlZEludm9pY2VTZXJpYWxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBpZihpZHMuZmlsdGVyKHAgPT4gaXNOdWxsT3JFbXB0eShwLnNlbGVjdGVkU2VyaWFsKSkubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgLmluZm8oJ1Nlcmkgc2XDp2ltaSB5YXDEsWxtYXlhbiBiZWxnZWxlciBpw6dpbiBlbnRlZ3JhdMO2cmRlIGJ1bHVuYW4gdmFyc2F5xLFsYW4gc2VyaXlsZSBnw7ZuZGVyaW0geWFwxLFsYWNha3TEsXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiY29uZmlybVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLnNlbmRJbnZvaWNlQnlJZChpZHMubWFwKHAgPT4gcC5pZCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJIZXJoYW5naSBiaXIgacWfbGVtIGdlcsOnZWtsZcWfdGlyaWxtZWRpLlwiKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLnNlbmRJbnZvaWNlQnlJZChpZHMubWFwKHAgPT4gcC5pZCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICovXHJcbiAgICB9XHJcbiAgICBzZXREZXNwYXRjaENhbmNlbFdpdGhPcGVuKHJlY29yZCkge1xyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0RGVzcGF0Y2hDYW5jZWxCeUlkKHJlY29yZC5pZCwgMSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhcIkJlbGdlIGJhxZ9hcsSxeWxhIGlwdGFsZSDDp2VraWxlcmVrLCBrYXluYWt0YSBnw7xuY2VsbGVuZGkuXCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERlc3BhdGNoQ2FuY2VsV2l0aFJldmlzZShyZWNvcmQpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNldERlc3BhdGNoQ2FuY2VsQnlJZChyZWNvcmQuaWQsIDYpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKVxyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoXCJCZWxnZSBiYcWfYXLEsXlsYSBpcHRhbGUgw6dla2lsZXJlaywga2F5bmFrdGEgZ8O8bmNlbGxlbmRpLlwiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsaXN0RGVzcGF0Y2hSZWNlaXZlclBLKHJlY29yZCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuZ2liUGFydG5lclBrU2VydmljZS5HZXRDdXN0b21lckFjdGl2ZVBLUyhyZWNvcmQuZGVsaXZlcnlDdXN0b21lclBhcnR5VmtuVGNrbiwgMikuc3Vic2NyaWJlKHBrcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVzcGF0Y2hSZWNlaXZlclBLRGF0YVNvdXJjZSA9IHBrcy5tYXAoaXRlbSA9PiAoeyBBZHJlczogaXRlbSB9KSk7O1xyXG4gICAgICAgICAgICB0aGlzLnBrTW9kYWxTZWxlY3RlZERlc3BhdGNoSWQgPSByZWNvcmQuaWQ7XHJcbiAgICAgICAgICAgIHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hSZXNvdXJjZURvY0VudHJ5ID0gcmVjb3JkLnJlc291cmNlRG9jRW50cnk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmlzUEtNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGxpc3RBY3RpdmVTZXJpZXMocmVjb3JkKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5oaXREb2N1bWVudFNlcmlhbFNlcnZpY2UuTGlzdEFjdGl2ZVNlcmllc0ZvckRvY3VtZW50KDEpLnN1YnNjcmliZShzZXJpYWxzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaFNlcmlhbERhdGFTb3VyY2UgPSBzZXJpYWxzLm1hcChpdGVtID0+ICh7IFNlcmk6IGl0ZW0gfSkpOztcclxuICAgICAgICAgICAgdGhpcy5zZXJpYWxNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCA9IHJlY29yZC5pZDtcclxuICAgICAgICAgICAgdGhpcy5zZXJpYWxNb2RhbFNlbGVjdGVkRGVzcGF0Y2hSZXNvdXJjZURvY0VudHJ5ID0gcmVjb3JkLnJlc291cmNlRG9jRW50cnk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmlzU2VyaWFsTW9kYWxPcGVuID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RQS0FkZHJlc3MocmVjb3JkKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVjb3JkLkFkcmVzLCB0aGlzLnBrTW9kYWxTZWxlY3RlZERlc3BhdGNoSWQsIHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hSZXNvdXJjZURvY0VudHJ5KVxyXG4gICAgICAgIHRoaXMuc2VydmljZS51cGRhdGVEZXNwYXRjaFJlY2VpdmVyKHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCwgcmVjb3JkLkFkcmVzKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzUEtNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3REZXNwYXRjaFNlcmlhbChyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlRGVzcGF0Y2hTZXJpYWwodGhpcy5zZXJpYWxNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCwgcmVjb3JkLlNlcmkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTZXJpYWxNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXNwYXRjaFByZXZpZXcocmVjb3JkKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERlc3BhdGNoUHJldmlldyhyZWNvcmQuaWQsIHJlY29yZC5yZXNvdXJjZURvY1R5cGUpLnN1YnNjcmliZShmYXR1cmEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YTp0ZXh0L2h0bWw7YmFzZTY0LCR7ZmF0dXJhLnByZXZpZXdIVE1MfWA7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC50aXRsZSA9IHJlY29yZC5pZFxyXG4gICAgICAgICAgICBuZXdUYWIuZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBgPGlmcmFtZSBzcmM9XCIke3NvdXJjZX1cIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc3R5bGU9XCJib3JkZXI6bm9uZTtcIj48L2lmcmFtZT5gO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZ2V0RGVzcGF0Y2hYTUwocmVjb3JkKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERlc3BhdGNoWE1MKHJlY29yZC5pZCwgcmVjb3JkLnJlc291cmNlRG9jVHlwZSkuc3Vic2NyaWJlKGlyc2FsaXllID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYGRhdGE6JHtpcnNhbGl5ZS5taW1lVHlwZX07YmFzZTY0LCR7aXJzYWxpeWUuY29udGVudH1gO1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBzb3VyY2U7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBgJHtpcnNhbGl5ZS5maWxlbmFtZX1gO1xyXG4gICAgICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RG9jT2JqZWN0TmFtZShkYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuICgoZGF0YS5pc0RyYWZ0ID8gXCJUYXNsYWsgXCIgOiBcIlwiKSArIHRoaXMuZGVzcGF0Y2hPYmplY3RzRW51bUxvb2t1cC5maW5kKCh4KSA9PiB4LmlkID09IChkYXRhLmlzRHJhZnQgPyBkYXRhLnJlc291cmNlU3ViRG9jVHlwZSA6IGRhdGEucmVzb3VyY2VEb2NUeXBlKSkuZGlzcGxheU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb25DbGFzcyhyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlSWQgPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtY2xvY2tcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1jaGVjay1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS10aW1lcy1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1taW51cy1jaXJjbGVcIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXNwYXRjaFZpZXcocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERlc3BhdGNoVmlldyhyZWNvcmQudXVJZCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YToke2l0ZW0ubWltZVR5cGV9O2Jhc2U2NCwke2l0ZW0uY29udGVudH1gO1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBzb3VyY2U7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBgJHtpdGVtLmZpbGVuYW1lfWA7XHJcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXNwYXRjaFJlc3BvbnNlcygpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0RGVzcGF0Y2hSZXNwb25zZXMobmV3IERhdGUoKS50b0lTT1N0cmluZygpLCBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGdldFJlY2VpdmVyUmVzcG9uc2VOYW1lKHJlc3BvbnNlSWQpIHtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuZGVzcGF0Y2hSZWNlaXZlclJlc3BvbnNlTG9va3VwLmZpbmQoKHgpID0+IHguaWQgPT09IHJlc3BvbnNlSWQpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGlzcGxheU5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dBbGxGaWxlcyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLmRlc3BhdGNoRmlsZXNEYXRhU291cmNlID0gdGhpcy5zZXJ2aWNlLkxvYWREZXNwYXRjaEZpbGVzKHJlY29yZC51dUlkKVxyXG4gICAgICAgIHRoaXMuaXNGaWxlTW9kYWxPcGVuID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBEb3dubG9hZEZpbGUocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRvd25sb2FkRmlsZUJ5SWQocmVjb3JkLmNvbnRlbnRNYXN0ZXJJZCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YToke2l0ZW0ubWltZVR5cGV9O2Jhc2U2NCwke2l0ZW0uY29udGVudH1gO1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBzb3VyY2U7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBgJHtpdGVtLmZpbGVuYW1lfWA7XHJcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRSZWNlaXB0QWR2aWNlUHJldmlldyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0UmVjZWlwdEFkdmljZVByZXZpZXcocmVjb3JkLmlkLCkuc3Vic2NyaWJlKGRlc3BhdGNoID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYGRhdGE6dGV4dC9odG1sO2Jhc2U2NCwke2Rlc3BhdGNoLnByZXZpZXdIVE1MfWA7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC50aXRsZSA9IHJlY29yZC5pZFxyXG4gICAgICAgICAgICBuZXdUYWIuZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBgPGlmcmFtZSBzcmM9XCIke3NvdXJjZX1cIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc3R5bGU9XCJib3JkZXI6bm9uZTtcIj48L2lmcmFtZT5gO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59IiwiPGFicC1wYWdlIFt0aXRsZV09XCInZURvbnVzdW06OkRlc3BhdGNoZXMnIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZy1lbmQgcHQtMlwiPlxyXG4gICAgICA8IS0tIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG14LTJcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRXhwb3J0VG9FeGNlbEJ1c3lcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0VG9FeGNlbCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFeHBvcnRUb0V4Y2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgLS0+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uRGVzcGF0Y2hlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwic2VuZERlc3BhdGNoTXVsdGlwbGUoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkFkZFRvUXVldWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkRlc3BhdGNoZXMuQ3JlYXRlJ1wiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tc3VjY2Vzc1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cImdldERlc3BhdGNoUmVzcG9uc2VzKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXF1ZXN0aW9uIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpDaGVja1Jlc3BvbnNlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwhLS0gPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5EZXNwYXRjaGVzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4teHMgYnRuLXN1Y2Nlc3NcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJzZW5kSW52b2ljZVRvRW50ZWdyYXRvcigpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZSBtZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgIHt7ICdlRG9udXN1bTo6U2VuZFRvRW50ZWdyYXRvck1hbnVhbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uRGVzcGF0Y2hlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi13YXJuaW5nXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cImdldEludm9pY2VzRnJvbUNvbm5lY3RvcigpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpHZXRGcm9tQ29ubmVjdG9yTWFudWFsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8cD5Hw7ZuZGVyaW1pIHRhbWFtbGFuYW4gdmUgZ8O2bmRlcmlsbWVzaSBiZWtsZW5lbiBpcnNhbGl5ZWxlcmkgbGlzdGVsZXllbiBla3JhbjwvcD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhEZXNwYXRjaEluc3RhbmNlIFtkYXRhU291cmNlXT1cImRlc3BhdGNoZXNEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxyXG4gICAgICAgIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIHN0eWxlPVwiaGVpZ2h0OiA3NXZoO1wiPlxyXG4gICAgICAgIDxkeG8tcGFnZXIgW3Zpc2libGVdPVwidHJ1ZVwiIFtzaG93SW5mb109XCJ0cnVlXCIgW2FsbG93ZWRQYWdlU2l6ZXNdPVwiWzUwLDEwMCwyMDBdXCIgW3Nob3dOYXZpZ2F0aW9uQnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keG8tcGFnZXI+XHJcbiAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjUwXCI+PC9keG8tcGFnaW5nPlxyXG4gICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJtdWx0aXBsZVwiIHNlbGVjdEFsbE1vZGU9XCJwYWdlXCIgc2hvd0NoZWNrQm94ZXNNb2RlPVwiYWx3YXlzXCI+XHJcbiAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWNob29zZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbZW5hYmxlZF09XCJ0cnVlXCIgbW9kZT1cInNlbGVjdFwiPjwvZHhvLWNvbHVtbi1jaG9vc2VyPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWdyb3VwLXBhbmVsIFt2aXNpYmxlXT1cInRydWVcIiBbYWxsb3dDb2x1bW5EcmFnZ2luZ109XCJ0cnVlXCI+PC9keG8tZ3JvdXAtcGFuZWw+XHJcbiAgICAgICAgPGR4by1ncm91cGluZyAjZXhwYW5kIFthdXRvRXhwYW5kQWxsXT1cImZhbHNlXCIgW2FsbG93Q29sbGFwc2luZ109XCJ0cnVlXCJcclxuICAgICAgICAgIFtjb250ZXh0TWVudUVuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWdyb3VwaW5nPlxyXG4gICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCIgW2FsbG93RXhwb3J0U2VsZWN0ZWREYXRhXT1cImZhbHNlXCI+PC9keG8tZXhwb3J0PlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWZpbHRlci1idWlsZGVyIFthbGxvd0hpZXJhcmNoaWNhbEZpZWxkc109XCJ0cnVlXCI+PC9keG8tZmlsdGVyLWJ1aWxkZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1wYW5lbD5cclxuICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgIDxkeGktY29sdW1uIFtmaXhlZF09XCJ0cnVlXCIgZGF0YUZpZWxkPVwiaWRcIiB3aWR0aD1cIjEyMFwiIFthbGxvd0dyb3VwaW5nXT1cImZhbHNlXCIgW2FsbG93RmlsdGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgIFthbGxvd0hlYWRlckZpbHRlcmluZ109XCJmYWxzZVwiIFthbGxvd0hpZGluZ109XCJmYWxzZVwiIFthbGxvd1Jlb3JkZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgY2VsbFRlbXBsYXRlPVwib3BlcmF0aW9uVGVtcGxhdGVcIiBjYXB0aW9uPVwie3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPlxyXG4gICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZHJvcGRvd24tdG9nZ2xlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlIFtkaXNhYmxlZF09XCJkaXNhYmxlZElkQ29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZyBtci0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAge3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwidXBkYXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImRlbGV0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNlbmREZXNwYXRjaFNpbmdsZShyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpBZGRUb1F1ZXVlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2V0RGVzcGF0Y2hDYW5jZWxXaXRoT3Blbihyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZXRDYW5jZWxXaXRoT3BlbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNldERlc3BhdGNoQ2FuY2VsV2l0aFJldmlzZShyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZXRDYW5jZWxXaXRoUmV2aXNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwibGlzdERlc3BhdGNoUmVjZWl2ZXJQSyhyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2VsZWN0UmVjZWl2ZXJQSycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImxpc3RBY3RpdmVTZXJpZXMocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFza3NcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2VsZWN0U2VyaWFsRm9yRG9jdW1lbnQnIHxcclxuICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXREZXNwYXRjaFZpZXcocm93LmRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMzAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSAzNDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDM4MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkdldFBERlZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXREZXNwYXRjaFByZXZpZXcocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlByZXZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXREZXNwYXRjaFhNTChyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6UHJldmlld1hNTCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNob3dBbGxGaWxlcyhyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAzMDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDM0MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gMzgwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3MDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2hvd0FsbEZpbGVzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZ2V0UmVjZWlwdEFkdmljZVByZXZpZXcocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gNzAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2hvd1Jlc3BvbnNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzc3VlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06Oklzc3VlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVzb3VyY2VEb2NFbnRyeVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRlc3BhdGNoSWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRlc3BhdGNoSWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGNlbGxUZW1wbGF0ZT1cImRvY1R5cGVUZW1wbGF0ZVwiIGRhdGFGaWVsZD1cInJlc291cmNlRG9jVHlwZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jVHlwZSd8YWJwTG9jYWxpemF0aW9ufX1cIj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdkb2NUeXBlVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICB7e2dldERvY09iamVjdE5hbWUoZGF0YS5kYXRhKX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGVsaXZlcnlDdXN0b21lclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdDdXN0b21lclBhcnR5TmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGVsaXZlcnlDdXN0b21lclBhcnR5VmtuVGNrblwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdDdXN0b21lclBhcnR5VmtuVGNrbid8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwic3RhdHVzXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTdGF0dXMnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaFN0YXR1c0xvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwcm9maWxlSWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRlc3BhdGNoUHJvZmlsZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkZXNwYXRjaEFkdmljZVR5cGVDb2RlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RGVzcGF0Y2hBZHZpY2VUeXBlQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVjZWl2ZXJSZXNwb25zZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVjZWl2ZXJSZXNwb25zZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgY2VsbFRlbXBsYXRlPVwiaWNvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaFJlY2VpdmVyUmVzcG9uc2VMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdpY29uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UpXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydjb2xvcic6ZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzEnID8gJ2dyZWVuJyA6IGRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09ICcyJyA/ICdyZWQnIDogZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzMnID8gJ29yYW5nZScgOiAnZ3JheSd9XCI+PC9pPlxyXG4gICAgICAgICAge3tnZXRSZWNlaXZlclJlc3BvbnNlTmFtZShkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSl9fVxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVjZWl2ZXJSZXNwb25zZURlc2NcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZWNlaXZlclJlc3BvbnNlRGVzYyd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jdW1lbnRDdXJyZW5jeUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0N1cnJlbmN5J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzZWxlY3RlZFJlY2VpdmVyUEtcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTZWxlY3RlZFJlY2VpdmVyUEsnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInNlbGVjdGVkRGVzcGF0Y2hTZXJpYWxcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTZWxlY3RlZERlc3BhdGNoU2VyaWFsJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ1dUlkXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpVdUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9hYnAtcGFnZT5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNGaWxlTW9kYWxCdXN5XCIgWyh2aXNpYmxlKV09XCJpc0ZpbGVNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAnZURvbnVzdW06OkRlc3BhdGNoRmlsZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeERlc3BhdGNoRmlsZUluc3RhbmNlIFtkYXRhU291cmNlXT1cImRlc3BhdGNoRmlsZXNEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwiZmFsc2VcIiBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDUwdmg7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBbZml4ZWRdPVwidHJ1ZVwiIGRhdGFGaWVsZD1cImlkXCIgd2lkdGg9XCIxMjBcIiBbYWxsb3dHcm91cGluZ109XCJmYWxzZVwiIFthbGxvd0ZpbHRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIFthbGxvd0hlYWRlckZpbHRlcmluZ109XCJmYWxzZVwiIFthbGxvd0hpZGluZ109XCJmYWxzZVwiIFthbGxvd1Jlb3JkZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRJZENvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZyBtci0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiRG93bmxvYWRGaWxlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6RG93bmxvYWQnIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCIgZGF0YUZpZWxkPVwiZXh0cmFJdGVtXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpOYW1lJ3xhYnBMb2NhbGl6YXRpb259fVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaEZpbGVOYW1lTG9va3VwXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNTZXJpYWxNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzU2VyaWFsTW9kYWxPcGVuXCIgW29wdGlvbnNdPVwieyBzaXplOiAnbGcnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAgQmVsZ2UgU2VyaSBTZcOnaW1pXHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeERlc3BhdGNoU2VyaWFsSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiZGVzcGF0Y2hTZXJpYWxEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwiZmFsc2VcIiBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDUwdmg7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBbd2lkdGhdPVwiODBcIiBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwic2VsZWN0RGVzcGF0Y2hTZXJpYWwocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBTZcOnXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiU2VyaVwiIGNhcHRpb249XCJTZXJpXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc1BLTW9kYWxCdXN5XCIgWyh2aXNpYmxlKV09XCJpc1BLTW9kYWxPcGVuXCIgW29wdGlvbnNdPVwieyBzaXplOiAnbGcnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3twa01vZGFsU2VsZWN0ZWREZXNwYXRjaFJlc291cmNlRG9jRW50cnl9fSB7eyAnZURvbnVzdW06OlJlY2VpdmVyUEtTJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhSZWNlaXZlclBLU0luc3RhbmNlIFtkYXRhU291cmNlXT1cImRlc3BhdGNoUmVjZWl2ZXJQS0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFt3aWR0aF09XCI4MFwiIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJzZWxlY3RQS0FkZHJlc3Mocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBTZcOnXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiQWRyZXNcIiBjYXB0aW9uPVwiQWRyZXNcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+Il19
|