@onecx/angular-accelerator 5.23.5 → 5.24.0

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.
@@ -667,4 +667,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
667
667
  type: ContentChildren,
668
668
  args: [PrimeTemplate]
669
669
  }] } });
670
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxxQkFBcUIsRUFBNEMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUM1SCxPQUFPLEVBQWEsa0JBQWtCLEVBQTJCLE1BQU0sb0NBQW9DLENBQUE7QUFJM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7Ozs7O0FBYTNDLE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsSUFBc0MsUUFBUSxDQUFDLEdBQXNDO1FBQ25GLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUE7UUFDakMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUE7SUFDekMsQ0FBQztJQUNELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFBO0lBQ3BDLENBQUM7SUFHRCxJQUFtQyxTQUFTLENB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LFlBQVk7dUJBQUMsaUJBQWlCO2dCQUl0QiwyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQzBCLGdDQUFnQztzQkFBL0QsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSXJCLG1DQUFtQztzQkFBM0MsS0FBSztnQkFDdUMsd0NBQXdDO3NCQUFwRixZQUFZO3VCQUFDLDZCQUE2QjtnQkFJbEMscUNBQXFDO3NCQUE3QyxLQUFLO2dCQUN5QywwQ0FBMEM7c0JBQXhGLFlBQVk7dUJBQUMsK0JBQStCO2dCQU1wQyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBQ2lDLGtDQUFrQztzQkFBeEUsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBSTVCLDZCQUE2QjtzQkFBckMsS0FBSztnQkFDaUMsa0NBQWtDO3NCQUF4RSxZQUFZO3VCQUFDLHVCQUF1QjtnQkFTNUIsNkJBQTZCO3NCQUFyQyxLQUFLO2dCQU1pQyxrQ0FBa0M7c0JBQXhFLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUs1QixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBVUgsZUFBZTtzQkFEbEIsS0FBSztnQkFTRixTQUFTO3NCQURaLGVBQWU7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERvQ2hlY2ssXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRGF0YUxpc3RHcmlkQ29tcG9uZW50LCBEYXRhTGlzdEdyaWRDb21wb25lbnRTdGF0ZSwgTGlzdEdyaWREYXRhIH0gZnJvbSAnLi4vZGF0YS1saXN0LWdyaWQvZGF0YS1saXN0LWdyaWQuY29tcG9uZW50J1xuaW1wb3J0IHsgUm93LCBTb3J0LCBEYXRhVGFibGVDb21wb25lbnQsIERhdGFUYWJsZUNvbXBvbmVudFN0YXRlIH0gZnJvbSAnLi4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtdGFibGUtY29sdW1uLm1vZGVsJ1xuaW1wb3J0IHsgRGF0YVNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXNvcnQtZGlyZWN0aW9uJ1xuaW1wb3J0IHsgRGF0YUFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtYWN0aW9uJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCB0aW1lc3RhbXAsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG9yZGVyQW5kTWVyZ2VWYWx1ZXNCeVRpbWVzdGFtcCB9IGZyb20gJy4uLy4uL3V0aWxzL3J4anMtdXRpbHMnXG5pbXBvcnQgeyBQcmltZVRlbXBsYXRlIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9maWx0ZXIubW9kZWwnXG5cbmV4cG9ydCB0eXBlIFJvd0xpc3RHcmlkRGF0YSA9IExpc3RHcmlkRGF0YSAmIFJvd1xuXG5leHBvcnQgdHlwZSBEYXRhVmlld0NvbXBvbmVudFN0YXRlID0gRGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGUgJiBEYXRhVGFibGVDb21wb25lbnRTdGF0ZVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtZGF0YS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdmlldy5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ0RhdGFWaWV3Q29tcG9uZW50JywgdXNlRXhpc3Rpbmc6IERhdGFWaWV3Q29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIF9kYXRhTGlzdEdyaWRDb21wb25lbnQ6IERhdGFMaXN0R3JpZENvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKERhdGFMaXN0R3JpZENvbXBvbmVudCkgc2V0IGxpc3RHcmlkKHJlZjogRGF0YUxpc3RHcmlkQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50ID0gcmVmXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JMaXN0R3JpZCgpXG4gIH1cbiAgZ2V0IGxpc3RHcmlkKCk6IERhdGFMaXN0R3JpZENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudFxuICB9XG5cbiAgX2RhdGFUYWJsZUNvbXBvbmVudDogRGF0YVRhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkXG4gIEBWaWV3Q2hpbGQoRGF0YVRhYmxlQ29tcG9uZW50KSBzZXQgZGF0YVRhYmxlKHJlZjogRGF0YVRhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50ID0gcmVmXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JEYXRhVGFibGUoKVxuICB9XG4gIGdldCBkYXRhVGFibGUoKTogRGF0YVRhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50XG4gIH1cblxuICBkYXRhVGFibGVDb21wb25lbnRTdGF0ZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxEYXRhVGFibGVDb21wb25lbnRTdGF0ZT4oMSlcbiAgZGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGUkID0gbmV3IFJlcGxheVN1YmplY3Q8RGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGU+KDEpXG5cbiAgQElucHV0KCkgZGVsZXRlUGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRQZXJtaXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld1Blcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3QWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld0FjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0QWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdGFibGVTZWxlY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB0YWJsZUFsbG93U2VsZWN0QWxsID0gdHJ1ZVxuICBASW5wdXQoKSBkYXRhOiBSb3dMaXN0R3JpZERhdGFbXSA9IFtdXG4gIEBJbnB1dCgpIG5hbWUgPSAnRGF0YSB0YWJsZSdcbiAgQElucHV0KCkgdGl0bGVMaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzdWJ0aXRsZUxpbmVJZHM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgbGF5b3V0OiBhbnkgPSBbJ2dyaWQnLCAnbGlzdCcsICd0YWJsZSddXG4gIEBJbnB1dCgpIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdID0gW11cbiAgQElucHV0KCkgZW1wdHlSZXN1bHRzTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGNsaWVudFNpZGVTb3J0aW5nID0gdHJ1ZVxuICBASW5wdXQoKSBjbGllbnRTaWRlRmlsdGVyaW5nID0gdHJ1ZVxuICBASW5wdXQoKSBmYWxsYmFja0ltYWdlID0gJ3BsYWNlaG9sZGVyLnBuZydcbiAgQElucHV0KCkgZmlsdGVyczogRmlsdGVyW10gPSBbXVxuICBASW5wdXQoKSBzb3J0RmllbGQ6IGFueSA9ICcnXG4gIEBJbnB1dCgpIHNvcnREaXJlY3Rpb246IERhdGFTb3J0RGlyZWN0aW9uID0gRGF0YVNvcnREaXJlY3Rpb24uTk9ORVxuICBASW5wdXQoKSBsaXN0R3JpZFBhZ2luYXRvciA9IHRydWVcbiAgQElucHV0KCkgdGFibGVQYWdpbmF0b3IgPSB0cnVlXG4gIEBJbnB1dCgpIHBhZ2UgPSAwXG4gIEBJbnB1dCgpIHRvdGFsUmVjb3Jkc09uU2VydmVyOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgY3VycmVudFBhZ2VTaG93aW5nS2V5ID0gJ09DWF9EQVRBX1RBQkxFLlNIT1dJTkcnXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlU2hvd2luZ1dpdGhUb3RhbE9uU2VydmVyS2V5ID0gJ09DWF9EQVRBX1RBQkxFLlNIT1dJTkdfV0lUSF9UT1RBTF9PTl9TRVJWRVInXG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93czogUm93W10gPSBbXVxuICBASW5wdXQoKSBmcm96ZW5BY3Rpb25Db2x1bW4gPSBmYWxzZVxuICBASW5wdXQoKSBhY3Rpb25Db2x1bW5Qb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdyaWdodCdcblxuICBASW5wdXQoKVxuICBnZXQgcGFnaW5hdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3RHcmlkUGFnaW5hdG9yICYmIHRoaXMudGFibGVQYWdpbmF0b3JcbiAgfVxuICBzZXQgcGFnaW5hdG9yKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5saXN0R3JpZFBhZ2luYXRvciA9IHZhbHVlXG4gICAgdGhpcy50YWJsZVBhZ2luYXRvciA9IHZhbHVlXG4gIH1cblxuICBASW5wdXQoKSBzb3J0U3RhdGVzOiBEYXRhU29ydERpcmVjdGlvbltdID0gW0RhdGFTb3J0RGlyZWN0aW9uLkFTQ0VORElORywgRGF0YVNvcnREaXJlY3Rpb24uREVTQ0VORElOR11cbiAgQElucHV0KCkgcGFnZVNpemVzOiBudW1iZXJbXSA9IFsxMCwgMjUsIDUwXVxuICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KCkgc3RyaW5nVGFibGVDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnc3RyaW5nVGFibGVDZWxsJykgc3RyaW5nVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3N0cmluZ1RhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUYWJsZUNlbGxUZW1wbGF0ZSB8fCB0aGlzLnN0cmluZ1RhYmxlQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIG51bWJlclRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ251bWJlclRhYmxlQ2VsbCcpIG51bWJlclRhYmxlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9udW1iZXJUYWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubnVtYmVyVGFibGVDZWxsVGVtcGxhdGUgfHwgdGhpcy5udW1iZXJUYWJsZUNlbGxDaGlsZFRlbXBsYXRlXG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uXG4gICAqIHVzZSB0aGUgbmV3IGFwcHJvYWNoIGluc3RlYWQgYnkgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBjb2x1bW4gaWQgKyBJZFRhYmxlQ2VsbFxuICAgKiBlLmcuIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBpZCAnc3RhdHVzJyBpbiBEYXRhVGFibGUgdXNlIHBUZW1wbGF0ZT1cInN0YXR1c0lkVGFibGVDZWxsXCJcbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbVRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgYW5kIGluc3RlYWQgdG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBvZiBhIHNwZWNpZmljIGNvbHVtblxuICAgKiB1c2UgdGhlIG5ldyBhcHByb2FjaCBpbnN0ZWFkIGJ5IGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gY29sdW1uIGlkICsgSWRUYWJsZUNlbGxcbiAgICogZS5nLiBmb3IgYSBjb2x1bW4gd2l0aCB0aGUgaWQgJ3N0YXR1cycgaW4gRGF0YVRhYmxlIHVzZSBwVGVtcGxhdGU9XCJzdGF0dXNJZFRhYmxlQ2VsbFwiXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdjdXN0b21UYWJsZUNlbGwnKSBjdXN0b21UYWJsZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfY3VzdG9tVGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbVRhYmxlQ2VsbFRlbXBsYXRlIHx8IHRoaXMuY3VzdG9tVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgZGF0ZVRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IGRhdGVUYWJsZUNlbGxUZW1wbGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHRhYmxlRGF0ZUNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlVGFibGVDZWxsVGVtcGxhdGVcbiAgfVxuICBzZXQgdGFibGVEYXRlQ2VsbFRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5kYXRlVGFibGVDZWxsVGVtcGxhdGUgPSB2YWx1ZVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IGRhdGVUYWJsZUNlbGxDaGlsZFRlbXBsYXRlXG4gICAqL1xuICBAQ29udGVudENoaWxkKCd0YWJsZURhdGVDZWxsJykgdGFibGVEYXRlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZGF0ZVRhYmxlQ2VsbCcpIGRhdGVUYWJsZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZGF0ZVRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlVGFibGVDZWxsVGVtcGxhdGUgfHwgdGhpcy5kYXRlVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSB8fCB0aGlzLnRhYmxlRGF0ZUNlbGxDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSB0YWJsZUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0YWJsZUNlbGwnKSB0YWJsZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfdGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ2VsbFRlbXBsYXRlIHx8IHRoaXMudGFibGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgdHJhbnNsYXRpb25LZXlUYWJsZUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZXBsYWNlZCBieSB0cmFuc2xhdGlvbktleVRhYmxlQ2VsbFRlbXBsYXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdGFibGVUcmFuc2xhdGlvbktleUNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbktleVRhYmxlQ2VsbFRlbXBsYXRlXG4gIH1cbiAgc2V0IHRhYmxlVHJhbnNsYXRpb25LZXlDZWxsVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRyYW5zbGF0aW9uS2V5VGFibGVDZWxsVGVtcGxhdGUgPSB2YWx1ZVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IHRyYW5zbGF0aW9uS2V5VGFibGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgndGFibGVUcmFuc2xhdGlvbktleUNlbGwnKSB0YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndHJhbnNsYXRpb25LZXlUYWJsZUNlbGwnKSB0cmFuc2xhdGlvbktleVRhYmxlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF90cmFuc2xhdGlvbktleVRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50cmFuc2xhdGlvbktleVRhYmxlQ2VsbFRlbXBsYXRlIHx8XG4gICAgICB0aGlzLnRyYW5zbGF0aW9uS2V5VGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSB8fFxuICAgICAgdGhpcy50YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbENoaWxkVGVtcGxhdGVcbiAgICApXG4gIH1cblxuICBASW5wdXQoKSBncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdncmlkSXRlbVN1YnRpdGxlTGluZXMnKSBncmlkSXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdyaWRJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlIHx8IHRoaXMuZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzJykgbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2xpc3RJdGVtU3VidGl0bGVMaW5lcygpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZSB8fCB0aGlzLmxpc3RJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSBncmlkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2dyaWRJdGVtJykgZ3JpZEl0ZW1DaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZ3JpZEl0ZW0oKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZEl0ZW1UZW1wbGF0ZSB8fCB0aGlzLmdyaWRJdGVtQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbGlzdEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdsaXN0SXRlbScpIGxpc3RJdGVtQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2xpc3RJdGVtKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxpc3RJdGVtVGVtcGxhdGUgfHwgdGhpcy5saXN0SXRlbUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIHJlbGF0aXZlRGF0ZVRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IHJlbGF0aXZlRGF0ZVRhYmxlQ2VsbFRlbXBsYXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdGFibGVSZWxhdGl2ZURhdGVDZWxsVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlVGFibGVDZWxsVGVtcGxhdGVcbiAgfVxuICBzZXQgdGFibGVSZWxhdGl2ZURhdGVDZWxsVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlQ2VsbFRlbXBsYXRlID0gdmFsdWVcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZXBsYWNlIGJ5IHJlbGF0aXZlRGF0ZVRhYmxlQ2VsbENoaWxkVGVtcGxhdGVcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ3RhYmxlUmVsYXRpdmVEYXRlQ2VsbCcpIHRhYmxlUmVsYXRpdmVEYXRlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgncmVsYXRpdmVEYXRlVGFibGVDZWxsJykgcmVsYXRpdmVEYXRlVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5yZWxhdGl2ZURhdGVUYWJsZUNlbGxUZW1wbGF0ZSB8fFxuICAgICAgdGhpcy5yZWxhdGl2ZURhdGVUYWJsZUNlbGxDaGlsZFRlbXBsYXRlIHx8XG4gICAgICB0aGlzLnRhYmxlUmVsYXRpdmVEYXRlQ2VsbENoaWxkVGVtcGxhdGVcbiAgICApXG4gIH1cblxuICBASW5wdXQoKSBsaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdsaXN0VmFsdWUnKSBsaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMubGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIEBJbnB1dCgpIHRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndHJhbnNsYXRpb25LZXlMaXN0VmFsdWUnKSB0cmFuc2xhdGlvbktleUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF90cmFuc2xhdGlvbktleUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbktleUxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMudHJhbnNsYXRpb25LZXlMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cbiAgQElucHV0KCkgbnVtYmVyTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbnVtYmVyTGlzdFZhbHVlJykgbnVtYmVyTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX251bWJlckxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLm51bWJlckxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSByZWxhdGl2ZURhdGVMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdyZWxhdGl2ZURhdGVMaXN0VmFsdWUnKSByZWxhdGl2ZURhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfcmVsYXRpdmVEYXRlTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZUxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgYW5kIGluc3RlYWQgdG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBvZiBhIHNwZWNpZmljIGNvbHVtblxuICAgKiB1c2UgdGhlIG5ldyBhcHByb2FjaCBpbnN0ZWFkIGJ5IGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gY29sdW1uIGlkICsgSWRMaXN0VmFsdWVcbiAgICogZS5nLiBmb3IgYSBjb2x1bW4gd2l0aCB0aGUgaWQgJ3N0YXR1cycgaW4gRGF0YUxpc3RHcmlkIHVzZSBwVGVtcGxhdGU9XCJzdGF0dXNJZExpc3RWYWx1ZVwiXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21MaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGFuZCBpbnN0ZWFkIHRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgb2YgYSBzcGVjaWZpYyBjb2x1bW5cbiAgICogdXNlIHRoZSBuZXcgYXBwcm9hY2ggaW5zdGVhZCBieSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGNvbHVtbiBpZCArIElkTGlzdFZhbHVlXG4gICAqIGUuZy4gZm9yIGEgY29sdW1uIHdpdGggdGhlIGlkICdzdGF0dXMnIERhdGFMaXN0R3JpZCB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRMaXN0VmFsdWVcIlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgnY3VzdG9tTGlzdFZhbHVlJykgY3VzdG9tTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2N1c3RvbUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21MaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLmN1c3RvbUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSBzdHJpbmdMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdzdHJpbmdMaXN0VmFsdWUnKSBzdHJpbmdMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfc3RyaW5nTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ0xpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMuc3RyaW5nTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIEBJbnB1dCgpIGRhdGVMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdkYXRlTGlzdFZhbHVlJykgZGF0ZUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9kYXRlTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRhdGVMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLmRhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cbiAgQElucHV0KCkgdGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndGFibGVGaWx0ZXJDZWxsJykgdGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3RhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUZpbHRlckNlbGxUZW1wbGF0ZSB8fCB0aGlzLnRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSBkYXRlVGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZGF0ZUZpbHRlckNlbGwnKSBkYXRlVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2RhdGVUYWJsZUZpbHRlckNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMuZGF0ZVRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSByZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdyZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGwnKSByZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfcmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMucmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIEBJbnB1dCgpIHRyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGwnKSB0cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxhbnk+XG4gICAgfCB1bmRlZmluZWRcbiAgZ2V0IF90cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMudHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlXG4gIH1cbiAgQElucHV0KCkgc3RyaW5nVGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnc3RyaW5nVGFibGVGaWx0ZXJDZWxsJykgc3RyaW5nVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3N0cmluZ1RhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUYWJsZUZpbHRlckNlbGxUZW1wbGF0ZSB8fCB0aGlzLnN0cmluZ1RhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSBudW1iZXJUYWJsZUZpbHRlckNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdudW1iZXJUYWJsZUZpbHRlckNlbGwnKSBudW1iZXJUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbnVtYmVyVGFibGVGaWx0ZXJDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm51bWJlclRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMubnVtYmVyVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgYW5kIGluc3RlYWQgdG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBvZiBhIHNwZWNpZmljIGNvbHVtbiBmaWx0ZXJcbiAgICogdXNlIHRoZSBuZXcgYXBwcm9hY2ggaW5zdGVhZCBieSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGNvbHVtbiBpZCArIElkVGFibGVGaWx0ZXJDZWxsXG4gICAqIGUuZy4gZm9yIGEgY29sdW1uIHdpdGggdGhlIGlkICdzdGF0dXMnIGluIERhdGFUYWJsZSB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRUYWJsZUZpbHRlckNlbGxcIlxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tVGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uIGZpbHRlclxuICAgKiB1c2UgdGhlIG5ldyBhcHByb2FjaCBpbnN0ZWFkIGJ5IGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gY29sdW1uIGlkICsgSWRUYWJsZUZpbHRlckNlbGxcbiAgICogZS5nLiBmb3IgYSBjb2x1bW4gd2l0aCB0aGUgaWQgJ3N0YXR1cycgaW4gRGF0YVRhYmxlIHVzZSBwVGVtcGxhdGU9XCJzdGF0dXNJZFRhYmxlRmlsdGVyQ2VsbFwiXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdjdXN0b21UYWJsZUZpbHRlckNlbGwnKSBjdXN0b21UYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfY3VzdG9tVGFibGVGaWx0ZXJDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMuY3VzdG9tVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgYWRkaXRpb25hbEFjdGlvbnM6IERhdGFBY3Rpb25bXSA9IFtdXG5cbiAgQE91dHB1dCgpIGZpbHRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJbXT4oKVxuICBAT3V0cHV0KCkgc29ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpXG4gIEBPdXRwdXQoKSBkZWxldGVJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHZpZXdJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIGVkaXRJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd1tdPigpXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpXG4gIEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKVxuICBAT3V0cHV0KCkgY29tcG9uZW50U3RhdGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhVmlld0NvbXBvbmVudFN0YXRlPigpXG4gIGlzRGVsZXRlSXRlbU9ic2VydmVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gIGlzVmlld0l0ZW1PYnNlcnZlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICBJc0VkaXRJdGVtT2JzZXJ2ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgZmlyc3RDb2x1bW5JZDogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgcGFyZW50VGVtcGxhdGVzJDogQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IG51bGwgfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCBudWxsIHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBASW5wdXQoKVxuICBzZXQgcGFyZW50VGVtcGxhdGVzKHZhbHVlOiBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wYXJlbnRUZW1wbGF0ZXMkLm5leHQodmFsdWUpXG4gIH1cblxuICB0ZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpXG4gIHNldCB0ZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgdGVtcGxhdGVzRm9yQ2hpbGRyZW4kOiBPYnNlcnZhYmxlPFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZD4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnRlbXBsYXRlcyQsXG4gICAgdGhpcy5wYXJlbnRUZW1wbGF0ZXMkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3QsIHB0XSkgPT4ge1xuICAgICAgY29uc3QgcWwgPSBuZXcgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+KClcbiAgICAgIHFsLnJlc2V0KFsuLi4odD8udG9BcnJheSgpID8/IFtdKSwgLi4uKHB0Py50b0FycmF5KCkgPz8gW10pXSlcbiAgICAgIHJldHVybiBxbFxuICAgIH0pXG4gIClcblxuICBnZXQgdmlld0l0ZW1PYnNlcnZlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoJ0ludGVyYWN0aXZlRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKT8udmlld0l0ZW0ub2JzZXJ2ZWQgfHwgdGhpcy52aWV3SXRlbS5vYnNlcnZlZFxuICB9XG4gIGdldCBlZGl0SXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldCgnSW50ZXJhY3RpdmVEYXRhVmlld0NvbXBvbmVudCcsIG51bGwpPy5lZGl0SXRlbS5vYnNlcnZlZCB8fCB0aGlzLmVkaXRJdGVtLm9ic2VydmVkXG4gIH1cbiAgZ2V0IGRlbGV0ZUl0ZW1PYnNlcnZlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoJ0ludGVyYWN0aXZlRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKT8uZGVsZXRlSXRlbS5vYnNlcnZlZCB8fCB0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWRcbiAgfVxuICBnZXQgc2VsZWN0aW9uQ2hhbmdlZE9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmluamVjdG9yLmdldCgnSW50ZXJhY3RpdmVEYXRhVmlld0NvbXBvbmVudCcsIG51bGwpPy5zZWxlY3Rpb25DaGFuZ2VkLm9ic2VydmVkIHx8XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQub2JzZXJ2ZWRcbiAgICApXG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpcnN0Q29sdW1uSWQgPSB0aGlzLmNvbHVtbnNbMF0/LmlkXG5cbiAgICBsZXQgZGF0YVRhYmxlQ29tcG9uZW50U3RhdGUkOiBPYnNlcnZhYmxlPERhdGFUYWJsZUNvbXBvbmVudFN0YXRlIHwgUmVjb3JkPHN0cmluZywgbmV2ZXI+PiA9IHRoaXMuZGF0YVRhYmxlQ29tcG9uZW50U3RhdGUkXG4gICAgbGV0IGRhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlJDogT2JzZXJ2YWJsZTxEYXRhTGlzdEdyaWRDb21wb25lbnRTdGF0ZSB8IFJlY29yZDxzdHJpbmcsIG5ldmVyPj4gPSB0aGlzLmRhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlJFxuICAgIGlmICh0aGlzLmxheW91dCA9PT0gJ3RhYmxlJykge1xuICAgICAgZGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGUkID0gZGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGUkLnBpcGUoc3RhcnRXaXRoKHt9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YVRhYmxlQ29tcG9uZW50U3RhdGUkID0gZGF0YVRhYmxlQ29tcG9uZW50U3RhdGUkLnBpcGUoc3RhcnRXaXRoKHt9KSlcbiAgICB9XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIGRhdGFUYWJsZUNvbXBvbmVudFN0YXRlJC5waXBlKHRpbWVzdGFtcCgpKSxcbiAgICAgIGRhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlJC5waXBlKHRpbWVzdGFtcCgpKSxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoY29tcG9uZW50U3RhdGVzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9yZGVyQW5kTWVyZ2VWYWx1ZXNCeVRpbWVzdGFtcChjb21wb25lbnRTdGF0ZXMpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHt0aGlzLmNvbXBvbmVudFN0YXRlQ2hhbmdlZC5lbWl0KHZhbCl9KVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMudGVtcGxhdGVzJC52YWx1ZT8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICBjYXNlICdzdHJpbmdUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMuc3RyaW5nVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdudW1iZXJUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMubnVtYmVyVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdjdXN0b21UYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMuY3VzdG9tVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICd0YWJsZURhdGVDZWxsJzpcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0ZUNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2RhdGVUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMuZGF0ZVRhYmxlQ2VsbENoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndGFibGVDZWxsJzpcbiAgICAgICAgICB0aGlzLnRhYmxlQ2VsbENoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndGFibGVUcmFuc2xhdGlvbktleUNlbGwnOlxuICAgICAgICAgIHRoaXMudGFibGVUcmFuc2xhdGlvbktleUNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsJzpcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uS2V5VGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdncmlkSXRlbVN1YnRpdGxlTGluZXMnOlxuICAgICAgICAgIHRoaXMuZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdsaXN0SXRlbVN1YnRpdGxlTGluZXMnOlxuICAgICAgICAgIHRoaXMubGlzdEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdncmlkSXRlbSc6XG4gICAgICAgICAgdGhpcy5ncmlkSXRlbUNoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnbGlzdEl0ZW0nOlxuICAgICAgICAgIHRoaXMubGlzdEl0ZW1DaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RhYmxlUmVsYXRpdmVEYXRlQ2VsbCc6XG4gICAgICAgICAgdGhpcy50YWJsZVJlbGF0aXZlRGF0ZUNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbCc6XG4gICAgICAgICAgdGhpcy5yZWxhdGl2ZURhdGVUYWJsZUNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2xpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5saXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdudW1iZXJMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMubnVtYmVyTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdyZWxhdGl2ZURhdGVMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdjdXN0b21MaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuY3VzdG9tTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdzdHJpbmdMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuc3RyaW5nTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdkYXRlTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLmRhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy50YWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2RhdGVUYWJsZUZpbHRlckNlbGwnOlxuICAgICAgICAgIHRoaXMuZGF0ZVRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAncmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsJzpcbiAgICAgICAgICB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGwnOlxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3N0cmluZ1RhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy5zdHJpbmdUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ251bWJlclRhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy5udW1iZXJUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2N1c3RvbVRhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy5jdXN0b21UYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnRMaXN0ZW5lckZvckRhdGFUYWJsZSgpXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JMaXN0R3JpZCgpXG4gIH1cblxuICByZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JMaXN0R3JpZCgpIHtcbiAgICBpZiAodGhpcy5sYXlvdXQgIT09ICd0YWJsZScpIHtcbiAgICAgIGlmICh0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5pc0RlbGV0ZUl0ZW1PYnNlcnZlZCA9IHRydWVcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnQ/LmRlbGV0ZUl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnQ/LmRlbGV0ZUl0ZW0uc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZWxldGluZ0VsZW1lbnQoZXZlbnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5pc1ZpZXdJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50Py52aWV3SXRlbS5vYnNlcnZlZCkge1xuICAgICAgICAgIHRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudD8udmlld0l0ZW0uc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy52aWV3aW5nRWxlbWVudChldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lZGl0SXRlbS5vYnNlcnZlZCkge1xuICAgICAgICB0aGlzLklzRWRpdEl0ZW1PYnNlcnZlZCA9IHRydWVcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnQ/LmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgICAgdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50Py5lZGl0SXRlbS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdFbGVtZW50KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JEYXRhVGFibGUoKSB7XG4gICAgaWYgKHRoaXMubGF5b3V0ID09PSAndGFibGUnKSB7XG4gICAgICBpZiAodGhpcy5kZWxldGVJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuaXNEZWxldGVJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py5kZWxldGVUYWJsZVJvdy5vYnNlcnZlZCkge1xuICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudD8uZGVsZXRlVGFibGVSb3cuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZWxldGluZ0VsZW1lbnQoZXZlbnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5pc1ZpZXdJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py52aWV3VGFibGVSb3cub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnZpZXdUYWJsZVJvdy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZpZXdpbmdFbGVtZW50KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuSXNFZGl0SXRlbU9ic2VydmVkID0gdHJ1ZVxuICAgICAgICBpZiAoIXRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudD8uZWRpdFRhYmxlUm93Lm9ic2VydmVkKSB7XG4gICAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py5lZGl0VGFibGVSb3cuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nRWxlbWVudChldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkT2JzZXJ2ZWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnNlbGVjdGlvbkNoYW5nZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnNlbGVjdGlvbkNoYW5nZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJvd1NlbGVjdGlvbkNoYW5nZShldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyaW5nKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbHRlcnMgPSBldmVudFxuICAgIHRoaXMuZmlsdGVyZWQuZW1pdChldmVudClcbiAgfVxuXG4gIHNvcnRpbmcoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IGV2ZW50LnNvcnREaXJlY3Rpb25cbiAgICB0aGlzLnNvcnRGaWVsZCA9IGV2ZW50LnNvcnRDb2x1bW5cbiAgICB0aGlzLnNvcnRlZC5lbWl0KGV2ZW50KVxuICB9XG5cbiAgZGVsZXRpbmdFbGVtZW50KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5pc0RlbGV0ZUl0ZW1PYnNlcnZlZCkge1xuICAgICAgdGhpcy5kZWxldGVJdGVtLmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG5cbiAgdmlld2luZ0VsZW1lbnQoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmlzVmlld0l0ZW1PYnNlcnZlZCkge1xuICAgICAgdGhpcy52aWV3SXRlbS5lbWl0KGV2ZW50KVxuICAgIH1cbiAgfVxuICBlZGl0aW5nRWxlbWVudChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuSXNFZGl0SXRlbU9ic2VydmVkKSB7XG4gICAgICB0aGlzLmVkaXRJdGVtLmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG5cbiAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IFJvd1tdKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQ2hhbmdlZE9ic2VydmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChldmVudClcbiAgICB9XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMucGFnZSA9IGV2ZW50XG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KGV2ZW50KVxuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShldmVudDogbnVtYmVyKSB7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50XG4gICAgdGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdChldmVudClcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImxheW91dCAhPT0gJ3RhYmxlJ1wiPlxuICA8b2N4LWRhdGEtbGlzdC1ncmlkXG4gICAgI29jeGRhdGFsaXN0Z3JpZFxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxuICAgIFtzb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb25cIlxuICAgIFtzb3J0RmllbGRdPVwic29ydEZpZWxkXCJcbiAgICBbc29ydFN0YXRlc109XCJzb3J0U3RhdGVzXCJcbiAgICBbY2xpZW50U2lkZUZpbHRlcmluZ109XCJjbGllbnRTaWRlRmlsdGVyaW5nXCJcbiAgICBbY2xpZW50U2lkZVNvcnRpbmddPVwiY2xpZW50U2lkZVNvcnRpbmdcIlxuICAgIFt0aXRsZUxpbmVJZF09XCJ0aXRsZUxpbmVJZFwiXG4gICAgW3N1YnRpdGxlTGluZUlkc109XCJzdWJ0aXRsZUxpbmVJZHNcIlxuICAgIFtjbGllbnRTaWRlU29ydGluZ109XCJ0cnVlXCJcbiAgICBbcGFnZVNpemVzXT1cInBhZ2VTaXplc1wiXG4gICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICBbcGFnaW5hdG9yXT1cImxpc3RHcmlkUGFnaW5hdG9yXCJcbiAgICBbcGFnZV09XCJwYWdlXCJcbiAgICAocGFnZUNoYW5nZWQpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgIChwYWdlU2l6ZUNoYW5nZWQpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoY29tcG9uZW50U3RhdGVDaGFuZ2VkKT1cImRhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlJC5uZXh0KCRldmVudClcIlxuICAgIFtlbXB0eVJlc3VsdHNNZXNzYWdlXT1cImVtcHR5UmVzdWx0c01lc3NhZ2VcIlxuICAgIFtsYXlvdXRdPVwibGF5b3V0XCJcbiAgICBbZGVsZXRlUGVybWlzc2lvbl09XCJkZWxldGVQZXJtaXNzaW9uXCJcbiAgICBbZWRpdFBlcm1pc3Npb25dPVwiZWRpdFBlcm1pc3Npb25cIlxuICAgIFt2aWV3UGVybWlzc2lvbl09XCJ2aWV3UGVybWlzc2lvblwiXG4gICAgW2RlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZF09XCJkZWxldGVBY3Rpb25FbmFibGVkRmllbGRcIlxuICAgIFtkZWxldGVBY3Rpb25WaXNpYmxlRmllbGRdPVwiZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkXCJcbiAgICBbZWRpdEFjdGlvbkVuYWJsZWRGaWVsZF09XCJlZGl0QWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbZWRpdEFjdGlvblZpc2libGVGaWVsZF09XCJlZGl0QWN0aW9uVmlzaWJsZUZpZWxkXCJcbiAgICBbdmlld0FjdGlvbkVuYWJsZWRGaWVsZF09XCJ2aWV3QWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbdmlld0FjdGlvblZpc2libGVGaWVsZF09XCJ2aWV3QWN0aW9uVmlzaWJsZUZpZWxkXCJcbiAgICBbYWRkaXRpb25hbEFjdGlvbnNdPVwiYWRkaXRpb25hbEFjdGlvbnNcIlxuICAgIFtncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZV09XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzID8gZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIDogdW5kZWZpbmVkXCJcbiAgICBbbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGVdPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lcyA/IGxpc3RJdGVtU3VidGl0bGVMaW5lcyA6IHVuZGVmaW5lZFwiXG4gICAgW2xpc3RJdGVtVGVtcGxhdGVdPVwiX2xpc3RJdGVtID8gbGlzdEl0ZW0gOiB1bmRlZmluZWRcIlxuICAgIFtsaXN0VmFsdWVUZW1wbGF0ZV09XCJfbGlzdFZhbHVlID8gbGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbdHJhbnNsYXRpb25LZXlMaXN0VmFsdWVUZW1wbGF0ZV09XCJfdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUgPyB0cmFuc2xhdGlvbktleUxpc3RWYWx1ZSA6IHVuZGVmaW5lZFwiXG4gICAgW251bWJlckxpc3RWYWx1ZVRlbXBsYXRlXT1cIl9udW1iZXJMaXN0VmFsdWUgPyBudW1iZXJMaXN0VmFsdWUgOiB1bmRlZmluZWRcIlxuICAgIFtyZWxhdGl2ZURhdGVMaXN0VmFsdWVUZW1wbGF0ZV09XCJfcmVsYXRpdmVEYXRlTGlzdFZhbHVlID8gcmVsYXRpdmVEYXRlTGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tTGlzdFZhbHVlVGVtcGxhdGVdPVwiX2N1c3RvbUxpc3RWYWx1ZSA/IGN1c3RvbUxpc3RWYWx1ZSA6IHVuZGVmaW5lZFwiXG4gICAgW3N0cmluZ0xpc3RWYWx1ZVRlbXBsYXRlXT1cIl9zdHJpbmdMaXN0VmFsdWUgPyBzdHJpbmdMaXN0VmFsdWUgOiB1bmRlZmluZWRcIlxuICAgIFtkYXRlTGlzdFZhbHVlVGVtcGxhdGVdPVwiX2RhdGVMaXN0VmFsdWUgPyBkYXRlTGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbZ3JpZEl0ZW1UZW1wbGF0ZV09XCJfZ3JpZEl0ZW0gPyBncmlkSXRlbSAgOiB1bmRlZmluZWRcIlxuICAgIFt0b3RhbFJlY29yZHNPblNlcnZlcl09XCJ0b3RhbFJlY29yZHNPblNlcnZlclwiXG4gICAgW3BhcmVudFRlbXBsYXRlc109XCJ0ZW1wbGF0ZXNGb3JDaGlsZHJlbiQgfCBhc3luY1wiXG4gID5cbiAgPC9vY3gtZGF0YS1saXN0LWdyaWQ+XG4gIDxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2dyaWRJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZ3JpZEl0ZW0gbGV0LWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9ncmlkSXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9ncmlkSXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCI+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW0gbGV0LWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9saXN0SXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9saXN0SXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCI+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfbGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9saXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICN0cmFuc2xhdGlvbktleUxpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90cmFuc2xhdGlvbktleUxpc3RWYWx1ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI251bWJlckxpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX251bWJlckxpc3RWYWx1ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbnVtYmVyTGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjcmVsYXRpdmVEYXRlTGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfcmVsYXRpdmVEYXRlTGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9yZWxhdGl2ZURhdGVMaXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNjdXN0b21MaXN0VmFsdWUgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9jdXN0b21MaXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2N1c3RvbUxpc3RWYWx1ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3N0cmluZ0xpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3N0cmluZ0xpc3RWYWx1ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfc3RyaW5nTGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZGF0ZUxpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2RhdGVMaXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2RhdGVMaXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwibGF5b3V0ID09PSAndGFibGUnXCI+XG4gIDxvY3gtZGF0YS10YWJsZVxuICAgICNvY3hkYXRhdGFibGVcbiAgICBbcm93c109XCJkYXRhXCJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICBbc29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICBbc29ydENvbHVtbl09XCJzb3J0RmllbGRcIlxuICAgIFtzb3J0U3RhdGVzXT1cInNvcnRTdGF0ZXNcIlxuICAgIFtjbGllbnRTaWRlRmlsdGVyaW5nXT1cImNsaWVudFNpZGVGaWx0ZXJpbmdcIlxuICAgIFtjbGllbnRTaWRlU29ydGluZ109XCJjbGllbnRTaWRlU29ydGluZ1wiXG4gICAgW3BhZ2VTaXplc109XCJwYWdlU2l6ZXNcIlxuICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgW3BhZ2luYXRvcl09XCJ0YWJsZVBhZ2luYXRvclwiXG4gICAgW3BhZ2VdPVwicGFnZVwiXG4gICAgKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAocGFnZVNpemVDaGFuZ2VkKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGNvbXBvbmVudFN0YXRlQ2hhbmdlZCk9XCJkYXRhVGFibGVDb21wb25lbnRTdGF0ZSQubmV4dCgkZXZlbnQpXCJcbiAgICBbc2VsZWN0ZWRSb3dzXT1cInNlbGVjdGVkUm93c1wiXG4gICAgW2Zyb3plbkFjdGlvbkNvbHVtbl09XCJmcm96ZW5BY3Rpb25Db2x1bW5cIlxuICAgIFthY3Rpb25Db2x1bW5Qb3NpdGlvbl09XCJhY3Rpb25Db2x1bW5Qb3NpdGlvblwiXG4gICAgW2VtcHR5UmVzdWx0c01lc3NhZ2VdPVwiZW1wdHlSZXN1bHRzTWVzc2FnZVwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW2RlbGV0ZVBlcm1pc3Npb25dPVwiZGVsZXRlUGVybWlzc2lvblwiXG4gICAgW2VkaXRQZXJtaXNzaW9uXT1cImVkaXRQZXJtaXNzaW9uXCJcbiAgICBbdmlld1Blcm1pc3Npb25dPVwidmlld1Blcm1pc3Npb25cIlxuICAgIFtkZWxldGVBY3Rpb25FbmFibGVkRmllbGRdPVwiZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkXT1cImRlbGV0ZUFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25FbmFibGVkRmllbGRdPVwiZWRpdEFjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25WaXNpYmxlRmllbGRdPVwiZWRpdEFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25FbmFibGVkRmllbGRdPVwidmlld0FjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25WaXNpYmxlRmllbGRdPVwidmlld0FjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2FkZGl0aW9uYWxBY3Rpb25zXT1cImFkZGl0aW9uYWxBY3Rpb25zXCJcbiAgICBbc3RyaW5nQ2VsbFRlbXBsYXRlXT1cIl9zdHJpbmdUYWJsZUNlbGwgPyBzdHJpbmdDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbbnVtYmVyQ2VsbFRlbXBsYXRlXT1cIl9udW1iZXJUYWJsZUNlbGwgPyBudW1iZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tQ2VsbFRlbXBsYXRlXT1cIl9jdXN0b21UYWJsZUNlbGwgPyBjdXN0b21DZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbZGF0ZUNlbGxUZW1wbGF0ZV09XCJfZGF0ZVRhYmxlQ2VsbCA/IGRhdGVDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbcmVsYXRpdmVEYXRlQ2VsbFRlbXBsYXRlXT1cIl9yZWxhdGl2ZURhdGVUYWJsZUNlbGwgPyByZWxhdGl2ZURhdGVDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY2VsbFRlbXBsYXRlXT1cIl90YWJsZUNlbGwgPyBjZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbdHJhbnNsYXRpb25LZXlDZWxsVGVtcGxhdGVdPVwiX3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsID8gdHJhbnNsYXRpb25LZXlDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbZmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl90YWJsZUZpbHRlckNlbGwgPyBmaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbZGF0ZUZpbHRlckNlbGxUZW1wbGF0ZV09XCJfZGF0ZVRhYmxlRmlsdGVyQ2VsbCA/IGRhdGVGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9jdXN0b21UYWJsZUZpbHRlckNlbGwgPyBjdXN0b21GaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbbnVtYmVyRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9udW1iZXJUYWJsZUZpbHRlckNlbGwgPyBudW1iZXJGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbc3RyaW5nRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9zdHJpbmdUYWJsZUZpbHRlckNlbGwgPyBzdHJpbmdGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbcmVsYXRpdmVEYXRlRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9yZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGwgPyByZWxhdGl2ZURhdGVGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbdHJhbnNsYXRpb25LZXlGaWx0ZXJDZWxsVGVtcGxhdGVdPVwiX3RyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsID8gdHJhbnNsYXRpb25LZXlGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICAoc29ydGVkKT1cInNvcnRpbmcoJGV2ZW50KVwiXG4gICAgKGZpbHRlcmVkKT1cImZpbHRlcmluZygkZXZlbnQpXCJcbiAgICBbdG90YWxSZWNvcmRzT25TZXJ2ZXJdPVwidG90YWxSZWNvcmRzT25TZXJ2ZXJcIlxuICAgIFtjdXJyZW50UGFnZVNob3dpbmdLZXldPVwiY3VycmVudFBhZ2VTaG93aW5nS2V5XCJcbiAgICBbY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXldPVwiY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXlcIlxuICAgIFtwYXJlbnRUZW1wbGF0ZXNdPVwidGVtcGxhdGVzRm9yQ2hpbGRyZW4kIHwgYXN5bmNcIlxuICAgIFthbGxvd1NlbGVjdEFsbF09XCJ0YWJsZUFsbG93U2VsZWN0QWxsXCJcbiAgICBbc2VsZWN0aW9uRW5hYmxlZEZpZWxkXT1cInRhYmxlU2VsZWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgPlxuICA8L29jeC1kYXRhLXRhYmxlPlxuICA8bmctdGVtcGxhdGUgI3N0cmluZ0NlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9zdHJpbmdUYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3N0cmluZ1RhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI251bWJlckNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9udW1iZXJUYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX251bWJlclRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbUNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9jdXN0b21UYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2N1c3RvbVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2RhdGVDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfZGF0ZVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZGF0ZVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjcmVsYXRpdmVEYXRlQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfcmVsYXRpdmVEYXRlVGFibGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfdGFibGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICN0cmFuc2xhdGlvbktleUNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl90cmFuc2xhdGlvbktleVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdHJhbnNsYXRpb25LZXlUYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3N0cmluZ0ZpbHRlckNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9zdHJpbmdUYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3N0cmluZ1RhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZmlsdGVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3RhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdGFibGVGaWx0ZXJDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNkYXRlRmlsdGVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2RhdGVUYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2RhdGVUYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbUZpbHRlckNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9jdXN0b21UYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2N1c3RvbVRhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbnVtYmVyRmlsdGVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX251bWJlclRhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbnVtYmVyVGFibGVGaWx0ZXJDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNyZWxhdGl2ZURhdGVGaWx0ZXJDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfcmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9yZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3RyYW5zbGF0aW9uS2V5RmlsdGVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3RyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
670
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxxQkFBcUIsRUFBNEMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUM1SCxPQUFPLEVBQWEsa0JBQWtCLEVBQTJCLE1BQU0sb0NBQW9DLENBQUE7QUFJM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7Ozs7O0FBYTNDLE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsSUFBc0MsUUFBUSxDQUFDLEdBQXNDO1FBQ25GLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUE7UUFDakMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUE7SUFDekMsQ0FBQztJQUNELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFBO0lBQ3BDLENBQUM7SUFHRCxJQUFtQyxTQUFTLENB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LFlBQVk7dUJBQUMsaUJBQWlCO2dCQUl0QiwyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQzBCLGdDQUFnQztzQkFBL0QsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSXJCLG1DQUFtQztzQkFBM0MsS0FBSztnQkFDdUMsd0NBQXdDO3NCQUFwRixZQUFZO3VCQUFDLDZCQUE2QjtnQkFJbEMscUNBQXFDO3NCQUE3QyxLQUFLO2dCQUN5QywwQ0FBMEM7c0JBQXhGLFlBQVk7dUJBQUMsK0JBQStCO2dCQU1wQyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBQ2lDLGtDQUFrQztzQkFBeEUsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBSTVCLDZCQUE2QjtzQkFBckMsS0FBSztnQkFDaUMsa0NBQWtDO3NCQUF4RSxZQUFZO3VCQUFDLHVCQUF1QjtnQkFTNUIsNkJBQTZCO3NCQUFyQyxLQUFLO2dCQU1pQyxrQ0FBa0M7c0JBQXhFLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUs1QixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBVUgsZUFBZTtzQkFEbEIsS0FBSztnQkFTRixTQUFTO3NCQURaLGVBQWU7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERvQ2hlY2ssXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRGF0YUxpc3RHcmlkQ29tcG9uZW50LCBEYXRhTGlzdEdyaWRDb21wb25lbnRTdGF0ZSwgTGlzdEdyaWREYXRhIH0gZnJvbSAnLi4vZGF0YS1saXN0LWdyaWQvZGF0YS1saXN0LWdyaWQuY29tcG9uZW50J1xuaW1wb3J0IHsgUm93LCBTb3J0LCBEYXRhVGFibGVDb21wb25lbnQsIERhdGFUYWJsZUNvbXBvbmVudFN0YXRlIH0gZnJvbSAnLi4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtdGFibGUtY29sdW1uLm1vZGVsJ1xuaW1wb3J0IHsgRGF0YVNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXNvcnQtZGlyZWN0aW9uJ1xuaW1wb3J0IHsgRGF0YUFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtYWN0aW9uJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCB0aW1lc3RhbXAsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG9yZGVyQW5kTWVyZ2VWYWx1ZXNCeVRpbWVzdGFtcCB9IGZyb20gJy4uLy4uL3V0aWxzL3J4anMtdXRpbHMnXG5pbXBvcnQgeyBQcmltZVRlbXBsYXRlIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9maWx0ZXIubW9kZWwnXG5cbmV4cG9ydCB0eXBlIFJvd0xpc3RHcmlkRGF0YSA9IExpc3RHcmlkRGF0YSAmIFJvd1xuXG5leHBvcnQgdHlwZSBEYXRhVmlld0NvbXBvbmVudFN0YXRlID0gRGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGUgJiBEYXRhVGFibGVDb21wb25lbnRTdGF0ZVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtZGF0YS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdmlldy5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ0RhdGFWaWV3Q29tcG9uZW50JywgdXNlRXhpc3Rpbmc6IERhdGFWaWV3Q29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIF9kYXRhTGlzdEdyaWRDb21wb25lbnQ6IERhdGFMaXN0R3JpZENvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKERhdGFMaXN0R3JpZENvbXBvbmVudCkgc2V0IGxpc3RHcmlkKHJlZjogRGF0YUxpc3RHcmlkQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50ID0gcmVmXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JMaXN0R3JpZCgpXG4gIH1cbiAgZ2V0IGxpc3RHcmlkKCk6IERhdGFMaXN0R3JpZENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudFxuICB9XG5cbiAgX2RhdGFUYWJsZUNvbXBvbmVudDogRGF0YVRhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkXG4gIEBWaWV3Q2hpbGQoRGF0YVRhYmxlQ29tcG9uZW50KSBzZXQgZGF0YVRhYmxlKHJlZjogRGF0YVRhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50ID0gcmVmXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JEYXRhVGFibGUoKVxuICB9XG4gIGdldCBkYXRhVGFibGUoKTogRGF0YVRhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50XG4gIH1cblxuICBkYXRhVGFibGVDb21wb25lbnRTdGF0ZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxEYXRhVGFibGVDb21wb25lbnRTdGF0ZT4oMSlcbiAgZGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGUkID0gbmV3IFJlcGxheVN1YmplY3Q8RGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGU+KDEpXG5cbiAgQElucHV0KCkgZGVsZXRlUGVybWlzc2lvbjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZWRpdFBlcm1pc3Npb246IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHZpZXdQZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3QWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld0FjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0QWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdGFibGVTZWxlY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB0YWJsZUFsbG93U2VsZWN0QWxsID0gdHJ1ZVxuICBASW5wdXQoKSBkYXRhOiBSb3dMaXN0R3JpZERhdGFbXSA9IFtdXG4gIEBJbnB1dCgpIG5hbWUgPSAnRGF0YSB0YWJsZSdcbiAgQElucHV0KCkgdGl0bGVMaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzdWJ0aXRsZUxpbmVJZHM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgbGF5b3V0OiBhbnkgPSBbJ2dyaWQnLCAnbGlzdCcsICd0YWJsZSddXG4gIEBJbnB1dCgpIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdID0gW11cbiAgQElucHV0KCkgZW1wdHlSZXN1bHRzTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGNsaWVudFNpZGVTb3J0aW5nID0gdHJ1ZVxuICBASW5wdXQoKSBjbGllbnRTaWRlRmlsdGVyaW5nID0gdHJ1ZVxuICBASW5wdXQoKSBmYWxsYmFja0ltYWdlID0gJ3BsYWNlaG9sZGVyLnBuZydcbiAgQElucHV0KCkgZmlsdGVyczogRmlsdGVyW10gPSBbXVxuICBASW5wdXQoKSBzb3J0RmllbGQ6IGFueSA9ICcnXG4gIEBJbnB1dCgpIHNvcnREaXJlY3Rpb246IERhdGFTb3J0RGlyZWN0aW9uID0gRGF0YVNvcnREaXJlY3Rpb24uTk9ORVxuICBASW5wdXQoKSBsaXN0R3JpZFBhZ2luYXRvciA9IHRydWVcbiAgQElucHV0KCkgdGFibGVQYWdpbmF0b3IgPSB0cnVlXG4gIEBJbnB1dCgpIHBhZ2UgPSAwXG4gIEBJbnB1dCgpIHRvdGFsUmVjb3Jkc09uU2VydmVyOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgY3VycmVudFBhZ2VTaG93aW5nS2V5ID0gJ09DWF9EQVRBX1RBQkxFLlNIT1dJTkcnXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlU2hvd2luZ1dpdGhUb3RhbE9uU2VydmVyS2V5ID0gJ09DWF9EQVRBX1RBQkxFLlNIT1dJTkdfV0lUSF9UT1RBTF9PTl9TRVJWRVInXG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93czogUm93W10gPSBbXVxuICBASW5wdXQoKSBmcm96ZW5BY3Rpb25Db2x1bW4gPSBmYWxzZVxuICBASW5wdXQoKSBhY3Rpb25Db2x1bW5Qb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdyaWdodCdcblxuICBASW5wdXQoKVxuICBnZXQgcGFnaW5hdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3RHcmlkUGFnaW5hdG9yICYmIHRoaXMudGFibGVQYWdpbmF0b3JcbiAgfVxuICBzZXQgcGFnaW5hdG9yKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5saXN0R3JpZFBhZ2luYXRvciA9IHZhbHVlXG4gICAgdGhpcy50YWJsZVBhZ2luYXRvciA9IHZhbHVlXG4gIH1cblxuICBASW5wdXQoKSBzb3J0U3RhdGVzOiBEYXRhU29ydERpcmVjdGlvbltdID0gW0RhdGFTb3J0RGlyZWN0aW9uLkFTQ0VORElORywgRGF0YVNvcnREaXJlY3Rpb24uREVTQ0VORElOR11cbiAgQElucHV0KCkgcGFnZVNpemVzOiBudW1iZXJbXSA9IFsxMCwgMjUsIDUwXVxuICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KCkgc3RyaW5nVGFibGVDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnc3RyaW5nVGFibGVDZWxsJykgc3RyaW5nVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3N0cmluZ1RhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUYWJsZUNlbGxUZW1wbGF0ZSB8fCB0aGlzLnN0cmluZ1RhYmxlQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIG51bWJlclRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ251bWJlclRhYmxlQ2VsbCcpIG51bWJlclRhYmxlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9udW1iZXJUYWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubnVtYmVyVGFibGVDZWxsVGVtcGxhdGUgfHwgdGhpcy5udW1iZXJUYWJsZUNlbGxDaGlsZFRlbXBsYXRlXG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uXG4gICAqIHVzZSB0aGUgbmV3IGFwcHJvYWNoIGluc3RlYWQgYnkgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBjb2x1bW4gaWQgKyBJZFRhYmxlQ2VsbFxuICAgKiBlLmcuIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBpZCAnc3RhdHVzJyBpbiBEYXRhVGFibGUgdXNlIHBUZW1wbGF0ZT1cInN0YXR1c0lkVGFibGVDZWxsXCJcbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbVRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgYW5kIGluc3RlYWQgdG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBvZiBhIHNwZWNpZmljIGNvbHVtblxuICAgKiB1c2UgdGhlIG5ldyBhcHByb2FjaCBpbnN0ZWFkIGJ5IGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gY29sdW1uIGlkICsgSWRUYWJsZUNlbGxcbiAgICogZS5nLiBmb3IgYSBjb2x1bW4gd2l0aCB0aGUgaWQgJ3N0YXR1cycgaW4gRGF0YVRhYmxlIHVzZSBwVGVtcGxhdGU9XCJzdGF0dXNJZFRhYmxlQ2VsbFwiXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdjdXN0b21UYWJsZUNlbGwnKSBjdXN0b21UYWJsZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfY3VzdG9tVGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbVRhYmxlQ2VsbFRlbXBsYXRlIHx8IHRoaXMuY3VzdG9tVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgZGF0ZVRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IGRhdGVUYWJsZUNlbGxUZW1wbGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHRhYmxlRGF0ZUNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlVGFibGVDZWxsVGVtcGxhdGVcbiAgfVxuICBzZXQgdGFibGVEYXRlQ2VsbFRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5kYXRlVGFibGVDZWxsVGVtcGxhdGUgPSB2YWx1ZVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IGRhdGVUYWJsZUNlbGxDaGlsZFRlbXBsYXRlXG4gICAqL1xuICBAQ29udGVudENoaWxkKCd0YWJsZURhdGVDZWxsJykgdGFibGVEYXRlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZGF0ZVRhYmxlQ2VsbCcpIGRhdGVUYWJsZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZGF0ZVRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlVGFibGVDZWxsVGVtcGxhdGUgfHwgdGhpcy5kYXRlVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSB8fCB0aGlzLnRhYmxlRGF0ZUNlbGxDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSB0YWJsZUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0YWJsZUNlbGwnKSB0YWJsZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfdGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ2VsbFRlbXBsYXRlIHx8IHRoaXMudGFibGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgdHJhbnNsYXRpb25LZXlUYWJsZUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZXBsYWNlZCBieSB0cmFuc2xhdGlvbktleVRhYmxlQ2VsbFRlbXBsYXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdGFibGVUcmFuc2xhdGlvbktleUNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbktleVRhYmxlQ2VsbFRlbXBsYXRlXG4gIH1cbiAgc2V0IHRhYmxlVHJhbnNsYXRpb25LZXlDZWxsVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRyYW5zbGF0aW9uS2V5VGFibGVDZWxsVGVtcGxhdGUgPSB2YWx1ZVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IHRyYW5zbGF0aW9uS2V5VGFibGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgndGFibGVUcmFuc2xhdGlvbktleUNlbGwnKSB0YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndHJhbnNsYXRpb25LZXlUYWJsZUNlbGwnKSB0cmFuc2xhdGlvbktleVRhYmxlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF90cmFuc2xhdGlvbktleVRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50cmFuc2xhdGlvbktleVRhYmxlQ2VsbFRlbXBsYXRlIHx8XG4gICAgICB0aGlzLnRyYW5zbGF0aW9uS2V5VGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSB8fFxuICAgICAgdGhpcy50YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbENoaWxkVGVtcGxhdGVcbiAgICApXG4gIH1cblxuICBASW5wdXQoKSBncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdncmlkSXRlbVN1YnRpdGxlTGluZXMnKSBncmlkSXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdyaWRJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlIHx8IHRoaXMuZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzJykgbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2xpc3RJdGVtU3VidGl0bGVMaW5lcygpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZSB8fCB0aGlzLmxpc3RJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSBncmlkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2dyaWRJdGVtJykgZ3JpZEl0ZW1DaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZ3JpZEl0ZW0oKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZEl0ZW1UZW1wbGF0ZSB8fCB0aGlzLmdyaWRJdGVtQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbGlzdEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdsaXN0SXRlbScpIGxpc3RJdGVtQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2xpc3RJdGVtKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxpc3RJdGVtVGVtcGxhdGUgfHwgdGhpcy5saXN0SXRlbUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIHJlbGF0aXZlRGF0ZVRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IHJlbGF0aXZlRGF0ZVRhYmxlQ2VsbFRlbXBsYXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdGFibGVSZWxhdGl2ZURhdGVDZWxsVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlVGFibGVDZWxsVGVtcGxhdGVcbiAgfVxuICBzZXQgdGFibGVSZWxhdGl2ZURhdGVDZWxsVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlQ2VsbFRlbXBsYXRlID0gdmFsdWVcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZXBsYWNlIGJ5IHJlbGF0aXZlRGF0ZVRhYmxlQ2VsbENoaWxkVGVtcGxhdGVcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ3RhYmxlUmVsYXRpdmVEYXRlQ2VsbCcpIHRhYmxlUmVsYXRpdmVEYXRlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgncmVsYXRpdmVEYXRlVGFibGVDZWxsJykgcmVsYXRpdmVEYXRlVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5yZWxhdGl2ZURhdGVUYWJsZUNlbGxUZW1wbGF0ZSB8fFxuICAgICAgdGhpcy5yZWxhdGl2ZURhdGVUYWJsZUNlbGxDaGlsZFRlbXBsYXRlIHx8XG4gICAgICB0aGlzLnRhYmxlUmVsYXRpdmVEYXRlQ2VsbENoaWxkVGVtcGxhdGVcbiAgICApXG4gIH1cblxuICBASW5wdXQoKSBsaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdsaXN0VmFsdWUnKSBsaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMubGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIEBJbnB1dCgpIHRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndHJhbnNsYXRpb25LZXlMaXN0VmFsdWUnKSB0cmFuc2xhdGlvbktleUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF90cmFuc2xhdGlvbktleUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbktleUxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMudHJhbnNsYXRpb25LZXlMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cbiAgQElucHV0KCkgbnVtYmVyTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbnVtYmVyTGlzdFZhbHVlJykgbnVtYmVyTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX251bWJlckxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLm51bWJlckxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSByZWxhdGl2ZURhdGVMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdyZWxhdGl2ZURhdGVMaXN0VmFsdWUnKSByZWxhdGl2ZURhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfcmVsYXRpdmVEYXRlTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZUxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgYW5kIGluc3RlYWQgdG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBvZiBhIHNwZWNpZmljIGNvbHVtblxuICAgKiB1c2UgdGhlIG5ldyBhcHByb2FjaCBpbnN0ZWFkIGJ5IGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gY29sdW1uIGlkICsgSWRMaXN0VmFsdWVcbiAgICogZS5nLiBmb3IgYSBjb2x1bW4gd2l0aCB0aGUgaWQgJ3N0YXR1cycgaW4gRGF0YUxpc3RHcmlkIHVzZSBwVGVtcGxhdGU9XCJzdGF0dXNJZExpc3RWYWx1ZVwiXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21MaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGFuZCBpbnN0ZWFkIHRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgb2YgYSBzcGVjaWZpYyBjb2x1bW5cbiAgICogdXNlIHRoZSBuZXcgYXBwcm9hY2ggaW5zdGVhZCBieSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGNvbHVtbiBpZCArIElkTGlzdFZhbHVlXG4gICAqIGUuZy4gZm9yIGEgY29sdW1uIHdpdGggdGhlIGlkICdzdGF0dXMnIERhdGFMaXN0R3JpZCB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRMaXN0VmFsdWVcIlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgnY3VzdG9tTGlzdFZhbHVlJykgY3VzdG9tTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2N1c3RvbUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21MaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLmN1c3RvbUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSBzdHJpbmdMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdzdHJpbmdMaXN0VmFsdWUnKSBzdHJpbmdMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfc3RyaW5nTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ0xpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMuc3RyaW5nTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIEBJbnB1dCgpIGRhdGVMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdkYXRlTGlzdFZhbHVlJykgZGF0ZUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9kYXRlTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRhdGVMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLmRhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cbiAgQElucHV0KCkgdGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndGFibGVGaWx0ZXJDZWxsJykgdGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3RhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUZpbHRlckNlbGxUZW1wbGF0ZSB8fCB0aGlzLnRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSBkYXRlVGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZGF0ZUZpbHRlckNlbGwnKSBkYXRlVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2RhdGVUYWJsZUZpbHRlckNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMuZGF0ZVRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSByZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdyZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGwnKSByZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfcmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMucmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIEBJbnB1dCgpIHRyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGwnKSB0cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxhbnk+XG4gICAgfCB1bmRlZmluZWRcbiAgZ2V0IF90cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMudHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlXG4gIH1cbiAgQElucHV0KCkgc3RyaW5nVGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnc3RyaW5nVGFibGVGaWx0ZXJDZWxsJykgc3RyaW5nVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3N0cmluZ1RhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUYWJsZUZpbHRlckNlbGxUZW1wbGF0ZSB8fCB0aGlzLnN0cmluZ1RhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuICBASW5wdXQoKSBudW1iZXJUYWJsZUZpbHRlckNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdudW1iZXJUYWJsZUZpbHRlckNlbGwnKSBudW1iZXJUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbnVtYmVyVGFibGVGaWx0ZXJDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm51bWJlclRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMubnVtYmVyVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgYW5kIGluc3RlYWQgdG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBvZiBhIHNwZWNpZmljIGNvbHVtbiBmaWx0ZXJcbiAgICogdXNlIHRoZSBuZXcgYXBwcm9hY2ggaW5zdGVhZCBieSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGNvbHVtbiBpZCArIElkVGFibGVGaWx0ZXJDZWxsXG4gICAqIGUuZy4gZm9yIGEgY29sdW1uIHdpdGggdGhlIGlkICdzdGF0dXMnIGluIERhdGFUYWJsZSB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRUYWJsZUZpbHRlckNlbGxcIlxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tVGFibGVGaWx0ZXJDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uIGZpbHRlclxuICAgKiB1c2UgdGhlIG5ldyBhcHByb2FjaCBpbnN0ZWFkIGJ5IGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gY29sdW1uIGlkICsgSWRUYWJsZUZpbHRlckNlbGxcbiAgICogZS5nLiBmb3IgYSBjb2x1bW4gd2l0aCB0aGUgaWQgJ3N0YXR1cycgaW4gRGF0YVRhYmxlIHVzZSBwVGVtcGxhdGU9XCJzdGF0dXNJZFRhYmxlRmlsdGVyQ2VsbFwiXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdjdXN0b21UYWJsZUZpbHRlckNlbGwnKSBjdXN0b21UYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfY3VzdG9tVGFibGVGaWx0ZXJDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlIHx8IHRoaXMuY3VzdG9tVGFibGVGaWx0ZXJDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgYWRkaXRpb25hbEFjdGlvbnM6IERhdGFBY3Rpb25bXSA9IFtdXG5cbiAgQE91dHB1dCgpIGZpbHRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJbXT4oKVxuICBAT3V0cHV0KCkgc29ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpXG4gIEBPdXRwdXQoKSBkZWxldGVJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHZpZXdJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIGVkaXRJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd1tdPigpXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpXG4gIEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKVxuICBAT3V0cHV0KCkgY29tcG9uZW50U3RhdGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhVmlld0NvbXBvbmVudFN0YXRlPigpXG4gIGlzRGVsZXRlSXRlbU9ic2VydmVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gIGlzVmlld0l0ZW1PYnNlcnZlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICBJc0VkaXRJdGVtT2JzZXJ2ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgZmlyc3RDb2x1bW5JZDogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgcGFyZW50VGVtcGxhdGVzJDogQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IG51bGwgfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCBudWxsIHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBASW5wdXQoKVxuICBzZXQgcGFyZW50VGVtcGxhdGVzKHZhbHVlOiBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wYXJlbnRUZW1wbGF0ZXMkLm5leHQodmFsdWUpXG4gIH1cblxuICB0ZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpXG4gIHNldCB0ZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgdGVtcGxhdGVzRm9yQ2hpbGRyZW4kOiBPYnNlcnZhYmxlPFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZD4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnRlbXBsYXRlcyQsXG4gICAgdGhpcy5wYXJlbnRUZW1wbGF0ZXMkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3QsIHB0XSkgPT4ge1xuICAgICAgY29uc3QgcWwgPSBuZXcgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+KClcbiAgICAgIHFsLnJlc2V0KFsuLi4odD8udG9BcnJheSgpID8/IFtdKSwgLi4uKHB0Py50b0FycmF5KCkgPz8gW10pXSlcbiAgICAgIHJldHVybiBxbFxuICAgIH0pXG4gIClcblxuICBnZXQgdmlld0l0ZW1PYnNlcnZlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoJ0ludGVyYWN0aXZlRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKT8udmlld0l0ZW0ub2JzZXJ2ZWQgfHwgdGhpcy52aWV3SXRlbS5vYnNlcnZlZFxuICB9XG4gIGdldCBlZGl0SXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldCgnSW50ZXJhY3RpdmVEYXRhVmlld0NvbXBvbmVudCcsIG51bGwpPy5lZGl0SXRlbS5vYnNlcnZlZCB8fCB0aGlzLmVkaXRJdGVtLm9ic2VydmVkXG4gIH1cbiAgZ2V0IGRlbGV0ZUl0ZW1PYnNlcnZlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoJ0ludGVyYWN0aXZlRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKT8uZGVsZXRlSXRlbS5vYnNlcnZlZCB8fCB0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWRcbiAgfVxuICBnZXQgc2VsZWN0aW9uQ2hhbmdlZE9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmluamVjdG9yLmdldCgnSW50ZXJhY3RpdmVEYXRhVmlld0NvbXBvbmVudCcsIG51bGwpPy5zZWxlY3Rpb25DaGFuZ2VkLm9ic2VydmVkIHx8XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQub2JzZXJ2ZWRcbiAgICApXG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpcnN0Q29sdW1uSWQgPSB0aGlzLmNvbHVtbnNbMF0/LmlkXG5cbiAgICBsZXQgZGF0YVRhYmxlQ29tcG9uZW50U3RhdGUkOiBPYnNlcnZhYmxlPERhdGFUYWJsZUNvbXBvbmVudFN0YXRlIHwgUmVjb3JkPHN0cmluZywgbmV2ZXI+PiA9IHRoaXMuZGF0YVRhYmxlQ29tcG9uZW50U3RhdGUkXG4gICAgbGV0IGRhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlJDogT2JzZXJ2YWJsZTxEYXRhTGlzdEdyaWRDb21wb25lbnRTdGF0ZSB8IFJlY29yZDxzdHJpbmcsIG5ldmVyPj4gPSB0aGlzLmRhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlJFxuICAgIGlmICh0aGlzLmxheW91dCA9PT0gJ3RhYmxlJykge1xuICAgICAgZGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGUkID0gZGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGUkLnBpcGUoc3RhcnRXaXRoKHt9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YVRhYmxlQ29tcG9uZW50U3RhdGUkID0gZGF0YVRhYmxlQ29tcG9uZW50U3RhdGUkLnBpcGUoc3RhcnRXaXRoKHt9KSlcbiAgICB9XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIGRhdGFUYWJsZUNvbXBvbmVudFN0YXRlJC5waXBlKHRpbWVzdGFtcCgpKSxcbiAgICAgIGRhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlJC5waXBlKHRpbWVzdGFtcCgpKSxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoY29tcG9uZW50U3RhdGVzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9yZGVyQW5kTWVyZ2VWYWx1ZXNCeVRpbWVzdGFtcChjb21wb25lbnRTdGF0ZXMpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHt0aGlzLmNvbXBvbmVudFN0YXRlQ2hhbmdlZC5lbWl0KHZhbCl9KVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMudGVtcGxhdGVzJC52YWx1ZT8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICBjYXNlICdzdHJpbmdUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMuc3RyaW5nVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdudW1iZXJUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMubnVtYmVyVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdjdXN0b21UYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMuY3VzdG9tVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICd0YWJsZURhdGVDZWxsJzpcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0ZUNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2RhdGVUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMuZGF0ZVRhYmxlQ2VsbENoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndGFibGVDZWxsJzpcbiAgICAgICAgICB0aGlzLnRhYmxlQ2VsbENoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndGFibGVUcmFuc2xhdGlvbktleUNlbGwnOlxuICAgICAgICAgIHRoaXMudGFibGVUcmFuc2xhdGlvbktleUNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsJzpcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uS2V5VGFibGVDZWxsQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdncmlkSXRlbVN1YnRpdGxlTGluZXMnOlxuICAgICAgICAgIHRoaXMuZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdsaXN0SXRlbVN1YnRpdGxlTGluZXMnOlxuICAgICAgICAgIHRoaXMubGlzdEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdncmlkSXRlbSc6XG4gICAgICAgICAgdGhpcy5ncmlkSXRlbUNoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnbGlzdEl0ZW0nOlxuICAgICAgICAgIHRoaXMubGlzdEl0ZW1DaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RhYmxlUmVsYXRpdmVEYXRlQ2VsbCc6XG4gICAgICAgICAgdGhpcy50YWJsZVJlbGF0aXZlRGF0ZUNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbCc6XG4gICAgICAgICAgdGhpcy5yZWxhdGl2ZURhdGVUYWJsZUNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2xpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5saXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdudW1iZXJMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMubnVtYmVyTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdyZWxhdGl2ZURhdGVMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdjdXN0b21MaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuY3VzdG9tTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdzdHJpbmdMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuc3RyaW5nTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdkYXRlTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLmRhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy50YWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2RhdGVUYWJsZUZpbHRlckNlbGwnOlxuICAgICAgICAgIHRoaXMuZGF0ZVRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAncmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsJzpcbiAgICAgICAgICB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbENoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGwnOlxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3N0cmluZ1RhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy5zdHJpbmdUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ251bWJlclRhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy5udW1iZXJUYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2N1c3RvbVRhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy5jdXN0b21UYWJsZUZpbHRlckNlbGxDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnRMaXN0ZW5lckZvckRhdGFUYWJsZSgpXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JMaXN0R3JpZCgpXG4gIH1cblxuICByZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JMaXN0R3JpZCgpIHtcbiAgICBpZiAodGhpcy5sYXlvdXQgIT09ICd0YWJsZScpIHtcbiAgICAgIGlmICh0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5pc0RlbGV0ZUl0ZW1PYnNlcnZlZCA9IHRydWVcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnQ/LmRlbGV0ZUl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnQ/LmRlbGV0ZUl0ZW0uc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZWxldGluZ0VsZW1lbnQoZXZlbnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5pc1ZpZXdJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50Py52aWV3SXRlbS5vYnNlcnZlZCkge1xuICAgICAgICAgIHRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudD8udmlld0l0ZW0uc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy52aWV3aW5nRWxlbWVudChldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lZGl0SXRlbS5vYnNlcnZlZCkge1xuICAgICAgICB0aGlzLklzRWRpdEl0ZW1PYnNlcnZlZCA9IHRydWVcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnQ/LmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgICAgdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50Py5lZGl0SXRlbS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdFbGVtZW50KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JEYXRhVGFibGUoKSB7XG4gICAgaWYgKHRoaXMubGF5b3V0ID09PSAndGFibGUnKSB7XG4gICAgICBpZiAodGhpcy5kZWxldGVJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuaXNEZWxldGVJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py5kZWxldGVUYWJsZVJvdy5vYnNlcnZlZCkge1xuICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudD8uZGVsZXRlVGFibGVSb3cuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZWxldGluZ0VsZW1lbnQoZXZlbnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5pc1ZpZXdJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py52aWV3VGFibGVSb3cub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnZpZXdUYWJsZVJvdy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZpZXdpbmdFbGVtZW50KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuSXNFZGl0SXRlbU9ic2VydmVkID0gdHJ1ZVxuICAgICAgICBpZiAoIXRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudD8uZWRpdFRhYmxlUm93Lm9ic2VydmVkKSB7XG4gICAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py5lZGl0VGFibGVSb3cuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nRWxlbWVudChldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkT2JzZXJ2ZWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnNlbGVjdGlvbkNoYW5nZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnNlbGVjdGlvbkNoYW5nZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJvd1NlbGVjdGlvbkNoYW5nZShldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyaW5nKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbHRlcnMgPSBldmVudFxuICAgIHRoaXMuZmlsdGVyZWQuZW1pdChldmVudClcbiAgfVxuXG4gIHNvcnRpbmcoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IGV2ZW50LnNvcnREaXJlY3Rpb25cbiAgICB0aGlzLnNvcnRGaWVsZCA9IGV2ZW50LnNvcnRDb2x1bW5cbiAgICB0aGlzLnNvcnRlZC5lbWl0KGV2ZW50KVxuICB9XG5cbiAgZGVsZXRpbmdFbGVtZW50KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5pc0RlbGV0ZUl0ZW1PYnNlcnZlZCkge1xuICAgICAgdGhpcy5kZWxldGVJdGVtLmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG5cbiAgdmlld2luZ0VsZW1lbnQoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmlzVmlld0l0ZW1PYnNlcnZlZCkge1xuICAgICAgdGhpcy52aWV3SXRlbS5lbWl0KGV2ZW50KVxuICAgIH1cbiAgfVxuICBlZGl0aW5nRWxlbWVudChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuSXNFZGl0SXRlbU9ic2VydmVkKSB7XG4gICAgICB0aGlzLmVkaXRJdGVtLmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG5cbiAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IFJvd1tdKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQ2hhbmdlZE9ic2VydmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChldmVudClcbiAgICB9XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMucGFnZSA9IGV2ZW50XG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KGV2ZW50KVxuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShldmVudDogbnVtYmVyKSB7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50XG4gICAgdGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdChldmVudClcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImxheW91dCAhPT0gJ3RhYmxlJ1wiPlxuICA8b2N4LWRhdGEtbGlzdC1ncmlkXG4gICAgI29jeGRhdGFsaXN0Z3JpZFxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxuICAgIFtzb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb25cIlxuICAgIFtzb3J0RmllbGRdPVwic29ydEZpZWxkXCJcbiAgICBbc29ydFN0YXRlc109XCJzb3J0U3RhdGVzXCJcbiAgICBbY2xpZW50U2lkZUZpbHRlcmluZ109XCJjbGllbnRTaWRlRmlsdGVyaW5nXCJcbiAgICBbY2xpZW50U2lkZVNvcnRpbmddPVwiY2xpZW50U2lkZVNvcnRpbmdcIlxuICAgIFt0aXRsZUxpbmVJZF09XCJ0aXRsZUxpbmVJZFwiXG4gICAgW3N1YnRpdGxlTGluZUlkc109XCJzdWJ0aXRsZUxpbmVJZHNcIlxuICAgIFtjbGllbnRTaWRlU29ydGluZ109XCJ0cnVlXCJcbiAgICBbcGFnZVNpemVzXT1cInBhZ2VTaXplc1wiXG4gICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICBbcGFnaW5hdG9yXT1cImxpc3RHcmlkUGFnaW5hdG9yXCJcbiAgICBbcGFnZV09XCJwYWdlXCJcbiAgICAocGFnZUNoYW5nZWQpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgIChwYWdlU2l6ZUNoYW5nZWQpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoY29tcG9uZW50U3RhdGVDaGFuZ2VkKT1cImRhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlJC5uZXh0KCRldmVudClcIlxuICAgIFtlbXB0eVJlc3VsdHNNZXNzYWdlXT1cImVtcHR5UmVzdWx0c01lc3NhZ2VcIlxuICAgIFtsYXlvdXRdPVwibGF5b3V0XCJcbiAgICBbZGVsZXRlUGVybWlzc2lvbl09XCJkZWxldGVQZXJtaXNzaW9uXCJcbiAgICBbZWRpdFBlcm1pc3Npb25dPVwiZWRpdFBlcm1pc3Npb25cIlxuICAgIFt2aWV3UGVybWlzc2lvbl09XCJ2aWV3UGVybWlzc2lvblwiXG4gICAgW2RlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZF09XCJkZWxldGVBY3Rpb25FbmFibGVkRmllbGRcIlxuICAgIFtkZWxldGVBY3Rpb25WaXNpYmxlRmllbGRdPVwiZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkXCJcbiAgICBbZWRpdEFjdGlvbkVuYWJsZWRGaWVsZF09XCJlZGl0QWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbZWRpdEFjdGlvblZpc2libGVGaWVsZF09XCJlZGl0QWN0aW9uVmlzaWJsZUZpZWxkXCJcbiAgICBbdmlld0FjdGlvbkVuYWJsZWRGaWVsZF09XCJ2aWV3QWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbdmlld0FjdGlvblZpc2libGVGaWVsZF09XCJ2aWV3QWN0aW9uVmlzaWJsZUZpZWxkXCJcbiAgICBbYWRkaXRpb25hbEFjdGlvbnNdPVwiYWRkaXRpb25hbEFjdGlvbnNcIlxuICAgIFtncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZV09XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzID8gZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIDogdW5kZWZpbmVkXCJcbiAgICBbbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGVdPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lcyA/IGxpc3RJdGVtU3VidGl0bGVMaW5lcyA6IHVuZGVmaW5lZFwiXG4gICAgW2xpc3RJdGVtVGVtcGxhdGVdPVwiX2xpc3RJdGVtID8gbGlzdEl0ZW0gOiB1bmRlZmluZWRcIlxuICAgIFtsaXN0VmFsdWVUZW1wbGF0ZV09XCJfbGlzdFZhbHVlID8gbGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbdHJhbnNsYXRpb25LZXlMaXN0VmFsdWVUZW1wbGF0ZV09XCJfdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUgPyB0cmFuc2xhdGlvbktleUxpc3RWYWx1ZSA6IHVuZGVmaW5lZFwiXG4gICAgW251bWJlckxpc3RWYWx1ZVRlbXBsYXRlXT1cIl9udW1iZXJMaXN0VmFsdWUgPyBudW1iZXJMaXN0VmFsdWUgOiB1bmRlZmluZWRcIlxuICAgIFtyZWxhdGl2ZURhdGVMaXN0VmFsdWVUZW1wbGF0ZV09XCJfcmVsYXRpdmVEYXRlTGlzdFZhbHVlID8gcmVsYXRpdmVEYXRlTGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tTGlzdFZhbHVlVGVtcGxhdGVdPVwiX2N1c3RvbUxpc3RWYWx1ZSA/IGN1c3RvbUxpc3RWYWx1ZSA6IHVuZGVmaW5lZFwiXG4gICAgW3N0cmluZ0xpc3RWYWx1ZVRlbXBsYXRlXT1cIl9zdHJpbmdMaXN0VmFsdWUgPyBzdHJpbmdMaXN0VmFsdWUgOiB1bmRlZmluZWRcIlxuICAgIFtkYXRlTGlzdFZhbHVlVGVtcGxhdGVdPVwiX2RhdGVMaXN0VmFsdWUgPyBkYXRlTGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbZ3JpZEl0ZW1UZW1wbGF0ZV09XCJfZ3JpZEl0ZW0gPyBncmlkSXRlbSAgOiB1bmRlZmluZWRcIlxuICAgIFt0b3RhbFJlY29yZHNPblNlcnZlcl09XCJ0b3RhbFJlY29yZHNPblNlcnZlclwiXG4gICAgW3BhcmVudFRlbXBsYXRlc109XCJ0ZW1wbGF0ZXNGb3JDaGlsZHJlbiQgfCBhc3luY1wiXG4gID5cbiAgPC9vY3gtZGF0YS1saXN0LWdyaWQ+XG4gIDxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2dyaWRJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZ3JpZEl0ZW0gbGV0LWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9ncmlkSXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9ncmlkSXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCI+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW0gbGV0LWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9saXN0SXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9saXN0SXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCI+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfbGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9saXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICN0cmFuc2xhdGlvbktleUxpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90cmFuc2xhdGlvbktleUxpc3RWYWx1ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI251bWJlckxpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX251bWJlckxpc3RWYWx1ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbnVtYmVyTGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjcmVsYXRpdmVEYXRlTGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfcmVsYXRpdmVEYXRlTGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9yZWxhdGl2ZURhdGVMaXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNjdXN0b21MaXN0VmFsdWUgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9jdXN0b21MaXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2N1c3RvbUxpc3RWYWx1ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3N0cmluZ0xpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3N0cmluZ0xpc3RWYWx1ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfc3RyaW5nTGlzdFZhbHVlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZGF0ZUxpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2RhdGVMaXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2RhdGVMaXN0VmFsdWVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwibGF5b3V0ID09PSAndGFibGUnXCI+XG4gIDxvY3gtZGF0YS10YWJsZVxuICAgICNvY3hkYXRhdGFibGVcbiAgICBbcm93c109XCJkYXRhXCJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICBbc29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICBbc29ydENvbHVtbl09XCJzb3J0RmllbGRcIlxuICAgIFtzb3J0U3RhdGVzXT1cInNvcnRTdGF0ZXNcIlxuICAgIFtjbGllbnRTaWRlRmlsdGVyaW5nXT1cImNsaWVudFNpZGVGaWx0ZXJpbmdcIlxuICAgIFtjbGllbnRTaWRlU29ydGluZ109XCJjbGllbnRTaWRlU29ydGluZ1wiXG4gICAgW3BhZ2VTaXplc109XCJwYWdlU2l6ZXNcIlxuICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgW3BhZ2luYXRvcl09XCJ0YWJsZVBhZ2luYXRvclwiXG4gICAgW3BhZ2VdPVwicGFnZVwiXG4gICAgKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAocGFnZVNpemVDaGFuZ2VkKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGNvbXBvbmVudFN0YXRlQ2hhbmdlZCk9XCJkYXRhVGFibGVDb21wb25lbnRTdGF0ZSQubmV4dCgkZXZlbnQpXCJcbiAgICBbc2VsZWN0ZWRSb3dzXT1cInNlbGVjdGVkUm93c1wiXG4gICAgW2Zyb3plbkFjdGlvbkNvbHVtbl09XCJmcm96ZW5BY3Rpb25Db2x1bW5cIlxuICAgIFthY3Rpb25Db2x1bW5Qb3NpdGlvbl09XCJhY3Rpb25Db2x1bW5Qb3NpdGlvblwiXG4gICAgW2VtcHR5UmVzdWx0c01lc3NhZ2VdPVwiZW1wdHlSZXN1bHRzTWVzc2FnZVwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW2RlbGV0ZVBlcm1pc3Npb25dPVwiZGVsZXRlUGVybWlzc2lvblwiXG4gICAgW2VkaXRQZXJtaXNzaW9uXT1cImVkaXRQZXJtaXNzaW9uXCJcbiAgICBbdmlld1Blcm1pc3Npb25dPVwidmlld1Blcm1pc3Npb25cIlxuICAgIFtkZWxldGVBY3Rpb25FbmFibGVkRmllbGRdPVwiZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkXT1cImRlbGV0ZUFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25FbmFibGVkRmllbGRdPVwiZWRpdEFjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25WaXNpYmxlRmllbGRdPVwiZWRpdEFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25FbmFibGVkRmllbGRdPVwidmlld0FjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25WaXNpYmxlRmllbGRdPVwidmlld0FjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2FkZGl0aW9uYWxBY3Rpb25zXT1cImFkZGl0aW9uYWxBY3Rpb25zXCJcbiAgICBbc3RyaW5nQ2VsbFRlbXBsYXRlXT1cIl9zdHJpbmdUYWJsZUNlbGwgPyBzdHJpbmdDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbbnVtYmVyQ2VsbFRlbXBsYXRlXT1cIl9udW1iZXJUYWJsZUNlbGwgPyBudW1iZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tQ2VsbFRlbXBsYXRlXT1cIl9jdXN0b21UYWJsZUNlbGwgPyBjdXN0b21DZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbZGF0ZUNlbGxUZW1wbGF0ZV09XCJfZGF0ZVRhYmxlQ2VsbCA/IGRhdGVDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbcmVsYXRpdmVEYXRlQ2VsbFRlbXBsYXRlXT1cIl9yZWxhdGl2ZURhdGVUYWJsZUNlbGwgPyByZWxhdGl2ZURhdGVDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY2VsbFRlbXBsYXRlXT1cIl90YWJsZUNlbGwgPyBjZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbdHJhbnNsYXRpb25LZXlDZWxsVGVtcGxhdGVdPVwiX3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsID8gdHJhbnNsYXRpb25LZXlDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbZmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl90YWJsZUZpbHRlckNlbGwgPyBmaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbZGF0ZUZpbHRlckNlbGxUZW1wbGF0ZV09XCJfZGF0ZVRhYmxlRmlsdGVyQ2VsbCA/IGRhdGVGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9jdXN0b21UYWJsZUZpbHRlckNlbGwgPyBjdXN0b21GaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbbnVtYmVyRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9udW1iZXJUYWJsZUZpbHRlckNlbGwgPyBudW1iZXJGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbc3RyaW5nRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9zdHJpbmdUYWJsZUZpbHRlckNlbGwgPyBzdHJpbmdGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbcmVsYXRpdmVEYXRlRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9yZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGwgPyByZWxhdGl2ZURhdGVGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbdHJhbnNsYXRpb25LZXlGaWx0ZXJDZWxsVGVtcGxhdGVdPVwiX3RyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsID8gdHJhbnNsYXRpb25LZXlGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICAoc29ydGVkKT1cInNvcnRpbmcoJGV2ZW50KVwiXG4gICAgKGZpbHRlcmVkKT1cImZpbHRlcmluZygkZXZlbnQpXCJcbiAgICBbdG90YWxSZWNvcmRzT25TZXJ2ZXJdPVwidG90YWxSZWNvcmRzT25TZXJ2ZXJcIlxuICAgIFtjdXJyZW50UGFnZVNob3dpbmdLZXldPVwiY3VycmVudFBhZ2VTaG93aW5nS2V5XCJcbiAgICBbY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXldPVwiY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXlcIlxuICAgIFtwYXJlbnRUZW1wbGF0ZXNdPVwidGVtcGxhdGVzRm9yQ2hpbGRyZW4kIHwgYXN5bmNcIlxuICAgIFthbGxvd1NlbGVjdEFsbF09XCJ0YWJsZUFsbG93U2VsZWN0QWxsXCJcbiAgICBbc2VsZWN0aW9uRW5hYmxlZEZpZWxkXT1cInRhYmxlU2VsZWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgPlxuICA8L29jeC1kYXRhLXRhYmxlPlxuICA8bmctdGVtcGxhdGUgI3N0cmluZ0NlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9zdHJpbmdUYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3N0cmluZ1RhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI251bWJlckNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9udW1iZXJUYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX251bWJlclRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbUNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9jdXN0b21UYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2N1c3RvbVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2RhdGVDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfZGF0ZVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZGF0ZVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjcmVsYXRpdmVEYXRlQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfcmVsYXRpdmVEYXRlVGFibGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfdGFibGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICN0cmFuc2xhdGlvbktleUNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl90cmFuc2xhdGlvbktleVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdHJhbnNsYXRpb25LZXlUYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3N0cmluZ0ZpbHRlckNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9zdHJpbmdUYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3N0cmluZ1RhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZmlsdGVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3RhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdGFibGVGaWx0ZXJDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNkYXRlRmlsdGVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2RhdGVUYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2RhdGVUYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbUZpbHRlckNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9jdXN0b21UYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2N1c3RvbVRhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbnVtYmVyRmlsdGVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX251bWJlclRhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbnVtYmVyVGFibGVGaWx0ZXJDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNyZWxhdGl2ZURhdGVGaWx0ZXJDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfcmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9yZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3RyYW5zbGF0aW9uS2V5RmlsdGVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3RyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -124,6 +124,9 @@ export class FilterViewComponent {
124
124
  .slice()
125
125
  .sort((a, b) => columnIds.indexOf(a.valueColumnId) - columnIds.indexOf(b.valueColumnId));
126
126
  }));
127
+ this.componentStateChanged.emit({
128
+ filters: this.filters,
129
+ });
127
130
  }
128
131
  get _fitlerViewNoSelection() {
129
132
  return this.fitlerViewNoSelection;
@@ -257,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
257
260
  }], templates: [{
258
261
  type: Input
259
262
  }] } });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXItdmlldy9maWx0ZXItdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci12aWV3L2ZpbHRlci12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7Ozs7Ozs7Ozs7O0FBcUJ2QyxNQUFNLE9BQU8sbUJBQW1CO0lBTGhDO1FBTUUsZUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUN2QixlQUFVLEdBQUcsVUFBVSxD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NUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQVcsRUFBRSxHQUFRO1FBQ3BDLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQseUJBQXlCLENBQUMsTUFBYztRQUN0QyxPQUFPO1lBQ0wsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUs7U0FDaEMsQ0FBQTtJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFRO1FBQzNCLE9BQU87WUFDTCxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDVixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUM7U0FDL0MsQ0FBQTtJQUNILENBQUM7OEdBblFVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDZaQStFbkIsWUFBWSxxS0FzQlQsYUFBYSxnREMvSTdCLDhyVkF3T0E7OzJGRDlMYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQVN2QixPQUFPO3NCQURWLEtBQUs7Z0JBU0YsT0FBTztzQkFEVixLQUFLO2dCQXFCRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFzQ2tCLEtBQUs7c0JBQTdCLFNBQVM7dUJBQUMsWUFBWTtnQkFDSSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBc0JyQixnQkFBZ0I7c0JBRG5CLFlBQVk7dUJBQUMsYUFBYTtnQkFTdkIsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBGaWx0ZXIsIEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9maWx0ZXIubW9kZWwnXG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXRhYmxlLWNvbHVtbi5tb2RlbCdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2NvbHVtbi10eXBlLm1vZGVsJ1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSB9IGZyb20gJ3ByaW1lbmcvYXBpJ1xuaW1wb3J0IHsgZmluZFRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGVtcGxhdGUudXRpbHMnXG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdHV0aWxzJ1xuaW1wb3J0IHsgbGltaXQgfSBmcm9tICcuLi8uLi91dGlscy9maWx0ZXIudXRpbHMnXG5pbXBvcnQgeyBPdmVybGF5UGFuZWwgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCdcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICdwcmltZW5nL2J1dHRvbidcblxuZXhwb3J0IHR5cGUgRmlsdGVyVmlld0Rpc3BsYXlNb2RlID0gJ2NoaXBzJyB8ICdidXR0b24nXG5leHBvcnQgdHlwZSBGaWx0ZXJWaWV3Um93RGlzcGxheURhdGEgPSB7XG4gIGlkOiBzdHJpbmdcbiAgY29sdW1uOiBzdHJpbmdcbiAgdmFsdWU6IHVua25vd25cbn1cbmV4cG9ydCB0eXBlIEZpbHRlclZpZXdSb3dEZXRhaWxEYXRhID0gRmlsdGVyVmlld1Jvd0Rpc3BsYXlEYXRhICYge1xuICB2YWx1ZUNvbHVtbklkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJWaWV3Q29tcG9uZW50U3RhdGUge1xuICBmaWx0ZXJzPzogRmlsdGVyW11cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LWZpbHRlci12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIENvbHVtblR5cGUgPSBDb2x1bW5UeXBlXG4gIEZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlXG4gIGZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pXG4gIEBJbnB1dCgpXG4gIGdldCBmaWx0ZXJzKCk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGZpbHRlcnModmFsdWU6IEZpbHRlcltdKSB7XG4gICAgdGhpcy5maWx0ZXJzJC5uZXh0KHZhbHVlKVxuICB9XG4gIGNvbHVtbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhVGFibGVDb2x1bW5bXT4oW10pXG4gIEBJbnB1dCgpXG4gIGdldCBjb2x1bW5zKCk6IERhdGFUYWJsZUNvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IERhdGFUYWJsZUNvbHVtbltdKSB7XG4gICAgdGhpcy5jb2x1bW5zJC5uZXh0KHZhbHVlKVxuICAgIGNvbnN0IGNoaXBPYnMgPSB2YWx1ZS5tYXAoKGMpID0+IHRoaXMuZ2V0VGVtcGxhdGUoYywgdGhpcy5jaGlwVGVtcGxhdGVOYW1lcywgdGhpcy5jaGlwVGVtcGxhdGVzLCB0aGlzLmNoaXBJZFN1ZmZpeCkpXG4gICAgdGhpcy5jaGlwVGVtcGxhdGVzJCA9IGNvbWJpbmVMYXRlc3QoY2hpcE9icykucGlwZShcbiAgICAgIG1hcCgodmFsdWVzKSA9PiBPYmplY3QuZnJvbUVudHJpZXModmFsdWUubWFwKChjLCBpKSA9PiBbYy5pZCwgdmFsdWVzW2ldXSkpKVxuICAgIClcblxuICAgIGNvbnN0IHRhYmxlVGVtcGxhdGVDb2x1bW5zID0gdmFsdWUuY29uY2F0KHRoaXMuY29sdW1uRmlsdGVyVGFibGVDb2x1bW5zKVxuICAgIHRoaXMudGFibGVUZW1wbGF0ZXMkID0gY29tYmluZUxhdGVzdChcbiAgICAgIHRhYmxlVGVtcGxhdGVDb2x1bW5zLm1hcCgoYykgPT5cbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZShjLCB0aGlzLnRhYmxlVGVtcGxhdGVOYW1lcywgdGhpcy50YWJsZVRlbXBsYXRlcywgdGhpcy50YWJsZUlkU3VmZml4KVxuICAgICAgKVxuICAgICkucGlwZShtYXAoKHZhbHVlcykgPT4gT2JqZWN0LmZyb21FbnRyaWVzKHRhYmxlVGVtcGxhdGVDb2x1bW5zLm1hcCgoYywgaSkgPT4gW2MuaWQsIHZhbHVlc1tpXV0pKSkpXG4gIH1cblxuICBjb2x1bW5GaWx0ZXJEYXRhUm93cyQ6IE9ic2VydmFibGU8RmlsdGVyVmlld1Jvd0Rpc3BsYXlEYXRhW10+IHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KCkgZGlzcGxheU1vZGU6IEZpbHRlclZpZXdEaXNwbGF5TW9kZSA9ICdidXR0b24nXG4gIEBJbnB1dCgpIHNlbGVjdERpc3BsYXllZENoaXBzOiAoZmlsdGVyczogRmlsdGVyW10sIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdKSA9PiBGaWx0ZXJbXSA9IChmaWx0ZXJzKSA9PlxuICAgIGxpbWl0KGZpbHRlcnMsIDMsIHsgcmV2ZXJzZTogdHJ1ZSB9KVxuICBASW5wdXQoKSBjaGlwU3R5bGVDbGFzcyA9ICcnXG4gIEBJbnB1dCgpIHRhYmxlU3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSA9IHsgJ21heC1oZWlnaHQnOiAnNTB2aCcgfVxuICBASW5wdXQoKSBwYW5lbFN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gPSB7ICdtYXgtd2lkdGgnOiAnOTAlJyB9XG5cbiAgQE91dHB1dCgpIGZpbHRlcmVkOiBFdmVudEVtaXR0ZXI8RmlsdGVyW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSBjb21wb25lbnRTdGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxGaWx0ZXJWaWV3Q29tcG9uZW50U3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgY29sdW1uRmlsdGVyVGFibGVDb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXSA9IFtcbiAgICB7XG4gICAgICBpZDogJ2NvbHVtbicsXG4gICAgICBjb2x1bW5UeXBlOiBDb2x1bW5UeXBlLlRSQU5TTEFUSU9OX0tFWSxcbiAgICAgIG5hbWVLZXk6ICdPQ1hfRklMVEVSX1ZJRVcuVEFCTEUuQ09MVU1OX05BTUUnLFxuICAgIH0sXG4gICAgeyBpZDogJ3ZhbHVlJywgY29sdW1uVHlwZTogQ29sdW1uVHlwZS5TVFJJTkcsIG5hbWVLZXk6ICdPQ1hfRklMVEVSX1ZJRVcuVEFCTEUuVkFMVUUnIH0sXG4gICAge1xuICAgICAgaWQ6ICdhY3Rpb25zJyxcbiAgICAgIGNvbHVtblR5cGU6IENvbHVtblR5cGUuU1RSSU5HLFxuICAgICAgbmFtZUtleTogJ09DWF9GSUxURVJfVklFVy5UQUJMRS5BQ1RJT05TJyxcbiAgICB9LFxuICBdXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5GaWx0ZXJEYXRhUm93cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmZpbHRlcnMkLCB0aGlzLmNvbHVtbnMkXSkucGlwZShcbiAgICAgIG1hcCgoW2ZpbHRlcnMsIGNvbHVtbnNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkcyA9IGNvbHVtbnMubWFwKChjKSA9PiBjLmlkKVxuICAgICAgICByZXR1cm4gZmlsdGVyc1xuICAgICAgICAgIC5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uRm9yRmlsdGVyKGYsIGNvbHVtbnMpXG4gICAgICAgICAgICBpZiAoIWZpbHRlckNvbHVtbikgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgaWQ6IGAke2YuY29sdW1uSWR9LSR7Zi52YWx1ZX1gLFxuICAgICAgICAgICAgICBjb2x1bW46IGZpbHRlckNvbHVtbi5uYW1lS2V5LFxuICAgICAgICAgICAgICB2YWx1ZTogZi52YWx1ZSxcbiAgICAgICAgICAgICAgdmFsdWVDb2x1bW5JZDogZmlsdGVyQ29sdW1uLmlkLFxuICAgICAgICAgICAgfSBzYXRpc2ZpZXMgRmlsdGVyVmlld1Jvd0RldGFpbERhdGFcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maWx0ZXIoKHYpOiB2IGlzIEZpbHRlclZpZXdSb3dEZXRhaWxEYXRhID0+IHYgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBjb2x1bW5JZHMuaW5kZXhPZihhLnZhbHVlQ29sdW1uSWQpIC0gY29sdW1uSWRzLmluZGV4T2YoYi52YWx1ZUNvbHVtbklkKSlcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgQFZpZXdDaGlsZChPdmVybGF5UGFuZWwpIHBhbmVsITogT3ZlcmxheVBhbmVsXG4gIEBWaWV3Q2hpbGQoJ21hbmFnZUJ1dHRvbicpIG1hbmFnZUJ1dHRvbiE6IEJ1dHRvblxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuXG4gIGZpdGxlclZpZXdOb1NlbGVjdGlvbjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2ZpdGxlclZpZXdOb1NlbGVjdGlvbigpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5maXRsZXJWaWV3Tm9TZWxlY3Rpb25cbiAgfVxuXG4gIGZpbHRlclZpZXdDaGlwQ29udGVudDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2ZpbHRlclZpZXdDaGlwQ29udGVudCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJWaWV3Q2hpcENvbnRlbnRcbiAgfVxuXG4gIGZpbHRlclZpZXdTaG93TW9yZUNoaXA6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9maWx0ZXJWaWV3U2hvd01vcmVDaGlwKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZpbHRlclZpZXdTaG93TW9yZUNoaXBcbiAgfVxuXG4gIGRlZmF1bHRUZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBAVmlld0NoaWxkcmVuKFByaW1lVGVtcGxhdGUpXG4gIHNldCBkZWZhdWx0VGVtcGxhdGVzKHZhbHVlOiBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmRlZmF1bHRUZW1wbGF0ZXMkLm5leHQodmFsdWUpXG4gIH1cblxuICBwYXJlbnRUZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IG51bGwgfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpXG4gIEBJbnB1dCgpXG4gIHNldCB0ZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBhcmVudFRlbXBsYXRlcyQubmV4dCh2YWx1ZSlcbiAgICB2YWx1ZT8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICBjYXNlICdmaXRsZXJWaWV3Tm9TZWxlY3Rpb24nOlxuICAgICAgICAgIHRoaXMuZml0bGVyVmlld05vU2VsZWN0aW9uID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2ZpbHRlclZpZXdDaGlwQ29udGVudCc6XG4gICAgICAgICAgdGhpcy5maWx0ZXJWaWV3Q2hpcENvbnRlbnQgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnZmlsdGVyVmlld1Nob3dNb3JlQ2hpcCc6XG4gICAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2hvd01vcmVDaGlwID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNoaXBUZW1wbGF0ZXMkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPj4gfCB1bmRlZmluZWRcbiAgdGFibGVUZW1wbGF0ZXMkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPj4gfCB1bmRlZmluZWRcblxuICBjaGlwSWRTdWZmaXg6IEFycmF5PHN0cmluZz4gPSBbJ0lkRmlsdGVyQ2hpcCcsICdJZFRhYmxlRmlsdGVyQ2VsbCcsICdJZFRhYmxlQ2VsbCddXG4gIGNoaXBUZW1wbGF0ZU5hbWVzOiBSZWNvcmQ8Q29sdW1uVHlwZSwgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICAgW0NvbHVtblR5cGUuREFURV06IFsnZGF0ZUZpbHRlckNoaXBWYWx1ZScsICdkYXRlVGFibGVGaWx0ZXJDZWxsJywgJ2RhdGVUYWJsZUNlbGwnLCAnZGVmYXVsdERhdGVWYWx1ZSddLFxuICAgIFtDb2x1bW5UeXBlLk5VTUJFUl06IFsnbnVtYmVyRmlsdGVyQ2hpcFZhbHVlJywgJ251bWJlclRhYmxlRmlsdGVyQ2VsbCcsICdudW1iZXJUYWJsZUNlbGwnLCAnZGVmYXVsdE51bWJlclZhbHVlJ10sXG4gICAgW0NvbHVtblR5cGUuUkVMQVRJVkVfREFURV06IFtcbiAgICAgICdyZWxhdGl2ZURhdGVGaWx0ZXJDaGlwVmFsdWUnLFxuICAgICAgJ3JlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbCcsXG4gICAgICAncmVsYXRpdmVEYXRlVGFibGVDZWxsJyxcbiAgICAgICdkZWZhdWx0UmVsYXRpdmVEYXRlVmFsdWUnLFxuICAgIF0sXG4gICAgW0NvbHVtblR5cGUuVFJBTlNMQVRJT05fS0VZXTogW1xuICAgICAgJ3RyYW5zbGF0aW9uS2V5RmlsdGVyQ2hpcFZhbHVlJyxcbiAgICAgICd0cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbCcsXG4gICAgICAndHJhbnNsYXRpb25LZXlUYWJsZUNlbGwnLFxuICAgICAgJ2RlZmF1bHRUcmFuc2xhdGlvbktleVZhbHVlJyxcbiAgICBdLFxuICAgIFtDb2x1bW5UeXBlLkNVU1RPTV06IFsnY3VzdG9tRmlsdGVyQ2hpcFZhbHVlJywgJ2N1c3RvbVRhYmxlRmlsdGVyQ2VsbCcsICdjdXN0b21UYWJsZUNlbGwnLCAnZGVmYXVsdEN1c3RvbVZhbHVlJ10sXG4gICAgW0NvbHVtblR5cGUuU1RSSU5HXTogWydzdHJpbmdGaWx0ZXJDaGlwVmFsdWUnLCAnc3RyaW5nVGFibGVGaWx0ZXJDZWxsJywgJ3N0cmluZ1RhYmxlQ2VsbCcsICdkZWZhdWx0U3RyaW5nVmFsdWUnXSxcbiAgfVxuICBjaGlwVGVtcGxhdGVzOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPj4gPSB7fVxuXG4gIHRhYmxlSWRTdWZmaXg6IEFycmF5PHN0cmluZz4gPSBbJ0lkRmlsdGVyVmlld0NlbGwnLCAnSWRUYWJsZUZpbHRlckNlbGwnLCAnSWRUYWJsZUNlbGwnXVxuICB0YWJsZVRlbXBsYXRlTmFtZXM6IFJlY29yZDxDb2x1bW5UeXBlLCBBcnJheTxzdHJpbmc+PiA9IHtcbiAgICBbQ29sdW1uVHlwZS5EQVRFXTogWydkYXRlRmlsdGVyVmlld0NlbGwnLCAnZGF0ZVRhYmxlRmlsdGVyQ2VsbCcsICdkYXRlVGFibGVDZWxsJywgJ2RlZmF1bHREYXRlVmFsdWUnXSxcbiAgICBbQ29sdW1uVHlwZS5OVU1CRVJdOiBbJ251bWJlckZpbHRlclZpZXdDZWxsJywgJ251bWJlclRhYmxlRmlsdGVyQ2VsbCcsICdudW1iZXJUYWJsZUNlbGwnLCAnZGVmYXVsdE51bWJlclZhbHVlJ10sXG4gICAgW0NvbHVtblR5cGUuUkVMQVRJVkVfREFURV06IFtcbiAgICAgICdyZWxhdGl2ZURhdGVGaWx0ZXJWaWV3Q2VsbCcsXG4gICAgICAncmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsJyxcbiAgICAgICdyZWxhdGl2ZURhdGVUYWJsZUNlbGwnLFxuICAgICAgJ2RlZmF1bHRSZWxhdGl2ZURhdGVWYWx1ZScsXG4gICAgXSxcbiAgICBbQ29sdW1uVHlwZS5UUkFOU0xBVElPTl9LRVldOiBbXG4gICAgICAndHJhbnNsYXRpb25LZXknLFxuICAgICAgJ3RyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsJyxcbiAgICAgICd0cmFuc2xhdGlvbktleVRhYmxlQ2VsbCcsXG4gICAgICAnZGVmYXVsdFRyYW5zbGF0aW9uS2V5VmFsdWUnLFxuICAgIF0sXG4gICAgW0NvbHVtblR5cGUuQ1VTVE9NXTogWydjdXN0b21GaWx0ZXJWaWV3Q2VsbCcsICdjdXN0b21UYWJsZUZpbHRlckNlbGwnLCAnY3VzdG9tVGFibGVDZWxsJywgJ2RlZmF1bHRDdXN0b21WYWx1ZSddLFxuICAgIFtDb2x1bW5UeXBlLlNUUklOR106IFsnc3RyaW5nRmlsdGVyVmlld0NlbGwnLCAnc3RyaW5nVGFibGVGaWx0ZXJDZWxsJywgJ3N0cmluZ1RhYmxlQ2VsbCcsICdkZWZhdWx0U3RyaW5nVmFsdWUnXSxcbiAgfVxuICB0YWJsZVRlbXBsYXRlczogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4+ID0ge31cblxuICBnZXRUZW1wbGF0ZShcbiAgICBjb2x1bW46IERhdGFUYWJsZUNvbHVtbixcbiAgICB0ZW1wbGF0ZU5hbWVzOiBSZWNvcmQ8Q29sdW1uVHlwZSwgQXJyYXk8c3RyaW5nPj4sXG4gICAgdGVtcGxhdGVzOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPj4sXG4gICAgaWRTdWZmaXg6IEFycmF5PHN0cmluZz5cbiAgKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4ge1xuICAgIGlmICghdGVtcGxhdGVzW2NvbHVtbi5pZF0pIHtcbiAgICAgIHRlbXBsYXRlc1tjb2x1bW4uaWRdID0gY29tYmluZUxhdGVzdChbdGhpcy5kZWZhdWx0VGVtcGxhdGVzJCwgdGhpcy5wYXJlbnRUZW1wbGF0ZXMkXSkucGlwZShcbiAgICAgICAgbWFwKChbZHQsIHRdKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVtcGxhdGVzID0gWy4uLihkdCA/PyBbXSksIC4uLih0ID8/IFtdKV1cbiAgICAgICAgICBjb25zdCBjb2x1bW5UZW1wbGF0ZSA9IGZpbmRUZW1wbGF0ZShcbiAgICAgICAgICAgIHRlbXBsYXRlcyxcbiAgICAgICAgICAgIGlkU3VmZml4Lm1hcCgoc3VmZml4KSA9PiBjb2x1bW4uaWQgKyBzdWZmaXgpXG4gICAgICAgICAgKT8udGVtcGxhdGVcbiAgICAgICAgICBpZiAoY29sdW1uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5UZW1wbGF0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgdGVtcGxhdGVOYW1lc1tjb2x1bW4uY29sdW1uVHlwZV0pPy50ZW1wbGF0ZSA/PyBudWxsXG4gICAgICAgIH0pLFxuICAgICAgICBkZWJvdW5jZVRpbWUoNTApXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZXNbY29sdW1uLmlkXVxuICB9XG5cbiAgb25SZXNldEZpbGVyc0NsaWNrKCkge1xuICAgIHRoaXMuZmlsdGVycyA9IFtdXG4gICAgdGhpcy5maWx0ZXJlZC5lbWl0KFtdKVxuICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgZmlsdGVyczogW10sXG4gICAgfSlcbiAgfVxuXG4gIG9uQ2hpcFJlbW92ZShmaWx0ZXI6IEZpbHRlcikge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnMuZmlsdGVyKChmKSA9PiBmLnZhbHVlICE9PSBmaWx0ZXIudmFsdWUpXG4gICAgdGhpcy5maWx0ZXJzID0gZmlsdGVyc1xuICAgIHRoaXMuZmlsdGVyZWQuZW1pdChmaWx0ZXJzKVxuICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgZmlsdGVyczogZmlsdGVycyxcbiAgICB9KVxuICB9XG5cbiAgb25GaWx0ZXJEZWxldGUocm93OiBSb3cpIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5maWx0ZXJzLmZpbHRlcigoZikgPT4gIShmLmNvbHVtbklkID09PSByb3dbJ3ZhbHVlQ29sdW1uSWQnXSAmJiBmLnZhbHVlID09PSByb3dbJ3ZhbHVlJ10pKVxuICAgIHRoaXMuZmlsdGVycyA9IGZpbHRlcnNcbiAgICB0aGlzLmZpbHRlcmVkLmVtaXQoZmlsdGVycylcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlQ2hhbmdlZC5lbWl0KHtcbiAgICAgIGZpbHRlcnM6IGZpbHRlcnMsXG4gICAgfSlcbiAgfVxuXG4gIGZvY3VzVHJpZ2dlcigpIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyPy5pZCA9PT0gJ29jeEZpbHRlclZpZXdTaG93TW9yZScpIHtcbiAgICAgIHRoaXMudHJpZ2dlcj8uZm9jdXMoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hbmFnZUJ1dHRvbi5mb2N1cygpXG4gICAgfVxuICB9XG5cbiAgc2hvd1BhbmVsKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnRyaWdnZXIgPSBldmVudC5zcmNFbGVtZW50XG4gICAgdGhpcy5wYW5lbC50b2dnbGUoZXZlbnQpXG4gIH1cblxuICBnZXRDb2x1bW5Gb3JGaWx0ZXIoZmlsdGVyOiBGaWx0ZXIsIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdKSB7XG4gICAgcmV0dXJuIGNvbHVtbnMuZmluZCgoYykgPT4gYy5pZCA9PT0gZmlsdGVyLmNvbHVtbklkKVxuICB9XG5cbiAgZ2V0Q29sdW1uKGNvbElkOiBzdHJpbmcsIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdKSB7XG4gICAgcmV0dXJuIGNvbHVtbnMuZmluZCgoYykgPT4gYy5pZCA9PT0gY29sSWQpXG4gIH1cblxuICByZXNvbHZlRmllbGREYXRhKG9iamVjdDogYW55LCBrZXk6IGFueSkge1xuICAgIHJldHVybiBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9iamVjdCwga2V5KVxuICB9XG5cbiAgZ2V0Um93T2JqZWN0RnJvbUZpdGVyRGF0YShmaWx0ZXI6IEZpbHRlcikge1xuICAgIHJldHVybiB7XG4gICAgICBbZmlsdGVyLmNvbHVtbklkXTogZmlsdGVyLnZhbHVlLFxuICAgIH1cbiAgfVxuXG4gIGdldFJvd0ZvclZhbHVlQ29sdW1uKHJvdzogUm93KTogUm93IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHJvdy5pZCxcbiAgICAgIFtyb3dbJ3ZhbHVlQ29sdW1uSWQnXSBhcyBzdHJpbmddOiByb3dbJ3ZhbHVlJ10sXG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1ucyQgfCBhc3luYyBhcyBjb2x1bW5zXCI+XG4gIDxkaXYgKm5nSWY9XCJmaWx0ZXJzJCB8IGFzeW5jIGFzIGZpbHRlcnNcIiBjbGFzcz1cImZsZXggZmxleC13cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5TW9kZSA9PT0gJ2NoaXBzJzsgZWxzZSBub0NoaXBzQ29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqb2N4SWZCcmVha3BvaW50PVwiJ2Rlc2t0b3AnOyBlbHNlVGVtcGxhdGU6IG5vQ2hpcHNDb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3REaXNwbGF5ZWRDaGlwcyhmaWx0ZXJzLCBjb2x1bW5zKSBhcyBzZWxlY3RlZEZpbHRlcnNcIj5cbiAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICNjaGlwRmlsdGVyUmVzZXRCdXR0b25cbiAgICAgICAgICAgIGlkPVwib2N4RmlsdGVyVmlld1Jlc2V0XCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uUmVzZXRGaWxlcnNDbGljaygpXCJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1lcmFzZXJcIlxuICAgICAgICAgICAgcFRvb2x0aXA9XCJ7eyAnT0NYX0ZJTFRFUl9WSUVXLlJFU0VUX0ZJTFRFUlNfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ09DWF9GSUxURVJfVklFVy5SRVNFVF9GSUxURVJTX0JVVFRPTi5BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvcC1idXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcnMubGVuZ3RoIDw9IDBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJfZml0bGVyVmlld05vU2VsZWN0aW9uOyBlbHNlIGRlZmF1bHROb0ZpbHRlcnNcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZml0bGVyVmlld05vU2VsZWN0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9GaWx0ZXJzPlxuICAgICAgICAgICAgICA8c3BhbiBpZD1cIm9jeEZpbHRlclZpZXdOb0ZpbHRlcnNcIj57eyAnT0NYX0ZJTFRFUl9WSUVXLk5PX0ZJTFRFUlMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGNoaXBUZW1wbGF0ZXMkIHwgYXN5bmMpID8/IHt9IGFzIHRlbXBsYXRlc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIHNlbGVjdGVkRmlsdGVyc1wiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0Q29sdW1uRm9yRmlsdGVyKGZpbHRlciwgY29sdW1ucykgYXMgY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPHAtY2hpcCBbcmVtb3ZhYmxlXT1cInRydWVcIiAob25SZW1vdmUpPVwib25DaGlwUmVtb3ZlKGZpbHRlcilcIiBbc3R5bGVDbGFzc109XCJjaGlwU3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIl9maWx0ZXJWaWV3Q2hpcENvbnRlbnQ7IGVsc2UgY2hpcENvbnRlbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9maWx0ZXJWaWV3Q2hpcENvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLFxuICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlVGVtcGxhdGVzOiB0ZW1wbGF0ZXMsXG4gICAgICAgICAgICAgICAgdHJ1dGh5VGVtcGxhdGU6IHRydXRoeVRlbXBsYXRlLFxuICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlVGVtcGxhdGU6IGNoaXBUZW1wbGF0ZVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGlwQ29udGVudFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1ucyQgfCBhc3luYyBhcyBjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1jaGlwLXRleHQgZmxleCBmbGV4LW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgPnt7Y29sdW1uPy5uYW1lS2V5ID8/ICcnIHwgdHJhbnNsYXRlIH19OjxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsdGVyLmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuRVFVQUwgfHwgIWZpbHRlci5maWx0ZXJUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzOiB0ZW1wbGF0ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5UUlVUSFlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJ1dGh5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXIudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9wLWNoaXA+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRGaWx0ZXJzLmxlbmd0aCA8IGZpbHRlcnMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDxwLWNoaXBcbiAgICAgICAgICAgICAgICAjc2hvd01vcmVDaGlwXG4gICAgICAgICAgICAgICAgaWQ9XCJvY3hGaWx0ZXJWaWV3U2hvd01vcmVcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dQYW5lbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGZpbHRlci12aWV3LWZvY3VzYWJsZVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2hvd1BhbmVsKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cInNob3dQYW5lbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2ZpbHRlclZpZXdTaG93TW9yZUNoaXA7IGVsc2Ugc2hvd01vcmVDaGlwVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2ZpbHRlclZpZXdTaG93TW9yZUNoaXBcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICRpbXBsaWNpdDogZmlsdGVycy5sZW5ndGggLSBzZWxlY3RlZEZpbHRlcnMubGVuZ3RoXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd01vcmVDaGlwVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY2hpcC10ZXh0IGZsZXggZmxleC1ub3dyYXBcIj4gK3t7ZmlsdGVycy5sZW5ndGggLSBzZWxlY3RlZEZpbHRlcnMubGVuZ3RofX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXJUYWJsZVBhbmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvcC1jaGlwPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNub0NoaXBzQ29udGVudD5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICAjbWFuYWdlQnV0dG9uXG4gICAgICAgIGlkPVwib2N4RmlsdGVyVmlld01hbmFnZVwiXG4gICAgICAgIChvbkNsaWNrKT1cInNob3dQYW5lbCgkZXZlbnQpXCJcbiAgICAgICAgaWNvbj1cInBpIHBpLXNsaWRlcnMtaFwiXG4gICAgICAgIGxhYmVsPVwie3sgJ09DWF9GSUxURVJfVklFVy5NQU5BR0VfRklMVEVSU19CVVRUT04uTEFCRUwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgcFRvb2x0aXA9XCJ7eyAnT0NYX0ZJTFRFUl9WSUVXLk1BTkFHRV9GSUxURVJTX0JVVFRPTi5ERVRBSUwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICBbYmFkZ2VdPVwiZmlsdGVycy5sZW5ndGgudG9TdHJpbmcoKVwiXG4gICAgICAgIFthcmlhTGFiZWxdPVwiJ09DWF9GSUxURVJfVklFVy5NQU5BR0VfRklMVEVSU19CVVRUT04uQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgPjwvcC1idXR0b24+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbHRlclRhYmxlUGFuZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNmaWx0ZXJUYWJsZVBhbmVsPlxuICAgICAgPHAtb3ZlcmxheVBhbmVsICpuZ0lmPVwidGFibGVUZW1wbGF0ZXMkIHwgYXN5bmMgYXMgdGVtcGxhdGVzXCIgI29wIFtzdHlsZV09XCJwYW5lbFN0eWxlXCIgKG9uSGlkZSk9XCJmb2N1c1RyaWdnZXIoKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgcEZvY3VzVHJhcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0yeGwgZm9udC1tZWRpdW1cIj57eydPQ1hfRklMVEVSX1ZJRVcuUEFORUxfVElUTEUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBwQXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJvY3hGaWx0ZXJWaWV3T3ZlcmxheVJlc2V0XCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uUmVzZXRGaWxlcnNDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1lcmFzZXJcIlxuICAgICAgICAgICAgICAgICAgcFRvb2x0aXA9XCJ7eyAnT0NYX0ZJTFRFUl9WSUVXLlJFU0VUX0ZJTFRFUlNfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ09DWF9GSUxURVJfVklFVy5SRVNFVF9GSUxURVJTX0JVVFRPTi5BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvcC1idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8b2N4LWRhdGEtdGFibGVcbiAgICAgICAgICAgICAgaWQ9XCJvY3hGaWx0ZXJWaWV3RGF0YVRhYmxlXCJcbiAgICAgICAgICAgICAgW3Jvd3NdPVwiKGNvbHVtbkZpbHRlckRhdGFSb3dzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbkZpbHRlclRhYmxlQ29sdW1uc1wiXG4gICAgICAgICAgICAgIFtlbXB0eVJlc3VsdHNNZXNzYWdlXT1cIidPQ1hfRklMVEVSX1ZJRVcuTk9fRklMVEVSUycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcGFnaW5hdG9yXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW3RhYmxlU3R5bGVdPVwidGFibGVTdHlsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb2x1bW5JZENlbGxcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlc1tjb2x1bW4uaWRdXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICByb3dPYmplY3Q6IHJvd09iamVjdCxcbiAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInZhbHVlSWRDZWxsXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0Q29sdW1uKHJvd09iamVjdFsndmFsdWVDb2x1bW5JZCddLCBjb2x1bW5zKSBhcyB2YWx1ZUNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiF2YWx1ZUNvbHVtbi5maWx0ZXJUeXBlIHx8IHZhbHVlQ29sdW1uLmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuRVFVQUxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZXNbdmFsdWVDb2x1bW4uaWRdXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgcm93T2JqZWN0OiBnZXRSb3dGb3JWYWx1ZUNvbHVtbihyb3dPYmplY3QpLFxuICAgICAgICAgICAgICBjb2x1bW46IHZhbHVlQ29sdW1uXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZhbHVlQ29sdW1uLmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuVFJVVEhZXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJ1dGh5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICB2YWx1ZTogcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZClcbiAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJhY3Rpb25zSWRDZWxsXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1kYW5nZXIgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ09DWF9GSUxURVJfVklFVy5UQUJMRS5SRU1PVkVfRklMVEVSX1RJVExFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09DWF9GSUxURVJfVklFVy5UQUJMRS5SRU1PVkVfRklMVEVSX0FSSUFfTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyRGVsZXRlKHJvd09iamVjdClcIlxuICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9vY3gtZGF0YS10YWJsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvcC1vdmVybGF5UGFuZWw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNjaGlwVGVtcGxhdGUgbGV0LXRlbXBsYXRlcz1cInRlbXBsYXRlc1wiIGxldC1maWx0ZXI9XCJmaWx0ZXJcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cInRlbXBsYXRlc1tjb2x1bW4uaWRdIGFzIHRlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgIHJvd09iamVjdDogZ2V0Um93T2JqZWN0RnJvbUZpdGVyRGF0YShmaWx0ZXIpLFxuICAgICAgICAgICAgY29sdW1uOiBjb2x1bW5cbiAgICAgICAgICB9XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdHJ1dGh5VGVtcGxhdGUgbGV0LXZhbHVlPVwidmFsdWVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbHVlXCI+IHt7J09DWF9GSUxURVJfVklFVy5GSUxURVJfWUVTJyB8IHRyYW5zbGF0ZX19IDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZhbHVlXCI+IHt7J09DWF9GSUxURVJfVklFVy5GSUxURVJfTk8nIHwgdHJhbnNsYXRlfX0gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdFN0cmluZ1ZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj4ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCl9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0TnVtYmVyVmFsdWVcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyPiB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKSB8IG51bWJlciB9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0Q3VzdG9tVmFsdWVcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPiA8L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdERhdGVWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIHwgZGF0ZTogY29sdW1uLmRhdGVGb3JtYXQgPz8gJ21lZGl1bScgfX0gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdFJlbGF0aXZlRGF0ZVZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICB7eyAnT0NYX0RBVEFfVEFCTEUuRURJVEVEJyB8IHRyYW5zbGF0ZSB9fSB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKSB8IHRpbWVhZ28gfX1cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdFRyYW5zbGF0aW9uS2V5VmFsdWVcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyPiB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKSB8IHRyYW5zbGF0ZSB9fTwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXItdmlldy9maWx0ZXItdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci12aWV3L2ZpbHRlci12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7Ozs7Ozs7Ozs7O0FBcUJ2QyxNQUFNLE9BQU8sbUJBQW1CO0lBTGhDO1FBTUUsZUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUN2QixlQUFVLEdBQUcsVUFBVSxD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c0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBGaWx0ZXIsIEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9maWx0ZXIubW9kZWwnXG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXRhYmxlLWNvbHVtbi5tb2RlbCdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2NvbHVtbi10eXBlLm1vZGVsJ1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSB9IGZyb20gJ3ByaW1lbmcvYXBpJ1xuaW1wb3J0IHsgZmluZFRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGVtcGxhdGUudXRpbHMnXG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdHV0aWxzJ1xuaW1wb3J0IHsgbGltaXQgfSBmcm9tICcuLi8uLi91dGlscy9maWx0ZXIudXRpbHMnXG5pbXBvcnQgeyBPdmVybGF5UGFuZWwgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCdcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICdwcmltZW5nL2J1dHRvbidcblxuZXhwb3J0IHR5cGUgRmlsdGVyVmlld0Rpc3BsYXlNb2RlID0gJ2NoaXBzJyB8ICdidXR0b24nXG5leHBvcnQgdHlwZSBGaWx0ZXJWaWV3Um93RGlzcGxheURhdGEgPSB7XG4gIGlkOiBzdHJpbmdcbiAgY29sdW1uOiBzdHJpbmdcbiAgdmFsdWU6IHVua25vd25cbn1cbmV4cG9ydCB0eXBlIEZpbHRlclZpZXdSb3dEZXRhaWxEYXRhID0gRmlsdGVyVmlld1Jvd0Rpc3BsYXlEYXRhICYge1xuICB2YWx1ZUNvbHVtbklkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJWaWV3Q29tcG9uZW50U3RhdGUge1xuICBmaWx0ZXJzPzogRmlsdGVyW11cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LWZpbHRlci12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIENvbHVtblR5cGUgPSBDb2x1bW5UeXBlXG4gIEZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlXG4gIGZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pXG4gIEBJbnB1dCgpXG4gIGdldCBmaWx0ZXJzKCk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGZpbHRlcnModmFsdWU6IEZpbHRlcltdKSB7XG4gICAgdGhpcy5maWx0ZXJzJC5uZXh0KHZhbHVlKVxuICB9XG4gIGNvbHVtbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhVGFibGVDb2x1bW5bXT4oW10pXG4gIEBJbnB1dCgpXG4gIGdldCBjb2x1bW5zKCk6IERhdGFUYWJsZUNvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IERhdGFUYWJsZUNvbHVtbltdKSB7XG4gICAgdGhpcy5jb2x1bW5zJC5uZXh0KHZhbHVlKVxuICAgIGNvbnN0IGNoaXBPYnMgPSB2YWx1ZS5tYXAoKGMpID0+IHRoaXMuZ2V0VGVtcGxhdGUoYywgdGhpcy5jaGlwVGVtcGxhdGVOYW1lcywgdGhpcy5jaGlwVGVtcGxhdGVzLCB0aGlzLmNoaXBJZFN1ZmZpeCkpXG4gICAgdGhpcy5jaGlwVGVtcGxhdGVzJCA9IGNvbWJpbmVMYXRlc3QoY2hpcE9icykucGlwZShcbiAgICAgIG1hcCgodmFsdWVzKSA9PiBPYmplY3QuZnJvbUVudHJpZXModmFsdWUubWFwKChjLCBpKSA9PiBbYy5pZCwgdmFsdWVzW2ldXSkpKVxuICAgIClcblxuICAgIGNvbnN0IHRhYmxlVGVtcGxhdGVDb2x1bW5zID0gdmFsdWUuY29uY2F0KHRoaXMuY29sdW1uRmlsdGVyVGFibGVDb2x1bW5zKVxuICAgIHRoaXMudGFibGVUZW1wbGF0ZXMkID0gY29tYmluZUxhdGVzdChcbiAgICAgIHRhYmxlVGVtcGxhdGVDb2x1bW5zLm1hcCgoYykgPT5cbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZShjLCB0aGlzLnRhYmxlVGVtcGxhdGVOYW1lcywgdGhpcy50YWJsZVRlbXBsYXRlcywgdGhpcy50YWJsZUlkU3VmZml4KVxuICAgICAgKVxuICAgICkucGlwZShtYXAoKHZhbHVlcykgPT4gT2JqZWN0LmZyb21FbnRyaWVzKHRhYmxlVGVtcGxhdGVDb2x1bW5zLm1hcCgoYywgaSkgPT4gW2MuaWQsIHZhbHVlc1tpXV0pKSkpXG4gIH1cblxuICBjb2x1bW5GaWx0ZXJEYXRhUm93cyQ6IE9ic2VydmFibGU8RmlsdGVyVmlld1Jvd0Rpc3BsYXlEYXRhW10+IHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KCkgZGlzcGxheU1vZGU6IEZpbHRlclZpZXdEaXNwbGF5TW9kZSA9ICdidXR0b24nXG4gIEBJbnB1dCgpIHNlbGVjdERpc3BsYXllZENoaXBzOiAoZmlsdGVyczogRmlsdGVyW10sIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdKSA9PiBGaWx0ZXJbXSA9IChmaWx0ZXJzKSA9PlxuICAgIGxpbWl0KGZpbHRlcnMsIDMsIHsgcmV2ZXJzZTogdHJ1ZSB9KVxuICBASW5wdXQoKSBjaGlwU3R5bGVDbGFzcyA9ICcnXG4gIEBJbnB1dCgpIHRhYmxlU3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSA9IHsgJ21heC1oZWlnaHQnOiAnNTB2aCcgfVxuICBASW5wdXQoKSBwYW5lbFN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gPSB7ICdtYXgtd2lkdGgnOiAnOTAlJyB9XG5cbiAgQE91dHB1dCgpIGZpbHRlcmVkOiBFdmVudEVtaXR0ZXI8RmlsdGVyW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSBjb21wb25lbnRTdGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxGaWx0ZXJWaWV3Q29tcG9uZW50U3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgY29sdW1uRmlsdGVyVGFibGVDb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXSA9IFtcbiAgICB7XG4gICAgICBpZDogJ2NvbHVtbicsXG4gICAgICBjb2x1bW5UeXBlOiBDb2x1bW5UeXBlLlRSQU5TTEFUSU9OX0tFWSxcbiAgICAgIG5hbWVLZXk6ICdPQ1hfRklMVEVSX1ZJRVcuVEFCTEUuQ09MVU1OX05BTUUnLFxuICAgIH0sXG4gICAgeyBpZDogJ3ZhbHVlJywgY29sdW1uVHlwZTogQ29sdW1uVHlwZS5TVFJJTkcsIG5hbWVLZXk6ICdPQ1hfRklMVEVSX1ZJRVcuVEFCTEUuVkFMVUUnIH0sXG4gICAge1xuICAgICAgaWQ6ICdhY3Rpb25zJyxcbiAgICAgIGNvbHVtblR5cGU6IENvbHVtblR5cGUuU1RSSU5HLFxuICAgICAgbmFtZUtleTogJ09DWF9GSUxURVJfVklFVy5UQUJMRS5BQ1RJT05TJyxcbiAgICB9LFxuICBdXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5GaWx0ZXJEYXRhUm93cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmZpbHRlcnMkLCB0aGlzLmNvbHVtbnMkXSkucGlwZShcbiAgICAgIG1hcCgoW2ZpbHRlcnMsIGNvbHVtbnNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkcyA9IGNvbHVtbnMubWFwKChjKSA9PiBjLmlkKVxuICAgICAgICByZXR1cm4gZmlsdGVyc1xuICAgICAgICAgIC5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uRm9yRmlsdGVyKGYsIGNvbHVtbnMpXG4gICAgICAgICAgICBpZiAoIWZpbHRlckNvbHVtbikgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgaWQ6IGAke2YuY29sdW1uSWR9LSR7Zi52YWx1ZX1gLFxuICAgICAgICAgICAgICBjb2x1bW46IGZpbHRlckNvbHVtbi5uYW1lS2V5LFxuICAgICAgICAgICAgICB2YWx1ZTogZi52YWx1ZSxcbiAgICAgICAgICAgICAgdmFsdWVDb2x1bW5JZDogZmlsdGVyQ29sdW1uLmlkLFxuICAgICAgICAgICAgfSBzYXRpc2ZpZXMgRmlsdGVyVmlld1Jvd0RldGFpbERhdGFcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maWx0ZXIoKHYpOiB2IGlzIEZpbHRlclZpZXdSb3dEZXRhaWxEYXRhID0+IHYgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBjb2x1bW5JZHMuaW5kZXhPZihhLnZhbHVlQ29sdW1uSWQpIC0gY29sdW1uSWRzLmluZGV4T2YoYi52YWx1ZUNvbHVtbklkKSlcbiAgICAgIH0pXG4gICAgKVxuICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgIH0pXG4gIH1cblxuICBAVmlld0NoaWxkKE92ZXJsYXlQYW5lbCkgcGFuZWwhOiBPdmVybGF5UGFuZWxcbiAgQFZpZXdDaGlsZCgnbWFuYWdlQnV0dG9uJykgbWFuYWdlQnV0dG9uITogQnV0dG9uXG4gIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkXG5cbiAgZml0bGVyVmlld05vU2VsZWN0aW9uOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZml0bGVyVmlld05vU2VsZWN0aW9uKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZpdGxlclZpZXdOb1NlbGVjdGlvblxuICB9XG5cbiAgZmlsdGVyVmlld0NoaXBDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZmlsdGVyVmlld0NoaXBDb250ZW50KCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZpbHRlclZpZXdDaGlwQ29udGVudFxuICB9XG5cbiAgZmlsdGVyVmlld1Nob3dNb3JlQ2hpcDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2ZpbHRlclZpZXdTaG93TW9yZUNoaXAoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVmlld1Nob3dNb3JlQ2hpcFxuICB9XG5cbiAgZGVmYXVsdFRlbXBsYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpXG4gIEBWaWV3Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSlcbiAgc2V0IGRlZmF1bHRUZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuZGVmYXVsdFRlbXBsYXRlcyQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIHBhcmVudFRlbXBsYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCBudWxsIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZClcbiAgQElucHV0KClcbiAgc2V0IHRlbXBsYXRlcyh2YWx1ZTogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGFyZW50VGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICAgIHZhbHVlPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgIGNhc2UgJ2ZpdGxlclZpZXdOb1NlbGVjdGlvbic6XG4gICAgICAgICAgdGhpcy5maXRsZXJWaWV3Tm9TZWxlY3Rpb24gPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnZmlsdGVyVmlld0NoaXBDb250ZW50JzpcbiAgICAgICAgICB0aGlzLmZpbHRlclZpZXdDaGlwQ29udGVudCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdmaWx0ZXJWaWV3U2hvd01vcmVDaGlwJzpcbiAgICAgICAgICB0aGlzLmZpbHRlclZpZXdTaG93TW9yZUNoaXAgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY2hpcFRlbXBsYXRlcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiB8IHVuZGVmaW5lZFxuICB0YWJsZVRlbXBsYXRlcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiB8IHVuZGVmaW5lZFxuXG4gIGNoaXBJZFN1ZmZpeDogQXJyYXk8c3RyaW5nPiA9IFsnSWRGaWx0ZXJDaGlwJywgJ0lkVGFibGVGaWx0ZXJDZWxsJywgJ0lkVGFibGVDZWxsJ11cbiAgY2hpcFRlbXBsYXRlTmFtZXM6IFJlY29yZDxDb2x1bW5UeXBlLCBBcnJheTxzdHJpbmc+PiA9IHtcbiAgICBbQ29sdW1uVHlwZS5EQVRFXTogWydkYXRlRmlsdGVyQ2hpcFZhbHVlJywgJ2RhdGVUYWJsZUZpbHRlckNlbGwnLCAnZGF0ZVRhYmxlQ2VsbCcsICdkZWZhdWx0RGF0ZVZhbHVlJ10sXG4gICAgW0NvbHVtblR5cGUuTlVNQkVSXTogWydudW1iZXJGaWx0ZXJDaGlwVmFsdWUnLCAnbnVtYmVyVGFibGVGaWx0ZXJDZWxsJywgJ251bWJlclRhYmxlQ2VsbCcsICdkZWZhdWx0TnVtYmVyVmFsdWUnXSxcbiAgICBbQ29sdW1uVHlwZS5SRUxBVElWRV9EQVRFXTogW1xuICAgICAgJ3JlbGF0aXZlRGF0ZUZpbHRlckNoaXBWYWx1ZScsXG4gICAgICAncmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsJyxcbiAgICAgICdyZWxhdGl2ZURhdGVUYWJsZUNlbGwnLFxuICAgICAgJ2RlZmF1bHRSZWxhdGl2ZURhdGVWYWx1ZScsXG4gICAgXSxcbiAgICBbQ29sdW1uVHlwZS5UUkFOU0xBVElPTl9LRVldOiBbXG4gICAgICAndHJhbnNsYXRpb25LZXlGaWx0ZXJDaGlwVmFsdWUnLFxuICAgICAgJ3RyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsJyxcbiAgICAgICd0cmFuc2xhdGlvbktleVRhYmxlQ2VsbCcsXG4gICAgICAnZGVmYXVsdFRyYW5zbGF0aW9uS2V5VmFsdWUnLFxuICAgIF0sXG4gICAgW0NvbHVtblR5cGUuQ1VTVE9NXTogWydjdXN0b21GaWx0ZXJDaGlwVmFsdWUnLCAnY3VzdG9tVGFibGVGaWx0ZXJDZWxsJywgJ2N1c3RvbVRhYmxlQ2VsbCcsICdkZWZhdWx0Q3VzdG9tVmFsdWUnXSxcbiAgICBbQ29sdW1uVHlwZS5TVFJJTkddOiBbJ3N0cmluZ0ZpbHRlckNoaXBWYWx1ZScsICdzdHJpbmdUYWJsZUZpbHRlckNlbGwnLCAnc3RyaW5nVGFibGVDZWxsJywgJ2RlZmF1bHRTdHJpbmdWYWx1ZSddLFxuICB9XG4gIGNoaXBUZW1wbGF0ZXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiA9IHt9XG5cbiAgdGFibGVJZFN1ZmZpeDogQXJyYXk8c3RyaW5nPiA9IFsnSWRGaWx0ZXJWaWV3Q2VsbCcsICdJZFRhYmxlRmlsdGVyQ2VsbCcsICdJZFRhYmxlQ2VsbCddXG4gIHRhYmxlVGVtcGxhdGVOYW1lczogUmVjb3JkPENvbHVtblR5cGUsIEFycmF5PHN0cmluZz4+ID0ge1xuICAgIFtDb2x1bW5UeXBlLkRBVEVdOiBbJ2RhdGVGaWx0ZXJWaWV3Q2VsbCcsICdkYXRlVGFibGVGaWx0ZXJDZWxsJywgJ2RhdGVUYWJsZUNlbGwnLCAnZGVmYXVsdERhdGVWYWx1ZSddLFxuICAgIFtDb2x1bW5UeXBlLk5VTUJFUl06IFsnbnVtYmVyRmlsdGVyVmlld0NlbGwnLCAnbnVtYmVyVGFibGVGaWx0ZXJDZWxsJywgJ251bWJlclRhYmxlQ2VsbCcsICdkZWZhdWx0TnVtYmVyVmFsdWUnXSxcbiAgICBbQ29sdW1uVHlwZS5SRUxBVElWRV9EQVRFXTogW1xuICAgICAgJ3JlbGF0aXZlRGF0ZUZpbHRlclZpZXdDZWxsJyxcbiAgICAgICdyZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGwnLFxuICAgICAgJ3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbCcsXG4gICAgICAnZGVmYXVsdFJlbGF0aXZlRGF0ZVZhbHVlJyxcbiAgICBdLFxuICAgIFtDb2x1bW5UeXBlLlRSQU5TTEFUSU9OX0tFWV06IFtcbiAgICAgICd0cmFuc2xhdGlvbktleScsXG4gICAgICAndHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGwnLFxuICAgICAgJ3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsJyxcbiAgICAgICdkZWZhdWx0VHJhbnNsYXRpb25LZXlWYWx1ZScsXG4gICAgXSxcbiAgICBbQ29sdW1uVHlwZS5DVVNUT01dOiBbJ2N1c3RvbUZpbHRlclZpZXdDZWxsJywgJ2N1c3RvbVRhYmxlRmlsdGVyQ2VsbCcsICdjdXN0b21UYWJsZUNlbGwnLCAnZGVmYXVsdEN1c3RvbVZhbHVlJ10sXG4gICAgW0NvbHVtblR5cGUuU1RSSU5HXTogWydzdHJpbmdGaWx0ZXJWaWV3Q2VsbCcsICdzdHJpbmdUYWJsZUZpbHRlckNlbGwnLCAnc3RyaW5nVGFibGVDZWxsJywgJ2RlZmF1bHRTdHJpbmdWYWx1ZSddLFxuICB9XG4gIHRhYmxlVGVtcGxhdGVzOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPj4gPSB7fVxuXG4gIGdldFRlbXBsYXRlKFxuICAgIGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uLFxuICAgIHRlbXBsYXRlTmFtZXM6IFJlY29yZDxDb2x1bW5UeXBlLCBBcnJheTxzdHJpbmc+PixcbiAgICB0ZW1wbGF0ZXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PixcbiAgICBpZFN1ZmZpeDogQXJyYXk8c3RyaW5nPlxuICApOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPiB7XG4gICAgaWYgKCF0ZW1wbGF0ZXNbY29sdW1uLmlkXSkge1xuICAgICAgdGVtcGxhdGVzW2NvbHVtbi5pZF0gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRlZmF1bHRUZW1wbGF0ZXMkLCB0aGlzLnBhcmVudFRlbXBsYXRlcyRdKS5waXBlKFxuICAgICAgICBtYXAoKFtkdCwgdF0pID0+IHtcbiAgICAgICAgICBjb25zdCB0ZW1wbGF0ZXMgPSBbLi4uKGR0ID8/IFtdKSwgLi4uKHQgPz8gW10pXVxuICAgICAgICAgIGNvbnN0IGNvbHVtblRlbXBsYXRlID0gZmluZFRlbXBsYXRlKFxuICAgICAgICAgICAgdGVtcGxhdGVzLFxuICAgICAgICAgICAgaWRTdWZmaXgubWFwKChzdWZmaXgpID0+IGNvbHVtbi5pZCArIHN1ZmZpeClcbiAgICAgICAgICApPy50ZW1wbGF0ZVxuICAgICAgICAgIGlmIChjb2x1bW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbHVtblRlbXBsYXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmaW5kVGVtcGxhdGUodGVtcGxhdGVzLCB0ZW1wbGF0ZU5hbWVzW2NvbHVtbi5jb2x1bW5UeXBlXSk/LnRlbXBsYXRlID8/IG51bGxcbiAgICAgICAgfSksXG4gICAgICAgIGRlYm91bmNlVGltZSg1MClcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlc1tjb2x1bW4uaWRdXG4gIH1cblxuICBvblJlc2V0RmlsZXJzQ2xpY2soKSB7XG4gICAgdGhpcy5maWx0ZXJzID0gW11cbiAgICB0aGlzLmZpbHRlcmVkLmVtaXQoW10pXG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICB9KVxuICB9XG5cbiAgb25DaGlwUmVtb3ZlKGZpbHRlcjogRmlsdGVyKSB7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIoKGYpID0+IGYudmFsdWUgIT09IGZpbHRlci52YWx1ZSlcbiAgICB0aGlzLmZpbHRlcnMgPSBmaWx0ZXJzXG4gICAgdGhpcy5maWx0ZXJlZC5lbWl0KGZpbHRlcnMpXG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICBmaWx0ZXJzOiBmaWx0ZXJzLFxuICAgIH0pXG4gIH1cblxuICBvbkZpbHRlckRlbGV0ZShyb3c6IFJvdykge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnMuZmlsdGVyKChmKSA9PiAhKGYuY29sdW1uSWQgPT09IHJvd1sndmFsdWVDb2x1bW5JZCddICYmIGYudmFsdWUgPT09IHJvd1sndmFsdWUnXSkpXG4gICAgdGhpcy5maWx0ZXJzID0gZmlsdGVyc1xuICAgIHRoaXMuZmlsdGVyZWQuZW1pdChmaWx0ZXJzKVxuICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgZmlsdGVyczogZmlsdGVycyxcbiAgICB9KVxuICB9XG5cbiAgZm9jdXNUcmlnZ2VyKCkge1xuICAgIGlmICh0aGlzLnRyaWdnZXI/LmlkID09PSAnb2N4RmlsdGVyVmlld1Nob3dNb3JlJykge1xuICAgICAgdGhpcy50cmlnZ2VyPy5mb2N1cygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFuYWdlQnV0dG9uLmZvY3VzKClcbiAgICB9XG4gIH1cblxuICBzaG93UGFuZWwoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudHJpZ2dlciA9IGV2ZW50LnNyY0VsZW1lbnRcbiAgICB0aGlzLnBhbmVsLnRvZ2dsZShldmVudClcbiAgfVxuXG4gIGdldENvbHVtbkZvckZpbHRlcihmaWx0ZXI6IEZpbHRlciwgY29sdW1uczogRGF0YVRhYmxlQ29sdW1uW10pIHtcbiAgICByZXR1cm4gY29sdW1ucy5maW5kKChjKSA9PiBjLmlkID09PSBmaWx0ZXIuY29sdW1uSWQpXG4gIH1cblxuICBnZXRDb2x1bW4oY29sSWQ6IHN0cmluZywgY29sdW1uczogRGF0YVRhYmxlQ29sdW1uW10pIHtcbiAgICByZXR1cm4gY29sdW1ucy5maW5kKChjKSA9PiBjLmlkID09PSBjb2xJZClcbiAgfVxuXG4gIHJlc29sdmVGaWVsZERhdGEob2JqZWN0OiBhbnksIGtleTogYW55KSB7XG4gICAgcmV0dXJuIE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob2JqZWN0LCBrZXkpXG4gIH1cblxuICBnZXRSb3dPYmplY3RGcm9tRml0ZXJEYXRhKGZpbHRlcjogRmlsdGVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtmaWx0ZXIuY29sdW1uSWRdOiBmaWx0ZXIudmFsdWUsXG4gICAgfVxuICB9XG5cbiAgZ2V0Um93Rm9yVmFsdWVDb2x1bW4ocm93OiBSb3cpOiBSb3cge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogcm93LmlkLFxuICAgICAgW3Jvd1sndmFsdWVDb2x1bW5JZCddIGFzIHN0cmluZ106IHJvd1sndmFsdWUnXSxcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5zJCB8IGFzeW5jIGFzIGNvbHVtbnNcIj5cbiAgPGRpdiAqbmdJZj1cImZpbHRlcnMkIHwgYXN5bmMgYXMgZmlsdGVyc1wiIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlNb2RlID09PSAnY2hpcHMnOyBlbHNlIG5vQ2hpcHNDb250ZW50XCI+XG4gICAgICA8bmctY29udGFpbmVyICpvY3hJZkJyZWFrcG9pbnQ9XCInZGVza3RvcCc7IGVsc2VUZW1wbGF0ZTogbm9DaGlwc0NvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdERpc3BsYXllZENoaXBzKGZpbHRlcnMsIGNvbHVtbnMpIGFzIHNlbGVjdGVkRmlsdGVyc1wiPlxuICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgI2NoaXBGaWx0ZXJSZXNldEJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJvY3hGaWx0ZXJWaWV3UmVzZXRcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwib25SZXNldEZpbGVyc0NsaWNrKClcIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLWVyYXNlclwiXG4gICAgICAgICAgICBwVG9vbHRpcD1cInt7ICdPQ1hfRklMVEVSX1ZJRVcuUkVTRVRfRklMVEVSU19CVVRUT04uREVUQUlMJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCInT0NYX0ZJTFRFUl9WSUVXLlJFU0VUX0ZJTFRFUlNfQlVUVE9OLkFSSUFfTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVycy5sZW5ndGggPD0gMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cIl9maXRsZXJWaWV3Tm9TZWxlY3Rpb247IGVsc2UgZGVmYXVsdE5vRmlsdGVyc1wiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9maXRsZXJWaWV3Tm9TZWxlY3Rpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHROb0ZpbHRlcnM+XG4gICAgICAgICAgICAgIDxzcGFuIGlkPVwib2N4RmlsdGVyVmlld05vRmlsdGVyc1wiPnt7ICdPQ1hfRklMVEVSX1ZJRVcuTk9fRklMVEVSUycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoY2hpcFRlbXBsYXRlcyQgfCBhc3luYykgPz8ge30gYXMgdGVtcGxhdGVzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2Ygc2VsZWN0ZWRGaWx0ZXJzXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRDb2x1bW5Gb3JGaWx0ZXIoZmlsdGVyLCBjb2x1bW5zKSBhcyBjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8cC1jaGlwIFtyZW1vdmFibGVdPVwidHJ1ZVwiIChvblJlbW92ZSk9XCJvbkNoaXBSZW1vdmUoZmlsdGVyKVwiIFtzdHlsZUNsYXNzXT1cImNoaXBTdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2ZpbHRlclZpZXdDaGlwQ29udGVudDsgZWxzZSBjaGlwQ29udGVudFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2ZpbHRlclZpZXdDaGlwQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICAgICAgICAgICAgZmlsdGVyVmFsdWVUZW1wbGF0ZXM6IHRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICB0cnV0aHlUZW1wbGF0ZTogdHJ1dGh5VGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgZmlsdGVyVmFsdWVUZW1wbGF0ZTogY2hpcFRlbXBsYXRlXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NoaXBDb250ZW50VGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW5zJCB8IGFzeW5jIGFzIGNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWNoaXAtdGV4dCBmbGV4IGZsZXgtbm93cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICA+e3tjb2x1bW4/Lm5hbWVLZXkgPz8gJycgfCB0cmFuc2xhdGUgfX06PG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXIuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5FUVVBTCB8fCAhZmlsdGVyLmZpbHRlclR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpcFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXM6IHRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLlRSVVRIWVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cnV0aHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlci52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3AtY2hpcD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEZpbHRlcnMubGVuZ3RoIDwgZmlsdGVycy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPHAtY2hpcFxuICAgICAgICAgICAgICAgICNzaG93TW9yZUNoaXBcbiAgICAgICAgICAgICAgICBpZD1cIm9jeEZpbHRlclZpZXdTaG93TW9yZVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1BhbmVsKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZmlsdGVyLXZpZXctZm9jdXNhYmxlXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzaG93UGFuZWwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwic2hvd1BhbmVsKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJfZmlsdGVyVmlld1Nob3dNb3JlQ2hpcDsgZWxzZSBzaG93TW9yZUNoaXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZmlsdGVyVmlld1Nob3dNb3JlQ2hpcFwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgJGltcGxpY2l0OiBmaWx0ZXJzLmxlbmd0aCAtIHNlbGVjdGVkRmlsdGVycy5sZW5ndGhcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93TW9yZUNoaXBUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jaGlwLXRleHQgZmxleCBmbGV4LW5vd3JhcFwiPiAre3tmaWx0ZXJzLmxlbmd0aCAtIHNlbGVjdGVkRmlsdGVycy5sZW5ndGh9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbHRlclRhYmxlUGFuZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9wLWNoaXA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vQ2hpcHNDb250ZW50PlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgICNtYW5hZ2VCdXR0b25cbiAgICAgICAgaWQ9XCJvY3hGaWx0ZXJWaWV3TWFuYWdlXCJcbiAgICAgICAgKG9uQ2xpY2spPVwic2hvd1BhbmVsKCRldmVudClcIlxuICAgICAgICBpY29uPVwicGkgcGktc2xpZGVycy1oXCJcbiAgICAgICAgbGFiZWw9XCJ7eyAnT0NYX0ZJTFRFUl9WSUVXLk1BTkFHRV9GSUxURVJTX0JVVFRPTi5MQUJFTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBwVG9vbHRpcD1cInt7ICdPQ1hfRklMVEVSX1ZJRVcuTUFOQUdFX0ZJTFRFUlNfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgIFtiYWRnZV09XCJmaWx0ZXJzLmxlbmd0aC50b1N0cmluZygpXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCInT0NYX0ZJTFRFUl9WSUVXLk1BTkFHRV9GSUxURVJTX0JVVFRPTi5BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVGFibGVQYW5lbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2ZpbHRlclRhYmxlUGFuZWw+XG4gICAgICA8cC1vdmVybGF5UGFuZWwgKm5nSWY9XCJ0YWJsZVRlbXBsYXRlcyQgfCBhc3luYyBhcyB0ZW1wbGF0ZXNcIiAjb3AgW3N0eWxlXT1cInBhbmVsU3R5bGVcIiAob25IaWRlKT1cImZvY3VzVHJpZ2dlcigpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBwRm9jdXNUcmFwPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LW1lZGl1bVwiPnt7J09DWF9GSUxURVJfVklFVy5QQU5FTF9USVRMRScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICAgIHBBdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBpZD1cIm9jeEZpbHRlclZpZXdPdmVybGF5UmVzZXRcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25SZXNldEZpbGVyc0NsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWVyYXNlclwiXG4gICAgICAgICAgICAgICAgICBwVG9vbHRpcD1cInt7ICdPQ1hfRklMVEVSX1ZJRVcuUkVTRVRfRklMVEVSU19CVVRUT04uREVUQUlMJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCInT0NYX0ZJTFRFUl9WSUVXLlJFU0VUX0ZJTFRFUlNfQlVUVE9OLkFSSUFfTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxvY3gtZGF0YS10YWJsZVxuICAgICAgICAgICAgICBpZD1cIm9jeEZpbHRlclZpZXdEYXRhVGFibGVcIlxuICAgICAgICAgICAgICBbcm93c109XCIoY29sdW1uRmlsdGVyRGF0YVJvd3MkIHwgYXN5bmMpID8/IFtdXCJcbiAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uRmlsdGVyVGFibGVDb2x1bW5zXCJcbiAgICAgICAgICAgICAgW2VtcHR5UmVzdWx0c01lc3NhZ2VdPVwiJ09DWF9GSUxURVJfVklFVy5OT19GSUxURVJTJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtwYWdpbmF0b3JdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbdGFibGVTdHlsZV09XCJ0YWJsZVN0eWxlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbHVtbklkQ2VsbFwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVzW2NvbHVtbi5pZF1cIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgIHJvd09iamVjdDogcm93T2JqZWN0LFxuICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwidmFsdWVJZENlbGxcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRDb2x1bW4ocm93T2JqZWN0Wyd2YWx1ZUNvbHVtbklkJ10sIGNvbHVtbnMpIGFzIHZhbHVlQ29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXZhbHVlQ29sdW1uLmZpbHRlclR5cGUgfHwgdmFsdWVDb2x1bW4uZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5FUVVBTFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlc1t2YWx1ZUNvbHVtbi5pZF1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICByb3dPYmplY3Q6IGdldFJvd0ZvclZhbHVlQ29sdW1uKHJvd09iamVjdCksXG4gICAgICAgICAgICAgIGNvbHVtbjogdmFsdWVDb2x1bW5cbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmFsdWVDb2x1bW4uZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5UUlVUSFlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cnV0aHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgIHZhbHVlOiByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKVxuICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImFjdGlvbnNJZENlbGxcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLWRhbmdlciBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnT0NYX0ZJTFRFUl9WSUVXLlRBQkxFLlJFTU9WRV9GSUxURVJfVElUTEUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT0NYX0ZJTFRFUl9WSUVXLlRBQkxFLlJFTU9WRV9GSUxURVJfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXJEZWxldGUocm93T2JqZWN0KVwiXG4gICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L29jeC1kYXRhLXRhYmxlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9wLW92ZXJsYXlQYW5lbD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2NoaXBUZW1wbGF0ZSBsZXQtdGVtcGxhdGVzPVwidGVtcGxhdGVzXCIgbGV0LWZpbHRlcj1cImZpbHRlclwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwidGVtcGxhdGVzW2NvbHVtbi5pZF0gYXMgdGVtcGxhdGVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgcm93T2JqZWN0OiBnZXRSb3dPYmplY3RGcm9tRml0ZXJEYXRhKGZpbHRlciksXG4gICAgICAgICAgICBjb2x1bW46IGNvbHVtblxuICAgICAgICAgIH1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cnV0aHlUZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWVcIj4ge3snT0NYX0ZJTFRFUl9WSUVXLkZJTFRFUl9ZRVMnIHwgdHJhbnNsYXRlfX0gPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmFsdWVcIj4ge3snT0NYX0ZJTFRFUl9WSUVXLkZJTFRFUl9OTycgfCB0cmFuc2xhdGV9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0U3RyaW5nVmFsdWVcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyPiB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKX19IDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHROdW1iZXJWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIHwgbnVtYmVyIH19IDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHRDdXN0b21WYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+IDwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0RGF0ZVZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj4ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCkgfCBkYXRlOiBjb2x1bW4uZGF0ZUZvcm1hdCA/PyAnbWVkaXVtJyB9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0UmVsYXRpdmVEYXRlVmFsdWVcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyPlxuICAgIHt7ICdPQ1hfREFUQV9UQUJMRS5FRElURUQnIHwgdHJhbnNsYXRlIH19IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIHwgdGltZWFnbyB9fVxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0VHJhbnNsYXRpb25LZXlWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIHwgdHJhbnNsYXRlIH19PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19