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.

256 lines 22.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @return {?} */ function rtl() { /** @type {?} */ let element = (/** @type {?} */ (document.getElementsByClassName('toolbar')[0])); while (element) { if (element.dir !== '') { return element.dir === 'rtl'; } if (!element.parentElement) { break; } element = element.parentElement; } return false; } /** * @param {?} width * @return {?} */ export function resizeUpTo535px(width) { /** @type {?} */ const tinyElement = document.getElementById('scaleSelectContainer'); /** @type {?} */ const tiny = (/** @type {?} */ (tinyElement)); if (width < 535) { // not perfect, but good first approximation tiny.classList.add('hidden'); } else { tiny.classList.remove('hidden'); } } /** * @param {?} container * @param {?} width * @return {?} */ export function resizeUpTo640px(container, width) { /** @type {?} */ const smallElements = container.getElementsByClassName('hiddenSmallView'); for (let i = 0; i < smallElements.length; i++) { /** @type {?} */ const elt = (/** @type {?} */ (smallElements[i])); if (width < 640) { elt.classList.add('hidden'); } else { elt.classList.remove('hidden'); } } /** @type {?} */ const visibleSmallViewElements = container.getElementsByClassName('visibleSmallView'); for (let i = 0; i < visibleSmallViewElements.length; i++) { /** @type {?} */ const elt = (/** @type {?} */ (visibleSmallViewElements[i])); if (width < 640) { elt.classList.remove('hidden'); } else { elt.classList.add('hidden'); } } /** @type {?} */ const toolbarButtonSpacer = container.getElementsByClassName('toolbarButtonSpacer'); for (let i = 0; i < toolbarButtonSpacer.length; i++) { /** @type {?} */ const elt = (/** @type {?} */ (toolbarButtonSpacer[i])); if (width < 640) { elt.classList.add('below640px'); } else { elt.classList.remove('below640px'); } } /** @type {?} */ const findbar = document.getElementsByClassName('findbar'); for (let i = 0; i < findbar.length; i++) { /** @type {?} */ const elt = (/** @type {?} */ (findbar[i])); if (width < 640) { elt.classList.add('below640px'); } else { elt.classList.remove('below640px'); } } } /** * @param {?} container * @param {?} width * @return {?} */ export function resizeUpTo700px(container, width) { /** @type {?} */ const mediumElements = container.getElementsByClassName('hiddenMediumView'); for (let i = 0; i < mediumElements.length; i++) { /** @type {?} */ const elt = (/** @type {?} */ (mediumElements[i])); if (width < 700) { elt.classList.add('hidden'); } else { elt.classList.remove('hidden'); } } // #103 /** @type {?} */ const visibleMediumElements = container.getElementsByClassName('visibleMediumView'); for (let i = 0; i < visibleMediumElements.length; i++) { /** @type {?} */ const elt = (/** @type {?} */ (visibleMediumElements[i])); if (width < 700) { elt.classList.remove('hidden'); } else { elt.classList.add('hidden'); } } } /** * @param {?} width * @return {?} */ export function resizeUpTo900px(width) { /** @type {?} */ const elt = document.getElementById('toolbarViewerMiddle'); if (elt) { if (width < 900) { elt.classList.add('toolbarViewerMiddleBelow900px'); } else { elt.classList.remove('toolbarViewerMiddleBelow900px'); } } } /** * @param {?} width * @return {?} */ export function resizeUpTo840px(width) { /** @type {?} */ const elt = document.getElementsByClassName('zoom')[0]; if (elt) { if (width < 840) { elt.classList.add('below840px'); } else { elt.classList.remove('below840px'); } } } /** * @param {?} container * @param {?} width * @return {?} */ export function resizeUpTo770px(container, width) { /** @type {?} */ let elt = document.getElementsByClassName('zoom')[0]; if (elt) { if (width < 770) { elt.classList.add('below770px'); } else { elt.classList.remove('below770px'); } } /** @type {?} */ const hiddenLargeElements = container.getElementsByClassName('hiddenLargeView'); for (let i = 0; i < hiddenLargeElements.length; i++) { elt = (/** @type {?} */ (hiddenLargeElements[i])); if (width < 770) { elt.classList.add('hidden'); } else { elt.classList.remove('hidden'); } } /** @type {?} */ const visibleLargeElements = container.getElementsByClassName('visibleLargeView'); for (let i = 0; i < visibleLargeElements.length; i++) { elt = (/** @type {?} */ (visibleLargeElements[i])); if (width < 770) { elt.classList.remove('hidden'); } else { elt.classList.add('hidden'); } } } /** * @return {?} */ export function removeDynamicCSS() { /** @type {?} */ const classesToRemove = ['toolbarViewerMiddleBelow900px', 'below840px', 'below770px', 'below700px', 'below640px']; /** @type {?} */ const elt = document.getElementsByClassName('zoom')[0]; if (elt) { classesToRemove.forEach((/** * @param {?} c * @return {?} */ c => { /** @type {?} */ const parents = elt.getElementsByClassName(c); if (parents) { for (let i = 0; i < parents.length; i++) { /** @type {?} */ const element = parents.item(i); if (element) { element.classList.remove(c); } } } })); /** @type {?} */ const tinyElement = document.getElementById('scaleSelectContainer'); if (tinyElement) { tinyElement.classList.remove('hidden'); } /** @type {?} */ const classesToRemoveHiddenFrom = [ 'hiddenSmallView', 'visibleSmallView', 'hiddenMediumView', 'visibleMediumView', 'hiddenLargeView', 'visibleLargeView' ]; classesToRemoveHiddenFrom.forEach((/** * @param {?} c * @return {?} */ c => { /** @type {?} */ const parents = elt.getElementsByClassName(c); if (parents) { for (let i = 0; i < parents.length; i++) { /** @type {?} */ const element = parents.item(i); if (element) { element.classList.remove('hidden'); } } } })); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzcG9uc2l2ZUNTU1NpbXVsYXRpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci8iLCJzb3VyY2VzIjpbImxpYi9SZXNwb25zaXZlQ1NTU2ltdWxhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsU0FBUyxHQUFHOztRQUNOLE9BQU8sR0FBRyxtQkFBQSxRQUFRLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQWU7SUFDMUUsT0FBTyxPQUFPLEVBQUU7UUFDZCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFO1lBQ3RCLE9BQU8sT0FBTyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUMxQixNQUFNO1NBQ1A7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztLQUNqQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWE7O1VBQ3JDLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDOztVQUM3RCxJQUFJLEdBQUcsbUJBQUEsV0FBVyxFQUFlO0lBQ3ZDLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtRQUNmLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM5QjtTQUFNO1FBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDakM7QUFDSCxDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQXNCLEVBQUUsS0FBYTs7VUFDN0QsYUFBYSxHQUFHLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQztJQUN6RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs7Y0FDdkMsR0FBRyxHQUFHLG1CQUFBLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBZTtRQUMzQyxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDZixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM3QjthQUFNO1lBQ0wsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEM7S0FDRjs7VUFDSyx3QkFBd0IsR0FBRyxTQUFTLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUM7SUFDckYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs7Y0FDbEQsR0FBRyxHQUFHLG1CQUFBLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxFQUFlO1FBQ3RELElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNmLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDTCxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM3QjtLQUNGOztVQUNLLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQztJQUNuRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztjQUM3QyxHQUFHLEdBQUcsbUJBQUEsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQWU7UUFDakQsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNMLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BDO0tBQ0Y7O1VBQ0ssT0FBTyxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUM7SUFDMUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2NBQ2pDLEdBQUcsR0FBRyxtQkFBQSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQWU7UUFDckMsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNMLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BDO0tBQ0Y7QUFDSCxDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQXNCLEVBQUUsS0FBYTs7VUFDN0QsY0FBYyxHQUFHLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQztJQUMzRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs7Y0FDeEMsR0FBRyxHQUFHLG1CQUFBLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBZTtRQUM1QyxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDZixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM3QjthQUFNO1lBQ0wsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEM7S0FDRjs7O1VBRUsscUJBQXFCLEdBQUcsU0FBUyxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDO0lBQ25GLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2NBQy9DLEdBQUcsR0FBRyxtQkFBQSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBZTtRQUNuRCxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDZixHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoQzthQUFNO1lBQ0wsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0I7S0FDRjtBQUNILENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhOztVQUNyQyxHQUFHLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQztJQUMxRCxJQUFJLEdBQUcsRUFBRTtRQUNQLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNmLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNMLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDdkQ7S0FDRjtBQUNILENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhOztVQUNyQyxHQUFHLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxJQUFJLEdBQUcsRUFBRTtRQUNQLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNmLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDTCxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwQztLQUNGO0FBQ0gsQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxTQUFzQixFQUFFLEtBQWE7O1FBQy9ELEdBQUcsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksR0FBRyxFQUFFO1FBQ1AsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNMLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BDO0tBQ0Y7O1VBQ0ssbUJBQW1CLEdBQUcsU0FBUyxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDO0lBQy9FLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkQsR0FBRyxHQUFHLG1CQUFBLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFlLENBQUM7UUFDNUMsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0I7YUFBTTtZQUNMLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hDO0tBQ0Y7O1VBRUssb0JBQW9CLEdBQUcsU0FBUyxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDO0lBQ2pGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDcEQsR0FBRyxHQUFHLG1CQUFBLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFlLENBQUM7UUFDN0MsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNMLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzdCO0tBQ0Y7QUFDSCxDQUFDOzs7O0FBRUQsTUFBTSxVQUFVLGdCQUFnQjs7VUFDeEIsZUFBZSxHQUFHLENBQUMsK0JBQStCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDOztVQUMzRyxHQUFHLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxJQUFJLEdBQUcsRUFBRTtRQUNQLGVBQWUsQ0FBQyxPQUFPOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUU7O2tCQUNwQixPQUFPLEdBQUcsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUM3QyxJQUFJLE9BQU8sRUFBRTtnQkFDWCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs7MEJBQ2pDLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxPQUFPLEVBQUU7d0JBQ1gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzdCO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLEVBQUMsQ0FBQzs7Y0FFRyxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQztRQUNuRSxJQUFJLFdBQVcsRUFBRTtZQUNmLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hDOztjQUNLLHlCQUF5QixHQUFHO1lBQ2hDLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsa0JBQWtCO1NBQ25CO1FBQ0QseUJBQXlCLENBQUMsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFOztrQkFDOUIsT0FBTyxHQUFHLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7OzBCQUNqQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQy9CLElBQUksT0FBTyxFQUFFO3dCQUNYLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNwQztpQkFDRjthQUNGO1FBQ0gsQ0FBQyxFQUFDLENBQUM7S0FDSjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBydGwoKTogYm9vbGVhbiB7XG4gIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndG9vbGJhcicpWzBdIGFzIEhUTUxFbGVtZW50O1xuICB3aGlsZSAoZWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50LmRpciAhPT0gJycpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmRpciA9PT0gJ3J0bCc7XG4gICAgfVxuICAgIGlmICghZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpemVVcFRvNTM1cHgod2lkdGg6IG51bWJlcikge1xuICBjb25zdCB0aW55RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2FsZVNlbGVjdENvbnRhaW5lcicpO1xuICBjb25zdCB0aW55ID0gdGlueUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gIGlmICh3aWR0aCA8IDUzNSkge1xuICAgIC8vIG5vdCBwZXJmZWN0LCBidXQgZ29vZCBmaXJzdCBhcHByb3hpbWF0aW9uXG4gICAgdGlueS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgfSBlbHNlIHtcbiAgICB0aW55LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpemVVcFRvNjQwcHgoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgd2lkdGg6IG51bWJlcikge1xuICBjb25zdCBzbWFsbEVsZW1lbnRzID0gY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hpZGRlblNtYWxsVmlldycpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNtYWxsRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBlbHQgPSBzbWFsbEVsZW1lbnRzW2ldIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh3aWR0aCA8IDY0MCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc2libGVTbWFsbFZpZXdFbGVtZW50cyA9IGNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd2aXNpYmxlU21hbGxWaWV3Jyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlzaWJsZVNtYWxsVmlld0VsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZWx0ID0gdmlzaWJsZVNtYWxsVmlld0VsZW1lbnRzW2ldIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh3aWR0aCA8IDY0MCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHRvb2xiYXJCdXR0b25TcGFjZXIgPSBjb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndG9vbGJhckJ1dHRvblNwYWNlcicpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRvb2xiYXJCdXR0b25TcGFjZXIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBlbHQgPSB0b29sYmFyQnV0dG9uU3BhY2VyW2ldIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh3aWR0aCA8IDY0MCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5hZGQoJ2JlbG93NjQwcHgnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWx0LmNsYXNzTGlzdC5yZW1vdmUoJ2JlbG93NjQwcHgnKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZmluZGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZpbmRiYXInKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaW5kYmFyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZWx0ID0gZmluZGJhcltpXSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAod2lkdGggPCA2NDApIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QuYWRkKCdiZWxvdzY0MHB4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QucmVtb3ZlKCdiZWxvdzY0MHB4Jyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpemVVcFRvNzAwcHgoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgd2lkdGg6IG51bWJlcikge1xuICBjb25zdCBtZWRpdW1FbGVtZW50cyA9IGNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoaWRkZW5NZWRpdW1WaWV3Jyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWVkaXVtRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBlbHQgPSBtZWRpdW1FbGVtZW50c1tpXSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAod2lkdGggPCA3MDApIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWx0LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH1cbiAgfVxuICAvLyAjMTAzXG4gIGNvbnN0IHZpc2libGVNZWRpdW1FbGVtZW50cyA9IGNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd2aXNpYmxlTWVkaXVtVmlldycpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZpc2libGVNZWRpdW1FbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGVsdCA9IHZpc2libGVNZWRpdW1FbGVtZW50c1tpXSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAod2lkdGggPCA3MDApIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWx0LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzaXplVXBUbzkwMHB4KHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgY29uc3QgZWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xiYXJWaWV3ZXJNaWRkbGUnKTtcbiAgaWYgKGVsdCkge1xuICAgIGlmICh3aWR0aCA8IDkwMCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5hZGQoJ3Rvb2xiYXJWaWV3ZXJNaWRkbGVCZWxvdzkwMHB4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QucmVtb3ZlKCd0b29sYmFyVmlld2VyTWlkZGxlQmVsb3c5MDBweCcpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzaXplVXBUbzg0MHB4KHdpZHRoOiBudW1iZXIpIHtcbiAgY29uc3QgZWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnem9vbScpWzBdO1xuICBpZiAoZWx0KSB7XG4gICAgaWYgKHdpZHRoIDwgODQwKSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LmFkZCgnYmVsb3c4NDBweCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LnJlbW92ZSgnYmVsb3c4NDBweCcpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzaXplVXBUbzc3MHB4KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIHdpZHRoOiBudW1iZXIpIHtcbiAgbGV0IGVsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3pvb20nKVswXTtcbiAgaWYgKGVsdCkge1xuICAgIGlmICh3aWR0aCA8IDc3MCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5hZGQoJ2JlbG93NzcwcHgnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWx0LmNsYXNzTGlzdC5yZW1vdmUoJ2JlbG93NzcwcHgnKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgaGlkZGVuTGFyZ2VFbGVtZW50cyA9IGNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoaWRkZW5MYXJnZVZpZXcnKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoaWRkZW5MYXJnZUVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZWx0ID0gaGlkZGVuTGFyZ2VFbGVtZW50c1tpXSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAod2lkdGggPCA3NzApIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWx0LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHZpc2libGVMYXJnZUVsZW1lbnRzID0gY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Zpc2libGVMYXJnZVZpZXcnKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aXNpYmxlTGFyZ2VFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGVsdCA9IHZpc2libGVMYXJnZUVsZW1lbnRzW2ldIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh3aWR0aCA8IDc3MCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEeW5hbWljQ1NTKCkge1xuICBjb25zdCBjbGFzc2VzVG9SZW1vdmUgPSBbJ3Rvb2xiYXJWaWV3ZXJNaWRkbGVCZWxvdzkwMHB4JywgJ2JlbG93ODQwcHgnLCAnYmVsb3c3NzBweCcsICdiZWxvdzcwMHB4JywgJ2JlbG93NjQwcHgnXTtcbiAgY29uc3QgZWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnem9vbScpWzBdO1xuICBpZiAoZWx0KSB7XG4gICAgY2xhc3Nlc1RvUmVtb3ZlLmZvckVhY2goYyA9PiB7XG4gICAgICBjb25zdCBwYXJlbnRzID0gZWx0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYyk7XG4gICAgICBpZiAocGFyZW50cykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gcGFyZW50cy5pdGVtKGkpO1xuICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCB0aW55RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2FsZVNlbGVjdENvbnRhaW5lcicpO1xuICAgIGlmICh0aW55RWxlbWVudCkge1xuICAgICAgdGlueUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzZXNUb1JlbW92ZUhpZGRlbkZyb20gPSBbXG4gICAgICAnaGlkZGVuU21hbGxWaWV3JyxcbiAgICAgICd2aXNpYmxlU21hbGxWaWV3JyxcbiAgICAgICdoaWRkZW5NZWRpdW1WaWV3JyxcbiAgICAgICd2aXNpYmxlTWVkaXVtVmlldycsXG4gICAgICAnaGlkZGVuTGFyZ2VWaWV3JyxcbiAgICAgICd2aXNpYmxlTGFyZ2VWaWV3J1xuICAgIF07XG4gICAgY2xhc3Nlc1RvUmVtb3ZlSGlkZGVuRnJvbS5mb3JFYWNoKGMgPT4ge1xuICAgICAgY29uc3QgcGFyZW50cyA9IGVsdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGMpO1xuICAgICAgaWYgKHBhcmVudHMpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJlbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IHBhcmVudHMuaXRlbShpKTtcbiAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19