:root{–bg-primary:#0F0F0F;–bg-secondary:#1f2025;–bg-card:#18191e;–bg-card-hover:#1e2028;–accent:#1A66FF;–accent-dim:rgba(26,102,255,.15);–accent-glow:rgba(26,102,255,.35);–text-primary:#ffffff;–text-muted:rgba(255,255,255,.55);–text-dim:rgba(255,255,255,.35);–border:rgba(255,255,255,.08);–border-hover:rgba(26,102,255,.4);–font-body:’Montserrat’,sans-serif;–font-heading:’Alexandria’,sans-serif;–font-mono:’DM Mono’,monospace;–radius-sm:8px;–radius-md:14px;–radius-pill:9999px;–max-w:1160px;–section-pad:88px;–transition:0.3s cubic-bezier(.4,0,.2,1)} .pe-wrap *,.pe-wrap *::before,.pe-wrap *::after{box-sizing:border-box;margin:0;padding:0} .pe-wrap a{color:inherit;text-decoration:none} .pe-wrap img{max-width:100%;display:block} .pe-wrap .container{max-width:var(–max-w);margin:0 auto;padding:0 28px} .pe-wrap .section{padding:var(–section-pad) 0} .pe-wrap .btn{display:inline-block;padding:13px 30px;border-radius:var(–radius-pill);font-size:14px;font-weight:700;letter-spacing:.3px;transition:all var(–transition);cursor:pointer} .pe-wrap .btn–primary{background:var(–accent);color:#fff} .pe-wrap .btn–primary:hover{background:#1557e0;box-shadow:0 0 28px var(–accent-glow);transform:translateY(-2px)} .pe-wrap .btn–ghost{background:transparent;color:var(–text-primary);border:1px solid var(–border)} .pe-wrap .btn–ghost:hover{border-color:var(–accent);color:var(–accent);background:var(–accent-dim)} .pe-wrap .hero{min-height:92vh;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;padding:100px 0 72px;font-family:var(–font-body);color:var(–text-primary);background:var(–bg-primary)} .pe-wrap .hero__grid{position:absolute;inset:0;background-image:linear-gradient(var(–border) 1px,transparent 1px),linear-gradient(90deg,var(–border) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(ellipse 80% 70% at 50% 50%,black 30%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 80% 70% at 50% 50%,black 30%,transparent 100%);animation:peGridShift 20s linear infinite} @keyframes peGridShift{0%{background-position:0 0,0 0}100%{background-position:64px 64px,64px 64px}} .pe-wrap .hero__glow{position:absolute;width:700px;height:700px;border-radius:50%;background:radial-gradient(circle,rgba(26,102,255,.18) 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;animation:peGlowPulse 6s ease-in-out infinite} @keyframes peGlowPulse{0%,100%{opacity:.8;transform:translate(-50%,-50%) scale(1)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}} .pe-wrap .hero__inner{position:relative;z-index:1;display:grid;grid-template-columns:1.1fr 1fr;gap:64px;align-items:center} .pe-wrap .hero__eyebrow{display:inline-flex;align-items:center;gap:8px;margin-bottom:22px;font-family:var(–font-mono);font-size:11px;font-weight:500;letter-spacing:2px;text-transform:uppercase;color:var(–accent);padding:5px 14px;border:1px solid var(–accent-dim);border-radius:var(–radius-pill);background:var(–accent-dim)} .pe-wrap .hero__eyebrow::before{content:”;width:6px;height:6px;border-radius:50%;background:var(–accent);animation:peBlink 2s ease-in-out infinite;flex-shrink:0} @keyframes peBlink{0%,100%{opacity:1}50%{opacity:.3}} .pe-wrap .hero__title{font-family:var(–font-heading);font-size:clamp(30px,4vw,52px);font-weight:700;line-height:1.15;margin-bottom:12px;letter-spacing:-.5px} .pe-wrap .hero__title em{font-style:normal;color:var(–accent)} .pe-wrap .hero__subtitle{font-size:clamp(15px,1.8vw,18px);color:var(–text-muted);line-height:1.7;margin-bottom:36px;max-width:540px} .pe-wrap .hero__subtitle strong{color:var(–text-primary);font-weight:600} .pe-wrap .hero__actions{display:flex;gap:14px;flex-wrap:wrap} .pe-wrap .hero__visual{display:flex;align-items:center;justify-content:center;position:relative} .pe-wrap .hero__visual-wrap{position:relative;width:100%;max-width:500px} .pe-wrap .waveform-container{background:#05080f;border:1px solid rgba(26,102,255,.5);border-radius:var(–radius-md);padding:20px 24px;position:relative;overflow:hidden;box-shadow:0 0 0 1px rgba(26,102,255,.08),0 0 32px rgba(26,102,255,.16),inset 0 0 60px rgba(0,0,0,.5)} .pe-wrap .waveform-container::before{content:”;position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(26,102,255,.9),transparent)} .pe-wrap .waveform-container::after{content:”;position:absolute;inset:0;pointer-events:none;z-index:1;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,0,0,.07) 3px,rgba(0,0,0,.07) 4px)} .pe-wrap .waveform-label{font-family:var(–font-mono);font-size:10px;color:rgba(26,102,255,.65);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:14px;display:flex;justify-content:space-between} .pe-wrap .waveform-label span{color:rgba(26,102,255,.9)} .pe-wrap .waveform-meta{display:flex;justify-content:space-between;margin-top:12px;font-family:var(–font-mono);font-size:10px;color:rgba(255,255,255,.28)} .pe-wrap .waveform-meta .accent{color:rgba(26,102,255,.8)} .pe-wrap .hero__badge{position:absolute;top:-14px;right:-14px;background:var(–bg-secondary);border:1px solid var(–border);border-radius:var(–radius-md);padding:12px 16px;font-size:12px;color:var(–text-muted);font-family:var(–font-mono);box-shadow:0 8px 24px rgba(0,0,0,.4);animation:peFloatBadge 4s ease-in-out infinite} .pe-wrap .hero__badge strong{display:block;font-size:20px;color:var(–accent);font-weight:700} @keyframes peFloatBadge{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}} .pe-wrap .stats-strip{background:var(–bg-secondary);border-top:1px solid var(–border);border-bottom:1px solid var(–border);padding:40px 0;font-family:var(–font-body)} .pe-wrap .stats-strip__inner{display:flex;justify-content:space-around;flex-wrap:wrap;gap:32px} .pe-wrap .stat{text-align:center} .pe-wrap .stat__num{display:block;font-family:var(–font-heading);font-size:40px;font-weight:700;line-height:1;color:var(–accent);margin-bottom:6px} .pe-wrap .stat__label{font-size:13px;color:var(–text-muted);font-weight:500} .pe-wrap .stat__loading{display:inline-block;color:var(–text-dim);animation:peLoadPulse 1.2s ease-in-out infinite} @keyframes peLoadPulse{0%,100%{opacity:.3}50%{opacity:1}} .pe-wrap .section{padding:var(–section-pad) 0;font-family:var(–font-body);color:var(–text-primary)} .pe-wrap .sec-header{margin-bottom:52px} .pe-wrap .sec-header–center{text-align:center} .pe-wrap .sec-header__label{display:inline-block;margin-bottom:12px;font-family:var(–font-mono);font-size:11px;font-weight:500;letter-spacing:2.5px;text-transform:uppercase;color:var(–accent)} .pe-wrap .sec-header__title{font-family:var(–font-heading);font-size:clamp(26px,3vw,38px);font-weight:700;line-height:1.2;margin-bottom:14px;color:var(–text-primary)} .pe-wrap .sec-header__desc{color:var(–text-muted);max-width:600px;font-size:15px;line-height:1.75} .pe-wrap .sec-header–center .sec-header__desc{margin:0 auto} .pe-wrap .areas-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px} .pe-wrap .area-card{background:var(–bg-card);border:1px solid var(–border);border-radius:var(–radius-md);padding:32px 28px;transition:border-color var(–transition),box-shadow var(–transition),transform var(–transition);position:relative;overflow:hidden} .pe-wrap .area-card::before{content:”;position:absolute;top:0;left:0;right:0;height:2px;background:var(–accent);transform:scaleX(0);transform-origin:left;transition:transform var(–transition)} .pe-wrap .area-card:hover{border-color:var(–border-hover);box-shadow:0 0 32px rgba(26,102,255,.1);transform:translateY(-4px)} .pe-wrap .area-card:hover::before{transform:scaleX(1)} .pe-wrap .area-card__dot{width:10px;height:10px;background:var(–accent);border-radius:50%;margin-bottom:20px;box-shadow:0 0 10px var(–accent-glow)} .pe-wrap .area-card__title{font-family:var(–font-heading);font-size:17px;font-weight:600;margin-bottom:10px;color:var(–text-primary)} .pe-wrap .area-card__desc{font-size:13.5px;color:var(–text-muted);line-height:1.65} .pe-wrap .tagline-strip{background:var(–bg-secondary);border-top:1px solid var(–border);border-bottom:1px solid var(–border);padding:60px 0} .pe-wrap .tagline-strip__inner{display:grid;grid-template-columns:auto 1fr;gap:48px;align-items:center} .pe-wrap .tagline-strip__bar{width:4px;height:80px;background:linear-gradient(to bottom,var(–accent),transparent);border-radius:2px;flex-shrink:0} .pe-wrap .tagline-strip__quote{font-family:var(–font-heading);font-size:clamp(18px,2.2vw,24px);font-weight:400;line-height:1.55;color:var(–text-muted)} .pe-wrap .tagline-strip__quote strong{color:var(–text-primary);font-weight:600} .pe-wrap .pub-list{display:flex;flex-direction:column;gap:16px} .pe-wrap .pub-card{background:var(–bg-card);border:1px solid var(–border);border-radius:var(–radius-md);padding:24px 28px;display:grid;grid-template-columns:1fr auto;gap:20px;align-items:start;transition:border-color var(–transition),box-shadow var(–transition),transform var(–transition);position:relative} .pe-wrap .pub-card::after{content:”;position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:var(–radius-md) 0 0 var(–radius-md);background:var(–accent);opacity:0;transition:opacity var(–transition)} .pe-wrap .pub-card:hover{border-color:var(–border-hover);box-shadow:0 4px 24px rgba(26,102,255,.08);transform:translateX(4px)} .pe-wrap .pub-card:hover::after{opacity:1} .pe-wrap .pub-card__venue{display:inline-block;margin-bottom:8px;font-family:var(–font-mono);font-size:10px;font-weight:500;letter-spacing:1.5px;text-transform:uppercase;color:var(–accent)} .pe-wrap .pub-card__title{font-family:var(–font-heading);font-size:15px;font-weight:600;line-height:1.4;margin-bottom:8px;color:var(–text-primary)} .pe-wrap .pub-card__authors{font-size:12.5px;color:var(–text-muted);font-family:var(–font-mono)} .pe-wrap .pub-badge{flex-shrink:0;align-self:start;padding:4px 12px;border-radius:var(–radius-pill);font-size:11px;font-weight:700;letter-spacing:.3px;white-space:nowrap} .pe-wrap .pub-badge–journal{background:rgba(26,102,255,.2);color:#93b8ff;border:1px solid rgba(26,102,255,.3)} .pe-wrap .pub-badge–conf{background:rgba(74,222,128,.1);color:#86efac;border:1px solid rgba(74,222,128,.25)} .pe-wrap .view-all-wrap{text-align:center;margin-top:36px} .pe-wrap .news-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px} .pe-wrap .news-card{background:var(–bg-card);border:1px solid var(–border);border-radius:var(–radius-md);padding:28px;transition:border-color var(–transition),box-shadow var(–transition),transform var(–transition)} .pe-wrap .news-card:hover{border-color:var(–border-hover);box-shadow:0 4px 24px rgba(26,102,255,.08);transform:translateY(-3px)} .pe-wrap .news-card__tag{display:inline-block;margin-bottom:14px;font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:4px 10px;border-radius:var(–radius-pill);font-family:var(–font-mono)} .pe-wrap .tag–recognition{background:rgba(251,191,36,.12);color:#fbbf24;border:1px solid rgba(251,191,36,.25)} .pe-wrap .tag–update{background:rgba(74,222,128,.1);color:#86efac;border:1px solid rgba(74,222,128,.2)} .pe-wrap .tag–news{background:var(–accent-dim);color:#93b8ff;border:1px solid rgba(26,102,255,.25)} .pe-wrap .news-card__text{font-size:14px;color:var(–text-muted);line-height:1.7} .pe-wrap .news-card__text strong{color:var(–text-primary)} .pe-wrap .news-card__text a{color:var(–accent);border-bottom:1px solid transparent;transition:border-color var(–transition)} .pe-wrap .news-card__text a:hover{border-bottom-color:var(–accent)} .pe-wrap .cta-section{padding:var(–section-pad) 0;position:relative;overflow:hidden;font-family:var(–font-body);background:var(–bg-primary)} .pe-wrap .cta-section::before{content:”;position:absolute;inset:0;background:radial-gradient(ellipse 60% 80% at 50% 50%,rgba(26,102,255,.12) 0%,transparent 70%)} .pe-wrap .cta-box{position:relative;z-index:1;background:var(–bg-card);border:1px solid var(–border);border-radius:var(–radius-md);padding:60px 48px;text-align:center;overflow:hidden} .pe-wrap .cta-box::before{content:”;position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(–accent),transparent)} .pe-wrap .cta-box__title{font-family:var(–font-heading);font-size:clamp(24px,3vw,36px);font-weight:700;margin-bottom:14px;color:var(–text-primary)} .pe-wrap .cta-box__sub{color:var(–text-muted);margin-bottom:36px;font-size:15px;max-width:520px;margin-left:auto;margin-right:auto;line-height:1.7} .pe-wrap .cta-box__btns{display:flex;gap:14px;justify-content:center;flex-wrap:wrap} .pe-wrap .anim-fadeUp{opacity:0;transform:translateY(30px);transition:opacity .65s ease,transform .65s ease} .pe-wrap .anim-fadeUp.is-visible{opacity:1;transform:translateY(0)} .pe-wrap .anim-slideLeft{opacity:0;transform:translateX(-30px);transition:opacity .6s ease,transform .6s ease} .pe-wrap .anim-slideLeft.is-visible{opacity:1;transform:translateX(0)} .pe-wrap .anim-slideRight{opacity:0;transform:translateX(30px);transition:opacity .6s ease,transform .6s ease} .pe-wrap .anim-slideRight.is-visible{opacity:1;transform:translateX(0)} .pe-wrap .anim-delay-1{transition-delay:.1s} .pe-wrap .anim-delay-2{transition-delay:.2s} .pe-wrap .anim-delay-3{transition-delay:.3s} .pe-wrap .anim-delay-4{transition-delay:.4s} @media(max-width:900px){.pe-wrap .hero__inner{grid-template-columns:1fr}.pe-wrap .hero__visual{display:none}.pe-wrap .tagline-strip__inner{grid-template-columns:1fr}.pe-wrap .tagline-strip__bar{display:none}} @media(max-width:700px){.pe-wrap .pub-card{grid-template-columns:1fr}.pe-wrap .pub-badge{display:none}}
Signal · Image · Video · Edge · Ultrasound

Systems Algorithms and
Analytics for Imaging
and Beyond

Towards Cognitive Ultrasound — we work on making (ultra)sound affordable and intelligent, from algorithm design to deployment on edge devices.

117+Publications & Patents
PULSE / ECHOfc = 3.5 MHz
Transmitted Pulse∆t = ToF measurementEcho Return
Publications & Patents
Open Datasets
Software Contributions
What We Do

Research Areas

End-to-end research — from algorithm design and simulation to real-time deployment on constrained hardware.

Ultrasound Systems

Custom hardware, transducer designs, front-end electronics, 3D-printed acoustic masks, and flexible array configurations for next-gen imaging.

Simulations & Modeling

Acoustic lens design, wave propagation simulations using k-Wave, and tissue-mimicking phantoms for rigorous experimental validation.

Ultrasound Software

Advanced beamforming, image reconstruction, neural network-based methods, 3D reconstruction, and aberration correction algorithms.

Clinical Applications

Lung ultrasound analysis, needle tracking, musculoskeletal imaging, sonomyography sensing, and super-resolution vascular imaging.

We work in signal, image & video processing, analytics and deploying them on edge devices — particularly for (ultra)sound imaging.
Research Output

Recent Publications

Peer-reviewed work in leading IEEE journals and conferences.

IEEE Journal of Ocean Engineering · 2025
Orthogonal Linear Array based Product Beamforming for Real Time Underwater 3D Acoustical Imaging
Mimisha M Menakath, Mahesh Raveendranatha Panicker, Hareesh G
Journal
IEEE Access, Vol. 13 · 2025
FeatuReBeam: Efficient Beamforming for High Frame Ultrasound Imaging using Adaptive Feature Reuse with (m,k)-Guarantee
Abdul Rahoof, Vivek Chaturvedi, Mahesh Raveendranatha Panicker, Muhammad Shafique, Gang Quan
Journal
IEEE Sensors Letters, Vol. 9 Issue 7 · 2025
Experimental Validation of Underwater Target Modeling using k-Wave Toolbox for Acoustical Imaging
Mimisha M Menakath, Mahesh Raveendranatha Panicker, Hareesh G, Midhila Madhusoodanan, Tessin K Jose
Journal
Latest

News & Highlights

Recognition, updates, and milestones from the Pulse Echo group.

[Update]

Mahesh joined Singapore Institute of Technology as Associate Professor, Infocomm Technology Cluster.

[Recognition]

Madhavanunni AN won the Second Prize for Best Paper at 2024 IEEE South Asian Ultrasonics Symposium (SAUS 2024).

[Recognition]

Harikrishnan Pisharody was selected as a Best Paper Award finalist at 2022 IEEE International Symposium on Biomedical Imaging (ISBI 2022).

Interested in Collaborating?

We welcome academic partnerships, industry collaborations, and research discussions in signal processing, biomedical imaging, and edge AI.

(function(){ ‘use strict’; var animEls=document.querySelectorAll(‘.pe-wrap .anim-fadeUp,.pe-wrap .anim-slideLeft,.pe-wrap .anim-slideRight’); var scrollObs=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting){e.target.classList.add(‘is-visible’);scrollObs.unobserve(e.target);}});},{threshold:0.12}); animEls.forEach(function(el){scrollObs.observe(el);}); function revealHero(){document.querySelectorAll(‘.pe-wrap .hero .anim-fadeUp,.pe-wrap .hero .anim-slideRight’).forEach(function(el,i){setTimeout(function(){el.classList.add(‘is-visible’);},i*130);});} if(document.readyState===’loading’){document.addEventListener(‘DOMContentLoaded’,revealHero);}else{revealHero();} function countUp(el,target){var suffix=’+’,duration=1600,fps=60,frames=duration/(1000/fps),frame=0;var tick=function(){frame++;var p=1-Math.pow(1-frame/frames,3);el.textContent=Math.round(p*target)+suffix;if(frame<frames)requestAnimationFrame(tick);else el.textContent=target+suffix;};el.textContent='0+';requestAnimationFrame(tick);} var API='https://pulseecho.in/wp-json/wp/v2/pages'; async function countElements(slug,selector){var res=await fetch(API+'?slug='+encodeURIComponent(slug)+'&_fields=content',{cache:'no-store'});if(!res.ok)throw new Error('HTTP '+res.status);var data=await res.json();if(!data.length)throw new Error('not found');var doc=(new DOMParser()).parseFromString(data[0].content.rendered,'text/html');return doc.querySelectorAll(selector).length;} var STATS=[ {id:'stat-pubpat',fallback:117,resolve:async function(){var r=await Promise.all([countElements('publications','div.paper'),countElements('patents','li')]);return r[0]+r[1];}}, {id:'stat-datasets',fallback:2,resolve:function(){return countElements('datasets','article.pe-card');}}, {id:'stat-software',fallback:9,resolve:function(){return countElements('softwares','li');}} ]; (function initWave(){var canvas=document.getElementById('waveCanvas');if(!canvas)return;var dpr=window.devicePixelRatio||1,W=440,H=160;canvas.width=W*dpr;canvas.height=H*dpr;var ctx=canvas.getContext('2d');ctx.scale(dpr,dpr);var cy=H/2;function gs(x,cx,A,s,l){var u=x-cx;return A*Math.exp(-0.5*Math.pow(u/s,2))*Math.sin(2*Math.PI*u/l);}var TX={cx:105,A:46,sigma:30,lambda:34,color:'#4da6ff',glow:'#1A66FF'};var RX={cx:325,A:28,sigma:26,lambda:36,color:'#5fd4f7',glow:'#30b8e8',alpha:0.82};function drawGrid(){ctx.save();ctx.strokeStyle='rgba(26,102,255,0.18)';ctx.lineWidth=1;ctx.beginPath();ctx.moveTo(0,cy);ctx.lineTo(W,cy);ctx.stroke();ctx.setLineDash([3,6]);ctx.strokeStyle='rgba(255,255,255,0.05)';[cy-44,cy+44].forEach(function(y){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(W,y);ctx.stroke();});[110,220,330].forEach(function(x){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,H);ctx.stroke();});ctx.setLineDash([]);ctx.restore();} function buildPts(p,fx,tx,prog){var dt=fx+(tx-fx)*Math.min(prog,1),pts=[];for(var x=fx;x<=dt;x+=0.75)pts.push([x,cy-gs(x,p.cx,p.A,p.sigma,p.lambda)]);return pts;} function sp(pts){if(pts.length<2)return;ctx.beginPath();ctx.moveTo(pts[0][0],pts[0][1]);for(var i=1;i<pts.length;i++)ctx.lineTo(pts[i][0],pts[i][1]);ctx.stroke();} function drawPulse(p,prog,fx,tx){if(prog<=0)return;var pts=buildPts(p,fx,tx,prog);ctx.save();ctx.globalAlpha=(p.alpha!=null?p.alpha:1)*0.55;ctx.shadowBlur=18;ctx.shadowColor=p.glow;ctx.strokeStyle=p.color;ctx.lineWidth=4;ctx.lineJoin='round';ctx.lineCap='round';sp(pts);ctx.restore();ctx.save();ctx.globalAlpha=p.alpha!=null?p.alpha:1;ctx.shadowBlur=6;ctx.shadowColor=p.glow;ctx.strokeStyle=p.color;ctx.lineWidth=1.6;ctx.lineJoin='round';ctx.lineCap='round';sp(pts);ctx.restore();} function drawBase(prog){if(prog<=0)return;ctx.save();ctx.strokeStyle='rgba(26,102,255,0.28)';ctx.lineWidth=1;ctx.beginPath();ctx.moveTo(0,cy);ctx.lineTo(W*Math.min(prog*1.4,1),cy);ctx.stroke();ctx.restore();} function drawLbls(){ctx.save();ctx.font="10px 'DM Mono',monospace";ctx.fillStyle='rgba(26,102,255,0.75)';ctx.fillText('Tx',8,14);ctx.fillText('Rx',228,14);ctx.fillStyle='rgba(255,255,255,0.2)';ctx.fillText('t u2192',6,H-5);ctx.restore();} var startTs=null,DUR=2400;function ease(t){return t<0.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2;} function frame(ts){if(!startTs)startTs=ts;var raw=Math.min((ts-startTs)/DUR,1),p=ease(raw);ctx.clearRect(0,0,W,H);drawGrid();drawBase(p);drawPulse(TX,Math.max(0,Math.min(1,p/0.65)),0,W/2);drawPulse(RX,Math.max(0,Math.min(1,(p-0.35)/0.65)),W/2,W);drawLbls();if(raw<1)requestAnimationFrame(frame);} var io=new IntersectionObserver(function(entries){if(entries[0].isIntersecting){requestAnimationFrame(frame);io.disconnect();}},{threshold:0.25});io.observe(canvas);})(); STATS.forEach(function(item){var el=document.getElementById(item.id);if(!el)return;var count=null,visible=false,done=false;function go(){if(done||count===null||!visible)return;done=true;countUp(el,count);}item.resolve().then(function(n){count=n;go();}).catch(function(){count=item.fallback;go();});var io=new IntersectionObserver(function(entries){if(entries[0].isIntersecting){visible=true;go();io.unobserve(el);}},{threshold:0.5});io.observe(el);}); })();