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.
- package/README.md +24 -0
- package/esm2020/ezlibrary_v2.mjs +5 -0
- package/esm2020/lib/admin-service/admin-service.service.mjs +34 -0
- package/esm2020/lib/analysis-search/analysis-search.component.mjs +1077 -0
- package/esm2020/lib/assort-service/assort-service.service.mjs +28 -0
- package/esm2020/lib/attribute-definition/attribute-definition.component.mjs +225 -0
- package/esm2020/lib/auth/auth.guard.mjs +37 -0
- package/esm2020/lib/bi-service/bi.service.mjs +57 -0
- package/esm2020/lib/call-info/callinfo.component.mjs +125 -0
- package/esm2020/lib/comman-service/comman-service.service.mjs +678 -0
- package/esm2020/lib/comman-service/share-data-service.service.mjs +23 -0
- package/esm2020/lib/contact-search/contact-search.component.mjs +690 -0
- package/esm2020/lib/contact-service/contact-service.service.mjs +45 -0
- package/esm2020/lib/ez-lib.component.mjs +26 -0
- package/esm2020/lib/ez-lib.module.mjs +232 -0
- package/esm2020/lib/ez-lib.service.mjs +14 -0
- package/esm2020/lib/ezheader/header.component.mjs +400 -0
- package/esm2020/lib/file-upload/fileupload.component.mjs +918 -0
- package/esm2020/lib/file-upload-log/file-upload-log.component.mjs +169 -0
- package/esm2020/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.mjs +14 -0
- package/esm2020/lib/fileupload-module/fileupload-routing.module.mjs +28 -0
- package/esm2020/lib/fileupload-module/fileupload.module.mjs +80 -0
- package/esm2020/lib/footer/footer.component.mjs +18 -0
- package/esm2020/lib/globle/common-pdf.service.mjs +28 -0
- package/esm2020/lib/globle/globle-env.service.mjs +45 -0
- package/esm2020/lib/globle/memo-report.service.mjs +2798 -0
- package/esm2020/lib/globle/shared-services.service.mjs +25 -0
- package/esm2020/lib/globle/upload-service.service.mjs +63 -0
- package/esm2020/lib/header/header.component.mjs +172 -0
- package/esm2020/lib/invalid/invalid.component.mjs +70 -0
- package/esm2020/lib/logout/logout.component.mjs +104 -0
- package/esm2020/lib/menu-right/menu-right.component.mjs +258 -0
- package/esm2020/lib/pipes/number-with-commas.pipe.mjs +24 -0
- package/esm2020/lib/pipes/order-by-pipe.pipe.mjs +17 -0
- package/esm2020/lib/pipes/selectedCount.mjs +19 -0
- package/esm2020/lib/pipes/sum.pipe.mjs +17 -0
- package/esm2020/lib/pkt-data/pkt-data.component.mjs +1109 -0
- package/esm2020/lib/pricing-service/pricing.service.mjs +64 -0
- package/esm2020/lib/qa-analysis/qa-analysis.component.mjs +1028 -0
- package/esm2020/lib/report-format/report-format.component.mjs +403 -0
- package/esm2020/lib/sessionend/session-end.guard.mjs +27 -0
- package/esm2020/lib/stock-service/lazyload.service.mjs +21 -0
- package/esm2020/lib/stock-service/stock-service.service.mjs +58 -0
- package/esm2020/lib/system-module/subform/subform.component.mjs +2817 -0
- package/esm2020/lib/system-module/system/system.component.mjs +970 -0
- package/esm2020/lib/system-module/system-service/system-service.service.mjs +83 -0
- package/esm2020/lib/system-module/system-service/upload-file.service.mjs +83 -0
- package/esm2020/lib/utility/app-no-dbl-click.directive.mjs +24 -0
- package/esm2020/lib/utility/constants.mjs +5 -0
- package/esm2020/lib/utility/contact-table-search.pipe.mjs +25 -0
- package/esm2020/lib/utility/formate-num-field.pipe.mjs +19 -0
- package/esm2020/lib/utility/search-pipe.pipe.mjs +26 -0
- package/esm2020/lib/utility/selective-preloading-strategy.mjs +23 -0
- package/esm2020/lib/utility/table-search.pipe.mjs +25 -0
- package/esm2020/lib/utility/tranform.directive.mjs +27 -0
- package/esm2020/lib/websearch-history/websearch-history.component.mjs +273 -0
- package/esm2020/public-api.mjs +59 -0
- package/ezlibrary_v2.d.ts +5 -0
- package/fesm2015/ezlibrary_v2.mjs +15300 -0
- package/fesm2015/ezlibrary_v2.mjs.map +1 -0
- package/fesm2020/ezlibrary_v2.mjs +15291 -0
- package/fesm2020/ezlibrary_v2.mjs.map +1 -0
- package/lib/admin-service/admin-service.service.d.ts +13 -0
- package/lib/analysis-search/analysis-search.component.d.ts +118 -0
- package/lib/assort-service/assort-service.service.d.ts +12 -0
- package/lib/attribute-definition/attribute-definition.component.d.ts +43 -0
- package/lib/auth/auth.guard.d.ts +14 -0
- package/lib/bi-service/bi.service.d.ts +16 -0
- package/lib/call-info/callinfo.component.d.ts +26 -0
- package/lib/comman-service/comman-service.service.d.ts +106 -0
- package/lib/comman-service/share-data-service.service.d.ts +10 -0
- package/lib/contact-search/contact-search.component.d.ts +111 -0
- package/lib/contact-service/contact-service.service.d.ts +15 -0
- package/lib/ez-lib.component.d.ts +8 -0
- package/lib/ez-lib.module.d.ts +43 -0
- package/lib/ez-lib.service.d.ts +6 -0
- package/lib/ezheader/header.component.d.ts +57 -0
- package/lib/file-upload/fileupload.component.d.ts +127 -0
- package/lib/file-upload-log/file-upload-log.component.d.ts +49 -0
- package/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.d.ts +8 -0
- package/lib/fileupload-module/fileupload-routing.module.d.ts +7 -0
- package/lib/fileupload-module/fileupload.module.d.ts +15 -0
- package/lib/footer/footer.component.d.ts +9 -0
- package/lib/globle/common-pdf.service.d.ts +9 -0
- package/lib/globle/globle-env.service.d.ts +16 -0
- package/lib/globle/memo-report.service.d.ts +107 -0
- package/lib/globle/shared-services.service.d.ts +12 -0
- package/lib/globle/upload-service.service.d.ts +16 -0
- package/lib/header/header.component.d.ts +41 -0
- package/lib/invalid/invalid.component.d.ts +12 -0
- package/lib/logout/logout.component.d.ts +19 -0
- package/lib/menu-right/menu-right.component.d.ts +43 -0
- package/lib/pipes/number-with-commas.pipe.d.ts +7 -0
- package/lib/pipes/order-by-pipe.pipe.d.ts +7 -0
- package/lib/pipes/selectedCount.d.ts +7 -0
- package/lib/pipes/sum.pipe.d.ts +7 -0
- package/lib/pkt-data/pkt-data.component.d.ts +184 -0
- package/lib/pricing-service/pricing.service.d.ts +16 -0
- package/lib/qa-analysis/qa-analysis.component.d.ts +95 -0
- package/lib/report-format/report-format.component.d.ts +74 -0
- package/lib/sessionend/session-end.guard.d.ts +10 -0
- package/lib/stock-service/lazyload.service.d.ts +7 -0
- package/lib/stock-service/stock-service.service.d.ts +15 -0
- package/lib/system-module/subform/subform.component.d.ts +222 -0
- package/lib/system-module/system/system.component.d.ts +109 -0
- package/lib/system-module/system-service/system-service.service.d.ts +23 -0
- package/lib/system-module/system-service/upload-file.service.d.ts +12 -0
- package/lib/utility/app-no-dbl-click.directive.d.ts +7 -0
- package/lib/utility/constants.d.ts +4 -0
- package/lib/utility/contact-table-search.pipe.d.ts +7 -0
- package/lib/utility/formate-num-field.pipe.d.ts +7 -0
- package/lib/utility/search-pipe.pipe.d.ts +7 -0
- package/lib/utility/selective-preloading-strategy.d.ts +9 -0
- package/lib/utility/table-search.pipe.d.ts +7 -0
- package/lib/utility/tranform.directive.d.ts +10 -0
- package/lib/websearch-history/websearch-history.component.d.ts +56 -0
- package/package.json +31 -0
- 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 \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\">×</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 \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\">×</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==
|