@copilotkitnext/angular 0.0.5 → 0.0.6

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.
@@ -69,6 +69,7 @@ export declare class CopilotChatAssistantMessageComponent {
69
69
  clicked: () => void;
70
70
  };
71
71
  toolbarContext: import("@angular/core").Signal<AssistantMessageToolbarContext>;
72
+ hasMessageContent(): boolean;
72
73
  toolCallsViewContext: import("@angular/core").Signal<{
73
74
  message: {
74
75
  id: string;
@@ -84,6 +84,12 @@ export class CopilotChatAssistantMessageComponent {
84
84
  toolbarContext = computed(() => ({
85
85
  children: null // Will be populated by the toolbar content
86
86
  }));
87
+ // Return true if assistant message has non-empty text content
88
+ hasMessageContent() {
89
+ const raw = (this.message?.content ?? '');
90
+ const content = typeof raw === 'string' ? raw : String(raw ?? '');
91
+ return content.trim().length > 0;
92
+ }
87
93
  toolCallsViewContext = computed(() => ({
88
94
  message: this.message,
89
95
  messages: this.messages,
@@ -141,8 +147,8 @@ export class CopilotChatAssistantMessageComponent {
141
147
  </copilot-chat-tool-calls-view>
142
148
  }
143
149
 
144
- <!-- Toolbar -->
145
- <ng-container *ngIf="toolbarVisible">
150
+ <!-- Toolbar: show only when there is assistant text content -->
151
+ <ng-container *ngIf="toolbarVisible && hasMessageContent()">
146
152
  @if (toolbarTemplate || toolbarComponent) {
147
153
  <copilot-slot
148
154
  [slot]="toolbarTemplate || toolbarComponent"
@@ -269,8 +275,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
269
275
  </copilot-chat-tool-calls-view>
270
276
  }
271
277
 
272
- <!-- Toolbar -->
273
- <ng-container *ngIf="toolbarVisible">
278
+ <!-- Toolbar: show only when there is assistant text content -->
279
+ <ng-container *ngIf="toolbarVisible && hasMessageContent()">
274
280
  @if (toolbarTemplate || toolbarComponent) {
275
281
  <copilot-slot
276
282
  [slot]="toolbarTemplate || toolbarComponent"
@@ -430,4 +436,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
430
436
  }], regenerate: [{
431
437
  type: Output
432
438
  }] } });
433
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFFUix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBZ0I3RixPQUFPLEVBQUUsNENBQTRDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNuSCxPQUFPLEVBQ0wsOENBQThDLEVBQzlDLGtEQUFrRCxFQUNsRCxvREFBb0QsRUFDcEQsbURBQW1ELEVBQ25ELG9EQUFvRCxFQUNyRCxNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFBRSwyQ0FBMkMsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pILE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7OztBQStTdEYsTUFBTSxPQUFPLG9DQUFvQztJQUMvQyw0Q0FBNEM7SUFDYSx3QkFBd0IsQ0FBd0Q7SUFDekYsZUFBZSxDQUErQztJQUMzRCxrQkFBa0IsQ0FBa0Q7SUFDaEUsc0JBQXNCLENBQXNDO0lBQzFELHdCQUF3QixDQUF3QztJQUNqRSx1QkFBdUIsQ0FBdUM7SUFDN0Qsd0JBQXdCLENBQXdDO0lBQ25FLHFCQUFxQixDQUFvQjtJQUUvRiw4Q0FBOEM7SUFDckMscUJBQXFCLENBQVU7SUFDL0IsWUFBWSxDQUFVO0lBQ3RCLGVBQWUsQ0FBVTtJQUN6QixtQkFBbUIsQ0FBVTtJQUM3QixxQkFBcUIsQ0FBVTtJQUMvQixvQkFBb0IsQ0FBVTtJQUM5QixxQkFBcUIsQ0FBVTtJQUMvQixrQkFBa0IsQ0FBVTtJQUVyQyxpQ0FBaUM7SUFDeEIseUJBQXlCLENBQWE7SUFDdEMsZ0JBQWdCLENBQWE7SUFDN0IsbUJBQW1CLENBQWE7SUFDaEMsdUJBQXVCLENBQWE7SUFDcEMseUJBQXlCLENBQWE7SUFDdEMsd0JBQXdCLENBQWE7SUFDckMseUJBQXlCLENBQWE7SUFDdEMsc0JBQXNCLENBQWE7SUFFNUMsaUJBQWlCO0lBQ1IsT0FBTyxDQUFvQjtJQUMzQixRQUFRLEdBQWMsRUFBRSxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsc0JBQXNCLENBQW9CO0lBQzFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDL0IsSUFBYSxVQUFVLENBQUMsR0FBdUI7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELG9FQUFvRTtJQUNwRSx1REFBdUQ7SUFDdkQsUUFBUSxDQUFpQztJQUV6QyxZQUFnRSxRQUFnRDtRQUM5RyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxJQUFJLDhCQUE4QixFQUFFLENBQUM7SUFDbkUsQ0FBQztJQUVELGdCQUFnQjtJQUNOLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBOEMsQ0FBQztJQUMxRSxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWdELENBQUM7SUFDOUUsU0FBUyxHQUFHLElBQUksWUFBWSxFQUErQyxDQUFDO0lBQzVFLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBZ0QsQ0FBQztJQUV4RixVQUFVO0lBQ1YsV0FBVyxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFFcEQsa0JBQWtCO0lBQ2xCLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVCLE9BQU8sRUFBRSxDQUNQLGdEQUFnRCxFQUNoRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQ25CLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILHFCQUFxQjtJQUNGLDhCQUE4QixHQUFHLGtEQUFrRCxDQUFDO0lBQ3BGLGdDQUFnQyxHQUFHLG9EQUFvRCxDQUFDO0lBQ3hGLDRDQUE0QyxHQUFHLDRDQUE0QyxDQUFDO0lBQzVGLDJDQUEyQyxHQUFHLDJDQUEyQyxDQUFDO0lBQzFGLDhDQUE4QyxHQUFHLDhDQUE4QyxDQUFDO0lBQ2hHLGlDQUFpQyxHQUFHLGlDQUFpQyxDQUFDO0lBRXpGLDJDQUEyQztJQUMzQyx1QkFBdUIsR0FBRyxRQUFRLENBQTBDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakYsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLEVBQUU7S0FDckMsQ0FBQyxDQUFDLENBQUM7SUFFSix3QkFBd0I7SUFDeEIsaUJBQWlCLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7SUFDekQscUJBQXFCLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7SUFDakUsdUJBQXVCLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztJQUNyRSxzQkFBc0IsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztJQUNuRSx1QkFBdUIsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO0lBRXJFLGNBQWMsR0FBRyxRQUFRLENBQWlDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0QsUUFBUSxFQUFFLElBQUksQ0FBQywyQ0FBMkM7S0FDM0QsQ0FBQyxDQUFDLENBQUM7SUFFSixvQkFBb0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNyQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztLQUMxQixDQUFDLENBQUMsQ0FBQztJQUVKLFVBQVU7UUFDUixpREFBaUQ7UUFDakQsa0RBQWtEO0lBQ3BELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7d0dBbkhVLG9DQUFvQyxrQkE2Q2YsOEJBQThCOzRGQTdDbkQsb0NBQW9DLHN0Q0FFTCxXQUFXLHFHQUNwQixXQUFXLDJHQUNSLFdBQVcsbUhBQ1AsV0FBVyx1SEFDVCxXQUFXLHFIQUNaLFdBQVcsdUhBQ1YsV0FBVyxpSEFDZCxXQUFXLDZCQXJTeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUhULG9xazVDQTlIQyxZQUFZLDBTQUNaLG9CQUFvQixxSEFDcEIsNENBQTRDLHVIQUM1Qyw4Q0FBOEMscUtBSzlDLDJDQUEyQyx5R0FDM0MsaUNBQWlDOzs0RkFnU3hCLG9DQUFvQztrQkE3U2hELFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsNENBQTRDO3dCQUM1Qyw4Q0FBOEM7d0JBQzlDLGtEQUFrRDt3QkFDbEQsb0RBQW9EO3dCQUNwRCxtREFBbUQ7d0JBQ25ELG9EQUFvRDt3QkFDcEQsMkNBQTJDO3dCQUMzQyxpQ0FBaUM7cUJBQ2xDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlIVDs7MEJBd05ZLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsOEJBQThCO3lDQTNDTCx3QkFBd0I7c0JBQWhGLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNQLGVBQWU7c0JBQTlELFlBQVk7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDSyxrQkFBa0I7c0JBQXBFLFlBQVk7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDTSxzQkFBc0I7c0JBQTVFLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNJLHdCQUF3QjtzQkFBaEYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ0MsdUJBQXVCO3NCQUE5RSxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDRyx3QkFBd0I7c0JBQWhGLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNELHFCQUFxQjtzQkFBMUUsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUczQyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBYUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgQ29udGVudENoaWxkLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBUeXBlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9wdGlvbmFsLFxuICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29waWxvdFNsb3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9saWIvc2xvdHMvY29waWxvdC1zbG90LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gJ0BhZy11aS9jb3JlJztcbmltcG9ydCB7XG4gIHR5cGUgQXNzaXN0YW50TWVzc2FnZSxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic1VwUHJvcHMsXG4gIHR5cGUgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25UaHVtYnNEb3duUHJvcHMsXG4gIHR5cGUgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25SZWFkQWxvdWRQcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblJlZ2VuZXJhdGVQcm9wcyxcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlTWFya2Rvd25SZW5kZXJlckNvbnRleHQsXG4gIHR5cGUgQXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db250ZXh0LFxuICB0eXBlIFRodW1ic1VwQnV0dG9uQ29udGV4dCxcbiAgdHlwZSBUaHVtYnNEb3duQnV0dG9uQ29udGV4dCxcbiAgdHlwZSBSZWFkQWxvdWRCdXR0b25Db250ZXh0LFxuICB0eXBlIFJlZ2VuZXJhdGVCdXR0b25Db250ZXh0LFxuICB0eXBlIEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29udGV4dFxufSBmcm9tICcuL2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS50eXBlcyc7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uQ29tcG9uZW50LFxuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcEJ1dHRvbkNvbXBvbmVudCxcbiAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50LFxuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50XG59IGZyb20gJy4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWJ1dHRvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFZpZXdIYW5kbGVyc1NlcnZpY2UgfSBmcm9tICcuL2NvcGlsb3QtY2hhdC12aWV3LWhhbmRsZXJzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90Q29tcG9uZW50LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyQ29tcG9uZW50LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db21wb25lbnQsXG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzVXBCdXR0b25Db21wb25lbnQsXG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZWFkQWxvdWRCdXR0b25Db21wb25lbnQsXG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVnZW5lcmF0ZUJ1dHRvbkNvbXBvbmVudCxcbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29tcG9uZW50LFxuICAgIENvcGlsb3RDaGF0VG9vbENhbGxzVmlld0NvbXBvbmVudFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiXG4gICAgICBbYXR0ci5kYXRhLW1lc3NhZ2UtaWRdPVwibWVzc2FnZT8uaWRcIj5cbiAgICAgIFxuICAgICAgPCEtLSBNYXJrZG93biBSZW5kZXJlciAtLT5cbiAgICAgIEBpZiAobWFya2Rvd25SZW5kZXJlclRlbXBsYXRlIHx8IG1hcmtkb3duUmVuZGVyZXJDb21wb25lbnQpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cIm1hcmtkb3duUmVuZGVyZXJUZW1wbGF0ZSB8fCBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50XCJcbiAgICAgICAgICBbY29udGV4dF09XCJtYXJrZG93blJlbmRlcmVyQ29udGV4dCgpXCJcbiAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlckNvbXBvbmVudFwiXG4gICAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyXG4gICAgICAgICAgW2NvbnRlbnRdPVwibWVzc2FnZT8uY29udGVudCB8fCAnJ1wiXG4gICAgICAgICAgW2lucHV0Q2xhc3NdPVwibWFya2Rvd25SZW5kZXJlckNsYXNzXCI+XG4gICAgICAgIDwvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyPlxuICAgICAgfVxuICAgICAgXG4gICAgICA8IS0tIFRvb2wgQ2FsbHMgVmlldyAtLT5cbiAgICAgIEBpZiAodG9vbENhbGxzVmlld1RlbXBsYXRlIHx8IHRvb2xDYWxsc1ZpZXdDb21wb25lbnQpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cInRvb2xDYWxsc1ZpZXdUZW1wbGF0ZSB8fCB0b29sQ2FsbHNWaWV3Q29tcG9uZW50XCJcbiAgICAgICAgICBbY29udGV4dF09XCJ0b29sQ2FsbHNWaWV3Q29udGV4dCgpXCJcbiAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXdDb21wb25lbnRcIj5cbiAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICB9IEBlbHNlIGlmIChtZXNzYWdlPy50b29sQ2FsbHMgJiYgbWVzc2FnZS50b29sQ2FsbHMubGVuZ3RoID4gMCkge1xuICAgICAgICA8Y29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlld1xuICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VcIlxuICAgICAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlc1wiXG4gICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj5cbiAgICAgICAgPC9jb3BpbG90LWNoYXQtdG9vbC1jYWxscy12aWV3PlxuICAgICAgfVxuICAgICAgXG4gICAgICA8IS0tIFRvb2xiYXIgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9vbGJhclZpc2libGVcIj5cbiAgICAgICAgQGlmICh0b29sYmFyVGVtcGxhdGUgfHwgdG9vbGJhckNvbXBvbmVudCkge1xuICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgIFtzbG90XT1cInRvb2xiYXJUZW1wbGF0ZSB8fCB0b29sYmFyQ29tcG9uZW50XCJcbiAgICAgICAgICAgIFtjb250ZXh0XT1cInRvb2xiYXJDb250ZXh0KClcIlxuICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVG9vbGJhckNvbXBvbmVudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVG9vbGJhciBbaW5wdXRDbGFzc109XCJ0b29sYmFyQ2xhc3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICA8IS0tIENvcHkgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICBAaWYgKGNvcHlCdXR0b25UZW1wbGF0ZSB8fCBjb3B5QnV0dG9uQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiY29weUJ1dHRvblRlbXBsYXRlIHx8IGNvcHlCdXR0b25Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwieyBjb250ZW50OiBtZXNzYWdlPy5jb250ZW50IHx8ICcnIH1cIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJjb3B5QnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtY29weS1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIm1lc3NhZ2U/LmNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgW2lucHV0Q2xhc3NdPVwiY29weUJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImhhbmRsZUNvcHkoKVwiPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWNvcHktYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8IS0tIFRodW1icyB1cCBidXR0b24gLSBzaG93IGlmIGN1c3RvbSBzbG90IHByb3ZpZGVkIE9SIGlmIGhhbmRsZXIgYXZhaWxhYmxlIGF0IHRvcCBsZXZlbCAtLT5cbiAgICAgICAgICAgICAgQGlmICh0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudCB8fCB0aHVtYnNVcEJ1dHRvblRlbXBsYXRlIHx8IGhhbmRsZXJzLmhhc0Fzc2lzdGFudFRodW1ic1VwSGFuZGxlcigpKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwidGh1bWJzVXBCdXR0b25UZW1wbGF0ZSB8fCB0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7fVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0VGh1bWJzVXBCdXR0b25Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwidGh1bWJzVXBCdXR0b25PdXRwdXRzXCI+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDwhLS0gVGh1bWJzIGRvd24gYnV0dG9uIC0gc2hvdyBpZiBjdXN0b20gc2xvdCBwcm92aWRlZCBPUiBpZiBoYW5kbGVyIGF2YWlsYWJsZSBhdCB0b3AgbGV2ZWwgLS0+XG4gICAgICAgICAgICAgIEBpZiAodGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCB8fCB0aHVtYnNEb3duQnV0dG9uVGVtcGxhdGUgfHwgaGFuZGxlcnMuaGFzQXNzaXN0YW50VGh1bWJzRG93bkhhbmRsZXIoKSkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cInRodW1ic0Rvd25CdXR0b25UZW1wbGF0ZSB8fCB0aHVtYnNEb3duQnV0dG9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cImRlZmF1bHRUaHVtYnNEb3duQnV0dG9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cInRodW1ic0Rvd25CdXR0b25PdXRwdXRzXCI+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDwhLS0gUmVhZCBhbG91ZCBidXR0b24gLSBvbmx5IHNob3cgaWYgY3VzdG9tIHNsb3QgcHJvdmlkZWQgLS0+XG4gICAgICAgICAgICAgIEBpZiAocmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50IHx8IHJlYWRBbG91ZEJ1dHRvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwicmVhZEFsb3VkQnV0dG9uVGVtcGxhdGUgfHwgcmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cInJlYWRBbG91ZEJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8IS0tIFJlZ2VuZXJhdGUgYnV0dG9uIC0gb25seSBzaG93IGlmIGN1c3RvbSBzbG90IHByb3ZpZGVkIC0tPlxuICAgICAgICAgICAgICBAaWYgKHJlZ2VuZXJhdGVCdXR0b25Db21wb25lbnQgfHwgcmVnZW5lcmF0ZUJ1dHRvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwicmVnZW5lcmF0ZUJ1dHRvblRlbXBsYXRlIHx8IHJlZ2VuZXJhdGVCdXR0b25Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwicmVnZW5lcmF0ZUJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8IS0tIEFkZGl0aW9uYWwgdG9vbGJhciBpdGVtcyAtLT5cbiAgICAgICAgICAgICAgQGlmIChhZGRpdGlvbmFsVG9vbGJhckl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZGl0aW9uYWxUb29sYmFySXRlbXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLyogSW1wb3J0IEthVGVYIHN0eWxlcyAqL1xuICAgIEBpbXBvcnQgJ2thdGV4L2Rpc3Qva2F0ZXgubWluLmNzcyc7XG5cbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC8qIEF0b20gT25lIExpZ2h0IHRoZW1lIGZvciBoaWdobGlnaHQuanMgKi9cbiAgICAuaGxqcyB7XG4gICAgICBjb2xvcjogcmdiKDU2LCA1OCwgNjYpO1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLmhsanMtY29tbWVudCxcbiAgICAuaGxqcy1xdW90ZSB7XG4gICAgICBjb2xvcjogI2EwYTFhNztcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG5cbiAgICAuaGxqcy1kb2N0YWcsXG4gICAgLmhsanMtZm9ybXVsYSxcbiAgICAuaGxqcy1rZXl3b3JkIHtcbiAgICAgIGNvbG9yOiAjYTYyNmE0O1xuICAgIH1cblxuICAgIC5obGpzLWRlbGV0aW9uLFxuICAgIC5obGpzLW5hbWUsXG4gICAgLmhsanMtc2VjdGlvbixcbiAgICAuaGxqcy1zZWxlY3Rvci10YWcsXG4gICAgLmhsanMtc3Vic3Qge1xuICAgICAgY29sb3I6ICNlNDU2NDk7XG4gICAgfVxuXG4gICAgLmhsanMtbGl0ZXJhbCB7XG4gICAgICBjb2xvcjogIzAxODRiYjtcbiAgICB9XG5cbiAgICAuaGxqcy1hZGRpdGlvbixcbiAgICAuaGxqcy1hdHRyaWJ1dGUsXG4gICAgLmhsanMtbWV0YSAuaGxqcy1zdHJpbmcsXG4gICAgLmhsanMtcmVnZXhwLFxuICAgIC5obGpzLXN0cmluZyB7XG4gICAgICBjb2xvcjogIzUwYTE0ZjtcbiAgICB9XG5cbiAgICAuaGxqcy1hdHRyLFxuICAgIC5obGpzLW51bWJlcixcbiAgICAuaGxqcy1zZWxlY3Rvci1hdHRyLFxuICAgIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxuICAgIC5obGpzLXNlbGVjdG9yLXBzZXVkbyxcbiAgICAuaGxqcy10ZW1wbGF0ZS12YXJpYWJsZSxcbiAgICAuaGxqcy10eXBlLFxuICAgIC5obGpzLXZhcmlhYmxlIHtcbiAgICAgIGNvbG9yOiAjOTg2ODAxO1xuICAgIH1cblxuICAgIC5obGpzLXBhcmFtcyB7XG4gICAgICBjb2xvcjogcmdiKDU2LCA1OCwgNjYpO1xuICAgIH1cblxuICAgIC5obGpzLWJ1bGxldCxcbiAgICAuaGxqcy1saW5rLFxuICAgIC5obGpzLW1ldGEsXG4gICAgLmhsanMtc2VsZWN0b3ItaWQsXG4gICAgLmhsanMtc3ltYm9sLFxuICAgIC5obGpzLXRpdGxlIHtcbiAgICAgIGNvbG9yOiAjNDA3OGYyO1xuICAgIH1cblxuICAgIC5obGpzLWJ1aWx0X2luLFxuICAgIC5obGpzLWNsYXNzIC5obGpzLXRpdGxlLFxuICAgIC5obGpzLXRpdGxlLmNsYXNzXyB7XG4gICAgICBjb2xvcjogI2MxODQwMTtcbiAgICB9XG5cbiAgICAuaGxqcy1lbXBoYXNpcyB7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuXG4gICAgLmhsanMtc3Ryb25nIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgfVxuXG4gICAgLmhsanMtbGluayB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG5cbiAgICAvKiBBdG9tIE9uZSBEYXJrIHRoZW1lIGZvciBoaWdobGlnaHQuanMgKi9cbiAgICAuZGFyayAuaGxqcyB7XG4gICAgICBjb2xvcjogI2FiYjJiZjtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC5kYXJrIC5obGpzLWNvbW1lbnQsXG4gICAgLmRhcmsgLmhsanMtcXVvdGUge1xuICAgICAgY29sb3I6ICM1YzYzNzA7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuXG4gICAgLmRhcmsgLmhsanMtZG9jdGFnLFxuICAgIC5kYXJrIC5obGpzLWZvcm11bGEsXG4gICAgLmRhcmsgLmhsanMta2V5d29yZCB7XG4gICAgICBjb2xvcjogI2M2NzhkZDtcbiAgICB9XG5cbiAgICAuZGFyayAuaGxqcy1kZWxldGlvbixcbiAgICAuZGFyayAuaGxqcy1uYW1lLFxuICAgIC5kYXJrIC5obGpzLXNlY3Rpb24sXG4gICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItdGFnLFxuICAgIC5kYXJrIC5obGpzLXN1YnN0IHtcbiAgICAgIGNvbG9yOiAjZTA2Yzc1O1xuICAgIH1cblxuICAgIC5kYXJrIC5obGpzLWxpdGVyYWwge1xuICAgICAgY29sb3I6ICM1NmI2YzI7XG4gICAgfVxuXG4gICAgLmRhcmsgLmhsanMtYWRkaXRpb24sXG4gICAgLmRhcmsgLmhsanMtYXR0cmlidXRlLFxuICAgIC5kYXJrIC5obGpzLW1ldGEgLmhsanMtc3RyaW5nLFxuICAgIC5kYXJrIC5obGpzLXJlZ2V4cCxcbiAgICAuZGFyayAuaGxqcy1zdHJpbmcge1xuICAgICAgY29sb3I6ICM5OGMzNzk7XG4gICAgfVxuXG4gICAgLmRhcmsgLmhsanMtYXR0cixcbiAgICAuZGFyayAuaGxqcy1udW1iZXIsXG4gICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItYXR0cixcbiAgICAuZGFyayAuaGxqcy1zZWxlY3Rvci1jbGFzcyxcbiAgICAuZGFyayAuaGxqcy1zZWxlY3Rvci1wc2V1ZG8sXG4gICAgLmRhcmsgLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsXG4gICAgLmRhcmsgLmhsanMtdHlwZSxcbiAgICAuZGFyayAuaGxqcy12YXJpYWJsZSB7XG4gICAgICBjb2xvcjogI2QxOWE2NjtcbiAgICB9XG5cbiAgICAuZGFyayAuaGxqcy1idWxsZXQsXG4gICAgLmRhcmsgLmhsanMtbGluayxcbiAgICAuZGFyayAuaGxqcy1tZXRhLFxuICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLWlkLFxuICAgIC5kYXJrIC5obGpzLXN5bWJvbCxcbiAgICAuZGFyayAuaGxqcy10aXRsZSB7XG4gICAgICBjb2xvcjogIzYxYWVlZTtcbiAgICB9XG5cbiAgICAuZGFyayAuaGxqcy1idWlsdF9pbixcbiAgICAuZGFyayAuaGxqcy1jbGFzcyAuaGxqcy10aXRsZSxcbiAgICAuZGFyayAuaGxqcy10aXRsZS5jbGFzc18ge1xuICAgICAgY29sb3I6ICNlNmMwN2I7XG4gICAgfVxuXG4gICAgLmRhcmsgLmhsanMtcGFyYW1zIHtcbiAgICAgIGNvbG9yOiAjYWJiMmJmOyAvKiBzYW1lIGFzIHJlZ3VsYXIgdGV4dCAqL1xuICAgIH1cblxuICAgIC5kYXJrIC5obGpzLWVtcGhhc2lzIHtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG5cbiAgICAuZGFyayAuaGxqcy1zdHJvbmcge1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB9XG5cbiAgICAuZGFyayAuaGxqcy1saW5rIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29tcG9uZW50IHtcbiAgLy8gQ2FwdHVyZSB0ZW1wbGF0ZXMgZnJvbSBjb250ZW50IHByb2plY3Rpb25cbiAgQENvbnRlbnRDaGlsZCgnbWFya2Rvd25SZW5kZXJlcicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgbWFya2Rvd25SZW5kZXJlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8QXNzaXN0YW50TWVzc2FnZU1hcmtkb3duUmVuZGVyZXJDb250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZCgndG9vbGJhcicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdG9vbGJhclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZCgnY29weUJ1dHRvbicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgY29weUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZCgndGh1bWJzVXBCdXR0b24nLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRodW1ic1VwQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUaHVtYnNVcEJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKCd0aHVtYnNEb3duQnV0dG9uJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0aHVtYnNEb3duQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUaHVtYnNEb3duQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoJ3JlYWRBbG91ZEJ1dHRvbicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgcmVhZEFsb3VkQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWFkQWxvdWRCdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZCgncmVnZW5lcmF0ZUJ1dHRvbicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgcmVnZW5lcmF0ZUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8UmVnZW5lcmF0ZUJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKCd0b29sQ2FsbHNWaWV3JywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0b29sQ2FsbHNWaWV3VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBcbiAgLy8gQ2xhc3MgaW5wdXRzIGZvciBzdHlsaW5nIGRlZmF1bHQgY29tcG9uZW50c1xuICBASW5wdXQoKSBtYXJrZG93blJlbmRlcmVyQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRvb2xiYXJDbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgY29weUJ1dHRvbkNsYXNzPzogc3RyaW5nO1xuICBASW5wdXQoKSB0aHVtYnNVcEJ1dHRvbkNsYXNzPzogc3RyaW5nO1xuICBASW5wdXQoKSB0aHVtYnNEb3duQnV0dG9uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlYWRBbG91ZEJ1dHRvbkNsYXNzPzogc3RyaW5nO1xuICBASW5wdXQoKSByZWdlbmVyYXRlQnV0dG9uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRvb2xDYWxsc1ZpZXdDbGFzcz86IHN0cmluZztcbiAgXG4gIC8vIENvbXBvbmVudCBpbnB1dHMgZm9yIG92ZXJyaWRlc1xuICBASW5wdXQoKSBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBASW5wdXQoKSB0b29sYmFyQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBASW5wdXQoKSBjb3B5QnV0dG9uQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBASW5wdXQoKSB0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgQElucHV0KCkgdGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgQElucHV0KCkgcmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBASW5wdXQoKSByZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBASW5wdXQoKSB0b29sQ2FsbHNWaWV3Q29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBcbiAgLy8gUmVndWxhciBpbnB1dHNcbiAgQElucHV0KCkgbWVzc2FnZSE6IEFzc2lzdGFudE1lc3NhZ2U7XG4gIEBJbnB1dCgpIG1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcbiAgQElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxUb29sYmFySXRlbXM/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSB0b29sYmFyVmlzaWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNldCBpbnB1dENsYXNzKHZhbDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5jdXN0b21DbGFzcy5zZXQodmFsKTtcbiAgfVxuICBcbiAgLy8gREkgc2VydmljZSBleHBvc2VzIGhhbmRsZXIgYXZhaWxhYmlsaXR5IHNjb3BlZCB0byBDb3BpbG90Q2hhdFZpZXdcbiAgLy8gTWFrZSBpdCBvcHRpb25hbCB3aXRoIGEgZGVmYXVsdCBmYWxsYmFjayBmb3IgdGVzdGluZ1xuICBoYW5kbGVyczogQ29waWxvdENoYXRWaWV3SGFuZGxlcnNTZXJ2aWNlO1xuICBcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChDb3BpbG90Q2hhdFZpZXdIYW5kbGVyc1NlcnZpY2UpIGhhbmRsZXJzPzogQ29waWxvdENoYXRWaWV3SGFuZGxlcnNTZXJ2aWNlIHwgbnVsbCkge1xuICAgIHRoaXMuaGFuZGxlcnMgPSBoYW5kbGVycyB8fCBuZXcgQ29waWxvdENoYXRWaWV3SGFuZGxlcnNTZXJ2aWNlKCk7XG4gIH1cbiAgXG4gIC8vIE91dHB1dCBldmVudHNcbiAgQE91dHB1dCgpIHRodW1ic1VwID0gbmV3IEV2ZW50RW1pdHRlcjxDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic1VwUHJvcHM+KCk7XG4gIEBPdXRwdXQoKSB0aHVtYnNEb3duID0gbmV3IEV2ZW50RW1pdHRlcjxDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic0Rvd25Qcm9wcz4oKTtcbiAgQE91dHB1dCgpIHJlYWRBbG91ZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25SZWFkQWxvdWRQcm9wcz4oKTtcbiAgQE91dHB1dCgpIHJlZ2VuZXJhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uUmVnZW5lcmF0ZVByb3BzPigpO1xuICBcbiAgLy8gU2lnbmFsc1xuICBjdXN0b21DbGFzcyA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIFxuICAvLyBDb21wdXRlZCB2YWx1ZXNcbiAgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gY24oXG4gICAgICBcInByb3NlIG1heC13LWZ1bGwgYnJlYWstd29yZHMgZGFyazpwcm9zZS1pbnZlcnRcIixcbiAgICAgIHRoaXMuY3VzdG9tQ2xhc3MoKVxuICAgICk7XG4gIH0pO1xuICBcbiAgLy8gRGVmYXVsdCBjb21wb25lbnRzXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0VGh1bWJzVXBCdXR0b25Db21wb25lbnQgPSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcEJ1dHRvbkNvbXBvbmVudDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRUaHVtYnNEb3duQnV0dG9uQ29tcG9uZW50ID0gQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyQ29tcG9uZW50ID0gQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVuZGVyZXJDb21wb25lbnQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29tcG9uZW50ID0gQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVG9vbGJhckNvbXBvbmVudDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db21wb25lbnQgPSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29waWxvdENoYXRUb29sQ2FsbHNWaWV3Q29tcG9uZW50ID0gQ29waWxvdENoYXRUb29sQ2FsbHNWaWV3Q29tcG9uZW50O1xuICBcbiAgLy8gQ29udGV4dCBmb3Igc2xvdHMgKHJlYWN0aXZlIHZpYSBzaWduYWxzKVxuICBtYXJrZG93blJlbmRlcmVyQ29udGV4dCA9IGNvbXB1dGVkPEFzc2lzdGFudE1lc3NhZ2VNYXJrZG93blJlbmRlcmVyQ29udGV4dD4oKCkgPT4gKHtcbiAgICBjb250ZW50OiB0aGlzLm1lc3NhZ2U/LmNvbnRlbnQgfHwgJydcbiAgfSkpO1xuICBcbiAgLy8gT3V0cHV0IG1hcHMgZm9yIHNsb3RzXG4gIGNvcHlCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZUNvcHkoKSB9O1xuICB0aHVtYnNVcEJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlVGh1bWJzVXAoKSB9O1xuICB0aHVtYnNEb3duQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVUaHVtYnNEb3duKCkgfTtcbiAgcmVhZEFsb3VkQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVSZWFkQWxvdWQoKSB9O1xuICByZWdlbmVyYXRlQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVSZWdlbmVyYXRlKCkgfTtcbiAgXG4gIHRvb2xiYXJDb250ZXh0ID0gY29tcHV0ZWQ8QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb250ZXh0PigoKSA9PiAoe1xuICAgIGNoaWxkcmVuOiBudWxsIC8vIFdpbGwgYmUgcG9wdWxhdGVkIGJ5IHRoZSB0b29sYmFyIGNvbnRlbnRcbiAgfSkpO1xuICBcbiAgdG9vbENhbGxzVmlld0NvbnRleHQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICBtZXNzYWdlczogdGhpcy5tZXNzYWdlcyxcbiAgICBpc0xvYWRpbmc6IHRoaXMuaXNMb2FkaW5nXG4gIH0pKTtcbiAgXG4gIGhhbmRsZUNvcHkoKTogdm9pZCB7XG4gICAgLy8gQ29weSBpcyBoYW5kbGVkIGJ5IHRoZSBidXR0b24gY29tcG9uZW50IGl0c2VsZlxuICAgIC8vIFRoaXMgaXMganVzdCBmb3IgYW55IGFkZGl0aW9uYWwgbG9naWMgaWYgbmVlZGVkXG4gIH1cbiAgXG4gIGhhbmRsZVRodW1ic1VwKCk6IHZvaWQge1xuICAgIHRoaXMudGh1bWJzVXAuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSB9KTtcbiAgfVxuICBcbiAgaGFuZGxlVGh1bWJzRG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnRodW1ic0Rvd24uZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSB9KTtcbiAgfVxuICBcbiAgaGFuZGxlUmVhZEFsb3VkKCk6IHZvaWQge1xuICAgIHRoaXMucmVhZEFsb3VkLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UgfSk7XG4gIH1cbiAgXG4gIGhhbmRsZVJlZ2VuZXJhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdlbmVyYXRlLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UgfSk7XG4gIH1cbn1cbiJdfQ==
439
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFFUix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBZ0I3RixPQUFPLEVBQUUsNENBQTRDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNuSCxPQUFPLEVBQ0wsOENBQThDLEVBQzlDLGtEQUFrRCxFQUNsRCxvREFBb0QsRUFDcEQsbURBQW1ELEVBQ25ELG9EQUFvRCxFQUNyRCxNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFBRSwyQ0FBMkMsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pILE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7OztBQStTdEYsTUFBTSxPQUFPLG9DQUFvQztJQUMvQyw0Q0FBNEM7SUFDYSx3QkFBd0IsQ0FBd0Q7SUFDekYsZUFBZSxDQUErQztJQUMzRCxrQkFBa0IsQ0FBa0Q7SUFDaEUsc0JBQXNCLENBQXNDO0lBQzFELHdCQUF3QixDQUF3QztJQUNqRSx1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SztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBYUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgQ29udGVudENoaWxkLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBUeXBlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9wdGlvbmFsLFxuICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29waWxvdFNsb3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9saWIvc2xvdHMvY29waWxvdC1zbG90LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gJ0BhZy11aS9jb3JlJztcbmltcG9ydCB7XG4gIHR5cGUgQXNzaXN0YW50TWVzc2FnZSxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic1VwUHJvcHMsXG4gIHR5cGUgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25UaHVtYnNEb3duUHJvcHMsXG4gIHR5cGUgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25SZWFkQWxvdWRQcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblJlZ2VuZXJhdGVQcm9wcyxcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlTWFya2Rvd25SZW5kZXJlckNvbnRleHQsXG4gIHR5cGUgQXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db250ZXh0LFxuICB0eXBlIFRodW1ic1VwQnV0dG9uQ29udGV4dCxcbiAgdHlwZSBUaHVtYnNEb3duQnV0dG9uQ29udGV4dCxcbiAgdHlwZSBSZWFkQWxvdWRCdXR0b25Db250ZXh0LFxuICB0eXBlIFJlZ2VuZXJhdGVCdXR0b25Db250ZXh0LFxuICB0eXBlIEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29udGV4dFxufSBmcm9tICcuL2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS50eXBlcyc7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uQ29tcG9uZW50LFxuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcEJ1dHRvbkNvbXBvbmVudCxcbiAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50LFxuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50XG59IGZyb20gJy4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWJ1dHRvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFZpZXdIYW5kbGVyc1NlcnZpY2UgfSBmcm9tICcuL2NvcGlsb3QtY2hhdC12aWV3LWhhbmRsZXJzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90Q29tcG9uZW50LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyQ29tcG9uZW50LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db21wb25lbnQsXG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzVXBCdXR0b25Db21wb25lbnQsXG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZWFkQWxvdWRCdXR0b25Db21wb25lbnQsXG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVnZW5lcmF0ZUJ1dHRvbkNvbXBvbmVudCxcbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29tcG9uZW50LFxuICAgIENvcGlsb3RDaGF0VG9vbENhbGxzVmlld0NvbXBvbmVudFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiXG4gICAgICBbYXR0ci5kYXRhLW1lc3NhZ2UtaWRdPVwibWVzc2FnZT8uaWRcIj5cbiAgICAgIFxuICAgICAgPCEtLSBNYXJrZG93biBSZW5kZXJlciAtLT5cbiAgICAgIEBpZiAobWFya2Rvd25SZW5kZXJlclRlbXBsYXRlIHx8IG1hcmtkb3duUmVuZGVyZXJDb21wb25lbnQpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cIm1hcmtkb3duUmVuZGVyZXJUZW1wbGF0ZSB8fCBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50XCJcbiAgICAgICAgICBbY29udGV4dF09XCJtYXJrZG93blJlbmRlcmVyQ29udGV4dCgpXCJcbiAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlckNvbXBvbmVudFwiXG4gICAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyXG4gICAgICAgICAgW2NvbnRlbnRdPVwibWVzc2FnZT8uY29udGVudCB8fCAnJ1wiXG4gICAgICAgICAgW2lucHV0Q2xhc3NdPVwibWFya2Rvd25SZW5kZXJlckNsYXNzXCI+XG4gICAgICAgIDwvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyPlxuICAgICAgfVxuICAgICAgXG4gICAgICA8IS0tIFRvb2wgQ2FsbHMgVmlldyAtLT5cbiAgICAgIEBpZiAodG9vbENhbGxzVmlld1RlbXBsYXRlIHx8IHRvb2xDYWxsc1ZpZXdDb21wb25lbnQpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cInRvb2xDYWxsc1ZpZXdUZW1wbGF0ZSB8fCB0b29sQ2FsbHNWaWV3Q29tcG9uZW50XCJcbiAgICAgICAgICBbY29udGV4dF09XCJ0b29sQ2FsbHNWaWV3Q29udGV4dCgpXCJcbiAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXdDb21wb25lbnRcIj5cbiAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICB9IEBlbHNlIGlmIChtZXNzYWdlPy50b29sQ2FsbHMgJiYgbWVzc2FnZS50b29sQ2FsbHMubGVuZ3RoID4gMCkge1xuICAgICAgICA8Y29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlld1xuICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VcIlxuICAgICAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlc1wiXG4gICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj5cbiAgICAgICAgPC9jb3BpbG90LWNoYXQtdG9vbC1jYWxscy12aWV3PlxuICAgICAgfVxuICAgICAgXG4gICAgICA8IS0tIFRvb2xiYXI6IHNob3cgb25seSB3aGVuIHRoZXJlIGlzIGFzc2lzdGFudCB0ZXh0IGNvbnRlbnQgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9vbGJhclZpc2libGUgJiYgaGFzTWVzc2FnZUNvbnRlbnQoKVwiPlxuICAgICAgICBAaWYgKHRvb2xiYXJUZW1wbGF0ZSB8fCB0b29sYmFyQ29tcG9uZW50KSB7XG4gICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgW3Nsb3RdPVwidG9vbGJhclRlbXBsYXRlIHx8IHRvb2xiYXJDb21wb25lbnRcIlxuICAgICAgICAgICAgW2NvbnRleHRdPVwidG9vbGJhckNvbnRleHQoKVwiXG4gICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29tcG9uZW50XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyIFtpbnB1dENsYXNzXT1cInRvb2xiYXJDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgIDwhLS0gQ29weSBidXR0b24gLS0+XG4gICAgICAgICAgICAgIEBpZiAoY29weUJ1dHRvblRlbXBsYXRlIHx8IGNvcHlCdXR0b25Db21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJjb3B5QnV0dG9uVGVtcGxhdGUgfHwgY29weUJ1dHRvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7IGNvbnRlbnQ6IG1lc3NhZ2U/LmNvbnRlbnQgfHwgJycgfVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cImNvcHlCdXR0b25PdXRwdXRzXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1jb3B5LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibWVzc2FnZT8uY29udGVudFwiXG4gICAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJjb3B5QnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGFuZGxlQ29weSgpXCI+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtY29weS1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDwhLS0gVGh1bWJzIHVwIGJ1dHRvbiAtIHNob3cgaWYgY3VzdG9tIHNsb3QgcHJvdmlkZWQgT1IgaWYgaGFuZGxlciBhdmFpbGFibGUgYXQgdG9wIGxldmVsIC0tPlxuICAgICAgICAgICAgICBAaWYgKHRodW1ic1VwQnV0dG9uQ29tcG9uZW50IHx8IHRodW1ic1VwQnV0dG9uVGVtcGxhdGUgfHwgaGFuZGxlcnMuaGFzQXNzaXN0YW50VGh1bWJzVXBIYW5kbGVyKCkpIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJ0aHVtYnNVcEJ1dHRvblRlbXBsYXRlIHx8IHRodW1ic1VwQnV0dG9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cImRlZmF1bHRUaHVtYnNVcEJ1dHRvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJ0aHVtYnNVcEJ1dHRvbk91dHB1dHNcIj5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPCEtLSBUaHVtYnMgZG93biBidXR0b24gLSBzaG93IGlmIGN1c3RvbSBzbG90IHByb3ZpZGVkIE9SIGlmIGhhbmRsZXIgYXZhaWxhYmxlIGF0IHRvcCBsZXZlbCAtLT5cbiAgICAgICAgICAgICAgQGlmICh0aHVtYnNEb3duQnV0dG9uQ29tcG9uZW50IHx8IHRodW1ic0Rvd25CdXR0b25UZW1wbGF0ZSB8fCBoYW5kbGVycy5oYXNBc3Npc3RhbnRUaHVtYnNEb3duSGFuZGxlcigpKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwidGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlIHx8IHRodW1ic0Rvd25CdXR0b25Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiZGVmYXVsdFRodW1ic0Rvd25CdXR0b25Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwidGh1bWJzRG93bkJ1dHRvbk91dHB1dHNcIj5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPCEtLSBSZWFkIGFsb3VkIGJ1dHRvbiAtIG9ubHkgc2hvdyBpZiBjdXN0b20gc2xvdCBwcm92aWRlZCAtLT5cbiAgICAgICAgICAgICAgQGlmIChyZWFkQWxvdWRCdXR0b25Db21wb25lbnQgfHwgcmVhZEFsb3VkQnV0dG9uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJyZWFkQWxvdWRCdXR0b25UZW1wbGF0ZSB8fCByZWFkQWxvdWRCdXR0b25Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwicmVhZEFsb3VkQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDwhLS0gUmVnZW5lcmF0ZSBidXR0b24gLSBvbmx5IHNob3cgaWYgY3VzdG9tIHNsb3QgcHJvdmlkZWQgLS0+XG4gICAgICAgICAgICAgIEBpZiAocmVnZW5lcmF0ZUJ1dHRvbkNvbXBvbmVudCB8fCByZWdlbmVyYXRlQnV0dG9uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJyZWdlbmVyYXRlQnV0dG9uVGVtcGxhdGUgfHwgcmVnZW5lcmF0ZUJ1dHRvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7fVwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJyZWdlbmVyYXRlQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDwhLS0gQWRkaXRpb25hbCB0b29sYmFyIGl0ZW1zIC0tPlxuICAgICAgICAgICAgICBAaWYgKGFkZGl0aW9uYWxUb29sYmFySXRlbXMpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbFRvb2xiYXJJdGVtc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAvKiBJbXBvcnQgS2FUZVggc3R5bGVzICovXG4gICAgQGltcG9ydCAna2F0ZXgvZGlzdC9rYXRleC5taW4uY3NzJztcblxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLyogQXRvbSBPbmUgTGlnaHQgdGhlbWUgZm9yIGhpZ2hsaWdodC5qcyAqL1xuICAgIC5obGpzIHtcbiAgICAgIGNvbG9yOiByZ2IoNTYsIDU4LCA2Nik7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAuaGxqcy1jb21tZW50LFxuICAgIC5obGpzLXF1b3RlIHtcbiAgICAgIGNvbG9yOiAjYTBhMWE3O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cblxuICAgIC5obGpzLWRvY3RhZyxcbiAgICAuaGxqcy1mb3JtdWxhLFxuICAgIC5obGpzLWtleXdvcmQge1xuICAgICAgY29sb3I6ICNhNjI2YTQ7XG4gICAgfVxuXG4gICAgLmhsanMtZGVsZXRpb24sXG4gICAgLmhsanMtbmFtZSxcbiAgICAuaGxqcy1zZWN0aW9uLFxuICAgIC5obGpzLXNlbGVjdG9yLXRhZyxcbiAgICAuaGxqcy1zdWJzdCB7XG4gICAgICBjb2xvcjogI2U0NTY0OTtcbiAgICB9XG5cbiAgICAuaGxqcy1saXRlcmFsIHtcbiAgICAgIGNvbG9yOiAjMDE4NGJiO1xuICAgIH1cblxuICAgIC5obGpzLWFkZGl0aW9uLFxuICAgIC5obGpzLWF0dHJpYnV0ZSxcbiAgICAuaGxqcy1tZXRhIC5obGpzLXN0cmluZyxcbiAgICAuaGxqcy1yZWdleHAsXG4gICAgLmhsanMtc3RyaW5nIHtcbiAgICAgIGNvbG9yOiAjNTBhMTRmO1xuICAgIH1cblxuICAgIC5obGpzLWF0dHIsXG4gICAgLmhsanMtbnVtYmVyLFxuICAgIC5obGpzLXNlbGVjdG9yLWF0dHIsXG4gICAgLmhsanMtc2VsZWN0b3ItY2xhc3MsXG4gICAgLmhsanMtc2VsZWN0b3ItcHNldWRvLFxuICAgIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLFxuICAgIC5obGpzLXR5cGUsXG4gICAgLmhsanMtdmFyaWFibGUge1xuICAgICAgY29sb3I6ICM5ODY4MDE7XG4gICAgfVxuXG4gICAgLmhsanMtcGFyYW1zIHtcbiAgICAgIGNvbG9yOiByZ2IoNTYsIDU4LCA2Nik7XG4gICAgfVxuXG4gICAgLmhsanMtYnVsbGV0LFxuICAgIC5obGpzLWxpbmssXG4gICAgLmhsanMtbWV0YSxcbiAgICAuaGxqcy1zZWxlY3Rvci1pZCxcbiAgICAuaGxqcy1zeW1ib2wsXG4gICAgLmhsanMtdGl0bGUge1xuICAgICAgY29sb3I6ICM0MDc4ZjI7XG4gICAgfVxuXG4gICAgLmhsanMtYnVpbHRfaW4sXG4gICAgLmhsanMtY2xhc3MgLmhsanMtdGl0bGUsXG4gICAgLmhsanMtdGl0bGUuY2xhc3NfIHtcbiAgICAgIGNvbG9yOiAjYzE4NDAxO1xuICAgIH1cblxuICAgIC5obGpzLWVtcGhhc2lzIHtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG5cbiAgICAuaGxqcy1zdHJvbmcge1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB9XG5cbiAgICAuaGxqcy1saW5rIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cblxuICAgIC8qIEF0b20gT25lIERhcmsgdGhlbWUgZm9yIGhpZ2hsaWdodC5qcyAqL1xuICAgIC5kYXJrIC5obGpzIHtcbiAgICAgIGNvbG9yOiAjYWJiMmJmO1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLmRhcmsgLmhsanMtY29tbWVudCxcbiAgICAuZGFyayAuaGxqcy1xdW90ZSB7XG4gICAgICBjb2xvcjogIzVjNjM3MDtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG5cbiAgICAuZGFyayAuaGxqcy1kb2N0YWcsXG4gICAgLmRhcmsgLmhsanMtZm9ybXVsYSxcbiAgICAuZGFyayAuaGxqcy1rZXl3b3JkIHtcbiAgICAgIGNvbG9yOiAjYzY3OGRkO1xuICAgIH1cblxuICAgIC5kYXJrIC5obGpzLWRlbGV0aW9uLFxuICAgIC5kYXJrIC5obGpzLW5hbWUsXG4gICAgLmRhcmsgLmhsanMtc2VjdGlvbixcbiAgICAuZGFyayAuaGxqcy1zZWxlY3Rvci10YWcsXG4gICAgLmRhcmsgLmhsanMtc3Vic3Qge1xuICAgICAgY29sb3I6ICNlMDZjNzU7XG4gICAgfVxuXG4gICAgLmRhcmsgLmhsanMtbGl0ZXJhbCB7XG4gICAgICBjb2xvcjogIzU2YjZjMjtcbiAgICB9XG5cbiAgICAuZGFyayAuaGxqcy1hZGRpdGlvbixcbiAgICAuZGFyayAuaGxqcy1hdHRyaWJ1dGUsXG4gICAgLmRhcmsgLmhsanMtbWV0YSAuaGxqcy1zdHJpbmcsXG4gICAgLmRhcmsgLmhsanMtcmVnZXhwLFxuICAgIC5kYXJrIC5obGpzLXN0cmluZyB7XG4gICAgICBjb2xvcjogIzk4YzM3OTtcbiAgICB9XG5cbiAgICAuZGFyayAuaGxqcy1hdHRyLFxuICAgIC5kYXJrIC5obGpzLW51bWJlcixcbiAgICAuZGFyayAuaGxqcy1zZWxlY3Rvci1hdHRyLFxuICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxuICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLXBzZXVkbyxcbiAgICAuZGFyayAuaGxqcy10ZW1wbGF0ZS12YXJpYWJsZSxcbiAgICAuZGFyayAuaGxqcy10eXBlLFxuICAgIC5kYXJrIC5obGpzLXZhcmlhYmxlIHtcbiAgICAgIGNvbG9yOiAjZDE5YTY2O1xuICAgIH1cblxuICAgIC5kYXJrIC5obGpzLWJ1bGxldCxcbiAgICAuZGFyayAuaGxqcy1saW5rLFxuICAgIC5kYXJrIC5obGpzLW1ldGEsXG4gICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItaWQsXG4gICAgLmRhcmsgLmhsanMtc3ltYm9sLFxuICAgIC5kYXJrIC5obGpzLXRpdGxlIHtcbiAgICAgIGNvbG9yOiAjNjFhZWVlO1xuICAgIH1cblxuICAgIC5kYXJrIC5obGpzLWJ1aWx0X2luLFxuICAgIC5kYXJrIC5obGpzLWNsYXNzIC5obGpzLXRpdGxlLFxuICAgIC5kYXJrIC5obGpzLXRpdGxlLmNsYXNzXyB7XG4gICAgICBjb2xvcjogI2U2YzA3YjtcbiAgICB9XG5cbiAgICAuZGFyayAuaGxqcy1wYXJhbXMge1xuICAgICAgY29sb3I6ICNhYmIyYmY7IC8qIHNhbWUgYXMgcmVndWxhciB0ZXh0ICovXG4gICAgfVxuXG4gICAgLmRhcmsgLmhsanMtZW1waGFzaXMge1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cblxuICAgIC5kYXJrIC5obGpzLXN0cm9uZyB7XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgIH1cblxuICAgIC5kYXJrIC5obGpzLWxpbmsge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb21wb25lbnQge1xuICAvLyBDYXB0dXJlIHRlbXBsYXRlcyBmcm9tIGNvbnRlbnQgcHJvamVjdGlvblxuICBAQ29udGVudENoaWxkKCdtYXJrZG93blJlbmRlcmVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBtYXJrZG93blJlbmRlcmVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxBc3Npc3RhbnRNZXNzYWdlTWFya2Rvd25SZW5kZXJlckNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKCd0b29sYmFyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0b29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxBc3Npc3RhbnRNZXNzYWdlVG9vbGJhckNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKCdjb3B5QnV0dG9uJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBjb3B5QnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKCd0aHVtYnNVcEJ1dHRvbicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGh1bWJzVXBCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRodW1ic1VwQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoJ3RodW1ic0Rvd25CdXR0b24nLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRodW1ic0Rvd25CdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRodW1ic0Rvd25CdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZCgncmVhZEFsb3VkQnV0dG9uJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSByZWFkQWxvdWRCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFJlYWRBbG91ZEJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKCdyZWdlbmVyYXRlQnV0dG9uJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSByZWdlbmVyYXRlQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWdlbmVyYXRlQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoJ3Rvb2xDYWxsc1ZpZXcnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRvb2xDYWxsc1ZpZXdUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIFxuICAvLyBDbGFzcyBpbnB1dHMgZm9yIHN0eWxpbmcgZGVmYXVsdCBjb21wb25lbnRzXG4gIEBJbnB1dCgpIG1hcmtkb3duUmVuZGVyZXJDbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgdG9vbGJhckNsYXNzPzogc3RyaW5nO1xuICBASW5wdXQoKSBjb3B5QnV0dG9uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRodW1ic1VwQnV0dG9uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRodW1ic0Rvd25CdXR0b25DbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgcmVhZEFsb3VkQnV0dG9uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlZ2VuZXJhdGVCdXR0b25DbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgdG9vbENhbGxzVmlld0NsYXNzPzogc3RyaW5nO1xuICBcbiAgLy8gQ29tcG9uZW50IGlucHV0cyBmb3Igb3ZlcnJpZGVzXG4gIEBJbnB1dCgpIG1hcmtkb3duUmVuZGVyZXJDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gIEBJbnB1dCgpIHRvb2xiYXJDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gIEBJbnB1dCgpIGNvcHlCdXR0b25Db21wb25lbnQ/OiBUeXBlPGFueT47XG4gIEBJbnB1dCgpIHRodW1ic1VwQnV0dG9uQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBASW5wdXQoKSB0aHVtYnNEb3duQnV0dG9uQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBASW5wdXQoKSByZWFkQWxvdWRCdXR0b25Db21wb25lbnQ/OiBUeXBlPGFueT47XG4gIEBJbnB1dCgpIHJlZ2VuZXJhdGVCdXR0b25Db21wb25lbnQ/OiBUeXBlPGFueT47XG4gIEBJbnB1dCgpIHRvb2xDYWxsc1ZpZXdDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gIFxuICAvLyBSZWd1bGFyIGlucHV0c1xuICBASW5wdXQoKSBtZXNzYWdlITogQXNzaXN0YW50TWVzc2FnZTtcbiAgQElucHV0KCkgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuICBASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgYWRkaXRpb25hbFRvb2xiYXJJdGVtcz86IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHRvb2xiYXJWaXNpYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2V0IGlucHV0Q2xhc3ModmFsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmN1c3RvbUNsYXNzLnNldCh2YWwpO1xuICB9XG4gIFxuICAvLyBESSBzZXJ2aWNlIGV4cG9zZXMgaGFuZGxlciBhdmFpbGFiaWxpdHkgc2NvcGVkIHRvIENvcGlsb3RDaGF0Vmlld1xuICAvLyBNYWtlIGl0IG9wdGlvbmFsIHdpdGggYSBkZWZhdWx0IGZhbGxiYWNrIGZvciB0ZXN0aW5nXG4gIGhhbmRsZXJzOiBDb3BpbG90Q2hhdFZpZXdIYW5kbGVyc1NlcnZpY2U7XG4gIFxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzU2VydmljZSkgaGFuZGxlcnM/OiBDb3BpbG90Q2hhdFZpZXdIYW5kbGVyc1NlcnZpY2UgfCBudWxsKSB7XG4gICAgdGhpcy5oYW5kbGVycyA9IGhhbmRsZXJzIHx8IG5ldyBDb3BpbG90Q2hhdFZpZXdIYW5kbGVyc1NlcnZpY2UoKTtcbiAgfVxuICBcbiAgLy8gT3V0cHV0IGV2ZW50c1xuICBAT3V0cHV0KCkgdGh1bWJzVXAgPSBuZXcgRXZlbnRFbWl0dGVyPENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uVGh1bWJzVXBQcm9wcz4oKTtcbiAgQE91dHB1dCgpIHRodW1ic0Rvd24gPSBuZXcgRXZlbnRFbWl0dGVyPENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uVGh1bWJzRG93blByb3BzPigpO1xuICBAT3V0cHV0KCkgcmVhZEFsb3VkID0gbmV3IEV2ZW50RW1pdHRlcjxDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblJlYWRBbG91ZFByb3BzPigpO1xuICBAT3V0cHV0KCkgcmVnZW5lcmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25SZWdlbmVyYXRlUHJvcHM+KCk7XG4gIFxuICAvLyBTaWduYWxzXG4gIGN1c3RvbUNsYXNzID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgXG4gIC8vIENvbXB1dGVkIHZhbHVlc1xuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBjbihcbiAgICAgIFwicHJvc2UgbWF4LXctZnVsbCBicmVhay13b3JkcyBkYXJrOnByb3NlLWludmVydFwiLFxuICAgICAgdGhpcy5jdXN0b21DbGFzcygpXG4gICAgKTtcbiAgfSk7XG4gIFxuICAvLyBEZWZhdWx0IGNvbXBvbmVudHNcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRUaHVtYnNVcEJ1dHRvbkNvbXBvbmVudCA9IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRodW1ic1VwQnV0dG9uQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFRodW1ic0Rvd25CdXR0b25Db21wb25lbnQgPSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNEb3duQnV0dG9uQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVuZGVyZXJDb21wb25lbnQgPSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlckNvbXBvbmVudDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb21wb25lbnQgPSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbkNvbXBvbmVudCA9IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db21wb25lbnQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXdDb21wb25lbnQgPSBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXdDb21wb25lbnQ7XG4gIFxuICAvLyBDb250ZXh0IGZvciBzbG90cyAocmVhY3RpdmUgdmlhIHNpZ25hbHMpXG4gIG1hcmtkb3duUmVuZGVyZXJDb250ZXh0ID0gY29tcHV0ZWQ8QXNzaXN0YW50TWVzc2FnZU1hcmtkb3duUmVuZGVyZXJDb250ZXh0PigoKSA9PiAoe1xuICAgIGNvbnRlbnQ6IHRoaXMubWVzc2FnZT8uY29udGVudCB8fCAnJ1xuICB9KSk7XG4gIFxuICAvLyBPdXRwdXQgbWFwcyBmb3Igc2xvdHNcbiAgY29weUJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlQ29weSgpIH07XG4gIHRodW1ic1VwQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVUaHVtYnNVcCgpIH07XG4gIHRodW1ic0Rvd25CdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVRodW1ic0Rvd24oKSB9O1xuICByZWFkQWxvdWRCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVJlYWRBbG91ZCgpIH07XG4gIHJlZ2VuZXJhdGVCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVJlZ2VuZXJhdGUoKSB9O1xuICBcbiAgdG9vbGJhckNvbnRleHQgPSBjb21wdXRlZDxBc3Npc3RhbnRNZXNzYWdlVG9vbGJhckNvbnRleHQ+KCgpID0+ICh7XG4gICAgY2hpbGRyZW46IG51bGwgLy8gV2lsbCBiZSBwb3B1bGF0ZWQgYnkgdGhlIHRvb2xiYXIgY29udGVudFxuICB9KSk7XG5cbiAgLy8gUmV0dXJuIHRydWUgaWYgYXNzaXN0YW50IG1lc3NhZ2UgaGFzIG5vbi1lbXB0eSB0ZXh0IGNvbnRlbnRcbiAgaGFzTWVzc2FnZUNvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmF3ID0gKHRoaXMubWVzc2FnZT8uY29udGVudCA/PyAnJykgYXMgYW55O1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0eXBlb2YgcmF3ID09PSAnc3RyaW5nJyA/IHJhdyA6IFN0cmluZyhyYXcgPz8gJycpO1xuICAgIHJldHVybiBjb250ZW50LnRyaW0oKS5sZW5ndGggPiAwO1xuICB9XG4gIFxuICB0b29sQ2FsbHNWaWV3Q29udGV4dCA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzLFxuICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmdcbiAgfSkpO1xuICBcbiAgaGFuZGxlQ29weSgpOiB2b2lkIHtcbiAgICAvLyBDb3B5IGlzIGhhbmRsZWQgYnkgdGhlIGJ1dHRvbiBjb21wb25lbnQgaXRzZWxmXG4gICAgLy8gVGhpcyBpcyBqdXN0IGZvciBhbnkgYWRkaXRpb25hbCBsb2dpYyBpZiBuZWVkZWRcbiAgfVxuICBcbiAgaGFuZGxlVGh1bWJzVXAoKTogdm9pZCB7XG4gICAgdGhpcy50aHVtYnNVcC5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlIH0pO1xuICB9XG4gIFxuICBoYW5kbGVUaHVtYnNEb3duKCk6IHZvaWQge1xuICAgIHRoaXMudGh1bWJzRG93bi5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlIH0pO1xuICB9XG4gIFxuICBoYW5kbGVSZWFkQWxvdWQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWFkQWxvdWQuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSB9KTtcbiAgfVxuICBcbiAgaGFuZGxlUmVnZW5lcmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2VuZXJhdGUuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSB9KTtcbiAgfVxufVxuIl19
@@ -131,13 +131,19 @@ export class CopilotChatToolCallsViewComponent {
131
131
  // Create the component
132
132
  const componentRef = this.container.createComponent(componentClass);
133
133
  this.componentRefs.set(toolCallId, componentRef);
134
- // Set inputs on the component
135
- for (const [key, value] of Object.entries(props)) {
136
- try {
137
- componentRef.setInput(key, value);
138
- }
139
- catch (e) {
140
- // Input might not exist on the component, which is fine
134
+ // Determine declared inputs to avoid Angular NG0303 console errors
135
+ const cmpDef = componentClass.ɵcmp;
136
+ const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
137
+ // Prefer a single 'props' input if declared
138
+ if (declaredInputs.has('props')) {
139
+ componentRef.setInput('props', props);
140
+ }
141
+ else {
142
+ // Otherwise, set only inputs that the component actually declares
143
+ for (const [key, value] of Object.entries(props)) {
144
+ if (declaredInputs.has(key)) {
145
+ componentRef.setInput(key, value);
146
+ }
141
147
  }
142
148
  }
143
149
  // Trigger change detection
@@ -213,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
213
219
  type: ViewChild,
214
220
  args: ["dynamicContainer", { read: ViewContainerRef }]
215
221
  }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLGdCQUFnQixFQUVoQixNQUFNLEVBQ04sU0FBUyxFQUlULFdBQVcsRUFFWCx1QkFBdUIsRUFDdkIsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU8vQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQU0xRDs7OztHQUlHO0FBc0JILE1BQU0sT0FBTyxpQ0FBaUM7SUFHakIsT0FBTyxDQUFvQjtJQUM3QyxRQUFRLEdBQWMsRUFBRSxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFHbkIsU0FBUyxDQUFvQjtJQUU3QixVQUFVLEdBQTZCLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtRQUN2RSxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUMsQ0FBQztJQUNLLGFBQWEsR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMxRCxhQUFhLEdBR2pCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFZCw2QkFBNkI7SUFDckIsYUFBYSxHQUFHLE1BQU0sQ0FBMEIsSUFBSSxDQUFDLENBQUM7SUFDdEQsY0FBYyxHQUFHLE1BQU0sQ0FBWSxFQUFFLENBQUMsQ0FBQztJQUN2QyxlQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhDLGVB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Qy9DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7R0FjVDtpQkFDRjs4QkFJNEIsT0FBTztzQkFBakMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRSxTQUFTO3NCQURoQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBpbmplY3QsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB0eXBlIHtcbiAgQXNzaXN0YW50TWVzc2FnZSxcbiAgTWVzc2FnZSxcbiAgVG9vbENhbGwsXG4gIFRvb2xNZXNzYWdlLFxufSBmcm9tIFwiQGFnLXVpL2NvcmVcIjtcbmltcG9ydCB7IFRvb2xDYWxsU3RhdHVzIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9jb3JlXCI7XG5pbXBvcnQgeyBDb3BpbG90S2l0U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NvcGlsb3RraXQuc2VydmljZVwiO1xuaW1wb3J0IHsgcGFydGlhbEpTT05QYXJzZSB9IGZyb20gXCJAY29waWxvdGtpdG5leHQvc2hhcmVkXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFRvb2xDYWxsUHJvcHMsXG4gIFRvb2xDYWxsUmVuZGVyLFxufSBmcm9tIFwiLi4vLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciByZW5kZXJpbmcgYWxsIHRvb2wgY2FsbHMgZm9yIGFuIGFzc2lzdGFudCBtZXNzYWdlLlxuICogVGhpcyBjb21wb25lbnQgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgbWVzc2FnZSdzIHRvb2wgY2FsbHMgYW5kIHJlbmRlcnMgZWFjaCBvbmVcbiAqIHVzaW5nIHRoZSByZWdpc3RlcmVkIHJlbmRlciBmdW5jdGlvbnMgaW4gQ29waWxvdEtpdFNlcnZpY2UuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtdG9vbC1jYWxscy12aWV3XCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICBAZm9yICh0b29sQ2FsbCBvZiBtZXNzYWdlPy50b29sQ2FsbHMgPz8gW107IHRyYWNrIHRvb2xDYWxsLmlkKSB7XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICNkeW5hbWljQ29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0VGVtcGxhdGVGb3JUb29sQ2FsbCh0b29sQ2FsbCkgYXMgdGVtcGxhdGVEYXRhXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgdGVtcGxhdGVEYXRhLnRlbXBsYXRlO1xuICAgICAgICAgICAgICBjb250ZXh0OiB0ZW1wbGF0ZURhdGEuY29udGV4dFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXdDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBtZXNzYWdlITogQXNzaXN0YW50TWVzc2FnZTtcbiAgQElucHV0KCkgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuICBASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKFwiZHluYW1pY0NvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgcHJpdmF0ZSBjb250YWluZXI/OiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIHByaXZhdGUgY29waWxvdGtpdDogQ29waWxvdEtpdFNlcnZpY2UgfCBudWxsID0gaW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuICBwcml2YXRlIGNvbXBvbmVudFJlZnM6IE1hcDxzdHJpbmcsIENvbXBvbmVudFJlZjxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUNhY2hlOiBNYXA8XG4gICAgc3RyaW5nLFxuICAgIHsgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47IGNvbnRleHQ6IGFueSB9XG4gID4gPSBuZXcgTWFwKCk7XG5cbiAgLy8gU2lnbmFscyBmb3IgcmVhY3RpdmUgc3RhdGVcbiAgcHJpdmF0ZSBtZXNzYWdlU2lnbmFsID0gc2lnbmFsPEFzc2lzdGFudE1lc3NhZ2UgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBtZXNzYWdlc1NpZ25hbCA9IHNpZ25hbDxNZXNzYWdlW10+KFtdKTtcbiAgcHJpdmF0ZSBpc0xvYWRpbmdTaWduYWwgPSBzaWduYWwoZmFsc2UpO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlckFsbFRvb2xDYWxscygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wibWVzc2FnZVwiXSkge1xuICAgICAgdGhpcy5tZXNzYWdlU2lnbmFsLnNldCh0aGlzLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1tcIm1lc3NhZ2VzXCJdKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VzU2lnbmFsLnNldCh0aGlzLm1lc3NhZ2VzKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJpc0xvYWRpbmdcIl0pIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nU2lnbmFsLnNldCh0aGlzLmlzTG9hZGluZyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJBbGxUb29sQ2FsbHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIENsZWFuIHVwIGFsbCBjb21wb25lbnQgcmVmc1xuICAgIHRoaXMuY29tcG9uZW50UmVmcy5mb3JFYWNoKChyZWYpID0+IHJlZi5kZXN0cm95KCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmcy5jbGVhcigpO1xuICAgIHRoaXMudGVtcGxhdGVDYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgZ2V0VGVtcGxhdGVGb3JUb29sQ2FsbChcbiAgICB0b29sQ2FsbDogVG9vbENhbGxcbiAgKTogeyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjsgY29udGV4dDogYW55IH0gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZUNhY2hlLmdldCh0b29sQ2FsbC5pZCkgfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQWxsVG9vbENhbGxzKCk6IHZvaWQge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VTaWduYWwoKTtcbiAgICBpZiAoIW1lc3NhZ2UgfHwgIW1lc3NhZ2UudG9vbENhbGxzIHx8IG1lc3NhZ2UudG9vbENhbGxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENsZWFyIGV4aXN0aW5nIHJlbmRlcnNcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMuZm9yRWFjaCgocmVmKSA9PiByZWYuZGVzdHJveSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMuY2xlYXIoKTtcbiAgICB0aGlzLnRlbXBsYXRlQ2FjaGUuY2xlYXIoKTtcblxuICAgIGlmICghdGhpcy5jb3BpbG90a2l0IHx8ICF0aGlzLmNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlc1NpZ25hbCgpO1xuICAgIGNvbnN0IGlzTG9hZGluZyA9IHRoaXMuaXNMb2FkaW5nU2lnbmFsKCk7XG5cbiAgICAvLyBSZW5kZXIgZWFjaCB0b29sIGNhbGxcbiAgICBtZXNzYWdlLnRvb2xDYWxscy5mb3JFYWNoKCh0b29sQ2FsbCkgPT4ge1xuICAgICAgY29uc3QgdG9vbE1lc3NhZ2UgPSBtZXNzYWdlcy5maW5kKFxuICAgICAgICAobSkgPT5cbiAgICAgICAgICBtLnJvbGUgPT09IFwidG9vbFwiICYmIChtIGFzIFRvb2xNZXNzYWdlKS50b29sQ2FsbElkID09PSB0b29sQ2FsbC5pZFxuICAgICAgKSBhcyBUb29sTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5yZW5kZXJTaW5nbGVUb29sQ2FsbCh0b29sQ2FsbCwgdG9vbE1lc3NhZ2UsIGlzTG9hZGluZyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclNpbmdsZVRvb2xDYWxsKFxuICAgIHRvb2xDYWxsOiBUb29sQ2FsbCxcbiAgICB0b29sTWVzc2FnZTogVG9vbE1lc3NhZ2UgfCB1bmRlZmluZWQsXG4gICAgaXNMb2FkaW5nOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb3BpbG90a2l0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2V0IGN1cnJlbnQgcmVuZGVyIHRvb2wgY2FsbHNcbiAgICBjb25zdCBjdXJyZW50UmVuZGVyVG9vbENhbGxzID0gdGhpcy5jb3BpbG90a2l0LmN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoKTtcblxuICAgIC8vIEZpbmQgdGhlIHJlbmRlciBjb25maWcgZm9yIHRoaXMgdG9vbCBjYWxsIGJ5IG5hbWVcbiAgICAvLyBBbHNvIGNoZWNrIGZvciB3aWxkY2FyZCAoKikgcmVuZGVycyBpZiBubyBleGFjdCBtYXRjaFxuICAgIGNvbnN0IHJlbmRlckNvbmZpZyA9XG4gICAgICBjdXJyZW50UmVuZGVyVG9vbENhbGxzLmZpbmQoXG4gICAgICAgIChyYzogVG9vbENhbGxSZW5kZXIpID0+IHJjLm5hbWUgPT09IHRvb2xDYWxsLmZ1bmN0aW9uLm5hbWVcbiAgICAgICkgfHwgY3VycmVudFJlbmRlclRvb2xDYWxscy5maW5kKChyYzogVG9vbENhbGxSZW5kZXIpID0+IHJjLm5hbWUgPT09IFwiKlwiKTtcblxuICAgIGlmICghcmVuZGVyQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgdGhlIGFyZ3VtZW50cyBpZiB0aGV5J3JlIGEgc3RyaW5nXG4gICAgY29uc3QgYXJncyA9IHBhcnRpYWxKU09OUGFyc2UodG9vbENhbGwuZnVuY3Rpb24uYXJndW1lbnRzKTtcblxuICAgIC8vIERldGVybWluZSBzdGF0dXNcbiAgICBsZXQgc3RhdHVzOiBUb29sQ2FsbFN0YXR1cztcbiAgICBpZiAodG9vbE1lc3NhZ2UpIHtcbiAgICAgIHN0YXR1cyA9IFRvb2xDYWxsU3RhdHVzLkNvbXBsZXRlO1xuICAgIH0gZWxzZSBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICBzdGF0dXMgPSBUb29sQ2FsbFN0YXR1cy5JblByb2dyZXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMgPSBUb29sQ2FsbFN0YXR1cy5Db21wbGV0ZTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgcHJvcHMgYmFzZWQgb24gc3RhdHVzIC0gdXNlIGRpc2NyaW1pbmF0ZWQgdW5pb24gcHJvcGVybHlcbiAgICBsZXQgcHJvcHM6IFRvb2xDYWxsUHJvcHM7XG4gICAgaWYgKHN0YXR1cyA9PT0gVG9vbENhbGxTdGF0dXMuSW5Qcm9ncmVzcykge1xuICAgICAgcHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IHRvb2xDYWxsLmZ1bmN0aW9uLm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxuICAgICAgICBhcmdzOiBhcmdzLCAvLyBQYXJ0aWFsIGFyZ3MgZm9yIEluUHJvZ3Jlc3NcbiAgICAgICAgc3RhdHVzOiBUb29sQ2FsbFN0YXR1cy5JblByb2dyZXNzLFxuICAgICAgICByZXN1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbXBsZXRlIHN0YXR1c1xuICAgICAgcHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IHRvb2xDYWxsLmZ1bmN0aW9uLm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxuICAgICAgICBhcmdzOiBhcmdzLCAvLyBGdWxsIGFyZ3MgZm9yIENvbXBsZXRlXG4gICAgICAgIHN0YXR1czogVG9vbENhbGxTdGF0dXMuQ29tcGxldGUsXG4gICAgICAgIHJlc3VsdDogdG9vbE1lc3NhZ2U/LmNvbnRlbnQgfHwgXCJcIixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgcmVuZGVyIGlzIGEgQ29tcG9uZW50IGNsYXNzIG9yIFRlbXBsYXRlUmVmXG4gICAgaWYgKHRoaXMuaXNDb21wb25lbnRDbGFzcyhyZW5kZXJDb25maWcucmVuZGVyKSkge1xuICAgICAgLy8gQ3JlYXRlIGNvbXBvbmVudCBkeW5hbWljYWxseVxuICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnQodG9vbENhbGwuaWQsIHJlbmRlckNvbmZpZy5yZW5kZXIsIHByb3BzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNUZW1wbGF0ZVJlZihyZW5kZXJDb25maWcucmVuZGVyKSkge1xuICAgICAgLy8gVXNlIHRlbXBsYXRlXG4gICAgICB0aGlzLnJlbmRlclRlbXBsYXRlKHRvb2xDYWxsLmlkLCByZW5kZXJDb25maWcucmVuZGVyLCBwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb21wb25lbnQoXG4gICAgdG9vbENhbGxJZDogc3RyaW5nLFxuICAgIGNvbXBvbmVudENsYXNzOiBUeXBlPGFueT4sXG4gICAgcHJvcHM6IFRvb2xDYWxsUHJvcHNcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgY29tcG9uZW50XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudENsYXNzKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMuc2V0KHRvb2xDYWxsSWQsIGNvbXBvbmVudFJlZik7XG5cbiAgICAvLyBTZXQgaW5wdXRzIG9uIHRoZSBjb21wb25lbnRcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wcykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChrZXksIHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSW5wdXQgbWlnaHQgbm90IGV4aXN0IG9uIHRoZSBjb21wb25lbnQsIHdoaWNoIGlzIGZpbmVcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJUZW1wbGF0ZShcbiAgICB0b29sQ2FsbElkOiBzdHJpbmcsXG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJvcHM6IFRvb2xDYWxsUHJvcHNcbiAgKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZUNhY2hlLnNldCh0b29sQ2FsbElkLCB7XG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgJGltcGxpY2l0OiBwcm9wcyxcbiAgICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgICBhcmdzOiBwcm9wcy5hcmdzLFxuICAgICAgICBzdGF0dXM6IHByb3BzLnN0YXR1cyxcbiAgICAgICAgcmVzdWx0OiBwcm9wcy5yZXN1bHQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbXBvbmVudENsYXNzKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBUeXBlPGFueT4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiAmJiB2YWx1ZS5wcm90b3R5cGU7XG4gIH1cblxuICBwcml2YXRlIGlzVGVtcGxhdGVSZWYodmFsdWU6IGFueSk6IHZhbHVlIGlzIFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICB9XG59XG4iXX0=
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLGdCQUFnQixFQUVoQixNQUFNLEVBQ04sU0FBUyxFQUlULFdBQVcsRUFFWCx1QkFBdUIsRUFDdkIsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU8vQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQU0xRDs7OztHQUlHO0FBc0JILE1BQU0sT0FBTyxpQ0FBaUM7SUFHakIsT0FBTyxDQUFvQjtJQUM3QyxRQUFRLEdBQWMsRUFBRSxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFHbkIsU0FBUyxDQUFvQjtJQUU3QixVQUFVLEdBQTZCLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtRQUN2RSxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUMsQ0FBQztJQUNLLGFBQWEsR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMxRCxhQUFhLEdBR2pCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFZCw2QkFBNkI7SUFDckIsYUFBYSxHQUFHLE1BQU0sQ0FBMEIsSUFBSSxDQUFDLENBQUM7SUFDdEQsY0FBYyxHQUFHLE1BQU0sQ0FBWSxFQUFFLENBQUMsQ0FBQztJQUN2QyxlQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhDLGVB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TyxhQUFhLENBQUMsS0FBVTtRQUM5QixPQUFPLEtBQUssWUFBWSxXQUFXLENBQUM7SUFDdEMsQ0FBQzt3R0FsTlUsaUNBQWlDOzRGQUFqQyxpQ0FBaUMsZ1FBT0wsZ0JBQWdCLGtEQXZCN0M7Ozs7Ozs7Ozs7Ozs7O0dBY1QsMkRBaEJTLFlBQVk7OzRGQWtCWCxpQ0FBaUM7a0JBckI3QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7aUJBQ0Y7OEJBSTRCLE9BQU87c0JBQWpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0UsU0FBUztzQkFEaEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgaW5qZWN0LFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEFzc2lzdGFudE1lc3NhZ2UsXG4gIE1lc3NhZ2UsXG4gIFRvb2xDYWxsLFxuICBUb29sTWVzc2FnZSxcbn0gZnJvbSBcIkBhZy11aS9jb3JlXCI7XG5pbXBvcnQgeyBUb29sQ2FsbFN0YXR1cyB9IGZyb20gXCJAY29waWxvdGtpdG5leHQvY29yZVwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9jb3BpbG90a2l0LnNlcnZpY2VcIjtcbmltcG9ydCB7IHBhcnRpYWxKU09OUGFyc2UgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L3NoYXJlZFwiO1xuaW1wb3J0IHR5cGUge1xuICBUb29sQ2FsbFByb3BzLFxuICBUb29sQ2FsbFJlbmRlcixcbn0gZnJvbSBcIi4uLy4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGFsbCB0b29sIGNhbGxzIGZvciBhbiBhc3Npc3RhbnQgbWVzc2FnZS5cbiAqIFRoaXMgY29tcG9uZW50IGl0ZXJhdGVzIHRocm91Z2ggdGhlIG1lc3NhZ2UncyB0b29sIGNhbGxzIGFuZCByZW5kZXJzIGVhY2ggb25lXG4gKiB1c2luZyB0aGUgcmVnaXN0ZXJlZCByZW5kZXIgZnVuY3Rpb25zIGluIENvcGlsb3RLaXRTZXJ2aWNlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlld1wiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGZvciAodG9vbENhbGwgb2YgbWVzc2FnZT8udG9vbENhbGxzID8/IFtdOyB0cmFjayB0b29sQ2FsbC5pZCkge1xuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAjZHluYW1pY0NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFRlbXBsYXRlRm9yVG9vbENhbGwodG9vbENhbGwpIGFzIHRlbXBsYXRlRGF0YVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIHRlbXBsYXRlRGF0YS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDogdGVtcGxhdGVEYXRhLmNvbnRleHRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRUb29sQ2FsbHNWaWV3Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbWVzc2FnZSE6IEFzc2lzdGFudE1lc3NhZ2U7XG4gIEBJbnB1dCgpIG1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcbiAgQElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChcImR5bmFtaWNDb250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gIHByaXZhdGUgY29udGFpbmVyPzogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcml2YXRlIGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlIHwgbnVsbCA9IGluamVjdChDb3BpbG90S2l0U2VydmljZSwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWZzOiBNYXA8c3RyaW5nLCBDb21wb25lbnRSZWY8YW55Pj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgdGVtcGxhdGVDYWNoZTogTWFwPFxuICAgIHN0cmluZyxcbiAgICB7IHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+OyBjb250ZXh0OiBhbnkgfVxuICA+ID0gbmV3IE1hcCgpO1xuXG4gIC8vIFNpZ25hbHMgZm9yIHJlYWN0aXZlIHN0YXRlXG4gIHByaXZhdGUgbWVzc2FnZVNpZ25hbCA9IHNpZ25hbDxBc3Npc3RhbnRNZXNzYWdlIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgbWVzc2FnZXNTaWduYWwgPSBzaWduYWw8TWVzc2FnZVtdPihbXSk7XG4gIHByaXZhdGUgaXNMb2FkaW5nU2lnbmFsID0gc2lnbmFsKGZhbHNlKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJBbGxUb29sQ2FsbHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcIm1lc3NhZ2VcIl0pIHtcbiAgICAgIHRoaXMubWVzc2FnZVNpZ25hbC5zZXQodGhpcy5tZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJtZXNzYWdlc1wiXSkge1xuICAgICAgdGhpcy5tZXNzYWdlc1NpZ25hbC5zZXQodGhpcy5tZXNzYWdlcyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzW1wiaXNMb2FkaW5nXCJdKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZ1NpZ25hbC5zZXQodGhpcy5pc0xvYWRpbmcpO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyQWxsVG9vbENhbGxzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBDbGVhbiB1cCBhbGwgY29tcG9uZW50IHJlZnNcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMuZm9yRWFjaCgocmVmKSA9PiByZWYuZGVzdHJveSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMuY2xlYXIoKTtcbiAgICB0aGlzLnRlbXBsYXRlQ2FjaGUuY2xlYXIoKTtcbiAgfVxuXG4gIGdldFRlbXBsYXRlRm9yVG9vbENhbGwoXG4gICAgdG9vbENhbGw6IFRvb2xDYWxsXG4gICk6IHsgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47IGNvbnRleHQ6IGFueSB9IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVDYWNoZS5nZXQodG9vbENhbGwuaWQpIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckFsbFRvb2xDYWxscygpOiB2b2lkIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlU2lnbmFsKCk7XG4gICAgaWYgKCFtZXNzYWdlIHx8ICFtZXNzYWdlLnRvb2xDYWxscyB8fCBtZXNzYWdlLnRvb2xDYWxscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDbGVhciBleGlzdGluZyByZW5kZXJzXG4gICAgdGhpcy5jb21wb25lbnRSZWZzLmZvckVhY2goKHJlZikgPT4gcmVmLmRlc3Ryb3koKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWZzLmNsZWFyKCk7XG4gICAgdGhpcy50ZW1wbGF0ZUNhY2hlLmNsZWFyKCk7XG5cbiAgICBpZiAoIXRoaXMuY29waWxvdGtpdCB8fCAhdGhpcy5jb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMubWVzc2FnZXNTaWduYWwoKTtcbiAgICBjb25zdCBpc0xvYWRpbmcgPSB0aGlzLmlzTG9hZGluZ1NpZ25hbCgpO1xuXG4gICAgLy8gUmVuZGVyIGVhY2ggdG9vbCBjYWxsXG4gICAgbWVzc2FnZS50b29sQ2FsbHMuZm9yRWFjaCgodG9vbENhbGwpID0+IHtcbiAgICAgIGNvbnN0IHRvb2xNZXNzYWdlID0gbWVzc2FnZXMuZmluZChcbiAgICAgICAgKG0pID0+XG4gICAgICAgICAgbS5yb2xlID09PSBcInRvb2xcIiAmJiAobSBhcyBUb29sTWVzc2FnZSkudG9vbENhbGxJZCA9PT0gdG9vbENhbGwuaWRcbiAgICAgICkgYXMgVG9vbE1lc3NhZ2UgfCB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMucmVuZGVyU2luZ2xlVG9vbENhbGwodG9vbENhbGwsIHRvb2xNZXNzYWdlLCBpc0xvYWRpbmcpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTaW5nbGVUb29sQ2FsbChcbiAgICB0b29sQ2FsbDogVG9vbENhbGwsXG4gICAgdG9vbE1lc3NhZ2U6IFRvb2xNZXNzYWdlIHwgdW5kZWZpbmVkLFxuICAgIGlzTG9hZGluZzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29waWxvdGtpdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdldCBjdXJyZW50IHJlbmRlciB0b29sIGNhbGxzXG4gICAgY29uc3QgY3VycmVudFJlbmRlclRvb2xDYWxscyA9IHRoaXMuY29waWxvdGtpdC5jdXJyZW50UmVuZGVyVG9vbENhbGxzKCk7XG5cbiAgICAvLyBGaW5kIHRoZSByZW5kZXIgY29uZmlnIGZvciB0aGlzIHRvb2wgY2FsbCBieSBuYW1lXG4gICAgLy8gQWxzbyBjaGVjayBmb3Igd2lsZGNhcmQgKCopIHJlbmRlcnMgaWYgbm8gZXhhY3QgbWF0Y2hcbiAgICBjb25zdCByZW5kZXJDb25maWcgPVxuICAgICAgY3VycmVudFJlbmRlclRvb2xDYWxscy5maW5kKFxuICAgICAgICAocmM6IFRvb2xDYWxsUmVuZGVyKSA9PiByYy5uYW1lID09PSB0b29sQ2FsbC5mdW5jdGlvbi5uYW1lXG4gICAgICApIHx8IGN1cnJlbnRSZW5kZXJUb29sQ2FsbHMuZmluZCgocmM6IFRvb2xDYWxsUmVuZGVyKSA9PiByYy5uYW1lID09PSBcIipcIik7XG5cbiAgICBpZiAoIXJlbmRlckNvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFBhcnNlIHRoZSBhcmd1bWVudHMgaWYgdGhleSdyZSBhIHN0cmluZ1xuICAgIGNvbnN0IGFyZ3MgPSBwYXJ0aWFsSlNPTlBhcnNlKHRvb2xDYWxsLmZ1bmN0aW9uLmFyZ3VtZW50cyk7XG5cbiAgICAvLyBEZXRlcm1pbmUgc3RhdHVzXG4gICAgbGV0IHN0YXR1czogVG9vbENhbGxTdGF0dXM7XG4gICAgaWYgKHRvb2xNZXNzYWdlKSB7XG4gICAgICBzdGF0dXMgPSBUb29sQ2FsbFN0YXR1cy5Db21wbGV0ZTtcbiAgICB9IGVsc2UgaWYgKGlzTG9hZGluZykge1xuICAgICAgc3RhdHVzID0gVG9vbENhbGxTdGF0dXMuSW5Qcm9ncmVzcztcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdHVzID0gVG9vbENhbGxTdGF0dXMuQ29tcGxldGU7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHByb3BzIGJhc2VkIG9uIHN0YXR1cyAtIHVzZSBkaXNjcmltaW5hdGVkIHVuaW9uIHByb3Blcmx5XG4gICAgbGV0IHByb3BzOiBUb29sQ2FsbFByb3BzO1xuICAgIGlmIChzdGF0dXMgPT09IFRvb2xDYWxsU3RhdHVzLkluUHJvZ3Jlc3MpIHtcbiAgICAgIHByb3BzID0ge1xuICAgICAgICBuYW1lOiB0b29sQ2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcbiAgICAgICAgYXJnczogYXJncywgLy8gUGFydGlhbCBhcmdzIGZvciBJblByb2dyZXNzXG4gICAgICAgIHN0YXR1czogVG9vbENhbGxTdGF0dXMuSW5Qcm9ncmVzcyxcbiAgICAgICAgcmVzdWx0OiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb21wbGV0ZSBzdGF0dXNcbiAgICAgIHByb3BzID0ge1xuICAgICAgICBuYW1lOiB0b29sQ2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcbiAgICAgICAgYXJnczogYXJncywgLy8gRnVsbCBhcmdzIGZvciBDb21wbGV0ZVxuICAgICAgICBzdGF0dXM6IFRvb2xDYWxsU3RhdHVzLkNvbXBsZXRlLFxuICAgICAgICByZXN1bHQ6IHRvb2xNZXNzYWdlPy5jb250ZW50IHx8IFwiXCIsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHJlbmRlciBpcyBhIENvbXBvbmVudCBjbGFzcyBvciBUZW1wbGF0ZVJlZlxuICAgIGlmICh0aGlzLmlzQ29tcG9uZW50Q2xhc3MocmVuZGVyQ29uZmlnLnJlbmRlcikpIHtcbiAgICAgIC8vIENyZWF0ZSBjb21wb25lbnQgZHluYW1pY2FsbHlcbiAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50KHRvb2xDYWxsLmlkLCByZW5kZXJDb25maWcucmVuZGVyLCBwcm9wcyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzVGVtcGxhdGVSZWYocmVuZGVyQ29uZmlnLnJlbmRlcikpIHtcbiAgICAgIC8vIFVzZSB0ZW1wbGF0ZVxuICAgICAgdGhpcy5yZW5kZXJUZW1wbGF0ZSh0b29sQ2FsbC5pZCwgcmVuZGVyQ29uZmlnLnJlbmRlciwgcHJvcHMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ29tcG9uZW50KFxuICAgIHRvb2xDYWxsSWQ6IHN0cmluZyxcbiAgICBjb21wb25lbnRDbGFzczogVHlwZTxhbnk+LFxuICAgIHByb3BzOiBUb29sQ2FsbFByb3BzXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIGNvbXBvbmVudFxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRDbGFzcyk7XG4gICAgdGhpcy5jb21wb25lbnRSZWZzLnNldCh0b29sQ2FsbElkLCBjb21wb25lbnRSZWYpO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGRlY2xhcmVkIGlucHV0cyB0byBhdm9pZCBBbmd1bGFyIE5HMDMwMyBjb25zb2xlIGVycm9yc1xuICAgIGNvbnN0IGNtcERlZjogYW55ID0gKGNvbXBvbmVudENsYXNzIGFzIGFueSkuybVjbXA7XG4gICAgY29uc3QgZGVjbGFyZWRJbnB1dHMgPSBuZXcgU2V0PHN0cmluZz4oXG4gICAgICBPYmplY3Qua2V5cyhjbXBEZWY/LmlucHV0cyA/PyB7fSlcbiAgICApO1xuXG4gICAgLy8gUHJlZmVyIGEgc2luZ2xlICdwcm9wcycgaW5wdXQgaWYgZGVjbGFyZWRcbiAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKCdwcm9wcycpKSB7XG4gICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Byb3BzJywgcHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIHNldCBvbmx5IGlucHV0cyB0aGF0IHRoZSBjb21wb25lbnQgYWN0dWFsbHkgZGVjbGFyZXNcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSkge1xuICAgICAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKGtleSkpIHtcbiAgICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJUZW1wbGF0ZShcbiAgICB0b29sQ2FsbElkOiBzdHJpbmcsXG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJvcHM6IFRvb2xDYWxsUHJvcHNcbiAgKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZUNhY2hlLnNldCh0b29sQ2FsbElkLCB7XG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgJGltcGxpY2l0OiBwcm9wcyxcbiAgICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgICBhcmdzOiBwcm9wcy5hcmdzLFxuICAgICAgICBzdGF0dXM6IHByb3BzLnN0YXR1cyxcbiAgICAgICAgcmVzdWx0OiBwcm9wcy5yZXN1bHQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbXBvbmVudENsYXNzKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBUeXBlPGFueT4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiAmJiB2YWx1ZS5wcm90b3R5cGU7XG4gIH1cblxuICBwcml2YXRlIGlzVGVtcGxhdGVSZWYodmFsdWU6IGFueSk6IHZhbHVlIGlzIFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICB9XG59XG4iXX0=
@@ -38,7 +38,14 @@ export class CopilotChatComponent {
38
38
  a.threadId = this.threadId || this.generatedThreadId;
39
39
  if (!this.hasConnectedOnce) {
40
40
  this.hasConnectedOnce = true;
41
- this.connectToAgent(a);
41
+ if ('isCopilotKitAgent' in a) {
42
+ this.connectToAgent(a);
43
+ }
44
+ else {
45
+ // Not a CopilotKit agent: ensure UI not showing loading cursor
46
+ this.showCursor.set(false);
47
+ this.cdr.markForCheck();
48
+ }
42
49
  }
43
50
  }, { allowSignalWrites: true });
44
51
  }
@@ -211,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
211
218
  }], threadId: [{
212
219
  type: Input
213
220
  }] } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFLTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEVBSU4scUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzNHLE9BQU8sRUFDTCwyQkFBMkIsR0FFNUIsTUFBTSx3REFBd0QsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFHdEU7Ozs7Ozs7O0dBUUc7QUE4QkgsTUFBTSxPQUFPLG9CQUFvQjtJQUtUO0lBQ1o7SUFDQTtJQU5ELE9BQU8sQ0FBVTtJQUNqQixRQUFRLENBQVU7SUFFM0IsWUFDc0IsVUFBa0QsRUFDOUQsR0FBc0IsRUFDdEIsUUFBa0I7UUFGTixlQUFVLEdBQVYsVUFBVSxDQUF3QztRQUM5RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRTFCLHdFQUF3RTtRQUN4RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUIsNENBQTRDO1FBQzVD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QUFDLElBQUk7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxJQUFJLEVBQUU7Z0NBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsK0JBQStCLENBQUM7Z0NBQ2pFLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQzs2QkFDOUM7NEJBQ0QsVUFBVSxFQUFFLENBQ1YsTUFBOEMsRUFDOUMsT0FBd0MsRUFDeEMsRUFBRSxDQUFDLE1BQU0sSUFBSSxJQUFJLCtCQUErQixDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7eUJBQ3BFO3FCQUNGO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7R0FRVDtpQkFDRjs7MEJBTUksUUFBUTtnR0FKRixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgc2lnbmFsLFxuICBlZmZlY3QsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBTaWduYWwsXG4gIEluamVjdG9yLFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Vmlld0NvbXBvbmVudCB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC12aWV3LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHLFxuICBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24sXG59IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24udHlwZXNcIjtcbmltcG9ydCB7IHdhdGNoQWdlbnQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvYWdlbnQudXRpbHNcIjtcbmltcG9ydCB7IEFnZW50V2F0Y2hSZXN1bHQgfSBmcm9tIFwiLi4vLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0FHRU5UX0lELCByYW5kb21VVUlEIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9zaGFyZWRcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuXG4vKipcbiAqIENvcGlsb3RDaGF0IGNvbXBvbmVudCAtIEFuZ3VsYXIgZXF1aXZhbGVudCBvZiBSZWFjdCdzIDxDb3BpbG90Q2hhdD5cbiAqIFByb3ZpZGVzIGEgY29tcGxldGUgY2hhdCBpbnRlcmZhY2UgdGhhdCB3aXJlcyBhbiBhZ2VudCB0byB0aGUgY2hhdCB2aWV3XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjb3BpbG90LWNoYXQgW2FnZW50SWRdPVwiJ2RlZmF1bHQnXCIgW3RocmVhZElkXT1cIidhYmMxMjMnXCI+PC9jb3BpbG90LWNoYXQ+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3BpbG90Q2hhdFZpZXdDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZV0sXG4gICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHXSxcbiAgICAgIF0sXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIHBhcmVudDogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB8IG51bGwsXG4gICAgICAgIGluaXRpYWw6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvbiB8IG51bGxcbiAgICAgICkgPT4gcGFyZW50ID8/IG5ldyBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlKGluaXRpYWwgPz8gbnVsbCksXG4gICAgfSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y29waWxvdC1jaGF0LXZpZXdcbiAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlcygpXCJcbiAgICAgIFthdXRvU2Nyb2xsXT1cInRydWVcIlxuICAgICAgW21lc3NhZ2VWaWV3Q2xhc3NdPVwiJ3ctZnVsbCdcIlxuICAgICAgW3Nob3dDdXJzb3JdPVwic2hvd0N1cnNvcigpXCJcbiAgICA+XG4gICAgPC9jb3BpbG90LWNoYXQtdmlldz5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgYWdlbnRJZD86IHN0cmluZztcbiAgQElucHV0KCkgdGhyZWFkSWQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjaGF0Q29uZmlnOiBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlIHwgbnVsbCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgLy8gQ3JlYXRlIGluaXRpYWwgd2F0Y2hlciBvbmNlIChjb25zdHJ1Y3RvciBpcyBhIHNhZmUgaW5qZWN0aW9uIGNvbnRleHQpXG4gICAgY29uc3QgaW5pdGlhbElkID0gdGhpcy5hZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gICAgdGhpcy5jcmVhdGVXYXRjaGVyKGluaXRpYWxJZCk7XG5cbiAgICAvLyBDb25uZWN0IG9uY2Ugd2hlbiBhZ2VudCBiZWNvbWVzIGF2YWlsYWJsZVxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuYWdlbnQoKTtcbiAgICAgICAgaWYgKCFhKSByZXR1cm47XG4gICAgICAgIC8vIEFwcGx5IHRocmVhZCBpZCB3aGVuIGFnZW50IGlzIGF2YWlsYWJsZVxuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCB8fCB0aGlzLmdlbmVyYXRlZFRocmVhZElkO1xuICAgICAgICBpZiAoIXRoaXMuaGFzQ29ubmVjdGVkT25jZSkge1xuICAgICAgICAgIHRoaXMuaGFzQ29ubmVjdGVkT25jZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jb25uZWN0VG9BZ2VudChhKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICAvLyBTaWduYWxzIGZyb20gd2F0Y2hBZ2VudCAtIHVzaW5nIGRpcmVjdCByZWZlcmVuY2VzIGluc3RlYWQgb2YgYXNzaWdubWVudFxuICBwcm90ZWN0ZWQgYWdlbnQ6IFNpZ25hbDxBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkPiA9IHNpZ25hbDxcbiAgICBBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKS5hc1JlYWRvbmx5KCkgYXMgdW5rbm93biBhcyBTaWduYWw8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD47XG4gIHByb3RlY3RlZCBtZXNzYWdlczogU2lnbmFsPE1lc3NhZ2VbXT4gPSBzaWduYWw8TWVzc2FnZVtdPihcbiAgICBbXVxuICApLmFzUmVhZG9ubHkoKSBhcyB1bmtub3duIGFzIFNpZ25hbDxNZXNzYWdlW10+O1xuICBwcm90ZWN0ZWQgaXNSdW5uaW5nOiBTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWw8Ym9vbGVhbj4oXG4gICAgZmFsc2VcbiAgKS5hc1JlYWRvbmx5KCkgYXMgdW5rbm93biBhcyBTaWduYWw8Ym9vbGVhbj47XG4gIHByb3RlY3RlZCBzaG93Q3Vyc29yID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIGdlbmVyYXRlZFRocmVhZElkOiBzdHJpbmcgPSByYW5kb21VVUlEKCk7XG4gIHByaXZhdGUgYWdlbnRXYXRjaGVyPzogQWdlbnRXYXRjaFJlc3VsdDtcbiAgcHJpdmF0ZSBoYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG4gIHByaXZhdGUgbGFzdEFnZW50SWQ/OiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cENoYXRIYW5kbGVycygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wiYWdlbnRJZFwiXSAmJiAhY2hhbmdlc1tcImFnZW50SWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IG5ld0lkID0gdGhpcy5hZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gICAgICB0aGlzLmNyZWF0ZVdhdGNoZXIobmV3SWQpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1tcInRocmVhZElkXCJdICYmICFjaGFuZ2VzW1widGhyZWFkSWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmFnZW50KCk7XG4gICAgICBpZiAoYSkge1xuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCB8fCB0aGlzLmdlbmVyYXRlZFRocmVhZElkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvQWdlbnQoYWdlbnQ6IEFic3RyYWN0QWdlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWFnZW50KSByZXR1cm47XG5cbiAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KHRydWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFnZW50LnJ1bkFnZW50KFxuICAgICAgICB7IGZvcndhcmRlZFByb3BzOiB7IF9fY29waWxvdGtpdENvbm5lY3Q6IHRydWUgfSB9LFxuICAgICAgICB7XG4gICAgICAgICAgb25UZXh0TWVzc2FnZVN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ub29sQ2FsbFN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvbm5lY3QgdG8gYWdlbnQ6XCIsIGVycm9yKTtcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENoYXRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hhdENvbmZpZykgcmV0dXJuO1xuXG4gICAgLy8gSGFuZGxlIGlucHV0IHN1Ym1pc3Npb25cbiAgICB0aGlzLmNoYXRDb25maWcuc2V0U3VibWl0SGFuZGxlcihhc3luYyAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgYWdlbnQgPSB0aGlzLmFnZW50KCk7XG4gICAgICBpZiAoIWFnZW50IHx8ICF2YWx1ZS50cmltKCkpIHJldHVybjtcblxuICAgICAgLy8gQWRkIHVzZXIgbWVzc2FnZVxuICAgICAgY29uc3QgdXNlck1lc3NhZ2U6IE1lc3NhZ2UgPSB7XG4gICAgICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgICAgIHJvbGU6IFwidXNlclwiLFxuICAgICAgICBjb250ZW50OiB2YWx1ZSxcbiAgICAgIH07XG4gICAgICBhZ2VudC5hZGRNZXNzYWdlKHVzZXJNZXNzYWdlKTtcblxuICAgICAgLy8gQ2xlYXIgdGhlIGlucHV0XG4gICAgICB0aGlzLmNoYXRDb25maWchLnNldElucHV0VmFsdWUoXCJcIik7XG5cbiAgICAgIC8vIFNob3cgY3Vyc29yIHdoaWxlIHByb2Nlc3NpbmdcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgLy8gUnVuIHRoZSBhZ2VudCB3aXRoIG5hbWVkIHN1YnNjcmliZXIgY2FsbGJhY2tzXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhZ2VudC5ydW5BZ2VudChcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvblRleHRNZXNzYWdlU3RhcnRFdmVudDogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVG9vbENhbGxTdGFydEV2ZW50OiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBZ2VudCBydW4gZXJyb3I6XCIsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEhhbmRsZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzIChvcHRpb25hbClcbiAgICB0aGlzLmNoYXRDb25maWcuc2V0Q2hhbmdlSGFuZGxlcigoKSA9PiB7XG4gICAgICAvLyBLZWVwIGlucHV0IHN0YXRlIGlmIG5lZWRlZFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWdlbnRXYXRjaGVyPy51bnN1YnNjcmliZSkge1xuICAgICAgdGhpcy5hZ2VudFdhdGNoZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdhdGNoZXIoZGVzaXJlZEFnZW50SWQ6IHN0cmluZykge1xuICAgIC8vIFRlYXIgZG93biBwcmV2aW91cyB3YXRjaGVyIGlmIGl0IGV4aXN0c1xuICAgIGlmICh0aGlzLmFnZW50V2F0Y2hlcj8udW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMuYWdlbnRXYXRjaGVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmFnZW50V2F0Y2hlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gU2V0dXAgd2F0Y2hlciBmb3IgZGVzaXJlZCBhZ2VudCAtIGVuc3VyZSBpbmplY3Rpb24gY29udGV4dFxuICAgIHRoaXMuYWdlbnRXYXRjaGVyID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+XG4gICAgICB3YXRjaEFnZW50KHsgYWdlbnRJZDogZGVzaXJlZEFnZW50SWQgfSlcbiAgICApO1xuICAgIHRoaXMuYWdlbnQgPSB0aGlzLmFnZW50V2F0Y2hlci5hZ2VudDtcbiAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5hZ2VudFdhdGNoZXIubWVzc2FnZXM7XG4gICAgdGhpcy5pc1J1bm5pbmcgPSB0aGlzLmFnZW50V2F0Y2hlci5pc1J1bm5pbmc7XG4gICAgdGhpcy5oYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG4gICAgdGhpcy5sYXN0QWdlbnRJZCA9IGRlc2lyZWRBZ2VudElkO1xuICB9XG59XG4iXX0=
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFLTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEVBSU4scUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzNHLE9BQU8sRUFDTCwyQkFBMkIsR0FFNUIsTUFBTSx3REFBd0QsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFHdEU7Ozs7Ozs7O0dBUUc7QUE4QkgsTUFBTSxPQUFPLG9CQUFvQjtJQUtUO0lBQ1o7SUFDQTtJQU5ELE9BQU8sQ0FBVTtJQUNqQixRQUFRLENBQVU7SUFFM0IsWUFDc0IsVUFBa0QsRUFDOUQsR0FBc0IsRUFDdEIsUUFBa0I7UUFGTixlQUFVLEdBQVYsVUFBVSxDQUF3QztRQUM5RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRTFCLHdFQUF3RTtRQUN4RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUIsNENBQTRDO1FBQzVD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NEZBMEJyQyxvQkFBb0I7a0JBN0JoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHdCQUF3QixDQUFDO29CQUNqRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxJQUFJLEVBQUU7Z0NBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsK0JBQStCLENBQUM7Z0NBQ2pFLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQzs2QkFDOUM7NEJBQ0QsVUFBVSxFQUFFLENBQ1YsTUFBOEMsRUFDOUMsT0FBd0MsRUFDeEMsRUFBRSxDQUFDLE1BQU0sSUFBSSxJQUFJLCtCQUErQixDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7eUJBQ3BFO3FCQUNGO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7R0FRVDtpQkFDRjs7MEJBTUksUUFBUTtnR0FKRixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgc2lnbmFsLFxuICBlZmZlY3QsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBTaWduYWwsXG4gIEluamVjdG9yLFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Vmlld0NvbXBvbmVudCB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC12aWV3LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHLFxuICBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24sXG59IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24udHlwZXNcIjtcbmltcG9ydCB7IHdhdGNoQWdlbnQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvYWdlbnQudXRpbHNcIjtcbmltcG9ydCB7IEFnZW50V2F0Y2hSZXN1bHQgfSBmcm9tIFwiLi4vLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0FHRU5UX0lELCByYW5kb21VVUlEIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9zaGFyZWRcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuXG4vKipcbiAqIENvcGlsb3RDaGF0IGNvbXBvbmVudCAtIEFuZ3VsYXIgZXF1aXZhbGVudCBvZiBSZWFjdCdzIDxDb3BpbG90Q2hhdD5cbiAqIFByb3ZpZGVzIGEgY29tcGxldGUgY2hhdCBpbnRlcmZhY2UgdGhhdCB3aXJlcyBhbiBhZ2VudCB0byB0aGUgY2hhdCB2aWV3XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjb3BpbG90LWNoYXQgW2FnZW50SWRdPVwiJ2RlZmF1bHQnXCIgW3RocmVhZElkXT1cIidhYmMxMjMnXCI+PC9jb3BpbG90LWNoYXQ+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3BpbG90Q2hhdFZpZXdDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZV0sXG4gICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHXSxcbiAgICAgIF0sXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIHBhcmVudDogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB8IG51bGwsXG4gICAgICAgIGluaXRpYWw6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvbiB8IG51bGxcbiAgICAgICkgPT4gcGFyZW50ID8/IG5ldyBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlKGluaXRpYWwgPz8gbnVsbCksXG4gICAgfSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y29waWxvdC1jaGF0LXZpZXdcbiAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlcygpXCJcbiAgICAgIFthdXRvU2Nyb2xsXT1cInRydWVcIlxuICAgICAgW21lc3NhZ2VWaWV3Q2xhc3NdPVwiJ3ctZnVsbCdcIlxuICAgICAgW3Nob3dDdXJzb3JdPVwic2hvd0N1cnNvcigpXCJcbiAgICA+XG4gICAgPC9jb3BpbG90LWNoYXQtdmlldz5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgYWdlbnRJZD86IHN0cmluZztcbiAgQElucHV0KCkgdGhyZWFkSWQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjaGF0Q29uZmlnOiBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlIHwgbnVsbCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgLy8gQ3JlYXRlIGluaXRpYWwgd2F0Y2hlciBvbmNlIChjb25zdHJ1Y3RvciBpcyBhIHNhZmUgaW5qZWN0aW9uIGNvbnRleHQpXG4gICAgY29uc3QgaW5pdGlhbElkID0gdGhpcy5hZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gICAgdGhpcy5jcmVhdGVXYXRjaGVyKGluaXRpYWxJZCk7XG5cbiAgICAvLyBDb25uZWN0IG9uY2Ugd2hlbiBhZ2VudCBiZWNvbWVzIGF2YWlsYWJsZVxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuYWdlbnQoKTtcbiAgICAgICAgaWYgKCFhKSByZXR1cm47XG4gICAgICAgIC8vIEFwcGx5IHRocmVhZCBpZCB3aGVuIGFnZW50IGlzIGF2YWlsYWJsZVxuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCB8fCB0aGlzLmdlbmVyYXRlZFRocmVhZElkO1xuICAgICAgICBpZiAoIXRoaXMuaGFzQ29ubmVjdGVkT25jZSkge1xuICAgICAgICAgIHRoaXMuaGFzQ29ubmVjdGVkT25jZSA9IHRydWU7XG4gICAgICAgICAgaWYgKCdpc0NvcGlsb3RLaXRBZ2VudCcgaW4gKGEgYXMgYW55KSkge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0VG9BZ2VudChhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTm90IGEgQ29waWxvdEtpdCBhZ2VudDogZW5zdXJlIFVJIG5vdCBzaG93aW5nIGxvYWRpbmcgY3Vyc29yXG4gICAgICAgICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICAvLyBTaWduYWxzIGZyb20gd2F0Y2hBZ2VudCAtIHVzaW5nIGRpcmVjdCByZWZlcmVuY2VzIGluc3RlYWQgb2YgYXNzaWdubWVudFxuICBwcm90ZWN0ZWQgYWdlbnQ6IFNpZ25hbDxBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkPiA9IHNpZ25hbDxcbiAgICBBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKS5hc1JlYWRvbmx5KCkgYXMgdW5rbm93biBhcyBTaWduYWw8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD47XG4gIHByb3RlY3RlZCBtZXNzYWdlczogU2lnbmFsPE1lc3NhZ2VbXT4gPSBzaWduYWw8TWVzc2FnZVtdPihcbiAgICBbXVxuICApLmFzUmVhZG9ubHkoKSBhcyB1bmtub3duIGFzIFNpZ25hbDxNZXNzYWdlW10+O1xuICBwcm90ZWN0ZWQgaXNSdW5uaW5nOiBTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWw8Ym9vbGVhbj4oXG4gICAgZmFsc2VcbiAgKS5hc1JlYWRvbmx5KCkgYXMgdW5rbm93biBhcyBTaWduYWw8Ym9vbGVhbj47XG4gIHByb3RlY3RlZCBzaG93Q3Vyc29yID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIGdlbmVyYXRlZFRocmVhZElkOiBzdHJpbmcgPSByYW5kb21VVUlEKCk7XG4gIHByaXZhdGUgYWdlbnRXYXRjaGVyPzogQWdlbnRXYXRjaFJlc3VsdDtcbiAgcHJpdmF0ZSBoYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG4gIHByaXZhdGUgbGFzdEFnZW50SWQ/OiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cENoYXRIYW5kbGVycygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wiYWdlbnRJZFwiXSAmJiAhY2hhbmdlc1tcImFnZW50SWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IG5ld0lkID0gdGhpcy5hZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gICAgICB0aGlzLmNyZWF0ZVdhdGNoZXIobmV3SWQpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1tcInRocmVhZElkXCJdICYmICFjaGFuZ2VzW1widGhyZWFkSWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmFnZW50KCk7XG4gICAgICBpZiAoYSkge1xuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCB8fCB0aGlzLmdlbmVyYXRlZFRocmVhZElkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvQWdlbnQoYWdlbnQ6IEFic3RyYWN0QWdlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWFnZW50KSByZXR1cm47XG5cbiAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KHRydWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFnZW50LnJ1bkFnZW50KFxuICAgICAgICB7IGZvcndhcmRlZFByb3BzOiB7IF9fY29waWxvdGtpdENvbm5lY3Q6IHRydWUgfSB9LFxuICAgICAgICB7XG4gICAgICAgICAgb25UZXh0TWVzc2FnZVN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ub29sQ2FsbFN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvbm5lY3QgdG8gYWdlbnQ6XCIsIGVycm9yKTtcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENoYXRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hhdENvbmZpZykgcmV0dXJuO1xuXG4gICAgLy8gSGFuZGxlIGlucHV0IHN1Ym1pc3Npb25cbiAgICB0aGlzLmNoYXRDb25maWcuc2V0U3VibWl0SGFuZGxlcihhc3luYyAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgYWdlbnQgPSB0aGlzLmFnZW50KCk7XG4gICAgICBpZiAoIWFnZW50IHx8ICF2YWx1ZS50cmltKCkpIHJldHVybjtcblxuICAgICAgLy8gQWRkIHVzZXIgbWVzc2FnZVxuICAgICAgY29uc3QgdXNlck1lc3NhZ2U6IE1lc3NhZ2UgPSB7XG4gICAgICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgICAgIHJvbGU6IFwidXNlclwiLFxuICAgICAgICBjb250ZW50OiB2YWx1ZSxcbiAgICAgIH07XG4gICAgICBhZ2VudC5hZGRNZXNzYWdlKHVzZXJNZXNzYWdlKTtcblxuICAgICAgLy8gQ2xlYXIgdGhlIGlucHV0XG4gICAgICB0aGlzLmNoYXRDb25maWchLnNldElucHV0VmFsdWUoXCJcIik7XG5cbiAgICAgIC8vIFNob3cgY3Vyc29yIHdoaWxlIHByb2Nlc3NpbmdcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgLy8gUnVuIHRoZSBhZ2VudCB3aXRoIG5hbWVkIHN1YnNjcmliZXIgY2FsbGJhY2tzXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhZ2VudC5ydW5BZ2VudChcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvblRleHRNZXNzYWdlU3RhcnRFdmVudDogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVG9vbENhbGxTdGFydEV2ZW50OiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBZ2VudCBydW4gZXJyb3I6XCIsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEhhbmRsZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzIChvcHRpb25hbClcbiAgICB0aGlzLmNoYXRDb25maWcuc2V0Q2hhbmdlSGFuZGxlcigoKSA9PiB7XG4gICAgICAvLyBLZWVwIGlucHV0IHN0YXRlIGlmIG5lZWRlZFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWdlbnRXYXRjaGVyPy51bnN1YnNjcmliZSkge1xuICAgICAgdGhpcy5hZ2VudFdhdGNoZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdhdGNoZXIoZGVzaXJlZEFnZW50SWQ6IHN0cmluZykge1xuICAgIC8vIFRlYXIgZG93biBwcmV2aW91cyB3YXRjaGVyIGlmIGl0IGV4aXN0c1xuICAgIGlmICh0aGlzLmFnZW50V2F0Y2hlcj8udW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMuYWdlbnRXYXRjaGVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmFnZW50V2F0Y2hlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gU2V0dXAgd2F0Y2hlciBmb3IgZGVzaXJlZCBhZ2VudCAtIGVuc3VyZSBpbmplY3Rpb24gY29udGV4dFxuICAgIHRoaXMuYWdlbnRXYXRjaGVyID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+XG4gICAgICB3YXRjaEFnZW50KHsgYWdlbnRJZDogZGVzaXJlZEFnZW50SWQgfSlcbiAgICApO1xuICAgIHRoaXMuYWdlbnQgPSB0aGlzLmFnZW50V2F0Y2hlci5hZ2VudDtcbiAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5hZ2VudFdhdGNoZXIubWVzc2FnZXM7XG4gICAgdGhpcy5pc1J1bm5pbmcgPSB0aGlzLmFnZW50V2F0Y2hlci5pc1J1bm5pbmc7XG4gICAgdGhpcy5oYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG4gICAgdGhpcy5sYXN0QWdlbnRJZCA9IGRlc2lyZWRBZ2VudElkO1xuICB9XG59XG4iXX0=
@@ -70,20 +70,17 @@ export class CopilotKitToolRenderComponent {
70
70
  this.container.clear();
71
71
  // Create the component
72
72
  this.componentRef = this.container.createComponent(componentClass);
73
- // Set inputs on the component using setInput
74
- // Try setting a single 'props' input first
75
- try {
73
+ // Determine declared inputs to avoid NG0303 logs
74
+ const cmpDef = componentClass.ɵcmp;
75
+ const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
76
+ if (declaredInputs.has('props')) {
76
77
  this.componentRef.setInput('props', props);
77
78
  }
78
- catch (e) {
79
- // If props input doesn't exist, try setting individual inputs
79
+ else {
80
80
  for (const [key, value] of Object.entries(props)) {
81
- try {
81
+ if (declaredInputs.has(key)) {
82
82
  this.componentRef.setInput(key, value);
83
83
  }
84
- catch (inputError) {
85
- // Input might not exist on the component, skip it
86
- }
87
84
  }
88
85
  }
89
86
  // Trigger change detection
@@ -150,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
150
147
  type: ViewChild,
151
148
  args: ["dynamicContainer", { read: ViewContainerRef, static: true }]
152
149
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC10b29sLXJlbmRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jb3BpbG90a2l0LXRvb2wtcmVuZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUtYLE1BQU0sRUFDTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBZTFELE1BQU0sT0FBTyw2QkFBNkI7SUFDL0IsUUFBUSxDQUFVO0lBQ2xCLElBQUksQ0FBTTtJQUNWLE1BQU0sR0FBbUIsY0FBYyxDQUFDLFVBQVUsQ0FBQztJQUNuRCxNQUFNLENBQU87SUFDYixXQUFXLENBQVU7SUFHdEIsU0FBUyxDQUFvQjtJQUU3QixVQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsWUFBWSxDQUFxQjtJQUV6QyxXQUFXLENBQW9CO0lBQy9CLGVBQWUsQ0FBTztJQUV0QixlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDZixPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFDakIsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsMkJBQTJCO1FBQzNC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OlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ29tcG9uZW50UmVmLFxuICBpbmplY3QsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFRvb2xDYWxsUHJvcHMsXG4gIEFuZ3VsYXJUb29sQ2FsbFJlbmRlcixcbn0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuaW1wb3J0IHsgVG9vbENhbGxTdGF0dXMgfSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90a2l0LXRvb2wtcmVuZGVyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgI2R5bmFtaWNDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlUmVmICYmIHRlbXBsYXRlQ29udGV4dFwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmOyBjb250ZXh0OiB0ZW1wbGF0ZUNvbnRleHRcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90S2l0VG9vbFJlbmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHRvb2xOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBhcmdzOiBhbnk7XG4gIEBJbnB1dCgpIHN0YXR1czogVG9vbENhbGxTdGF0dXMgPSBUb29sQ2FsbFN0YXR1cy5JblByb2dyZXNzO1xuICBASW5wdXQoKSByZXN1bHQ/OiBhbnk7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoXCJkeW5hbWljQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgY29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcml2YXRlIGNvcGlsb3RraXQgPSBpbmplY3QoQ29waWxvdEtpdFNlcnZpY2UpO1xuICBwcml2YXRlIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgdGVtcGxhdGVDb250ZXh0PzogYW55O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclRvb2woKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzW1widG9vbE5hbWVcIl0gfHxcbiAgICAgIGNoYW5nZXNbXCJhcmdzXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wic3RhdHVzXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wicmVzdWx0XCJdXG4gICAgKSB7XG4gICAgICB0aGlzLnJlbmRlclRvb2woKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclRvb2woKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgY29tcG9uZW50XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBDbGVhciB0ZW1wbGF0ZVxuICAgIHRoaXMudGVtcGxhdGVSZWYgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50ZW1wbGF0ZUNvbnRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIXRoaXMudG9vbE5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIHRvb2wgcmVuZGVyIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCB0b29sUmVuZGVyID0gdGhpcy5jb3BpbG90a2l0LmdldFRvb2xSZW5kZXIodGhpcy50b29sTmFtZSkgYXNcbiAgICAgIHwgQW5ndWxhclRvb2xDYWxsUmVuZGVyXG4gICAgICB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghdG9vbFJlbmRlcikge1xuICAgICAgY29uc29sZS53YXJuKGBObyByZW5kZXIgZm91bmQgZm9yIHRvb2w6ICR7dGhpcy50b29sTmFtZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIHByb3BzIHRvIHBhc3MgdG8gdGhlIGNvbXBvbmVudFxuICAgIGNvbnN0IHByb3BzOiBUb29sQ2FsbFByb3BzPGFueT4gPSB7XG4gICAgICBuYW1lOiB0aGlzLnRvb2xOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGFyZ3M6IHRoaXMuYXJncyxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICByZXN1bHQ6IHRoaXMucmVzdWx0LFxuICAgIH07XG5cbiAgICAvLyBDaGVjayBpZiByZW5kZXIgaXMgYSBDb21wb25lbnQgY2xhc3Mgb3IgVGVtcGxhdGVSZWZcbiAgICBpZiAodGhpcy5pc0NvbXBvbmVudENsYXNzKHRvb2xSZW5kZXIucmVuZGVyKSkge1xuICAgICAgLy8gQ3JlYXRlIGNvbXBvbmVudCBkeW5hbWljYWxseVxuICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnQodG9vbFJlbmRlci5yZW5kZXIsIHByb3BzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNUZW1wbGF0ZVJlZih0b29sUmVuZGVyLnJlbmRlcikpIHtcbiAgICAgIC8vIFVzZSB0ZW1wbGF0ZVxuICAgICAgdGhpcy5yZW5kZXJUZW1wbGF0ZSh0b29sUmVuZGVyLnJlbmRlciwgcHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHJlbmRlciB0eXBlIGZvciB0b29sOiAke3RoaXMudG9vbE5hbWV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb21wb25lbnQoXG4gICAgY29tcG9uZW50Q2xhc3M6IFR5cGU8YW55PixcbiAgICBwcm9wczogVG9vbENhbGxQcm9wc1xuICApOiB2b2lkIHtcbiAgICAvLyBDbGVhciB0aGUgY29udGFpbmVyXG4gICAgdGhpcy5jb250YWluZXIuY2xlYXIoKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgY29tcG9uZW50XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50Q2xhc3MpO1xuXG4gICAgLy8gU2V0IGlucHV0cyBvbiB0aGUgY29tcG9uZW50IHVzaW5nIHNldElucHV0XG4gICAgLy8gVHJ5IHNldHRpbmcgYSBzaW5nbGUgJ3Byb3BzJyBpbnB1dCBmaXJzdFxuICAgIHRyeSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgncHJvcHMnLCBwcm9wcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSWYgcHJvcHMgaW5wdXQgZG9lc24ndCBleGlzdCwgdHJ5IHNldHRpbmcgaW5kaXZpZHVhbCBpbnB1dHNcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChpbnB1dEVycm9yKSB7XG4gICAgICAgICAgLy8gSW5wdXQgbWlnaHQgbm90IGV4aXN0IG9uIHRoZSBjb21wb25lbnQsIHNraXAgaXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgIHRoaXMuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyVGVtcGxhdGUoXG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJvcHM6IFRvb2xDYWxsUHJvcHNcbiAgKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZVJlZiA9IHRlbXBsYXRlO1xuICAgIHRoaXMudGVtcGxhdGVDb250ZXh0ID0ge1xuICAgICAgJGltcGxpY2l0OiBwcm9wcyxcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBhcmdzOiBwcm9wcy5hcmdzLFxuICAgICAgc3RhdHVzOiBwcm9wcy5zdGF0dXMsXG4gICAgICByZXN1bHQ6IHByb3BzLnJlc3VsdCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbXBvbmVudENsYXNzKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBUeXBlPGFueT4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiAmJiB2YWx1ZS5wcm90b3R5cGU7XG4gIH1cblxuICBwcml2YXRlIGlzVGVtcGxhdGVSZWYodmFsdWU6IGFueSk6IHZhbHVlIGlzIFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC10b29sLXJlbmRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jb3BpbG90a2l0LXRvb2wtcmVuZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUtYLE1BQU0sRUFDTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBZTFELE1BQU0sT0FBTyw2QkFBNkI7SUFDL0IsUUFBUSxDQUFVO0lBQ2xCLElBQUksQ0FBTTtJQUNWLE1BQU0sR0FBbUIsY0FBYyxDQUFDLFVBQVUsQ0FBQztJQUNuRCxNQUFNLENBQU87SUFDYixXQUFXLENBQVU7SUFHdEIsU0FBUyxDQUFvQjtJQUU3QixVQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsWUFBWSxDQUFxQjtJQUV6QyxXQUFXLENBQW9CO0lBQy9CLGVBQWUsQ0FBTztJQUV0QixlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDZixPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFDakIsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsMkJBQTJCO1FBQzNC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c0JBQW5CLEtBQUs7Z0JBR0UsU0FBUztzQkFEaEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ29tcG9uZW50UmVmLFxuICBpbmplY3QsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFRvb2xDYWxsUHJvcHMsXG4gIEFuZ3VsYXJUb29sQ2FsbFJlbmRlcixcbn0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuaW1wb3J0IHsgVG9vbENhbGxTdGF0dXMgfSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90a2l0LXRvb2wtcmVuZGVyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgI2R5bmFtaWNDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlUmVmICYmIHRlbXBsYXRlQ29udGV4dFwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmOyBjb250ZXh0OiB0ZW1wbGF0ZUNvbnRleHRcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90S2l0VG9vbFJlbmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHRvb2xOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBhcmdzOiBhbnk7XG4gIEBJbnB1dCgpIHN0YXR1czogVG9vbENhbGxTdGF0dXMgPSBUb29sQ2FsbFN0YXR1cy5JblByb2dyZXNzO1xuICBASW5wdXQoKSByZXN1bHQ/OiBhbnk7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoXCJkeW5hbWljQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgY29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcml2YXRlIGNvcGlsb3RraXQgPSBpbmplY3QoQ29waWxvdEtpdFNlcnZpY2UpO1xuICBwcml2YXRlIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgdGVtcGxhdGVDb250ZXh0PzogYW55O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclRvb2woKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzW1widG9vbE5hbWVcIl0gfHxcbiAgICAgIGNoYW5nZXNbXCJhcmdzXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wic3RhdHVzXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wicmVzdWx0XCJdXG4gICAgKSB7XG4gICAgICB0aGlzLnJlbmRlclRvb2woKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclRvb2woKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgY29tcG9uZW50XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBDbGVhciB0ZW1wbGF0ZVxuICAgIHRoaXMudGVtcGxhdGVSZWYgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50ZW1wbGF0ZUNvbnRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIXRoaXMudG9vbE5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIHRvb2wgcmVuZGVyIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCB0b29sUmVuZGVyID0gdGhpcy5jb3BpbG90a2l0LmdldFRvb2xSZW5kZXIodGhpcy50b29sTmFtZSkgYXNcbiAgICAgIHwgQW5ndWxhclRvb2xDYWxsUmVuZGVyXG4gICAgICB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghdG9vbFJlbmRlcikge1xuICAgICAgY29uc29sZS53YXJuKGBObyByZW5kZXIgZm91bmQgZm9yIHRvb2w6ICR7dGhpcy50b29sTmFtZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIHByb3BzIHRvIHBhc3MgdG8gdGhlIGNvbXBvbmVudFxuICAgIGNvbnN0IHByb3BzOiBUb29sQ2FsbFByb3BzPGFueT4gPSB7XG4gICAgICBuYW1lOiB0aGlzLnRvb2xOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGFyZ3M6IHRoaXMuYXJncyxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICByZXN1bHQ6IHRoaXMucmVzdWx0LFxuICAgIH07XG5cbiAgICAvLyBDaGVjayBpZiByZW5kZXIgaXMgYSBDb21wb25lbnQgY2xhc3Mgb3IgVGVtcGxhdGVSZWZcbiAgICBpZiAodGhpcy5pc0NvbXBvbmVudENsYXNzKHRvb2xSZW5kZXIucmVuZGVyKSkge1xuICAgICAgLy8gQ3JlYXRlIGNvbXBvbmVudCBkeW5hbWljYWxseVxuICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnQodG9vbFJlbmRlci5yZW5kZXIsIHByb3BzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNUZW1wbGF0ZVJlZih0b29sUmVuZGVyLnJlbmRlcikpIHtcbiAgICAgIC8vIFVzZSB0ZW1wbGF0ZVxuICAgICAgdGhpcy5yZW5kZXJUZW1wbGF0ZSh0b29sUmVuZGVyLnJlbmRlciwgcHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHJlbmRlciB0eXBlIGZvciB0b29sOiAke3RoaXMudG9vbE5hbWV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb21wb25lbnQoXG4gICAgY29tcG9uZW50Q2xhc3M6IFR5cGU8YW55PixcbiAgICBwcm9wczogVG9vbENhbGxQcm9wc1xuICApOiB2b2lkIHtcbiAgICAvLyBDbGVhciB0aGUgY29udGFpbmVyXG4gICAgdGhpcy5jb250YWluZXIuY2xlYXIoKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgY29tcG9uZW50XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50Q2xhc3MpO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGRlY2xhcmVkIGlucHV0cyB0byBhdm9pZCBORzAzMDMgbG9nc1xuICAgIGNvbnN0IGNtcERlZjogYW55ID0gKGNvbXBvbmVudENsYXNzIGFzIGFueSkuybVjbXA7XG4gICAgY29uc3QgZGVjbGFyZWRJbnB1dHMgPSBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LmtleXMoY21wRGVmPy5pbnB1dHMgPz8ge30pKTtcblxuICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoJ3Byb3BzJykpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdwcm9wcycsIHByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKSB7XG4gICAgICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoa2V5KSkge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgdGhpcy5jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJUZW1wbGF0ZShcbiAgICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwcm9wczogVG9vbENhbGxQcm9wc1xuICApOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlUmVmID0gdGVtcGxhdGU7XG4gICAgdGhpcy50ZW1wbGF0ZUNvbnRleHQgPSB7XG4gICAgICAkaW1wbGljaXQ6IHByb3BzLFxuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGFyZ3M6IHByb3BzLmFyZ3MsXG4gICAgICBzdGF0dXM6IHByb3BzLnN0YXR1cyxcbiAgICAgIHJlc3VsdDogcHJvcHMucmVzdWx0LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzQ29tcG9uZW50Q2xhc3ModmFsdWU6IGFueSk6IHZhbHVlIGlzIFR5cGU8YW55PiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiICYmIHZhbHVlLnByb3RvdHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNUZW1wbGF0ZVJlZih2YWx1ZTogYW55KTogdmFsdWUgaXMgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==