ezlibrary_v2 2.0.0

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 (118) hide show
  1. package/README.md +24 -0
  2. package/esm2020/ezlibrary_v2.mjs +5 -0
  3. package/esm2020/lib/admin-service/admin-service.service.mjs +34 -0
  4. package/esm2020/lib/analysis-search/analysis-search.component.mjs +1077 -0
  5. package/esm2020/lib/assort-service/assort-service.service.mjs +28 -0
  6. package/esm2020/lib/attribute-definition/attribute-definition.component.mjs +225 -0
  7. package/esm2020/lib/auth/auth.guard.mjs +37 -0
  8. package/esm2020/lib/bi-service/bi.service.mjs +57 -0
  9. package/esm2020/lib/call-info/callinfo.component.mjs +125 -0
  10. package/esm2020/lib/comman-service/comman-service.service.mjs +678 -0
  11. package/esm2020/lib/comman-service/share-data-service.service.mjs +23 -0
  12. package/esm2020/lib/contact-search/contact-search.component.mjs +690 -0
  13. package/esm2020/lib/contact-service/contact-service.service.mjs +45 -0
  14. package/esm2020/lib/ez-lib.component.mjs +26 -0
  15. package/esm2020/lib/ez-lib.module.mjs +232 -0
  16. package/esm2020/lib/ez-lib.service.mjs +14 -0
  17. package/esm2020/lib/ezheader/header.component.mjs +400 -0
  18. package/esm2020/lib/file-upload/fileupload.component.mjs +918 -0
  19. package/esm2020/lib/file-upload-log/file-upload-log.component.mjs +169 -0
  20. package/esm2020/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.mjs +14 -0
  21. package/esm2020/lib/fileupload-module/fileupload-routing.module.mjs +28 -0
  22. package/esm2020/lib/fileupload-module/fileupload.module.mjs +80 -0
  23. package/esm2020/lib/footer/footer.component.mjs +18 -0
  24. package/esm2020/lib/globle/common-pdf.service.mjs +28 -0
  25. package/esm2020/lib/globle/globle-env.service.mjs +45 -0
  26. package/esm2020/lib/globle/memo-report.service.mjs +2798 -0
  27. package/esm2020/lib/globle/shared-services.service.mjs +25 -0
  28. package/esm2020/lib/globle/upload-service.service.mjs +63 -0
  29. package/esm2020/lib/header/header.component.mjs +172 -0
  30. package/esm2020/lib/invalid/invalid.component.mjs +70 -0
  31. package/esm2020/lib/logout/logout.component.mjs +104 -0
  32. package/esm2020/lib/menu-right/menu-right.component.mjs +258 -0
  33. package/esm2020/lib/pipes/number-with-commas.pipe.mjs +24 -0
  34. package/esm2020/lib/pipes/order-by-pipe.pipe.mjs +17 -0
  35. package/esm2020/lib/pipes/selectedCount.mjs +19 -0
  36. package/esm2020/lib/pipes/sum.pipe.mjs +17 -0
  37. package/esm2020/lib/pkt-data/pkt-data.component.mjs +1109 -0
  38. package/esm2020/lib/pricing-service/pricing.service.mjs +64 -0
  39. package/esm2020/lib/qa-analysis/qa-analysis.component.mjs +1028 -0
  40. package/esm2020/lib/report-format/report-format.component.mjs +403 -0
  41. package/esm2020/lib/sessionend/session-end.guard.mjs +27 -0
  42. package/esm2020/lib/stock-service/lazyload.service.mjs +21 -0
  43. package/esm2020/lib/stock-service/stock-service.service.mjs +58 -0
  44. package/esm2020/lib/system-module/subform/subform.component.mjs +2817 -0
  45. package/esm2020/lib/system-module/system/system.component.mjs +970 -0
  46. package/esm2020/lib/system-module/system-service/system-service.service.mjs +83 -0
  47. package/esm2020/lib/system-module/system-service/upload-file.service.mjs +83 -0
  48. package/esm2020/lib/utility/app-no-dbl-click.directive.mjs +24 -0
  49. package/esm2020/lib/utility/constants.mjs +5 -0
  50. package/esm2020/lib/utility/contact-table-search.pipe.mjs +25 -0
  51. package/esm2020/lib/utility/formate-num-field.pipe.mjs +19 -0
  52. package/esm2020/lib/utility/search-pipe.pipe.mjs +26 -0
  53. package/esm2020/lib/utility/selective-preloading-strategy.mjs +23 -0
  54. package/esm2020/lib/utility/table-search.pipe.mjs +25 -0
  55. package/esm2020/lib/utility/tranform.directive.mjs +27 -0
  56. package/esm2020/lib/websearch-history/websearch-history.component.mjs +273 -0
  57. package/esm2020/public-api.mjs +59 -0
  58. package/ezlibrary_v2.d.ts +5 -0
  59. package/fesm2015/ezlibrary_v2.mjs +15300 -0
  60. package/fesm2015/ezlibrary_v2.mjs.map +1 -0
  61. package/fesm2020/ezlibrary_v2.mjs +15291 -0
  62. package/fesm2020/ezlibrary_v2.mjs.map +1 -0
  63. package/lib/admin-service/admin-service.service.d.ts +13 -0
  64. package/lib/analysis-search/analysis-search.component.d.ts +118 -0
  65. package/lib/assort-service/assort-service.service.d.ts +12 -0
  66. package/lib/attribute-definition/attribute-definition.component.d.ts +43 -0
  67. package/lib/auth/auth.guard.d.ts +14 -0
  68. package/lib/bi-service/bi.service.d.ts +16 -0
  69. package/lib/call-info/callinfo.component.d.ts +26 -0
  70. package/lib/comman-service/comman-service.service.d.ts +106 -0
  71. package/lib/comman-service/share-data-service.service.d.ts +10 -0
  72. package/lib/contact-search/contact-search.component.d.ts +111 -0
  73. package/lib/contact-service/contact-service.service.d.ts +15 -0
  74. package/lib/ez-lib.component.d.ts +8 -0
  75. package/lib/ez-lib.module.d.ts +43 -0
  76. package/lib/ez-lib.service.d.ts +6 -0
  77. package/lib/ezheader/header.component.d.ts +57 -0
  78. package/lib/file-upload/fileupload.component.d.ts +127 -0
  79. package/lib/file-upload-log/file-upload-log.component.d.ts +49 -0
  80. package/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.d.ts +8 -0
  81. package/lib/fileupload-module/fileupload-routing.module.d.ts +7 -0
  82. package/lib/fileupload-module/fileupload.module.d.ts +15 -0
  83. package/lib/footer/footer.component.d.ts +9 -0
  84. package/lib/globle/common-pdf.service.d.ts +9 -0
  85. package/lib/globle/globle-env.service.d.ts +16 -0
  86. package/lib/globle/memo-report.service.d.ts +107 -0
  87. package/lib/globle/shared-services.service.d.ts +12 -0
  88. package/lib/globle/upload-service.service.d.ts +16 -0
  89. package/lib/header/header.component.d.ts +41 -0
  90. package/lib/invalid/invalid.component.d.ts +12 -0
  91. package/lib/logout/logout.component.d.ts +19 -0
  92. package/lib/menu-right/menu-right.component.d.ts +43 -0
  93. package/lib/pipes/number-with-commas.pipe.d.ts +7 -0
  94. package/lib/pipes/order-by-pipe.pipe.d.ts +7 -0
  95. package/lib/pipes/selectedCount.d.ts +7 -0
  96. package/lib/pipes/sum.pipe.d.ts +7 -0
  97. package/lib/pkt-data/pkt-data.component.d.ts +184 -0
  98. package/lib/pricing-service/pricing.service.d.ts +16 -0
  99. package/lib/qa-analysis/qa-analysis.component.d.ts +95 -0
  100. package/lib/report-format/report-format.component.d.ts +74 -0
  101. package/lib/sessionend/session-end.guard.d.ts +10 -0
  102. package/lib/stock-service/lazyload.service.d.ts +7 -0
  103. package/lib/stock-service/stock-service.service.d.ts +15 -0
  104. package/lib/system-module/subform/subform.component.d.ts +222 -0
  105. package/lib/system-module/system/system.component.d.ts +109 -0
  106. package/lib/system-module/system-service/system-service.service.d.ts +23 -0
  107. package/lib/system-module/system-service/upload-file.service.d.ts +12 -0
  108. package/lib/utility/app-no-dbl-click.directive.d.ts +7 -0
  109. package/lib/utility/constants.d.ts +4 -0
  110. package/lib/utility/contact-table-search.pipe.d.ts +7 -0
  111. package/lib/utility/formate-num-field.pipe.d.ts +7 -0
  112. package/lib/utility/search-pipe.pipe.d.ts +7 -0
  113. package/lib/utility/selective-preloading-strategy.d.ts +9 -0
  114. package/lib/utility/table-search.pipe.d.ts +7 -0
  115. package/lib/utility/tranform.directive.d.ts +10 -0
  116. package/lib/websearch-history/websearch-history.component.d.ts +56 -0
  117. package/package.json +31 -0
  118. package/public-api.d.ts +54 -0
@@ -0,0 +1,400 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { Cookie } from 'ng2-cookies/ng2-cookies';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ import * as i2 from "../comman-service/comman-service.service";
6
+ import * as i3 from "../globle/globle-env.service";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "@angular/forms";
9
+ import * as i6 from "../utility/app-no-dbl-click.directive";
10
+ import * as i7 from "../utility/table-search.pipe";
11
+ export class EzHeaderComponent {
12
+ constructor(router,
13
+ // private flashMessagesService: FlashMessagesService,
14
+ cs, globlEnv
15
+ // private spinnerService: Ng4LoadingSpinnerService
16
+ ) {
17
+ this.router = router;
18
+ this.cs = cs;
19
+ this.globlEnv = globlEnv;
20
+ this.cDate = new Date();
21
+ this.ds = Cookie.get('_ds');
22
+ this.uUsr = Cookie.get('_username');
23
+ this.company = "";
24
+ this.year = "";
25
+ this.userDetails = [];
26
+ this.historyLinkMap = {};
27
+ this.historyLink = [];
28
+ this.accMenuList = {};
29
+ this.flag = false;
30
+ this.keyList = [];
31
+ this.srchCnt = 0;
32
+ this.cnt = 0;
33
+ this.feedbackComment = '';
34
+ this.ispasswordChange = false;
35
+ this.rbi = "";
36
+ this.bank = "";
37
+ this.cutomimp = "";
38
+ this.cutomexp = "";
39
+ }
40
+ clickFilter(kc) {
41
+ if (kc.which == 13) {
42
+ // this.getSrchCount(this.qkSch);
43
+ this.packetLookupSrcCount(this.qkSch);
44
+ }
45
+ else {
46
+ }
47
+ }
48
+ backHome() {
49
+ window.location.href = this.globlEnv.origin + "#home";
50
+ }
51
+ routehome() {
52
+ const url = this.router.serializeUrl(this.router.createUrlTree(['home']));
53
+ window.open("/#" + url, 'Home');
54
+ }
55
+ packetLookupSrcCount(fglstr) {
56
+ this.srchCnt = this.srchCnt + 1;
57
+ let logDtl = JSON.parse(localStorage.getItem('resreqpara'));
58
+ if (fglstr == undefined || fglstr == '') {
59
+ // this.flashMessagesService.show('Please enter Search Parameter', { cssClass: 'alert-danger', timeout: 3000 });
60
+ return;
61
+ }
62
+ let r = this.cs.formateStr(fglstr);
63
+ localStorage.setItem('packetLookupStr', r);
64
+ if (this.cUrl == '/solitaires') {
65
+ this.router.navigate(['solitaires/packet-lookup/'], { queryParams: { schId: this.srchCnt } });
66
+ }
67
+ else {
68
+ const url = this.router.serializeUrl(this.router.createUrlTree(['solitaires/packet-lookup/'], { queryParams: { schId: this.srchCnt } }));
69
+ window.open("/solitaires/#" + url, 'Solitaires');
70
+ }
71
+ }
72
+ logout() {
73
+ let reqObj = {};
74
+ reqObj['formNme'] = 'Logout';
75
+ this.header['method'] = 'logOut';
76
+ // let options = new RequestOptions({ headers: this.header });
77
+ // let options = new HttpHeaders({ headers: this.header });
78
+ let options = { headers: this.header };
79
+ this.cs.logout(reqObj, options).then((response) => {
80
+ if (response.status == 'SUCCESS') {
81
+ let ds = Cookie.get('_ds');
82
+ Cookie.delete('_username');
83
+ Cookie.delete('_logtime');
84
+ Cookie.delete('_ck');
85
+ Cookie.delete('_logid');
86
+ Cookie.delete('_accCompany');
87
+ Cookie.delete('_accyear');
88
+ localStorage.removeItem('OTP');
89
+ localStorage.removeItem('clientKey');
90
+ localStorage.removeItem('logIdn');
91
+ localStorage.removeItem('mdlKey');
92
+ localStorage.removeItem('username');
93
+ localStorage.removeItem('selMd');
94
+ localStorage.setItem('chg', 'false');
95
+ localStorage.removeItem('transactionInfo');
96
+ Cookie.delete('_username', this.globlEnv.pathname, this.globlEnv.hostname);
97
+ Cookie.delete('_logtime', this.globlEnv.pathname, this.globlEnv.hostname);
98
+ Cookie.delete('_ck', this.globlEnv.pathname, this.globlEnv.hostname);
99
+ Cookie.delete('_logid', this.globlEnv.pathname, this.globlEnv.hostname);
100
+ Cookie.delete('_accCompany', this.globlEnv.pathname, this.globlEnv.hostname);
101
+ Cookie.delete('_accyear', this.globlEnv.pathname, this.globlEnv.hostname);
102
+ window.location.href = this.globlEnv.origin;
103
+ }
104
+ else {
105
+ // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });
106
+ }
107
+ }).catch((err) => {
108
+ // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });
109
+ });
110
+ }
111
+ menuList() {
112
+ let reqObj = {};
113
+ let moduleKeys = this.mdlk[this.cUrl.split('/')[1]];
114
+ if (Cookie.get('_logid') == null)
115
+ return;
116
+ let header = {
117
+ 'Content-Type': 'application/json',
118
+ 'clientkey': Cookie.get('_ck'),
119
+ 'loginid': Cookie.get('_logid'),
120
+ 'method': 'getMenuList',
121
+ 'modulekey': moduleKeys,
122
+ 'source': 'qs'
123
+ };
124
+ reqObj['moduleKeys'] = moduleKeys;
125
+ // let options = new RequestOptions({ headers: header });
126
+ // let options = new HttpHeaders({ headers: header });
127
+ let options = { headers: this.header };
128
+ console.log(reqObj);
129
+ this.cs.menuList(reqObj, options).then((response) => {
130
+ if (response.status == 'SUCCESS') {
131
+ console.log(reqObj);
132
+ let lochistoryMap = JSON.parse(localStorage.getItem('historyLink')) || {};
133
+ let lochistoryLink = lochistoryMap[moduleKeys] || [];
134
+ this.historyLinkMap = {};
135
+ this.historyLink = [];
136
+ let menuList = response.result;
137
+ let cnt = 0;
138
+ menuList.forEach(ele => {
139
+ cnt = cnt + ele.SubMenu.length + 1;
140
+ });
141
+ let div = cnt / 4;
142
+ div = Math.round(div);
143
+ if (div < 1) {
144
+ let newMenuList = [];
145
+ menuList.forEach(ele => {
146
+ ele["ishdr"] = "Y";
147
+ newMenuList.push(ele);
148
+ let extmenu_idn = ele.menu_idn;
149
+ if (lochistoryLink.indexOf(extmenu_idn) != -1) {
150
+ this.historyLink.push(extmenu_idn);
151
+ this.historyLinkMap[extmenu_idn] = ele;
152
+ }
153
+ ele.SubMenu.forEach(subele => {
154
+ newMenuList.push(subele);
155
+ extmenu_idn = subele.menu_idn;
156
+ if (lochistoryLink.indexOf(extmenu_idn) != -1) {
157
+ this.historyLink.push(extmenu_idn);
158
+ this.historyLinkMap[extmenu_idn] = subele;
159
+ }
160
+ });
161
+ });
162
+ this.accMenuList[1] = newMenuList;
163
+ }
164
+ else {
165
+ let key = 1;
166
+ let newMenuList = [];
167
+ let lsCnt = 0;
168
+ menuList.forEach(ele => {
169
+ lsCnt = lsCnt + ele.SubMenu.length + 1;
170
+ ele["ishdr"] = "Y";
171
+ newMenuList.push(ele);
172
+ let extmenu_idn = ele.menu_idn;
173
+ if (lochistoryLink.indexOf(extmenu_idn) != -1) {
174
+ this.historyLink.push(extmenu_idn);
175
+ this.historyLinkMap[extmenu_idn] = ele;
176
+ }
177
+ ele.SubMenu.forEach(subele => {
178
+ subele["ishdr"] = "N";
179
+ newMenuList.push(subele);
180
+ extmenu_idn = subele.menu_idn;
181
+ if (lochistoryLink.indexOf(extmenu_idn) != -1) {
182
+ this.historyLink.push(extmenu_idn);
183
+ this.historyLinkMap[extmenu_idn] = subele;
184
+ }
185
+ });
186
+ if (lsCnt >= div && newMenuList.length > 0) {
187
+ this.accMenuList[key] = newMenuList;
188
+ key = key + 1;
189
+ newMenuList = [];
190
+ lsCnt = 0;
191
+ }
192
+ });
193
+ if (lsCnt != 0)
194
+ this.accMenuList[key] = newMenuList;
195
+ }
196
+ this.keyList = Object.keys(this.accMenuList);
197
+ }
198
+ else {
199
+ // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });
200
+ }
201
+ }).catch((err) => {
202
+ // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });
203
+ });
204
+ }
205
+ logOutBox() {
206
+ var display = document.getElementById('mb-signout').style.display;
207
+ if (display == 'none' || display == '') {
208
+ document.getElementById('mb-signout').style.display = 'block';
209
+ }
210
+ else {
211
+ document.getElementById('mb-signout').style.display = 'none';
212
+ }
213
+ }
214
+ ChangePassword() {
215
+ let reqObj = {};
216
+ if (Cookie.get('_logid') == null)
217
+ return;
218
+ let header = {
219
+ 'clientkey': Cookie.get('_ck'),
220
+ 'Content-Type': 'application/json',
221
+ 'modulekey': this.mdlk[this.cUrl.split('/')[1]],
222
+ 'loginid': Cookie.get('_logid'),
223
+ 'source': 'qs'
224
+ };
225
+ // this.spinnerService.show();
226
+ reqObj["formNme"] = "applicationAccessMaster";
227
+ reqObj["username"] = this.uUsr;
228
+ header["method"] = "loadChangePass";
229
+ // let options = new RequestOptions({ headers: header });
230
+ // let options = new HttpHeaders({ headers: header });
231
+ let options = { headers: this.header };
232
+ this.cs.load(reqObj, options, 'contact/loadContact').then((response) => {
233
+ if (response.status == "SUCCESS") {
234
+ // this.spinnerService.hide();
235
+ let result = response.result;
236
+ this.userDetails = result.userDetails;
237
+ this.ispasswordChange = false;
238
+ document.getElementById('changePwdBtn').click();
239
+ }
240
+ else {
241
+ // this.spinnerService.hide();
242
+ // this.flashMessagesService.show(response.message, {
243
+ // cssClass: "alert-danger",
244
+ // timeout: 3000
245
+ // });
246
+ }
247
+ })
248
+ .catch((err) => {
249
+ // this.spinnerService.hide();
250
+ // this.flashMessagesService.show(err.message, {
251
+ // cssClass: "alert-danger",
252
+ // timeout: 3000
253
+ // });
254
+ });
255
+ }
256
+ passwordChange() {
257
+ this.ispasswordChange = true;
258
+ }
259
+ SavePassword() {
260
+ if (this.ispasswordChange) {
261
+ // this.spinnerService.show();
262
+ if (Cookie.get('_logid') == null)
263
+ return;
264
+ let header = {
265
+ 'clientkey': Cookie.get('_ck'),
266
+ 'Content-Type': 'application/json',
267
+ 'modulekey': this.mdlk[this.cUrl.split('/')[1]],
268
+ 'loginid': Cookie.get('_logid'),
269
+ 'source': 'qs'
270
+ };
271
+ debugger;
272
+ let usrDtl = this.userDetails[0];
273
+ let reqObj = {};
274
+ reqObj["formNme"] = "setPasswordForm";
275
+ reqObj["userIdn"] = usrDtl.userIdn;
276
+ reqObj["password"] = usrDtl.password;
277
+ header["method"] = "changePassword";
278
+ console.log(JSON.stringify(reqObj));
279
+ // let options = new RequestOptions({ headers: header });
280
+ // let options = new HttpHeaders({ headers: header });
281
+ let options = { headers: this.header };
282
+ this.cs.load(reqObj, options, 'contact/loadContact').then((response) => {
283
+ if (response.status == "SUCCESS") {
284
+ let result = response.result;
285
+ this.closebtn.nativeElement.click();
286
+ // this.spinnerService.hide();
287
+ this.ispasswordChange = false;
288
+ // this.flashMessagesService.show(response.message, {
289
+ // cssClass: "alert-success",
290
+ // timeout: 3000
291
+ // });
292
+ // this.spinnerService.hide();
293
+ }
294
+ else {
295
+ // this.spinnerService.hide();
296
+ // this.flashMessagesService.show(response.message, {
297
+ // cssClass: "alert-danger",
298
+ // timeout: 3000
299
+ // });
300
+ }
301
+ })
302
+ .catch((err) => {
303
+ // this.spinnerService.hide();
304
+ // this.flashMessagesService.show(err.message, {
305
+ // cssClass: "alert-danger",
306
+ // timeout: 3000
307
+ // });
308
+ });
309
+ }
310
+ else {
311
+ // this.flashMessagesService.show("Please specify new password", {
312
+ // cssClass: "alert-danger",
313
+ // timeout: 3000
314
+ // });
315
+ }
316
+ }
317
+ ShowMenu(typ, menudtl) {
318
+ var menudiv = document.getElementById('menuDiv').style.display;
319
+ if (menudiv == 'none')
320
+ document.getElementById('menuDiv').style.display = 'block';
321
+ else
322
+ document.getElementById('menuDiv').style.display = 'none';
323
+ if (typ == 'lnk') {
324
+ debugger;
325
+ let menu_idn = menudtl.menu_idn || '';
326
+ let modulkey = this.mdlk[this.cUrl.split('/')[1]];
327
+ let historyLinkmap = JSON.parse(localStorage.getItem('historyLink')) || {};
328
+ let moduleLink = historyLinkmap[modulkey] || [];
329
+ if (menu_idn != '') {
330
+ debugger;
331
+ if (moduleLink.indexOf(menu_idn) != -1) {
332
+ moduleLink.splice(moduleLink.indexOf(menu_idn), 1);
333
+ }
334
+ moduleLink.splice(0, 0, menu_idn);
335
+ if (moduleLink.length > 10) {
336
+ let numOfremove = moduleLink.length - 10;
337
+ moduleLink.splice(10, numOfremove);
338
+ }
339
+ historyLinkmap[modulkey] = moduleLink;
340
+ this.historyLink = moduleLink;
341
+ this.historyLinkMap[menu_idn] = menudtl;
342
+ localStorage.setItem('historyLink', JSON.stringify(historyLinkmap));
343
+ }
344
+ }
345
+ }
346
+ EditCompany() {
347
+ Cookie.delete('_accCompany', this.globlEnv.pathname, this.globlEnv.hostname);
348
+ Cookie.delete('_accyear', this.globlEnv.pathname, this.globlEnv.hostname);
349
+ this.router.navigate(['facompany']);
350
+ }
351
+ ngOnInit() {
352
+ this.mdlk = JSON.parse(localStorage.getItem('mdlKey'));
353
+ // this.cUrl = window.location.hash;
354
+ // this.cUrl=this.cUrl.replace("#",'');
355
+ // Getting the final url
356
+ // this.router.events
357
+ // .filter(e => e instanceof NavigationEnd)
358
+ // .subscribe((navEnd: NavigationEnd) => {
359
+ // this.cUrl = navEnd.urlAfterRedirects;
360
+ // this.menuList();
361
+ // // console.log(this.cUrl);
362
+ // });
363
+ // this.router.events.pipe(filter(e => e instanceof NavigationEnd))
364
+ // .subscribe((navEnd: NavigationEnd) => {
365
+ // this.cUrl = navEnd.urlAfterRedirects;
366
+ // this.menuList();
367
+ // // console.log(this.cUrl);
368
+ // });
369
+ if (this.cUrl == '')
370
+ this.cUrl = "/home";
371
+ this.header = {
372
+ 'clientkey': Cookie.get('_ck'),
373
+ 'Content-Type': 'application/json',
374
+ 'ds': localStorage.getItem('DS'),
375
+ 'appkey': 'O91YK*Dw$kE7dNpcVmGLvLxWMJ0C00eO',
376
+ 'modulekey': 'WHi6SRLY6#$82bzJf@4IUx9oHSLbn2qH',
377
+ 'loginid': Cookie.get('_logid'),
378
+ 'source': 'qs'
379
+ };
380
+ }
381
+ OpenOption() {
382
+ var isdisplay = document.getElementById('moreoption').style.display;
383
+ if (isdisplay == 'none') {
384
+ document.getElementById('moreoption').style.display = 'block';
385
+ }
386
+ else {
387
+ document.getElementById('moreoption').style.display = 'none';
388
+ }
389
+ }
390
+ }
391
+ EzHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: EzHeaderComponent, deps: [{ token: i1.Router }, { token: i2.CommanServiceService }, { token: i3.GlobleEnvService }], target: i0.ɵɵFactoryTarget.Component });
392
+ EzHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", 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: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.AppNoDblClickDirective, selector: "[appAppNoDblClick]" }], pipes: { "tableSearch": i7.TableSearchPipe } });
393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: EzHeaderComponent, decorators: [{
394
+ type: Component,
395
+ 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"] }]
396
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.CommanServiceService }, { type: i3.GlobleEnvService }]; }, propDecorators: { closebtn: [{
397
+ type: ViewChild,
398
+ args: ['closebtn']
399
+ }] } });
400
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6LWxpYi9zcmMvbGliL2V6aGVhZGVyL2hlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lei1saWIvc3JjL2xpYi9lemhlYWRlci9oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFlakQsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUNVLE1BQWM7SUFDdEIsc0RBQXNEO0lBQzlDLEVBQXdCLEVBQ3pCLFFBQTBCO0lBQ2pDLG1EQUFtRDs7UUFKM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVkLE9BQUUsR0FBRixFQUFFLENBQXNCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBS25DLFVBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLE9BQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLFNBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxFQUFFLENBQUE7UUFDWixTQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ1QsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFHakIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFRYixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osUUFBRyxHQUFHLENBQUMsQ0FB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Z0JBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzFCLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3JDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xDLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3BDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxZQUFZLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBRTNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNFLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFD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LElBQUksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQyxRQUFRLEVBQUUsa0NBQWtDO1lBQzVDLFdBQVcsRUFBRSxrQ0FBa0M7WUFDL0MsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQy9CLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztJQUdKLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3BFLElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRTtZQUN2QixRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1NBQy9EO2FBQU07WUFDTCxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1NBRTlEO0lBQ0gsQ0FBQzs7K0dBcGFVLGlCQUFpQjttR0FBakIsaUJBQWlCLDBKQ2hCOUIsc2tSQXVLbUc7NEZEdkp0RixpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzsrSkFhRCxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJ25nMi1jb29raWVzL25nMi1jb29raWVzJztcclxuLy8gaW1wb3J0IHsgRmxhc2hNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICdhbmd1bGFyMi1mbGFzaC1tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbi8vIGltcG9ydCB7IFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cCc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBHbG9ibGVFbnZTZXJ2aWNlIH0gZnJvbSAnLi4vZ2xvYmxlL2dsb2JsZS1lbnYuc2VydmljZSc7XHJcbi8vIGltcG9ydCB7IE5nNExvYWRpbmdTcGlubmVyU2VydmljZSB9IGZyb20gJ25nNC1sb2FkaW5nLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzLWNvbXBhdC9vcGVyYXRvci9maWx0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZXpoZWFkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEV6SGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgLy8gcHJpdmF0ZSBmbGFzaE1lc3NhZ2VzU2VydmljZTogRmxhc2hNZXNzYWdlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNzOiBDb21tYW5TZXJ2aWNlU2VydmljZSxcclxuICAgIHB1YmxpYyBnbG9ibEVudjogR2xvYmxlRW52U2VydmljZVxyXG4gICAgLy8gcHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmc0TG9hZGluZ1NwaW5uZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuICBAVmlld0NoaWxkKCdjbG9zZWJ0bicpIGNsb3NlYnRuOiBFbGVtZW50UmVmO1xyXG5cclxuICBjRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZHMgPSBDb29raWUuZ2V0KCdfZHMnKTtcclxuICB1VXNyID0gQ29va2llLmdldCgnX3VzZXJuYW1lJyk7XHJcbiAgY29tcGFueSA9IFwiXCJcclxuICB5ZWFyID0gXCJcIlxyXG4gIHVzZXJEZXRhaWxzID0gW107XHJcbiAgaGlzdG9yeUxpbmtNYXAgPSB7fTtcclxuICBoaXN0b3J5TGluayA9IFtdO1xyXG4gIGNVcmw7XHJcbiAgaGVhZGVyO1xyXG4gIGFjY01lbnVMaXN0ID0ge307XHJcbiAgZmxhZyA9IGZhbHNlO1xyXG4gIGtleUxpc3QgPSBbXTtcclxuICBzZWFyY2hGO1xyXG4gIHVuYW1lO1xyXG4gIHFrU2NoO1xyXG4gIHNjaElkO1xyXG4gIHN0dHNBO1xyXG4gIGNvdW50O1xyXG4gIG50U2NoOiBib29sZWFuO1xyXG4gIHNyY2hDbnQgPSAwO1xyXG4gIGNudCA9IDA7XHJcbiAgZmVlZGJhY2tDb21tZW50ID0gJyc7XHJcblxyXG5cclxuXHJcbiAgY2xpY2tGaWx0ZXIoa2MpIHtcclxuXHJcbiAgICBpZiAoa2Mud2hpY2ggPT0gMTMpIHtcclxuICAgICAgLy8gdGhpcy5nZXRTcmNoQ291bnQodGhpcy5xa1NjaCk7XHJcbiAgICAgIHRoaXMucGFja2V0TG9va3VwU3JjQ291bnQodGhpcy5xa1NjaCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYmFja0hvbWUoKSB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZ2xvYmxFbnYub3JpZ2luICsgXCIjaG9tZVwiO1xyXG4gIH1cclxuXHJcbiAgcm91dGVob21lKCkge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWydob21lJ10pKTtcclxuICAgIHdpbmRvdy5vcGVuKFwiLyNcIiArIHVybCwgJ0hvbWUnKTtcclxuICB9XHJcbiAgcGFja2V0TG9va3VwU3JjQ291bnQoZmdsc3RyKSB7XHJcbiAgICB0aGlzLnNyY2hDbnQgPSB0aGlzLnNyY2hDbnQgKyAxXHJcbiAgICBsZXQgbG9nRHRsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVzcmVxcGFyYScpKTtcclxuICAgIGlmIChmZ2xzdHIgPT0gdW5kZWZpbmVkIHx8IGZnbHN0ciA9PSAnJykge1xyXG4gICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coJ1BsZWFzZSBlbnRlciBTZWFyY2ggUGFyYW1ldGVyJywgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCByID0gdGhpcy5jcy5mb3JtYXRlU3RyKGZnbHN0cik7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncGFja2V0TG9va3VwU3RyJywgcik7XHJcblxyXG4gICAgaWYgKHRoaXMuY1VybCA9PSAnL3NvbGl0YWlyZXMnKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnc29saXRhaXJlcy9wYWNrZXQtbG9va3VwLyddLCB7IHF1ZXJ5UGFyYW1zOiB7IHNjaElkOiB0aGlzLnNyY2hDbnQgfSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnc29saXRhaXJlcy9wYWNrZXQtbG9va3VwLyddLCB7IHF1ZXJ5UGFyYW1zOiB7IHNjaElkOiB0aGlzLnNyY2hDbnQgfSB9KSk7XHJcbiAgICAgIHdpbmRvdy5vcGVuKFwiL3NvbGl0YWlyZXMvI1wiICsgdXJsLCAnU29saXRhaXJlcycpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdMb2dvdXQnXHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnbG9nT3V0JztcclxuICAgIC8vIGxldCBvcHRpb25zID0gbmV3IFJlcXVlc3RPcHRpb25zKHsgaGVhZGVyczogdGhpcy5oZWFkZXIgfSk7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBIdHRwSGVhZGVycyh7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH07XHJcbiAgICB0aGlzLmNzLmxvZ291dChyZXFPYmosIG9wdGlvbnMpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBsZXQgZHMgPSBDb29raWUuZ2V0KCdfZHMnKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfdXNlcm5hbWUnKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfbG9ndGltZScpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19jaycpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19sb2dpZCcpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19hY2NDb21wYW55Jyk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2FjY3llYXInKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnT1RQJyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NsaWVudEtleScpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsb2dJZG4nKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbWRsS2V5Jyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3VzZXJuYW1lJyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbE1kJyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NoZycsICdmYWxzZScpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0cmFuc2FjdGlvbkluZm8nKTtcclxuXHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX3VzZXJuYW1lJywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2xvZ3RpbWUnLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfY2snLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfbG9naWQnLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfYWNjQ29tcGFueScsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19hY2N5ZWFyJywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmdsb2JsRW52Lm9yaWdpbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coZXJyLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBtZW51TGlzdCgpIHtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIGxldCBtb2R1bGVLZXlzID0gdGhpcy5tZGxrW3RoaXMuY1VybC5zcGxpdCgnLycpWzFdXTtcclxuXHJcbiAgICBpZiAoQ29va2llLmdldCgnX2xvZ2lkJykgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgbGV0IGhlYWRlcjogYW55ID0ge1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdtZXRob2QnOiAnZ2V0TWVudUxpc3QnLFxyXG4gICAgICAnbW9kdWxla2V5JzogbW9kdWxlS2V5cyxcclxuICAgICAgJ3NvdXJjZSc6ICdxcydcclxuICAgIH1cclxuXHJcbiAgICByZXFPYmpbJ21vZHVsZUtleXMnXSA9IG1vZHVsZUtleXM7XHJcblxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnMoeyBoZWFkZXJzOiBoZWFkZXIgfSk7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBIdHRwSGVhZGVycyh7IGhlYWRlcnM6IGhlYWRlciB9KTtcclxuICAgIGxldCBvcHRpb25zID0geyBoZWFkZXJzOiB0aGlzLmhlYWRlciB9O1xyXG4gICAgY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgIHRoaXMuY3MubWVudUxpc3QocmVxT2JqLCBvcHRpb25zKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgICAgICBsZXQgbG9jaGlzdG9yeU1hcCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hpc3RvcnlMaW5rJykpIHx8IHt9O1xyXG4gICAgICAgIGxldCBsb2NoaXN0b3J5TGluayA9IGxvY2hpc3RvcnlNYXBbbW9kdWxlS2V5c10gfHwgW107XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5TGlua01hcCA9IHt9O1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeUxpbmsgPSBbXTtcclxuICAgICAgICBsZXQgbWVudUxpc3QgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgbGV0IGNudCA9IDBcclxuICAgICAgICBtZW51TGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcbiAgICAgICAgICBjbnQgPSBjbnQgKyBlbGUuU3ViTWVudS5sZW5ndGggKyAxO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxldCBkaXYgPSBjbnQgLyA0O1xyXG4gICAgICAgIGRpdiA9IE1hdGgucm91bmQoZGl2KTtcclxuICAgICAgICBpZiAoZGl2IDwgMSkge1xyXG4gICAgICAgICAgbGV0IG5ld01lbnVMaXN0ID0gW107XHJcbiAgICAgICAgICBtZW51TGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcbiAgICAgICAgICAgIGVsZVtcImlzaGRyXCJdID0gXCJZXCI7XHJcbiAgICAgICAgICAgIG5ld01lbnVMaXN0LnB1c2goZWxlKVxyXG4gICAgICAgICAgICBsZXQgZXh0bWVudV9pZG4gPSBlbGUubWVudV9pZG47XHJcbiAgICAgICAgICAgIGlmIChsb2NoaXN0b3J5TGluay5pbmRleE9mKGV4dG1lbnVfaWRuKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmsucHVzaChleHRtZW51X2lkbik7XHJcbiAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGlua01hcFtleHRtZW51X2lkbl0gPSBlbGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbGUuU3ViTWVudS5mb3JFYWNoKHN1YmVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgbmV3TWVudUxpc3QucHVzaChzdWJlbGUpXHJcbiAgICAgICAgICAgICAgZXh0bWVudV9pZG4gPSBzdWJlbGUubWVudV9pZG47XHJcblxyXG4gICAgICAgICAgICAgIGlmIChsb2NoaXN0b3J5TGluay5pbmRleE9mKGV4dG1lbnVfaWRuKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGluay5wdXNoKGV4dG1lbnVfaWRuKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmtNYXBbZXh0bWVudV9pZG5dID0gc3ViZWxlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmFjY01lbnVMaXN0WzFdID0gbmV3TWVudUxpc3Q7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBrZXkgPSAxO1xyXG4gICAgICAgICAgbGV0IG5ld01lbnVMaXN0ID0gW107XHJcbiAgICAgICAgICBsZXQgbHNDbnQgPSAwO1xyXG4gICAgICAgICAgbWVudUxpc3QuZm9yRWFjaChlbGUgPT4ge1xyXG4gICAgICAgICAgICBsc0NudCA9IGxzQ250ICsgZWxlLlN1Yk1lbnUubGVuZ3RoICsgMTtcclxuICAgICAgICAgICAgZWxlW1wiaXNoZHJcIl0gPSBcIllcIjtcclxuICAgICAgICAgICAgbmV3TWVudUxpc3QucHVzaChlbGUpXHJcbiAgICAgICAgICAgIGxldCBleHRtZW51X2lkbiA9IGVsZS5tZW51X2lkbjtcclxuICAgICAgICAgICAgaWYgKGxvY2hpc3RvcnlMaW5rLmluZGV4T2YoZXh0bWVudV9pZG4pICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGluay5wdXNoKGV4dG1lbnVfaWRuKTtcclxuICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwW2V4dG1lbnVfaWRuXSA9IGVsZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsZS5TdWJNZW51LmZvckVhY2goc3ViZWxlID0+IHtcclxuICAgICAgICAgICAgICBzdWJlbGVbXCJpc2hkclwiXSA9IFwiTlwiO1xyXG4gICAgICAgICAgICAgIG5ld01lbnVMaXN0LnB1c2goc3ViZWxlKVxyXG4gICAgICAgICAgICAgIGV4dG1lbnVfaWRuID0gc3ViZWxlLm1lbnVfaWRuO1xyXG5cclxuICAgICAgICAgICAgICBpZiAobG9jaGlzdG9yeUxpbmsuaW5kZXhPZihleHRtZW51X2lkbikgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmsucHVzaChleHRtZW51X2lkbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwW2V4dG1lbnVfaWRuXSA9IHN1YmVsZTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChsc0NudCA+PSBkaXYgJiYgbmV3TWVudUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWNjTWVudUxpc3Rba2V5XSA9IG5ld01lbnVMaXN0O1xyXG4gICAgICAgICAgICAgIGtleSA9IGtleSArIDE7XHJcbiAgICAgICAgICAgICAgbmV3TWVudUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICBsc0NudCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChsc0NudCAhPSAwKVxyXG4gICAgICAgICAgICB0aGlzLmFjY01lbnVMaXN0W2tleV0gPSBuZXdNZW51TGlzdDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB0aGlzLmtleUxpc3QgPSBPYmplY3Qua2V5cyh0aGlzLmFjY01lbnVMaXN0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coZXJyLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGxvZ091dEJveCgpIHtcclxuICAgIHZhciBkaXNwbGF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21iLXNpZ25vdXQnKS5zdHlsZS5kaXNwbGF5O1xyXG5cclxuICAgIGlmIChkaXNwbGF5ID09ICdub25lJyB8fCBkaXNwbGF5ID09ICcnKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYi1zaWdub3V0Jykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWItc2lnbm91dCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlzcGFzc3dvcmRDaGFuZ2UgPSBmYWxzZTtcclxuICBDaGFuZ2VQYXNzd29yZCgpIHtcclxuXHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICBpZiAoQ29va2llLmdldCgnX2xvZ2lkJykgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgbGV0IGhlYWRlcjogYW55ID0ge1xyXG4gICAgICAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdtb2R1bGVrZXknOiB0aGlzLm1kbGtbdGhpcy5jVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgICAnbG9naW5pZCc6IENvb2tpZS5nZXQoJ19sb2dpZCcpLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwiYXBwbGljYXRpb25BY2Nlc3NNYXN0ZXJcIjtcclxuICAgIHJlcU9ialtcInVzZXJuYW1lXCJdID0gdGhpcy51VXNyO1xyXG4gICAgaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkQ2hhbmdlUGFzc1wiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnMoeyBoZWFkZXJzOiBoZWFkZXIgfSk7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBIdHRwSGVhZGVycyh7IGhlYWRlcnM6IGhlYWRlciB9KTtcclxuICAgIGxldCBvcHRpb25zID0geyBoZWFkZXJzOiB0aGlzLmhlYWRlciB9O1xyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3QvbG9hZENvbnRhY3QnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHMgPSByZXN1bHQudXNlckRldGFpbHM7XHJcbiAgICAgICAgdGhpcy5pc3Bhc3N3b3JkQ2hhbmdlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuZ2VQd2RCdG4nKS5jbGljaygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7XHJcbiAgICAgICAgLy8gICBjc3NDbGFzczogXCJhbGVydC1kYW5nZXJcIixcclxuICAgICAgICAvLyAgIHRpbWVvdXQ6IDMwMDBcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnIubWVzc2FnZSwge1xyXG4gICAgICAgIC8vICAgY3NzQ2xhc3M6IFwiYWxlcnQtZGFuZ2VyXCIsXHJcbiAgICAgICAgLy8gICB0aW1lb3V0OiAzMDAwXHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICB9XHJcbiAgcGFzc3dvcmRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmlzcGFzc3dvcmRDaGFuZ2UgPSB0cnVlO1xyXG5cclxuICB9XHJcbiAgU2F2ZVBhc3N3b3JkKCkge1xyXG4gICAgaWYgKHRoaXMuaXNwYXNzd29yZENoYW5nZSkge1xyXG4gICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgICAgaWYgKENvb2tpZS5nZXQoJ19sb2dpZCcpID09IG51bGwpIHJldHVybjtcclxuICAgICAgbGV0IGhlYWRlcjogYW55ID0ge1xyXG4gICAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICdtb2R1bGVrZXknOiB0aGlzLm1kbGtbdGhpcy5jVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICAgJ3NvdXJjZSc6ICdxcydcclxuICAgICAgfVxyXG4gICAgICBkZWJ1Z2dlclxyXG4gICAgICBsZXQgdXNyRHRsID0gdGhpcy51c2VyRGV0YWlsc1swXTtcclxuICAgICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJzZXRQYXNzd29yZEZvcm1cIjtcclxuICAgICAgcmVxT2JqW1widXNlcklkblwiXSA9IHVzckR0bC51c2VySWRuO1xyXG4gICAgICByZXFPYmpbXCJwYXNzd29yZFwiXSA9IHVzckR0bC5wYXNzd29yZDtcclxuICAgICAgaGVhZGVyW1wibWV0aG9kXCJdID0gXCJjaGFuZ2VQYXNzd29yZFwiO1xyXG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgICAgLy8gbGV0IG9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnMoeyBoZWFkZXJzOiBoZWFkZXIgfSk7XHJcbiAgICAgIC8vIGxldCBvcHRpb25zID0gbmV3IEh0dHBIZWFkZXJzKHsgaGVhZGVyczogaGVhZGVyIH0pO1xyXG4gICAgICBsZXQgb3B0aW9ucyA9IHsgaGVhZGVyczogdGhpcy5oZWFkZXIgfTtcclxuICAgICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3QvbG9hZENvbnRhY3QnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuY2xvc2VidG4ubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLmlzcGFzc3dvcmRDaGFuZ2UgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7XHJcbiAgICAgICAgICAvLyAgIGNzc0NsYXNzOiBcImFsZXJ0LXN1Y2Nlc3NcIixcclxuICAgICAgICAgIC8vICAgdGltZW91dDogMzAwMFxyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwge1xyXG4gICAgICAgICAgLy8gICBjc3NDbGFzczogXCJhbGVydC1kYW5nZXJcIixcclxuICAgICAgICAgIC8vICAgdGltZW91dDogMzAwMFxyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KGVyci5tZXNzYWdlLCB7XHJcbiAgICAgICAgICAvLyAgIGNzc0NsYXNzOiBcImFsZXJ0LWRhbmdlclwiLFxyXG4gICAgICAgICAgLy8gICB0aW1lb3V0OiAzMDAwXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KFwiUGxlYXNlIHNwZWNpZnkgbmV3IHBhc3N3b3JkXCIsIHtcclxuICAgICAgLy8gICBjc3NDbGFzczogXCJhbGVydC1kYW5nZXJcIixcclxuICAgICAgLy8gICB0aW1lb3V0OiAzMDAwXHJcbiAgICAgIC8vIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBTaG93TWVudSh0eXAsIG1lbnVkdGwpIHtcclxuICAgIHZhciBtZW51ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lbnVEaXYnKS5zdHlsZS5kaXNwbGF5O1xyXG4gICAgaWYgKG1lbnVkaXYgPT0gJ25vbmUnKVxyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVudURpdicpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgZWxzZVxyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVudURpdicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBpZiAodHlwID09ICdsbmsnKSB7XHJcbiAgICAgIGRlYnVnZ2VyXHJcbiAgICAgIGxldCBtZW51X2lkbiA9IG1lbnVkdGwubWVudV9pZG4gfHwgJyc7XHJcbiAgICAgIGxldCBtb2R1bGtleSA9IHRoaXMubWRsa1t0aGlzLmNVcmwuc3BsaXQoJy8nKVsxXV1cclxuICAgICAgbGV0IGhpc3RvcnlMaW5rbWFwID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaGlzdG9yeUxpbmsnKSkgfHwge307XHJcbiAgICAgIGxldCBtb2R1bGVMaW5rID0gaGlzdG9yeUxpbmttYXBbbW9kdWxrZXldIHx8IFtdO1xyXG4gICAgICBpZiAobWVudV9pZG4gIT0gJycpIHtcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIGlmIChtb2R1bGVMaW5rLmluZGV4T2YobWVudV9pZG4pICE9IC0xKSB7XHJcbiAgICAgICAgICBtb2R1bGVMaW5rLnNwbGljZShtb2R1bGVMaW5rLmluZGV4T2YobWVudV9pZG4pLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbW9kdWxlTGluay5zcGxpY2UoMCwgMCwgbWVudV9pZG4pO1xyXG4gICAgICAgIGlmIChtb2R1bGVMaW5rLmxlbmd0aCA+IDEwKSB7XHJcbiAgICAgICAgICBsZXQgbnVtT2ZyZW1vdmUgPSBtb2R1bGVMaW5rLmxlbmd0aCAtIDEwO1xyXG4gICAgICAgICAgbW9kdWxlTGluay5zcGxpY2UoMTAsIG51bU9mcmVtb3ZlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaGlzdG9yeUxpbmttYXBbbW9kdWxrZXldID0gbW9kdWxlTGluaztcclxuICAgICAgICB0aGlzLmhpc3RvcnlMaW5rID0gbW9kdWxlTGluaztcclxuICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwW21lbnVfaWRuXSA9IG1lbnVkdGw7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hpc3RvcnlMaW5rJywgSlNPTi5zdHJpbmdpZnkoaGlzdG9yeUxpbmttYXApKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBFZGl0Q29tcGFueSgpIHtcclxuICAgIENvb2tpZS5kZWxldGUoJ19hY2NDb21wYW55JywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICBDb29raWUuZGVsZXRlKCdfYWNjeWVhcicsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydmYWNvbXBhbnknXSk7XHJcbiAgfVxyXG4gIHJiaSA9IFwiXCI7XHJcbiAgYmFuayA9IFwiXCI7XHJcbiAgY3V0b21pbXAgPSBcIlwiO1xyXG4gIGN1dG9tZXhwID0gXCJcIjtcclxuICBtZGxrXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5tZGxrID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWRsS2V5JykpO1xyXG4gICAgLy8gIHRoaXMuY1VybCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xyXG4gICAgLy8gIHRoaXMuY1VybD10aGlzLmNVcmwucmVwbGFjZShcIiNcIiwnJyk7XHJcblxyXG4gICAgLy8gR2V0dGluZyB0aGUgZmluYWwgdXJsXHJcbiAgICAvLyB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgIC8vICAgLmZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG4gICAgLy8gICAuc3Vic2NyaWJlKChuYXZFbmQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgIC8vICAgICB0aGlzLmNVcmwgPSBuYXZFbmQudXJsQWZ0ZXJSZWRpcmVjdHM7XHJcbiAgICAvLyAgICAgdGhpcy5tZW51TGlzdCgpO1xyXG4gICAgLy8gICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY1VybCk7XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy8gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgLy8gLnN1YnNjcmliZSgobmF2RW5kOiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY1VybCA9IG5hdkVuZC51cmxBZnRlclJlZGlyZWN0cztcclxuICAgIC8vICAgdGhpcy5tZW51TGlzdCgpO1xyXG4gICAgLy8gICAvLyBjb25zb2xlLmxvZyh0aGlzLmNVcmwpO1xyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY1VybCA9PSAnJylcclxuICAgICAgdGhpcy5jVXJsID0gXCIvaG9tZVwiO1xyXG4gICAgdGhpcy5oZWFkZXIgPSB7XHJcbiAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ2RzJzogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0RTJyksXHJcbiAgICAgICdhcHBrZXknOiAnTzkxWUsqRHcka0U3ZE5wY1ZtR0x2THhXTUowQzAwZU8nLFxyXG4gICAgICAnbW9kdWxla2V5JzogJ1dIaTZTUkxZNiMkODJiekpmQDRJVXg5b0hTTGJuMnFIJywvLyBtZGxrW2NVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBPcGVuT3B0aW9uKCkge1xyXG4gICAgdmFyIGlzZGlzcGxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb3Jlb3B0aW9uJykuc3R5bGUuZGlzcGxheTtcclxuICAgIGlmIChpc2Rpc3BsYXkgPT0gJ25vbmUnKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb3Jlb3B0aW9uJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9yZW9wdGlvbicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjx1bCBjbGFzcz1cIngtbmF2aWdhdGlvbiB4LW5hdmlnYXRpb24taG9yaXpvbnRhbCB4LW5hdmlnYXRpb24tcGFuZWxcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDBweDt6LWluZGV4OiAxMDAwXCI+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==