UNPKG

ngx-extended-pdf-viewer

Version:

Embedding PDF files in your Angular application. Highly configurable viewer including the toolbar, sidebar, and all the features you're used to.

319 lines 41.8 kB
/** * @fileoverview added by tsickle * Generated from: lib/ngx-extended-pdf-viewer.module.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { PdfHandToolComponent } from './toolbar/pdf-hand-tool/pdf-hand-tool.component'; // tslint:disable:max-line-length import { CommonModule, Location, LocationStrategy, PathLocationStrategy } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { NgModule } from '@angular/core'; import { NgxExtendedPdfViewerComponent } from './ngx-extended-pdf-viewer.component'; import { NgxExtendedPdfViewerService } from './ngx-extended-pdf-viewer.service'; import { PageNumberComponent } from './toolbar/pdf-paging-area/page-number/page-number.component'; import { PdfBookmarkComponent } from './toolbar/pdf-bookmark/pdf-bookmark.component'; import { PdfContextMenuComponent } from './toolbar/pdf-context-menu/pdf-context-menu.component'; import { PdfDocumentPropertiesOverlayComponent } from './document-properties/pdf-document-properties-overlay/pdf-document-properties-overlay.component'; import { PdfDownloadComponent } from './toolbar/pdf-download/pdf-download.component'; import { PdfDummyComponentsComponent } from './pdf-dummy-components/pdf-dummy-components.component'; import { PdfFindbarComponent } from './toolbar/pdf-findbar/pdf-findbar.component'; import { PdfFindbarMessageContainerComponent } from './toolbar/pdf-findbar/pdf-findbar-message-container/pdf-findbar-message-container.component'; import { PdfFindbarOptionsOneContainerComponent } from './toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-findbar-options-one-container.component'; import { PdfFindbarOptionsThreeContainerComponent } from './toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-findbar-options-three-container.component'; import { PdfFindbarOptionsTwoContainerComponent } from './toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-findbar-options-two-container.component'; import { PdfFindButtonComponent } from './toolbar/pdf-find-button/pdf-find-button.component'; import { PdfFindEntireWordComponent } from './toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-find-entire-word/pdf-find-entire-word.component'; import { PdfFindHighlightAllComponent } from './toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-find-highlight-all/pdf-find-highlight-all.component'; import { PdfFindIgnoreAccentsComponent } from './toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-find-ignore-accents/pdf-find-ignore-accents.component'; import { PdfFindInputAreaComponent } from './toolbar/pdf-findbar/pdf-find-input-area/pdf-find-input-area.component'; import { PdfFindMatchCaseComponent } from './toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-find-match-case/pdf-find-match-case.component'; import { PdfFindMultipleSearchTextsComponent } from './toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-find-entire-phrase/pdf-find-entire-phrase.component'; import { PdfFindNextComponent } from './toolbar/pdf-findbar/pdf-find-next/pdf-find-next.component'; import { PdfFindPreviousComponent } from './toolbar/pdf-findbar/pdf-find-previous/pdf-find-previous.component'; import { PdfFindResultsCountComponent } from './toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-find-results-count/pdf-find-results-count.component'; import { PdfFirstPageComponent } from './toolbar/pdf-paging-area/pdf-first-page/pdf-first-page.component'; import { PdfLastPageComponent } from './toolbar/pdf-paging-area/pdf-last-page/pdf-last-page.component'; import { PdfNextPageComponent } from './toolbar/pdf-paging-area/pdf-next-page/pdf-next-page.component'; import { PdfOpenFileComponent } from './toolbar/pdf-open-file/pdf-open-file.component'; import { PdfPageNumberComponent } from './toolbar/pdf-paging-area/pdf-page-number/pdf-page-number.component'; import { PdfPagingAreaComponent } from './toolbar/pdf-paging-area/pdf-paging-area.component'; import { PdfPresentationModeComponent } from './toolbar/pdf-presentation-mode/pdf-presentation-mode.component'; import { PdfPreviousPageComponent } from './toolbar/pdf-paging-area/pdf-previous-page/pdf-previous-page.component'; import { PdfPrintComponent } from './toolbar/pdf-print/pdf-print.component'; import { PdfRotatePageComponent } from './toolbar/pdf-rotate-page/pdf-rotate-page.component'; import { PdfSearchInputFieldComponent } from './toolbar/pdf-findbar/pdf-search-input-field/pdf-search-input-field.component'; import { PdfSecondaryToolbarComponent } from './secondary-toolbar/pdf-secondary-toolbar/pdf-secondary-toolbar.component'; import { PdfSidebarComponent } from './sidebar/pdf-sidebar/pdf-sidebar.component'; import { PdfSplitToolbarButtonComponent } from './toolbar/pdf-findbar/pdf-split-toolbar-button/pdf-split-toolbar-button.component'; import { PdfToggleSecondaryToolbarComponent } from './toolbar/pdf-toggle-secondary-toolbar/pdf-toggle-secondary-toolbar.component'; import { PdfToggleSidebarComponent } from './toolbar/pdf-toggle-sidebar/pdf-toggle-sidebar.component'; import { PdfToolbarComponent } from './toolbar/pdf-toolbar/pdf-toolbar.component'; import { PdfZoomDropdownComponent } from './toolbar/pdf-zoom-toolbar/pdf-zoom-dropdown/pdf-zoom-dropdown.component'; import { PdfZoomInComponent } from './toolbar/pdf-zoom-toolbar/pdf-zoom-in/pdf-zoom-in.component'; import { PdfZoomOutComponent } from './toolbar/pdf-zoom-toolbar/pdf-zoom-out/pdf-zoom-out.component'; import { PdfZoomToolbarComponent } from './toolbar/pdf-zoom-toolbar/pdf-zoom-toolbar.component'; import { PdfSelectToolComponent } from './toolbar/pdf-select-tool/pdf-select-tool.component'; import { DynamicCssComponent } from './dynamic-css/dynamic-css.component'; import { PDFNotificationService } from './pdf-notification-service'; if (!Promise['allSettled']) { console.error("Please update zone.js to version 0.10.3 or higher. Otherwise, you'll see many messages complaining about Promise.allSettled."); } /** * @param {?} cmd * @param {?} keycode * @return {?} */ function isKeyIgnored(cmd, keycode) { /** @type {?} */ var PDFViewerApplicationOptions = ((/** @type {?} */ (window))).PDFViewerApplicationOptions; /** @type {?} */ var ignoreKeys = PDFViewerApplicationOptions.get('ignoreKeys'); /** @type {?} */ var acceptKeys = PDFViewerApplicationOptions.get('acceptKeys'); if (keycode === 'WHEEL') { if (isKeyInList(ignoreKeys, cmd, 'WHEEL')) { return true; } if (!!acceptKeys && acceptKeys.length > 0) { return !isKeyInList(acceptKeys, cmd, 'WHEEL'); } return false; } if (keycode === 16 || keycode === 17 || keycode === 18 || keycode === 224) { // ignore solitary SHIFT, ALT, CMD, and CTRL because they only make sense as two-key-combinations return true; } // cmd is a bit-array: // 1 == CTRL // 2 == ALT // 4 == SHIFT // 8 == META /** @type {?} */ var ignoreKeyboard = PDFViewerApplicationOptions.get('ignoreKeyboard'); if (!!ignoreKeyboard) { return true; } if (!!ignoreKeys && ignoreKeys.length > 0) { if (isKeyInList(ignoreKeys, cmd, keycode)) { return true; } } if (!!acceptKeys && acceptKeys.length > 0) { return !isKeyInList(acceptKeys, cmd, keycode); } return false; } /** * @param {?} settings * @param {?} cmd * @param {?} keycode * @return {?} */ function isKeyInList(settings, cmd, keycode) { if (!settings) { return true; } return settings.some((/** * @param {?} keyDef * @return {?} */ function (keyDef) { return isKey(keyDef, cmd, keycode); })); } /** * @param {?} keyDef * @param {?} cmd * @param {?} keycode * @return {?} */ function isKey(keyDef, cmd, keycode) { /** @type {?} */ var cmdDef = 0; /** @type {?} */ var key = 0; keyDef = keyDef.toLowerCase(); // tslint:disable: no-bitwise if (keyDef.includes('ctrl+')) { cmdDef |= 1; keyDef = keyDef.replace('ctrl+', ''); } if (keyDef.includes('cmd+')) { cmdDef |= 8; keyDef = keyDef.replace('cmd+', ''); } if (keyDef.includes('alt+')) { cmdDef |= 2; keyDef = keyDef.replace('alt+', ''); } if (keyDef.includes('shift+')) { cmdDef |= 4; keyDef = keyDef.replace('shift+', ''); } if (keyDef.includes('meta+')) { cmdDef |= 8; keyDef = keyDef.replace('meta+', ''); } if (keyDef === 'up') { key = 38; } else if (keyDef === 'down') { key = 40; } else if (keyDef === '+' || keyDef === '"+"') { key = 171; } else if (keyDef === '-' || keyDef === '"-"') { key = 173; } else if (keyDef === 'esc') { key = 27; } else if (keyDef === 'enter') { key = 13; } else if (keyDef === 'space') { key = 32; } else if (keyDef === 'f4') { key = 115; } else if (keyDef === 'backspace') { key = 8; } else if (keyDef === 'home') { key = 36; } else if (keyDef === 'end') { key = 35; } else if (keyDef === 'left') { key = 37; } else if (keyDef === 'right') { key = 39; } else if (keyDef === 'pagedown') { key = 34; } else if (keyDef === 'pageup') { key = 33; } else { key = keyDef.toUpperCase().charCodeAt(0); } if (keycode === 'WHEEL') { return keyDef === 'wheel' && cmd === cmdDef; } return key === keycode && cmd === cmdDef; } if (typeof window !== 'undefined') { ((/** @type {?} */ (window))).isKeyIgnored = isKeyIgnored; } var NgxExtendedPdfViewerModule = /** @class */ (function () { function NgxExtendedPdfViewerModule() { } NgxExtendedPdfViewerModule.decorators = [ { type: NgModule, args: [{ imports: [CommonModule, FormsModule], declarations: [ DynamicCssComponent, NgxExtendedPdfViewerComponent, PdfZoomDropdownComponent, PdfContextMenuComponent, PdfPresentationModeComponent, PdfOpenFileComponent, PdfPrintComponent, PdfDownloadComponent, PdfBookmarkComponent, PdfZoomToolbarComponent, PdfPagingAreaComponent, PdfFindbarComponent, PdfSidebarComponent, PdfHandToolComponent, PdfSelectToolComponent, PdfSecondaryToolbarComponent, PdfDocumentPropertiesOverlayComponent, PdfSearchInputFieldComponent, PdfFindPreviousComponent, PdfFindNextComponent, PdfFindInputAreaComponent, PdfFindbarOptionsTwoContainerComponent, PdfFindbarOptionsOneContainerComponent, PdfFindMatchCaseComponent, PdfFindHighlightAllComponent, PdfFindEntireWordComponent, PdfFindMultipleSearchTextsComponent, PdfFindIgnoreAccentsComponent, PdfFindbarOptionsThreeContainerComponent, PdfFindResultsCountComponent, PdfFindbarMessageContainerComponent, PdfSplitToolbarButtonComponent, PdfToolbarComponent, PdfFindButtonComponent, PdfToggleSidebarComponent, PdfToggleSecondaryToolbarComponent, PdfLastPageComponent, PdfFirstPageComponent, PdfNextPageComponent, PdfPreviousPageComponent, PageNumberComponent, PdfPageNumberComponent, PdfRotatePageComponent, PdfZoomInComponent, PdfZoomOutComponent, PdfDummyComponentsComponent, ], providers: [NgxExtendedPdfViewerService, PDFNotificationService, Location, { provide: LocationStrategy, useClass: PathLocationStrategy }], exports: [ PdfZoomDropdownComponent, PdfContextMenuComponent, PdfPresentationModeComponent, PdfOpenFileComponent, PdfPrintComponent, PdfDownloadComponent, PdfBookmarkComponent, PdfZoomToolbarComponent, PdfPagingAreaComponent, PdfFindbarComponent, PdfSidebarComponent, PdfSecondaryToolbarComponent, PdfDocumentPropertiesOverlayComponent, PdfSearchInputFieldComponent, PdfFindPreviousComponent, PdfFindNextComponent, PdfFindInputAreaComponent, PdfFindbarOptionsTwoContainerComponent, PdfFindbarOptionsOneContainerComponent, PdfFindMatchCaseComponent, PdfFindHighlightAllComponent, PdfFindEntireWordComponent, PdfFindMultipleSearchTextsComponent, PdfFindIgnoreAccentsComponent, PdfFindbarOptionsThreeContainerComponent, PdfFindResultsCountComponent, PdfFindbarMessageContainerComponent, PdfHandToolComponent, PdfRotatePageComponent, PdfSelectToolComponent, PdfSplitToolbarButtonComponent, PdfToolbarComponent, PdfFindButtonComponent, PdfToggleSidebarComponent, PdfToggleSecondaryToolbarComponent, PdfLastPageComponent, PdfFirstPageComponent, PdfNextPageComponent, PdfPreviousPageComponent, PageNumberComponent, PdfPageNumberComponent, PdfZoomInComponent, PdfZoomOutComponent, NgxExtendedPdfViewerComponent ], },] } ]; /** @nocollapse */ NgxExtendedPdfViewerModule.ctorParameters = function () { return []; }; return NgxExtendedPdfViewerModule; }()); export { NgxExtendedPdfViewerModule }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWV4dGVuZGVkLXBkZi12aWV3ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWV4dGVuZGVkLXBkZi12aWV3ZXIvIiwic291cmNlcyI6WyJsaWIvbmd4LWV4dGVuZGVkLXBkZi12aWV3ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBR3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDbEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDckYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDaEcsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0saUdBQWlHLENBQUM7QUFDeEosT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sNkZBQTZGLENBQUM7QUFDbEosT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0scUdBQXFHLENBQUM7QUFDN0osT0FBTyxFQUFFLHdD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b0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsOEJBQThCO3dCQUM5QixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIseUJBQXlCO3dCQUN6QixrQ0FBa0M7d0JBQ2xDLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQiw2QkFBNkI7cUJBQzlCO2lCQUNGOzs7O0lBR0QsaUNBQUM7Q0FBQSxBQXBHRCxJQW9HQztTQUZZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBkZkhhbmRUb29sQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1oYW5kLXRvb2wvcGRmLWhhbmQtdG9vbC5jb21wb25lbnQnO1xuLy8gdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24sIExvY2F0aW9uU3RyYXRlZ3ksIFBhdGhMb2NhdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSVBERlZpZXdlckFwcGxpY2F0aW9uT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucy9wZGYtdmlld2VyLWFwcGxpY2F0aW9uLW9wdGlvbnMnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neEV4dGVuZGVkUGRmVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4RXh0ZW5kZWRQZGZWaWV3ZXJTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLXBhZ2luZy1hcmVhL3BhZ2UtbnVtYmVyL3BhZ2UtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZCb29rbWFya0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtYm9va21hcmsvcGRmLWJvb2ttYXJrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtY29udGV4dC1tZW51L3BkZi1jb250ZXh0LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFBkZkRvY3VtZW50UHJvcGVydGllc092ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL2RvY3VtZW50LXByb3BlcnRpZXMvcGRmLWRvY3VtZW50LXByb3BlcnRpZXMtb3ZlcmxheS9wZGYtZG9jdW1lbnQtcHJvcGVydGllcy1vdmVybGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZEb3dubG9hZENvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtZG93bmxvYWQvcGRmLWRvd25sb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZEdW1teUNvbXBvbmVudHNDb21wb25lbnQgfSBmcm9tICcuL3BkZi1kdW1teS1jb21wb25lbnRzL3BkZi1kdW1teS1jb21wb25lbnRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZGaW5kYmFyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1maW5kYmFyL3BkZi1maW5kYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZGaW5kYmFyTWVzc2FnZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtZmluZGJhci9wZGYtZmluZGJhci1tZXNzYWdlLWNvbnRhaW5lci9wZGYtZmluZGJhci1tZXNzYWdlLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmRmluZGJhck9wdGlvbnNPbmVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLWZpbmRiYXIvcGRmLWZpbmRiYXItb3B0aW9ucy1vbmUtY29udGFpbmVyL3BkZi1maW5kYmFyLW9wdGlvbnMtb25lLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmRmluZGJhck9wdGlvbnNUaHJlZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtZmluZGJhci9wZGYtZmluZGJhci1vcHRpb25zLXRocmVlLWNvbnRhaW5lci9wZGYtZmluZGJhci1vcHRpb25zLXRocmVlLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmRmluZGJhck9wdGlvbnNUd29Db250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLWZpbmRiYXIvcGRmLWZpbmRiYXItb3B0aW9ucy10d28tY29udGFpbmVyL3BkZi1maW5kYmFyLW9wdGlvbnMtdHdvLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmRmluZEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtZmluZC1idXR0b24vcGRmLWZpbmQtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZGaW5kRW50aXJlV29yZENvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtZmluZGJhci9wZGYtZmluZGJhci1vcHRpb25zLXR3by1jb250YWluZXIvcGRmLWZpbmQtZW50aXJlLXdvcmQvcGRmLWZpbmQtZW50aXJlLXdvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFBkZkZpbmRIaWdobGlnaHRBbGxDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLWZpbmRiYXIvcGRmLWZpbmRiYXItb3B0aW9ucy1vbmUtY29udGFpbmVyL3BkZi1maW5kLWhpZ2hsaWdodC1hbGwvcGRmLWZpbmQtaGlnaGxpZ2h0LWFsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmRmluZElnbm9yZUFjY2VudHNDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLWZpbmRiYXIvcGRmLWZpbmRiYXItb3B0aW9ucy10aHJlZS1jb250YWluZXIvcGRmLWZpbmQtaWdub3JlLWFjY2VudHMvcGRmLWZpbmQtaWdub3JlLWFjY2VudHMuY29tcG9uZW50JztcbmltcG9ydCB7IFBkZkZpbmRJbnB1dEFyZWFDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLWZpbmRiYXIvcGRmLWZpbmQtaW5wdXQtYXJlYS9wZGYtZmluZC1pbnB1dC1hcmVhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZGaW5kTWF0Y2hDYXNlQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1maW5kYmFyL3BkZi1maW5kYmFyLW9wdGlvbnMtb25lLWNvbnRhaW5lci9wZGYtZmluZC1tYXRjaC1jYXNlL3BkZi1maW5kLW1hdGNoLWNhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBkZkZpbmRNdWx0aXBsZVNlYXJjaFRleHRzQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1maW5kYmFyL3BkZi1maW5kYmFyLW9wdGlvbnMtdHdvLWNvbnRhaW5lci9wZGYtZmluZC1lbnRpcmUtcGhyYXNlL3BkZi1maW5kLWVudGlyZS1waHJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBkZkZpbmROZXh0Q29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1maW5kYmFyL3BkZi1maW5kLW5leHQvcGRmLWZpbmQtbmV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmRmluZFByZXZpb3VzQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1maW5kYmFyL3BkZi1maW5kLXByZXZpb3VzL3BkZi1maW5kLXByZXZpb3VzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZGaW5kUmVzdWx0c0NvdW50Q29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1maW5kYmFyL3BkZi1maW5kYmFyLW9wdGlvbnMtdGhyZWUtY29udGFpbmVyL3BkZi1maW5kLXJlc3VsdHMtY291bnQvcGRmLWZpbmQtcmVzdWx0cy1jb3VudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmRmlyc3RQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1wYWdpbmctYXJlYS9wZGYtZmlyc3QtcGFnZS9wZGYtZmlyc3QtcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmTGFzdFBhZ2VDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLXBhZ2luZy1hcmVhL3BkZi1sYXN0LXBhZ2UvcGRmLWxhc3QtcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmTmV4dFBhZ2VDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLXBhZ2luZy1hcmVhL3BkZi1uZXh0LXBhZ2UvcGRmLW5leHQtcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmT3BlbkZpbGVDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLW9wZW4tZmlsZS9wZGYtb3Blbi1maWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZQYWdlTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1wYWdpbmctYXJlYS9wZGYtcGFnZS1udW1iZXIvcGRmLXBhZ2UtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZQYWdpbmdBcmVhQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1wYWdpbmctYXJlYS9wZGYtcGFnaW5nLWFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IFBkZlByZXNlbnRhdGlvbk1vZGVDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLXByZXNlbnRhdGlvbi1tb2RlL3BkZi1wcmVzZW50YXRpb24tbW9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmUHJldmlvdXNQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1wYWdpbmctYXJlYS9wZGYtcHJldmlvdXMtcGFnZS9wZGYtcHJldmlvdXMtcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmUHJpbnRDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLXByaW50L3BkZi1wcmludC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmUm90YXRlUGFnZUNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtcm90YXRlLXBhZ2UvcGRmLXJvdGF0ZS1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZTZWFyY2hJbnB1dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1maW5kYmFyL3BkZi1zZWFyY2gtaW5wdXQtZmllbGQvcGRmLXNlYXJjaC1pbnB1dC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmU2Vjb25kYXJ5VG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vc2Vjb25kYXJ5LXRvb2xiYXIvcGRmLXNlY29uZGFyeS10b29sYmFyL3BkZi1zZWNvbmRhcnktdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4vc2lkZWJhci9wZGYtc2lkZWJhci9wZGYtc2lkZWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmU3BsaXRUb29sYmFyQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi1maW5kYmFyL3BkZi1zcGxpdC10b29sYmFyLWJ1dHRvbi9wZGYtc3BsaXQtdG9vbGJhci1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFBkZlRvZ2dsZVNlY29uZGFyeVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLXRvZ2dsZS1zZWNvbmRhcnktdG9vbGJhci9wZGYtdG9nZ2xlLXNlY29uZGFyeS10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZUb2dnbGVTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi10b2dnbGUtc2lkZWJhci9wZGYtdG9nZ2xlLXNpZGViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBkZlRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLXRvb2xiYXIvcGRmLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBkZlpvb21Ecm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtem9vbS10b29sYmFyL3BkZi16b29tLWRyb3Bkb3duL3BkZi16b29tLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZab29tSW5Db21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcGRmLXpvb20tdG9vbGJhci9wZGYtem9vbS1pbi9wZGYtem9vbS1pbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmWm9vbU91dENvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtem9vbS10b29sYmFyL3BkZi16b29tLW91dC9wZGYtem9vbS1vdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFBkZlpvb21Ub29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3BkZi16b29tLXRvb2xiYXIvcGRmLXpvb20tdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmU2VsZWN0VG9vbENvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9wZGYtc2VsZWN0LXRvb2wvcGRmLXNlbGVjdC10b29sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljQ3NzQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWNzcy9keW5hbWljLWNzcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUERGTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vcGRmLW5vdGlmaWNhdGlvbi1zZXJ2aWNlJztcblxuaWYgKCFQcm9taXNlWydhbGxTZXR0bGVkJ10pIHtcbiAgY29uc29sZS5lcnJvcihcIlBsZWFzZSB1cGRhdGUgem9uZS5qcyB0byB2ZXJzaW9uIDAuMTAuMyBvciBoaWdoZXIuIE90aGVyd2lzZSwgeW91J2xsIHNlZSBtYW55IG1lc3NhZ2VzIGNvbXBsYWluaW5nIGFib3V0IFByb21pc2UuYWxsU2V0dGxlZC5cIik7XG59XG5cbmZ1bmN0aW9uIGlzS2V5SWdub3JlZChjbWQ6IG51bWJlciwga2V5Y29kZTogbnVtYmVyIHwgJ1dIRUVMJyk6IGJvb2xlYW4ge1xuICBjb25zdCBQREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnM6IElQREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMgPSAod2luZG93IGFzIGFueSkuUERGVmlld2VyQXBwbGljYXRpb25PcHRpb25zO1xuXG4gIGNvbnN0IGlnbm9yZUtleXM6IEFycmF5PHN0cmluZz4gPSBQREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuZ2V0KCdpZ25vcmVLZXlzJyk7XG4gIGNvbnN0IGFjY2VwdEtleXM6IEFycmF5PHN0cmluZz4gPSBQREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuZ2V0KCdhY2NlcHRLZXlzJyk7XG4gIGlmIChrZXljb2RlID09PSAnV0hFRUwnKSB7XG4gICAgaWYgKGlzS2V5SW5MaXN0KGlnbm9yZUtleXMsIGNtZCwgJ1dIRUVMJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoISFhY2NlcHRLZXlzICYmIGFjY2VwdEtleXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuICFpc0tleUluTGlzdChhY2NlcHRLZXlzLCBjbWQsICdXSEVFTCcpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChrZXljb2RlID09PSAxNiB8fCBrZXljb2RlID09PSAxNyB8fCBrZXljb2RlID09PSAxOCB8fCBrZXljb2RlID09PSAyMjQpIHtcbiAgICAvLyBpZ25vcmUgc29saXRhcnkgU0hJRlQsIEFMVCwgQ01ELCBhbmQgQ1RSTCBiZWNhdXNlIHRoZXkgb25seSBtYWtlIHNlbnNlIGFzIHR3by1rZXktY29tYmluYXRpb25zXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gY21kIGlzIGEgYml0LWFycmF5OlxuICAvLyAxID09IENUUkxcbiAgLy8gMiA9PSBBTFRcbiAgLy8gNCA9PSBTSElGVFxuICAvLyA4ID09IE1FVEFcbiAgY29uc3QgaWdub3JlS2V5Ym9hcmQgPSBQREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuZ2V0KCdpZ25vcmVLZXlib2FyZCcpO1xuICBpZiAoISFpZ25vcmVLZXlib2FyZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCEhaWdub3JlS2V5cyAmJiBpZ25vcmVLZXlzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAoaXNLZXlJbkxpc3QoaWdub3JlS2V5cywgY21kLCBrZXljb2RlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKCEhYWNjZXB0S2V5cyAmJiBhY2NlcHRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gIWlzS2V5SW5MaXN0KGFjY2VwdEtleXMsIGNtZCwga2V5Y29kZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc0tleUluTGlzdChzZXR0aW5nczogQXJyYXk8c3RyaW5nPiwgY21kOiBudW1iZXIsIGtleWNvZGU6IG51bWJlciB8ICdXSEVFTCcpOiBib29sZWFuIHtcbiAgaWYgKCFzZXR0aW5ncykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBzZXR0aW5ncy5zb21lKChrZXlEZWYpID0+IGlzS2V5KGtleURlZiwgY21kLCBrZXljb2RlKSk7XG59XG5cbmZ1bmN0aW9uIGlzS2V5KGtleURlZjogc3RyaW5nLCBjbWQ6IG51bWJlciwga2V5Y29kZTogbnVtYmVyIHwgJ1dIRUVMJyk6IGJvb2xlYW4ge1xuICBsZXQgY21kRGVmID0gMDtcbiAgbGV0IGtleSA9IDA7XG4gIGtleURlZiA9IGtleURlZi50b0xvd2VyQ2FzZSgpO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZTogbm8tYml0d2lzZVxuICBpZiAoa2V5RGVmLmluY2x1ZGVzKCdjdHJsKycpKSB7XG4gICAgY21kRGVmIHw9IDE7XG4gICAga2V5RGVmID0ga2V5RGVmLnJlcGxhY2UoJ2N0cmwrJywgJycpO1xuICB9XG4gIGlmIChrZXlEZWYuaW5jbHVkZXMoJ2NtZCsnKSkge1xuICAgIGNtZERlZiB8PSA4O1xuICAgIGtleURlZiA9IGtleURlZi5yZXBsYWNlKCdjbWQrJywgJycpO1xuICB9XG4gIGlmIChrZXlEZWYuaW5jbHVkZXMoJ2FsdCsnKSkge1xuICAgIGNtZERlZiB8PSAyO1xuICAgIGtleURlZiA9IGtleURlZi5yZXBsYWNlKCdhbHQrJywgJycpO1xuICB9XG4gIGlmIChrZXlEZWYuaW5jbHVkZXMoJ3NoaWZ0KycpKSB7XG4gICAgY21kRGVmIHw9IDQ7XG4gICAga2V5RGVmID0ga2V5RGVmLnJlcGxhY2UoJ3NoaWZ0KycsICcnKTtcbiAgfVxuICBpZiAoa2V5RGVmLmluY2x1ZGVzKCdtZXRhKycpKSB7XG4gICAgY21kRGVmIHw9IDg7XG4gICAga2V5RGVmID0ga2V5RGVmLnJlcGxhY2UoJ21ldGErJywgJycpO1xuICB9XG5cbiAgaWYgKGtleURlZiA9PT0gJ3VwJykge1xuICAgIGtleSA9IDM4O1xuICB9IGVsc2UgaWYgKGtleURlZiA9PT0gJ2Rvd24nKSB7XG4gICAga2V5ID0gNDA7XG4gIH0gZWxzZSBpZiAoa2V5RGVmID09PSAnKycgfHwga2V5RGVmID09PSAnXCIrXCInKSB7XG4gICAga2V5ID0gMTcxO1xuICB9IGVsc2UgaWYgKGtleURlZiA9PT0gJy0nIHx8IGtleURlZiA9PT0gJ1wiLVwiJykge1xuICAgIGtleSA9IDE3MztcbiAgfSBlbHNlIGlmIChrZXlEZWYgPT09ICdlc2MnKSB7XG4gICAga2V5ID0gMjc7XG4gIH0gZWxzZSBpZiAoa2V5RGVmID09PSAnZW50ZXInKSB7XG4gICAga2V5ID0gMTM7XG4gIH0gZWxzZSBpZiAoa2V5RGVmID09PSAnc3BhY2UnKSB7XG4gICAga2V5ID0gMzI7XG4gIH0gZWxzZSBpZiAoa2V5RGVmID09PSAnZjQnKSB7XG4gICAga2V5ID0gMTE1O1xuICB9IGVsc2UgaWYgKGtleURlZiA9PT0gJ2JhY2tzcGFjZScpIHtcbiAgICBrZXkgPSA4O1xuICB9IGVsc2UgaWYgKGtleURlZiA9PT0gJ2hvbWUnKSB7XG4gICAga2V5ID0gMzY7XG4gIH0gZWxzZSBpZiAoa2V5RGVmID09PSAnZW5kJykge1xuICAgIGtleSA9IDM1O1xuICB9IGVsc2UgaWYgKGtleURlZiA9PT0gJ2xlZnQnKSB7XG4gICAga2V5ID0gMzc7XG4gIH0gZWxzZSBpZiAoa2V5RGVmID09PSAncmlnaHQnKSB7XG4gICAga2V5ID0gMzk7XG4gIH0gZWxzZSBpZiAoa2V5RGVmID09PSAncGFnZWRvd24nKSB7XG4gICAga2V5ID0gMzQ7XG4gIH0gZWxzZSBpZiAoa2V5RGVmID09PSAncGFnZXVwJykge1xuICAgIGtleSA9IDMzO1xuICB9IGVsc2Uge1xuICAgIGtleSA9IGtleURlZi50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCk7XG4gIH1cbiAgaWYgKGtleWNvZGUgPT09ICdXSEVFTCcpIHtcbiAgICByZXR1cm4ga2V5RGVmID09PSAnd2hlZWwnICYmIGNtZCA9PT0gY21kRGVmO1xuICB9XG4gIHJldHVybiBrZXkgPT09IGtleWNvZGUgJiYgY21kID09PSBjbWREZWY7XG59XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAod2luZG93IGFzIGFueSkuaXNLZXlJZ25vcmVkID0gaXNLZXlJZ25vcmVkO1xufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIER5bmFtaWNDc3NDb21wb25lbnQsXG4gICAgTmd4RXh0ZW5kZWRQZGZWaWV3ZXJDb21wb25lbnQsXG4gICAgUGRmWm9vbURyb3Bkb3duQ29tcG9uZW50LFxuICAgIFBkZkNvbnRleHRNZW51Q29tcG9uZW50LFxuICAgIFBkZlByZXNlbnRhdGlvbk1vZGVDb21wb25lbnQsXG4gICAgUGRmT3BlbkZpbGVDb21wb25lbnQsXG4gICAgUGRmUHJpbnRDb21wb25lbnQsXG4gICAgUGRmRG93bmxvYWRDb21wb25lbnQsXG4gICAgUGRmQm9va21hcmtDb21wb25lbnQsXG4gICAgUGRmWm9vbVRvb2xiYXJDb21wb25lbnQsXG4gICAgUGRmUGFnaW5nQXJlYUNvbXBvbmVudCxcbiAgICBQZGZGaW5kYmFyQ29tcG9uZW50LFxuICAgIFBkZlNpZGViYXJDb21wb25lbnQsXG4gICAgUGRmSGFuZFRvb2xDb21wb25lbnQsXG4gICAgUGRmU2VsZWN0VG9vbENvbXBvbmVudCxcbiAgICBQZGZTZWNvbmRhcnlUb29sYmFyQ29tcG9uZW50LFxuICAgIFBkZkRvY3VtZW50UHJvcGVydGllc092ZXJsYXlDb21wb25lbnQsXG4gICAgUGRmU2VhcmNoSW5wdXRGaWVsZENvbXBvbmVudCxcbiAgICBQZGZGaW5kUHJldmlvdXNDb21wb25lbnQsXG4gICAgUGRmRmluZE5leHRDb21wb25lbnQsXG4gICAgUGRmRmluZElucHV0QXJlYUNvbXBvbmVudCxcbiAgICBQZGZGaW5kYmFyT3B0aW9uc1R3b0NvbnRhaW5lckNvbXBvbmVudCxcbiAgICBQZGZGaW5kYmFyT3B0aW9uc09uZUNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBQZGZGaW5kTWF0Y2hDYXNlQ29tcG9uZW50LFxuICAgIFBkZkZpbmRIaWdobGlnaHRBbGxDb21wb25lbnQsXG4gICAgUGRmRmluZEVudGlyZVdvcmRDb21wb25lbnQsXG4gICAgUGRmRmluZE11bHRpcGxlU2VhcmNoVGV4dHNDb21wb25lbnQsXG4gICAgUGRmRmluZElnbm9yZUFjY2VudHNDb21wb25lbnQsXG4gICAgUGRmRmluZGJhck9wdGlvbnNUaHJlZUNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBQZGZGaW5kUmVzdWx0c0NvdW50Q29tcG9uZW50LFxuICAgIFBkZkZpbmRiYXJNZXNzYWdlQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIFBkZlNwbGl0VG9vbGJhckJ1dHRvbkNvbXBvbmVudCxcbiAgICBQZGZUb29sYmFyQ29tcG9uZW50LFxuICAgIFBkZkZpbmRCdXR0b25Db21wb25lbnQsXG4gICAgUGRmVG9nZ2xlU2lkZWJhckNvbXBvbmVudCxcbiAgICBQZGZUb2dnbGVTZWNvbmRhcnlUb29sYmFyQ29tcG9uZW50LFxuICAgIFBkZkxhc3RQYWdlQ29tcG9uZW50LFxuICAgIFBkZkZpcnN0UGFnZUNvbXBvbmVudCxcbiAgICBQZGZOZXh0UGFnZUNvbXBvbmVudCxcbiAgICBQZGZQcmV2aW91c1BhZ2VDb21wb25lbnQsXG4gICAgUGFnZU51bWJlckNvbXBvbmVudCxcbiAgICBQZGZQYWdlTnVtYmVyQ29tcG9uZW50LFxuICAgIFBkZlJvdGF0ZVBhZ2VDb21wb25lbnQsXG4gICAgUGRmWm9vbUluQ29tcG9uZW50LFxuICAgIFBkZlpvb21PdXRDb21wb25lbnQsXG4gICAgUGRmRHVtbXlDb21wb25lbnRzQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtOZ3hFeHRlbmRlZFBkZlZpZXdlclNlcnZpY2UsIFBERk5vdGlmaWNhdGlvblNlcnZpY2UsIExvY2F0aW9uLCB7IHByb3ZpZGU6IExvY2F0aW9uU3RyYXRlZ3ksIHVzZUNsYXNzOiBQYXRoTG9jYXRpb25TdHJhdGVneSB9XSxcbiAgZXhwb3J0czogW1xuICAgIFBkZlpvb21Ecm9wZG93bkNvbXBvbmVudCxcbiAgICBQZGZDb250ZXh0TWVudUNvbXBvbmVudCxcbiAgICBQZGZQcmVzZW50YXRpb25Nb2RlQ29tcG9uZW50LFxuICAgIFBkZk9wZW5GaWxlQ29tcG9uZW50LFxuICAgIFBkZlByaW50Q29tcG9uZW50LFxuICAgIFBkZkRvd25sb2FkQ29tcG9uZW50LFxuICAgIFBkZkJvb2ttYXJrQ29tcG9uZW50LFxuICAgIFBkZlpvb21Ub29sYmFyQ29tcG9uZW50LFxuICAgIFBkZlBhZ2luZ0FyZWFDb21wb25lbnQsXG4gICAgUGRmRmluZGJhckNvbXBvbmVudCxcbiAgICBQZGZTaWRlYmFyQ29tcG9uZW50LFxuICAgIFBkZlNlY29uZGFyeVRvb2xiYXJDb21wb25lbnQsXG4gICAgUGRmRG9jdW1lbnRQcm9wZXJ0aWVzT3ZlcmxheUNvbXBvbmVudCxcbiAgICBQZGZTZWFyY2hJbnB1dEZpZWxkQ29tcG9uZW50LFxuICAgIFBkZkZpbmRQcmV2aW91c0NvbXBvbmVudCxcbiAgICBQZGZGaW5kTmV4dENvbXBvbmVudCxcbiAgICBQZGZGaW5kSW5wdXRBcmVhQ29tcG9uZW50LFxuICAgIFBkZkZpbmRiYXJPcHRpb25zVHdvQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIFBkZkZpbmRiYXJPcHRpb25zT25lQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIFBkZkZpbmRNYXRjaENhc2VDb21wb25lbnQsXG4gICAgUGRmRmluZEhpZ2hsaWdodEFsbENvbXBvbmVudCxcbiAgICBQZGZGaW5kRW50aXJlV29yZENvbXBvbmVudCxcbiAgICBQZGZGaW5kTXVsdGlwbGVTZWFyY2hUZXh0c0NvbXBvbmVudCxcbiAgICBQZGZGaW5kSWdub3JlQWNjZW50c0NvbXBvbmVudCxcbiAgICBQZGZGaW5kYmFyT3B0aW9uc1RocmVlQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIFBkZkZpbmRSZXN1bHRzQ291bnRDb21wb25lbnQsXG4gICAgUGRmRmluZGJhck1lc3NhZ2VDb250YWluZXJDb21wb25lbnQsXG4gICAgUGRmSGFuZFRvb2xDb21wb25lbnQsXG4gICAgUGRmUm90YXRlUGFnZUNvbXBvbmVudCxcbiAgICBQZGZTZWxlY3RUb29sQ29tcG9uZW50LFxuICAgIFBkZlNwbGl0VG9vbGJhckJ1dHRvbkNvbXBvbmVudCxcbiAgICBQZGZUb29sYmFyQ29tcG9uZW50LFxuICAgIFBkZkZpbmRCdXR0b25Db21wb25lbnQsXG4gICAgUGRmVG9nZ2xlU2lkZWJhckNvbXBvbmVudCxcbiAgICBQZGZUb2dnbGVTZWNvbmRhcnlUb29sYmFyQ29tcG9uZW50LFxuICAgIFBkZkxhc3RQYWdlQ29tcG9uZW50LFxuICAgIFBkZkZpcnN0UGFnZUNvbXBvbmVudCxcbiAgICBQZGZOZXh0UGFnZUNvbXBvbmVudCxcbiAgICBQZGZQcmV2aW91c1BhZ2VDb21wb25lbnQsXG4gICAgUGFnZU51bWJlckNvbXBvbmVudCxcbiAgICBQZGZQYWdlTnVtYmVyQ29tcG9uZW50LFxuICAgIFBkZlpvb21JbkNvbXBvbmVudCxcbiAgICBQZGZab29tT3V0Q29tcG9uZW50LFxuICAgIE5neEV4dGVuZGVkUGRmVmlld2VyQ29tcG9uZW50XG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5neEV4dGVuZGVkUGRmVmlld2VyTW9kdWxlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19