@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,1406 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview added by tsickle
|
3
|
-
* Generated from: lib/smart-victim-detail/smart-victim-detail.component.ts
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
5
|
-
*/
|
6
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
7
|
-
import { FormBuilder, FormControl, Validators } from '@angular/forms';
|
8
|
-
import { MatDialog, MatSnackBar, MatInput, MatSelect, MatRadioGroup } from '@angular/material';
|
9
|
-
import { NgcSmartVictimService } from '../smart-victim.service';
|
10
|
-
import { Router, ActivatedRoute } from '@angular/router';
|
11
|
-
import { CommonDialogService } from '.././common-dialog/common-dialog.service';
|
12
|
-
import { DatePipe, Location } from '@angular/common';
|
13
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
14
|
-
import { MatTableDataSource } from '@angular/material/table';
|
15
|
-
/**
|
16
|
-
* @record
|
17
|
-
*/
|
18
|
-
export function BooleanFn() { }
|
19
|
-
/**
|
20
|
-
* @record
|
21
|
-
*/
|
22
|
-
export function StringFn() { }
|
23
|
-
/**
|
24
|
-
* @param {?} predicate
|
25
|
-
* @param {?} validator
|
26
|
-
* @param {?=} errorNamespace
|
27
|
-
* @return {?}
|
28
|
-
*/
|
29
|
-
export function conditionalValidator(predicate, validator, errorNamespace) {
|
30
|
-
return ((/**
|
31
|
-
* @param {?} formControl
|
32
|
-
* @return {?}
|
33
|
-
*/
|
34
|
-
formControl => {
|
35
|
-
if (!formControl.parent) {
|
36
|
-
return null;
|
37
|
-
}
|
38
|
-
/** @type {?} */
|
39
|
-
let error = null;
|
40
|
-
if (predicate()) {
|
41
|
-
error = validator(formControl);
|
42
|
-
}
|
43
|
-
if (errorNamespace && error) {
|
44
|
-
/** @type {?} */
|
45
|
-
const customError = {};
|
46
|
-
customError[errorNamespace] = error;
|
47
|
-
error = customError;
|
48
|
-
}
|
49
|
-
return error;
|
50
|
-
}));
|
51
|
-
}
|
52
|
-
/**
|
53
|
-
* @param {?} predicate
|
54
|
-
* @param {?} validator
|
55
|
-
* @param {?=} errorNamespace
|
56
|
-
* @return {?}
|
57
|
-
*/
|
58
|
-
export function stringConditionalValidator(predicate, validator, errorNamespace) {
|
59
|
-
return ((/**
|
60
|
-
* @param {?} formControl
|
61
|
-
* @return {?}
|
62
|
-
*/
|
63
|
-
formControl => {
|
64
|
-
if (!formControl.parent) {
|
65
|
-
return null;
|
66
|
-
}
|
67
|
-
/** @type {?} */
|
68
|
-
let error = null;
|
69
|
-
if (predicate() == 'YS') {
|
70
|
-
error = validator(formControl);
|
71
|
-
}
|
72
|
-
if (errorNamespace && error) {
|
73
|
-
/** @type {?} */
|
74
|
-
const customError = {};
|
75
|
-
customError[errorNamespace] = error;
|
76
|
-
error = customError;
|
77
|
-
}
|
78
|
-
return error;
|
79
|
-
}));
|
80
|
-
}
|
81
|
-
export class SmartVictimDetailComponent {
|
82
|
-
/**
|
83
|
-
* @param {?} location
|
84
|
-
* @param {?} formBuilder
|
85
|
-
* @param {?} dialog
|
86
|
-
* @param {?} route
|
87
|
-
* @param {?} router
|
88
|
-
* @param {?} snackBar
|
89
|
-
* @param {?} commonDialogService
|
90
|
-
* @param {?} victimService
|
91
|
-
*/
|
92
|
-
constructor(location, formBuilder, dialog, route, router, snackBar, commonDialogService, victimService) {
|
93
|
-
this.location = location;
|
94
|
-
this.formBuilder = formBuilder;
|
95
|
-
this.dialog = dialog;
|
96
|
-
this.route = route;
|
97
|
-
this.router = router;
|
98
|
-
this.snackBar = snackBar;
|
99
|
-
this.commonDialogService = commonDialogService;
|
100
|
-
this.victimService = victimService;
|
101
|
-
this.victimDetail = (/** @type {?} */ ({}));
|
102
|
-
this.onSave = new EventEmitter();
|
103
|
-
this.onCancel = new EventEmitter();
|
104
|
-
this.hidden = true;
|
105
|
-
this.victimAdvocate = (/** @type {?} */ ({}));
|
106
|
-
this.victimGuardian = (/** @type {?} */ ({}));
|
107
|
-
this.guardianTabFlag = false;
|
108
|
-
this.advocateTabFlag = false;
|
109
|
-
this.commonChildrenDivFlag = false;
|
110
|
-
this.cpoExpirationDivFlag = false;
|
111
|
-
this.supportInPlaceDivFlag = false;
|
112
|
-
this.weaponInvolvedDivFlag = false;
|
113
|
-
this.drugUseDivFlag = false;
|
114
|
-
this.showDelete = false;
|
115
|
-
this.addressId = 0;
|
116
|
-
this.advocateAddressId = 0;
|
117
|
-
this.guardianAddressId = 0;
|
118
|
-
this.datePipe = new DatePipe('en-US');
|
119
|
-
this.emailPattern = "^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$";
|
120
|
-
this.phoneNumber = "\\d{10}";
|
121
|
-
this.editVictim = (/** @type {?} */ ({}));
|
122
|
-
this.otherWeaponFlag = false;
|
123
|
-
this.otherDrugFlag = false;
|
124
|
-
this.contactDataSource = new MatTableDataSource();
|
125
|
-
this.guardianPhoneExistFlag = false;
|
126
|
-
this.advocatePhoneExistFlag = false;
|
127
|
-
this.phoneValidationFlag = false;
|
128
|
-
this.guaridanNoPhoneChkFlag = true;
|
129
|
-
this.advocateNoPhoneChkFlag = true;
|
130
|
-
this.addressValidators = {
|
131
|
-
street: [],
|
132
|
-
street2: [],
|
133
|
-
city: [],
|
134
|
-
stateCode: [],
|
135
|
-
zipCode: [],
|
136
|
-
psaCode: [],
|
137
|
-
};
|
138
|
-
this.initForm();
|
139
|
-
}
|
140
|
-
/**
|
141
|
-
* @private
|
142
|
-
* @return {?}
|
143
|
-
*/
|
144
|
-
initForm() {
|
145
|
-
this.victimForm = this.formBuilder.group({
|
146
|
-
underSupervisionFlag: new FormControl('', Validators.compose([Validators.required])),
|
147
|
-
victimOffenderRelationshipTypeId: new FormControl('', Validators.compose([Validators.required])),
|
148
|
-
lastName: new FormControl('', Validators.compose([Validators.required])),
|
149
|
-
firstName: new FormControl('', Validators.compose([Validators.required])),
|
150
|
-
middleName: new FormControl(''),
|
151
|
-
prefixId: new FormControl(''),
|
152
|
-
suffixId: new FormControl(''),
|
153
|
-
genderCode: new FormControl(''),
|
154
|
-
birthDate: new FormControl(''),
|
155
|
-
homePhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
156
|
-
cellPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
157
|
-
workPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
158
|
-
email: new FormControl('', Validators.compose([Validators.pattern(this.emailPattern)])),
|
159
|
-
minorFlag: new FormControl('', Validators.compose([Validators.required])),
|
160
|
-
victimAdvocateFlag: new FormControl('', Validators.compose([Validators.required])),
|
161
|
-
guardianLastName: new FormControl(''),
|
162
|
-
guardianFirstName: new FormControl(''),
|
163
|
-
guardianPrefixId: new FormControl(''),
|
164
|
-
guardianSuffixId: new FormControl(''),
|
165
|
-
//guardianGender:new FormControl('', ),
|
166
|
-
guardianBirthDate: new FormControl(''),
|
167
|
-
guardianNoPhoneFlag: new FormControl(true),
|
168
|
-
guardianHomePhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
169
|
-
guardianCellPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
170
|
-
guardianWorkPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
171
|
-
guardianEmail: new FormControl('', Validators.compose([Validators.pattern(this.emailPattern)])),
|
172
|
-
advocateNoPhoneFlag: new FormControl(true),
|
173
|
-
advocateWorkPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
174
|
-
advocateHomePhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
175
|
-
advocateCellPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
176
|
-
advocateSuffixId: new FormControl(''),
|
177
|
-
advocatePrefixId: new FormControl(''),
|
178
|
-
advocateFirstName: new FormControl('', stringConditionalValidator((/**
|
179
|
-
* @return {?}
|
180
|
-
*/
|
181
|
-
() => this.victimForm.get('victimAdvocateFlag').value), Validators.required, 'illuminatiError')),
|
182
|
-
advocateLastName: new FormControl('', stringConditionalValidator((/**
|
183
|
-
* @return {?}
|
184
|
-
*/
|
185
|
-
() => this.victimForm.get('victimAdvocateFlag').value), Validators.required, 'illuminatiError')),
|
186
|
-
advocateEmail: new FormControl('', Validators.compose([Validators.pattern(this.emailPattern)])),
|
187
|
-
emergencyContact: new FormControl(''),
|
188
|
-
emergencyContactPhone: new FormControl('', Validators.compose([Validators.pattern(this.phoneNumber)])),
|
189
|
-
emergencyChildren: new FormControl(''),
|
190
|
-
emergencyCpo: new FormControl(''),
|
191
|
-
emergencyDrug: new FormControl(''),
|
192
|
-
emergencySupport: new FormControl(''),
|
193
|
-
emergencyWeapon: new FormControl(''),
|
194
|
-
drug: new FormControl(''),
|
195
|
-
weapon: new FormControl(''),
|
196
|
-
support: new FormControl(''),
|
197
|
-
commonChildrenFlag: new FormControl(''),
|
198
|
-
commonChildrenNumber: new FormControl(''),
|
199
|
-
cpoExpirationFlag: new FormControl(''),
|
200
|
-
cpoExpirationDate: new FormControl(''),
|
201
|
-
accessRisk: new FormControl(''),
|
202
|
-
drugUseFlag: new FormControl(''),
|
203
|
-
supportInPlaceFlag: new FormControl(''),
|
204
|
-
weaponInvolvedFlag: new FormControl(''),
|
205
|
-
otherWeapon: new FormControl(''),
|
206
|
-
otherDrug: new FormControl(''),
|
207
|
-
alcoholUseFlag: new FormControl(''),
|
208
|
-
victimSupports: new FormControl(''),
|
209
|
-
victimWeaponUses: new FormControl(''),
|
210
|
-
victimDrugUses: new FormControl(''),
|
211
|
-
allowCsosaContactFlag: new FormControl(''),
|
212
|
-
});
|
213
|
-
this.victimForm.markAsPristine();
|
214
|
-
this.victimForm.markAsUntouched();
|
215
|
-
}
|
216
|
-
/**
|
217
|
-
* @private
|
218
|
-
* @return {?}
|
219
|
-
*/
|
220
|
-
_getVictim() {
|
221
|
-
if (this.victimId === 0) {
|
222
|
-
return;
|
223
|
-
}
|
224
|
-
;
|
225
|
-
if (this.editMode == true) {
|
226
|
-
console.log('find victim id inside getVictim');
|
227
|
-
console.log(this.victimId);
|
228
|
-
if (this.victimId === undefined) {
|
229
|
-
this.sub = this.route.params.subscribe((/**
|
230
|
-
* @param {?} params
|
231
|
-
* @return {?}
|
232
|
-
*/
|
233
|
-
params => {
|
234
|
-
this.victimId = params['victimId'];
|
235
|
-
console.log('my this.victimId');
|
236
|
-
console.log(this.victimId);
|
237
|
-
}));
|
238
|
-
}
|
239
|
-
this.victimService.getVictim(this.victimId)
|
240
|
-
.subscribe((/**
|
241
|
-
* @param {?} victim
|
242
|
-
* @return {?}
|
243
|
-
*/
|
244
|
-
(victim) => {
|
245
|
-
console.log('victim data 1');
|
246
|
-
console.log(victim);
|
247
|
-
this.editVictim = (/** @type {?} */ (victim));
|
248
|
-
/** @type {?} */
|
249
|
-
var supportsData = [];
|
250
|
-
this.editVictim.victimSupports.forEach((/**
|
251
|
-
* @param {?} t
|
252
|
-
* @return {?}
|
253
|
-
*/
|
254
|
-
t => { supportsData.push(t.victimSupportTypeId); }));
|
255
|
-
/** @type {?} */
|
256
|
-
const victimSupportsControl = this.victimForm.get('victimSupports');
|
257
|
-
victimSupportsControl.setValue(supportsData);
|
258
|
-
/** @type {?} */
|
259
|
-
var weaponUsesData = [];
|
260
|
-
/** @type {?} */
|
261
|
-
var otherWeapon = "";
|
262
|
-
this.editVictim.victimWeaponUses.forEach((/**
|
263
|
-
* @param {?} t
|
264
|
-
* @return {?}
|
265
|
-
*/
|
266
|
-
t => {
|
267
|
-
weaponUsesData.push(t.weaponTypeId);
|
268
|
-
if (t.weaponTypeId == "OTHER") {
|
269
|
-
otherWeapon = t.otherWeapon;
|
270
|
-
this.otherWeaponFlag = true;
|
271
|
-
}
|
272
|
-
}));
|
273
|
-
/** @type {?} */
|
274
|
-
const victimWeaponUsesControl = this.victimForm.get('victimWeaponUses');
|
275
|
-
victimWeaponUsesControl.setValue(weaponUsesData);
|
276
|
-
/** @type {?} */
|
277
|
-
const otherWeaponControl = this.victimForm.get('otherWeapon');
|
278
|
-
otherWeaponControl.setValue(otherWeapon);
|
279
|
-
//this.weaponUsesData = this.editVictim.victimWeaponUses;
|
280
|
-
/** @type {?} */
|
281
|
-
var drugUseData = [];
|
282
|
-
/** @type {?} */
|
283
|
-
var otherDrug = "";
|
284
|
-
console.log('load this.editVictim.victimDrugUses');
|
285
|
-
console.log(this.editVictim.victimDrugUses);
|
286
|
-
this.editVictim.victimDrugUses.forEach((/**
|
287
|
-
* @param {?} t
|
288
|
-
* @return {?}
|
289
|
-
*/
|
290
|
-
t => {
|
291
|
-
if (t.drugTypeId === null) {
|
292
|
-
otherDrug = t.otherDrug;
|
293
|
-
this.otherDrugFlag = true;
|
294
|
-
t.drugTypeId = 'OTHER';
|
295
|
-
}
|
296
|
-
drugUseData.push(t.drugTypeId);
|
297
|
-
}));
|
298
|
-
console.log('this.editVictim.victimDrugUses after push');
|
299
|
-
console.log(drugUseData);
|
300
|
-
/** @type {?} */
|
301
|
-
const victimDrugUsesControl = this.victimForm.get('victimDrugUses');
|
302
|
-
victimDrugUsesControl.setValue(drugUseData);
|
303
|
-
/** @type {?} */
|
304
|
-
const otherDrugControl = this.victimForm.get('otherDrug');
|
305
|
-
otherDrugControl.setValue(otherDrug);
|
306
|
-
//contact
|
307
|
-
this.victimService.getContacts(this.victimId).subscribe((/**
|
308
|
-
* @param {?} contactList
|
309
|
-
* @return {?}
|
310
|
-
*/
|
311
|
-
contactList => {
|
312
|
-
console.log('contactList');
|
313
|
-
console.log(contactList);
|
314
|
-
this.contactList = contactList;
|
315
|
-
this.contactDataSource.data = this.contactList;
|
316
|
-
}));
|
317
|
-
//no phone field
|
318
|
-
if (this.editVictim.guardianNoPhoneFlag === false) {
|
319
|
-
this.victimForm.patchValue({ guardianNoPhoneFlag: false });
|
320
|
-
}
|
321
|
-
if (this.editVictim.advocateNoPhoneFlag === false) {
|
322
|
-
this.victimForm.patchValue({ advocateNoPhoneFlag: false });
|
323
|
-
}
|
324
|
-
}), (/**
|
325
|
-
* @param {?} error
|
326
|
-
* @return {?}
|
327
|
-
*/
|
328
|
-
error => {
|
329
|
-
this.snackBar.open("Error occured while retriving Victim Information. Please try again.");
|
330
|
-
}));
|
331
|
-
return;
|
332
|
-
}
|
333
|
-
else {
|
334
|
-
//new
|
335
|
-
}
|
336
|
-
}
|
337
|
-
/**
|
338
|
-
* @return {?}
|
339
|
-
*/
|
340
|
-
ngOnChanges() {
|
341
|
-
}
|
342
|
-
/**
|
343
|
-
* @param {?} addressId
|
344
|
-
* @return {?}
|
345
|
-
*/
|
346
|
-
onAddressChange(addressId) {
|
347
|
-
this.victimForm.patchValue({ addressId: addressId });
|
348
|
-
this.addressId = addressId;
|
349
|
-
}
|
350
|
-
/**
|
351
|
-
* @param {?} MyGuardianAddressId
|
352
|
-
* @return {?}
|
353
|
-
*/
|
354
|
-
onGuardianAddressChange(MyGuardianAddressId) {
|
355
|
-
this.victimForm.patchValue({ guardianAddressId: MyGuardianAddressId });
|
356
|
-
this.guardianAddressId = MyGuardianAddressId;
|
357
|
-
}
|
358
|
-
/**
|
359
|
-
* @param {?} MyAdvocateAddressId
|
360
|
-
* @return {?}
|
361
|
-
*/
|
362
|
-
onAdvocateAddressChange(MyAdvocateAddressId) {
|
363
|
-
this.victimForm.patchValue({ advocateAddressId: MyAdvocateAddressId });
|
364
|
-
this.advocateAddressId = MyAdvocateAddressId;
|
365
|
-
}
|
366
|
-
/**
|
367
|
-
* @return {?}
|
368
|
-
*/
|
369
|
-
cancel() {
|
370
|
-
this.victimForm.reset();
|
371
|
-
}
|
372
|
-
/**
|
373
|
-
* @return {?}
|
374
|
-
*/
|
375
|
-
ngOnInit() {
|
376
|
-
console.log('show offenderId');
|
377
|
-
console.log(this.offenderId);
|
378
|
-
console.log('show staffId');
|
379
|
-
console.log(this.staffId);
|
380
|
-
console.log('show isIntake');
|
381
|
-
console.log(this.isIntake);
|
382
|
-
//this.victimDetail.guardianNoPhoneFlag = true;
|
383
|
-
//this.victimForm.value.guardianNoPhoneFlag = true;
|
384
|
-
//this.victimForm.get('guardianNoPhoneFlag').setValue(true);
|
385
|
-
//required field
|
386
|
-
/** @type {?} */
|
387
|
-
const requiredImplementation = { get: (/**
|
388
|
-
* @return {?}
|
389
|
-
*/
|
390
|
-
function () {
|
391
|
-
if (this._required) {
|
392
|
-
return this._required;
|
393
|
-
}
|
394
|
-
if (this.ngControl && this.ngControl.control && this.ngControl.control.validator) {
|
395
|
-
/** @type {?} */
|
396
|
-
const emptyValueControl = Object.assign({}, this.ngControl.control);
|
397
|
-
((/** @type {?} */ (emptyValueControl))).value = null;
|
398
|
-
return ('required' in (this.ngControl.control.validator(emptyValueControl) || {}));
|
399
|
-
}
|
400
|
-
return false;
|
401
|
-
}), set: (/**
|
402
|
-
* @param {?} value
|
403
|
-
* @return {?}
|
404
|
-
*/
|
405
|
-
function (value) { this._required = coerceBooleanProperty(value); }), };
|
406
|
-
Object.defineProperty(MatInput.prototype, 'required', requiredImplementation);
|
407
|
-
Object.defineProperty(MatSelect.prototype, 'required', requiredImplementation);
|
408
|
-
Object.defineProperty(MatRadioGroup.prototype, 'required', requiredImplementation);
|
409
|
-
//required field end
|
410
|
-
if (this.victimDetail != null) {
|
411
|
-
// edit record
|
412
|
-
this.editMode = true;
|
413
|
-
this.showDelete = true;
|
414
|
-
this.victimId = this.victimDetail.victimId;
|
415
|
-
this.guardianTabFlag = this.victimDetail.minorFlag;
|
416
|
-
if (this.victimDetail.victimAdvocateFlag == 'YS') {
|
417
|
-
this.advocateTabFlag = true;
|
418
|
-
}
|
419
|
-
if (this.otherWeaponFlag == true) {
|
420
|
-
/** @type {?} */
|
421
|
-
const otherWeaponControl = this.victimForm.get('otherWeapon');
|
422
|
-
otherWeaponControl.setValidators(Validators.required);
|
423
|
-
}
|
424
|
-
if (this.otherDrugFlag == true) {
|
425
|
-
/** @type {?} */
|
426
|
-
const otherDrugControl = this.victimForm.get('otherDrug');
|
427
|
-
otherDrugControl.setValidators(Validators.required);
|
428
|
-
}
|
429
|
-
this.cpoExpirationDivFlag = this.victimDetail.cpoExpirationFlag;
|
430
|
-
this.commonChildrenDivFlag = this.victimDetail.commonChildrenFlag;
|
431
|
-
this.supportInPlaceDivFlag = this.victimDetail.supportInPlaceFlag;
|
432
|
-
this.weaponInvolvedDivFlag = this.victimDetail.weaponInvolvedFlag;
|
433
|
-
this.drugUseDivFlag = this.victimDetail.drugUseFlag;
|
434
|
-
this.addressId = this.victimDetail.addressId;
|
435
|
-
this.guardianAddressId = this.victimDetail.guardianAddressId;
|
436
|
-
this.advocateAddressId = this.victimDetail.advocateAddressId;
|
437
|
-
this._getVictim();
|
438
|
-
}
|
439
|
-
else {
|
440
|
-
//add new record
|
441
|
-
this.victimForm.patchValue({ guardianNoPhoneFlag: true });
|
442
|
-
this.victimForm.patchValue({ advocateNoPhoneFlag: true });
|
443
|
-
}
|
444
|
-
this.victimService.getFlagOptionYesNoUnknowns().subscribe((/**
|
445
|
-
* @param {?} items
|
446
|
-
* @return {?}
|
447
|
-
*/
|
448
|
-
(items) => {
|
449
|
-
this.flagOption = items;
|
450
|
-
}));
|
451
|
-
this.victimService.getGenders().subscribe((/**
|
452
|
-
* @param {?} items
|
453
|
-
* @return {?}
|
454
|
-
*/
|
455
|
-
(items) => {
|
456
|
-
this.genders = items;
|
457
|
-
}));
|
458
|
-
this.victimService.getPrefixes().subscribe((/**
|
459
|
-
* @param {?} items
|
460
|
-
* @return {?}
|
461
|
-
*/
|
462
|
-
(items) => {
|
463
|
-
this.prefixes = items;
|
464
|
-
}));
|
465
|
-
this.victimService.getSuffixes().subscribe((/**
|
466
|
-
* @param {?} items
|
467
|
-
* @return {?}
|
468
|
-
*/
|
469
|
-
(items) => {
|
470
|
-
this.suffixes = items;
|
471
|
-
}));
|
472
|
-
this.victimService.getRelationshipTypes().subscribe((/**
|
473
|
-
* @param {?} items
|
474
|
-
* @return {?}
|
475
|
-
*/
|
476
|
-
(items) => {
|
477
|
-
this.relationshipTypes = items.filter((/**
|
478
|
-
* @param {?} y
|
479
|
-
* @return {?}
|
480
|
-
*/
|
481
|
-
(y) => (y.relationshipCategoryId === 'ST' || y.relationshipCategoryId === 'FM')));
|
482
|
-
}));
|
483
|
-
this.victimService.getSupportTypes().subscribe((/**
|
484
|
-
* @param {?} items
|
485
|
-
* @return {?}
|
486
|
-
*/
|
487
|
-
(items) => {
|
488
|
-
this.victimSupportTypes = items;
|
489
|
-
}));
|
490
|
-
this.victimService.getWeaponTypes().subscribe((/**
|
491
|
-
* @param {?} items
|
492
|
-
* @return {?}
|
493
|
-
*/
|
494
|
-
(items) => {
|
495
|
-
this.weaponTypes = items;
|
496
|
-
}));
|
497
|
-
this.victimService.getDrugsTypes().subscribe((/**
|
498
|
-
* @param {?} items
|
499
|
-
* @return {?}
|
500
|
-
*/
|
501
|
-
(items) => {
|
502
|
-
console.log('drug lookup items');
|
503
|
-
console.log(items);
|
504
|
-
this.drugs = items;
|
505
|
-
this.drugs.push({ drugTypeId: 'OTHER', name: 'Other' });
|
506
|
-
console.log(this.drugs);
|
507
|
-
}));
|
508
|
-
// this.victimService.getDocketList(this.offenderId).subscribe(
|
509
|
-
// (items: any) => {
|
510
|
-
// this.docketlist = items;
|
511
|
-
// }
|
512
|
-
// );
|
513
|
-
this.victimForm.get('minorFlag').valueChanges
|
514
|
-
.subscribe((/**
|
515
|
-
* @param {?} value
|
516
|
-
* @return {?}
|
517
|
-
*/
|
518
|
-
value => {
|
519
|
-
// this.victimForm.get('guardianFirstName').updateValueAndValidity();
|
520
|
-
// this.victimForm.get('guardianLastName').updateValueAndValidity();
|
521
|
-
this.victimForm.get('guardianWorkPhone').updateValueAndValidity();
|
522
|
-
this.victimForm.get('guardianHomePhone').updateValueAndValidity();
|
523
|
-
this.victimForm.get('guardianCellPhone').updateValueAndValidity();
|
524
|
-
}));
|
525
|
-
this.victimForm.get('victimAdvocateFlag').valueChanges
|
526
|
-
.subscribe((/**
|
527
|
-
* @param {?} value
|
528
|
-
* @return {?}
|
529
|
-
*/
|
530
|
-
value => {
|
531
|
-
this.victimForm.get('advocateFirstName').updateValueAndValidity();
|
532
|
-
this.victimForm.get('advocateLastName').updateValueAndValidity();
|
533
|
-
this.victimForm.get('advocateWorkPhone').updateValueAndValidity();
|
534
|
-
this.victimForm.get('advocateHomePhone').updateValueAndValidity();
|
535
|
-
this.victimForm.get('advocateCellPhone').updateValueAndValidity();
|
536
|
-
}));
|
537
|
-
}
|
538
|
-
/**
|
539
|
-
* @return {?}
|
540
|
-
*/
|
541
|
-
back() {
|
542
|
-
//this.onSave.emit(this.victimDetail);
|
543
|
-
this.router.navigate(['victimList']);
|
544
|
-
}
|
545
|
-
/**
|
546
|
-
* @return {?}
|
547
|
-
*/
|
548
|
-
deleteVictim() {
|
549
|
-
this.commonDialogService
|
550
|
-
.confirm('', 'Do you want to delete this Victim?', 'Yes', 'No')
|
551
|
-
.subscribe((/**
|
552
|
-
* @param {?} res
|
553
|
-
* @return {?}
|
554
|
-
*/
|
555
|
-
res => {
|
556
|
-
this.result = res;
|
557
|
-
if (this.result) {
|
558
|
-
this.victimService.deleteVictims(this.victimDetail.victimId)
|
559
|
-
.subscribe((/**
|
560
|
-
* @param {?} result
|
561
|
-
* @return {?}
|
562
|
-
*/
|
563
|
-
result => {
|
564
|
-
this.snackBar.open('Delete Successfully!', '', {
|
565
|
-
duration: 3000,
|
566
|
-
});
|
567
|
-
}));
|
568
|
-
// this.router.navigate(['victim']);
|
569
|
-
this.onSave.emit(this.victimDetail);
|
570
|
-
}
|
571
|
-
}));
|
572
|
-
}
|
573
|
-
/**
|
574
|
-
* @param {?} $event
|
575
|
-
* @return {?}
|
576
|
-
*/
|
577
|
-
radioMinorChange($event) {
|
578
|
-
// const guardianLastNameControl = this.victimForm.get('guardianLastName');
|
579
|
-
//const guardianFirstNameControl = this.victimForm.get('guardianFirstName');
|
580
|
-
if ($event.value === true) {
|
581
|
-
this.guardianTabFlag = true;
|
582
|
-
// guardianLastNameControl.setValidators(Validators.required);
|
583
|
-
// guardianFirstNameControl.setValidators(Validators.required);
|
584
|
-
//this.victimForm.value.guardianNoPhoneFlag = true;
|
585
|
-
}
|
586
|
-
else {
|
587
|
-
this.guardianTabFlag = false;
|
588
|
-
// guardianLastNameControl.clearValidators();
|
589
|
-
// guardianFirstNameControl.clearValidators();
|
590
|
-
}
|
591
|
-
//guardianLastNameControl.updateValueAndValidity();
|
592
|
-
// guardianFirstNameControl.updateValueAndValidity();
|
593
|
-
}
|
594
|
-
/**
|
595
|
-
* @param {?} $event
|
596
|
-
* @return {?}
|
597
|
-
*/
|
598
|
-
radioAdvocateChange($event) {
|
599
|
-
/** @type {?} */
|
600
|
-
const advocateLastNameControl = this.victimForm.get('advocateLastName');
|
601
|
-
/** @type {?} */
|
602
|
-
const advocateFirstNameControl = this.victimForm.get('advocateFirstName');
|
603
|
-
// const advocateNoPhoneControl = this.victimForm.get('advocateNoPhoneFlag');
|
604
|
-
if ($event.value === "YS") {
|
605
|
-
this.advocateTabFlag = true;
|
606
|
-
advocateLastNameControl.setValidators(Validators.required);
|
607
|
-
advocateFirstNameControl.setValidators(Validators.required);
|
608
|
-
}
|
609
|
-
else {
|
610
|
-
this.advocateTabFlag = false;
|
611
|
-
advocateLastNameControl.clearValidators();
|
612
|
-
advocateFirstNameControl.clearValidators();
|
613
|
-
}
|
614
|
-
advocateLastNameControl.updateValueAndValidity();
|
615
|
-
advocateFirstNameControl.updateValueAndValidity();
|
616
|
-
}
|
617
|
-
/**
|
618
|
-
* @param {?} $event
|
619
|
-
* @return {?}
|
620
|
-
*/
|
621
|
-
radioCicChange($event) {
|
622
|
-
if ($event.value === true) {
|
623
|
-
this.commonChildrenDivFlag = true;
|
624
|
-
// requrie field
|
625
|
-
this.setValidators('commonChildren');
|
626
|
-
}
|
627
|
-
else {
|
628
|
-
this.commonChildrenDivFlag = false;
|
629
|
-
}
|
630
|
-
}
|
631
|
-
/**
|
632
|
-
* @param {?} type
|
633
|
-
* @return {?}
|
634
|
-
*/
|
635
|
-
setValidators(type) {
|
636
|
-
if (type == 'commonChildren') {
|
637
|
-
this.victimForm.get('commonChildrenNumber').clearValidators();
|
638
|
-
this.victimForm.get('commonChildrenNumber').setValidators(Validators.required);
|
639
|
-
}
|
640
|
-
else if (type == 'cpo') {
|
641
|
-
this.victimForm.get('cpoExpirationDate').clearValidators();
|
642
|
-
this.victimForm.get('cpoExpirationDate').setValidators(Validators.required);
|
643
|
-
}
|
644
|
-
}
|
645
|
-
/**
|
646
|
-
* @param {?} $event
|
647
|
-
* @return {?}
|
648
|
-
*/
|
649
|
-
radioSupportChange($event) {
|
650
|
-
if ($event.value === true) {
|
651
|
-
this.supportInPlaceDivFlag = true;
|
652
|
-
}
|
653
|
-
else {
|
654
|
-
this.supportInPlaceDivFlag = false;
|
655
|
-
}
|
656
|
-
}
|
657
|
-
/**
|
658
|
-
* @param {?} $event
|
659
|
-
* @return {?}
|
660
|
-
*/
|
661
|
-
radioWeaponChange($event) {
|
662
|
-
if ($event.value === true) {
|
663
|
-
this.weaponInvolvedDivFlag = true;
|
664
|
-
}
|
665
|
-
else {
|
666
|
-
this.weaponInvolvedDivFlag = false;
|
667
|
-
}
|
668
|
-
}
|
669
|
-
/**
|
670
|
-
* @param {?} $event
|
671
|
-
* @return {?}
|
672
|
-
*/
|
673
|
-
radioDrugChange($event) {
|
674
|
-
if ($event.value === true) {
|
675
|
-
this.drugUseDivFlag = true;
|
676
|
-
}
|
677
|
-
else {
|
678
|
-
this.drugUseDivFlag = false;
|
679
|
-
}
|
680
|
-
}
|
681
|
-
/**
|
682
|
-
* @param {?} $event
|
683
|
-
* @return {?}
|
684
|
-
*/
|
685
|
-
radioCpoChange($event) {
|
686
|
-
if ($event.value === true) {
|
687
|
-
this.cpoExpirationDivFlag = true;
|
688
|
-
this.setValidators('cpo');
|
689
|
-
}
|
690
|
-
else {
|
691
|
-
this.cpoExpirationDivFlag = false;
|
692
|
-
}
|
693
|
-
}
|
694
|
-
/**
|
695
|
-
* @param {?} $event
|
696
|
-
* @return {?}
|
697
|
-
*/
|
698
|
-
handleDOBChange($event) {
|
699
|
-
/** @type {?} */
|
700
|
-
var ageDifMs = Date.now() - $event.value;
|
701
|
-
/** @type {?} */
|
702
|
-
var ageDate = new Date(ageDifMs);
|
703
|
-
if (Math.abs(ageDate.getUTCFullYear() - 1970) <= 18) {
|
704
|
-
this.snackBar.open('Victim is a Minor. This information is a sensitive and should not be disclosed to any unauthorized parties. Contact the legal guardian.', '', {
|
705
|
-
duration: 6000,
|
706
|
-
});
|
707
|
-
/** @type {?} */
|
708
|
-
const minorControl = this.victimForm.get('minorFlag');
|
709
|
-
minorControl.setValue(true);
|
710
|
-
// const guardianLastNameControl = this.victimForm.get('guardianLastName');
|
711
|
-
// const guardianFirstNameControl = this.victimForm.get('guardianFirstName');
|
712
|
-
this.guardianTabFlag = true;
|
713
|
-
// guardianLastNameControl.setValidators(Validators.required);
|
714
|
-
// guardianFirstNameControl.setValidators(Validators.required);
|
715
|
-
}
|
716
|
-
}
|
717
|
-
/**
|
718
|
-
* @param {?} WeaponUse
|
719
|
-
* @return {?}
|
720
|
-
*/
|
721
|
-
checkOtherWeapon(WeaponUse) {
|
722
|
-
/** @type {?} */
|
723
|
-
const otherWeaponControl = this.victimForm.get('otherWeapon');
|
724
|
-
if (WeaponUse.includes("OTHER")) {
|
725
|
-
this.otherWeaponFlag = true;
|
726
|
-
otherWeaponControl.setValidators(Validators.required);
|
727
|
-
}
|
728
|
-
else {
|
729
|
-
this.otherWeaponFlag = false;
|
730
|
-
otherWeaponControl.clearValidators();
|
731
|
-
}
|
732
|
-
otherWeaponControl.updateValueAndValidity();
|
733
|
-
}
|
734
|
-
/**
|
735
|
-
* @param {?} DrugUse
|
736
|
-
* @return {?}
|
737
|
-
*/
|
738
|
-
checkOtherDrug(DrugUse) {
|
739
|
-
/** @type {?} */
|
740
|
-
const otherDrugControl = this.victimForm.get('otherDrug');
|
741
|
-
if (DrugUse.includes("OTHER")) {
|
742
|
-
this.otherDrugFlag = true;
|
743
|
-
otherDrugControl.setValidators(Validators.required);
|
744
|
-
}
|
745
|
-
else {
|
746
|
-
this.otherDrugFlag = false;
|
747
|
-
otherDrugControl.clearValidators();
|
748
|
-
}
|
749
|
-
otherDrugControl.updateValueAndValidity();
|
750
|
-
}
|
751
|
-
//#region "save victim"
|
752
|
-
/**
|
753
|
-
* @return {?}
|
754
|
-
*/
|
755
|
-
saveVictim() {
|
756
|
-
//var myPath = this.router.url.slice(-10)
|
757
|
-
//guardian phone logic
|
758
|
-
if (!this.victimForm.value.guardianNoPhoneFlag) {
|
759
|
-
if (this.victimForm.value.guardianHomePhone) {
|
760
|
-
if (this.victimForm.value.guardianHomePhone !== null) {
|
761
|
-
if (this.victimForm.value.guardianHomePhone !== "") {
|
762
|
-
this.guardianPhoneExistFlag = true;
|
763
|
-
}
|
764
|
-
}
|
765
|
-
}
|
766
|
-
if (this.victimForm.value.guardianWorkPhone !== undefined) {
|
767
|
-
if (this.victimForm.value.guardianWorkPhone !== null) {
|
768
|
-
if (this.victimForm.value.guardianWorkPhone !== "") {
|
769
|
-
this.guardianPhoneExistFlag = true;
|
770
|
-
}
|
771
|
-
}
|
772
|
-
}
|
773
|
-
if (this.victimForm.value.guardianCellPhone) {
|
774
|
-
if (this.victimForm.value.guardianCellPhone !== null) {
|
775
|
-
if (this.victimForm.value.guardianCellhone !== "") {
|
776
|
-
this.guardianPhoneExistFlag = true;
|
777
|
-
}
|
778
|
-
}
|
779
|
-
}
|
780
|
-
}
|
781
|
-
console.log('this.victimForm.value.guardianNoPhoneFlag');
|
782
|
-
console.log(this.victimForm.value.guardianNoPhoneFlag);
|
783
|
-
console.log('this.guardianPhoneExistFlag');
|
784
|
-
console.log(this.guardianPhoneExistFlag);
|
785
|
-
if (this.guardianPhoneExistFlag === false && this.victimForm.value.guardianNoPhoneFlag === false) {
|
786
|
-
this.phoneValidationFlag = true;
|
787
|
-
this.commonDialogService
|
788
|
-
.warning('', 'Please check the guardian phone field. You have to fill one of the three phone fileds.', 'Ok')
|
789
|
-
.subscribe((/**
|
790
|
-
* @param {?} res
|
791
|
-
* @return {?}
|
792
|
-
*/
|
793
|
-
res => {
|
794
|
-
this.result = res;
|
795
|
-
}));
|
796
|
-
}
|
797
|
-
console.log('this.phoneValidationFlag');
|
798
|
-
console.log(this.phoneValidationFlag);
|
799
|
-
//advocate phone logic
|
800
|
-
if (!this.victimForm.value.advocateNoPhoneFlag) {
|
801
|
-
if (this.victimForm.value.advocateHomePhone) {
|
802
|
-
if (this.victimForm.value.advocateHomePhone !== null) {
|
803
|
-
if (this.victimForm.value.advocateHomePhone !== "") {
|
804
|
-
this.advocatePhoneExistFlag = true;
|
805
|
-
}
|
806
|
-
}
|
807
|
-
}
|
808
|
-
if (this.victimForm.value.advocateWorkPhone !== undefined) {
|
809
|
-
if (this.victimForm.value.advocateWorkPhone !== null) {
|
810
|
-
if (this.victimForm.value.advocateWorkPhone !== "") {
|
811
|
-
this.advocatePhoneExistFlag = true;
|
812
|
-
}
|
813
|
-
}
|
814
|
-
}
|
815
|
-
if (this.victimForm.value.advocateCellPhone) {
|
816
|
-
if (this.victimForm.value.advocateCellPhone !== null) {
|
817
|
-
if (this.victimForm.value.advocateCellhone !== "") {
|
818
|
-
this.advocatePhoneExistFlag = true;
|
819
|
-
}
|
820
|
-
}
|
821
|
-
}
|
822
|
-
}
|
823
|
-
console.log('this.victimForm.value.advocateNoPhoneFlag');
|
824
|
-
console.log(this.victimForm.value.advocateNoPhoneFlag);
|
825
|
-
console.log('this.advocatePhoneExistFlag');
|
826
|
-
console.log(this.advocatePhoneExistFlag);
|
827
|
-
if (this.advocatePhoneExistFlag === false && this.victimForm.value.advocateNoPhoneFlag === false) {
|
828
|
-
this.phoneValidationFlag = true;
|
829
|
-
this.commonDialogService
|
830
|
-
.warning('', 'Please check the advocate phone field. You have to fill one of the three phone fileds.', 'Ok')
|
831
|
-
.subscribe((/**
|
832
|
-
* @param {?} res
|
833
|
-
* @return {?}
|
834
|
-
*/
|
835
|
-
res => {
|
836
|
-
this.result = res;
|
837
|
-
}));
|
838
|
-
}
|
839
|
-
console.log('this.phoneValidationFlag 1');
|
840
|
-
console.log(this.phoneValidationFlag);
|
841
|
-
if (this.phoneValidationFlag === false) {
|
842
|
-
if (this.victimDetail === null) {
|
843
|
-
//insert new victim
|
844
|
-
/** @type {?} */
|
845
|
-
var myVictimSupports = [];
|
846
|
-
if (this.victimForm.value.victimSupports) {
|
847
|
-
this.victimForm.value.victimSupports.forEach((/**
|
848
|
-
* @param {?} element
|
849
|
-
* @return {?}
|
850
|
-
*/
|
851
|
-
element => {
|
852
|
-
/** @type {?} */
|
853
|
-
const victimSupport = (/** @type {?} */ ({}));
|
854
|
-
victimSupport.victimId = this.victimForm.value.victimId;
|
855
|
-
victimSupport.victimSupportTypeId = element;
|
856
|
-
victimSupport.modifiedBy = this.staffId;
|
857
|
-
myVictimSupports.push(victimSupport);
|
858
|
-
}));
|
859
|
-
}
|
860
|
-
/** @type {?} */
|
861
|
-
var myVictimDrugUses = [];
|
862
|
-
console.log('this.victimForm.value.victimDrugUses during save');
|
863
|
-
console.log(this.victimForm.value.victimDrugUses);
|
864
|
-
if (this.victimForm.value.victimDrugUses) {
|
865
|
-
this.victimForm.value.victimDrugUses.forEach((/**
|
866
|
-
* @param {?} element
|
867
|
-
* @return {?}
|
868
|
-
*/
|
869
|
-
element => {
|
870
|
-
/** @type {?} */
|
871
|
-
const victimDrugUse = (/** @type {?} */ ({}));
|
872
|
-
victimDrugUse.drugTypeId = element;
|
873
|
-
if (element === "OTHER" || element === "" || element === null) {
|
874
|
-
victimDrugUse.drugTypeId = null;
|
875
|
-
victimDrugUse.otherDrug = this.victimForm.value.otherDrug;
|
876
|
-
}
|
877
|
-
else {
|
878
|
-
victimDrugUse.drugTypeId = element;
|
879
|
-
victimDrugUse.otherDrug = null;
|
880
|
-
}
|
881
|
-
victimDrugUse.modifiedBy = this.staffId;
|
882
|
-
victimDrugUse.victimId = this.victimForm.value.victimId;
|
883
|
-
myVictimDrugUses.push(victimDrugUse);
|
884
|
-
}));
|
885
|
-
}
|
886
|
-
console.log('this.victimForm.value.victimDrugUses during save 1');
|
887
|
-
console.log(this.victimForm.value.victimDrugUses);
|
888
|
-
/** @type {?} */
|
889
|
-
var myVictimWeaponUses = [];
|
890
|
-
if (this.victimForm.value.victimWeaponUses) {
|
891
|
-
this.victimForm.value.victimWeaponUses.forEach((/**
|
892
|
-
* @param {?} element
|
893
|
-
* @return {?}
|
894
|
-
*/
|
895
|
-
element => {
|
896
|
-
/** @type {?} */
|
897
|
-
const victimWeaponUse = (/** @type {?} */ ({}));
|
898
|
-
victimWeaponUse.victimId = this.victimForm.value.victimId;
|
899
|
-
victimWeaponUse.weaponTypeId = element;
|
900
|
-
if (element == "OTHER") {
|
901
|
-
victimWeaponUse.otherWeapon = this.victimForm.value.otherWeapon;
|
902
|
-
}
|
903
|
-
else {
|
904
|
-
victimWeaponUse.otherWeapon = null;
|
905
|
-
}
|
906
|
-
victimWeaponUse.modifiedBy = this.staffId;
|
907
|
-
myVictimWeaponUses.push(victimWeaponUse);
|
908
|
-
}));
|
909
|
-
}
|
910
|
-
/** @type {?} */
|
911
|
-
const newVictim = {
|
912
|
-
victimId: 0,
|
913
|
-
offenderId: this.offenderId,
|
914
|
-
victimOffenderRelationshipTypeId: this.victimForm.value.victimOffenderRelationshipTypeId,
|
915
|
-
lastName: this.victimForm.value.lastName,
|
916
|
-
firstName: this.victimForm.value.firstName,
|
917
|
-
middleName: this.victimForm.value.middleName ? this.victimForm.value.middleName : null,
|
918
|
-
prefixId: this.victimForm.value.prefixId ? this.victimForm.value.prefixId : null,
|
919
|
-
suffixId: this.victimForm.value.suffixId ? this.victimForm.value.suffixId : null,
|
920
|
-
birthDate: this.victimForm.value.birthDate ? this.victimForm.value.birthDate : null,
|
921
|
-
genderCode: this.victimForm.value.genderCode ? this.victimForm.value.genderCode : null,
|
922
|
-
underSupervisionFlag: this.victimForm.value.underSupervisionFlag,
|
923
|
-
minorFlag: this.victimForm.value.minorFlag,
|
924
|
-
victimAdvocateFlag: this.victimForm.value.victimAdvocateFlag,
|
925
|
-
homePhone: this.victimForm.value.homePhone ? this.victimForm.value.homePhone : null,
|
926
|
-
workPhone: this.victimForm.value.workPhone ? this.victimForm.value.workPhone : null,
|
927
|
-
cellPhone: this.victimForm.value.cellPhone ? this.victimForm.value.cellPhone : null,
|
928
|
-
email: this.victimForm.value.email ? this.victimForm.value.email : null,
|
929
|
-
addressId: this.victimForm.value.addressId ? this.victimForm.value.addressId : 1,
|
930
|
-
emergencyContact: this.victimForm.value.emergencyContact ? this.victimForm.value.emergencyContact : null,
|
931
|
-
emergencyContactPhone: this.victimForm.value.emergencyContactPhone ? this.victimForm.value.emergencyContactPhone : null,
|
932
|
-
commonChildrenFlag: this.victimForm.value.commonChildrenFlag,
|
933
|
-
commonChildrenNumber: this.victimForm.value.commonChildrenNumber,
|
934
|
-
cpoExpirationFlag: this.victimForm.value.cpoExpirationFlag,
|
935
|
-
cpoExpirationDate: this.victimForm.value.cpoExpirationDate ? this.datePipe.transform(this.victimForm.value.startDate, 'short') : null,
|
936
|
-
supportInPlaceFlag: this.victimForm.value.supportInPlaceFlag,
|
937
|
-
weaponInvolvedFlag: this.victimForm.value.weaponInvolvedFlag,
|
938
|
-
drugUseFlag: this.victimForm.value.drugUseFlag,
|
939
|
-
alcoholUseFlag: this.victimForm.value.alcoholUseFlag,
|
940
|
-
accessRisk: this.victimForm.value.accessRisk,
|
941
|
-
modifiedBy: this.staffId,
|
942
|
-
vVictimAdvocate: null,
|
943
|
-
vVictimGuardian: null,
|
944
|
-
victimDrugUses: myVictimDrugUses,
|
945
|
-
victimSupports: myVictimSupports,
|
946
|
-
victimWeaponUses: myVictimWeaponUses,
|
947
|
-
advocateFirstName: null,
|
948
|
-
advocateLastName: null,
|
949
|
-
advocateEmail: null,
|
950
|
-
advocatePrefixId: null,
|
951
|
-
advocateSuffixId: null,
|
952
|
-
advocateNoPhoneFlag: null,
|
953
|
-
advocateHomePhone: null,
|
954
|
-
advocateWorkPhone: null,
|
955
|
-
advocateCellPhone: null,
|
956
|
-
advocateAddressId: null,
|
957
|
-
guardianFirstName: null,
|
958
|
-
guardianLastName: null,
|
959
|
-
guardianEmail: null,
|
960
|
-
guardianPrefixId: null,
|
961
|
-
guardianSuffixId: null,
|
962
|
-
guardianNoPhoneFlag: null,
|
963
|
-
guardianHomePhone: null,
|
964
|
-
guardianWorkPhone: null,
|
965
|
-
guardianCellPhone: null,
|
966
|
-
guardianAddressId: null,
|
967
|
-
guardianBirthDate: null,
|
968
|
-
relationship: null,
|
969
|
-
allowCsosaContactFlag: null
|
970
|
-
};
|
971
|
-
if (this.addressId == 0) {
|
972
|
-
newVictim.addressId = null;
|
973
|
-
}
|
974
|
-
else {
|
975
|
-
newVictim.addressId = this.addressId;
|
976
|
-
}
|
977
|
-
newVictim.advocateAddressId = this.advocateAddressId;
|
978
|
-
newVictim.guardianAddressId = this.guardianAddressId;
|
979
|
-
console.log('newVictim');
|
980
|
-
console.log(newVictim);
|
981
|
-
this.victimService.postVictims(newVictim).subscribe((/**
|
982
|
-
* @param {?} items
|
983
|
-
* @return {?}
|
984
|
-
*/
|
985
|
-
(items) => {
|
986
|
-
/** @type {?} */
|
987
|
-
const id = items ? items.victimId : '';
|
988
|
-
if (this.victimForm.value.victimAdvocateFlag == "YS") {
|
989
|
-
console.log('add advocate');
|
990
|
-
/** @type {?} */
|
991
|
-
const victimAdvocate = {
|
992
|
-
victimAdvocateId: id,
|
993
|
-
lastName: this.victimForm.value.advocateLastName,
|
994
|
-
firstName: this.victimForm.value.advocateFirstName,
|
995
|
-
prefixId: this.victimForm.value.advocatePrefixId,
|
996
|
-
suffixId: this.victimForm.value.advocateSuffixId,
|
997
|
-
addressId: this.advocateAddressId ? this.advocateAddressId : null,
|
998
|
-
noPhoneFlag: this.victimForm.value.advocateNoPhoneFlag ? this.victimForm.value.advocateNoPhoneFlag : null,
|
999
|
-
homePhone: this.victimForm.value.advocateHomePhone,
|
1000
|
-
workPhone: this.victimForm.value.advocateWorkPhone,
|
1001
|
-
cellPhone: this.victimForm.value.advocateCellPhone,
|
1002
|
-
email: this.victimForm.value.advocateEmail,
|
1003
|
-
modifiedBy: this.staffId
|
1004
|
-
};
|
1005
|
-
this.victimService.postVictimAdvocate(id, victimAdvocate).subscribe();
|
1006
|
-
}
|
1007
|
-
if (this.victimForm.value.minorFlag == true) {
|
1008
|
-
/** @type {?} */
|
1009
|
-
const victimGuardian = {
|
1010
|
-
victimGuardianId: id,
|
1011
|
-
lastName: this.victimForm.value.guardianLastName,
|
1012
|
-
firstName: this.victimForm.value.guardianFirstName,
|
1013
|
-
prefixId: this.victimForm.value.guardianPrefixId,
|
1014
|
-
suffixId: this.victimForm.value.guardianSuffixId,
|
1015
|
-
birthDate: this.victimForm.value.guardianBirthDate,
|
1016
|
-
addressId: this.guardianAddressId ? this.guardianAddressId : null,
|
1017
|
-
noPhoneFlag: this.victimForm.value.guardianNoPhoneFlag ? this.victimForm.value.guardianNoPhoneFlag : null,
|
1018
|
-
homePhone: this.victimForm.value.guardianHomePhone,
|
1019
|
-
workPhone: this.victimForm.value.guardianWorkPhone,
|
1020
|
-
cellPhone: this.victimForm.value.guardianCellPhone,
|
1021
|
-
email: this.victimForm.value.guardianEmail,
|
1022
|
-
modifiedBy: this.staffId
|
1023
|
-
};
|
1024
|
-
this.victimService.postVictimGuardian(id, victimGuardian).subscribe();
|
1025
|
-
}
|
1026
|
-
this.snackBar.open('Add Victim Successfully!', '', {
|
1027
|
-
duration: 3000,
|
1028
|
-
});
|
1029
|
-
//insert new
|
1030
|
-
if (this.isIntake === true) {
|
1031
|
-
this.router.navigate(['victimHome']);
|
1032
|
-
}
|
1033
|
-
else {
|
1034
|
-
this.router.navigate(['victimList']);
|
1035
|
-
}
|
1036
|
-
//this.onSave.emit(this.victimDetail);
|
1037
|
-
}));
|
1038
|
-
}
|
1039
|
-
else {
|
1040
|
-
//update victim
|
1041
|
-
console.log(' this.victimForm.value.victimOffenderRelationshipTypeId');
|
1042
|
-
console.log(this.victimForm.value.victimOffenderRelationshipTypeId);
|
1043
|
-
this.victimDetail.underSupervisionFlag = this.victimForm.value.underSupervisionFlag;
|
1044
|
-
this.victimDetail.victimOffenderRelationshipTypeId = this.victimForm.value.victimOffenderRelationshipTypeId;
|
1045
|
-
this.victimDetail.lastName = this.victimForm.value.lastName;
|
1046
|
-
this.victimDetail.firstName = this.victimForm.value.firstName;
|
1047
|
-
this.victimDetail.middleName = this.victimForm.value.middleName;
|
1048
|
-
this.victimDetail.prefixId = this.victimForm.value.prefixId ? this.victimForm.value.prefixId : null;
|
1049
|
-
this.victimDetail.suffixId = this.victimForm.value.suffixId ? this.victimForm.value.suffixId : null;
|
1050
|
-
this.victimDetail.birthDate = this.victimForm.value.birthDate;
|
1051
|
-
this.victimDetail.genderCode = this.victimForm.value.genderCode;
|
1052
|
-
this.victimDetail.minorFlag = this.victimForm.value.minorFlag;
|
1053
|
-
this.victimDetail.homePhone = this.victimForm.value.homePhone ? this.victimForm.value.homePhone : null;
|
1054
|
-
this.victimDetail.workPhone = this.victimForm.value.workPhone ? this.victimForm.value.workPhone : null;
|
1055
|
-
this.victimDetail.cellPhone = this.victimForm.value.cellPhone ? this.victimForm.value.cellPhone : null;
|
1056
|
-
this.victimDetail.email = this.victimForm.value.email;
|
1057
|
-
this.victimDetail.victimAdvocateFlag = this.victimForm.value.victimAdvocateFlag;
|
1058
|
-
this.victimDetail.emergencyContact = this.victimForm.value.emergencyContact;
|
1059
|
-
this.victimDetail.emergencyContactPhone = this.victimForm.value.emergencyContactPhone ? this.victimForm.value.emergencyContactPhone : null;
|
1060
|
-
this.victimDetail.commonChildrenFlag = this.victimForm.value.commonChildrenFlag;
|
1061
|
-
this.victimDetail.commonChildrenNumber = this.victimForm.value.commonChildrenNumber;
|
1062
|
-
this.victimDetail.cpoExpirationDate = this.victimForm.value.cpoExpirationDate;
|
1063
|
-
this.victimDetail.cpoExpirationFlag = this.victimForm.value.cpoExpirationFlag;
|
1064
|
-
this.victimDetail.supportInPlaceFlag = this.victimForm.value.supportInPlaceFlag;
|
1065
|
-
this.victimDetail.weaponInvolvedFlag = this.victimForm.value.weaponInvolvedFlag;
|
1066
|
-
this.victimDetail.drugUseFlag = this.victimForm.value.drugUseFlag;
|
1067
|
-
this.victimDetail.alcoholUseFlag = this.victimForm.value.alcoholUseFlag;
|
1068
|
-
this.victimDetail.accessRisk = this.victimForm.value.accessRisk;
|
1069
|
-
this.victimDetail.addressId = this.victimForm.value.addressId;
|
1070
|
-
this.victimDetail.allowCsosaContactFlag = this.victimForm.value.allowCsosaContactFlag;
|
1071
|
-
this.victimDetail.victimSupports = [];
|
1072
|
-
this.victimForm.value.victimSupports.forEach((/**
|
1073
|
-
* @param {?} element
|
1074
|
-
* @return {?}
|
1075
|
-
*/
|
1076
|
-
element => {
|
1077
|
-
/** @type {?} */
|
1078
|
-
const victimSupport = (/** @type {?} */ ({}));
|
1079
|
-
victimSupport.victimId = this.victimDetail.victimId;
|
1080
|
-
victimSupport.victimSupportTypeId = element;
|
1081
|
-
victimSupport.modifiedBy = this.staffId;
|
1082
|
-
this.victimDetail.victimSupports.push(victimSupport);
|
1083
|
-
}));
|
1084
|
-
this.victimDetail.victimDrugUses = [];
|
1085
|
-
console.log('this.victimForm.value.victimDrugUses calculate');
|
1086
|
-
console.log(this.victimForm.value.victimDrugUses);
|
1087
|
-
this.victimForm.value.victimDrugUses.forEach((/**
|
1088
|
-
* @param {?} element
|
1089
|
-
* @return {?}
|
1090
|
-
*/
|
1091
|
-
element => {
|
1092
|
-
/** @type {?} */
|
1093
|
-
const victimDrugUse = (/** @type {?} */ ({}));
|
1094
|
-
victimDrugUse.drugTypeId = element;
|
1095
|
-
console.log('this.victimForm.value.victimDrugUses before');
|
1096
|
-
console.log(this.victimForm.value.victimDrugUses);
|
1097
|
-
if (element === "OTHER" || element === "") {
|
1098
|
-
victimDrugUse.drugTypeId = null;
|
1099
|
-
victimDrugUse.otherDrug = this.victimForm.value.otherDrug;
|
1100
|
-
}
|
1101
|
-
else {
|
1102
|
-
victimDrugUse.drugTypeId = element;
|
1103
|
-
victimDrugUse.otherDrug = null;
|
1104
|
-
}
|
1105
|
-
victimDrugUse.modifiedBy = this.staffId;
|
1106
|
-
victimDrugUse.victimId = this.victimDetail.victimId;
|
1107
|
-
this.victimDetail.victimDrugUses.push(victimDrugUse);
|
1108
|
-
console.log('this.victimForm.value.victimDrugUses after');
|
1109
|
-
console.log(this.victimForm.value.victimDrugUses);
|
1110
|
-
}));
|
1111
|
-
this.victimForm.value.victimDrugUses.filter((/**
|
1112
|
-
* @param {?} word
|
1113
|
-
* @return {?}
|
1114
|
-
*/
|
1115
|
-
word => (!(word.drugTypeId === null && word.otherDrug === null))));
|
1116
|
-
console.log('adjust this.victimForm.value.victimDrugUses ');
|
1117
|
-
console.log(this.victimForm.value.victimDrugUses);
|
1118
|
-
this.victimDetail.victimWeaponUses = [];
|
1119
|
-
this.victimForm.value.victimWeaponUses.forEach((/**
|
1120
|
-
* @param {?} element
|
1121
|
-
* @return {?}
|
1122
|
-
*/
|
1123
|
-
element => {
|
1124
|
-
/** @type {?} */
|
1125
|
-
const victimWeaponUse = (/** @type {?} */ ({}));
|
1126
|
-
victimWeaponUse.victimId = this.victimDetail.victimId;
|
1127
|
-
victimWeaponUse.weaponTypeId = element;
|
1128
|
-
console.log('weapon element');
|
1129
|
-
console.log(element);
|
1130
|
-
console.log(this.victimForm.value.otherWeapon);
|
1131
|
-
console.log(this.victimForm.value.victimWeaponUses);
|
1132
|
-
if (element == "OTHER") {
|
1133
|
-
victimWeaponUse.otherWeapon = this.victimForm.value.otherWeapon;
|
1134
|
-
}
|
1135
|
-
else {
|
1136
|
-
victimWeaponUse.otherWeapon = null;
|
1137
|
-
}
|
1138
|
-
victimWeaponUse.modifiedBy = this.staffId;
|
1139
|
-
this.victimDetail.victimWeaponUses.push(victimWeaponUse);
|
1140
|
-
}));
|
1141
|
-
console.log('this.victimDetail before emit');
|
1142
|
-
console.log(this.victimDetail);
|
1143
|
-
this.victimService.putVictims(this.victimDetail.victimId, this.victimDetail).subscribe((/**
|
1144
|
-
* @param {?} items
|
1145
|
-
* @return {?}
|
1146
|
-
*/
|
1147
|
-
(items) => {
|
1148
|
-
this.snackBar.open('Update Successfully!', '', {
|
1149
|
-
duration: 3000,
|
1150
|
-
});
|
1151
|
-
//Advocate section
|
1152
|
-
this.victimAdvocate.victimAdvocateId = this.victimDetail.victimId;
|
1153
|
-
this.victimAdvocate.lastName = this.victimForm.value.advocateLastName;
|
1154
|
-
this.victimAdvocate.firstName = this.victimForm.value.advocateFirstName;
|
1155
|
-
this.victimAdvocate.prefixId = this.victimForm.value.advocatePrefixId ? this.victimForm.value.advocatePrefixId : null;
|
1156
|
-
this.victimAdvocate.suffixId = this.victimForm.value.advocateSuffixId ? this.victimForm.value.advocateSuffixId : null;
|
1157
|
-
this.victimAdvocate.addressId = this.advocateAddressId ? this.advocateAddressId : null;
|
1158
|
-
this.victimAdvocate.noPhoneFlag = this.victimForm.value.advocateNoPhoneFlag ? true : false;
|
1159
|
-
this.victimAdvocate.homePhone = this.victimForm.value.advocateHomePhone ? this.victimForm.value.advocateHomePhone : null;
|
1160
|
-
this.victimAdvocate.workPhone = this.victimForm.value.advocateWorkPhone ? this.victimForm.value.advocateWorkPhone : null;
|
1161
|
-
this.victimAdvocate.cellPhone = this.victimForm.value.advocateCellPhone ? this.victimForm.value.advocateCellPhone : null;
|
1162
|
-
this.victimAdvocate.email = this.victimForm.value.advocateEmail ? this.victimForm.value.advocateEmail : null;
|
1163
|
-
this.victimAdvocate.modifiedBy = this.staffId;
|
1164
|
-
if (this.victimDetail.victimAdvocateFlag == 'YS') {
|
1165
|
-
if (this.victimDetail.advocateFirstName != null) {
|
1166
|
-
this.victimService.putVictimAdvocate(this.victimDetail.victimId, this.victimAdvocate).subscribe((/**
|
1167
|
-
* @param {?} resp
|
1168
|
-
* @return {?}
|
1169
|
-
*/
|
1170
|
-
resp => { }));
|
1171
|
-
}
|
1172
|
-
else {
|
1173
|
-
console.log('add advocate');
|
1174
|
-
console.log(this.victimAdvocate);
|
1175
|
-
this.victimService.postVictimAdvocate(this.victimDetail.victimId, this.victimAdvocate).subscribe();
|
1176
|
-
}
|
1177
|
-
}
|
1178
|
-
// guardian section
|
1179
|
-
this.victimGuardian.victimGuardianId = this.victimDetail.victimId;
|
1180
|
-
this.victimGuardian.lastName = this.victimForm.value.guardianLastName;
|
1181
|
-
this.victimGuardian.firstName = this.victimForm.value.guardianFirstName;
|
1182
|
-
this.victimGuardian.prefixId = this.victimForm.value.guardianPrefixId ? this.victimForm.value.guardianPrefixId : null;
|
1183
|
-
this.victimGuardian.suffixId = this.victimForm.value.guardianSuffixId ? this.victimForm.value.guardianSuffixId : null;
|
1184
|
-
this.victimGuardian.addressId = this.guardianAddressId ? this.guardianAddressId : null;
|
1185
|
-
this.victimGuardian.noPhoneFlag = this.victimForm.value.guardianNoPhoneFlag ? true : false;
|
1186
|
-
this.victimGuardian.homePhone = this.victimForm.value.guardianHomePhone ? this.victimForm.value.guardianHomePhone : null;
|
1187
|
-
this.victimGuardian.workPhone = this.victimForm.value.guardianWorkPhone ? this.victimForm.value.guardianWorkPhone : null;
|
1188
|
-
this.victimGuardian.cellPhone = this.victimForm.value.guardianCellPhone ? this.victimForm.value.guardianCellPhone : null;
|
1189
|
-
this.victimGuardian.email = this.victimForm.value.guardianEmail ? this.victimForm.value.guardianEmail : null;
|
1190
|
-
this.victimGuardian.modifiedBy = this.staffId;
|
1191
|
-
if (this.victimDetail.minorFlag == true) {
|
1192
|
-
if (this.victimDetail.guardianFirstName != null)
|
1193
|
-
this.victimService.putVictimGuardian(this.victimDetail.victimId, this.victimGuardian).subscribe((/**
|
1194
|
-
* @param {?} resp
|
1195
|
-
* @return {?}
|
1196
|
-
*/
|
1197
|
-
resp => {
|
1198
|
-
}));
|
1199
|
-
else {
|
1200
|
-
console.log('add gurdian');
|
1201
|
-
console.log(this.victimGuardian);
|
1202
|
-
this.victimService.postVictimGuardian(this.victimDetail.victimId, this.victimGuardian).subscribe();
|
1203
|
-
}
|
1204
|
-
}
|
1205
|
-
}));
|
1206
|
-
}
|
1207
|
-
} //end of this.phoneValidationFlag = false
|
1208
|
-
this.onSave.emit(this.victimDetail);
|
1209
|
-
}
|
1210
|
-
//#endregion "save victim"
|
1211
|
-
/**
|
1212
|
-
* @return {?}
|
1213
|
-
*/
|
1214
|
-
addContact() {
|
1215
|
-
this.router.navigate(['victimContact', this.victimId]);
|
1216
|
-
}
|
1217
|
-
/**
|
1218
|
-
* @param {?} value
|
1219
|
-
* @return {?}
|
1220
|
-
*/
|
1221
|
-
formatLabel(value) {
|
1222
|
-
return value;
|
1223
|
-
}
|
1224
|
-
}
|
1225
|
-
SmartVictimDetailComponent.decorators = [
|
1226
|
-
{ type: Component, args: [{
|
1227
|
-
selector: 'csmart-victim-detail',
|
1228
|
-
template: "<mat-card>\r\n <mat-card-content>\r\n\r\n <div [formGroup]=\"victimForm\">\r\n\r\n <mat-tab-group dynamicHeight mat-stretch-tabs>\r\n <mat-tab label=\"Victim Detail\" >\r\n <div class='container'>\r\n\r\n <mat-form-field>\r\n <mat-label>Is victim a minor?<font color=\"red\">* </font></mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"minorFlag\" (change)=\"radioMinorChange($event)\" [(ngModel)]=\"editVictim.minorFlag\" >\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('minorFlag').errors \r\n && (victimForm.get('minorFlag').dirty || victimForm.get('minorFlag').touched)\">\r\n <mat-error>If victim a minor field is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Does the Victim have a Victim Advocate or Social Worker with <br>whom CSOSA should maintain contact?<font color=\"red\">* </font></mat-label>\r\n <br>\r\n <br>\r\n <mat-radio-group class = \"tp-radio-group\" formControlName=\"victimAdvocateFlag\" (change)=\"radioAdvocateChange($event)\" [(ngModel)]=\"editVictim.victimAdvocateFlag\">\r\n <mat-radio-button color=\"primary\" *ngFor=\"let item of flagOption\" [value]=\"item.flagOptionYesNoUnknownId\">{{item.name}} </mat-radio-button> \r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('victimAdvocateFlag').errors \r\n && (victimForm.get('victimAdvocateFlag').dirty || victimForm.get('victimAdvocateFlag').touched)\">\r\n <mat-error>If victim has advocate field is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n \r\n \r\n <mat-form-field>\r\n <mat-label>Victim Currently Under Supervision:</mat-label>\r\n <mat-select formControlName=\"underSupervisionFlag\" name=\"supervision\" [(ngModel)]=\"editVictim.underSupervisionFlag\" >\r\n <mat-option *ngFor=\"let item of flagOption\" [value]=\"item.flagOptionYesNoUnknownId\" >\r\n {{item.name}}</mat-option>\r\n </mat-select>\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('underSupervisionFlag').errors \r\n && (victimForm.get('underSupervisionFlag').dirty || victimForm.get('underSupervisionFlag').touched)\">\r\n <mat-error>under supervision field is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n \r\n \r\n <mat-form-field>\r\n <mat-label>Relationship to Offender:</mat-label>\r\n <mat-select formControlName=\"victimOffenderRelationshipTypeId\" [(ngModel)]=\"editVictim.victimOffenderRelationshipTypeId\" >\r\n <mat-option *ngFor=\"let item of relationshipTypes\" [value]=\"item.relationshipTypeId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('victimOffenderRelationshipTypeId').errors \r\n && (victimForm.get('victimOffenderRelationshipTypeId').dirty || victimForm.get('victimOffenderRelationshipTypeId').touched)\">\r\n <mat-error>relationship is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n \r\n \r\n <mat-form-field>\r\n <mat-label>Victim Last Name:</mat-label>\r\n <input matInput formControlName=\"lastName\" [(ngModel)]=\"editVictim.lastName\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('lastName').errors \r\n && (victimForm.get('lastName').dirty || victimForm.get('lastName').touched)\">\r\n <mat-error>victim last name is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Victim First Name: </mat-label>\r\n <input matInput formControlName=\"firstName\" [(ngModel)]=\"editVictim.firstName\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('firstName').errors \r\n && (victimForm.get('firstName').dirty || victimForm.get('firstName').touched)\">\r\n <mat-error>victim first name is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Victim Middle Name:</mat-label>\r\n <input matInput formControlName=\"middleName\" [(ngModel)]=\"editVictim.middleName\">\r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Victim Prefix:</mat-label>\r\n <mat-select formControlName=\"prefixId\" [(ngModel)]=\"editVictim.prefixId\">\r\n <mat-option *ngFor=\"let item of prefixes\" [value]=\"item.prefixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Victim Suffix:</mat-label>\r\n <mat-select formControlName=\"suffixId\" [(ngModel)]=\"editVictim.suffixId\">\r\n <mat-option *ngFor=\"let item of suffixes\" [value]=\"item.suffixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Victim Gender:</mat-label>\r\n <mat-select formControlName=\"genderCode\" [(ngModel)]=\"editVictim.genderCode\">\r\n <mat-option *ngFor=\"let item of genders\" [value]=\"item.genderCode\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Date of Birth:</mat-label>\r\n <input matInput \r\n [matDatepicker]=\"victimBirthRef\" \r\n formControlName=\"birthDate\"\r\n [(ngModel)]=\"editVictim.birthDate\"\r\n (click)=\"victimBirthRef.open()\"\r\n (dateChange)=\"handleDOBChange($event)\" \r\n >\r\n <mat-datepicker-toggle [for]=\"victimBirthRef\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #victimBirthRef></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Victim Home Phone:</mat-label>\r\n <input \r\n matInput \r\n formControlName=\"homePhone\" \r\n [(ngModel)]=\"editVictim.homePhone\" \r\n phoneMask\r\n maxlength=\"14\"/>\r\n\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('homePhone').errors\r\n && (victimForm.get('homePhone').dirty || victimForm.get('homePhone').touched)\">\r\n\r\n\r\n <mat-error><strong>Home phone number format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n <mat-form-field >\r\n <mat-label>Victim Cell Phone:</mat-label>\r\n <input matInput formControlName=\"cellPhone\" [(ngModel)]=\"editVictim.cellPhone\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('cellPhone').errors \r\n && (victimForm.get('cellPhone').dirty || victimForm.get('cellPhone').touched)\">\r\n <mat-error><strong>Cell phone number format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n \r\n <mat-form-field >\r\n <mat-label>Victim Work Phone:</mat-label>\r\n <input matInput formControlName=\"workPhone\" [(ngModel)]=\"editVictim.workPhone\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('workPhone').errors \r\n && (victimForm.get('workPhone').dirty || victimForm.get('workPhone').touched)\">\r\n <mat-error><strong>Work phone number format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n <mat-form-field >\r\n <mat-label>Victim Email:</mat-label>\r\n <input matInput formControlName=\"email\" [(ngModel)]=\"editVictim.email\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('email').errors \r\n && (victimForm.get('email').dirty || victimForm.get('email').touched)\">\r\n <mat-error><strong>victim email format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n \r\n <div></div>\r\n \r\n <app-smart-address \r\n [showPsa]=\"true\" \r\n [modifiedBy]=\"staffId\" \r\n [id]=\"addressId\"\r\n (addressIdChange)=\"onAddressChange($event)\"\r\n [outline]=\"true\" \r\n readonly=\"false\"\r\n [rowHeight]=\"80\" \r\n (isValid)=\"false\" \r\n [addressValidators]=\"addressValidators\"\r\n #addressComponent\r\n >\r\n </app-smart-address>\r\n \r\n \r\n <!-- Docket: \r\n <div>\r\n <div *ngFor=\"let docket of docketlist; let i=index\">\r\n <mat-checkbox >{{docket.docketNumber}}</mat-checkbox>\r\n </div>\r\n </div> -->\r\n\r\n <mat-checkbox color=\"primary\" formControlName=\"allowCsosaContactFlag\" name=\"allowCsosaContactFlag\" [(ngModel)]=\"editVictim.allowCsosaContactFlag\">victim wants to be contacted by CSOSA</mat-checkbox>\r\n \r\n </div> \r\n\r\n <mat-card>\r\n <mat-form-field>\r\n <mat-label> Children in Common</mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"commonChildrenFlag\" [(ngModel)]=\"editVictim.commonChildrenFlag\" (change)=\"radioCicChange($event)\">\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n\r\n <div *ngIf=\"commonChildrenDivFlag\">\r\n \r\n <mat-form-field >\r\n <mat-label>\r\n Children number\r\n </mat-label>\r\n <input matInput formControlName=\"commonChildrenNumber\" [(ngModel)]=\"editVictim.commonChildrenNumber\" >\r\n </mat-form-field>\r\n \r\n </div>\r\n \r\n <mat-form-field>\r\n <mat-label>CPO: </mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"cpoExpirationFlag\" [(ngModel)]=\"editVictim.cpoExpirationFlag\" (change)=\"radioCpoChange($event)\">\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n <div *ngIf=\"cpoExpirationDivFlag\"> \r\n <mat-form-field>\r\n <mat-label>Expiration Date: </mat-label>\r\n <input matInput \r\n [matDatepicker]=\"cpoDateRef\" \r\n formControlName=\"cpoExpirationDate\" \r\n (click)=\"cpoDateRef.open()\" \r\n [(ngModel)]=\"editVictim.cpoExpirationDate\" >\r\n <mat-datepicker-toggle [for]=\"cpoDateRef\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #cpoDateRef></mat-datepicker>\r\n </mat-form-field>\r\n\r\n </div>\r\n \r\n <br>\r\n <br>\r\n \r\n <mat-form-field>\r\n <mat-label>Victim has a Support System in Place? </mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"supportInPlaceFlag\" [(ngModel)]=\"editVictim.supportInPlaceFlag\" (change)=\"radioSupportChange($event)\">\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n <div *ngIf=\"supportInPlaceDivFlag\"> \r\n <mat-form-field>\r\n <mat-label>Support type? </mat-label>\r\n <mat-select #supportSel formControlName=\"victimSupports\" [(ngModel)]=\"editVictim.victimSupports\" multiple>\r\n <div (mouseleave)=\"supportSel.close()\">\r\n <mat-option color=\"primary\" *ngFor=\"let item of victimSupportTypes\" [value]=\"item.victimSupportTypeId\">\r\n {{item.name}}\r\n </mat-option>\r\n </div>\r\n </mat-select>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n\r\n </div>\r\n \r\n <br>\r\n <br>\r\n\r\n <mat-form-field>\r\n <mat-label>Weapons Involved?</mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"weaponInvolvedFlag\" (change)=\"radioWeaponChange($event)\" [(ngModel)]=\"editVictim.weaponInvolvedFlag\" >\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n \r\n <div *ngIf=\"weaponInvolvedDivFlag\"> \r\n <mat-form-field>\r\n <mat-label>Weapon Type</mat-label>\r\n <mat-select #weaponSel formControlName=\"victimWeaponUses\" multiple [(ngModel)]=\"editVictim.victimWeaponUses\" (selectionChange)=\"checkOtherWeapon($event.value)\" >\r\n <div (mouseleave)=\"weaponSel.close()\">\r\n <mat-option color=\"primary\" *ngFor=\"let item of weaponTypes\" [value]=\"item.weaponTypeId\">\r\n {{item.name}}\r\n </mat-option>\r\n </div>\r\n </mat-select>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div *ngIf=\"otherWeaponFlag\"> \r\n <mat-form-field>\r\n <mat-label>Other Weapon:* </mat-label>\r\n <input matInput formControlName=\"otherWeapon\" >\r\n </mat-form-field>\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('otherWeapon').errors \r\n && (victimForm.get('otherWeapon').dirty || victimForm.get('otherWeapon').touched)\">\r\n <mat-error><strong>Other weapon is required.</strong></mat-error>\r\n </div>\r\n </div>\r\n\r\n \r\n <br>\r\n <br>\r\n \r\n <mat-form-field>\r\n <mat-label>Was Offender under the influence of alcohol at the time of the offense?</mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"alcoholUseFlag\" [(ngModel)]=\"editVictim.alcoholUseFlag\" >\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n <br>\r\n <br>\r\n\r\n <mat-form-field>\r\n <mat-label>Was Offender under the influence of drugs at the time of the offense?</mat-label>\r\n <br>\r\n <mat-radio-group formControlName=\"drugUseFlag\" (change)=\"radioDrugChange($event)\" [(ngModel)]=\"editVictim.drugUseFlag\" >\r\n <mat-radio-button color=\"primary\" [value]=\"true\">Yes</mat-radio-button> \r\n <mat-radio-button color=\"primary\" [value]=\"false\">No</mat-radio-button>\r\n </mat-radio-group>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n <div *ngIf=\"drugUseDivFlag\"> \r\n <mat-form-field>\r\n <mat-label>Drug:</mat-label>\r\n <mat-select #drugSel formControlName=\"victimDrugUses\" multiple (selectionChange)=\"checkOtherDrug($event.value)\" >\r\n <div (mouseleave)=\"drugSel.close()\">\r\n <mat-option color=\"primary\" *ngFor=\"let item of drugs\" [value]=\"item.drugTypeId\">\r\n {{item.name}}\r\n </mat-option>\r\n \r\n </div>\r\n </mat-select>\r\n <input matInput placeholder=\"\" style=\"display: none\">\r\n </mat-form-field>\r\n \r\n </div>\r\n\r\n <div *ngIf=\"otherDrugFlag\"> \r\n <mat-form-field>\r\n <mat-label>Other Drug:* </mat-label>\r\n <input matInput formControlName=\"otherDrug\" >\r\n </mat-form-field>\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('otherDrug').errors \r\n && (victimForm.get('otherDrug').dirty || victimForm.get('otherDrug').touched)\">\r\n <mat-error><strong>Other drug is required.</strong></mat-error>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n\r\n <div>\r\n <div>\r\n <mat-label>\r\n Access Risk: 1 thru 10 (10 greatest risk): <b> {{editVictim.accessRisk}}</b>\r\n </mat-label>\r\n </div>\r\n <div>\r\n \r\n <mat-slider\r\n formControlName=\"accessRisk\"\r\n thumbLabel=\"true\"\r\n [displayWith]=\"formatLabel\"\r\n min=\"1\"\r\n max=\"10\"\r\n [(ngModel)]=\"editVictim.accessRisk\" \r\n ></mat-slider>\r\n \r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card> \r\n\r\n \r\n <br><br><br> \r\n </mat-tab>\r\n \r\n <mat-tab *ngIf=\"guardianTabFlag\" label=\"Legal Guardian\">\r\n <div class='container'>\r\n <mat-form-field>\r\n <mat-label>Guardian Last Name:</mat-label>\r\n <input matInput formControlName=\"guardianLastName\" [(ngModel)]=\"editVictim.guardianLastName\" > \r\n <!-- <div class=\"help-block\" *ngIf=\"victimForm.get('guardianLastName').errors \">\r\n <mat-error>Guardian last name is <strong>required</strong></mat-error>\r\n </div> -->\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Guardian First Name:</mat-label>\r\n <input matInput formControlName=\"guardianFirstName\" [(ngModel)]=\"editVictim.guardianFirstName\" >\r\n <!-- <div class=\"help-block\" *ngIf=\"victimForm.get('guardianFirstName').errors \">\r\n <mat-error>Guardian first name is <strong>required</strong></mat-error>\r\n </div> -->\r\n \r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Guardian Prefix:</mat-label>\r\n <mat-select formControlName=\"guardianPrefixId\" [(ngModel)]=\"editVictim.guardianPrefixId\" >\r\n <mat-option *ngFor=\"let item of prefixes\" [value]=\"item.prefixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Guardian Suffix:</mat-label>\r\n <mat-select formControlName=\"guardianSuffixId\" [(ngModel)]=\"editVictim.guardianSuffixId\" >\r\n <mat-option *ngFor=\"let item of suffixes\" [value]=\"item.suffixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n \r\n <!-- <mat-form-field>\r\n <mat-select placeholder=\"Choose\" formControlName=\"guardianGender\" [(ngModel)]=\"editVictim.guardianGender\">\r\n <mat-option *ngFor=\"let item of genders\" [value]=\"item.genderCode\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field> -->\r\n \r\n \r\n <mat-form-field>\r\n <mat-label>Date of Birth:</mat-label>\r\n <input matInput \r\n [matDatepicker]=\"guardianDateRef\" \r\n formControlName=\"guardianBirthDate\"\r\n [(ngModel)]=\"editVictim.guardianBirthDate\" \r\n (click)=\"guardianDateRef.open()\" \r\n >\r\n <mat-datepicker-toggle [for]=\"guardianDateRef\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #guardianDateRef></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <div></div>\r\n <mat-form-field >\r\n <mat-checkbox \r\n color = \"primary\" \r\n formControlName=\"guardianNoPhoneFlag\" \r\n \r\n >\r\n No Phone (If there is no phone, the phone fields are no longer required)</mat-checkbox>\r\n <input matInput placeholder=\"\" style=\"display: none;\">\r\n </mat-form-field>\r\n\r\n\r\n <div></div>\r\n <mat-card>\r\n <mat-form-field >\r\n <mat-label>Guardian Home Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"guardianHomePhone\" \r\n [(ngModel)]=\"editVictim.guardianHomePhone\" \r\n phoneMask\r\n maxlength=\"14\" >\r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianHomePhone').errors \r\n && (victimForm.get('guardianHomePhone').dirty || victimForm.get('guardianHomePhone').touched)\">\r\n <mat-error><strong>Guardian home phone number format is not correct.</strong></mat-error>\r\n </div>\r\n \r\n\r\n </mat-form-field>\r\n\r\n <mat-form-field >\r\n <mat-label>Guardian Cell Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"guardianCellPhone\" \r\n [(ngModel)]=\"editVictim.guardianCellPhone\" \r\n phoneMask\r\n maxlength=\"14\" \r\n >\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianCellPhone').errors \r\n && (victimForm.get('guardianCellPhone').dirty || victimForm.get('guardianCellPhone').touched)\">\r\n <mat-error><strong>Guardian Cell phone number format is not correct.</strong></mat-error>\r\n </div>\r\n\r\n \r\n\r\n \r\n </mat-form-field>\r\n\r\n <mat-form-field >\r\n <mat-label>Guardian Work Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"guardianWorkPhone\" \r\n [(ngModel)]=\"editVictim.guardianWorkPhone\" \r\n phoneMask\r\n maxlength=\"14\" >\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianWorkPhone').errors \r\n && (victimForm.get('guardianWorkPhone').dirty || victimForm.get('guardianWorkPhone').touched)\">\r\n <mat-error><strong>Guardian work phone number format is not correct.</strong></mat-error>\r\n </div>\r\n \r\n \r\n </mat-form-field>\r\n </mat-card>\r\n \r\n <div></div>\r\n\r\n <mat-form-field>\r\n <mat-label>Guardian Email:</mat-label>\r\n <input matInput formControlName=\"guardianEmail\" [(ngModel)]=\"editVictim.guardianEmail\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianEmail').errors \r\n && (victimForm.get('guardianEmail').dirty || victimForm.get('guardianEmail').touched)\">\r\n <mat-error><strong>Guardian email format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n <div></div>\r\n \r\n <div>\r\n <app-smart-address \r\n\r\n [showPsa]=\"true\" \r\n [modifiedBy]=\"staffId\" \r\n [id]=\"guardianAddressId\"\r\n (addressIdChange)=\"onGuardianAddressChange($event)\"\r\n [outline]=\"true\" \r\n readonly=\"false\"\r\n [rowHeight]=\"80\" \r\n (isValid)=\"false\" \r\n [addressValidators]=\"addressValidators\"\r\n #guardianAddressComponent\r\n >\r\n </app-smart-address>\r\n </div>\r\n </div>\r\n \r\n <br><br><br> \r\n </mat-tab>\r\n \r\n <!--advocate-->\r\n \r\n <mat-tab *ngIf=\"advocateTabFlag\" label=\"Advocate\" > \r\n <div class='container'>\r\n \r\n <mat-form-field>\r\n <mat-label>Advocate Last Name:</mat-label>\r\n <input matInput formControlName=\"advocateLastName\" [(ngModel)]=\"editVictim.advocateLastName\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateLastName').errors \">\r\n <mat-error>Advocate last name is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Advocate First Name:</mat-label>\r\n <input matInput formControlName=\"advocateFirstName\" [(ngModel)]=\"editVictim.advocateFirstName\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateFirstName').errors \">\r\n <mat-error>Advocate first name is <strong>required</strong></mat-error>\r\n </div> \r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Advocate Prefix:</mat-label>\r\n <mat-select formControlName=\"advocatePrefixId\" [(ngModel)]=\"editVictim.advocatePrefixId\" >\r\n <mat-option *ngFor=\"let item of prefixes\" [value]=\"item.prefixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Advocate Suffix:</mat-label>\r\n <mat-select formControlName=\"advocateSuffixId\" [(ngModel)]=\"editVictim.advocateSuffixId\" >\r\n <mat-option *ngFor=\"let item of suffixes\" [value]=\"item.suffixId\">{{item.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n \r\n <mat-form-field>\r\n <mat-checkbox \r\n color = \"primary\" \r\n formControlName=\"advocateNoPhoneFlag\" \r\n \r\n [(ngModel)]=\"editVictim.advocateNoPhoneFlag\" >\r\n No Phone (If there is no phone, the phone fields are no longer required)</mat-checkbox>\r\n <input matInput placeholder=\"\" style=\"display: none;\">\r\n </mat-form-field>\r\n\r\n <div></div> \r\n <mat-card> \r\n <mat-form-field >\r\n <mat-label>Advocate Home Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"advocateHomePhone\" \r\n [(ngModel)]=\"editVictim.advocateHomePhone\"\r\n phoneMask\r\n maxlength=\"14\" >\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateHomePhone').errors \r\n && (victimForm.get('advocateHomePhone').dirty || victimForm.get('advocateHomePhone').touched)\">\r\n <mat-error><strong>Advocate home number format is not correct.</strong></mat-error>\r\n </div>\r\n \r\n </mat-form-field>\r\n \r\n <mat-form-field>\r\n <mat-label>Advocate Cell Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"advocateCellPhone\" \r\n [(ngModel)]=\"editVictim.advocateCellPhone\" \r\n phoneMask\r\n maxlength=\"14\">\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateCellPhone').errors \r\n && (victimForm.get('advocateCellPhone').dirty || victimForm.get('advocateCellPhone').touched)\">\r\n <mat-error><strong>Advocate cell number format is not correct.</strong></mat-error>\r\n </div>\r\n\r\n \r\n </mat-form-field> \r\n\r\n <mat-form-field>\r\n <mat-label>Advocate Work Phone:</mat-label>\r\n <input matInput \r\n formControlName=\"advocateWorkPhone\" \r\n [(ngModel)]=\"editVictim.advocateWorkPhone\" \r\n phoneMask\r\n maxlength=\"14\"\r\n >\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateWorkPhone').errors \r\n && (victimForm.get('advocateWorkPhone').dirty || victimForm.get('advocateWorkPhone').touched)\">\r\n <mat-error><strong>Advocate work number format is not correct.</strong></mat-error>\r\n </div>\r\n \r\n </mat-form-field>\r\n </mat-card>\r\n\r\n <div></div>\r\n \r\n <mat-form-field>\r\n <mat-label>Advocate Email:</mat-label>\r\n <input matInput formControlName=\"advocateEmail\" [(ngModel)]=\"editVictim.advocateEmail\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateEmail').errors \r\n && (victimForm.get('advocateEmail').dirty || victimForm.get('advocateEmail').touched)\">\r\n <mat-error><strong>Advocate email format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n <div></div>\r\n\r\n \r\n <div >\r\n <app-smart-address \r\n [showPsa]=\"true\" \r\n [modifiedBy]=\"staffId\" \r\n [id]=\"advocateAddressId\"\r\n (addressIdChange)=\"onAdvocateAddressChange($event)\"\r\n [outline]=\"true\" \r\n readonly=\"false\"\r\n [rowHeight]=\"80\" \r\n (isValid)=\"false\" \r\n [addressValidators]=\"addressValidators\"\r\n #advocateAddressComponent >\r\n </app-smart-address>\r\n </div>\r\n </div>\r\n <br><br><br> \r\n </mat-tab>\r\n \r\n \r\n <mat-tab label=\"Emergency Contact\">\r\n <div class='container'>\r\n \r\n <mat-form-field>\r\n <mat-label>Emergency Contact Name:</mat-label>\r\n <input matInput formControlName=\"emergencyContact\" [(ngModel)]=\"editVictim.emergencyContact\" >\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Emergency Phone Number:</mat-label>\r\n <input matInput formControlName=\"emergencyContactPhone\" [(ngModel)]=\"editVictim.emergencyContactPhone\" >\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('emergencyContactPhone').errors \r\n && (victimForm.get('emergencyContactPhone').dirty || victimForm.get('emergencyContactPhone').touched)\">\r\n <mat-error><strong>Emergency contact number format is not correct.</strong></mat-error>\r\n </div>\r\n </mat-form-field>\r\n\r\n </div>\r\n <br><br><br> \r\n </mat-tab> \r\n \r\n </mat-tab-group>\r\n <div class='outer'>\r\n <div>\r\n All buttons apply to all tabs. If save button is grey, please check each tab to make sure the required field is filled.<br><br>\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('minorFlag').errors \r\n && (victimForm.get('minorFlag').dirty || victimForm.get('minorFlag').touched)\">\r\n <mat-error>If victim a minor field is <strong>required</strong></mat-error>\r\n </div>\r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('victimAdvocateFlag').errors \r\n && (victimForm.get('victimAdvocateFlag').dirty || victimForm.get('victimAdvocateFlag').touched)\">\r\n <mat-error>If victim has advocate field is <strong>required</strong></mat-error>\r\n </div> \r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('underSupervisionFlag').errors \r\n && (victimForm.get('underSupervisionFlag').dirty || victimForm.get('underSupervisionFlag').touched)\">\r\n <mat-error>Under supervision field is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('victimOffenderRelationshipTypeId').errors \r\n && (victimForm.get('victimOffenderRelationshipTypeId').dirty || victimForm.get('victimOffenderRelationshipTypeId').touched)\">\r\n <mat-error>Relationship is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('lastName').errors \r\n && (victimForm.get('lastName').dirty || victimForm.get('lastName').touched)\">\r\n <mat-error>Victim last name is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('firstName').errors \r\n && (victimForm.get('firstName').dirty || victimForm.get('firstName').touched)\">\r\n <mat-error>victim first name is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianFirstName').errors \r\n && (victimForm.get('guardianFirstName').dirty || victimForm.get('guardianFirstName').touched)\">\r\n <mat-error>Guardian first name is <strong>required</strong></mat-error>\r\n </div>\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('guardianLastName').errors\r\n && (victimForm.get('guardianLastName').dirty || victimForm.get('guardianLastName').touched)\" >\r\n <mat-error>Guardian last name is <strong>required</strong></mat-error>\r\n </div> \r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateLastName').errors\r\n && (victimForm.get('advocateLastName').dirty || victimForm.get('advocateLastName').touched)\" >\r\n <mat-error>Advocate last name is <strong>required</strong></mat-error>\r\n </div> \r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('advocateFirstName').errors\r\n && (victimForm.get('advocateFirstName').dirty || victimForm.get('advocateFirstName').touched)\">\r\n <mat-error>Advocate first name is <strong>required</strong></mat-error>\r\n </div>\r\n\r\n \r\n <div class=\"help-block\" *ngIf=\"victimForm.get('otherWeapon').errors \r\n && (victimForm.get('otherWeapon').dirty || victimForm.get('otherWeapon').touched)\">\r\n <mat-error>Other weapon field is <strong>required</strong></mat-error>\r\n </div>\r\n\r\n <div class=\"help-block\" *ngIf=\"victimForm.get('otherDrug').errors \r\n && (victimForm.get('otherDrug').dirty || victimForm.get('otherDrug').touched)\">\r\n <mat-error>Other drug field is <strong>required</strong></mat-error>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n <div class=\"inner\">\r\n <button mat-raised-button color=\"primary\" (click)=\"saveVictim()\" [disabled]=\"!victimForm.valid\" >Save </button> \r\n </div>\r\n \r\n <div *ngIf=\"showDelete\" class=\"inner\">\r\n <button mat-raised-button color=\"primary\" (click)=\"deleteVictim()\">Delete </button>\r\n </div>\r\n \r\n <div class=\"inner\">\r\n <button mat-raised-button color=\"primary\" (click)=\"cancel()\">Clear </button>\r\n </div>\r\n \r\n <button mat-raised-button color=\"primary\" (click)=\"back()\">Back</button>\r\n\r\n </div>\r\n\r\n </div>\r\n <br>\r\n <br>\r\n\r\n <div align=\"right\">\r\n <button mat-raised-button color=\"primary\" (click)=\"addContact()\" >Add victim contact</button>\r\n </div>\r\n \r\n <div>\r\n\r\n <mat-table #table [dataSource]=\"contactDataSource\" class=\"example-table\">\r\n <ng-container matColumnDef=\"contactDate\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Contact Date</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.contactDate | date}} </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"victimContactMethod\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Contact Method</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.victimContactMethod}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"nextContactDate\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Next Contact Date</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.nextContactDate | date}} </mat-cell>\r\n </ng-container>\r\n \r\n \r\n <ng-container matColumnDef=\"staff\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Contact By</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.staff}} </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"comment\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Comment</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.comment}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"contactId\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\"></mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\">\r\n \r\n </mat-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"['contactDate', 'victimContactMethod','nextContactDate', 'staff', 'comment', 'contactId']\" class=\"example-header-row\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns:['contactDate', 'victimContactMethod','nextContactDate', 'staff', 'comment', 'contactId'];\" class=\"example-row\"></mat-row>\r\n </mat-table>\r\n\r\n\r\n </div>\r\n \r\n </mat-card-content>\r\n</mat-card>\r\n",
|
1229
|
-
providers: [CommonDialogService],
|
1230
|
-
styles: ["mat-form-field{width:100%}.container{margin:16px;display:-ms-grid;display:grid;-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,1fr);grid-gap:10px;grid-auto-rows:minmax(50px,auto);justify-items:stretch}@media only screen and (max-width:1120px){.container{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;grid-row-gap:15px}}@media only screen and (max-width:675px){.container{display:flex;flex-direction:column}}#outer{width:100%;text-align:center}.inner{display:inline-block}.tp-radio-group{display:flex;justify-content:space-between}"]
|
1231
|
-
}] }
|
1232
|
-
];
|
1233
|
-
/** @nocollapse */
|
1234
|
-
SmartVictimDetailComponent.ctorParameters = () => [
|
1235
|
-
{ type: Location },
|
1236
|
-
{ type: FormBuilder },
|
1237
|
-
{ type: MatDialog },
|
1238
|
-
{ type: ActivatedRoute },
|
1239
|
-
{ type: Router },
|
1240
|
-
{ type: MatSnackBar },
|
1241
|
-
{ type: CommonDialogService },
|
1242
|
-
{ type: NgcSmartVictimService }
|
1243
|
-
];
|
1244
|
-
SmartVictimDetailComponent.propDecorators = {
|
1245
|
-
victimDetail: [{ type: Input }],
|
1246
|
-
staffId: [{ type: Input }],
|
1247
|
-
offenderId: [{ type: Input }],
|
1248
|
-
isIntake: [{ type: Input }],
|
1249
|
-
onSave: [{ type: Output }],
|
1250
|
-
onCancel: [{ type: Output }]
|
1251
|
-
};
|
1252
|
-
if (false) {
|
1253
|
-
/** @type {?} */
|
1254
|
-
SmartVictimDetailComponent.prototype.victimDetail;
|
1255
|
-
/** @type {?} */
|
1256
|
-
SmartVictimDetailComponent.prototype.staffId;
|
1257
|
-
/** @type {?} */
|
1258
|
-
SmartVictimDetailComponent.prototype.offenderId;
|
1259
|
-
/** @type {?} */
|
1260
|
-
SmartVictimDetailComponent.prototype.isIntake;
|
1261
|
-
/** @type {?} */
|
1262
|
-
SmartVictimDetailComponent.prototype.onSave;
|
1263
|
-
/** @type {?} */
|
1264
|
-
SmartVictimDetailComponent.prototype.onCancel;
|
1265
|
-
/** @type {?} */
|
1266
|
-
SmartVictimDetailComponent.prototype.victimId;
|
1267
|
-
/** @type {?} */
|
1268
|
-
SmartVictimDetailComponent.prototype.victimForm;
|
1269
|
-
/** @type {?} */
|
1270
|
-
SmartVictimDetailComponent.prototype.drugs;
|
1271
|
-
/** @type {?} */
|
1272
|
-
SmartVictimDetailComponent.prototype.victimSupportTypes;
|
1273
|
-
/** @type {?} */
|
1274
|
-
SmartVictimDetailComponent.prototype.prefixes;
|
1275
|
-
/** @type {?} */
|
1276
|
-
SmartVictimDetailComponent.prototype.suffixes;
|
1277
|
-
/** @type {?} */
|
1278
|
-
SmartVictimDetailComponent.prototype.relationshipTypes;
|
1279
|
-
/** @type {?} */
|
1280
|
-
SmartVictimDetailComponent.prototype.genders;
|
1281
|
-
/** @type {?} */
|
1282
|
-
SmartVictimDetailComponent.prototype.docketlist;
|
1283
|
-
/** @type {?} */
|
1284
|
-
SmartVictimDetailComponent.prototype.weaponTypes;
|
1285
|
-
/** @type {?} */
|
1286
|
-
SmartVictimDetailComponent.prototype.flagOption;
|
1287
|
-
/** @type {?} */
|
1288
|
-
SmartVictimDetailComponent.prototype.selectedWeaponTypes;
|
1289
|
-
/** @type {?} */
|
1290
|
-
SmartVictimDetailComponent.prototype.selectedVictimSupportTypes;
|
1291
|
-
/** @type {?} */
|
1292
|
-
SmartVictimDetailComponent.prototype.selectedDrugs;
|
1293
|
-
/** @type {?} */
|
1294
|
-
SmartVictimDetailComponent.prototype.id;
|
1295
|
-
/** @type {?} */
|
1296
|
-
SmartVictimDetailComponent.prototype.hidden;
|
1297
|
-
/**
|
1298
|
-
* @type {?}
|
1299
|
-
* @private
|
1300
|
-
*/
|
1301
|
-
SmartVictimDetailComponent.prototype.sub;
|
1302
|
-
/** @type {?} */
|
1303
|
-
SmartVictimDetailComponent.prototype.victimAdvocate;
|
1304
|
-
/** @type {?} */
|
1305
|
-
SmartVictimDetailComponent.prototype.victimGuardian;
|
1306
|
-
/** @type {?} */
|
1307
|
-
SmartVictimDetailComponent.prototype.victimWeaponUse;
|
1308
|
-
/** @type {?} */
|
1309
|
-
SmartVictimDetailComponent.prototype.victimSupport;
|
1310
|
-
/** @type {?} */
|
1311
|
-
SmartVictimDetailComponent.prototype.victimDrugUse;
|
1312
|
-
/** @type {?} */
|
1313
|
-
SmartVictimDetailComponent.prototype.result;
|
1314
|
-
/** @type {?} */
|
1315
|
-
SmartVictimDetailComponent.prototype.editMode;
|
1316
|
-
/** @type {?} */
|
1317
|
-
SmartVictimDetailComponent.prototype.guardianTabFlag;
|
1318
|
-
/** @type {?} */
|
1319
|
-
SmartVictimDetailComponent.prototype.advocateTabFlag;
|
1320
|
-
/** @type {?} */
|
1321
|
-
SmartVictimDetailComponent.prototype.commonChildrenDivFlag;
|
1322
|
-
/** @type {?} */
|
1323
|
-
SmartVictimDetailComponent.prototype.cpoExpirationDivFlag;
|
1324
|
-
/** @type {?} */
|
1325
|
-
SmartVictimDetailComponent.prototype.supportInPlaceDivFlag;
|
1326
|
-
/** @type {?} */
|
1327
|
-
SmartVictimDetailComponent.prototype.weaponInvolvedDivFlag;
|
1328
|
-
/** @type {?} */
|
1329
|
-
SmartVictimDetailComponent.prototype.drugUseDivFlag;
|
1330
|
-
/** @type {?} */
|
1331
|
-
SmartVictimDetailComponent.prototype.showDelete;
|
1332
|
-
/** @type {?} */
|
1333
|
-
SmartVictimDetailComponent.prototype.addressId;
|
1334
|
-
/** @type {?} */
|
1335
|
-
SmartVictimDetailComponent.prototype.advocateAddressId;
|
1336
|
-
/** @type {?} */
|
1337
|
-
SmartVictimDetailComponent.prototype.guardianAddressId;
|
1338
|
-
/** @type {?} */
|
1339
|
-
SmartVictimDetailComponent.prototype.datePipe;
|
1340
|
-
/** @type {?} */
|
1341
|
-
SmartVictimDetailComponent.prototype.emailPattern;
|
1342
|
-
/** @type {?} */
|
1343
|
-
SmartVictimDetailComponent.prototype.phoneNumber;
|
1344
|
-
/** @type {?} */
|
1345
|
-
SmartVictimDetailComponent.prototype.editVictim;
|
1346
|
-
/** @type {?} */
|
1347
|
-
SmartVictimDetailComponent.prototype.victimAge;
|
1348
|
-
/** @type {?} */
|
1349
|
-
SmartVictimDetailComponent.prototype.otherWeaponFlag;
|
1350
|
-
/** @type {?} */
|
1351
|
-
SmartVictimDetailComponent.prototype.otherDrugFlag;
|
1352
|
-
/** @type {?} */
|
1353
|
-
SmartVictimDetailComponent.prototype.contactDataSource;
|
1354
|
-
/** @type {?} */
|
1355
|
-
SmartVictimDetailComponent.prototype.contactList;
|
1356
|
-
/** @type {?} */
|
1357
|
-
SmartVictimDetailComponent.prototype.guardianPhoneExistFlag;
|
1358
|
-
/** @type {?} */
|
1359
|
-
SmartVictimDetailComponent.prototype.advocatePhoneExistFlag;
|
1360
|
-
/** @type {?} */
|
1361
|
-
SmartVictimDetailComponent.prototype.phoneValidationFlag;
|
1362
|
-
/** @type {?} */
|
1363
|
-
SmartVictimDetailComponent.prototype.guaridanNoPhoneChkFlag;
|
1364
|
-
/** @type {?} */
|
1365
|
-
SmartVictimDetailComponent.prototype.advocateNoPhoneChkFlag;
|
1366
|
-
/** @type {?} */
|
1367
|
-
SmartVictimDetailComponent.prototype.addressValidators;
|
1368
|
-
/**
|
1369
|
-
* @type {?}
|
1370
|
-
* @private
|
1371
|
-
*/
|
1372
|
-
SmartVictimDetailComponent.prototype.location;
|
1373
|
-
/**
|
1374
|
-
* @type {?}
|
1375
|
-
* @private
|
1376
|
-
*/
|
1377
|
-
SmartVictimDetailComponent.prototype.formBuilder;
|
1378
|
-
/**
|
1379
|
-
* @type {?}
|
1380
|
-
* @private
|
1381
|
-
*/
|
1382
|
-
SmartVictimDetailComponent.prototype.dialog;
|
1383
|
-
/**
|
1384
|
-
* @type {?}
|
1385
|
-
* @private
|
1386
|
-
*/
|
1387
|
-
SmartVictimDetailComponent.prototype.route;
|
1388
|
-
/**
|
1389
|
-
* @type {?}
|
1390
|
-
* @private
|
1391
|
-
*/
|
1392
|
-
SmartVictimDetailComponent.prototype.router;
|
1393
|
-
/** @type {?} */
|
1394
|
-
SmartVictimDetailComponent.prototype.snackBar;
|
1395
|
-
/**
|
1396
|
-
* @type {?}
|
1397
|
-
* @private
|
1398
|
-
*/
|
1399
|
-
SmartVictimDetailComponent.prototype.commonDialogService;
|
1400
|
-
/**
|
1401
|
-
* @type {?}
|
1402
|
-
* @private
|
1403
|
-
*/
|
1404
|
-
SmartVictimDetailComponent.prototype.victimService;
|
1405
|
-
}
|
1406
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmljdGltLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3NtYXJ0L25nYy1zbWFydC12aWN0aW0vIiwic291cmNlcyI6WyJsaWIvc21hcnQtdmljdGltLWRldGFpbC9zbWFydC12aWN0aW0tZGV0YWlsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQWEsV0FBVyxFQUFDLFVBQVUsRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxTQUFTLEVBQUMsV0FBVyxFQUFpQixRQUFRLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBYyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUMsTUFBSSx1QkFBdUIsQ0FBQztBQUczRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUc1RCwrQkFFQzs7OztBQUNELDhCQUVDOzs7Ozs7O0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFNBQW9CLEVBQ3ZELFNBQXNCLEVBQ3RCLGNBQXVCO0lBQ3pCLE9BQU87Ozs7SUFBQyxXQUFXLENBQUMsRUFBRTtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQztTQUNYOztZQUNHLEtBQUssR0FBRyxJQUFJO1FBQ2hCLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDakIsS0FBSyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksY0FBYyxJQUFJLEtBQUssRUFBRTs7a0JBQ3ZCLFdBQVcsR0FBRyxFQUFFO1lBQ3RCLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDcEMsS0FBSyxHQUFHLFdBQVcsQ0FBQTtTQUNsQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2IsQ0FBQyxFQUFDLENBQUE7QUFDRixDQUFDOzs7Ozs7O0FBR0QsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFNBQW1CLEVBQzVELFNBQXNCLEVBQ3RCLGNBQXVCO0lBQ3pCLE9BQU87Ozs7SUFBQyxXQUFXLENBQUMsRUFBRTtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQztTQUNYOztZQUNHLEtBQUssR0FBRyxJQUFJO1FBQ2hCLElBQUksU0FBUyxFQUFFLElBQUUsSUFBSSxFQUFFO1lBQ3ZCLEtBQUssR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDOUI7UUFDRCxJQUFJLGNBQWMsSUFBSSxLQUFLLEVBQUU7O2tCQUN2QixXQUFXLEdBQUcsRUFBRTtZQUN0QixXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLEtBQUssR0FBRyxXQUFXLENBQUE7U0FDbEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNiLENBQUMsRUFBQyxDQUFBO0FBQ0YsQ0FBQztBQVFELE1BQU0sT0FBTywwQkFBMEI7Ozs7Ozs7Ozs7O0lBd0V0QyxZQUNXLFFBQWtCLEVBQ2xCLFdBQXdCLEVBQ3hCLE1BQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZixRQUFxQixFQUNwQixtQkFBd0MsRUFDeEMsYUFBb0M7UUFQcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3BCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBL0VyQyxpQkFBWSxHQUFHLG1CQUFRLEVBQUUsRUFBQSxDQUFDO1FBS3pCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBb0J4QyxXQUFNLEdBQVUsSUFBSSxDQUFDO1FBRXJCLG1CQUFjLEdBQW9CLG1CQUFnQixFQUFFLEVBQUEsQ0FBQztRQUNyRCxtQkFBYyxHQUFtQixtQkFBZ0IsRUFBRSxFQUFBLENBQUM7UUFNcEQsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLHlCQUFvQixHQUFhLEtBQUssQ0FBQztRQUN2QywwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFDdkMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFDOUIsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLGFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLDBDQUEwQyxDQUFDO1FBQzFELGdCQUFXLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLGVBQVUsR0FBVyxtQkFBUSxFQUFFLEVBQUEsQ0FBQztRQUVoQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQixzQkFBaUIsR0FBRSxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFFNUMsMkJBQXNCLEdBQWEsS0FBSyxDQUFDO1FBQ3pDLDJCQUFzQixHQUFhLEtBQUssQ0FBQztRQUN6Qyx3QkFBbUIsR0FBYSxLQUFLLENBQUM7UUFDdEMsMkJBQXNCLEdBQVksSUFBSSxDQUFDO1FBQ3ZDLDJCQUFzQixHQUFhLElBQUksQ0FBQztRQUV4QyxzQkFBaUIsR0FBc0I7WUFDckMsTUFBTSxFQUFFLEVBQUU7WUFDVixPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQVdHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7OztJQUVPLFFBQVE7UUFFZixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLG9CQUFvQixFQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDdEYsZ0NBQWdDLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNoRyxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN6RSxTQUFTLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMxRSxVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDL0IsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUMvQixVQUFVLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ2hDLFNBQVMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDaEMsU0FBUyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUUsQ0FBQyxDQUFDO1lBQzNGLFNBQVMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFFLENBQUMsQ0FBQztZQUMzRixTQUFTLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFDLENBQUM7WUFDM0YsS0FBSyxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUUsQ0FBQyxDQUFDO1lBQ3ZGLFNBQVMsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLGtCQUFrQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbkYsZ0JBQWdCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ3RDLGlCQUFpQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRTtZQUN2QyxnQkFBZ0IsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDdEMsZ0JBQWdCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHOztZQUV2QyxpQkFBaUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDeEMsbUJBQW1CLEVBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO1lBRXpDLGlCQUFpQixFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUUsQ0FBRSxDQUFDO1lBQ25HLGlCQUFpQixFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUUsQ0FBRSxDQUFDO1lBQ25HLGlCQUFpQixFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUUsQ0FBRSxDQUFDO1lBR25HLGFBQWEsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFFLENBQUMsQ0FBQztZQUMvRixtQkFBbUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFHMUMsaUJBQWlCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFFLENBQUM7WUFDcEcsaUJBQWlCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFFLENBQUM7WUFDcEcsaUJBQWlCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFFLENBQUM7WUFHckcsZ0JBQWdCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ3RDLGdCQUFnQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUN2QyxpQkFBaUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsMEJBQTBCOzs7WUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDbEssZ0JBQWdCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLDBCQUEwQjs7O1lBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLEdBQUUsVUFBVSxDQUFDLFFBQVEsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9KLGFBQWEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFFLENBQUMsQ0FBQztZQUNoRyxnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDdkMscUJBQXFCLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFDLENBQUM7WUFDdEcsaUJBQWlCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ3hDLFlBQVksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDbkMsYUFBYSxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNuQyxnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDdkMsZUFBZSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUN0QyxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQzNCLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDN0IsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUM5QixrQkFBa0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDekMsb0JBQW9CLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQzFDLGlCQUFpQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUN4QyxpQkFBaUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDeEMsVUFBVSxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNoQyxXQUFXLEVBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ2pDLGtCQUFrQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUN6QyxrQkFBa0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDekMsV0FBVyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNsQyxTQUFTLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFHO1lBQ2hDLGNBQWMsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDcEMsY0FBYyxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNwQyxnQkFBZ0IsRUFBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7WUFDdEMsY0FBYyxFQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBRztZQUNwQyxxQkFBcUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUc7U0FHakQsQ0FBQyxDQUFDO1FBRUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBRWpDLENBQUM7Ozs7O0lBRU8sVUFBVTtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFO1lBRXZCLE9BQU87U0FDUjtRQUFBLENBQUM7UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVM7Ozs7Z0JBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM1QixDQUFDLEVBQUMsQ0FBQzthQUNKO1lBRUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztpQkFDMUMsU0FBUzs7OztZQUFDLENBQUMsTUFBYyxFQUFFLEVBQUU7Z0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsbUJBQVEsTUFBTSxFQUFBLENBQUM7O29CQUU3QixZQUFZLEdBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsT0FBTzs7OztnQkFBRSxDQUFDLENBQUEsRUFBRSxHQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQTs7c0JBQ3BGLHFCQUFxQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2dCQUNuRSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7O29CQUd6QyxjQUFjLEdBQUUsRUFBRTs7b0JBQ2xCLFdBQVcsR0FBRyxFQUFFO2dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU87Ozs7Z0JBQUUsQ0FBQyxDQUFBLEVBQUU7b0JBQzNDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNwQyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksT0FBTyxFQUFDO3dCQUM1QixXQUFXLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7cUJBQzdCO2dCQUVILENBQUMsRUFBRyxDQUFBOztzQkFHRSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDdkUsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDOztzQkFFM0Msa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7OztvQkFLckMsV0FBVyxHQUFFLEVBQUU7O29CQUNmLFNBQVMsR0FBRyxFQUFFO2dCQUVsQixPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7Z0JBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsT0FBTzs7OztnQkFBRSxDQUFDLENBQUEsRUFBRTtvQkFFekMsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLElBQUksRUFBQzt3QkFDeEIsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO3dCQUMxQixDQUFDLENBQUMsVUFBVSxHQUFFLE9BQU8sQ0FBQztxQkFFdkI7b0JBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRWpDLENBQUMsRUFBRyxDQUFBO2dCQUVKLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQzs7c0JBSW5CLHFCQUFxQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2dCQUNuRSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7O3NCQUV0QyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7Z0JBQ3pELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFJckMsU0FBUztnQkFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUzs7OztnQkFDckQsV0FBVyxDQUFDLEVBQUU7b0JBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7b0JBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDakQsQ0FBQyxFQUNGLENBQUM7Z0JBRUYsZ0JBQWdCO2dCQUVoQixJQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEtBQUssS0FBSyxFQUFFO29CQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7aUJBQzFEO2dCQUNELElBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsS0FBSyxLQUFLLEVBQUU7b0JBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztpQkFDMUQ7WUFFSCxDQUFDOzs7O1lBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMscUVBQXFFLENBQUMsQ0FBQztZQUM1RixDQUFDLEVBQUMsQ0FBQztZQUNMLE9BQU87U0FDUjthQUFNO1lBQ0gsS0FBSztTQUVQO0lBQ0YsQ0FBQzs7OztJQUVELFdBQVc7SUFFWCxDQUFDOzs7OztJQUVELGVBQWUsQ0FBQyxTQUFTO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7UUFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFDRCx1QkFBdUIsQ0FBQyxtQkFBbUI7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxDQUFDLENBQUE7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFJLG1CQUFtQixDQUFDO0lBQ2hELENBQUM7Ozs7O0lBQ0QsdUJBQXVCLENBQUMsbUJBQW1CO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQyxDQUFBO1FBQ3BFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztJQUMvQyxDQUFDOzs7O0lBQ0QsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7OztJQUtDLFFBQVE7UUFFTixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7Ozs7Y0FNckIsc0JBQXNCLEdBQUcsRUFBQyxHQUFHOzs7WUFBQztnQkFBbUIsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFDO29CQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztpQkFBQztnQkFDakcsSUFBRyxJQUFJLENBQUMsU0FBUyxJQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFDeEU7OzBCQUFPLGlCQUFpQixHQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztvQkFBQyxDQUFDLG1CQUFBLGlCQUFpQixFQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUMsSUFBSSxDQUFDO29CQUM5RCxPQUFNLENBQUMsVUFBVSxJQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFBQztnQkFDL0UsT0FBTyxLQUFLLENBQUM7WUFBQSxDQUFDLENBQUEsRUFBQyxHQUFHOzs7O1lBQUMsVUFBUyxLQUFhLElBQUUsSUFBSSxDQUFDLFNBQVMsR0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQSxHQUFFO1FBQzFGLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsc0JBQXNCLENBQUUsQ0FBQztRQUM3RSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLHNCQUFzQixDQUFFLENBQUM7UUFDOUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxzQkFBc0IsQ0FBRSxDQUFDO1FBQ3RGLG9CQUFvQjtRQUluQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUUsSUFBSSxFQUFFO1lBQzNCLGNBQWM7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFFLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBRTNDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFHbkQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixJQUFFLElBQUksRUFBQztnQkFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7YUFDaEM7WUFFRixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFDOztzQkFDekIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUM3RCxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBRXZEO1lBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksRUFBQzs7c0JBQ3ZCLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFDekQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUVyRDtZQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1lBQ2xFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1lBQ2xFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1lBQ2xFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztZQUM5RCxJQUFJLENBQUMsaUJBQWlCLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztZQUU5RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FFbkI7YUFBTTtZQUNMLGdCQUFnQjtZQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFDLG1CQUFtQixFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1NBRXpEO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDdkQsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUMsRUFDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQ3ZDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLEVBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUzs7OztRQUN4QyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxFQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDeEMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUMsRUFDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDakQsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsTUFBTTs7OztZQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLHNCQUFzQixLQUFLLElBQUksQ0FBRSxFQUFDLENBQUM7UUFDM0gsQ0FBQyxFQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDNUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQyxFQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVM7Ozs7UUFDM0MsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsRUFDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQzFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7WUFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxFQUNGLENBQUM7UUFDRiwrREFBK0Q7UUFDL0Qsc0JBQXNCO1FBQ3RCLCtCQUErQjtRQUMvQixNQUFNO1FBRU4sS0FBSztRQUVMLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVk7YUFDNUMsU0FBUzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLHFFQUFxRTtZQUNyRSxvRUFBb0U7WUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFdEUsQ0FBQyxFQUFDLENBQUM7UUFHSCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFlBQVk7YUFDckQsU0FBUzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUV0RSxDQUFDLEVBQUMsQ0FBQztJQUVMLENBQUM7Ozs7SUFFRCxJQUFJO1FBRUYsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUV2QyxDQUFDOzs7O0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxtQkFBbUI7YUFDdkIsT0FBTyxDQUFDLEVBQUUsRUFBRSxvQ0FBb0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO2FBQzlELFNBQVM7Ozs7UUFBQyxHQUFHLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUksR0FBRyxDQUFDO1lBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDYixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztxQkFDMUQsU0FBUzs7OztnQkFBQyxNQUFNLENBQUMsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxFQUFFO3dCQUM3QyxRQUFRLEVBQUUsSUFBSTtxQkFBRyxDQUFDLENBQUM7Z0JBQUEsQ0FBQyxFQUV0QixDQUFDO2dCQUNILG9DQUFvQztnQkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0osQ0FBQyxFQUFDLENBQUM7SUFFTixDQUFDOzs7OztJQUVELGdCQUFnQixDQUFDLE1BQXNCO1FBQ3RDLDJFQUEyRTtRQUMxRSw0RUFBNEU7UUFHNUUsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM3Qiw4REFBOEQ7WUFDOUQsK0RBQStEO1lBQzlELG9EQUFvRDtTQUdyRDthQUNHO1lBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDOUIsNkNBQTZDO1lBQzdDLDhDQUE4QztTQUc5QztRQUVILG1EQUFtRDtRQUNsRCxxREFBcUQ7SUFFdEQsQ0FBQzs7Ozs7SUFFRCxtQkFBbUIsQ0FBQyxNQUFzQjs7Y0FFbEMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7O2NBQ2pFLHdCQUF3QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1FBQ3pFLDZFQUE2RTtRQUk3RSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0Qsd0JBQXdCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUc3RDthQUNHO1lBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFFN0IsdUJBQXVCLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUMsd0JBQXdCLENBQUMsZUFBZSxFQUFFLENBQUM7U0FFNUM7UUFFRCx1QkFBdUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2pELHdCQUF3QixDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFFcEQsQ0FBQzs7Ozs7SUFFRCxjQUFjLENBQUMsTUFBc0I7UUFDbkMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLGdCQUFnQjtZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDdEM7YUFDRztZQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7U0FDcEM7SUFDSCxDQUFDOzs7OztJQUVELGFBQWEsQ0FBQyxJQUFJO1FBQ2hCLElBQUcsSUFBSSxJQUFJLGdCQUFnQixFQUFDO1lBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9FO2FBQ0ksSUFBSSxJQUFJLElBQUksS0FBSyxFQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBRTVFO0lBQ0YsQ0FBQzs7Ozs7SUFDRCxrQkFBa0IsQ0FBQyxNQUFzQjtRQUN2QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7U0FDbkM7YUFDRztZQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7U0FDcEM7SUFDSCxDQUFDOzs7OztJQUNELGlCQUFpQixDQUFDLE1BQXNCO1FBQ3RDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztTQUNuQzthQUNHO1lBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztTQUNwQztJQUNILENBQUM7Ozs7O0lBQ0QsZUFBZSxDQUFDLE1BQXNCO1FBQ3BDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDNUI7YUFDRztZQUNGLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxjQUFjLENBQUMsTUFBc0I7UUFDbkMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7YUFDRztZQUNGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7U0FDbkM7SUFDSCxDQUFDOzs7OztJQUVELGVBQWUsQ0FBQyxNQUFNOztZQUNqQixRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFJLE1BQU0sQ0FBQyxLQUFLOztZQUNyQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFDO1lBRWhELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHlJQUF5SSxFQUFFLEVBQUUsRUFBRTtnQkFDbEssUUFBUSxFQUFFLElBQUk7YUFBRSxDQUFDLENBQUM7O2tCQUNaLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7WUFDckQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5Qiw0RUFBNEU7WUFDM0UsNkVBQTZFO1lBRzVFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzdCLDhEQUE4RDtZQUMvRCxnRUFBZ0U7U0FJakU7SUFFSCxDQUFDOzs7OztJQUNELGdCQUFnQixDQUFDLFNBQVM7O2NBRWxCLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUM1RCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUM7WUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUVyRDthQUFJO1lBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDN0Isa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDdEM7UUFDRixrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQzdDLENBQUM7Ozs7O0lBRUQsY0FBYyxDQUFDLE9BQU87O2NBRWQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1FBQ3hELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBQztZQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBR25EO2FBQUk7WUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUdwQztRQUNGLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDM0MsQ0FBQzs7Ozs7SUFHRCxVQUFVO1FBQ1IsMkNBQTJDO1FBRTdDLHNCQUFzQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQzdDO1lBQ0UsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBQztnQkFDMUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUM7b0JBQ25ELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssRUFBRSxFQUFDO3dCQUMvQyxJQUFJLENBQUMsc0JBQXNCLEdBQUksSUFBSSxDQUFDO3FCQUN6QztpQkFDRjthQUNBO1lBSUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUM7Z0JBQ3pELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFDO29CQUNuRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixLQUFLLEVBQUUsRUFBQzt3QkFDL0MsSUFBSSxDQUFDLHNCQUFzQixHQUFJLElBQUksQ0FBQztxQkFDekM7aUJBQ0Y7YUFDQTtZQUdELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUM7Z0JBQzFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFDO29CQUNuRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQixLQUFLLEVBQUUsRUFBQzt3QkFDOUMsSUFBSSxDQUFDLHNCQUFzQixHQUFJLElBQUksQ0FBQztxQkFDekM7aUJBQ0Y7YUFDQTtTQUVGO1FBRUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUd6QyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEtBQUssS0FBSyxFQUNoRztZQUVNLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLG1CQUFtQjtpQkFDdkIsT0FBTyxDQUFDLEVBQUUsRUFBRSx3RkFBd0YsRUFBRSxJQUFJLENBQUM7aUJBQzNHLFNBQVM7Ozs7WUFBQyxHQUFHLENBQUMsRUFBRTtnQkFBRSxJQUFJLENBQUMsTUFBTSxHQUFJLEdBQUcsQ0FBQztZQUV0QyxDQUFDLEVBQUMsQ0FBQztTQUNSO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFMUMsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFDOUM7WUFDRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFDO2dCQUMxQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixLQUFLLElBQUksRUFBQztvQkFDbkQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxFQUFFLEVBQUM7d0JBQy9DLElBQUksQ0FBQyxzQkFBc0IsR0FBSSxJQUFJLENBQUM7cUJBQ3pDO2lCQUNGO2FBQ0E7WUFJRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBQztnQkFDekQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUM7b0JBQ25ELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssRUFBRSxFQUFDO3dCQUMvQyxJQUFJLENBQUMsc0JBQXNCLEdBQUksSUFBSSxDQUFDO3FCQUN6QztpQkFDRjthQUNBO1lBR0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBQztnQkFDMUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUM7b0JBQ25ELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEtBQUssRUFBRSxFQUFDO3dCQUM5QyxJQUFJLENBQUMsc0JBQXNCLEdBQUksSUFBSSxDQUFDO3FCQUN6QztpQkFDRjthQUNBO1NBRUQ7UUFFQSxPQUFPLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRXpDLElBQUcsSUFBSSxDQUFDLHNCQUFzQixLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxLQUFLLEVBQy9GO1lBRU0sSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNoQyxJQUFJLENBQUMsbUJBQW1CO2lCQUN2QixPQUFPLENBQUMsRUFBRSxFQUFFLHdGQUF3RixFQUFFLElBQUksQ0FBQztpQkFDM0csU0FBUzs7OztZQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUFFLElBQUksQ0FBQyxNQUFNLEdBQUksR0FBRyxDQUFDO1lBRXRDLENBQUMsRUFBQyxDQUFDO1NBQ1I7UUFHQSxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN2QyxJQUFLLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxLQUFLLEVBQUM7WUFHckMsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBQzs7O29CQUcxQixnQkFBZ0IsR0FBRyxFQUFFO2dCQUN6QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBQztvQkFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU87Ozs7b0JBQUMsT0FBTyxDQUFDLEVBQUU7OzhCQUNqRCxhQUFhLEdBQUUsbUJBQWUsRUFBRSxFQUFBO3dCQUNoQyxhQUFhLENBQUMsUUFBUSxHQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQzt3QkFDdkQsYUFBYSxDQUFDLG1CQUFtQixHQUFFLE9BQU8sQ0FBQzt3QkFDM0MsYUFBYSxDQUFDLFVBQVUsR0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUN2QyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3hDLENBQUMsRUFBQyxDQUFDO2lCQUNOOztvQkFFRSxnQkFBZ0IsR0FBRyxFQUFFO2dCQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7Z0JBQ2hFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ2xELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFDO29CQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTzs7OztvQkFBQyxPQUFPLENBQUMsRUFBRTs7OEJBQ2xELGFBQWEsR0FBRyxtQkFBZSxFQUFFLEVBQUE7d0JBQ3ZDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO3dCQUVuQyxJQUFJLE9BQU8sS0FBSSxPQUFPLElBQUksT0FBTyxLQUFLLEVBQUUsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFDOzRCQUM1RCxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzs0QkFDaEMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7eUJBQzFEOzZCQUNHOzRCQUNILGFBQWEsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDOzRCQUNuQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzt5QkFDL0I7d0JBRUQsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUN4QyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQzt3QkFDeEQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNyQyxDQUFDLEVBQUMsQ0FBQztpQkFDSDtnQkFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7Z0JBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7O29CQUloRCxrQkFBa0IsR0FBRyxFQUFFO2dCQUUzQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFDO29CQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPOzs7O29CQUFDLE9BQU8sQ0FBQyxFQUFFOzs4QkFDaEQsZUFBZSxHQUFHLG1CQUFpQixFQUFFLEVBQUE7d0JBQzNDLGVBQWUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO3dCQUMxRCxlQUFlLENBQUMsWUFBWSxHQUFFLE9BQU8sQ0FBQzt3QkFFdEMsSUFBSSxPQUFPLElBQUcsT0FBTyxFQUFDOzRCQUNyQixlQUFlLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzt5QkFDaEU7NkJBQ0c7NEJBQ0gsZUFBZSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7eUJBQ25DO3dCQUVELGVBQWUsQ0FBQyxVQUFVLEdBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQzt3QkFDekMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM3QyxDQUFDLEVBQUMsQ0FBQztpQkFDSjs7c0JBRUssU0FBUyxHQUFHO29CQUNWLFFBQVEsRUFBRSxDQUFDO29CQUNYLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDM0IsZ0NBQWdDLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDO29CQUN2RixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUTtvQkFDeEMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVM7b0JBQzFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDdkYsUUFBUSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUMvRSxRQUFRLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFDLElBQUk7b0JBQzlFLFNBQVMsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDakYsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFBLENBQUMsQ0FBQyxJQUFJO29CQUNwRixvQkFBb0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxvQkFBb0I7b0JBQ2hFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTO29CQUMxQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7b0JBQzVELFNBQVMsRUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDcEYsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNuRixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDLElBQUk7b0JBQ2xGLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUMsSUFBSTtvQkFDdEUsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQyxDQUFDO29CQUMvRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQ3pHLHFCQUFxQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQSxDQUFDLENBQUMsSUFBSTtvQkFDdEgsa0JBQWtCLEVBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO29CQUM3RCxvQkFBb0IsRUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxvQkFBb0I7b0JBQ2pFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtvQkFDMUQsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDckksa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO29CQUM1RCxrQkFBa0IsRUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7b0JBQzdELFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXO29CQUM5QyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYztvQkFDcEQsVUFBVSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVU7b0JBQzNDLFVBQVUsRUFBQyxJQUFJLENBQUMsT0FBTztvQkFDdkIsZUFBZSxFQUFFLElBQUk7b0JBQ3JCLGVBQWUsRUFBRSxJQUFJO29CQUNyQixjQUFjLEVBQUUsZ0JBQWdCO29CQUNoQyxjQUFjLEVBQUUsZ0JBQWdCO29CQUNoQyxnQkFBZ0IsRUFBRSxrQkFBa0I7b0JBRXBDLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGdCQUFnQixFQUFFLElBQUk7b0JBQ3RCLGFBQWEsRUFBRSxJQUFJO29CQUNuQixnQkFBZ0IsRUFBRSxJQUFJO29CQUN0QixnQkFBZ0IsRUFBRSxJQUFJO29CQUN0QixtQkFBbUIsRUFBRSxJQUFJO29CQUN6QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixnQkFBZ0IsRUFBRSxJQUFJO29CQUN0QixhQUFhLEVBQUUsSUFBSTtvQkFDbkIsZ0JBQWdCLEVBQUUsSUFBSTtvQkFDdEIsZ0JBQWdCLEVBQUUsSUFBSTtvQkFDdEIsbUJBQW1CLEVBQUUsSUFBSTtvQkFDekIsaUJBQWlCLEVBQUUsSUFBSTtvQkFDdkIsaUJBQWlCLEVBQUUsSUFBSTtvQkFDdkIsaUJBQWlCLEVBQUUsSUFBSTtvQkFDdkIsaUJBQWlCLEVBQUUsSUFBSTtvQkFDdkIsaUJBQWlCLEVBQUUsSUFBSTtvQkFDdkIsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLHFCQUFxQixFQUFFLElBQUk7aUJBRzFCO2dCQUVMLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUM7b0JBQ3ZCLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUMzQjtxQkFBTTtvQkFDTixTQUFTLENBQUMsU0FBUyxHQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7aUJBQ3RDO2dCQUVELFNBQVMsQ0FBQyxpQkFBaUIsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3RELFNBQVMsQ0FBQyxpQkFBaUIsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVM7Ozs7Z0JBQ2hELENBQUMsS0FBVSxFQUFFLEVBQUU7OzBCQUVSLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBRXRDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksSUFBSSxFQUFDO3dCQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDOzs4QkFDeEIsY0FBYyxHQUFtQjs0QkFDdEMsZ0JBQWdCLEVBQUUsRUFBRTs0QkFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQjs0QkFDaEQsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQjs0QkFDbEQsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQjs0QkFDaEQsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQjs0QkFDaEQsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFBLENBQUMsQ0FBQyxJQUFJOzRCQUNoRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFBLENBQUMsQ0FBQyxJQUFJOzRCQUN4RyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNsRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYTs0QkFDMUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPO3lCQUczQjt3QkFFQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztxQkFDdkU7b0JBRUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFDOzs4QkFFdEMsY0FBYyxHQUFtQjs0QkFDckMsZ0JBQWdCLEVBQUUsRUFBRTs0QkFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQjs0QkFDaEQsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQjs0QkFDbEQsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQjs0QkFDaEQsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQjs0QkFDaEQsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQjs0QkFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFBLENBQUMsQ0FBQyxJQUFJOzRCQUMvRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFBLENBQUMsQ0FBQyxJQUFJOzRCQUN2RyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNsRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYTs0QkFDMUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPO3lCQUcxQjt3QkFFQSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztxQkFFdkU7b0JBRUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxFQUFFO3dCQUNqRCxRQUFRLEVBQUUsSUFBSTtxQkFDUixDQUFDLENBQUM7b0JBRVYsWUFBWTtvQkFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUcsSUFBSSxFQUFDO3dCQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7cUJBQ3RDO3lCQUVEO3dCQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztxQkFDdEM7b0JBQ0Qsc0NBQXNDO2dCQUV4QyxDQUFDLEVBQ0QsQ0FBQzthQUVGO2lCQUNJO2dCQUNILGVBQWU7Z0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO2dCQUN2RSxPQUFPLENBQUMsR0FBRyxDQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7Z0JBRXJFLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3BGLElBQUksQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLEdBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUM7Z0JBQzdHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztnQkFDaEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDNUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDekksSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztnQkFDaEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztnQkFDcEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsR0FB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OztJQUNqQyxxREFBaUM7O0lBQ2pDLDJEQUF1Qzs7SUFDdkMsMERBQXVDOztJQUN2QywyREFBdUM7O0lBQ3ZDLDJEQUF1Qzs7SUFDdkMsb0RBQWdDOztJQUNoQyxnREFBNEI7O0lBQzVCLCtDQUFzQjs7SUFDdEIsdURBQThCOztJQUM5Qix1REFBOEI7O0lBQzlCLDhDQUFpQzs7SUFDakMsa0RBQTBEOztJQUMxRCxpREFBd0I7O0lBQ3hCLGdEQUFnQzs7SUFDaEMsK0NBQWtCOztJQUNsQixxREFBaUM7O0lBQ2pDLG1EQUErQjs7SUFFL0IsdURBQTRDOztJQUM1QyxpREFBdUI7O0lBQ3ZCLDREQUF5Qzs7SUFDekMsNERBQXlDOztJQUN6Qyx5REFBc0M7O0lBQ3RDLDREQUF1Qzs7SUFDdkMsNERBQXdDOztJQUV4Qyx1REFPRTs7Ozs7SUFHQSw4Q0FBMEI7Ozs7O0lBQzFCLGlEQUFnQzs7Ozs7SUFDaEMsNENBQXlCOzs7OztJQUN6QiwyQ0FBNkI7Ozs7O0lBQzdCLDRDQUFzQjs7SUFDdEIsOENBQTRCOzs7OztJQUM1Qix5REFBZ0Q7Ozs7O0lBQ2hELG1EQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkNoYW5nZXMsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCxWYWxpZGF0b3JzLFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csTWF0U25hY2tCYXIsTWF0UmFkaW9DaGFuZ2UsIE1hdElucHV0LCBNYXRTZWxlY3QsIE1hdFJhZGlvR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XHJcbmltcG9ydCB7IFZpY3RpbSxWaWN0aW1EcnVnVXNlLCBDb250YWN0LCBWaWN0aW1BZHZvY2F0ZSxWaWN0aW1HdWFyZGlhbixWaWN0aW1XZWFwb25Vc2UsVmljdGltU3VwcG9ydCB9IGZyb20gJy4uL3NtYXJ0LXZpY3RpbS5tb2RlbCc7XHJcbmltcG9ydCB7IE5nY1NtYXJ0VmljdGltU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXZpY3RpbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvbW1vbkRpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4vY29tbW9uLWRpYWxvZy9jb21tb24tZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgZm9ybWF0RGF0ZSwgTG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5fWZyb20nQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgdHJ1bmNhdGUgfSBmcm9tICdmcyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdG9ycywgU21hcnRBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSAnQGNzbWFydC9uZ2Mtc21hcnQtYWRkcmVzcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5GbiB7XHJcbiAgKCk6IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdGbiB7XHJcbiAgKCk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbmRpdGlvbmFsVmFsaWRhdG9yKHByZWRpY2F0ZTogQm9vbGVhbkZuLFxyXG4gIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4sXHJcbiAgZXJyb3JOYW1lc3BhY2U/OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbnJldHVybiAoZm9ybUNvbnRyb2wgPT4ge1xyXG5pZiAoIWZvcm1Db250cm9sLnBhcmVudCkge1xyXG5yZXR1cm4gbnVsbDtcclxufVxyXG5sZXQgZXJyb3IgPSBudWxsO1xyXG5pZiAocHJlZGljYXRlKCkpIHtcclxuZXJyb3IgPSB2YWxpZGF0b3IoZm9ybUNvbnRyb2wpO1xyXG59XHJcbmlmIChlcnJvck5hbWVzcGFjZSAmJiBlcnJvcikge1xyXG5jb25zdCBjdXN0b21FcnJvciA9IHt9O1xyXG5jdXN0b21FcnJvcltlcnJvck5hbWVzcGFjZV0gPSBlcnJvcjtcclxuZXJyb3IgPSBjdXN0b21FcnJvclxyXG59XHJcbnJldHVybiBlcnJvcjtcclxufSlcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdDb25kaXRpb25hbFZhbGlkYXRvcihwcmVkaWNhdGU6IFN0cmluZ0ZuLFxyXG4gIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4sXHJcbiAgZXJyb3JOYW1lc3BhY2U/OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbnJldHVybiAoZm9ybUNvbnRyb2wgPT4ge1xyXG5pZiAoIWZvcm1Db250cm9sLnBhcmVudCkge1xyXG5yZXR1cm4gbnVsbDtcclxufVxyXG5sZXQgZXJyb3IgPSBudWxsO1xyXG5pZiAocHJlZGljYXRlKCk9PSdZUycpIHtcclxuZXJyb3IgPSB2YWxpZGF0b3IoZm9ybUNvbnRyb2wpO1xyXG59XHJcbmlmIChlcnJvck5hbWVzcGFjZSAmJiBlcnJvcikge1xyXG5jb25zdCBjdXN0b21FcnJvciA9IHt9O1xyXG5jdXN0b21FcnJvcltlcnJvck5hbWVzcGFjZV0gPSBlcnJvcjtcclxuZXJyb3IgPSBjdXN0b21FcnJvclxyXG59XHJcbnJldHVybiBlcnJvcjtcclxufSlcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjc21hcnQtdmljdGltLWRldGFpbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LXZpY3RpbS1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LXZpY3RpbS1kZXRhaWwuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW0NvbW1vbkRpYWxvZ1NlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydFZpY3RpbURldGFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSB2aWN0aW1EZXRhaWwgPSA8VmljdGltPnt9O1xyXG4gIEBJbnB1dCgpIHN0YWZmSWQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBvZmZlbmRlcklkOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaXNJbnRha2U6IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIFxyXG5cclxuICB2aWN0aW1JZDogbnVtYmVyO1xyXG4gIHZpY3RpbUZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgZHJ1Z3M6IGFueTtcclxuICB2aWN0aW1TdXBwb3J0VHlwZXM6IGFueTtcclxuICBwcmVmaXhlczogYW55O1xyXG4gIC8vdmljdGltOiBWaWN0aW0gPSA8VmljdGltPnt9O1xyXG4gIHN1ZmZpeGVzOiBhbnk7XHJcbiAgcmVsYXRpb25zaGlwVHlwZXM6IGFueTtcclxuICBnZW5kZXJzOiBhbnk7XHJcbiAgZG9ja2V0bGlzdDogYW55O1xyXG4gIHdlYXBvblR5cGVzOiBhbnk7XHJcbiAgZmxhZ09wdGlvbjogYW55O1xyXG4gIHNlbGVjdGVkV2VhcG9uVHlwZXM6IGFueTtcclxuICBzZWxlY3RlZFZpY3RpbVN1cHBvcnRUeXBlczogYW55O1xyXG4gIHNlbGVjdGVkRHJ1Z3M6IGFueTtcclxuICBpZDogYW55O1xyXG4gIGhpZGRlbjogYm9vbGVhbj10cnVlO1xyXG4gIHByaXZhdGUgc3ViOiBhbnk7XHJcbiAgdmljdGltQWR2b2NhdGU6IFZpY3RpbUFkdm9jYXRlID0gIDxWaWN0aW1BZHZvY2F0ZT57fTtcclxuICB2aWN0aW1HdWFyZGlhbjogVmljdGltR3VhcmRpYW4gPSA8VmljdGltR3VhcmRpYW4+e307IFxyXG4gIHZpY3RpbVdlYXBvblVzZTogVmljdGltV2VhcG9uVXNlO1xyXG4gIHZpY3RpbVN1cHBvcnQ6IFZpY3RpbVN1cHBvcnQ7XHJcbiAgdmljdGltRHJ1Z1VzZTogVmljdGltRHJ1Z1VzZTtcclxuICByZXN1bHQ6IGFueTtcclxuICBlZGl0TW9kZTogYW55O1xyXG4gIGd1YXJkaWFuVGFiRmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFkdm9jYXRlVGFiRmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbW1vbkNoaWxkcmVuRGl2RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNwb0V4cGlyYXRpb25EaXZGbGFnIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN1cHBvcnRJblBsYWNlRGl2RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHdlYXBvbkludm9sdmVkRGl2RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRydWdVc2VEaXZGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0RlbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFkZHJlc3NJZDogbnVtYmVyID0gMDtcclxuICBhZHZvY2F0ZUFkZHJlc3NJZDogbnVtYmVyID0gMDtcclxuICBndWFyZGlhbkFkZHJlc3NJZDogbnVtYmVyID0gMDtcclxuICBkYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSgnZW4tVVMnKTtcclxuICBlbWFpbFBhdHRlcm4gPSBcIl5bYS16MC05Ll8lKy1dK0BbYS16MC05Li1dK1xcLlthLXpdezIsNH0kXCI7XHJcbiAgcGhvbmVOdW1iZXIgPSBcIlxcXFxkezEwfVwiO1xyXG4gIGVkaXRWaWN0aW06IFZpY3RpbSA9IDxWaWN0aW0+e307XHJcbiAgdmljdGltQWdlOiBudW1iZXI7XHJcbiAgb3RoZXJXZWFwb25GbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb3RoZXJEcnVnRmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb250YWN0RGF0YVNvdXJjZT0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSgpO1xyXG4gIGNvbnRhY3RMaXN0OiBDb250YWN0W107XHJcbiAgZ3VhcmRpYW5QaG9uZUV4aXN0RmxhZzogYm9vbGVhbiA9ICBmYWxzZTtcclxuICBhZHZvY2F0ZVBob25lRXhpc3RGbGFnOiBib29sZWFuID0gIGZhbHNlO1xyXG4gIHBob25lVmFsaWRhdGlvbkZsYWc6IGJvb2xlYW4gPSAgZmFsc2U7XHJcbiAgZ3VhcmlkYW5Ob1Bob25lQ2hrRmxhZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgYWR2b2NhdGVOb1Bob25lQ2hrRmxhZzogYm9vbGVhbiA9ICB0cnVlO1xyXG5cclxuICBhZGRyZXNzVmFsaWRhdG9yczogQWRkcmVzc1ZhbGlkYXRvcnMgPSB7XHJcbiAgICBzdHJlZXQ6IFtdLFxyXG4gICAgc3RyZWV0MjogW10sXHJcbiAgICBjaXR5OiBbXSxcclxuICAgIHN0YXRlQ29kZTogW10sXHJcbiAgICB6aXBDb2RlOiBbXSxcclxuICAgIHBzYUNvZGU6IFtdLFxyXG4gIH07XHJcblxyXG4gY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSBjb21tb25EaWFsb2dTZXJ2aWNlOiBDb21tb25EaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2aWN0aW1TZXJ2aWNlOiBOZ2NTbWFydFZpY3RpbVNlcnZpY2UpIHtcclxuICAgICAgIHRoaXMuaW5pdEZvcm0oKTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBpbml0Rm9ybSgpIHtcclxuICAgIFxyXG4gICAgdGhpcy52aWN0aW1Gb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHVuZGVyU3VwZXJ2aXNpb25GbGFnOiAgbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoWyBWYWxpZGF0b3JzLnJlcXVpcmVkXSkpLFxyXG4gICAgICB2aWN0aW1PZmZlbmRlclJlbGF0aW9uc2hpcFR5cGVJZDpuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbIFZhbGlkYXRvcnMucmVxdWlyZWRdKSksXHJcbiAgICAgIGxhc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbIFZhbGlkYXRvcnMucmVxdWlyZWRdKSksXHJcbiAgICAgIGZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoWyBWYWxpZGF0b3JzLnJlcXVpcmVkXSkpLFxyXG4gICAgICBtaWRkbGVOYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIHByZWZpeElkOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIHN1ZmZpeElkOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGdlbmRlckNvZGU6bmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBiaXJ0aERhdGU6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgaG9tZVBob25lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMucGhvbmVOdW1iZXIpIF0pKSxcclxuICAgICAgY2VsbFBob25lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMucGhvbmVOdW1iZXIpIF0pKSxcclxuICAgICAgd29ya1Bob25lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMucGhvbmVOdW1iZXIpIF0pKSxcclxuICAgICAgZW1haWw6bmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLmVtYWlsUGF0dGVybikgXSkpLFxyXG4gICAgICBtaW5vckZsYWc6bmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoWyBWYWxpZGF0b3JzLnJlcXVpcmVkXSkpLFxyXG4gICAgICB2aWN0aW1BZHZvY2F0ZUZsYWc6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFsgVmFsaWRhdG9ycy5yZXF1aXJlZF0pKSxcclxuICAgICAgZ3VhcmRpYW5MYXN0TmFtZTpuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGd1YXJkaWFuRmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsKSxcclxuICAgICAgZ3VhcmRpYW5QcmVmaXhJZDpuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGd1YXJkaWFuU3VmZml4SWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgKSwgICAgICAgIFxyXG4gICAgICAvL2d1YXJkaWFuR2VuZGVyOm5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgZ3VhcmRpYW5CaXJ0aERhdGU6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgZ3VhcmRpYW5Ob1Bob25lRmxhZzpuZXcgRm9ybUNvbnRyb2wodHJ1ZSksXHJcblxyXG4gICAgICBndWFyZGlhbkhvbWVQaG9uZTpuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMucGhvbmVOdW1iZXIpIF0gKSksXHJcbiAgICAgIGd1YXJkaWFuQ2VsbFBob25lOm5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5waG9uZU51bWJlcikgXSApKSxcclxuICAgICAgZ3VhcmRpYW5Xb3JrUGhvbmU6bmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLnBob25lTnVtYmVyKSBdICkpLFxyXG4gICAgIFxyXG4gICAgIFxyXG4gICAgICBndWFyZGlhbkVtYWlsOm5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5lbWFpbFBhdHRlcm4pIF0pKSxcclxuICAgICAgYWR2b2NhdGVOb1Bob25lRmxhZzogbmV3IEZvcm1Db250cm9sKHRydWUpLFxyXG4gIFxyXG5cclxuICAgICAgYWR2b2NhdGVXb3JrUGhvbmU6bmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoWyBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5waG9uZU51bWJlcikgXSApKSxcclxuICAgICAgYWR2b2NhdGVIb21lUGhvbmU6bmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoWyBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5waG9uZU51bWJlcikgXSApKSxcclxuICAgICAgYWR2b2NhdGVDZWxsUGhvbmU6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFsgVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMucGhvbmVOdW1iZXIpIF0gKSksXHJcbiAgICAgXHJcblxyXG4gICAgICBhZHZvY2F0ZVN1ZmZpeElkOm5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgYWR2b2NhdGVQcmVmaXhJZDogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBhZHZvY2F0ZUZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBzdHJpbmdDb25kaXRpb25hbFZhbGlkYXRvcigoKSA9PiB0aGlzLnZpY3RpbUZvcm0uZ2V0KCd2aWN0aW1BZHZvY2F0ZUZsYWcnKS52YWx1ZSwgIFZhbGlkYXRvcnMucmVxdWlyZWQsICdpbGx1bWluYXRpRXJyb3InKSksXHJcbiAgICAgIGFkdm9jYXRlTGFzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgc3RyaW5nQ29uZGl0aW9uYWxWYWxpZGF0b3IoKCkgPT4gdGhpcy52aWN0aW1Gb3JtLmdldCgndmljdGltQWR2b2NhdGVGbGFnJykudmFsdWUsIFZhbGlkYXRvcnMucmVxdWlyZWQsJ2lsbHVtaW5hdGlFcnJvcicpKSxcclxuICAgICAgYWR2b2NhdGVFbWFpbDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLmVtYWlsUGF0dGVybikgXSkpLFxyXG4gICAgICBlbWVyZ2VuY3lDb250YWN0OiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGVtZXJnZW5jeUNvbnRhY3RQaG9uZTpuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMucGhvbmVOdW1iZXIpIF0pKSxcclxuICAgICAgZW1lcmdlbmN5Q2hpbGRyZW46IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgZW1lcmdlbmN5Q3BvOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGVtZXJnZW5jeURydWc6bmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBlbWVyZ2VuY3lTdXBwb3J0OiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGVtZXJnZW5jeVdlYXBvbjogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBkcnVnOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIHdlYXBvbjogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBzdXBwb3J0OiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGNvbW1vbkNoaWxkcmVuRmxhZzogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBjb21tb25DaGlsZHJlbk51bWJlcjpuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGNwb0V4cGlyYXRpb25GbGFnOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGNwb0V4cGlyYXRpb25EYXRlOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGFjY2Vzc1Jpc2s6bmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBkcnVnVXNlRmxhZzpuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIHN1cHBvcnRJblBsYWNlRmxhZzogbmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICB3ZWFwb25JbnZvbHZlZEZsYWc6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgb3RoZXJXZWFwb246IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgb3RoZXJEcnVnOiBuZXcgRm9ybUNvbnRyb2woJycsICksXHJcbiAgICAgIGFsY29ob2xVc2VGbGFnOm5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgdmljdGltU3VwcG9ydHM6bmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICB2aWN0aW1XZWFwb25Vc2VzOm5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgICAgdmljdGltRHJ1Z1VzZXM6bmV3IEZvcm1Db250cm9sKCcnLCApLFxyXG4gICAgICBhbGxvd0Nzb3NhQ29udGFjdEZsYWc6IG5ldyBGb3JtQ29udHJvbCgnJywgKSxcclxuICAgIFxyXG4gXHJcbn0pO1xyXG5cclxuICAgIHRoaXMudmljdGltRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG5cdFx0dGhpcy52aWN0aW1Gb3JtLm1hcmtBc1VudG91Y2hlZCgpO1xyXG5cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBfZ2V0VmljdGltKCkge1xyXG4gICAgaWYgKHRoaXMudmljdGltSWQgPT09IDApIHsgXHJcbiAgICAgIFxyXG4gICAgICByZXR1cm47IFxyXG4gICAgfTtcclxuXHRcdGlmICh0aGlzLmVkaXRNb2RlID09IHRydWUpIHtcclxuICAgIGNvbnNvbGUubG9nKCdmaW5kIHZpY3RpbSBpZCBpbnNpZGUgZ2V0VmljdGltJyk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnZpY3RpbUlkKTtcclxuXHJcbiAgICBpZiAodGhpcy52aWN0aW1JZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLnN1YiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLnZpY3RpbUlkID0gcGFyYW1zWyd2aWN0aW1JZCddO1xyXG4gICAgICBjb25zb2xlLmxvZygnbXkgdGhpcy52aWN0aW1JZCcpO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnZpY3RpbUlkKTtcclxuICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlLmdldFZpY3RpbSh0aGlzLnZpY3RpbUlkKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2aWN0aW06IFZpY3RpbSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd2aWN0aW0gZGF0YSAxJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2codmljdGltKTtcclxuICAgICAgICB0aGlzLmVkaXRWaWN0aW0gPSA8VmljdGltPnZpY3RpbTtcclxuICAgICBcclxuICAgICAgICB2YXIgc3VwcG9ydHNEYXRhID1bXTtcclxuICAgICAgICB0aGlzLmVkaXRWaWN0aW0udmljdGltU3VwcG9ydHMuZm9yRWFjaCggdD0+e3N1cHBvcnRzRGF0YS5wdXNoKHQudmljdGltU3VwcG9ydFR5cGVJZCk7IH0gIClcclxuICAgICAgICBjb25zdCB2aWN0aW1TdXBwb3J0c0NvbnRyb2wgPSB0aGlzLnZpY3RpbUZvcm0uZ2V0KCd2aWN0aW1TdXBwb3J0cycpO1xyXG4gICAgICAgIHZpY3RpbVN1cHBvcnRzQ29udHJvbC5zZXRWYWx1ZShzdXBwb3J0c0RhdGEpO1xyXG5cclxuXHJcbiAgICAgICAgdmFyIHdlYXBvblVzZXNEYXRhID1bXTtcclxuICAgICAgICB2YXIgb3RoZXJXZWFwb24gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuZWRpdFZpY3RpbS52aWN0aW1XZWFwb25Vc2VzLmZvckVhY2goIHQ9PntcclxuICAgICAgICAgIHdlYXBvblVzZXNEYXRhLnB1c2godC53ZWFwb25UeXBlSWQpOyBcclxuICAgICAgICAgIGlmICh0LndlYXBvblR5cGVJZCA9PSBcIk9USEVSXCIpe1xyXG4gICAgICAgICAgICBvdGhlcldlYXBvbiA9IHQub3RoZXJXZWFwb247XHJcbiAgICAgICAgICAgIHRoaXMub3RoZXJXZWFwb25GbGFnID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB9ICApXHJcblxyXG5cclxuICAgICAgICBjb25zdCB2aWN0aW1XZWFwb25Vc2VzQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ3ZpY3RpbVdlYXBvblVzZXMnKTtcclxuICAgICAgICB2aWN0aW1XZWFwb25Vc2VzQ29udHJvbC5zZXRWYWx1ZSh3ZWFwb25Vc2VzRGF0YSk7XHJcblxyXG4gICAgICAgIGNvbnN0IG90aGVyV2VhcG9uQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ290aGVyV2VhcG9uJyk7XHJcbiAgICAgICAgb3RoZXJXZWFwb25Db250cm9sLnNldFZhbHVlKG90aGVyV2VhcG9uKTtcclxuXHJcblxyXG4gICAgICAgIC8vdGhpcy53ZWFwb25Vc2VzRGF0YSA9IHRoaXMuZWRpdFZpY3RpbS52aWN0aW1XZWFwb25Vc2VzO1xyXG4gICAgICAgXHJcbiAgICAgICAgdmFyIGRydWdVc2VEYXRhID1bXTtcclxuICAgICAgICB2YXIgb3RoZXJEcnVnID0gXCJcIjtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJ2xvYWQgdGhpcy5lZGl0VmljdGltLnZpY3RpbURydWdVc2VzJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5lZGl0VmljdGltLnZpY3RpbURydWdVc2VzKTtcclxuICAgICAgICB0aGlzLmVkaXRWaWN0aW0udmljdGltRHJ1Z1VzZXMuZm9yRWFjaCggdD0+e1xyXG4gIFxyXG4gICAgICAgICAgaWYgKHQuZHJ1Z1R5cGVJZCA9PT0gbnVsbCl7XHJcbiAgICAgICAgICAgIG90aGVyRHJ1ZyA9IHQub3RoZXJEcnVnO1xyXG4gICAgICAgICAgICB0aGlzLm90aGVyRHJ1Z0ZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0LmRydWdUeXBlSWQgPSdPVEhFUic7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJ1Z1VzZURhdGEucHVzaCh0LmRydWdUeXBlSWQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIH0gIClcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJ3RoaXMuZWRpdFZpY3RpbS52aWN0aW1EcnVnVXNlcyBhZnRlciBwdXNoJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZHJ1Z1VzZURhdGEpO1xyXG5cclxuXHJcblxyXG4gICAgICAgIGNvbnN0IHZpY3RpbURydWdVc2VzQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ3ZpY3RpbURydWdVc2VzJyk7XHJcbiAgICAgICAgdmljdGltRHJ1Z1VzZXNDb250cm9sLnNldFZhbHVlKGRydWdVc2VEYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3RoZXJEcnVnQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ290aGVyRHJ1ZycpO1xyXG4gICAgICAgIG90aGVyRHJ1Z0NvbnRyb2wuc2V0VmFsdWUob3RoZXJEcnVnKTtcclxuXHJcblxyXG5cclxuICAgICAgICAvL2NvbnRhY3RcclxuICAgICAgICB0aGlzLnZpY3RpbVNlcnZpY2UuZ2V0Q29udGFjdHModGhpcy52aWN0aW1JZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgY29udGFjdExpc3QgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY29udGFjdExpc3QnKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coY29udGFjdExpc3QpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhY3RMaXN0ID0gY29udGFjdExpc3Q7IFxyXG4gICAgICAgICAgICB0aGlzLmNvbnRhY3REYXRhU291cmNlLmRhdGEgPSB0aGlzLmNvbnRhY3RMaXN0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vbm8gcGhvbmUgZmllbGRcclxuXHJcbiAgICAgICAgaWYgKCB0aGlzLmVkaXRWaWN0aW0uZ3VhcmRpYW5Ob1Bob25lRmxhZyA9PT0gZmFsc2UgKXtcclxuICAgICAgICAgIHRoaXMudmljdGltRm9ybS5wYXRjaFZhbHVlKHtndWFyZGlhbk5vUGhvbmVGbGFnOiBmYWxzZX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIHRoaXMuZWRpdFZpY3RpbS5hZHZvY2F0ZU5vUGhvbmVGbGFnID09PSBmYWxzZSApe1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1Gb3JtLnBhdGNoVmFsdWUoe2Fkdm9jYXRlTm9QaG9uZUZsYWc6IGZhbHNlfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcIkVycm9yIG9jY3VyZWQgd2hpbGUgcmV0cml2aW5nIFZpY3RpbSBJbmZvcm1hdGlvbi4gUGxlYXNlIHRyeSBhZ2Fpbi5cIik7XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuO1xyXG5cdFx0fSBlbHNlIHtcclxuICAgICAgLy9uZXdcclxuXHJcbiAgIH1cclxuICB9XHJcbiAgXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgXHJcbiAgfVxyXG5cclxuICBvbkFkZHJlc3NDaGFuZ2UoYWRkcmVzc0lkKSB7ICAgIFxyXG4gICAgdGhpcy52aWN0aW1Gb3JtLnBhdGNoVmFsdWUoe2FkZHJlc3NJZDogYWRkcmVzc0lkfSlcclxuICAgIHRoaXMuYWRkcmVzc0lkID0gYWRkcmVzc0lkO1xyXG4gIH1cclxuICBvbkd1YXJkaWFuQWRkcmVzc0NoYW5nZShNeUd1YXJkaWFuQWRkcmVzc0lkKSB7ICAgIFxyXG4gICAgdGhpcy52aWN0aW1Gb3JtLnBhdGNoVmFsdWUoe2d1YXJkaWFuQWRkcmVzc0lkOiBNeUd1YXJkaWFuQWRkcmVzc0lkfSlcclxuICAgIHRoaXMuZ3VhcmRpYW5BZGRyZXNzSWQgPSAgTXlHdWFyZGlhbkFkZHJlc3NJZDtcclxuICB9XHJcbiAgb25BZHZvY2F0ZUFkZHJlc3NDaGFuZ2UoTXlBZHZvY2F0ZUFkZHJlc3NJZCkgeyAgICBcclxuICAgIHRoaXMudmljdGltRm9ybS5wYXRjaFZhbHVlKHthZHZvY2F0ZUFkZHJlc3NJZDogTXlBZHZvY2F0ZUFkZHJlc3NJZH0pXHJcbiAgICB0aGlzLmFkdm9jYXRlQWRkcmVzc0lkID0gTXlBZHZvY2F0ZUFkZHJlc3NJZDtcclxuICB9XHJcbiAgY2FuY2VsKCkge1xyXG4gICAgdGhpcy52aWN0aW1Gb3JtLnJlc2V0KCk7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ3Nob3cgb2ZmZW5kZXJJZCcpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5vZmZlbmRlcklkKTtcclxuICAgIGNvbnNvbGUubG9nKCdzaG93IHN0YWZmSWQnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuc3RhZmZJZCk7XHJcbiAgICBjb25zb2xlLmxvZygnc2hvdyBpc0ludGFrZScpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5pc0ludGFrZSk7XHJcbiAgICAvL3RoaXMudmljdGltRGV0YWlsLmd1YXJkaWFuTm9QaG9uZUZsYWcgPSB0cnVlO1xyXG4gICAgLy90aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ob1Bob25lRmxhZyA9ICB0cnVlO1xyXG4gICAgLy90aGlzLnZpY3RpbUZvcm0uZ2V0KCdndWFyZGlhbk5vUGhvbmVGbGFnJykuc2V0VmFsdWUodHJ1ZSk7XHJcblxyXG4gICAgICAgLy9yZXF1aXJlZCBmaWVsZFxyXG4gICAgY29uc3QgcmVxdWlyZWRJbXBsZW1lbnRhdGlvbiA9IHtnZXQ6ZnVuY3Rpb24oKTpib29sZWFue2lmKHRoaXMuX3JlcXVpcmVkKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWQ7fVxyXG4gICAgaWYodGhpcy5uZ0NvbnRyb2wmJnRoaXMubmdDb250cm9sLmNvbnRyb2wmJnRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yXHJcbiAgICAgICl7Y29uc3QgZW1wdHlWYWx1ZUNvbnRyb2w9T2JqZWN0LmFzc2lnbih7fSxcclxuICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sKTsoZW1wdHlWYWx1ZUNvbnRyb2wgYXMgYW55KS52YWx1ZT1udWxsO1xyXG4gICAgICAgIHJldHVybigncmVxdWlyZWQnaW4odGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWxpZGF0b3IoZW1wdHlWYWx1ZUNvbnRyb2wpfHx7fSkpO31cclxuICAgICAgICByZXR1cm4gZmFsc2U7fSxzZXQ6ZnVuY3Rpb24odmFsdWU6Ym9vbGVhbil7dGhpcy5fcmVxdWlyZWQ9Y29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTt9LH07XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE1hdElucHV0LnByb3RvdHlwZSwncmVxdWlyZWQnLHJlcXVpcmVkSW1wbGVtZW50YXRpb24sKTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWF0U2VsZWN0LnByb3RvdHlwZSwncmVxdWlyZWQnLHJlcXVpcmVkSW1wbGVtZW50YXRpb24sKTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWF0UmFkaW9Hcm91cC5wcm90b3R5cGUsJ3JlcXVpcmVkJyxyZXF1aXJlZEltcGxlbWVudGF0aW9uLCk7XHJcbiAgICAvL3JlcXVpcmVkIGZpZWxkIGVuZFxyXG5cclxuICAgIFxyXG5cclxuICAgICBpZiAodGhpcy52aWN0aW1EZXRhaWwhPW51bGwpIHtcclxuICAgICAgIC8vIGVkaXQgcmVjb3JkXHJcbiAgICAgIHRoaXMuZWRpdE1vZGUgPSB0cnVlOyBcclxuICAgICAgdGhpcy5zaG93RGVsZXRlPSB0cnVlOyAgICAgXHJcbiAgICAgIHRoaXMudmljdGltSWQgPSB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZDtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuZ3VhcmRpYW5UYWJGbGFnID0gdGhpcy52aWN0aW1EZXRhaWwubWlub3JGbGFnO1xyXG5cclxuICAgICAgXHJcbiAgICAgIGlmICh0aGlzLnZpY3RpbURldGFpbC52aWN0aW1BZHZvY2F0ZUZsYWc9PSdZUycpe1xyXG4gICAgICAgICAgICB0aGlzLmFkdm9jYXRlVGFiRmxhZyA9IHRydWU7XHJcbiAgICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5vdGhlcldlYXBvbkZsYWcgPT0gdHJ1ZSl7XHJcbiAgICAgICAgY29uc3Qgb3RoZXJXZWFwb25Db250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnb3RoZXJXZWFwb24nKTtcclxuICAgICAgICBvdGhlcldlYXBvbkNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm90aGVyRHJ1Z0ZsYWcgPT0gdHJ1ZSl7XHJcbiAgICAgICAgY29uc3Qgb3RoZXJEcnVnQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ290aGVyRHJ1ZycpO1xyXG4gICAgICAgIG90aGVyRHJ1Z0NvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY3BvRXhwaXJhdGlvbkRpdkZsYWcgID10aGlzLnZpY3RpbURldGFpbC5jcG9FeHBpcmF0aW9uRmxhZztcclxuICAgICAgdGhpcy5jb21tb25DaGlsZHJlbkRpdkZsYWcgPSB0aGlzLnZpY3RpbURldGFpbC5jb21tb25DaGlsZHJlbkZsYWc7XHJcbiAgICAgIHRoaXMuc3VwcG9ydEluUGxhY2VEaXZGbGFnPSAgdGhpcy52aWN0aW1EZXRhaWwuc3VwcG9ydEluUGxhY2VGbGFnO1xyXG4gICAgICB0aGlzLndlYXBvbkludm9sdmVkRGl2RmxhZz0gIHRoaXMudmljdGltRGV0YWlsLndlYXBvbkludm9sdmVkRmxhZztcclxuICAgICAgdGhpcy5kcnVnVXNlRGl2RmxhZz0gIHRoaXMudmljdGltRGV0YWlsLmRydWdVc2VGbGFnO1xyXG4gICAgICB0aGlzLmFkZHJlc3NJZCA9IHRoaXMudmljdGltRGV0YWlsLmFkZHJlc3NJZDtcclxuICAgICAgdGhpcy5ndWFyZGlhbkFkZHJlc3NJZCA9ICB0aGlzLnZpY3RpbURldGFpbC5ndWFyZGlhbkFkZHJlc3NJZDtcclxuICAgICAgdGhpcy5hZHZvY2F0ZUFkZHJlc3NJZCA9ICB0aGlzLnZpY3RpbURldGFpbC5hZHZvY2F0ZUFkZHJlc3NJZDtcclxuXHJcbiAgICAgIHRoaXMuX2dldFZpY3RpbSgpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vYWRkIG5ldyByZWNvcmRcclxuICAgICAgdGhpcy52aWN0aW1Gb3JtLnBhdGNoVmFsdWUoe2d1YXJkaWFuTm9QaG9uZUZsYWc6IHRydWV9KTtcclxuICAgICAgdGhpcy52aWN0aW1Gb3JtLnBhdGNoVmFsdWUoe2Fkdm9jYXRlTm9QaG9uZUZsYWc6IHRydWV9KTtcclxuICAgXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52aWN0aW1TZXJ2aWNlLmdldEZsYWdPcHRpb25ZZXNOb1Vua25vd25zKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoaXRlbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmxhZ09wdGlvbiA9IGl0ZW1zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy52aWN0aW1TZXJ2aWNlLmdldEdlbmRlcnMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZW5kZXJzID0gaXRlbXM7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnZpY3RpbVNlcnZpY2UuZ2V0UHJlZml4ZXMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcmVmaXhlcyA9IGl0ZW1zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy52aWN0aW1TZXJ2aWNlLmdldFN1ZmZpeGVzKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoaXRlbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3VmZml4ZXMgPSBpdGVtcztcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMudmljdGltU2VydmljZS5nZXRSZWxhdGlvbnNoaXBUeXBlcygpLnN1YnNjcmliZShcclxuICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnJlbGF0aW9uc2hpcFR5cGVzID0gaXRlbXMuZmlsdGVyKCAoeSkgPT4gKHkucmVsYXRpb25zaGlwQ2F0ZWdvcnlJZCA9PT0gJ1NUJyB8fCB5LnJlbGF0aW9uc2hpcENhdGVnb3J5SWQgPT09ICdGTScgKSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnZpY3RpbVNlcnZpY2UuZ2V0U3VwcG9ydFR5cGVzKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoaXRlbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudmljdGltU3VwcG9ydFR5cGVzID0gaXRlbXM7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnZpY3RpbVNlcnZpY2UuZ2V0V2VhcG9uVHlwZXMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy53ZWFwb25UeXBlcyA9IGl0ZW1zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy52aWN0aW1TZXJ2aWNlLmdldERydWdzVHlwZXMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2RydWcgbG9va3VwIGl0ZW1zJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coaXRlbXMpO1xyXG4gICAgICAgIHRoaXMuZHJ1Z3MgPSBpdGVtcztcclxuICAgICAgICB0aGlzLmRydWdzLnB1c2goe2RydWdUeXBlSWQ6ICdPVEhFUicsIG5hbWU6ICdPdGhlcid9KTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRydWdzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIC8vIHRoaXMudmljdGltU2VydmljZS5nZXREb2NrZXRMaXN0KHRoaXMub2ZmZW5kZXJJZCkuc3Vic2NyaWJlKFxyXG4gICAgLy8gICAoaXRlbXM6IGFueSkgPT4ge1xyXG4gICAgLy8gICAgIHRoaXMuZG9ja2V0bGlzdCA9IGl0ZW1zO1xyXG4gICAgLy8gICB9XHJcblxyXG4gICAgLy8gKTtcclxuXHJcbiAgICB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdtaW5vckZsYWcnKS52YWx1ZUNoYW5nZXNcclxuICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgLy8gdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5GaXJzdE5hbWUnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAvLyB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdndWFyZGlhbkxhc3ROYW1lJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2d1YXJkaWFuV29ya1Bob25lJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2d1YXJkaWFuSG9tZVBob25lJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2d1YXJkaWFuQ2VsbFBob25lJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgXHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgdGhpcy52aWN0aW1Gb3JtLmdldCgndmljdGltQWR2b2NhdGVGbGFnJykudmFsdWVDaGFuZ2VzXHJcbiAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdhZHZvY2F0ZUZpcnN0TmFtZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdhZHZvY2F0ZUxhc3ROYW1lJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2Fkdm9jYXRlV29ya1Bob25lJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2Fkdm9jYXRlSG9tZVBob25lJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2Fkdm9jYXRlQ2VsbFBob25lJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBiYWNrKCl7XHJcblxyXG4gICAgLy90aGlzLm9uU2F2ZS5lbWl0KHRoaXMudmljdGltRGV0YWlsKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsndmljdGltTGlzdCddKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZGVsZXRlVmljdGltKCkge1xyXG4gICAgdGhpcy5jb21tb25EaWFsb2dTZXJ2aWNlXHJcbiAgICAuY29uZmlybSgnJywgJ0RvIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFZpY3RpbT8nLCAnWWVzJywgJ05vJylcclxuICAgIC5zdWJzY3JpYmUocmVzID0+IHt0aGlzLnJlc3VsdCA9ICByZXM7XHJcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMudmljdGltU2VydmljZS5kZWxldGVWaWN0aW1zKHRoaXMudmljdGltRGV0YWlsLnZpY3RpbUlkKVxyXG4gICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignRGVsZXRlIFN1Y2Nlc3NmdWxseSEnLCAnJywge1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsIH0pO31cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3ZpY3RpbSddKTtcclxuICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh0aGlzLnZpY3RpbURldGFpbCk7XHJcbiAgICAgICAgfVxyXG4gICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHJhZGlvTWlub3JDaGFuZ2UoJGV2ZW50OiBNYXRSYWRpb0NoYW5nZSl7XHJcbiAgIC8vIGNvbnN0IGd1YXJkaWFuTGFzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5MYXN0TmFtZScpO1xyXG4gICAgLy9jb25zdCBndWFyZGlhbkZpcnN0TmFtZUNvbnRyb2wgPSB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdndWFyZGlhbkZpcnN0TmFtZScpO1xyXG5cclxuICBcclxuICAgIGlmICgkZXZlbnQudmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5ndWFyZGlhblRhYkZsYWcgPSB0cnVlO1xyXG4gICAgIC8vIGd1YXJkaWFuTGFzdE5hbWVDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgLy8gZ3VhcmRpYW5GaXJzdE5hbWVDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIC8vdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuTm9QaG9uZUZsYWcgPSAgdHJ1ZTtcclxuICAgXHJcbiAgICAgXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICB0aGlzLmd1YXJkaWFuVGFiRmxhZyA9IGZhbHNlO1xyXG4gICAgIC8vIGd1YXJkaWFuTGFzdE5hbWVDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgIC8vIGd1YXJkaWFuRmlyc3ROYW1lQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICBcclxuICAgICBcclxuICAgIH1cclxuXHJcblx0XHQvL2d1YXJkaWFuTGFzdE5hbWVDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgLy8gZ3VhcmRpYW5GaXJzdE5hbWVDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgXHJcbiAgfVxyXG5cclxuICByYWRpb0Fkdm9jYXRlQ2hhbmdlKCRldmVudDogTWF0UmFkaW9DaGFuZ2Upe1xyXG5cclxuICAgIGNvbnN0IGFkdm9jYXRlTGFzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnYWR2b2NhdGVMYXN0TmFtZScpO1xyXG4gICAgY29uc3QgYWR2b2NhdGVGaXJzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnYWR2b2NhdGVGaXJzdE5hbWUnKTtcclxuICAgIC8vIGNvbnN0IGFkdm9jYXRlTm9QaG9uZUNvbnRyb2wgPSB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdhZHZvY2F0ZU5vUGhvbmVGbGFnJyk7XHJcbiAgICBcclxuICBcclxuXHJcbiAgICBpZiAoJGV2ZW50LnZhbHVlID09PSBcIllTXCIpIHtcclxuICAgICAgdGhpcy5hZHZvY2F0ZVRhYkZsYWcgPSB0cnVlO1xyXG4gICAgICBhZHZvY2F0ZUxhc3ROYW1lQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICBhZHZvY2F0ZUZpcnN0TmFtZUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5hZHZvY2F0ZVRhYkZsYWcgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgICBhZHZvY2F0ZUxhc3ROYW1lQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgYWR2b2NhdGVGaXJzdE5hbWVDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBhZHZvY2F0ZUxhc3ROYW1lQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICBhZHZvY2F0ZUZpcnN0TmFtZUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICByYWRpb0NpY0NoYW5nZSgkZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKXtcclxuICAgIGlmICgkZXZlbnQudmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5jb21tb25DaGlsZHJlbkRpdkZsYWcgPSB0cnVlO1xyXG4gICAgICAvLyByZXF1cmllIGZpZWxkXHJcbiAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycygnY29tbW9uQ2hpbGRyZW4nKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuY29tbW9uQ2hpbGRyZW5EaXZGbGFnID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWxpZGF0b3JzKHR5cGUpIHtcclxuICAgIGlmKHR5cGUgPT0gJ2NvbW1vbkNoaWxkcmVuJyl7XHJcbiAgICB0aGlzLnZpY3RpbUZvcm0uZ2V0KCdjb21tb25DaGlsZHJlbk51bWJlcicpLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnY29tbW9uQ2hpbGRyZW5OdW1iZXInKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICB9XHJcbiAgIGVsc2UgaWYgKHR5cGUgPT0gJ2Nwbycpe1xyXG4gICAgdGhpcy52aWN0aW1Gb3JtLmdldCgnY3BvRXhwaXJhdGlvbkRhdGUnKS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMudmljdGltRm9ybS5nZXQoJ2Nwb0V4cGlyYXRpb25EYXRlJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgIH1cclxuICB9XHJcbiAgcmFkaW9TdXBwb3J0Q2hhbmdlKCRldmVudDogTWF0UmFkaW9DaGFuZ2Upe1xyXG4gICAgaWYgKCRldmVudC52YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnN1cHBvcnRJblBsYWNlRGl2RmxhZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICB0aGlzLnN1cHBvcnRJblBsYWNlRGl2RmxhZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICByYWRpb1dlYXBvbkNoYW5nZSgkZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKXtcclxuICAgIGlmICgkZXZlbnQudmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy53ZWFwb25JbnZvbHZlZERpdkZsYWcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy53ZWFwb25JbnZvbHZlZERpdkZsYWcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgcmFkaW9EcnVnQ2hhbmdlKCRldmVudDogTWF0UmFkaW9DaGFuZ2Upe1xyXG4gICAgaWYgKCRldmVudC52YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmRydWdVc2VEaXZGbGFnID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuZHJ1Z1VzZURpdkZsYWcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJhZGlvQ3BvQ2hhbmdlKCRldmVudDogTWF0UmFkaW9DaGFuZ2Upe1xyXG4gICAgaWYgKCRldmVudC52YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmNwb0V4cGlyYXRpb25EaXZGbGFnID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKCdjcG8nKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuY3BvRXhwaXJhdGlvbkRpdkZsYWcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZURPQkNoYW5nZSgkZXZlbnQgKXtcclxuICAgdmFyIGFnZURpZk1zID0gRGF0ZS5ub3coKSAtICAkZXZlbnQudmFsdWU7XHJcbiAgIHZhciBhZ2VEYXRlID0gbmV3IERhdGUoYWdlRGlmTXMpOyBcclxuICAgIGlmKCBNYXRoLmFicyhhZ2VEYXRlLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTcwKSA8PSAxOCl7XHJcbiAgICAgXHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdWaWN0aW0gaXMgYSBNaW5vci4gVGhpcyBpbmZvcm1hdGlvbiBpcyBhIHNlbnNpdGl2ZSBhbmQgc2hvdWxkIG5vdCBiZSBkaXNjbG9zZWQgdG8gYW55IHVuYXV0aG9yaXplZCBwYXJ0aWVzLiBDb250YWN0IHRoZSBsZWdhbCBndWFyZGlhbi4nLCAnJywge1xyXG4gICAgICAgIGR1cmF0aW9uOiA2MDAwLH0pO1xyXG4gICAgICAgIGNvbnN0IG1pbm9yQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ21pbm9yRmxhZycpO1xyXG4gICAgICAgIG1pbm9yQ29udHJvbC5zZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgLy8gIGNvbnN0IGd1YXJkaWFuTGFzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5MYXN0TmFtZScpO1xyXG4gICAgICAgLy8gY29uc3QgZ3VhcmRpYW5GaXJzdE5hbWVDb250cm9sID0gdGhpcy52aWN0aW1Gb3JtLmdldCgnZ3VhcmRpYW5GaXJzdE5hbWUnKTtcclxuICAgICAgXHJcblxyXG4gICAgICAgIHRoaXMuZ3VhcmRpYW5UYWJGbGFnID0gdHJ1ZTtcclxuICAgICAgIC8vIGd1YXJkaWFuTGFzdE5hbWVDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIC8vICBndWFyZGlhbkZpcnN0TmFtZUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgXHJcbiAgIFxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgY2hlY2tPdGhlcldlYXBvbihXZWFwb25Vc2Upe1xyXG5cclxuICAgIGNvbnN0IG90aGVyV2VhcG9uQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ290aGVyV2VhcG9uJyk7XHJcbiAgICAgaWYgKFdlYXBvblVzZS5pbmNsdWRlcyhcIk9USEVSXCIpKXtcclxuICAgICB0aGlzLm90aGVyV2VhcG9uRmxhZyA9IHRydWU7XHJcbiAgICAgb3RoZXJXZWFwb25Db250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5vdGhlcldlYXBvbkZsYWcgPSBmYWxzZTtcclxuICAgICAgb3RoZXJXZWFwb25Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgfVxyXG4gICBvdGhlcldlYXBvbkNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tPdGhlckRydWcoRHJ1Z1VzZSl7XHJcblxyXG4gICAgY29uc3Qgb3RoZXJEcnVnQ29udHJvbCA9IHRoaXMudmljdGltRm9ybS5nZXQoJ290aGVyRHJ1ZycpO1xyXG4gICAgIGlmIChEcnVnVXNlLmluY2x1ZGVzKFwiT1RIRVJcIikpe1xyXG4gICAgIHRoaXMub3RoZXJEcnVnRmxhZyA9IHRydWU7XHJcbiAgICAgb3RoZXJEcnVnQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgXHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMub3RoZXJEcnVnRmxhZyA9IGZhbHNlO1xyXG4gICAgICBvdGhlckRydWdDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgXHJcblxyXG4gICAgfVxyXG4gICBvdGhlckRydWdDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcbiBcclxuICAvLyNyZWdpb24gXCJzYXZlIHZpY3RpbVwiXHJcbiAgc2F2ZVZpY3RpbSgpIHtcclxuICAgIC8vdmFyIG15UGF0aCAgPSAgdGhpcy5yb3V0ZXIudXJsLnNsaWNlKC0xMClcclxuXHJcbiAgLy9ndWFyZGlhbiBwaG9uZSBsb2dpY1xyXG4gIGlmICghdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuTm9QaG9uZUZsYWcpXHJcbiAgIHtcclxuICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuSG9tZVBob25lKXtcclxuICAgICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ib21lUGhvbmUgIT09IG51bGwpe1xyXG4gICAgICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuSG9tZVBob25lICE9PSBcIlwiKXtcclxuICAgICAgICAgICAgIHRoaXMuZ3VhcmRpYW5QaG9uZUV4aXN0RmxhZyA9ICB0cnVlO1xyXG4gICAgICAgfVxyXG4gICAgIH1cclxuICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbldvcmtQaG9uZSAhPT0gdW5kZWZpbmVkKXtcclxuICAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbldvcmtQaG9uZSAhPT0gbnVsbCl7XHJcbiAgICAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbldvcmtQaG9uZSAhPT0gXCJcIil7XHJcbiAgICAgICAgICAgIHRoaXMuZ3VhcmRpYW5QaG9uZUV4aXN0RmxhZyA9ICB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5DZWxsUGhvbmUpe1xyXG4gICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQ2VsbFBob25lICE9PSBudWxsKXtcclxuICAgICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQ2VsbGhvbmUgIT09IFwiXCIpe1xyXG4gICAgICAgICAgICB0aGlzLmd1YXJkaWFuUGhvbmVFeGlzdEZsYWcgPSAgdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgXHJcbiAgICBjb25zb2xlLmxvZygndGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuTm9QaG9uZUZsYWcnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbk5vUGhvbmVGbGFnKTtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmd1YXJkaWFuUGhvbmVFeGlzdEZsYWcnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZ3VhcmRpYW5QaG9uZUV4aXN0RmxhZyk7XHJcbiBcclxuXHJcbiAgICBpZiAodGhpcy5ndWFyZGlhblBob25lRXhpc3RGbGFnID09PSBmYWxzZSAmJiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ob1Bob25lRmxhZyA9PT0gZmFsc2UpXHJcbiAgICB7XHJcbiAgICAgXHJcbiAgICAgICAgICB0aGlzLnBob25lVmFsaWRhdGlvbkZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25EaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAud2FybmluZygnJywgJ1BsZWFzZSBjaGVjayB0aGUgZ3VhcmRpYW4gcGhvbmUgZmllbGQuIFlvdSBoYXZlIHRvIGZpbGwgb25lIG9mIHRoZSB0aHJlZSBwaG9uZSBmaWxlZHMuJywgJ09rJylcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHt0aGlzLnJlc3VsdCA9ICByZXM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLnBob25lVmFsaWRhdGlvbkZsYWcnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMucGhvbmVWYWxpZGF0aW9uRmxhZyk7XHJcblxyXG4vL2Fkdm9jYXRlIHBob25lIGxvZ2ljXHJcbmlmICghdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlTm9QaG9uZUZsYWcpXHJcbntcclxuICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlSG9tZVBob25lKXtcclxuICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVIb21lUGhvbmUgIT09IG51bGwpe1xyXG4gICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlSG9tZVBob25lICE9PSBcIlwiKXtcclxuICAgICAgICAgIHRoaXMuYWR2b2NhdGVQaG9uZUV4aXN0RmxhZyA9ICB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZVdvcmtQaG9uZSAhPT0gdW5kZWZpbmVkKXtcclxuICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZVdvcmtQaG9uZSAhPT0gbnVsbCl7XHJcbiAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZVdvcmtQaG9uZSAhPT0gXCJcIil7XHJcbiAgICAgICAgIHRoaXMuYWR2b2NhdGVQaG9uZUV4aXN0RmxhZyA9ICB0cnVlO1xyXG4gICB9XHJcbiB9XHJcbiB9XHJcblxyXG5cclxuIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVDZWxsUGhvbmUpe1xyXG4gICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlQ2VsbFBob25lICE9PSBudWxsKXtcclxuICAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlQ2VsbGhvbmUgIT09IFwiXCIpe1xyXG4gICAgICAgICB0aGlzLmFkdm9jYXRlUGhvbmVFeGlzdEZsYWcgPSAgdHJ1ZTtcclxuICAgfVxyXG4gfVxyXG4gfVxyXG5cclxufVxyXG5cclxuIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVOb1Bob25lRmxhZycpO1xyXG4gY29uc29sZS5sb2codGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlTm9QaG9uZUZsYWcpO1xyXG4gY29uc29sZS5sb2coJ3RoaXMuYWR2b2NhdGVQaG9uZUV4aXN0RmxhZycpO1xyXG4gY29uc29sZS5sb2codGhpcy5hZHZvY2F0ZVBob25lRXhpc3RGbGFnKTtcclxuXHJcbiBpZih0aGlzLmFkdm9jYXRlUGhvbmVFeGlzdEZsYWcgPT09IGZhbHNlICYmIHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZU5vUGhvbmVGbGFnID09PSBmYWxzZSlcclxuIHtcclxuICBcclxuICAgICAgIHRoaXMucGhvbmVWYWxpZGF0aW9uRmxhZyA9IHRydWU7XHJcbiAgICAgICB0aGlzLmNvbW1vbkRpYWxvZ1NlcnZpY2VcclxuICAgICAgIC53YXJuaW5nKCcnLCAnUGxlYXNlIGNoZWNrIHRoZSBhZHZvY2F0ZSBwaG9uZSBmaWVsZC4gWW91IGhhdmUgdG8gZmlsbCBvbmUgb2YgdGhlIHRocmVlIHBob25lIGZpbGVkcy4nLCAnT2snKVxyXG4gICAgICAgLnN1YnNjcmliZShyZXMgPT4ge3RoaXMucmVzdWx0ID0gIHJlcztcclxuICAgICAgICAgXHJcbiAgICAgICB9KTtcclxuIH1cclxuXHJcblxyXG4gIGNvbnNvbGUubG9nKCd0aGlzLnBob25lVmFsaWRhdGlvbkZsYWcgMScpO1xyXG4gIGNvbnNvbGUubG9nKHRoaXMucGhvbmVWYWxpZGF0aW9uRmxhZyk7XHJcbiBpZiAoIHRoaXMucGhvbmVWYWxpZGF0aW9uRmxhZyA9PT0gZmFsc2Upe1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy52aWN0aW1EZXRhaWwgPT09IG51bGwpe1xyXG4gICAgICAvL2luc2VydCBuZXcgdmljdGltXHJcbiBcclxuICAgICB2YXIgbXlWaWN0aW1TdXBwb3J0cyA9IFtdO1xyXG4gICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltU3VwcG9ydHMpe1xyXG4gICAgICB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltU3VwcG9ydHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgY29uc3QgdmljdGltU3VwcG9ydD0gPFZpY3RpbVN1cHBvcnQ+e307XHJcbiAgICAgICAgICAgIHZpY3RpbVN1cHBvcnQudmljdGltSWQ9IHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1JZDtcclxuICAgICAgICAgICAgdmljdGltU3VwcG9ydC52aWN0aW1TdXBwb3J0VHlwZUlkPSBlbGVtZW50O1xyXG4gICAgICAgICAgICB2aWN0aW1TdXBwb3J0Lm1vZGlmaWVkQnk9IHRoaXMuc3RhZmZJZDtcclxuICAgICAgICAgICAgbXlWaWN0aW1TdXBwb3J0cy5wdXNoKHZpY3RpbVN1cHBvcnQpO1xyXG4gICAgICAgICB9KTtcclxuICAgICB9XHJcblxyXG4gICAgdmFyIG15VmljdGltRHJ1Z1VzZXMgPSBbXTtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgZHVyaW5nIHNhdmUnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcyk7XHJcbiAgICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbURydWdVc2VzKXtcclxuICAgICAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbURydWdVc2VzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgY29uc3QgdmljdGltRHJ1Z1VzZSA9IDxWaWN0aW1EcnVnVXNlPnt9O1xyXG4gICAgIHZpY3RpbURydWdVc2UuZHJ1Z1R5cGVJZCA9IGVsZW1lbnQ7XHJcblxyXG4gICAgIGlmIChlbGVtZW50ID09PVwiT1RIRVJcIiB8fCBlbGVtZW50ID09PSBcIlwiIHx8IGVsZW1lbnQgPT09IG51bGwpe1xyXG4gICAgICB2aWN0aW1EcnVnVXNlLmRydWdUeXBlSWQgPSBudWxsO1xyXG4gICAgICB2aWN0aW1EcnVnVXNlLm90aGVyRHJ1ZyA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5vdGhlckRydWc7XHJcbiAgICAgfVxyXG4gICAgIGVsc2V7XHJcbiAgICAgIHZpY3RpbURydWdVc2UuZHJ1Z1R5cGVJZCA9IGVsZW1lbnQ7XHJcbiAgICAgIHZpY3RpbURydWdVc2Uub3RoZXJEcnVnID0gbnVsbDsgXHJcbiAgICAgfVxyXG4gICAgIFxyXG4gICAgIHZpY3RpbURydWdVc2UubW9kaWZpZWRCeSA9IHRoaXMuc3RhZmZJZDtcclxuICAgICB2aWN0aW1EcnVnVXNlLnZpY3RpbUlkID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbUlkO1xyXG4gICAgIG15VmljdGltRHJ1Z1VzZXMucHVzaCh2aWN0aW1EcnVnVXNlKTtcclxuICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZygndGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbURydWdVc2VzIGR1cmluZyBzYXZlIDEnKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcyk7XHJcblxyXG5cclxuXHJcbiAgdmFyIG15VmljdGltV2VhcG9uVXNlcyA9IFtdO1xyXG5cclxuICBpZiAodGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbVdlYXBvblVzZXMpe1xyXG4gICAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbVdlYXBvblVzZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgIGNvbnN0IHZpY3RpbVdlYXBvblVzZSA9IDxWaWN0aW1XZWFwb25Vc2U+e307XHJcbiAgICAgICB2aWN0aW1XZWFwb25Vc2UudmljdGltSWQ9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltSWQ7XHJcbiAgICAgICB2aWN0aW1XZWFwb25Vc2Uud2VhcG9uVHlwZUlkPSBlbGVtZW50O1xyXG5cclxuICAgICAgIGlmIChlbGVtZW50ID09XCJPVEhFUlwiKXtcclxuICAgICAgICB2aWN0aW1XZWFwb25Vc2Uub3RoZXJXZWFwb24gPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUub3RoZXJXZWFwb247XHJcbiAgICAgICB9XHJcbiAgICAgICBlbHNle1xyXG4gICAgICAgIHZpY3RpbVdlYXBvblVzZS5vdGhlcldlYXBvbiA9IG51bGw7IFxyXG4gICAgICAgfVxyXG5cclxuICAgICAgIHZpY3RpbVdlYXBvblVzZS5tb2RpZmllZEJ5PSB0aGlzLnN0YWZmSWQ7XHJcbiAgICAgICBteVZpY3RpbVdlYXBvblVzZXMucHVzaCh2aWN0aW1XZWFwb25Vc2UpO1xyXG4gICB9KTtcclxuIH1cclxuXHJcbiBjb25zdCBuZXdWaWN0aW0gPSB7XHJcbiAgICAgICAgIHZpY3RpbUlkOiAwLFxyXG4gICAgICAgICBvZmZlbmRlcklkOiB0aGlzLm9mZmVuZGVySWQsXHJcbiAgICAgICAgIHZpY3RpbU9mZmVuZGVyUmVsYXRpb25zaGlwVHlwZUlkOnRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1PZmZlbmRlclJlbGF0aW9uc2hpcFR5cGVJZCxcclxuICAgICAgICAgbGFzdE5hbWU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5sYXN0TmFtZSxcclxuICAgICAgICAgZmlyc3ROYW1lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZmlyc3ROYW1lLFxyXG4gICAgICAgICBtaWRkbGVOYW1lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUubWlkZGxlTmFtZSAgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUubWlkZGxlTmFtZSA6IG51bGwsXHJcbiAgICAgICAgIHByZWZpeElkOnRoaXMudmljdGltRm9ybS52YWx1ZS5wcmVmaXhJZCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5wcmVmaXhJZCA6IG51bGwgLFxyXG4gICAgICAgICBzdWZmaXhJZDp0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VmZml4SWQgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VmZml4SWQ6IG51bGwsXHJcbiAgICAgICAgIGJpcnRoRGF0ZTp0aGlzLnZpY3RpbUZvcm0udmFsdWUuYmlydGhEYXRlPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYmlydGhEYXRlIDogbnVsbCxcclxuICAgICAgICAgZ2VuZGVyQ29kZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmdlbmRlckNvZGU/IHRoaXMudmljdGltRm9ybS52YWx1ZS5nZW5kZXJDb2RlOiBudWxsLFxyXG4gICAgICAgICB1bmRlclN1cGVydmlzaW9uRmxhZzogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnVuZGVyU3VwZXJ2aXNpb25GbGFnLFxyXG4gICAgICAgICBtaW5vckZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5taW5vckZsYWcsXHJcbiAgICAgICAgIHZpY3RpbUFkdm9jYXRlRmxhZzogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbUFkdm9jYXRlRmxhZyxcclxuICAgICAgICAgaG9tZVBob25lOiAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmhvbWVQaG9uZSA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ob21lUGhvbmUgOiBudWxsLFxyXG4gICAgICAgICB3b3JrUGhvbmU6IHRoaXMudmljdGltRm9ybS52YWx1ZS53b3JrUGhvbmUgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUud29ya1Bob25lIDogbnVsbCxcclxuICAgICAgICAgY2VsbFBob25lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY2VsbFBob25lID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmNlbGxQaG9uZTogbnVsbCxcclxuICAgICAgICAgZW1haWw6IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWFpbCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWFpbDogbnVsbCxcclxuICAgICAgICAgYWRkcmVzc0lkOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWRkcmVzc0lkID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkZHJlc3NJZDogMSxcclxuICAgICAgICAgZW1lcmdlbmN5Q29udGFjdDogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmVtZXJnZW5jeUNvbnRhY3QgID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmVtZXJnZW5jeUNvbnRhY3QgOiBudWxsLFxyXG4gICAgICAgICBlbWVyZ2VuY3lDb250YWN0UGhvbmU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWVyZ2VuY3lDb250YWN0UGhvbmUgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZW1lcmdlbmN5Q29udGFjdFBob25lOiBudWxsICxcclxuICAgICAgICAgY29tbW9uQ2hpbGRyZW5GbGFnOiAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmNvbW1vbkNoaWxkcmVuRmxhZyxcclxuICAgICAgICAgY29tbW9uQ2hpbGRyZW5OdW1iZXI6ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY29tbW9uQ2hpbGRyZW5OdW1iZXIsXHJcbiAgICAgICAgIGNwb0V4cGlyYXRpb25GbGFnOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY3BvRXhwaXJhdGlvbkZsYWcsXHJcbiAgICAgICAgIGNwb0V4cGlyYXRpb25EYXRlOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY3BvRXhwaXJhdGlvbkRhdGUgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3RhcnREYXRlLCAnc2hvcnQnKSA6IG51bGwsXHJcbiAgICAgICAgIHN1cHBvcnRJblBsYWNlRmxhZzogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnN1cHBvcnRJblBsYWNlRmxhZyxcclxuICAgICAgICAgd2VhcG9uSW52b2x2ZWRGbGFnOiAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLndlYXBvbkludm9sdmVkRmxhZyxcclxuICAgICAgICAgZHJ1Z1VzZUZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5kcnVnVXNlRmxhZyxcclxuICAgICAgICAgYWxjb2hvbFVzZUZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5hbGNvaG9sVXNlRmxhZyxcclxuICAgICAgICAgYWNjZXNzUmlzazp0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWNjZXNzUmlzayxcclxuICAgICAgICAgbW9kaWZpZWRCeTp0aGlzLnN0YWZmSWQsXHJcbiAgICAgICAgIHZWaWN0aW1BZHZvY2F0ZTogbnVsbCxcclxuICAgICAgICAgdlZpY3RpbUd1YXJkaWFuOiBudWxsLFxyXG4gICAgICAgICB2aWN0aW1EcnVnVXNlczogbXlWaWN0aW1EcnVnVXNlcyxcclxuICAgICAgICAgdmljdGltU3VwcG9ydHM6IG15VmljdGltU3VwcG9ydHMsXHJcbiAgICAgICAgIHZpY3RpbVdlYXBvblVzZXM6IG15VmljdGltV2VhcG9uVXNlcyxcclxuXHJcbiAgICAgICAgIGFkdm9jYXRlRmlyc3ROYW1lOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZUxhc3ROYW1lOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZUVtYWlsOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZVByZWZpeElkOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZVN1ZmZpeElkOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZU5vUGhvbmVGbGFnOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZUhvbWVQaG9uZTogbnVsbCxcclxuICAgICAgICAgYWR2b2NhdGVXb3JrUGhvbmU6IG51bGwsXHJcbiAgICAgICAgIGFkdm9jYXRlQ2VsbFBob25lOiBudWxsLFxyXG4gICAgICAgICBhZHZvY2F0ZUFkZHJlc3NJZDogbnVsbCxcclxuICAgICAgICAgZ3VhcmRpYW5GaXJzdE5hbWU6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuTGFzdE5hbWU6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuRW1haWw6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuUHJlZml4SWQ6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuU3VmZml4SWQ6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuTm9QaG9uZUZsYWc6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuSG9tZVBob25lOiBudWxsLFxyXG4gICAgICAgICBndWFyZGlhbldvcmtQaG9uZTogbnVsbCxcclxuICAgICAgICAgZ3VhcmRpYW5DZWxsUGhvbmU6IG51bGwsXHJcbiAgICAgICAgIGd1YXJkaWFuQWRkcmVzc0lkOiBudWxsLFxyXG4gICAgICAgICBndWFyZGlhbkJpcnRoRGF0ZTogbnVsbCxcclxuICAgICAgICAgcmVsYXRpb25zaGlwOiBudWxsLFxyXG4gICAgICAgICBhbGxvd0Nzb3NhQ29udGFjdEZsYWc6IG51bGxcclxuICAgICAgICAgXHJcblxyXG4gICAgICAgICB9XHJcblxyXG4gICAgIGlmICh0aGlzLmFkZHJlc3NJZCA9PSAwKXtcclxuICAgICAgbmV3VmljdGltLmFkZHJlc3NJZCA9IG51bGw7XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgbmV3VmljdGltLmFkZHJlc3NJZCA9ICB0aGlzLmFkZHJlc3NJZDtcclxuICAgICB9XHJcbiAgICAgXHJcbiAgICAgbmV3VmljdGltLmFkdm9jYXRlQWRkcmVzc0lkID0gIHRoaXMuYWR2b2NhdGVBZGRyZXNzSWQ7XHJcbiAgICAgbmV3VmljdGltLmd1YXJkaWFuQWRkcmVzc0lkID0gIHRoaXMuZ3VhcmRpYW5BZGRyZXNzSWQ7XHJcbiAgICAgIGNvbnNvbGUubG9nKCduZXdWaWN0aW0nKTtcclxuICAgICAgY29uc29sZS5sb2cobmV3VmljdGltKTtcclxuICAgICB0aGlzLnZpY3RpbVNlcnZpY2UucG9zdFZpY3RpbXMobmV3VmljdGltKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICAgXHJcbiAgICAgICAgIGNvbnN0IGlkID0gaXRlbXMgPyBpdGVtcy52aWN0aW1JZCA6ICcnO1xyXG5cclxuICAgICAgICAgaWYgKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1BZHZvY2F0ZUZsYWcgPT0gXCJZU1wiKXtcclxuICAgICAgICAgICBjb25zb2xlLmxvZygnYWRkIGFkdm9jYXRlJyk7XHJcbiAgICAgICAgIGNvbnN0IHZpY3RpbUFkdm9jYXRlOiBWaWN0aW1BZHZvY2F0ZSA9IHtcclxuICAgICAgICAgIHZpY3RpbUFkdm9jYXRlSWQ6IGlkLFxyXG4gICAgICAgICAgbGFzdE5hbWU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUxhc3ROYW1lLFxyXG4gICAgICAgICAgZmlyc3ROYW1lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVGaXJzdE5hbWUsXHJcbiAgICAgICAgICBwcmVmaXhJZDogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlUHJlZml4SWQsXHJcbiAgICAgICAgICBzdWZmaXhJZDogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlU3VmZml4SWQsXHJcbiAgICAgICAgICBhZGRyZXNzSWQ6IHRoaXMuYWR2b2NhdGVBZGRyZXNzSWQgPyB0aGlzLmFkdm9jYXRlQWRkcmVzc0lkOiBudWxsLFxyXG4gICAgICAgICAgbm9QaG9uZUZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZU5vUGhvbmVGbGFnID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlTm9QaG9uZUZsYWc6IG51bGwsXHJcbiAgICAgICAgICBob21lUGhvbmU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUhvbWVQaG9uZSxcclxuICAgICAgICAgIHdvcmtQaG9uZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlV29ya1Bob25lLFxyXG4gICAgICAgICAgY2VsbFBob25lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVDZWxsUGhvbmUsXHJcbiAgICAgICAgICBlbWFpbDogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlRW1haWwsXHJcbiAgICAgICAgICBtb2RpZmllZEJ5OiB0aGlzLnN0YWZmSWRcclxuICAgICAgICAgIFxyXG4gICAgXHJcbiAgICAgIH07XHJcbiAgICAgICBcclxuICAgICAgICB0aGlzLnZpY3RpbVNlcnZpY2UucG9zdFZpY3RpbUFkdm9jYXRlKGlkLCB2aWN0aW1BZHZvY2F0ZSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuIFxyXG4gICAgICAgIGlmICh0aGlzLnZpY3RpbUZvcm0udmFsdWUubWlub3JGbGFnID09IHRydWUpe1xyXG4gICAgICBcclxuICAgICAgICBjb25zdCB2aWN0aW1HdWFyZGlhbjogVmljdGltR3VhcmRpYW4gPSB7XHJcbiAgICAgICAgICB2aWN0aW1HdWFyZGlhbklkOiBpZCxcclxuICAgICAgICAgIGxhc3ROYW1lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5MYXN0TmFtZSxcclxuICAgICAgICAgIGZpcnN0TmFtZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuRmlyc3ROYW1lLFxyXG4gICAgICAgICAgcHJlZml4SWQ6IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhblByZWZpeElkLCBcclxuICAgICAgICAgIHN1ZmZpeElkOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5TdWZmaXhJZCxcclxuICAgICAgICAgIGJpcnRoRGF0ZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQmlydGhEYXRlLFxyXG4gICAgICAgICAgYWRkcmVzc0lkOiB0aGlzLmd1YXJkaWFuQWRkcmVzc0lkPyB0aGlzLmd1YXJkaWFuQWRkcmVzc0lkOiBudWxsLFxyXG4gICAgICAgICAgbm9QaG9uZUZsYWc6IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbk5vUGhvbmVGbGFnPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ob1Bob25lRmxhZzogbnVsbCxcclxuICAgICAgICAgIGhvbWVQaG9uZTogdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuSG9tZVBob25lLFxyXG4gICAgICAgICAgd29ya1Bob25lOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Xb3JrUGhvbmUsXHJcbiAgICAgICAgICBjZWxsUGhvbmU6IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbkNlbGxQaG9uZSxcclxuICAgICAgICAgIGVtYWlsOiB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5FbWFpbCxcclxuICAgICAgICAgIG1vZGlmaWVkQnk6IHRoaXMuc3RhZmZJZFxyXG4gICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgIH07XHJcbiAgICAgICBcclxuICAgICAgICB0aGlzLnZpY3RpbVNlcnZpY2UucG9zdFZpY3RpbUd1YXJkaWFuKGlkLCB2aWN0aW1HdWFyZGlhbikuc3Vic2NyaWJlKCk7XHJcbiAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0FkZCBWaWN0aW0gU3VjY2Vzc2Z1bGx5IScsICcnLCB7XHJcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vaW5zZXJ0IG5ld1xyXG4gICAgICAgIGlmICh0aGlzLmlzSW50YWtlPT09dHJ1ZSl7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3ZpY3RpbUhvbWUnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3ZpY3RpbUxpc3QnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vdGhpcy5vblNhdmUuZW1pdCh0aGlzLnZpY3RpbURldGFpbCk7XHJcbiAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgKTtcclxuXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy91cGRhdGUgdmljdGltXHJcbiAgICAgIGNvbnNvbGUubG9nKCcgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbU9mZmVuZGVyUmVsYXRpb25zaGlwVHlwZUlkJyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltT2ZmZW5kZXJSZWxhdGlvbnNoaXBUeXBlSWQpO1xyXG4gXHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLnVuZGVyU3VwZXJ2aXNpb25GbGFnID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnVuZGVyU3VwZXJ2aXNpb25GbGFnO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1PZmZlbmRlclJlbGF0aW9uc2hpcFR5cGVJZCA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltT2ZmZW5kZXJSZWxhdGlvbnNoaXBUeXBlSWQ7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmxhc3ROYW1lID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmxhc3ROYW1lO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5maXJzdE5hbWUgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZmlyc3ROYW1lO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5taWRkbGVOYW1lID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLm1pZGRsZU5hbWU7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLnByZWZpeElkID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnByZWZpeElkID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnByZWZpeElkIDogbnVsbDtcclxuICAgICAgdGhpcy52aWN0aW1EZXRhaWwuc3VmZml4SWQgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VmZml4SWQgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VmZml4SWQgOiBudWxsO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5iaXJ0aERhdGUgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYmlydGhEYXRlO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5nZW5kZXJDb2RlID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmdlbmRlckNvZGU7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLm1pbm9yRmxhZyA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5taW5vckZsYWc7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmhvbWVQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5ob21lUGhvbmU/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ob21lUGhvbmU6IG51bGw7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLndvcmtQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS53b3JrUGhvbmU/IHRoaXMudmljdGltRm9ybS52YWx1ZS53b3JrUGhvbmU6IG51bGw7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmNlbGxQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5jZWxsUGhvbmU/IHRoaXMudmljdGltRm9ybS52YWx1ZS5jZWxsUGhvbmU6IG51bGw7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmVtYWlsID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmVtYWlsO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1BZHZvY2F0ZUZsYWcgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltQWR2b2NhdGVGbGFnO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5lbWVyZ2VuY3lDb250YWN0ID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmVtZXJnZW5jeUNvbnRhY3Q7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmVtZXJnZW5jeUNvbnRhY3RQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWVyZ2VuY3lDb250YWN0UGhvbmU/IHRoaXMudmljdGltRm9ybS52YWx1ZS5lbWVyZ2VuY3lDb250YWN0UGhvbmU6IG51bGw7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmNvbW1vbkNoaWxkcmVuRmxhZyA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5jb21tb25DaGlsZHJlbkZsYWc7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmNvbW1vbkNoaWxkcmVuTnVtYmVyID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmNvbW1vbkNoaWxkcmVuTnVtYmVyO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5jcG9FeHBpcmF0aW9uRGF0ZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5jcG9FeHBpcmF0aW9uRGF0ZTtcclxuICAgICAgdGhpcy52aWN0aW1EZXRhaWwuY3BvRXhwaXJhdGlvbkZsYWcgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuY3BvRXhwaXJhdGlvbkZsYWc7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLnN1cHBvcnRJblBsYWNlRmxhZyA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuc3VwcG9ydEluUGxhY2VGbGFnO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC53ZWFwb25JbnZvbHZlZEZsYWcgPSAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLndlYXBvbkludm9sdmVkRmxhZztcclxuICAgICAgdGhpcy52aWN0aW1EZXRhaWwuZHJ1Z1VzZUZsYWcgPSAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmRydWdVc2VGbGFnO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5hbGNvaG9sVXNlRmxhZyA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWxjb2hvbFVzZUZsYWc7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmFjY2Vzc1Jpc2sgPSAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFjY2Vzc1Jpc2s7XHJcbiAgICAgIHRoaXMudmljdGltRGV0YWlsLmFkZHJlc3NJZCA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWRkcmVzc0lkO1xyXG4gICAgICB0aGlzLnZpY3RpbURldGFpbC5hbGxvd0Nzb3NhQ29udGFjdEZsYWcgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWxsb3dDc29zYUNvbnRhY3RGbGFnO1xyXG4gICAgIFxyXG4gICAgXHJcbiAgICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1TdXBwb3J0cyA9IFtdO1xyXG4gICAgICAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbVN1cHBvcnRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgdmljdGltU3VwcG9ydD0gPFZpY3RpbVN1cHBvcnQ+e307XHJcbiAgICAgICAgICAgICAgdmljdGltU3VwcG9ydC52aWN0aW1JZD0gdGhpcy52aWN0aW1EZXRhaWwudmljdGltSWQ7XHJcbiAgICAgICAgICAgICAgdmljdGltU3VwcG9ydC52aWN0aW1TdXBwb3J0VHlwZUlkPSBlbGVtZW50O1xyXG4gICAgICAgICAgICAgIHZpY3RpbVN1cHBvcnQubW9kaWZpZWRCeT0gdGhpcy5zdGFmZklkO1xyXG4gICAgICAgICAgICAgIHRoaXMudmljdGltRGV0YWlsLnZpY3RpbVN1cHBvcnRzLnB1c2godmljdGltU3VwcG9ydCk7XHJcbiAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1EcnVnVXNlcyA9IFtdO1xyXG5cclxuICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgY2FsY3VsYXRlJylcclxuICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcylcclxuXHJcbiAgICAgICB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBjb25zdCB2aWN0aW1EcnVnVXNlID0gPFZpY3RpbURydWdVc2U+e307XHJcbiAgICAgICAgdmljdGltRHJ1Z1VzZS5kcnVnVHlwZUlkID0gZWxlbWVudDtcclxuICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgYmVmb3JlJylcclxuICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcylcclxuICAgICAgIFxyXG4gICAgICAgIGlmIChlbGVtZW50ID09PSBcIk9USEVSXCIgfHwgZWxlbWVudCA9PT0gXCJcIiAgKXtcclxuICAgICAgICAgIHZpY3RpbURydWdVc2UuZHJ1Z1R5cGVJZCA9IG51bGw7XHJcbiAgICAgICAgICB2aWN0aW1EcnVnVXNlLm90aGVyRHJ1ZyA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5vdGhlckRydWc7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHZpY3RpbURydWdVc2UuZHJ1Z1R5cGVJZCA9IGVsZW1lbnQ7XHJcbiAgICAgICAgICB2aWN0aW1EcnVnVXNlLm90aGVyRHJ1ZyA9IG51bGw7XHJcbiAgICAgICAgIH1cclxuXHJcbiAgICAgICAgdmljdGltRHJ1Z1VzZS5tb2RpZmllZEJ5ID0gdGhpcy5zdGFmZklkO1xyXG4gICAgICAgIHZpY3RpbURydWdVc2UudmljdGltSWQgPSB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZDtcclxuICAgICAgICB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1EcnVnVXNlcy5wdXNoKHZpY3RpbURydWdVc2UpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgYWZ0ZXInKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcylcclxuICAgICAgICBcclxuICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgIHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1EcnVnVXNlcy5maWx0ZXIod29yZCA9PiAoICEod29yZC5kcnVnVHlwZUlkID09PSBudWxsICAmJiB3b3JkLm90aGVyRHJ1ZyA9PT0gbnVsbCkgICAgKSk7XHJcblxyXG5cclxuICAgICAgY29uc29sZS5sb2coJ2FkanVzdCB0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltRHJ1Z1VzZXMgJylcclxuICAgICAgY29uc29sZS5sb2codGhpcy52aWN0aW1Gb3JtLnZhbHVlLnZpY3RpbURydWdVc2VzKVxyXG4gXHJcbiAgICAgdGhpcy52aWN0aW1EZXRhaWwudmljdGltV2VhcG9uVXNlcyA9IFtdO1xyXG4gICAgIHRoaXMudmljdGltRm9ybS52YWx1ZS52aWN0aW1XZWFwb25Vc2VzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2aWN0aW1XZWFwb25Vc2UgPSA8VmljdGltV2VhcG9uVXNlPnt9O1xyXG4gICAgICAgICAgdmljdGltV2VhcG9uVXNlLnZpY3RpbUlkPSB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZDtcclxuICAgICAgICAgIHZpY3RpbVdlYXBvblVzZS53ZWFwb25UeXBlSWQ9IGVsZW1lbnQ7ICAgXHJcblxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3dlYXBvbiBlbGVtZW50Jyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlbGVtZW50KTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltRm9ybS52YWx1ZS5vdGhlcldlYXBvbik7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnZpY3RpbUZvcm0udmFsdWUudmljdGltV2VhcG9uVXNlcyk7XHJcblxyXG4gICAgICAgICBpZiAoZWxlbWVudCA9PVwiT1RIRVJcIil7XHJcbiAgICAgICAgICB2aWN0aW1XZWFwb25Vc2Uub3RoZXJXZWFwb249dGhpcy52aWN0aW1Gb3JtLnZhbHVlLm90aGVyV2VhcG9uO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB2aWN0aW1XZWFwb25Vc2Uub3RoZXJXZWFwb24gPSBudWxsO1xyXG4gICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdmljdGltV2VhcG9uVXNlLm1vZGlmaWVkQnk9IHRoaXMuc3RhZmZJZDtcclxuICAgICAgICAgIHRoaXMudmljdGltRGV0YWlsLnZpY3RpbVdlYXBvblVzZXMucHVzaCh2aWN0aW1XZWFwb25Vc2UpO1xyXG4gICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgIFxyXG4gICAgICBjb25zb2xlLmxvZygndGhpcy52aWN0aW1EZXRhaWwgYmVmb3JlIGVtaXQnKTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy52aWN0aW1EZXRhaWwpO1xyXG5cclxuICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlLnB1dFZpY3RpbXModGhpcy52aWN0aW1EZXRhaWwudmljdGltSWQsdGhpcy52aWN0aW1EZXRhaWwpLnN1YnNjcmliZShcclxuICAgICAgICAoaXRlbXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdVcGRhdGUgU3VjY2Vzc2Z1bGx5IScsICcnLCB7XHJcbiAgICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAvL0Fkdm9jYXRlIHNlY3Rpb25cclxuXHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUFkdm9jYXRlLnZpY3RpbUFkdm9jYXRlSWQgPSB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZDtcclxuICAgICAgICAgIHRoaXMudmljdGltQWR2b2NhdGUubGFzdE5hbWU9IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUxhc3ROYW1lO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5maXJzdE5hbWU9IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUZpcnN0TmFtZTtcclxuICAgICAgICAgIHRoaXMudmljdGltQWR2b2NhdGUucHJlZml4SWQ9IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZVByZWZpeElkID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlUHJlZml4SWQgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5zdWZmaXhJZD0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlU3VmZml4SWQgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVTdWZmaXhJZCA6IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUFkdm9jYXRlLmFkZHJlc3NJZD0gdGhpcy5hZHZvY2F0ZUFkZHJlc3NJZCA/IHRoaXMuYWR2b2NhdGVBZGRyZXNzSWQgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5ub1Bob25lRmxhZz0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlTm9QaG9uZUZsYWc/IHRydWU6IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5ob21lUGhvbmU9IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUhvbWVQaG9uZSA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5hZHZvY2F0ZUhvbWVQaG9uZSA6IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUFkdm9jYXRlLndvcmtQaG9uZT0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlV29ya1Bob25lID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlV29ya1Bob25lIDogbnVsbDtcclxuICAgICAgICAgIHRoaXMudmljdGltQWR2b2NhdGUuY2VsbFBob25lPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVDZWxsUGhvbmUgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVDZWxsUGhvbmUgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1BZHZvY2F0ZS5lbWFpbD0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmFkdm9jYXRlRW1haWwgPyB0aGlzLnZpY3RpbUZvcm0udmFsdWUuYWR2b2NhdGVFbWFpbCA6IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUFkdm9jYXRlLm1vZGlmaWVkQnk9IHRoaXMuc3RhZmZJZDtcclxuICAgICBcclxuICAgICAgIFxyXG4gICAgICBpZiAodGhpcy52aWN0aW1EZXRhaWwudmljdGltQWR2b2NhdGVGbGFnPT0nWVMnKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlmKHRoaXMudmljdGltRGV0YWlsLmFkdm9jYXRlRmlyc3ROYW1lICE9IG51bGwpe1xyXG4gICAgICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlLnB1dFZpY3RpbUFkdm9jYXRlKHRoaXMudmljdGltRGV0YWlsLnZpY3RpbUlkLHRoaXMudmljdGltQWR2b2NhdGUpLnN1YnNjcmliZShcclxuICAgICAgICAgIHJlc3A9Pnt9ICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhZGQgYWR2b2NhdGUnKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy52aWN0aW1BZHZvY2F0ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudmljdGltU2VydmljZS5wb3N0VmljdGltQWR2b2NhdGUodGhpcy52aWN0aW1EZXRhaWwudmljdGltSWQsIHRoaXMudmljdGltQWR2b2NhdGUpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgXHJcbiAgICAvLyBndWFyZGlhbiBzZWN0aW9uXHJcbiAgICB0aGlzLnZpY3RpbUd1YXJkaWFuLnZpY3RpbUd1YXJkaWFuSWQgPSB0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4ubGFzdE5hbWUgPSAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuTGFzdE5hbWU7XHJcbiAgICB0aGlzLnZpY3RpbUd1YXJkaWFuLmZpcnN0TmFtZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbkZpcnN0TmFtZTtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4ucHJlZml4SWQgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5QcmVmaXhJZCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhblByZWZpeElkIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4uc3VmZml4SWQgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5TdWZmaXhJZCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhblN1ZmZpeElkIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4uYWRkcmVzc0lkID0gdGhpcy5ndWFyZGlhbkFkZHJlc3NJZCA/IHRoaXMuZ3VhcmRpYW5BZGRyZXNzSWQgOiBudWxsO1xyXG4gICAgdGhpcy52aWN0aW1HdWFyZGlhbi5ub1Bob25lRmxhZyA9ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ob1Bob25lRmxhZz8gdHJ1ZTogZmFsc2U7XHJcbiAgICB0aGlzLnZpY3RpbUd1YXJkaWFuLmhvbWVQaG9uZSA9IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbkhvbWVQaG9uZSA/ICB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Ib21lUGhvbmUgOiBudWxsO1xyXG4gICAgdGhpcy52aWN0aW1HdWFyZGlhbi53b3JrUGhvbmUgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5Xb3JrUGhvbmUgPyAgdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuV29ya1Bob25lIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4uY2VsbFBob25lID0gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQ2VsbFBob25lID8gdGhpcy52aWN0aW1Gb3JtLnZhbHVlLmd1YXJkaWFuQ2VsbFBob25lIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4uZW1haWwgPSB0aGlzLnZpY3RpbUZvcm0udmFsdWUuZ3VhcmRpYW5FbWFpbCA/IHRoaXMudmljdGltRm9ybS52YWx1ZS5ndWFyZGlhbkVtYWlsIDogbnVsbDtcclxuICAgIHRoaXMudmljdGltR3VhcmRpYW4ubW9kaWZpZWRCeSA9IHRoaXMuc3RhZmZJZDtcclxuICBcclxuICAgIGlmICh0aGlzLnZpY3RpbURldGFpbC5taW5vckZsYWcgPT0gdHJ1ZSlcclxuICAgIHtcclxuICAgICAgIGlmKHRoaXMudmljdGltRGV0YWlsLmd1YXJkaWFuRmlyc3ROYW1lICE9IG51bGwgKVxyXG4gICAgICAgIHRoaXMudmljdGltU2VydmljZS5wdXRWaWN0aW1HdWFyZGlhbih0aGlzLnZpY3RpbURldGFpbC52aWN0aW1JZCx0aGlzLnZpY3RpbUd1YXJkaWFuKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzcD0+e1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnYWRkIGd1cmRpYW4nKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmljdGltR3VhcmRpYW4pO1xyXG4gICAgICAgICB0aGlzLnZpY3RpbVNlcnZpY2UucG9zdFZpY3RpbUd1YXJkaWFuKHRoaXMudmljdGltRGV0YWlsLnZpY3RpbUlkLCB0aGlzLnZpY3RpbUd1YXJkaWFuKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgIH1cclxuICAgXHJcbiAgICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgKTtcclxuICAgIFxyXG4gICAgfVxyXG4gIH0vL2VuZCBvZiB0aGlzLnBob25lVmFsaWRhdGlvbkZsYWcgPSBmYWxzZVxyXG4gICAgXHJcbiAgICB0aGlzLm9uU2F2ZS5lbWl0KHRoaXMudmljdGltRGV0YWlsKTtcclxuIFxyXG4gICAgICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBcInNhdmUgdmljdGltXCJcclxuICAgICAgYWRkQ29udGFjdCgpe1xyXG5cclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsndmljdGltQ29udGFjdCcsdGhpcy52aWN0aW1JZF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGZvcm1hdExhYmVsKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgXHJcbn1cclxuIl19
|