@sinequa/assistant 3.8.0 → 3.8.2

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.
@@ -58,11 +58,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
58
58
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
59
59
  description?: string | undefined;
60
60
  label?: string | undefined;
61
+ aliases?: string[] | undefined;
61
62
  labelPlural?: string | undefined;
62
63
  formatter?: string | undefined;
63
64
  transforms?: string | undefined;
64
65
  parser?: string | undefined;
65
- aliases?: string[] | undefined;
66
66
  typeModifier?: string | undefined;
67
67
  } | undefined;
68
68
  } | ({
@@ -81,11 +81,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
81
81
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
82
82
  description?: string | undefined;
83
83
  label?: string | undefined;
84
+ aliases?: string[] | undefined;
84
85
  labelPlural?: string | undefined;
85
86
  formatter?: string | undefined;
86
87
  transforms?: string | undefined;
87
88
  parser?: string | undefined;
88
- aliases?: string[] | undefined;
89
89
  typeModifier?: string | undefined;
90
90
  } | undefined;
91
91
  hasChildren?: boolean | undefined;
@@ -113,11 +113,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
113
113
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
114
114
  description?: string | undefined;
115
115
  label?: string | undefined;
116
+ aliases?: string[] | undefined;
116
117
  labelPlural?: string | undefined;
117
118
  formatter?: string | undefined;
118
119
  transforms?: string | undefined;
119
120
  parser?: string | undefined;
120
- aliases?: string[] | undefined;
121
121
  typeModifier?: string | undefined;
122
122
  } | undefined;
123
123
  }[];
@@ -138,11 +138,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
138
138
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
139
139
  description?: string | undefined;
140
140
  label?: string | undefined;
141
+ aliases?: string[] | undefined;
141
142
  labelPlural?: string | undefined;
142
143
  formatter?: string | undefined;
143
144
  transforms?: string | undefined;
144
145
  parser?: string | undefined;
145
- aliases?: string[] | undefined;
146
146
  typeModifier?: string | undefined;
147
147
  } | undefined;
148
148
  }[];
@@ -168,11 +168,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
168
168
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
169
169
  description?: string | undefined;
170
170
  label?: string | undefined;
171
+ aliases?: string[] | undefined;
171
172
  labelPlural?: string | undefined;
172
173
  formatter?: string | undefined;
173
174
  transforms?: string | undefined;
174
175
  parser?: string | undefined;
175
- aliases?: string[] | undefined;
176
176
  typeModifier?: string | undefined;
177
177
  } | undefined;
178
178
  $hasMore?: boolean | undefined;
@@ -194,11 +194,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
194
194
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
195
195
  description?: string | undefined;
196
196
  label?: string | undefined;
197
+ aliases?: string[] | undefined;
197
198
  labelPlural?: string | undefined;
198
199
  formatter?: string | undefined;
199
200
  transforms?: string | undefined;
200
201
  parser?: string | undefined;
201
- aliases?: string[] | undefined;
202
202
  typeModifier?: string | undefined;
203
203
  } | undefined;
204
204
  hasChildren?: boolean | undefined;
@@ -226,11 +226,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
226
226
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
227
227
  description?: string | undefined;
228
228
  label?: string | undefined;
229
+ aliases?: string[] | undefined;
229
230
  labelPlural?: string | undefined;
230
231
  formatter?: string | undefined;
231
232
  transforms?: string | undefined;
232
233
  parser?: string | undefined;
233
- aliases?: string[] | undefined;
234
234
  typeModifier?: string | undefined;
235
235
  } | undefined;
236
236
  hasChildren?: boolean | undefined;
@@ -258,14 +258,15 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
258
258
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
259
259
  description?: string | undefined;
260
260
  label?: string | undefined;
261
+ aliases?: string[] | undefined;
261
262
  labelPlural?: string | undefined;
262
263
  formatter?: string | undefined;
263
264
  transforms?: string | undefined;
264
265
  parser?: string | undefined;
265
- aliases?: string[] | undefined;
266
266
  typeModifier?: string | undefined;
267
267
  } | undefined;
268
268
  }[];
269
+ hasChildren?: boolean | undefined;
269
270
  isDistribution?: boolean | undefined;
270
271
  isTree?: boolean | undefined;
271
272
  valuesAreExpressions?: boolean | undefined;
@@ -288,15 +289,14 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
288
289
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
289
290
  description?: string | undefined;
290
291
  label?: string | undefined;
292
+ aliases?: string[] | undefined;
291
293
  labelPlural?: string | undefined;
292
294
  formatter?: string | undefined;
293
295
  transforms?: string | undefined;
294
296
  parser?: string | undefined;
295
- aliases?: string[] | undefined;
296
297
  typeModifier?: string | undefined;
297
298
  } | undefined;
298
299
  $hasMore?: boolean | undefined;
299
- hasChildren?: boolean | undefined;
300
300
  })[];
301
301
  page: number;
302
302
  rowCount: number;
@@ -310,6 +310,7 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
310
310
  title: string;
311
311
  text: string;
312
312
  size: number;
313
+ version: string;
313
314
  $selected: boolean;
314
315
  matchlocations: string[];
315
316
  rank: number;
@@ -325,7 +326,6 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
325
326
  documentweight: string;
326
327
  modified: string;
327
328
  indexationtime: string;
328
- version: string;
329
329
  treepath: string[];
330
330
  fileext: string;
331
331
  flags: string[];
@@ -447,6 +447,7 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
447
447
  title: string;
448
448
  text: string;
449
449
  size: number;
450
+ version: string;
450
451
  $selected: boolean;
451
452
  matchlocations: string[];
452
453
  rank: number;
@@ -462,7 +463,6 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
462
463
  documentweight: string;
463
464
  modified: string;
464
465
  indexationtime: string;
465
- version: string;
466
466
  treepath: string[];
467
467
  fileext: string;
468
468
  flags: string[];
@@ -558,13 +558,13 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
558
558
  score: number;
559
559
  recordId: string;
560
560
  answer?: string | undefined;
561
- answerScore?: number | undefined;
562
561
  $record?: {
563
562
  filename: string;
564
563
  id: string;
565
564
  title: string;
566
565
  text: string;
567
566
  size: number;
567
+ version: string;
568
568
  $selected: boolean;
569
569
  matchlocations: string[];
570
570
  rank: number;
@@ -580,7 +580,6 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
580
580
  documentweight: string;
581
581
  modified: string;
582
582
  indexationtime: string;
583
- version: string;
584
583
  treepath: string[];
585
584
  fileext: string;
586
585
  flags: string[];
@@ -664,6 +663,7 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
664
663
  } | undefined;
665
664
  $hasPassages?: boolean | undefined;
666
665
  } | undefined;
666
+ answerScore?: number | undefined;
667
667
  }[] | undefined;
668
668
  } | null | undefined;
669
669
  } & {
@@ -685,11 +685,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
685
685
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
686
686
  description?: string | undefined;
687
687
  label?: string | undefined;
688
+ aliases?: string[] | undefined;
688
689
  labelPlural?: string | undefined;
689
690
  formatter?: string | undefined;
690
691
  transforms?: string | undefined;
691
692
  parser?: string | undefined;
692
- aliases?: string[] | undefined;
693
693
  typeModifier?: string | undefined;
694
694
  } | undefined;
695
695
  } | ({
@@ -708,11 +708,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
708
708
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
709
709
  description?: string | undefined;
710
710
  label?: string | undefined;
711
+ aliases?: string[] | undefined;
711
712
  labelPlural?: string | undefined;
712
713
  formatter?: string | undefined;
713
714
  transforms?: string | undefined;
714
715
  parser?: string | undefined;
715
- aliases?: string[] | undefined;
716
716
  typeModifier?: string | undefined;
717
717
  } | undefined;
718
718
  hasChildren?: boolean | undefined;
@@ -740,11 +740,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
740
740
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
741
741
  description?: string | undefined;
742
742
  label?: string | undefined;
743
+ aliases?: string[] | undefined;
743
744
  labelPlural?: string | undefined;
744
745
  formatter?: string | undefined;
745
746
  transforms?: string | undefined;
746
747
  parser?: string | undefined;
747
- aliases?: string[] | undefined;
748
748
  typeModifier?: string | undefined;
749
749
  } | undefined;
750
750
  }[];
@@ -765,11 +765,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
765
765
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
766
766
  description?: string | undefined;
767
767
  label?: string | undefined;
768
+ aliases?: string[] | undefined;
768
769
  labelPlural?: string | undefined;
769
770
  formatter?: string | undefined;
770
771
  transforms?: string | undefined;
771
772
  parser?: string | undefined;
772
- aliases?: string[] | undefined;
773
773
  typeModifier?: string | undefined;
774
774
  } | undefined;
775
775
  }[];
@@ -795,11 +795,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
795
795
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
796
796
  description?: string | undefined;
797
797
  label?: string | undefined;
798
+ aliases?: string[] | undefined;
798
799
  labelPlural?: string | undefined;
799
800
  formatter?: string | undefined;
800
801
  transforms?: string | undefined;
801
802
  parser?: string | undefined;
802
- aliases?: string[] | undefined;
803
803
  typeModifier?: string | undefined;
804
804
  } | undefined;
805
805
  $hasMore?: boolean | undefined;
@@ -821,11 +821,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
821
821
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
822
822
  description?: string | undefined;
823
823
  label?: string | undefined;
824
+ aliases?: string[] | undefined;
824
825
  labelPlural?: string | undefined;
825
826
  formatter?: string | undefined;
826
827
  transforms?: string | undefined;
827
828
  parser?: string | undefined;
828
- aliases?: string[] | undefined;
829
829
  typeModifier?: string | undefined;
830
830
  } | undefined;
831
831
  hasChildren?: boolean | undefined;
@@ -853,11 +853,11 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
853
853
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
854
854
  description?: string | undefined;
855
855
  label?: string | undefined;
856
+ aliases?: string[] | undefined;
856
857
  labelPlural?: string | undefined;
857
858
  formatter?: string | undefined;
858
859
  transforms?: string | undefined;
859
860
  parser?: string | undefined;
860
- aliases?: string[] | undefined;
861
861
  typeModifier?: string | undefined;
862
862
  } | undefined;
863
863
  hasChildren?: boolean | undefined;
@@ -885,14 +885,15 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
885
885
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
886
886
  description?: string | undefined;
887
887
  label?: string | undefined;
888
+ aliases?: string[] | undefined;
888
889
  labelPlural?: string | undefined;
889
890
  formatter?: string | undefined;
890
891
  transforms?: string | undefined;
891
892
  parser?: string | undefined;
892
- aliases?: string[] | undefined;
893
893
  typeModifier?: string | undefined;
894
894
  } | undefined;
895
895
  }[];
896
+ hasChildren?: boolean | undefined;
896
897
  isDistribution?: boolean | undefined;
897
898
  isTree?: boolean | undefined;
898
899
  valuesAreExpressions?: boolean | undefined;
@@ -915,15 +916,14 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
915
916
  eTypeModifier: import("@sinequa/core/web-services").EngineTypeModifier;
916
917
  description?: string | undefined;
917
918
  label?: string | undefined;
919
+ aliases?: string[] | undefined;
918
920
  labelPlural?: string | undefined;
919
921
  formatter?: string | undefined;
920
922
  transforms?: string | undefined;
921
923
  parser?: string | undefined;
922
- aliases?: string[] | undefined;
923
924
  typeModifier?: string | undefined;
924
925
  } | undefined;
925
926
  $hasMore?: boolean | undefined;
926
- hasChildren?: boolean | undefined;
927
927
  }>;
928
928
  }>;
929
929
  principalService: PrincipalWebService;
@@ -974,6 +974,7 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
974
974
  title: string;
975
975
  text: string;
976
976
  size: number;
977
+ version: string;
977
978
  $selected: boolean;
978
979
  matchlocations: string[];
979
980
  rank: number;
@@ -989,7 +990,6 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
989
990
  documentweight: string;
990
991
  modified: string;
991
992
  indexationtime: string;
992
- version: string;
993
993
  treepath: string[];
994
994
  fileext: string;
995
995
  flags: string[];
@@ -1046,10 +1046,7 @@ export declare class ChatComponent extends AbstractFacet implements OnInit, OnCh
1046
1046
  average: number;
1047
1047
  imageAction: import("@sinequa/core/web-services").RFMDisplay;
1048
1048
  availableActions: import("@sinequa/core/web-services").RFMDisplay;
1049
- } | undefined; /**
1050
- * To remove the handler for onreconnected() after it's been registered,cannot directly use off() like you would for normal events registered with connection.on().
1051
- * Instead, you need to explicitly remove or reset the handler by assigning it to null or an empty function
1052
- */
1049
+ } | undefined;
1053
1050
  important?: {
1054
1051
  image: import("@sinequa/core/web-services").RFMDisplay;
1055
1052
  status: import("@sinequa/core/web-services").RFMDisplay;
package/chat/types.d.ts CHANGED
@@ -127,6 +127,7 @@ export declare const connectionSettingsSchema: z.ZodEffects<z.ZodObject<{
127
127
  connectionErrorMessage: z.ZodString;
128
128
  restEndpoint: z.ZodOptional<z.ZodString>;
129
129
  websocketEndpoint: z.ZodOptional<z.ZodString>;
130
+ signalRSkipNegotiation: z.ZodOptional<z.ZodBoolean>;
130
131
  signalRTransport: z.ZodEnum<["WebSockets", "ServerSentEvents", "LongPolling", "None"]>;
131
132
  signalRLogLevel: z.ZodEnum<["Critical", "Debug", "Error", "Information", "None", "Trace", "Warning"]>;
132
133
  signalRServerTimeoutInMilliseconds: z.ZodOptional<z.ZodNumber>;
@@ -136,6 +137,7 @@ export declare const connectionSettingsSchema: z.ZodEffects<z.ZodObject<{
136
137
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
137
138
  restEndpoint?: string | undefined;
138
139
  websocketEndpoint?: string | undefined;
140
+ signalRSkipNegotiation?: boolean | undefined;
139
141
  signalRServerTimeoutInMilliseconds?: number | undefined;
140
142
  }, {
141
143
  connectionErrorMessage: string;
@@ -143,6 +145,7 @@ export declare const connectionSettingsSchema: z.ZodEffects<z.ZodObject<{
143
145
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
144
146
  restEndpoint?: string | undefined;
145
147
  websocketEndpoint?: string | undefined;
148
+ signalRSkipNegotiation?: boolean | undefined;
146
149
  signalRServerTimeoutInMilliseconds?: number | undefined;
147
150
  }>, {
148
151
  connectionErrorMessage: string;
@@ -150,6 +153,7 @@ export declare const connectionSettingsSchema: z.ZodEffects<z.ZodObject<{
150
153
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
151
154
  restEndpoint?: string | undefined;
152
155
  websocketEndpoint?: string | undefined;
156
+ signalRSkipNegotiation?: boolean | undefined;
153
157
  signalRServerTimeoutInMilliseconds?: number | undefined;
154
158
  }, {
155
159
  connectionErrorMessage: string;
@@ -157,6 +161,7 @@ export declare const connectionSettingsSchema: z.ZodEffects<z.ZodObject<{
157
161
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
158
162
  restEndpoint?: string | undefined;
159
163
  websocketEndpoint?: string | undefined;
164
+ signalRSkipNegotiation?: boolean | undefined;
160
165
  signalRServerTimeoutInMilliseconds?: number | undefined;
161
166
  }>;
162
167
  export declare type ConnectionSettings = z.infer<typeof connectionSettingsSchema>;
@@ -378,6 +383,7 @@ export declare const chatConfigSchema: z.ZodObject<{
378
383
  connectionErrorMessage: z.ZodString;
379
384
  restEndpoint: z.ZodOptional<z.ZodString>;
380
385
  websocketEndpoint: z.ZodOptional<z.ZodString>;
386
+ signalRSkipNegotiation: z.ZodOptional<z.ZodBoolean>;
381
387
  signalRTransport: z.ZodEnum<["WebSockets", "ServerSentEvents", "LongPolling", "None"]>;
382
388
  signalRLogLevel: z.ZodEnum<["Critical", "Debug", "Error", "Information", "None", "Trace", "Warning"]>;
383
389
  signalRServerTimeoutInMilliseconds: z.ZodOptional<z.ZodNumber>;
@@ -387,6 +393,7 @@ export declare const chatConfigSchema: z.ZodObject<{
387
393
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
388
394
  restEndpoint?: string | undefined;
389
395
  websocketEndpoint?: string | undefined;
396
+ signalRSkipNegotiation?: boolean | undefined;
390
397
  signalRServerTimeoutInMilliseconds?: number | undefined;
391
398
  }, {
392
399
  connectionErrorMessage: string;
@@ -394,6 +401,7 @@ export declare const chatConfigSchema: z.ZodObject<{
394
401
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
395
402
  restEndpoint?: string | undefined;
396
403
  websocketEndpoint?: string | undefined;
404
+ signalRSkipNegotiation?: boolean | undefined;
397
405
  signalRServerTimeoutInMilliseconds?: number | undefined;
398
406
  }>, {
399
407
  connectionErrorMessage: string;
@@ -401,6 +409,7 @@ export declare const chatConfigSchema: z.ZodObject<{
401
409
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
402
410
  restEndpoint?: string | undefined;
403
411
  websocketEndpoint?: string | undefined;
412
+ signalRSkipNegotiation?: boolean | undefined;
404
413
  signalRServerTimeoutInMilliseconds?: number | undefined;
405
414
  }, {
406
415
  connectionErrorMessage: string;
@@ -408,6 +417,7 @@ export declare const chatConfigSchema: z.ZodObject<{
408
417
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
409
418
  restEndpoint?: string | undefined;
410
419
  websocketEndpoint?: string | undefined;
420
+ signalRSkipNegotiation?: boolean | undefined;
411
421
  signalRServerTimeoutInMilliseconds?: number | undefined;
412
422
  }>;
413
423
  defaultValues: z.ZodObject<{
@@ -622,6 +632,7 @@ export declare const chatConfigSchema: z.ZodObject<{
622
632
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
623
633
  restEndpoint?: string | undefined;
624
634
  websocketEndpoint?: string | undefined;
635
+ signalRSkipNegotiation?: boolean | undefined;
625
636
  signalRServerTimeoutInMilliseconds?: number | undefined;
626
637
  };
627
638
  defaultValues: {
@@ -687,6 +698,7 @@ export declare const chatConfigSchema: z.ZodObject<{
687
698
  signalRLogLevel: "None" | "Critical" | "Debug" | "Error" | "Information" | "Trace" | "Warning";
688
699
  restEndpoint?: string | undefined;
689
700
  websocketEndpoint?: string | undefined;
701
+ signalRSkipNegotiation?: boolean | undefined;
690
702
  signalRServerTimeoutInMilliseconds?: number | undefined;
691
703
  };
692
704
  defaultValues: {
@@ -4,6 +4,7 @@ export const connectionSettingsSchema = z.object({
4
4
  connectionErrorMessage: z.string(),
5
5
  restEndpoint: z.string().optional(),
6
6
  websocketEndpoint: z.string().optional(),
7
+ signalRSkipNegotiation: z.boolean().optional(),
7
8
  signalRTransport: z.enum(["WebSockets", "ServerSentEvents", "LongPolling", "None"]),
8
9
  signalRLogLevel: z.enum(["Critical", "Debug", "Error", "Information", "None", "Trace", "Warning"]),
9
10
  signalRServerTimeoutInMilliseconds: z.number().optional()
@@ -109,4 +110,4 @@ export const chatConfigSchema = z.object({
109
110
  additionalServiceSettings: additionalServiceSettingsSchema,
110
111
  additionalWorkflowProperties: additionalWorkflowPropertiesSchema
111
112
  });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBNEl4QixrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2xDLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25DLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDeEMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkYsZUFBZSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRyxrQ0FBa0MsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzFELENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtJQUNuRSxPQUFPLEVBQUUsbU5BQW1OO0NBQzdOLENBQUMsQ0FBQztBQUlILCtEQUErRDtBQUMvRCxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDckMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdEIsUUFBUSxFQUFF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QyxNQUFNLENBQUM7SUFDcEMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNqQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlDLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbkQsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNyRCxDQUFDLENBQUE7QUFFRiw2REFBNkQ7QUFDN0QsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ25DLFVBQVUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUMzQyxDQUFDLENBQUM7QUFJSCxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2QyxrQkFBa0IsRUFBRSx3QkFBd0I7SUFDNUMsYUFBYSxFQUFFLG1CQUFtQjtJQUNsQyxZQUFZLEVBQUUsa0JBQWtCO0lBQ2hDLFVBQVUsRUFBRSxnQkFBZ0I7SUFDNUIsaUJBQWlCLEVBQUUsdUJBQXVCO0lBQzFDLGNBQWMsRUFBRSxvQkFBb0I7SUFDcEMsYUFBYSxFQUFFLG1CQUFtQixDQUFDLFFBQVEsRUFBRTtJQUM3Qyx5QkFBeUIsRUFBRSwrQkFBK0I7SUFDMUQsNEJBQTRCLEVBQUUsa0NBQWtDO0NBQ2pFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuXG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gJ0BzaW5lcXVhL2NvcmUvYXBwLXV0aWxzJztcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gXCJAc2luZXF1YS9jb3JlL3dlYi1zZXJ2aWNlc1wiO1xuXG4vKipcbiAqIEluZGl2aWR1YWwgbWVzc2FnZSBzZW50ICYgcmV0dXJuZWQgYnkgdGhlIENoYXRHUFQgQVBJLlxuICogSWYgdGhpcyBtZXNzYWdlIGlzIGFuIGF0dGFjaG1lbnQsIHdlIGF0dGFjaCB0aGUgbWluaW1hbFxuICogaW5mb3JtYXRpb24gbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoaXMgYXR0YWNobWVudCAoUmF3QXR0YWNobWVudClcbiAqIGFzIHdlbGwgYXMgdGhlIHJlZmVyZW5jZSBpZCBjb21wdXRlZCBhdCB0aGUgbW9tZW50IG9mIHNlbmRpbmdcbiAqIHRoZSBhdHRhY2htZW50IHRvIHRoZSBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF3TWVzc2FnZSB7XG4gIHJvbGU6IHN0cmluZztcbiAgY29udGVudDogc3RyaW5nO1xuICBtZXNzYWdlVHlwZT86ICdDSEFSVCcgfCAnTUFSS0RPV04nXG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55XG4gIH07XG59XG5cbi8qKlxuICogQSBjaGF0IG1lc3NhZ2UgdGhhdCBoYXMgYmVlbiBwcm9jZXNzZWQgdG8gaW5jbHVkZSB0aGUgbWFya2Rvd24tZm9ybWF0dGVkXG4gKiBjb250ZW50IGZvciBkaXNwbGF5LCBhcyB3ZWxsIGFzIGRldGFpbGVkIGF0dGFjaG1lbnQgZGF0YSwgYW5kIG9wdGlvbmFsbHlcbiAqIGEgbGlzdCBvZiB0aGUgcmVmZXJlbmNlcyBleHRyYWN0ZWQgZnJvbSB0aGF0IG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGF0TWVzc2FnZSBleHRlbmRzIFJhd01lc3NhZ2Uge1xuICBhZGRpdGlvbmFsUHJvcGVydGllczoge1xuICAgIGRpc3BsYXk/OiBib29sZWFuO1xuICAgICRwcm9ncmVzcz86IENoYXRQcm9ncmVzc1tdO1xuICAgICRhdHRhY2htZW50PzogQ2hhdENvbnRleHRBdHRhY2htZW50W107XG4gICAgJHN1Z2dlc3RlZEFjdGlvbj86IFN1Z2dlc3RlZEFjdGlvbltdO1xuICAgICRkZWJ1Zz86IERlYnVnTWVzc2FnZVtdO1xuICAgIGZvcmNlZFdvcmtmbG93Pzogc3RyaW5nO1xuICAgIGZvcmNlZFdvcmtmbG93UHJvcGVydGllcz86IGFueTtcbiAgICBxdWVyeT86IFF1ZXJ5O1xuICAgIGlzVXNlcklucHV0PzogYm9vbGVhbjtcbiAgICB1c2FnZU1ldHJpY3M/OiBDaGF0VXNhZ2VNZXRyaWNzO1xuICAgIGFkZGl0aW9uYWxXb3JrZmxvd1Byb3BlcnRpZXM/OiBhbnk7XG4gICAgJGxpa2VkPzogYm9vbGVhbjtcbiAgICAkZGlzbGlrZWQ/OiBib29sZWFuO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0UHJvZ3Jlc3Mge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgY29udGVudD86IHN0cmluZztcbiAgICBkb25lPzogYm9vbGVhbjtcbiAgICB0aW1lPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0F0dGFjaG1lbnQge1xuICAvKiogVHlwZSBvZiB0aGUgYXR0YWNobWVudCAqL1xuICB0eXBlOiBzdHJpbmc7XG4gIC8qKiBSZWNvcmQgaWQgZnJvbSB3aGljaCB0aGlzIGF0dGFjaG1lbnQgaXMgdGFrZW4gKi9cbiAgcmVjb3JkSWQ6IHN0cmluZztcbiAgLyoqIFJlY29yZCBmcm9tIHdoaWNoIHRoaXMgdGhpcyBhdHRhY2htZW50IGlzIHRha2VuICovXG4gIHJlY29yZDogUmVjb3JkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50UGFydCB7XG4gIHBhcnRJZDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29udGV4dEF0dGFjaG1lbnQgZXh0ZW5kcyBSYXdBdHRhY2htZW50IHtcbiAgLyoqIFR5cGUgb2YgdGhlIGF0dGFjaG1lbnQgKi9cbiAgdHlwZTogXCJDb250ZXh0XCI7XG4gIC8qKiBSYW5rIG9mIHRoZSBhdHRhY2htZW50IGluIHRoZSBjb250ZXh0IG1lc3NhZ2UgKi9cbiAgY29udGV4dElkOiBudW1iZXI7XG4gIC8qKiBQYXJ0cyBvZiB0aGUgcmVjb3JkIHRoYXQgdGhlIGFzc2lzdGFudCB1c2VzIHRvIGFuc3dlciAqL1xuICBwYXJ0czogRG9jdW1lbnRQYXJ0W107XG4gIC8qKiBUaGUgc3BlY2lmaWMgaWQgdXNlZCBvZiB0aGUgcmVmZXJlbmNlZCBwYXJ0ICovXG4gICRwYXJ0SWQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmF3IHJlc3BvbnNlIG9mIHRoZSBjaGF0IEFQSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJhd1Jlc3BvbnNlIHtcbiAgaGlzdG9yeTogUmF3TWVzc2FnZVtdO1xuICBleGVjdXRpb25UaW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRW5yaWNoZWQgcmVzcG9uc2Ugb2YgdGhlIGNoYXQgQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFJlc3BvbnNlIGV4dGVuZHMgUmF3UmVzcG9uc2V7XG4gIGhpc3Rvcnk6IENoYXRNZXNzYWdlW107XG59XG5cbi8qKlxuICogUmVzcG9uc2Ugb2YgdGhlIExpc3RNb2RlbHMgQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2xsbU1vZGVsRGVzY3JpcHRpb24ge1xuICBwcm92aWRlcjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNlcnZpY2VJZDogc3RyaW5nO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIGVuYWJsZTogYm9vbGVhbjtcbiAgbWF4R2VuZXJhdGlvblNpemU6IG51bWJlcjtcbiAgY29udGV4dFdpbmRvd1NpemU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBvZiB0aGUgTGlzdEZ1bmN0aW9ucyBBUElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbGxtRnVuY3Rpb24ge1xuICBmdW5jdGlvbk5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgcGFyYW1ldGVyczogR2xsbUZ1bmN0aW9uUGFyYW1ldGVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xsbUZ1bmN0aW9uUGFyYW1ldGVyIHtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaXNSZXF1aXJlZDogYm9vbGVhbjtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWluaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIHNhdmVkIGNoYXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYXZlZENoYXQge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBtb2RpZmllZFVUQzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERhdGEgc3RydWN0dXJlIHNhdmVkIHRvIHJlY29uc3RydWN0IGEgc2F2ZWQgY2hhdCBjb252ZXJzYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYXZlZENoYXRIaXN0b3J5IGV4dGVuZHMgU2F2ZWRDaGF0e1xuICBoaXN0b3J5OiBDaGF0TWVzc2FnZVtdO1xufVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGNvbm5lY3Rpb25TZXR0aW5ncyBvYmplY3RcbmV4cG9ydCBjb25zdCBjb25uZWN0aW9uU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNvbm5lY3Rpb25FcnJvck1lc3NhZ2U6IHouc3RyaW5nKCksXG4gIHJlc3RFbmRwb2ludDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB3ZWJzb2NrZXRFbmRwb2ludDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzaWduYWxSVHJhbnNwb3J0OiB6LmVudW0oW1wiV2ViU29ja2V0c1wiLCBcIlNlcnZlclNlbnRFdmVudHNcIiwgXCJMb25nUG9sbGluZ1wiLCBcIk5vbmVcIl0pLFxuICBzaWduYWxSTG9nTGV2ZWw6IHouZW51bShbXCJDcml0aWNhbFwiLCBcIkRlYnVnXCIsIFwiRXJyb3JcIiwgXCJJbmZvcm1hdGlvblwiLCBcIk5vbmVcIiwgXCJUcmFjZVwiLCBcIldhcm5pbmdcIl0pLFxuICBzaWduYWxSU2VydmVyVGltZW91dEluTWlsbGlzZWNvbmRzOiB6Lm51bWJlcigpLm9wdGlvbmFsKClcbn0pLnJlZmluZShkYXRhID0+ICghIWRhdGEucmVzdEVuZHBvaW50IHx8ICEhZGF0YS53ZWJzb2NrZXRFbmRwb2ludCksIHtcbiAgbWVzc2FnZTogXCJCYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5wdXQoKSBwcm90b2NvbCAoJ1JFU1QnIG9yICdXRUJTT0NLRVQnKSB0byB0aGUgQ2hhdCBDb21wb25lbnQsIGVpdGhlciAncmVzdEVuZHBvaW50JyBvciAnd2Vic29ja2V0RW5kcG9pbnQnIHByb3BlcnR5IHNob3VsZCBiZSBwcm92aWRlZCBpbiB0aGUgJ2dsb2JhbFNldHRpbmdzJyBvZiB0aGUgYXNzaXN0YW50IGluc3RhbmNlLlwiLFxufSk7XG4vLyBEZWZpbmUgdGhlIENvbm5lY3Rpb25TZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIENvbm5lY3Rpb25TZXR0aW5ncyA9IHouaW5mZXI8dHlwZW9mIGNvbm5lY3Rpb25TZXR0aW5nc1NjaGVtYT47XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgc2VydmljZVNldHRpbmdzIG9iamVjdFxuY29uc3Qgc2VydmljZVNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBzZXJ2aWNlX2lkOiB6LnN0cmluZygpLFxuICBtb2RlbF9pZDogei5zdHJpbmcoKSxcbiAgdGVtcGVyYXR1cmU6IHoubnVtYmVyKCksXG4gIHRvcF9wOiB6Lm51bWJlcigpLFxuICBtYXhfdG9rZW5zOiB6Lm51bWJlcigpXG59KTtcbi8vIERlZmluZSB0aGUgU2VydmljZVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlU2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBzZXJ2aWNlU2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5ncyBvYmplY3RcbmNvbnN0IGFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7fSk7XG4vLyBEZWZpbmUgdGhlIEFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBhZGRpdGlvbmFsU2VydmljZVNldHRpbmdzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGFkZGl0aW9uYWxXb3JrZmxvd1Byb3BlcnRpZXMgb2JqZWN0XG5jb25zdCBhZGRpdGlvbmFsV29ya2Zsb3dQcm9wZXJ0aWVzU2NoZW1hID0gei5vYmplY3Qoe30pO1xuLy8gRGVmaW5lIHRoZSBhZGRpdGlvbmFsV29ya2Zsb3dQcm9wZXJ0aWVzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBhZGRpdGlvbmFsV29ya2Zsb3dQcm9wZXJ0aWVzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgYWRkaXRpb25hbFdvcmtmbG93UHJvcGVydGllc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSB1aVNldHRpbmdzIG9iamVjdFxuY29uc3QgdWlTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZGlzcGxheTogei5ib29sZWFuKCksXG4gIHNlcnZpY2VzTW9kZWxzOiB6LmJvb2xlYW4oKSxcbiAgZnVuY3Rpb25zOiB6LmJvb2xlYW4oKSxcbiAgdGVtcGVyYXR1cmU6IHouYm9vbGVhbigpLFxuICB0b3BfcDogei5ib29sZWFuKCksXG4gIG1heF90b2tlbnM6IHouYm9vbGVhbigpLFxuICBkZWJ1Zzogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZGlzcGxheVN5c3RlbVByb21wdDogei5ib29sZWFuKCksXG4gIGRpc3BsYXlVc2VyUHJvbXB0OiB6LmJvb2xlYW4oKVxufSk7XG4vLyBEZWZpbmUgdGhlIFVpU2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFVpU2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiB1aVNldHRpbmdzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGRlZmF1bHRWYWx1ZXMgb2JqZWN0XG5jb25zdCBkZWZhdWx0VmFsdWVzU2NoZW1hID0gei5vYmplY3Qoe1xuICBzZXJ2aWNlX2lkOiB6LnN0cmluZygpLFxuICBtb2RlbF9pZDogei5zdHJpbmcoKSxcbiAgZnVuY3Rpb25zOiB6LmFycmF5KFxuICAgIHoub2JqZWN0KHtcbiAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICBlbmFibGVkOiB6LmJvb2xlYW4oKVxuICAgIH0pXG4gICksXG4gIHRlbXBlcmF0dXJlOiB6Lm51bWJlcigpLFxuICB0b3BfcDogei5udW1iZXIoKSxcbiAgbWF4X3Rva2Vuczogei5udW1iZXIoKSxcbiAgZGVidWc6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHN5c3RlbVByb21wdDogei5zdHJpbmcoKSxcbiAgdXNlclByb21wdDogei5zdHJpbmcoKVxufSk7XG4vLyBEZWZpbmUgdGhlIERlZmF1bHRWYWx1ZXMgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRWYWx1ZXMgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBkZWZhdWx0VmFsdWVzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGFjdGlvbiBvYmplY3RcbmNvbnN0IGFjdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZm9yY2VkV29ya2Zsb3c6IHouc3RyaW5nKCksIC8vIGZvcmNlZFdvcmtmbG93IG11c3QgYmUgYSBzdHJpbmdcbiAgZm9yY2VkV29ya2Zsb3dQcm9wZXJ0aWVzOiB6LnJlY29yZCh6LnVua25vd24oKSkub3B0aW9uYWwoKSAvLyBmb3JjZWRXb3JrZmxvd1Byb3BlcnRpZXMgbXVzdCBiZSBhbiBvYmplY3QgKE1hcCBlcXVpdmFsZW50KVxufSk7XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgbW9kZVNldHRpbmdzIG9iamVjdFxuY29uc3QgaW5pdGlhbGl6YXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGV2ZW50OiB6LmVudW0oWydRdWVyeScsICdQcm9tcHQnXSksXG4gIGZvcmNlZFdvcmtmbG93OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZvcmNlZEZ1bmN0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRpc3BsYXlVc2VyUXVlcnk6IHouYm9vbGVhbigpLm9wdGlvbmFsKClcbn0pXG4vLyDinYwgUnVsZSAxOiBDYW5ub3QgaGF2ZSBib3RoIGZvcmNlZFdvcmtmbG93IGFuZCBmb3JjZWRGdW5jdGlvblxuLnJlZmluZShkYXRhID0+IChkYXRhLmV2ZW50ICE9PSBcIlF1ZXJ5XCIpIHx8ICEoZGF0YS5mb3JjZWRXb3JrZmxvdyAmJiBkYXRhLmZvcmNlZEZ1bmN0aW9uKSwge1xuICBtZXNzYWdlOiBcIkJvdGggJ2ZvcmNlZEZ1bmN0aW9uJyBhbmQgJ2ZvcmNlZFdvcmtmbG93JyBwcm9wZXJ0aWVzIGFyZSBzZXQsIGJ1dCB0aGV5IHNob3VsZCBub3QuXCIsXG59KVxuLy8g4p2MIFJ1bGUgMjogTXVzdCBoYXZlIG9uZSBvZiBmb3JjZWRXb3JrZmxvdyBvciBmb3JjZWRGdW5jdGlvbiB3aGVuIGV2ZW50IGlzICdRdWVyeSdcbi5yZWZpbmUoZGF0YSA9PiAoZGF0YS5ldmVudCAhPT0gXCJRdWVyeVwiKSB8fCAhIWRhdGEuZm9yY2VkV29ya2Zsb3cgfHwgISFkYXRhLmZvcmNlZEZ1bmN0aW9uLCB7XG4gIG1lc3NhZ2U6IFwiT25lIG9mICdmb3JjZWRXb3JrZmxvdycgb3IgJ2ZvcmNlZEZ1bmN0aW9uJyBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gdGhlIGluaXRpYWxpemF0aW9uJ3MgZXZlbnQgaXMgJ1F1ZXJ5Jy5cIlxufSlcbi8vIOKdjCBSdWxlIDM6IE11c3QgaGF2ZSBkaXNwbGF5VXNlclF1ZXJ5IHNldCB3aGVuIGV2ZW50IGlzICdRdWVyeSdcbi5yZWZpbmUoZGF0YSA9PiAoZGF0YS5ldmVudCAhPT0gXCJRdWVyeVwiKSB8fCAoZGF0YS5kaXNwbGF5VXNlclF1ZXJ5ICE9PSB1bmRlZmluZWQgJiYgZGF0YS5kaXNwbGF5VXNlclF1ZXJ5ICE9PSBudWxsKSwge1xuICBtZXNzYWdlOiBcIidkaXNwbGF5VXNlclF1ZXJ5JyBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gdGhlIGluaXRpYWxpemF0aW9uJ3MgZXZlbnQgaXMgJ1F1ZXJ5Jy5cIlxufSk7XG5cbmNvbnN0IG1vZGVTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZW5hYmxlZFVzZXJJbnB1dDogei5ib29sZWFuKCksXG4gIGRpc3BsYXlVc2VyUHJvbXB0OiB6LmJvb2xlYW4oKSxcbiAgc2VuZFVzZXJQcm9tcHQ6IHouYm9vbGVhbigpLFxuICBpbml0aWFsaXphdGlvbjogaW5pdGlhbGl6YXRpb25TY2hlbWEsXG4gIGFjdGlvbnM6IHoucmVjb3JkKGFjdGlvblNjaGVtYSkub3B0aW9uYWwoKVxufSk7XG4vLyBEZWZpbmUgdGhlIE1vZGVTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgTW9kZVNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgbW9kZVNldHRpbmdzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHNhdmVkQ2hhdFNldHRpbmdzIG9iamVjdFxuY29uc3Qgc2F2ZWRDaGF0U2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVuYWJsZWQ6IHouYm9vbGVhbigpLFxuICBkaXNwbGF5OiB6LmJvb2xlYW4oKVxufSlcbi8vIERlZmluZSB0aGUgU2F2ZWRDaGF0U2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFNhdmVkQ2hhdFNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2Ygc2F2ZWRDaGF0U2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZ2xvYmFsU2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBnbG9iYWxTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgc2VhcmNoV2FybmluZ01lc3NhZ2U6IHouc3RyaW5nKCksXG4gIGRpc2NsYWltZXI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZ2VuZXJpY0NoYXRFcnJvck1lc3NhZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGlzcGxheVVzZXJRdW90YUNvbnN1bXB0aW9uOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBkaXNwbGF5Q2hhdFRva2Vuc0NvbnN1bXB0aW9uOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpXG59KVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGF1ZGl0U2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBhdWRpdFNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBpc3N1ZVR5cGVzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKClcbn0pO1xuLy8gRGVmaW5lIHRoZSBTYXZlZENoYXRTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRDaGF0U2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBlbnRpcmUgQ2hhdENvbmZpZyBvYmplY3RcbmV4cG9ydCBjb25zdCBjaGF0Q29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICBjb25uZWN0aW9uU2V0dGluZ3M6IGNvbm5lY3Rpb25TZXR0aW5nc1NjaGVtYSxcbiAgZGVmYXVsdFZhbHVlczogZGVmYXVsdFZhbHVlc1NjaGVtYSxcbiAgbW9kZVNldHRpbmdzOiBtb2RlU2V0dGluZ3NTY2hlbWEsXG4gIHVpU2V0dGluZ3M6IHVpU2V0dGluZ3NTY2hlbWEsXG4gIHNhdmVkQ2hhdFNldHRpbmdzOiBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYSxcbiAgZ2xvYmFsU2V0dGluZ3M6IGdsb2JhbFNldHRpbmdzU2NoZW1hLFxuICBhdWRpdFNldHRpbmdzOiBhdWRpdFNldHRpbmdzU2NoZW1hLm9wdGlvbmFsKCksXG4gIGFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3M6IGFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3NTY2hlbWEsXG4gIGFkZGl0aW9uYWxXb3JrZmxvd1Byb3BlcnRpZXM6IGFkZGl0aW9uYWxXb3JrZmxvd1Byb3BlcnRpZXNTY2hlbWFcbn0pO1xuLy8gRGVmaW5lIHRoZSBDaGF0Q29uZmlnIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29uZmlnIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgY2hhdENvbmZpZ1NjaGVtYT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0UGF5bG9hZCB7XG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgZnVuY3Rpb25zOiBzdHJpbmdbXTtcbiAgaGlzdG9yeTogQ2hhdE1lc3NhZ2VbXTtcbiAgc2VydmljZVNldHRpbmdzOiBTZXJ2aWNlU2V0dGluZ3M7XG4gIGFwcFF1ZXJ5OiB7XG4gICAgYXBwOiBzdHJpbmc7XG4gICAgcXVlcnk6IFF1ZXJ5IHwgdW5kZWZpbmVkO1xuICAgIHRhcmdldFVybD86IHN0cmluZztcbiAgICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgfTtcbiAgaW5zdGFuY2VJZD86IHN0cmluZztcbiAgc2F2ZWRDaGF0SWQ/OiBzdHJpbmc7XG4gIGdlbmVyaWNDaGF0RXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBY3Rpb25NZXNzYWdlID0ge1xuICBndWlkOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nXG4gIGRpc3BsYXlWYWx1ZT86IHN0cmluZztcbiAgZXhlY3V0aW9uVGltZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXh0Q2h1bmtzT3B0aW9ucyB7XG4gIGV4dGVuZE1vZGU/OiAnTm9uZScgfCAnU2VudGVuY2UnIHwgJ0NoYXJzJztcbiAgZXh0ZW5kU2NvcGU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGEge1xuICBsYXN0UmVxdWVzdDogc3RyaW5nO1xuICBwcm9tcHRUb2tlbkNvdW50OiBudW1iZXI7XG4gIGNvbXBsZXRpb25Ub2tlbkNvdW50OiBudW1iZXI7XG4gIHBlcmlvZFRva2VuczogbnVtYmVyO1xuICByZXNldEhvdXJzOiBudW1iZXI7XG4gIHRva2VuQ291bnQ6IG51bWJlcjtcbiAgbmV4dFJlc2V0OiBzdHJpbmc7XG4gIGxhc3RSZXNldFVUQzogc3RyaW5nO1xuICBuZXh0UmVzZXRVVEM6IHN0cmluZztcbiAgbWF4UXVvdGFSZWFjaGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3RlZEFjdGlvbiB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRDaGF0IHtcbiAgbWVzc2FnZXM6IFJhd01lc3NhZ2VbXTtcbn1cblxuLyoqXG4gKiBMaXN0IG9mIGV2ZW50cyBkYXRhIHRoYXQgY2FuIGJlIGVtaXR0ZWQgYnkgdGhlIHdlYnNvY2tldCBjaGF0IGVuZHBvaW50XG4gKi9cbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZEFjdGlvbnNFdmVudCA9IHsgc3VnZ2VzdGVkQWN0aW9uczogU3VnZ2VzdGVkQWN0aW9uW10gfTtcbmV4cG9ydCB0eXBlIFF1b3RhRXZlbnQgPSB7IHF1b3RhOiBRdW90YSB9O1xuZXhwb3J0IHR5cGUgTWVzc2FnZUV2ZW50ID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQ29udGV4dE1lc3NhZ2VFdmVudCA9IHsgY29udGVudDogc3RyaW5nOyBtZXRhZGF0YTogQ2hhdENvbnRleHRBdHRhY2htZW50IH07XG5leHBvcnQgdHlwZSBFcnJvckV2ZW50ID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQWN0aW9uU3RhcnRFdmVudCA9IHsgZ3VpZDogc3RyaW5nOyBkaXNwbGF5TmFtZTogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBBY3Rpb25SZXN1bHRFdmVudCA9IHsgZ3VpZDogc3RyaW5nOyBkaXNwbGF5VmFsdWU6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgQWN0aW9uU3RvcEV2ZW50ID0geyBndWlkOiBzdHJpbmc7IGV4ZWN1dGlvblRpbWU6IG51bWJlciB9O1xuZXhwb3J0IHR5cGUgSGlzdG9yeUV2ZW50ID0geyBoaXN0b3J5OiBSYXdNZXNzYWdlW107IGV4ZWN1dGlvblRpbWU6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgRGVidWdNZXNzYWdlRXZlbnQgPSBEZWJ1Z01lc3NhZ2U7XG5cbi8qKlxuICogRGF0YSBlbWl0dGVkIGJ5IHRoZSBodHRwIGNoYXQgZW5kcG9pbnRcbiAqL1xuZXhwb3J0IHR5cGUgSHR0cENoYXRSZXNwb25zZSA9IHtcbiAgcXVvdGE6IFF1b3RhO1xuICBzdWdnZXN0ZWRBY3Rpb25zOiBTdWdnZXN0ZWRBY3Rpb25bXTtcbiAgZGVidWc6IGFueTtcbiAgY29udGV4dDogeyBjb250ZW50OiBzdHJpbmc7IGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBDaGF0Q29udGV4dEF0dGFjaG1lbnQgfVtdO1xuICBhY3Rpb25zOiBBY3Rpb25NZXNzYWdlW107XG4gIGhpc3Rvcnk6IFJhd01lc3NhZ2VbXTtcbiAgZXhlY3V0aW9uVGltZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuQ29uc3VtcHRpb24ge1xuICBwZXJjZW50YWdlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclRva2VuQ29uc3VtcHRpb24gZXh0ZW5kcyBUb2tlbkNvbnN1bXB0aW9uIHtcbiAgbmV4dFJlc2V0RGF0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRVc2FnZU1ldHJpY3Mge1xuICB0b3RhbFRva2VuQ291bnQ6IG51bWJlcjtcbiAgcHJvbXB0VG9rZW5Db3VudDogbnVtYmVyO1xuICBjb21wbGV0aW9uVG9rZW5Db3VudDogbnVtYmVyO1xuICB0b2tlbml6ZXJUeXBlOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLdk9iamVjdCB7XG4gIGRhdGE6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogYW55OyAvLyBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCB8IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIH07XG4gIHR5cGU6ICdLVic7XG4gIGlzRXJyb3I6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdE9iamVjdCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogJ0xJU1QnO1xuICBpc0Vycm9yOiBib29sZWFuO1xuICBpdGVtczogKEt2T2JqZWN0IHwgTGlzdE9iamVjdClbXTtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIERlYnVnTWVzc2FnZSA9IEt2T2JqZWN0IHwgTGlzdE9iamVjdDtcblxuXG5leHBvcnQgdHlwZSBNZXNzYWdlSGFuZGxlcjxUPiA9IHtcbiAgaGFuZGxlcjogKGRhdGE6IFQpID0+IHZvaWQ7XG4gIGlzR2xvYmFsSGFuZGxlcjogYm9vbGVhbjtcbn07XG5cbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBNEl4QixrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2xDLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25DLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDeEMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRixlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xHLGtDQUFrQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDMUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO0lBQ25FLE9BQU8sRUFBRSxtTkFBbU47Q0FDN04sQ0FBQyxDQUFDO0FBSUgsK0RBQStEO0FBQy9ELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FB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Q0FBQyxDQUFBO0FBSUYsOERBQThEO0FBQzlELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hDLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2pDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUMsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuRCw0QkFBNEIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3JELENBQUMsQ0FBQTtBQUVGLDZEQUE2RDtBQUM3RCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0NBQzNDLENBQUMsQ0FBQztBQUlILGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLGtCQUFrQixFQUFFLHdCQUF3QjtJQUM1QyxhQUFhLEVBQUUsbUJBQW1CO0lBQ2xDLFlBQVksRUFBRSxrQkFBa0I7SUFDaEMsVUFBVSxFQUFFLGdCQUFnQjtJQUM1QixpQkFBaUIsRUFBRSx1QkFBdUI7SUFDMUMsY0FBYyxFQUFFLG9CQUFvQjtJQUNwQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxFQUFFO0lBQzdDLHlCQUF5QixFQUFFLCtCQUErQjtJQUMxRCw0QkFBNEIsRUFBRSxrQ0FBa0M7Q0FDakUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnQHNpbmVxdWEvY29yZS9hcHAtdXRpbHMnO1xuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvd2ViLXNlcnZpY2VzXCI7XG5cbi8qKlxuICogSW5kaXZpZHVhbCBtZXNzYWdlIHNlbnQgJiByZXR1cm5lZCBieSB0aGUgQ2hhdEdQVCBBUEkuXG4gKiBJZiB0aGlzIG1lc3NhZ2UgaXMgYW4gYXR0YWNobWVudCwgd2UgYXR0YWNoIHRoZSBtaW5pbWFsXG4gKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhpcyBhdHRhY2htZW50IChSYXdBdHRhY2htZW50KVxuICogYXMgd2VsbCBhcyB0aGUgcmVmZXJlbmNlIGlkIGNvbXB1dGVkIGF0IHRoZSBtb21lbnQgb2Ygc2VuZGluZ1xuICogdGhlIGF0dGFjaG1lbnQgdG8gdGhlIEFQSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXdNZXNzYWdlIHtcbiAgcm9sZTogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIG1lc3NhZ2VUeXBlPzogJ0NIQVJUJyB8ICdNQVJLRE9XTidcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcbiAgfTtcbn1cblxuLyoqXG4gKiBBIGNoYXQgbWVzc2FnZSB0aGF0IGhhcyBiZWVuIHByb2Nlc3NlZCB0byBpbmNsdWRlIHRoZSBtYXJrZG93bi1mb3JtYXR0ZWRcbiAqIGNvbnRlbnQgZm9yIGRpc3BsYXksIGFzIHdlbGwgYXMgZGV0YWlsZWQgYXR0YWNobWVudCBkYXRhLCBhbmQgb3B0aW9uYWxseVxuICogYSBsaXN0IG9mIHRoZSByZWZlcmVuY2VzIGV4dHJhY3RlZCBmcm9tIHRoYXQgbWVzc2FnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYXRNZXNzYWdlIGV4dGVuZHMgUmF3TWVzc2FnZSB7XG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7XG4gICAgZGlzcGxheT86IGJvb2xlYW47XG4gICAgJHByb2dyZXNzPzogQ2hhdFByb2dyZXNzW107XG4gICAgJGF0dGFjaG1lbnQ/OiBDaGF0Q29udGV4dEF0dGFjaG1lbnRbXTtcbiAgICAkc3VnZ2VzdGVkQWN0aW9uPzogU3VnZ2VzdGVkQWN0aW9uW107XG4gICAgJGRlYnVnPzogRGVidWdNZXNzYWdlW107XG4gICAgZm9yY2VkV29ya2Zsb3c/OiBzdHJpbmc7XG4gICAgZm9yY2VkV29ya2Zsb3dQcm9wZXJ0aWVzPzogYW55O1xuICAgIHF1ZXJ5PzogUXVlcnk7XG4gICAgaXNVc2VySW5wdXQ/OiBib29sZWFuO1xuICAgIHVzYWdlTWV0cmljcz86IENoYXRVc2FnZU1ldHJpY3M7XG4gICAgYWRkaXRpb25hbFdvcmtmbG93UHJvcGVydGllcz86IGFueTtcbiAgICAkbGlrZWQ/OiBib29sZWFuO1xuICAgICRkaXNsaWtlZD86IGJvb2xlYW47XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRQcm9ncmVzcyB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBjb250ZW50Pzogc3RyaW5nO1xuICAgIGRvbmU/OiBib29sZWFuO1xuICAgIHRpbWU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF3QXR0YWNobWVudCB7XG4gIC8qKiBUeXBlIG9mIHRoZSBhdHRhY2htZW50ICovXG4gIHR5cGU6IHN0cmluZztcbiAgLyoqIFJlY29yZCBpZCBmcm9tIHdoaWNoIHRoaXMgYXR0YWNobWVudCBpcyB0YWtlbiAqL1xuICByZWNvcmRJZDogc3RyaW5nO1xuICAvKiogUmVjb3JkIGZyb20gd2hpY2ggdGhpcyB0aGlzIGF0dGFjaG1lbnQgaXMgdGFrZW4gKi9cbiAgcmVjb3JkOiBSZWNvcmQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRQYXJ0IHtcbiAgcGFydElkOiBudW1iZXI7XG4gIG9mZnNldDogbnVtYmVyO1xuICBsZW5ndGg6IG51bWJlcjtcbiAgdGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRDb250ZXh0QXR0YWNobWVudCBleHRlbmRzIFJhd0F0dGFjaG1lbnQge1xuICAvKiogVHlwZSBvZiB0aGUgYXR0YWNobWVudCAqL1xuICB0eXBlOiBcIkNvbnRleHRcIjtcbiAgLyoqIFJhbmsgb2YgdGhlIGF0dGFjaG1lbnQgaW4gdGhlIGNvbnRleHQgbWVzc2FnZSAqL1xuICBjb250ZXh0SWQ6IG51bWJlcjtcbiAgLyoqIFBhcnRzIG9mIHRoZSByZWNvcmQgdGhhdCB0aGUgYXNzaXN0YW50IHVzZXMgdG8gYW5zd2VyICovXG4gIHBhcnRzOiBEb2N1bWVudFBhcnRbXTtcbiAgLyoqIFRoZSBzcGVjaWZpYyBpZCB1c2VkIG9mIHRoZSByZWZlcmVuY2VkIHBhcnQgKi9cbiAgJHBhcnRJZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSYXcgcmVzcG9uc2Ugb2YgdGhlIGNoYXQgQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF3UmVzcG9uc2Uge1xuICBoaXN0b3J5OiBSYXdNZXNzYWdlW107XG4gIGV4ZWN1dGlvblRpbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFbnJpY2hlZCByZXNwb25zZSBvZiB0aGUgY2hhdCBBUElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGF0UmVzcG9uc2UgZXh0ZW5kcyBSYXdSZXNwb25zZXtcbiAgaGlzdG9yeTogQ2hhdE1lc3NhZ2VbXTtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBvZiB0aGUgTGlzdE1vZGVscyBBUElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbGxtTW9kZWxEZXNjcmlwdGlvbiB7XG4gIHByb3ZpZGVyOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgc2VydmljZUlkOiBzdHJpbmc7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgZW5hYmxlOiBib29sZWFuO1xuICBtYXhHZW5lcmF0aW9uU2l6ZTogbnVtYmVyO1xuICBjb250ZXh0V2luZG93U2l6ZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIG9mIHRoZSBMaXN0RnVuY3Rpb25zIEFQSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsbG1GdW5jdGlvbiB7XG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBwYXJhbWV0ZXJzOiBHbGxtRnVuY3Rpb25QYXJhbWV0ZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbGxtRnVuY3Rpb25QYXJhbWV0ZXIge1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpc1JlcXVpcmVkOiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNaW5pbWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgc2F2ZWQgY2hhdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhdmVkQ2hhdCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIG1vZGlmaWVkVVRDOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0YSBzdHJ1Y3R1cmUgc2F2ZWQgdG8gcmVjb25zdHJ1Y3QgYSBzYXZlZCBjaGF0IGNvbnZlcnNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhdmVkQ2hhdEhpc3RvcnkgZXh0ZW5kcyBTYXZlZENoYXR7XG4gIGhpc3Rvcnk6IENoYXRNZXNzYWdlW107XG59XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY29ubmVjdGlvblNldHRpbmdzIG9iamVjdFxuZXhwb3J0IGNvbnN0IGNvbm5lY3Rpb25TZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29ubmVjdGlvbkVycm9yTWVzc2FnZTogei5zdHJpbmcoKSxcbiAgcmVzdEVuZHBvaW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHdlYnNvY2tldEVuZHBvaW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHNpZ25hbFJTa2lwTmVnb3RpYXRpb246IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHNpZ25hbFJUcmFuc3BvcnQ6IHouZW51bShbXCJXZWJTb2NrZXRzXCIsIFwiU2VydmVyU2VudEV2ZW50c1wiLCBcIkxvbmdQb2xsaW5nXCIsIFwiTm9uZVwiXSksXG4gIHNpZ25hbFJMb2dMZXZlbDogei5lbnVtKFtcIkNyaXRpY2FsXCIsIFwiRGVidWdcIiwgXCJFcnJvclwiLCBcIkluZm9ybWF0aW9uXCIsIFwiTm9uZVwiLCBcIlRyYWNlXCIsIFwiV2FybmluZ1wiXSksXG4gIHNpZ25hbFJTZXJ2ZXJUaW1lb3V0SW5NaWxsaXNlY29uZHM6IHoubnVtYmVyKCkub3B0aW9uYWwoKVxufSkucmVmaW5lKGRhdGEgPT4gKCEhZGF0YS5yZXN0RW5kcG9pbnQgfHwgISFkYXRhLndlYnNvY2tldEVuZHBvaW50KSwge1xuICBtZXNzYWdlOiBcIkJhc2VkIG9uIHRoZSBwcm92aWRlZCBpbnB1dCgpIHByb3RvY29sICgnUkVTVCcgb3IgJ1dFQlNPQ0tFVCcpIHRvIHRoZSBDaGF0IENvbXBvbmVudCwgZWl0aGVyICdyZXN0RW5kcG9pbnQnIG9yICd3ZWJzb2NrZXRFbmRwb2ludCcgcHJvcGVydHkgc2hvdWxkIGJlIHByb3ZpZGVkIGluIHRoZSAnZ2xvYmFsU2V0dGluZ3MnIG9mIHRoZSBhc3Npc3RhbnQgaW5zdGFuY2UuXCIsXG59KTtcbi8vIERlZmluZSB0aGUgQ29ubmVjdGlvblNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IHR5cGUgQ29ubmVjdGlvblNldHRpbmdzID0gei5pbmZlcjx0eXBlb2YgY29ubmVjdGlvblNldHRpbmdzU2NoZW1hPjtcblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBzZXJ2aWNlU2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBzZXJ2aWNlU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNlcnZpY2VfaWQ6IHouc3RyaW5nKCksXG4gIG1vZGVsX2lkOiB6LnN0cmluZygpLFxuICB0ZW1wZXJhdHVyZTogei5udW1iZXIoKSxcbiAgdG9wX3A6IHoubnVtYmVyKCksXG4gIG1heF90b2tlbnM6IHoubnVtYmVyKClcbn0pO1xuLy8gRGVmaW5lIHRoZSBTZXJ2aWNlU2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VTZXR0aW5ncyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIHNlcnZpY2VTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBhZGRpdGlvbmFsU2VydmljZVNldHRpbmdzIG9iamVjdFxuY29uc3QgYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHt9KTtcbi8vIERlZmluZSB0aGUgQWRkaXRpb25hbFNlcnZpY2VTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgQWRkaXRpb25hbFNlcnZpY2VTZXR0aW5ncyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIGFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgYWRkaXRpb25hbFdvcmtmbG93UHJvcGVydGllcyBvYmplY3RcbmNvbnN0IGFkZGl0aW9uYWxXb3JrZmxvd1Byb3BlcnRpZXNTY2hlbWEgPSB6Lm9iamVjdCh7fSk7XG4vLyBEZWZpbmUgdGhlIGFkZGl0aW9uYWxXb3JrZmxvd1Byb3BlcnRpZXMgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIGFkZGl0aW9uYWxXb3JrZmxvd1Byb3BlcnRpZXMgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBhZGRpdGlvbmFsV29ya2Zsb3dQcm9wZXJ0aWVzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHVpU2V0dGluZ3Mgb2JqZWN0XG5jb25zdCB1aVNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBkaXNwbGF5OiB6LmJvb2xlYW4oKSxcbiAgc2VydmljZXNNb2RlbHM6IHouYm9vbGVhbigpLFxuICBmdW5jdGlvbnM6IHouYm9vbGVhbigpLFxuICB0ZW1wZXJhdHVyZTogei5ib29sZWFuKCksXG4gIHRvcF9wOiB6LmJvb2xlYW4oKSxcbiAgbWF4X3Rva2Vuczogei5ib29sZWFuKCksXG4gIGRlYnVnOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBkaXNwbGF5U3lzdGVtUHJvbXB0OiB6LmJvb2xlYW4oKSxcbiAgZGlzcGxheVVzZXJQcm9tcHQ6IHouYm9vbGVhbigpXG59KTtcbi8vIERlZmluZSB0aGUgVWlTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgVWlTZXR0aW5ncyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIHVpU2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZGVmYXVsdFZhbHVlcyBvYmplY3RcbmNvbnN0IGRlZmF1bHRWYWx1ZXNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNlcnZpY2VfaWQ6IHouc3RyaW5nKCksXG4gIG1vZGVsX2lkOiB6LnN0cmluZygpLFxuICBmdW5jdGlvbnM6IHouYXJyYXkoXG4gICAgei5vYmplY3Qoe1xuICAgICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICAgIGVuYWJsZWQ6IHouYm9vbGVhbigpXG4gICAgfSlcbiAgKSxcbiAgdGVtcGVyYXR1cmU6IHoubnVtYmVyKCksXG4gIHRvcF9wOiB6Lm51bWJlcigpLFxuICBtYXhfdG9rZW5zOiB6Lm51bWJlcigpLFxuICBkZWJ1Zzogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgc3lzdGVtUHJvbXB0OiB6LnN0cmluZygpLFxuICB1c2VyUHJvbXB0OiB6LnN0cmluZygpXG59KTtcbi8vIERlZmluZSB0aGUgRGVmYXVsdFZhbHVlcyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFZhbHVlcyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIGRlZmF1bHRWYWx1ZXNTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgYWN0aW9uIG9iamVjdFxuY29uc3QgYWN0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBmb3JjZWRXb3JrZmxvdzogei5zdHJpbmcoKSwgLy8gZm9yY2VkV29ya2Zsb3cgbXVzdCBiZSBhIHN0cmluZ1xuICBmb3JjZWRXb3JrZmxvd1Byb3BlcnRpZXM6IHoucmVjb3JkKHoudW5rbm93bigpKS5vcHRpb25hbCgpIC8vIGZvcmNlZFdvcmtmbG93UHJvcGVydGllcyBtdXN0IGJlIGFuIG9iamVjdCAoTWFwIGVxdWl2YWxlbnQpXG59KTtcblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBtb2RlU2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBpbml0aWFsaXphdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZXZlbnQ6IHouZW51bShbJ1F1ZXJ5JywgJ1Byb21wdCddKSxcbiAgZm9yY2VkV29ya2Zsb3c6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZm9yY2VkRnVuY3Rpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGlzcGxheVVzZXJRdWVyeTogei5ib29sZWFuKCkub3B0aW9uYWwoKVxufSlcbi8vIOKdjCBSdWxlIDE6IENhbm5vdCBoYXZlIGJvdGggZm9yY2VkV29ya2Zsb3cgYW5kIGZvcmNlZEZ1bmN0aW9uXG4ucmVmaW5lKGRhdGEgPT4gKGRhdGEuZXZlbnQgIT09IFwiUXVlcnlcIikgfHwgIShkYXRhLmZvcmNlZFdvcmtmbG93ICYmIGRhdGEuZm9yY2VkRnVuY3Rpb24pLCB7XG4gIG1lc3NhZ2U6IFwiQm90aCAnZm9yY2VkRnVuY3Rpb24nIGFuZCAnZm9yY2VkV29ya2Zsb3cnIHByb3BlcnRpZXMgYXJlIHNldCwgYnV0IHRoZXkgc2hvdWxkIG5vdC5cIixcbn0pXG4vLyDinYwgUnVsZSAyOiBNdXN0IGhhdmUgb25lIG9mIGZvcmNlZFdvcmtmbG93IG9yIGZvcmNlZEZ1bmN0aW9uIHdoZW4gZXZlbnQgaXMgJ1F1ZXJ5J1xuLnJlZmluZShkYXRhID0+IChkYXRhLmV2ZW50ICE9PSBcIlF1ZXJ5XCIpIHx8ICEhZGF0YS5mb3JjZWRXb3JrZmxvdyB8fCAhIWRhdGEuZm9yY2VkRnVuY3Rpb24sIHtcbiAgbWVzc2FnZTogXCJPbmUgb2YgJ2ZvcmNlZFdvcmtmbG93JyBvciAnZm9yY2VkRnVuY3Rpb24nIG11c3QgYmUgcHJvdmlkZWQgd2hlbiB0aGUgaW5pdGlhbGl6YXRpb24ncyBldmVudCBpcyAnUXVlcnknLlwiXG59KVxuLy8g4p2MIFJ1bGUgMzogTXVzdCBoYXZlIGRpc3BsYXlVc2VyUXVlcnkgc2V0IHdoZW4gZXZlbnQgaXMgJ1F1ZXJ5J1xuLnJlZmluZShkYXRhID0+IChkYXRhLmV2ZW50ICE9PSBcIlF1ZXJ5XCIpIHx8IChkYXRhLmRpc3BsYXlVc2VyUXVlcnkgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmRpc3BsYXlVc2VyUXVlcnkgIT09IG51bGwpLCB7XG4gIG1lc3NhZ2U6IFwiJ2Rpc3BsYXlVc2VyUXVlcnknIG11c3QgYmUgcHJvdmlkZWQgd2hlbiB0aGUgaW5pdGlhbGl6YXRpb24ncyBldmVudCBpcyAnUXVlcnknLlwiXG59KTtcblxuY29uc3QgbW9kZVNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBlbmFibGVkVXNlcklucHV0OiB6LmJvb2xlYW4oKSxcbiAgZGlzcGxheVVzZXJQcm9tcHQ6IHouYm9vbGVhbigpLFxuICBzZW5kVXNlclByb21wdDogei5ib29sZWFuKCksXG4gIGluaXRpYWxpemF0aW9uOiBpbml0aWFsaXphdGlvblNjaGVtYSxcbiAgYWN0aW9uczogei5yZWNvcmQoYWN0aW9uU2NoZW1hKS5vcHRpb25hbCgpXG59KTtcbi8vIERlZmluZSB0aGUgTW9kZVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBNb2RlU2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBtb2RlU2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgc2F2ZWRDaGF0U2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZW5hYmxlZDogei5ib29sZWFuKCksXG4gIGRpc3BsYXk6IHouYm9vbGVhbigpXG59KVxuLy8gRGVmaW5lIHRoZSBTYXZlZENoYXRTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRDaGF0U2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBnbG9iYWxTZXR0aW5ncyBvYmplY3RcbmNvbnN0IGdsb2JhbFNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBzZWFyY2hXYXJuaW5nTWVzc2FnZTogei5zdHJpbmcoKSxcbiAgZGlzY2xhaW1lcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBnZW5lcmljQ2hhdEVycm9yTWVzc2FnZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkaXNwbGF5VXNlclF1b3RhQ29uc3VtcHRpb246IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGRpc3BsYXlDaGF0VG9rZW5zQ29uc3VtcHRpb246IHouYm9vbGVhbigpLm9wdGlvbmFsKClcbn0pXG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgYXVkaXRTZXR0aW5ncyBvYmplY3RcbmNvbnN0IGF1ZGl0U2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlzc3VlVHlwZXM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSk7XG4vLyBEZWZpbmUgdGhlIFNhdmVkQ2hhdFNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBTYXZlZENoYXRTZXR0aW5ncyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIHNhdmVkQ2hhdFNldHRpbmdzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGVudGlyZSBDaGF0Q29uZmlnIG9iamVjdFxuZXhwb3J0IGNvbnN0IGNoYXRDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNvbm5lY3Rpb25TZXR0aW5nczogY29ubmVjdGlvblNldHRpbmdzU2NoZW1hLFxuICBkZWZhdWx0VmFsdWVzOiBkZWZhdWx0VmFsdWVzU2NoZW1hLFxuICBtb2RlU2V0dGluZ3M6IG1vZGVTZXR0aW5nc1NjaGVtYSxcbiAgdWlTZXR0aW5nczogdWlTZXR0aW5nc1NjaGVtYSxcbiAgc2F2ZWRDaGF0U2V0dGluZ3M6IHNhdmVkQ2hhdFNldHRpbmdzU2NoZW1hLFxuICBnbG9iYWxTZXR0aW5nczogZ2xvYmFsU2V0dGluZ3NTY2hlbWEsXG4gIGF1ZGl0U2V0dGluZ3M6IGF1ZGl0U2V0dGluZ3NTY2hlbWEub3B0aW9uYWwoKSxcbiAgYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nczogYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nc1NjaGVtYSxcbiAgYWRkaXRpb25hbFdvcmtmbG93UHJvcGVydGllczogYWRkaXRpb25hbFdvcmtmbG93UHJvcGVydGllc1NjaGVtYVxufSk7XG4vLyBEZWZpbmUgdGhlIENoYXRDb25maWcgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIENoYXRDb25maWcgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBjaGF0Q29uZmlnU2NoZW1hPiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRQYXlsb2FkIHtcbiAgZGVidWc/OiBib29sZWFuO1xuICBmdW5jdGlvbnM6IHN0cmluZ1tdO1xuICBoaXN0b3J5OiBDaGF0TWVzc2FnZVtdO1xuICBzZXJ2aWNlU2V0dGluZ3M6IFNlcnZpY2VTZXR0aW5ncztcbiAgYXBwUXVlcnk6IHtcbiAgICBhcHA6IHN0cmluZztcbiAgICBxdWVyeTogUXVlcnkgfCB1bmRlZmluZWQ7XG4gICAgdGFyZ2V0VXJsPzogc3RyaW5nO1xuICAgIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICB9O1xuICBpbnN0YW5jZUlkPzogc3RyaW5nO1xuICBzYXZlZENoYXRJZD86IHN0cmluZztcbiAgZ2VuZXJpY0NoYXRFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFjdGlvbk1lc3NhZ2UgPSB7XG4gIGd1aWQ6IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmdcbiAgZGlzcGxheVZhbHVlPzogc3RyaW5nO1xuICBleGVjdXRpb25UaW1lPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDaHVua3NPcHRpb25zIHtcbiAgZXh0ZW5kTW9kZT86ICdOb25lJyB8ICdTZW50ZW5jZScgfCAnQ2hhcnMnO1xuICBleHRlbmRTY29wZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdW90YSB7XG4gIGxhc3RSZXF1ZXN0OiBzdHJpbmc7XG4gIHByb21wdFRva2VuQ291bnQ6IG51bWJlcjtcbiAgY29tcGxldGlvblRva2VuQ291bnQ6IG51bWJlcjtcbiAgcGVyaW9kVG9rZW5zOiBudW1iZXI7XG4gIHJlc2V0SG91cnM6IG51bWJlcjtcbiAgdG9rZW5Db3VudDogbnVtYmVyO1xuICBuZXh0UmVzZXQ6IHN0cmluZztcbiAgbGFzdFJlc2V0VVRDOiBzdHJpbmc7XG4gIG5leHRSZXNldFVUQzogc3RyaW5nO1xuICBtYXhRdW90YVJlYWNoZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdGVkQWN0aW9uIHtcbiAgY29udGVudDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdENoYXQge1xuICBtZXNzYWdlczogUmF3TWVzc2FnZVtdO1xufVxuXG4vKipcbiAqIExpc3Qgb2YgZXZlbnRzIGRhdGEgdGhhdCBjYW4gYmUgZW1pdHRlZCBieSB0aGUgd2Vic29ja2V0IGNoYXQgZW5kcG9pbnRcbiAqL1xuZXhwb3J0IHR5cGUgU3VnZ2VzdGVkQWN0aW9uc0V2ZW50ID0geyBzdWdnZXN0ZWRBY3Rpb25zOiBTdWdnZXN0ZWRBY3Rpb25bXSB9O1xuZXhwb3J0IHR5cGUgUXVvdGFFdmVudCA9IHsgcXVvdGE6IFF1b3RhIH07XG5leHBvcnQgdHlwZSBNZXNzYWdlRXZlbnQgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBDb250ZXh0TWVzc2FnZUV2ZW50ID0geyBjb250ZW50OiBzdHJpbmc7IG1ldGFkYXRhOiBDaGF0Q29udGV4dEF0dGFjaG1lbnQgfTtcbmV4cG9ydCB0eXBlIEVycm9yRXZlbnQgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBBY3Rpb25TdGFydEV2ZW50ID0geyBndWlkOiBzdHJpbmc7IGRpc3BsYXlOYW1lOiBzdHJpbmcgfTtcbmV4cG9ydCB0eXBlIEFjdGlvblJlc3VsdEV2ZW50ID0geyBndWlkOiBzdHJpbmc7IGRpc3BsYXlWYWx1ZTogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBBY3Rpb25TdG9wRXZlbnQgPSB7IGd1aWQ6IHN0cmluZzsgZXhlY3V0aW9uVGltZTogbnVtYmVyIH07XG5leHBvcnQgdHlwZSBIaXN0b3J5RXZlbnQgPSB7IGhpc3Rvcnk6IFJhd01lc3NhZ2VbXTsgZXhlY3V0aW9uVGltZTogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBEZWJ1Z01lc3NhZ2VFdmVudCA9IERlYnVnTWVzc2FnZTtcblxuLyoqXG4gKiBEYXRhIGVtaXR0ZWQgYnkgdGhlIGh0dHAgY2hhdCBlbmRwb2ludFxuICovXG5leHBvcnQgdHlwZSBIdHRwQ2hhdFJlc3BvbnNlID0ge1xuICBxdW90YTogUXVvdGE7XG4gIHN1Z2dlc3RlZEFjdGlvbnM6IFN1Z2dlc3RlZEFjdGlvbltdO1xuICBkZWJ1ZzogYW55O1xuICBjb250ZXh0OiB7IGNvbnRlbnQ6IHN0cmluZzsgYWRkaXRpb25hbFByb3BlcnRpZXM6IENoYXRDb250ZXh0QXR0YWNobWVudCB9W107XG4gIGFjdGlvbnM6IEFjdGlvbk1lc3NhZ2VbXTtcbiAgaGlzdG9yeTogUmF3TWVzc2FnZVtdO1xuICBleGVjdXRpb25UaW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5Db25zdW1wdGlvbiB7XG4gIHBlcmNlbnRhZ2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyVG9rZW5Db25zdW1wdGlvbiBleHRlbmRzIFRva2VuQ29uc3VtcHRpb24ge1xuICBuZXh0UmVzZXREYXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFVzYWdlTWV0cmljcyB7XG4gIHRvdGFsVG9rZW5Db3VudDogbnVtYmVyO1xuICBwcm9tcHRUb2tlbkNvdW50OiBudW1iZXI7XG4gIGNvbXBsZXRpb25Ub2tlbkNvdW50OiBudW1iZXI7XG4gIHRva2VuaXplclR5cGU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEt2T2JqZWN0IHtcbiAgZGF0YToge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBhbnk7IC8vIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgfTtcbiAgdHlwZTogJ0tWJztcbiAgaXNFcnJvcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0T2JqZWN0IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAnTElTVCc7XG4gIGlzRXJyb3I6IGJvb2xlYW47XG4gIGl0ZW1zOiAoS3ZPYmplY3QgfCBMaXN0T2JqZWN0KVtdO1xuICBleHBhbmRlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgRGVidWdNZXNzYWdlID0gS3ZPYmplY3QgfCBMaXN0T2JqZWN0O1xuXG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VIYW5kbGVyPFQ+ID0ge1xuICBoYW5kbGVyOiAoZGF0YTogVCkgPT4gdm9pZDtcbiAgaXNHbG9iYWxIYW5kbGVyOiBib29sZWFuO1xufTtcblxuIl19