@fovestta2/web-angular 1.0.25 → 1.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -174,7 +174,7 @@ export class AddUpdateFormComponent {
174
174
  initialValue = this.formatMonthYearValue(initialValue);
175
175
  }
176
176
  groupConfig[column.name] = [
177
- { value: initialValue, disabled: column.disabled || false },
177
+ { value: initialValue, disabled: (typeof column.disabled === 'boolean' ? column.disabled : false) },
178
178
  ];
179
179
  });
180
180
  const group = this.fb.group(groupConfig);
@@ -233,6 +233,12 @@ export class AddUpdateFormComponent {
233
233
  return 'Invalid format';
234
234
  return 'Invalid field';
235
235
  }
236
+ isFieldDisabled(column, group) {
237
+ if (typeof column.disabled === 'function') {
238
+ return column.disabled(group);
239
+ }
240
+ return column.disabled || false;
241
+ }
236
242
  initializeForm() {
237
243
  this.submitted = false;
238
244
  const formGroupConfig = {};
@@ -250,7 +256,7 @@ export class AddUpdateFormComponent {
250
256
  initialValue = this.formatMonthYearValue(initialValue);
251
257
  }
252
258
  formGroupConfig[column.name] = [
253
- { value: initialValue, disabled: column.disabled || false },
259
+ { value: initialValue, disabled: (typeof column.disabled === 'boolean' ? column.disabled : false) },
254
260
  null, // We'll set validators after form creation
255
261
  ];
256
262
  // If it's a file field with an existing value, set the preview
@@ -697,7 +703,7 @@ export class AddUpdateFormComponent {
697
703
  type="text"
698
704
  [control]="control"
699
705
  [schema]="getSchema(column)"
700
- [disabled]="column.disabled || false"
706
+ [disabled]="isFieldDisabled(column, group)"
701
707
  [readonly]="false"
702
708
  [allowAlphabetsOnly]="column.allowAlphabetsOnly || false"
703
709
  [maxLength]="column.maxLength || null"
@@ -714,7 +720,7 @@ export class AddUpdateFormComponent {
714
720
  [placeholder]="column.placeholder || ''"
715
721
  [control]="control"
716
722
  [schema]="getSchema(column)"
717
- [disabled]="column.disabled || false"
723
+ [disabled]="isFieldDisabled(column, group)"
718
724
  (valueChange)="handleFieldChange(column.name, $event, control)"
719
725
  >
720
726
  </fv-email-field>
@@ -728,7 +734,7 @@ export class AddUpdateFormComponent {
728
734
  [placeholder]="column.placeholder || ''"
729
735
  [control]="control"
730
736
  [schema]="getSchema(column)"
731
- [disabled]="column.disabled || false"
737
+ [disabled]="isFieldDisabled(column, group)"
732
738
  (valueChange)="handleFieldChange(column.name, $event, control)"
733
739
  >
734
740
  </fv-password-field>
@@ -742,7 +748,7 @@ export class AddUpdateFormComponent {
742
748
  [placeholder]="column.placeholder || ''"
743
749
  [control]="control"
744
750
  [schema]="getSchema(column)"
745
- [disabled]="column.disabled || false"
751
+ [disabled]="isFieldDisabled(column, group)"
746
752
  (valueChange)="handleFieldChange(column.name, $event, control)"
747
753
  >
748
754
  </fv-number-field>
@@ -757,7 +763,7 @@ export class AddUpdateFormComponent {
757
763
  [options]="column.options || []"
758
764
  [control]="control"
759
765
  [schema]="getSchema(column)"
760
- [disabled]="column.disabled || false"
766
+ [disabled]="isFieldDisabled(column, group)"
761
767
  (valueChange)="handleFieldChange(column.name, $event, control)"
762
768
  >
763
769
  </fv-dropdown>
@@ -769,7 +775,7 @@ export class AddUpdateFormComponent {
769
775
  <fv-checkbox
770
776
  [label]="column.label"
771
777
  [control]="control"
772
- [disabled]="column.disabled || false"
778
+ [disabled]="isFieldDisabled(column, group)"
773
779
  (valueChange)="handleFieldChange(column.name, $event, control)"
774
780
  >
775
781
  </fv-checkbox>
@@ -780,7 +786,7 @@ export class AddUpdateFormComponent {
780
786
  [label]="column.label"
781
787
  [options]="column.options || []"
782
788
  [control]="control"
783
- [disabled]="column.disabled || false"
789
+ [disabled]="isFieldDisabled(column, group)"
784
790
  [layout]="column.layout || 'vertical'"
785
791
  (valueChange)="handleFieldChange(column.name, $event, control)"
786
792
  >
@@ -792,7 +798,7 @@ export class AddUpdateFormComponent {
792
798
  [label]="column.label"
793
799
  [control]="control"
794
800
  [schema]="getSchema(column)"
795
- [disabled]="column.disabled || false"
801
+ [disabled]="isFieldDisabled(column, group)"
796
802
  (valueChange)="handleFieldChange(column.name, $event, control)"
797
803
  >
798
804
  </fv-date-field>
@@ -805,7 +811,7 @@ export class AddUpdateFormComponent {
805
811
  [label]="column.label"
806
812
  [control]="control"
807
813
  [schema]="getSchema(column)"
808
- [disabled]="column.disabled || false"
814
+ [disabled]="isFieldDisabled(column, group)"
809
815
  (valueChange)="handleMonthYearChange(column.name, $event, control)"
810
816
  >
811
817
  </fv-month-year-field>
@@ -819,7 +825,7 @@ export class AddUpdateFormComponent {
819
825
  [placeholder]="column.placeholder || ''"
820
826
  [control]="control"
821
827
  [schema]="getSchema(column)"
822
- [disabled]="column.disabled || false"
828
+ [disabled]="isFieldDisabled(column, group)"
823
829
  (valueChange)="handleFieldChange(column.name, $event, control)"
824
830
  >
825
831
  </fv-rich-text-editor>
@@ -832,7 +838,7 @@ export class AddUpdateFormComponent {
832
838
  [placeholder]="column.placeholder || 'Select image'"
833
839
  [control]="control"
834
840
  [schema]="getSchema(column)"
835
- [disabled]="column.disabled || false"
841
+ [disabled]="isFieldDisabled(column, group)"
836
842
  (valueChange)="onFileChange($event, column.name)"
837
843
  >
838
844
  </fv-image-selector>
@@ -845,7 +851,7 @@ export class AddUpdateFormComponent {
845
851
  [accept]="column.accept || '*/*'"
846
852
  [control]="control"
847
853
  [schema]="getSchema(column)"
848
- [disabled]="column.disabled || false"
854
+ [disabled]="isFieldDisabled(column, group)"
849
855
  (valueChange)="onFileChange($event, column.name)"
850
856
  >
851
857
  </fv-file-selector>
@@ -861,38 +867,38 @@ export class AddUpdateFormComponent {
861
867
  [options]="column.options ? mapSearchOptions(column.options) : []"
862
868
  [control]="control"
863
869
  [schema]="getSchema(column)"
864
- [disabled]="column.disabled || false"
870
+ [disabled]="isFieldDisabled(column, group)"
865
871
  (valueChange)="handleFieldChange(column.name, $event, control)"
866
872
  >
867
873
  </fv-name-code>
868
874
  </ng-container>
869
875
 
870
876
  <ng-container *ngIf="column.type === 'phone' && !column.hidden">
871
- <fv-phone-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-phone-field>
877
+ <fv-phone-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-phone-field>
872
878
  </ng-container>
873
879
 
874
880
  <ng-container *ngIf="column.type === 'uan' && !column.hidden">
875
- <fv-uan-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-uan-field>
881
+ <fv-uan-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-uan-field>
876
882
  </ng-container>
877
883
 
878
884
  <ng-container *ngIf="column.type === 'pf' && !column.hidden">
879
- <fv-pf-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-pf-field>
885
+ <fv-pf-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-pf-field>
880
886
  </ng-container>
881
887
 
882
888
  <ng-container *ngIf="column.type === 'esi' && !column.hidden">
883
- <fv-esi-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-esi-field>
889
+ <fv-esi-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-esi-field>
884
890
  </ng-container>
885
891
 
886
892
  <ng-container *ngIf="column.type === 'ifsc' && !column.hidden">
887
- <fv-ifsc-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-ifsc-field>
893
+ <fv-ifsc-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-ifsc-field>
888
894
  </ng-container>
889
895
 
890
896
  <ng-container *ngIf="column.type === 'micr' && !column.hidden">
891
- <fv-micr-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-micr-field>
897
+ <fv-micr-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-micr-field>
892
898
  </ng-container>
893
899
 
894
900
  <ng-container *ngIf="column.type === 'iban' && !column.hidden">
895
- <fv-iban-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-iban-field>
901
+ <fv-iban-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-iban-field>
896
902
  </ng-container>
897
903
 
898
904
  <ng-container *ngIf="column.type === 'service-period' && !column.hidden">
@@ -912,7 +918,7 @@ export class AddUpdateFormComponent {
912
918
  [accept]="column.accept || 'application/pdf,image/*'"
913
919
  [control]="control"
914
920
  [schema]="getSchema(column)"
915
- [disabled]="column.disabled || false"
921
+ [disabled]="isFieldDisabled(column, group)"
916
922
  (valueChange)="handleFieldChange(column.name, $event, control)"
917
923
  >
918
924
  </fv-document-field>
@@ -924,7 +930,7 @@ export class AddUpdateFormComponent {
924
930
  [placeholder]="column.placeholder || '--:--'"
925
931
  [control]="control"
926
932
  [schema]="getSchema(column)"
927
- [disabled]="column.disabled || false"
933
+ [disabled]="isFieldDisabled(column, group)"
928
934
  (valueChange)="handleFieldChange(column.name, $event, control)"
929
935
  >
930
936
  </fv-time-field>
@@ -1046,7 +1052,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1046
1052
  type="text"
1047
1053
  [control]="control"
1048
1054
  [schema]="getSchema(column)"
1049
- [disabled]="column.disabled || false"
1055
+ [disabled]="isFieldDisabled(column, group)"
1050
1056
  [readonly]="false"
1051
1057
  [allowAlphabetsOnly]="column.allowAlphabetsOnly || false"
1052
1058
  [maxLength]="column.maxLength || null"
@@ -1063,7 +1069,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1063
1069
  [placeholder]="column.placeholder || ''"
1064
1070
  [control]="control"
1065
1071
  [schema]="getSchema(column)"
1066
- [disabled]="column.disabled || false"
1072
+ [disabled]="isFieldDisabled(column, group)"
1067
1073
  (valueChange)="handleFieldChange(column.name, $event, control)"
1068
1074
  >
1069
1075
  </fv-email-field>
@@ -1077,7 +1083,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1077
1083
  [placeholder]="column.placeholder || ''"
1078
1084
  [control]="control"
1079
1085
  [schema]="getSchema(column)"
1080
- [disabled]="column.disabled || false"
1086
+ [disabled]="isFieldDisabled(column, group)"
1081
1087
  (valueChange)="handleFieldChange(column.name, $event, control)"
1082
1088
  >
1083
1089
  </fv-password-field>
@@ -1091,7 +1097,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1091
1097
  [placeholder]="column.placeholder || ''"
1092
1098
  [control]="control"
1093
1099
  [schema]="getSchema(column)"
1094
- [disabled]="column.disabled || false"
1100
+ [disabled]="isFieldDisabled(column, group)"
1095
1101
  (valueChange)="handleFieldChange(column.name, $event, control)"
1096
1102
  >
1097
1103
  </fv-number-field>
@@ -1106,7 +1112,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1106
1112
  [options]="column.options || []"
1107
1113
  [control]="control"
1108
1114
  [schema]="getSchema(column)"
1109
- [disabled]="column.disabled || false"
1115
+ [disabled]="isFieldDisabled(column, group)"
1110
1116
  (valueChange)="handleFieldChange(column.name, $event, control)"
1111
1117
  >
1112
1118
  </fv-dropdown>
@@ -1118,7 +1124,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1118
1124
  <fv-checkbox
1119
1125
  [label]="column.label"
1120
1126
  [control]="control"
1121
- [disabled]="column.disabled || false"
1127
+ [disabled]="isFieldDisabled(column, group)"
1122
1128
  (valueChange)="handleFieldChange(column.name, $event, control)"
1123
1129
  >
1124
1130
  </fv-checkbox>
@@ -1129,7 +1135,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1129
1135
  [label]="column.label"
1130
1136
  [options]="column.options || []"
1131
1137
  [control]="control"
1132
- [disabled]="column.disabled || false"
1138
+ [disabled]="isFieldDisabled(column, group)"
1133
1139
  [layout]="column.layout || 'vertical'"
1134
1140
  (valueChange)="handleFieldChange(column.name, $event, control)"
1135
1141
  >
@@ -1141,7 +1147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1141
1147
  [label]="column.label"
1142
1148
  [control]="control"
1143
1149
  [schema]="getSchema(column)"
1144
- [disabled]="column.disabled || false"
1150
+ [disabled]="isFieldDisabled(column, group)"
1145
1151
  (valueChange)="handleFieldChange(column.name, $event, control)"
1146
1152
  >
1147
1153
  </fv-date-field>
@@ -1154,7 +1160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1154
1160
  [label]="column.label"
1155
1161
  [control]="control"
1156
1162
  [schema]="getSchema(column)"
1157
- [disabled]="column.disabled || false"
1163
+ [disabled]="isFieldDisabled(column, group)"
1158
1164
  (valueChange)="handleMonthYearChange(column.name, $event, control)"
1159
1165
  >
1160
1166
  </fv-month-year-field>
@@ -1168,7 +1174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1168
1174
  [placeholder]="column.placeholder || ''"
1169
1175
  [control]="control"
1170
1176
  [schema]="getSchema(column)"
1171
- [disabled]="column.disabled || false"
1177
+ [disabled]="isFieldDisabled(column, group)"
1172
1178
  (valueChange)="handleFieldChange(column.name, $event, control)"
1173
1179
  >
1174
1180
  </fv-rich-text-editor>
@@ -1181,7 +1187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1181
1187
  [placeholder]="column.placeholder || 'Select image'"
1182
1188
  [control]="control"
1183
1189
  [schema]="getSchema(column)"
1184
- [disabled]="column.disabled || false"
1190
+ [disabled]="isFieldDisabled(column, group)"
1185
1191
  (valueChange)="onFileChange($event, column.name)"
1186
1192
  >
1187
1193
  </fv-image-selector>
@@ -1194,7 +1200,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1194
1200
  [accept]="column.accept || '*/*'"
1195
1201
  [control]="control"
1196
1202
  [schema]="getSchema(column)"
1197
- [disabled]="column.disabled || false"
1203
+ [disabled]="isFieldDisabled(column, group)"
1198
1204
  (valueChange)="onFileChange($event, column.name)"
1199
1205
  >
1200
1206
  </fv-file-selector>
@@ -1210,38 +1216,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1210
1216
  [options]="column.options ? mapSearchOptions(column.options) : []"
1211
1217
  [control]="control"
1212
1218
  [schema]="getSchema(column)"
1213
- [disabled]="column.disabled || false"
1219
+ [disabled]="isFieldDisabled(column, group)"
1214
1220
  (valueChange)="handleFieldChange(column.name, $event, control)"
1215
1221
  >
1216
1222
  </fv-name-code>
1217
1223
  </ng-container>
1218
1224
 
1219
1225
  <ng-container *ngIf="column.type === 'phone' && !column.hidden">
1220
- <fv-phone-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-phone-field>
1226
+ <fv-phone-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-phone-field>
1221
1227
  </ng-container>
1222
1228
 
1223
1229
  <ng-container *ngIf="column.type === 'uan' && !column.hidden">
1224
- <fv-uan-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-uan-field>
1230
+ <fv-uan-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-uan-field>
1225
1231
  </ng-container>
1226
1232
 
1227
1233
  <ng-container *ngIf="column.type === 'pf' && !column.hidden">
1228
- <fv-pf-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-pf-field>
1234
+ <fv-pf-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-pf-field>
1229
1235
  </ng-container>
1230
1236
 
1231
1237
  <ng-container *ngIf="column.type === 'esi' && !column.hidden">
1232
- <fv-esi-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-esi-field>
1238
+ <fv-esi-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-esi-field>
1233
1239
  </ng-container>
1234
1240
 
1235
1241
  <ng-container *ngIf="column.type === 'ifsc' && !column.hidden">
1236
- <fv-ifsc-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-ifsc-field>
1242
+ <fv-ifsc-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-ifsc-field>
1237
1243
  </ng-container>
1238
1244
 
1239
1245
  <ng-container *ngIf="column.type === 'micr' && !column.hidden">
1240
- <fv-micr-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-micr-field>
1246
+ <fv-micr-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-micr-field>
1241
1247
  </ng-container>
1242
1248
 
1243
1249
  <ng-container *ngIf="column.type === 'iban' && !column.hidden">
1244
- <fv-iban-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column.disabled || false"></fv-iban-field>
1250
+ <fv-iban-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-iban-field>
1245
1251
  </ng-container>
1246
1252
 
1247
1253
  <ng-container *ngIf="column.type === 'service-period' && !column.hidden">
@@ -1261,7 +1267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1261
1267
  [accept]="column.accept || 'application/pdf,image/*'"
1262
1268
  [control]="control"
1263
1269
  [schema]="getSchema(column)"
1264
- [disabled]="column.disabled || false"
1270
+ [disabled]="isFieldDisabled(column, group)"
1265
1271
  (valueChange)="handleFieldChange(column.name, $event, control)"
1266
1272
  >
1267
1273
  </fv-document-field>
@@ -1273,7 +1279,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1273
1279
  [placeholder]="column.placeholder || '--:--'"
1274
1280
  [control]="control"
1275
1281
  [schema]="getSchema(column)"
1276
- [disabled]="column.disabled || false"
1282
+ [disabled]="isFieldDisabled(column, group)"
1277
1283
  (valueChange)="handleFieldChange(column.name, $event, control)"
1278
1284
  >
1279
1285
  </fv-time-field>
@@ -1310,4 +1316,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1310
1316
  }], validationError: [{
1311
1317
  type: Output
1312
1318
  }] } });
1313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z2LWNvbnRyb2xzL3NyYy9saWIvYWRkLXVwZGF0ZS1mb3JtL2FkZC11cGRhdGUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEZBLCtCQUErQjtBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBTUwsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUs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QkFDeEIseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4QixvQkFBb0I7cUJBQ3JCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErVFQ7eUdBOHJCUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9XHJcbiAgfCAndGV4dCdcclxuICB8ICdlbWFpbCdcclxuICB8ICdudW1iZXInXHJcbiAgfCAnc2VsZWN0J1xyXG4gIHwgJ25hbWUtY29kZSdcclxuICB8ICdjaGVja2JveCdcclxuICB8ICd0ZXh0YXJlYSdcclxuICB8ICdkYXRlJ1xyXG4gIHwgJ3Bhc3N3b3JkJ1xyXG4gIHwgJ3JhZGlvJ1xyXG4gIHwgJ2ZpbGUnXHJcbiAgfCAnbW9udGgteWVhcidcclxuICB8ICdwaG9uZSdcclxuICB8ICd1YW4nXHJcbiAgfCAncGYnXHJcbiAgfCAnZXNpJ1xyXG4gIHwgJ2lmc2MnXHJcbiAgfCAnbWljcidcclxuICB8ICdpYmFuJ1xyXG4gIHwgJ3NlcnZpY2UtcGVyaW9kJ1xyXG4gIHwgJ2RvY3VtZW50J1xyXG4gIHwgJ3RpbWUnO1xyXG5cclxuXHJcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25UeXBlID1cclxuICB8ICdyZXF1aXJlZCdcclxuICB8ICdlbWFpbCdcclxuICB8ICdtaW5MZW5ndGgnXHJcbiAgfCAnbWF4TGVuZ3RoJ1xyXG4gIHwgJ3BhdHRlcm4nXHJcbiAgfCAnbWluJ1xyXG4gIHwgJ21heCdcclxuICB8ICdjdXN0b20nXHJcbiAgfCAncGFzc3dvcmRDb21wbGV4aXR5JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRWYWxpZGF0aW9uIHtcclxuICB0eXBlOiBWYWxpZGF0aW9uVHlwZTtcclxuICB2YWx1ZT86IGFueTsgLy8gRm9yIG1pbkxlbmd0aCwgbWF4TGVuZ3RoLCBtaW4sIG1heCwgcGF0dGVyblxyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7IC8vIEN1c3RvbSBlcnJvciBtZXNzYWdlXHJcbiAgdmFsaWRhdG9yPzogKHZhbHVlOiBhbnksIGZvcm1Hcm91cD86IEZvcm1Hcm91cCkgPT4gYm9vbGVhbjsgLy8gRm9yIGN1c3RvbSB2YWxpZGF0aW9uXHJcbiAgcGFyYW1zPzogYW55OyAvLyBGb3IgY29tcGxleCB2YWxpZGF0aW9uIHJ1bGVzIGxpa2UgcGFzc3dvcmRDb21wbGV4aXR5XHJcbiAgZXJyb3JLZXk/OiBzdHJpbmc7IC8vIFNwZWNpZmljIGVycm9yIGtleSB0byByZXR1cm5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29sdW1uIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB0eXBlOiBGaWVsZFR5cGU7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIG9wdGlvbnM/OiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdOyAvLyBGb3Igc2VsZWN0IGZpZWxkc1xyXG4gIHZhbGlkYXRpb25zPzogRmllbGRWYWxpZGF0aW9uW107XHJcbiAgdmFsdWU/OiBhbnk7IC8vIERlZmF1bHQgdmFsdWVcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgaGludD86IHN0cmluZztcclxuICBjb2xTcGFuPzogbnVtYmVyO1xyXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiB2b2lkO1xyXG4gIGFjY2VwdD86IHN0cmluZzsgLy8gRm9yIGZpbGUgaW5wdXQgKGUuZy4sICdpbWFnZS8qJylcclxuICBmaWxlUHJldmlldz86IGJvb2xlYW47IC8vIFNob3cgaW1hZ2UgcHJldmlld1xyXG4gIHNob3dUaW1lUGlja2VyPzogYm9vbGVhbjsgLy8gU2hvdyB0aW1lIHBpY2tlciBmb3IgdGV4dCBmaWVsZHNcclxuICBhbGxvd0FscGhhYmV0c09ubHk/OiBib29sZWFuO1xyXG4gIG1heExlbmd0aD86IG51bWJlcjtcclxuICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnOyAvLyBGb3IgcmFkaW8gZ3JvdXBcclxuICBzZXJ2aWNlUGVyaW9kQ29uZmlnPzogeyBzdGFydEZpZWxkOiBzdHJpbmc7IGVuZEZpZWxkOiBzdHJpbmcgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VjdGlvbiB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7IC8vIFNlY3Rpb24gaGVhZGluZyAoZS5nLiwgXCJQRVJTT05BTCBJTkZPUk1BVElPTlwiKVxyXG4gIGZpZWxkczogRm9ybUNvbHVtbltdO1xyXG4gIGlzUmVwZWF0YWJsZT86IGJvb2xlYW47XHJcbiAgc2VjdGlvbktleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29uZmlnIHtcclxuICBzZWN0aW9uczogRm9ybVNlY3Rpb25bXTtcclxuICBzdWJtaXRMYWJlbD86IHN0cmluZztcclxuICByZXNldExhYmVsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0OiAoZGF0YTogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xyXG4gIGNhbmNlbExhYmVsPzogc3RyaW5nO1xyXG4gIGZvcm1UaXRsZT86IHN0cmluZztcclxuICBtYXhDb2xzUGVyUm93PzogbnVtYmVyO1xyXG4gIGRpc2FibGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGRpc2FibGVDYW5jZWw/OiBib29sZWFuO1xyXG4gIGhpZGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGhpZGVDYW5jZWw/OiBib29sZWFuO1xyXG59XHJcblxyXG4vLyBhZGQtdXBkYXRlLWZvcm0uY29tcG9uZW50LnRzXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBGb3JtQXJyYXksXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG4vLyBJbXBvcnQgeW91ciBsaWJyYXJ5IG1vZHVsZXNcclxuaW1wb3J0IHsgRnZFbnRyeUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW50cnktZmllbGQvZnYtZW50cnktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOdW1iZXJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW51bWJlci1maWVsZC9mdi1udW1iZXItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRyb3Bkb3duL2Z2LWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXJhZGlvLWdyb3VwL2Z2LXJhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9mdi1jaGVja2JveC9mdi1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkRhdGVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRhdGUtZmllbGQvZnYtZGF0ZS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbW9udGgteWVhci1maWVsZC9mdi1tb250aC15ZWFyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RmlsZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZmlsZS1zZWxlY3Rvci9mdi1maWxlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SW1hZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWltYWdlLXNlbGVjdG9yL2Z2LWltYWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmljaFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9mdi1yaWNoLXRleHQtZWRpdG9yL2Z2LXJpY2gtdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOYW1lQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW5hbWUtY29kZS9mdi1uYW1lLWNvZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQaG9uZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGhvbmUtZmllbGQvZnYtcGhvbmUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZVYW5GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXVhbi1maWVsZC9mdi11YW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQZkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGYtZmllbGQvZnYtcGYtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFc2lGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVzaS1maWVsZC9mdi1lc2ktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJZnNjRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pZnNjLWZpZWxkL2Z2LWlmc2MtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZNaWNyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1taWNyLWZpZWxkL2Z2LW1pY3ItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJYmFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pYmFuLWZpZWxkL2Z2LWliYW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFbWFpbEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW1haWwtZmllbGQvZnYtZW1haWwtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGFzc3dvcmQtZmllbGQvZnYtcGFzc3dvcmQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZTZXJ2aWNlUGVyaW9kQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtc2VydmljZS1wZXJpb2QvZnYtc2VydmljZS1wZXJpb2QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEb2N1bWVudEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZG9jdW1lbnQtZmllbGQvZnYtZG9jdW1lbnQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZUaW1lRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi10aW1lLWZpZWxkL2Z2LXRpbWUtZmllbGQuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuLy8gSW1wb3J0IFZhbGlkYXRpb24gVHlwZXNcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNjaGVtYSwgVmFsaWRhdGlvblJ1bGUgfSBmcm9tICdAZm92ZXN0dGEyL3ZhbGlkYXRpb24tZW5naW5lJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWRkLXVwZGF0ZS1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGdkVudHJ5RmllbGRDb21wb25lbnQsXHJcbiAgICBGdk51bWJlckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIEZ2UmFkaW9Hcm91cENvbXBvbmVudCxcclxuICAgIEZ2Q2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBGdkRhdGVGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TW9udGhZZWFyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkZpbGVTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIEZ2SW1hZ2VTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIEZ2UmljaFRleHRFZGl0b3JDb21wb25lbnQsXHJcbiAgICBGdk5hbWVDb2RlQ29tcG9uZW50LFxyXG4gICAgRnZQaG9uZUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZVYW5GaWVsZENvbXBvbmVudCxcclxuICAgIEZ2UGZGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RXNpRmllbGRDb21wb25lbnQsXHJcbiAgICBGdklmc2NGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TWljckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZJYmFuRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkVtYWlsRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlBhc3N3b3JkRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlNlcnZpY2VQZXJpb2RDb21wb25lbnQsXHJcbiAgICBGdkRvY3VtZW50RmllbGRDb21wb25lbnQsXHJcbiAgICBGdlRpbWVGaWVsZENvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1oZWFkZXJcIiAqbmdJZj1cImNvbmZpZy5mb3JtVGl0bGVcIj5cclxuICAgICAgICA8aDI+e3sgY29uZmlnLmZvcm1UaXRsZSB9fTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCIgY2xhc3M9XCJkeW5hbWljLWZvcm1cIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNvbmZpZy5zZWN0aW9uc1wiIGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCIgKm5nSWY9XCJzZWN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cclxuICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24uaXNSZXBlYXRhYmxlICYmIHNlY3Rpb24uc2VjdGlvbktleTsgZWxzZSBmbGF0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBncm91cCBvZiBnZXRTZWN0aW9uQXJyYXkoc2VjdGlvbikuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInJlcGVhdGFibGUtZ3JvdXAtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwZWF0YWJsZS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLWFkZFwiIChjbGljayk9XCJhZGRTZWN0aW9uSXRlbShzZWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjMmVjYzcxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVTZWN0aW9uSXRlbShzZWN0aW9uLCBpKVwiICpuZ0lmPVwiZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pLmNvbnRyb2xzLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI2U3NGMzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1yb3dcIj5cclxuICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc2VjdGlvbi5maWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFJlbmRlcmVyOyBjb250ZXh0OiB7IGNvbHVtbjogY29sdW1uLCBjb250cm9sOiBncm91cC5nZXQoY29sdW1uLm5hbWUpLCBncm91cDogZ3JvdXAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdFNlY3Rpb24+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRzLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHNlY3Rpb24uZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRSZW5kZXJlcjsgY29udGV4dDogeyBjb2x1bW46IGNvbHVtbiwgY29udHJvbDogZ2V0Q29udHJvbChjb2x1bW4ubmFtZSksIGdyb3VwOiBmb3JtIH1cIj5cclxuICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZmllbGRSZW5kZXJlciBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWdyb3VwPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCInZmllbGQtJyArIGNvbHVtbi50eXBlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbHVtbi5oaWRkZW4gPyB7IGRpc3BsYXk6ICdub25lJyB9IDoge31cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyAoY29sdW1uLmNvbFNwYW4gfHwgMSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHQnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVudHJ5LWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93QWxwaGFiZXRzT25seV09XCJjb2x1bW4uYWxsb3dBbHBoYWJldHNPbmx5IHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cImNvbHVtbi5tYXhMZW5ndGggfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWVudHJ5LWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZW1haWwnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVtYWlsLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWVtYWlsLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGFzc3dvcmQnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBhc3N3b3JkLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXBhc3N3b3JkLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbnVtYmVyJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1udW1iZXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtbnVtYmVyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnc2VsZWN0JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1kcm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBvcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9ucyB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnY2hlY2tib3gnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncmFkaW8nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1yYWRpby1ncm91cFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cImNvbHVtbi5sYXlvdXQgfHwgJ3ZlcnRpY2FsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZGF0ZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWRhdGUtZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZGF0ZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1vbnRoLXllYXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlTW9udGhZZWFyQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LW1vbnRoLXllYXItZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd0ZXh0YXJlYScgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcmljaC10ZXh0LWVkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1yaWNoLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZmlsZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2VGaWVsZChjb2x1bW4pOyBlbHNlIHN0YW5kYXJkRmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1pbWFnZS1zZWxlY3RvclxyXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QgaW1hZ2UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWltYWdlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRGaWxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1maWxlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImNvbHVtbi5hY2NlcHQgfHwgJyovKidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQsIGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZnYtZmlsZS1zZWxlY3Rvcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ25hbWUtY29kZScgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbmFtZS1jb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnU2VhcmNoIGJ5IENvZGUgb3IgTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zID8gbWFwU2VhcmNoT3B0aW9ucyhjb2x1bW4ub3B0aW9ucykgOiBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LW5hbWUtY29kZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bob25lJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcGhvbmUtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtcGhvbmUtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd1YW4nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi11YW4tZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtdWFuLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGYnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1wZi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1wZi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2VzaScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVzaS1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1lc2ktZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdpZnNjJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtaWZzYy1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1pZnNjLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbWljcicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1pY3ItZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtbWljci1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2liYW4nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1pYmFuLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LWliYW4tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdzZXJ2aWNlLXBlcmlvZCcgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgIDxmdi1zZXJ2aWNlLXBlcmlvZFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0RmllbGRdPVwiY29sdW1uLnNlcnZpY2VQZXJpb2RDb25maWc/LnN0YXJ0RmllbGQgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2VuZEZpZWxkXT1cImNvbHVtbi5zZXJ2aWNlUGVyaW9kQ29uZmlnPy5lbmRGaWVsZCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgID48L2Z2LXNlcnZpY2UtcGVyaW9kPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZG9jdW1lbnQnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1kb2N1bWVudC1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1VwbG9hZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthY2NlcHRdPVwiY29sdW1uLmFjY2VwdCB8fCAnYXBwbGljYXRpb24vcGRmLGltYWdlLyonXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZG9jdW1lbnQtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd0aW1lJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtdGltZS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJy0tOi0tJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXRpbWUtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWFjdGlvbnNcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhY29uZmlnLmhpZGVTdWJtaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVTdWJtaXRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuc3VibWl0TGFiZWwgfHwgJ1NhdmUnIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhY29uZmlnLmhpZGVDYW5jZWxcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlnLm9uQ2FuY2VsKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVDYW5jZWxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuY2FuY2VsTGFiZWwgfHwgJ0NhbmNlbCcgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogYFxyXG5cclxuICBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Qb3BwaW5zOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAnKTtcclxuICBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9pY29uP2ZhbWlseT1NYXRlcmlhbCtJY29ucycpO1xyXG4gICAgKntcclxuICAgICAgZm9udC1mYW1pbHk6IFwiUG9wcGluc1wiICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICAuZm9ybS1jb250YWluZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gICAgICBwYWRkaW5nOiA1cHggMTBweCAxMHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmVycm9yLWJvcmRlciB7XHJcbiAgICAgYm9yZGVyLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuaGlkZGVue1xyXG4gICAgICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1oZWFkZXIge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0taGVhZGVyIGgyIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIGNvbG9yOiAjMzAzMDMwO1xyXG4gICAgfVxyXG5cclxuICAgIC5keW5hbWljLWZvcm0ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgcGFkZGluZzogMTBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tc2VjdGlvbiB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206MTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VjdGlvbi10aXRsZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgIG1hcmdpbjogMCAwIDE2cHggMDtcclxuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgZGlzcGxheTogZ3JpZDtcclxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwxZnIpO1xyXG4gICAgICBnYXA6IDE2cHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1maWVsZC13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAucGFzc3dvcmQtdG9nZ2xlLWJ0biB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHJpZ2h0OiAxMHB4O1xyXG4gIHRvcDogMzJweDtcclxuICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgcGFkZGluZzogNHB4O1xyXG4gIGNvbG9yOiAjNjY2O1xyXG59XHJcblxyXG4ucGFzc3dvcmQtdG9nZ2xlLWJ0bjpob3ZlciB7XHJcbiAgY29sb3I6ICMzMzM7XHJcbn1cclxuXHJcbi5wYXNzd29yZC10b2dnbGUtYnRuIC5tYXRlcmlhbC1pY29ucyB7XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG4gIHdpZHRoOiBhdXRvO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgYW5kIChtYXgtd2lkdGg6IDE0MDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwxZnIpO1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICAgIHdpZHRoOiAxODBweDtcclxuICAgICAgICBtYXgtd2lkdGg6IDE4MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywxZnIpO1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwxZnIpO1xyXG4gICAgICAgIGdhcDogMTJweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwxZnIpO1xyXG4gICAgICAgIGdhcDogMTBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWZpZWxkLXdyYXBwZXIge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGFiZWwge1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XHJcbiAgICAgIGNvbG9yOiAjMTUxRDQ4O1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnJlcXVpcmVkIHtcclxuICAgICAgY29sb3I6ICNlNzRjM2M7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tY29udHJvbCB7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDM0cHg7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM4Q0JCQTg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICAgICAgY29sb3I6ICMxZjJiNDE7XHJcbiAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzLCBib3gtc2hhZG93IDAuMnM7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tY29udHJvbDpmb2N1cyB7XHJcbiAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzM0OThkYjtcclxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTIsIDE1MiwgMjE5LCAwLjEpO1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYxO1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHRleHRhcmVhLmZvcm0tY29udHJvbCB7XHJcbiAgICAgIHJlc2l6ZTogdmVydGljYWw7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIHZpZXdCb3g9JzAgMCAxMiAxMiclM0UlM0NwYXRoIGZpbGw9JyUyMzMzMycgZD0nTTYgOUwxIDRoMTB6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xyXG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCA4cHggY2VudGVyO1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0MHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5jaGVja2JveC13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgZ2FwOiA4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgICAgd2lkdGg6IDE4cHg7XHJcbiAgICAgIGhlaWdodDogMThweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC5jaGVja2JveC1sYWJlbCB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5maWxlLXVwbG9hZC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDIwcHg7XHJcbiAgcGFkZGluZzogMjBweDtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcbi5tYXRlcmlhbC1pY29ucyB7XHJcbiAgZm9udC1mYW1pbHk6ICdNYXRlcmlhbCBJY29ucycgIWltcG9ydGFudDtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHdpZHRoOiA0MHB4O1xyXG4gIHBhZGRpbmc6IDhweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbn1cclxuXHJcbi5maWxlLWZpZWxkLXdyYXBwZXIge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbi10b3A6IDE2cHg7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbi5waG90by1wcmV2aWV3LWNpcmNsZSB7XHJcbiAgd2lkdGg6IDEwMHB4O1xyXG4gIGhlaWdodDogMTAwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgYm9yZGVyOiAycHggc29saWQgI2RkZDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnM7XHJcbn1cclxuXHJcbi5waG90by1wcmV2aWV3LWNpcmNsZTpob3ZlciB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjMzQ5OGRiO1xyXG59XHJcblxyXG4ucHJldmlldy1pbWFnZSwgLmRlZmF1bHQtcGhvdG8ge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbn1cclxuXHJcbi5wcmV2aWV3LWltYWdlIGltZyB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG59XHJcblxyXG4uZGVmYXVsdC1waG90byB7XHJcbiAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxuICBjb2xvcjogIzk5OTtcclxuICBmb250LXNpemU6IDQwcHg7XHJcbn1cclxuXHJcbi5maWxlLWluZm8ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6IDhweDtcclxufVxyXG4uYnRuLWRlbGV0ZSB7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIHBhZGRpbmc6IDBweDtcclxufVxyXG5cclxuLnVwbG9hZC1idG4tZ3JvdXAge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZDNkM2QzO1xyXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZCB7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBjb2xvcjogIzIyMjtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgcGFkZGluZzogMCAxOHB4O1xyXG4gIGZvbnQtc2l6ZTogMTZweDtcclxuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDhweCAwIDAgOHB4O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycztcclxufVxyXG5cclxuLmJ0bi11cGxvYWQtaWNvbiB7XHJcbiAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogMCA4cHggOHB4IDA7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiA0OHB4O1xyXG4gIGhlaWdodDogNDBweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZC1pY29uIGkubWF0ZXJpYWwtaWNvbnMge1xyXG4gIGZvbnQtc2l6ZTogMjJweDtcclxuICBjb2xvcjogIzIyMjtcclxufVxyXG5cclxuLmJ0bi11cGxvYWQ6aG92ZXIsIC5idG4tdXBsb2FkLWljb246aG92ZXIge1xyXG4gIGJhY2tncm91bmQ6ICNmMGYwZjA7XHJcbn1cclxuXHJcbi5idG4tZGVsZXRlIHtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBjb2xvcjogcmVkO1xyXG59XHJcblxyXG4uYnRuLWRlbGV0ZTpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxufVxyXG5cclxuLmZpbGUtbmFtZSB7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIGNvbG9yOiAjNjY2O1xyXG4gIG1hcmdpbjogOHB4O1xyXG4gIG1hcmdpbi10b3A6IDEwcHg7XHJcbn1cclxuXHJcbi5maWxlLWxhYmVsIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA2cHg7XHJcbiAgICBjb2xvcjogIzE1MWQ0ODtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuICAgIC5yYWRpby1sYWJlbCB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG4gIGNvbG9yOiAjMTUxRDQ4O1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLnJhZGlvLWdyb3VwIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMjBweDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcblxyXG4ucmFkaW8taXRlbSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogNnB4O1xyXG59XHJcblxyXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xyXG4gIHdpZHRoOiAxOHB4O1xyXG4gIGhlaWdodDogMThweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgYWNjZW50LWNvbG9yOiAjMzQ5OGRiO1xyXG59XHJcblxyXG4ucmFkaW8tb3B0aW9uLWxhYmVsIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbn1cclxuXHJcbiAgICAuaGludCB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgY29sb3I6ICM3ZjhjOGQ7XHJcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcclxuICAgIH1cclxuXHJcbiAgICAuZXJyb3ItbWVzc2FnZSB7XHJcbiAgICAgIGNvbG9yOiAjZTc0YzNjO1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1hY3Rpb25zIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICBwYWRkaW5nLXRvcDogNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4ge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMjBweDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA3cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXByaW1hcnkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2QUZGO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5ODBiOTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXByaW1hcnk6ZGlzYWJsZWQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRjM2M3O1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tc2Vjb25kYXJ5IHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzk1YTVhNjtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tc2Vjb25kYXJ5OmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzdmOGM4ZDtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLW91dGxpbmUge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzMDMwO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1vdXRsaW5lOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJiMmIyYmZmO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXllYXItd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXllYXItd3JhcHBlciAuZm9ybS1jb250cm9sIHtcclxuICAgICAgcGFkZGluZy1yaWdodDogNDVweDtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWhpZGRlbiB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICAgIHdpZHRoOiAwO1xyXG4gICAgICBoZWlnaHQ6IDA7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItYnRuIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogNXB4O1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDVweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGNvbG9yOiAjNjY2O1xyXG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xyXG4gICAgICB6LWluZGV4OiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICAgY29sb3I6ICMzNDk4ZGI7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG46ZGlzYWJsZWQge1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG4gLm1hdGVyaWFsLWljb25zIHtcclxuICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgICB3aWR0aDogYXV0bztcclxuICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LXdyYXBwZXIge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LWlucHV0IHtcclxuICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1kcm9wZG93biB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiBjYWxjKDEwMCUgKyA0cHgpO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICByaWdodDogYXV0bztcclxuICAgICAgbWluLXdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSAxNnB4KTtcclxuICAgICAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkM2QzZDM7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgbWF4LWhlaWdodDogMjIwcHg7XHJcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggcmdiYSgwLDAsMCwwLjA4KTtcclxuICAgICAgei1pbmRleDogNTtcclxuICAgICAgcGFkZGluZzogNnB4IDA7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcclxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZS1vdXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtb3B0aW9uIHtcclxuICAgICAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjJmMmYyO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LW9wdGlvbjpsYXN0LWNoaWxkIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1vcHRpb246aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZjVmOWZmO1xyXG4gICAgfVxyXG5cclxuICAgIC5yZXBlYXRhYmxlLWdyb3VwLXdyYXBwZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHggMTAwcHggMjBweCAyMHB4O1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4wNSk7XHJcbiAgICB9XHJcbiAgICAucmVwZWF0YWJsZS1hY3Rpb25zIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiA0NXB4O1xyXG4gICAgICAgIHJpZ2h0OiAxNXB4O1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgICAgei1pbmRleDogMTA7XHJcbiAgICB9XHJcbiAgICAuYnRuLWljb24ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBwYWRkaW5nOiA0cHg7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7XHJcbiAgICB9XHJcbiAgICAuYnRuLWljb246aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmMGYwZjA7XHJcbiAgICB9XHJcblxyXG4gICAgLm9wdGlvbi1jb2RlIHtcclxuICAgICAgY29sb3I6ICMwMDUyY2M7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIG1pbi13aWR0aDogOTBweDtcclxuICAgIH1cclxuXHJcbiAgICAub3B0aW9uLW5hbWUge1xyXG4gICAgICBjb2xvcjogIzE1MWQ0ODtcclxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtaW5wdXQge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4O1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGNvbG9yOiAjMzQ5OGRiO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG46ZGlzYWJsZWQge1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cInRpbWVcIl0ge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cInRpbWVcIl06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLWZvcm0tZmllbGQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICM4Q0JCQTg7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZDpub3QoLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCkgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICM4Q0JCQTg7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZC5tZGMtdGV4dC1maWVsZC0tZm9jdXNlZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICMzNDk4ZGI7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZC5lcnJvci1ib3JkZXIgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWF0LW1kYy1mb3JtLWZpZWxkLWlucHV0LWNvbnRyb2wgaW5wdXQge1xyXG4gICAgICBmb250LWZhbWlseTogXCJQb3BwaW5zXCIgIWltcG9ydGFudDtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICBjb2xvcjogIzFmMmI0MTtcclxuICAgIH1cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkVXBkYXRlRm9ybUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IEZvcm1Db25maWc7XHJcbiAgQE91dHB1dCgpIHZhbGlkYXRpb25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBmaWxlUHJldmlld3M6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBmaWxlTmFtZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBwYXNzd29yZFZpc2liaWxpdHk6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgc2VhcmNoUXVlcmllczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgaG9zdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGltcG9ydCgnQGFuZ3VsYXIvY29yZScpLlNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSAmJiAhY2hhbmdlc1snY29uZmlnJ10uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gTGlmZWN5Y2xlIGhvb2sgLSBjYW4gYmUgdXNlZCBmb3IgZGF0ZXBpY2tlciBpbml0aWFsaXphdGlvbiBpZiBuZWVkZWRcclxuICB9XHJcblxyXG4gIGdldENvbHVtbldpZHRoKGNvbHVtbjogRm9ybUNvbHVtbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXhDb2xzID0gdGhpcy5jb25maWcubWF4Q29sc1BlclJvdyB8fCA1O1xyXG4gICAgY29uc3QgY29sU3BhbiA9IE1hdGgubWluKGNvbHVtbi5jb2xTcGFuIHx8IDEsIG1heENvbHMpO1xyXG4gICAgcmV0dXJuIGBjYWxjKCR7KGNvbFNwYW4gLyBtYXhDb2xzKSAqIDEwMH0lIC0gMTZweClgO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChuYW1lOiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChuYW1lKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIC8vIDIuIEhFTFBFUjogQ29udmVydCB5b3VyIEZpZWxkVmFsaWRhdGlvbltdIHRvIHRoZSBsaWJyYXJ5J3MgVmFsaWRhdGlvblNjaGVtYVxyXG4gIGdldFNjaGVtYShjb2x1bW46IEZvcm1Db2x1bW4pOiBWYWxpZGF0aW9uU2NoZW1hIHtcclxuICAgIGNvbnN0IHJ1bGVzOiBWYWxpZGF0aW9uUnVsZVtdID0gW107XHJcbiAgICBjb25zdCBlcnJvclByaW9yaXR5OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGlmIChjb2x1bW4udmFsaWRhdGlvbnMpIHtcclxuICAgICAgY29sdW1uLnZhbGlkYXRpb25zLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHYudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyBlbmFibGVkOiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfUkVRVUlSRUQnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZXF1aXJlZCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3JlZ2V4JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIHBhdHRlcm46ICdeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXFxcLlthLXpBLVpdezIsfSQnLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfUkVHRVhfTUlTTUFUQ0gnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZWdleCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21pbkxlbmd0aCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01JTl9MRU5HVEgnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtaW5MZW5ndGgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtYXhMZW5ndGgnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWF4TGVuZ3RoJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NQVhfTEVOR1RIJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWF4TGVuZ3RoJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncGF0dGVybic6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdyZWdleCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHBhdHRlcm46IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRUdFWF9NSVNNQVRDSCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlZ2V4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncGFzc3dvcmRDb21wbGV4aXR5JzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkQ29tcGxleGl0eScsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB2LnBhcmFtcyB8fCB7XHJcbiAgICAgICAgICAgICAgICByZXF1aXJlVXBwZXJjYXNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZUxvd2VyY2FzZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVOdW1iZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlU3BlY2lhbENoYXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IDhcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiB2LmVycm9yS2V5IHx8ICdFUlJfUEFTU1dPUkRfQ09NUExFWElUWV9JTlZBTElEJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncGFzc3dvcmRDb21wbGV4aXR5Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWluJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21pbicsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUlOX1ZBTFVFJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWluJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWF4JzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21heCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUFYX1ZBTFVFJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWF4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFwICduYW1lLWNvZGUnIHRvICdEcm9wZG93bicgb3Igc2ltaWxhciBmb3IgdmFsaWRhdGlvbiBzY2hlbWEgcHVycG9zZXMgaWYgbmVlZGVkXHJcbiAgICBsZXQgY29udHJvbFR5cGUgPSBjb2x1bW4udHlwZTtcclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ25hbWUtY29kZScpIHtcclxuICAgICAgY29udHJvbFR5cGUgPSAnc2VsZWN0JzsgLy8gVHJlYXQgYXMgc2VsZWN0IGZvciBzY2hlbWEgbG9va3VwIGlmIGxpYnJhcnkgZXhwZWN0cyAnc2VsZWN0JyBvciAnRHJvcGRvd24nXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29udHJvbFR5cGU6IGNvbnRyb2xUeXBlLFxyXG4gICAgICBlcnJvclByaW9yaXR5OiBlcnJvclByaW9yaXR5LFxyXG4gICAgICBydWxlczogcnVsZXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZUZpZWxkKGNvbHVtbjogRm9ybUNvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgY29sdW1uLnR5cGUgPT09ICdmaWxlJyAmJlxyXG4gICAgICAoY29sdW1uLmFjY2VwdD8uc3RhcnRzV2l0aCgnaW1hZ2UnKSB8fCBjb2x1bW4uZmlsZVByZXZpZXcgPT09IHRydWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gSGVscGVycyBmb3IgUmVwZWF0YWJsZSBTZWN0aW9uc1xyXG4gIGdldFNlY3Rpb25BcnJheShzZWN0aW9uOiBGb3JtU2VjdGlvbik6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChzZWN0aW9uLnNlY3Rpb25LZXkhKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTZWN0aW9uR3JvdXAoc2VjdGlvbjogRm9ybVNlY3Rpb24pOiBGb3JtR3JvdXAge1xyXG4gICAgY29uc3QgZ3JvdXBDb25maWc6IGFueSA9IHt9O1xyXG4gICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBjb2x1bW4udmFsdWUgfHwgJyc7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGluaXRpYWxWYWx1ZSkge1xyXG4gICAgICAgIGluaXRpYWxWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUoaW5pdGlhbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBncm91cENvbmZpZ1tjb2x1bW4ubmFtZV0gPSBbXHJcbiAgICAgICAgeyB2YWx1ZTogaW5pdGlhbFZhbHVlLCBkaXNhYmxlZDogY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlIH0sXHJcbiAgICAgIF07XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBncm91cCA9IHRoaXMuZmIuZ3JvdXAoZ3JvdXBDb25maWcpO1xyXG5cclxuICAgIC8vIEFwcGx5IFZhbGlkYXRvcnNcclxuICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5idWlsZFZhbGlkYXRvcnMoY29sdW1uLnZhbGlkYXRpb25zLCBncm91cCk7XHJcbiAgICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBncm91cC5nZXQoY29sdW1uLm5hbWUpPy5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICAgIGdyb3VwLmdldChjb2x1bW4ubmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwO1xyXG4gIH1cclxuXHJcbiAgYWRkU2VjdGlvbkl0ZW0oc2VjdGlvbjogRm9ybVNlY3Rpb24pIHtcclxuICAgIGNvbnN0IGFycmF5ID0gdGhpcy5nZXRTZWN0aW9uQXJyYXkoc2VjdGlvbik7XHJcbiAgICBhcnJheS5wdXNoKHRoaXMuY3JlYXRlU2VjdGlvbkdyb3VwKHNlY3Rpb24pKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNlY3Rpb25JdGVtKHNlY3Rpb246IEZvcm1TZWN0aW9uLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBhcnJheSA9IHRoaXMuZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pO1xyXG4gICAgaWYgKGFycmF5Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgYXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNDb250cm9sSW52YWxpZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISEoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wudG91Y2hlZCB8fCB0aGlzLnN1Ym1pdHRlZCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JNZXNzYWdlRm9yQ29udHJvbChcclxuICAgIGNvbHVtbjogRm9ybUNvbHVtbixcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGxcclxuICApOiBzdHJpbmcge1xyXG4gICAgaWYgKCFjb250cm9sPy5lcnJvcnMpIHJldHVybiAnJztcclxuICAgIGNvbnN0IGZpZWxkID0gY29udHJvbDtcclxuICAgIGNvbnN0IGVycm9ycyA9IGZpZWxkLmVycm9ycyE7XHJcblxyXG4gICAgaWYgKGVycm9yc1snY3VzdG9tJ10pIHtcclxuICAgICAgY29uc3QgY3VzdG9tVmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoXHJcbiAgICAgICAgKHYpID0+IHYudHlwZSA9PT0gJ2N1c3RvbSdcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb24/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZmllbGQnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGVycm9yS2V5cyA9IE9iamVjdC5rZXlzKGVycm9ycyk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBlcnJvcktleXMpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoKHYpID0+IHYudHlwZSA9PT0ga2V5KTtcclxuICAgICAgaWYgKHZhbGlkYXRpb24gJiYgdmFsaWRhdGlvbi5tZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24ubWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChlcnJvcnNbJ3JlcXVpcmVkJ10pIHJldHVybiBgJHtjb2x1bW4/LmxhYmVsfSBpcyByZXF1aXJlZGA7XHJcbiAgICBpZiAoZXJyb3JzWydlbWFpbCddKSByZXR1cm4gJ0ludmFsaWQgZW1haWwgZm9ybWF0JztcclxuICAgIGlmIChlcnJvcnNbJ21pbmxlbmd0aCddKVxyXG4gICAgICByZXR1cm4gYE1pbmltdW0gbGVuZ3RoIGlzICR7ZXJyb3JzWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gICAgaWYgKGVycm9yc1snbWF4bGVuZ3RoJ10pXHJcbiAgICAgIHJldHVybiBgTWF4aW11bSBsZW5ndGggaXMgJHtlcnJvcnNbJ21heGxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofWA7XHJcbiAgICBpZiAoZXJyb3JzWydtaW4nXSlcclxuICAgICAgcmV0dXJuIGBNaW5pbXVtIHZhbHVlIGlzICR7ZXJyb3JzWydtaW4nXS5taW59YDtcclxuICAgIGlmIChlcnJvcnNbJ21heCddKVxyXG4gICAgICByZXR1cm4gYE1heGltdW0gdmFsdWUgaXMgJHtlcnJvcnNbJ21heCddLm1heH1gO1xyXG4gICAgaWYgKGVycm9yc1sncGF0dGVybiddKSByZXR1cm4gJ0ludmFsaWQgZm9ybWF0JztcclxuXHJcbiAgICByZXR1cm4gJ0ludmFsaWQgZmllbGQnO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgaW5pdGlhbGl6ZUZvcm0oKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgZm9ybUdyb3VwQ29uZmlnOiBhbnkgPSB7fTtcclxuXHJcbiAgICB0aGlzLmNvbmZpZy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgIGlmIChzZWN0aW9uLmlzUmVwZWF0YWJsZSAmJiBzZWN0aW9uLnNlY3Rpb25LZXkpIHtcclxuICAgICAgICBmb3JtR3JvdXBDb25maWdbc2VjdGlvbi5zZWN0aW9uS2V5XSA9IHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGVTZWN0aW9uR3JvdXAoc2VjdGlvbiksXHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBsZXQgaW5pdGlhbFZhbHVlID0gY29sdW1uLnZhbHVlIHx8ICcnO1xyXG5cclxuICAgICAgICAgIC8vIEZvcm1hdCBtb250aC15ZWFyIGZpZWxkcyB0byBZWVlZLU1NIGZvcm1hdFxyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnbW9udGgteWVhcicgJiYgaW5pdGlhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUoaW5pdGlhbFZhbHVlKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBmb3JtR3JvdXBDb25maWdbY29sdW1uLm5hbWVdID0gW1xyXG4gICAgICAgICAgICB7IHZhbHVlOiBpbml0aWFsVmFsdWUsIGRpc2FibGVkOiBjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2UgfSxcclxuICAgICAgICAgICAgbnVsbCwgLy8gV2UnbGwgc2V0IHZhbGlkYXRvcnMgYWZ0ZXIgZm9ybSBjcmVhdGlvblxyXG4gICAgICAgICAgXTtcclxuXHJcbiAgICAgICAgICAvLyBJZiBpdCdzIGEgZmlsZSBmaWVsZCB3aXRoIGFuIGV4aXN0aW5nIHZhbHVlLCBzZXQgdGhlIHByZXZpZXdcclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2ZpbGUnICYmIGNvbHVtbi52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVQcmV2aWV3cy5zZXQoY29sdW1uLm5hbWUsIGNvbHVtbi52YWx1ZSk7XHJcbiAgICAgICAgICAgIC8vIEV4dHJhY3QgZmlsZW5hbWUgZnJvbSBVUkwgb3IgYmFzZTY0XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy5leHRyYWN0RmlsZU5hbWUoY29sdW1uLnZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKGZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGNvbHVtbi5uYW1lLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cChmb3JtR3JvdXBDb25maWcpO1xyXG5cclxuICAgIHRoaXMuY29uZmlnLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+IHtcclxuICAgICAgaWYgKCFzZWN0aW9uLmlzUmVwZWF0YWJsZSkge1xyXG4gICAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuYnVpbGRWYWxpZGF0b3JzKFxyXG4gICAgICAgICAgICBjb2x1bW4udmFsaWRhdGlvbnMsXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk/LnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoY29sdW1uLm5hbWUpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFN1YnNjcmliZSB0byB2YWx1ZSBjaGFuZ2VzIGZvciBhbGwgZmllbGRzIHRvIHRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlcnNcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGtleSk7XHJcbiAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gY29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShrZXkpO1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uPy5vbkNoYW5nZSkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbi5vbkNoYW5nZSh2YWx1ZSwgdGhpcy5mb3JtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW4gdXAgYWxsIHN1YnNjcmlwdGlvbnMgdG8gcHJldmVudCBtZW1vcnkgbGVha3NcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VTdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMgPSBbXTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpZWxkQ2hhbmdlKFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBldmVudFZhbHVlPzogYW55LFxyXG4gICAgY29udHJvbD86IEFic3RyYWN0Q29udHJvbFxyXG4gICkge1xyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeU5hbWUoZmllbGROYW1lKTtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gY29udHJvbCB8fCB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcblxyXG4gICAgLy8gRm9ybWF0IG1vbnRoLXllYXIgZmllbGRzIChlc3BlY2lhbGx5IGV4cGlyeURhdGUpIHRvIFlZWVktTU1cclxuICAgIGlmIChjb2x1bW4/LnR5cGUgPT09ICdtb250aC15ZWFyJyAmJiBldmVudFZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZShldmVudFZhbHVlKTtcclxuICAgICAgaWYgKGZvcm1Db250cm9sICYmIGZvcm1hdHRlZFZhbHVlICE9PSBldmVudFZhbHVlKSB7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICBldmVudFZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29sdW1uPy5vbkNoYW5nZSkge1xyXG4gICAgICAvLyBVc2UgdGhlIGV2ZW50IHZhbHVlIGRpcmVjdGx5ICh3aGF0IHRoZSB1c2VyIGp1c3Qgc2VsZWN0ZWQvdHlwZWQpXHJcbiAgICAgIC8vIFRoaXMgZW5zdXJlcyB3ZSBoYXZlIHRoZSBjb3JyZWN0IHZhbHVlIGV2ZW4gaWYgZm9ybSBjb250cm9sIGhhc24ndCB1cGRhdGVkIHlldFxyXG4gICAgICBjb25zdCB2YWx1ZVRvUGFzcyA9XHJcbiAgICAgICAgZXZlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gZXZlbnRWYWx1ZSA6IGZvcm1Db250cm9sPy52YWx1ZTtcclxuICAgICAgY29uc3Qgb25DaGFuZ2VGbiA9IGNvbHVtbi5vbkNoYW5nZTsgLy8gU3RvcmUgdGhlIGZ1bmN0aW9uIHJlZmVyZW5jZVxyXG5cclxuICAgICAgLy8gU3RvcmUgdGhlIHNlbGVjdGVkIHZhbHVlIC0gdGhpcyBpcyB3aGF0IHRoZSB1c2VyIGNob3NlXHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB2YWx1ZVRvUGFzcztcclxuXHJcbiAgICAgIC8vIEVuc3VyZSB0aGUgZm9ybSBjb250cm9sIGhhcyB0aGUgc2VsZWN0ZWQgdmFsdWUgYmVmb3JlIGNhbGxpbmcgb25DaGFuZ2VcclxuICAgICAgaWYgKGZvcm1Db250cm9sICYmIHNlbGVjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChmb3JtQ29udHJvbC52YWx1ZSAhPT0gc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2FsbCBvbkNoYW5nZSB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZVxyXG4gICAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICAgIG9uQ2hhbmdlRm4oc2VsZWN0ZWRWYWx1ZSwgdGhpcy5mb3JtKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVzdG9yZSB0aGUgdmFsdWUgZm9yIHRoZSBmaWVsZCB0aGF0IHRyaWdnZXJlZCB0aGUgY2hhbmdlIGlmIGl0IHdhcyBjbGVhcmVkIGJ5IG9uQ2hhbmdlXHJcbiAgICAgIC8vIFRoaXMgaXMgY3JpdGljYWw6IGlmIG9uQ2hhbmdlIGNsZWFycyB0aGUgZmllbGQgdGhhdCB3YXMganVzdCBjaGFuZ2VkLCB3ZSByZXN0b3JlIGl0XHJcbiAgICAgIC8vIE9ubHkgcmVzdG9yZSBpZiB3ZSBoYWQgYSBub24tZW1wdHkgdmFsdWUgKGVtcHR5IHN0cmluZywgbnVsbCwgdW5kZWZpbmVkIGFyZSBub3QgcmVzdG9yZWQpXHJcbiAgICAgIGlmIChcclxuICAgICAgICBmb3JtQ29udHJvbCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICBzZWxlY3RlZFZhbHVlICE9PSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB3aXRoIDAgZGVsYXkgdG8gcnVuIGFmdGVyIGFueSBzeW5jaHJvbm91cyBvcGVyYXRpb25zIGluIG9uQ2hhbmdlXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgd2FzIGNsZWFyZWQgb3IgY2hhbmdlZFxyXG4gICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgZG9lc24ndCBtYXRjaCB3aGF0IHdhcyBzZWxlY3RlZCwgcmVzdG9yZSBpdFxyXG4gICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIG9uQ2hhbmdlIGNsZWFyZWQgdGhlIGZpZWxkIHVuaW50ZW50aW9uYWxseVxyXG4gICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1hdE1vbnRoWWVhclZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHZhbHVlO1xyXG4gICAgLy8gTm9ybWFsaXplIHRvIFlZWVktTU1cclxuICAgIGlmICh2YWx1ZS5tYXRjaCgvXlxcZHsyfS1cXGR7NH0kLykpIHtcclxuICAgICAgY29uc3QgW21vbnRoLCB5ZWFyXSA9IHZhbHVlLnNwbGl0KCctJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICAvLyBJZiBhbHJlYWR5IGluIFlZWVktTU0gZm9ybWF0LCByZXR1cm4gYXMgaXNcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHBhcnNlTW9udGhZZWFyVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XHJcbiAgICAvLyBEaXNwbGF5IGFuZCBwaWNrZXIgYm90aCB1c2UgWVlZWS1NTTsgbm9ybWFsaXplIE1NLVlZWVkgaWYgcHJlc2VudFxyXG4gICAgaWYgKHZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gdmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhckNoYW5nZShcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgdmFsdWU6IHN0cmluZyxcclxuICAgIGNvbnRyb2w/OiBBYnN0cmFjdENvbnRyb2xcclxuICApIHtcclxuICAgIC8vIEZvcm1hdCB0aGUgaW5wdXQgdmFsdWUgdG8gWVlZWS1NTSBmb3JtYXRcclxuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIC8vIElmIGl0J3MgaW4gTU0tWVlZWSBmb3JtYXQsIGNvbnZlcnQgdG8gWVlZWS1NTVxyXG4gICAgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgZm9ybWF0dGVkVmFsdWUgPSBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICAvLyBJZiBpdCdzIGluIFlZWVlNTSBmb3JtYXQgKG5vIGRhc2gpLCBjb252ZXJ0IHRvIFlZWVktTU1cclxuICAgIGVsc2UgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezZ9JC8pKSB7XHJcbiAgICAgIGNvbnN0IHllYXIgPSBmb3JtYXR0ZWRWYWx1ZS5zdWJzdHJpbmcoMCwgNCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gZm9ybWF0dGVkVmFsdWUuc3Vic3RyaW5nKDQsIDYpO1xyXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGl0J3MgYWxyZWFkeSBpbiBZWVlZLU1NIGZvcm1hdCwgbGVhdmUgYXMgaXNcclxuICAgIGVsc2UgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezR9LVxcZHsyfSQvKSkge1xyXG4gICAgICAvLyBBbHJlYWR5IGluIGNvcnJlY3QgZm9ybWF0XHJcbiAgICB9XHJcbiAgICAvLyBJZiB1c2VyIGlzIHR5cGluZywgYWxsb3cgcGFydGlhbCBpbnB1dFxyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7MSw2fSQvKSkge1xyXG4gICAgICAvLyBBbGxvdyBwYXJ0aWFsIGlucHV0IHdoaWxlIHR5cGluZ1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gY29udHJvbCB8fCB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IHZhbHVlKSB7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlLCBjb250cm9sKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhckJsdXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWUgfHwgJyc7XHJcbiAgICAvLyBFbnN1cmUgdGhlIHZhbHVlIGlzIGluIFlZWVktTU0gZm9ybWF0IG9uIGJsdXJcclxuICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUubWF0Y2goL15cXGR7NH0tXFxkezJ9JC8pKSB7XHJcbiAgICAgIC8vIFRyeSB0byBwYXJzZSBhbmQgZm9ybWF0XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gICAgICBpZiAoZm9ybWF0dGVkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aFllYXJQaWNrZXJDaGFuZ2UoZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIC8vIE1vbnRoIHBpY2tlciBvdXRwdXRzIFlZWVktTU07IGp1c3Qgbm9ybWFsaXplXHJcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wpIHtcclxuICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1vbnRoWWVhclBpY2tlclZhbHVlKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkgcmV0dXJuICcnO1xyXG4gICAgY29uc3QgdmFsdWUgPSBmb3JtQ29udHJvbC52YWx1ZSB8fCAnJztcclxuICAgIC8vIERpc3BsYXkgYW5kIHBpY2tlciBib3RoIGV4cGVjdCBZWVlZLU1NXHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZU1vbnRoWWVhclZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9wZW5Nb250aFBpY2tlcihmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgbW9udGhJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICBmaWVsZE5hbWUgKyAnX3BpY2tlcidcclxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChtb250aElucHV0ICYmIG1vbnRoSW5wdXQudHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICAvLyBVcGRhdGUgdGhlIHBpY2tlciB2YWx1ZSBiZWZvcmUgb3BlbmluZ1xyXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldE1vbnRoWWVhclBpY2tlclZhbHVlKGZpZWxkTmFtZSk7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICBtb250aElucHV0LnZhbHVlID0gY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFRyeSBtb2Rlcm4gc2hvd1BpY2tlciBBUEkgZmlyc3QsIGZhbGxiYWNrIHRvIGNsaWNrXHJcbiAgICAgIGlmIChtb250aElucHV0LnNob3dQaWNrZXIpIHtcclxuICAgICAgICBtb250aElucHV0LnNob3dQaWNrZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtb250aElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgbW9udGhJbnB1dC5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5CeU5hbWUobmFtZTogc3RyaW5nKTogRm9ybUNvbHVtbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2VjdGlvbnNcclxuICAgICAgLmZsYXRNYXAoKHMpID0+IHMuZmllbGRzKVxyXG4gICAgICAuZmluZCgoYykgPT4gYy5uYW1lID09PSBuYW1lKTtcclxuICB9XHJcblxyXG4gIGdldEZpbGVGaWVsZHMoZmllbGRzOiBGb3JtQ29sdW1uW10pOiBGb3JtQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoKGYpID0+IGYudHlwZSA9PT0gJ2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIGdldE5vbkZpbGVGaWVsZHMoZmllbGRzOiBGb3JtQ29sdW1uW10pOiBGb3JtQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoKGYpID0+IGYudHlwZSAhPT0gJ2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBhc3N3b3JkVmlzaWJpbGl0eShmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMucGFzc3dvcmRWaXNpYmlsaXR5LmdldChmaWVsZE5hbWUpIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5wYXNzd29yZFZpc2liaWxpdHkuc2V0KGZpZWxkTmFtZSwgIWN1cnJlbnQpO1xyXG4gIH1cclxuICBoYXNSZXF1aXJlZFZhbGlkYXRpb24oY29sdW1uOiBGb3JtQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29sdW1uLnZhbGlkYXRpb25zPy5zb21lKCh2KSA9PiB2LnR5cGUgPT09ICdyZXF1aXJlZCcpIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNQYXNzd29yZFZpc2libGUoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkVmlzaWJpbGl0eS5nZXQoZmllbGROYW1lKSB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIGJ1aWxkVmFsaWRhdG9ycyhcclxuICAgIHZhbGlkYXRpb25zPzogRmllbGRWYWxpZGF0aW9uW10sXHJcbiAgICBmb3JtR3JvdXA/OiBGb3JtR3JvdXBcclxuICApOiBhbnlbXSB7XHJcbiAgICBpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdG9yczogYW55W10gPSBbXTtcclxuICAgIHZhbGlkYXRpb25zLmZvckVhY2goKHZhbGlkYXRpb24pID0+IHtcclxuICAgICAgc3dpdGNoICh2YWxpZGF0aW9uLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtaW5MZW5ndGgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21heExlbmd0aCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWluJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtYXgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3BhdHRlcm4nOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybih2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdjdXN0b20nOlxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRpb24udmFsaWRhdG9yKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHZhbGlkYXRpb24udmFsaWRhdG9yIShjb250cm9sLnZhbHVlLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgY3VzdG9tOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyRmlsZVVwbG9hZChmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVJbnB1dF8nICsgZmllbGROYW1lKT8uY2xpY2soKTtcclxuICB9XHJcblxyXG4gIG9wZW5UaW1lUGlja2VyKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0aW1lSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWVsZE5hbWUpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAodGltZUlucHV0ICYmIHRpbWVJbnB1dC50eXBlID09PSAndGltZScpIHtcclxuICAgICAgLy8gVHJ5IG1vZGVybiBzaG93UGlja2VyIEFQSSBmaXJzdCwgZmFsbGJhY2sgdG8gY2xpY2tcclxuICAgICAgaWYgKHRpbWVJbnB1dC5zaG93UGlja2VyKSB7XHJcbiAgICAgICAgdGltZUlucHV0LnNob3dQaWNrZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aW1lSW5wdXQuZm9jdXMoKTtcclxuICAgICAgICB0aW1lSW5wdXQuY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWxlQ2hhbmdlKGV2ZW50OiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGZpZWxkTmFtZSwgZmlsZS5uYW1lKTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0U3RyaW5nID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgdGhpcy5maWxlUHJldmlld3Muc2V0KGZpZWxkTmFtZSwgYmFzZTY0U3RyaW5nKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKGJhc2U2NFN0cmluZyk7XHJcblxyXG4gICAgICAgIC8vIFRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlciBmb3IgZmlsZSBmaWVsZHNcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICBjb2x1bW4ub25DaGFuZ2UoYmFzZTY0U3RyaW5nLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4dHJhY3RGaWxlTmFtZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuXHJcbiAgICAvLyBJZiBpdCdzIGEgVVJMLCBleHRyYWN0IGZpbGVuYW1lIGZyb20gVVJMXHJcbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIGl0J3MgYmFzZTY0LCByZXR1cm4gYSBnZW5lcmljIG5hbWVcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKGBkYXRhOmltYWdlYCkpIHtcclxuICAgICAgcmV0dXJuICd1cGxvYWRlZC1pbWFnZS5qcGcnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnZXhpc3RpbmctcGhvdG8uanBnJztcclxuICB9XHJcblxyXG4gIGdldEZpbGVQcmV2aWV3KGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlUHJldmlld3MuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIGdldEZpbGVOYW1lKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlTmFtZXMuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIG1hcFNlYXJjaE9wdGlvbnMob3B0aW9uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gb3B0aW9ucy5tYXAob3B0ID0+ICh7XHJcbiAgICAgIGNvZGU6IFN0cmluZyhvcHQuY29kZSB8fCBvcHQudmFsdWUgfHwgJycpLFxyXG4gICAgICBuYW1lOiBTdHJpbmcob3B0Lm5hbWUgfHwgb3B0LmxhYmVsIHx8IG9wdC52YWx1ZSB8fCAnJyksXHJcbiAgICAgIHZhbHVlOiBvcHQudmFsdWVcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBkZWxldGVGaWxlKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpbGVQcmV2aWV3cy5kZWxldGUoZmllbGROYW1lKTtcclxuICAgIHRoaXMuZmlsZU5hbWVzLmRlbGV0ZShmaWVsZE5hbWUpO1xyXG4gICAgdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpPy5zZXRWYWx1ZSgnJyk7XHJcblxyXG4gICAgLy8gVHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyIHdoZW4gZmlsZSBpcyBkZWxldGVkXHJcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgaWYgKGNvbHVtbj8ub25DaGFuZ2UpIHtcclxuICAgICAgY29sdW1uLm9uQ2hhbmdlKCcnLCB0aGlzLmZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlU3VibWl0KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIC8vIE1hcmsgYWxsIGZpZWxkcyBhcyB0b3VjaGVkIHRvIHNob3cgcmVkIGJvcmRlcnMgKHJlY3Vyc2l2ZSlcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmVtaXQoXHJcbiAgICAgICAgJ1BsZWFzZSBmaWxsIGFsbCByZXF1aXJlZCBmaWVsZHMgbWFya2VkIHdpdGggKi4nXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgdGhpcy5jb25maWcub25TdWJtaXQoZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVzZXQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICBpZiAodGhpcy5jb25maWcub25SZXNldCkge1xyXG4gICAgICB0aGlzLmNvbmZpZy5vblJlc2V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0ZpZWxkSW52YWxpZChmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICByZXR1cm4gISEoZmllbGQgJiYgZmllbGQuaW52YWxpZCAmJiAoZmllbGQudG91Y2hlZCB8fCB0aGlzLnN1Ym1pdHRlZCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmaWVsZD8uZXJyb3JzKSByZXR1cm4gJyc7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhIGN1c3RvbSBtZXNzYWdlIGZyb20gdmFsaWRhdGlvbnNcclxuICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmNvbmZpZy5zZWN0aW9ucy5mbGF0TWFwKChzKSA9PiBzLmZpZWxkcyk7XHJcbiAgICBjb25zdCBjb2x1bW4gPSBhbGxDb2x1bW5zLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gZmllbGROYW1lKTtcclxuICAgIC8vIENoZWNrIGZvciBjdXN0b20gdmFsaWRhdGlvbiBlcnJvclxyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snY3VzdG9tJ10pIHtcclxuICAgICAgY29uc3QgY3VzdG9tVmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoXHJcbiAgICAgICAgKHYpID0+IHYudHlwZSA9PT0gJ2N1c3RvbSdcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb24/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZmllbGQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBjdXN0b20gbWVzc2FnZSBmcm9tIHZhbGlkYXRpb25zXHJcbiAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyhmaWVsZC5lcnJvcnMpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKCh2KSA9PiB2LnR5cGUgPT09IGtleSk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uPy5tZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24ubWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gRGVmYXVsdCBlcnJvciBtZXNzYWdlc1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1sncmVxdWlyZWQnXSkge1xyXG4gICAgICByZXR1cm4gYCR7Y29sdW1uPy5sYWJlbH0gaXMgcmVxdWlyZWRgO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snZW1haWwnXSkgcmV0dXJuICdJbnZhbGlkIGVtYWlsIGZvcm1hdCc7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtaW5sZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNaW5pbXVtIGxlbmd0aCBpcyAke2ZpZWxkLmVycm9yc1snbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ21heGxlbmd0aCddKVxyXG4gICAgICByZXR1cm4gYE1heGltdW0gbGVuZ3RoIGlzICR7ZmllbGQuZXJyb3JzWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWluJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSB2YWx1ZSBpcyAke2ZpZWxkLmVycm9yc1snbWluJ10ubWlufWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtYXgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIHZhbHVlIGlzICR7ZmllbGQuZXJyb3JzWydtYXgnXS5tYXh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ3BhdHRlcm4nXSkgcmV0dXJuICdJbnZhbGlkIGZvcm1hdCc7XHJcbiAgICByZXR1cm4gJ0ludmFsaWQgZmllbGQnO1xyXG4gIH1cclxufVxyXG4iXX0=
1319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z2LWNvbnRyb2xzL3NyYy9saWIvYWRkLXVwZGF0ZS1mb3JtL2FkZC11cGRhdGUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEZBLCtCQUErQjtBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBTUwsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUs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LCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBGaWVsZFR5cGUgPVxyXG4gIHwgJ3RleHQnXHJcbiAgfCAnZW1haWwnXHJcbiAgfCAnbnVtYmVyJ1xyXG4gIHwgJ3NlbGVjdCdcclxuICB8ICduYW1lLWNvZGUnXHJcbiAgfCAnY2hlY2tib3gnXHJcbiAgfCAndGV4dGFyZWEnXHJcbiAgfCAnZGF0ZSdcclxuICB8ICdwYXNzd29yZCdcclxuICB8ICdyYWRpbydcclxuICB8ICdmaWxlJ1xyXG4gIHwgJ21vbnRoLXllYXInXHJcbiAgfCAncGhvbmUnXHJcbiAgfCAndWFuJ1xyXG4gIHwgJ3BmJ1xyXG4gIHwgJ2VzaSdcclxuICB8ICdpZnNjJ1xyXG4gIHwgJ21pY3InXHJcbiAgfCAnaWJhbidcclxuICB8ICdzZXJ2aWNlLXBlcmlvZCdcclxuICB8ICdkb2N1bWVudCdcclxuICB8ICd0aW1lJztcclxuXHJcblxyXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uVHlwZSA9XHJcbiAgfCAncmVxdWlyZWQnXHJcbiAgfCAnZW1haWwnXHJcbiAgfCAnbWluTGVuZ3RoJ1xyXG4gIHwgJ21heExlbmd0aCdcclxuICB8ICdwYXR0ZXJuJ1xyXG4gIHwgJ21pbidcclxuICB8ICdtYXgnXHJcbiAgfCAnY3VzdG9tJ1xyXG4gIHwgJ3Bhc3N3b3JkQ29tcGxleGl0eSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkVmFsaWRhdGlvbiB7XHJcbiAgdHlwZTogVmFsaWRhdGlvblR5cGU7XHJcbiAgdmFsdWU/OiBhbnk7IC8vIEZvciBtaW5MZW5ndGgsIG1heExlbmd0aCwgbWluLCBtYXgsIHBhdHRlcm5cclxuICBtZXNzYWdlPzogc3RyaW5nOyAvLyBDdXN0b20gZXJyb3IgbWVzc2FnZVxyXG4gIHZhbGlkYXRvcj86ICh2YWx1ZTogYW55LCBmb3JtR3JvdXA/OiBGb3JtR3JvdXApID0+IGJvb2xlYW47IC8vIEZvciBjdXN0b20gdmFsaWRhdGlvblxyXG4gIHBhcmFtcz86IGFueTsgLy8gRm9yIGNvbXBsZXggdmFsaWRhdGlvbiBydWxlcyBsaWtlIHBhc3N3b3JkQ29tcGxleGl0eVxyXG4gIGVycm9yS2V5Pzogc3RyaW5nOyAvLyBTcGVjaWZpYyBlcnJvciBrZXkgdG8gcmV0dXJuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUNvbHVtbiB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdHlwZTogRmllbGRUeXBlO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICBvcHRpb25zPzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXTsgLy8gRm9yIHNlbGVjdCBmaWVsZHNcclxuICB2YWxpZGF0aW9ucz86IEZpZWxkVmFsaWRhdGlvbltdO1xyXG4gIHZhbHVlPzogYW55OyAvLyBEZWZhdWx0IHZhbHVlXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgKChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgPT4gYm9vbGVhbik7XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgaGludD86IHN0cmluZztcclxuICBjb2xTcGFuPzogbnVtYmVyO1xyXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiB2b2lkO1xyXG4gIGFjY2VwdD86IHN0cmluZzsgLy8gRm9yIGZpbGUgaW5wdXQgKGUuZy4sICdpbWFnZS8qJylcclxuICBmaWxlUHJldmlldz86IGJvb2xlYW47IC8vIFNob3cgaW1hZ2UgcHJldmlld1xyXG4gIHNob3dUaW1lUGlja2VyPzogYm9vbGVhbjsgLy8gU2hvdyB0aW1lIHBpY2tlciBmb3IgdGV4dCBmaWVsZHNcclxuICBhbGxvd0FscGhhYmV0c09ubHk/OiBib29sZWFuO1xyXG4gIG1heExlbmd0aD86IG51bWJlcjtcclxuICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnOyAvLyBGb3IgcmFkaW8gZ3JvdXBcclxuICBzZXJ2aWNlUGVyaW9kQ29uZmlnPzogeyBzdGFydEZpZWxkOiBzdHJpbmc7IGVuZEZpZWxkOiBzdHJpbmcgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VjdGlvbiB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7IC8vIFNlY3Rpb24gaGVhZGluZyAoZS5nLiwgXCJQRVJTT05BTCBJTkZPUk1BVElPTlwiKVxyXG4gIGZpZWxkczogRm9ybUNvbHVtbltdO1xyXG4gIGlzUmVwZWF0YWJsZT86IGJvb2xlYW47XHJcbiAgc2VjdGlvbktleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29uZmlnIHtcclxuICBzZWN0aW9uczogRm9ybVNlY3Rpb25bXTtcclxuICBzdWJtaXRMYWJlbD86IHN0cmluZztcclxuICByZXNldExhYmVsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0OiAoZGF0YTogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xyXG4gIGNhbmNlbExhYmVsPzogc3RyaW5nO1xyXG4gIGZvcm1UaXRsZT86IHN0cmluZztcclxuICBtYXhDb2xzUGVyUm93PzogbnVtYmVyO1xyXG4gIGRpc2FibGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGRpc2FibGVDYW5jZWw/OiBib29sZWFuO1xyXG4gIGhpZGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGhpZGVDYW5jZWw/OiBib29sZWFuO1xyXG59XHJcblxyXG4vLyBhZGQtdXBkYXRlLWZvcm0uY29tcG9uZW50LnRzXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBGb3JtQXJyYXksXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG4vLyBJbXBvcnQgeW91ciBsaWJyYXJ5IG1vZHVsZXNcclxuaW1wb3J0IHsgRnZFbnRyeUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW50cnktZmllbGQvZnYtZW50cnktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOdW1iZXJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW51bWJlci1maWVsZC9mdi1udW1iZXItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRyb3Bkb3duL2Z2LWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXJhZGlvLWdyb3VwL2Z2LXJhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9mdi1jaGVja2JveC9mdi1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkRhdGVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRhdGUtZmllbGQvZnYtZGF0ZS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbW9udGgteWVhci1maWVsZC9mdi1tb250aC15ZWFyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RmlsZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZmlsZS1zZWxlY3Rvci9mdi1maWxlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SW1hZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWltYWdlLXNlbGVjdG9yL2Z2LWltYWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmljaFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9mdi1yaWNoLXRleHQtZWRpdG9yL2Z2LXJpY2gtdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOYW1lQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW5hbWUtY29kZS9mdi1uYW1lLWNvZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQaG9uZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGhvbmUtZmllbGQvZnYtcGhvbmUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZVYW5GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXVhbi1maWVsZC9mdi11YW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQZkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGYtZmllbGQvZnYtcGYtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFc2lGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVzaS1maWVsZC9mdi1lc2ktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJZnNjRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pZnNjLWZpZWxkL2Z2LWlmc2MtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZNaWNyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1taWNyLWZpZWxkL2Z2LW1pY3ItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJYmFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pYmFuLWZpZWxkL2Z2LWliYW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFbWFpbEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW1haWwtZmllbGQvZnYtZW1haWwtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGFzc3dvcmQtZmllbGQvZnYtcGFzc3dvcmQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZTZXJ2aWNlUGVyaW9kQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtc2VydmljZS1wZXJpb2QvZnYtc2VydmljZS1wZXJpb2QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEb2N1bWVudEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZG9jdW1lbnQtZmllbGQvZnYtZG9jdW1lbnQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZUaW1lRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi10aW1lLWZpZWxkL2Z2LXRpbWUtZmllbGQuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuLy8gSW1wb3J0IFZhbGlkYXRpb24gVHlwZXNcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNjaGVtYSwgVmFsaWRhdGlvblJ1bGUgfSBmcm9tICdAZm92ZXN0dGEyL3ZhbGlkYXRpb24tZW5naW5lJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWRkLXVwZGF0ZS1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGdkVudHJ5RmllbGRDb21wb25lbnQsXHJcbiAgICBGdk51bWJlckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIEZ2UmFkaW9Hcm91cENvbXBvbmVudCxcclxuICAgIEZ2Q2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBGdkRhdGVGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TW9udGhZZWFyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkZpbGVTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIEZ2SW1hZ2VTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIEZ2UmljaFRleHRFZGl0b3JDb21wb25lbnQsXHJcbiAgICBGdk5hbWVDb2RlQ29tcG9uZW50LFxyXG4gICAgRnZQaG9uZUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZVYW5GaWVsZENvbXBvbmVudCxcclxuICAgIEZ2UGZGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RXNpRmllbGRDb21wb25lbnQsXHJcbiAgICBGdklmc2NGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TWljckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZJYmFuRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkVtYWlsRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlBhc3N3b3JkRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlNlcnZpY2VQZXJpb2RDb21wb25lbnQsXHJcbiAgICBGdkRvY3VtZW50RmllbGRDb21wb25lbnQsXHJcbiAgICBGdlRpbWVGaWVsZENvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1oZWFkZXJcIiAqbmdJZj1cImNvbmZpZy5mb3JtVGl0bGVcIj5cclxuICAgICAgICA8aDI+e3sgY29uZmlnLmZvcm1UaXRsZSB9fTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCIgY2xhc3M9XCJkeW5hbWljLWZvcm1cIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNvbmZpZy5zZWN0aW9uc1wiIGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCIgKm5nSWY9XCJzZWN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cclxuICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24uaXNSZXBlYXRhYmxlICYmIHNlY3Rpb24uc2VjdGlvbktleTsgZWxzZSBmbGF0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBncm91cCBvZiBnZXRTZWN0aW9uQXJyYXkoc2VjdGlvbikuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInJlcGVhdGFibGUtZ3JvdXAtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwZWF0YWJsZS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLWFkZFwiIChjbGljayk9XCJhZGRTZWN0aW9uSXRlbShzZWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjMmVjYzcxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVTZWN0aW9uSXRlbShzZWN0aW9uLCBpKVwiICpuZ0lmPVwiZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pLmNvbnRyb2xzLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI2U3NGMzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1yb3dcIj5cclxuICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc2VjdGlvbi5maWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFJlbmRlcmVyOyBjb250ZXh0OiB7IGNvbHVtbjogY29sdW1uLCBjb250cm9sOiBncm91cC5nZXQoY29sdW1uLm5hbWUpLCBncm91cDogZ3JvdXAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdFNlY3Rpb24+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRzLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHNlY3Rpb24uZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRSZW5kZXJlcjsgY29udGV4dDogeyBjb2x1bW46IGNvbHVtbiwgY29udHJvbDogZ2V0Q29udHJvbChjb2x1bW4ubmFtZSksIGdyb3VwOiBmb3JtIH1cIj5cclxuICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZmllbGRSZW5kZXJlciBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWdyb3VwPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCInZmllbGQtJyArIGNvbHVtbi50eXBlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbHVtbi5oaWRkZW4gPyB7IGRpc3BsYXk6ICdub25lJyB9IDoge31cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyAoY29sdW1uLmNvbFNwYW4gfHwgMSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHQnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVudHJ5LWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93QWxwaGFiZXRzT25seV09XCJjb2x1bW4uYWxsb3dBbHBoYWJldHNPbmx5IHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cImNvbHVtbi5tYXhMZW5ndGggfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWVudHJ5LWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZW1haWwnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVtYWlsLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWVtYWlsLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGFzc3dvcmQnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBhc3N3b3JkLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXBhc3N3b3JkLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbnVtYmVyJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1udW1iZXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtbnVtYmVyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnc2VsZWN0JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1kcm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBvcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9ucyB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnY2hlY2tib3gnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncmFkaW8nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1yYWRpby1ncm91cFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cImNvbHVtbi5sYXlvdXQgfHwgJ3ZlcnRpY2FsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZGF0ZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWRhdGUtZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZGF0ZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1vbnRoLXllYXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlTW9udGhZZWFyQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LW1vbnRoLXllYXItZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd0ZXh0YXJlYScgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcmljaC10ZXh0LWVkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1yaWNoLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZmlsZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2VGaWVsZChjb2x1bW4pOyBlbHNlIHN0YW5kYXJkRmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1pbWFnZS1zZWxlY3RvclxyXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QgaW1hZ2UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWltYWdlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRGaWxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1maWxlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImNvbHVtbi5hY2NlcHQgfHwgJyovKidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQsIGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZnYtZmlsZS1zZWxlY3Rvcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ25hbWUtY29kZScgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbmFtZS1jb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnU2VhcmNoIGJ5IENvZGUgb3IgTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zID8gbWFwU2VhcmNoT3B0aW9ucyhjb2x1bW4ub3B0aW9ucykgOiBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LW5hbWUtY29kZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bob25lJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcGhvbmUtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiPjwvZnYtcGhvbmUtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd1YW4nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi11YW4tZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiPjwvZnYtdWFuLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGYnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1wZi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCI+PC9mdi1wZi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2VzaScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVzaS1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCI+PC9mdi1lc2ktZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdpZnNjJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtaWZzYy1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCI+PC9mdi1pZnNjLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbWljcicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1pY3ItZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiPjwvZnYtbWljci1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2liYW4nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1pYmFuLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIj48L2Z2LWliYW4tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdzZXJ2aWNlLXBlcmlvZCcgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgIDxmdi1zZXJ2aWNlLXBlcmlvZFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0RmllbGRdPVwiY29sdW1uLnNlcnZpY2VQZXJpb2RDb25maWc/LnN0YXJ0RmllbGQgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2VuZEZpZWxkXT1cImNvbHVtbi5zZXJ2aWNlUGVyaW9kQ29uZmlnPy5lbmRGaWVsZCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgID48L2Z2LXNlcnZpY2UtcGVyaW9kPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZG9jdW1lbnQnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1kb2N1bWVudC1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1VwbG9hZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthY2NlcHRdPVwiY29sdW1uLmFjY2VwdCB8fCAnYXBwbGljYXRpb24vcGRmLGltYWdlLyonXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZG9jdW1lbnQtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd0aW1lJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtdGltZS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJy0tOi0tJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXRpbWUtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWFjdGlvbnNcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhY29uZmlnLmhpZGVTdWJtaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVTdWJtaXRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuc3VibWl0TGFiZWwgfHwgJ1NhdmUnIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhY29uZmlnLmhpZGVDYW5jZWxcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlnLm9uQ2FuY2VsKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVDYW5jZWxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuY2FuY2VsTGFiZWwgfHwgJ0NhbmNlbCcgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogYFxyXG5cclxuICBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Qb3BwaW5zOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAnKTtcclxuICBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9pY29uP2ZhbWlseT1NYXRlcmlhbCtJY29ucycpO1xyXG4gICAgKntcclxuICAgICAgZm9udC1mYW1pbHk6IFwiUG9wcGluc1wiICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICAuZm9ybS1jb250YWluZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gICAgICBwYWRkaW5nOiA1cHggMTBweCAxMHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmVycm9yLWJvcmRlciB7XHJcbiAgICAgYm9yZGVyLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuaGlkZGVue1xyXG4gICAgICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1oZWFkZXIge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0taGVhZGVyIGgyIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIGNvbG9yOiAjMzAzMDMwO1xyXG4gICAgfVxyXG5cclxuICAgIC5keW5hbWljLWZvcm0ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgcGFkZGluZzogMTBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tc2VjdGlvbiB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206MTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VjdGlvbi10aXRsZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgIG1hcmdpbjogMCAwIDE2cHggMDtcclxuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgZGlzcGxheTogZ3JpZDtcclxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwxZnIpO1xyXG4gICAgICBnYXA6IDE2cHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1maWVsZC13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAucGFzc3dvcmQtdG9nZ2xlLWJ0biB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHJpZ2h0OiAxMHB4O1xyXG4gIHRvcDogMzJweDtcclxuICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgcGFkZGluZzogNHB4O1xyXG4gIGNvbG9yOiAjNjY2O1xyXG59XHJcblxyXG4ucGFzc3dvcmQtdG9nZ2xlLWJ0bjpob3ZlciB7XHJcbiAgY29sb3I6ICMzMzM7XHJcbn1cclxuXHJcbi5wYXNzd29yZC10b2dnbGUtYnRuIC5tYXRlcmlhbC1pY29ucyB7XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG4gIHdpZHRoOiBhdXRvO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgYW5kIChtYXgtd2lkdGg6IDE0MDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwxZnIpO1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICAgIHdpZHRoOiAxODBweDtcclxuICAgICAgICBtYXgtd2lkdGg6IDE4MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywxZnIpO1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwxZnIpO1xyXG4gICAgICAgIGdhcDogMTJweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwxZnIpO1xyXG4gICAgICAgIGdhcDogMTBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWZpZWxkLXdyYXBwZXIge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGFiZWwge1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XHJcbiAgICAgIGNvbG9yOiAjMTUxRDQ4O1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnJlcXVpcmVkIHtcclxuICAgICAgY29sb3I6ICNlNzRjM2M7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tY29udHJvbCB7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDM0cHg7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM4Q0JCQTg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICAgICAgY29sb3I6ICMxZjJiNDE7XHJcbiAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzLCBib3gtc2hhZG93IDAuMnM7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tY29udHJvbDpmb2N1cyB7XHJcbiAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzM0OThkYjtcclxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTIsIDE1MiwgMjE5LCAwLjEpO1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYxO1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHRleHRhcmVhLmZvcm0tY29udHJvbCB7XHJcbiAgICAgIHJlc2l6ZTogdmVydGljYWw7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIHZpZXdCb3g9JzAgMCAxMiAxMiclM0UlM0NwYXRoIGZpbGw9JyUyMzMzMycgZD0nTTYgOUwxIDRoMTB6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xyXG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCA4cHggY2VudGVyO1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0MHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5jaGVja2JveC13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgZ2FwOiA4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgICAgd2lkdGg6IDE4cHg7XHJcbiAgICAgIGhlaWdodDogMThweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC5jaGVja2JveC1sYWJlbCB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5maWxlLXVwbG9hZC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDIwcHg7XHJcbiAgcGFkZGluZzogMjBweDtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcbi5tYXRlcmlhbC1pY29ucyB7XHJcbiAgZm9udC1mYW1pbHk6ICdNYXRlcmlhbCBJY29ucycgIWltcG9ydGFudDtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHdpZHRoOiA0MHB4O1xyXG4gIHBhZGRpbmc6IDhweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbn1cclxuXHJcbi5maWxlLWZpZWxkLXdyYXBwZXIge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbi10b3A6IDE2cHg7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbi5waG90by1wcmV2aWV3LWNpcmNsZSB7XHJcbiAgd2lkdGg6IDEwMHB4O1xyXG4gIGhlaWdodDogMTAwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgYm9yZGVyOiAycHggc29saWQgI2RkZDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnM7XHJcbn1cclxuXHJcbi5waG90by1wcmV2aWV3LWNpcmNsZTpob3ZlciB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjMzQ5OGRiO1xyXG59XHJcblxyXG4ucHJldmlldy1pbWFnZSwgLmRlZmF1bHQtcGhvdG8ge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbn1cclxuXHJcbi5wcmV2aWV3LWltYWdlIGltZyB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG59XHJcblxyXG4uZGVmYXVsdC1waG90byB7XHJcbiAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxuICBjb2xvcjogIzk5OTtcclxuICBmb250LXNpemU6IDQwcHg7XHJcbn1cclxuXHJcbi5maWxlLWluZm8ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6IDhweDtcclxufVxyXG4uYnRuLWRlbGV0ZSB7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIHBhZGRpbmc6IDBweDtcclxufVxyXG5cclxuLnVwbG9hZC1idG4tZ3JvdXAge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZDNkM2QzO1xyXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZCB7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBjb2xvcjogIzIyMjtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgcGFkZGluZzogMCAxOHB4O1xyXG4gIGZvbnQtc2l6ZTogMTZweDtcclxuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDhweCAwIDAgOHB4O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycztcclxufVxyXG5cclxuLmJ0bi11cGxvYWQtaWNvbiB7XHJcbiAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogMCA4cHggOHB4IDA7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiA0OHB4O1xyXG4gIGhlaWdodDogNDBweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZC1pY29uIGkubWF0ZXJpYWwtaWNvbnMge1xyXG4gIGZvbnQtc2l6ZTogMjJweDtcclxuICBjb2xvcjogIzIyMjtcclxufVxyXG5cclxuLmJ0bi11cGxvYWQ6aG92ZXIsIC5idG4tdXBsb2FkLWljb246aG92ZXIge1xyXG4gIGJhY2tncm91bmQ6ICNmMGYwZjA7XHJcbn1cclxuXHJcbi5idG4tZGVsZXRlIHtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBjb2xvcjogcmVkO1xyXG59XHJcblxyXG4uYnRuLWRlbGV0ZTpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxufVxyXG5cclxuLmZpbGUtbmFtZSB7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIGNvbG9yOiAjNjY2O1xyXG4gIG1hcmdpbjogOHB4O1xyXG4gIG1hcmdpbi10b3A6IDEwcHg7XHJcbn1cclxuXHJcbi5maWxlLWxhYmVsIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA2cHg7XHJcbiAgICBjb2xvcjogIzE1MWQ0ODtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuICAgIC5yYWRpby1sYWJlbCB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG4gIGNvbG9yOiAjMTUxRDQ4O1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLnJhZGlvLWdyb3VwIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMjBweDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcblxyXG4ucmFkaW8taXRlbSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogNnB4O1xyXG59XHJcblxyXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xyXG4gIHdpZHRoOiAxOHB4O1xyXG4gIGhlaWdodDogMThweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgYWNjZW50LWNvbG9yOiAjMzQ5OGRiO1xyXG59XHJcblxyXG4ucmFkaW8tb3B0aW9uLWxhYmVsIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbn1cclxuXHJcbiAgICAuaGludCB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgY29sb3I6ICM3ZjhjOGQ7XHJcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcclxuICAgIH1cclxuXHJcbiAgICAuZXJyb3ItbWVzc2FnZSB7XHJcbiAgICAgIGNvbG9yOiAjZTc0YzNjO1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1hY3Rpb25zIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICBwYWRkaW5nLXRvcDogNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4ge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMjBweDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA3cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXByaW1hcnkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2QUZGO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5ODBiOTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXByaW1hcnk6ZGlzYWJsZWQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRjM2M3O1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tc2Vjb25kYXJ5IHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzk1YTVhNjtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tc2Vjb25kYXJ5OmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzdmOGM4ZDtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLW91dGxpbmUge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzMDMwO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1vdXRsaW5lOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJiMmIyYmZmO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXllYXItd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXllYXItd3JhcHBlciAuZm9ybS1jb250cm9sIHtcclxuICAgICAgcGFkZGluZy1yaWdodDogNDVweDtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWhpZGRlbiB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICAgIHdpZHRoOiAwO1xyXG4gICAgICBoZWlnaHQ6IDA7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItYnRuIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogNXB4O1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDVweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGNvbG9yOiAjNjY2O1xyXG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xyXG4gICAgICB6LWluZGV4OiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICAgY29sb3I6ICMzNDk4ZGI7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG46ZGlzYWJsZWQge1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG4gLm1hdGVyaWFsLWljb25zIHtcclxuICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgICB3aWR0aDogYXV0bztcclxuICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LXdyYXBwZXIge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LWlucHV0IHtcclxuICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1kcm9wZG93biB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiBjYWxjKDEwMCUgKyA0cHgpO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICByaWdodDogYXV0bztcclxuICAgICAgbWluLXdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSAxNnB4KTtcclxuICAgICAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkM2QzZDM7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgbWF4LWhlaWdodDogMjIwcHg7XHJcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggcmdiYSgwLDAsMCwwLjA4KTtcclxuICAgICAgei1pbmRleDogNTtcclxuICAgICAgcGFkZGluZzogNnB4IDA7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcclxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZS1vdXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtb3B0aW9uIHtcclxuICAgICAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjJmMmYyO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LW9wdGlvbjpsYXN0LWNoaWxkIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1vcHRpb246aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZjVmOWZmO1xyXG4gICAgfVxyXG5cclxuICAgIC5yZXBlYXRhYmxlLWdyb3VwLXdyYXBwZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHggMTAwcHggMjBweCAyMHB4O1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4wNSk7XHJcbiAgICB9XHJcbiAgICAucmVwZWF0YWJsZS1hY3Rpb25zIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiA0NXB4O1xyXG4gICAgICAgIHJpZ2h0OiAxNXB4O1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgICAgei1pbmRleDogMTA7XHJcbiAgICB9XHJcbiAgICAuYnRuLWljb24ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBwYWRkaW5nOiA0cHg7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7XHJcbiAgICB9XHJcbiAgICAuYnRuLWljb246aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmMGYwZjA7XHJcbiAgICB9XHJcblxyXG4gICAgLm9wdGlvbi1jb2RlIHtcclxuICAgICAgY29sb3I6ICMwMDUyY2M7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIG1pbi13aWR0aDogOTBweDtcclxuICAgIH1cclxuXHJcbiAgICAub3B0aW9uLW5hbWUge1xyXG4gICAgICBjb2xvcjogIzE1MWQ0ODtcclxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtaW5wdXQge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4O1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGNvbG9yOiAjMzQ5OGRiO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG46ZGlzYWJsZWQge1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cInRpbWVcIl0ge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cInRpbWVcIl06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLWZvcm0tZmllbGQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICM4Q0JCQTg7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZDpub3QoLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCkgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICM4Q0JCQTg7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZC5tZGMtdGV4dC1maWVsZC0tZm9jdXNlZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6ICMzNDk4ZGI7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZC5lcnJvci1ib3JkZXIgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xyXG4gICAgICBib3JkZXItY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWF0LW1kYy1mb3JtLWZpZWxkLWlucHV0LWNvbnRyb2wgaW5wdXQge1xyXG4gICAgICBmb250LWZhbWlseTogXCJQb3BwaW5zXCIgIWltcG9ydGFudDtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICBjb2xvcjogIzFmMmI0MTtcclxuICAgIH1cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkVXBkYXRlRm9ybUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IEZvcm1Db25maWc7XHJcbiAgQE91dHB1dCgpIHZhbGlkYXRpb25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBmaWxlUHJldmlld3M6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBmaWxlTmFtZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBwYXNzd29yZFZpc2liaWxpdHk6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgc2VhcmNoUXVlcmllczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgaG9zdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGltcG9ydCgnQGFuZ3VsYXIvY29yZScpLlNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSAmJiAhY2hhbmdlc1snY29uZmlnJ10uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gTGlmZWN5Y2xlIGhvb2sgLSBjYW4gYmUgdXNlZCBmb3IgZGF0ZXBpY2tlciBpbml0aWFsaXphdGlvbiBpZiBuZWVkZWRcclxuICB9XHJcblxyXG4gIGdldENvbHVtbldpZHRoKGNvbHVtbjogRm9ybUNvbHVtbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXhDb2xzID0gdGhpcy5jb25maWcubWF4Q29sc1BlclJvdyB8fCA1O1xyXG4gICAgY29uc3QgY29sU3BhbiA9IE1hdGgubWluKGNvbHVtbi5jb2xTcGFuIHx8IDEsIG1heENvbHMpO1xyXG4gICAgcmV0dXJuIGBjYWxjKCR7KGNvbFNwYW4gLyBtYXhDb2xzKSAqIDEwMH0lIC0gMTZweClgO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChuYW1lOiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChuYW1lKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIC8vIDIuIEhFTFBFUjogQ29udmVydCB5b3VyIEZpZWxkVmFsaWRhdGlvbltdIHRvIHRoZSBsaWJyYXJ5J3MgVmFsaWRhdGlvblNjaGVtYVxyXG4gIGdldFNjaGVtYShjb2x1bW46IEZvcm1Db2x1bW4pOiBWYWxpZGF0aW9uU2NoZW1hIHtcclxuICAgIGNvbnN0IHJ1bGVzOiBWYWxpZGF0aW9uUnVsZVtdID0gW107XHJcbiAgICBjb25zdCBlcnJvclByaW9yaXR5OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGlmIChjb2x1bW4udmFsaWRhdGlvbnMpIHtcclxuICAgICAgY29sdW1uLnZhbGlkYXRpb25zLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHYudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyBlbmFibGVkOiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfUkVRVUlSRUQnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZXF1aXJlZCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3JlZ2V4JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIHBhdHRlcm46ICdeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXFxcLlthLXpBLVpdezIsfSQnLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfUkVHRVhfTUlTTUFUQ0gnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZWdleCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21pbkxlbmd0aCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01JTl9MRU5HVEgnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtaW5MZW5ndGgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtYXhMZW5ndGgnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWF4TGVuZ3RoJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NQVhfTEVOR1RIJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWF4TGVuZ3RoJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncGF0dGVybic6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdyZWdleCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHBhdHRlcm46IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRUdFWF9NSVNNQVRDSCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlZ2V4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncGFzc3dvcmRDb21wbGV4aXR5JzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkQ29tcGxleGl0eScsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB2LnBhcmFtcyB8fCB7XHJcbiAgICAgICAgICAgICAgICByZXF1aXJlVXBwZXJjYXNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZUxvd2VyY2FzZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVOdW1iZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlU3BlY2lhbENoYXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IDhcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiB2LmVycm9yS2V5IHx8ICdFUlJfUEFTU1dPUkRfQ09NUExFWElUWV9JTlZBTElEJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncGFzc3dvcmRDb21wbGV4aXR5Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWluJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21pbicsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUlOX1ZBTFVFJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWluJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWF4JzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21heCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUFYX1ZBTFVFJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWF4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFwICduYW1lLWNvZGUnIHRvICdEcm9wZG93bicgb3Igc2ltaWxhciBmb3IgdmFsaWRhdGlvbiBzY2hlbWEgcHVycG9zZXMgaWYgbmVlZGVkXHJcbiAgICBsZXQgY29udHJvbFR5cGUgPSBjb2x1bW4udHlwZTtcclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ25hbWUtY29kZScpIHtcclxuICAgICAgY29udHJvbFR5cGUgPSAnc2VsZWN0JzsgLy8gVHJlYXQgYXMgc2VsZWN0IGZvciBzY2hlbWEgbG9va3VwIGlmIGxpYnJhcnkgZXhwZWN0cyAnc2VsZWN0JyBvciAnRHJvcGRvd24nXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29udHJvbFR5cGU6IGNvbnRyb2xUeXBlLFxyXG4gICAgICBlcnJvclByaW9yaXR5OiBlcnJvclByaW9yaXR5LFxyXG4gICAgICBydWxlczogcnVsZXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZUZpZWxkKGNvbHVtbjogRm9ybUNvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgY29sdW1uLnR5cGUgPT09ICdmaWxlJyAmJlxyXG4gICAgICAoY29sdW1uLmFjY2VwdD8uc3RhcnRzV2l0aCgnaW1hZ2UnKSB8fCBjb2x1bW4uZmlsZVByZXZpZXcgPT09IHRydWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gSGVscGVycyBmb3IgUmVwZWF0YWJsZSBTZWN0aW9uc1xyXG4gIGdldFNlY3Rpb25BcnJheShzZWN0aW9uOiBGb3JtU2VjdGlvbik6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChzZWN0aW9uLnNlY3Rpb25LZXkhKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTZWN0aW9uR3JvdXAoc2VjdGlvbjogRm9ybVNlY3Rpb24pOiBGb3JtR3JvdXAge1xyXG4gICAgY29uc3QgZ3JvdXBDb25maWc6IGFueSA9IHt9O1xyXG4gICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBjb2x1bW4udmFsdWUgfHwgJyc7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGluaXRpYWxWYWx1ZSkge1xyXG4gICAgICAgIGluaXRpYWxWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUoaW5pdGlhbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBncm91cENvbmZpZ1tjb2x1bW4ubmFtZV0gPSBbXHJcbiAgICAgICAgeyB2YWx1ZTogaW5pdGlhbFZhbHVlLCBkaXNhYmxlZDogKHR5cGVvZiBjb2x1bW4uZGlzYWJsZWQgPT09ICdib29sZWFuJyA/IGNvbHVtbi5kaXNhYmxlZCA6IGZhbHNlKSB9LFxyXG4gICAgICBdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKGdyb3VwQ29uZmlnKTtcclxuXHJcbiAgICAvLyBBcHBseSBWYWxpZGF0b3JzXHJcbiAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuYnVpbGRWYWxpZGF0b3JzKGNvbHVtbi52YWxpZGF0aW9ucywgZ3JvdXApO1xyXG4gICAgICBpZiAodmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZ3JvdXAuZ2V0KGNvbHVtbi5uYW1lKT8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICBncm91cC5nZXQoY29sdW1uLm5hbWUpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBncm91cDtcclxuICB9XHJcblxyXG4gIGFkZFNlY3Rpb25JdGVtKHNlY3Rpb246IEZvcm1TZWN0aW9uKSB7XHJcbiAgICBjb25zdCBhcnJheSA9IHRoaXMuZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pO1xyXG4gICAgYXJyYXkucHVzaCh0aGlzLmNyZWF0ZVNlY3Rpb25Hcm91cChzZWN0aW9uKSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTZWN0aW9uSXRlbShzZWN0aW9uOiBGb3JtU2VjdGlvbiwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgYXJyYXkgPSB0aGlzLmdldFNlY3Rpb25BcnJheShzZWN0aW9uKTtcclxuICAgIGlmIChhcnJheS5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGFycmF5LnJlbW92ZUF0KGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQ29udHJvbEludmFsaWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIChjb250cm9sLnRvdWNoZWQgfHwgdGhpcy5zdWJtaXR0ZWQpKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yTWVzc2FnZUZvckNvbnRyb2woXHJcbiAgICBjb2x1bW46IEZvcm1Db2x1bW4sXHJcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGlmICghY29udHJvbD8uZXJyb3JzKSByZXR1cm4gJyc7XHJcbiAgICBjb25zdCBmaWVsZCA9IGNvbnRyb2w7XHJcbiAgICBjb25zdCBlcnJvcnMgPSBmaWVsZC5lcnJvcnMhO1xyXG5cclxuICAgIGlmIChlcnJvcnNbJ2N1c3RvbSddKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKFxyXG4gICAgICAgICh2KSA9PiB2LnR5cGUgPT09ICdjdXN0b20nXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uPy5tZXNzYWdlIHx8ICdJbnZhbGlkIGZpZWxkJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKCh2KSA9PiB2LnR5cGUgPT09IGtleSk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uICYmIHZhbGlkYXRpb24ubWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiB2YWxpZGF0aW9uLm1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXJyb3JzWydyZXF1aXJlZCddKSByZXR1cm4gYCR7Y29sdW1uPy5sYWJlbH0gaXMgcmVxdWlyZWRgO1xyXG4gICAgaWYgKGVycm9yc1snZW1haWwnXSkgcmV0dXJuICdJbnZhbGlkIGVtYWlsIGZvcm1hdCc7XHJcbiAgICBpZiAoZXJyb3JzWydtaW5sZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNaW5pbXVtIGxlbmd0aCBpcyAke2Vycm9yc1snbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChlcnJvcnNbJ21heGxlbmd0aCddKVxyXG4gICAgICByZXR1cm4gYE1heGltdW0gbGVuZ3RoIGlzICR7ZXJyb3JzWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gICAgaWYgKGVycm9yc1snbWluJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSB2YWx1ZSBpcyAke2Vycm9yc1snbWluJ10ubWlufWA7XHJcbiAgICBpZiAoZXJyb3JzWydtYXgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIHZhbHVlIGlzICR7ZXJyb3JzWydtYXgnXS5tYXh9YDtcclxuICAgIGlmIChlcnJvcnNbJ3BhdHRlcm4nXSkgcmV0dXJuICdJbnZhbGlkIGZvcm1hdCc7XHJcblxyXG4gICAgcmV0dXJuICdJbnZhbGlkIGZpZWxkJztcclxuICB9XHJcblxyXG4gIGlzRmllbGREaXNhYmxlZChjb2x1bW46IEZvcm1Db2x1bW4sIGdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIGlmICh0eXBlb2YgY29sdW1uLmRpc2FibGVkID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW4uZGlzYWJsZWQoZ3JvdXAgYXMgRm9ybUdyb3VwKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBpbml0aWFsaXplRm9ybSgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICBjb25zdCBmb3JtR3JvdXBDb25maWc6IGFueSA9IHt9O1xyXG5cclxuICAgIHRoaXMuY29uZmlnLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHNlY3Rpb24uaXNSZXBlYXRhYmxlICYmIHNlY3Rpb24uc2VjdGlvbktleSkge1xyXG4gICAgICAgIGZvcm1Hcm91cENvbmZpZ1tzZWN0aW9uLnNlY3Rpb25LZXldID0gdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVNlY3Rpb25Hcm91cChzZWN0aW9uKSxcclxuICAgICAgICBdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBjb2x1bW4udmFsdWUgfHwgJyc7XHJcblxyXG4gICAgICAgICAgLy8gRm9ybWF0IG1vbnRoLXllYXIgZmllbGRzIHRvIFlZWVktTU0gZm9ybWF0XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdtb250aC15ZWFyJyAmJiBpbml0aWFsVmFsdWUpIHtcclxuICAgICAgICAgICAgaW5pdGlhbFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZShpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZvcm1Hcm91cENvbmZpZ1tjb2x1bW4ubmFtZV0gPSBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IGluaXRpYWxWYWx1ZSwgZGlzYWJsZWQ6ICh0eXBlb2YgY29sdW1uLmRpc2FibGVkID09PSAnYm9vbGVhbicgPyBjb2x1bW4uZGlzYWJsZWQgOiBmYWxzZSkgfSxcclxuICAgICAgICAgICAgbnVsbCwgLy8gV2UnbGwgc2V0IHZhbGlkYXRvcnMgYWZ0ZXIgZm9ybSBjcmVhdGlvblxyXG4gICAgICAgICAgXTtcclxuXHJcbiAgICAgICAgICAvLyBJZiBpdCdzIGEgZmlsZSBmaWVsZCB3aXRoIGFuIGV4aXN0aW5nIHZhbHVlLCBzZXQgdGhlIHByZXZpZXdcclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2ZpbGUnICYmIGNvbHVtbi52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVQcmV2aWV3cy5zZXQoY29sdW1uLm5hbWUsIGNvbHVtbi52YWx1ZSk7XHJcbiAgICAgICAgICAgIC8vIEV4dHJhY3QgZmlsZW5hbWUgZnJvbSBVUkwgb3IgYmFzZTY0XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy5leHRyYWN0RmlsZU5hbWUoY29sdW1uLnZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKGZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGNvbHVtbi5uYW1lLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cChmb3JtR3JvdXBDb25maWcpO1xyXG5cclxuICAgIHRoaXMuY29uZmlnLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+IHtcclxuICAgICAgaWYgKCFzZWN0aW9uLmlzUmVwZWF0YWJsZSkge1xyXG4gICAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuYnVpbGRWYWxpZGF0b3JzKFxyXG4gICAgICAgICAgICBjb2x1bW4udmFsaWRhdGlvbnMsXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk/LnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoY29sdW1uLm5hbWUpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFN1YnNjcmliZSB0byB2YWx1ZSBjaGFuZ2VzIGZvciBhbGwgZmllbGRzIHRvIHRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlcnNcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGtleSk7XHJcbiAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gY29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShrZXkpO1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uPy5vbkNoYW5nZSkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbi5vbkNoYW5nZSh2YWx1ZSwgdGhpcy5mb3JtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW4gdXAgYWxsIHN1YnNjcmlwdGlvbnMgdG8gcHJldmVudCBtZW1vcnkgbGVha3NcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VTdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMgPSBbXTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpZWxkQ2hhbmdlKFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBldmVudFZhbHVlPzogYW55LFxyXG4gICAgY29udHJvbD86IEFic3RyYWN0Q29udHJvbFxyXG4gICkge1xyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeU5hbWUoZmllbGROYW1lKTtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gY29udHJvbCB8fCB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcblxyXG4gICAgLy8gRm9ybWF0IG1vbnRoLXllYXIgZmllbGRzIChlc3BlY2lhbGx5IGV4cGlyeURhdGUpIHRvIFlZWVktTU1cclxuICAgIGlmIChjb2x1bW4/LnR5cGUgPT09ICdtb250aC15ZWFyJyAmJiBldmVudFZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZShldmVudFZhbHVlKTtcclxuICAgICAgaWYgKGZvcm1Db250cm9sICYmIGZvcm1hdHRlZFZhbHVlICE9PSBldmVudFZhbHVlKSB7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICBldmVudFZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29sdW1uPy5vbkNoYW5nZSkge1xyXG4gICAgICAvLyBVc2UgdGhlIGV2ZW50IHZhbHVlIGRpcmVjdGx5ICh3aGF0IHRoZSB1c2VyIGp1c3Qgc2VsZWN0ZWQvdHlwZWQpXHJcbiAgICAgIC8vIFRoaXMgZW5zdXJlcyB3ZSBoYXZlIHRoZSBjb3JyZWN0IHZhbHVlIGV2ZW4gaWYgZm9ybSBjb250cm9sIGhhc24ndCB1cGRhdGVkIHlldFxyXG4gICAgICBjb25zdCB2YWx1ZVRvUGFzcyA9XHJcbiAgICAgICAgZXZlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gZXZlbnRWYWx1ZSA6IGZvcm1Db250cm9sPy52YWx1ZTtcclxuICAgICAgY29uc3Qgb25DaGFuZ2VGbiA9IGNvbHVtbi5vbkNoYW5nZTsgLy8gU3RvcmUgdGhlIGZ1bmN0aW9uIHJlZmVyZW5jZVxyXG5cclxuICAgICAgLy8gU3RvcmUgdGhlIHNlbGVjdGVkIHZhbHVlIC0gdGhpcyBpcyB3aGF0IHRoZSB1c2VyIGNob3NlXHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB2YWx1ZVRvUGFzcztcclxuXHJcbiAgICAgIC8vIEVuc3VyZSB0aGUgZm9ybSBjb250cm9sIGhhcyB0aGUgc2VsZWN0ZWQgdmFsdWUgYmVmb3JlIGNhbGxpbmcgb25DaGFuZ2VcclxuICAgICAgaWYgKGZvcm1Db250cm9sICYmIHNlbGVjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChmb3JtQ29udHJvbC52YWx1ZSAhPT0gc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2FsbCBvbkNoYW5nZSB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZVxyXG4gICAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICAgIG9uQ2hhbmdlRm4oc2VsZWN0ZWRWYWx1ZSwgdGhpcy5mb3JtKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVzdG9yZSB0aGUgdmFsdWUgZm9yIHRoZSBmaWVsZCB0aGF0IHRyaWdnZXJlZCB0aGUgY2hhbmdlIGlmIGl0IHdhcyBjbGVhcmVkIGJ5IG9uQ2hhbmdlXHJcbiAgICAgIC8vIFRoaXMgaXMgY3JpdGljYWw6IGlmIG9uQ2hhbmdlIGNsZWFycyB0aGUgZmllbGQgdGhhdCB3YXMganVzdCBjaGFuZ2VkLCB3ZSByZXN0b3JlIGl0XHJcbiAgICAgIC8vIE9ubHkgcmVzdG9yZSBpZiB3ZSBoYWQgYSBub24tZW1wdHkgdmFsdWUgKGVtcHR5IHN0cmluZywgbnVsbCwgdW5kZWZpbmVkIGFyZSBub3QgcmVzdG9yZWQpXHJcbiAgICAgIGlmIChcclxuICAgICAgICBmb3JtQ29udHJvbCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICBzZWxlY3RlZFZhbHVlICE9PSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB3aXRoIDAgZGVsYXkgdG8gcnVuIGFmdGVyIGFueSBzeW5jaHJvbm91cyBvcGVyYXRpb25zIGluIG9uQ2hhbmdlXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgd2FzIGNsZWFyZWQgb3IgY2hhbmdlZFxyXG4gICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgZG9lc24ndCBtYXRjaCB3aGF0IHdhcyBzZWxlY3RlZCwgcmVzdG9yZSBpdFxyXG4gICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIG9uQ2hhbmdlIGNsZWFyZWQgdGhlIGZpZWxkIHVuaW50ZW50aW9uYWxseVxyXG4gICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1hdE1vbnRoWWVhclZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHZhbHVlO1xyXG4gICAgLy8gTm9ybWFsaXplIHRvIFlZWVktTU1cclxuICAgIGlmICh2YWx1ZS5tYXRjaCgvXlxcZHsyfS1cXGR7NH0kLykpIHtcclxuICAgICAgY29uc3QgW21vbnRoLCB5ZWFyXSA9IHZhbHVlLnNwbGl0KCctJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICAvLyBJZiBhbHJlYWR5IGluIFlZWVktTU0gZm9ybWF0LCByZXR1cm4gYXMgaXNcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHBhcnNlTW9udGhZZWFyVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XHJcbiAgICAvLyBEaXNwbGF5IGFuZCBwaWNrZXIgYm90aCB1c2UgWVlZWS1NTTsgbm9ybWFsaXplIE1NLVlZWVkgaWYgcHJlc2VudFxyXG4gICAgaWYgKHZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gdmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhckNoYW5nZShcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgdmFsdWU6IHN0cmluZyxcclxuICAgIGNvbnRyb2w/OiBBYnN0cmFjdENvbnRyb2xcclxuICApIHtcclxuICAgIC8vIEZvcm1hdCB0aGUgaW5wdXQgdmFsdWUgdG8gWVlZWS1NTSBmb3JtYXRcclxuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIC8vIElmIGl0J3MgaW4gTU0tWVlZWSBmb3JtYXQsIGNvbnZlcnQgdG8gWVlZWS1NTVxyXG4gICAgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgZm9ybWF0dGVkVmFsdWUgPSBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICAvLyBJZiBpdCdzIGluIFlZWVlNTSBmb3JtYXQgKG5vIGRhc2gpLCBjb252ZXJ0IHRvIFlZWVktTU1cclxuICAgIGVsc2UgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezZ9JC8pKSB7XHJcbiAgICAgIGNvbnN0IHllYXIgPSBmb3JtYXR0ZWRWYWx1ZS5zdWJzdHJpbmcoMCwgNCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gZm9ybWF0dGVkVmFsdWUuc3Vic3RyaW5nKDQsIDYpO1xyXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGl0J3MgYWxyZWFkeSBpbiBZWVlZLU1NIGZvcm1hdCwgbGVhdmUgYXMgaXNcclxuICAgIGVsc2UgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezR9LVxcZHsyfSQvKSkge1xyXG4gICAgICAvLyBBbHJlYWR5IGluIGNvcnJlY3QgZm9ybWF0XHJcbiAgICB9XHJcbiAgICAvLyBJZiB1c2VyIGlzIHR5cGluZywgYWxsb3cgcGFydGlhbCBpbnB1dFxyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7MSw2fSQvKSkge1xyXG4gICAgICAvLyBBbGxvdyBwYXJ0aWFsIGlucHV0IHdoaWxlIHR5cGluZ1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gY29udHJvbCB8fCB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IHZhbHVlKSB7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlLCBjb250cm9sKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhckJsdXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWUgfHwgJyc7XHJcbiAgICAvLyBFbnN1cmUgdGhlIHZhbHVlIGlzIGluIFlZWVktTU0gZm9ybWF0IG9uIGJsdXJcclxuICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUubWF0Y2goL15cXGR7NH0tXFxkezJ9JC8pKSB7XHJcbiAgICAgIC8vIFRyeSB0byBwYXJzZSBhbmQgZm9ybWF0XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gICAgICBpZiAoZm9ybWF0dGVkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aFllYXJQaWNrZXJDaGFuZ2UoZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIC8vIE1vbnRoIHBpY2tlciBvdXRwdXRzIFlZWVktTU07IGp1c3Qgbm9ybWFsaXplXHJcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wpIHtcclxuICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1vbnRoWWVhclBpY2tlclZhbHVlKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkgcmV0dXJuICcnO1xyXG4gICAgY29uc3QgdmFsdWUgPSBmb3JtQ29udHJvbC52YWx1ZSB8fCAnJztcclxuICAgIC8vIERpc3BsYXkgYW5kIHBpY2tlciBib3RoIGV4cGVjdCBZWVlZLU1NXHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZU1vbnRoWWVhclZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9wZW5Nb250aFBpY2tlcihmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgbW9udGhJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICBmaWVsZE5hbWUgKyAnX3BpY2tlcidcclxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChtb250aElucHV0ICYmIG1vbnRoSW5wdXQudHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICAvLyBVcGRhdGUgdGhlIHBpY2tlciB2YWx1ZSBiZWZvcmUgb3BlbmluZ1xyXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldE1vbnRoWWVhclBpY2tlclZhbHVlKGZpZWxkTmFtZSk7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICBtb250aElucHV0LnZhbHVlID0gY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFRyeSBtb2Rlcm4gc2hvd1BpY2tlciBBUEkgZmlyc3QsIGZhbGxiYWNrIHRvIGNsaWNrXHJcbiAgICAgIGlmIChtb250aElucHV0LnNob3dQaWNrZXIpIHtcclxuICAgICAgICBtb250aElucHV0LnNob3dQaWNrZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtb250aElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgbW9udGhJbnB1dC5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5CeU5hbWUobmFtZTogc3RyaW5nKTogRm9ybUNvbHVtbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2VjdGlvbnNcclxuICAgICAgLmZsYXRNYXAoKHMpID0+IHMuZmllbGRzKVxyXG4gICAgICAuZmluZCgoYykgPT4gYy5uYW1lID09PSBuYW1lKTtcclxuICB9XHJcblxyXG4gIGdldEZpbGVGaWVsZHMoZmllbGRzOiBGb3JtQ29sdW1uW10pOiBGb3JtQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoKGYpID0+IGYudHlwZSA9PT0gJ2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIGdldE5vbkZpbGVGaWVsZHMoZmllbGRzOiBGb3JtQ29sdW1uW10pOiBGb3JtQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoKGYpID0+IGYudHlwZSAhPT0gJ2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBhc3N3b3JkVmlzaWJpbGl0eShmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMucGFzc3dvcmRWaXNpYmlsaXR5LmdldChmaWVsZE5hbWUpIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5wYXNzd29yZFZpc2liaWxpdHkuc2V0KGZpZWxkTmFtZSwgIWN1cnJlbnQpO1xyXG4gIH1cclxuICBoYXNSZXF1aXJlZFZhbGlkYXRpb24oY29sdW1uOiBGb3JtQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29sdW1uLnZhbGlkYXRpb25zPy5zb21lKCh2KSA9PiB2LnR5cGUgPT09ICdyZXF1aXJlZCcpIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNQYXNzd29yZFZpc2libGUoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkVmlzaWJpbGl0eS5nZXQoZmllbGROYW1lKSB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIGJ1aWxkVmFsaWRhdG9ycyhcclxuICAgIHZhbGlkYXRpb25zPzogRmllbGRWYWxpZGF0aW9uW10sXHJcbiAgICBmb3JtR3JvdXA/OiBGb3JtR3JvdXBcclxuICApOiBhbnlbXSB7XHJcbiAgICBpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdG9yczogYW55W10gPSBbXTtcclxuICAgIHZhbGlkYXRpb25zLmZvckVhY2goKHZhbGlkYXRpb24pID0+IHtcclxuICAgICAgc3dpdGNoICh2YWxpZGF0aW9uLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtaW5MZW5ndGgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21heExlbmd0aCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWluJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtYXgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3BhdHRlcm4nOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybih2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdjdXN0b20nOlxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRpb24udmFsaWRhdG9yKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHZhbGlkYXRpb24udmFsaWRhdG9yIShjb250cm9sLnZhbHVlLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgY3VzdG9tOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyRmlsZVVwbG9hZChmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVJbnB1dF8nICsgZmllbGROYW1lKT8uY2xpY2soKTtcclxuICB9XHJcblxyXG4gIG9wZW5UaW1lUGlja2VyKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0aW1lSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWVsZE5hbWUpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAodGltZUlucHV0ICYmIHRpbWVJbnB1dC50eXBlID09PSAndGltZScpIHtcclxuICAgICAgLy8gVHJ5IG1vZGVybiBzaG93UGlja2VyIEFQSSBmaXJzdCwgZmFsbGJhY2sgdG8gY2xpY2tcclxuICAgICAgaWYgKHRpbWVJbnB1dC5zaG93UGlja2VyKSB7XHJcbiAgICAgICAgdGltZUlucHV0LnNob3dQaWNrZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aW1lSW5wdXQuZm9jdXMoKTtcclxuICAgICAgICB0aW1lSW5wdXQuY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWxlQ2hhbmdlKGV2ZW50OiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGZpZWxkTmFtZSwgZmlsZS5uYW1lKTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0U3RyaW5nID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgdGhpcy5maWxlUHJldmlld3Muc2V0KGZpZWxkTmFtZSwgYmFzZTY0U3RyaW5nKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKGJhc2U2NFN0cmluZyk7XHJcblxyXG4gICAgICAgIC8vIFRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlciBmb3IgZmlsZSBmaWVsZHNcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICBjb2x1bW4ub25DaGFuZ2UoYmFzZTY0U3RyaW5nLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4dHJhY3RGaWxlTmFtZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuXHJcbiAgICAvLyBJZiBpdCdzIGEgVVJMLCBleHRyYWN0IGZpbGVuYW1lIGZyb20gVVJMXHJcbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIGl0J3MgYmFzZTY0LCByZXR1cm4gYSBnZW5lcmljIG5hbWVcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKGBkYXRhOmltYWdlYCkpIHtcclxuICAgICAgcmV0dXJuICd1cGxvYWRlZC1pbWFnZS5qcGcnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnZXhpc3RpbmctcGhvdG8uanBnJztcclxuICB9XHJcblxyXG4gIGdldEZpbGVQcmV2aWV3KGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlUHJldmlld3MuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIGdldEZpbGVOYW1lKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlTmFtZXMuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIG1hcFNlYXJjaE9wdGlvbnMob3B0aW9uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gb3B0aW9ucy5tYXAob3B0ID0+ICh7XHJcbiAgICAgIGNvZGU6IFN0cmluZyhvcHQuY29kZSB8fCBvcHQudmFsdWUgfHwgJycpLFxyXG4gICAgICBuYW1lOiBTdHJpbmcob3B0Lm5hbWUgfHwgb3B0LmxhYmVsIHx8IG9wdC52YWx1ZSB8fCAnJyksXHJcbiAgICAgIHZhbHVlOiBvcHQudmFsdWVcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBkZWxldGVGaWxlKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpbGVQcmV2aWV3cy5kZWxldGUoZmllbGROYW1lKTtcclxuICAgIHRoaXMuZmlsZU5hbWVzLmRlbGV0ZShmaWVsZE5hbWUpO1xyXG4gICAgdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpPy5zZXRWYWx1ZSgnJyk7XHJcblxyXG4gICAgLy8gVHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyIHdoZW4gZmlsZSBpcyBkZWxldGVkXHJcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgaWYgKGNvbHVtbj8ub25DaGFuZ2UpIHtcclxuICAgICAgY29sdW1uLm9uQ2hhbmdlKCcnLCB0aGlzLmZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlU3VibWl0KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIC8vIE1hcmsgYWxsIGZpZWxkcyBhcyB0b3VjaGVkIHRvIHNob3cgcmVkIGJvcmRlcnMgKHJlY3Vyc2l2ZSlcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmVtaXQoXHJcbiAgICAgICAgJ1BsZWFzZSBmaWxsIGFsbCByZXF1aXJlZCBmaWVsZHMgbWFya2VkIHdpdGggKi4nXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgdGhpcy5jb25maWcub25TdWJtaXQoZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVzZXQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICBpZiAodGhpcy5jb25maWcub25SZXNldCkge1xyXG4gICAgICB0aGlzLmNvbmZpZy5vblJlc2V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0ZpZWxkSW52YWxpZChmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICByZXR1cm4gISEoZmllbGQgJiYgZmllbGQuaW52YWxpZCAmJiAoZmllbGQudG91Y2hlZCB8fCB0aGlzLnN1Ym1pdHRlZCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmaWVsZD8uZXJyb3JzKSByZXR1cm4gJyc7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhIGN1c3RvbSBtZXNzYWdlIGZyb20gdmFsaWRhdGlvbnNcclxuICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmNvbmZpZy5zZWN0aW9ucy5mbGF0TWFwKChzKSA9PiBzLmZpZWxkcyk7XHJcbiAgICBjb25zdCBjb2x1bW4gPSBhbGxDb2x1bW5zLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gZmllbGROYW1lKTtcclxuICAgIC8vIENoZWNrIGZvciBjdXN0b20gdmFsaWRhdGlvbiBlcnJvclxyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snY3VzdG9tJ10pIHtcclxuICAgICAgY29uc3QgY3VzdG9tVmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoXHJcbiAgICAgICAgKHYpID0+IHYudHlwZSA9PT0gJ2N1c3RvbSdcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb24/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZmllbGQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBjdXN0b20gbWVzc2FnZSBmcm9tIHZhbGlkYXRpb25zXHJcbiAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyhmaWVsZC5lcnJvcnMpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKCh2KSA9PiB2LnR5cGUgPT09IGtleSk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uPy5tZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24ubWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gRGVmYXVsdCBlcnJvciBtZXNzYWdlc1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1sncmVxdWlyZWQnXSkge1xyXG4gICAgICByZXR1cm4gYCR7Y29sdW1uPy5sYWJlbH0gaXMgcmVxdWlyZWRgO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snZW1haWwnXSkgcmV0dXJuICdJbnZhbGlkIGVtYWlsIGZvcm1hdCc7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtaW5sZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNaW5pbXVtIGxlbmd0aCBpcyAke2ZpZWxkLmVycm9yc1snbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ21heGxlbmd0aCddKVxyXG4gICAgICByZXR1cm4gYE1heGltdW0gbGVuZ3RoIGlzICR7ZmllbGQuZXJyb3JzWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWluJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSB2YWx1ZSBpcyAke2ZpZWxkLmVycm9yc1snbWluJ10ubWlufWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtYXgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIHZhbHVlIGlzICR7ZmllbGQuZXJyb3JzWydtYXgnXS5tYXh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ3BhdHRlcm4nXSkgcmV0dXJuICdJbnZhbGlkIGZvcm1hdCc7XHJcbiAgICByZXR1cm4gJ0ludmFsaWQgZmllbGQnO1xyXG4gIH1cclxufVxyXG4iXX0=