@csmart/ngc-smart-victim 0.1.6 → 1.13.1
Sign up to get free protection for your applications and to get access to all the features.
- package/csmart-ngc-smart-victim.d.ts +1 -15
- package/esm2020/csmart-ngc-smart-victim.mjs +5 -0
- package/esm2020/lib/caseNote/caseNote.component.mjs +185 -0
- package/esm2020/lib/common-dialog/common-dialog.component.mjs +23 -0
- package/esm2020/lib/common-dialog/common-dialog.module.mjs +38 -0
- package/esm2020/lib/common-dialog/common-dialog.service.mjs +33 -0
- package/esm2020/lib/contact/contact.component.mjs +140 -0
- package/esm2020/lib/intake.service.mjs +57 -0
- package/esm2020/lib/safetyPlan/serviceProvider.component.mjs +115 -0
- package/esm2020/lib/safetyPlan/victimSafetyPlan.component.mjs +116 -0
- package/esm2020/lib/safetyPlan/victimSafetyPlanDetail.component.mjs +340 -0
- package/esm2020/lib/shared/app.shared.module.mjs +213 -0
- package/esm2020/lib/shared/directives/phone-mask.directive.mjs +114 -0
- package/esm2020/lib/shared/validators/date.validator.mjs +59 -0
- package/esm2020/lib/shared/validators/index.mjs +2 -0
- package/esm2020/lib/smart-victim-delete-confirm.component.mjs +53 -0
- package/esm2020/lib/smart-victim-detail/smart-victim-detail.component.mjs +961 -0
- package/esm2020/lib/smart-victim.component.mjs +310 -0
- package/esm2020/lib/smart-victim.model.mjs +133 -0
- package/esm2020/lib/smart-victim.module.mjs +138 -0
- package/esm2020/lib/smart-victim.service.mjs +347 -0
- package/esm2020/lib/victim-routing.module.mjs +42 -0
- package/esm2020/lib/victimSearch/VictimSearchFilter.mjs +3 -0
- package/esm2020/lib/victimSearch/victimSearchForm.component.mjs +38 -0
- package/esm2020/public-api.mjs +12 -0
- package/fesm2015/csmart-ngc-smart-victim.mjs +3225 -0
- package/fesm2015/csmart-ngc-smart-victim.mjs.map +1 -0
- package/fesm2020/csmart-ngc-smart-victim.mjs +3214 -0
- package/fesm2020/csmart-ngc-smart-victim.mjs.map +1 -0
- package/lib/caseNote/caseNote.component.d.ts +6 -2
- package/lib/common-dialog/common-dialog.component.d.ts +4 -1
- package/lib/common-dialog/common-dialog.module.d.ts +6 -0
- package/lib/common-dialog/common-dialog.service.d.ts +4 -1
- package/lib/contact/contact.component.d.ts +4 -1
- package/lib/intake.service.d.ts +3 -0
- package/lib/safetyPlan/serviceProvider.component.d.ts +4 -1
- package/lib/safetyPlan/victimSafetyPlan.component.d.ts +7 -2
- package/lib/safetyPlan/victimSafetyPlanDetail.component.d.ts +7 -2
- package/lib/shared/app.shared.module.d.ts +30 -0
- package/lib/shared/directives/phone-mask.directive.d.ts +5 -2
- package/lib/smart-victim-delete-confirm.component.d.ts +3 -0
- package/lib/smart-victim-detail/smart-victim-detail.component.d.ts +9 -4
- package/lib/smart-victim.component.d.ts +8 -3
- package/lib/smart-victim.model.d.ts +2 -1
- package/lib/smart-victim.module.d.ts +47 -0
- package/lib/smart-victim.service.d.ts +3 -0
- package/lib/victim-routing.module.d.ts +5 -0
- package/lib/victimSearch/victimSearchForm.component.d.ts +3 -0
- package/package.json +28 -18
- package/public-api.d.ts +4 -0
- package/bundles/csmart-ngc-smart-victim.umd.js +0 -6430
- package/bundles/csmart-ngc-smart-victim.umd.js.map +0 -1
- package/bundles/csmart-ngc-smart-victim.umd.min.js +0 -16
- package/bundles/csmart-ngc-smart-victim.umd.min.js.map +0 -1
- package/csmart-ngc-smart-victim.metadata.json +0 -1
- package/esm2015/csmart-ngc-smart-victim.js +0 -25
- package/esm2015/lib/caseNote/caseNote.component.js +0 -349
- package/esm2015/lib/common-dialog/common-dialog.component.js +0 -46
- package/esm2015/lib/common-dialog/common-dialog.module.js +0 -32
- package/esm2015/lib/common-dialog/common-dialog.service.js +0 -63
- package/esm2015/lib/contact/contact.component.js +0 -232
- package/esm2015/lib/intake.service.js +0 -183
- package/esm2015/lib/safetyPlan/serviceProvider.component.js +0 -130
- package/esm2015/lib/safetyPlan/victimSafetyPlan.component.js +0 -257
- package/esm2015/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -556
- package/esm2015/lib/shared/app.shared.module.js +0 -81
- package/esm2015/lib/shared/directives/phone-mask.directive.js +0 -168
- package/esm2015/lib/shared/validators/date.validator.js +0 -108
- package/esm2015/lib/shared/validators/index.js +0 -7
- package/esm2015/lib/smart-victim-delete-confirm.component.js +0 -61
- package/esm2015/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1406
- package/esm2015/lib/smart-victim.component.js +0 -476
- package/esm2015/lib/smart-victim.model.js +0 -631
- package/esm2015/lib/smart-victim.module.js +0 -84
- package/esm2015/lib/smart-victim.service.js +0 -792
- package/esm2015/lib/victim-routing.module.js +0 -40
- package/esm2015/lib/victimSearch/VictimSearchFilter.js +0 -20
- package/esm2015/lib/victimSearch/victimSearchForm.component.js +0 -59
- package/esm2015/public-api.js +0 -13
- package/esm5/csmart-ngc-smart-victim.js +0 -25
- package/esm5/lib/caseNote/caseNote.component.js +0 -372
- package/esm5/lib/common-dialog/common-dialog.component.js +0 -48
- package/esm5/lib/common-dialog/common-dialog.module.js +0 -36
- package/esm5/lib/common-dialog/common-dialog.service.js +0 -75
- package/esm5/lib/contact/contact.component.js +0 -285
- package/esm5/lib/intake.service.js +0 -194
- package/esm5/lib/safetyPlan/serviceProvider.component.js +0 -99
- package/esm5/lib/safetyPlan/victimSafetyPlan.component.js +0 -306
- package/esm5/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -628
- package/esm5/lib/shared/app.shared.module.js +0 -85
- package/esm5/lib/shared/directives/phone-mask.directive.js +0 -184
- package/esm5/lib/shared/validators/date.validator.js +0 -108
- package/esm5/lib/shared/validators/index.js +0 -7
- package/esm5/lib/smart-victim-delete-confirm.component.js +0 -51
- package/esm5/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1498
- package/esm5/lib/smart-victim.component.js +0 -528
- package/esm5/lib/smart-victim.model.js +0 -541
- package/esm5/lib/smart-victim.module.js +0 -84
- package/esm5/lib/smart-victim.service.js +0 -1063
- package/esm5/lib/victim-routing.module.js +0 -44
- package/esm5/lib/victimSearch/VictimSearchFilter.js +0 -24
- package/esm5/lib/victimSearch/victimSearchForm.component.js +0 -70
- package/esm5/public-api.js +0 -13
- package/fesm2015/csmart-ngc-smart-victim.js +0 -5686
- package/fesm2015/csmart-ngc-smart-victim.js.map +0 -1
- package/fesm5/csmart-ngc-smart-victim.js +0 -6207
- package/fesm5/csmart-ngc-smart-victim.js.map +0 -1
@@ -1,792 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview added by tsickle
|
3
|
-
* Generated from: lib/smart-victim.service.ts
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
5
|
-
*/
|
6
|
-
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
7
|
-
import { Injectable, Inject } from '@angular/core';
|
8
|
-
import { SMART_LOOKUP_SERVICE_URL, SMART_OFFENDER_SERVICE_URL, SMART_VICTIM_SERVICE_URL } from './smart-victim.model';
|
9
|
-
import { throwError as observableThrowError } from 'rxjs';
|
10
|
-
import { map, catchError } from 'rxjs/operators';
|
11
|
-
import { Apollo } from 'apollo-angular';
|
12
|
-
import * as i0 from "@angular/core";
|
13
|
-
import * as i1 from "@angular/common/http";
|
14
|
-
import * as i2 from "./smart-victim.model";
|
15
|
-
import * as i3 from "apollo-angular";
|
16
|
-
/** @type {?} */
|
17
|
-
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
|
18
|
-
/** @type {?} */
|
19
|
-
const options = { headers: headers };
|
20
|
-
export class NgcSmartVictimService {
|
21
|
-
/**
|
22
|
-
* @param {?} http
|
23
|
-
* @param {?} smartOffenderServiceUrl
|
24
|
-
* @param {?} smartLookupServiceUrl
|
25
|
-
* @param {?} smartVictimServiceUrl
|
26
|
-
* @param {?} apollo
|
27
|
-
*/
|
28
|
-
constructor(http, smartOffenderServiceUrl, smartLookupServiceUrl, smartVictimServiceUrl, apollo) {
|
29
|
-
this.http = http;
|
30
|
-
this.smartOffenderServiceUrl = smartOffenderServiceUrl;
|
31
|
-
this.smartLookupServiceUrl = smartLookupServiceUrl;
|
32
|
-
this.smartVictimServiceUrl = smartVictimServiceUrl;
|
33
|
-
this.apollo = apollo;
|
34
|
-
this.serviceApiUrl = 'https://smart-service-test.azurewebsites.net/graphql';
|
35
|
-
}
|
36
|
-
// getVictimInsurances(offenderId: any) {
|
37
|
-
// return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?offenderId=' + offenderId).pipe();
|
38
|
-
// }
|
39
|
-
// getVictimInsurance(id: any) {
|
40
|
-
// return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
|
41
|
-
// }
|
42
|
-
// postVictimInsurance(val: any) {
|
43
|
-
// return this.http.post(this.smartOffenderServiceUrl + '/VictimInsurances', val).pipe();
|
44
|
-
// }
|
45
|
-
// putVictimInsurance(id: any, val: any) {
|
46
|
-
// return this.http.put(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id, val).pipe();
|
47
|
-
// }
|
48
|
-
// deleteVictimInsurance(id: any) {
|
49
|
-
// return this.http.delete(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
|
50
|
-
// }
|
51
|
-
// getVictimInsuranceTypes() {
|
52
|
-
// return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceTypes').pipe();
|
53
|
-
// }
|
54
|
-
// getVictimInsurancePolicyHolders() {
|
55
|
-
// return this.http.get(this.smartLookupServiceUrl + '/VictimInsurancePolicyHolders').pipe();
|
56
|
-
// }
|
57
|
-
// getVictimInsuranceSwitchReasons() {
|
58
|
-
// return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceSwitchReasons').pipe();
|
59
|
-
// }
|
60
|
-
// getVictimInsuranceProviders() {
|
61
|
-
// return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProvider').pipe();
|
62
|
-
// }
|
63
|
-
// getVictimInsuranceProvider(id) {
|
64
|
-
// return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProviders/' + id).pipe();
|
65
|
-
// }
|
66
|
-
// postProviderInformation(val: any) {
|
67
|
-
// return this.http.post(this.smartLookupServiceUrl + '/VictimInsuranceProviders', val).pipe();
|
68
|
-
// }
|
69
|
-
/**
|
70
|
-
* @private
|
71
|
-
* @param {?} error
|
72
|
-
* @return {?}
|
73
|
-
*/
|
74
|
-
handleError(error) {
|
75
|
-
console.error(error);
|
76
|
-
return observableThrowError(error.json().error || 'Server error');
|
77
|
-
}
|
78
|
-
/**
|
79
|
-
* @return {?}
|
80
|
-
*/
|
81
|
-
getDrugsTypes() {
|
82
|
-
return this.http.get(this.smartLookupServiceUrl + 'DrugTypes', options).pipe(map((/**
|
83
|
-
* @param {?} res
|
84
|
-
* @return {?}
|
85
|
-
*/
|
86
|
-
res => res)));
|
87
|
-
}
|
88
|
-
/**
|
89
|
-
* @param {?} offenderId
|
90
|
-
* @return {?}
|
91
|
-
*/
|
92
|
-
getDocketList(offenderId) {
|
93
|
-
/** @type {?} */
|
94
|
-
const queryString = `
|
95
|
-
{
|
96
|
-
findDockets(input: { where: { offenderId:${offenderId} } }) {
|
97
|
-
totalCount
|
98
|
-
message
|
99
|
-
data {
|
100
|
-
docketId
|
101
|
-
docketNumber
|
102
|
-
|
103
|
-
}
|
104
|
-
}
|
105
|
-
}`;
|
106
|
-
return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map((/**
|
107
|
-
* @param {?} __0
|
108
|
-
* @return {?}
|
109
|
-
*/
|
110
|
-
({ data }) => {
|
111
|
-
console.log('dockets for this offender:', data.findDockets.data);
|
112
|
-
return data.findDockets.data;
|
113
|
-
})));
|
114
|
-
}
|
115
|
-
/**
|
116
|
-
* @return {?}
|
117
|
-
*/
|
118
|
-
getSupportTypes() {
|
119
|
-
return this.http.get(this.smartLookupServiceUrl + 'VictimSupportTypes', options).pipe(map((/**
|
120
|
-
* @param {?} res
|
121
|
-
* @return {?}
|
122
|
-
*/
|
123
|
-
res => res)));
|
124
|
-
}
|
125
|
-
/**
|
126
|
-
* @return {?}
|
127
|
-
*/
|
128
|
-
getPrefixes() {
|
129
|
-
return this.http.get(this.smartLookupServiceUrl + 'Prefixes', options).pipe(map((/**
|
130
|
-
* @param {?} res
|
131
|
-
* @return {?}
|
132
|
-
*/
|
133
|
-
res => res)));
|
134
|
-
}
|
135
|
-
/**
|
136
|
-
* @return {?}
|
137
|
-
*/
|
138
|
-
getSuffixes() {
|
139
|
-
return this.http.get(this.smartLookupServiceUrl + 'Suffixes', options).pipe(map((/**
|
140
|
-
* @param {?} res
|
141
|
-
* @return {?}
|
142
|
-
*/
|
143
|
-
res => res)));
|
144
|
-
}
|
145
|
-
/**
|
146
|
-
* @return {?}
|
147
|
-
*/
|
148
|
-
getRelationshipTypes() {
|
149
|
-
return this.http.get(this.smartLookupServiceUrl + 'RelationshipTypes', options).pipe(map((/**
|
150
|
-
* @param {?} res
|
151
|
-
* @return {?}
|
152
|
-
*/
|
153
|
-
res => res)));
|
154
|
-
}
|
155
|
-
/**
|
156
|
-
* @return {?}
|
157
|
-
*/
|
158
|
-
getGenders() {
|
159
|
-
return this.http.get(this.smartLookupServiceUrl + 'Genders', options).pipe(map((/**
|
160
|
-
* @param {?} res
|
161
|
-
* @return {?}
|
162
|
-
*/
|
163
|
-
res => res)));
|
164
|
-
}
|
165
|
-
/**
|
166
|
-
* @return {?}
|
167
|
-
*/
|
168
|
-
getWeaponTypes() {
|
169
|
-
return this.http.get(this.smartLookupServiceUrl + 'WeaponTypes', options).pipe(map((/**
|
170
|
-
* @param {?} res
|
171
|
-
* @return {?}
|
172
|
-
*/
|
173
|
-
res => res)));
|
174
|
-
}
|
175
|
-
/**
|
176
|
-
* @return {?}
|
177
|
-
*/
|
178
|
-
getFlagOptionYesNoUnknowns() {
|
179
|
-
return this.http.get(this.smartLookupServiceUrl + 'FlagOptionYesNoUnknowns', options).pipe(map((/**
|
180
|
-
* @param {?} res
|
181
|
-
* @return {?}
|
182
|
-
*/
|
183
|
-
res => {
|
184
|
-
return res;
|
185
|
-
})));
|
186
|
-
}
|
187
|
-
/**
|
188
|
-
* @return {?}
|
189
|
-
*/
|
190
|
-
getContactTypes() {
|
191
|
-
return this.http.get(this.smartLookupServiceUrl + 'ContactTypes', options).pipe(map((/**
|
192
|
-
* @param {?} res
|
193
|
-
* @return {?}
|
194
|
-
*/
|
195
|
-
res => {
|
196
|
-
return res;
|
197
|
-
})));
|
198
|
-
}
|
199
|
-
/**
|
200
|
-
* @return {?}
|
201
|
-
*/
|
202
|
-
getContactMethods() {
|
203
|
-
return this.http.get(this.smartLookupServiceUrl + 'VictimContactMethods', options).pipe(map((/**
|
204
|
-
* @param {?} res
|
205
|
-
* @return {?}
|
206
|
-
*/
|
207
|
-
res => {
|
208
|
-
return res;
|
209
|
-
})));
|
210
|
-
}
|
211
|
-
/**
|
212
|
-
* @return {?}
|
213
|
-
*/
|
214
|
-
getContactBys() {
|
215
|
-
return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map((/**
|
216
|
-
* @param {?} res
|
217
|
-
* @return {?}
|
218
|
-
*/
|
219
|
-
res => {
|
220
|
-
return res;
|
221
|
-
})));
|
222
|
-
}
|
223
|
-
/**
|
224
|
-
* @return {?}
|
225
|
-
*/
|
226
|
-
getVictimContactPurposes() {
|
227
|
-
return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map((/**
|
228
|
-
* @param {?} res
|
229
|
-
* @return {?}
|
230
|
-
*/
|
231
|
-
res => {
|
232
|
-
return res;
|
233
|
-
})));
|
234
|
-
}
|
235
|
-
/**
|
236
|
-
* @return {?}
|
237
|
-
*/
|
238
|
-
getVictimServiceTypes() {
|
239
|
-
return this.http.get(this.smartLookupServiceUrl + 'VictimServiceTypes', options).pipe(map((/**
|
240
|
-
* @param {?} res
|
241
|
-
* @return {?}
|
242
|
-
*/
|
243
|
-
res => {
|
244
|
-
return res;
|
245
|
-
})));
|
246
|
-
}
|
247
|
-
/**
|
248
|
-
* @return {?}
|
249
|
-
*/
|
250
|
-
getVictimServiceStatus() {
|
251
|
-
return this.http.get(this.smartLookupServiceUrl + 'VictimServiceStatus', options).pipe(map((/**
|
252
|
-
* @param {?} res
|
253
|
-
* @return {?}
|
254
|
-
*/
|
255
|
-
res => {
|
256
|
-
return res;
|
257
|
-
})));
|
258
|
-
}
|
259
|
-
/**
|
260
|
-
* @return {?}
|
261
|
-
*/
|
262
|
-
getvVictimServiceTypeProgramProviders() {
|
263
|
-
return this.http.get(this.smartLookupServiceUrl + 'vVictimServiceTypeProgramProviders', options).pipe(map((/**
|
264
|
-
* @param {?} res
|
265
|
-
* @return {?}
|
266
|
-
*/
|
267
|
-
res => {
|
268
|
-
return res;
|
269
|
-
})));
|
270
|
-
}
|
271
|
-
/**
|
272
|
-
* @param {?} val
|
273
|
-
* @return {?}
|
274
|
-
*/
|
275
|
-
getVictim(val) {
|
276
|
-
return this.http.get(this.smartVictimServiceUrl + 'Victims/' + val, options).pipe(map((/**
|
277
|
-
* @param {?} res
|
278
|
-
* @return {?}
|
279
|
-
*/
|
280
|
-
res => {
|
281
|
-
console.log('victim return data');
|
282
|
-
console.log(res);
|
283
|
-
return res;
|
284
|
-
})));
|
285
|
-
}
|
286
|
-
/**
|
287
|
-
* @param {?} val
|
288
|
-
* @return {?}
|
289
|
-
*/
|
290
|
-
getVictimAdvocate(val) {
|
291
|
-
return this.http.get(this.smartVictimServiceUrl + 'VictimAdvocates/' + val, options).pipe(map((/**
|
292
|
-
* @param {?} res
|
293
|
-
* @return {?}
|
294
|
-
*/
|
295
|
-
res => {
|
296
|
-
return res;
|
297
|
-
})));
|
298
|
-
}
|
299
|
-
/**
|
300
|
-
* @param {?} val
|
301
|
-
* @return {?}
|
302
|
-
*/
|
303
|
-
getVictimGuardian(val) {
|
304
|
-
return this.http.get(this.smartVictimServiceUrl + 'VictimGuardians/' + val, options).pipe(map((/**
|
305
|
-
* @param {?} res
|
306
|
-
* @return {?}
|
307
|
-
*/
|
308
|
-
res => {
|
309
|
-
return res;
|
310
|
-
})));
|
311
|
-
}
|
312
|
-
/**
|
313
|
-
* @param {?} val
|
314
|
-
* @return {?}
|
315
|
-
*/
|
316
|
-
postVictims(val) {
|
317
|
-
/** @type {?} */
|
318
|
-
const tempVal = JSON.stringify(val);
|
319
|
-
return this.http.post(this.smartVictimServiceUrl + 'Victims', tempVal, options).pipe(map((/**
|
320
|
-
* @param {?} res
|
321
|
-
* @return {?}
|
322
|
-
*/
|
323
|
-
res => { return res; })));
|
324
|
-
}
|
325
|
-
/**
|
326
|
-
* @param {?} id
|
327
|
-
* @param {?} val
|
328
|
-
* @return {?}
|
329
|
-
*/
|
330
|
-
putVictims(id, val) {
|
331
|
-
/** @type {?} */
|
332
|
-
const tempVal = JSON.stringify(val);
|
333
|
-
return this.http.put(this.smartVictimServiceUrl + 'Victims/' + id, tempVal, options).pipe(map((/**
|
334
|
-
* @param {?} res
|
335
|
-
* @return {?}
|
336
|
-
*/
|
337
|
-
res => { return res; })));
|
338
|
-
}
|
339
|
-
/**
|
340
|
-
* @param {?} id
|
341
|
-
* @param {?} val
|
342
|
-
* @return {?}
|
343
|
-
*/
|
344
|
-
putVictimAdvocate(id, val) {
|
345
|
-
/** @type {?} */
|
346
|
-
let body;
|
347
|
-
body = JSON.stringify(val);
|
348
|
-
return this.http.put(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, body, options).pipe(map((/**
|
349
|
-
* @param {?} res
|
350
|
-
* @return {?}
|
351
|
-
*/
|
352
|
-
res => { return res; })));
|
353
|
-
}
|
354
|
-
/**
|
355
|
-
* @param {?} id
|
356
|
-
* @param {?} val
|
357
|
-
* @return {?}
|
358
|
-
*/
|
359
|
-
postVictimAdvocate(id, val) {
|
360
|
-
/** @type {?} */
|
361
|
-
const tempVal = JSON.stringify(val);
|
362
|
-
return this.http.post(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, tempVal, options).pipe(map((/**
|
363
|
-
* @param {?} res
|
364
|
-
* @return {?}
|
365
|
-
*/
|
366
|
-
res => { return res; })));
|
367
|
-
}
|
368
|
-
/**
|
369
|
-
* @param {?} id
|
370
|
-
* @param {?} val
|
371
|
-
* @return {?}
|
372
|
-
*/
|
373
|
-
putVictimGuardian(id, val) {
|
374
|
-
console.log('update victim guardian');
|
375
|
-
console.log(val);
|
376
|
-
/** @type {?} */
|
377
|
-
const tempVal = JSON.stringify(val);
|
378
|
-
return this.http.put(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map((/**
|
379
|
-
* @param {?} res
|
380
|
-
* @return {?}
|
381
|
-
*/
|
382
|
-
res => { return res; })));
|
383
|
-
}
|
384
|
-
/**
|
385
|
-
* @param {?} id
|
386
|
-
* @param {?} val
|
387
|
-
* @return {?}
|
388
|
-
*/
|
389
|
-
postVictimGuardian(id, val) {
|
390
|
-
/** @type {?} */
|
391
|
-
const tempVal = JSON.stringify(val);
|
392
|
-
return this.http.post(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map((/**
|
393
|
-
* @param {?} res
|
394
|
-
* @return {?}
|
395
|
-
*/
|
396
|
-
res => { return res; })));
|
397
|
-
}
|
398
|
-
/**
|
399
|
-
* @param {?} val
|
400
|
-
* @return {?}
|
401
|
-
*/
|
402
|
-
getVictimDrugUse(val) {
|
403
|
-
return this.http.get(this.smartVictimServiceUrl + 'VictimDrugUses/' + val, options).pipe(map((/**
|
404
|
-
* @param {?} res
|
405
|
-
* @return {?}
|
406
|
-
*/
|
407
|
-
(res) => {
|
408
|
-
return res;
|
409
|
-
})));
|
410
|
-
}
|
411
|
-
/**
|
412
|
-
* @param {?} id
|
413
|
-
* @param {?} val
|
414
|
-
* @return {?}
|
415
|
-
*/
|
416
|
-
putVictimDrugUse(id, val) {
|
417
|
-
/** @type {?} */
|
418
|
-
const tempVal = JSON.stringify(val);
|
419
|
-
return this.http.put(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map((/**
|
420
|
-
* @param {?} res
|
421
|
-
* @return {?}
|
422
|
-
*/
|
423
|
-
res => { return res; })));
|
424
|
-
}
|
425
|
-
/**
|
426
|
-
* @param {?} id
|
427
|
-
* @param {?} val
|
428
|
-
* @return {?}
|
429
|
-
*/
|
430
|
-
postVictimDrugUse(id, val) {
|
431
|
-
/** @type {?} */
|
432
|
-
const tempVal = JSON.stringify(val);
|
433
|
-
return this.http.post(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map((/**
|
434
|
-
* @param {?} res
|
435
|
-
* @return {?}
|
436
|
-
*/
|
437
|
-
res => { return res; })));
|
438
|
-
}
|
439
|
-
/**
|
440
|
-
* @param {?} id
|
441
|
-
* @param {?} val
|
442
|
-
* @return {?}
|
443
|
-
*/
|
444
|
-
putVictimWeaponUse(id, val) {
|
445
|
-
/** @type {?} */
|
446
|
-
const tempVal = JSON.stringify(val);
|
447
|
-
return this.http.put(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map((/**
|
448
|
-
* @param {?} res
|
449
|
-
* @return {?}
|
450
|
-
*/
|
451
|
-
res => { return res; })));
|
452
|
-
}
|
453
|
-
/**
|
454
|
-
* @param {?} id
|
455
|
-
* @param {?} val
|
456
|
-
* @return {?}
|
457
|
-
*/
|
458
|
-
postVictimWeaponUse(id, val) {
|
459
|
-
/** @type {?} */
|
460
|
-
const tempVal = JSON.stringify(val);
|
461
|
-
return this.http.post(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map((/**
|
462
|
-
* @param {?} res
|
463
|
-
* @return {?}
|
464
|
-
*/
|
465
|
-
res => { return res; })));
|
466
|
-
}
|
467
|
-
/**
|
468
|
-
* @param {?} id
|
469
|
-
* @param {?} val
|
470
|
-
* @return {?}
|
471
|
-
*/
|
472
|
-
putVictimSupport(id, val) {
|
473
|
-
/** @type {?} */
|
474
|
-
const tempVal = JSON.stringify(val);
|
475
|
-
return this.http.put(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map((/**
|
476
|
-
* @param {?} res
|
477
|
-
* @return {?}
|
478
|
-
*/
|
479
|
-
res => { return res; })));
|
480
|
-
}
|
481
|
-
/**
|
482
|
-
* @param {?} id
|
483
|
-
* @param {?} val
|
484
|
-
* @return {?}
|
485
|
-
*/
|
486
|
-
postVictimSupport(id, val) {
|
487
|
-
/** @type {?} */
|
488
|
-
const tempVal = JSON.stringify(val);
|
489
|
-
return this.http.post(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map((/**
|
490
|
-
* @param {?} res
|
491
|
-
* @return {?}
|
492
|
-
*/
|
493
|
-
res => { return res; })));
|
494
|
-
}
|
495
|
-
/**
|
496
|
-
* @param {?} val
|
497
|
-
* @return {?}
|
498
|
-
*/
|
499
|
-
deleteVictims(val) {
|
500
|
-
return this.http.delete(this.smartVictimServiceUrl + 'Victims/' + val, options).pipe(map((/**
|
501
|
-
* @param {?} res
|
502
|
-
* @return {?}
|
503
|
-
*/
|
504
|
-
res => { return res; })));
|
505
|
-
}
|
506
|
-
// //==============Victim Serive===================================
|
507
|
-
/**
|
508
|
-
* @param {?} offenderId
|
509
|
-
* @return {?}
|
510
|
-
*/
|
511
|
-
getVictims(offenderId) {
|
512
|
-
return this.http.get(this.smartVictimServiceUrl + 'Victims/offender/' + offenderId)
|
513
|
-
.pipe(map((/**
|
514
|
-
* @param {?} res
|
515
|
-
* @return {?}
|
516
|
-
*/
|
517
|
-
(res) => {
|
518
|
-
return res;
|
519
|
-
})), catchError(this.handleError));
|
520
|
-
}
|
521
|
-
/**
|
522
|
-
* @param {?} filter
|
523
|
-
* @return {?}
|
524
|
-
*/
|
525
|
-
getVictimsByFilter(filter) {
|
526
|
-
return this.http
|
527
|
-
.post(this.smartVictimServiceUrl + '/Victims', JSON.stringify(filter), { headers: headers })
|
528
|
-
.pipe(map((/**
|
529
|
-
* @param {?} res
|
530
|
-
* @return {?}
|
531
|
-
*/
|
532
|
-
(res) => {
|
533
|
-
return res;
|
534
|
-
})), catchError(this.handleError));
|
535
|
-
}
|
536
|
-
/**
|
537
|
-
* @param {?} filter
|
538
|
-
* @return {?}
|
539
|
-
*/
|
540
|
-
getVictimListByFilter(filter) {
|
541
|
-
console.log('filer in service');
|
542
|
-
console.log(filter);
|
543
|
-
return this.http
|
544
|
-
.post(this.smartVictimServiceUrl + 'vVictims/Filter', JSON.stringify(filter), options)
|
545
|
-
.pipe();
|
546
|
-
}
|
547
|
-
/**
|
548
|
-
* @param {?} victimId
|
549
|
-
* @return {?}
|
550
|
-
*/
|
551
|
-
getCasetNotes(victimId) {
|
552
|
-
return this.http.get(this.smartVictimServiceUrl + 'VictimCaseNotes/victim/' + victimId)
|
553
|
-
.pipe(map((/**
|
554
|
-
* @param {?} res
|
555
|
-
* @return {?}
|
556
|
-
*/
|
557
|
-
(res) => {
|
558
|
-
return res;
|
559
|
-
})), catchError(this.handleError));
|
560
|
-
}
|
561
|
-
/**
|
562
|
-
* @param {?} caseNote
|
563
|
-
* @return {?}
|
564
|
-
*/
|
565
|
-
addCaseNote(caseNote) {
|
566
|
-
/** @type {?} */
|
567
|
-
let body;
|
568
|
-
body = JSON.stringify(caseNote);
|
569
|
-
return this.http
|
570
|
-
.post(this.smartVictimServiceUrl + 'VictimCaseNotes/', body, options);
|
571
|
-
}
|
572
|
-
/**
|
573
|
-
* @param {?} caseNote
|
574
|
-
* @return {?}
|
575
|
-
*/
|
576
|
-
updateCaseNote(caseNote) {
|
577
|
-
/** @type {?} */
|
578
|
-
let body;
|
579
|
-
body = JSON.stringify(caseNote);
|
580
|
-
return this.http
|
581
|
-
.put(this.smartVictimServiceUrl + 'VictimCaseNotes/' + caseNote.victimCaseNoteId, body, options);
|
582
|
-
}
|
583
|
-
/**
|
584
|
-
* @param {?} id
|
585
|
-
* @param {?} staffId
|
586
|
-
* @return {?}
|
587
|
-
*/
|
588
|
-
deleteCaseNote(id, staffId) {
|
589
|
-
return this.http.delete(`${this.smartVictimServiceUrl}VictimCaseNotes/${id}?staffId=${staffId}`);
|
590
|
-
}
|
591
|
-
/**
|
592
|
-
* @param {?} victimId
|
593
|
-
* @return {?}
|
594
|
-
*/
|
595
|
-
getContacts(victimId) {
|
596
|
-
return this.http.get(this.smartVictimServiceUrl + 'VictimContacts/victim/' + victimId)
|
597
|
-
.pipe(map((/**
|
598
|
-
* @param {?} res
|
599
|
-
* @return {?}
|
600
|
-
*/
|
601
|
-
(res) => {
|
602
|
-
return res;
|
603
|
-
})), catchError(this.handleError));
|
604
|
-
}
|
605
|
-
/**
|
606
|
-
* @param {?} contact
|
607
|
-
* @return {?}
|
608
|
-
*/
|
609
|
-
addContact(contact) {
|
610
|
-
/** @type {?} */
|
611
|
-
let body;
|
612
|
-
body = JSON.stringify(contact);
|
613
|
-
return this.http
|
614
|
-
.post(this.smartVictimServiceUrl + 'VictimContacts/', body, options);
|
615
|
-
}
|
616
|
-
/**
|
617
|
-
* @param {?} contact
|
618
|
-
* @return {?}
|
619
|
-
*/
|
620
|
-
updateContact(contact) {
|
621
|
-
/** @type {?} */
|
622
|
-
let body;
|
623
|
-
body = JSON.stringify(contact);
|
624
|
-
return this.http
|
625
|
-
.put(this.smartVictimServiceUrl + 'VictimContacts/' + contact.victimContactId, body, options);
|
626
|
-
}
|
627
|
-
/**
|
628
|
-
* @param {?} victimId
|
629
|
-
* @return {?}
|
630
|
-
*/
|
631
|
-
getSafetyPlans(victimId) {
|
632
|
-
return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victim/' + victimId)
|
633
|
-
.pipe(map((/**
|
634
|
-
* @param {?} res
|
635
|
-
* @return {?}
|
636
|
-
*/
|
637
|
-
(res) => {
|
638
|
-
return res;
|
639
|
-
})), catchError(this.handleError));
|
640
|
-
}
|
641
|
-
/**
|
642
|
-
* @param {?} victimServiceId
|
643
|
-
* @return {?}
|
644
|
-
*/
|
645
|
-
getVictimServices(victimServiceId) {
|
646
|
-
return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victimServiceId/' + victimServiceId)
|
647
|
-
.pipe(map((/**
|
648
|
-
* @param {?} res
|
649
|
-
* @return {?}
|
650
|
-
*/
|
651
|
-
(res) => {
|
652
|
-
return res;
|
653
|
-
})), catchError(this.handleError));
|
654
|
-
}
|
655
|
-
/**
|
656
|
-
* @param {?} victimServiceId
|
657
|
-
* @return {?}
|
658
|
-
*/
|
659
|
-
getVictimServiceDetail(victimServiceId) {
|
660
|
-
return this.http.get(this.smartVictimServiceUrl + 'VictimServiceDetails/' + victimServiceId)
|
661
|
-
.pipe(map((/**
|
662
|
-
* @param {?} res
|
663
|
-
* @return {?}
|
664
|
-
*/
|
665
|
-
(res) => {
|
666
|
-
return res;
|
667
|
-
})), catchError(this.handleError));
|
668
|
-
}
|
669
|
-
/**
|
670
|
-
* @param {?} victimSafetyPlan
|
671
|
-
* @return {?}
|
672
|
-
*/
|
673
|
-
addSafetyPlan(victimSafetyPlan) {
|
674
|
-
/** @type {?} */
|
675
|
-
let body;
|
676
|
-
body = JSON.stringify(victimSafetyPlan);
|
677
|
-
return this.http
|
678
|
-
.post(this.smartVictimServiceUrl + 'VictimServices/', body, options)
|
679
|
-
.pipe();
|
680
|
-
}
|
681
|
-
/**
|
682
|
-
* @param {?} victimSafetyPlan
|
683
|
-
* @return {?}
|
684
|
-
*/
|
685
|
-
updateSafetyPlan(victimSafetyPlan) {
|
686
|
-
/** @type {?} */
|
687
|
-
let body;
|
688
|
-
body = JSON.stringify(victimSafetyPlan);
|
689
|
-
return this.http
|
690
|
-
.put(this.smartVictimServiceUrl + 'VictimServices/' + victimSafetyPlan.victimServiceId, body, options);
|
691
|
-
}
|
692
|
-
/**
|
693
|
-
* @param {?} victimServiceStatusHistory
|
694
|
-
* @return {?}
|
695
|
-
*/
|
696
|
-
addVictimServiceStatus(victimServiceStatusHistory) {
|
697
|
-
/** @type {?} */
|
698
|
-
let body;
|
699
|
-
body = JSON.stringify(victimServiceStatusHistory);
|
700
|
-
return this.http
|
701
|
-
.post(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/', body, options);
|
702
|
-
}
|
703
|
-
/**
|
704
|
-
* @param {?} victimServiceId
|
705
|
-
* @return {?}
|
706
|
-
*/
|
707
|
-
getServiceStatusHistories(victimServiceId) {
|
708
|
-
return this.http.get(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/victimServiceId/' + victimServiceId)
|
709
|
-
.pipe(map((/**
|
710
|
-
* @param {?} res
|
711
|
-
* @return {?}
|
712
|
-
*/
|
713
|
-
(res) => {
|
714
|
-
return res;
|
715
|
-
})), catchError(this.handleError));
|
716
|
-
}
|
717
|
-
/**
|
718
|
-
* @param {?} victimServiceId
|
719
|
-
* @param {?} staffId
|
720
|
-
* @return {?}
|
721
|
-
*/
|
722
|
-
deleteSafetyPlan(victimServiceId, staffId) {
|
723
|
-
return this.http.delete(`${this.smartVictimServiceUrl}VictimServices/${victimServiceId}?staffId=${staffId}`);
|
724
|
-
}
|
725
|
-
/**
|
726
|
-
* @param {?} victimServiceDetail
|
727
|
-
* @return {?}
|
728
|
-
*/
|
729
|
-
addPlanProvider(victimServiceDetail) {
|
730
|
-
/** @type {?} */
|
731
|
-
let body;
|
732
|
-
body = JSON.stringify(victimServiceDetail);
|
733
|
-
return this.http
|
734
|
-
.post(this.smartVictimServiceUrl + 'VictimServiceDetails/', body, options)
|
735
|
-
.pipe();
|
736
|
-
}
|
737
|
-
/**
|
738
|
-
* @param {?} victimProgramProviderId
|
739
|
-
* @param {?} staffId
|
740
|
-
* @return {?}
|
741
|
-
*/
|
742
|
-
deleteProvider(victimProgramProviderId, staffId) {
|
743
|
-
return this.http.delete(`${this.smartVictimServiceUrl}VictimServiceDetails/${victimProgramProviderId}?staffId=${staffId}`);
|
744
|
-
}
|
745
|
-
}
|
746
|
-
NgcSmartVictimService.decorators = [
|
747
|
-
{ type: Injectable, args: [{
|
748
|
-
providedIn: 'root'
|
749
|
-
},] }
|
750
|
-
];
|
751
|
-
/** @nocollapse */
|
752
|
-
NgcSmartVictimService.ctorParameters = () => [
|
753
|
-
{ type: HttpClient },
|
754
|
-
{ type: String, decorators: [{ type: Inject, args: [SMART_OFFENDER_SERVICE_URL,] }] },
|
755
|
-
{ type: String, decorators: [{ type: Inject, args: [SMART_LOOKUP_SERVICE_URL,] }] },
|
756
|
-
{ type: String, decorators: [{ type: Inject, args: [SMART_VICTIM_SERVICE_URL,] }] },
|
757
|
-
{ type: Apollo }
|
758
|
-
];
|
759
|
-
/** @nocollapse */ NgcSmartVictimService.ngInjectableDef = i0.defineInjectable({ factory: function NgcSmartVictimService_Factory() { return new NgcSmartVictimService(i0.inject(i1.HttpClient), i0.inject(i2.SMART_OFFENDER_SERVICE_URL), i0.inject(i2.SMART_LOOKUP_SERVICE_URL), i0.inject(i2.SMART_VICTIM_SERVICE_URL), i0.inject(i3.Apollo)); }, token: NgcSmartVictimService, providedIn: "root" });
|
760
|
-
if (false) {
|
761
|
-
/**
|
762
|
-
* @type {?}
|
763
|
-
* @private
|
764
|
-
*/
|
765
|
-
NgcSmartVictimService.prototype.serviceApiUrl;
|
766
|
-
/**
|
767
|
-
* @type {?}
|
768
|
-
* @private
|
769
|
-
*/
|
770
|
-
NgcSmartVictimService.prototype.http;
|
771
|
-
/**
|
772
|
-
* @type {?}
|
773
|
-
* @private
|
774
|
-
*/
|
775
|
-
NgcSmartVictimService.prototype.smartOffenderServiceUrl;
|
776
|
-
/**
|
777
|
-
* @type {?}
|
778
|
-
* @private
|
779
|
-
*/
|
780
|
-
NgcSmartVictimService.prototype.smartLookupServiceUrl;
|
781
|
-
/**
|
782
|
-
* @type {?}
|
783
|
-
* @private
|
784
|
-
*/
|
785
|
-
NgcSmartVictimService.prototype.smartVictimServiceUrl;
|
786
|
-
/**
|
787
|
-
* @type {?}
|
788
|
-
* @private
|
789
|
-
*/
|
790
|
-
NgcSmartVictimService.prototype.apollo;
|
791
|
-
}
|
792
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmljdGltLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3NtYXJ0L25nYy1zbWFydC12aWN0aW0vIiwic291cmNlcyI6WyJsaWIvc21hcnQtdmljdGltLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFlLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBQyx3QkFBd0IsRUFFVyxNQUFNLHNCQUFzQixDQUFDO0FBQzlILE9BQU8sRUFBYyxVQUFVLElBQUksb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBQyxVQUFVLEVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztNQUdsQyxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs7TUFDakUsT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUtwQyxNQUFNLE9BQU8scUJBQXFCOzs7Ozs7OztJQUVoQyxZQUFvQixJQUFnQixFQUNVLHVCQUErQixFQUNqQyxxQkFBNkIsRUFDN0IscUJBQTZCLEVBQy9ELE1BQWM7UUFKSixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ1UsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFRO1FBQ2pDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUM3QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQVE7UUFDL0QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUxoQixrQkFBYSxHQUFJLHNEQUFzRCxDQUFDO0lBTzFFLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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VTt5Q0FtQmQsTUFBTSxTQUFDLDBCQUEwQjt5Q0FDakMsTUFBTSxTQUFDLHdCQUF3Qjt5Q0FDL0IsTUFBTSxTQUFDLHdCQUF3QjtZQWQzQixNQUFNOzs7Ozs7OztJQVViLDhDQUFnRjs7Ozs7SUFDcEUscUNBQXdCOzs7OztJQUNsQyx3REFBMkU7Ozs7O0lBQzNFLHNEQUF1RTs7Ozs7SUFDdkUsc0RBQXVFOzs7OztJQUN2RSx1Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LEh0dHBSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTTUFSVF9MT09LVVBfU0VSVklDRV9VUkwsIFNNQVJUX09GRkVOREVSX1NFUlZJQ0VfVVJMLFNNQVJUX1ZJQ1RJTV9TRVJWSUNFX1VSTCxcclxuICAgIFZpY3RpbUxpc3RGaWx0ZXIsVmljdGltRHJ1Z1VzZSxWaWN0aW0sVmljdGltU2FmZXR5UGxhbixcclxuICAgQ2FzZU5vdGUsQ29udGFjdCxWaWN0aW1TZXJ2aWNlRGV0YWlsLFZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5LFZpY3RpbUFkdm9jYXRlLFZpY3RpbUd1YXJkaWFufSBmcm9tICcuL3NtYXJ0LXZpY3RpbS5tb2RlbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsY2F0Y2hFcnJvciwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XHJcblxyXG5cclxuY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XHJcbmNvbnN0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nY1NtYXJ0VmljdGltU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzZXJ2aWNlQXBpVXJsID0gICdodHRwczovL3NtYXJ0LXNlcnZpY2UtdGVzdC5henVyZXdlYnNpdGVzLm5ldC9ncmFwaHFsJztcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBASW5qZWN0KFNNQVJUX09GRkVOREVSX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0T2ZmZW5kZXJTZXJ2aWNlVXJsOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KFNNQVJUX0xPT0tVUF9TRVJWSUNFX1VSTCkgcHJpdmF0ZSBzbWFydExvb2t1cFNlcnZpY2VVcmw6IHN0cmluZyxcclxuICAgIEBJbmplY3QoU01BUlRfVklDVElNX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0VmljdGltU2VydmljZVVybDogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSBhcG9sbG86IEFwb2xsb1xyXG5cclxuICAgICkgeyB9XHJcblxyXG4gIC8vIGdldFZpY3RpbUluc3VyYW5jZXMob2ZmZW5kZXJJZDogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0T2ZmZW5kZXJTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VzLz9vZmZlbmRlcklkPScgKyBvZmZlbmRlcklkKS5waXBlKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXRWaWN0aW1JbnN1cmFuY2UoaWQ6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/aWQ9JyArIGlkKS5waXBlKCk7XHJcbiAgLy8gfSBcclxuXHJcbiAgLy8gcG9zdFZpY3RpbUluc3VyYW5jZSh2YWw6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc21hcnRPZmZlbmRlclNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZXMnLCB2YWwpLnBpcGUoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIHB1dFZpY3RpbUluc3VyYW5jZShpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/aWQ9JyArIGlkLCB2YWwpLnBpcGUoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIGRlbGV0ZVZpY3RpbUluc3VyYW5jZShpZDogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh0aGlzLnNtYXJ0T2ZmZW5kZXJTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VzLz9pZD0nICsgaWQpLnBpcGUoKTtcclxuICAvLyB9XHJcbiAgXHJcbiAgLy8gZ2V0VmljdGltSW5zdXJhbmNlVHlwZXMoKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VUeXBlcycpLnBpcGUoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIGdldFZpY3RpbUluc3VyYW5jZVBvbGljeUhvbGRlcnMoKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VQb2xpY3lIb2xkZXJzJykucGlwZSgpO1xyXG4gIC8vIH1cclxuXHJcbi8vICAgZ2V0VmljdGltSW5zdXJhbmNlU3dpdGNoUmVhc29ucygpIHtcclxuLy8gICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZVN3aXRjaFJlYXNvbnMnKS5waXBlKCk7XHJcbi8vICAgfVxyXG5cclxuLy8gICBnZXRWaWN0aW1JbnN1cmFuY2VQcm92aWRlcnMoKSB7XHJcbi8vICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VQcm92aWRlcicpLnBpcGUoKTtcclxuLy8gICB9XHJcblxyXG4vLyAgIGdldFZpY3RpbUluc3VyYW5jZVByb3ZpZGVyKGlkKSB7XHJcbi8vICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlUHJvdmlkZXJzLycgKyBpZCkucGlwZSgpO1xyXG4vLyB9XHJcblxyXG4vLyAgIHBvc3RQcm92aWRlckluZm9ybWF0aW9uKHZhbDogYW55KSB7XHJcbi8vICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlUHJvdmlkZXJzJywgdmFsKS5waXBlKCk7XHJcbi8vICAgfVxyXG5cclxuXHJcblxyXG5wcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpIHtcclxuICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyb3IuanNvbigpLmVycm9yIHx8ICdTZXJ2ZXIgZXJyb3InKTtcclxufVxyXG5cclxuZ2V0RHJ1Z3NUeXBlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnRHJ1Z1R5cGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXREb2NrZXRMaXN0KG9mZmVuZGVySWQ6IG51bWJlcikge1xyXG4gIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFxyXG4gIHtcclxuICAgIGZpbmREb2NrZXRzKGlucHV0OiB7IHdoZXJlOiB7IG9mZmVuZGVySWQ6JHtvZmZlbmRlcklkfSB9IH0pIHtcclxuICAgICAgdG90YWxDb3VudFxyXG4gICAgICBtZXNzYWdlXHJcbiAgICAgIGRhdGEge1xyXG4gICAgICAgIGRvY2tldElkXHJcbiAgICAgICAgZG9ja2V0TnVtYmVyXHJcbiAgICAgIFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfWA7XHJcblxyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuc2VydmljZUFwaVVybCwgeyBxdWVyeTogcXVlcnlTdHJpbmcgfSkucGlwZShcclxuICAgIG1hcCgoeyBkYXRhIH0pID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ2RvY2tldHMgZm9yIHRoaXMgb2ZmZW5kZXI6JywgZGF0YS5maW5kRG9ja2V0cy5kYXRhKTtcclxuICAgICAgcmV0dXJuIGRhdGEuZmluZERvY2tldHMuZGF0YTtcclxuICAgIH0pKTtcclxuXHJcblxyXG59XHJcblxyXG5nZXRTdXBwb3J0VHlwZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltU3VwcG9ydFR5cGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRQcmVmaXhlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnUHJlZml4ZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiByZXMpXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFN1ZmZpeGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICArICdTdWZmaXhlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHJlcylcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0UmVsYXRpb25zaGlwVHlwZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ1JlbGF0aW9uc2hpcFR5cGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRHZW5kZXJzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICArICdHZW5kZXJzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRXZWFwb25UeXBlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnV2VhcG9uVHlwZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiByZXMpXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldEZsYWdPcHRpb25ZZXNOb1Vua25vd25zKCkge1xyXG4gcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnRmxhZ09wdGlvblllc05vVW5rbm93bnMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgfSlcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0Q29udGFjdFR5cGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ0NvbnRhY3RUeXBlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgIChcclxuICAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgfSlcclxuICAgICAgICk7XHJcbiB9XHJcbiBnZXRDb250YWN0TWV0aG9kcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1Db250YWN0TWV0aG9kcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgIChcclxuICAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgfSlcclxuICAgICAgICk7XHJcbiB9XHJcbiBnZXRDb250YWN0QnlzKCl7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltQ29udGFjdFB1cnBvc2VzJywgb3B0aW9ucykucGlwZVxyXG4gIChcclxuICBtYXAocmVzID0+IHsgXHJcbiAgICAgIHJldHVybiByZXM7XHJcbiAgfSlcclxuICApO1xyXG5cclxuIH1cclxuXHJcbmdldFZpY3RpbUNvbnRhY3RQdXJwb3NlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1Db250YWN0UHVycG9zZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgICAoXHJcbiAgICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgIH0pXHJcbiAgICAgICApO1xyXG4gfVxyXG5cclxuIGdldFZpY3RpbVNlcnZpY2VUeXBlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlVHlwZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgICAoXHJcbiAgICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgIH0pXHJcbiAgICAgICApO1xyXG4gfVxyXG4gZ2V0VmljdGltU2VydmljZVN0YXR1cygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlU3RhdHVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAgKFxyXG4gICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICB9KVxyXG4gICAgICAgKTtcclxuIH1cclxuXHJcbiBnZXR2VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ3ZWaWN0aW1TZXJ2aWNlVHlwZVByb2dyYW1Qcm92aWRlcnMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgICAoXHJcbiAgICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgIH0pXHJcbiAgICAgICApO1xyXG4gfVxyXG5cclxuXHJcbmdldFZpY3RpbSh2YWw6IGFueSkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbXMvJyArIHZhbCwgb3B0aW9ucykucGlwZVxyXG4gIChcclxuICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgY29uc29sZS5sb2coJ3ZpY3RpbSByZXR1cm4gZGF0YScpO1xyXG4gICAgICBjb25zb2xlLmxvZyhyZXMpOyAgXHJcbiAgICAgIHJldHVybiByZXM7XHJcblxyXG4gICAgfSlcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0VmljdGltQWR2b2NhdGUodmFsOiBhbnkpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1BZHZvY2F0ZXMvJyArIHZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcblxyXG4gICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFZpY3RpbUd1YXJkaWFuKHZhbDogYW55KSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltR3VhcmRpYW5zLycgKyB2YWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG5cclxuICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wb3N0VmljdGltcyh2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCsgJ1ZpY3RpbXMnLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucHV0VmljdGltcyhpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucHV0VmljdGltQWR2b2NhdGUoaWQ6IGFueSwgdmFsOiBWaWN0aW1BZHZvY2F0ZSkge1xyXG4gIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQWR2b2NhdGVzLycgKyBpZCwgYm9keSwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcblxyXG5cclxuXHJcblxyXG59XHJcblxyXG5wb3N0VmljdGltQWR2b2NhdGUoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQWR2b2NhdGVzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnB1dFZpY3RpbUd1YXJkaWFuKGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc29sZS5sb2coJ3VwZGF0ZSB2aWN0aW0gZ3VhcmRpYW4nKTtcclxuICBjb25zb2xlLmxvZyh2YWwpO1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUd1YXJkaWFucy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wb3N0VmljdGltR3VhcmRpYW4oaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltR3VhcmRpYW5zLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFZpY3RpbURydWdVc2UodmFsOiBhbnkpOiBPYnNlcnZhYmxlPFZpY3RpbURydWdVc2VbXT57XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltRHJ1Z1VzZXMvJyArIHZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcCgocmVzOiBWaWN0aW1EcnVnVXNlW10pID0+IHsgXHJcbiAgICAgICAgICAgIHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucHV0VmljdGltRHJ1Z1VzZShpZDogYW55LCB2YWw6IFZpY3RpbURydWdVc2VbXSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1EcnVnVXNlcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wb3N0VmljdGltRHJ1Z1VzZShpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1EcnVnVXNlcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wdXRWaWN0aW1XZWFwb25Vc2UoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1XZWFwb25Vc2VzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnBvc3RWaWN0aW1XZWFwb25Vc2UoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltV2VhcG9uVXNlcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcbnB1dFZpY3RpbVN1cHBvcnQoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TdXBwb3J0cy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wb3N0VmljdGltU3VwcG9ydChpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TdXBwb3J0cy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5kZWxldGVWaWN0aW1zKHZhbDogYW55KSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwrICdWaWN0aW1zLycgKyB2YWwsIG9wdGlvbnMpLnBpcGVcclxuICAoXHJcbiAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICApO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG4vLyAvLz09PT09PT09PT09PT09VmljdGltIFNlcml2ZT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG5nZXRWaWN0aW1zKG9mZmVuZGVySWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVtdPiB7XHJcblxyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICArICdWaWN0aW1zL29mZmVuZGVyLycgKyBvZmZlbmRlcklkKVxyXG4gIC5waXBlKG1hcCgocmVzOiBWaWN0aW1bXSkgPT4ge1xyXG4gICAgXHJcbiAgICAgIHJldHVybiByZXM7XHJcbiAgfSlcclxuICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbn1cclxuXHJcbmdldFZpY3RpbXNCeUZpbHRlcihmaWx0ZXI6IFZpY3RpbUxpc3RGaWx0ZXIpOiBPYnNlcnZhYmxlPFZpY3RpbVtdPntcclxuICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICcvVmljdGltcycsIEpTT04uc3RyaW5naWZ5KGZpbHRlciksIHsgaGVhZGVyczogaGVhZGVycyB9KVxyXG4gICAgICAgICAgLnBpcGUobWFwKChyZXM6IFZpY3RpbVtdKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbn1cclxuXHJcbmdldFZpY3RpbUxpc3RCeUZpbHRlcihmaWx0ZXI6IFZpY3RpbUxpc3RGaWx0ZXIpIFxyXG57XHJcbiAgY29uc29sZS5sb2coJ2ZpbGVyIGluIHNlcnZpY2UnKTtcclxuICBjb25zb2xlLmxvZyhmaWx0ZXIpO1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwXHJcbiAgLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAndlZpY3RpbXMvRmlsdGVyJywgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSwgb3B0aW9ucylcclxuICAucGlwZSgpO1xyXG5cclxufVxyXG5cclxuXHJcbmdldENhc2V0Tm90ZXModmljdGltSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPENhc2VOb3RlW10+IHtcclxuXHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQ2FzZU5vdGVzL3ZpY3RpbS8nICsgdmljdGltSWQpXHJcbiAgLnBpcGUobWFwKChyZXM6IENhc2VOb3RlW10pID0+IHtcclxuICAgICAgcmV0dXJuIHJlcztcclxuICB9KVxyXG4gICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxuIFxyXG5cclxufVxyXG5hZGRDYXNlTm90ZShjYXNlTm90ZTogQ2FzZU5vdGUpIHtcclxuICBsZXQgYm9keTogc3RyaW5nO1xyXG4gICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY2FzZU5vdGUpO1xyXG4gICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1DYXNlTm90ZXMvJywgYm9keSwgb3B0aW9ucyk7XHJcbiBcclxuIH1cclxuXHJcbiBcclxudXBkYXRlQ2FzZU5vdGUoY2FzZU5vdGU6IENhc2VOb3RlKXtcclxuXHJcbiAgbGV0IGJvZHk6IHN0cmluZztcclxuICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY2FzZU5vdGUpO1xyXG4gIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1DYXNlTm90ZXMvJyArIGNhc2VOb3RlLnZpY3RpbUNhc2VOb3RlSWQsIGJvZHksIG9wdGlvbnMpXHJcblxyXG4gICAgICA7XHJcbiB9XHJcblxyXG5kZWxldGVDYXNlTm90ZShpZDogbnVtYmVyLCBzdGFmZklkOiBudW1iZXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmx9VmljdGltQ2FzZU5vdGVzLyR7aWR9P3N0YWZmSWQ9JHtzdGFmZklkfWApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGFjdHModmljdGltSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPENvbnRhY3RbXT4ge1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RzL3ZpY3RpbS8nICsgdmljdGltSWQpXHJcbiAgICAucGlwZShtYXAoKHJlczogQ29udGFjdFtdKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0pXHJcbiAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgXHJcbiAgfVxyXG4gIGFkZENvbnRhY3QoY29udGFjdDogQ29udGFjdCkge1xyXG4gICAgbGV0IGJvZHk6IHN0cmluZztcclxuICAgICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY29udGFjdCk7XHJcbiAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1Db250YWN0cy8nLCBib2R5LCBvcHRpb25zKTtcclxuICAgXHJcbiAgIH1cclxuICBcclxuICAgXHJcbiAgdXBkYXRlQ29udGFjdChjb250YWN0OiBDb250YWN0KXtcclxuICBcclxuICAgIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY29udGFjdCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1Db250YWN0cy8nICsgY29udGFjdC52aWN0aW1Db250YWN0SWQsIGJvZHksIG9wdGlvbnMpXHJcbiAgXHJcbiAgICAgICAgO1xyXG4gICB9XHJcbiAgXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuZ2V0U2FmZXR5UGxhbnModmljdGltSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVNhZmV0eVBsYW5bXT4ge1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAndlZpY3RpbVNlcnZpY2VMaXN0cy92aWN0aW0vJyArIHZpY3RpbUlkKVxyXG4gICAgICAucGlwZShtYXAoKHJlczogVmljdGltU2FmZXR5UGxhbltdKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgfVxyXG5cclxuZ2V0VmljdGltU2VydmljZXModmljdGltU2VydmljZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlIDxWaWN0aW1TYWZldHlQbGFuW10+IHtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ3ZWaWN0aW1TZXJ2aWNlTGlzdHMvdmljdGltU2VydmljZUlkLycgKyB2aWN0aW1TZXJ2aWNlSWQpXHJcbiAgICAgIC5waXBlKG1hcCgocmVzOiBWaWN0aW1TYWZldHlQbGFuW10pID0+IHtcclxuICAgICAgICAgIHJldHVybiAgcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgXHJcbiAgfVxyXG5cclxuZ2V0VmljdGltU2VydmljZURldGFpbCh2aWN0aW1TZXJ2aWNlSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVNlcnZpY2VEZXRhaWxbXT4ge1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlRGV0YWlscy8nICsgdmljdGltU2VydmljZUlkKVxyXG4gIC5waXBlKG1hcCgocmVzOiBWaWN0aW1TZXJ2aWNlRGV0YWlsW10pID0+IHtcclxuICBcclxuICAgICAgcmV0dXJuIHJlcztcclxuICB9KVxyXG4gICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxuXHJcbn1cclxuYWRkU2FmZXR5UGxhbih2aWN0aW1TYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuKSB7XHJcblxyXG4gIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkodmljdGltU2FmZXR5UGxhbik7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlcy8nLCBib2R5LCBvcHRpb25zKVxyXG4gICAgICAgICAgLnBpcGUoKTtcclxuICBcclxuICB9XHJcbnVwZGF0ZVNhZmV0eVBsYW4odmljdGltU2FmZXR5UGxhbjogVmljdGltU2FmZXR5UGxhbil7XHJcblxyXG4gICAgICBsZXQgYm9keTogc3RyaW5nO1xyXG4gICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkodmljdGltU2FmZXR5UGxhbik7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgIC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZXMvJyArIHZpY3RpbVNhZmV0eVBsYW4udmljdGltU2VydmljZUlkLCBib2R5LCBvcHRpb25zKVxyXG5cclxuICAgICAgICAgIDtcclxuICAgICB9XHJcbmFkZFZpY3RpbVNlcnZpY2VTdGF0dXModmljdGltU2VydmljZVN0YXR1c0hpc3Rvcnk6IFZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5KXtcclxuICBsZXQgYm9keTogc3RyaW5nO1xyXG4gIGJvZHkgPSBKU09OLnN0cmluZ2lmeSh2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeSk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXMvJywgYm9keSwgb3B0aW9ucyk7XHJcblxyXG4gIH1cclxuXHJcbmdldFNlcnZpY2VTdGF0dXNIaXN0b3JpZXModmljdGltU2VydmljZUlkOiBudW1iZXIpe1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXMvdmljdGltU2VydmljZUlkLycgKyB2aWN0aW1TZXJ2aWNlSWQpXHJcbiAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzOiBWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeVtdKSA9PiB7XHJcbiAgXHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICk7XHJcbn1cclxuXHJcbmRlbGV0ZVNhZmV0eVBsYW4odmljdGltU2VydmljZUlkOiBudW1iZXIsIHN0YWZmSWQ6IG51bWJlcikge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsfVZpY3RpbVNlcnZpY2VzLyR7dmljdGltU2VydmljZUlkfT9zdGFmZklkPSR7c3RhZmZJZH1gKTtcclxuXHJcbiAgfVxyXG5hZGRQbGFuUHJvdmlkZXIodmljdGltU2VydmljZURldGFpbDpWaWN0aW1TZXJ2aWNlRGV0YWlsKXtcclxuICAgICAgbGV0IGJvZHk6IHN0cmluZztcclxuICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHZpY3RpbVNlcnZpY2VEZXRhaWwpO1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VEZXRhaWxzLycsIGJvZHksIG9wdGlvbnMpXHJcbiAgICAgIC5waXBlKCk7XHJcblxyXG4gIH1cclxuXHJcbmRlbGV0ZVByb3ZpZGVyKHZpY3RpbVByb2dyYW1Qcm92aWRlcklkOiBzdHJpbmcsIHN0YWZmSWQ6IG51bWJlcil7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmx9VmljdGltU2VydmljZURldGFpbHMvJHt2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZH0/c3RhZmZJZD0ke3N0YWZmSWR9YCk7XHJcblxyXG59XHJcblxyXG59XHJcbiJdfQ==
|