@copilotkitnext/angular 1.52.0-next.5 → 1.52.0-next.7

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.
@@ -98,7 +98,7 @@ export class CopilotChatUserMessage {
98
98
  }
99
99
  constructor() { }
100
100
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatUserMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
101
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatUserMessage, isStandalone: true, selector: "copilot-chat-user-message", inputs: { messageRendererClass: { classPropertyName: "messageRendererClass", publicName: "messageRendererClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, copyButtonClass: { classPropertyName: "copyButtonClass", publicName: "copyButtonClass", isSignal: true, isRequired: false, transformFunction: null }, editButtonClass: { classPropertyName: "editButtonClass", publicName: "editButtonClass", isSignal: true, isRequired: false, transformFunction: null }, branchNavigationClass: { classPropertyName: "branchNavigationClass", publicName: "branchNavigationClass", isSignal: true, isRequired: false, transformFunction: null }, messageRendererComponent: { classPropertyName: "messageRendererComponent", publicName: "messageRendererComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, copyButtonComponent: { classPropertyName: "copyButtonComponent", publicName: "copyButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, editButtonComponent: { classPropertyName: "editButtonComponent", publicName: "editButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, branchNavigationComponent: { classPropertyName: "branchNavigationComponent", publicName: "branchNavigationComponent", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, branchIndex: { classPropertyName: "branchIndex", publicName: "branchIndex", isSignal: true, isRequired: false, transformFunction: null }, numberOfBranches: { classPropertyName: "numberOfBranches", publicName: "numberOfBranches", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editMessage: "editMessage", switchToBranch: "switchToBranch" }, queries: [{ propertyName: "messageRendererTemplate", first: true, predicate: ["messageRenderer"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "copyButtonTemplate", first: true, predicate: ["copyButton"], descendants: true, read: TemplateRef }, { propertyName: "editButtonTemplate", first: true, predicate: ["editButton"], descendants: true, read: TemplateRef }, { propertyName: "branchNavigationTemplate", first: true, predicate: ["branchNavigation"], descendants: true, read: TemplateRef }], ngImport: i0, template: `
101
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatUserMessage, isStandalone: true, selector: "copilot-chat-user-message", inputs: { messageRendererClass: { classPropertyName: "messageRendererClass", publicName: "messageRendererClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, copyButtonClass: { classPropertyName: "copyButtonClass", publicName: "copyButtonClass", isSignal: true, isRequired: false, transformFunction: null }, editButtonClass: { classPropertyName: "editButtonClass", publicName: "editButtonClass", isSignal: true, isRequired: false, transformFunction: null }, branchNavigationClass: { classPropertyName: "branchNavigationClass", publicName: "branchNavigationClass", isSignal: true, isRequired: false, transformFunction: null }, messageRendererComponent: { classPropertyName: "messageRendererComponent", publicName: "messageRendererComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, copyButtonComponent: { classPropertyName: "copyButtonComponent", publicName: "copyButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, editButtonComponent: { classPropertyName: "editButtonComponent", publicName: "editButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, branchNavigationComponent: { classPropertyName: "branchNavigationComponent", publicName: "branchNavigationComponent", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, branchIndex: { classPropertyName: "branchIndex", publicName: "branchIndex", isSignal: true, isRequired: false, transformFunction: null }, numberOfBranches: { classPropertyName: "numberOfBranches", publicName: "numberOfBranches", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editMessage: "editMessage", switchToBranch: "switchToBranch" }, host: { attributes: { "data-copilotkit": "" } }, queries: [{ propertyName: "messageRendererTemplate", first: true, predicate: ["messageRenderer"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "copyButtonTemplate", first: true, predicate: ["copyButton"], descendants: true, read: TemplateRef }, { propertyName: "editButtonTemplate", first: true, predicate: ["editButton"], descendants: true, read: TemplateRef }, { propertyName: "branchNavigationTemplate", first: true, predicate: ["branchNavigation"], descendants: true, read: TemplateRef }], ngImport: i0, template: `
102
102
  <div [class]="computedClass()" [attr.data-message-id]="message()?.id">
103
103
  <!-- Message Renderer -->
104
104
  @if (messageRendererTemplate || messageRendererComponent()) {
@@ -201,7 +201,7 @@ export class CopilotChatUserMessage {
201
201
  }
202
202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatUserMessage, decorators: [{
203
203
  type: Component,
204
- args: [{ standalone: true, selector: "copilot-chat-user-message", imports: [
204
+ args: [{ standalone: true, selector: "copilot-chat-user-message", host: { "data-copilotkit": "" }, imports: [
205
205
  CommonModule,
206
206
  CopilotSlot,
207
207
  CopilotChatUserMessageRenderer,
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
325
325
  type: ContentChild,
326
326
  args: ["branchNavigation", { read: TemplateRef }]
327
327
  }] } });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxZQUFZLEVBQ1osUUFBUSxFQUVSLHVCQUF1QixFQUN2QixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVV2RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxHQUNqQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUdqQyxTQUFTLHlCQUF5QixDQUFDLE9BQWdDO0lBQ2pFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU8sT0FBTztTQUNYLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1osSUFDRSxJQUFJO1lBQ0osT0FBTyxJQUFJLEtBQUssUUFBUTtZQUN4QixNQUFNLElBQUksSUFBSTtZQUNiLElBQTJCLENBQUMs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1HVCwwR0E3R0MsWUFBWSxzTUFDWixXQUFXLHFIQUNYLDhCQUE4QixrSEFDOUIsZ0NBQWdDLGdLQUNoQyxnQ0FBZ0MscUpBQ2hDLDZCQUE2Qix1R0FDN0Isc0NBQXNDOzs0RkFpSDdCLHNCQUFzQjtrQkEzSGxDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLDJCQUEyQixXQUM1Qjt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsOEJBQThCO3dCQUM5QixnQ0FBZ0M7d0JBQ2hDLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3dCQUM3QixzQ0FBc0M7cUJBQ3ZDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtR1Q7d0RBYUQsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHdEQsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzlDLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUdqRCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHakQsd0JBQXdCO3NCQUR2QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgY29tcHV0ZWQsXG4gIFR5cGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RTbG90IH0gZnJvbSBcIi4uLy4uL3Nsb3RzL2NvcGlsb3Qtc2xvdFwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlT25FZGl0TWVzc2FnZVByb3BzLFxuICB0eXBlIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VPblN3aXRjaFRvQnJhbmNoUHJvcHMsXG4gIHR5cGUgTWVzc2FnZVJlbmRlcmVyQ29udGV4dCxcbiAgdHlwZSBDb3B5QnV0dG9uQ29udGV4dCxcbiAgdHlwZSBFZGl0QnV0dG9uQ29udGV4dCxcbiAgdHlwZSBCcmFuY2hOYXZpZ2F0aW9uQ29udGV4dCxcbiAgdHlwZSBVc2VyTWVzc2FnZVRvb2xiYXJDb250ZXh0LFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLnR5cGVzXCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlUmVuZGVyZXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLXJlbmRlcmVyXCI7XG5pbXBvcnQge1xuICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQ29weUJ1dHRvbixcbiAgQ29waWxvdENoYXRVc2VyTWVzc2FnZUVkaXRCdXR0b24sXG59IGZyb20gXCIuL2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtYnV0dG9uc1wiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLXRvb2xiYXJcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VXNlck1lc3NhZ2VCcmFuY2hOYXZpZ2F0aW9uIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1icmFuY2gtbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IFVzZXJNZXNzYWdlIH0gZnJvbSBcIkBhZy11aS9jb3JlXCI7XG5cbmZ1bmN0aW9uIGZsYXR0ZW5Vc2VyTWVzc2FnZUNvbnRlbnQoY29udGVudD86IFVzZXJNZXNzYWdlW1wiY29udGVudFwiXSk6IHN0cmluZyB7XG4gIGlmICghY29udGVudCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gY29udGVudFxuICAgIC5tYXAoKHBhcnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgcGFydCAmJlxuICAgICAgICB0eXBlb2YgcGFydCA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICBcInR5cGVcIiBpbiBwYXJ0ICYmXG4gICAgICAgIChwYXJ0IGFzIHsgdHlwZT86IHVua25vd24gfSkudHlwZSA9PT0gXCJ0ZXh0XCIgJiZcbiAgICAgICAgdHlwZW9mIChwYXJ0IGFzIHsgdGV4dD86IHVua25vd24gfSkudGV4dCA9PT0gXCJzdHJpbmdcIlxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAocGFydCBhcyB7IHRleHQ6IHN0cmluZyB9KS50ZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfSlcbiAgICAuZmlsdGVyKCh0ZXh0KSA9PiB0ZXh0Lmxlbmd0aCA+IDApXG4gICAgLmpvaW4oXCJcXG5cIik7XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlXCIsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ29waWxvdFNsb3QsXG4gICAgQ29waWxvdENoYXRVc2VyTWVzc2FnZVJlbmRlcmVyLFxuICAgIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VDb3B5QnV0dG9uLFxuICAgIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VFZGl0QnV0dG9uLFxuICAgIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyLFxuICAgIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VCcmFuY2hOYXZpZ2F0aW9uLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjb21wdXRlZENsYXNzKClcIiBbYXR0ci5kYXRhLW1lc3NhZ2UtaWRdPVwibWVzc2FnZSgpPy5pZFwiPlxuICAgICAgPCEtLSBNZXNzYWdlIFJlbmRlcmVyIC0tPlxuICAgICAgQGlmIChtZXNzYWdlUmVuZGVyZXJUZW1wbGF0ZSB8fCBtZXNzYWdlUmVuZGVyZXJDb21wb25lbnQoKSkge1xuICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgW3Nsb3RdPVwibWVzc2FnZVJlbmRlcmVyVGVtcGxhdGUgfHwgbWVzc2FnZVJlbmRlcmVyQ29tcG9uZW50KClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cIm1lc3NhZ2VSZW5kZXJlckNvbnRleHQoKVwiXG4gICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRVc2VyTWVzc2FnZVJlbmRlcmVyXCJcbiAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8Y29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1yZW5kZXJlclxuICAgICAgICAgIFtjb250ZW50XT1cImZsYXR0ZW5lZENvbnRlbnQoKVwiXG4gICAgICAgICAgW2lucHV0Q2xhc3NdPVwibWVzc2FnZVJlbmRlcmVyQ2xhc3MoKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLXJlbmRlcmVyPlxuICAgICAgfVxuXG4gICAgICA8IS0tIFRvb2xiYXIgLS0+XG4gICAgICBAaWYgKHRvb2xiYXJUZW1wbGF0ZSB8fCB0b29sYmFyQ29tcG9uZW50KCkpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cInRvb2xiYXJUZW1wbGF0ZSB8fCB0b29sYmFyQ29tcG9uZW50KClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cInRvb2xiYXJDb250ZXh0KClcIlxuICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyXCJcbiAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyIFtpbnB1dENsYXNzXT1cInRvb2xiYXJDbGFzcygpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICA8IS0tIEFkZGl0aW9uYWwgdG9vbGJhciBpdGVtcyAtLT5cbiAgICAgICAgICAgIEBpZiAoYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRpdGlvbmFsVG9vbGJhckl0ZW1zKCkgfHwgbnVsbFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBDb3B5IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgIEBpZiAoY29weUJ1dHRvblRlbXBsYXRlIHx8IGNvcHlCdXR0b25Db21wb25lbnQoKSkge1xuICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgW3Nsb3RdPVwiY29weUJ1dHRvblRlbXBsYXRlIHx8IGNvcHlCdXR0b25Db21wb25lbnQoKVwiXG4gICAgICAgICAgICAgICAgW2NvbnRleHRdPVwieyBjb250ZW50OiBmbGF0dGVuZWRDb250ZW50KCkgfVwiXG4gICAgICAgICAgICAgICAgW291dHB1dHNdPVwiY29weUJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0VXNlck1lc3NhZ2VDb3B5QnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1jb3B5LWJ1dHRvblxuICAgICAgICAgICAgICAgIFtjb250ZW50XT1cImZsYXR0ZW5lZENvbnRlbnQoKVwiXG4gICAgICAgICAgICAgICAgW2lucHV0Q2xhc3NdPVwiY29weUJ1dHRvbkNsYXNzKClcIlxuICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImhhbmRsZUNvcHkoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLWNvcHktYnV0dG9uPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIEVkaXQgYnV0dG9uIC0tPlxuICAgICAgICAgICAgQGlmICh0cnVlKSB7XG4gICAgICAgICAgICAgIEBpZiAoZWRpdEJ1dHRvblRlbXBsYXRlIHx8IGVkaXRCdXR0b25Db21wb25lbnQoKSkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cImVkaXRCdXR0b25UZW1wbGF0ZSB8fCBlZGl0QnV0dG9uQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwiZWRpdEJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRVc2VyTWVzc2FnZUVkaXRCdXR0b25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtZWRpdC1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtpbnB1dENsYXNzXT1cImVkaXRCdXR0b25DbGFzcygpXCJcbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImhhbmRsZUVkaXQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1lZGl0LWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIEJyYW5jaCBuYXZpZ2F0aW9uIC0tPlxuICAgICAgICAgICAgQGlmIChzaG93QnJhbmNoTmF2aWdhdGlvbigpKSB7XG4gICAgICAgICAgICAgIEBpZiAoYnJhbmNoTmF2aWdhdGlvblRlbXBsYXRlIHx8IGJyYW5jaE5hdmlnYXRpb25Db21wb25lbnQoKSkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cIlxuICAgICAgICAgICAgICAgICAgICBicmFuY2hOYXZpZ2F0aW9uVGVtcGxhdGUgfHwgYnJhbmNoTmF2aWdhdGlvbkNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwiYnJhbmNoTmF2aWdhdGlvbkNvbnRleHQoKVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQnJhbmNoTmF2aWdhdGlvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1icmFuY2gtbmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgW2N1cnJlbnRCcmFuY2hdPVwiYnJhbmNoSW5kZXhWYWx1ZSgpXCJcbiAgICAgICAgICAgICAgICAgIFtudW1iZXJPZkJyYW5jaGVzXT1cIm51bWJlck9mQnJhbmNoZXNWYWx1ZSgpXCJcbiAgICAgICAgICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2UoKSFcIlxuICAgICAgICAgICAgICAgICAgW2lucHV0Q2xhc3NdPVwiYnJhbmNoTmF2aWdhdGlvbkNsYXNzKClcIlxuICAgICAgICAgICAgICAgICAgKHN3aXRjaFRvQnJhbmNoKT1cImhhbmRsZVN3aXRjaFRvQnJhbmNoKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtYnJhbmNoLW5hdmlnYXRpb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0VXNlck1lc3NhZ2Uge1xuICAvLyBDYXB0dXJlIHRlbXBsYXRlcyBmcm9tIGNvbnRlbnQgcHJvamVjdGlvblxuICBAQ29udGVudENoaWxkKFwibWVzc2FnZVJlbmRlcmVyXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgbWVzc2FnZVJlbmRlcmVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxNZXNzYWdlUmVuZGVyZXJDb250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInRvb2xiYXJcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICB0b29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxVc2VyTWVzc2FnZVRvb2xiYXJDb250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcImNvcHlCdXR0b25cIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjb3B5QnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxDb3B5QnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJlZGl0QnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgZWRpdEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8RWRpdEJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwiYnJhbmNoTmF2aWdhdGlvblwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGJyYW5jaE5hdmlnYXRpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEJyYW5jaE5hdmlnYXRpb25Db250ZXh0PjtcblxuICAvLyBQcm9wcyBmb3IgdHdlYWtpbmcgZGVmYXVsdCBjb21wb25lbnRzXG4gIG1lc3NhZ2VSZW5kZXJlckNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICB0b29sYmFyQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIGNvcHlCdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgZWRpdEJ1dHRvbkNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICBicmFuY2hOYXZpZ2F0aW9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8gQ29tcG9uZW50IGlucHV0cyBmb3Igb3ZlcnJpZGVzXG4gIG1lc3NhZ2VSZW5kZXJlckNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4oKTtcbiAgdG9vbGJhckNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4oKTtcbiAgY29weUJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4oKTtcbiAgZWRpdEJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4oKTtcbiAgYnJhbmNoTmF2aWdhdGlvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4oKTtcblxuICAvLyBSZWd1bGFyIGlucHV0c1xuICBtZXNzYWdlID0gaW5wdXQ8VXNlck1lc3NhZ2U+KCk7XG4gIGJyYW5jaEluZGV4ID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xuICBudW1iZXJPZkJyYW5jaGVzID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xuICBhZGRpdGlvbmFsVG9vbGJhckl0ZW1zID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZD4oKTtcbiAgaW5wdXRDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAvLyBPdXRwdXQgZXZlbnRzXG4gIGVkaXRNZXNzYWdlID0gb3V0cHV0PENvcGlsb3RDaGF0VXNlck1lc3NhZ2VPbkVkaXRNZXNzYWdlUHJvcHM+KCk7XG4gIHN3aXRjaFRvQnJhbmNoID0gb3V0cHV0PENvcGlsb3RDaGF0VXNlck1lc3NhZ2VPblN3aXRjaFRvQnJhbmNoUHJvcHM+KCk7XG5cbiAgLy8gRGVyaXZlZCB2YWx1ZXNcbiAgYnJhbmNoSW5kZXhWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYnJhbmNoSW5kZXgoKSA/PyAwKTtcbiAgbnVtYmVyT2ZCcmFuY2hlc1ZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5udW1iZXJPZkJyYW5jaGVzKCkgPz8gMSk7XG5cbiAgLy8gRGVmYXVsdCBjb21wb25lbnRzXG4gIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VSZW5kZXJlciA9IENvcGlsb3RDaGF0VXNlck1lc3NhZ2VSZW5kZXJlcjtcbiAgQ29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXIgPSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhcjtcbiAgQ29waWxvdENoYXRVc2VyTWVzc2FnZUNvcHlCdXR0b24gPSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQ29weUJ1dHRvbjtcbiAgQ29waWxvdENoYXRVc2VyTWVzc2FnZUVkaXRCdXR0b24gPSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlRWRpdEJ1dHRvbjtcbiAgQ29waWxvdENoYXRVc2VyTWVzc2FnZUJyYW5jaE5hdmlnYXRpb24gPVxuICAgIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VCcmFuY2hOYXZpZ2F0aW9uO1xuXG4gIC8vIENvbXB1dGVkIHZhbHVlc1xuICBzaG93QnJhbmNoTmF2aWdhdGlvbiA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLm51bWJlck9mQnJhbmNoZXMoKSA/PyAxKSA+IDEpO1xuXG4gIGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNuKFwiZmxleCBmbGV4LWNvbCBpdGVtcy1lbmQgZ3JvdXAgcHQtMTBcIiwgdGhpcy5pbnB1dENsYXNzKCkpLFxuICApO1xuXG4gIC8vIENvbnRleHQgZm9yIHNsb3RzIChyZWFjdGl2ZSB2aWEgc2lnbmFscylcbiAgZmxhdHRlbmVkQ29udGVudCA9IGNvbXB1dGVkKCgpID0+XG4gICAgZmxhdHRlblVzZXJNZXNzYWdlQ29udGVudCh0aGlzLm1lc3NhZ2UoKT8uY29udGVudCksXG4gICk7XG5cbiAgbWVzc2FnZVJlbmRlcmVyQ29udGV4dCA9IGNvbXB1dGVkPE1lc3NhZ2VSZW5kZXJlckNvbnRleHQ+KCgpID0+ICh7XG4gICAgY29udGVudDogdGhpcy5mbGF0dGVuZWRDb250ZW50KCksXG4gIH0pKTtcblxuICAvLyBPdXRwdXQgbWFwcyBmb3Igc2xvdHNcbiAgY29weUJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlQ29weSgpIH07XG4gIGVkaXRCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZUVkaXQoKSB9O1xuXG4gIGJyYW5jaE5hdmlnYXRpb25Db250ZXh0ID0gY29tcHV0ZWQ8QnJhbmNoTmF2aWdhdGlvbkNvbnRleHQ+KCgpID0+ICh7XG4gICAgY3VycmVudEJyYW5jaDogdGhpcy5icmFuY2hJbmRleFZhbHVlKCksXG4gICAgbnVtYmVyT2ZCcmFuY2hlczogdGhpcy5udW1iZXJPZkJyYW5jaGVzVmFsdWUoKSxcbiAgICBvblN3aXRjaFRvQnJhbmNoOiAocHJvcHMpID0+IHRoaXMuaGFuZGxlU3dpdGNoVG9CcmFuY2gocHJvcHMpLFxuICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSgpISxcbiAgfSkpO1xuXG4gIHRvb2xiYXJDb250ZXh0ID0gY29tcHV0ZWQ8VXNlck1lc3NhZ2VUb29sYmFyQ29udGV4dD4oKCkgPT4gKHtcbiAgICBjaGlsZHJlbjogbnVsbCwgLy8gV2lsbCBiZSBwb3B1bGF0ZWQgYnkgdGhlIHRvb2xiYXIgY29udGVudFxuICB9KSk7XG5cbiAgaGFuZGxlQ29weSgpOiB2b2lkIHtcbiAgICAvLyBDb3B5IGlzIGhhbmRsZWQgYnkgdGhlIGJ1dHRvbiBjb21wb25lbnQgaXRzZWxmXG4gICAgLy8gVGhpcyBpcyBqdXN0IGZvciBhbnkgYWRkaXRpb25hbCBsb2dpYyBpZiBuZWVkZWRcbiAgfVxuXG4gIGhhbmRsZUVkaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0TWVzc2FnZS5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCkhIH0pO1xuICB9XG5cbiAgaGFuZGxlU3dpdGNoVG9CcmFuY2goXG4gICAgcHJvcHM6IENvcGlsb3RDaGF0VXNlck1lc3NhZ2VPblN3aXRjaFRvQnJhbmNoUHJvcHMsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoVG9CcmFuY2guZW1pdChwcm9wcyk7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxZQUFZLEVBQ1osUUFBUSxFQUVSLHVCQUF1QixFQUN2QixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVV2RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxHQUNqQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUdqQyxTQUFTLHlCQUF5QixDQUFDLE9BQWdDO0lBQ2pFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU8sT0FBTztTQUNYLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1osSUFDRSxJQUFJO1lBQ0osT0FBTyxJQUFJLEtBQUssUUFBUTtZQUN4QixNQUFNLElBQUksSUFBSTtZQUNiLElBQTJCLENBQUMs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1HVCwwR0E3R0MsWUFBWSxzTUFDWixXQUFXLHFIQUNYLDhCQUE4QixrSEFDOUIsZ0NBQWdDLGdLQUNoQyxnQ0FBZ0MscUpBQ2hDLDZCQUE2Qix1R0FDN0Isc0NBQXNDOzs0RkFpSDdCLHNCQUFzQjtrQkE1SGxDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLDJCQUEyQixRQUMvQixFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxXQUN0Qjt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsOEJBQThCO3dCQUM5QixnQ0FBZ0M7d0JBQ2hDLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3dCQUM3QixzQ0FBc0M7cUJBQ3ZDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtR1Q7d0RBYUQsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHdEQsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzlDLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUdqRCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHakQsd0JBQXdCO3NCQUR2QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgY29tcHV0ZWQsXG4gIFR5cGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RTbG90IH0gZnJvbSBcIi4uLy4uL3Nsb3RzL2NvcGlsb3Qtc2xvdFwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlT25FZGl0TWVzc2FnZVByb3BzLFxuICB0eXBlIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VPblN3aXRjaFRvQnJhbmNoUHJvcHMsXG4gIHR5cGUgTWVzc2FnZVJlbmRlcmVyQ29udGV4dCxcbiAgdHlwZSBDb3B5QnV0dG9uQ29udGV4dCxcbiAgdHlwZSBFZGl0QnV0dG9uQ29udGV4dCxcbiAgdHlwZSBCcmFuY2hOYXZpZ2F0aW9uQ29udGV4dCxcbiAgdHlwZSBVc2VyTWVzc2FnZVRvb2xiYXJDb250ZXh0LFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLnR5cGVzXCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlUmVuZGVyZXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLXJlbmRlcmVyXCI7XG5pbXBvcnQge1xuICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQ29weUJ1dHRvbixcbiAgQ29waWxvdENoYXRVc2VyTWVzc2FnZUVkaXRCdXR0b24sXG59IGZyb20gXCIuL2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtYnV0dG9uc1wiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLXRvb2xiYXJcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VXNlck1lc3NhZ2VCcmFuY2hOYXZpZ2F0aW9uIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1icmFuY2gtbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IFVzZXJNZXNzYWdlIH0gZnJvbSBcIkBhZy11aS9jb3JlXCI7XG5cbmZ1bmN0aW9uIGZsYXR0ZW5Vc2VyTWVzc2FnZUNvbnRlbnQoY29udGVudD86IFVzZXJNZXNzYWdlW1wiY29udGVudFwiXSk6IHN0cmluZyB7XG4gIGlmICghY29udGVudCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gY29udGVudFxuICAgIC5tYXAoKHBhcnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgcGFydCAmJlxuICAgICAgICB0eXBlb2YgcGFydCA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICBcInR5cGVcIiBpbiBwYXJ0ICYmXG4gICAgICAgIChwYXJ0IGFzIHsgdHlwZT86IHVua25vd24gfSkudHlwZSA9PT0gXCJ0ZXh0XCIgJiZcbiAgICAgICAgdHlwZW9mIChwYXJ0IGFzIHsgdGV4dD86IHVua25vd24gfSkudGV4dCA9PT0gXCJzdHJpbmdcIlxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAocGFydCBhcyB7IHRleHQ6IHN0cmluZyB9KS50ZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfSlcbiAgICAuZmlsdGVyKCh0ZXh0KSA9PiB0ZXh0Lmxlbmd0aCA+IDApXG4gICAgLmpvaW4oXCJcXG5cIik7XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlXCIsXG4gIGhvc3Q6IHsgXCJkYXRhLWNvcGlsb3RraXRcIjogXCJcIiB9LFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90LFxuICAgIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VSZW5kZXJlcixcbiAgICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQ29weUJ1dHRvbixcbiAgICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlRWRpdEJ1dHRvbixcbiAgICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhcixcbiAgICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQnJhbmNoTmF2aWdhdGlvbixcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzcygpXCIgW2F0dHIuZGF0YS1tZXNzYWdlLWlkXT1cIm1lc3NhZ2UoKT8uaWRcIj5cbiAgICAgIDwhLS0gTWVzc2FnZSBSZW5kZXJlciAtLT5cbiAgICAgIEBpZiAobWVzc2FnZVJlbmRlcmVyVGVtcGxhdGUgfHwgbWVzc2FnZVJlbmRlcmVyQ29tcG9uZW50KCkpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cIm1lc3NhZ2VSZW5kZXJlclRlbXBsYXRlIHx8IG1lc3NhZ2VSZW5kZXJlckNvbXBvbmVudCgpXCJcbiAgICAgICAgICBbY29udGV4dF09XCJtZXNzYWdlUmVuZGVyZXJDb250ZXh0KClcIlxuICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0VXNlck1lc3NhZ2VSZW5kZXJlclwiXG4gICAgICAgID5cbiAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGNvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtcmVuZGVyZXJcbiAgICAgICAgICBbY29udGVudF09XCJmbGF0dGVuZWRDb250ZW50KClcIlxuICAgICAgICAgIFtpbnB1dENsYXNzXT1cIm1lc3NhZ2VSZW5kZXJlckNsYXNzKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1yZW5kZXJlcj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUb29sYmFyIC0tPlxuICAgICAgQGlmICh0b29sYmFyVGVtcGxhdGUgfHwgdG9vbGJhckNvbXBvbmVudCgpKSB7XG4gICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICBbc2xvdF09XCJ0b29sYmFyVGVtcGxhdGUgfHwgdG9vbGJhckNvbXBvbmVudCgpXCJcbiAgICAgICAgICBbY29udGV4dF09XCJ0b29sYmFyQ29udGV4dCgpXCJcbiAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhclwiXG4gICAgICAgID5cbiAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhciBbaW5wdXRDbGFzc109XCJ0b29sYmFyQ2xhc3MoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgPCEtLSBBZGRpdGlvbmFsIHRvb2xiYXIgaXRlbXMgLS0+XG4gICAgICAgICAgICBAaWYgKGFkZGl0aW9uYWxUb29sYmFySXRlbXMoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpIHx8IG51bGxcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gQ29weSBidXR0b24gLS0+XG4gICAgICAgICAgICBAaWYgKGNvcHlCdXR0b25UZW1wbGF0ZSB8fCBjb3B5QnV0dG9uQ29tcG9uZW50KCkpIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgIFtzbG90XT1cImNvcHlCdXR0b25UZW1wbGF0ZSB8fCBjb3B5QnV0dG9uQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInsgY29udGVudDogZmxhdHRlbmVkQ29udGVudCgpIH1cIlxuICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cImNvcHlCdXR0b25PdXRwdXRzXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQ29weUJ1dHRvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtY29weS1idXR0b25cbiAgICAgICAgICAgICAgICBbY29udGVudF09XCJmbGF0dGVuZWRDb250ZW50KClcIlxuICAgICAgICAgICAgICAgIFtpbnB1dENsYXNzXT1cImNvcHlCdXR0b25DbGFzcygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVDb3B5KClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1jb3B5LWJ1dHRvbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBFZGl0IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgIEBpZiAodHJ1ZSkge1xuICAgICAgICAgICAgICBAaWYgKGVkaXRCdXR0b25UZW1wbGF0ZSB8fCBlZGl0QnV0dG9uQ29tcG9uZW50KCkpIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJlZGl0QnV0dG9uVGVtcGxhdGUgfHwgZWRpdEJ1dHRvbkNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cImVkaXRCdXR0b25PdXRwdXRzXCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0VXNlck1lc3NhZ2VFZGl0QnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLWVkaXQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJlZGl0QnV0dG9uQ2xhc3MoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVFZGl0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtZWRpdC1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBCcmFuY2ggbmF2aWdhdGlvbiAtLT5cbiAgICAgICAgICAgIEBpZiAoc2hvd0JyYW5jaE5hdmlnYXRpb24oKSkge1xuICAgICAgICAgICAgICBAaWYgKGJyYW5jaE5hdmlnYXRpb25UZW1wbGF0ZSB8fCBicmFuY2hOYXZpZ2F0aW9uQ29tcG9uZW50KCkpIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJcbiAgICAgICAgICAgICAgICAgICAgYnJhbmNoTmF2aWdhdGlvblRlbXBsYXRlIHx8IGJyYW5jaE5hdmlnYXRpb25Db21wb25lbnQoKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cImJyYW5jaE5hdmlnYXRpb25Db250ZXh0KClcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRVc2VyTWVzc2FnZUJyYW5jaE5hdmlnYXRpb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtYnJhbmNoLW5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgIFtjdXJyZW50QnJhbmNoXT1cImJyYW5jaEluZGV4VmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgICBbbnVtYmVyT2ZCcmFuY2hlc109XCJudW1iZXJPZkJyYW5jaGVzVmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlKCkhXCJcbiAgICAgICAgICAgICAgICAgIFtpbnB1dENsYXNzXT1cImJyYW5jaE5hdmlnYXRpb25DbGFzcygpXCJcbiAgICAgICAgICAgICAgICAgIChzd2l0Y2hUb0JyYW5jaCk9XCJoYW5kbGVTd2l0Y2hUb0JyYW5jaCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLWJyYW5jaC1uYXZpZ2F0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlIHtcbiAgLy8gQ2FwdHVyZSB0ZW1wbGF0ZXMgZnJvbSBjb250ZW50IHByb2plY3Rpb25cbiAgQENvbnRlbnRDaGlsZChcIm1lc3NhZ2VSZW5kZXJlclwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIG1lc3NhZ2VSZW5kZXJlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8TWVzc2FnZVJlbmRlcmVyQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJ0b29sYmFyXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdG9vbGJhclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VXNlck1lc3NhZ2VUb29sYmFyQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJjb3B5QnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgY29weUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8Q29weUJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwiZWRpdEJ1dHRvblwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGVkaXRCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEVkaXRCdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcImJyYW5jaE5hdmlnYXRpb25cIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBicmFuY2hOYXZpZ2F0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxCcmFuY2hOYXZpZ2F0aW9uQ29udGV4dD47XG5cbiAgLy8gUHJvcHMgZm9yIHR3ZWFraW5nIGRlZmF1bHQgY29tcG9uZW50c1xuICBtZXNzYWdlUmVuZGVyZXJDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgdG9vbGJhckNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICBjb3B5QnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIGVkaXRCdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgYnJhbmNoTmF2aWdhdGlvbkNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIC8vIENvbXBvbmVudCBpbnB1dHMgZm9yIG92ZXJyaWRlc1xuICBtZXNzYWdlUmVuZGVyZXJDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIHRvb2xiYXJDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGNvcHlCdXR0b25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGVkaXRCdXR0b25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGJyYW5jaE5hdmlnYXRpb25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8gUmVndWxhciBpbnB1dHNcbiAgbWVzc2FnZSA9IGlucHV0PFVzZXJNZXNzYWdlPigpO1xuICBicmFuY2hJbmRleCA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcbiAgbnVtYmVyT2ZCcmFuY2hlcyA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcbiAgYWRkaXRpb25hbFRvb2xiYXJJdGVtcyA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8gT3V0cHV0IGV2ZW50c1xuICBlZGl0TWVzc2FnZSA9IG91dHB1dDxDb3BpbG90Q2hhdFVzZXJNZXNzYWdlT25FZGl0TWVzc2FnZVByb3BzPigpO1xuICBzd2l0Y2hUb0JyYW5jaCA9IG91dHB1dDxDb3BpbG90Q2hhdFVzZXJNZXNzYWdlT25Td2l0Y2hUb0JyYW5jaFByb3BzPigpO1xuXG4gIC8vIERlcml2ZWQgdmFsdWVzXG4gIGJyYW5jaEluZGV4VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmJyYW5jaEluZGV4KCkgPz8gMCk7XG4gIG51bWJlck9mQnJhbmNoZXNWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubnVtYmVyT2ZCcmFuY2hlcygpID8/IDEpO1xuXG4gIC8vIERlZmF1bHQgY29tcG9uZW50c1xuICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlUmVuZGVyZXIgPSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlUmVuZGVyZXI7XG4gIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyID0gQ29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXI7XG4gIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VDb3B5QnV0dG9uID0gQ29waWxvdENoYXRVc2VyTWVzc2FnZUNvcHlCdXR0b247XG4gIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VFZGl0QnV0dG9uID0gQ29waWxvdENoYXRVc2VyTWVzc2FnZUVkaXRCdXR0b247XG4gIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VCcmFuY2hOYXZpZ2F0aW9uID1cbiAgICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQnJhbmNoTmF2aWdhdGlvbjtcblxuICAvLyBDb21wdXRlZCB2YWx1ZXNcbiAgc2hvd0JyYW5jaE5hdmlnYXRpb24gPSBjb21wdXRlZCgoKSA9PiAodGhpcy5udW1iZXJPZkJyYW5jaGVzKCkgPz8gMSkgPiAxKTtcblxuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT5cbiAgICBjbihcImZsZXggZmxleC1jb2wgaXRlbXMtZW5kIGdyb3VwIHB0LTEwXCIsIHRoaXMuaW5wdXRDbGFzcygpKSxcbiAgKTtcblxuICAvLyBDb250ZXh0IGZvciBzbG90cyAocmVhY3RpdmUgdmlhIHNpZ25hbHMpXG4gIGZsYXR0ZW5lZENvbnRlbnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIGZsYXR0ZW5Vc2VyTWVzc2FnZUNvbnRlbnQodGhpcy5tZXNzYWdlKCk/LmNvbnRlbnQpLFxuICApO1xuXG4gIG1lc3NhZ2VSZW5kZXJlckNvbnRleHQgPSBjb21wdXRlZDxNZXNzYWdlUmVuZGVyZXJDb250ZXh0PigoKSA9PiAoe1xuICAgIGNvbnRlbnQ6IHRoaXMuZmxhdHRlbmVkQ29udGVudCgpLFxuICB9KSk7XG5cbiAgLy8gT3V0cHV0IG1hcHMgZm9yIHNsb3RzXG4gIGNvcHlCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZUNvcHkoKSB9O1xuICBlZGl0QnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVFZGl0KCkgfTtcblxuICBicmFuY2hOYXZpZ2F0aW9uQ29udGV4dCA9IGNvbXB1dGVkPEJyYW5jaE5hdmlnYXRpb25Db250ZXh0PigoKSA9PiAoe1xuICAgIGN1cnJlbnRCcmFuY2g6IHRoaXMuYnJhbmNoSW5kZXhWYWx1ZSgpLFxuICAgIG51bWJlck9mQnJhbmNoZXM6IHRoaXMubnVtYmVyT2ZCcmFuY2hlc1ZhbHVlKCksXG4gICAgb25Td2l0Y2hUb0JyYW5jaDogKHByb3BzKSA9PiB0aGlzLmhhbmRsZVN3aXRjaFRvQnJhbmNoKHByb3BzKSxcbiAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSEsXG4gIH0pKTtcblxuICB0b29sYmFyQ29udGV4dCA9IGNvbXB1dGVkPFVzZXJNZXNzYWdlVG9vbGJhckNvbnRleHQ+KCgpID0+ICh7XG4gICAgY2hpbGRyZW46IG51bGwsIC8vIFdpbGwgYmUgcG9wdWxhdGVkIGJ5IHRoZSB0b29sYmFyIGNvbnRlbnRcbiAgfSkpO1xuXG4gIGhhbmRsZUNvcHkoKTogdm9pZCB7XG4gICAgLy8gQ29weSBpcyBoYW5kbGVkIGJ5IHRoZSBidXR0b24gY29tcG9uZW50IGl0c2VsZlxuICAgIC8vIFRoaXMgaXMganVzdCBmb3IgYW55IGFkZGl0aW9uYWwgbG9naWMgaWYgbmVlZGVkXG4gIH1cblxuICBoYW5kbGVFZGl0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdE1lc3NhZ2UuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSgpISB9KTtcbiAgfVxuXG4gIGhhbmRsZVN3aXRjaFRvQnJhbmNoKFxuICAgIHByb3BzOiBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlT25Td2l0Y2hUb0JyYW5jaFByb3BzLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaFRvQnJhbmNoLmVtaXQocHJvcHMpO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==
@@ -119,7 +119,7 @@ export class CopilotChat {
119
119
  this.inputValue.set(value);
120
120
  }
121
121
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChat, deps: [], target: i0.ɵɵFactoryTarget.Component });
122
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CopilotChat, isStandalone: true, selector: "copilot-chat", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null }, threadId: { classPropertyName: "threadId", publicName: "threadId", isSignal: true, isRequired: false, transformFunction: null }, inputComponent: { classPropertyName: "inputComponent", publicName: "inputComponent", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
122
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CopilotChat, isStandalone: true, selector: "copilot-chat", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null }, threadId: { classPropertyName: "threadId", publicName: "threadId", isSignal: true, isRequired: false, transformFunction: null }, inputComponent: { classPropertyName: "inputComponent", publicName: "inputComponent", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-copilotkit": "" } }, providers: [
123
123
  {
124
124
  provide: ChatState,
125
125
  useExisting: CopilotChat,
@@ -143,6 +143,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143
143
  imports: [CommonModule, CopilotChatView],
144
144
  changeDetection: ChangeDetectionStrategy.OnPush,
145
145
  encapsulation: ViewEncapsulation.None,
146
+ host: { "data-copilotkit": "" },
146
147
  template: `
147
148
  <copilot-chat-view
148
149
  [messages]="messages() ?? []"
@@ -161,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
161
162
  ],
162
163
  }]
163
164
  }], ctorParameters: () => [] });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsUUFBUSxFQUVSLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUdMLDhCQUE4QixHQUMvQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFN0M7Ozs7Ozs7O0dBUUc7QUF3QkgsTUFBTSxPQUFPLFdBQVc7SUFDYixVQUFVLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFDdEMsUUFBUSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUN2QyxjQUFjLEdBQUcsS0FBSyxFQUF5QixDQUFDO0lBQ3hDLGVBQWUsR0FBRyxRQUFRLENBQ3pDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxnQkFBZ0IsQ0FDekMsQ0FBQztJQUNPLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRCw0Q0FBNEM7SUFDbkMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFM0IsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6RCxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFdEMsaUJBQWlCLEdBQVcsVUFBVSxFQUFFLENBQUM7SUFDekMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBRWpDO1FBQ0UsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1QyxNQUFNLENBQ0osR0FBRyxFQUFFO1lBQ0gsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQztZQUNuQyxJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPO1lBQ2YsMENBQTBDO1lBQzFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLElBQUksbUJBQW1CLElBQUssQ0FBUyxFQUFFLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixzRUFBc0U7Z0JBQ3hFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7UUFFRix5Q0FBeUM7UUFDekMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDTixDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsdUZBQXVGO1FBQ3ZGLE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFvQjtRQUMvQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksS0FBSyxZQUFZLDhCQUE4QixFQUFFLENBQUM7Z0JBQ3BELGlFQUFpRTtZQUNuRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQUUsT0FBTztRQUVwQyxtQkFBbUI7UUFDbkIsTUFBTSxXQUFXLEdBQVk7WUFDM0IsRUFBRSxFQUFFLFVBQVUsRUFBRTtZQUNoQixJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQUNGLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFOUIsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXhCLCtCQUErQjtRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhCLDZFQUE2RTtRQUM3RSxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO3dHQW5IVSxXQUFXOzRGQUFYLFdBQVcseWRBUFg7WUFDVDtnQkFDRSxPQUFPLEVBQUUsU0FBUztnQkFDbEIsV0FBVyxFQUFFLFdBQVc7YUFDekI7U0FDRiwwQkFmUzs7Ozs7Ozs7O0dBU1QsMkRBWlMsWUFBWSwrQkFBRSxlQUFlOzs0RkFvQjVCLFdBQVc7a0JBdkJ2QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQztvQkFDeEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsU0FBUzs0QkFDbEIsV0FBVyxhQUFhO3lCQUN6QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgc2lnbmFsLFxuICBlZmZlY3QsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBJbmplY3RvcixcbiAgVHlwZSxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VmlldyB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC12aWV3XCI7XG5cbmltcG9ydCB7IERFRkFVTFRfQUdFTlRfSUQsIHJhbmRvbVVVSUQgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L3NoYXJlZFwiO1xuaW1wb3J0IHtcbiAgTWVzc2FnZSxcbiAgQWJzdHJhY3RBZ2VudCxcbiAgQUdVSUNvbm5lY3ROb3RJbXBsZW1lbnRlZEVycm9yLFxufSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuaW1wb3J0IHsgaW5qZWN0QWdlbnRTdG9yZSB9IGZyb20gXCIuLi8uLi9hZ2VudFwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdCB9IGZyb20gXCIuLi8uLi9jb3BpbG90a2l0XCI7XG5pbXBvcnQgeyBDaGF0U3RhdGUgfSBmcm9tIFwiLi4vLi4vY2hhdC1zdGF0ZVwiO1xuXG4vKipcbiAqIENvcGlsb3RDaGF0IGNvbXBvbmVudCAtIEFuZ3VsYXIgZXF1aXZhbGVudCBvZiBSZWFjdCdzIDxDb3BpbG90Q2hhdD5cbiAqIFByb3ZpZGVzIGEgY29tcGxldGUgY2hhdCBpbnRlcmZhY2UgdGhhdCB3aXJlcyBhbiBhZ2VudCB0byB0aGUgY2hhdCB2aWV3XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjb3BpbG90LWNoYXQgW2FnZW50SWRdPVwiJ2RlZmF1bHQnXCIgW3RocmVhZElkXT1cIidhYmMxMjMnXCI+PC9jb3BpbG90LWNoYXQ+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3BpbG90Q2hhdFZpZXddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y29waWxvdC1jaGF0LXZpZXdcbiAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlcygpID8/IFtdXCJcbiAgICAgIFthdXRvU2Nyb2xsXT1cInRydWVcIlxuICAgICAgW21lc3NhZ2VWaWV3Q2xhc3NdPVwiJ3ctZnVsbCdcIlxuICAgICAgW3Nob3dDdXJzb3JdPVwic2hvd0N1cnNvcigpXCJcbiAgICAgIFtpbnB1dENvbXBvbmVudF09XCJpbnB1dENvbXBvbmVudCgpXCJcbiAgICA+XG4gICAgPC9jb3BpbG90LWNoYXQtdmlldz5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ2hhdFN0YXRlLFxuICAgICAgdXNlRXhpc3Rpbmc6IENvcGlsb3RDaGF0LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0IGltcGxlbWVudHMgQ2hhdFN0YXRlIHtcbiAgcmVhZG9ubHkgaW5wdXRWYWx1ZSA9IHNpZ25hbDxzdHJpbmc+KFwiXCIpO1xuICByZWFkb25seSBhZ2VudElkID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSB0aHJlYWRJZCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgaW5wdXRDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZWRBZ2VudElkID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5hZ2VudElkKCkgPz8gREVGQVVMVF9BR0VOVF9JRCxcbiAgKTtcbiAgcmVhZG9ubHkgYWdlbnRTdG9yZSA9IGluamVjdEFnZW50U3RvcmUodGhpcy5yZXNvbHZlZEFnZW50SWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvcGlsb3RLaXQgPSBpbmplY3QoQ29waWxvdEtpdCk7XG4gIC8vIHJlYWRvbmx5IGNoYXRDb25maWcgPSBpbmplY3RDaGF0Q29uZmlnKCk7XG4gIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBwcm90ZWN0ZWQgbWVzc2FnZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFnZW50U3RvcmUoKT8ubWVzc2FnZXMoKSk7XG4gIHByb3RlY3RlZCBpc1J1bm5pbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFnZW50U3RvcmUoKT8uaXNSdW5uaW5nKCkpO1xuICBwcm90ZWN0ZWQgc2hvd0N1cnNvciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZWRUaHJlYWRJZDogc3RyaW5nID0gcmFuZG9tVVVJRCgpO1xuICBwcml2YXRlIGhhc0Nvbm5lY3RlZE9uY2UgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBDb25uZWN0IG9uY2Ugd2hlbiBhZ2VudCBiZWNvbWVzIGF2YWlsYWJsZVxuICAgIC8vIENvbm5lY3Qgb25jZSB3aGVuIGFnZW50IGJlY29tZXMgYXZhaWxhYmxlXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBhID0gdGhpcy5hZ2VudFN0b3JlKCk/LmFnZW50O1xuICAgICAgICBpZiAoIWEpIHJldHVybjtcbiAgICAgICAgLy8gQXBwbHkgdGhyZWFkIGlkIHdoZW4gYWdlbnQgaXMgYXZhaWxhYmxlXG4gICAgICAgIGEudGhyZWFkSWQgPSB0aGlzLnRocmVhZElkKCkgfHwgdGhpcy5nZW5lcmF0ZWRUaHJlYWRJZDtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0Nvbm5lY3RlZE9uY2UpIHtcbiAgICAgICAgICB0aGlzLmhhc0Nvbm5lY3RlZE9uY2UgPSB0cnVlO1xuICAgICAgICAgIGlmIChcImlzQ29waWxvdEtpdEFnZW50XCIgaW4gKGEgYXMgYW55KSkge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0VG9BZ2VudChhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTm9uLUNvcGlsb3RLaXQgYWdlbnQ6IG5vdGhpbmcgdG8gY29ubmVjdDsga2VlcCBkZWZhdWx0IGN1cnNvciBzdGF0ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuXG4gICAgLy8gS2VlcCBhZ2VudCB0aHJlYWRJZCBpbiBzeW5jIHdpdGggaW5wdXRcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgYSA9IHRoaXMuYWdlbnRTdG9yZSgpPy5hZ2VudDtcbiAgICAgIGlmIChhKSB7XG4gICAgICAgIGEudGhyZWFkSWQgPSB0aGlzLnRocmVhZElkKCkgfHwgdGhpcy5nZW5lcmF0ZWRUaHJlYWRJZDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEhpZGUgY3Vyc29yIHdoZW4gYWdlbnQgc3RhcnRzIChydW5BZ2VudCB2aWEgY29yZSBkb2VzIG5vdCBwYXNzIHN1YnNjcmliZXIgY2FsbGJhY2tzKVxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKCkpIHtcbiAgICAgICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0VG9BZ2VudChhZ2VudDogQWJzdHJhY3RBZ2VudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghYWdlbnQpIHJldHVybjtcblxuICAgIHRoaXMuc2hvd0N1cnNvci5zZXQodHJ1ZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jb3BpbG90S2l0LmNvcmUuY29ubmVjdEFnZW50KHsgYWdlbnQgfSk7XG4gICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBR1VJQ29ubmVjdE5vdEltcGxlbWVudGVkRXJyb3IpIHtcbiAgICAgICAgLy8gQ29ubmVjdCBub3QgaW1wbGVtZW50ZWQgKGUuZy4gYWdlbnQgb25seSBzdXBwb3J0cyBydW4pLCBpZ25vcmVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29ubmVjdCB0byBhZ2VudDpcIiwgZXJyb3IpO1xuICAgICAgfVxuICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdWJtaXRJbnB1dCh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYWdlbnQgPSB0aGlzLmFnZW50U3RvcmUoKT8uYWdlbnQ7XG4gICAgaWYgKCFhZ2VudCB8fCAhdmFsdWUudHJpbSgpKSByZXR1cm47XG5cbiAgICAvLyBBZGQgdXNlciBtZXNzYWdlXG4gICAgY29uc3QgdXNlck1lc3NhZ2U6IE1lc3NhZ2UgPSB7XG4gICAgICBpZDogcmFuZG9tVVVJRCgpLFxuICAgICAgcm9sZTogXCJ1c2VyXCIsXG4gICAgICBjb250ZW50OiB2YWx1ZSxcbiAgICB9O1xuICAgIGFnZW50LmFkZE1lc3NhZ2UodXNlck1lc3NhZ2UpO1xuXG4gICAgLy8gQ2xlYXIgdGhlIGlucHV0XG4gICAgdGhpcy5pbnB1dFZhbHVlLnNldChcIlwiKTtcblxuICAgIC8vIFNob3cgY3Vyc29yIHdoaWxlIHByb2Nlc3NpbmdcbiAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KHRydWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgLy8gUnVuIHRoZSBhZ2VudCB2aWEgY29yZSBzbyB0b29scyAoYW5kIGNvbnRleHQsIGZvcndhcmRlZFByb3BzKSBhcmUgaW5jbHVkZWRcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jb3BpbG90S2l0LmNvcmUucnVuQWdlbnQoeyBhZ2VudCB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkFnZW50IHJ1biBlcnJvcjpcIiwgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUlucHV0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWUuc2V0KHZhbHVlKTtcbiAgfVxufVxuIl19
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsUUFBUSxFQUVSLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUdMLDhCQUE4QixHQUMvQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFN0M7Ozs7Ozs7O0dBUUc7QUF5QkgsTUFBTSxPQUFPLFdBQVc7SUFDYixVQUFVLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFDdEMsUUFBUSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUN2QyxjQUFjLEdBQUcsS0FBSyxFQUF5QixDQUFDO0lBQ3hDLGVBQWUsR0FBRyxRQUFRLENBQ3pDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxnQkFBZ0IsQ0FDekMsQ0FBQztJQUNPLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFB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QUNULElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO3dHQW5IVSxXQUFXOzRGQUFYLFdBQVcsMGdCQVBYO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLFdBQVcsRUFBRSxXQUFXO2FBQ3pCO1NBQ0YsMEJBZlM7Ozs7Ozs7OztHQVNULDJEQWJTLFlBQVksK0JBQUUsZUFBZTs7NEZBcUI1QixXQUFXO2tCQXhCdkIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsSUFBSSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFO29CQUMvQixRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsU0FBUzs0QkFDbEIsV0FBVyxhQUFhO3lCQUN6QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgc2lnbmFsLFxuICBlZmZlY3QsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBJbmplY3RvcixcbiAgVHlwZSxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VmlldyB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC12aWV3XCI7XG5cbmltcG9ydCB7IERFRkFVTFRfQUdFTlRfSUQsIHJhbmRvbVVVSUQgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L3NoYXJlZFwiO1xuaW1wb3J0IHtcbiAgTWVzc2FnZSxcbiAgQWJzdHJhY3RBZ2VudCxcbiAgQUdVSUNvbm5lY3ROb3RJbXBsZW1lbnRlZEVycm9yLFxufSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuaW1wb3J0IHsgaW5qZWN0QWdlbnRTdG9yZSB9IGZyb20gXCIuLi8uLi9hZ2VudFwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdCB9IGZyb20gXCIuLi8uLi9jb3BpbG90a2l0XCI7XG5pbXBvcnQgeyBDaGF0U3RhdGUgfSBmcm9tIFwiLi4vLi4vY2hhdC1zdGF0ZVwiO1xuXG4vKipcbiAqIENvcGlsb3RDaGF0IGNvbXBvbmVudCAtIEFuZ3VsYXIgZXF1aXZhbGVudCBvZiBSZWFjdCdzIDxDb3BpbG90Q2hhdD5cbiAqIFByb3ZpZGVzIGEgY29tcGxldGUgY2hhdCBpbnRlcmZhY2UgdGhhdCB3aXJlcyBhbiBhZ2VudCB0byB0aGUgY2hhdCB2aWV3XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjb3BpbG90LWNoYXQgW2FnZW50SWRdPVwiJ2RlZmF1bHQnXCIgW3RocmVhZElkXT1cIidhYmMxMjMnXCI+PC9jb3BpbG90LWNoYXQ+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3BpbG90Q2hhdFZpZXddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBcImRhdGEtY29waWxvdGtpdFwiOiBcIlwiIH0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGNvcGlsb3QtY2hhdC12aWV3XG4gICAgICBbbWVzc2FnZXNdPVwibWVzc2FnZXMoKSA/PyBbXVwiXG4gICAgICBbYXV0b1Njcm9sbF09XCJ0cnVlXCJcbiAgICAgIFttZXNzYWdlVmlld0NsYXNzXT1cIid3LWZ1bGwnXCJcbiAgICAgIFtzaG93Q3Vyc29yXT1cInNob3dDdXJzb3IoKVwiXG4gICAgICBbaW5wdXRDb21wb25lbnRdPVwiaW5wdXRDb21wb25lbnQoKVwiXG4gICAgPlxuICAgIDwvY29waWxvdC1jaGF0LXZpZXc+XG4gIGAsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENoYXRTdGF0ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3BpbG90Q2hhdCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdCBpbXBsZW1lbnRzIENoYXRTdGF0ZSB7XG4gIHJlYWRvbmx5IGlucHV0VmFsdWUgPSBzaWduYWw8c3RyaW5nPihcIlwiKTtcbiAgcmVhZG9ubHkgYWdlbnRJZCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgdGhyZWFkSWQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGlucHV0Q29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc29sdmVkQWdlbnRJZCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuYWdlbnRJZCgpID8/IERFRkFVTFRfQUdFTlRfSUQsXG4gICk7XG4gIHJlYWRvbmx5IGFnZW50U3RvcmUgPSBpbmplY3RBZ2VudFN0b3JlKHRoaXMucmVzb2x2ZWRBZ2VudElkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb3BpbG90S2l0ID0gaW5qZWN0KENvcGlsb3RLaXQpO1xuICAvLyByZWFkb25seSBjaGF0Q29uZmlnID0gaW5qZWN0Q2hhdENvbmZpZygpO1xuICByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgcHJvdGVjdGVkIG1lc3NhZ2VzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hZ2VudFN0b3JlKCk/Lm1lc3NhZ2VzKCkpO1xuICBwcm90ZWN0ZWQgaXNSdW5uaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hZ2VudFN0b3JlKCk/LmlzUnVubmluZygpKTtcbiAgcHJvdGVjdGVkIHNob3dDdXJzb3IgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgZ2VuZXJhdGVkVGhyZWFkSWQ6IHN0cmluZyA9IHJhbmRvbVVVSUQoKTtcbiAgcHJpdmF0ZSBoYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gQ29ubmVjdCBvbmNlIHdoZW4gYWdlbnQgYmVjb21lcyBhdmFpbGFibGVcbiAgICAvLyBDb25uZWN0IG9uY2Ugd2hlbiBhZ2VudCBiZWNvbWVzIGF2YWlsYWJsZVxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuYWdlbnRTdG9yZSgpPy5hZ2VudDtcbiAgICAgICAgaWYgKCFhKSByZXR1cm47XG4gICAgICAgIC8vIEFwcGx5IHRocmVhZCBpZCB3aGVuIGFnZW50IGlzIGF2YWlsYWJsZVxuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCgpIHx8IHRoaXMuZ2VuZXJhdGVkVGhyZWFkSWQ7XG4gICAgICAgIGlmICghdGhpcy5oYXNDb25uZWN0ZWRPbmNlKSB7XG4gICAgICAgICAgdGhpcy5oYXNDb25uZWN0ZWRPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoXCJpc0NvcGlsb3RLaXRBZ2VudFwiIGluIChhIGFzIGFueSkpIHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdFRvQWdlbnQoYSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vbi1Db3BpbG90S2l0IGFnZW50OiBub3RoaW5nIHRvIGNvbm5lY3Q7IGtlZXAgZGVmYXVsdCBjdXJzb3Igc3RhdGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIC8vIEtlZXAgYWdlbnQgdGhyZWFkSWQgaW4gc3luYyB3aXRoIGlucHV0XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmFnZW50U3RvcmUoKT8uYWdlbnQ7XG4gICAgICBpZiAoYSkge1xuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCgpIHx8IHRoaXMuZ2VuZXJhdGVkVGhyZWFkSWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBIaWRlIGN1cnNvciB3aGVuIGFnZW50IHN0YXJ0cyAocnVuQWdlbnQgdmlhIGNvcmUgZG9lcyBub3QgcGFzcyBzdWJzY3JpYmVyIGNhbGxiYWNrcylcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzUnVubmluZygpKSB7XG4gICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvQWdlbnQoYWdlbnQ6IEFic3RyYWN0QWdlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWFnZW50KSByZXR1cm47XG5cbiAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KHRydWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY29waWxvdEtpdC5jb3JlLmNvbm5lY3RBZ2VudCh7IGFnZW50IH0pO1xuICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQUdVSUNvbm5lY3ROb3RJbXBsZW1lbnRlZEVycm9yKSB7XG4gICAgICAgIC8vIENvbm5lY3Qgbm90IGltcGxlbWVudGVkIChlLmcuIGFnZW50IG9ubHkgc3VwcG9ydHMgcnVuKSwgaWdub3JlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvbm5lY3QgdG8gYWdlbnQ6XCIsIGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3VibWl0SW5wdXQodmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFnZW50ID0gdGhpcy5hZ2VudFN0b3JlKCk/LmFnZW50O1xuICAgIGlmICghYWdlbnQgfHwgIXZhbHVlLnRyaW0oKSkgcmV0dXJuO1xuXG4gICAgLy8gQWRkIHVzZXIgbWVzc2FnZVxuICAgIGNvbnN0IHVzZXJNZXNzYWdlOiBNZXNzYWdlID0ge1xuICAgICAgaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIHJvbGU6IFwidXNlclwiLFxuICAgICAgY29udGVudDogdmFsdWUsXG4gICAgfTtcbiAgICBhZ2VudC5hZGRNZXNzYWdlKHVzZXJNZXNzYWdlKTtcblxuICAgIC8vIENsZWFyIHRoZSBpbnB1dFxuICAgIHRoaXMuaW5wdXRWYWx1ZS5zZXQoXCJcIik7XG5cbiAgICAvLyBTaG93IGN1cnNvciB3aGlsZSBwcm9jZXNzaW5nXG4gICAgdGhpcy5zaG93Q3Vyc29yLnNldCh0cnVlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIC8vIFJ1biB0aGUgYWdlbnQgdmlhIGNvcmUgc28gdG9vbHMgKGFuZCBjb250ZXh0LCBmb3J3YXJkZWRQcm9wcykgYXJlIGluY2x1ZGVkXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY29waWxvdEtpdC5jb3JlLnJ1bkFnZW50KHsgYWdlbnQgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJBZ2VudCBydW4gZXJyb3I6XCIsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VJbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFZhbHVlLnNldCh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -2416,7 +2416,7 @@ class CopilotChatAssistantMessage {
2416
2416
  this.regenerate.emit({ message: this.message() });
2417
2417
  }
2418
2418
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatAssistantMessage, deps: [{ token: CopilotChatViewHandlers, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2419
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatAssistantMessage, isStandalone: true, selector: "copilot-chat-assistant-message", inputs: { markdownRendererClass: { classPropertyName: "markdownRendererClass", publicName: "markdownRendererClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, copyButtonClass: { classPropertyName: "copyButtonClass", publicName: "copyButtonClass", isSignal: true, isRequired: false, transformFunction: null }, thumbsUpButtonClass: { classPropertyName: "thumbsUpButtonClass", publicName: "thumbsUpButtonClass", isSignal: true, isRequired: false, transformFunction: null }, thumbsDownButtonClass: { classPropertyName: "thumbsDownButtonClass", publicName: "thumbsDownButtonClass", isSignal: true, isRequired: false, transformFunction: null }, readAloudButtonClass: { classPropertyName: "readAloudButtonClass", publicName: "readAloudButtonClass", isSignal: true, isRequired: false, transformFunction: null }, regenerateButtonClass: { classPropertyName: "regenerateButtonClass", publicName: "regenerateButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolCallsViewClass: { classPropertyName: "toolCallsViewClass", publicName: "toolCallsViewClass", isSignal: true, isRequired: false, transformFunction: null }, markdownRendererComponent: { classPropertyName: "markdownRendererComponent", publicName: "markdownRendererComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, copyButtonComponent: { classPropertyName: "copyButtonComponent", publicName: "copyButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, thumbsUpButtonComponent: { classPropertyName: "thumbsUpButtonComponent", publicName: "thumbsUpButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, thumbsDownButtonComponent: { classPropertyName: "thumbsDownButtonComponent", publicName: "thumbsDownButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, readAloudButtonComponent: { classPropertyName: "readAloudButtonComponent", publicName: "readAloudButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, regenerateButtonComponent: { classPropertyName: "regenerateButtonComponent", publicName: "regenerateButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolCallsViewComponent: { classPropertyName: "toolCallsViewComponent", publicName: "toolCallsViewComponent", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null }, toolbarVisible: { classPropertyName: "toolbarVisible", publicName: "toolbarVisible", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thumbsUp: "thumbsUp", thumbsDown: "thumbsDown", readAloud: "readAloud", regenerate: "regenerate" }, queries: [{ propertyName: "markdownRendererTemplate", first: true, predicate: ["markdownRenderer"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "copyButtonTemplate", first: true, predicate: ["copyButton"], descendants: true, read: TemplateRef }, { propertyName: "thumbsUpButtonTemplate", first: true, predicate: ["thumbsUpButton"], descendants: true, read: TemplateRef }, { propertyName: "thumbsDownButtonTemplate", first: true, predicate: ["thumbsDownButton"], descendants: true, read: TemplateRef }, { propertyName: "readAloudButtonTemplate", first: true, predicate: ["readAloudButton"], descendants: true, read: TemplateRef }, { propertyName: "regenerateButtonTemplate", first: true, predicate: ["regenerateButton"], descendants: true, read: TemplateRef }, { propertyName: "toolCallsViewTemplate", first: true, predicate: ["toolCallsView"], descendants: true, read: TemplateRef }], ngImport: i0, template: `
2419
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatAssistantMessage, isStandalone: true, selector: "copilot-chat-assistant-message", inputs: { markdownRendererClass: { classPropertyName: "markdownRendererClass", publicName: "markdownRendererClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, copyButtonClass: { classPropertyName: "copyButtonClass", publicName: "copyButtonClass", isSignal: true, isRequired: false, transformFunction: null }, thumbsUpButtonClass: { classPropertyName: "thumbsUpButtonClass", publicName: "thumbsUpButtonClass", isSignal: true, isRequired: false, transformFunction: null }, thumbsDownButtonClass: { classPropertyName: "thumbsDownButtonClass", publicName: "thumbsDownButtonClass", isSignal: true, isRequired: false, transformFunction: null }, readAloudButtonClass: { classPropertyName: "readAloudButtonClass", publicName: "readAloudButtonClass", isSignal: true, isRequired: false, transformFunction: null }, regenerateButtonClass: { classPropertyName: "regenerateButtonClass", publicName: "regenerateButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolCallsViewClass: { classPropertyName: "toolCallsViewClass", publicName: "toolCallsViewClass", isSignal: true, isRequired: false, transformFunction: null }, markdownRendererComponent: { classPropertyName: "markdownRendererComponent", publicName: "markdownRendererComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, copyButtonComponent: { classPropertyName: "copyButtonComponent", publicName: "copyButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, thumbsUpButtonComponent: { classPropertyName: "thumbsUpButtonComponent", publicName: "thumbsUpButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, thumbsDownButtonComponent: { classPropertyName: "thumbsDownButtonComponent", publicName: "thumbsDownButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, readAloudButtonComponent: { classPropertyName: "readAloudButtonComponent", publicName: "readAloudButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, regenerateButtonComponent: { classPropertyName: "regenerateButtonComponent", publicName: "regenerateButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolCallsViewComponent: { classPropertyName: "toolCallsViewComponent", publicName: "toolCallsViewComponent", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null }, toolbarVisible: { classPropertyName: "toolbarVisible", publicName: "toolbarVisible", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thumbsUp: "thumbsUp", thumbsDown: "thumbsDown", readAloud: "readAloud", regenerate: "regenerate" }, host: { attributes: { "data-copilotkit": "" } }, queries: [{ propertyName: "markdownRendererTemplate", first: true, predicate: ["markdownRenderer"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "copyButtonTemplate", first: true, predicate: ["copyButton"], descendants: true, read: TemplateRef }, { propertyName: "thumbsUpButtonTemplate", first: true, predicate: ["thumbsUpButton"], descendants: true, read: TemplateRef }, { propertyName: "thumbsDownButtonTemplate", first: true, predicate: ["thumbsDownButton"], descendants: true, read: TemplateRef }, { propertyName: "readAloudButtonTemplate", first: true, predicate: ["readAloudButton"], descendants: true, read: TemplateRef }, { propertyName: "regenerateButtonTemplate", first: true, predicate: ["regenerateButton"], descendants: true, read: TemplateRef }, { propertyName: "toolCallsViewTemplate", first: true, predicate: ["toolCallsView"], descendants: true, read: TemplateRef }], ngImport: i0, template: `
2420
2420
  <div [class]="computedClass()" [attr.data-message-id]="message().id">
2421
2421
  <!-- Markdown Renderer -->
2422
2422
  @if (markdownRendererTemplate || markdownRendererComponent()) {
@@ -2550,7 +2550,7 @@ class CopilotChatAssistantMessage {
2550
2550
  }
2551
2551
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatAssistantMessage, decorators: [{
2552
2552
  type: Component,
2553
- args: [{ standalone: true, selector: "copilot-chat-assistant-message", imports: [
2553
+ args: [{ standalone: true, selector: "copilot-chat-assistant-message", host: { "data-copilotkit": "" }, imports: [
2554
2554
  CommonModule,
2555
2555
  CopilotSlot,
2556
2556
  CopilotChatAssistantMessageRenderer,
@@ -3139,7 +3139,7 @@ class CopilotChatUserMessage {
3139
3139
  }
3140
3140
  constructor() { }
3141
3141
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatUserMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
3142
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatUserMessage, isStandalone: true, selector: "copilot-chat-user-message", inputs: { messageRendererClass: { classPropertyName: "messageRendererClass", publicName: "messageRendererClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, copyButtonClass: { classPropertyName: "copyButtonClass", publicName: "copyButtonClass", isSignal: true, isRequired: false, transformFunction: null }, editButtonClass: { classPropertyName: "editButtonClass", publicName: "editButtonClass", isSignal: true, isRequired: false, transformFunction: null }, branchNavigationClass: { classPropertyName: "branchNavigationClass", publicName: "branchNavigationClass", isSignal: true, isRequired: false, transformFunction: null }, messageRendererComponent: { classPropertyName: "messageRendererComponent", publicName: "messageRendererComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, copyButtonComponent: { classPropertyName: "copyButtonComponent", publicName: "copyButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, editButtonComponent: { classPropertyName: "editButtonComponent", publicName: "editButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, branchNavigationComponent: { classPropertyName: "branchNavigationComponent", publicName: "branchNavigationComponent", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, branchIndex: { classPropertyName: "branchIndex", publicName: "branchIndex", isSignal: true, isRequired: false, transformFunction: null }, numberOfBranches: { classPropertyName: "numberOfBranches", publicName: "numberOfBranches", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editMessage: "editMessage", switchToBranch: "switchToBranch" }, queries: [{ propertyName: "messageRendererTemplate", first: true, predicate: ["messageRenderer"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "copyButtonTemplate", first: true, predicate: ["copyButton"], descendants: true, read: TemplateRef }, { propertyName: "editButtonTemplate", first: true, predicate: ["editButton"], descendants: true, read: TemplateRef }, { propertyName: "branchNavigationTemplate", first: true, predicate: ["branchNavigation"], descendants: true, read: TemplateRef }], ngImport: i0, template: `
3142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatUserMessage, isStandalone: true, selector: "copilot-chat-user-message", inputs: { messageRendererClass: { classPropertyName: "messageRendererClass", publicName: "messageRendererClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, copyButtonClass: { classPropertyName: "copyButtonClass", publicName: "copyButtonClass", isSignal: true, isRequired: false, transformFunction: null }, editButtonClass: { classPropertyName: "editButtonClass", publicName: "editButtonClass", isSignal: true, isRequired: false, transformFunction: null }, branchNavigationClass: { classPropertyName: "branchNavigationClass", publicName: "branchNavigationClass", isSignal: true, isRequired: false, transformFunction: null }, messageRendererComponent: { classPropertyName: "messageRendererComponent", publicName: "messageRendererComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, copyButtonComponent: { classPropertyName: "copyButtonComponent", publicName: "copyButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, editButtonComponent: { classPropertyName: "editButtonComponent", publicName: "editButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, branchNavigationComponent: { classPropertyName: "branchNavigationComponent", publicName: "branchNavigationComponent", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, branchIndex: { classPropertyName: "branchIndex", publicName: "branchIndex", isSignal: true, isRequired: false, transformFunction: null }, numberOfBranches: { classPropertyName: "numberOfBranches", publicName: "numberOfBranches", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editMessage: "editMessage", switchToBranch: "switchToBranch" }, host: { attributes: { "data-copilotkit": "" } }, queries: [{ propertyName: "messageRendererTemplate", first: true, predicate: ["messageRenderer"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "copyButtonTemplate", first: true, predicate: ["copyButton"], descendants: true, read: TemplateRef }, { propertyName: "editButtonTemplate", first: true, predicate: ["editButton"], descendants: true, read: TemplateRef }, { propertyName: "branchNavigationTemplate", first: true, predicate: ["branchNavigation"], descendants: true, read: TemplateRef }], ngImport: i0, template: `
3143
3143
  <div [class]="computedClass()" [attr.data-message-id]="message()?.id">
3144
3144
  <!-- Message Renderer -->
3145
3145
  @if (messageRendererTemplate || messageRendererComponent()) {
@@ -3242,7 +3242,7 @@ class CopilotChatUserMessage {
3242
3242
  }
3243
3243
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatUserMessage, decorators: [{
3244
3244
  type: Component,
3245
- args: [{ standalone: true, selector: "copilot-chat-user-message", imports: [
3245
+ args: [{ standalone: true, selector: "copilot-chat-user-message", host: { "data-copilotkit": "" }, imports: [
3246
3246
  CommonModule,
3247
3247
  CopilotSlot,
3248
3248
  CopilotChatUserMessageRenderer,
@@ -3478,7 +3478,7 @@ class CopilotChatMessageView {
3478
3478
  this.assistantMessageRegenerate.emit(event);
3479
3479
  }
3480
3480
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatMessageView, deps: [], target: i0.ɵɵFactoryTarget.Component });
3481
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatMessageView, isStandalone: true, selector: "copilot-chat-message-view", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, showCursor: { classPropertyName: "showCursor", publicName: "showCursor", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageComponent: { classPropertyName: "assistantMessageComponent", publicName: "assistantMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageTemplate: { classPropertyName: "assistantMessageTemplate", publicName: "assistantMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageClass: { classPropertyName: "assistantMessageClass", publicName: "assistantMessageClass", isSignal: true, isRequired: false, transformFunction: null }, userMessageComponent: { classPropertyName: "userMessageComponent", publicName: "userMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, userMessageTemplate: { classPropertyName: "userMessageTemplate", publicName: "userMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, userMessageClass: { classPropertyName: "userMessageClass", publicName: "userMessageClass", isSignal: true, isRequired: false, transformFunction: null }, cursorComponent: { classPropertyName: "cursorComponent", publicName: "cursorComponent", isSignal: true, isRequired: false, transformFunction: null }, cursorTemplate: { classPropertyName: "cursorTemplate", publicName: "cursorTemplate", isSignal: true, isRequired: false, transformFunction: null }, cursorClass: { classPropertyName: "cursorClass", publicName: "cursorClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { assistantMessageThumbsUp: "assistantMessageThumbsUp", assistantMessageThumbsDown: "assistantMessageThumbsDown", assistantMessageReadAloud: "assistantMessageReadAloud", assistantMessageRegenerate: "assistantMessageRegenerate", userMessageCopy: "userMessageCopy", userMessageEdit: "userMessageEdit" }, queries: [{ propertyName: "customLayoutTemplate", first: true, predicate: ["customLayout"], descendants: true }], ngImport: i0, template: `
3481
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatMessageView, isStandalone: true, selector: "copilot-chat-message-view", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, showCursor: { classPropertyName: "showCursor", publicName: "showCursor", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageComponent: { classPropertyName: "assistantMessageComponent", publicName: "assistantMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageTemplate: { classPropertyName: "assistantMessageTemplate", publicName: "assistantMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageClass: { classPropertyName: "assistantMessageClass", publicName: "assistantMessageClass", isSignal: true, isRequired: false, transformFunction: null }, userMessageComponent: { classPropertyName: "userMessageComponent", publicName: "userMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, userMessageTemplate: { classPropertyName: "userMessageTemplate", publicName: "userMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, userMessageClass: { classPropertyName: "userMessageClass", publicName: "userMessageClass", isSignal: true, isRequired: false, transformFunction: null }, cursorComponent: { classPropertyName: "cursorComponent", publicName: "cursorComponent", isSignal: true, isRequired: false, transformFunction: null }, cursorTemplate: { classPropertyName: "cursorTemplate", publicName: "cursorTemplate", isSignal: true, isRequired: false, transformFunction: null }, cursorClass: { classPropertyName: "cursorClass", publicName: "cursorClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { assistantMessageThumbsUp: "assistantMessageThumbsUp", assistantMessageThumbsDown: "assistantMessageThumbsDown", assistantMessageReadAloud: "assistantMessageReadAloud", assistantMessageRegenerate: "assistantMessageRegenerate", userMessageCopy: "userMessageCopy", userMessageEdit: "userMessageEdit" }, host: { attributes: { "data-copilotkit": "" } }, queries: [{ propertyName: "customLayoutTemplate", first: true, predicate: ["customLayout"], descendants: true }], ngImport: i0, template: `
3482
3482
  <!-- Custom layout template support (render prop pattern) -->
3483
3483
  @if (customLayoutTemplate) {
3484
3484
  <ng-container
@@ -3559,6 +3559,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3559
3559
  args: [{
3560
3560
  selector: "copilot-chat-message-view",
3561
3561
  standalone: true,
3562
+ host: { "data-copilotkit": "" },
3562
3563
  imports: [
3563
3564
  CommonModule,
3564
3565
  CopilotSlot,
@@ -5260,7 +5261,7 @@ class CopilotChatInput {
5260
5261
  this.addFile.emit();
5261
5262
  }
5262
5263
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
5263
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatInput, isStandalone: true, selector: "copilot-chat-input", inputs: { sendButtonClass: { classPropertyName: "sendButtonClass", publicName: "sendButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, textAreaClass: { classPropertyName: "textAreaClass", publicName: "textAreaClass", isSignal: true, isRequired: false, transformFunction: null }, textAreaMaxRows: { classPropertyName: "textAreaMaxRows", publicName: "textAreaMaxRows", isSignal: true, isRequired: false, transformFunction: null }, textAreaPlaceholder: { classPropertyName: "textAreaPlaceholder", publicName: "textAreaPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, audioRecorderClass: { classPropertyName: "audioRecorderClass", publicName: "audioRecorderClass", isSignal: true, isRequired: false, transformFunction: null }, startTranscribeButtonClass: { classPropertyName: "startTranscribeButtonClass", publicName: "startTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, cancelTranscribeButtonClass: { classPropertyName: "cancelTranscribeButtonClass", publicName: "cancelTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, finishTranscribeButtonClass: { classPropertyName: "finishTranscribeButtonClass", publicName: "finishTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, addFileButtonClass: { classPropertyName: "addFileButtonClass", publicName: "addFileButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolsButtonClass: { classPropertyName: "toolsButtonClass", publicName: "toolsButtonClass", isSignal: true, isRequired: false, transformFunction: null }, sendButtonComponent: { classPropertyName: "sendButtonComponent", publicName: "sendButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, textAreaComponent: { classPropertyName: "textAreaComponent", publicName: "textAreaComponent", isSignal: true, isRequired: false, transformFunction: null }, audioRecorderComponent: { classPropertyName: "audioRecorderComponent", publicName: "audioRecorderComponent", isSignal: true, isRequired: false, transformFunction: null }, startTranscribeButtonComponent: { classPropertyName: "startTranscribeButtonComponent", publicName: "startTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, cancelTranscribeButtonComponent: { classPropertyName: "cancelTranscribeButtonComponent", publicName: "cancelTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, finishTranscribeButtonComponent: { classPropertyName: "finishTranscribeButtonComponent", publicName: "finishTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, addFileButtonComponent: { classPropertyName: "addFileButtonComponent", publicName: "addFileButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolsButtonComponent: { classPropertyName: "toolsButtonComponent", publicName: "toolsButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, toolsMenu: { classPropertyName: "toolsMenu", publicName: "toolsMenu", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { submitMessage: "submitMessage", startTranscribe: "startTranscribe", cancelTranscribe: "cancelTranscribe", finishTranscribe: "finishTranscribe", addFile: "addFile", valueChange: "valueChange" }, queries: [{ propertyName: "sendButtonTemplate", first: true, predicate: ["sendButton"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "textAreaTemplate", first: true, predicate: ["textArea"], descendants: true, read: TemplateRef }, { propertyName: "audioRecorderTemplate", first: true, predicate: ["audioRecorder"], descendants: true, read: TemplateRef }, { propertyName: "startTranscribeButtonTemplate", first: true, predicate: ["startTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "cancelTranscribeButtonTemplate", first: true, predicate: ["cancelTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "finishTranscribeButtonTemplate", first: true, predicate: ["finishTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "addFileButtonTemplate", first: true, predicate: ["addFileButton"], descendants: true, read: TemplateRef }, { propertyName: "toolsButtonTemplate", first: true, predicate: ["toolsButton"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "textAreaRef", first: true, predicate: CopilotChatTextarea, descendants: true, read: CopilotChatTextarea }, { propertyName: "audioRecorderRef", first: true, predicate: CopilotChatAudioRecorder, descendants: true }], ngImport: i0, template: `
5264
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatInput, isStandalone: true, selector: "copilot-chat-input", inputs: { sendButtonClass: { classPropertyName: "sendButtonClass", publicName: "sendButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, textAreaClass: { classPropertyName: "textAreaClass", publicName: "textAreaClass", isSignal: true, isRequired: false, transformFunction: null }, textAreaMaxRows: { classPropertyName: "textAreaMaxRows", publicName: "textAreaMaxRows", isSignal: true, isRequired: false, transformFunction: null }, textAreaPlaceholder: { classPropertyName: "textAreaPlaceholder", publicName: "textAreaPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, audioRecorderClass: { classPropertyName: "audioRecorderClass", publicName: "audioRecorderClass", isSignal: true, isRequired: false, transformFunction: null }, startTranscribeButtonClass: { classPropertyName: "startTranscribeButtonClass", publicName: "startTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, cancelTranscribeButtonClass: { classPropertyName: "cancelTranscribeButtonClass", publicName: "cancelTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, finishTranscribeButtonClass: { classPropertyName: "finishTranscribeButtonClass", publicName: "finishTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, addFileButtonClass: { classPropertyName: "addFileButtonClass", publicName: "addFileButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolsButtonClass: { classPropertyName: "toolsButtonClass", publicName: "toolsButtonClass", isSignal: true, isRequired: false, transformFunction: null }, sendButtonComponent: { classPropertyName: "sendButtonComponent", publicName: "sendButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, textAreaComponent: { classPropertyName: "textAreaComponent", publicName: "textAreaComponent", isSignal: true, isRequired: false, transformFunction: null }, audioRecorderComponent: { classPropertyName: "audioRecorderComponent", publicName: "audioRecorderComponent", isSignal: true, isRequired: false, transformFunction: null }, startTranscribeButtonComponent: { classPropertyName: "startTranscribeButtonComponent", publicName: "startTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, cancelTranscribeButtonComponent: { classPropertyName: "cancelTranscribeButtonComponent", publicName: "cancelTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, finishTranscribeButtonComponent: { classPropertyName: "finishTranscribeButtonComponent", publicName: "finishTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, addFileButtonComponent: { classPropertyName: "addFileButtonComponent", publicName: "addFileButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolsButtonComponent: { classPropertyName: "toolsButtonComponent", publicName: "toolsButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, toolsMenu: { classPropertyName: "toolsMenu", publicName: "toolsMenu", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { submitMessage: "submitMessage", startTranscribe: "startTranscribe", cancelTranscribe: "cancelTranscribe", finishTranscribe: "finishTranscribe", addFile: "addFile", valueChange: "valueChange" }, host: { attributes: { "data-copilotkit": "" } }, queries: [{ propertyName: "sendButtonTemplate", first: true, predicate: ["sendButton"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "textAreaTemplate", first: true, predicate: ["textArea"], descendants: true, read: TemplateRef }, { propertyName: "audioRecorderTemplate", first: true, predicate: ["audioRecorder"], descendants: true, read: TemplateRef }, { propertyName: "startTranscribeButtonTemplate", first: true, predicate: ["startTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "cancelTranscribeButtonTemplate", first: true, predicate: ["cancelTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "finishTranscribeButtonTemplate", first: true, predicate: ["finishTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "addFileButtonTemplate", first: true, predicate: ["addFileButton"], descendants: true, read: TemplateRef }, { propertyName: "toolsButtonTemplate", first: true, predicate: ["toolsButton"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "textAreaRef", first: true, predicate: CopilotChatTextarea, descendants: true, read: CopilotChatTextarea }, { propertyName: "audioRecorderRef", first: true, predicate: CopilotChatAudioRecorder, descendants: true }], ngImport: i0, template: `
5264
5265
  <div [class]="computedClass()">
5265
5266
  <!-- Main input area: either textarea or audio recorder -->
5266
5267
  @if (computedMode() === "transcribe") {
@@ -5442,7 +5443,7 @@ class CopilotChatInput {
5442
5443
  }
5443
5444
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatInput, decorators: [{
5444
5445
  type: Component,
5445
- args: [{ standalone: true, selector: "copilot-chat-input", imports: [
5446
+ args: [{ standalone: true, selector: "copilot-chat-input", host: { "data-copilotkit": "" }, imports: [
5446
5447
  CommonModule,
5447
5448
  CopilotSlot,
5448
5449
  LucideAngularModule,
@@ -6299,7 +6300,7 @@ class CopilotChat {
6299
6300
  this.inputValue.set(value);
6300
6301
  }
6301
6302
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChat, deps: [], target: i0.ɵɵFactoryTarget.Component });
6302
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CopilotChat, isStandalone: true, selector: "copilot-chat", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null }, threadId: { classPropertyName: "threadId", publicName: "threadId", isSignal: true, isRequired: false, transformFunction: null }, inputComponent: { classPropertyName: "inputComponent", publicName: "inputComponent", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
6303
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CopilotChat, isStandalone: true, selector: "copilot-chat", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null }, threadId: { classPropertyName: "threadId", publicName: "threadId", isSignal: true, isRequired: false, transformFunction: null }, inputComponent: { classPropertyName: "inputComponent", publicName: "inputComponent", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-copilotkit": "" } }, providers: [
6303
6304
  {
6304
6305
  provide: ChatState,
6305
6306
  useExisting: CopilotChat,
@@ -6323,6 +6324,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6323
6324
  imports: [CommonModule, CopilotChatView],
6324
6325
  changeDetection: ChangeDetectionStrategy.OnPush,
6325
6326
  encapsulation: ViewEncapsulation.None,
6327
+ host: { "data-copilotkit": "" },
6326
6328
  template: `
6327
6329
  <copilot-chat-view
6328
6330
  [messages]="messages() ?? []"