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.

122 lines 17.6 kB
import { AnnotationMode } from './editor-annotations'; const _isIE11 = typeof window === 'undefined' ? false : !!globalThis.MSInputMethodContext && !!document.documentMode; const isEdge = typeof navigator === 'undefined' || /Edge\/\d./i.test(navigator.userAgent); const needsES5 = typeof ReadableStream === 'undefined' || typeof Promise['allSettled'] === 'undefined'; export const pdfjsVersion = '5.4.1100'; export const pdfjsBleedingEdgeVersion = '5.4.1101'; export function getVersionSuffix(folder) { if (folder?.includes('bleeding-edge')) { return pdfjsBleedingEdgeVersion; } return pdfjsVersion; } export function assetsUrl(url, postfixIfPathIsRelativ = '') { if (url.includes('://')) { // the assets folder is on an absolute path (like https://example.com/assets) return url; } return `./${url + postfixIfPathIsRelativ}`; } export function isBleedingEdge() { return pdfDefaultOptions.assetsFolder?.includes('bleeding-edge'); } function isTestEnvironment() { return (typeof process !== 'undefined' && typeof process.env !== 'undefined' && (process.env.NODE_ENV === 'test' || process.env.JEST_WORKER_ID !== undefined || process.env.VITEST !== undefined)); } export function getSafeCanvasSize() { if (typeof window === 'undefined' || typeof document === 'undefined' || isTestEnvironment()) { return 4096; } // Use PDF.js defaults for maximum compatibility // The IOSCanvasOptimizationService handles dynamic optimization const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window); const isMobile = /Android|iPhone|iPad|iPod/.test(navigator.userAgent); if (isIOS || isMobile) { return 5242880; // PDF.js iOS/Android limit (5 megapixels) } return 33554432; // PDF.js desktop default (32 megapixels) } // sonar ignore next line export const pdfDefaultOptions = { needsES5: _isIE11 || isEdge || needsES5, annotationEditorMode: 0, annotationMode: AnnotationMode.ENABLE_FORMS, defaultZoomDelay: 400, cursorToolOnLoad: 0, defaultUrl: '', defaultZoomValue: '', disableHistory: false, disablePageLabels: false, enableComment: false, enablePermissions: false, docBaseUrl: '', enablePrintAutoRotate: true, enableSignatureEditor: false, externalLinkRel: 'noopener noreferrer nofollow', externalLinkTarget: 0, findController: undefined, historyUpdateUrl: false, ignoreDestinationZoom: false, imageResourcesPath: './images/', maxCanvasPixels: getSafeCanvasSize(), forcePageColors: false, pageColorsBackground: 'Canvas', pageColorsForeground: 'CanvasText', pdfBugEnabled: false, printResolution: 150, rangeChunkSize: 65536, removePageBorders: false, enableXfa: true, fontExtraProperties: false, sidebarViewOnLoad: -1, scrollModeOnLoad: -1, spreadModeOnLoad: -1, textLayerMode: 1, // viewerCssTheme: 0, // not supported by ngx-extended-pdf-viewer, use [theme] instead viewOnLoad: 0, cMapPacked: true, cMapUrl: function () { return `${assetsUrl(pdfDefaultOptions.assetsFolder, '/..')}/cmaps/`; }, disableAutoFetch: false, disableFontFace: false, disableRange: false, disableStream: true, isEvalSupported: true, isOffscreenCanvasSupported: true, maxImageSize: -1, pdfBug: false, verbosity: 1, workerPort: null, assetsFolder: 'assets', _internalFilenameSuffix: '.min', sandboxBundleSrc: function () { return pdfDefaultOptions.needsES5 ? `./pdf.sandbox-${getVersionSuffix(assetsUrl(pdfDefaultOptions.assetsFolder))}-es5.mjs` : `./pdf.sandbox-${getVersionSuffix(assetsUrl(pdfDefaultOptions.assetsFolder))}${pdfDefaultOptions._internalFilenameSuffix}.mjs`; }, workerSrc: function () { return pdfDefaultOptions.needsES5 ? `${assetsUrl(pdfDefaultOptions.assetsFolder)}/pdf.worker-${getVersionSuffix(assetsUrl(pdfDefaultOptions.assetsFolder))}-es5.mjs` : `${assetsUrl(pdfDefaultOptions.assetsFolder)}/pdf.worker-${getVersionSuffix(assetsUrl(pdfDefaultOptions.assetsFolder))}${pdfDefaultOptions._internalFilenameSuffix}.mjs`; }, standardFontDataUrl: () => `${assetsUrl(pdfDefaultOptions.assetsFolder, '/..')}/standard_fonts/`, wasmUrl: () => `${assetsUrl(pdfDefaultOptions.assetsFolder, '/..')}/wasm/`, // options specific to ngx-extended-pdf-viewer (as opposed to being used by pdf.js) doubleTapZoomFactor: 'page-width', doubleTapZoomsInHandMode: true, doubleTapZoomsInTextSelectionMode: false, doubleTapResetsZoomOnSecondDoubleTap: false, enableScripting: false, enableCatalogAAJavaScript: false, enableOpenActionJavaScript: false, defaultCacheSize: 50, passwordPrompt: undefined, enableHWA: true, positionPopupDialogsWithJavaScript: true, enablePageReordering: false, pdfBackgroundColor: '', // background color for PDF content rendering }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWRlZmF1bHQtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvb3B0aW9ucy9wZGYtZGVmYXVsdC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxNQUFNLE9BQU8sR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFPLFVBQVcsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQU8sUUFBUyxDQUFDLFlBQVksQ0FBQztBQUNuSSxNQUFNLE1BQU0sR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDMUYsTUFBTSxRQUFRLEdBQUcsT0FBTyxjQUFjLEtBQUssV0FBVyxJQUFJLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLFdBQVcsQ0FBQztBQUV2RyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztBQUNuRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBYztJQUM3QyxJQUFJLE1BQU0sRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDckMsT0FBTyx3QkFBd0IsQ0FBQztLQUNqQztJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVcsRUFBRSxzQkFBc0IsR0FBRyxFQUFFO0lBQ2hFLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN2Qiw2RUFBNkU7UUFDN0UsT0FBTyxHQUFHLENBQUM7S0FDWjtJQUNELE9BQU8sS0FBSyxHQUFHLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFJRCxTQUFTLGlCQUFpQjtJQUN4QixPQUFPLENBQ0wsT0FBTyxPQUFPLEtBQUssV0FBVztRQUM5QixPQUFRLE9BQWUsQ0FBQyxHQUFHLEtBQUssV0FBVztRQUMzQyxDQUFFLE9BQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLE1BQU0sSUFBSyxPQUFlLENBQUMsR0FBRyxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUssT0FBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQzdJLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLElBQUksaUJBQWlCLEVBQUUsRUFBRTtRQUMzRixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsZ0RBQWdEO0lBQ2hELGdFQUFnRTtJQUNoRSxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLENBQUM7SUFDdEYsTUFBTSxRQUFRLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV0RSxJQUFJLEtBQUssSUFBSSxRQUFRLEVBQUU7UUFDckIsT0FBTyxPQUFPLENBQUMsQ0FBQywwQ0FBMEM7S0FDM0Q7SUFFRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLHlDQUF5QztBQUM1RCxDQUFDO0FBRUQseUJBQXlCO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLFFBQVEsRUFBRSxPQUFPLElBQUksTUFBTSxJQUFJLFFBQVE7SUFDdkMsb0JBQW9CLEVBQUUsQ0FBQztJQUN2QixjQUFjLEVBQUUsY0FBYyxDQUFDLFlBQVk7SUFDM0MsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixnQkFBZ0IsRUFBRSxDQUFDO0lBQ25CLFVBQVUsRUFBRSxFQUFFO0lBQ2QsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQixjQUFjLEVBQUUsS0FBSztJQUNyQixpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsVUFBVSxFQUFFLEVBQUU7SUFDZCxxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLHFCQUFxQixFQUFFLEtBQUs7SUFDNUIsZUFBZSxFQUFFLDhCQUE4QjtJQUMvQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIscUJBQXFCLEVBQUUsS0FBSztJQUM1QixrQkFBa0IsRUFBRSxXQUFXO0lBQy9CLGVBQWUsRUFBRSxpQkFBaUIsRUFBRTtJQUNwQyxlQUFlLEVBQUUsS0FBSztJQUN0QixvQkFBb0IsRUFBRSxRQUFRO0lBQzlCLG9CQUFvQixFQUFFLFlBQVk7SUFDbEMsYUFBYSxFQUFFLEtBQUs7SUFDcEIsZUFBZSxFQUFFLEdBQUc7SUFDcEIsY0FBYyxFQUFFLEtBQUs7SUFDckIsaUJBQWlCLEVBQUUsS0FBSztJQUN4QixTQUFTLEVBQUUsSUFBSTtJQUNmLG1CQUFtQixFQUFFLEtBQUs7SUFDMUIsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNwQixnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDcEIsYUFBYSxFQUFFLENBQUM7SUFDaEIsc0ZBQXNGO0lBQ3RGLFVBQVUsRUFBRSxDQUFDO0lBQ2IsVUFBVSxFQUFFLElBQUk7SUFDaEIsT0FBTyxFQUFFO1FBQ1AsT0FBTyxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixlQUFlLEVBQUUsS0FBSztJQUN0QixZQUFZLEVBQUUsS0FBSztJQUNuQixhQUFhLEVBQUUsSUFBSTtJQUNuQixlQUFlLEVBQUUsSUFBSTtJQUNyQiwwQkFBMEIsRUFBRSxJQUFJO0lBQ2hDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDaEIsTUFBTSxFQUFFLEtBQUs7SUFDYixTQUFTLEVBQUUsQ0FBQztJQUNaLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFlBQVksRUFBRSxRQUFRO0lBQ3RCLHVCQUF1QixFQUFFLE1BQU07SUFDL0IsZ0JBQWdCLEVBQUU7UUFDaEIsT0FBTyxpQkFBaUIsQ0FBQyxRQUFRO1lBQy9CLENBQUMsQ0FBQyxpQkFBaUIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVU7WUFDeEYsQ0FBQyxDQUFDLGlCQUFpQixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyx1QkFBdUIsTUFBTSxDQUFDO0lBQ3JJLENBQUM7SUFDRCxTQUFTLEVBQUU7UUFDVCxPQUFPLGlCQUFpQixDQUFDLFFBQVE7WUFDL0IsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxlQUFlLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVO1lBQ2xJLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsZUFBZSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsR0FDcEgsaUJBQWlCLENBQUMsdUJBQ3BCLE1BQU0sQ0FBQztJQUNiLENBQUM7SUFDRCxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoRyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRO0lBRTFFLG1GQUFtRjtJQUNuRixtQkFBbUIsRUFBRSxZQUFZO0lBQ2pDLHdCQUF3QixFQUFFLElBQUk7SUFDOUIsaUNBQWlDLEVBQUUsS0FBSztJQUN4QyxvQ0FBb0MsRUFBRSxLQUFLO0lBQzNDLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLHlCQUF5QixFQUFFLEtBQUs7SUFDaEMsMEJBQTBCLEVBQUUsS0FBSztJQUNqQyxnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLFNBQVMsRUFBRSxJQUFJO0lBQ2Ysa0NBQWtDLEVBQUUsSUFBSTtJQUN4QyxvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLGtCQUFrQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkM7Q0FDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25Nb2RlIH0gZnJvbSAnLi9lZGl0b3ItYW5ub3RhdGlvbnMnO1xuXG5jb25zdCBfaXNJRTExID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyBmYWxzZSA6ICEhKDxhbnk+Z2xvYmFsVGhpcykuTVNJbnB1dE1ldGhvZENvbnRleHQgJiYgISEoPGFueT5kb2N1bWVudCkuZG9jdW1lbnRNb2RlO1xuY29uc3QgaXNFZGdlID0gdHlwZW9mIG5hdmlnYXRvciA9PT0gJ3VuZGVmaW5lZCcgfHwgL0VkZ2VcXC9cXGQuL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbmNvbnN0IG5lZWRzRVM1ID0gdHlwZW9mIFJlYWRhYmxlU3RyZWFtID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgUHJvbWlzZVsnYWxsU2V0dGxlZCddID09PSAndW5kZWZpbmVkJztcblxuZXhwb3J0IGNvbnN0IHBkZmpzVmVyc2lvbiA9ICc1LjQuMTEwMCc7XG5leHBvcnQgY29uc3QgcGRmanNCbGVlZGluZ0VkZ2VWZXJzaW9uID0gJzUuNC4xMTAxJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzaW9uU3VmZml4KGZvbGRlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGZvbGRlcj8uaW5jbHVkZXMoJ2JsZWVkaW5nLWVkZ2UnKSkge1xuICAgIHJldHVybiBwZGZqc0JsZWVkaW5nRWRnZVZlcnNpb247XG4gIH1cbiAgcmV0dXJuIHBkZmpzVmVyc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2V0c1VybCh1cmw6IHN0cmluZywgcG9zdGZpeElmUGF0aElzUmVsYXRpdiA9ICcnKTogc3RyaW5nIHtcbiAgaWYgKHVybC5pbmNsdWRlcygnOi8vJykpIHtcbiAgICAvLyB0aGUgYXNzZXRzIGZvbGRlciBpcyBvbiBhbiBhYnNvbHV0ZSBwYXRoIChsaWtlIGh0dHBzOi8vZXhhbXBsZS5jb20vYXNzZXRzKVxuICAgIHJldHVybiB1cmw7XG4gIH1cbiAgcmV0dXJuIGAuLyR7dXJsICsgcG9zdGZpeElmUGF0aElzUmVsYXRpdn1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCbGVlZGluZ0VkZ2UoKTogYm9vbGVhbiB7XG4gIHJldHVybiBwZGZEZWZhdWx0T3B0aW9ucy5hc3NldHNGb2xkZXI/LmluY2x1ZGVzKCdibGVlZGluZy1lZGdlJyk7XG59XG5cbmRlY2xhcmUgY29uc3QgcHJvY2VzczogYW55O1xuXG5mdW5jdGlvbiBpc1Rlc3RFbnZpcm9ubWVudCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2YgKHByb2Nlc3MgYXMgYW55KS5lbnYgIT09ICd1bmRlZmluZWQnICYmXG4gICAgKChwcm9jZXNzIGFzIGFueSkuZW52Lk5PREVfRU5WID09PSAndGVzdCcgfHwgKHByb2Nlc3MgYXMgYW55KS5lbnYuSkVTVF9XT1JLRVJfSUQgIT09IHVuZGVmaW5lZCB8fCAocHJvY2VzcyBhcyBhbnkpLmVudi5WSVRFU1QgIT09IHVuZGVmaW5lZClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhZmVDYW52YXNTaXplKCk6IG51bWJlciB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnIHx8IGlzVGVzdEVudmlyb25tZW50KCkpIHtcbiAgICByZXR1cm4gNDA5NjtcbiAgfVxuXG4gIC8vIFVzZSBQREYuanMgZGVmYXVsdHMgZm9yIG1heGltdW0gY29tcGF0aWJpbGl0eVxuICAvLyBUaGUgSU9TQ2FudmFzT3B0aW1pemF0aW9uU2VydmljZSBoYW5kbGVzIGR5bmFtaWMgb3B0aW1pemF0aW9uXG4gIGNvbnN0IGlzSU9TID0gL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgISgnTVNTdHJlYW0nIGluIHdpbmRvdyk7XG4gIGNvbnN0IGlzTW9iaWxlID0gL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuICBpZiAoaXNJT1MgfHwgaXNNb2JpbGUpIHtcbiAgICByZXR1cm4gNTI0Mjg4MDsgLy8gUERGLmpzIGlPUy9BbmRyb2lkIGxpbWl0ICg1IG1lZ2FwaXhlbHMpXG4gIH1cblxuICByZXR1cm4gMzM1NTQ0MzI7IC8vIFBERi5qcyBkZXNrdG9wIGRlZmF1bHQgKDMyIG1lZ2FwaXhlbHMpXG59XG5cbi8vIHNvbmFyIGlnbm9yZSBuZXh0IGxpbmVcbmV4cG9ydCBjb25zdCBwZGZEZWZhdWx0T3B0aW9ucyA9IHtcbiAgbmVlZHNFUzU6IF9pc0lFMTEgfHwgaXNFZGdlIHx8IG5lZWRzRVM1LFxuICBhbm5vdGF0aW9uRWRpdG9yTW9kZTogMCxcbiAgYW5ub3RhdGlvbk1vZGU6IEFubm90YXRpb25Nb2RlLkVOQUJMRV9GT1JNUyxcbiAgZGVmYXVsdFpvb21EZWxheTogNDAwLCAvLyBtaWxsaXNlY29uZHNcbiAgY3Vyc29yVG9vbE9uTG9hZDogMCxcbiAgZGVmYXVsdFVybDogJycsXG4gIGRlZmF1bHRab29tVmFsdWU6ICcnLFxuICBkaXNhYmxlSGlzdG9yeTogZmFsc2UsXG4gIGRpc2FibGVQYWdlTGFiZWxzOiBmYWxzZSxcbiAgZW5hYmxlQ29tbWVudDogZmFsc2UsXG4gIGVuYWJsZVBlcm1pc3Npb25zOiBmYWxzZSxcbiAgZG9jQmFzZVVybDogJycsXG4gIGVuYWJsZVByaW50QXV0b1JvdGF0ZTogdHJ1ZSxcbiAgZW5hYmxlU2lnbmF0dXJlRWRpdG9yOiBmYWxzZSxcbiAgZXh0ZXJuYWxMaW5rUmVsOiAnbm9vcGVuZXIgbm9yZWZlcnJlciBub2ZvbGxvdycsXG4gIGV4dGVybmFsTGlua1RhcmdldDogMCxcbiAgZmluZENvbnRyb2xsZXI6IHVuZGVmaW5lZCwgLy8gbXVzdCBleHRlbmQgUERGRmluZENvbnRyb2xsZXJcbiAgaGlzdG9yeVVwZGF0ZVVybDogZmFsc2UsXG4gIGlnbm9yZURlc3RpbmF0aW9uWm9vbTogZmFsc2UsXG4gIGltYWdlUmVzb3VyY2VzUGF0aDogJy4vaW1hZ2VzLycsXG4gIG1heENhbnZhc1BpeGVsczogZ2V0U2FmZUNhbnZhc1NpemUoKSxcbiAgZm9yY2VQYWdlQ29sb3JzOiBmYWxzZSxcbiAgcGFnZUNvbG9yc0JhY2tncm91bmQ6ICdDYW52YXMnLFxuICBwYWdlQ29sb3JzRm9yZWdyb3VuZDogJ0NhbnZhc1RleHQnLFxuICBwZGZCdWdFbmFibGVkOiBmYWxzZSxcbiAgcHJpbnRSZXNvbHV0aW9uOiAxNTAsXG4gIHJhbmdlQ2h1bmtTaXplOiA2NTUzNixcbiAgcmVtb3ZlUGFnZUJvcmRlcnM6IGZhbHNlLFxuICBlbmFibGVYZmE6IHRydWUsXG4gIGZvbnRFeHRyYVByb3BlcnRpZXM6IGZhbHNlLFxuICBzaWRlYmFyVmlld09uTG9hZDogLTEsXG4gIHNjcm9sbE1vZGVPbkxvYWQ6IC0xLFxuICBzcHJlYWRNb2RlT25Mb2FkOiAtMSxcbiAgdGV4dExheWVyTW9kZTogMSxcbiAgLy8gdmlld2VyQ3NzVGhlbWU6IDAsIC8vIG5vdCBzdXBwb3J0ZWQgYnkgbmd4LWV4dGVuZGVkLXBkZi12aWV3ZXIsIHVzZSBbdGhlbWVdIGluc3RlYWRcbiAgdmlld09uTG9hZDogMCxcbiAgY01hcFBhY2tlZDogdHJ1ZSxcbiAgY01hcFVybDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBgJHthc3NldHNVcmwocGRmRGVmYXVsdE9wdGlvbnMuYXNzZXRzRm9sZGVyLCAnLy4uJyl9L2NtYXBzL2A7XG4gIH0sXG4gIGRpc2FibGVBdXRvRmV0Y2g6IGZhbHNlLFxuICBkaXNhYmxlRm9udEZhY2U6IGZhbHNlLFxuICBkaXNhYmxlUmFuZ2U6IGZhbHNlLFxuICBkaXNhYmxlU3RyZWFtOiB0cnVlLFxuICBpc0V2YWxTdXBwb3J0ZWQ6IHRydWUsXG4gIGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiB0cnVlLFxuICBtYXhJbWFnZVNpemU6IC0xLFxuICBwZGZCdWc6IGZhbHNlLFxuICB2ZXJib3NpdHk6IDEsXG4gIHdvcmtlclBvcnQ6IG51bGwsXG4gIGFzc2V0c0ZvbGRlcjogJ2Fzc2V0cycsXG4gIF9pbnRlcm5hbEZpbGVuYW1lU3VmZml4OiAnLm1pbicsIC8vIGRvbid0IG1vZGlmeSB0aGlzIC0gaXQncyBhbiBpbnRlcm5hbCBmaWVsZFxuICBzYW5kYm94QnVuZGxlU3JjOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHBkZkRlZmF1bHRPcHRpb25zLm5lZWRzRVM1XG4gICAgICA/IGAuL3BkZi5zYW5kYm94LSR7Z2V0VmVyc2lvblN1ZmZpeChhc3NldHNVcmwocGRmRGVmYXVsdE9wdGlvbnMuYXNzZXRzRm9sZGVyKSl9LWVzNS5tanNgXG4gICAgICA6IGAuL3BkZi5zYW5kYm94LSR7Z2V0VmVyc2lvblN1ZmZpeChhc3NldHNVcmwocGRmRGVmYXVsdE9wdGlvbnMuYXNzZXRzRm9sZGVyKSl9JHtwZGZEZWZhdWx0T3B0aW9ucy5faW50ZXJuYWxGaWxlbmFtZVN1ZmZpeH0ubWpzYDtcbiAgfSxcbiAgd29ya2VyU3JjOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHBkZkRlZmF1bHRPcHRpb25zLm5lZWRzRVM1XG4gICAgICA/IGAke2Fzc2V0c1VybChwZGZEZWZhdWx0T3B0aW9ucy5hc3NldHNGb2xkZXIpfS9wZGYud29ya2VyLSR7Z2V0VmVyc2lvblN1ZmZpeChhc3NldHNVcmwocGRmRGVmYXVsdE9wdGlvbnMuYXNzZXRzRm9sZGVyKSl9LWVzNS5tanNgXG4gICAgICA6IGAke2Fzc2V0c1VybChwZGZEZWZhdWx0T3B0aW9ucy5hc3NldHNGb2xkZXIpfS9wZGYud29ya2VyLSR7Z2V0VmVyc2lvblN1ZmZpeChhc3NldHNVcmwocGRmRGVmYXVsdE9wdGlvbnMuYXNzZXRzRm9sZGVyKSl9JHtcbiAgICAgICAgICBwZGZEZWZhdWx0T3B0aW9ucy5faW50ZXJuYWxGaWxlbmFtZVN1ZmZpeFxuICAgICAgICB9Lm1qc2A7XG4gIH0sXG4gIHN0YW5kYXJkRm9udERhdGFVcmw6ICgpID0+IGAke2Fzc2V0c1VybChwZGZEZWZhdWx0T3B0aW9ucy5hc3NldHNGb2xkZXIsICcvLi4nKX0vc3RhbmRhcmRfZm9udHMvYCxcbiAgd2FzbVVybDogKCkgPT4gYCR7YXNzZXRzVXJsKHBkZkRlZmF1bHRPcHRpb25zLmFzc2V0c0ZvbGRlciwgJy8uLicpfS93YXNtL2AsXG5cbiAgLy8gb3B0aW9ucyBzcGVjaWZpYyB0byBuZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlciAoYXMgb3Bwb3NlZCB0byBiZWluZyB1c2VkIGJ5IHBkZi5qcylcbiAgZG91YmxlVGFwWm9vbUZhY3RvcjogJ3BhZ2Utd2lkdGgnLFxuICBkb3VibGVUYXBab29tc0luSGFuZE1vZGU6IHRydWUsXG4gIGRvdWJsZVRhcFpvb21zSW5UZXh0U2VsZWN0aW9uTW9kZTogZmFsc2UsXG4gIGRvdWJsZVRhcFJlc2V0c1pvb21PblNlY29uZERvdWJsZVRhcDogZmFsc2UsXG4gIGVuYWJsZVNjcmlwdGluZzogZmFsc2UsXG4gIGVuYWJsZUNhdGFsb2dBQUphdmFTY3JpcHQ6IGZhbHNlLFxuICBlbmFibGVPcGVuQWN0aW9uSmF2YVNjcmlwdDogZmFsc2UsXG4gIGRlZmF1bHRDYWNoZVNpemU6IDUwLFxuICBwYXNzd29yZFByb21wdDogdW5kZWZpbmVkLFxuICBlbmFibGVIV0E6IHRydWUsIC8vIGVuYWJsZSBoYXJkd2FyZSBhY2NlbGVyYXRpb24uIEFjdGl2ZSBzaW5jZSBwZGYuanMgNC40LlxuICBwb3NpdGlvblBvcHVwRGlhbG9nc1dpdGhKYXZhU2NyaXB0OiB0cnVlLFxuICBlbmFibGVQYWdlUmVvcmRlcmluZzogZmFsc2UsIC8vIGFsbG93cyB1c2VycyB0byByZW9yZGVyIHBhZ2VzIGJ5IGRyYWdnaW5nIHRodW1ibmFpbHMsXG4gIHBkZkJhY2tncm91bmRDb2xvcjogJycsIC8vIGJhY2tncm91bmQgY29sb3IgZm9yIFBERiBjb250ZW50IHJlbmRlcmluZ1xufTtcbiJdfQ==