ezlibrary_v2 0.0.1

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 (113) hide show
  1. package/esm2020/ezlibrary_v2.mjs +5 -0
  2. package/esm2020/lib/admin-service/admin-service.service.mjs +36 -0
  3. package/esm2020/lib/analysis-search/analysis-search.component.mjs +1083 -0
  4. package/esm2020/lib/assort-service/assort-service.service.mjs +31 -0
  5. package/esm2020/lib/attribute-definition/attribute-definition.component.mjs +231 -0
  6. package/esm2020/lib/auth/auth.guard.mjs +40 -0
  7. package/esm2020/lib/bi-service/bi.service.mjs +58 -0
  8. package/esm2020/lib/call-info/callinfo.component.mjs +126 -0
  9. package/esm2020/lib/comman-service/comman-service.service.mjs +679 -0
  10. package/esm2020/lib/comman-service/share-data-service.service.mjs +23 -0
  11. package/esm2020/lib/contact-search/contact-search.component.mjs +679 -0
  12. package/esm2020/lib/contact-service/contact-service.service.mjs +47 -0
  13. package/esm2020/lib/ezheader/header.component.mjs +383 -0
  14. package/esm2020/lib/ezlib.module.mjs +220 -0
  15. package/esm2020/lib/file-upload/fileupload.component.mjs +920 -0
  16. package/esm2020/lib/file-upload-log/file-upload-log.component.mjs +175 -0
  17. package/esm2020/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.mjs +14 -0
  18. package/esm2020/lib/fileupload-module/fileupload-routing.module.mjs +28 -0
  19. package/esm2020/lib/footer/footer.component.mjs +18 -0
  20. package/esm2020/lib/globle/common-pdf.service.mjs +28 -0
  21. package/esm2020/lib/globle/globle-env.service.mjs +45 -0
  22. package/esm2020/lib/globle/memo-report.service.mjs +2800 -0
  23. package/esm2020/lib/globle/pdf-service.service.mjs +18848 -0
  24. package/esm2020/lib/globle/shared-services.service.mjs +27 -0
  25. package/esm2020/lib/globle/upload-service.service.mjs +69 -0
  26. package/esm2020/lib/header/header.component.mjs +179 -0
  27. package/esm2020/lib/invalid/invalid.component.mjs +71 -0
  28. package/esm2020/lib/logout/logout.component.mjs +107 -0
  29. package/esm2020/lib/menu-right/menu-right.component.mjs +252 -0
  30. package/esm2020/lib/pipes/number-with-commas.pipe.mjs +24 -0
  31. package/esm2020/lib/pipes/order-by-pipe.pipe.mjs +17 -0
  32. package/esm2020/lib/pipes/selectedCount.mjs +19 -0
  33. package/esm2020/lib/pipes/sum.pipe.mjs +16 -0
  34. package/esm2020/lib/pkt-data/pkt-data.component.mjs +1107 -0
  35. package/esm2020/lib/pricing-service/pricing.service.mjs +58 -0
  36. package/esm2020/lib/qa-analysis/qa-analysis.component.mjs +1035 -0
  37. package/esm2020/lib/report-format/report-format.component.mjs +400 -0
  38. package/esm2020/lib/sessionend/session-end.guard.mjs +28 -0
  39. package/esm2020/lib/stock-service/lazyload.service.mjs +21 -0
  40. package/esm2020/lib/stock-service/stock-service.service.mjs +62 -0
  41. package/esm2020/lib/system-module/subform/subform.component.mjs +2481 -0
  42. package/esm2020/lib/system-module/system/system.component.mjs +959 -0
  43. package/esm2020/lib/system-module/system-service/system-service.service.mjs +85 -0
  44. package/esm2020/lib/system-module/system-service/upload-file.service.mjs +86 -0
  45. package/esm2020/lib/utility/app-no-dbl-click.directive.mjs +23 -0
  46. package/esm2020/lib/utility/constants.mjs +5 -0
  47. package/esm2020/lib/utility/contact-table-search.pipe.mjs +25 -0
  48. package/esm2020/lib/utility/formate-num-field.pipe.mjs +19 -0
  49. package/esm2020/lib/utility/search-pipe.pipe.mjs +26 -0
  50. package/esm2020/lib/utility/selective-preloading-strategy.mjs +23 -0
  51. package/esm2020/lib/utility/table-search.pipe.mjs +25 -0
  52. package/esm2020/lib/utility/tranform.directive.mjs +27 -0
  53. package/esm2020/lib/websearch-history/websearch-history.component.mjs +273 -0
  54. package/esm2020/public_api.mjs +57 -0
  55. package/ezlibrary_v2.d.ts +5 -0
  56. package/fesm2015/ezlibrary_v2.mjs +33543 -0
  57. package/fesm2015/ezlibrary_v2.mjs.map +1 -0
  58. package/fesm2020/ezlibrary_v2.mjs +33533 -0
  59. package/fesm2020/ezlibrary_v2.mjs.map +1 -0
  60. package/lib/admin-service/admin-service.service.d.ts +13 -0
  61. package/lib/analysis-search/analysis-search.component.d.ts +122 -0
  62. package/lib/assort-service/assort-service.service.d.ts +12 -0
  63. package/lib/attribute-definition/attribute-definition.component.d.ts +47 -0
  64. package/lib/auth/auth.guard.d.ts +16 -0
  65. package/lib/bi-service/bi.service.d.ts +20 -0
  66. package/lib/call-info/callinfo.component.d.ts +30 -0
  67. package/lib/comman-service/comman-service.service.d.ts +111 -0
  68. package/lib/comman-service/share-data-service.service.d.ts +10 -0
  69. package/lib/contact-search/contact-search.component.d.ts +115 -0
  70. package/lib/contact-service/contact-service.service.d.ts +15 -0
  71. package/lib/ezheader/header.component.d.ts +61 -0
  72. package/lib/ezlib.module.d.ts +47 -0
  73. package/lib/file-upload/fileupload.component.d.ts +131 -0
  74. package/lib/file-upload-log/file-upload-log.component.d.ts +53 -0
  75. package/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.d.ts +8 -0
  76. package/lib/fileupload-module/fileupload-routing.module.d.ts +7 -0
  77. package/lib/footer/footer.component.d.ts +9 -0
  78. package/lib/globle/common-pdf.service.d.ts +9 -0
  79. package/lib/globle/globle-env.service.d.ts +16 -0
  80. package/lib/globle/memo-report.service.d.ts +107 -0
  81. package/lib/globle/pdf-service.service.d.ts +459 -0
  82. package/lib/globle/shared-services.service.d.ts +12 -0
  83. package/lib/globle/upload-service.service.d.ts +20 -0
  84. package/lib/header/header.component.d.ts +45 -0
  85. package/lib/invalid/invalid.component.d.ts +12 -0
  86. package/lib/logout/logout.component.d.ts +21 -0
  87. package/lib/menu-right/menu-right.component.d.ts +47 -0
  88. package/lib/pipes/number-with-commas.pipe.d.ts +7 -0
  89. package/lib/pipes/order-by-pipe.pipe.d.ts +7 -0
  90. package/lib/pipes/selectedCount.d.ts +7 -0
  91. package/lib/pipes/sum.pipe.d.ts +7 -0
  92. package/lib/pkt-data/pkt-data.component.d.ts +189 -0
  93. package/lib/pricing-service/pricing.service.d.ts +20 -0
  94. package/lib/qa-analysis/qa-analysis.component.d.ts +99 -0
  95. package/lib/report-format/report-format.component.d.ts +74 -0
  96. package/lib/sessionend/session-end.guard.d.ts +10 -0
  97. package/lib/stock-service/lazyload.service.d.ts +7 -0
  98. package/lib/stock-service/stock-service.service.d.ts +19 -0
  99. package/lib/system-module/subform/subform.component.d.ts +227 -0
  100. package/lib/system-module/system/system.component.d.ts +113 -0
  101. package/lib/system-module/system-service/system-service.service.d.ts +23 -0
  102. package/lib/system-module/system-service/upload-file.service.d.ts +12 -0
  103. package/lib/utility/app-no-dbl-click.directive.d.ts +7 -0
  104. package/lib/utility/constants.d.ts +4 -0
  105. package/lib/utility/contact-table-search.pipe.d.ts +7 -0
  106. package/lib/utility/formate-num-field.pipe.d.ts +7 -0
  107. package/lib/utility/search-pipe.pipe.d.ts +7 -0
  108. package/lib/utility/selective-preloading-strategy.d.ts +9 -0
  109. package/lib/utility/table-search.pipe.d.ts +7 -0
  110. package/lib/utility/tranform.directive.d.ts +10 -0
  111. package/lib/websearch-history/websearch-history.component.d.ts +62 -0
  112. package/package.json +48 -0
  113. package/public_api.d.ts +52 -0
@@ -0,0 +1,47 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { GlobleEnvService } from '../globle/globle-env.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ import * as i2 from "../globle/globle-env.service";
7
+ export class ContactServiceService {
8
+ constructor(http, glbEnv) {
9
+ this.http = http;
10
+ this.glbEnv = glbEnv;
11
+ }
12
+ getMenuRights(reqObj, headers) {
13
+ return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), headers)
14
+ .toPromise()
15
+ .then((response) => response);
16
+ }
17
+ saveUserMenuRights(reqObj, headers) {
18
+ return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), headers)
19
+ .toPromise()
20
+ .then((response) => response);
21
+ }
22
+ //added by jayesh
23
+ loadMenuRightsUserWise(reqObj, headers) {
24
+ return this.http.post(this.glbEnv.baseUrl + 'contact/loadContact', JSON.stringify(reqObj), headers)
25
+ .toPromise()
26
+ .then((response) => response);
27
+ }
28
+ saveUserMenuRightsContact(reqObj, headers) {
29
+ return this.http.post(this.glbEnv.baseUrl + 'contact/loadContact', JSON.stringify(reqObj), headers)
30
+ .toPromise()
31
+ .then((response) => response);
32
+ }
33
+ load(reqObj, headers, url) {
34
+ return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)
35
+ .toPromise()
36
+ .then((response) => response);
37
+ }
38
+ }
39
+ /** @nocollapse */ /** @nocollapse */ ContactServiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ContactServiceService, deps: [{ token: i1.HttpClient }, { token: i2.GlobleEnvService }], target: i0.ɵɵFactoryTarget.Injectable });
40
+ /** @nocollapse */ /** @nocollapse */ ContactServiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ContactServiceService, providedIn: 'root' });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ContactServiceService, decorators: [{
42
+ type: Injectable,
43
+ args: [{
44
+ providedIn: 'root'
45
+ }]
46
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.GlobleEnvService }]; } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zZXJ2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL2NvbnRhY3Qtc2VydmljZS9jb250YWN0LXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUtoRSxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ1UsSUFBZ0IsRUFDakIsTUFBd0I7UUFEdkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUM3QixDQUFDO0lBR0osYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPO1FBQzVCLE9BQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7YUFDOUYsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE9BQU87UUFDaEMsT0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQzthQUNoRyxTQUFTLEVBQUU7YUFDWCxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFQSxpQkFBaUI7SUFDakIsc0JBQXNCLENBQUMsTUFBTSxFQUFFLE9BQU87UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQzthQUNoRyxTQUFTLEVBQUU7YUFDWCxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsT0FBTztRQUN2QyxPQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLHFCQUFxQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDO2FBQ25HLFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLEdBQUc7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7YUFDNUUsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDOzt3SkFyQ1UscUJBQXFCOzRKQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBHbG9ibGVFbnZTZXJ2aWNlIH0gZnJvbSAnLi4vZ2xvYmxlL2dsb2JsZS1lbnYuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250YWN0U2VydmljZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHB1YmxpYyBnbGJFbnY6IEdsb2JsZUVudlNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcblxyXG4gICBnZXRNZW51UmlnaHRzKHJlcU9iaiwgaGVhZGVycykge1xyXG4gICAgcmV0dXJuICB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2FkbWluL21lbnVSaWdodHMnLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBoZWFkZXJzKVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBzYXZlVXNlck1lbnVSaWdodHMocmVxT2JqLCBoZWFkZXJzKXtcclxuICAgIHJldHVybiAgdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdhZG1pbi9tZW51UmlnaHRzJywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgaGVhZGVycylcclxuICAgIC50b1Byb21pc2UoKVxyXG4gICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICAgLy9hZGRlZCBieSBqYXllc2hcclxuICAgbG9hZE1lbnVSaWdodHNVc2VyV2lzZShyZXFPYmosIGhlYWRlcnMpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnY29udGFjdC9sb2FkQ29udGFjdCcsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIGhlYWRlcnMpXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHNhdmVVc2VyTWVudVJpZ2h0c0NvbnRhY3QocmVxT2JqLCBoZWFkZXJzKXtcclxuICAgIHJldHVybiAgdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdjb250YWN0L2xvYWRDb250YWN0JywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgaGVhZGVycylcclxuICAgIC50b1Byb21pc2UoKVxyXG4gICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBsb2FkKHJlcU9iaiwgaGVhZGVycyx1cmwpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwrdXJsLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBoZWFkZXJzKVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,383 @@
1
+ import { Component, ViewChild, ElementRef } from '@angular/core';
2
+ import { Cookie } from 'ng2-cookies/ng2-cookies';
3
+ import { ToastrService } from 'ngx-toastr';
4
+ import { filter } from 'rxjs/operators';
5
+ import { Router, NavigationEnd } from '@angular/router';
6
+ import { CommanServiceService } from '../comman-service/comman-service.service';
7
+ import { HttpHeaders } from '@angular/common/http';
8
+ import { GlobleEnvService } from '../globle/globle-env.service';
9
+ import { NgxSpinnerService } from "ngx-spinner";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/router";
12
+ import * as i2 from "ngx-toastr";
13
+ import * as i3 from "../comman-service/comman-service.service";
14
+ import * as i4 from "../globle/globle-env.service";
15
+ import * as i5 from "ngx-spinner";
16
+ import * as i6 from "@angular/common";
17
+ import * as i7 from "@angular/forms";
18
+ import * as i8 from "../utility/app-no-dbl-click.directive";
19
+ import * as i9 from "../utility/table-search.pipe";
20
+ export class EzHeaderComponent {
21
+ constructor(router, toastr, cs, globlEnv, spinnerService) {
22
+ this.router = router;
23
+ this.toastr = toastr;
24
+ this.cs = cs;
25
+ this.globlEnv = globlEnv;
26
+ this.spinnerService = spinnerService;
27
+ this.cDate = new Date();
28
+ this.ds = Cookie.get('_ds');
29
+ this.uUsr = Cookie.get('_username');
30
+ this.company = "";
31
+ this.year = "";
32
+ this.userDetails = [];
33
+ this.historyLinkMap = {};
34
+ this.historyLink = [];
35
+ this.accMenuList = {};
36
+ this.flag = false;
37
+ this.keyList = [];
38
+ this.srchCnt = 0;
39
+ this.cnt = 0;
40
+ this.feedbackComment = '';
41
+ this.ispasswordChange = false;
42
+ this.rbi = "";
43
+ this.bank = "";
44
+ this.cutomimp = "";
45
+ this.cutomexp = "";
46
+ }
47
+ clickFilter(kc) {
48
+ if (kc.which == 13) {
49
+ // this.getSrchCount(this.qkSch);
50
+ this.packetLookupSrcCount(this.qkSch);
51
+ }
52
+ else {
53
+ }
54
+ }
55
+ backHome() {
56
+ window.location.href = this.globlEnv.origin + "#home";
57
+ }
58
+ routehome() {
59
+ const url = this.router.serializeUrl(this.router.createUrlTree(['home']));
60
+ window.open("/#" + url, 'Home');
61
+ }
62
+ packetLookupSrcCount(fglstr) {
63
+ this.srchCnt = this.srchCnt + 1;
64
+ let logDtl = JSON.parse(localStorage.getItem('resreqpara'));
65
+ if (fglstr == undefined || fglstr == '') {
66
+ this.toastr.error('Please enter Search Parameter');
67
+ return;
68
+ }
69
+ let r = this.cs.formateStr(fglstr);
70
+ localStorage.setItem('packetLookupStr', r);
71
+ if (this.cUrl == '/solitaires') {
72
+ this.router.navigate(['solitaires/packet-lookup/'], { queryParams: { schId: this.srchCnt } });
73
+ }
74
+ else {
75
+ const url = this.router.serializeUrl(this.router.createUrlTree(['solitaires/packet-lookup/'], { queryParams: { schId: this.srchCnt } }));
76
+ window.open("/solitaires/#" + url, 'Solitaires');
77
+ }
78
+ }
79
+ logout() {
80
+ let reqObj = {};
81
+ reqObj['formNme'] = 'Logout';
82
+ this.header['method'] = 'logOut';
83
+ let options = ({ headers: new HttpHeaders(this.header) });
84
+ this.cs.logout(reqObj, options).then((response) => {
85
+ if (response.status == 'SUCCESS') {
86
+ let ds = Cookie.get('_ds');
87
+ Cookie.delete('_username');
88
+ Cookie.delete('_logtime');
89
+ Cookie.delete('_ck');
90
+ Cookie.delete('_logid');
91
+ Cookie.delete('_accCompany');
92
+ Cookie.delete('_accyear');
93
+ localStorage.removeItem('OTP');
94
+ localStorage.removeItem('clientKey');
95
+ localStorage.removeItem('logIdn');
96
+ localStorage.removeItem('mdlKey');
97
+ localStorage.removeItem('username');
98
+ localStorage.removeItem('selMd');
99
+ localStorage.setItem('chg', 'false');
100
+ localStorage.removeItem('transactionInfo');
101
+ Cookie.delete('_username', this.globlEnv.pathname, this.globlEnv.hostname);
102
+ Cookie.delete('_logtime', this.globlEnv.pathname, this.globlEnv.hostname);
103
+ Cookie.delete('_ck', this.globlEnv.pathname, this.globlEnv.hostname);
104
+ Cookie.delete('_logid', this.globlEnv.pathname, this.globlEnv.hostname);
105
+ Cookie.delete('_accCompany', this.globlEnv.pathname, this.globlEnv.hostname);
106
+ Cookie.delete('_accyear', this.globlEnv.pathname, this.globlEnv.hostname);
107
+ window.location.href = this.globlEnv.origin;
108
+ }
109
+ else {
110
+ this.toastr.error(response.message);
111
+ }
112
+ }).catch((err) => {
113
+ this.toastr.error(err.message);
114
+ });
115
+ }
116
+ menuList() {
117
+ let reqObj = {};
118
+ let moduleKeys = this.mdlk[this.cUrl.split('/')[1]];
119
+ if (Cookie.get('_logid') == null)
120
+ return;
121
+ let header = {
122
+ 'Content-Type': 'application/json',
123
+ 'clientkey': Cookie.get('_ck'),
124
+ 'loginid': Cookie.get('_logid'),
125
+ 'method': 'getMenuList',
126
+ 'modulekey': moduleKeys,
127
+ 'source': 'qs'
128
+ };
129
+ reqObj['moduleKeys'] = moduleKeys;
130
+ let options = ({ headers: new HttpHeaders(header) });
131
+ console.log(reqObj);
132
+ this.cs.menuList(reqObj, options).then((response) => {
133
+ if (response.status == 'SUCCESS') {
134
+ console.log(reqObj);
135
+ let lochistoryMap = JSON.parse(localStorage.getItem('historyLink')) || {};
136
+ let lochistoryLink = lochistoryMap[moduleKeys] || [];
137
+ this.historyLinkMap = {};
138
+ this.historyLink = [];
139
+ let menuList = response.result;
140
+ let cnt = 0;
141
+ menuList.forEach(ele => {
142
+ cnt = cnt + ele.SubMenu.length + 1;
143
+ });
144
+ let div = cnt / 4;
145
+ div = Math.round(div);
146
+ if (div < 1) {
147
+ let newMenuList = [];
148
+ menuList.forEach(ele => {
149
+ ele["ishdr"] = "Y";
150
+ newMenuList.push(ele);
151
+ let extmenu_idn = ele.menu_idn;
152
+ if (lochistoryLink.indexOf(extmenu_idn) != -1) {
153
+ this.historyLink.push(extmenu_idn);
154
+ this.historyLinkMap[extmenu_idn] = ele;
155
+ }
156
+ ele.SubMenu.forEach(subele => {
157
+ newMenuList.push(subele);
158
+ extmenu_idn = subele.menu_idn;
159
+ if (lochistoryLink.indexOf(extmenu_idn) != -1) {
160
+ this.historyLink.push(extmenu_idn);
161
+ this.historyLinkMap[extmenu_idn] = subele;
162
+ }
163
+ });
164
+ });
165
+ this.accMenuList[1] = newMenuList;
166
+ }
167
+ else {
168
+ let key = 1;
169
+ let newMenuList = [];
170
+ let lsCnt = 0;
171
+ menuList.forEach(ele => {
172
+ lsCnt = lsCnt + ele.SubMenu.length + 1;
173
+ ele["ishdr"] = "Y";
174
+ newMenuList.push(ele);
175
+ let extmenu_idn = ele.menu_idn;
176
+ if (lochistoryLink.indexOf(extmenu_idn) != -1) {
177
+ this.historyLink.push(extmenu_idn);
178
+ this.historyLinkMap[extmenu_idn] = ele;
179
+ }
180
+ ele.SubMenu.forEach(subele => {
181
+ subele["ishdr"] = "N";
182
+ newMenuList.push(subele);
183
+ extmenu_idn = subele.menu_idn;
184
+ if (lochistoryLink.indexOf(extmenu_idn) != -1) {
185
+ this.historyLink.push(extmenu_idn);
186
+ this.historyLinkMap[extmenu_idn] = subele;
187
+ }
188
+ });
189
+ if (lsCnt >= div && newMenuList.length > 0) {
190
+ this.accMenuList[key] = newMenuList;
191
+ key = key + 1;
192
+ newMenuList = [];
193
+ lsCnt = 0;
194
+ }
195
+ });
196
+ if (lsCnt != 0)
197
+ this.accMenuList[key] = newMenuList;
198
+ }
199
+ this.keyList = Object.keys(this.accMenuList);
200
+ }
201
+ else {
202
+ this.toastr.error(response.message);
203
+ }
204
+ }).catch((err) => {
205
+ // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });
206
+ });
207
+ }
208
+ logOutBox() {
209
+ var display = document.getElementById('mb-signout').style.display;
210
+ if (display == 'none' || display == '') {
211
+ document.getElementById('mb-signout').style.display = 'block';
212
+ }
213
+ else {
214
+ document.getElementById('mb-signout').style.display = 'none';
215
+ }
216
+ }
217
+ ChangePassword() {
218
+ let reqObj = {};
219
+ if (Cookie.get('_logid') == null)
220
+ return;
221
+ let header = {
222
+ 'clientkey': Cookie.get('_ck'),
223
+ 'Content-Type': 'application/json',
224
+ 'modulekey': this.mdlk[this.cUrl.split('/')[1]],
225
+ 'loginid': Cookie.get('_logid'),
226
+ 'source': 'qs'
227
+ };
228
+ this.spinnerService.show();
229
+ reqObj["formNme"] = "applicationAccessMaster";
230
+ reqObj["username"] = this.uUsr;
231
+ header["method"] = "loadChangePass";
232
+ let options = ({ headers: new HttpHeaders(header) });
233
+ this.cs.load(reqObj, options, 'contact/loadContact').then((response) => {
234
+ if (response.status == "SUCCESS") {
235
+ this.spinnerService.hide();
236
+ let result = response.result;
237
+ this.userDetails = result.userDetails;
238
+ this.ispasswordChange = false;
239
+ document.getElementById('changePwdBtn').click();
240
+ }
241
+ else {
242
+ this.spinnerService.hide();
243
+ this.toastr.error(response.message);
244
+ }
245
+ })
246
+ .catch((err) => {
247
+ this.spinnerService.hide();
248
+ this.toastr.error(err.message);
249
+ });
250
+ }
251
+ passwordChange() {
252
+ this.ispasswordChange = true;
253
+ }
254
+ SavePassword() {
255
+ if (this.ispasswordChange) {
256
+ this.spinnerService.show();
257
+ if (Cookie.get('_logid') == null)
258
+ return;
259
+ let header = {
260
+ 'clientkey': Cookie.get('_ck'),
261
+ 'Content-Type': 'application/json',
262
+ 'modulekey': this.mdlk[this.cUrl.split('/')[1]],
263
+ 'loginid': Cookie.get('_logid'),
264
+ 'source': 'qs'
265
+ };
266
+ debugger;
267
+ let usrDtl = this.userDetails[0];
268
+ let reqObj = {};
269
+ reqObj["formNme"] = "setPasswordForm";
270
+ reqObj["userIdn"] = usrDtl.userIdn;
271
+ reqObj["password"] = usrDtl.password;
272
+ header["method"] = "changePassword";
273
+ console.log(JSON.stringify(reqObj));
274
+ let options = ({ headers: new HttpHeaders(header) });
275
+ this.cs.load(reqObj, options, 'contact/loadContact').then((response) => {
276
+ if (response.status == "SUCCESS") {
277
+ let result = response.result;
278
+ this.closebtn.nativeElement.click();
279
+ this.spinnerService.hide();
280
+ this.ispasswordChange = false;
281
+ this.toastr.success(response.message);
282
+ this.spinnerService.hide();
283
+ }
284
+ else {
285
+ this.spinnerService.hide();
286
+ this.toastr.error(response.message);
287
+ }
288
+ })
289
+ .catch((err) => {
290
+ this.spinnerService.hide();
291
+ this.toastr.error(err.message);
292
+ });
293
+ }
294
+ else {
295
+ this.toastr.error("Please specify new password");
296
+ }
297
+ }
298
+ ShowMenu(typ, menudtl) {
299
+ var menudiv = document.getElementById('menuDiv').style.display;
300
+ if (menudiv == 'none')
301
+ document.getElementById('menuDiv').style.display = 'block';
302
+ else
303
+ document.getElementById('menuDiv').style.display = 'none';
304
+ if (typ == 'lnk') {
305
+ debugger;
306
+ let menu_idn = menudtl.menu_idn || '';
307
+ let modulkey = this.mdlk[this.cUrl.split('/')[1]];
308
+ let historyLinkmap = JSON.parse(localStorage.getItem('historyLink')) || {};
309
+ let moduleLink = historyLinkmap[modulkey] || [];
310
+ if (menu_idn != '') {
311
+ debugger;
312
+ if (moduleLink.indexOf(menu_idn) != -1) {
313
+ moduleLink.splice(moduleLink.indexOf(menu_idn), 1);
314
+ }
315
+ moduleLink.splice(0, 0, menu_idn);
316
+ if (moduleLink.length > 10) {
317
+ let numOfremove = moduleLink.length - 10;
318
+ moduleLink.splice(10, numOfremove);
319
+ }
320
+ historyLinkmap[modulkey] = moduleLink;
321
+ this.historyLink = moduleLink;
322
+ this.historyLinkMap[menu_idn] = menudtl;
323
+ localStorage.setItem('historyLink', JSON.stringify(historyLinkmap));
324
+ }
325
+ }
326
+ }
327
+ EditCompany() {
328
+ Cookie.delete('_accCompany', this.globlEnv.pathname, this.globlEnv.hostname);
329
+ Cookie.delete('_accyear', this.globlEnv.pathname, this.globlEnv.hostname);
330
+ this.router.navigate(['facompany']);
331
+ }
332
+ ngOnInit() {
333
+ this.mdlk = JSON.parse(localStorage.getItem('mdlKey'));
334
+ // this.cUrl = window.location.hash;
335
+ // this.cUrl=this.cUrl.replace("#",'');
336
+ // Getting the final url
337
+ // this.router.events.pipe(
338
+ // filter(e => e instanceof NavigationEnd)
339
+ // .subscribe((navEnd: NavigationEnd) => {
340
+ // this.cUrl = navEnd.urlAfterRedirects;
341
+ // this.menuList();
342
+ // // console.log(this.cUrl);
343
+ // })
344
+ // );
345
+ this.router.events
346
+ .pipe(filter((e) => e instanceof NavigationEnd))
347
+ .subscribe((navEnd) => {
348
+ this.cUrl = navEnd.urlAfterRedirects;
349
+ this.menuList();
350
+ // console.log(this.cUrl);
351
+ });
352
+ if (this.cUrl == '')
353
+ this.cUrl = "/home";
354
+ this.header = {
355
+ 'clientkey': Cookie.get('_ck'),
356
+ 'Content-Type': 'application/json',
357
+ 'ds': localStorage.getItem('DS'),
358
+ 'appkey': 'O91YK*Dw$kE7dNpcVmGLvLxWMJ0C00eO',
359
+ 'modulekey': 'WHi6SRLY6#$82bzJf@4IUx9oHSLbn2qH',
360
+ 'loginid': Cookie.get('_logid'),
361
+ 'source': 'qs'
362
+ };
363
+ }
364
+ OpenOption() {
365
+ var isdisplay = document.getElementById('moreoption').style.display;
366
+ if (isdisplay == 'none') {
367
+ document.getElementById('moreoption').style.display = 'block';
368
+ }
369
+ else {
370
+ document.getElementById('moreoption').style.display = 'none';
371
+ }
372
+ }
373
+ }
374
+ /** @nocollapse */ /** @nocollapse */ EzHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: EzHeaderComponent, deps: [{ token: i1.Router }, { token: i2.ToastrService }, { token: i3.CommanServiceService }, { token: i4.GlobleEnvService }, { token: i5.NgxSpinnerService }], target: i0.ɵɵFactoryTarget.Component });
375
+ /** @nocollapse */ /** @nocollapse */ EzHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: EzHeaderComponent, selector: "app-ezheader", viewQueries: [{ propertyName: "closebtn", first: true, predicate: ["closebtn"], descendants: true }], ngImport: i0, template: "<ul class=\"x-navigation x-navigation-horizontal x-navigation-panel\" style=\"padding-right: 0px;z-index: 1000\">\r\n <li style=\"background: #3b5998;\">\r\n <a (click)=\"routehome()\" *ngIf=\"cUrl != '/home'\" class=\"profile-mini\">\r\n <span class=\"head\">EZ</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"cUrl != '/home' \">\r\n <nav class=\"navbar navbar-expand-md navbar-light bg-light\">\r\n <div class=\"navbar-collapse justify-content-between mtop\" id=\"navbarCollapse\">\r\n <div class=\"navbar-nav\">\r\n <div class=\"nav-item dropdown\" style=\"z-index:10\">\r\n <a (click)=\"ShowMenu('bar','')\" class=\"nav-link dropdown-toggle\"\r\n style=\"color: #fff; font-size: 20px;padding:0px ;margin-top: 5px\" data-toggle=\"dropdown\"> <i\r\n class=\"fa fa-bars\" aria-hidden=\"true\"></i></a>\r\n <div id=\"menuDiv\" class=\"dropdown-menu\" style=\"display: none;background-color: #1d2127\">\r\n <div class=\"row\">\r\n <div class=\"menu-history-column col-md-2\">\r\n <h2>History</h2>\r\n <ul id=\"nav-history\" style=\"display:inline\">\r\n <li class=\"service-item\" *ngFor=\"let menu_idn of historyLink\">\r\n <a href=\"#/{{historyLinkMap[menu_idn]['lnk']}}\" class=\"headerlink\"\r\n (click)=\"ShowMenu('bar','')\"><span\r\n class=\"service-label\">{{historyLinkMap[menu_idn]['hdr']}}</span></a>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"col-md-10\">\r\n <div class=\"row col-md-12 awsc-services-search\">\r\n <div id=\"awsc-input-wrapper\">\r\n <input id=\"awsc-services-search-autocomplete\" type=\"text\" placeholder=\"Find a Menu by name\"\r\n class=\"ui-autocomplete-input\" name=\"searchF\" [(ngModel)]=\"searchF\">\r\n </div>\r\n </div>\r\n <div id=\"awsc-services-container\" class=\"row\">\r\n <ng-container *ngFor=\"let key of keyList\">\r\n <div class=\"col-md-3\">\r\n <ul>\r\n <ng-container *ngFor=\"let accmenu of accMenuList[key] | tableSearch:searchF;\">\r\n <li *ngIf=\"accmenu.ishdr=='Y'\" class=\"awsc-header ico-compute\">\r\n <ng-container *ngIf=\"accmenu.lnk !='#' && accmenu.lnk !=''\">\r\n <i class=\"fa fa-angle-double-right\" style=\"font-size:20px;color:white;\"></i>\r\n <a href=\"#/{{accmenu.lnk}}\" (click)=\"ShowMenu('lnk',accmenu)\" class=\"headerlink\"> <span\r\n class=\"service-label\"> {{accmenu.hdr}}</span> </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"accmenu.lnk =='#' || accmenu.lnk ==''\">\r\n <i class=\"fa fa-angle-double-down\" style=\"font-size:20px;color:white;\"></i>\r\n {{accmenu.hdr}}\r\n </ng-container>\r\n </li>\r\n <li *ngIf=\"accmenu.ishdr=='N'\" class=\"service-item\">\r\n <a href=\"#/{{accmenu.lnk}}\" (click)=\"ShowMenu('lnk',accmenu)\"><span\r\n class=\"service-label\">{{accmenu.hdr}}</span></a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </nav>\r\n </li>\r\n <li class=\"rs-none\" [ngStyle]=\"{'width' : cUrl == '/home' ? '250px' : '0px'}\">\r\n &nbsp;\r\n </li>\r\n <li class=\"rs-none\" style=\"margin: 10px;\">\r\n <form class=\"form-inline my-2\">\r\n <textarea style=\"white-space: pre;\" class=\"form-control\" placeholder=\"STONE ID/ RF ID search\" [(ngModel)]=\"qkSch\"\r\n id=\"foggle\" name=\"foogle\" cols=\"45\" rows=\"1\"></textarea>\r\n <span style=\"position: absolute; \r\n top: -2px;\r\n right: 28px;\r\n color: rgb(150, 144, 144);\r\n cursor: pointer !important;\r\n z-index: 6;\r\n width: 35px;\r\n height: 36px;\r\n line-height: 34px;\r\n text-align: center;\r\n /* pointer-events: none; */\r\n font-size: 17px;\">\r\n <i class=\"fa fa-search\" (click)=\"packetLookupSrcCount(qkSch);\"></i>\r\n </span>\r\n <span class=\"helpc mr-sm-2\" data-toggle=\"tooltip\" data-placement=\"bottom\"\r\n title=\"STONE / CERT NO / GIA RD 1.20-1.30 F VS1 3EX N\"><i class=\"fa fa-info\"></i></span>\r\n </form>\r\n </li>\r\n <li class=\"pull-right\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Change password\">\r\n <a (click)=\"ChangePassword()\" style=\"padding:15px 5px\" class=\"mb-control\">\r\n <span style=\"font-size: 18px\" class=\"fa fa-key\"></span>\r\n </a>\r\n </li>\r\n <li class=\"pull-right\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Log Out\">\r\n <a (click)=\"logOutBox()\" class=\"mb-control\" style=\"padding:15px 5px\" data-box=\"#mb-signout\">\r\n <span style=\"font-size: 18px\" class=\"fa fa-sign-out\"></span>\r\n </a>\r\n </li>\r\n <li class=\"pull-right\">\r\n <label class=\"ud\"> <span class=\"text-capitalize\">{{uUsr +' |'}}</span> {{ds}} </label>\r\n </li>\r\n</ul>\r\n<ul class=\"x-navigation x-navigation-horizontal x-navigation-panel sr-none\" style=\"background-color: #bfbfbf\">\r\n <li style=\"margin: 10px;\">\r\n <form class=\"form-inline my-2\">\r\n <textarea style=\"white-space: pre;\" class=\"form-control\" placeholder=\"STONE ID/ RF ID search\" [(ngModel)]=\"qkSch\"\r\n id=\"foggle\" name=\"foogle\" cols=\"45\" rows=\"1\"></textarea>\r\n <span style=\"position: absolute; \r\n top: -2px;\r\n right: 28px;\r\n color: rgb(150, 144, 144);\r\n cursor: pointer !important;\r\n z-index: 6;\r\n width: 30px;\r\n height: 36px;\r\n line-height: 34px;\r\n text-align: center;\r\n /* pointer-events: none; */\r\n font-size: 17px;\">\r\n <i class=\"fa fa-search\" (click)=\"packetLookupSrcCount(qkSch);\"></i>\r\n </span>\r\n </form>\r\n </li>\r\n</ul>\r\n\r\n<div class=\"modal\" id=\"changePwdPop\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" #closebtn>\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Change Password</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <ng-container *ngFor=\"let user of userDetails; let i=index;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" class=\"col-md-2\" style=\"text-align: left\">Username : </label>\r\n <label class=\"col-md-2\" style=\"text-align: left\">{{user?.username}}</label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\" style=\"margin-top: 5px\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" class=\"col-md-2\" style=\"text-align: left\">Password:</label>\r\n\r\n <input type=\"text\" class=\"form-control\" class=\"col-md-10\" style=\"text-align: left\"\r\n (change)=\"passwordChange()\" [(ngModel)]=\"user.password\" name=\"password\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" #closebtn data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" (click)=\"SavePassword()\" class=\"btn btn-success\" appAppNoDblClick>Confirm</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<button id=\"changePwdBtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#changePwdPop\"></button>", styles: [".x-navigation li>a .fa,.x-navigation li>a .glyphicon{color:#ccc;text-align:center;font-size:14px;margin-right:10px;vertical-align:baseline;transition:color .2s ease}.x-navigation.x-navigation-horizontal>li>a{border-bottom:0px;line-height:20px;color:#fff;text-shadow:none}.ud{color:#fff;margin-top:13px;margin-right:5px;font-size:14px}.checked{color:orange}.req{color:red;padding-left:5px}::placeholder{color:#ddd!important;opacity:1}:-ms-input-placeholder{color:#ddd!important}::-ms-input-placeholder{color:#ddd!important}.helpc{background:#f8f9fa;color:#7c7c7d;padding:5px;font-size:10px;width:18px;text-align:center;border:1px solid #7c7c7c;border-radius:2px;cursor:pointer;margin:5px}.schdrp{border-radius:3px 0 0 3px}.schinput{border-radius:0 3px 3px 0;border-left:none;box-shadow:none}.profile-mini:hover{background:#3b5998}.head{font-size:18px;color:#fff;text-align:center;display:inline-block}.dropdown-menu{width:100vw;padding:20px;margin-left:-60px}.dropdown-menu:after{left:70px}.dropdown-menu:before{left:70px}#menu-history-column{box-sizing:border-box;padding-right:0;padding-bottom:35px;position:relative;height:100%}ul,li{display:block}.awsc-services-search{overflow:hidden;border-left:1px solid #ddd}.awsc-services-search #awsc-services-search-filter-group{display:table;float:right;width:120px;padding:10px}.awsc-services-search .awsc-services-search-filter{display:table-cell;width:60px;height:31px;font-size:14px;border:1px solid #ccc;text-align:center;vertical-align:middle;transition:background-color .25s ease}.awsc-services-search .awsc-services-search-filter:nth-of-type(1){border-radius:5px 0 0 5px;border-right:0}.awsc-services-search .awsc-services-search-filter:nth-of-type(2){border-radius:0 5px 5px 0}.awsc-services-search .awsc-services-search-filter.active{background-color:#a0cec782}.awsc-services-search .awsc-services-search-filter:not(.active){cursor:pointer}.awsc-services-search .awsc-services-search-filter a{color:#444!important;transition:background-color .25s ease}.awsc-services-search .awsc-services-search-filter.active a{font-weight:500}.awsc-services-search #awsc-input-wrapper{float:left;width:80%;padding:10px}.awsc-services-search #awsc-input-wrapper input{width:100%;border-radius:5px;font-size:14px;padding:7px 10px;transition:all .25s ease;outline:0;border:1px solid #ccc;height:17px;box-sizing:content-box}.awsc-services-search #awsc-input-wrapper input::-webkit-input-placeholder{color:#ccc}.awsc-services-search #awsc-input-wrapper input:-ms-input-placeholder{color:#ccc}.awsc-services-search #awsc-input-wrapper input::-moz-placeholder{color:#ccc;opacity:1}.awsc-services-search #awsc-input-wrapper input:-moz-placeholder{color:#ccc;opacity:1}.awsc-services-search #awsc-input-wrapper input:focus{border:1px solid #38d;box-shadow:0 0 8px #3388dd80}.menu-services-container{width:100%;overflow:auto;padding:25px 30px 30px;border-left:1px solid #ddd}#nav-history{list-style-type:none;margin:0;padding:0}#awsc-services-container{overflow:scroll;padding:10px 10px 5px 5px;border-left:1px solid #ddd;height:calc(100vh - 150px)}#awsc-services-container.awsc-clone{opacity:0!important;display:block!important;height:auto!important}.menu-history-column ul{width:auto;float:left;display:block;position:relative;border-radius:0;box-shadow:0 0 #0000}.menu-history-column ul li{display:block!important}.menu-history-column ul li{margin-bottom:4px;border:0;color:#3b5998;font-size:16px;font-weight:600;line-height:21px;text-transform:capitalize;white-space:normal;background-repeat:no-repeat;background-size:24px 24px}.headerlink{border:none;padding:0;font-size:16px;color:#fff;font-weight:600;float:none;display:inline}.arrowcss{font-size:20px;color:#fff}#awsc-services-container ul{float:left;display:block;position:relative;border-radius:0;box-shadow:0 0 #0000}ul,li{display:block}#awsc-services-container ul li{display:block!important}#awsc-services-container ul li.awsc-header{margin-bottom:4px;padding-left:38px;padding-bottom:7px;border:0;color:#fff;font-size:16px;font-weight:600;line-height:21px;text-transform:capitalize;white-space:normal;background-repeat:no-repeat;background-size:24px 24px}#awsc-services-container ul li.awsc-header .word{display:inline-block;white-space:nowrap}#awsc-services-container li.service-item{line-height:1.2;padding-left:60px;padding-bottom:8px}#awsc-services-container li.service-item a{color:#aab7b8!important;margin:0;padding:0;border-bottom:0px;font-weight:700;font-size:15px}.menu-history-column h2{color:#fff}.badge-primary{color:#fff;background-color:#3b5998;margin-top:13px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge{display:inline-block;padding:.25em .4em;font-size:15px;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline}@media (max-width:380px){.com-none{display:none}}@media (min-width:380px){.com-none{display:block}}@media (max-width:1000px){.rs-none{display:none}.sr-none{display:block}}@media (min-width:1000px){.rs-none{display:block}.sr-none{display:none}}.moreul{background-color:#3b5998;color:#fff;font-size:15px;white-space:nowrap;border:none;margin-top:15px;width:auto}.moreul li{padding:10px 15px}\n"], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.AppNoDblClickDirective, selector: "[appAppNoDblClick]" }], pipes: { "tableSearch": i9.TableSearchPipe } });
376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: EzHeaderComponent, decorators: [{
377
+ type: Component,
378
+ args: [{ selector: 'app-ezheader', template: "<ul class=\"x-navigation x-navigation-horizontal x-navigation-panel\" style=\"padding-right: 0px;z-index: 1000\">\r\n <li style=\"background: #3b5998;\">\r\n <a (click)=\"routehome()\" *ngIf=\"cUrl != '/home'\" class=\"profile-mini\">\r\n <span class=\"head\">EZ</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"cUrl != '/home' \">\r\n <nav class=\"navbar navbar-expand-md navbar-light bg-light\">\r\n <div class=\"navbar-collapse justify-content-between mtop\" id=\"navbarCollapse\">\r\n <div class=\"navbar-nav\">\r\n <div class=\"nav-item dropdown\" style=\"z-index:10\">\r\n <a (click)=\"ShowMenu('bar','')\" class=\"nav-link dropdown-toggle\"\r\n style=\"color: #fff; font-size: 20px;padding:0px ;margin-top: 5px\" data-toggle=\"dropdown\"> <i\r\n class=\"fa fa-bars\" aria-hidden=\"true\"></i></a>\r\n <div id=\"menuDiv\" class=\"dropdown-menu\" style=\"display: none;background-color: #1d2127\">\r\n <div class=\"row\">\r\n <div class=\"menu-history-column col-md-2\">\r\n <h2>History</h2>\r\n <ul id=\"nav-history\" style=\"display:inline\">\r\n <li class=\"service-item\" *ngFor=\"let menu_idn of historyLink\">\r\n <a href=\"#/{{historyLinkMap[menu_idn]['lnk']}}\" class=\"headerlink\"\r\n (click)=\"ShowMenu('bar','')\"><span\r\n class=\"service-label\">{{historyLinkMap[menu_idn]['hdr']}}</span></a>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"col-md-10\">\r\n <div class=\"row col-md-12 awsc-services-search\">\r\n <div id=\"awsc-input-wrapper\">\r\n <input id=\"awsc-services-search-autocomplete\" type=\"text\" placeholder=\"Find a Menu by name\"\r\n class=\"ui-autocomplete-input\" name=\"searchF\" [(ngModel)]=\"searchF\">\r\n </div>\r\n </div>\r\n <div id=\"awsc-services-container\" class=\"row\">\r\n <ng-container *ngFor=\"let key of keyList\">\r\n <div class=\"col-md-3\">\r\n <ul>\r\n <ng-container *ngFor=\"let accmenu of accMenuList[key] | tableSearch:searchF;\">\r\n <li *ngIf=\"accmenu.ishdr=='Y'\" class=\"awsc-header ico-compute\">\r\n <ng-container *ngIf=\"accmenu.lnk !='#' && accmenu.lnk !=''\">\r\n <i class=\"fa fa-angle-double-right\" style=\"font-size:20px;color:white;\"></i>\r\n <a href=\"#/{{accmenu.lnk}}\" (click)=\"ShowMenu('lnk',accmenu)\" class=\"headerlink\"> <span\r\n class=\"service-label\"> {{accmenu.hdr}}</span> </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"accmenu.lnk =='#' || accmenu.lnk ==''\">\r\n <i class=\"fa fa-angle-double-down\" style=\"font-size:20px;color:white;\"></i>\r\n {{accmenu.hdr}}\r\n </ng-container>\r\n </li>\r\n <li *ngIf=\"accmenu.ishdr=='N'\" class=\"service-item\">\r\n <a href=\"#/{{accmenu.lnk}}\" (click)=\"ShowMenu('lnk',accmenu)\"><span\r\n class=\"service-label\">{{accmenu.hdr}}</span></a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </nav>\r\n </li>\r\n <li class=\"rs-none\" [ngStyle]=\"{'width' : cUrl == '/home' ? '250px' : '0px'}\">\r\n &nbsp;\r\n </li>\r\n <li class=\"rs-none\" style=\"margin: 10px;\">\r\n <form class=\"form-inline my-2\">\r\n <textarea style=\"white-space: pre;\" class=\"form-control\" placeholder=\"STONE ID/ RF ID search\" [(ngModel)]=\"qkSch\"\r\n id=\"foggle\" name=\"foogle\" cols=\"45\" rows=\"1\"></textarea>\r\n <span style=\"position: absolute; \r\n top: -2px;\r\n right: 28px;\r\n color: rgb(150, 144, 144);\r\n cursor: pointer !important;\r\n z-index: 6;\r\n width: 35px;\r\n height: 36px;\r\n line-height: 34px;\r\n text-align: center;\r\n /* pointer-events: none; */\r\n font-size: 17px;\">\r\n <i class=\"fa fa-search\" (click)=\"packetLookupSrcCount(qkSch);\"></i>\r\n </span>\r\n <span class=\"helpc mr-sm-2\" data-toggle=\"tooltip\" data-placement=\"bottom\"\r\n title=\"STONE / CERT NO / GIA RD 1.20-1.30 F VS1 3EX N\"><i class=\"fa fa-info\"></i></span>\r\n </form>\r\n </li>\r\n <li class=\"pull-right\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Change password\">\r\n <a (click)=\"ChangePassword()\" style=\"padding:15px 5px\" class=\"mb-control\">\r\n <span style=\"font-size: 18px\" class=\"fa fa-key\"></span>\r\n </a>\r\n </li>\r\n <li class=\"pull-right\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Log Out\">\r\n <a (click)=\"logOutBox()\" class=\"mb-control\" style=\"padding:15px 5px\" data-box=\"#mb-signout\">\r\n <span style=\"font-size: 18px\" class=\"fa fa-sign-out\"></span>\r\n </a>\r\n </li>\r\n <li class=\"pull-right\">\r\n <label class=\"ud\"> <span class=\"text-capitalize\">{{uUsr +' |'}}</span> {{ds}} </label>\r\n </li>\r\n</ul>\r\n<ul class=\"x-navigation x-navigation-horizontal x-navigation-panel sr-none\" style=\"background-color: #bfbfbf\">\r\n <li style=\"margin: 10px;\">\r\n <form class=\"form-inline my-2\">\r\n <textarea style=\"white-space: pre;\" class=\"form-control\" placeholder=\"STONE ID/ RF ID search\" [(ngModel)]=\"qkSch\"\r\n id=\"foggle\" name=\"foogle\" cols=\"45\" rows=\"1\"></textarea>\r\n <span style=\"position: absolute; \r\n top: -2px;\r\n right: 28px;\r\n color: rgb(150, 144, 144);\r\n cursor: pointer !important;\r\n z-index: 6;\r\n width: 30px;\r\n height: 36px;\r\n line-height: 34px;\r\n text-align: center;\r\n /* pointer-events: none; */\r\n font-size: 17px;\">\r\n <i class=\"fa fa-search\" (click)=\"packetLookupSrcCount(qkSch);\"></i>\r\n </span>\r\n </form>\r\n </li>\r\n</ul>\r\n\r\n<div class=\"modal\" id=\"changePwdPop\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" #closebtn>\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Change Password</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <ng-container *ngFor=\"let user of userDetails; let i=index;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" class=\"col-md-2\" style=\"text-align: left\">Username : </label>\r\n <label class=\"col-md-2\" style=\"text-align: left\">{{user?.username}}</label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\" style=\"margin-top: 5px\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" class=\"col-md-2\" style=\"text-align: left\">Password:</label>\r\n\r\n <input type=\"text\" class=\"form-control\" class=\"col-md-10\" style=\"text-align: left\"\r\n (change)=\"passwordChange()\" [(ngModel)]=\"user.password\" name=\"password\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" #closebtn data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" (click)=\"SavePassword()\" class=\"btn btn-success\" appAppNoDblClick>Confirm</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<button id=\"changePwdBtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#changePwdPop\"></button>", styles: [".x-navigation li>a .fa,.x-navigation li>a .glyphicon{color:#ccc;text-align:center;font-size:14px;margin-right:10px;vertical-align:baseline;transition:color .2s ease}.x-navigation.x-navigation-horizontal>li>a{border-bottom:0px;line-height:20px;color:#fff;text-shadow:none}.ud{color:#fff;margin-top:13px;margin-right:5px;font-size:14px}.checked{color:orange}.req{color:red;padding-left:5px}::placeholder{color:#ddd!important;opacity:1}:-ms-input-placeholder{color:#ddd!important}::-ms-input-placeholder{color:#ddd!important}.helpc{background:#f8f9fa;color:#7c7c7d;padding:5px;font-size:10px;width:18px;text-align:center;border:1px solid #7c7c7c;border-radius:2px;cursor:pointer;margin:5px}.schdrp{border-radius:3px 0 0 3px}.schinput{border-radius:0 3px 3px 0;border-left:none;box-shadow:none}.profile-mini:hover{background:#3b5998}.head{font-size:18px;color:#fff;text-align:center;display:inline-block}.dropdown-menu{width:100vw;padding:20px;margin-left:-60px}.dropdown-menu:after{left:70px}.dropdown-menu:before{left:70px}#menu-history-column{box-sizing:border-box;padding-right:0;padding-bottom:35px;position:relative;height:100%}ul,li{display:block}.awsc-services-search{overflow:hidden;border-left:1px solid #ddd}.awsc-services-search #awsc-services-search-filter-group{display:table;float:right;width:120px;padding:10px}.awsc-services-search .awsc-services-search-filter{display:table-cell;width:60px;height:31px;font-size:14px;border:1px solid #ccc;text-align:center;vertical-align:middle;transition:background-color .25s ease}.awsc-services-search .awsc-services-search-filter:nth-of-type(1){border-radius:5px 0 0 5px;border-right:0}.awsc-services-search .awsc-services-search-filter:nth-of-type(2){border-radius:0 5px 5px 0}.awsc-services-search .awsc-services-search-filter.active{background-color:#a0cec782}.awsc-services-search .awsc-services-search-filter:not(.active){cursor:pointer}.awsc-services-search .awsc-services-search-filter a{color:#444!important;transition:background-color .25s ease}.awsc-services-search .awsc-services-search-filter.active a{font-weight:500}.awsc-services-search #awsc-input-wrapper{float:left;width:80%;padding:10px}.awsc-services-search #awsc-input-wrapper input{width:100%;border-radius:5px;font-size:14px;padding:7px 10px;transition:all .25s ease;outline:0;border:1px solid #ccc;height:17px;box-sizing:content-box}.awsc-services-search #awsc-input-wrapper input::-webkit-input-placeholder{color:#ccc}.awsc-services-search #awsc-input-wrapper input:-ms-input-placeholder{color:#ccc}.awsc-services-search #awsc-input-wrapper input::-moz-placeholder{color:#ccc;opacity:1}.awsc-services-search #awsc-input-wrapper input:-moz-placeholder{color:#ccc;opacity:1}.awsc-services-search #awsc-input-wrapper input:focus{border:1px solid #38d;box-shadow:0 0 8px #3388dd80}.menu-services-container{width:100%;overflow:auto;padding:25px 30px 30px;border-left:1px solid #ddd}#nav-history{list-style-type:none;margin:0;padding:0}#awsc-services-container{overflow:scroll;padding:10px 10px 5px 5px;border-left:1px solid #ddd;height:calc(100vh - 150px)}#awsc-services-container.awsc-clone{opacity:0!important;display:block!important;height:auto!important}.menu-history-column ul{width:auto;float:left;display:block;position:relative;border-radius:0;box-shadow:0 0 #0000}.menu-history-column ul li{display:block!important}.menu-history-column ul li{margin-bottom:4px;border:0;color:#3b5998;font-size:16px;font-weight:600;line-height:21px;text-transform:capitalize;white-space:normal;background-repeat:no-repeat;background-size:24px 24px}.headerlink{border:none;padding:0;font-size:16px;color:#fff;font-weight:600;float:none;display:inline}.arrowcss{font-size:20px;color:#fff}#awsc-services-container ul{float:left;display:block;position:relative;border-radius:0;box-shadow:0 0 #0000}ul,li{display:block}#awsc-services-container ul li{display:block!important}#awsc-services-container ul li.awsc-header{margin-bottom:4px;padding-left:38px;padding-bottom:7px;border:0;color:#fff;font-size:16px;font-weight:600;line-height:21px;text-transform:capitalize;white-space:normal;background-repeat:no-repeat;background-size:24px 24px}#awsc-services-container ul li.awsc-header .word{display:inline-block;white-space:nowrap}#awsc-services-container li.service-item{line-height:1.2;padding-left:60px;padding-bottom:8px}#awsc-services-container li.service-item a{color:#aab7b8!important;margin:0;padding:0;border-bottom:0px;font-weight:700;font-size:15px}.menu-history-column h2{color:#fff}.badge-primary{color:#fff;background-color:#3b5998;margin-top:13px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge{display:inline-block;padding:.25em .4em;font-size:15px;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline}@media (max-width:380px){.com-none{display:none}}@media (min-width:380px){.com-none{display:block}}@media (max-width:1000px){.rs-none{display:none}.sr-none{display:block}}@media (min-width:1000px){.rs-none{display:block}.sr-none{display:none}}.moreul{background-color:#3b5998;color:#fff;font-size:15px;white-space:nowrap;border:none;margin-top:15px;width:auto}.moreul li{padding:10px 15px}\n"] }]
379
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.ToastrService }, { type: i3.CommanServiceService }, { type: i4.GlobleEnvService }, { type: i5.NgxSpinnerService }]; }, propDecorators: { closebtn: [{
380
+ type: ViewChild,
381
+ args: ['closebtn']
382
+ }] } });
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvZXpoZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvZXpoZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsV0FBVyxFQUFHLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7OztBQVFoRCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQ1UsTUFBYyxFQUNkLE1BQXFCLEVBQ3JCLEVBQXdCLEVBQ3pCLFFBQTBCLEVBQ3pCLGNBQWlDO1FBSmpDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLE9BQUUsR0FBRixFQUFFLENBQXNCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUkzQyxVQUFLLEdBQUcsSUFBSSxJ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QUFFO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixXQUFXLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDOUIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEMsUUFBUSxFQUFFLGtDQUFrQztZQUM1QyxXQUFXLEVBQUUsa0NBQWtDO1lBQy9DLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUMvQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7SUFHSixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNwRSxJQUFJLFNBQVMsSUFBSSxNQUFNLEVBQUU7WUFDdkIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUMvRDthQUFNO1lBQ0wsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztTQUU5RDtJQUNILENBQUM7O29KQTdZVSxpQkFBaUI7d0lBQWpCLGlCQUFpQiwwSkNoQjlCLHNrUkF1S21HOzJGRHZKdEYsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7Mk5BYUQsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDb21tYW5TZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2NvbW1hbi1zZXJ2aWNlL2NvbW1hbi1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVycyAgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEdsb2JsZUVudlNlcnZpY2UgfSBmcm9tICcuLi9nbG9ibGUvZ2xvYmxlLWVudi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmd4U3Bpbm5lclNlcnZpY2UgfSBmcm9tIFwibmd4LXNwaW5uZXJcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1lemhlYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXpIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgY3M6IENvbW1hblNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGdsb2JsRW52OiBHbG9ibGVFbnZTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmd4U3Bpbm5lclNlcnZpY2UgXHJcbiAgKSB7IH1cclxuICBAVmlld0NoaWxkKCdjbG9zZWJ0bicpIGNsb3NlYnRuOiBFbGVtZW50UmVmO1xyXG5cclxuICBjRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZHMgPSBDb29raWUuZ2V0KCdfZHMnKTtcclxuICB1VXNyID0gQ29va2llLmdldCgnX3VzZXJuYW1lJyk7XHJcbiAgY29tcGFueSA9IFwiXCJcclxuICB5ZWFyID0gXCJcIlxyXG4gIHVzZXJEZXRhaWxzID0gW107XHJcbiAgaGlzdG9yeUxpbmtNYXAgPSB7fTtcclxuICBoaXN0b3J5TGluayA9IFtdO1xyXG4gIGNVcmw7XHJcbiAgaGVhZGVyO1xyXG4gIGFjY01lbnVMaXN0ID0ge307XHJcbiAgZmxhZyA9IGZhbHNlO1xyXG4gIGtleUxpc3QgPSBbXTtcclxuICBzZWFyY2hGO1xyXG4gIHVuYW1lO1xyXG4gIHFrU2NoO1xyXG4gIHNjaElkO1xyXG4gIHN0dHNBO1xyXG4gIGNvdW50O1xyXG4gIG50U2NoOiBib29sZWFuO1xyXG4gIHNyY2hDbnQgPSAwO1xyXG4gIGNudCA9IDA7XHJcbiAgZmVlZGJhY2tDb21tZW50ID0gJyc7XHJcblxyXG5cclxuXHJcbiAgY2xpY2tGaWx0ZXIoa2MpIHtcclxuXHJcbiAgICBpZiAoa2Mud2hpY2ggPT0gMTMpIHtcclxuICAgICAgLy8gdGhpcy5nZXRTcmNoQ291bnQodGhpcy5xa1NjaCk7XHJcbiAgICAgIHRoaXMucGFja2V0TG9va3VwU3JjQ291bnQodGhpcy5xa1NjaCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYmFja0hvbWUoKSB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZ2xvYmxFbnYub3JpZ2luICsgXCIjaG9tZVwiO1xyXG4gIH1cclxuXHJcbiAgcm91dGVob21lKCkge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWydob21lJ10pKTtcclxuICAgIHdpbmRvdy5vcGVuKFwiLyNcIiArIHVybCwgJ0hvbWUnKTtcclxuICB9XHJcbiAgcGFja2V0TG9va3VwU3JjQ291bnQoZmdsc3RyKSB7XHJcbiAgICB0aGlzLnNyY2hDbnQgPSB0aGlzLnNyY2hDbnQgKyAxXHJcbiAgICBsZXQgbG9nRHRsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVzcmVxcGFyYScpKTtcclxuICAgIGlmIChmZ2xzdHIgPT0gdW5kZWZpbmVkIHx8IGZnbHN0ciA9PSAnJykge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcignUGxlYXNlIGVudGVyIFNlYXJjaCBQYXJhbWV0ZXInKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHIgPSB0aGlzLmNzLmZvcm1hdGVTdHIoZmdsc3RyKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdwYWNrZXRMb29rdXBTdHInLCByKTtcclxuXHJcbiAgICBpZiAodGhpcy5jVXJsID09ICcvc29saXRhaXJlcycpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydzb2xpdGFpcmVzL3BhY2tldC1sb29rdXAvJ10sIHsgcXVlcnlQYXJhbXM6IHsgc2NoSWQ6IHRoaXMuc3JjaENudCB9IH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWydzb2xpdGFpcmVzL3BhY2tldC1sb29rdXAvJ10sIHsgcXVlcnlQYXJhbXM6IHsgc2NoSWQ6IHRoaXMuc3JjaENudCB9IH0pKTtcclxuICAgICAgd2luZG93Lm9wZW4oXCIvc29saXRhaXJlcy8jXCIgKyB1cmwsICdTb2xpdGFpcmVzJyk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGxvZ291dCgpIHtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ0xvZ291dCdcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdsb2dPdXQnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgdGhpcy5jcy5sb2dvdXQocmVxT2JqLCBvcHRpb25zKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgbGV0IGRzID0gQ29va2llLmdldCgnX2RzJyk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX3VzZXJuYW1lJyk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2xvZ3RpbWUnKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfY2snKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfbG9naWQnKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfYWNjQ29tcGFueScpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19hY2N5ZWFyJyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ09UUCcpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjbGllbnRLZXknKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbG9nSWRuJyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ21kbEtleScpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c2VybmFtZScpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzZWxNZCcpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjaGcnLCAnZmFsc2UnKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndHJhbnNhY3Rpb25JbmZvJyk7XHJcblxyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ191c2VybmFtZScsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19sb2d0aW1lJywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2NrJywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2xvZ2lkJywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2FjY0NvbXBhbnknLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfYWNjeWVhcicsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5nbG9ibEVudi5vcmlnaW47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG1lbnVMaXN0KCkge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgbGV0IG1vZHVsZUtleXMgPSB0aGlzLm1kbGtbdGhpcy5jVXJsLnNwbGl0KCcvJylbMV1dO1xyXG5cclxuICAgIGlmIChDb29raWUuZ2V0KCdfbG9naWQnKSA9PSBudWxsKSByZXR1cm47XHJcbiAgICBsZXQgaGVhZGVyOiBhbnkgPSB7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgJ2xvZ2luaWQnOiBDb29raWUuZ2V0KCdfbG9naWQnKSxcclxuICAgICAgJ21ldGhvZCc6ICdnZXRNZW51TGlzdCcsXHJcbiAgICAgICdtb2R1bGVrZXknOiBtb2R1bGVLZXlzLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfVxyXG5cclxuICAgIHJlcU9ialsnbW9kdWxlS2V5cyddID0gbW9kdWxlS2V5cztcclxuXHJcbiAgICBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyhoZWFkZXIpIH0pO1xyXG4gICAgY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgIHRoaXMuY3MubWVudUxpc3QocmVxT2JqLCBvcHRpb25zKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgICAgICBsZXQgbG9jaGlzdG9yeU1hcCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hpc3RvcnlMaW5rJykpIHx8IHt9O1xyXG4gICAgICAgIGxldCBsb2NoaXN0b3J5TGluayA9IGxvY2hpc3RvcnlNYXBbbW9kdWxlS2V5c10gfHwgW107XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5TGlua01hcCA9IHt9O1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeUxpbmsgPSBbXTtcclxuICAgICAgICBsZXQgbWVudUxpc3QgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgbGV0IGNudCA9IDBcclxuICAgICAgICBtZW51TGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcbiAgICAgICAgICBjbnQgPSBjbnQgKyBlbGUuU3ViTWVudS5sZW5ndGggKyAxO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxldCBkaXYgPSBjbnQgLyA0O1xyXG4gICAgICAgIGRpdiA9IE1hdGgucm91bmQoZGl2KTtcclxuICAgICAgICBpZiAoZGl2IDwgMSkge1xyXG4gICAgICAgICAgbGV0IG5ld01lbnVMaXN0ID0gW107XHJcbiAgICAgICAgICBtZW51TGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcbiAgICAgICAgICAgIGVsZVtcImlzaGRyXCJdID0gXCJZXCI7XHJcbiAgICAgICAgICAgIG5ld01lbnVMaXN0LnB1c2goZWxlKVxyXG4gICAgICAgICAgICBsZXQgZXh0bWVudV9pZG4gPSBlbGUubWVudV9pZG47XHJcbiAgICAgICAgICAgIGlmIChsb2NoaXN0b3J5TGluay5pbmRleE9mKGV4dG1lbnVfaWRuKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmsucHVzaChleHRtZW51X2lkbik7XHJcbiAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGlua01hcFtleHRtZW51X2lkbl0gPSBlbGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbGUuU3ViTWVudS5mb3JFYWNoKHN1YmVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgbmV3TWVudUxpc3QucHVzaChzdWJlbGUpXHJcbiAgICAgICAgICAgICAgZXh0bWVudV9pZG4gPSBzdWJlbGUubWVudV9pZG47XHJcblxyXG4gICAgICAgICAgICAgIGlmIChsb2NoaXN0b3J5TGluay5pbmRleE9mKGV4dG1lbnVfaWRuKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGluay5wdXNoKGV4dG1lbnVfaWRuKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmtNYXBbZXh0bWVudV9pZG5dID0gc3ViZWxlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmFjY01lbnVMaXN0WzFdID0gbmV3TWVudUxpc3Q7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBrZXkgPSAxO1xyXG4gICAgICAgICAgbGV0IG5ld01lbnVMaXN0ID0gW107XHJcbiAgICAgICAgICBsZXQgbHNDbnQgPSAwO1xyXG4gICAgICAgICAgbWVudUxpc3QuZm9yRWFjaChlbGUgPT4ge1xyXG4gICAgICAgICAgICBsc0NudCA9IGxzQ250ICsgZWxlLlN1Yk1lbnUubGVuZ3RoICsgMTtcclxuICAgICAgICAgICAgZWxlW1wiaXNoZHJcIl0gPSBcIllcIjtcclxuICAgICAgICAgICAgbmV3TWVudUxpc3QucHVzaChlbGUpXHJcbiAgICAgICAgICAgIGxldCBleHRtZW51X2lkbiA9IGVsZS5tZW51X2lkbjtcclxuICAgICAgICAgICAgaWYgKGxvY2hpc3RvcnlMaW5rLmluZGV4T2YoZXh0bWVudV9pZG4pICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGluay5wdXNoKGV4dG1lbnVfaWRuKTtcclxuICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwW2V4dG1lbnVfaWRuXSA9IGVsZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsZS5TdWJNZW51LmZvckVhY2goc3ViZWxlID0+IHtcclxuICAgICAgICAgICAgICBzdWJlbGVbXCJpc2hkclwiXSA9IFwiTlwiO1xyXG4gICAgICAgICAgICAgIG5ld01lbnVMaXN0LnB1c2goc3ViZWxlKVxyXG4gICAgICAgICAgICAgIGV4dG1lbnVfaWRuID0gc3ViZWxlLm1lbnVfaWRuO1xyXG5cclxuICAgICAgICAgICAgICBpZiAobG9jaGlzdG9yeUxpbmsuaW5kZXhPZihleHRtZW51X2lkbikgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmsucHVzaChleHRtZW51X2lkbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwW2V4dG1lbnVfaWRuXSA9IHN1YmVsZTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChsc0NudCA+PSBkaXYgJiYgbmV3TWVudUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWNjTWVudUxpc3Rba2V5XSA9IG5ld01lbnVMaXN0O1xyXG4gICAgICAgICAgICAgIGtleSA9IGtleSArIDE7XHJcbiAgICAgICAgICAgICAgbmV3TWVudUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICBsc0NudCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChsc0NudCAhPSAwKVxyXG4gICAgICAgICAgICB0aGlzLmFjY01lbnVMaXN0W2tleV0gPSBuZXdNZW51TGlzdDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB0aGlzLmtleUxpc3QgPSBPYmplY3Qua2V5cyh0aGlzLmFjY01lbnVMaXN0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnIubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbG9nT3V0Qm94KCkge1xyXG4gICAgdmFyIGRpc3BsYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWItc2lnbm91dCcpLnN0eWxlLmRpc3BsYXk7XHJcblxyXG4gICAgaWYgKGRpc3BsYXkgPT0gJ25vbmUnIHx8IGRpc3BsYXkgPT0gJycpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21iLXNpZ25vdXQnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYi1zaWdub3V0Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH1cclxuICB9XHJcbiAgaXNwYXNzd29yZENoYW5nZSA9IGZhbHNlO1xyXG4gIENoYW5nZVBhc3N3b3JkKCkge1xyXG5cclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIGlmIChDb29raWUuZ2V0KCdfbG9naWQnKSA9PSBudWxsKSByZXR1cm47XHJcbiAgICBsZXQgaGVhZGVyOiBhbnkgPSB7XHJcbiAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ21vZHVsZWtleSc6IHRoaXMubWRsa1t0aGlzLmNVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJhcHBsaWNhdGlvbkFjY2Vzc01hc3RlclwiO1xyXG4gICAgcmVxT2JqW1widXNlcm5hbWVcIl0gPSB0aGlzLnVVc3I7XHJcbiAgICBoZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRDaGFuZ2VQYXNzXCI7XHJcbiAgICBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyhoZWFkZXIpIH0pO1xyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3QvbG9hZENvbnRhY3QnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHMgPSByZXN1bHQudXNlckRldGFpbHM7XHJcbiAgICAgICAgdGhpcy5pc3Bhc3N3b3JkQ2hhbmdlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuZ2VQd2RCdG4nKS5jbGljaygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG4gIHBhc3N3b3JkQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5pc3Bhc3N3b3JkQ2hhbmdlID0gdHJ1ZTtcclxuXHJcbiAgfVxyXG4gIFNhdmVQYXNzd29yZCgpIHtcclxuICAgIGlmICh0aGlzLmlzcGFzc3dvcmRDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICAgIGlmIChDb29raWUuZ2V0KCdfbG9naWQnKSA9PSBudWxsKSByZXR1cm47XHJcbiAgICAgIGxldCBoZWFkZXI6IGFueSA9IHtcclxuICAgICAgICAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAnbW9kdWxla2V5JzogdGhpcy5tZGxrW3RoaXMuY1VybC5zcGxpdCgnLycpWzFdXSxcclxuICAgICAgICAnbG9naW5pZCc6IENvb2tpZS5nZXQoJ19sb2dpZCcpLFxyXG4gICAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICAgIH1cclxuICAgICAgZGVidWdnZXJcclxuICAgICAgbGV0IHVzckR0bCA9IHRoaXMudXNlckRldGFpbHNbMF07XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwic2V0UGFzc3dvcmRGb3JtXCI7XHJcbiAgICAgIHJlcU9ialtcInVzZXJJZG5cIl0gPSB1c3JEdGwudXNlcklkbjtcclxuICAgICAgcmVxT2JqW1wicGFzc3dvcmRcIl0gPSB1c3JEdGwucGFzc3dvcmQ7XHJcbiAgICAgIGhlYWRlcltcIm1ldGhvZFwiXSA9IFwiY2hhbmdlUGFzc3dvcmRcIjtcclxuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICAgIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKGhlYWRlcikgfSk7XHJcbiAgICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdjb250YWN0L2xvYWRDb250YWN0JykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlYnRuLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy5pc3Bhc3N3b3JkQ2hhbmdlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlBsZWFzZSBzcGVjaWZ5IG5ldyBwYXNzd29yZFwiKTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgU2hvd01lbnUodHlwLCBtZW51ZHRsKSB7XHJcbiAgICB2YXIgbWVudWRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZW51RGl2Jykuc3R5bGUuZGlzcGxheTtcclxuICAgIGlmIChtZW51ZGl2ID09ICdub25lJylcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lbnVEaXYnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgIGVsc2VcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lbnVEaXYnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgaWYgKHR5cCA9PSAnbG5rJykge1xyXG4gICAgICBkZWJ1Z2dlclxyXG4gICAgICBsZXQgbWVudV9pZG4gPSBtZW51ZHRsLm1lbnVfaWRuIHx8ICcnO1xyXG4gICAgICBsZXQgbW9kdWxrZXkgPSB0aGlzLm1kbGtbdGhpcy5jVXJsLnNwbGl0KCcvJylbMV1dXHJcbiAgICAgIGxldCBoaXN0b3J5TGlua21hcCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hpc3RvcnlMaW5rJykpIHx8IHt9O1xyXG4gICAgICBsZXQgbW9kdWxlTGluayA9IGhpc3RvcnlMaW5rbWFwW21vZHVsa2V5XSB8fCBbXTtcclxuICAgICAgaWYgKG1lbnVfaWRuICE9ICcnKSB7XHJcbiAgICAgICAgZGVidWdnZXJcclxuICAgICAgICBpZiAobW9kdWxlTGluay5pbmRleE9mKG1lbnVfaWRuKSAhPSAtMSkge1xyXG4gICAgICAgICAgbW9kdWxlTGluay5zcGxpY2UobW9kdWxlTGluay5pbmRleE9mKG1lbnVfaWRuKSwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1vZHVsZUxpbmsuc3BsaWNlKDAsIDAsIG1lbnVfaWRuKTtcclxuICAgICAgICBpZiAobW9kdWxlTGluay5sZW5ndGggPiAxMCkge1xyXG4gICAgICAgICAgbGV0IG51bU9mcmVtb3ZlID0gbW9kdWxlTGluay5sZW5ndGggLSAxMDtcclxuICAgICAgICAgIG1vZHVsZUxpbmsuc3BsaWNlKDEwLCBudW1PZnJlbW92ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhpc3RvcnlMaW5rbWFwW21vZHVsa2V5XSA9IG1vZHVsZUxpbms7XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5TGluayA9IG1vZHVsZUxpbms7XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5TGlua01hcFttZW51X2lkbl0gPSBtZW51ZHRsO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdoaXN0b3J5TGluaycsIEpTT04uc3RyaW5naWZ5KGhpc3RvcnlMaW5rbWFwKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgRWRpdENvbXBhbnkoKSB7XHJcbiAgICBDb29raWUuZGVsZXRlKCdfYWNjQ29tcGFueScsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgQ29va2llLmRlbGV0ZSgnX2FjY3llYXInLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnZmFjb21wYW55J10pO1xyXG4gIH1cclxuICByYmkgPSBcIlwiO1xyXG4gIGJhbmsgPSBcIlwiO1xyXG4gIGN1dG9taW1wID0gXCJcIjtcclxuICBjdXRvbWV4cCA9IFwiXCI7XHJcbiAgbWRsa1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubWRsayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21kbEtleScpKTtcclxuICAgIC8vICB0aGlzLmNVcmwgPSB3aW5kb3cubG9jYXRpb24uaGFzaDtcclxuICAgIC8vICB0aGlzLmNVcmw9dGhpcy5jVXJsLnJlcGxhY2UoXCIjXCIsJycpO1xyXG5cclxuICAgIC8vIEdldHRpbmcgdGhlIGZpbmFsIHVybFxyXG4gICAgLy8gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXHJcbiAgICAvLyAgIGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG4gICAgLy8gICAuc3Vic2NyaWJlKChuYXZFbmQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgIC8vICAgICB0aGlzLmNVcmwgPSBuYXZFbmQudXJsQWZ0ZXJSZWRpcmVjdHM7XHJcbiAgICAvLyAgICAgdGhpcy5tZW51TGlzdCgpO1xyXG4gICAgLy8gICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY1VybCk7XHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyAgKTtcclxuXHJcbiAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXHJcbiAgICAgLnBpcGUoZmlsdGVyKChlKTogZSBpcyBOYXZpZ2F0aW9uRW5kID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcclxuICAgICAuc3Vic2NyaWJlKChuYXZFbmQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgICAgIHRoaXMuY1VybCA9IG5hdkVuZC51cmxBZnRlclJlZGlyZWN0cztcclxuICAgICAgIHRoaXMubWVudUxpc3QoKTtcclxuICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY1VybCk7XHJcbiAgICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY1VybCA9PSAnJylcclxuICAgICAgdGhpcy5jVXJsID0gXCIvaG9tZVwiO1xyXG4gICAgdGhpcy5oZWFkZXIgPSB7XHJcbiAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ2RzJzogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0RTJyksXHJcbiAgICAgICdhcHBrZXknOiAnTzkxWUsqRHcka0U3ZE5wY1ZtR0x2THhXTUowQzAwZU8nLFxyXG4gICAgICAnbW9kdWxla2V5JzogJ1dIaTZTUkxZNiMkODJiekpmQDRJVXg5b0hTTGJuMnFIJywvLyBtZGxrW2NVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBPcGVuT3B0aW9uKCkge1xyXG4gICAgdmFyIGlzZGlzcGxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb3Jlb3B0aW9uJykuc3R5bGUuZGlzcGxheTtcclxuICAgIGlmIChpc2Rpc3BsYXkgPT0gJ25vbmUnKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb3Jlb3B0aW9uJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9yZW9wdGlvbicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjx1bCBjbGFzcz1cIngtbmF2aWdhdGlvbiB4LW5hdmlnYXRpb24taG9yaXpvbnRhbCB4LW5hdmlnYXRpb24tcGFuZWxcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDBweDt6LWluZGV4OiAxMDAwXCI+XHJcbiAgPGxpIHN0eWxlPVwiYmFja2dyb3VuZDogIzNiNTk5ODtcIj5cclxuICAgIDxhIChjbGljayk9XCJyb3V0ZWhvbWUoKVwiICpuZ0lmPVwiY1VybCAhPSAnL2hvbWUnXCIgY2xhc3M9XCJwcm9maWxlLW1pbmlcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkXCI+RVo8L3NwYW4+XHJcbiAgICA8L2E+XHJcbiAgPC9saT5cclxuICA8bGkgKm5nSWY9XCJjVXJsICE9ICcvaG9tZScgXCI+XHJcbiAgICA8bmF2IGNsYXNzPVwibmF2YmFyIG5hdmJhci1leHBhbmQtbWQgbmF2YmFyLWxpZ2h0IGJnLWxpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuYXZiYXItY29sbGFwc2UganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXRvcFwiIGlkPVwibmF2YmFyQ29sbGFwc2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2YmFyLW5hdlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1pdGVtIGRyb3Bkb3duXCIgc3R5bGU9XCJ6LWluZGV4OjEwXCI+XHJcbiAgICAgICAgICAgIDxhIChjbGljayk9XCJTaG93TWVudSgnYmFyJywnJylcIiBjbGFzcz1cIm5hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogI2ZmZjsgZm9udC1zaXplOiAyMHB4O3BhZGRpbmc6MHB4IDttYXJnaW4tdG9wOiA1cHhcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCI+IDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWJhcnNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwibWVudURpdlwiIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI3XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaGlzdG9yeS1jb2x1bW4gY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgyPkhpc3Rvcnk8L2gyPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgaWQ9XCJuYXYtaGlzdG9yeVwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJzZXJ2aWNlLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbWVudV9pZG4gb2YgaGlzdG9yeUxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjL3t7aGlzdG9yeUxpbmtNYXBbbWVudV9pZG5dWydsbmsnXX19XCIgY2xhc3M9XCJoZWFkZXJsaW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlNob3dNZW51KCdiYXInLCcnKVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZXJ2aWNlLWxhYmVsXCI+e3toaXN0b3J5TGlua01hcFttZW51X2lkbl1bJ2hkciddfX08L3NwYW4+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBjb2wtbWQtMTIgYXdzYy1zZXJ2aWNlcy1zZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYXdzYy1pbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJhd3NjLXNlcnZpY2VzLXNlYXJjaC1hdXRvY29tcGxldGVcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRmluZCBhIE1lbnUgYnkgbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWktYXV0b2NvbXBsZXRlLWlucHV0XCIgbmFtZT1cInNlYXJjaEZcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJhd3NjLXNlcnZpY2VzLWNvbnRhaW5lclwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga2V5IG9mIGtleUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWNjbWVudSBvZiBhY2NNZW51TGlzdFtrZXldIHwgdGFibGVTZWFyY2g6c2VhcmNoRjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImFjY21lbnUuaXNoZHI9PSdZJ1wiIGNsYXNzPVwiYXdzYy1oZWFkZXIgaWNvLWNvbXB1dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjY21lbnUubG5rICE9JyMnICYmIGFjY21lbnUubG5rICE9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvdWJsZS1yaWdodFwiIHN0eWxlPVwiZm9udC1zaXplOjIwcHg7Y29sb3I6d2hpdGU7XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjL3t7YWNjbWVudS5sbmt9fVwiIChjbGljayk9XCJTaG93TWVudSgnbG5rJyxhY2NtZW51KVwiIGNsYXNzPVwiaGVhZGVybGlua1wiPiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlcnZpY2UtbGFiZWxcIj4ge3thY2NtZW51Lmhkcn19PC9zcGFuPiA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWNjbWVudS5sbmsgPT0nIycgfHwgYWNjbWVudS5sbmsgPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG91YmxlLWRvd25cIiBzdHlsZT1cImZvbnQtc2l6ZToyMHB4O2NvbG9yOndoaXRlO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FjY21lbnUuaGRyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWNjbWVudS5pc2hkcj09J04nXCIgY2xhc3M9XCJzZXJ2aWNlLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiMve3thY2NtZW51Lmxua319XCIgKGNsaWNrKT1cIlNob3dNZW51KCdsbmsnLGFjY21lbnUpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VydmljZS1sYWJlbFwiPnt7YWNjbWVudS5oZHJ9fTwvc3Bhbj48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgPC9saT5cclxuICA8bGkgY2xhc3M9XCJycy1ub25lXCIgW25nU3R5bGVdPVwieyd3aWR0aCcgOiBjVXJsID09ICcvaG9tZScgPyAnMjUwcHgnIDogJzBweCd9XCI+XHJcbiAgICAmbmJzcDtcclxuICA8L2xpPlxyXG4gIDxsaSBjbGFzcz1cInJzLW5vbmVcIiBzdHlsZT1cIm1hcmdpbjogMTBweDtcIj5cclxuICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgbXktMlwiPlxyXG4gICAgICA8dGV4dGFyZWEgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlO1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTVE9ORSBJRC8gUkYgSUQgc2VhcmNoXCIgWyhuZ01vZGVsKV09XCJxa1NjaFwiXHJcbiAgICAgICAgaWQ9XCJmb2dnbGVcIiBuYW1lPVwiZm9vZ2xlXCIgY29scz1cIjQ1XCIgcm93cz1cIjFcIj48L3RleHRhcmVhPlxyXG4gICAgICA8c3BhbiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgXHJcbiAgICAgICAgdG9wOiAtMnB4O1xyXG4gICAgICAgIHJpZ2h0OiAyOHB4O1xyXG4gICAgICAgIGNvbG9yOiByZ2IoMTUwLCAxNDQsIDE0NCk7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgei1pbmRleDogNjtcclxuICAgICAgICB3aWR0aDogMzVweDtcclxuICAgICAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDM0cHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIC8qIHBvaW50ZXItZXZlbnRzOiBub25lOyAqL1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTdweDtcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIChjbGljayk9XCJwYWNrZXRMb29rdXBTcmNDb3VudChxa1NjaCk7XCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaGVscGMgbXItc20tMlwiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICB0aXRsZT1cIlNUT05FIC8gQ0VSVCBOTyAvIEdJQSBSRCAxLjIwLTEuMzAgRiBWUzEgM0VYIE5cIj48aSBjbGFzcz1cImZhIGZhLWluZm9cIj48L2k+PC9zcGFuPlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbGk+XHJcbiAgPGxpIGNsYXNzPVwicHVsbC1yaWdodFwiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwibGVmdFwiIHRpdGxlPVwiQ2hhbmdlIHBhc3N3b3JkXCI+XHJcbiAgICA8YSAoY2xpY2spPVwiQ2hhbmdlUGFzc3dvcmQoKVwiIHN0eWxlPVwicGFkZGluZzoxNXB4IDVweFwiIGNsYXNzPVwibWItY29udHJvbFwiPlxyXG4gICAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMThweFwiIGNsYXNzPVwiZmEgZmEta2V5XCI+PC9zcGFuPlxyXG4gICAgPC9hPlxyXG4gIDwvbGk+XHJcbiAgPGxpIGNsYXNzPVwicHVsbC1yaWdodFwiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwibGVmdFwiIHRpdGxlPVwiTG9nIE91dFwiPlxyXG4gICAgPGEgKGNsaWNrKT1cImxvZ091dEJveCgpXCIgY2xhc3M9XCJtYi1jb250cm9sXCIgc3R5bGU9XCJwYWRkaW5nOjE1cHggNXB4XCIgZGF0YS1ib3g9XCIjbWItc2lnbm91dFwiPlxyXG4gICAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMThweFwiIGNsYXNzPVwiZmEgZmEtc2lnbi1vdXRcIj48L3NwYW4+XHJcbiAgICA8L2E+XHJcbiAgPC9saT5cclxuICA8bGkgY2xhc3M9XCJwdWxsLXJpZ2h0XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJ1ZFwiPiA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiPnt7dVVzciArJyB8J319PC9zcGFuPiB7e2RzfX0gPC9sYWJlbD5cclxuICA8L2xpPlxyXG48L3VsPlxyXG48dWwgY2xhc3M9XCJ4LW5hdmlnYXRpb24geC1uYXZpZ2F0aW9uLWhvcml6b250YWwgeC1uYXZpZ2F0aW9uLXBhbmVsIHNyLW5vbmVcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNiZmJmYmZcIj5cclxuICA8bGkgc3R5bGU9XCJtYXJnaW46IDEwcHg7XCI+XHJcbiAgICA8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lIG15LTJcIj5cclxuICAgICAgPHRleHRhcmVhIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZTtcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiU1RPTkUgSUQvIFJGIElEIHNlYXJjaFwiIFsobmdNb2RlbCldPVwicWtTY2hcIlxyXG4gICAgICAgIGlkPVwiZm9nZ2xlXCIgbmFtZT1cImZvb2dsZVwiIGNvbHM9XCI0NVwiIHJvd3M9XCIxXCI+PC90ZXh0YXJlYT5cclxuICAgICAgPHNwYW4gc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IFxyXG4gICAgICB0b3A6IC0ycHg7XHJcbiAgICAgIHJpZ2h0OiAyOHB4O1xyXG4gICAgICBjb2xvcjogcmdiKDE1MCwgMTQ0LCAxNDQpO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcclxuICAgICAgei1pbmRleDogNjtcclxuICAgICAgd2lkdGg6IDMwcHg7XHJcbiAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDM0cHg7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgLyogcG9pbnRlci1ldmVudHM6IG5vbmU7ICovXHJcbiAgICAgIGZvbnQtc2l6ZTogMTdweDtcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIChjbGljayk9XCJwYWNrZXRMb29rdXBTcmNDb3VudChxa1NjaCk7XCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9saT5cclxuPC91bD5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiY2hhbmdlUHdkUG9wXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCIgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiICNjbG9zZWJ0bj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwic21hbGxNb2RhbEhlYWRcIj5DaGFuZ2UgUGFzc3dvcmQ8L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJEZXRhaWxzOyBsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgY2xhc3M9XCJjb2wtbWQtMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiPlVzZXJuYW1lIDogPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0XCI+e3t1c2VyPy51c2VybmFtZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDVweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgY2xhc3M9XCJjb2wtbWQtMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiPlBhc3N3b3JkOjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBjbGFzcz1cImNvbC1tZC0xMFwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwicGFzc3dvcmRDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwidXNlci5wYXNzd29yZFwiIG5hbWU9XCJwYXNzd29yZFwiIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiICNjbG9zZWJ0biBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIlNhdmVQYXNzd29yZCgpXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBhcHBBcHBOb0RibENsaWNrPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48YnV0dG9uIGlkPVwiY2hhbmdlUHdkQnRuXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2NoYW5nZVB3ZFBvcFwiPjwvYnV0dG9uPiJdfQ==