1var module_363304306920=void(()=>{let pdfjsPromise;const getTouchDistance=touches=>{const dx=touches[0].clientX-touches[1].clientX,dy=touches[0].clientY-touches[1].clientY;return Math.hypot(dx,dy)},initViewer=viewer=>{const pdfUrl=viewer.dataset.pdfUrl;if(!pdfUrl)return;const canvasWrap=viewer.querySelector(".ap-pdf-canvas-wrap"),canvasList=viewer.querySelector(".ap-pdf-canvas-list"),statusEl=viewer.querySelector(".ap-pdf-status"),totalEl=viewer.querySelector("[data-pdf-total]"),zoomEl=viewer.querySelector("[data-pdf-zoom]"),zoomInBtn=viewer.querySelector("[data-pdf-action='zoom-in']"),zoomOutBtn=viewer.querySelector("[data-pdf-action='zoom-out']"),prevBtn=viewer.querySelector("[data-pdf-action='prev-page']"),nextBtn=viewer.querySelector("[data-pdf-action='next-page']"),pageInput=viewer.querySelector("[data-pdf-page-input]"),thumbsToggleBtn=viewer.querySelector("[data-pdf-action='toggle-thumbs']"),thumbsWrap=viewer.querySelector(".ap-pdf-thumbs"),thumbsList=viewer.querySelector(".ap-pdf-thumbs-list");if(!canvasList||!canvasWrap)return;let pdfDoc=null,zoom=1,renderToken=0,resizeTimer=null,pageObserver=null,currentPage=1,pinchState=null;const setStatus=message=>{statusEl&&(message?(statusEl.textContent=message,statusEl.hidden=!1):(statusEl.textContent="",statusEl.hidden=!0))},updateZoomLabel=(value=zoom)=>{zoomEl&&(zoomEl.textContent=`${Math.round(100*value)}%`)},clampZoom=value=>Math.min(3,Math.max(.5,value)),setCurrentPage=pageNum=>{const nextPage=Math.min(Math.max(pageNum,1),pdfDoc?pdfDoc.numPages:1);currentPage=nextPage,pageInput&&(pageInput.value=`${nextPage}`),thumbsList&&thumbsList.querySelectorAll(".ap-pdf-thumb").forEach(thumb=>{const thumbPage=Number(thumb.dataset.page||0);thumb.classList.toggle("is-active",thumbPage===nextPage)})},scrollToPage=(pageNum,behavior="smooth")=>{if(!canvasWrap)return;const safePage=Math.min(Math.max(pageNum,1),pdfDoc?pdfDoc.numPages:1),target=canvasList.querySelector(`[data-
1page="${safePage}"]`);if(!target)return void setCurrentPage(safePage);const wrapRect=canvasWrap.getBoundingClientRect(),offset=target.getBoundingClientRect().top-wrapRect.top+canvasWrap.scrollTop-8;canvasWrap.scrollTo({top:offset,behavior:behavior}),setCurrentPage(safePage)},renderPage=async(pageNum,token)=>{if(!pdfDoc||token!==renderToken)return;const page=await pdfDoc.getPage(pageNum),viewport=page.getViewport({scale:1}),scale=(el=>{const styles=window.getComputedStyle(el),paddingLeft=parseFloat(styles.paddingLeft)||0,paddingRight=parseFloat(styles.paddingRight)||0;return Math.max(1,el.clientWidth-paddingLeft-paddingRight)})(canvasList)/viewport.width*zoom,scaledViewport=page.getViewport({scale:scale}),outputScale=Math.min(window.devicePixelRatio||1,2),renderViewport=page.getViewport({scale:scale*outputScale}),pageWrap=document.createElement("div");pageWrap.className="ap-pdf-page-wrap",pageWrap.dataset.page=`${pageNum}`;const canvas=document.createElement("canvas");canvas.className="ap-pdf-page";const context=canvas.getContext("2d");canvas.width=Math.floor(renderViewport.width),canvas.height=Math.floor(renderViewport.height),canvas.style.width=`${scaledViewport.width}px`,canvas.style.height=`${scaledViewport.height}px`,pageWrap.appendChild(canvas),canvasList.appendChild(pageWrap);const renderTask=page.render({canvasContext:context,viewport:renderViewport});await renderTask.promise},renderAllPages=async()=>{if(!pdfDoc)return;const token=++renderToken;canvasList.innerHTML="",canvasList.style.transform="",canvasList.style.transformOrigin="",canvasList.classList.remove("is-pinching"),updateZoomLabel(),setStatus("Rendering pages...");for(let i=1;i<=pdfDoc.numPages;i+=1){if(token!==renderToken)return;await renderPage(i,token)}token===renderToken&&(setStatus(""),canvasWrap&&(pageObserver&&(pageObserver.disconnect(),pageObserver=null),pageObserver=new IntersectionObserver(entries=>{let bestEntry=null;if(entries.forEach(entry=>{entry.isIntersecting&&(!bestEntry||entry.intersectionRatio>bestEntry.intersectionRatio)&&(bestEntry=entry)}),bestEntry){const pageNum=Number(bestEntry.target.dataset.page||1);setCurrentPage(pageNum)}},{root:canvasWrap,threshold:[.6]}),canvasList.querySelectorAll("[data-page]").forEach(pageEl=>{pageObserver.observe(pageEl)})),setCurrentPage(currentPage))},handleResize=()=>{pdfDoc&&(resizeTimer&&window.clearTimeout(resizeTimer),resizeTimer=window.setTimeout(()=>{renderAllPages()},150))},handlePinchEnd=()=>{pinchState&&(zoom=clampZoom(pinchState.previewZoom||pinchState.startZoom),pinchState=null,renderAllPages())};zoomInBtn&&zoomInBtn.addEventListener("click",()=>{zoom=clampZoom(zoom+.2),renderAllPages()}),zoomOutBtn&&zoomOutBtn.addEventListener("click",()=>{zoom=clampZoom(zoom-.2),renderAllPages()}),prevBtn&&prevBtn.addEventListener("click",()=>{scrollToPage(currentPage-1)}),nextBtn&&nextBtn.addEventListener("click",()=>{scrollToPage(currentPage+1)}),pageInput&&pageInput.addEventListener("change",()=>{const value=Number(pageInput.value||1);scrollToPage(value)}),thumbsToggleBtn&&thumbsWrap&&(thumbsToggleBtn.setAttribute("aria-pressed","false"),thumbsToggleBtn.addEventListener("click",()=>{const nextState=!thumbsWrap.hidden;thumbsWrap.hidden=nextState,thumbsToggleBtn.setAttribute("aria-pressed",String(!nextState))})),canvasWrap.addEventListener("touchstart",event=>{2===event.touches.length&&(pinchState={startDistance:getTouchDistance(event.touches),startZoom:zoom,previewZoom:zoom},canvasList.classList.add("is-pinching"))},{passive:!1}),canvasWrap.addEventListener("touchmove",event=>{if(!pinchState||2!==event.touches.length)return;event.preventDefault();const scale=getTouchDistance(event.touches)/pinchState.startDistance,nextZoom=clampZoom(pinchState.startZoom*scale);pinchState.previewZoom=nextZoom,updateZoomLabel(nextZoom)},{passive:!1}),canvasWrap.addEventListener("touchend",handlePinchEnd),canvasWrap.addEventListener("touchcancel",handlePinchEnd),(window.pdfjsLib?Promise.resolve(window.pdfjsLib):pdfjsPromise||(pdfjsPromise=new Promise((resolve,reject)=>{const script=document.createElement("script");script.src="https://cdn.jsdelivr.net/npm/[email protected]/build/pdf.min.js",script.async=!0,script.onload=()=>{window.pdfjsLib?(window.pdfjsLib.GlobalWorkerOptions.workerSrc="https://cdn.jsdelivr.net/npm/[email protected]/build/pdf.worker.min.js",resolve(window.pdfjsLib)):reject(new Error("PDF.js failed to load."))},script.onerror=()=>reject(new Error("PDF.js failed to load.")),document.head.appendChild(script)}),pdfjsPromise)).then(pdfjsLib=>(setStatus("Loading PDF..."),pdfjsLib.getDocument(pdfUrl).promise)).then(doc=>(pdfDoc=doc,totalEl&&(totalEl.textContent=`${pdfDoc.numPages}`),setCurrentPage(1),renderAllPages())).then(()=>thumbsToggleBtn&&thumbsList?(async()=>
1{if(!thumbsList||!pdfDoc)return;thumbsList.innerHTML="";const outputScale=Math.min(window.devicePixelRatio||1,2);for(let i=1;i<=pdfDoc.numPages;i+=1){const page=await pdfDoc.getPage(i),scale=120/page.getViewport({scale:1}).width,thumbViewport=page.getViewport({scale:scale*outputScale}),canvas=document.createElement("canvas"),context=canvas.getContext("2d");canvas.width=Math.floor(thumbViewport.width),canvas.height=Math.floor(thumbViewport.height),canvas.style.width=thumbViewport.width/outputScale+"px",canvas.style.height=thumbViewport.height/outputScale+"px";const button=document.createElement("button");button.type="button",button.className="ap-pdf-thumb",button.dataset.page=`${i}`,button.setAttribute("aria-label",`Page ${i}`),button.appendChild(canvas),button.addEventListener("click",()=>scrollToPage(i)),thumbsList.appendChild(button);const renderTask=page.render({canvasContext:context,viewport:thumbViewport});await renderTask.promise}setCurrentPage(currentPage)})():null).catch(error=>{setStatus("Unable to load PDF. Please open the file in a new tab."),console.error(error)}),"ResizeObserver"in window?new ResizeObserver(handleResize).observe(viewer):window.addEventListener("resize",handleResize)},initAll=()=>{document.querySelectorAll(".ap-pdf-viewer--pdfjs").forEach(viewer=>initViewer(viewer))};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",initAll):initAll()})(); 2//# sourceURL=https://146514935.fs1.hubspotusercontent-eu1.net/hubfs/146514935/hub_generated/module_assets/1/363304306920/1771164889788/module_PDF_Viewer.js
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.