@hitsoft/e-donusum 1.0.121 → 1.0.122

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/config/providers/hit-providers/invoice-sent-route.provider.d.ts +9 -0
  2. package/esm2020/config/e-donusum-config.module.mjs +3 -1
  3. package/esm2020/config/providers/hit-providers/invoice-sent-route.provider.mjs +20 -0
  4. package/esm2020/lib/auto-send-rules/auto-send-rule/auto-send-rule.module.mjs +1 -1
  5. package/esm2020/lib/components/hit-despatches/hit-despatch.component.mjs +32 -5
  6. package/esm2020/lib/components/hit-inbound-despatches/hit-inbound-despatch.component.mjs +51 -3
  7. package/esm2020/lib/components/hit-inbound-invoices/hit-inbound-invoice.component.mjs +93 -6
  8. package/esm2020/lib/components/hit-invoices/hit-invoice.component.mjs +15 -93
  9. package/esm2020/lib/components/hit-invoices-sent/hit-invoice-sent.component.mjs +142 -0
  10. package/esm2020/lib/components/hit-invoices-sent/hit-invoice-sent.module.mjs +81 -0
  11. package/esm2020/lib/components/hit-invoices-sent/sanitize-html-sent.pipe.mjs +19 -0
  12. package/esm2020/lib/document-serials/document-serial/document-serial.module.mjs +1 -1
  13. package/esm2020/lib/e-donusum-routing.module.mjs +3 -1
  14. package/esm2020/lib/hit-proxy/hit-inbound-despatches/hit-inbound-despatch.service.mjs +19 -4
  15. package/esm2020/lib/hit-proxy/hit-inbound-invoices/hit-inbound-invoice.service.mjs +7 -1
  16. package/esm2020/lib/hit-proxy/hit-invoices/hit-invoice.service.mjs +5 -1
  17. package/esm2020/lib/hit-proxy/shared/hit-shared.service.mjs +45 -9
  18. package/fesm2015/hitsoft-e-donusum-config.mjs +102 -83
  19. package/fesm2015/hitsoft-e-donusum-config.mjs.map +1 -1
  20. package/fesm2015/hitsoft-e-donusum.mjs +509 -150
  21. package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
  22. package/fesm2020/hitsoft-e-donusum-config.mjs +102 -83
  23. package/fesm2020/hitsoft-e-donusum-config.mjs.map +1 -1
  24. package/fesm2020/hitsoft-e-donusum.mjs +508 -150
  25. package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
  26. package/lib/components/hit-despatches/hit-despatch.component.d.ts +1 -0
  27. package/lib/components/hit-inbound-despatches/hit-inbound-despatch.component.d.ts +3 -0
  28. package/lib/components/hit-inbound-invoices/hit-inbound-invoice.component.d.ts +4 -0
  29. package/lib/components/hit-invoices/hit-invoice.component.d.ts +1 -16
  30. package/lib/components/hit-invoices-sent/hit-invoice-sent.component.d.ts +40 -0
  31. package/lib/components/hit-invoices-sent/hit-invoice-sent.module.d.ts +17 -0
  32. package/lib/components/hit-invoices-sent/sanitize-html-sent.pipe.d.ts +10 -0
  33. package/lib/hit-proxy/hit-inbound-despatches/hit-inbound-despatch.service.d.ts +5 -1
  34. package/lib/hit-proxy/hit-inbound-invoices/hit-inbound-invoice.service.d.ts +1 -0
  35. package/lib/hit-proxy/hit-invoices/hit-invoice.service.d.ts +1 -0
  36. package/lib/hit-proxy/shared/hit-shared.service.d.ts +1 -1
  37. package/package.json +1 -1
@@ -7,31 +7,25 @@ import * as i0 from "@angular/core";
7
7
  import * as i1 from "@abp/ng.core";
8
8
  import * as i2 from "../../hit-proxy/hit-invoices/hit-invoice.service";
9
9
  import * as i3 from "../../hit-proxy/hit-gib-partner-pks/hit-gib-partner-pk.service";
10
- import * as i4 from "../../hit-proxy/hit-file-document-type/hit-file-document-type.service";
11
- import * as i5 from "../../hit-proxy/hit-document-serials/hit-document-serial.service";
12
- import * as i6 from "@abp/ng.theme.shared";
13
- import * as i7 from "../../hit-proxy/shared/hit-shared.service";
14
- import * as i8 from "@angular/common";
15
- import * as i9 from "@angular/forms";
16
- import * as i10 from "@ng-bootstrap/ng-bootstrap";
17
- import * as i11 from "devextreme-angular";
18
- import * as i12 from "devextreme-angular/ui/nested";
19
- import * as i13 from "devextreme-angular/core";
20
- import * as i14 from "@abp/ng.components/page";
10
+ import * as i4 from "../../hit-proxy/hit-document-serials/hit-document-serial.service";
11
+ import * as i5 from "@abp/ng.theme.shared";
12
+ import * as i6 from "@angular/common";
13
+ import * as i7 from "@angular/forms";
14
+ import * as i8 from "@ng-bootstrap/ng-bootstrap";
15
+ import * as i9 from "devextreme-angular";
16
+ import * as i10 from "devextreme-angular/ui/nested";
17
+ import * as i11 from "devextreme-angular/core";
18
+ import * as i12 from "@abp/ng.components/page";
21
19
  export class HitInvoiceComponent {
22
- constructor(list, invoiceService, gibPartnerPkService, fileDocumentTypeService, hitDocumentSerialService, toasterService, confirmation, hitSharedService) {
20
+ constructor(list, invoiceService, gibPartnerPkService, hitDocumentSerialService, toasterService, confirmation) {
23
21
  this.list = list;
24
22
  this.invoiceService = invoiceService;
25
23
  this.gibPartnerPkService = gibPartnerPkService;
26
- this.fileDocumentTypeService = fileDocumentTypeService;
27
24
  this.hitDocumentSerialService = hitDocumentSerialService;
28
25
  this.toasterService = toasterService;
29
26
  this.confirmation = confirmation;
30
- this.hitSharedService = hitSharedService;
31
27
  this.isPreviewModalOpen = false;
32
28
  this.isPreviewModalBusy = false;
33
- this.isFileModalOpen = false;
34
- this.isFileModalBusy = false;
35
29
  this.isPKModalOpen = false;
36
30
  this.isPKModalBusy = false;
37
31
  this.isSerialModalOpen = false;
@@ -49,10 +43,6 @@ export class HitInvoiceComponent {
49
43
  this.invoiceService.getSapObjects().subscribe(list => {
50
44
  this.invoiceObjectsEnumLookup = list;
51
45
  });
52
- this.fileDocumentTypeService.getFileDocumentTypes().subscribe(list => {
53
- debugger;
54
- this.invoiceFileNameLookup = list;
55
- });
56
46
  }
57
47
  sendInvoiceSingle(record) {
58
48
  let ids = [record.id];
@@ -153,44 +143,6 @@ export class HitInvoiceComponent {
153
143
  this.dxInvoiceInstance.instance.refresh();
154
144
  });
155
145
  }
156
- downloadPDFMultiple() {
157
- let ids = [];
158
- this.dxInvoiceInstance.instance.getVisibleRows().filter(i => i.isSelected == true).forEach(element => {
159
- ids.push({
160
- id: element.data.id,
161
- selectedSerial: element.data.selectedInvoiceSerial.code
162
- });
163
- });
164
- this.invoiceService.getInvoicePdfsMultiple(ids.map(p => p.id)).subscribe(data => {
165
- debugger;
166
- const byteCharacters = atob(data);
167
- const byteNumbers = new Array(byteCharacters.length);
168
- for (let i = 0; i < byteCharacters.length; i++) {
169
- byteNumbers[i] = byteCharacters.charCodeAt(i);
170
- }
171
- const byteArray = new Uint8Array(byteNumbers);
172
- const blob = new Blob([byteArray], { type: 'application/zip' });
173
- // İndirme
174
- const url = window.URL.createObjectURL(blob);
175
- const a = document.createElement('a');
176
- a.href = url;
177
- a.download = 'Faturalar-' + this.getZipDate() + '.zip';
178
- a.click();
179
- window.URL.revokeObjectURL(url);
180
- });
181
- debugger;
182
- }
183
- getZipDate() {
184
- const date = new Date();
185
- // Gün, Ay, Yıl, Saat, Dakika, Saniye formatında manuel düzenleme
186
- const day = String(date.getDate()).padStart(2, '0');
187
- const month = String(date.getMonth() + 1).padStart(2, '0');
188
- const year = date.getFullYear();
189
- const hours = String(date.getHours()).padStart(2, '0');
190
- const minutes = String(date.getMinutes()).padStart(2, '0');
191
- const seconds = String(date.getSeconds()).padStart(2, '0');
192
- return `${year}.${month}.${day}-${hours}.${minutes}.${seconds}`;
193
- }
194
146
  sendInvoiceMultiple() {
195
147
  debugger;
196
148
  let ids = [];
@@ -227,23 +179,6 @@ export class HitInvoiceComponent {
227
179
  getInvoicesFromConnector() {
228
180
  this.invoiceService.getInvoicesFromConnector().subscribe(() => this.dxInvoiceInstance.instance.refresh());
229
181
  }
230
- getInvoiceResponses() {
231
- this.invoiceService.getInvoiceResponses(new Date().toISOString(), new Date().toISOString()).subscribe(() => this.dxInvoiceInstance.instance.refresh());
232
- }
233
- getInvoiceView(record) {
234
- this.invoiceService.getInvoiceView(record.uuId).subscribe(item => {
235
- const source = `data:${item.mimeType};base64,${item.content}`;
236
- this.hitSharedService.previewFile(item.content);
237
- /*const link = document.createElement('a');
238
- link.href = source;
239
- link.download = `${item.filename}`;
240
- link.click();*/
241
- });
242
- }
243
- showAllFiles(record) {
244
- this.invoiceFilesDataSource = this.invoiceService.LoadInvoiceFiles(record.uuId);
245
- this.isFileModalOpen = true;
246
- }
247
182
  getInvoicePreview(record) {
248
183
  this.invoiceService.getInvoicePreview(record.id, record.resourceDocType).subscribe(fatura => {
249
184
  const bytes = Uint8Array.from(atob(fatura.previewHTML), c => c.charCodeAt(0));
@@ -288,28 +223,15 @@ export class HitInvoiceComponent {
288
223
  }
289
224
  return "";
290
225
  }
291
- DownloadFile(record) {
292
- this.invoiceService.downloadFileById(record.contentMasterId).subscribe(item => {
293
- const source = `data:${item.mimeType};base64,${item.content}`;
294
- //this.hitSharedService.previewFile(item.content);
295
- const link = document.createElement('a');
296
- link.href = source;
297
- link.download = `${item.filename}`;
298
- link.click();
299
- });
300
- }
301
226
  }
302
- HitInvoiceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitInvoiceComponent, deps: [{ token: i1.ListService }, { token: i2.HitInvoiceService }, { token: i3.HitGibPartnerPkService }, { token: i4.HitFileDocumentTypeService }, { token: i5.HitDocumentSerialService }, { token: i6.ToasterService }, { token: i6.ConfirmationService }, { token: i7.HitSharedService }], target: i0.ɵɵFactoryTarget.Component });
303
- HitInvoiceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitInvoiceComponent, selector: "lib-invoice", providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "dxInvoiceInstance", first: true, predicate: ["dxInvoiceInstance"], descendants: true }, { propertyName: "dxInvoiceFileInstance", first: true, predicate: ["dxInvoiceFileInstance"], descendants: true }, { propertyName: "dxReceiverPKSInstance", first: true, predicate: ["dxReceiverPKSInstance"], descendants: true }, { propertyName: "dxInvoiceSerialInstance", first: true, predicate: ["dxInvoiceSerialInstance"], descendants: true }], ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/eqeqeq -->\r\n<abp-page [title]=\"'eDonusum::Invoices' | abpLocalization\">\r\n \r\n <p>G\u00F6nderimi tamamlanan ve g\u00F6nderilmesi beklenen faturalar\u0131 listeleyen ekran</p>\r\n <div class=\"row mb-3\">\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.Invoices.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"listActiveSeriesForMultiple()\">\r\n <i class=\"fa fa-tasks me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::SelectSerialMultiple' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Invoices.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"downloadPDFMultiple()\">\r\n <i class=\"fa fa-download me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::DownloadPDFMultiple' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Invoices.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendInvoiceMultiple()\">\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.Invoices.Create'\" class=\"btn btn-sm btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"getInvoiceResponses()\">\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.Invoices.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.Invoices.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 </div>\r\n <abp-page-toolbar-container class=\"col\">\r\n \r\n </abp-page-toolbar-container>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n \r\n <dx-data-grid #dxInvoiceInstance [dataSource]=\"invoicesDataSource\" [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)=\"sendInvoiceSingle(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)=\"setInvoiceCancelWithOpen(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status == 99\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithOpen' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setInvoiceCancelWithRevise(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status == 99\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithRevise' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listReceiverPK(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)=\"getInvoiceView(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)=\"getInvoicePreview(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status==99\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i> {{ 'eDonusum::Preview' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getInvoiceXML(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status==99\">\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 </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 dataType=\"number\" dataField=\"resourceDocEntry\"\r\n caption=\"{{'eDonusum::ResourceDocEntry'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataType=\"number\" dataField=\"resourceDocNum\"\r\n caption=\"{{'eDonusum::ResourceDocNum'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"invoiceId\" caption=\"{{'eDonusum::InvoiceId'|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=\"accountingCustomerPartyName\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyName'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"accountingCustomerPartyVknTckn\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyVknTckn'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"buyerCustomerPartyName\" caption=\"{{'eDonusum::BuyerCustomerPartyName'|abpLocalization}}\"\r\n aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"status\" caption=\"{{'eDonusum::Status'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"invoiceStatusLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"profileId\" caption=\"{{'eDonusum::ProfileId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"invoiceTypeCode\" caption=\"{{'eDonusum::InvoiceTypeCode'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"legalMonetaryTotalPayableAmount\" caption=\"{{'eDonusum::PayableAmount'|abpLocalization}}\"\r\n dataType=\"number\" format=\"#,##0.00\"></dxi-column>\r\n <dxi-column dataField=\"documentCurrencyCode\" caption=\"{{'eDonusum::DocCurrency'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"receiverResponse\" caption=\"{{'eDonusum::ReceiverResponse'|abpLocalization}}\"\r\n cellTemplate=\"iconTemplate\">\r\n <dxo-lookup [dataSource]=\"invoiceReceiverResponseLookup\" 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' : 'gray'}\"></i>\r\n {{getReceiverResponseName(data.data.receiverResponse)}}\r\n </div>\r\n <dxi-column dataField=\"receiverResponseDesc\"\r\n caption=\"{{'eDonusum::ReceiverResponseDesc'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedReceiverPK\" dataType=\"date\"\r\n caption=\"{{'eDonusum::SelectedReceiverPK'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedInvoiceSerial\"\r\n caption=\"{{'eDonusum::SelectedInvoiceSerial'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"uuId\" caption=\"{{'eDonusum::UuId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"region\" caption=\"{{'eDonusum::Region'|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::InvoiceFiles' | 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 #dxInvoiceFileInstance [dataSource]=\"invoiceFilesDataSource\" [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]=\"invoiceFileNameLookup\" 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]=\"isPKModalBusy\" [(visible)]=\"isPKModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{pkModalSelectedInvoiceResourceDocEntry}} {{ '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]=\"invoiceReceiverPKDataSource\" [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 Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Adres\" caption=\"Adres\"></dxi-column>\r\n <dxi-column [width]=\"150\" caption=\"{{'eDonusum::DefaultPK' | abpLocalization}}\"\r\n cellTemplate=\"defaultPkCheckboxTemplate\">\r\n <div *dxTemplate=\"let row of 'defaultPkCheckboxTemplate'\">\r\n <div class=\"form-check d-flex justify-content-center\">\r\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"row.data.isDefaultPK\" />\r\n </div>\r\n </div>\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 #dxInvoiceSerialInstance [dataSource]=\"invoiceSerialDataSource\" [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)=\"selectInvoiceSerial(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.code\" caption=\"Seri\"></dxi-column>\r\n <dxi-column dataField=\"Seri.description\"\r\n caption=\"{{'eDonusum::Description'|abpLocalization}}\"></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\r\n<abp-modal [(visible)]=\"isModalOpenForNotQueue\">\r\n <ng-template #abpHeader>\r\n <h3> \u00C7oklu PK ya sahip olan Belge Numara Listesi </h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <div class=\"alert-danger-top\" role=\"alert\">\r\n <b>Uyar\u0131:</b> \u00C7oklu PK ya sahip olanlar kuyru\u011Fa eklenemedi.\u0130\u015Flemlerden Al\u0131c\u0131 Adresi se\u00E7iniz.\r\n</div>\r\n <div class=\"excel-wrapper\">\r\n <table class=\"excel-table\">\r\n <thead>\r\n <tr>\r\n <td>#</td>\r\n <td>{{'eDonusum::ResourceDocEntry'|abpLocalization}}</td>\r\n <td> {{'eDonusum::Status'|abpLocalization}} </td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of invoiceNotSendQueueDataSource; let i = index\">\r\n <td>{{ i+1 }}</td>\r\n <td> {{item}} </td>\r\n <td> <i class=\"fa fa-times\"></i> </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n Kapat\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<style>\r\n .excel-wrapper {\r\n width: 100%;\r\n max-height: 400px;\r\n overflow: auto;\r\n border: 1px solid #c6c6c6;\r\n font-family: Calibri, Arial, sans-serif;\r\n font-size: 14px;\r\n }\r\n\r\n .excel-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n }\r\n\r\n .excel-table th,\r\n .excel-table td {\r\n border: 1px solid #d0d0d0;\r\n padding: 6px 10px;\r\n white-space: nowrap;\r\n }\r\n\r\n .excel-table thead th {\r\n background-color: #f3f3f3;\r\n font-weight: 600;\r\n text-align: left;\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n }\r\n\r\n .excel-table tbody tr:nth-child(even) {\r\n background-color: #fafafa;\r\n }\r\n\r\n .excel-table tbody tr:hover {\r\n background-color: #e6f2ff;\r\n }\r\n\r\n .right {\r\n text-align: right;\r\n }\r\n\r\n .open {\r\n color: #008000;\r\n font-weight: 500;\r\n }\r\n\r\n .closed {\r\n color: #c00000;\r\n font-weight: 500;\r\n }\r\n .alert-danger-top{\r\n background:#fde8e8;\r\n border:1px solid #f5c2c7;\r\n color:#b02a37;\r\n padding:10px 12px;\r\n border-radius:6px;\r\n font-family: Calibri, Arial, sans-serif;\r\n margin-bottom:10px;\r\n}\r\n</style>\r\n\r\n\r\n\r\n\r\n<!-- <abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::NewInvoice') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n \r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"invoice\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-ubl-version-id\">\r\n {{ 'eDonusum::UblVersionId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-ubl-version-id\"\r\n formControlName=\"ublVersionId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n autofocus\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-customization-id\">\r\n {{ 'eDonusum::CustomizationId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-customization-id\"\r\n formControlName=\"customizationId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-profile-id\">\r\n {{ 'eDonusum::ProfileId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-profile-id\"\r\n formControlName=\"profileId\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-id\">\r\n {{ 'eDonusum::InvoiceId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-id\"\r\n formControlName=\"invoiceId\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"invoice-copy-indicator\"\r\n formControlName=\"copyIndicator\"\r\n class=\"form-check-input\"\r\n />\r\n \r\n <label for=\"invoice-copy-indicator\" class=\"form-check-label\">\r\n {{ 'eDonusum::CopyIndicator' | abpLocalization }}\r\n </label>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-uu-id\">\r\n {{ 'eDonusum::UuId' | abpLocalization }} *\r\n </label>\r\n \r\n <input id=\"invoice-uu-id\" formControlName=\"uuId\" class=\"form-control\" maxlength=\"64\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-issue-date\">\r\n {{ 'eDonusum::IssueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-issue-date\"\r\n formControlName=\"issueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #issueDateInput\r\n #issueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"issueDateDatepicker.open()\"\r\n (keyup.space)=\"issueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"issueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n issueDateDatepicker.writeValue(null);\r\n issueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-issue-time\">\r\n {{ 'eDonusum::IssueTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-issue-time\"\r\n formControlName=\"issueTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #issueTimeInput\r\n #issueTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"issueTimeDatepicker.open()\"\r\n (keyup.space)=\"issueTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"issueTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n issueTimeDatepicker.writeValue(null);\r\n issueTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-type-code\">\r\n {{ 'eDonusum::InvoiceTypeCode' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-type-code\"\r\n formControlName=\"invoiceTypeCode\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-document-currency-code\">\r\n {{ 'eDonusum::DocumentCurrencyCode' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-document-currency-code\"\r\n formControlName=\"documentCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-currency-code\">\r\n {{ 'eDonusum::TaxCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-currency-code\"\r\n formControlName=\"taxCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-currency-code\">\r\n {{ 'eDonusum::PricingCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-currency-code\"\r\n formControlName=\"pricingCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-currency-code\">\r\n {{ 'eDonusum::PaymentCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-currency-code\"\r\n formControlName=\"paymentCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-alternative-currency-code\">\r\n {{ 'eDonusum::PaymentAlternativeCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-currency-code\"\r\n formControlName=\"paymentAlternativeCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-cost\">\r\n {{ 'eDonusum::AccountingCost' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-cost\"\r\n formControlName=\"accountingCost\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-line-count-numeric\">\r\n {{ 'eDonusum::LineCountNumeric' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-line-count-numeric\"\r\n formControlName=\"lineCountNumeric\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-start-date\">\r\n {{ 'eDonusum::InvoicePeriodStartDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-start-date\"\r\n formControlName=\"invoicePeriodStartDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodStartDateInput\r\n #invoicePeriodStartDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodStartDateDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodStartDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodStartDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodStartDateDatepicker.writeValue(null);\r\n invoicePeriodStartDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-start-time\">\r\n {{ 'eDonusum::InvoicePeriodStartTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-start-time\"\r\n formControlName=\"invoicePeriodStartTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodStartTimeInput\r\n #invoicePeriodStartTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodStartTimeDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodStartTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodStartTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodStartTimeDatepicker.writeValue(null);\r\n invoicePeriodStartTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-end-date\">\r\n {{ 'eDonusum::InvoicePeriodEndDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-end-date\"\r\n formControlName=\"invoicePeriodEndDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodEndDateInput\r\n #invoicePeriodEndDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodEndDateDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodEndDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodEndDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodEndDateDatepicker.writeValue(null);\r\n invoicePeriodEndDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-end-time\">\r\n {{ 'eDonusum::InvoicePeriodEndTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-end-time\"\r\n formControlName=\"invoicePeriodEndTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodEndTimeInput\r\n #invoicePeriodEndTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodEndTimeDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodEndTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodEndTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodEndTimeDatepicker.writeValue(null);\r\n invoicePeriodEndTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-duration-measure\">\r\n {{ 'eDonusum::InvoicePeriodDurationMeasure' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-duration-measure\"\r\n formControlName=\"invoicePeriodDurationMeasure\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodDurationMeasureInput\r\n #invoicePeriodDurationMeasureDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodDurationMeasureDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodDurationMeasureDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodDurationMeasureInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodDurationMeasureDatepicker.writeValue(null);\r\n invoicePeriodDurationMeasureDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-description\">\r\n {{ 'eDonusum::InvoicePeriodDescription' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-period-description\"\r\n formControlName=\"invoicePeriodDescription\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-id\">\r\n {{ 'eDonusum::OrderReferenceId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-id\"\r\n formControlName=\"orderReferenceId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-sales-order-id\">\r\n {{ 'eDonusum::OrderReferenceSalesOrderId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-sales-order-id\"\r\n formControlName=\"orderReferenceSalesOrderId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-issue-date\">\r\n {{ 'eDonusum::OrderReferenceIssueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-order-reference-issue-date\"\r\n formControlName=\"orderReferenceIssueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #orderReferenceIssueDateInput\r\n #orderReferenceIssueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"orderReferenceIssueDateDatepicker.open()\"\r\n (keyup.space)=\"orderReferenceIssueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"orderReferenceIssueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n orderReferenceIssueDateDatepicker.writeValue(null);\r\n orderReferenceIssueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-order-type-code\">\r\n {{ 'eDonusum::OrderReferenceOrderTypeCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-order-type-code\"\r\n formControlName=\"orderReferenceOrderTypeCode\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-name\">\r\n {{ 'eDonusum::AccountingSupplierPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-name\"\r\n formControlName=\"accountingSupplierPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-scheme-id\">\r\n {{ 'eDonusum::AccountingSupplierPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-scheme-id\"\r\n formControlName=\"accountingSupplierPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-vkn-tckn\">\r\n {{ 'eDonusum::AccountingSupplierPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-vkn-tckn\"\r\n formControlName=\"accountingSupplierPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-name\">\r\n {{ 'eDonusum::AccountingCustomerPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-name\"\r\n formControlName=\"accountingCustomerPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-scheme-id\">\r\n {{ 'eDonusum::AccountingCustomerPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-scheme-id\"\r\n formControlName=\"accountingCustomerPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-vkn-tckn\">\r\n {{ 'eDonusum::AccountingCustomerPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-vkn-tckn\"\r\n formControlName=\"accountingCustomerPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-name\">\r\n {{ 'eDonusum::BuyerCustomerPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-name\"\r\n formControlName=\"buyerCustomerPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-scheme-id\">\r\n {{ 'eDonusum::BuyerCustomerPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-scheme-id\"\r\n formControlName=\"buyerCustomerPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-vkn-tckn\">\r\n {{ 'eDonusum::BuyerCustomerPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-vkn-tckn\"\r\n formControlName=\"buyerCustomerPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-name\">\r\n {{ 'eDonusum::SellerSupplierPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-name\"\r\n formControlName=\"sellerSupplierPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-scheme-id\">\r\n {{ 'eDonusum::SellerSupplierPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-scheme-id\"\r\n formControlName=\"sellerSupplierPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-vkn-tckn\">\r\n {{ 'eDonusum::SellerSupplierPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-vkn-tckn\"\r\n formControlName=\"sellerSupplierPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-name\">\r\n {{ 'eDonusum::TaxRepresentativePartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-name\"\r\n formControlName=\"taxRepresentativePartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-scheme-id\">\r\n {{ 'eDonusum::TaxRepresentativePartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-scheme-id\"\r\n formControlName=\"taxRepresentativePartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-vkn-tckn\">\r\n {{ 'eDonusum::TaxRepresentativePartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-vkn-tckn\"\r\n formControlName=\"taxRepresentativePartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::TaxExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-exchange-rate-source-currency-code\"\r\n formControlName=\"taxExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::TaxExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-exchange-rate-target-currency-code\"\r\n formControlName=\"taxExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::TaxExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-tax-exchange-rate-calculation-rate\"\r\n formControlName=\"taxExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-date\">\r\n {{ 'eDonusum::TaxExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-tax-exchange-rate-date\"\r\n formControlName=\"taxExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #taxExchangeRateDateInput\r\n #taxExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"taxExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"taxExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"taxExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n taxExchangeRateDateDatepicker.writeValue(null);\r\n taxExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::PricingExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-exchange-rate-source-currency-code\"\r\n formControlName=\"pricingExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::PricingExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-exchange-rate-target-currency-code\"\r\n formControlName=\"pricingExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::PricingExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-pricing-exchange-rate-calculation-rate\"\r\n formControlName=\"pricingExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-date\">\r\n {{ 'eDonusum::PricingExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-pricing-exchange-rate-date\"\r\n formControlName=\"pricingExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #pricingExchangeRateDateInput\r\n #pricingExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"pricingExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"pricingExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"pricingExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n pricingExchangeRateDateDatepicker.writeValue(null);\r\n pricingExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::PaymentExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-exchange-rate-source-currency-code\"\r\n formControlName=\"paymentExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::PaymentExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-exchange-rate-target-currency-code\"\r\n formControlName=\"paymentExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::PaymentExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-payment-exchange-rate-calculation-rate\"\r\n formControlName=\"paymentExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-date\">\r\n {{ 'eDonusum::PaymentExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-exchange-rate-date\"\r\n formControlName=\"paymentExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentExchangeRateDateInput\r\n #paymentExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"paymentExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentExchangeRateDateDatepicker.writeValue(null);\r\n paymentExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-source-currency-code\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-exchange-rate-source-currency-code\"\r\n formControlName=\"paymentAlternativeExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-target-currency-code\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-exchange-rate-target-currency-code\"\r\n formControlName=\"paymentAlternativeExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-calculation-rate\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-payment-alternative-exchange-rate-calculation-rate\"\r\n formControlName=\"paymentAlternativeExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-alternative-exchange-rate-date\">\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-alternative-exchange-rate-date\"\r\n formControlName=\"paymentAlternativeExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentAlternativeExchangeRateDateInput\r\n #paymentAlternativeExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentAlternativeExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"paymentAlternativeExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentAlternativeExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentAlternativeExchangeRateDateDatepicker.writeValue(null);\r\n paymentAlternativeExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-line-extension-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalLineExtensionAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-line-extension-amount\"\r\n formControlName=\"legalMonetaryTotalLineExtensionAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-tax-exclusive-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalTaxExclusiveAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-tax-exclusive-amount\"\r\n formControlName=\"legalMonetaryTotalTaxExclusiveAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-tax-inclusive-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalTaxInclusiveAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-tax-inclusive-amount\"\r\n formControlName=\"legalMonetaryTotalTaxInclusiveAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-allowance-total-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalAllowanceTotalAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-allowance-total-amount\"\r\n formControlName=\"legalMonetaryTotalAllowanceTotalAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-charge-total-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalChargeTotalAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-charge-total-amount\"\r\n formControlName=\"legalMonetaryTotalChargeTotalAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-payable-rounding-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalPayableRoundingAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-payable-rounding-amount\"\r\n formControlName=\"legalMonetaryTotalPayableRoundingAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-payable-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalPayableAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-payable-amount\"\r\n formControlName=\"legalMonetaryTotalPayableAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-terms-note\">\r\n {{ 'eDonusum::PaymentTermsNote' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-terms-note\"\r\n formControlName=\"paymentTermsNote\"\r\n class=\"form-control\"\r\n maxlength=\"512\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-terms-payment-due-date\">\r\n {{ 'eDonusum::PaymentTermsPaymentDueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-terms-payment-due-date\"\r\n formControlName=\"paymentTermsPaymentDueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentTermsPaymentDueDateInput\r\n #paymentTermsPaymentDueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentTermsPaymentDueDateDatepicker.open()\"\r\n (keyup.space)=\"paymentTermsPaymentDueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentTermsPaymentDueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentTermsPaymentDueDateDatepicker.writeValue(null);\r\n paymentTermsPaymentDueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cust-inv-id\">\r\n {{ 'eDonusum::CustInvId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cust-inv-id\"\r\n formControlName=\"custInvId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"invoice-is-canceled\"\r\n formControlName=\"isCanceled\"\r\n class=\"form-check-input\"\r\n />\r\n \r\n <label for=\"invoice-is-canceled\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsCanceled' | abpLocalization }}\r\n </label>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cancel-code\">\r\n {{ 'eDonusum::CancelCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cancel-code\"\r\n formControlName=\"cancelCode\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cancel-description\">\r\n {{ 'eDonusum::CancelDescription' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cancel-description\"\r\n formControlName=\"cancelDescription\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-resource-doc-type\">\r\n {{ 'eDonusum::ResourceDocType' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-resource-doc-type\"\r\n formControlName=\"resourceDocType\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-resource-doc-entry\">\r\n {{ 'eDonusum::ResourceDocEntry' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-resource-doc-entry\"\r\n formControlName=\"resourceDocEntry\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-status\">\r\n {{ 'eDonusum::Status' | abpLocalization }}\r\n </label>\r\n \r\n <input type=\"number\" id=\"invoice-status\" formControlName=\"status\" class=\"form-control\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-receiver-response\">\r\n {{ 'eDonusum::ReceiverResponse' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-receiver-response\"\r\n formControlName=\"receiverResponse\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-receiver-response-desc\">\r\n {{ 'eDonusum::ReceiverResponseDesc' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-receiver-response-desc\"\r\n formControlName=\"receiverResponseDesc\"\r\n class=\"form-control\"\r\n maxlength=\"1024\"\r\n />\r\n </div>\r\n </div>\r\n </form>\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 \r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"invoice\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal> -->", styles: ["\n .excel-wrapper {\n width: 100%;\n max-height: 400px;\n overflow: auto;\n border: 1px solid #c6c6c6;\n font-family: Calibri, Arial, sans-serif;\n font-size: 14px;\n }\n\n .excel-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .excel-table th,\n .excel-table td {\n border: 1px solid #d0d0d0;\n padding: 6px 10px;\n white-space: nowrap;\n }\n\n .excel-table thead th {\n background-color: #f3f3f3;\n font-weight: 600;\n text-align: left;\n position: sticky;\n top: 0;\n z-index: 2;\n }\n\n .excel-table tbody tr:nth-child(even) {\n background-color: #fafafa;\n }\n\n .excel-table tbody tr:hover {\n background-color: #e6f2ff;\n }\n\n .right {\n text-align: right;\n }\n\n .open {\n color: #008000;\n font-weight: 500;\n }\n\n .closed {\n color: #c00000;\n font-weight: 500;\n }\n .alert-danger-top{\n background:#fde8e8;\n border:1px solid #f5c2c7;\n color:#b02a37;\n padding:10px 12px;\n border-radius:6px;\n font-family: Calibri, Arial, sans-serif;\n margin-bottom:10px;\n}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i9.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: i10.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i10.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i10.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i10.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i11.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: i12.DxoColumnChooserComponent, selector: "dxo-column-chooser", inputs: ["allowSearch", "emptyPanelText", "enabled", "height", "mode", "searchTimeout", "sortOrder", "title", "width"] }, { kind: "component", type: i12.DxoColumnFixingComponent, selector: "dxo-column-fixing", inputs: ["enabled", "texts"] }, { kind: "component", type: i12.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: i12.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i12.DxoLookupComponent, selector: "dxo-lookup", inputs: ["allowClearing", "calculateCellValue", "dataSource", "displayExpr", "valueExpr"] }, { kind: "component", type: i12.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i12.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: i12.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i12.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i12.DxoGroupingComponent, selector: "dxo-grouping", inputs: ["allowCollapsing", "autoExpandAll", "contextMenuEnabled", "expandMode", "texts"] }, { kind: "component", type: i12.DxoGroupPanelComponent, selector: "dxo-group-panel", inputs: ["allowColumnDragging", "emptyPanelText", "visible"], outputs: ["visibleChange"] }, { kind: "component", type: i12.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i12.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i12.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i12.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i12.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i13.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i14.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i14.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
227
+ HitInvoiceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitInvoiceComponent, deps: [{ token: i1.ListService }, { token: i2.HitInvoiceService }, { token: i3.HitGibPartnerPkService }, { token: i4.HitDocumentSerialService }, { token: i5.ToasterService }, { token: i5.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
228
+ HitInvoiceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitInvoiceComponent, selector: "lib-invoice", providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "dxInvoiceInstance", first: true, predicate: ["dxInvoiceInstance"], descendants: true }, { propertyName: "dxReceiverPKSInstance", first: true, predicate: ["dxReceiverPKSInstance"], descendants: true }, { propertyName: "dxInvoiceSerialInstance", first: true, predicate: ["dxInvoiceSerialInstance"], descendants: true }], ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/eqeqeq -->\r\n<abp-page [title]=\"'eDonusum::Invoices' | abpLocalization\">\r\n \r\n <p>{{ 'eDonusum::PendingInvoicesDescription' | abpLocalization }}</p>\r\n <div class=\"row mb-3\">\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.Invoices.Create'\" class=\"btn btn-warning btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"listActiveSeriesForMultiple()\">\r\n <i class=\"fa fa-tasks me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::SelectSerialMultiple' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Invoices.Create'\" class=\"btn btn-success btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendInvoiceMultiple()\">\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.Invoices.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.Invoices.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 </div>\r\n <abp-page-toolbar-container class=\"col\">\r\n \r\n </abp-page-toolbar-container>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n \r\n <dx-data-grid #dxInvoiceInstance [dataSource]=\"invoicesDataSource\" [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)=\"sendInvoiceSingle(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)=\"setInvoiceCancelWithOpen(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status == 99\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithOpen' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setInvoiceCancelWithRevise(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status == 99\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithRevise' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listReceiverPK(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\r\n <button ngbDropdownItem (click)=\"getInvoicePreview(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status==99\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i> {{ 'eDonusum::Preview' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getInvoiceXML(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status==99\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::PreviewXML' | 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 dataType=\"number\" dataField=\"resourceDocEntry\"\r\n caption=\"{{'eDonusum::ResourceDocEntry'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataType=\"number\" dataField=\"resourceDocNum\"\r\n caption=\"{{'eDonusum::ResourceDocNum'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"invoiceId\" caption=\"{{'eDonusum::InvoiceId'|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=\"accountingCustomerPartyName\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyName'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"accountingCustomerPartyVknTckn\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyVknTckn'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"buyerCustomerPartyName\" caption=\"{{'eDonusum::BuyerCustomerPartyName'|abpLocalization}}\"\r\n aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"status\" caption=\"{{'eDonusum::Status'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"invoiceStatusLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"profileId\" caption=\"{{'eDonusum::ProfileId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"invoiceTypeCode\" caption=\"{{'eDonusum::InvoiceTypeCode'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"legalMonetaryTotalPayableAmount\" caption=\"{{'eDonusum::PayableAmount'|abpLocalization}}\"\r\n dataType=\"number\" format=\"#,##0.00\"></dxi-column>\r\n <dxi-column dataField=\"documentCurrencyCode\" caption=\"{{'eDonusum::DocCurrency'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"receiverResponse\" caption=\"{{'eDonusum::ReceiverResponse'|abpLocalization}}\"\r\n cellTemplate=\"iconTemplate\">\r\n <dxo-lookup [dataSource]=\"invoiceReceiverResponseLookup\" 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' : 'gray'}\"></i>\r\n {{getReceiverResponseName(data.data.receiverResponse)}}\r\n </div>\r\n <dxi-column dataField=\"receiverResponseDesc\"\r\n caption=\"{{'eDonusum::ReceiverResponseDesc'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedReceiverPK\" dataType=\"date\"\r\n caption=\"{{'eDonusum::SelectedReceiverPK'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedInvoiceSerial\"\r\n caption=\"{{'eDonusum::SelectedInvoiceSerial'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"uuId\" caption=\"{{'eDonusum::UuId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"region\" caption=\"{{'eDonusum::Region'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n\r\n<abp-modal [busy]=\"isPKModalBusy\" [(visible)]=\"isPKModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{pkModalSelectedInvoiceResourceDocEntry}} {{ '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]=\"invoiceReceiverPKDataSource\" [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 Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Adres\" caption=\"Adres\"></dxi-column>\r\n <dxi-column [width]=\"150\" caption=\"{{'eDonusum::DefaultPK' | abpLocalization}}\"\r\n cellTemplate=\"defaultPkCheckboxTemplate\">\r\n <div *dxTemplate=\"let row of 'defaultPkCheckboxTemplate'\">\r\n <div class=\"form-check d-flex justify-content-center\">\r\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"row.data.isDefaultPK\" />\r\n </div>\r\n </div>\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 #dxInvoiceSerialInstance [dataSource]=\"invoiceSerialDataSource\" [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)=\"selectInvoiceSerial(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.code\" caption=\"Seri\"></dxi-column>\r\n <dxi-column dataField=\"Seri.description\"\r\n caption=\"{{'eDonusum::Description'|abpLocalization}}\"></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\r\n<abp-modal [(visible)]=\"isModalOpenForNotQueue\">\r\n <ng-template #abpHeader>\r\n <h3> \u00C7oklu PK ya sahip olan Belge Numara Listesi </h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <div class=\"alert-danger-top\" role=\"alert\">\r\n <b>Uyar\u0131:</b> \u00C7oklu PK ya sahip olanlar kuyru\u011Fa eklenemedi.\u0130\u015Flemlerden Al\u0131c\u0131 Adresi se\u00E7iniz.\r\n</div>\r\n <div class=\"excel-wrapper\">\r\n <table class=\"excel-table\">\r\n <thead>\r\n <tr>\r\n <td>#</td>\r\n <td>{{'eDonusum::ResourceDocEntry'|abpLocalization}}</td>\r\n <td> {{'eDonusum::Status'|abpLocalization}} </td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of invoiceNotSendQueueDataSource; let i = index\">\r\n <td>{{ i+1 }}</td>\r\n <td> {{item}} </td>\r\n <td> <i class=\"fa fa-times\"></i> </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n Kapat\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<style>\r\n .excel-wrapper {\r\n width: 100%;\r\n max-height: 400px;\r\n overflow: auto;\r\n border: 1px solid #c6c6c6;\r\n font-family: Calibri, Arial, sans-serif;\r\n font-size: 14px;\r\n }\r\n\r\n .excel-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n }\r\n\r\n .excel-table th,\r\n .excel-table td {\r\n border: 1px solid #d0d0d0;\r\n padding: 6px 10px;\r\n white-space: nowrap;\r\n }\r\n\r\n .excel-table thead th {\r\n background-color: #f3f3f3;\r\n font-weight: 600;\r\n text-align: left;\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n }\r\n\r\n .excel-table tbody tr:nth-child(even) {\r\n background-color: #fafafa;\r\n }\r\n\r\n .excel-table tbody tr:hover {\r\n background-color: #e6f2ff;\r\n }\r\n\r\n .right {\r\n text-align: right;\r\n }\r\n\r\n .open {\r\n color: #008000;\r\n font-weight: 500;\r\n }\r\n\r\n .closed {\r\n color: #c00000;\r\n font-weight: 500;\r\n }\r\n .alert-danger-top{\r\n background:#fde8e8;\r\n border:1px solid #f5c2c7;\r\n color:#b02a37;\r\n padding:10px 12px;\r\n border-radius:6px;\r\n font-family: Calibri, Arial, sans-serif;\r\n margin-bottom:10px;\r\n}\r\n</style>\r\n\r\n\r\n\r\n\r\n<!-- <abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::NewInvoice') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n \r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"invoice\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-ubl-version-id\">\r\n {{ 'eDonusum::UblVersionId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-ubl-version-id\"\r\n formControlName=\"ublVersionId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n autofocus\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-customization-id\">\r\n {{ 'eDonusum::CustomizationId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-customization-id\"\r\n formControlName=\"customizationId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-profile-id\">\r\n {{ 'eDonusum::ProfileId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-profile-id\"\r\n formControlName=\"profileId\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-id\">\r\n {{ 'eDonusum::InvoiceId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-id\"\r\n formControlName=\"invoiceId\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"invoice-copy-indicator\"\r\n formControlName=\"copyIndicator\"\r\n class=\"form-check-input\"\r\n />\r\n \r\n <label for=\"invoice-copy-indicator\" class=\"form-check-label\">\r\n {{ 'eDonusum::CopyIndicator' | abpLocalization }}\r\n </label>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-uu-id\">\r\n {{ 'eDonusum::UuId' | abpLocalization }} *\r\n </label>\r\n \r\n <input id=\"invoice-uu-id\" formControlName=\"uuId\" class=\"form-control\" maxlength=\"64\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-issue-date\">\r\n {{ 'eDonusum::IssueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-issue-date\"\r\n formControlName=\"issueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #issueDateInput\r\n #issueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"issueDateDatepicker.open()\"\r\n (keyup.space)=\"issueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"issueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n issueDateDatepicker.writeValue(null);\r\n issueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-issue-time\">\r\n {{ 'eDonusum::IssueTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-issue-time\"\r\n formControlName=\"issueTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #issueTimeInput\r\n #issueTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"issueTimeDatepicker.open()\"\r\n (keyup.space)=\"issueTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"issueTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n issueTimeDatepicker.writeValue(null);\r\n issueTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-type-code\">\r\n {{ 'eDonusum::InvoiceTypeCode' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-type-code\"\r\n formControlName=\"invoiceTypeCode\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-document-currency-code\">\r\n {{ 'eDonusum::DocumentCurrencyCode' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-document-currency-code\"\r\n formControlName=\"documentCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-currency-code\">\r\n {{ 'eDonusum::TaxCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-currency-code\"\r\n formControlName=\"taxCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-currency-code\">\r\n {{ 'eDonusum::PricingCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-currency-code\"\r\n formControlName=\"pricingCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-currency-code\">\r\n {{ 'eDonusum::PaymentCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-currency-code\"\r\n formControlName=\"paymentCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-alternative-currency-code\">\r\n {{ 'eDonusum::PaymentAlternativeCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-currency-code\"\r\n formControlName=\"paymentAlternativeCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-cost\">\r\n {{ 'eDonusum::AccountingCost' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-cost\"\r\n formControlName=\"accountingCost\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-line-count-numeric\">\r\n {{ 'eDonusum::LineCountNumeric' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-line-count-numeric\"\r\n formControlName=\"lineCountNumeric\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-start-date\">\r\n {{ 'eDonusum::InvoicePeriodStartDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-start-date\"\r\n formControlName=\"invoicePeriodStartDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodStartDateInput\r\n #invoicePeriodStartDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodStartDateDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodStartDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodStartDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodStartDateDatepicker.writeValue(null);\r\n invoicePeriodStartDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-start-time\">\r\n {{ 'eDonusum::InvoicePeriodStartTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-start-time\"\r\n formControlName=\"invoicePeriodStartTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodStartTimeInput\r\n #invoicePeriodStartTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodStartTimeDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodStartTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodStartTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodStartTimeDatepicker.writeValue(null);\r\n invoicePeriodStartTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-end-date\">\r\n {{ 'eDonusum::InvoicePeriodEndDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-end-date\"\r\n formControlName=\"invoicePeriodEndDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodEndDateInput\r\n #invoicePeriodEndDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodEndDateDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodEndDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodEndDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodEndDateDatepicker.writeValue(null);\r\n invoicePeriodEndDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-end-time\">\r\n {{ 'eDonusum::InvoicePeriodEndTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-end-time\"\r\n formControlName=\"invoicePeriodEndTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodEndTimeInput\r\n #invoicePeriodEndTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodEndTimeDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodEndTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodEndTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodEndTimeDatepicker.writeValue(null);\r\n invoicePeriodEndTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-duration-measure\">\r\n {{ 'eDonusum::InvoicePeriodDurationMeasure' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-duration-measure\"\r\n formControlName=\"invoicePeriodDurationMeasure\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodDurationMeasureInput\r\n #invoicePeriodDurationMeasureDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodDurationMeasureDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodDurationMeasureDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodDurationMeasureInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodDurationMeasureDatepicker.writeValue(null);\r\n invoicePeriodDurationMeasureDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-description\">\r\n {{ 'eDonusum::InvoicePeriodDescription' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-period-description\"\r\n formControlName=\"invoicePeriodDescription\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-id\">\r\n {{ 'eDonusum::OrderReferenceId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-id\"\r\n formControlName=\"orderReferenceId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-sales-order-id\">\r\n {{ 'eDonusum::OrderReferenceSalesOrderId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-sales-order-id\"\r\n formControlName=\"orderReferenceSalesOrderId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-issue-date\">\r\n {{ 'eDonusum::OrderReferenceIssueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-order-reference-issue-date\"\r\n formControlName=\"orderReferenceIssueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #orderReferenceIssueDateInput\r\n #orderReferenceIssueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"orderReferenceIssueDateDatepicker.open()\"\r\n (keyup.space)=\"orderReferenceIssueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"orderReferenceIssueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n orderReferenceIssueDateDatepicker.writeValue(null);\r\n orderReferenceIssueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-order-type-code\">\r\n {{ 'eDonusum::OrderReferenceOrderTypeCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-order-type-code\"\r\n formControlName=\"orderReferenceOrderTypeCode\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-name\">\r\n {{ 'eDonusum::AccountingSupplierPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-name\"\r\n formControlName=\"accountingSupplierPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-scheme-id\">\r\n {{ 'eDonusum::AccountingSupplierPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-scheme-id\"\r\n formControlName=\"accountingSupplierPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-vkn-tckn\">\r\n {{ 'eDonusum::AccountingSupplierPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-vkn-tckn\"\r\n formControlName=\"accountingSupplierPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-name\">\r\n {{ 'eDonusum::AccountingCustomerPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-name\"\r\n formControlName=\"accountingCustomerPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-scheme-id\">\r\n {{ 'eDonusum::AccountingCustomerPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-scheme-id\"\r\n formControlName=\"accountingCustomerPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-vkn-tckn\">\r\n {{ 'eDonusum::AccountingCustomerPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-vkn-tckn\"\r\n formControlName=\"accountingCustomerPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-name\">\r\n {{ 'eDonusum::BuyerCustomerPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-name\"\r\n formControlName=\"buyerCustomerPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-scheme-id\">\r\n {{ 'eDonusum::BuyerCustomerPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-scheme-id\"\r\n formControlName=\"buyerCustomerPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-vkn-tckn\">\r\n {{ 'eDonusum::BuyerCustomerPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-vkn-tckn\"\r\n formControlName=\"buyerCustomerPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-name\">\r\n {{ 'eDonusum::SellerSupplierPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-name\"\r\n formControlName=\"sellerSupplierPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-scheme-id\">\r\n {{ 'eDonusum::SellerSupplierPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-scheme-id\"\r\n formControlName=\"sellerSupplierPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-vkn-tckn\">\r\n {{ 'eDonusum::SellerSupplierPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-vkn-tckn\"\r\n formControlName=\"sellerSupplierPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-name\">\r\n {{ 'eDonusum::TaxRepresentativePartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-name\"\r\n formControlName=\"taxRepresentativePartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-scheme-id\">\r\n {{ 'eDonusum::TaxRepresentativePartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-scheme-id\"\r\n formControlName=\"taxRepresentativePartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-vkn-tckn\">\r\n {{ 'eDonusum::TaxRepresentativePartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-vkn-tckn\"\r\n formControlName=\"taxRepresentativePartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::TaxExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-exchange-rate-source-currency-code\"\r\n formControlName=\"taxExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::TaxExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-exchange-rate-target-currency-code\"\r\n formControlName=\"taxExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::TaxExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-tax-exchange-rate-calculation-rate\"\r\n formControlName=\"taxExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-date\">\r\n {{ 'eDonusum::TaxExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-tax-exchange-rate-date\"\r\n formControlName=\"taxExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #taxExchangeRateDateInput\r\n #taxExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"taxExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"taxExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"taxExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n taxExchangeRateDateDatepicker.writeValue(null);\r\n taxExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::PricingExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-exchange-rate-source-currency-code\"\r\n formControlName=\"pricingExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::PricingExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-exchange-rate-target-currency-code\"\r\n formControlName=\"pricingExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::PricingExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-pricing-exchange-rate-calculation-rate\"\r\n formControlName=\"pricingExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-date\">\r\n {{ 'eDonusum::PricingExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-pricing-exchange-rate-date\"\r\n formControlName=\"pricingExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #pricingExchangeRateDateInput\r\n #pricingExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"pricingExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"pricingExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"pricingExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n pricingExchangeRateDateDatepicker.writeValue(null);\r\n pricingExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::PaymentExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-exchange-rate-source-currency-code\"\r\n formControlName=\"paymentExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::PaymentExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-exchange-rate-target-currency-code\"\r\n formControlName=\"paymentExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::PaymentExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-payment-exchange-rate-calculation-rate\"\r\n formControlName=\"paymentExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-date\">\r\n {{ 'eDonusum::PaymentExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-exchange-rate-date\"\r\n formControlName=\"paymentExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentExchangeRateDateInput\r\n #paymentExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"paymentExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentExchangeRateDateDatepicker.writeValue(null);\r\n paymentExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-source-currency-code\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-exchange-rate-source-currency-code\"\r\n formControlName=\"paymentAlternativeExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-target-currency-code\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-exchange-rate-target-currency-code\"\r\n formControlName=\"paymentAlternativeExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-calculation-rate\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-payment-alternative-exchange-rate-calculation-rate\"\r\n formControlName=\"paymentAlternativeExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-alternative-exchange-rate-date\">\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-alternative-exchange-rate-date\"\r\n formControlName=\"paymentAlternativeExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentAlternativeExchangeRateDateInput\r\n #paymentAlternativeExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentAlternativeExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"paymentAlternativeExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentAlternativeExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentAlternativeExchangeRateDateDatepicker.writeValue(null);\r\n paymentAlternativeExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-line-extension-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalLineExtensionAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-line-extension-amount\"\r\n formControlName=\"legalMonetaryTotalLineExtensionAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-tax-exclusive-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalTaxExclusiveAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-tax-exclusive-amount\"\r\n formControlName=\"legalMonetaryTotalTaxExclusiveAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-tax-inclusive-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalTaxInclusiveAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-tax-inclusive-amount\"\r\n formControlName=\"legalMonetaryTotalTaxInclusiveAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-allowance-total-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalAllowanceTotalAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-allowance-total-amount\"\r\n formControlName=\"legalMonetaryTotalAllowanceTotalAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-charge-total-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalChargeTotalAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-charge-total-amount\"\r\n formControlName=\"legalMonetaryTotalChargeTotalAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-payable-rounding-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalPayableRoundingAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-payable-rounding-amount\"\r\n formControlName=\"legalMonetaryTotalPayableRoundingAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-payable-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalPayableAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-payable-amount\"\r\n formControlName=\"legalMonetaryTotalPayableAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-terms-note\">\r\n {{ 'eDonusum::PaymentTermsNote' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-terms-note\"\r\n formControlName=\"paymentTermsNote\"\r\n class=\"form-control\"\r\n maxlength=\"512\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-terms-payment-due-date\">\r\n {{ 'eDonusum::PaymentTermsPaymentDueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-terms-payment-due-date\"\r\n formControlName=\"paymentTermsPaymentDueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentTermsPaymentDueDateInput\r\n #paymentTermsPaymentDueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentTermsPaymentDueDateDatepicker.open()\"\r\n (keyup.space)=\"paymentTermsPaymentDueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentTermsPaymentDueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentTermsPaymentDueDateDatepicker.writeValue(null);\r\n paymentTermsPaymentDueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cust-inv-id\">\r\n {{ 'eDonusum::CustInvId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cust-inv-id\"\r\n formControlName=\"custInvId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"invoice-is-canceled\"\r\n formControlName=\"isCanceled\"\r\n class=\"form-check-input\"\r\n />\r\n \r\n <label for=\"invoice-is-canceled\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsCanceled' | abpLocalization }}\r\n </label>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cancel-code\">\r\n {{ 'eDonusum::CancelCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cancel-code\"\r\n formControlName=\"cancelCode\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cancel-description\">\r\n {{ 'eDonusum::CancelDescription' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cancel-description\"\r\n formControlName=\"cancelDescription\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-resource-doc-type\">\r\n {{ 'eDonusum::ResourceDocType' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-resource-doc-type\"\r\n formControlName=\"resourceDocType\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-resource-doc-entry\">\r\n {{ 'eDonusum::ResourceDocEntry' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-resource-doc-entry\"\r\n formControlName=\"resourceDocEntry\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-status\">\r\n {{ 'eDonusum::Status' | abpLocalization }}\r\n </label>\r\n \r\n <input type=\"number\" id=\"invoice-status\" formControlName=\"status\" class=\"form-control\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-receiver-response\">\r\n {{ 'eDonusum::ReceiverResponse' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-receiver-response\"\r\n formControlName=\"receiverResponse\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-receiver-response-desc\">\r\n {{ 'eDonusum::ReceiverResponseDesc' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-receiver-response-desc\"\r\n formControlName=\"receiverResponseDesc\"\r\n class=\"form-control\"\r\n maxlength=\"1024\"\r\n />\r\n </div>\r\n </div>\r\n </form>\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 \r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"invoice\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal> -->", styles: ["\n .excel-wrapper {\n width: 100%;\n max-height: 400px;\n overflow: auto;\n border: 1px solid #c6c6c6;\n font-family: Calibri, Arial, sans-serif;\n font-size: 14px;\n }\n\n .excel-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .excel-table th,\n .excel-table td {\n border: 1px solid #d0d0d0;\n padding: 6px 10px;\n white-space: nowrap;\n }\n\n .excel-table thead th {\n background-color: #f3f3f3;\n font-weight: 600;\n text-align: left;\n position: sticky;\n top: 0;\n z-index: 2;\n }\n\n .excel-table tbody tr:nth-child(even) {\n background-color: #fafafa;\n }\n\n .excel-table tbody tr:hover {\n background-color: #e6f2ff;\n }\n\n .right {\n text-align: right;\n }\n\n .open {\n color: #008000;\n font-weight: 500;\n }\n\n .closed {\n color: #c00000;\n font-weight: 500;\n }\n .alert-danger-top{\n background:#fde8e8;\n border:1px solid #f5c2c7;\n color:#b02a37;\n padding:10px 12px;\n border-radius:6px;\n font-family: Calibri, Arial, sans-serif;\n margin-bottom:10px;\n}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i7.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: 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 });
304
229
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitInvoiceComponent, decorators: [{
305
230
  type: Component,
306
- args: [{ selector: 'lib-invoice', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<!-- eslint-disable @angular-eslint/template/eqeqeq -->\r\n<abp-page [title]=\"'eDonusum::Invoices' | abpLocalization\">\r\n \r\n <p>G\u00F6nderimi tamamlanan ve g\u00F6nderilmesi beklenen faturalar\u0131 listeleyen ekran</p>\r\n <div class=\"row mb-3\">\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.Invoices.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"listActiveSeriesForMultiple()\">\r\n <i class=\"fa fa-tasks me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::SelectSerialMultiple' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Invoices.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"downloadPDFMultiple()\">\r\n <i class=\"fa fa-download me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::DownloadPDFMultiple' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Invoices.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendInvoiceMultiple()\">\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.Invoices.Create'\" class=\"btn btn-sm btn-success\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"getInvoiceResponses()\">\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.Invoices.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.Invoices.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 </div>\r\n <abp-page-toolbar-container class=\"col\">\r\n \r\n </abp-page-toolbar-container>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n \r\n <dx-data-grid #dxInvoiceInstance [dataSource]=\"invoicesDataSource\" [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)=\"sendInvoiceSingle(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)=\"setInvoiceCancelWithOpen(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status == 99\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithOpen' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setInvoiceCancelWithRevise(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status == 99\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithRevise' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listReceiverPK(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)=\"getInvoiceView(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)=\"getInvoicePreview(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status==99\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i> {{ 'eDonusum::Preview' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getInvoiceXML(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status==99\">\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 </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 dataType=\"number\" dataField=\"resourceDocEntry\"\r\n caption=\"{{'eDonusum::ResourceDocEntry'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataType=\"number\" dataField=\"resourceDocNum\"\r\n caption=\"{{'eDonusum::ResourceDocNum'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"invoiceId\" caption=\"{{'eDonusum::InvoiceId'|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=\"accountingCustomerPartyName\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyName'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"accountingCustomerPartyVknTckn\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyVknTckn'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"buyerCustomerPartyName\" caption=\"{{'eDonusum::BuyerCustomerPartyName'|abpLocalization}}\"\r\n aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"status\" caption=\"{{'eDonusum::Status'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"invoiceStatusLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"profileId\" caption=\"{{'eDonusum::ProfileId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"invoiceTypeCode\" caption=\"{{'eDonusum::InvoiceTypeCode'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"legalMonetaryTotalPayableAmount\" caption=\"{{'eDonusum::PayableAmount'|abpLocalization}}\"\r\n dataType=\"number\" format=\"#,##0.00\"></dxi-column>\r\n <dxi-column dataField=\"documentCurrencyCode\" caption=\"{{'eDonusum::DocCurrency'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"receiverResponse\" caption=\"{{'eDonusum::ReceiverResponse'|abpLocalization}}\"\r\n cellTemplate=\"iconTemplate\">\r\n <dxo-lookup [dataSource]=\"invoiceReceiverResponseLookup\" 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' : 'gray'}\"></i>\r\n {{getReceiverResponseName(data.data.receiverResponse)}}\r\n </div>\r\n <dxi-column dataField=\"receiverResponseDesc\"\r\n caption=\"{{'eDonusum::ReceiverResponseDesc'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedReceiverPK\" dataType=\"date\"\r\n caption=\"{{'eDonusum::SelectedReceiverPK'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedInvoiceSerial\"\r\n caption=\"{{'eDonusum::SelectedInvoiceSerial'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"uuId\" caption=\"{{'eDonusum::UuId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"region\" caption=\"{{'eDonusum::Region'|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::InvoiceFiles' | 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 #dxInvoiceFileInstance [dataSource]=\"invoiceFilesDataSource\" [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]=\"invoiceFileNameLookup\" 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]=\"isPKModalBusy\" [(visible)]=\"isPKModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{pkModalSelectedInvoiceResourceDocEntry}} {{ '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]=\"invoiceReceiverPKDataSource\" [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 Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Adres\" caption=\"Adres\"></dxi-column>\r\n <dxi-column [width]=\"150\" caption=\"{{'eDonusum::DefaultPK' | abpLocalization}}\"\r\n cellTemplate=\"defaultPkCheckboxTemplate\">\r\n <div *dxTemplate=\"let row of 'defaultPkCheckboxTemplate'\">\r\n <div class=\"form-check d-flex justify-content-center\">\r\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"row.data.isDefaultPK\" />\r\n </div>\r\n </div>\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 #dxInvoiceSerialInstance [dataSource]=\"invoiceSerialDataSource\" [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)=\"selectInvoiceSerial(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.code\" caption=\"Seri\"></dxi-column>\r\n <dxi-column dataField=\"Seri.description\"\r\n caption=\"{{'eDonusum::Description'|abpLocalization}}\"></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\r\n<abp-modal [(visible)]=\"isModalOpenForNotQueue\">\r\n <ng-template #abpHeader>\r\n <h3> \u00C7oklu PK ya sahip olan Belge Numara Listesi </h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <div class=\"alert-danger-top\" role=\"alert\">\r\n <b>Uyar\u0131:</b> \u00C7oklu PK ya sahip olanlar kuyru\u011Fa eklenemedi.\u0130\u015Flemlerden Al\u0131c\u0131 Adresi se\u00E7iniz.\r\n</div>\r\n <div class=\"excel-wrapper\">\r\n <table class=\"excel-table\">\r\n <thead>\r\n <tr>\r\n <td>#</td>\r\n <td>{{'eDonusum::ResourceDocEntry'|abpLocalization}}</td>\r\n <td> {{'eDonusum::Status'|abpLocalization}} </td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of invoiceNotSendQueueDataSource; let i = index\">\r\n <td>{{ i+1 }}</td>\r\n <td> {{item}} </td>\r\n <td> <i class=\"fa fa-times\"></i> </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n Kapat\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<style>\r\n .excel-wrapper {\r\n width: 100%;\r\n max-height: 400px;\r\n overflow: auto;\r\n border: 1px solid #c6c6c6;\r\n font-family: Calibri, Arial, sans-serif;\r\n font-size: 14px;\r\n }\r\n\r\n .excel-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n }\r\n\r\n .excel-table th,\r\n .excel-table td {\r\n border: 1px solid #d0d0d0;\r\n padding: 6px 10px;\r\n white-space: nowrap;\r\n }\r\n\r\n .excel-table thead th {\r\n background-color: #f3f3f3;\r\n font-weight: 600;\r\n text-align: left;\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n }\r\n\r\n .excel-table tbody tr:nth-child(even) {\r\n background-color: #fafafa;\r\n }\r\n\r\n .excel-table tbody tr:hover {\r\n background-color: #e6f2ff;\r\n }\r\n\r\n .right {\r\n text-align: right;\r\n }\r\n\r\n .open {\r\n color: #008000;\r\n font-weight: 500;\r\n }\r\n\r\n .closed {\r\n color: #c00000;\r\n font-weight: 500;\r\n }\r\n .alert-danger-top{\r\n background:#fde8e8;\r\n border:1px solid #f5c2c7;\r\n color:#b02a37;\r\n padding:10px 12px;\r\n border-radius:6px;\r\n font-family: Calibri, Arial, sans-serif;\r\n margin-bottom:10px;\r\n}\r\n</style>\r\n\r\n\r\n\r\n\r\n<!-- <abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::NewInvoice') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n \r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"invoice\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-ubl-version-id\">\r\n {{ 'eDonusum::UblVersionId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-ubl-version-id\"\r\n formControlName=\"ublVersionId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n autofocus\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-customization-id\">\r\n {{ 'eDonusum::CustomizationId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-customization-id\"\r\n formControlName=\"customizationId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-profile-id\">\r\n {{ 'eDonusum::ProfileId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-profile-id\"\r\n formControlName=\"profileId\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-id\">\r\n {{ 'eDonusum::InvoiceId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-id\"\r\n formControlName=\"invoiceId\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"invoice-copy-indicator\"\r\n formControlName=\"copyIndicator\"\r\n class=\"form-check-input\"\r\n />\r\n \r\n <label for=\"invoice-copy-indicator\" class=\"form-check-label\">\r\n {{ 'eDonusum::CopyIndicator' | abpLocalization }}\r\n </label>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-uu-id\">\r\n {{ 'eDonusum::UuId' | abpLocalization }} *\r\n </label>\r\n \r\n <input id=\"invoice-uu-id\" formControlName=\"uuId\" class=\"form-control\" maxlength=\"64\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-issue-date\">\r\n {{ 'eDonusum::IssueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-issue-date\"\r\n formControlName=\"issueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #issueDateInput\r\n #issueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"issueDateDatepicker.open()\"\r\n (keyup.space)=\"issueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"issueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n issueDateDatepicker.writeValue(null);\r\n issueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-issue-time\">\r\n {{ 'eDonusum::IssueTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-issue-time\"\r\n formControlName=\"issueTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #issueTimeInput\r\n #issueTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"issueTimeDatepicker.open()\"\r\n (keyup.space)=\"issueTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"issueTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n issueTimeDatepicker.writeValue(null);\r\n issueTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-type-code\">\r\n {{ 'eDonusum::InvoiceTypeCode' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-type-code\"\r\n formControlName=\"invoiceTypeCode\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-document-currency-code\">\r\n {{ 'eDonusum::DocumentCurrencyCode' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-document-currency-code\"\r\n formControlName=\"documentCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-currency-code\">\r\n {{ 'eDonusum::TaxCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-currency-code\"\r\n formControlName=\"taxCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-currency-code\">\r\n {{ 'eDonusum::PricingCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-currency-code\"\r\n formControlName=\"pricingCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-currency-code\">\r\n {{ 'eDonusum::PaymentCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-currency-code\"\r\n formControlName=\"paymentCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-alternative-currency-code\">\r\n {{ 'eDonusum::PaymentAlternativeCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-currency-code\"\r\n formControlName=\"paymentAlternativeCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-cost\">\r\n {{ 'eDonusum::AccountingCost' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-cost\"\r\n formControlName=\"accountingCost\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-line-count-numeric\">\r\n {{ 'eDonusum::LineCountNumeric' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-line-count-numeric\"\r\n formControlName=\"lineCountNumeric\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-start-date\">\r\n {{ 'eDonusum::InvoicePeriodStartDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-start-date\"\r\n formControlName=\"invoicePeriodStartDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodStartDateInput\r\n #invoicePeriodStartDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodStartDateDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodStartDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodStartDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodStartDateDatepicker.writeValue(null);\r\n invoicePeriodStartDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-start-time\">\r\n {{ 'eDonusum::InvoicePeriodStartTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-start-time\"\r\n formControlName=\"invoicePeriodStartTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodStartTimeInput\r\n #invoicePeriodStartTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodStartTimeDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodStartTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodStartTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodStartTimeDatepicker.writeValue(null);\r\n invoicePeriodStartTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-end-date\">\r\n {{ 'eDonusum::InvoicePeriodEndDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-end-date\"\r\n formControlName=\"invoicePeriodEndDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodEndDateInput\r\n #invoicePeriodEndDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodEndDateDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodEndDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodEndDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodEndDateDatepicker.writeValue(null);\r\n invoicePeriodEndDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-end-time\">\r\n {{ 'eDonusum::InvoicePeriodEndTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-end-time\"\r\n formControlName=\"invoicePeriodEndTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodEndTimeInput\r\n #invoicePeriodEndTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodEndTimeDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodEndTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodEndTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodEndTimeDatepicker.writeValue(null);\r\n invoicePeriodEndTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-duration-measure\">\r\n {{ 'eDonusum::InvoicePeriodDurationMeasure' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-duration-measure\"\r\n formControlName=\"invoicePeriodDurationMeasure\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodDurationMeasureInput\r\n #invoicePeriodDurationMeasureDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodDurationMeasureDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodDurationMeasureDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodDurationMeasureInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodDurationMeasureDatepicker.writeValue(null);\r\n invoicePeriodDurationMeasureDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-description\">\r\n {{ 'eDonusum::InvoicePeriodDescription' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-period-description\"\r\n formControlName=\"invoicePeriodDescription\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-id\">\r\n {{ 'eDonusum::OrderReferenceId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-id\"\r\n formControlName=\"orderReferenceId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-sales-order-id\">\r\n {{ 'eDonusum::OrderReferenceSalesOrderId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-sales-order-id\"\r\n formControlName=\"orderReferenceSalesOrderId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-issue-date\">\r\n {{ 'eDonusum::OrderReferenceIssueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-order-reference-issue-date\"\r\n formControlName=\"orderReferenceIssueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #orderReferenceIssueDateInput\r\n #orderReferenceIssueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"orderReferenceIssueDateDatepicker.open()\"\r\n (keyup.space)=\"orderReferenceIssueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"orderReferenceIssueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n orderReferenceIssueDateDatepicker.writeValue(null);\r\n orderReferenceIssueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-order-type-code\">\r\n {{ 'eDonusum::OrderReferenceOrderTypeCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-order-type-code\"\r\n formControlName=\"orderReferenceOrderTypeCode\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-name\">\r\n {{ 'eDonusum::AccountingSupplierPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-name\"\r\n formControlName=\"accountingSupplierPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-scheme-id\">\r\n {{ 'eDonusum::AccountingSupplierPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-scheme-id\"\r\n formControlName=\"accountingSupplierPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-vkn-tckn\">\r\n {{ 'eDonusum::AccountingSupplierPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-vkn-tckn\"\r\n formControlName=\"accountingSupplierPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-name\">\r\n {{ 'eDonusum::AccountingCustomerPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-name\"\r\n formControlName=\"accountingCustomerPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-scheme-id\">\r\n {{ 'eDonusum::AccountingCustomerPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-scheme-id\"\r\n formControlName=\"accountingCustomerPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-vkn-tckn\">\r\n {{ 'eDonusum::AccountingCustomerPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-vkn-tckn\"\r\n formControlName=\"accountingCustomerPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-name\">\r\n {{ 'eDonusum::BuyerCustomerPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-name\"\r\n formControlName=\"buyerCustomerPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-scheme-id\">\r\n {{ 'eDonusum::BuyerCustomerPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-scheme-id\"\r\n formControlName=\"buyerCustomerPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-vkn-tckn\">\r\n {{ 'eDonusum::BuyerCustomerPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-vkn-tckn\"\r\n formControlName=\"buyerCustomerPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-name\">\r\n {{ 'eDonusum::SellerSupplierPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-name\"\r\n formControlName=\"sellerSupplierPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-scheme-id\">\r\n {{ 'eDonusum::SellerSupplierPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-scheme-id\"\r\n formControlName=\"sellerSupplierPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-vkn-tckn\">\r\n {{ 'eDonusum::SellerSupplierPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-vkn-tckn\"\r\n formControlName=\"sellerSupplierPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-name\">\r\n {{ 'eDonusum::TaxRepresentativePartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-name\"\r\n formControlName=\"taxRepresentativePartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-scheme-id\">\r\n {{ 'eDonusum::TaxRepresentativePartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-scheme-id\"\r\n formControlName=\"taxRepresentativePartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-vkn-tckn\">\r\n {{ 'eDonusum::TaxRepresentativePartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-vkn-tckn\"\r\n formControlName=\"taxRepresentativePartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::TaxExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-exchange-rate-source-currency-code\"\r\n formControlName=\"taxExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::TaxExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-exchange-rate-target-currency-code\"\r\n formControlName=\"taxExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::TaxExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-tax-exchange-rate-calculation-rate\"\r\n formControlName=\"taxExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-date\">\r\n {{ 'eDonusum::TaxExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-tax-exchange-rate-date\"\r\n formControlName=\"taxExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #taxExchangeRateDateInput\r\n #taxExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"taxExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"taxExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"taxExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n taxExchangeRateDateDatepicker.writeValue(null);\r\n taxExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::PricingExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-exchange-rate-source-currency-code\"\r\n formControlName=\"pricingExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::PricingExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-exchange-rate-target-currency-code\"\r\n formControlName=\"pricingExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::PricingExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-pricing-exchange-rate-calculation-rate\"\r\n formControlName=\"pricingExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-date\">\r\n {{ 'eDonusum::PricingExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-pricing-exchange-rate-date\"\r\n formControlName=\"pricingExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #pricingExchangeRateDateInput\r\n #pricingExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"pricingExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"pricingExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"pricingExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n pricingExchangeRateDateDatepicker.writeValue(null);\r\n pricingExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::PaymentExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-exchange-rate-source-currency-code\"\r\n formControlName=\"paymentExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::PaymentExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-exchange-rate-target-currency-code\"\r\n formControlName=\"paymentExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::PaymentExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-payment-exchange-rate-calculation-rate\"\r\n formControlName=\"paymentExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-date\">\r\n {{ 'eDonusum::PaymentExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-exchange-rate-date\"\r\n formControlName=\"paymentExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentExchangeRateDateInput\r\n #paymentExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"paymentExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentExchangeRateDateDatepicker.writeValue(null);\r\n paymentExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-source-currency-code\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-exchange-rate-source-currency-code\"\r\n formControlName=\"paymentAlternativeExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-target-currency-code\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-exchange-rate-target-currency-code\"\r\n formControlName=\"paymentAlternativeExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-calculation-rate\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-payment-alternative-exchange-rate-calculation-rate\"\r\n formControlName=\"paymentAlternativeExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-alternative-exchange-rate-date\">\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-alternative-exchange-rate-date\"\r\n formControlName=\"paymentAlternativeExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentAlternativeExchangeRateDateInput\r\n #paymentAlternativeExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentAlternativeExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"paymentAlternativeExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentAlternativeExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentAlternativeExchangeRateDateDatepicker.writeValue(null);\r\n paymentAlternativeExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-line-extension-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalLineExtensionAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-line-extension-amount\"\r\n formControlName=\"legalMonetaryTotalLineExtensionAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-tax-exclusive-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalTaxExclusiveAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-tax-exclusive-amount\"\r\n formControlName=\"legalMonetaryTotalTaxExclusiveAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-tax-inclusive-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalTaxInclusiveAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-tax-inclusive-amount\"\r\n formControlName=\"legalMonetaryTotalTaxInclusiveAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-allowance-total-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalAllowanceTotalAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-allowance-total-amount\"\r\n formControlName=\"legalMonetaryTotalAllowanceTotalAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-charge-total-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalChargeTotalAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-charge-total-amount\"\r\n formControlName=\"legalMonetaryTotalChargeTotalAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-payable-rounding-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalPayableRoundingAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-payable-rounding-amount\"\r\n formControlName=\"legalMonetaryTotalPayableRoundingAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-payable-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalPayableAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-payable-amount\"\r\n formControlName=\"legalMonetaryTotalPayableAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-terms-note\">\r\n {{ 'eDonusum::PaymentTermsNote' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-terms-note\"\r\n formControlName=\"paymentTermsNote\"\r\n class=\"form-control\"\r\n maxlength=\"512\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-terms-payment-due-date\">\r\n {{ 'eDonusum::PaymentTermsPaymentDueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-terms-payment-due-date\"\r\n formControlName=\"paymentTermsPaymentDueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentTermsPaymentDueDateInput\r\n #paymentTermsPaymentDueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentTermsPaymentDueDateDatepicker.open()\"\r\n (keyup.space)=\"paymentTermsPaymentDueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentTermsPaymentDueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentTermsPaymentDueDateDatepicker.writeValue(null);\r\n paymentTermsPaymentDueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cust-inv-id\">\r\n {{ 'eDonusum::CustInvId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cust-inv-id\"\r\n formControlName=\"custInvId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"invoice-is-canceled\"\r\n formControlName=\"isCanceled\"\r\n class=\"form-check-input\"\r\n />\r\n \r\n <label for=\"invoice-is-canceled\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsCanceled' | abpLocalization }}\r\n </label>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cancel-code\">\r\n {{ 'eDonusum::CancelCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cancel-code\"\r\n formControlName=\"cancelCode\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cancel-description\">\r\n {{ 'eDonusum::CancelDescription' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cancel-description\"\r\n formControlName=\"cancelDescription\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-resource-doc-type\">\r\n {{ 'eDonusum::ResourceDocType' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-resource-doc-type\"\r\n formControlName=\"resourceDocType\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-resource-doc-entry\">\r\n {{ 'eDonusum::ResourceDocEntry' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-resource-doc-entry\"\r\n formControlName=\"resourceDocEntry\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-status\">\r\n {{ 'eDonusum::Status' | abpLocalization }}\r\n </label>\r\n \r\n <input type=\"number\" id=\"invoice-status\" formControlName=\"status\" class=\"form-control\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-receiver-response\">\r\n {{ 'eDonusum::ReceiverResponse' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-receiver-response\"\r\n formControlName=\"receiverResponse\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-receiver-response-desc\">\r\n {{ 'eDonusum::ReceiverResponseDesc' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-receiver-response-desc\"\r\n formControlName=\"receiverResponseDesc\"\r\n class=\"form-control\"\r\n maxlength=\"1024\"\r\n />\r\n </div>\r\n </div>\r\n </form>\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 \r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"invoice\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal> -->", styles: ["\n .excel-wrapper {\n width: 100%;\n max-height: 400px;\n overflow: auto;\n border: 1px solid #c6c6c6;\n font-family: Calibri, Arial, sans-serif;\n font-size: 14px;\n }\n\n .excel-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .excel-table th,\n .excel-table td {\n border: 1px solid #d0d0d0;\n padding: 6px 10px;\n white-space: nowrap;\n }\n\n .excel-table thead th {\n background-color: #f3f3f3;\n font-weight: 600;\n text-align: left;\n position: sticky;\n top: 0;\n z-index: 2;\n }\n\n .excel-table tbody tr:nth-child(even) {\n background-color: #fafafa;\n }\n\n .excel-table tbody tr:hover {\n background-color: #e6f2ff;\n }\n\n .right {\n text-align: right;\n }\n\n .open {\n color: #008000;\n font-weight: 500;\n }\n\n .closed {\n color: #c00000;\n font-weight: 500;\n }\n .alert-danger-top{\n background:#fde8e8;\n border:1px solid #f5c2c7;\n color:#b02a37;\n padding:10px 12px;\n border-radius:6px;\n font-family: Calibri, Arial, sans-serif;\n margin-bottom:10px;\n}\n"] }]
307
- }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.HitInvoiceService }, { type: i3.HitGibPartnerPkService }, { type: i4.HitFileDocumentTypeService }, { type: i5.HitDocumentSerialService }, { type: i6.ToasterService }, { type: i6.ConfirmationService }, { type: i7.HitSharedService }]; }, propDecorators: { dxInvoiceInstance: [{
231
+ args: [{ selector: 'lib-invoice', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<!-- eslint-disable @angular-eslint/template/eqeqeq -->\r\n<abp-page [title]=\"'eDonusum::Invoices' | abpLocalization\">\r\n \r\n <p>{{ 'eDonusum::PendingInvoicesDescription' | abpLocalization }}</p>\r\n <div class=\"row mb-3\">\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.Invoices.Create'\" class=\"btn btn-warning btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"listActiveSeriesForMultiple()\">\r\n <i class=\"fa fa-tasks me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::SelectSerialMultiple' | abpLocalization }}\r\n </button>\r\n <button *abpPermission=\"'eDonusum.Invoices.Create'\" class=\"btn btn-success btn-sm\" type=\"button\"\r\n style=\"margin-right: 5px;\" (click)=\"sendInvoiceMultiple()\">\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.Invoices.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.Invoices.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 </div>\r\n <abp-page-toolbar-container class=\"col\">\r\n \r\n </abp-page-toolbar-container>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n \r\n <dx-data-grid #dxInvoiceInstance [dataSource]=\"invoicesDataSource\" [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)=\"sendInvoiceSingle(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)=\"setInvoiceCancelWithOpen(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status == 99\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithOpen' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"setInvoiceCancelWithRevise(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status == 99\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i> {{ 'eDonusum::SetCancelWithRevise' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"listReceiverPK(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\r\n <button ngbDropdownItem (click)=\"getInvoicePreview(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status==99\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i> {{ 'eDonusum::Preview' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"getInvoiceXML(row.data)\"\r\n *ngIf=\"row.data.status == 100 || row.data.status==99\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i> {{ 'eDonusum::PreviewXML' | 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 dataType=\"number\" dataField=\"resourceDocEntry\"\r\n caption=\"{{'eDonusum::ResourceDocEntry'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataType=\"number\" dataField=\"resourceDocNum\"\r\n caption=\"{{'eDonusum::ResourceDocNum'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"invoiceId\" caption=\"{{'eDonusum::InvoiceId'|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=\"accountingCustomerPartyName\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyName'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"accountingCustomerPartyVknTckn\"\r\n caption=\"{{'eDonusum::AccountingCustomerPartyVknTckn'|abpLocalization}}\" aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"buyerCustomerPartyName\" caption=\"{{'eDonusum::BuyerCustomerPartyName'|abpLocalization}}\"\r\n aria-hidden=\"true\"></dxi-column>\r\n <dxi-column dataField=\"status\" caption=\"{{'eDonusum::Status'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"invoiceStatusLookup\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"profileId\" caption=\"{{'eDonusum::ProfileId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"invoiceTypeCode\" caption=\"{{'eDonusum::InvoiceTypeCode'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"legalMonetaryTotalPayableAmount\" caption=\"{{'eDonusum::PayableAmount'|abpLocalization}}\"\r\n dataType=\"number\" format=\"#,##0.00\"></dxi-column>\r\n <dxi-column dataField=\"documentCurrencyCode\" caption=\"{{'eDonusum::DocCurrency'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"receiverResponse\" caption=\"{{'eDonusum::ReceiverResponse'|abpLocalization}}\"\r\n cellTemplate=\"iconTemplate\">\r\n <dxo-lookup [dataSource]=\"invoiceReceiverResponseLookup\" 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' : 'gray'}\"></i>\r\n {{getReceiverResponseName(data.data.receiverResponse)}}\r\n </div>\r\n <dxi-column dataField=\"receiverResponseDesc\"\r\n caption=\"{{'eDonusum::ReceiverResponseDesc'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedReceiverPK\" dataType=\"date\"\r\n caption=\"{{'eDonusum::SelectedReceiverPK'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"selectedInvoiceSerial\"\r\n caption=\"{{'eDonusum::SelectedInvoiceSerial'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"uuId\" caption=\"{{'eDonusum::UuId'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"region\" caption=\"{{'eDonusum::Region'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n\r\n<abp-modal [busy]=\"isPKModalBusy\" [(visible)]=\"isPKModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{pkModalSelectedInvoiceResourceDocEntry}} {{ '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]=\"invoiceReceiverPKDataSource\" [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 Se\u00E7\r\n </button>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"Adres\" caption=\"Adres\"></dxi-column>\r\n <dxi-column [width]=\"150\" caption=\"{{'eDonusum::DefaultPK' | abpLocalization}}\"\r\n cellTemplate=\"defaultPkCheckboxTemplate\">\r\n <div *dxTemplate=\"let row of 'defaultPkCheckboxTemplate'\">\r\n <div class=\"form-check d-flex justify-content-center\">\r\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"row.data.isDefaultPK\" />\r\n </div>\r\n </div>\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 #dxInvoiceSerialInstance [dataSource]=\"invoiceSerialDataSource\" [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)=\"selectInvoiceSerial(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.code\" caption=\"Seri\"></dxi-column>\r\n <dxi-column dataField=\"Seri.description\"\r\n caption=\"{{'eDonusum::Description'|abpLocalization}}\"></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\r\n<abp-modal [(visible)]=\"isModalOpenForNotQueue\">\r\n <ng-template #abpHeader>\r\n <h3> \u00C7oklu PK ya sahip olan Belge Numara Listesi </h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <div class=\"alert-danger-top\" role=\"alert\">\r\n <b>Uyar\u0131:</b> \u00C7oklu PK ya sahip olanlar kuyru\u011Fa eklenemedi.\u0130\u015Flemlerden Al\u0131c\u0131 Adresi se\u00E7iniz.\r\n</div>\r\n <div class=\"excel-wrapper\">\r\n <table class=\"excel-table\">\r\n <thead>\r\n <tr>\r\n <td>#</td>\r\n <td>{{'eDonusum::ResourceDocEntry'|abpLocalization}}</td>\r\n <td> {{'eDonusum::Status'|abpLocalization}} </td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of invoiceNotSendQueueDataSource; let i = index\">\r\n <td>{{ i+1 }}</td>\r\n <td> {{item}} </td>\r\n <td> <i class=\"fa fa-times\"></i> </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n Kapat\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<style>\r\n .excel-wrapper {\r\n width: 100%;\r\n max-height: 400px;\r\n overflow: auto;\r\n border: 1px solid #c6c6c6;\r\n font-family: Calibri, Arial, sans-serif;\r\n font-size: 14px;\r\n }\r\n\r\n .excel-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n }\r\n\r\n .excel-table th,\r\n .excel-table td {\r\n border: 1px solid #d0d0d0;\r\n padding: 6px 10px;\r\n white-space: nowrap;\r\n }\r\n\r\n .excel-table thead th {\r\n background-color: #f3f3f3;\r\n font-weight: 600;\r\n text-align: left;\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n }\r\n\r\n .excel-table tbody tr:nth-child(even) {\r\n background-color: #fafafa;\r\n }\r\n\r\n .excel-table tbody tr:hover {\r\n background-color: #e6f2ff;\r\n }\r\n\r\n .right {\r\n text-align: right;\r\n }\r\n\r\n .open {\r\n color: #008000;\r\n font-weight: 500;\r\n }\r\n\r\n .closed {\r\n color: #c00000;\r\n font-weight: 500;\r\n }\r\n .alert-danger-top{\r\n background:#fde8e8;\r\n border:1px solid #f5c2c7;\r\n color:#b02a37;\r\n padding:10px 12px;\r\n border-radius:6px;\r\n font-family: Calibri, Arial, sans-serif;\r\n margin-bottom:10px;\r\n}\r\n</style>\r\n\r\n\r\n\r\n\r\n<!-- <abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::NewInvoice') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n \r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"invoice\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-ubl-version-id\">\r\n {{ 'eDonusum::UblVersionId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-ubl-version-id\"\r\n formControlName=\"ublVersionId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n autofocus\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-customization-id\">\r\n {{ 'eDonusum::CustomizationId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-customization-id\"\r\n formControlName=\"customizationId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-profile-id\">\r\n {{ 'eDonusum::ProfileId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-profile-id\"\r\n formControlName=\"profileId\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-id\">\r\n {{ 'eDonusum::InvoiceId' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-id\"\r\n formControlName=\"invoiceId\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"invoice-copy-indicator\"\r\n formControlName=\"copyIndicator\"\r\n class=\"form-check-input\"\r\n />\r\n \r\n <label for=\"invoice-copy-indicator\" class=\"form-check-label\">\r\n {{ 'eDonusum::CopyIndicator' | abpLocalization }}\r\n </label>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-uu-id\">\r\n {{ 'eDonusum::UuId' | abpLocalization }} *\r\n </label>\r\n \r\n <input id=\"invoice-uu-id\" formControlName=\"uuId\" class=\"form-control\" maxlength=\"64\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-issue-date\">\r\n {{ 'eDonusum::IssueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-issue-date\"\r\n formControlName=\"issueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #issueDateInput\r\n #issueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"issueDateDatepicker.open()\"\r\n (keyup.space)=\"issueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"issueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n issueDateDatepicker.writeValue(null);\r\n issueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-issue-time\">\r\n {{ 'eDonusum::IssueTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-issue-time\"\r\n formControlName=\"issueTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #issueTimeInput\r\n #issueTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"issueTimeDatepicker.open()\"\r\n (keyup.space)=\"issueTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"issueTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n issueTimeDatepicker.writeValue(null);\r\n issueTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-type-code\">\r\n {{ 'eDonusum::InvoiceTypeCode' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-type-code\"\r\n formControlName=\"invoiceTypeCode\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-document-currency-code\">\r\n {{ 'eDonusum::DocumentCurrencyCode' | abpLocalization }} *\r\n </label>\r\n \r\n <input\r\n id=\"invoice-document-currency-code\"\r\n formControlName=\"documentCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-currency-code\">\r\n {{ 'eDonusum::TaxCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-currency-code\"\r\n formControlName=\"taxCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-currency-code\">\r\n {{ 'eDonusum::PricingCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-currency-code\"\r\n formControlName=\"pricingCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-currency-code\">\r\n {{ 'eDonusum::PaymentCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-currency-code\"\r\n formControlName=\"paymentCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-alternative-currency-code\">\r\n {{ 'eDonusum::PaymentAlternativeCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-currency-code\"\r\n formControlName=\"paymentAlternativeCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-cost\">\r\n {{ 'eDonusum::AccountingCost' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-cost\"\r\n formControlName=\"accountingCost\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-line-count-numeric\">\r\n {{ 'eDonusum::LineCountNumeric' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-line-count-numeric\"\r\n formControlName=\"lineCountNumeric\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-start-date\">\r\n {{ 'eDonusum::InvoicePeriodStartDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-start-date\"\r\n formControlName=\"invoicePeriodStartDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodStartDateInput\r\n #invoicePeriodStartDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodStartDateDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodStartDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodStartDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodStartDateDatepicker.writeValue(null);\r\n invoicePeriodStartDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-start-time\">\r\n {{ 'eDonusum::InvoicePeriodStartTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-start-time\"\r\n formControlName=\"invoicePeriodStartTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodStartTimeInput\r\n #invoicePeriodStartTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodStartTimeDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodStartTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodStartTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodStartTimeDatepicker.writeValue(null);\r\n invoicePeriodStartTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-end-date\">\r\n {{ 'eDonusum::InvoicePeriodEndDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-end-date\"\r\n formControlName=\"invoicePeriodEndDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodEndDateInput\r\n #invoicePeriodEndDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodEndDateDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodEndDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodEndDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodEndDateDatepicker.writeValue(null);\r\n invoicePeriodEndDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-end-time\">\r\n {{ 'eDonusum::InvoicePeriodEndTime' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-end-time\"\r\n formControlName=\"invoicePeriodEndTime\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodEndTimeInput\r\n #invoicePeriodEndTimeDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodEndTimeDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodEndTimeDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodEndTimeInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodEndTimeDatepicker.writeValue(null);\r\n invoicePeriodEndTimeDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-duration-measure\">\r\n {{ 'eDonusum::InvoicePeriodDurationMeasure' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-invoice-period-duration-measure\"\r\n formControlName=\"invoicePeriodDurationMeasure\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #invoicePeriodDurationMeasureInput\r\n #invoicePeriodDurationMeasureDatepicker=\"ngbDatepicker\"\r\n (click)=\"invoicePeriodDurationMeasureDatepicker.open()\"\r\n (keyup.space)=\"invoicePeriodDurationMeasureDatepicker.open()\"\r\n />\r\n <div *ngIf=\"invoicePeriodDurationMeasureInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n invoicePeriodDurationMeasureDatepicker.writeValue(null);\r\n invoicePeriodDurationMeasureDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-invoice-period-description\">\r\n {{ 'eDonusum::InvoicePeriodDescription' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-invoice-period-description\"\r\n formControlName=\"invoicePeriodDescription\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-id\">\r\n {{ 'eDonusum::OrderReferenceId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-id\"\r\n formControlName=\"orderReferenceId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-sales-order-id\">\r\n {{ 'eDonusum::OrderReferenceSalesOrderId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-sales-order-id\"\r\n formControlName=\"orderReferenceSalesOrderId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-issue-date\">\r\n {{ 'eDonusum::OrderReferenceIssueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-order-reference-issue-date\"\r\n formControlName=\"orderReferenceIssueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #orderReferenceIssueDateInput\r\n #orderReferenceIssueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"orderReferenceIssueDateDatepicker.open()\"\r\n (keyup.space)=\"orderReferenceIssueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"orderReferenceIssueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n orderReferenceIssueDateDatepicker.writeValue(null);\r\n orderReferenceIssueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-order-reference-order-type-code\">\r\n {{ 'eDonusum::OrderReferenceOrderTypeCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-order-reference-order-type-code\"\r\n formControlName=\"orderReferenceOrderTypeCode\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-name\">\r\n {{ 'eDonusum::AccountingSupplierPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-name\"\r\n formControlName=\"accountingSupplierPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-scheme-id\">\r\n {{ 'eDonusum::AccountingSupplierPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-scheme-id\"\r\n formControlName=\"accountingSupplierPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-supplier-party-vkn-tckn\">\r\n {{ 'eDonusum::AccountingSupplierPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-supplier-party-vkn-tckn\"\r\n formControlName=\"accountingSupplierPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-name\">\r\n {{ 'eDonusum::AccountingCustomerPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-name\"\r\n formControlName=\"accountingCustomerPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-scheme-id\">\r\n {{ 'eDonusum::AccountingCustomerPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-scheme-id\"\r\n formControlName=\"accountingCustomerPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-accounting-customer-party-vkn-tckn\">\r\n {{ 'eDonusum::AccountingCustomerPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-accounting-customer-party-vkn-tckn\"\r\n formControlName=\"accountingCustomerPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-name\">\r\n {{ 'eDonusum::BuyerCustomerPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-name\"\r\n formControlName=\"buyerCustomerPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-scheme-id\">\r\n {{ 'eDonusum::BuyerCustomerPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-scheme-id\"\r\n formControlName=\"buyerCustomerPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-buyer-customer-party-vkn-tckn\">\r\n {{ 'eDonusum::BuyerCustomerPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-buyer-customer-party-vkn-tckn\"\r\n formControlName=\"buyerCustomerPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-name\">\r\n {{ 'eDonusum::SellerSupplierPartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-name\"\r\n formControlName=\"sellerSupplierPartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-scheme-id\">\r\n {{ 'eDonusum::SellerSupplierPartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-scheme-id\"\r\n formControlName=\"sellerSupplierPartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-seller-supplier-party-vkn-tckn\">\r\n {{ 'eDonusum::SellerSupplierPartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-seller-supplier-party-vkn-tckn\"\r\n formControlName=\"sellerSupplierPartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-name\">\r\n {{ 'eDonusum::TaxRepresentativePartyName' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-name\"\r\n formControlName=\"taxRepresentativePartyName\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-scheme-id\">\r\n {{ 'eDonusum::TaxRepresentativePartySchemeId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-scheme-id\"\r\n formControlName=\"taxRepresentativePartySchemeId\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-representative-party-vkn-tckn\">\r\n {{ 'eDonusum::TaxRepresentativePartyVknTckn' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-representative-party-vkn-tckn\"\r\n formControlName=\"taxRepresentativePartyVknTckn\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::TaxExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-exchange-rate-source-currency-code\"\r\n formControlName=\"taxExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::TaxExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-tax-exchange-rate-target-currency-code\"\r\n formControlName=\"taxExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::TaxExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-tax-exchange-rate-calculation-rate\"\r\n formControlName=\"taxExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-tax-exchange-rate-date\">\r\n {{ 'eDonusum::TaxExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-tax-exchange-rate-date\"\r\n formControlName=\"taxExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #taxExchangeRateDateInput\r\n #taxExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"taxExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"taxExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"taxExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n taxExchangeRateDateDatepicker.writeValue(null);\r\n taxExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::PricingExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-exchange-rate-source-currency-code\"\r\n formControlName=\"pricingExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::PricingExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-pricing-exchange-rate-target-currency-code\"\r\n formControlName=\"pricingExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::PricingExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-pricing-exchange-rate-calculation-rate\"\r\n formControlName=\"pricingExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-pricing-exchange-rate-date\">\r\n {{ 'eDonusum::PricingExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-pricing-exchange-rate-date\"\r\n formControlName=\"pricingExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #pricingExchangeRateDateInput\r\n #pricingExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"pricingExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"pricingExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"pricingExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n pricingExchangeRateDateDatepicker.writeValue(null);\r\n pricingExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-source-currency-code\">\r\n {{ 'eDonusum::PaymentExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-exchange-rate-source-currency-code\"\r\n formControlName=\"paymentExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-target-currency-code\">\r\n {{ 'eDonusum::PaymentExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-exchange-rate-target-currency-code\"\r\n formControlName=\"paymentExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-calculation-rate\">\r\n {{ 'eDonusum::PaymentExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-payment-exchange-rate-calculation-rate\"\r\n formControlName=\"paymentExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-exchange-rate-date\">\r\n {{ 'eDonusum::PaymentExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-exchange-rate-date\"\r\n formControlName=\"paymentExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentExchangeRateDateInput\r\n #paymentExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"paymentExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentExchangeRateDateDatepicker.writeValue(null);\r\n paymentExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-source-currency-code\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateSourceCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-exchange-rate-source-currency-code\"\r\n formControlName=\"paymentAlternativeExchangeRateSourceCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-target-currency-code\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateTargetCurrencyCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-alternative-exchange-rate-target-currency-code\"\r\n formControlName=\"paymentAlternativeExchangeRateTargetCurrencyCode\"\r\n class=\"form-control\"\r\n maxlength=\"3\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label\r\n class=\"form-label\"\r\n for=\"invoice-payment-alternative-exchange-rate-calculation-rate\"\r\n >\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateCalculationRate' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-payment-alternative-exchange-rate-calculation-rate\"\r\n formControlName=\"paymentAlternativeExchangeRateCalculationRate\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-alternative-exchange-rate-date\">\r\n {{ 'eDonusum::PaymentAlternativeExchangeRateDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-alternative-exchange-rate-date\"\r\n formControlName=\"paymentAlternativeExchangeRateDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentAlternativeExchangeRateDateInput\r\n #paymentAlternativeExchangeRateDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentAlternativeExchangeRateDateDatepicker.open()\"\r\n (keyup.space)=\"paymentAlternativeExchangeRateDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentAlternativeExchangeRateDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentAlternativeExchangeRateDateDatepicker.writeValue(null);\r\n paymentAlternativeExchangeRateDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-line-extension-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalLineExtensionAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-line-extension-amount\"\r\n formControlName=\"legalMonetaryTotalLineExtensionAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-tax-exclusive-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalTaxExclusiveAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-tax-exclusive-amount\"\r\n formControlName=\"legalMonetaryTotalTaxExclusiveAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-tax-inclusive-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalTaxInclusiveAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-tax-inclusive-amount\"\r\n formControlName=\"legalMonetaryTotalTaxInclusiveAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-allowance-total-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalAllowanceTotalAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-allowance-total-amount\"\r\n formControlName=\"legalMonetaryTotalAllowanceTotalAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-charge-total-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalChargeTotalAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-charge-total-amount\"\r\n formControlName=\"legalMonetaryTotalChargeTotalAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-payable-rounding-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalPayableRoundingAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-payable-rounding-amount\"\r\n formControlName=\"legalMonetaryTotalPayableRoundingAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-legal-monetary-total-payable-amount\">\r\n {{ 'eDonusum::LegalMonetaryTotalPayableAmount' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-legal-monetary-total-payable-amount\"\r\n formControlName=\"legalMonetaryTotalPayableAmount\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-terms-note\">\r\n {{ 'eDonusum::PaymentTermsNote' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-payment-terms-note\"\r\n formControlName=\"paymentTermsNote\"\r\n class=\"form-control\"\r\n maxlength=\"512\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-payment-terms-payment-due-date\">\r\n {{ 'eDonusum::PaymentTermsPaymentDueDate' | abpLocalization }}\r\n </label>\r\n \r\n <div class=\"input-group\" validationTarget>\r\n <input\r\n readonly\r\n id=\"invoice-payment-terms-payment-due-date\"\r\n formControlName=\"paymentTermsPaymentDueDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #paymentTermsPaymentDueDateInput\r\n #paymentTermsPaymentDueDateDatepicker=\"ngbDatepicker\"\r\n (click)=\"paymentTermsPaymentDueDateDatepicker.open()\"\r\n (keyup.space)=\"paymentTermsPaymentDueDateDatepicker.open()\"\r\n />\r\n <div *ngIf=\"paymentTermsPaymentDueDateInput.value\" class=\"input-group-append\">\r\n <button\r\n class=\"btn btn-link px-2\"\r\n type=\"button\"\r\n [title]=\"'AbpUi::Clear' | abpLocalization\"\r\n (click)=\"\r\n paymentTermsPaymentDueDateDatepicker.writeValue(null);\r\n paymentTermsPaymentDueDateDatepicker.manualDateChange(null, true)\r\n \"\r\n >\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cust-inv-id\">\r\n {{ 'eDonusum::CustInvId' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cust-inv-id\"\r\n formControlName=\"custInvId\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"invoice-is-canceled\"\r\n formControlName=\"isCanceled\"\r\n class=\"form-check-input\"\r\n />\r\n \r\n <label for=\"invoice-is-canceled\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsCanceled' | abpLocalization }}\r\n </label>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cancel-code\">\r\n {{ 'eDonusum::CancelCode' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cancel-code\"\r\n formControlName=\"cancelCode\"\r\n class=\"form-control\"\r\n maxlength=\"16\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-cancel-description\">\r\n {{ 'eDonusum::CancelDescription' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-cancel-description\"\r\n formControlName=\"cancelDescription\"\r\n class=\"form-control\"\r\n maxlength=\"256\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-resource-doc-type\">\r\n {{ 'eDonusum::ResourceDocType' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-resource-doc-type\"\r\n formControlName=\"resourceDocType\"\r\n class=\"form-control\"\r\n maxlength=\"32\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-resource-doc-entry\">\r\n {{ 'eDonusum::ResourceDocEntry' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-resource-doc-entry\"\r\n formControlName=\"resourceDocEntry\"\r\n class=\"form-control\"\r\n maxlength=\"64\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-status\">\r\n {{ 'eDonusum::Status' | abpLocalization }}\r\n </label>\r\n \r\n <input type=\"number\" id=\"invoice-status\" formControlName=\"status\" class=\"form-control\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-receiver-response\">\r\n {{ 'eDonusum::ReceiverResponse' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n type=\"number\"\r\n id=\"invoice-receiver-response\"\r\n formControlName=\"receiverResponse\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"invoice-receiver-response-desc\">\r\n {{ 'eDonusum::ReceiverResponseDesc' | abpLocalization }}\r\n </label>\r\n \r\n <input\r\n id=\"invoice-receiver-response-desc\"\r\n formControlName=\"receiverResponseDesc\"\r\n class=\"form-control\"\r\n maxlength=\"1024\"\r\n />\r\n </div>\r\n </div>\r\n </form>\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 \r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"invoice\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal> -->", styles: ["\n .excel-wrapper {\n width: 100%;\n max-height: 400px;\n overflow: auto;\n border: 1px solid #c6c6c6;\n font-family: Calibri, Arial, sans-serif;\n font-size: 14px;\n }\n\n .excel-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .excel-table th,\n .excel-table td {\n border: 1px solid #d0d0d0;\n padding: 6px 10px;\n white-space: nowrap;\n }\n\n .excel-table thead th {\n background-color: #f3f3f3;\n font-weight: 600;\n text-align: left;\n position: sticky;\n top: 0;\n z-index: 2;\n }\n\n .excel-table tbody tr:nth-child(even) {\n background-color: #fafafa;\n }\n\n .excel-table tbody tr:hover {\n background-color: #e6f2ff;\n }\n\n .right {\n text-align: right;\n }\n\n .open {\n color: #008000;\n font-weight: 500;\n }\n\n .closed {\n color: #c00000;\n font-weight: 500;\n }\n .alert-danger-top{\n background:#fde8e8;\n border:1px solid #f5c2c7;\n color:#b02a37;\n padding:10px 12px;\n border-radius:6px;\n font-family: Calibri, Arial, sans-serif;\n margin-bottom:10px;\n}\n"] }]
232
+ }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.HitInvoiceService }, { type: i3.HitGibPartnerPkService }, { type: i4.HitDocumentSerialService }, { type: i5.ToasterService }, { type: i5.ConfirmationService }]; }, propDecorators: { dxInvoiceInstance: [{
308
233
  type: ViewChild,
309
234
  args: ['dxInvoiceInstance', { static: false }]
310
- }], dxInvoiceFileInstance: [{
311
- type: ViewChild,
312
- args: ['dxInvoiceFileInstance', { static: false }]
313
235
  }], dxReceiverPKSInstance: [{
314
236
  type: ViewChild,
315
237
  args: ['dxReceiverPKSInstance', { static: false }]
@@ -317,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
317
239
  type: ViewChild,
318
240
  args: ['dxInvoiceSerialInstance', { static: false }]
319
241
  }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWludm9pY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaW52b2ljZXMvaGl0LWludm9pY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaW52b2ljZXMvaGl0LWludm9pY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFPLGFBQWEsRUFBcUIsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBNkMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQVM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTbEUsTUFBTSxPQUFPLG1CQUFtQjtJQXFDNUIsWUFDb0IsSUFBaUIsRUFDaEIsY0FBaUMsRUFDakMsbUJBQTJDLEVBQzNDLHVCQUFtRCxFQUNuRCx3QkFBa0QsRUFDbEQsY0FBOEIsRUFDOUIsWUFBaUMsRUFDakMsZ0JBQWtDO1FBUG5DLFNBQUksR0FBSixJQUFJLENBQWE7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0MsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQUNuRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMscUJBQWdC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RTtnQkFDSSx1QkFBdUI7c0JBQS9FLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBpc051bGxPckVtcHR5LCBpc051bGxPclVuZGVmaW5lZCwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRHhEYXRhR3JpZENvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7IEhpdEludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1pbnZvaWNlcy9oaXQtaW52b2ljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0RmlsZURvY3VtZW50VHlwZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWZpbGUtZG9jdW1lbnQtdHlwZS9oaXQtZmlsZS1kb2N1bWVudC10eXBlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRHaWJQYXJ0bmVyUGtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1naWItcGFydG5lci1wa3MvaGl0LWdpYi1wYXJ0bmVyLXBrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgSGl0RG9jdW1lbnRTZXJpYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1kb2N1bWVudC1zZXJpYWxzL2hpdC1kb2N1bWVudC1zZXJpYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgSGl0U2hhcmVkU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9zaGFyZWQvaGl0LXNoYXJlZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW52b2ljZVR5cGUgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWludm9pY2VzL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWludm9pY2UnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gICAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9oaXQtaW52b2ljZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0SW52b2ljZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkeEludm9pY2VJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeEludm9pY2VJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgnZHhJbnZvaWNlRmlsZUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4SW52b2ljZUZpbGVJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgnZHhSZWNlaXZlclBLU0luc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4UmVjZWl2ZXJQS1NJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgnZHhJbnZvaWNlU2VyaWFsSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhJbnZvaWNlU2VyaWFsSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuXHJcbiAgICBpbnZvaWNlc0RhdGFTb3VyY2U6IGFueVxyXG4gICAgaW52b2ljZVN0YXR1c0xvb2t1cDogYW55XHJcbiAgICBpbnZvaWNlRmlsZU5hbWVMb29rdXA6IGFueVxyXG4gICAgaW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXA6IGFueVxyXG4gICAgaW52b2ljZU9iamVjdHNFbnVtTG9va3VwOiBhbnlcclxuICAgIGludm9pY2VGaWxlc0RhdGFTb3VyY2U6IGFueVxyXG4gICAgaW52b2ljZVJlY2VpdmVyUEtEYXRhU291cmNlOiBhbnlcclxuICAgIGludm9pY2VTZXJpYWxEYXRhU291cmNlOiBhbnlcclxuXHJcbiAgICBpc1ByZXZpZXdNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgIGlzUHJldmlld01vZGFsQnVzeSA9IGZhbHNlO1xyXG5cclxuICAgIGlzRmlsZU1vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgaXNGaWxlTW9kYWxCdXN5ID0gZmFsc2U7XHJcblxyXG4gICAgaXNQS01vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgaXNQS01vZGFsQnVzeSA9IGZhbHNlO1xyXG4gICAgcGtNb2RhbFNlbGVjdGVkSW52b2ljZUlkOiBhbnk7XHJcbiAgICBwa01vZGFsU2VsZWN0ZWRJbnZvaWNlUmVzb3VyY2VEb2NFbnRyeTogYW55O1xyXG5cclxuICAgIGlzU2VyaWFsTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgICBpc1NlcmlhbE1vZGFsQnVzeSA9IGZhbHNlO1xyXG4gICAgc2VyaWFsTW9kYWxTZWxlY3RlZEludm9pY2VJZDogYW55O1xyXG4gICAgc2VyaWFsTW9kYWxTZWxlY3RlZEludm9pY2VSZXNvdXJjZURvY0VudHJ5OiBhbnk7XHJcblxyXG4gICAgc2VsZWN0ZWRJbnZvaWNlSWRzOiBzdHJpbmdbXTtcclxuXHJcbiAgICBmYXR1cmFPbml6bGVtZTogYW55O1xyXG5cclxuICAgIGlzTW9kYWxPcGVuRm9yTm90UXVldWUgPSBmYWxzZVxyXG4gICAgaW52b2ljZU5vdFNlbmRRdWV1ZURhdGFTb3VyY2U6IGFueVxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW52b2ljZVNlcnZpY2U6IEhpdEludm9pY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ2liUGFydG5lclBrU2VydmljZTogSGl0R2liUGFydG5lclBrU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbGVEb2N1bWVudFR5cGVTZXJ2aWNlOiBIaXRGaWxlRG9jdW1lbnRUeXBlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpdERvY3VtZW50U2VyaWFsU2VydmljZTogSGl0RG9jdW1lbnRTZXJpYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0U2hhcmVkU2VydmljZTogSGl0U2hhcmVkU2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmludm9pY2VzRGF0YVNvdXJjZSA9IHRoaXMuaW52b2ljZVNlcnZpY2UuTG9hZEludm9pY2VzO1xyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0U3RhdHVzZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW52b2ljZVN0YXR1c0xvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRSZWNlaXZlclJlc3BvbnNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlUmVjZWl2ZXJSZXNwb25zZUxvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFNhcE9iamVjdHMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW52b2ljZU9iamVjdHNFbnVtTG9va3VwID0gbGlzdDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZmlsZURvY3VtZW50VHlwZVNlcnZpY2UuZ2V0RmlsZURvY3VtZW50VHlwZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICB0aGlzLmludm9pY2VGaWxlTmFtZUxvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIHNlbmRJbnZvaWNlU2luZ2xlKHJlY29yZCkge1xyXG4gICAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW3JlY29yZC5pZF07XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlTm90U2VuZFF1ZXVlRGF0YVNvdXJjZSA9IG51bGxcclxuICAgICAgICBpZiAoaXNOdWxsT3JFbXB0eShyZWNvcmQuc2VsZWN0ZWRJbnZvaWNlU2VyaWFsKSkge1xyXG4gICAgICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25cclxuICAgICAgICAgICAgICAgIC5pbmZvKCdCZWxnZSBzZXJpIHNlw6dpbWkgeWFwxLFsbWFkxLHEn8SxIGnDp2luIGVudGVncmF0w7ZyZGUgYnVsdW5hbiB2YXJzYXnEsWxhbiBzZXJpeWxlIGfDtm5kZXJpbGVjZWt0aXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiY29uZmlybVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLnNlbmRJbnZvaWNlQnlJZChpZHMpLnN1YnNjcmliZSgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvck5vdFF1ZXVlID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2ljZU5vdFNlbmRRdWV1ZURhdGFTb3VyY2UgPSBpdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKFwixLDFn2xlbSBHZXLDp2VrbGXFn3RpcmlsbWnFn3Rpci5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKFwiSGVyaGFuZ2kgYmlyIGnFn2xlbSBnZXLDp2VrbGXFn3RpcmlsbWVkaS5cIik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2Uuc2VuZEludm9pY2VCeUlkKGlkcykuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW52b2ljZUNhbmNlbFdpdGhPcGVuKHJlY29yZCkge1xyXG5cclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLnNldEludm9pY2VDYW5jZWxCeWRJZChyZWNvcmQuaWQsIDEpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhcIkJlbGdlIGJhxZ9hcsSxeWxhIGlwdGFsZSDDp2VraWxlcmVrLCBrYXluYWt0YSBnw7xuY2VsbGVuZGkuXCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgc2V0SW52b2ljZUNhbmNlbFdpdGhSZXZpc2UocmVjb3JkKSB7XHJcblxyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2Uuc2V0SW52b2ljZUNhbmNlbEJ5ZElkKHJlY29yZC5pZCwgNikuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKFwiQmVsZ2UgYmHFn2FyxLF5bGEgaXB0YWxlIMOnZWtpbGVyZWssIGtheW5ha3RhIGfDvG5jZWxsZW5kaS5cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdFJlY2VpdmVyUEsocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5naWJQYXJ0bmVyUGtTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5HZXRDdXN0b21lckFjdGl2ZVBLU1dpdGhEZWZhdWx0UGsocmVjb3JkLmFjY291bnRpbmdDdXN0b21lclBhcnR5VmtuVGNrbiwgMSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuaW52b2ljZVJlY2VpdmVyUEtEYXRhU291cmNlID0gKHJlcy5hbGlhc05hbWVzIHx8IFtdKS5tYXAoYWxpYXMgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICBBZHJlczogYWxpYXMsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0UEs6IGFsaWFzID09PSByZXMuZGVmYXVsdEVJbnZvaWNlUGtcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBrTW9kYWxTZWxlY3RlZEludm9pY2VJZCA9IHJlY29yZC5pZDtcclxuICAgICAgICAgICAgICAgIHRoaXMucGtNb2RhbFNlbGVjdGVkSW52b2ljZVJlc291cmNlRG9jRW50cnkgPSByZWNvcmQucmVzb3VyY2VEb2NFbnRyeTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNQS01vZGFsT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdEFjdGl2ZVNlcmllcyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgY29uc3QgdHlwZSA9IHJlY29yZC5wcm9maWxlSWQgPT09IFwiRUFSU0lWRkFUVVJBXCIgXHJcbiAgICAgID8gSW52b2ljZVR5cGUuZWFyc2l2IFxyXG4gICAgICA6IEludm9pY2VUeXBlLmVmYXR1cmE7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKHR5cGUpO1xyXG4gICAgICAgICAgICB0aGlzLmhpdERvY3VtZW50U2VyaWFsU2VydmljZS5MaXN0QWN0aXZlU2VyaWVzRm9yRG9jdW1lbnQodHlwZSkuc3Vic2NyaWJlKHNlcmlhbHMgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnZvaWNlU2VyaWFsRGF0YVNvdXJjZSA9IHNlcmlhbHMubWFwKGl0ZW0gPT4gKHsgU2VyaTogaXRlbSB9KSk7O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEludm9pY2VJZHMgPSBbcmVjb3JkLmlkXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNTZXJpYWxNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGxpc3RBY3RpdmVTZXJpZXNGb3JNdWx0aXBsZSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSb3dzRGF0YSgpO1xyXG5cclxuICAgIGlmICghc2VsZWN0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybihcIkzDvHRmZW4gZW4gYXogYmlyIGZhdHVyYSBzZcOnaW4uXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiBjb25zdCB0eXBlcyA9IFsuLi5uZXcgU2V0KHNlbGVjdGVkUm93cy5tYXAociA9PiBcclxuICAgIHIucHJvZmlsZUlkPy50cmltKCkudG9VcHBlckNhc2UoKSA9PT0gXCJFQVJTSVZGQVRVUkFcIiBcclxuICAgICAgICA/IEludm9pY2VUeXBlLmVhcnNpdiBcclxuICAgICAgICA6IEludm9pY2VUeXBlLmVmYXR1cmFcclxuKSldO1xyXG5cclxuaWYgKHR5cGVzLmxlbmd0aCA+IDEpIHtcclxuICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybihcIkZhcmtsxLEgdMO8cmRla2kgZmF0dXJhbGFyIGnDp2luIGF5bsSxIGFuZGEgc2VyaSBhdGFtYXPEsSB5YXDEsWxhbWF6LiBMw7x0ZmVuIGF5bsSxIHTDvHJkZWtpIGZhdHVyYWxhcsSxIHNlw6dpbi5cIik7XHJcbiAgICByZXR1cm47XHJcbn1cclxuXHJcbmNvbnN0IHR5cGUgPSB0eXBlc1swXTtcclxuXHJcblxyXG4gICAgdGhpcy5oaXREb2N1bWVudFNlcmlhbFNlcnZpY2UuTGlzdEFjdGl2ZVNlcmllc0ZvckRvY3VtZW50KHR5cGUpLnN1YnNjcmliZShzZXJpYWxzID0+IHtcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJpYWxEYXRhU291cmNlID0gc2VyaWFscy5tYXAoaXRlbSA9PiAoeyBTZXJpOiBpdGVtIH0pKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW52b2ljZUlkcyA9IHNlbGVjdGVkUm93cy5tYXAocCA9PiBwLmlkKTtcclxuICAgICAgICB0aGlzLmlzU2VyaWFsTW9kYWxPcGVuID0gdHJ1ZTtcclxuICAgIH0pO1xyXG59XHJcblxyXG4gICAgc2VsZWN0SW52b2ljZVNlcmlhbChyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UudXBkYXRlSW52b2ljZVNlcmlhbCh0aGlzLnNlbGVjdGVkSW52b2ljZUlkcywgcmVjb3JkLlNlcmkuY29kZSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc1NlcmlhbE1vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoXCJCZWxnZSBzZXJpbGVyaSBiYcWfYXLEsXlsYSBzZcOnaWxkaS5cIik7XHJcbiAgICAgICAgICAgIHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RQS0FkZHJlc3MocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS51cGRhdGVJbnZvaWNlUmVjZWl2ZXIodGhpcy5wa01vZGFsU2VsZWN0ZWRJbnZvaWNlSWQsIHJlY29yZC5BZHJlcywgcmVjb3JkLmlzRGVmYXVsdFBLKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzUEtNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkUERGTXVsdGlwbGUoKSB7XHJcbiAgICAgICAgbGV0IGlkczogQXJyYXk8eyBpZDogc3RyaW5nLCBzZWxlY3RlZFNlcmlhbDogc3RyaW5nIH0+ID0gW107XHJcblxyXG4gICAgICAgIHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKS5maWx0ZXIoaSA9PiBpLmlzU2VsZWN0ZWQgPT0gdHJ1ZSkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGVsZW1lbnQuZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VyaWFsOiBlbGVtZW50LmRhdGEuc2VsZWN0ZWRJbnZvaWNlU2VyaWFsLmNvZGVcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldEludm9pY2VQZGZzTXVsdGlwbGUoaWRzLm1hcChwID0+IHAuaWQpKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoZGF0YSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBieXRlTnVtYmVyc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi96aXAnIH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gxLBuZGlybWVcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGEuaHJlZiA9IHVybDtcclxuICAgICAgICAgICAgYS5kb3dubG9hZCA9ICdGYXR1cmFsYXItJyArIHRoaXMuZ2V0WmlwRGF0ZSgpICsgJy56aXAnO1xyXG4gICAgICAgICAgICBhLmNsaWNrKCk7XHJcblxyXG4gICAgICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRaaXBEYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICAvLyBHw7xuLCBBeSwgWcSxbCwgU2FhdCwgRGFraWthLCBTYW5peWUgZm9ybWF0xLFuZGEgbWFudWVsIGTDvHplbmxlbWVcclxuICAgICAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGNvbnN0IGhvdXJzID0gU3RyaW5nKGRhdGUuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBtaW51dGVzID0gU3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBTdHJpbmcoZGF0ZS5nZXRTZWNvbmRzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcblxyXG4gICAgICAgIHJldHVybiBgJHt5ZWFyfS4ke21vbnRofS4ke2RheX0tJHtob3Vyc30uJHttaW51dGVzfS4ke3NlY29uZHN9YDtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kSW52b2ljZU11bHRpcGxlKCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIGxldCBpZHM6IEFycmF5PHsgaWQ6IHN0cmluZywgc2VsZWN0ZWRTZXJpYWw6IHN0cmluZyB9PiA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLmdldFZpc2libGVSb3dzKCkuZmlsdGVyKGkgPT4gaS5pc1NlbGVjdGVkID09IHRydWUpLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlkcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFNlcmlhbDogZWxlbWVudC5kYXRhLnNlbGVjdGVkSW52b2ljZVNlcmlhbC5jb2RlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaWYgKGlkcy5maWx0ZXIocCA9PiBpc051bGxPckVtcHR5KHAuc2VsZWN0ZWRTZXJpYWwpKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAuaW5mbygnU2VyaSBzZcOnaW1pIHlhcMSxbG1heWFuIGJlbGdlbGVyIGnDp2luIGVudGVncmF0w7ZyZGUgYnVsdW5hbiB2YXJzYXnEsWxhbiBzZXJpeWxlIGfDtm5kZXJpbSB5YXDEsWxhY2FrdMSxci4gRGV2YW0gZXRtZWsgaXN0aXlvciBtdXN1bnV6PycsIHsga2V5OiAnOjpCaWxnaScsIGRlZmF1bHRWYWx1ZTogJycgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gXCJjb25maXJtXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2Uuc2VuZEludm9pY2VCeUlkKGlkcy5tYXAocCA9PiBwLmlkKSkuc3Vic2NyaWJlKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yTm90UXVldWUgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZvaWNlTm90U2VuZFF1ZXVlRGF0YVNvdXJjZSA9IGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJIZXJoYW5naSBiaXIgacWfbGVtIGdlcsOnZWtsZcWfdGlyaWxtZWRpLlwiKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5zZW5kSW52b2ljZUJ5SWQoaWRzLm1hcChwID0+IHAuaWQpKS5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoXCLEsMWfbGVtIEdlcsOnZWtsZcWfdGlyaWxtacWfdGlyLlwiKTsgdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlbmRJbnZvaWNlVG9FbnRlZ3JhdG9yKCkge1xyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2Uuc2VuZEludm9pY2VUb0VudGVncmF0b3IoKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEludm9pY2VzRnJvbUNvbm5lY3RvcigpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldEludm9pY2VzRnJvbUNvbm5lY3RvcigpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SW52b2ljZVJlc3BvbnNlcygpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldEludm9pY2VSZXNwb25zZXMobmV3IERhdGUoKS50b0lTT1N0cmluZygpLCBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SW52b2ljZVZpZXcocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRJbnZvaWNlVmlldyhyZWNvcmQudXVJZCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YToke2l0ZW0ubWltZVR5cGV9O2Jhc2U2NCwke2l0ZW0uY29udGVudH1gO1xyXG4gICAgICAgICAgICB0aGlzLmhpdFNoYXJlZFNlcnZpY2UucHJldmlld0ZpbGUoaXRlbS5jb250ZW50KVxyXG5cclxuICAgICAgICAgICAgLypjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBzb3VyY2U7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBgJHtpdGVtLmZpbGVuYW1lfWA7XHJcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTsqL1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dBbGxGaWxlcyhyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VGaWxlc0RhdGFTb3VyY2UgPSB0aGlzLmludm9pY2VTZXJ2aWNlLkxvYWRJbnZvaWNlRmlsZXMocmVjb3JkLnV1SWQpXHJcbiAgICAgICAgdGhpcy5pc0ZpbGVNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEludm9pY2VQcmV2aWV3KHJlY29yZCkge1xyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0SW52b2ljZVByZXZpZXcocmVjb3JkLmlkLCByZWNvcmQucmVzb3VyY2VEb2NUeXBlKS5zdWJzY3JpYmUoZmF0dXJhID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSBVaW50OEFycmF5LmZyb20oYXRvYihmYXR1cmEucHJldmlld0hUTUwpLCBjID0+IGMuY2hhckNvZGVBdCgwKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGh0bWxDb250ZW50ID0gbmV3IFRleHREZWNvZGVyKCd1dGYtOCcpLmRlY29kZShieXRlcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC5vcGVuKCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC53cml0ZShodG1sQ29udGVudCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC5jbG9zZSgpO1xyXG4gICAgICAgICAgICBuZXdUYWIuZG9jdW1lbnQudGl0bGUgPSByZWNvcmQuaWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SW52b2ljZVhNTChyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFhNTFByZXZpZXcocmVjb3JkLmlkLCByZWNvcmQucmVzb3VyY2VEb2NUeXBlKS5zdWJzY3JpYmUoZmF0dXJhID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYGRhdGE6JHtmYXR1cmEubWltZVR5cGV9O2Jhc2U2NCwke2ZhdHVyYS5jb250ZW50fWA7XHJcbiAgICAgICAgICAgIC8vdGhpcy5oaXRTaGFyZWRTZXJ2aWNlLnByZXZpZXdGaWxlKGZhdHVyYS5jb250ZW50KTtcclxuICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgbGluay5ocmVmID0gc291cmNlO1xyXG4gICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gYCR7ZmF0dXJhLmZpbGVuYW1lfWA7XHJcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRSZWNlaXZlclJlc3BvbnNlTmFtZShyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmludm9pY2VSZWNlaXZlclJlc3BvbnNlTG9va3VwLmZpbmQoKHgpID0+IHguaWQgPT09IHJlc3BvbnNlSWQpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGlzcGxheU5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERvY09iamVjdE5hbWUoZGF0YSkge1xyXG4gICAgICAgIHJldHVybiAoKGRhdGEuaXNEcmFmdCA/IFwiVGFzbGFrIFwiIDogXCJcIikgKyB0aGlzLmludm9pY2VPYmplY3RzRW51bUxvb2t1cC5maW5kKCh4KSA9PiB4LmlkID09IChkYXRhLmlzRHJhZnQgPyBkYXRhLnJlc291cmNlU3ViRG9jVHlwZSA6IGRhdGEucmVzb3VyY2VEb2NUeXBlKSkuZGlzcGxheU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb25DbGFzcyhyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlSWQgPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtY2xvY2tcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1jaGVjay1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS10aW1lcy1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgRG93bmxvYWRGaWxlKHJlY29yZCkge1xyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZG93bmxvYWRGaWxlQnlJZChyZWNvcmQuY29udGVudE1hc3RlcklkKS5zdWJzY3JpYmUoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOiR7aXRlbS5taW1lVHlwZX07YmFzZTY0LCR7aXRlbS5jb250ZW50fWA7XHJcbiAgICAgICAgICAgIC8vdGhpcy5oaXRTaGFyZWRTZXJ2aWNlLnByZXZpZXdGaWxlKGl0ZW0uY29udGVudCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBzb3VyY2U7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBgJHtpdGVtLmZpbGVuYW1lfWA7XHJcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8IS0tIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9lcWVxZXEgLS0+XHJcbjxhYnAtcGFnZSBbdGl0bGVdPVwiJ2VEb251c3VtOjpJbnZvaWNlcycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuIFxyXG4gIDxwPkfDtm5kZXJpbWkgdGFtYW1sYW5hbiB2ZSBnw7ZuZGVyaWxtZXNpIGJla2xlbmVuIGZhdHVyYWxhcsSxIGxpc3RlbGV5ZW4gZWtyYW48L3A+XHJcbiAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG14LTJcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFeHBvcnRUb0V4Y2VsQnVzeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0VG9FeGNlbCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyAnZURvbnVzdW06OkV4cG9ydFRvRXhjZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgIC0tPlxyXG4gICAgICA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkludm9pY2VzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJsaXN0QWN0aXZlU2VyaWVzRm9yTXVsdGlwbGUoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFza3MgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OlNlbGVjdFNlcmlhbE11bHRpcGxlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5JbnZvaWNlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwiZG93bmxvYWRQREZNdWx0aXBsZSgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1kb3dubG9hZCBtZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgIHt7ICdlRG9udXN1bTo6RG93bmxvYWRQREZNdWx0aXBsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uSW52b2ljZXMuQ3JlYXRlJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cInNlbmRJbnZvaWNlTXVsdGlwbGUoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkFkZFRvUXVldWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkludm9pY2VzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJnZXRJbnZvaWNlUmVzcG9uc2VzKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXF1ZXN0aW9uIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpDaGVja1Jlc3BvbnNlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwhLS0gPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5JbnZvaWNlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1zdWNjZXNzXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwic2VuZEludm9pY2VUb0VudGVncmF0b3IoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OlNlbmRUb0VudGVncmF0b3JNYW51YWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkludm9pY2VzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4teHMgYnRuLXdhcm5pbmdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwiZ2V0SW52b2ljZXNGcm9tQ29ubmVjdG9yKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkdldEZyb21Db25uZWN0b3JNYW51YWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgXHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgIFxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeEludm9pY2VJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJpbnZvaWNlc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCIgc3R5bGU9XCJoZWlnaHQ6IDc1dmg7XCI+XHJcbiAgICAgICAgPGR4by1wYWdlciBbdmlzaWJsZV09XCJ0cnVlXCIgW3Nob3dJbmZvXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbNTAsMTAwLDIwMF1cIiBbc2hvd05hdmlnYXRpb25CdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4by1wYWdlcj5cclxuICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiNTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICA8L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZ3JvdXAtcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiIFthbGxvd0NvbHVtbkRyYWdnaW5nXT1cInRydWVcIj48L2R4by1ncm91cC1wYW5lbD5cclxuICAgICAgICA8ZHhvLWdyb3VwaW5nICNleHBhbmQgW2F1dG9FeHBhbmRBbGxdPVwiZmFsc2VcIiBbYWxsb3dDb2xsYXBzaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgW2NvbnRleHRNZW51RW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZ3JvdXBpbmc+XHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBbYWxsb3dFeHBvcnRTZWxlY3RlZERhdGFdPVwiZmFsc2VcIj48L2R4by1leHBvcnQ+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLWJ1aWxkZXIgW2FsbG93SGllcmFyY2hpY2FsRmllbGRzXT1cInRydWVcIj48L2R4by1maWx0ZXItYnVpbGRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gW2ZpeGVkXT1cInRydWVcIiBkYXRhRmllbGQ9XCJpZFwiIHdpZHRoPVwiMTIwXCIgW2FsbG93R3JvdXBpbmddPVwiZmFsc2VcIiBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGUgW2Rpc2FibGVkXT1cImRpc2FibGVkSWRDb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJ1cGRhdGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZGVsZXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJzZW5kSW52b2ljZVNpbmdsZShyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpBZGRUb1F1ZXVlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2V0SW52b2ljZUNhbmNlbFdpdGhPcGVuKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gOTlcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZXRDYW5jZWxXaXRoT3BlbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNldEludm9pY2VDYW5jZWxXaXRoUmV2aXNlKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gOTlcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZXRDYW5jZWxXaXRoUmV2aXNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwibGlzdFJlY2VpdmVyUEsocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuY2lsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlNlbGVjdFJlY2VpdmVyUEsnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJsaXN0QWN0aXZlU2VyaWVzKHJvdy5kYXRhKVwiICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRhc2tzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlNlbGVjdFNlcmlhbEZvckRvY3VtZW50JyB8XHJcbiAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZ2V0SW52b2ljZVZpZXcocm93LmRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMzAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSAzNDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDM4MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkdldFBERlZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXRJbnZvaWNlUHJldmlldyhyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDAgfHwgcm93LmRhdGEuc3RhdHVzPT05OVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpQcmV2aWV3JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZ2V0SW52b2ljZVhNTChyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDAgfHwgcm93LmRhdGEuc3RhdHVzPT05OVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpQcmV2aWV3WE1MJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2hvd0FsbEZpbGVzKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDMwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gMzQwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSAzODAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTaG93QWxsRmlsZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXNzdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXNzdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhVHlwZT1cIm51bWJlclwiIGRhdGFGaWVsZD1cInJlc291cmNlRG9jRW50cnlcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY0VudHJ5J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhVHlwZT1cIm51bWJlclwiIGRhdGFGaWVsZD1cInJlc291cmNlRG9jTnVtXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVzb3VyY2VEb2NOdW0nfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImludm9pY2VJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SW52b2ljZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBjZWxsVGVtcGxhdGU9XCJkb2NUeXBlVGVtcGxhdGVcIiBkYXRhRmllbGQ9XCJyZXNvdXJjZURvY1R5cGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY1R5cGUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnZG9jVHlwZVRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAge3tnZXREb2NPYmplY3ROYW1lKGRhdGEuZGF0YSl9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImFjY291bnRpbmdDdXN0b21lclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdDdXN0b21lclBhcnR5TmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWNjb3VudGluZ0N1c3RvbWVyUGFydHlWa25UY2tuXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6QWNjb3VudGluZ0N1c3RvbWVyUGFydHlWa25UY2tuJ3xhYnBMb2NhbGl6YXRpb259fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJidXllckN1c3RvbWVyUGFydHlOYW1lXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpCdXllckN1c3RvbWVyUGFydHlOYW1lJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwic3RhdHVzXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTdGF0dXMnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJpbnZvaWNlU3RhdHVzTG9va3VwXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInByb2ZpbGVJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UHJvZmlsZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpbnZvaWNlVHlwZUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Okludm9pY2VUeXBlQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibGVnYWxNb25ldGFyeVRvdGFsUGF5YWJsZUFtb3VudFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UGF5YWJsZUFtb3VudCd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgZGF0YVR5cGU9XCJudW1iZXJcIiBmb3JtYXQ9XCIjLCMjMC4wMFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2N1bWVudEN1cnJlbmN5Q29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jQ3VycmVuY3knfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInJlY2VpdmVyUmVzcG9uc2VcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlY2VpdmVyUmVzcG9uc2UnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cImljb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwiaW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdpY29uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UpXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydjb2xvcic6ZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzEnID8gJ2dyZWVuJyA6IGRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09ICcyJyA/ICdyZWQnIDogJ2dyYXknfVwiPjwvaT5cclxuICAgICAgICAgIHt7Z2V0UmVjZWl2ZXJSZXNwb25zZU5hbWUoZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UpfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJyZWNlaXZlclJlc3BvbnNlRGVzY1wiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlY2VpdmVyUmVzcG9uc2VEZXNjJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzZWxlY3RlZFJlY2VpdmVyUEtcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTZWxlY3RlZFJlY2VpdmVyUEsnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInNlbGVjdGVkSW52b2ljZVNlcmlhbFwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlNlbGVjdGVkSW52b2ljZVNlcmlhbCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidXVJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6VXVJZCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVnaW9uXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZWdpb24nfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc0ZpbGVNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzRmlsZU1vZGFsT3BlblwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ2xnJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6SW52b2ljZUZpbGVzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhJbnZvaWNlRmlsZUluc3RhbmNlIFtkYXRhU291cmNlXT1cImludm9pY2VGaWxlc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFtmaXhlZF09XCJ0cnVlXCIgZGF0YUZpZWxkPVwiaWRcIiB3aWR0aD1cIjEyMFwiIFthbGxvd0dyb3VwaW5nXT1cImZhbHNlXCIgW2FsbG93RmlsdGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCIgY2FwdGlvbj1cInt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlIFtkaXNhYmxlZF09XCJkaXNhYmxlZElkQ29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJEb3dubG9hZEZpbGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1kb3dubG9hZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpEb3dubG9hZCcgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIiBkYXRhRmllbGQ9XCJleHRyYUl0ZW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06Ok5hbWUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImludm9pY2VGaWxlTmFtZUxvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzUEtNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzUEtNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7e3BrTW9kYWxTZWxlY3RlZEludm9pY2VSZXNvdXJjZURvY0VudHJ5fX0ge3sgJ2VEb251c3VtOjpSZWNlaXZlclBLUycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4UmVjZWl2ZXJQS1NJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJpbnZvaWNlUmVjZWl2ZXJQS0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFt3aWR0aF09XCI4MFwiIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJzZWxlY3RQS0FkZHJlc3Mocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBTZcOnXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiQWRyZXNcIiBjYXB0aW9uPVwiQWRyZXNcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBbd2lkdGhdPVwiMTUwXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEZWZhdWx0UEsnIHwgYWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJkZWZhdWx0UGtDaGVja2JveFRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdkZWZhdWx0UGtDaGVja2JveFRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgWyhuZ01vZGVsKV09XCJyb3cuZGF0YS5pc0RlZmF1bHRQS1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc1NlcmlhbE1vZGFsQnVzeVwiIFsodmlzaWJsZSldPVwiaXNTZXJpYWxNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICBCZWxnZSBTZXJpIFNlw6dpbWlcclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4SW52b2ljZVNlcmlhbEluc3RhbmNlIFtkYXRhU291cmNlXT1cImludm9pY2VTZXJpYWxEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwiZmFsc2VcIiBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDUwdmg7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBbd2lkdGhdPVwiODBcIiBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwic2VsZWN0SW52b2ljZVNlcmlhbChyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IFNlw6dcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJTZXJpLmNvZGVcIiBjYXB0aW9uPVwiU2VyaVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIlNlcmkuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkRlc2NyaXB0aW9uJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcblxyXG48YWJwLW1vZGFsIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5Gb3JOb3RRdWV1ZVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPiDDh29rbHUgUEsgeWEgc2FoaXAgb2xhbiBCZWxnZSBOdW1hcmEgTGlzdGVzaSA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0LWRhbmdlci10b3BcIiByb2xlPVwiYWxlcnRcIj5cclxuICA8Yj5VeWFyxLE6PC9iPiDDh29rbHUgUEsgeWEgc2FoaXAgb2xhbmxhciBrdXlydcSfYSBla2xlbmVtZWRpLsSwxZ9sZW1sZXJkZW4gQWzEsWPEsSBBZHJlc2kgc2XDp2luaXouXHJcbjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImV4Y2VsLXdyYXBwZXJcIj5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwiZXhjZWwtdGFibGVcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0ZD4jPC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7J2VEb251c3VtOjpSZXNvdXJjZURvY0VudHJ5J3xhYnBMb2NhbGl6YXRpb259fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD4ge3snZURvbnVzdW06OlN0YXR1cyd8YWJwTG9jYWxpemF0aW9ufX0gPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaW52b2ljZU5vdFNlbmRRdWV1ZURhdGFTb3VyY2U7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPHRkPnt7IGkrMSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD4ge3tpdGVtfX0gPC90ZD5cclxuICAgICAgICAgICAgPHRkPiA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPiA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT5cclxuICAgICAgS2FwYXRcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPHN0eWxlPlxyXG4gIC5leGNlbC13cmFwcGVyIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LWhlaWdodDogNDAwcHg7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjNmM2YzY7XHJcbiAgICBmb250LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgfVxyXG5cclxuICAuZXhjZWwtdGFibGUge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gIH1cclxuXHJcbiAgLmV4Y2VsLXRhYmxlIHRoLFxyXG4gIC5leGNlbC10YWJsZSB0ZCB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZDBkMGQwO1xyXG4gICAgcGFkZGluZzogNnB4IDEwcHg7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIH1cclxuXHJcbiAgLmV4Y2VsLXRhYmxlIHRoZWFkIHRoIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIHBvc2l0aW9uOiBzdGlja3k7XHJcbiAgICB0b3A6IDA7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gIH1cclxuXHJcbiAgLmV4Y2VsLXRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xyXG4gIH1cclxuXHJcbiAgLmV4Y2VsLXRhYmxlIHRib2R5IHRyOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmYyZmY7XHJcbiAgfVxyXG5cclxuICAucmlnaHQge1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgfVxyXG5cclxuICAub3BlbiB7XHJcbiAgICBjb2xvcjogIzAwODAwMDtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgfVxyXG5cclxuICAuY2xvc2VkIHtcclxuICAgIGNvbG9yOiAjYzAwMDAwO1xyXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICB9XHJcbiAgLmFsZXJ0LWRhbmdlci10b3B7XHJcbiAgYmFja2dyb3VuZDojZmRlOGU4O1xyXG4gIGJvcmRlcjoxcHggc29saWQgI2Y1YzJjNztcclxuICBjb2xvcjojYjAyYTM3O1xyXG4gIHBhZGRpbmc6MTBweCAxMnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6NnB4O1xyXG4gIGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICBtYXJnaW4tYm90dG9tOjEwcHg7XHJcbn1cclxuPC9zdHlsZT5cclxuXHJcblxyXG5cclxuXHJcbjwhLS0gPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeVwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5cIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgICA8aDM+XHJcbiAgICAgICAge3sgKHNlbGVjdGVkID8gJ0FicFVpOjpFZGl0JyA6ICdlRG9udXN1bTo6TmV3SW52b2ljZScpIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvaDM+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIFxyXG4gICAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBpZD1cImludm9pY2VcIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCIgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBmYWRlLWluLXRvcFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtdWJsLXZlcnNpb24taWRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlVibFZlcnNpb25JZCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtdWJsLXZlcnNpb24taWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVibFZlcnNpb25JZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjhcIlxyXG4gICAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1jdXN0b21pemF0aW9uLWlkXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpDdXN0b21pemF0aW9uSWQnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWN1c3RvbWl6YXRpb24taWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImN1c3RvbWl6YXRpb25JZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjhcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wcm9maWxlLWlkXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQcm9maWxlSWQnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXByb2ZpbGUtaWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2ZpbGVJZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjMyXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtaW52b2ljZS1pZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SW52b2ljZUlkJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1pbnZvaWNlLWlkXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlSWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzMlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtY29weS1pbmRpY2F0b3JcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvcHlJbmRpY2F0b3JcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgXHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpbnZvaWNlLWNvcHktaW5kaWNhdG9yXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpDb3B5SW5kaWNhdG9yJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS11dS1pZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VXVJZCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJpbnZvaWNlLXV1LWlkXCIgZm9ybUNvbnRyb2xOYW1lPVwidXVJZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNjRcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1pc3N1ZS1kYXRlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc3N1ZURhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWlzc3VlLWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNzdWVEYXRlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNpc3N1ZURhdGVJbnB1dFxyXG4gICAgICAgICAgICAgICAgI2lzc3VlRGF0ZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpc3N1ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiaXNzdWVEYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzc3VlRGF0ZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVEYXRlRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlzc3VlRGF0ZURhdGVwaWNrZXIubWFudWFsRGF0ZUNoYW5nZShudWxsLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1pc3N1ZS10aW1lXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc3N1ZVRpbWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWlzc3VlLXRpbWVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNzdWVUaW1lXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNpc3N1ZVRpbWVJbnB1dFxyXG4gICAgICAgICAgICAgICAgI2lzc3VlVGltZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpc3N1ZVRpbWVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiaXNzdWVUaW1lRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzc3VlVGltZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVUaW1lRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlzc3VlVGltZURhdGVwaWNrZXIubWFudWFsRGF0ZUNoYW5nZShudWxsLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1pbnZvaWNlLXR5cGUtY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SW52b2ljZVR5cGVDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1pbnZvaWNlLXR5cGUtY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW52b2ljZVR5cGVDb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMzJcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1kb2N1bWVudC1jdXJyZW5jeS1jb2RlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEb2N1bWVudEN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtZG9jdW1lbnQtY3VycmVuY3ktY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9jdW1lbnRDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtdGF4LWN1cnJlbmN5LWNvZGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlRheEN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXRheC1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXhDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcHJpY2luZy1jdXJyZW5jeS1jb2RlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQcmljaW5nQ3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtcHJpY2luZy1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmljaW5nQ3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiM1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXBheW1lbnQtY3VycmVuY3ktY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudEN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXBheW1lbnQtY3VycmVuY3ktY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wYXltZW50LWFsdGVybmF0aXZlLWN1cnJlbmN5LWNvZGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlBheW1lbnRBbHRlcm5hdGl2ZUN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXBheW1lbnQtYWx0ZXJuYXRpdmUtY3VycmVuY3ktY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEFsdGVybmF0aXZlQ3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiM1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWFjY291bnRpbmctY29zdFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QWNjb3VudGluZ0Nvc3QnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1hY2NvdW50aW5nLWNvc3RcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFjY291bnRpbmdDb3N0XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMzJcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1saW5lLWNvdW50LW51bWVyaWNcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkxpbmVDb3VudE51bWVyaWMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1saW5lLWNvdW50LW51bWVyaWNcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxpbmVDb3VudE51bWVyaWNcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtaW52b2ljZS1wZXJpb2Qtc3RhcnQtZGF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SW52b2ljZVBlcmlvZFN0YXJ0RGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtaW52b2ljZS1wZXJpb2Qtc3RhcnQtZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlUGVyaW9kU3RhcnREYXRlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNpbnZvaWNlUGVyaW9kU3RhcnREYXRlSW5wdXRcclxuICAgICAgICAgICAgICAgICNpbnZvaWNlUGVyaW9kU3RhcnREYXRlRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImludm9pY2VQZXJpb2RTdGFydERhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiaW52b2ljZVBlcmlvZFN0YXJ0RGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbnZvaWNlUGVyaW9kU3RhcnREYXRlSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBpbnZvaWNlUGVyaW9kU3RhcnREYXRlRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9pY2VQZXJpb2RTdGFydERhdGVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtaW52b2ljZS1wZXJpb2Qtc3RhcnQtdGltZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SW52b2ljZVBlcmlvZFN0YXJ0VGltZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtaW52b2ljZS1wZXJpb2Qtc3RhcnQtdGltZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlUGVyaW9kU3RhcnRUaW1lXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNpbnZvaWNlUGVyaW9kU3RhcnRUaW1lSW5wdXRcclxuICAgICAgICAgICAgICAgICNpbnZvaWNlUGVyaW9kU3RhcnRUaW1lRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImludm9pY2VQZXJpb2RTdGFydFRpbWVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiaW52b2ljZVBlcmlvZFN0YXJ0VGltZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbnZvaWNlUGVyaW9kU3RhcnRUaW1lSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBpbnZvaWNlUGVyaW9kU3RhcnRUaW1lRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9pY2VQZXJpb2RTdGFydFRpbWVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtaW52b2ljZS1wZXJpb2QtZW5kLWRhdGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Okludm9pY2VQZXJpb2RFbmREYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1pbnZvaWNlLXBlcmlvZC1lbmQtZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlUGVyaW9kRW5kRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAjaW52b2ljZVBlcmlvZEVuZERhdGVJbnB1dFxyXG4gICAgICAgICAgICAgICAgI2ludm9pY2VQZXJpb2RFbmREYXRlRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImludm9pY2VQZXJpb2RFbmREYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cImludm9pY2VQZXJpb2RFbmREYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImludm9pY2VQZXJpb2RFbmREYXRlSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBpbnZvaWNlUGVyaW9kRW5kRGF0ZURhdGVwaWNrZXIud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICBpbnZvaWNlUGVyaW9kRW5kRGF0ZURhdGVwaWNrZXIubWFudWFsRGF0ZUNoYW5nZShudWxsLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1pbnZvaWNlLXBlcmlvZC1lbmQtdGltZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SW52b2ljZVBlcmlvZEVuZFRpbWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWludm9pY2UtcGVyaW9kLWVuZC10aW1lXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VQZXJpb2RFbmRUaW1lXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNpbnZvaWNlUGVyaW9kRW5kVGltZUlucHV0XHJcbiAgICAgICAgICAgICAgICAjaW52b2ljZVBlcmlvZEVuZFRpbWVEYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2ljZVBlcmlvZEVuZFRpbWVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiaW52b2ljZVBlcmlvZEVuZFRpbWVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW52b2ljZVBlcmlvZEVuZFRpbWVJbnB1dC52YWx1ZVwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB4LTJcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGludm9pY2VQZXJpb2RFbmRUaW1lRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9pY2VQZXJpb2RFbmRUaW1lRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWludm9pY2UtcGVyaW9kLWR1cmF0aW9uLW1lYXN1cmVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Okludm9pY2VQZXJpb2REdXJhdGlvbk1lYXN1cmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWludm9pY2UtcGVyaW9kLWR1cmF0aW9uLW1lYXN1cmVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW52b2ljZVBlcmlvZER1cmF0aW9uTWVhc3VyZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAjaW52b2ljZVBlcmlvZER1cmF0aW9uTWVhc3VyZUlucHV0XHJcbiAgICAgICAgICAgICAgICAjaW52b2ljZVBlcmlvZER1cmF0aW9uTWVhc3VyZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpbnZvaWNlUGVyaW9kRHVyYXRpb25NZWFzdXJlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cImludm9pY2VQZXJpb2REdXJhdGlvbk1lYXN1cmVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW52b2ljZVBlcmlvZER1cmF0aW9uTWVhc3VyZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2ljZVBlcmlvZER1cmF0aW9uTWVhc3VyZURhdGVwaWNrZXIud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICBpbnZvaWNlUGVyaW9kRHVyYXRpb25NZWFzdXJlRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWludm9pY2UtcGVyaW9kLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJbnZvaWNlUGVyaW9kRGVzY3JpcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1pbnZvaWNlLXBlcmlvZC1kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW52b2ljZVBlcmlvZERlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLW9yZGVyLXJlZmVyZW5jZS1pZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6T3JkZXJSZWZlcmVuY2VJZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLW9yZGVyLXJlZmVyZW5jZS1pZFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3JkZXJSZWZlcmVuY2VJZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY0XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2Utb3JkZXItcmVmZXJlbmNlLXNhbGVzLW9yZGVyLWlkXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpPcmRlclJlZmVyZW5jZVNhbGVzT3JkZXJJZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLW9yZGVyLXJlZmVyZW5jZS1zYWxlcy1vcmRlci1pZFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3JkZXJSZWZlcmVuY2VTYWxlc09yZGVySWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI2NFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLW9yZGVyLXJlZmVyZW5jZS1pc3N1ZS1kYXRlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpPcmRlclJlZmVyZW5jZUlzc3VlRGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2Utb3JkZXItcmVmZXJlbmNlLWlzc3VlLWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3JkZXJSZWZlcmVuY2VJc3N1ZURhdGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI29yZGVyUmVmZXJlbmNlSXNzdWVEYXRlSW5wdXRcclxuICAgICAgICAgICAgICAgICNvcmRlclJlZmVyZW5jZUlzc3VlRGF0ZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcmRlclJlZmVyZW5jZUlzc3VlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJvcmRlclJlZmVyZW5jZUlzc3VlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcmRlclJlZmVyZW5jZUlzc3VlRGF0ZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJSZWZlcmVuY2VJc3N1ZURhdGVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJSZWZlcmVuY2VJc3N1ZURhdGVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2Utb3JkZXItcmVmZXJlbmNlLW9yZGVyLXR5cGUtY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6T3JkZXJSZWZlcmVuY2VPcmRlclR5cGVDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2Utb3JkZXItcmVmZXJlbmNlLW9yZGVyLXR5cGUtY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3JkZXJSZWZlcmVuY2VPcmRlclR5cGVDb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNjRcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1hY2NvdW50aW5nLXN1cHBsaWVyLXBhcnR5LW5hbWVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkFjY291bnRpbmdTdXBwbGllclBhcnR5TmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWFjY291bnRpbmctc3VwcGxpZXItcGFydHktbmFtZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudGluZ1N1cHBsaWVyUGFydHlOYW1lXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtYWNjb3VudGluZy1zdXBwbGllci1wYXJ0eS1zY2hlbWUtaWRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkFjY291bnRpbmdTdXBwbGllclBhcnR5U2NoZW1lSWQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1hY2NvdW50aW5nLXN1cHBsaWVyLXBhcnR5LXNjaGVtZS1pZFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudGluZ1N1cHBsaWVyUGFydHlTY2hlbWVJZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjhcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1hY2NvdW50aW5nLXN1cHBsaWVyLXBhcnR5LXZrbi10Y2tuXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpBY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1hY2NvdW50aW5nLXN1cHBsaWVyLXBhcnR5LXZrbi10Y2tuXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIxNlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWFjY291bnRpbmctY3VzdG9tZXItcGFydHktbmFtZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QWNjb3VudGluZ0N1c3RvbWVyUGFydHlOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtYWNjb3VudGluZy1jdXN0b21lci1wYXJ0eS1uYW1lXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eU5hbWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTZcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1hY2NvdW50aW5nLWN1c3RvbWVyLXBhcnR5LXNjaGVtZS1pZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QWNjb3VudGluZ0N1c3RvbWVyUGFydHlTY2hlbWVJZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWFjY291bnRpbmctY3VzdG9tZXItcGFydHktc2NoZW1lLWlkXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eVNjaGVtZUlkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiOFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWFjY291bnRpbmctY3VzdG9tZXItcGFydHktdmtuLXRja25cIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkFjY291bnRpbmdDdXN0b21lclBhcnR5VmtuVGNrbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWFjY291bnRpbmctY3VzdG9tZXItcGFydHktdmtuLXRja25cIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFjY291bnRpbmdDdXN0b21lclBhcnR5VmtuVGNrblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjE2XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtYnV5ZXItY3VzdG9tZXItcGFydHktbmFtZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QnV5ZXJDdXN0b21lclBhcnR5TmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWJ1eWVyLWN1c3RvbWVyLXBhcnR5LW5hbWVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJ1eWVyQ3VzdG9tZXJQYXJ0eU5hbWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTZcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1idXllci1jdXN0b21lci1wYXJ0eS1zY2hlbWUtaWRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkJ1eWVyQ3VzdG9tZXJQYXJ0eVNjaGVtZUlkJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtYnV5ZXItY3VzdG9tZXItcGFydHktc2NoZW1lLWlkXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJidXllckN1c3RvbWVyUGFydHlTY2hlbWVJZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjhcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1idXllci1jdXN0b21lci1wYXJ0eS12a24tdGNrblwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QnV5ZXJDdXN0b21lclBhcnR5VmtuVGNrbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWJ1eWVyLWN1c3RvbWVyLXBhcnR5LXZrbi10Y2tuXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJidXllckN1c3RvbWVyUGFydHlWa25UY2tuXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTZcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1zZWxsZXItc3VwcGxpZXItcGFydHktbmFtZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6U2VsbGVyU3VwcGxpZXJQYXJ0eU5hbWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1zZWxsZXItc3VwcGxpZXItcGFydHktbmFtZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsbGVyU3VwcGxpZXJQYXJ0eU5hbWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTZcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1zZWxsZXItc3VwcGxpZXItcGFydHktc2NoZW1lLWlkXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpTZWxsZXJTdXBwbGllclBhcnR5U2NoZW1lSWQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1zZWxsZXItc3VwcGxpZXItcGFydHktc2NoZW1lLWlkXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxsZXJTdXBwbGllclBhcnR5U2NoZW1lSWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI4XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2Utc2VsbGVyLXN1cHBsaWVyLXBhcnR5LXZrbi10Y2tuXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpTZWxsZXJTdXBwbGllclBhcnR5VmtuVGNrbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXNlbGxlci1zdXBwbGllci1wYXJ0eS12a24tdGNrblwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsbGVyU3VwcGxpZXJQYXJ0eVZrblRja25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIxNlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXRheC1yZXByZXNlbnRhdGl2ZS1wYXJ0eS1uYW1lXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpUYXhSZXByZXNlbnRhdGl2ZVBhcnR5TmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXRheC1yZXByZXNlbnRhdGl2ZS1wYXJ0eS1uYW1lXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXhSZXByZXNlbnRhdGl2ZVBhcnR5TmFtZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXRheC1yZXByZXNlbnRhdGl2ZS1wYXJ0eS1zY2hlbWUtaWRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlRheFJlcHJlc2VudGF0aXZlUGFydHlTY2hlbWVJZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXRheC1yZXByZXNlbnRhdGl2ZS1wYXJ0eS1zY2hlbWUtaWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRheFJlcHJlc2VudGF0aXZlUGFydHlTY2hlbWVJZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjhcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS10YXgtcmVwcmVzZW50YXRpdmUtcGFydHktdmtuLXRja25cIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlRheFJlcHJlc2VudGF0aXZlUGFydHlWa25UY2tuJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtdGF4LXJlcHJlc2VudGF0aXZlLXBhcnR5LXZrbi10Y2tuXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXhSZXByZXNlbnRhdGl2ZVBhcnR5VmtuVGNrblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjE2XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtdGF4LWV4Y2hhbmdlLXJhdGUtc291cmNlLWN1cnJlbmN5LWNvZGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlRheEV4Y2hhbmdlUmF0ZVNvdXJjZUN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXRheC1leGNoYW5nZS1yYXRlLXNvdXJjZS1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXhFeGNoYW5nZVJhdGVTb3VyY2VDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtdGF4LWV4Y2hhbmdlLXJhdGUtdGFyZ2V0LWN1cnJlbmN5LWNvZGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlRheEV4Y2hhbmdlUmF0ZVRhcmdldEN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXRheC1leGNoYW5nZS1yYXRlLXRhcmdldC1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXhFeGNoYW5nZVJhdGVUYXJnZXRDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtdGF4LWV4Y2hhbmdlLXJhdGUtY2FsY3VsYXRpb24tcmF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VGF4RXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtdGF4LWV4Y2hhbmdlLXJhdGUtY2FsY3VsYXRpb24tcmF0ZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGF4RXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXRheC1leGNoYW5nZS1yYXRlLWRhdGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlRheEV4Y2hhbmdlUmF0ZURhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXRheC1leGNoYW5nZS1yYXRlLWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGF4RXhjaGFuZ2VSYXRlRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAjdGF4RXhjaGFuZ2VSYXRlRGF0ZUlucHV0XHJcbiAgICAgICAgICAgICAgICAjdGF4RXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0YXhFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cInRheEV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGF4RXhjaGFuZ2VSYXRlRGF0ZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdGF4RXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXIud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0YXhFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXByaWNpbmctZXhjaGFuZ2UtcmF0ZS1zb3VyY2UtY3VycmVuY3ktY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UHJpY2luZ0V4Y2hhbmdlUmF0ZVNvdXJjZUN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXByaWNpbmctZXhjaGFuZ2UtcmF0ZS1zb3VyY2UtY3VycmVuY3ktY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJpY2luZ0V4Y2hhbmdlUmF0ZVNvdXJjZUN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wcmljaW5nLWV4Y2hhbmdlLXJhdGUtdGFyZ2V0LWN1cnJlbmN5LWNvZGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlByaWNpbmdFeGNoYW5nZVJhdGVUYXJnZXRDdXJyZW5jeUNvZGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wcmljaW5nLWV4Y2hhbmdlLXJhdGUtdGFyZ2V0LWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNpbmdFeGNoYW5nZVJhdGVUYXJnZXRDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcHJpY2luZy1leGNoYW5nZS1yYXRlLWNhbGN1bGF0aW9uLXJhdGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wcmljaW5nLWV4Y2hhbmdlLXJhdGUtY2FsY3VsYXRpb24tcmF0ZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wcmljaW5nLWV4Y2hhbmdlLXJhdGUtZGF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UHJpY2luZ0V4Y2hhbmdlUmF0ZURhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXByaWNpbmctZXhjaGFuZ2UtcmF0ZS1kYXRlXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNpbmdFeGNoYW5nZVJhdGVEYXRlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNwcmljaW5nRXhjaGFuZ2VSYXRlRGF0ZUlucHV0XHJcbiAgICAgICAgICAgICAgICAjcHJpY2luZ0V4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJpY2luZ0V4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwicHJpY2luZ0V4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJpY2luZ0V4Y2hhbmdlUmF0ZURhdGVJbnB1dC52YWx1ZVwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB4LTJcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHByaWNpbmdFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHByaWNpbmdFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXBheW1lbnQtZXhjaGFuZ2UtcmF0ZS1zb3VyY2UtY3VycmVuY3ktY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudEV4Y2hhbmdlUmF0ZVNvdXJjZUN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXBheW1lbnQtZXhjaGFuZ2UtcmF0ZS1zb3VyY2UtY3VycmVuY3ktY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEV4Y2hhbmdlUmF0ZVNvdXJjZUN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wYXltZW50LWV4Y2hhbmdlLXJhdGUtdGFyZ2V0LWN1cnJlbmN5LWNvZGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlBheW1lbnRFeGNoYW5nZVJhdGVUYXJnZXRDdXJyZW5jeUNvZGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wYXltZW50LWV4Y2hhbmdlLXJhdGUtdGFyZ2V0LWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRFeGNoYW5nZVJhdGVUYXJnZXRDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcGF5bWVudC1leGNoYW5nZS1yYXRlLWNhbGN1bGF0aW9uLXJhdGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlBheW1lbnRFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wYXltZW50LWV4Y2hhbmdlLXJhdGUtY2FsY3VsYXRpb24tcmF0ZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEV4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wYXltZW50LWV4Y2hhbmdlLXJhdGUtZGF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudEV4Y2hhbmdlUmF0ZURhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXBheW1lbnQtZXhjaGFuZ2UtcmF0ZS1kYXRlXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRFeGNoYW5nZVJhdGVEYXRlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNwYXltZW50RXhjaGFuZ2VSYXRlRGF0ZUlucHV0XHJcbiAgICAgICAgICAgICAgICAjcGF5bWVudEV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF5bWVudEV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwicGF5bWVudEV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGF5bWVudEV4Y2hhbmdlUmF0ZURhdGVJbnB1dC52YWx1ZVwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB4LTJcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHBheW1lbnRFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBheW1lbnRFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgZm9yPVwiaW52b2ljZS1wYXltZW50LWFsdGVybmF0aXZlLWV4Y2hhbmdlLXJhdGUtc291cmNlLWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVTb3VyY2VDdXJyZW5jeUNvZGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wYXltZW50LWFsdGVybmF0aXZlLWV4Y2hhbmdlLXJhdGUtc291cmNlLWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRBbHRlcm5hdGl2ZUV4Y2hhbmdlUmF0ZVNvdXJjZUN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbGFiZWxcIlxyXG4gICAgICAgICAgICAgIGZvcj1cImludm9pY2UtcGF5bWVudC1hbHRlcm5hdGl2ZS1leGNoYW5nZS1yYXRlLXRhcmdldC1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlVGFyZ2V0Q3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtcGF5bWVudC1hbHRlcm5hdGl2ZS1leGNoYW5nZS1yYXRlLXRhcmdldC1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVUYXJnZXRDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWxhYmVsXCJcclxuICAgICAgICAgICAgICBmb3I9XCJpbnZvaWNlLXBheW1lbnQtYWx0ZXJuYXRpdmUtZXhjaGFuZ2UtcmF0ZS1jYWxjdWxhdGlvbi1yYXRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtcGF5bWVudC1hbHRlcm5hdGl2ZS1leGNoYW5nZS1yYXRlLWNhbGN1bGF0aW9uLXJhdGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRBbHRlcm5hdGl2ZUV4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wYXltZW50LWFsdGVybmF0aXZlLWV4Y2hhbmdlLXJhdGUtZGF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlRGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtcGF5bWVudC1hbHRlcm5hdGl2ZS1leGNoYW5nZS1yYXRlLWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAjcGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlRGF0ZUlucHV0XHJcbiAgICAgICAgICAgICAgICAjcGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cInBheW1lbnRBbHRlcm5hdGl2ZUV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlRGF0ZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXIud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICBwYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWxlZ2FsLW1vbmV0YXJ5LXRvdGFsLWxpbmUtZXh0ZW5zaW9uLWFtb3VudFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6TGVnYWxNb25ldGFyeVRvdGFsTGluZUV4dGVuc2lvbkFtb3VudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWxlZ2FsLW1vbmV0YXJ5LXRvdGFsLWxpbmUtZXh0ZW5zaW9uLWFtb3VudFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVnYWxNb25ldGFyeVRvdGFsTGluZUV4dGVuc2lvbkFtb3VudFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1sZWdhbC1tb25ldGFyeS10b3RhbC10YXgtZXhjbHVzaXZlLWFtb3VudFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6TGVnYWxNb25ldGFyeVRvdGFsVGF4RXhjbHVzaXZlQW1vdW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtdGF4LWV4Y2x1c2l2ZS1hbW91bnRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlZ2FsTW9uZXRhcnlUb3RhbFRheEV4Y2x1c2l2ZUFtb3VudFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1sZWdhbC1tb25ldGFyeS10b3RhbC10YXgtaW5jbHVzaXZlLWFtb3VudFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6TGVnYWxNb25ldGFyeVRvdGFsVGF4SW5jbHVzaXZlQW1vdW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtdGF4LWluY2x1c2l2ZS1hbW91bnRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlZ2FsTW9uZXRhcnlUb3RhbFRheEluY2x1c2l2ZUFtb3VudFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1sZWdhbC1tb25ldGFyeS10b3RhbC1hbGxvd2FuY2UtdG90YWwtYW1vdW50XCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpMZWdhbE1vbmV0YXJ5VG90YWxBbGxvd2FuY2VUb3RhbEFtb3VudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWxlZ2FsLW1vbmV0YXJ5LXRvdGFsLWFsbG93YW5jZS10b3RhbC1hbW91bnRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlZ2FsTW9uZXRhcnlUb3RhbEFsbG93YW5jZVRvdGFsQW1vdW50XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWxlZ2FsLW1vbmV0YXJ5LXRvdGFsLWNoYXJnZS10b3RhbC1hbW91bnRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkxlZ2FsTW9uZXRhcnlUb3RhbENoYXJnZVRvdGFsQW1vdW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtY2hhcmdlLXRvdGFsLWFtb3VudFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVnYWxNb25ldGFyeVRvdGFsQ2hhcmdlVG90YWxBbW91bnRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtcGF5YWJsZS1yb3VuZGluZy1hbW91bnRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkxlZ2FsTW9uZXRhcnlUb3RhbFBheWFibGVSb3VuZGluZ0Ftb3VudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWxlZ2FsLW1vbmV0YXJ5LXRvdGFsLXBheWFibGUtcm91bmRpbmctYW1vdW50XCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsZWdhbE1vbmV0YXJ5VG90YWxQYXlhYmxlUm91bmRpbmdBbW91bnRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtcGF5YWJsZS1hbW91bnRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkxlZ2FsTW9uZXRhcnlUb3RhbFBheWFibGVBbW91bnQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1sZWdhbC1tb25ldGFyeS10b3RhbC1wYXlhYmxlLWFtb3VudFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVnYWxNb25ldGFyeVRvdGFsUGF5YWJsZUFtb3VudFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wYXltZW50LXRlcm1zLW5vdGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlBheW1lbnRUZXJtc05vdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wYXltZW50LXRlcm1zLW5vdGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRUZXJtc05vdGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI1MTJcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wYXltZW50LXRlcm1zLXBheW1lbnQtZHVlLWRhdGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlBheW1lbnRUZXJtc1BheW1lbnREdWVEYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wYXltZW50LXRlcm1zLXBheW1lbnQtZHVlLWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI3BheW1lbnRUZXJtc1BheW1lbnREdWVEYXRlSW5wdXRcclxuICAgICAgICAgICAgICAgICNwYXltZW50VGVybXNQYXltZW50RHVlRGF0ZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50VGVybXNQYXltZW50RHVlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJwYXltZW50VGVybXNQYXltZW50RHVlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXltZW50VGVybXNQYXltZW50RHVlRGF0ZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtY3VzdC1pbnYtaWRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkN1c3RJbnZJZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWN1c3QtaW52LWlkXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjdXN0SW52SWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI2NFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtaXMtY2FuY2VsZWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzQ2FuY2VsZWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgXHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpbnZvaWNlLWlzLWNhbmNlbGVkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc0NhbmNlbGVkJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1jYW5jZWwtY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6Q2FuY2VsQ29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWNhbmNlbC1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjYW5jZWxDb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTZcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1jYW5jZWwtZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkNhbmNlbERlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtY2FuY2VsLWRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjYW5jZWxEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXJlc291cmNlLWRvYy10eXBlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpSZXNvdXJjZURvY1R5cGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1yZXNvdXJjZS1kb2MtdHlwZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVzb3VyY2VEb2NUeXBlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMzJcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1yZXNvdXJjZS1kb2MtZW50cnlcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlJlc291cmNlRG9jRW50cnknIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1yZXNvdXJjZS1kb2MtZW50cnlcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlc291cmNlRG9jRW50cnlcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI2NFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6U3RhdHVzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGlkPVwiaW52b2ljZS1zdGF0dXNcIiBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXJlY2VpdmVyLXJlc3BvbnNlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpSZWNlaXZlclJlc3BvbnNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtcmVjZWl2ZXItcmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlY2VpdmVyUmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcmVjZWl2ZXItcmVzcG9uc2UtZGVzY1wiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UmVjZWl2ZXJSZXNwb25zZURlc2MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1yZWNlaXZlci1yZXNwb25zZS1kZXNjXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZWNlaXZlclJlc3BvbnNlRGVzY1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjEwMjRcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgXHJcbiAgICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICBcclxuICAgICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBidXR0b25UeXBlPVwic3VibWl0XCIgZm9ybU5hbWU9XCJpbnZvaWNlXCI+XHJcbiAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2FicC1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvYWJwLW1vZGFsPiAtLT4iXX0=
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWludm9pY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaW52b2ljZXMvaGl0LWludm9pY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaW52b2ljZXMvaGl0LWludm9pY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFPLGFBQWEsRUFBcUIsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBNkMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU81RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBVWxFLE1BQU0sT0FBTyxtQkFBbUI7SUErQjVCLFlBQ29CLElBQWlCLEVBQ2hCLGNBQWlDLEVBQ2pDLG1CQUEyQyxFQUMzQyx3QkFBa0QsRUFDbEQsY0FBOEIsRUFDOUIsWUFBaUM7UUFMbEMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUMzQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUF6QnRELHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFM0Isa0JBQWEsR0FB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QUFTOytCQUNJLGFBQWEsbUJBQ04sdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDOzZRQUt6QixpQkFBaUI7c0JBQW5FLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNNLHFCQUFxQjtzQkFBM0UsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ksdUJBQXVCO3NCQUEvRSxTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgaXNOdWxsT3JFbXB0eSwgaXNOdWxsT3JVbmRlZmluZWQsIExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0byB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBIaXRJbnZvaWNlU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtaW52b2ljZXMvaGl0LWludm9pY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdEdpYlBhcnRuZXJQa1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWdpYi1wYXJ0bmVyLXBrcy9oaXQtZ2liLXBhcnRuZXItcGsuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBIaXREb2N1bWVudFNlcmlhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWRvY3VtZW50LXNlcmlhbHMvaGl0LWRvY3VtZW50LXNlcmlhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBJbnZvaWNlVHlwZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtaW52b2ljZXMvbW9kZWxzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWludm9pY2UnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gICAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9oaXQtaW52b2ljZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0SW52b2ljZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkeEludm9pY2VJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeEludm9pY2VJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgnZHhSZWNlaXZlclBLU0luc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4UmVjZWl2ZXJQS1NJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgnZHhJbnZvaWNlU2VyaWFsSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhJbnZvaWNlU2VyaWFsSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuXHJcbiAgICBpbnZvaWNlc0RhdGFTb3VyY2U6IGFueVxyXG4gICAgaW52b2ljZVN0YXR1c0xvb2t1cDogYW55XHJcbiAgICBpbnZvaWNlUmVjZWl2ZXJSZXNwb25zZUxvb2t1cDogYW55XHJcbiAgICBpbnZvaWNlT2JqZWN0c0VudW1Mb29rdXA6IGFueVxyXG4gICAgaW52b2ljZVJlY2VpdmVyUEtEYXRhU291cmNlOiBhbnlcclxuICAgIGludm9pY2VTZXJpYWxEYXRhU291cmNlOiBhbnlcclxuXHJcbiAgICBpc1ByZXZpZXdNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgIGlzUHJldmlld01vZGFsQnVzeSA9IGZhbHNlO1xyXG5cclxuICAgIGlzUEtNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgIGlzUEtNb2RhbEJ1c3kgPSBmYWxzZTtcclxuICAgIHBrTW9kYWxTZWxlY3RlZEludm9pY2VJZDogYW55O1xyXG4gICAgcGtNb2RhbFNlbGVjdGVkSW52b2ljZVJlc291cmNlRG9jRW50cnk6IGFueTtcclxuXHJcbiAgICBpc1NlcmlhbE1vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgaXNTZXJpYWxNb2RhbEJ1c3kgPSBmYWxzZTtcclxuICAgIHNlcmlhbE1vZGFsU2VsZWN0ZWRJbnZvaWNlSWQ6IGFueTtcclxuICAgIHNlcmlhbE1vZGFsU2VsZWN0ZWRJbnZvaWNlUmVzb3VyY2VEb2NFbnRyeTogYW55O1xyXG5cclxuICAgIHNlbGVjdGVkSW52b2ljZUlkczogc3RyaW5nW107XHJcblxyXG4gICAgZmF0dXJhT25pemxlbWU6IGFueTtcclxuXHJcbiAgICBpc01vZGFsT3BlbkZvck5vdFF1ZXVlID0gZmFsc2VcclxuICAgIGludm9pY2VOb3RTZW5kUXVldWVEYXRhU291cmNlOiBhbnlcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludm9pY2VTZXJ2aWNlOiBIaXRJbnZvaWNlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGdpYlBhcnRuZXJQa1NlcnZpY2U6IEhpdEdpYlBhcnRuZXJQa1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaXREb2N1bWVudFNlcmlhbFNlcnZpY2U6IEhpdERvY3VtZW50U2VyaWFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmludm9pY2VzRGF0YVNvdXJjZSA9IHRoaXMuaW52b2ljZVNlcnZpY2UuTG9hZEludm9pY2VzO1xyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0U3RhdHVzZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW52b2ljZVN0YXR1c0xvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRSZWNlaXZlclJlc3BvbnNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlUmVjZWl2ZXJSZXNwb25zZUxvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFNhcE9iamVjdHMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW52b2ljZU9iamVjdHNFbnVtTG9va3VwID0gbGlzdDtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgc2VuZEludm9pY2VTaW5nbGUocmVjb3JkKSB7XHJcbiAgICAgICAgbGV0IGlkczogc3RyaW5nW10gPSBbcmVjb3JkLmlkXTtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLmludm9pY2VOb3RTZW5kUXVldWVEYXRhU291cmNlID0gbnVsbFxyXG4gICAgICAgIGlmIChpc051bGxPckVtcHR5KHJlY29yZC5zZWxlY3RlZEludm9pY2VTZXJpYWwpKSB7XHJcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgLmluZm8oJ0JlbGdlIHNlcmkgc2XDp2ltaSB5YXDEsWxtYWTEscSfxLEgacOnaW4gZW50ZWdyYXTDtnJkZSBidWx1bmFuIHZhcnNhecSxbGFuIHNlcml5bGUgZ8O2bmRlcmlsZWNla3Rpci4gRGV2YW0gZXRtZWsgaXN0aXlvciBtdXN1bnV6PycsIHsga2V5OiAnOjpCaWxnaScsIGRlZmF1bHRWYWx1ZTogJycgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gXCJjb25maXJtXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2Uuc2VuZEludm9pY2VCeUlkKGlkcykuc3Vic2NyaWJlKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yTm90UXVldWUgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZvaWNlTm90U2VuZFF1ZXVlRGF0YVNvdXJjZSA9IGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoXCLEsMWfbGVtIEdlcsOnZWtsZcWfdGlyaWxtacWfdGlyLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJIZXJoYW5naSBiaXIgacWfbGVtIGdlcsOnZWtsZcWfdGlyaWxtZWRpLlwiKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5zZW5kSW52b2ljZUJ5SWQoaWRzKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRJbnZvaWNlQ2FuY2VsV2l0aE9wZW4ocmVjb3JkKSB7XHJcblxyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2Uuc2V0SW52b2ljZUNhbmNlbEJ5ZElkKHJlY29yZC5pZCwgMSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKFwiQmVsZ2UgYmHFn2FyxLF5bGEgaXB0YWxlIMOnZWtpbGVyZWssIGtheW5ha3RhIGfDvG5jZWxsZW5kaS5cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBzZXRJbnZvaWNlQ2FuY2VsV2l0aFJldmlzZShyZWNvcmQpIHtcclxuXHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5zZXRJbnZvaWNlQ2FuY2VsQnlkSWQocmVjb3JkLmlkLCA2KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKVxyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoXCJCZWxnZSBiYcWfYXLEsXlsYSBpcHRhbGUgw6dla2lsZXJlaywga2F5bmFrdGEgZ8O8bmNlbGxlbmRpLlwiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsaXN0UmVjZWl2ZXJQSyhyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmdpYlBhcnRuZXJQa1NlcnZpY2VcclxuICAgICAgICAgICAgLkdldEN1c3RvbWVyQWN0aXZlUEtTV2l0aERlZmF1bHRQayhyZWNvcmQuYWNjb3VudGluZ0N1c3RvbWVyUGFydHlWa25UY2tuLCAxKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnZvaWNlUmVjZWl2ZXJQS0RhdGFTb3VyY2UgPSAocmVzLmFsaWFzTmFtZXMgfHwgW10pLm1hcChhbGlhcyA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIEFkcmVzOiBhbGlhcyxcclxuICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHRQSzogYWxpYXMgPT09IHJlcy5kZWZhdWx0RUludm9pY2VQa1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucGtNb2RhbFNlbGVjdGVkSW52b2ljZUlkID0gcmVjb3JkLmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wa01vZGFsU2VsZWN0ZWRJbnZvaWNlUmVzb3VyY2VEb2NFbnRyeSA9IHJlY29yZC5yZXNvdXJjZURvY0VudHJ5O1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc1BLTW9kYWxPcGVuID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBsaXN0QWN0aXZlU2VyaWVzKHJlY29yZCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICBjb25zdCB0eXBlID0gcmVjb3JkLnByb2ZpbGVJZCA9PT0gXCJFQVJTSVZGQVRVUkFcIiBcclxuICAgICAgPyBJbnZvaWNlVHlwZS5lYXJzaXYgXHJcbiAgICAgIDogSW52b2ljZVR5cGUuZWZhdHVyYTtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2codHlwZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaGl0RG9jdW1lbnRTZXJpYWxTZXJ2aWNlLkxpc3RBY3RpdmVTZXJpZXNGb3JEb2N1bWVudCh0eXBlKS5zdWJzY3JpYmUoc2VyaWFscyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmludm9pY2VTZXJpYWxEYXRhU291cmNlID0gc2VyaWFscy5tYXAoaXRlbSA9PiAoeyBTZXJpOiBpdGVtIH0pKTs7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW52b2ljZUlkcyA9IFtyZWNvcmQuaWRdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc1NlcmlhbE1vZGFsT3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgbGlzdEFjdGl2ZVNlcmllc0Zvck11bHRpcGxlKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5nZXRTZWxlY3RlZFJvd3NEYXRhKCk7XHJcblxyXG4gICAgaWYgKCFzZWxlY3RlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuKFwiTMO8dGZlbiBlbiBheiBiaXIgZmF0dXJhIHNlw6dpbi5cIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuIGNvbnN0IHR5cGVzID0gWy4uLm5ldyBTZXQoc2VsZWN0ZWRSb3dzLm1hcChyID0+IFxyXG4gICAgci5wcm9maWxlSWQ/LnRyaW0oKS50b1VwcGVyQ2FzZSgpID09PSBcIkVBUlNJVkZBVFVSQVwiIFxyXG4gICAgICAgID8gSW52b2ljZVR5cGUuZWFyc2l2IFxyXG4gICAgICAgIDogSW52b2ljZVR5cGUuZWZhdHVyYVxyXG4pKV07XHJcblxyXG5pZiAodHlwZXMubGVuZ3RoID4gMSkge1xyXG4gICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuKFwiRmFya2zEsSB0w7xyZGVraSBmYXR1cmFsYXIgacOnaW4gYXluxLEgYW5kYSBzZXJpIGF0YW1hc8SxIHlhcMSxbGFtYXouIEzDvHRmZW4gYXluxLEgdMO8cmRla2kgZmF0dXJhbGFyxLEgc2XDp2luLlwiKTtcclxuICAgIHJldHVybjtcclxufVxyXG5cclxuY29uc3QgdHlwZSA9IHR5cGVzWzBdO1xyXG5cclxuXHJcbiAgICB0aGlzLmhpdERvY3VtZW50U2VyaWFsU2VydmljZS5MaXN0QWN0aXZlU2VyaWVzRm9yRG9jdW1lbnQodHlwZSkuc3Vic2NyaWJlKHNlcmlhbHMgPT4ge1xyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcmlhbERhdGFTb3VyY2UgPSBzZXJpYWxzLm1hcChpdGVtID0+ICh7IFNlcmk6IGl0ZW0gfSkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZvaWNlSWRzID0gc2VsZWN0ZWRSb3dzLm1hcChwID0+IHAuaWQpO1xyXG4gICAgICAgIHRoaXMuaXNTZXJpYWxNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbiAgICBzZWxlY3RJbnZvaWNlU2VyaWFsKHJlY29yZCkge1xyXG4gICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS51cGRhdGVJbnZvaWNlU2VyaWFsKHRoaXMuc2VsZWN0ZWRJbnZvaWNlSWRzLCByZWNvcmQuU2VyaS5jb2RlKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzU2VyaWFsTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhcIkJlbGdlIHNlcmlsZXJpIGJhxZ9hcsSxeWxhIHNlw6dpbGRpLlwiKTtcclxuICAgICAgICAgICAgdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdFBLQWRkcmVzcyhyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLnVwZGF0ZUludm9pY2VSZWNlaXZlcih0aGlzLnBrTW9kYWxTZWxlY3RlZEludm9pY2VJZCwgcmVjb3JkLkFkcmVzLCByZWNvcmQuaXNEZWZhdWx0UEspLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQS01vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc2VuZEludm9pY2VNdWx0aXBsZSgpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICBsZXQgaWRzOiBBcnJheTx7IGlkOiBzdHJpbmcsIHNlbGVjdGVkU2VyaWFsOiBzdHJpbmcgfT4gPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5kYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTZXJpYWw6IGVsZW1lbnQuZGF0YS5zZWxlY3RlZEludm9pY2VTZXJpYWwuY29kZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmIChpZHMuZmlsdGVyKHAgPT4gaXNOdWxsT3JFbXB0eShwLnNlbGVjdGVkU2VyaWFsKSkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgLmluZm8oJ1Nlcmkgc2XDp2ltaSB5YXDEsWxtYXlhbiBiZWxnZWxlciBpw6dpbiBlbnRlZ3JhdMO2cmRlIGJ1bHVuYW4gdmFyc2F5xLFsYW4gc2VyaXlsZSBnw7ZuZGVyaW0geWFwxLFsYWNha3TEsXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiY29uZmlybVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLnNlbmRJbnZvaWNlQnlJZChpZHMubWFwKHAgPT4gcC5pZCkpLnN1YnNjcmliZSgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvck5vdFF1ZXVlID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2ljZU5vdFNlbmRRdWV1ZURhdGFTb3VyY2UgPSBpdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKFwiSGVyaGFuZ2kgYmlyIGnFn2xlbSBnZXLDp2VrbGXFn3RpcmlsbWVkaS5cIik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2Uuc2VuZEludm9pY2VCeUlkKGlkcy5tYXAocCA9PiBwLmlkKSkuc3Vic2NyaWJlKCgpID0+IHsgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKFwixLDFn2xlbSBHZXLDp2VrbGXFn3RpcmlsbWnFn3Rpci5cIik7IHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZW5kSW52b2ljZVRvRW50ZWdyYXRvcigpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLnNlbmRJbnZvaWNlVG9FbnRlZ3JhdG9yKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJbnZvaWNlc0Zyb21Db25uZWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRJbnZvaWNlc0Zyb21Db25uZWN0b3IoKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEludm9pY2VQcmV2aWV3KHJlY29yZCkge1xyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0SW52b2ljZVByZXZpZXcocmVjb3JkLmlkLCByZWNvcmQucmVzb3VyY2VEb2NUeXBlKS5zdWJzY3JpYmUoZmF0dXJhID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSBVaW50OEFycmF5LmZyb20oYXRvYihmYXR1cmEucHJldmlld0hUTUwpLCBjID0+IGMuY2hhckNvZGVBdCgwKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGh0bWxDb250ZW50ID0gbmV3IFRleHREZWNvZGVyKCd1dGYtOCcpLmRlY29kZShieXRlcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC5vcGVuKCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC53cml0ZShodG1sQ29udGVudCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC5jbG9zZSgpO1xyXG4gICAgICAgICAgICBuZXdUYWIuZG9jdW1lbnQudGl0bGUgPSByZWNvcmQuaWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SW52b2ljZVhNTChyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFhNTFByZXZpZXcocmVjb3JkLmlkLCByZWNvcmQucmVzb3VyY2VEb2NUeXBlKS5zdWJzY3JpYmUoZmF0dXJhID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYGRhdGE6JHtmYXR1cmEubWltZVR5cGV9O2Jhc2U2NCwke2ZhdHVyYS5jb250ZW50fWA7XHJcbiAgICAgICAgICAgIC8vdGhpcy5oaXRTaGFyZWRTZXJ2aWNlLnByZXZpZXdGaWxlKGZhdHVyYS5jb250ZW50KTtcclxuICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgbGluay5ocmVmID0gc291cmNlO1xyXG4gICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gYCR7ZmF0dXJhLmZpbGVuYW1lfWA7XHJcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRSZWNlaXZlclJlc3BvbnNlTmFtZShyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmludm9pY2VSZWNlaXZlclJlc3BvbnNlTG9va3VwLmZpbmQoKHgpID0+IHguaWQgPT09IHJlc3BvbnNlSWQpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGlzcGxheU5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERvY09iamVjdE5hbWUoZGF0YSkge1xyXG4gICAgICAgIHJldHVybiAoKGRhdGEuaXNEcmFmdCA/IFwiVGFzbGFrIFwiIDogXCJcIikgKyB0aGlzLmludm9pY2VPYmplY3RzRW51bUxvb2t1cC5maW5kKCh4KSA9PiB4LmlkID09IChkYXRhLmlzRHJhZnQgPyBkYXRhLnJlc291cmNlU3ViRG9jVHlwZSA6IGRhdGEucmVzb3VyY2VEb2NUeXBlKSkuZGlzcGxheU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb25DbGFzcyhyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlSWQgPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtY2xvY2tcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1jaGVjay1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS10aW1lcy1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjwhLS0gZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2VxZXFlcSAtLT5cclxuPGFicC1wYWdlIFt0aXRsZV09XCInZURvbnVzdW06Okludm9pY2VzJyB8IGFicExvY2FsaXphdGlvblwiPlxyXG4gXHJcbiAgPHA+e3sgJ2VEb251c3VtOjpQZW5kaW5nSW52b2ljZXNEZXNjcmlwdGlvbicgfCBhYnBMb2NhbGl6YXRpb24gfX08L3A+XHJcbiAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG14LTJcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFeHBvcnRUb0V4Y2VsQnVzeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0VG9FeGNlbCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyAnZURvbnVzdW06OkV4cG9ydFRvRXhjZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgIC0tPlxyXG4gICAgICA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkludm9pY2VzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4td2FybmluZyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJsaXN0QWN0aXZlU2VyaWVzRm9yTXVsdGlwbGUoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFza3MgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OlNlbGVjdFNlcmlhbE11bHRpcGxlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5JbnZvaWNlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwic2VuZEludm9pY2VNdWx0aXBsZSgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZSBtZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgIHt7ICdlRG9udXN1bTo6QWRkVG9RdWV1ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwhLS0gPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5JbnZvaWNlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1zdWNjZXNzXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwic2VuZEludm9pY2VUb0VudGVncmF0b3IoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OlNlbmRUb0VudGVncmF0b3JNYW51YWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkludm9pY2VzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4teHMgYnRuLXdhcm5pbmdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwiZ2V0SW52b2ljZXNGcm9tQ29ubmVjdG9yKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkdldEZyb21Db25uZWN0b3JNYW51YWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgXHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgIFxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeEludm9pY2VJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJpbnZvaWNlc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCIgc3R5bGU9XCJoZWlnaHQ6IDc1dmg7XCI+XHJcbiAgICAgICAgPGR4by1wYWdlciBbdmlzaWJsZV09XCJ0cnVlXCIgW3Nob3dJbmZvXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbNTAsMTAwLDIwMF1cIiBbc2hvd05hdmlnYXRpb25CdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4by1wYWdlcj5cclxuICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiNTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICA8L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZ3JvdXAtcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiIFthbGxvd0NvbHVtbkRyYWdnaW5nXT1cInRydWVcIj48L2R4by1ncm91cC1wYW5lbD5cclxuICAgICAgICA8ZHhvLWdyb3VwaW5nICNleHBhbmQgW2F1dG9FeHBhbmRBbGxdPVwiZmFsc2VcIiBbYWxsb3dDb2xsYXBzaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgW2NvbnRleHRNZW51RW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZ3JvdXBpbmc+XHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBbYWxsb3dFeHBvcnRTZWxlY3RlZERhdGFdPVwiZmFsc2VcIj48L2R4by1leHBvcnQ+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLWJ1aWxkZXIgW2FsbG93SGllcmFyY2hpY2FsRmllbGRzXT1cInRydWVcIj48L2R4by1maWx0ZXItYnVpbGRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gW2ZpeGVkXT1cInRydWVcIiBkYXRhRmllbGQ9XCJpZFwiIHdpZHRoPVwiMTIwXCIgW2FsbG93R3JvdXBpbmddPVwiZmFsc2VcIiBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGUgW2Rpc2FibGVkXT1cImRpc2FibGVkSWRDb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJ1cGRhdGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZGVsZXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJzZW5kSW52b2ljZVNpbmdsZShyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpBZGRUb1F1ZXVlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2V0SW52b2ljZUNhbmNlbFdpdGhPcGVuKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gOTlcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZXRDYW5jZWxXaXRoT3BlbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNldEludm9pY2VDYW5jZWxXaXRoUmV2aXNlKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gOTlcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZXRDYW5jZWxXaXRoUmV2aXNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwibGlzdFJlY2VpdmVyUEsocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuY2lsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlNlbGVjdFJlY2VpdmVyUEsnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJsaXN0QWN0aXZlU2VyaWVzKHJvdy5kYXRhKVwiICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRhc2tzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlNlbGVjdFNlcmlhbEZvckRvY3VtZW50JyB8XHJcbiAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImdldEludm9pY2VQcmV2aWV3KHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMCB8fCByb3cuZGF0YS5zdGF0dXM9PTk5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlByZXZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXRJbnZvaWNlWE1MKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMCB8fCByb3cuZGF0YS5zdGF0dXM9PTk5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlByZXZpZXdYTUwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXNzdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXNzdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhVHlwZT1cIm51bWJlclwiIGRhdGFGaWVsZD1cInJlc291cmNlRG9jRW50cnlcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY0VudHJ5J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhVHlwZT1cIm51bWJlclwiIGRhdGFGaWVsZD1cInJlc291cmNlRG9jTnVtXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVzb3VyY2VEb2NOdW0nfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImludm9pY2VJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SW52b2ljZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBjZWxsVGVtcGxhdGU9XCJkb2NUeXBlVGVtcGxhdGVcIiBkYXRhRmllbGQ9XCJyZXNvdXJjZURvY1R5cGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY1R5cGUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnZG9jVHlwZVRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAge3tnZXREb2NPYmplY3ROYW1lKGRhdGEuZGF0YSl9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImFjY291bnRpbmdDdXN0b21lclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdDdXN0b21lclBhcnR5TmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWNjb3VudGluZ0N1c3RvbWVyUGFydHlWa25UY2tuXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6QWNjb3VudGluZ0N1c3RvbWVyUGFydHlWa25UY2tuJ3xhYnBMb2NhbGl6YXRpb259fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJidXllckN1c3RvbWVyUGFydHlOYW1lXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpCdXllckN1c3RvbWVyUGFydHlOYW1lJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwic3RhdHVzXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTdGF0dXMnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJpbnZvaWNlU3RhdHVzTG9va3VwXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInByb2ZpbGVJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UHJvZmlsZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpbnZvaWNlVHlwZUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Okludm9pY2VUeXBlQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibGVnYWxNb25ldGFyeVRvdGFsUGF5YWJsZUFtb3VudFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UGF5YWJsZUFtb3VudCd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgZGF0YVR5cGU9XCJudW1iZXJcIiBmb3JtYXQ9XCIjLCMjMC4wMFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2N1bWVudEN1cnJlbmN5Q29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jQ3VycmVuY3knfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInJlY2VpdmVyUmVzcG9uc2VcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlY2VpdmVyUmVzcG9uc2UnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cImljb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwiaW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdpY29uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UpXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydjb2xvcic6ZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzEnID8gJ2dyZWVuJyA6IGRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09ICcyJyA/ICdyZWQnIDogJ2dyYXknfVwiPjwvaT5cclxuICAgICAgICAgIHt7Z2V0UmVjZWl2ZXJSZXNwb25zZU5hbWUoZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UpfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJyZWNlaXZlclJlc3BvbnNlRGVzY1wiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlY2VpdmVyUmVzcG9uc2VEZXNjJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzZWxlY3RlZFJlY2VpdmVyUEtcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTZWxlY3RlZFJlY2VpdmVyUEsnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInNlbGVjdGVkSW52b2ljZVNlcmlhbFwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlNlbGVjdGVkSW52b2ljZVNlcmlhbCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidXVJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6VXVJZCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVnaW9uXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZWdpb24nfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNQS01vZGFsQnVzeVwiIFsodmlzaWJsZSldPVwiaXNQS01vZGFsT3BlblwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ2xnJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+XHJcbiAgICAgIHt7cGtNb2RhbFNlbGVjdGVkSW52b2ljZVJlc291cmNlRG9jRW50cnl9fSB7eyAnZURvbnVzdW06OlJlY2VpdmVyUEtTJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhSZWNlaXZlclBLU0luc3RhbmNlIFtkYXRhU291cmNlXT1cImludm9pY2VSZWNlaXZlclBLRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cImZhbHNlXCIgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiPlxyXG4gICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gW3dpZHRoXT1cIjgwXCIgY2VsbFRlbXBsYXRlPVwib3BlcmF0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgKGNsaWNrKT1cInNlbGVjdFBLQWRkcmVzcyhyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIFNlw6dcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJBZHJlc1wiIGNhcHRpb249XCJBZHJlc1wiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFt3aWR0aF09XCIxNTBcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRlZmF1bHRQSycgfCBhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cImRlZmF1bHRQa0NoZWNrYm94VGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ2RlZmF1bHRQa0NoZWNrYm94VGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBbKG5nTW9kZWwpXT1cInJvdy5kYXRhLmlzRGVmYXVsdFBLXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzU2VyaWFsTW9kYWxCdXN5XCIgWyh2aXNpYmxlKV09XCJpc1NlcmlhbE1vZGFsT3BlblwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ2xnJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+XHJcbiAgICAgIEJlbGdlIFNlcmkgU2XDp2ltaVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhJbnZvaWNlU2VyaWFsSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiaW52b2ljZVNlcmlhbERhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFt3aWR0aF09XCI4MFwiIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJzZWxlY3RJbnZvaWNlU2VyaWFsKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4gU2XDp1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIlNlcmkuY29kZVwiIGNhcHRpb249XCJTZXJpXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiU2VyaS5kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RGVzY3JpcHRpb24nfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuXHJcbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlbkZvck5vdFF1ZXVlXCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+IMOHb2tsdSBQSyB5YSBzYWhpcCBvbGFuIEJlbGdlIE51bWFyYSBMaXN0ZXNpIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQtZGFuZ2VyLXRvcFwiIHJvbGU9XCJhbGVydFwiPlxyXG4gIDxiPlV5YXLEsTo8L2I+IMOHb2tsdSBQSyB5YSBzYWhpcCBvbGFubGFyIGt1eXJ1xJ9hIGVrbGVuZW1lZGkuxLDFn2xlbWxlcmRlbiBBbMSxY8SxIEFkcmVzaSBzZcOnaW5pei5cclxuPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXhjZWwtd3JhcHBlclwiPlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJleGNlbC10YWJsZVwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkPiM8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3snZURvbnVzdW06OlJlc291cmNlRG9jRW50cnknfGFicExvY2FsaXphdGlvbn19PC90ZD5cclxuICAgICAgICAgICAgPHRkPiB7eydlRG9udXN1bTo6U3RhdHVzJ3xhYnBMb2NhbGl6YXRpb259fSA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbnZvaWNlTm90U2VuZFF1ZXVlRGF0YVNvdXJjZTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8dGQ+e3sgaSsxIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPiB7e2l0ZW19fSA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+IDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+IDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICBLYXBhdFxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48c3R5bGU+XHJcbiAgLmV4Y2VsLXdyYXBwZXIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtaGVpZ2h0OiA0MDBweDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2M2YzZjNjtcclxuICAgIGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICB9XHJcblxyXG4gIC5leGNlbC10YWJsZSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XHJcbiAgfVxyXG5cclxuICAuZXhjZWwtdGFibGUgdGgsXHJcbiAgLmV4Y2VsLXRhYmxlIHRkIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMGQwZDA7XHJcbiAgICBwYWRkaW5nOiA2cHggMTBweDtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgfVxyXG5cclxuICAuZXhjZWwtdGFibGUgdGhlYWQgdGgge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgcG9zaXRpb246IHN0aWNreTtcclxuICAgIHRvcDogMDtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgfVxyXG5cclxuICAuZXhjZWwtdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XHJcbiAgfVxyXG5cclxuICAuZXhjZWwtdGFibGUgdGJvZHkgdHI6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZjJmZjtcclxuICB9XHJcblxyXG4gIC5yaWdodCB7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICB9XHJcblxyXG4gIC5vcGVuIHtcclxuICAgIGNvbG9yOiAjMDA4MDAwO1xyXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICB9XHJcblxyXG4gIC5jbG9zZWQge1xyXG4gICAgY29sb3I6ICNjMDAwMDA7XHJcbiAgICBmb250LXdlaWdodDogNTAwO1xyXG4gIH1cclxuICAuYWxlcnQtZGFuZ2VyLXRvcHtcclxuICBiYWNrZ3JvdW5kOiNmZGU4ZTg7XHJcbiAgYm9yZGVyOjFweCBzb2xpZCAjZjVjMmM3O1xyXG4gIGNvbG9yOiNiMDJhMzc7XHJcbiAgcGFkZGluZzoxMHB4IDEycHg7XHJcbiAgYm9yZGVyLXJhZGl1czo2cHg7XHJcbiAgZm9udC1mYW1pbHk6IENhbGlicmksIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gIG1hcmdpbi1ib3R0b206MTBweDtcclxufVxyXG48L3N0eWxlPlxyXG5cclxuXHJcblxyXG5cclxuPCEtLSA8YWJwLW1vZGFsIFtidXN5XT1cImlzTW9kYWxCdXN5XCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlblwiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICAgIDxoMz5cclxuICAgICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpOZXdJbnZvaWNlJykgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9oMz5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgXHJcbiAgICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGlkPVwiaW52b2ljZVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS11YmwtdmVyc2lvbi1pZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VWJsVmVyc2lvbklkJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS11YmwtdmVyc2lvbi1pZFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidWJsVmVyc2lvbklkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiOFwiXHJcbiAgICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWN1c3RvbWl6YXRpb24taWRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkN1c3RvbWl6YXRpb25JZCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtY3VzdG9taXphdGlvbi1pZFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY3VzdG9taXphdGlvbklkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiOFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXByb2ZpbGUtaWRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlByb2ZpbGVJZCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtcHJvZmlsZS1pZFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvZmlsZUlkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMzJcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1pbnZvaWNlLWlkXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJbnZvaWNlSWQnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWludm9pY2UtaWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VJZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjMyXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1jb3B5LWluZGljYXRvclwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29weUluZGljYXRvclwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgLz5cclxuICBcclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImludm9pY2UtY29weS1pbmRpY2F0b3JcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkNvcHlJbmRpY2F0b3InIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXV1LWlkXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpVdUlkJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cImludm9pY2UtdXUtaWRcIiBmb3JtQ29udHJvbE5hbWU9XCJ1dUlkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCI2NFwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWlzc3VlLWRhdGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Oklzc3VlRGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtaXNzdWUtZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc3N1ZURhdGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI2lzc3VlRGF0ZUlucHV0XHJcbiAgICAgICAgICAgICAgICAjaXNzdWVEYXRlRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImlzc3VlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJpc3N1ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNzdWVEYXRlSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBpc3N1ZURhdGVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVEYXRlRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWlzc3VlLXRpbWVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Oklzc3VlVGltZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtaXNzdWUtdGltZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc3N1ZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI2lzc3VlVGltZUlucHV0XHJcbiAgICAgICAgICAgICAgICAjaXNzdWVUaW1lRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImlzc3VlVGltZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJpc3N1ZVRpbWVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNzdWVUaW1lSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBpc3N1ZVRpbWVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVUaW1lRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWludm9pY2UtdHlwZS1jb2RlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJbnZvaWNlVHlwZUNvZGUnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWludm9pY2UtdHlwZS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlVHlwZUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzMlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWRvY3VtZW50LWN1cnJlbmN5LWNvZGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRvY3VtZW50Q3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1kb2N1bWVudC1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkb2N1bWVudEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS10YXgtY3VycmVuY3ktY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VGF4Q3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtdGF4LWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRheEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wcmljaW5nLWN1cnJlbmN5LWNvZGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlByaWNpbmdDdXJyZW5jeUNvZGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wcmljaW5nLWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNpbmdDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcGF5bWVudC1jdXJyZW5jeS1jb2RlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQYXltZW50Q3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtcGF5bWVudC1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50Q3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiM1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXBheW1lbnQtYWx0ZXJuYXRpdmUtY3VycmVuY3ktY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudEFsdGVybmF0aXZlQ3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtcGF5bWVudC1hbHRlcm5hdGl2ZS1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50QWx0ZXJuYXRpdmVDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtYWNjb3VudGluZy1jb3N0XCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpBY2NvdW50aW5nQ29zdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWFjY291bnRpbmctY29zdFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudGluZ0Nvc3RcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzMlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWxpbmUtY291bnQtbnVtZXJpY1wiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6TGluZUNvdW50TnVtZXJpYycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWxpbmUtY291bnQtbnVtZXJpY1wiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGluZUNvdW50TnVtZXJpY1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1pbnZvaWNlLXBlcmlvZC1zdGFydC1kYXRlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJbnZvaWNlUGVyaW9kU3RhcnREYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1pbnZvaWNlLXBlcmlvZC1zdGFydC1kYXRlXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VQZXJpb2RTdGFydERhdGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI2ludm9pY2VQZXJpb2RTdGFydERhdGVJbnB1dFxyXG4gICAgICAgICAgICAgICAgI2ludm9pY2VQZXJpb2RTdGFydERhdGVEYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2ljZVBlcmlvZFN0YXJ0RGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJpbnZvaWNlUGVyaW9kU3RhcnREYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImludm9pY2VQZXJpb2RTdGFydERhdGVJbnB1dC52YWx1ZVwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB4LTJcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGludm9pY2VQZXJpb2RTdGFydERhdGVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2ljZVBlcmlvZFN0YXJ0RGF0ZURhdGVwaWNrZXIubWFudWFsRGF0ZUNoYW5nZShudWxsLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1pbnZvaWNlLXBlcmlvZC1zdGFydC10aW1lXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJbnZvaWNlUGVyaW9kU3RhcnRUaW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1pbnZvaWNlLXBlcmlvZC1zdGFydC10aW1lXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VQZXJpb2RTdGFydFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI2ludm9pY2VQZXJpb2RTdGFydFRpbWVJbnB1dFxyXG4gICAgICAgICAgICAgICAgI2ludm9pY2VQZXJpb2RTdGFydFRpbWVEYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2ljZVBlcmlvZFN0YXJ0VGltZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJpbnZvaWNlUGVyaW9kU3RhcnRUaW1lRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImludm9pY2VQZXJpb2RTdGFydFRpbWVJbnB1dC52YWx1ZVwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB4LTJcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGludm9pY2VQZXJpb2RTdGFydFRpbWVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2ljZVBlcmlvZFN0YXJ0VGltZURhdGVwaWNrZXIubWFudWFsRGF0ZUNoYW5nZShudWxsLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1pbnZvaWNlLXBlcmlvZC1lbmQtZGF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SW52b2ljZVBlcmlvZEVuZERhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWludm9pY2UtcGVyaW9kLWVuZC1kYXRlXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VQZXJpb2RFbmREYXRlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNpbnZvaWNlUGVyaW9kRW5kRGF0ZUlucHV0XHJcbiAgICAgICAgICAgICAgICAjaW52b2ljZVBlcmlvZEVuZERhdGVEYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2ljZVBlcmlvZEVuZERhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiaW52b2ljZVBlcmlvZEVuZERhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW52b2ljZVBlcmlvZEVuZERhdGVJbnB1dC52YWx1ZVwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB4LTJcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBYnBVaTo6Q2xlYXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGludm9pY2VQZXJpb2RFbmREYXRlRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9pY2VQZXJpb2RFbmREYXRlRGF0ZXBpY2tlci5tYW51YWxEYXRlQ2hhbmdlKG51bGwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWludm9pY2UtcGVyaW9kLWVuZC10aW1lXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJbnZvaWNlUGVyaW9kRW5kVGltZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtaW52b2ljZS1wZXJpb2QtZW5kLXRpbWVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW52b2ljZVBlcmlvZEVuZFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI2ludm9pY2VQZXJpb2RFbmRUaW1lSW5wdXRcclxuICAgICAgICAgICAgICAgICNpbnZvaWNlUGVyaW9kRW5kVGltZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpbnZvaWNlUGVyaW9kRW5kVGltZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJpbnZvaWNlUGVyaW9kRW5kVGltZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbnZvaWNlUGVyaW9kRW5kVGltZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2ljZVBlcmlvZEVuZFRpbWVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2ljZVBlcmlvZEVuZFRpbWVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtaW52b2ljZS1wZXJpb2QtZHVyYXRpb24tbWVhc3VyZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SW52b2ljZVBlcmlvZER1cmF0aW9uTWVhc3VyZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtaW52b2ljZS1wZXJpb2QtZHVyYXRpb24tbWVhc3VyZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlUGVyaW9kRHVyYXRpb25NZWFzdXJlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNpbnZvaWNlUGVyaW9kRHVyYXRpb25NZWFzdXJlSW5wdXRcclxuICAgICAgICAgICAgICAgICNpbnZvaWNlUGVyaW9kRHVyYXRpb25NZWFzdXJlRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImludm9pY2VQZXJpb2REdXJhdGlvbk1lYXN1cmVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiaW52b2ljZVBlcmlvZER1cmF0aW9uTWVhc3VyZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbnZvaWNlUGVyaW9kRHVyYXRpb25NZWFzdXJlSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBpbnZvaWNlUGVyaW9kRHVyYXRpb25NZWFzdXJlRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9pY2VQZXJpb2REdXJhdGlvbk1lYXN1cmVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtaW52b2ljZS1wZXJpb2QtZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Okludm9pY2VQZXJpb2REZXNjcmlwdGlvbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWludm9pY2UtcGVyaW9kLWRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlUGVyaW9kRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2Utb3JkZXItcmVmZXJlbmNlLWlkXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpPcmRlclJlZmVyZW5jZUlkJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2Utb3JkZXItcmVmZXJlbmNlLWlkXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcmRlclJlZmVyZW5jZUlkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNjRcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1vcmRlci1yZWZlcmVuY2Utc2FsZXMtb3JkZXItaWRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok9yZGVyUmVmZXJlbmNlU2FsZXNPcmRlcklkJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2Utb3JkZXItcmVmZXJlbmNlLXNhbGVzLW9yZGVyLWlkXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcmRlclJlZmVyZW5jZVNhbGVzT3JkZXJJZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY0XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2Utb3JkZXItcmVmZXJlbmNlLWlzc3VlLWRhdGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok9yZGVyUmVmZXJlbmNlSXNzdWVEYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1vcmRlci1yZWZlcmVuY2UtaXNzdWUtZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcmRlclJlZmVyZW5jZUlzc3VlRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAjb3JkZXJSZWZlcmVuY2VJc3N1ZURhdGVJbnB1dFxyXG4gICAgICAgICAgICAgICAgI29yZGVyUmVmZXJlbmNlSXNzdWVEYXRlRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9yZGVyUmVmZXJlbmNlSXNzdWVEYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm9yZGVyUmVmZXJlbmNlSXNzdWVEYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9yZGVyUmVmZXJlbmNlSXNzdWVEYXRlSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBvcmRlclJlZmVyZW5jZUlzc3VlRGF0ZURhdGVwaWNrZXIud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICBvcmRlclJlZmVyZW5jZUlzc3VlRGF0ZURhdGVwaWNrZXIubWFudWFsRGF0ZUNoYW5nZShudWxsLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1vcmRlci1yZWZlcmVuY2Utb3JkZXItdHlwZS1jb2RlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpPcmRlclJlZmVyZW5jZU9yZGVyVHlwZUNvZGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1vcmRlci1yZWZlcmVuY2Utb3JkZXItdHlwZS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcmRlclJlZmVyZW5jZU9yZGVyVHlwZUNvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI2NFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWFjY291bnRpbmctc3VwcGxpZXItcGFydHktbmFtZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QWNjb3VudGluZ1N1cHBsaWVyUGFydHlOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtYWNjb3VudGluZy1zdXBwbGllci1wYXJ0eS1uYW1lXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhY2NvdW50aW5nU3VwcGxpZXJQYXJ0eU5hbWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTZcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1hY2NvdW50aW5nLXN1cHBsaWVyLXBhcnR5LXNjaGVtZS1pZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QWNjb3VudGluZ1N1cHBsaWVyUGFydHlTY2hlbWVJZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWFjY291bnRpbmctc3VwcGxpZXItcGFydHktc2NoZW1lLWlkXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVNjaGVtZUlkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiOFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWFjY291bnRpbmctc3VwcGxpZXItcGFydHktdmtuLXRja25cIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWFjY291bnRpbmctc3VwcGxpZXItcGFydHktdmtuLXRja25cIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjE2XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtYWNjb3VudGluZy1jdXN0b21lci1wYXJ0eS1uYW1lXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpBY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eU5hbWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1hY2NvdW50aW5nLWN1c3RvbWVyLXBhcnR5LW5hbWVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFjY291bnRpbmdDdXN0b21lclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWFjY291bnRpbmctY3VzdG9tZXItcGFydHktc2NoZW1lLWlkXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpBY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eVNjaGVtZUlkJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtYWNjb3VudGluZy1jdXN0b21lci1wYXJ0eS1zY2hlbWUtaWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFjY291bnRpbmdDdXN0b21lclBhcnR5U2NoZW1lSWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI4XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtYWNjb3VudGluZy1jdXN0b21lci1wYXJ0eS12a24tdGNrblwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QWNjb3VudGluZ0N1c3RvbWVyUGFydHlWa25UY2tuJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtYWNjb3VudGluZy1jdXN0b21lci1wYXJ0eS12a24tdGNrblwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudGluZ0N1c3RvbWVyUGFydHlWa25UY2tuXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTZcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1idXllci1jdXN0b21lci1wYXJ0eS1uYW1lXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpCdXllckN1c3RvbWVyUGFydHlOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtYnV5ZXItY3VzdG9tZXItcGFydHktbmFtZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYnV5ZXJDdXN0b21lclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWJ1eWVyLWN1c3RvbWVyLXBhcnR5LXNjaGVtZS1pZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QnV5ZXJDdXN0b21lclBhcnR5U2NoZW1lSWQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1idXllci1jdXN0b21lci1wYXJ0eS1zY2hlbWUtaWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJ1eWVyQ3VzdG9tZXJQYXJ0eVNjaGVtZUlkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiOFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWJ1eWVyLWN1c3RvbWVyLXBhcnR5LXZrbi10Y2tuXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpCdXllckN1c3RvbWVyUGFydHlWa25UY2tuJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtYnV5ZXItY3VzdG9tZXItcGFydHktdmtuLXRja25cIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJ1eWVyQ3VzdG9tZXJQYXJ0eVZrblRja25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIxNlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXNlbGxlci1zdXBwbGllci1wYXJ0eS1uYW1lXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpTZWxsZXJTdXBwbGllclBhcnR5TmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXNlbGxlci1zdXBwbGllci1wYXJ0eS1uYW1lXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxsZXJTdXBwbGllclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXNlbGxlci1zdXBwbGllci1wYXJ0eS1zY2hlbWUtaWRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlNlbGxlclN1cHBsaWVyUGFydHlTY2hlbWVJZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXNlbGxlci1zdXBwbGllci1wYXJ0eS1zY2hlbWUtaWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlbGxlclN1cHBsaWVyUGFydHlTY2hlbWVJZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjhcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1zZWxsZXItc3VwcGxpZXItcGFydHktdmtuLXRja25cIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlNlbGxlclN1cHBsaWVyUGFydHlWa25UY2tuJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2Utc2VsbGVyLXN1cHBsaWVyLXBhcnR5LXZrbi10Y2tuXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxsZXJTdXBwbGllclBhcnR5VmtuVGNrblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjE2XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtdGF4LXJlcHJlc2VudGF0aXZlLXBhcnR5LW5hbWVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlRheFJlcHJlc2VudGF0aXZlUGFydHlOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtdGF4LXJlcHJlc2VudGF0aXZlLXBhcnR5LW5hbWVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRheFJlcHJlc2VudGF0aXZlUGFydHlOYW1lXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtdGF4LXJlcHJlc2VudGF0aXZlLXBhcnR5LXNjaGVtZS1pZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VGF4UmVwcmVzZW50YXRpdmVQYXJ0eVNjaGVtZUlkJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtdGF4LXJlcHJlc2VudGF0aXZlLXBhcnR5LXNjaGVtZS1pZFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGF4UmVwcmVzZW50YXRpdmVQYXJ0eVNjaGVtZUlkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiOFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXRheC1yZXByZXNlbnRhdGl2ZS1wYXJ0eS12a24tdGNrblwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VGF4UmVwcmVzZW50YXRpdmVQYXJ0eVZrblRja24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS10YXgtcmVwcmVzZW50YXRpdmUtcGFydHktdmtuLXRja25cIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRheFJlcHJlc2VudGF0aXZlUGFydHlWa25UY2tuXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTZcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS10YXgtZXhjaGFuZ2UtcmF0ZS1zb3VyY2UtY3VycmVuY3ktY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VGF4RXhjaGFuZ2VSYXRlU291cmNlQ3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtdGF4LWV4Y2hhbmdlLXJhdGUtc291cmNlLWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRheEV4Y2hhbmdlUmF0ZVNvdXJjZUN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS10YXgtZXhjaGFuZ2UtcmF0ZS10YXJnZXQtY3VycmVuY3ktY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VGF4RXhjaGFuZ2VSYXRlVGFyZ2V0Q3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtdGF4LWV4Y2hhbmdlLXJhdGUtdGFyZ2V0LWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRheEV4Y2hhbmdlUmF0ZVRhcmdldEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS10YXgtZXhjaGFuZ2UtcmF0ZS1jYWxjdWxhdGlvbi1yYXRlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpUYXhFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS10YXgtZXhjaGFuZ2UtcmF0ZS1jYWxjdWxhdGlvbi1yYXRlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXhFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtdGF4LWV4Y2hhbmdlLXJhdGUtZGF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VGF4RXhjaGFuZ2VSYXRlRGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtdGF4LWV4Y2hhbmdlLXJhdGUtZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXhFeGNoYW5nZVJhdGVEYXRlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICN0YXhFeGNoYW5nZVJhdGVEYXRlSW5wdXRcclxuICAgICAgICAgICAgICAgICN0YXhFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRheEV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwidGF4RXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0YXhFeGNoYW5nZVJhdGVEYXRlSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICB0YXhFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRheEV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcHJpY2luZy1leGNoYW5nZS1yYXRlLXNvdXJjZS1jdXJyZW5jeS1jb2RlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQcmljaW5nRXhjaGFuZ2VSYXRlU291cmNlQ3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtcHJpY2luZy1leGNoYW5nZS1yYXRlLXNvdXJjZS1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmljaW5nRXhjaGFuZ2VSYXRlU291cmNlQ3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiM1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXByaWNpbmctZXhjaGFuZ2UtcmF0ZS10YXJnZXQtY3VycmVuY3ktY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UHJpY2luZ0V4Y2hhbmdlUmF0ZVRhcmdldEN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXByaWNpbmctZXhjaGFuZ2UtcmF0ZS10YXJnZXQtY3VycmVuY3ktY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJpY2luZ0V4Y2hhbmdlUmF0ZVRhcmdldEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wcmljaW5nLWV4Y2hhbmdlLXJhdGUtY2FsY3VsYXRpb24tcmF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXByaWNpbmctZXhjaGFuZ2UtcmF0ZS1jYWxjdWxhdGlvbi1yYXRlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXByaWNpbmctZXhjaGFuZ2UtcmF0ZS1kYXRlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQcmljaW5nRXhjaGFuZ2VSYXRlRGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtcHJpY2luZy1leGNoYW5nZS1yYXRlLWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJpY2luZ0V4Y2hhbmdlUmF0ZURhdGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI3ByaWNpbmdFeGNoYW5nZVJhdGVEYXRlSW5wdXRcclxuICAgICAgICAgICAgICAgICNwcmljaW5nRXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmljaW5nRXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJwcmljaW5nRXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcmljaW5nRXhjaGFuZ2VSYXRlRGF0ZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcHJpY2luZ0V4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJpY2luZ0V4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcGF5bWVudC1leGNoYW5nZS1yYXRlLXNvdXJjZS1jdXJyZW5jeS1jb2RlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQYXltZW50RXhjaGFuZ2VSYXRlU291cmNlQ3VycmVuY3lDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtcGF5bWVudC1leGNoYW5nZS1yYXRlLXNvdXJjZS1jdXJyZW5jeS1jb2RlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50RXhjaGFuZ2VSYXRlU291cmNlQ3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiM1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXBheW1lbnQtZXhjaGFuZ2UtcmF0ZS10YXJnZXQtY3VycmVuY3ktY29kZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudEV4Y2hhbmdlUmF0ZVRhcmdldEN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXBheW1lbnQtZXhjaGFuZ2UtcmF0ZS10YXJnZXQtY3VycmVuY3ktY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEV4Y2hhbmdlUmF0ZVRhcmdldEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1wYXltZW50LWV4Y2hhbmdlLXJhdGUtY2FsY3VsYXRpb24tcmF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudEV4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXBheW1lbnQtZXhjaGFuZ2UtcmF0ZS1jYWxjdWxhdGlvbi1yYXRlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50RXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXBheW1lbnQtZXhjaGFuZ2UtcmF0ZS1kYXRlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQYXltZW50RXhjaGFuZ2VSYXRlRGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICBpZD1cImludm9pY2UtcGF5bWVudC1leGNoYW5nZS1yYXRlLWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEV4Y2hhbmdlUmF0ZURhdGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI3BheW1lbnRFeGNoYW5nZVJhdGVEYXRlSW5wdXRcclxuICAgICAgICAgICAgICAgICNwYXltZW50RXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50RXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJwYXltZW50RXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXltZW50RXhjaGFuZ2VSYXRlRGF0ZUlucHV0LnZhbHVlXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FicFVpOjpDbGVhcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGF5bWVudEV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF5bWVudEV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWxhYmVsXCJcclxuICAgICAgICAgICAgICBmb3I9XCJpbnZvaWNlLXBheW1lbnQtYWx0ZXJuYXRpdmUtZXhjaGFuZ2UtcmF0ZS1zb3VyY2UtY3VycmVuY3ktY29kZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlBheW1lbnRBbHRlcm5hdGl2ZUV4Y2hhbmdlUmF0ZVNvdXJjZUN1cnJlbmN5Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXBheW1lbnQtYWx0ZXJuYXRpdmUtZXhjaGFuZ2UtcmF0ZS1zb3VyY2UtY3VycmVuY3ktY29kZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlU291cmNlQ3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiM1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgZm9yPVwiaW52b2ljZS1wYXltZW50LWFsdGVybmF0aXZlLWV4Y2hhbmdlLXJhdGUtdGFyZ2V0LWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVUYXJnZXRDdXJyZW5jeUNvZGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wYXltZW50LWFsdGVybmF0aXZlLWV4Y2hhbmdlLXJhdGUtdGFyZ2V0LWN1cnJlbmN5LWNvZGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRBbHRlcm5hdGl2ZUV4Y2hhbmdlUmF0ZVRhcmdldEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbGFiZWxcIlxyXG4gICAgICAgICAgICAgIGZvcj1cImludm9pY2UtcGF5bWVudC1hbHRlcm5hdGl2ZS1leGNoYW5nZS1yYXRlLWNhbGN1bGF0aW9uLXJhdGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wYXltZW50LWFsdGVybmF0aXZlLWV4Y2hhbmdlLXJhdGUtY2FsY3VsYXRpb24tcmF0ZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXBheW1lbnQtYWx0ZXJuYXRpdmUtZXhjaGFuZ2UtcmF0ZS1kYXRlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpQYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVEYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1wYXltZW50LWFsdGVybmF0aXZlLWV4Y2hhbmdlLXJhdGUtZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVEYXRlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNwYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVEYXRlSW5wdXRcclxuICAgICAgICAgICAgICAgICNwYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBheW1lbnRBbHRlcm5hdGl2ZUV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwicGF5bWVudEFsdGVybmF0aXZlRXhjaGFuZ2VSYXRlRGF0ZURhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVEYXRlSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBwYXltZW50QWx0ZXJuYXRpdmVFeGNoYW5nZVJhdGVEYXRlRGF0ZXBpY2tlci53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBheW1lbnRBbHRlcm5hdGl2ZUV4Y2hhbmdlUmF0ZURhdGVEYXRlcGlja2VyLm1hbnVhbERhdGVDaGFuZ2UobnVsbCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtbGluZS1leHRlbnNpb24tYW1vdW50XCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpMZWdhbE1vbmV0YXJ5VG90YWxMaW5lRXh0ZW5zaW9uQW1vdW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtbGluZS1leHRlbnNpb24tYW1vdW50XCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsZWdhbE1vbmV0YXJ5VG90YWxMaW5lRXh0ZW5zaW9uQW1vdW50XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWxlZ2FsLW1vbmV0YXJ5LXRvdGFsLXRheC1leGNsdXNpdmUtYW1vdW50XCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpMZWdhbE1vbmV0YXJ5VG90YWxUYXhFeGNsdXNpdmVBbW91bnQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1sZWdhbC1tb25ldGFyeS10b3RhbC10YXgtZXhjbHVzaXZlLWFtb3VudFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVnYWxNb25ldGFyeVRvdGFsVGF4RXhjbHVzaXZlQW1vdW50XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWxlZ2FsLW1vbmV0YXJ5LXRvdGFsLXRheC1pbmNsdXNpdmUtYW1vdW50XCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpMZWdhbE1vbmV0YXJ5VG90YWxUYXhJbmNsdXNpdmVBbW91bnQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1sZWdhbC1tb25ldGFyeS10b3RhbC10YXgtaW5jbHVzaXZlLWFtb3VudFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVnYWxNb25ldGFyeVRvdGFsVGF4SW5jbHVzaXZlQW1vdW50XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWxlZ2FsLW1vbmV0YXJ5LXRvdGFsLWFsbG93YW5jZS10b3RhbC1hbW91bnRcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkxlZ2FsTW9uZXRhcnlUb3RhbEFsbG93YW5jZVRvdGFsQW1vdW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtYWxsb3dhbmNlLXRvdGFsLWFtb3VudFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVnYWxNb25ldGFyeVRvdGFsQWxsb3dhbmNlVG90YWxBbW91bnRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtY2hhcmdlLXRvdGFsLWFtb3VudFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6TGVnYWxNb25ldGFyeVRvdGFsQ2hhcmdlVG90YWxBbW91bnQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1sZWdhbC1tb25ldGFyeS10b3RhbC1jaGFyZ2UtdG90YWwtYW1vdW50XCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsZWdhbE1vbmV0YXJ5VG90YWxDaGFyZ2VUb3RhbEFtb3VudFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1sZWdhbC1tb25ldGFyeS10b3RhbC1wYXlhYmxlLXJvdW5kaW5nLWFtb3VudFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6TGVnYWxNb25ldGFyeVRvdGFsUGF5YWJsZVJvdW5kaW5nQW1vdW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtbGVnYWwtbW9uZXRhcnktdG90YWwtcGF5YWJsZS1yb3VuZGluZy1hbW91bnRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlZ2FsTW9uZXRhcnlUb3RhbFBheWFibGVSb3VuZGluZ0Ftb3VudFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1sZWdhbC1tb25ldGFyeS10b3RhbC1wYXlhYmxlLWFtb3VudFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6TGVnYWxNb25ldGFyeVRvdGFsUGF5YWJsZUFtb3VudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLWxlZ2FsLW1vbmV0YXJ5LXRvdGFsLXBheWFibGUtYW1vdW50XCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsZWdhbE1vbmV0YXJ5VG90YWxQYXlhYmxlQW1vdW50XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXBheW1lbnQtdGVybXMtbm90ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudFRlcm1zTm90ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXBheW1lbnQtdGVybXMtbm90ZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudFRlcm1zTm90ZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjUxMlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXBheW1lbnQtdGVybXMtcGF5bWVudC1kdWUtZGF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiIHZhbGlkYXRpb25UYXJnZXQ+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXBheW1lbnQtdGVybXMtcGF5bWVudC1kdWUtZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50VGVybXNQYXltZW50RHVlRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAjcGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGVJbnB1dFxyXG4gICAgICAgICAgICAgICAgI3BheW1lbnRUZXJtc1BheW1lbnREdWVEYXRlRGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBheW1lbnRUZXJtc1BheW1lbnREdWVEYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cInBheW1lbnRUZXJtc1BheW1lbnREdWVEYXRlRGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBheW1lbnRUZXJtc1BheW1lbnREdWVEYXRlSW5wdXQudmFsdWVcIiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBweC0yXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWJwVWk6OkNsZWFyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBwYXltZW50VGVybXNQYXltZW50RHVlRGF0ZURhdGVwaWNrZXIud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICBwYXltZW50VGVybXNQYXltZW50RHVlRGF0ZURhdGVwaWNrZXIubWFudWFsRGF0ZUNoYW5nZShudWxsLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1jdXN0LWludi1pZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6Q3VzdEludklkJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtY3VzdC1pbnYtaWRcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImN1c3RJbnZJZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY0XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1pcy1jYW5jZWxlZFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNDYW5jZWxlZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgLz5cclxuICBcclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImludm9pY2UtaXMtY2FuY2VsZWRcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzQ2FuY2VsZWQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWNhbmNlbC1jb2RlXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpDYW5jZWxDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gIFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBpZD1cImludm9pY2UtY2FuY2VsLWNvZGVcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhbmNlbENvZGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIxNlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLWNhbmNlbC1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6Q2FuY2VsRGVzY3JpcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1jYW5jZWwtZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhbmNlbERlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcmVzb3VyY2UtZG9jLXR5cGVcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlJlc291cmNlRG9jVHlwZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXJlc291cmNlLWRvYy10eXBlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZXNvdXJjZURvY1R5cGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzMlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXJlc291cmNlLWRvYy1lbnRyeVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UmVzb3VyY2VEb2NFbnRyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXJlc291cmNlLWRvYy1lbnRyeVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVzb3VyY2VEb2NFbnRyeVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY0XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2Utc3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpTdGF0dXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgaWQ9XCJpbnZvaWNlLXN0YXR1c1wiIGZvcm1Db250cm9sTmFtZT1cInN0YXR1c1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludm9pY2UtcmVjZWl2ZXItcmVzcG9uc2VcIj5cclxuICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlJlY2VpdmVyUmVzcG9uc2UnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaW52b2ljZS1yZWNlaXZlci1yZXNwb25zZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVjZWl2ZXJSZXNwb25zZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1yZWNlaXZlci1yZXNwb25zZS1kZXNjXCI+XHJcbiAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpSZWNlaXZlclJlc3BvbnNlRGVzYycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICBcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJpbnZvaWNlLXJlY2VpdmVyLXJlc3BvbnNlLWRlc2NcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlY2VpdmVyUmVzcG9uc2VEZXNjXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTAyNFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9mb3JtPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICBcclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gIFxyXG4gICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIGJ1dHRvblR5cGU9XCJzdWJtaXRcIiBmb3JtTmFtZT1cImludm9pY2VcIj5cclxuICAgICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9hYnAtbW9kYWw+IC0tPiJdfQ==