oxlint-plugin-react-doctor 0.9.12-dev.557145 → 0.9.12-dev.6adf55e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{$ as e,$i as t,$n as n,$r as r,$t as i,A as a,Aa as o,Ai as s,An as c,Ar as l,At as u,B as d,Bi as f,Bn as p,Br as m,Bt as h,C as g,Ca as _,Ci as ee,Cn as v,Cr as te,Ct as ne,D as re,Da as ie,Di as ae,Dn as y,Dr as oe,Dt as se,E as ce,Ea as le,Ei as ue,En as de,Er as fe,Et as pe,F as me,Fn as he,Fr as ge,Ft as eee,G as tee,Gi as nee,Gn as _e,Gr as ve,Gt as ye,H as be,Hi as ree,Hn as xe,Hr as Se,Ht as iee,I as aee,In as Ce,Ir as we,It as oee,J as Te,Ji as Ee,Jn as b,Jr as De,Jt as Oe,K as see,Ki as cee,Kn as x,Kr as ke,Kt as Ae,L as je,Ln as S,Lr as lee,Lt as Me,M as uee,Ma as dee,Mi as fee,Mn as Ne,Mr as pee,Mt as mee,N as hee,Ni as gee,Nn as Pe,Nr as Fe,Nt as Ie,O as Le,Oa as _ee,Oi as Re,On as ze,Or as vee,Ot as yee,P as Be,Pn as Ve,Pr as He,Pt as bee,Q as Ue,Qi as xee,Qn as We,Qr as Ge,Qt as See,R as Cee,Ri as wee,Rn as Tee,Rr as Eee,Rt as Dee,S as Oee,Sa as kee,Si as Ke,Sn as qe,Sr as Aee,St as jee,T as Mee,Ta as Nee,Ti as Je,Tn as Ye,Tr as Xe,Tt as Ze,U as Qe,Ui as Pee,Un as $e,Ur as et,Ut as tt,V as nt,Vi as Fee,Vn as rt,Vr as Iee,Vt as C,W as it,Wi as Lee,Wn as at,Wr as ot,Wt as st,X as Ree,Xi as zee,Xn as Bee,Xr as ct,Xt as Vee,Y as lt,Yi as Hee,Yn as ut,Yr as Uee,Yt as dt,Z as ft,Zi as pt,Zn as mt,Zr as Wee,Zt as Gee,_ as Kee,_a as qee,_i as ht,_n as Jee,_r as gt,_t as Yee,a as Xee,aa as w,ai as Zee,an as _t,ar as Qee,at as $ee,b as ete,ba as tte,bi as nte,bn as vt,br as yt,bt as rte,c as bt,ca as ite,ci as xt,cn as St,cr as Ct,ct as wt,d as Tt,da as ate,di as Et,dn as T,dr as ote,dt as ste,ea as Dt,ei as Ot,en as kt,er as At,et as jt,f as Mt,fa as cte,fi as Nt,fn as Pt,fr as lte,ft as ute,g as Ft,ga as dte,gi as It,gn as Lt,gr as Rt,gt as fte,h as zt,ha as pte,hi as Bt,hn as Vt,hr as mte,ht as hte,i as gte,ia as E,ii as _te,in as vte,ir as Ht,it as Ut,j as Wt,ja as yte,ji as bte,jn as Gt,jr as Kt,jt as xte,k as Ste,ka as Cte,ki as wte,kn as qt,kr as Tte,kt as Ete,l as Jt,la as Dte,li as D,ln as O,lr as Ote,lt as kte,m as Ate,ma as Yt,mi as Xt,mn as Zt,mr as jte,mt as Mte,n as Nte,na as Qt,ni as k,nn as Pte,nr as A,nt as Fte,o as $t,oa as j,oi as en,on as Ite,or as Lte,ot as Rte,p as zte,pa as tn,pi as nn,pn as rn,pr as Bte,pt as Vte,q as an,qi as Hte,qn as M,qr as Ute,qt as on,r as Wte,ra as sn,ri as Gte,rn as Kte,rr as cn,rt as ln,s as un,sa as qte,si as Jte,sn as Yte,sr as dn,st as Xte,t as Zte,ta as fn,ti as Qte,tn as $te,tr as N,tt as pn,u as mn,ua as ene,ui as tne,un as hn,ur as nne,ut as gn,v as _n,va as vn,vi as yn,vn as bn,vr as xn,vt as rne,w as Sn,wa as ine,wi as Cn,wn,wr as ane,wt as one,x as Tn,xa as En,xi as Dn,xn as On,xr as sne,xt as cne,y as kn,ya as An,yi as P,yn as jn,yr as Mn,yt as lne,z as Nn,zi as une,zn as Pn,zr as dne,zt as Fn}from"./capability-D9W-G7Ci.js";import{visitorKeys as fne}from"oxc-parser";import*as In from"node:fs";import{readFileSync as Ln}from"node:fs";import*as Rn from"node:path";import{analyze as pne}from"eslint-scope";import{Features as mne,transform as zn}from"lightningcss";import{visit as Bn}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as hne}from"@shaderfrog/glsl-parser/index.js";const gne={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},Vn=(e,t,r)=>n(e,t,r,gne),Hn=new Set([`Activity`,`unstable_Activity`]),_ne=e=>{let t=e.value;return t?E(t,`Literal`)?!0:E(t,`JSXExpressionContainer`)?E(t.expression,`Literal`):!1:!1},vne=(e,t)=>{D(e,e=>{if(!E(e,`JSXOpeningElement`)||!E(e.name,`JSXIdentifier`))return;let n=e.name.name;Fe.test(n)&&t.add(n)})},yne=(e,t)=>{if(!e)return 0;let n=0;return D(e,e=>{E(e,`CallExpression`)&&Vn(e,Ct,t)&&n++}),n},Un=new WeakMap,bne=e=>{let t=Un.get(e);if(t)return t;let n=new Map;D(e,e=>{if(E(e,`FunctionDeclaration`)&&e.id&&!n.has(e.id.name)){n.set(e.id.name,e.body);return}if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)&&!n.has(e.id.name)){let t=e.init;(E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`))&&n.set(e.id.name,t.body)}});let r={bodyByName:n,effectCountByName:new Map};return Un.set(e,r),r},xne=(e,t,n)=>{let r=bne(e),i=r.effectCountByName.get(t);if(i!==void 0)return i;let a=yne(r.bodyByName.get(t)??null,n);return r.effectCountByName.set(t,a),a},Wn=C({id:`activity-wraps-effect-heavy-subtree`,title:`Activity wraps an effect-heavy subtree`,severity:`warn`,requires:[`react:19.2`],recommendation:"Check what's under `<Activity>`. Every hide and show rebuilds every Effect inside from scratch. Move subscriptions and effect-driven setState out of the Activity, or load the data above it.",create:e=>{let t=new Set,n=new Set;return{ImportDeclaration(e){if(e.source?.value===`react`)for(let r of e.specifiers??[]){if(E(r,`ImportNamespaceSpecifier`)){E(r.local,`Identifier`)&&n.add(r.local.name);continue}if(E(r,`ImportDefaultSpecifier`)){E(r.local,`Identifier`)&&n.add(r.local.name);continue}if(!E(r,`ImportSpecifier`))continue;let e=en(r);!e||!Hn.has(e)||E(r.local,`Identifier`)&&t.add(r.local.name)}},JSXElement(r){let i=r.openingElement;if(!i)return;let a=i.name,o=!1;if(E(a,`JSXIdentifier`)?o=t.has(a.name):E(a,`JSXMemberExpression`)&&E(a.object,`JSXIdentifier`)&&n.has(a.object.name)&&E(a.property,`JSXIdentifier`)&&(o=Hn.has(a.property.name)),!o)return;let s=null;for(let e of i.attributes??[])if(E(e,`JSXAttribute`)&&E(e.name,`JSXIdentifier`)&&e.name.name===`mode`){s=e;break}if(!s||_ne(s))return;let c=new Set;vne(r,c);for(let e of t)c.delete(e);if(c.size===0)return;let l=x(r);if(!l)return;let u=0,d=[];for(let t of c){let n=xne(l,t,e.scopes);n!==0&&(u+=n,d.push(`<${t}>`))}u!==0&&e.report({node:i,message:`Every hide and show rebuilds ${d.join(`, `)} from scratch because <Activity> wraps components with ${u} effect hook${u===1?``:`s`}.`})}}}}),Gn=e=>!E(e,`CallExpression`)&&!E(e,`NewExpression`)?null:E(e.callee,`Identifier`)?e.callee.name:E(e.callee,`MemberExpression`)&&E(e.callee.property,`Identifier`)?e.callee.property.name:null,Kn=(e,t)=>{if(!E(e,`CallExpression`)&&!E(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return E(n,`ArrowFunctionExpression`)||E(n,`FunctionExpression`)?n:t?y(n,t):null},qn=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=P(r),E(r,`MemberExpression`)){r=r.object;continue}if(n&&E(r,`CallExpression`)){if(!E(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return E(r,`Identifier`)?r:null},Jn=(e,t)=>qn(e,t)?.name??null,Yn=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=Gn(e);return n?typeof t==`string`?n===t:t.has(n):!1},Sne=new Set([`useCallback`,`useEffectEvent`]),Cne=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),wne=/^use\w*(?:Throttle|Debounce)/i,Tne=e=>{let t=Gn(e);return t!==null&&wne.test(t)},Ene=(e,t)=>{if(!Vn(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return E(n,`ArrayExpression`)&&(n.elements?.length??0)===0},Dne=(e,t)=>E(e,`CallExpression`)?Vn(e,Sne,t)||Yn(e,Cne)||Ene(e,t)||Tne(e):E(e,`MemberExpression`)&&E(e.property,`Identifier`)&&e.property.name===`current`,One=(e,t,n)=>{let r=T(e,t);return!!(r?.initializer&&Vn(r.initializer,`useRef`,n))},kne=C({id:`advanced-event-handler-refs`,title:`Listener re-subscribes on every handler change`,tags:[`test-noise`],severity:`warn`,category:`Performance`,recommendation:"Store the handler in a ref and have the listener read `handlerRef.current()`. The subscription stays put while the latest handler still runs.",create:e=>({CallExpression(t){if(!Vn(t,Ct,e.scopes)||(t.arguments?.length??0)<2)return;let n=Kn(t);if(!n||!E(n,`ArrowFunctionExpression`)&&!E(n,`FunctionExpression`))return;let r=t.arguments[1];if(!E(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)E(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(D(n.body,e=>{if(!E(e,`CallExpression`)||!E(e.callee,`MemberExpression`)||!E(e.callee.property,`Identifier`)||!Kt.has(e.callee.property.name))return;let t=Jn(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];E(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let s=T(t,a);s?.initializer&&Dne(s.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!One(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),Xn=e=>{let t=e.value;return t&&E(t,`Literal`)&&typeof t.value==`string`?t.value:null},F=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!E(t,`JSXAttribute`))continue;let e=rn(t.name);if(e&&e.toLowerCase()===n)return t}},Ane=Object.freeze({}),jne=new WeakMap,Mne=e=>{if(!e)return Ane;let t=jne.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:Ane;return jne.set(e,r),r},Nne=(e,t)=>{let n=O(e);if(t.polymorphicPropName){let n=F(e.attributes,t.polymorphicPropName);if(n){let e=Xn(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},Pne=new WeakMap,Zn=(e,t)=>{let n=Pne.get(e);if(n&&n.settings===t)return n.elementType;let r=Nne(e,Mne(t));return Pne.set(e,{settings:t,elementType:r}),r},Fne=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},I=e=>e.some(e=>E(e,`JSXSpreadAttribute`)),Qn=e=>{if(!e)return null;let t=P(e);return E(t,`Literal`)&&typeof t.value==`string`?t.value:E(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},L=e=>{if(!E(e,`JSXAttribute`))return null;let t=Xn(e);if(t!==null)return t;let n=e.value;if(n&&E(n,`JSXExpressionContainer`)){let e=n.expression;if(E(e,`Literal`)&&typeof e.value==`string`)return e.value;if(E(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},$n=e=>e.attribute?L(e.attribute):Qn(e.expression),Ine=e=>{let t=e.expression??e.attribute?.value;return t?P(E(t,`JSXExpressionContainer`)?t.expression:t):null},er=(e,t)=>{if(Zn(e,t).toLowerCase()===`input`&&$n($t(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=$t(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=$n(n);if(e!==null)return e.length>0;let t=Ine(n);if(E(t,`Literal`)&&t.value)return!0}let r=$t(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=$n(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=Ine(r);return E(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},tr=e=>{if(E(e,`JSXIdentifier`))return e.name;if(E(e,`JSXMemberExpression`)){let t=tr(e.object);return t?`${t}.${e.property.name}`:null}return null},Lne=[`next/og`,`@vercel/og`,`satori`],Rne=new Set([`next/og`,`@vercel/og`]),nr=e=>{let t=e.parent;for(;t;){if(E(t,`ImportDeclaration`))return t;if(E(t,`Program`))return null;t=t.parent}return null},rr=e=>typeof e.source.value==`string`?e.source.value:null,zne=(e,t,n)=>{if(e.kind!==`import`)return!1;let r=e.declarationNode;if(!E(r,`ImportSpecifier`))return!1;let i=nr(r),a=i?rr(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return E(o,`Identifier`)&&o.name===t||E(o,`Literal`)&&o.value===t},Bne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=nr(t);if(!n||rr(n)!==`satori`)return!1;if(E(t,`ImportDefaultSpecifier`))return!0;if(!E(t,`ImportSpecifier`))return!1;let r=t.imported;return E(r,`Identifier`)&&r.name===`satori`||E(r,`Literal`)&&r.value===`satori`},ir=(e,t)=>{if(!E(e,`CallExpression`)&&!E(e,`NewExpression`))return!1;let n=P(e.callee);if(E(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(zne(e,`ImageResponse`,Rne)||Bne(e)))}if(!E(n,`MemberExpression`)||k(n)!==`ImageResponse`||!E(n.object,`Identifier`))return!1;let r=t.referenceFor(n.object)?.resolvedSymbol??null;if(!r||r.kind!==`import`)return!1;let i=r.declarationNode;if(!E(i,`ImportNamespaceSpecifier`))return!1;let a=nr(i),o=a?rr(a):null;return!!(o&&Rne.has(o))},Vne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${Ee}$`),ar=e=>e?Vne.test(Rn.basename(e)):!1,Hne=new WeakMap,Une=e=>e?ar(mt(e)):!1,Wne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},or=(e,t,n,r,i)=>{if(!w(e))return;if(E(e,`ArrowFunctionExpression`)){let a=P(e.body);if(!E(a,`BlockStatement`)){sr(a,t,n,r,i);return}}let a=e.body;E(a,`BlockStatement`)&&D(a,e=>{if(e!==a&&w(e))return!1;E(e,`ReturnStatement`)&&e.argument&&sr(P(e.argument),t,n,r,i)})},Gne=(e,t,n)=>{let r=!1;return D(e,e=>{if(r)return!1;if(E(e,`JSXOpeningElement`)&&!n.has(e)&&tr(e.name)===t)return r=!0,!1}),r},Kne=(e,t,n,r,i)=>{let a=tr(n.name);if(!a||a.includes(`.`)||!Wne(a)||i.has(a)||Gne(e,a,r))return;let o=T(n,a);o?.initializer&&(i.add(a),sr(P(o.initializer),e,t,r,i))},qne=(e,t)=>{let n=e.parent;for(;n;){if(ir(n,t))return!0;n=n.parent??null}return!1},Jne=(e,t,n)=>{let r=!1;return D(e,e=>{if(r)return!1;if(E(e,`CallExpression`)&&E(e.callee,`Identifier`)&&e.callee.name===t&&!qne(e,n))return r=!0,!1}),r},Yne=(e,t,n,r,i)=>{D(e,e=>{E(e,`JSXOpeningElement`)&&(r.add(e),Kne(t,n,e,r,i))})},sr=(e,t,n,r,i)=>{let a=P(e);if(E(a,`JSXElement`)||E(a,`JSXFragment`)){Yne(a,t,n,r,i);return}if(w(a)){or(a,t,n,r,i);return}if(E(a,`ConditionalExpression`)){sr(a.consequent,t,n,r,i),sr(a.alternate,t,n,r,i);return}if(E(a,`LogicalExpression`)){sr(a.left,t,n,r,i),sr(a.right,t,n,r,i);return}if(E(a,`CallExpression`)){let e=a.callee;if(w(e)){or(e,t,n,r,i);return}if(!E(e,`Identifier`)||i.has(e.name)||Gne(t,e.name,r)||Jne(t,e.name,n))return;let o=T(e,e.name);if(!o?.initializer||!w(P(o.initializer)))return;i.add(e.name),or(P(o.initializer),t,n,r,i);return}if(E(a,`Identifier`)){if(i.has(a.name))return;i.add(a.name);let e=T(a,a.name);if(!e?.initializer)return;sr(P(e.initializer),t,n,r,i)}},Xne=(e,t)=>{let n=Hne.get(e);if(n)return n;let r=new WeakSet;return xe(e,Lne)&&D(e,n=>{if(!(!E(n,`CallExpression`)&&!E(n,`NewExpression`))&&ir(n,t))for(let i of n.arguments)sr(i,e,t,r,new Set)}),Hne.set(e,r),r},cr=(e,t)=>{if(Une(e.filename))return!0;if(!t)return!1;let n=x(t);if(!n)return!1;let r=Xne(n,e.scopes);return r.has(t)?!0:E(t,`JSXElement`)?r.has(t.openingElement):!1},lr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],ur=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),Zne=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),dr=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),fr=new Set([`add`,`clear`,`delete`,`set`]),pr=new Set([`map`,`filter`,`forEach`,`flatMap`]),mr=new Set([`then`,`catch`,`finally`]),hr=new Set([`values`,`keys`,`entries`]),Qne=/\.browser\.[cm]?[jt]sx?$/,$ne=new Set(`vitest.jest.mocha.chai.sinon.expect.ava.uvu.node:test.bun:test.@testing-library/react.@testing-library/react-native.@testing-library/react-hooks.@testing-library/dom.@testing-library/user-event.@testing-library/jest-dom.@testing-library/vue.@testing-library/svelte.@testing-library/preact.@testing-library/cypress.playwright.playwright-core.@playwright/test.@playwright/experimental-ct-react.@playwright/experimental-ct-react17.cypress.@cypress/react.@cypress/react18.@storybook/test.@storybook/test-runner.@storybook/testing-library.@storybook/jest.puppeteer.puppeteer-core.webdriverio.@wdio/globals.@nuxt/test-utils`.split(`.`)),ere=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],tre=new Set(`render.rerender.renderHook.renderToString.renderToStaticMarkup.act.click.dblClick.dblclick.tripleClick.tap.press.longPress.type.clear.fill.focus.blur.hover.unhover.check.uncheck.selectOption.selectOptions.setChecked.setInputFiles.scrollIntoViewIfNeeded.dragTo.dragAndDrop.drop.evaluate.evaluateHandle.waitFor.waitForLoadState.waitForSelector.waitForURL.waitForResponse.waitForRequest.waitForEvent.waitForFunction.waitForElementToBeRemoved.goto.goBack.goForward.reload.screenshot.snapshot.toMatchSnapshot.toMatchInlineSnapshot.expect.expectTypeOf.step.describe.test.it.beforeAll.beforeEach.afterAll.afterEach.play.userEvent.screen.within`.split(`.`)),nre=[`findBy`,`findAllBy`],gr=new Set(`sleep.delay.wait.pause.throttle.debounce.tick.nextTick.advanceTimersByTime.advanceTimersByTimeAsync.runAllTimers.runAllTimersAsync.runOnlyPendingTimers.runOnlyPendingTimersAsync.setTimeout.setInterval.setImmediate.queueMicrotask.requestAnimationFrame.requestIdleCallback.yieldNow.yieldTo.yieldToBrowser.slice.sliceYield.nextFrame.breathe.onYield.onProgress.progress.onStep.step.stage.runStage.animate.transition.spring.tween.stagger.sequence.timeline.scrub.query.execute.exec.raw.transaction.$transaction.$executeRaw.$queryRaw.$executeRawUnsafe.$queryRawUnsafe.begin.commit.rollback.savepoint.lock.unlock.spawn.spawnSync.execSync.execFile.execFileSync.fork.$.sh.mkdir.rmdir.rename.rm.unlink.writeFile.appendFile.copyFile.navigate.goto.waitForNavigation.waitForURL.waitForLoadState.waitForResponse.waitForRequest.waitForSelector.waitForFunction.waitForEvent`.split(`.`)),_r=e=>typeof e!=`string`||e.length===0?!1:$ne.has(e)?!0:ere.some(t=>e.startsWith(t)),rre=new Set([`it`,`test`]),ire=new Set([`concurrent`,`only`,`skip`]),are=new Set([`doMock`,`mock`,`unstable_mockModule`]),ore=new Set([`jest`,`vi`]),sre=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),cre=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),lre=e=>{if(!e)return!1;let t=`/${e.replaceAll(`\\`,`/`)}`,n=t.slice(t.lastIndexOf(`/`)+1);return n.includes(`.test.`)||n.includes(`.spec.`)||t.includes(`/__tests__/`)||t.includes(`/__test__/`)||t.includes(`/__mocks__/`)},ure=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=Pn(e,e.name);return!!(r&&sre.has(r.source)&&r.exportedName&&t.has(r.exportedName))},dre=(e,t,n)=>lre(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),vr=(e,t,n)=>ure(e,t,n)||dre(e,t,n),yr=e=>{let t=P(e);if(E(t,`Identifier`))return t;if(E(t,`MemberExpression`)){let e=k(t);return!e||!ire.has(e)?null:yr(t.object)}let n=E(t,`CallExpression`)?P(t.callee):E(t,`TaggedTemplateExpression`)?P(t.tag):null;return!E(n,`MemberExpression`)||k(n)!==`each`?null:yr(n.object)},fre=(e,t)=>{let n=b(e),r=n.parent;if(!r||!E(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=yr(r.callee);return!!(i&&vr(i,rre,t))},pre=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!E(r,`Literal`)||typeof r.value!=`string`)return!1;let i=P(e.callee);if(!E(i,`MemberExpression`))return!1;let a=k(i);if(!a||!are.has(a))return!1;let o=P(i.object);return E(o,`Identifier`)&&vr(o,ore,n)},mre=(e,t)=>{let n=e.parent;for(;n;){if(w(n)){let e=b(n),r=e.parent;if(r&&E(r,`CallExpression`)&&pre(r,e,t))return!0}n=n.parent}return!1},hre=(e,t,n)=>{let r=e.parent,i=null;for(r&&E(r,`JSXElement`)&&r.openingElement===e&&(r=r.parent);r&&r!==t;){if(w(r))return!1;if(E(r,`JSXAttribute`)&&(i=r),E(r,`JSXElement`)){let e=r.openingElement.name;if(E(e,`JSXIdentifier`)){let t=n.scopes.referenceFor(e),a=Pn(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&a&&!cre.has(a.source)&&!_r(a.source)&&i?.parent===r.openingElement&&E(i.name,`JSXIdentifier`)&&i.name.name!==`children`)return!0}i=null}r=r.parent}return!1},br=(e,t)=>{if(mre(e,t))return!0;let n=M(e);return!n||!fre(n,t)?!1:hre(e,n,t)},gre=e=>{let t=e.parent;return t?E(t,`JSXSpreadAttribute`)||E(t,`SpreadElement`)?t.argument===e:E(t,`VariableDeclarator`)&&t.init===e:!1},xr=(e,t,n,r,i)=>{let a=P(e);if(r&&E(a,`Identifier`)){let e=r.symbolFor(a);if(!e||e.kind!==`const`||!e.initializer||i.has(e.id)||e.references.some(e=>e.flag!==`read`||!gre(e.identifier)))return!0;i.add(e.id);let o=xr(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!E(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(E(e,`SpreadElement`)){if(xr(e.argument,t,n,r,i))return!0;continue}if(!E(e,`Property`))return!0;let a=A(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},Sr=(e,t,n=!0,r)=>xr(e,t,n,r,new Set),R=(e,t,n=!0)=>{let r=n?t:t.toLowerCase();for(let i=e.length-1;i>=0;--i){let a=e[i];if(!a)return null;if(E(a,`JSXSpreadAttribute`)){if(Sr(a.argument,t,n))return null;continue}if(!E(a,`JSXAttribute`))continue;let o=rn(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},Cr=(e,t)=>e.some(e=>E(e,`JSXSpreadAttribute`)&&Sr(e.argument,t,!1)),wr=e=>{let t=P(e);return E(t,`UnaryExpression`)&&t.operator===`void`&&E(P(t.argument),`Literal`)},Tr=(e,t={})=>{if(!e?.value)return!1;let n=L(e);if(n!==null)return n.trim().length>0;if(!E(e.value,`JSXExpressionContainer`))return!0;let r=P(e.value.expression);return E(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:E(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!wr(r)},_re=(e,t,n)=>{let{openingElement:r}=e;if(r===n||er(r,t))return!1;if(E(r.name,`JSXMemberExpression`)||E(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=R(r.attributes,`aria-label`,!1);if(Tr(i,{booleanValuesRender:!0})||!i&&Cr(r.attributes,`aria-label`))return!0;if(E(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=R(r.attributes,`alt`,!1);return Tr(e)||!e&&Cr(r.attributes,`alt`)}return Dr(e,t,n)},Er=(e,t,n)=>{for(let r of e){if(E(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(E(r,`JSXElement`)){if(_re(r,t,n))return!0;continue}if(E(r,`JSXFragment`)){if(Er(r.children,t,n))return!0;continue}if(E(r,`JSXExpressionContainer`)){let e=P(r.expression);if(E(e,`JSXEmptyExpression`))continue;if(E(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(wr(e)||E(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},Dr=(e,t,n)=>{if(Er(e.children,t,n))return!0;let r=R(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(Tr(r)||!r&&Cr(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=R(e.openingElement.attributes,`children`,!1);return!!(Tr(i)||!i&&Cr(e.openingElement.attributes,`children`))},Or=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&!!t&&Reflect.get(t,`portedRuleMode`)===`curated`},vre=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},yre=e=>!!(E(e,`Identifier`)&&e.name===`undefined`||E(e,`Literal`)&&e.value===null),kr=e=>yre(e)?!0:E(e,`ConditionalExpression`)?kr(e.consequent)||kr(e.alternate):!1,Ar=e=>{if(!e.value)return!1;if(E(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!kr(t):!0}return!0},bre=e=>{if(!e)return!1;let t=Xn(e);return t===`presentation`||t===`none`},jr=e=>{if(!e.value)return!1;if(E(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(E(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:E(t,`Identifier`)&&t.name===`undefined`?!1:E(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},xre=(e,t,n)=>{let r=F(e.attributes,`alt`);if(r){Ar(r)||n.report({node:t,message:'Screen reader users cannot access this image because its `alt` is empty or invalid. Add a short description, or `alt=""` if it is decorative.'});return}if(bre(F(e.attributes,`role`))){n.report({node:t,message:'Screen readers skip a decorative image more reliably with `alt=""` than `role="presentation"`, so use `alt=""` instead.'});return}let i=F(e.attributes,`aria-label`);if(i){jr(i)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-label` has no value, so give it a short description."});return}let a=F(e.attributes,`aria-labelledby`);if(a){jr(a)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-labelledby` has no value, so point it at the id of the text that labels this."});return}n.report({node:t,message:'Screen reader users cannot access this image without `alt`. Add `alt="image_description"`, or `alt=""` if it is decorative.'})},Sre=(e,t,n,r)=>{let i=F(e.attributes,`aria-label`),a=F(e.attributes,`aria-labelledby`),o=i&&jr(i)||a&&jr(a),s=F(e.attributes,`title`),c=s?Xn(s):null,l=!!(c&&c.length>0);o||l||Dr(t,r.settings)||r.report({node:n,message:"Screen reader users cannot use this `<object>` because assistive tech cannot describe it, so add `alt`, `aria-label`, `aria-labelledby`, `title`, or inner fallback text."})},Cre=(e,t,n)=>{let r=F(e.attributes,`aria-label`),i=F(e.attributes,`aria-labelledby`);if(r&&jr(r)||i&&jr(i))return;let a=F(e.attributes,`alt`);(!a||!Ar(a))&&n.report({node:t,message:"Blind users can't use this `<area>` of the image map because screen readers can't describe it, so add `alt`, `aria-label`, or `aria-labelledby`."})},wre=(e,t,n)=>{let r=F(e.attributes,`aria-label`),i=F(e.attributes,`aria-labelledby`);if(r&&jr(r)||i&&jr(i))return;let a=F(e.attributes,`alt`);(!a||!Ar(a))&&n.report({node:t,message:"Blind users can't use this image button because screen readers can't describe it, so add `alt`, `aria-label`, or `aria-labelledby`."})},Mr=C({id:`alt-text`,title:`Image missing alt text`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give every meaningful image an `alt`, `aria-label`, or `aria-labelledby`.",category:`Accessibility`,create:e=>{let t=Or(e.settings);if(t&&cr(e))return kt;let n=vre(e.settings),r=!n.elements||n.elements.includes(`img`),i=!n.elements||n.elements.includes(`object`),a=!n.elements||n.elements.includes(`area`),o=!n.elements||n.elements.includes(`input[type="image"]`),s=new Set(n.img??[]),c=new Set(n.object??[]),l=new Set(n.area??[]),u=new Set(n[`input[type="image"]`]??[]),d=Fne(e.settings);return{JSXOpeningElement(n){if(t&&br(n,e))return;if(!d&&E(n.name,`JSXIdentifier`)){let e=n.name.name;if(e!==`img`&&e!==`object`&&e!==`area`&&e.toLowerCase()!==`input`&&!s.has(e)&&!c.has(e)&&!l.has(e)&&!u.has(e))return}if(t&&cr(e,n)||t&&I(n.attributes))return;let f=Zn(n,e.settings);if(r&&(f===`img`||s.has(f))){if(t&&er(n,e.settings))return;xre(n,n,e);return}if(i&&(f===`object`||c.has(f))){let t=n.parent;t&&E(t,`JSXElement`)&&Sre(n,t,n,e);return}if(a&&(f===`area`||l.has(f))){Cre(n,n,e);return}o&&(f.toLowerCase()===`input`&&(()=>{let e=F(n.attributes,`type`);return e?Xn(e)?.toLowerCase()===`image`:!1})()||u.has(f))&&wre(n,n,e)}}}}),Tre=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,Ere=[`click here`,`here`,`link`,`a link`,`learn more`],Dre=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??Ere}},Ore=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),kre=e=>E(e,`Literal`)&&typeof e.value==`string`?e.value:E(e,`TemplateLiteral`)?c(e):null,Nr=(e,t)=>{let n=e.openingElement,r=F(n.attributes,`aria-label`);if(r){let e=Xn(r);if(e!==null)return e}if(Zn(n,t)===`img`){let e=F(n.attributes,`alt`);if(e){let t=Xn(e);if(t!==null)return t}}if(er(n,t))return null;let i=[];for(let n of e.children){let e=n;if(E(e,`JSXText`))i.push(e.value);else if(E(e,`JSXElement`)){let n=Nr(e,t);n!==null&&i.push(n)}else if(E(e,`JSXExpressionContainer`)){let t=kre(e.expression);t!==null&&i.push(t)}}return i.join(``)},Pr=C({id:`anchor-ambiguous-text`,title:`Ambiguous link text`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Name where a link goes. Avoid 'click here', 'learn more', and 'link'.`,category:`Accessibility`,create:e=>{if(dt(e.filename))return kt;let t=Dre(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(Zn(t.openingElement,e.settings)!==`a`)return;let r=Nr(t,e.settings);if(r===null||r.trim().length===0)return;let i=Ore(r);n.has(i)&&e.report({node:t.openingElement.name,message:Tre(i)})}}}}),Fr=new Set(`alert.alertdialog.application.article.banner.blockquote.button.caption.cell.checkbox.code.columnheader.combobox.complementary.contentinfo.definition.deletion.dialog.directory.doc-abstract.doc-acknowledgments.doc-afterword.doc-appendix.doc-backlink.doc-biblioentry.doc-bibliography.doc-biblioref.doc-chapter.doc-colophon.doc-conclusion.doc-cover.doc-credit.doc-credits.doc-dedication.doc-endnote.doc-endnotes.doc-epigraph.doc-epilogue.doc-errata.doc-example.doc-footnote.doc-foreword.doc-glossary.doc-glossref.doc-index.doc-introduction.doc-noteref.doc-notice.doc-pagebreak.doc-pagelist.doc-part.doc-preface.doc-prologue.doc-pullquote.doc-qna.doc-subtitle.doc-tip.doc-toc.document.emphasis.feed.figure.form.generic.graphics-document.graphics-object.graphics-symbol.grid.gridcell.group.heading.img.insertion.link.list.listbox.listitem.log.main.mark.marquee.math.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.meter.navigation.none.note.option.paragraph.presentation.progressbar.radio.radiogroup.region.row.rowgroup.rowheader.scrollbar.search.searchbox.separator.slider.spinbutton.status.strong.subscript.superscript.switch.tab.table.tablist.tabpanel.term.textbox.time.timer.toolbar.tooltip.tree.treegrid.treeitem`.split(`.`)),Ir=new Set(`button.checkbox.columnheader.combobox.grid.gridcell.link.listbox.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.option.radio.radiogroup.row.rowheader.scrollbar.searchbox.separator.slider.spinbutton.switch.tab.tablist.textbox.toolbar.tree.treegrid.treeitem`.split(`.`)),Are=new Set(`alert.alertdialog.application.article.banner.blockquote.caption.cell.complementary.contentinfo.definition.deletion.dialog.directory.document.feed.figure.form.group.heading.img.insertion.list.listitem.log.main.marquee.math.navigation.note.paragraph.progressbar.region.rowgroup.search.status.table.tabpanel.term.time.timer.tooltip`.split(`.`)),jre=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),Lr=new Set([`presentation`,`none`]),Mre=e=>e.trim().split(/\s+/).find(e=>Fr.has(e))===`link`,Nre=e=>{let t=e.parent;for(;t;){if(E(t,`JSXAttribute`)){let e=t.parent;return e&&E(e,`JSXOpeningElement`)?tr(e.name)===`Trans`:!1}t=t.parent??null}return!1},Pre=e=>e.children.some(e=>{if(!E(e,`JSXElement`))return!1;let t=e,n=tr(t.openingElement.name);return!n||n[0]===n[0]?.toLowerCase()?!1:!F(t.openingElement.attributes,`aria-hidden`)}),Rr=C({id:`anchor-has-content`,title:`Anchor has no content`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Put readable text inside every link.`,category:`Accessibility`,create:e=>{let t=Or(e.settings),n=dt(e.filename);return{JSXElement(r){if(t&&n)return;let i=r.openingElement;if(Zn(i,e.settings)!==`a`)return;let a=F(i.attributes,`href`),o=F(i.attributes,`role`),s=o?Jt(o,e.scopes):[],c=s===null||s.some(e=>Mre(e));if(!(t&&!a&&!c)&&!er(i,e.settings)&&!(Dr(r,e.settings)||!t&&Pre(r))){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(F(i.attributes,e))return;t&&Nre(r)||e.report({node:i.name,message:"Blind users can't follow this link because screen readers announce nothing, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}}),zr=[`href`],Br=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return zr;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return zr;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?zr:r},Vr="Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions).",Hr="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",Ur="Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.",Fre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:[...Br(e),...n.specialLink??[]],components:new Set(n.components??[]),aspects:n.aspects?new Set(n.aspects):null}},Wr=(e,t)=>e.aspects===null||e.aspects.has(t),Ire=e=>{let t=e.parent;if(!t||!E(t,`JSXElement`))return!1;let n=t.parent;if(!n||!E(n,`JSXElement`))return!1;let r=tr(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},Lre=e=>!!F(e.attributes,`role`)&&!!F(e.attributes,`tabindex`)&&(!!F(e.attributes,`onkeydown`)||!!F(e.attributes,`onkeyup`)),Gr=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},Rre=e=>{if(E(e,`JSXExpressionContainer`)){let t=e.expression;if(E(t,`Identifier`)&&t.name===`undefined`||E(t,`Literal`)&&t.value===null)return!0}return!!E(e,`JSXFragment`)},zre=e=>{let t=e.value;if(!t)return`nullish`;if(E(t,`Literal`))return typeof t.value==`string`&&Gr(t.value,new Set)?`invalid`:`valid`;if(E(t,`JSXExpressionContainer`)){let e=t.expression;return E(e,`Identifier`)&&e.name===`undefined`?`nullish`:E(e,`Literal`)?e.value===null?`nullish`:typeof e.value==`string`&&Gr(e.value,new Set)?`invalid`:`valid`:E(e,`TemplateLiteral`)&&e.expressions.length===0&&Gr(e.quasis[0]?.value.cooked??``,new Set)?`invalid`:`valid`}return E(t,`JSXFragment`)?`nullish`:`valid`},Kr=C({id:`anchor-is-valid`,title:`Anchor used as a button`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Give links a real destination. Use `<button>` for in-page actions.",category:`Accessibility`,create:e=>{let t=Fre(e.settings),n=Or(e.settings),r=Fne(e.settings),i=dt(e.filename);return{JSXOpeningElement(a){if(n&&i)return;let o=Zn(a,e.settings),s=tr(a.name);if(o!==`a`&&(n||!s||!t.components.has(s))||n&&!r&&o!==`a`)return;if(!n){let n=!1,r=!1;for(let e of t.hrefAttributeNames){let t=F(a.attributes,e);if(!t)continue;let i=zre(t);i===`invalid`?(n=!0,r=!0):i===`valid`&&(n=!0)}let i=I(a.attributes),o=!!F(a.attributes,`onClick`);if(!n){!i&&Wr(t,`noHref`)&&(!o||!Wr(t,`preferButton`))&&e.report({node:a.name,message:Vr}),!i&&o&&Wr(t,`preferButton`)&&e.report({node:a.name,message:Ur});return}r&&(o&&Wr(t,`preferButton`)?e.report({node:a.name,message:Ur}):Wr(t,`invalidHref`)&&e.report({node:a.name,message:Hr}));return}let c;for(let e of t.hrefAttributeNames)if(c=F(a.attributes,e),c)break;if(c){if(!c.value){e.report({node:a.name,message:Hr});return}let n=Jt(c,e.scopes);if(n===null?Rre(c.value):n.length>0&&n.every(e=>Gr(e,t.validHrefs))){let t=!!F(a.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:a.name,message:t?Ur:Hr})}return}I(a.attributes)||Ire(a)||Lre(a)||e.report({node:a.name,message:Vr})}}}}),qr=C({id:`anchor-target-exists`,title:`Fragment link target is missing`,severity:`warn`,recommendation:`Add an element with the referenced id, or update the fragment link to point to an existing target.`,create:e=>{if(dt(e.filename))return kt;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(Zn(n,e.settings)!==`a`)return;let r=null;for(let t of Br(e.settings))if(r=R(n.attributes,t,!1),r)break;if(!r)return;let i=L(r);if(!i?.startsWith(`#`)||i.length===1||i.startsWith(`#/`)||i.startsWith(`#!`))return;let a=i.indexOf(`:~:`),o=i.slice(1,a===-1?void 0:a);!o||o.toLowerCase()===`top`||t.push({hrefAttribute:r,targetId:o})},"Program:exit"(){if(!n||t.length===0)return;let r=Xee({configuredRootDirectory:ye(e.settings,`rootDirectory`),currentFilePath:e.filename??``,currentProgramNode:n,currentScopes:e.scopes});if(r)for(let n of t)r.has(n.targetId)||e.report({node:n.hrefAttribute,message:`This fragment link points to "#${n.targetId}", but no matching static id was found in the project.`})}}}}),Bre=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),Jr=new Set(`a.abbr.acronym.address.applet.area.article.aside.audio.b.base.basefont.bdi.bdo.bgsound.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.command.content.data.datalist.dd.del.details.dfn.dialog.dir.div.dl.dt.element.em.embed.fieldset.figcaption.figure.font.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.image.img.input.ins.isindex.kbd.keygen.label.legend.li.link.listing.main.map.mark.marquee.math.menu.menuitem.meta.meter.multicol.nav.nextid.nobr.noembed.noframes.noscript.object.ol.optgroup.option.output.p.param.picture.plaintext.pre.progress.q.rb.rbc.rp.rt.rtc.ruby.s.samp.script.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.svg.table.tbody.td.template.textarea.tfoot.th.thead.time.title.tr.track.tt.u.ul.var.video.wbr.xmp`.split(`.`)),Yr=new Set(`abbr.address.article.aside.blockquote.br.caption.code.dd.del.details.dfn.dialog.dir.dl.dt.em.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.hr.html.iframe.img.ins.label.legend.li.main.mark.marquee.menu.meter.nav.ol.optgroup.output.p.pre.progress.ruby.section.strong.sub.sup.table.tbody.tfoot.thead.time.ul`.split(`.`)),Xr=e=>e.kind!==`const`||!E(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,Vre=new Set([``,`plaintext-only`,`true`]),Zr={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},Qr={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},$r={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},ei={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},Hre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),ti=(e,t,n)=>{let r=P(e);if(E(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?Zr:Qr;if(typeof r.value==`string`){let e=r.value.toLowerCase();return Vre.has(e)?Zr:e===`false`?Qr:$r}return $r}if(E(r,`ConditionalExpression`))return Hre(ti(r.consequent,t,n),ti(r.alternate,t,n));if(E(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return ei;let i=Xr(e);if(!i)return ei;let a=new Set(n);return a.add(e.id),ti(i,t,a)}return ei},ni=(e,t)=>{let n=F(e.attributes,`contenteditable`);return n?n.value?E(n.value,`Literal`)?ti(n.value,t,new Set):E(n.value,`JSXExpressionContainer`)?ti(n.value.expression,t,new Set):ei:Zr:null},Ure=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(E(r,`JSXElement`)){let e=r.openingElement;if(!Jr.has(Zn(e,n)))return!1;let i=ni(e,t);if(i){if(i.canBeEnabled&&!i.canBeDisabled&&!i.canBeInherited)return!0;if(!(i.canBeInherited&&!i.canBeDisabled&&!i.canBeEnabled))return!1}}r=r.parent}return!1},ri=(e,t,n)=>ni(e,t)?.canBeEnabled?!Ure(e,t,n):!1,ii=(e,t)=>{switch(e){case`audio`:case`button`:case`canvas`:case`datalist`:case`embed`:case`menuitem`:case`option`:case`select`:case`summary`:case`td`:case`th`:case`tr`:case`textarea`:case`video`:return!0;case`input`:{let e=F(t.attributes,`type`);if(e){let t=Xn(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return F(t.attributes,`href`)!==void 0;case`img`:return F(t.attributes,`usemap`)!==void 0;default:return!1}},ai=e=>{if(!e)return null;if(E(e,`Literal`)){if(typeof e.value==`number`)return e.value;if(typeof e.value==`string`){let t=Number(e.value);return Number.isFinite(t)?t:null}}if(E(e,`JSXExpressionContainer`)){let t=e.expression;if(E(t,`Literal`)){if(typeof t.value==`number`)return t.value;if(typeof t.value==`string`){let e=Number(t.value);return Number.isFinite(e)?e:null}}if(E(t,`UnaryExpression`)&&t.operator===`-`&&E(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(E(t,`TemplateLiteral`)){let e=c(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(E(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return E(t.test,`Literal`)?ai(e(t.test.value?t.consequent:t.alternate)):ai(e(t.consequent))}}return null},oi="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",si=C({id:`aria-activedescendant-has-tabindex`,title:`aria-activedescendant missing tabindex`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Add `tabIndex` so keyboard users can reach elements that use `aria-activedescendant`.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){if(!F(t.attributes,`aria-activedescendant`))return;let n=Zn(t,e.settings);if(!Jr.has(n))return;let r=F(t.attributes,`tabIndex`);if(r){let n=ai(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:oi});return}ii(n,t)||ri(t,e.scopes,e.settings)||e.report({node:t.name,message:oi})}})}),Wre=[`aria-label`,`aria-labelledby`,`alt`,`title`],ci=(e,t)=>{let n=R(e.attributes,t,!1);if(!n)return!1;let r=L(n);return r===null?null:r.trim().length>0},li=C({id:`aria-braille-equivalent`,title:`Braille-only accessible description`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Pair braille-specific labels and role descriptions with an equivalent accessible name or role description.`,create:e=>({JSXElement(t){let n=t.openingElement;if(I(n.attributes))return;if(ci(n,`aria-brailleroledescription`)===!0&&ci(n,`aria-roledescription`)===!1){let t=R(n.attributes,`aria-brailleroledescription`,!1);t&&e.report({node:t,message:`This braille role description has no non-braille equivalent. Add a nonempty aria-roledescription for other assistive technologies.`})}if(ci(n,`aria-braillelabel`)!==!0||Dr(t,e.settings)||Wre.map(e=>ci(n,e)).some(e=>e===!0||e===null))return;let r=R(n.attributes,`aria-braillelabel`,!1);r&&e.report({node:r,message:`This braille label is the element's only accessible name. Add visible text, aria-label, aria-labelledby, alt, or title for non-braille assistive technology.`})}})}),ui=new Map([[`aria-activedescendant`,{type:`id`}],[`aria-atomic`,{type:`boolean`}],[`aria-autocomplete`,{type:`token`,allowedTokens:[`inline`,`list`,`both`,`none`]}],[`aria-braillelabel`,{type:`string`}],[`aria-brailleroledescription`,{type:`string`}],[`aria-busy`,{type:`boolean`}],[`aria-checked`,{type:`tristate`}],[`aria-colcount`,{type:`integer`}],[`aria-colindex`,{type:`integer`}],[`aria-colspan`,{type:`integer`}],[`aria-controls`,{type:`idlist`}],[`aria-current`,{type:`token`,allowedTokens:[`page`,`step`,`location`,`date`,`time`,`true`,`false`]}],[`aria-describedby`,{type:`idlist`}],[`aria-description`,{type:`string`}],[`aria-details`,{type:`id`}],[`aria-disabled`,{type:`boolean`}],[`aria-dropeffect`,{type:`tokenlist`,allowedTokens:[`copy`,`execute`,`link`,`move`,`none`,`popup`]}],[`aria-errormessage`,{type:`id`}],[`aria-expanded`,{type:`true-false-undefined`}],[`aria-flowto`,{type:`idlist`}],[`aria-grabbed`,{type:`true-false-undefined`}],[`aria-haspopup`,{type:`token`,allowedTokens:[`false`,`true`,`menu`,`listbox`,`tree`,`grid`,`dialog`]}],[`aria-hidden`,{type:`true-false-undefined`}],[`aria-invalid`,{type:`token`,allowedTokens:[`grammar`,`false`,`spelling`,`true`]}],[`aria-keyshortcuts`,{type:`string`}],[`aria-label`,{type:`string`}],[`aria-labelledby`,{type:`idlist`}],[`aria-level`,{type:`integer`}],[`aria-live`,{type:`token`,allowedTokens:[`assertive`,`off`,`polite`]}],[`aria-modal`,{type:`boolean`}],[`aria-multiline`,{type:`boolean`}],[`aria-multiselectable`,{type:`boolean`}],[`aria-orientation`,{type:`token`,allowedTokens:[`horizontal`,`undefined`,`vertical`]}],[`aria-owns`,{type:`idlist`}],[`aria-placeholder`,{type:`string`}],[`aria-posinset`,{type:`integer`}],[`aria-pressed`,{type:`tristate`}],[`aria-readonly`,{type:`boolean`}],[`aria-relevant`,{type:`tokenlist`,allowedTokens:[`additions`,`all`,`removals`,`text`]}],[`aria-required`,{type:`boolean`}],[`aria-roledescription`,{type:`string`}],[`aria-rowcount`,{type:`integer`}],[`aria-rowindex`,{type:`integer`}],[`aria-rowspan`,{type:`integer`}],[`aria-selected`,{type:`true-false-undefined`}],[`aria-setsize`,{type:`integer`}],[`aria-sort`,{type:`token`,allowedTokens:[`ascending`,`descending`,`none`,`other`]}],[`aria-valuemax`,{type:`number`}],[`aria-valuemin`,{type:`number`}],[`aria-valuenow`,{type:`number`}],[`aria-valuetext`,{type:`string`}]]),Gre=e=>ui.has(e),Kre=e=>`Screen reader users get no help from \`${e}\` because it isn't a real ARIA attribute, so fix the spelling against the WAI-ARIA list.`,di=C({id:`aria-props`,title:`Invalid ARIA attribute`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Only use `aria-*` attributes that actually exist.",category:`Accessibility`,create:e=>({JSXAttribute(t){if(!E(t.name,`JSXIdentifier`))return;let n=rn(t.name);!n||!n.startsWith(`aria-`)||Gre(n)||e.report({node:t.name,message:Kre(n)})}})}),qre={"aria-activedescendant":{kind:`id`},"aria-details":{kind:`id`},"aria-errormessage":{kind:`id`},"aria-atomic":{kind:`boolean`},"aria-busy":{kind:`boolean`},"aria-disabled":{kind:`boolean`},"aria-modal":{kind:`boolean`},"aria-multiline":{kind:`boolean`},"aria-multiselectable":{kind:`boolean`},"aria-readonly":{kind:`boolean`},"aria-required":{kind:`boolean`},"aria-braillelabel":{kind:`string`},"aria-brailleroledescription":{kind:`string`},"aria-description":{kind:`string`},"aria-keyshortcuts":{kind:`string`},"aria-label":{kind:`string`},"aria-placeholder":{kind:`string`},"aria-roledescription":{kind:`string`},"aria-valuetext":{kind:`string`},"aria-checked":{kind:`tristate`},"aria-pressed":{kind:`tristate`},"aria-colcount":{kind:`integer`},"aria-colindex":{kind:`integer`},"aria-colspan":{kind:`integer`},"aria-level":{kind:`integer`},"aria-posinset":{kind:`integer`},"aria-rowcount":{kind:`integer`},"aria-rowindex":{kind:`integer`},"aria-rowspan":{kind:`integer`},"aria-setsize":{kind:`integer`},"aria-controls":{kind:`id-list`},"aria-describedby":{kind:`id-list`},"aria-flowto":{kind:`id-list`},"aria-labelledby":{kind:`id-list`},"aria-owns":{kind:`id-list`},"aria-expanded":{kind:`optional-boolean`},"aria-grabbed":{kind:`optional-boolean`},"aria-hidden":{kind:`optional-boolean`},"aria-selected":{kind:`optional-boolean`},"aria-valuemax":{kind:`number`},"aria-valuemin":{kind:`number`},"aria-valuenow":{kind:`number`},"aria-autocomplete":{kind:`token`,tokens:[`none`,`inline`,`list`,`both`]},"aria-current":{kind:`token`,tokens:[`page`,`step`,`location`,`date`,`time`,`true`,`false`]},"aria-haspopup":{kind:`token`,tokens:[`false`,`true`,`menu`,`listbox`,`tree`,`grid`,`dialog`]},"aria-invalid":{kind:`token`,tokens:[`grammar`,`false`,`spelling`,`true`]},"aria-live":{kind:`token`,tokens:[`assertive`,`off`,`polite`]},"aria-orientation":{kind:`token`,tokens:[`horizontal`,`undefined`,`vertical`]},"aria-sort":{kind:`token`,tokens:[`ascending`,`descending`,`none`,`other`]},"aria-dropeffect":{kind:`token-list`,tokens:[`copy`,`execute`,`link`,`move`,`none`,`popup`]},"aria-relevant":{kind:`token-list`,tokens:[`additions`,`all`,`removals`,`text`]}},Jre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:return`'true' or 'false'`;case`tristate`:return`'true', 'false', or 'mixed'`;case`string`:return`a string value`;case`integer`:return`an integer value`;case`number`:return`a number value`;case`id`:return`a single element ID`;case`id-list`:return`a space-separated list of element IDs`;case`token`:return`one of: ${e.tokens.join(`, `)}`;case`token-list`:return`a space-separated list of: ${e.tokens.join(`, `)}`}},fi=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${Jre(t)}.`,Yre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:case`tristate`:case`string`:return!0;case`token`:case`token-list`:return e.tokens.includes(`true`);default:return!1}},pi=e=>{if(E(e,`Literal`))return typeof e.value==`boolean`?e.value:typeof e.value==`string`?e.value.length>0:typeof e.value==`number`?e.value!==0&&!Number.isNaN(e.value):e.value===null?!1:null;if(E(e,`TemplateLiteral`)){let t=c(e);return t===null?null:t.length>0}if(E(e,`UnaryExpression`)&&e.operator===`!`){let t=pi(e.argument);return t===null?null:!t}return null},Xre=e=>{if(E(e,`Literal`))return!0;if(E(e,`JSXExpressionContainer`)){let t=e.expression;return E(t,`Literal`)?t.value!==null:E(t,`TemplateLiteral`)?!0:E(t,`UnaryExpression`)&&t.operator===`!`?pi(t.argument)!==null:!1}return!1},mi=(e,t)=>{if(E(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(E(e,`JSXExpressionContainer`)){let n=e.expression;if(E(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(E(n,`TemplateLiteral`))return c(n)?.toLowerCase()??null;if(t&&E(n,`UnaryExpression`)&&n.operator===`!`){let e=pi(n.argument);return e===null?null:String(!e)}}return null},hi=e=>{if(!E(e,`JSXExpressionContainer`))return!1;let t=e.expression;return E(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},Zre=(e,t)=>{if(!Xre(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=mi(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=mi(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return hi(t)?!0:mi(t,!1)!==null;case`integer`:case`number`:{let e=mi(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(E(t,`JSXExpressionContainer`)){let e=t.expression;if(E(e,`Literal`)&&typeof e.value==`number`||E(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&E(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(hi(t))return!0;let e=mi(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=mi(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=mi(t,!0);if(n===null)return!1;let r=n.split(/\s+/).filter(e=>e.length>0);return r.length===0?!1:r.every(t=>e.tokens.includes(t))}}},gi=C({id:`aria-proptypes`,title:`Invalid ARIA attribute value`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give each `aria-*` attribute the kind of value it expects.",category:`Accessibility`,create:e=>({JSXAttribute(t){if(!E(t.name,`JSXIdentifier`))return;let n=rn(t.name);if(!n)return;let r=n.toLowerCase(),i=qre[r];if(i){if(!t.value){Yre(i)||e.report({node:t,message:fi(r,i)});return}Zre(i,t.value)||e.report({node:t,message:fi(r,i)})}}})}),_i=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,Qre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??Or(e)}},vi=C({id:`aria-role`,title:`Invalid ARIA role`,tags:[`react-jsx-only`],severity:`error`,recommendation:`Use a real, non-abstract ARIA role so assistive tech can expose the element correctly.`,category:`Accessibility`,create:e=>{let t=Qre(e.settings);return{JSXOpeningElement(n){let r=F(n.attributes,`role`);if(!r)return;let i=Zn(n,e.settings);if(t.ignoreNonDOM&&!Jr.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:_i(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!Fr.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:_i(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:_i(``)});return}if(E(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:_i(``)});return}a([o.value]);return}if(E(o,`JSXExpressionContainer`)){let t=o.expression;if(E(t,`Literal`)&&t.value===null){e.report({node:r,message:_i(``)});return}if(E(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:_i(``)});return}let n=Jt(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:_i(``)})}}}}),$re=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,yi=C({id:`aria-unsupported-elements`,title:`ARIA on unsupported element`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Do not put `role` or `aria-*` on reserved HTML elements.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){let n=Zn(t,e.settings);if(Bre.has(n))for(let r of t.attributes){if(!E(r,`JSXAttribute`)||!E(r.name,`JSXIdentifier`))continue;let t=rn(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:$re(n,t)})}}})}),bi=(e,t)=>{if(e){if(E(e,`Identifier`)){t.add(e.name);return}if(E(e,`AssignmentPattern`)){bi(e.left,t);return}if(E(e,`RestElement`)){bi(e.argument,t);return}if(E(e,`ArrayPattern`)){for(let n of e.elements??[])bi(n,t);return}if(E(e,`ObjectPattern`))for(let n of e.properties??[]){if(E(n,`RestElement`)){bi(n.argument,t);continue}E(n,`Property`)&&bi(n.value,t)}}},xi=(e,t,n)=>{if(e&&!E(e,`Identifier`)){if(E(e,`AssignmentPattern`)){Si(e.right,t,n),xi(e.left,t,n);return}if(E(e,`RestElement`)){xi(e.argument,t,n);return}if(E(e,`ArrayPattern`)){for(let r of e.elements??[])xi(r,t,n);return}if(E(e,`ObjectPattern`))for(let r of e.properties??[]){if(E(r,`RestElement`)){xi(r.argument,t,n);continue}E(r,`Property`)&&(r.computed&&Si(r.key,t,n),xi(r.value,t,n))}}},eie=(e,t,n)=>{if(!E(e,`FunctionDeclaration`)&&!E(e,`FunctionExpression`)&&!E(e,`ArrowFunctionExpression`))return;let r=new Set(n);for(let t of e.params??[])bi(t,r);for(let n of e.params??[])xi(n,t,r);Si(e.body,t,r)},Si=(e,t,n)=>{if(!e)return;if(E(e,`Identifier`)){n.has(e.name)||t.add(e.name);return}if(E(e,`MemberExpression`)){Si(e.object,t,n),e.computed&&Si(e.property,t,n);return}if(E(e,`Property`)){e.computed&&Si(e.key,t,n),Si(e.value,t,n);return}if(E(e,`FunctionDeclaration`)||E(e,`FunctionExpression`)||E(e,`ArrowFunctionExpression`)){eie(e,t,n);return}if(E(e,`TSAsExpression`)||E(e,`TSSatisfiesExpression`)||E(e,`TSTypeAssertion`)||E(e,`TSNonNullExpression`)||E(e,`TSInstantiationExpression`)){Si(e.expression,t,n);return}if(typeof e.type==`string`&&e.type.startsWith(`TS`))return;let r=e;for(let e of Object.keys(r)){if(e===`parent`||qte.has(e))continue;let i=r[e];if(Array.isArray(i))for(let e of i)j(e)&&Si(e,t,n);else j(i)&&Si(i,t,n)}},Ci=(e,t)=>Si(e,t,new Set),wi=e=>{if(!e)return!1;let t=!1;return D(e,e=>{if(t||E(e,`FunctionDeclaration`)||E(e,`FunctionExpression`)||E(e,`ArrowFunctionExpression`))return!1;if(E(e,`AwaitExpression`))return t=!0,!1}),t},Ti=e=>{let t=e;E(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!E(n,`Property`)||n.value!==t||!n.parent||!E(n.parent,`ObjectPattern`)?null:A(n,{allowComputedString:!0})},tie=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),Ei=(e,t)=>{let n=P(e);return E(n,`Literal`)?!0:E(n,`Identifier`)?t.has(n.name):E(n,`BinaryExpression`)||E(n,`LogicalExpression`)?Ei(n.left,t)&&Ei(n.right,t):E(n,`UnaryExpression`)?n.operator!==`delete`&&Ei(n.argument,t):E(n,`ConditionalExpression`)?Ei(n.test,t)&&Ei(n.consequent,t)&&Ei(n.alternate,t):E(n,`TemplateLiteral`)?n.expressions.every(e=>Ei(e,t)):!1},Di=(e,t,n)=>{let r=P(e);if(!E(r,`CallExpression`)||!r.arguments.every(e=>!E(e,`SpreadElement`)&&Ei(e,t)))return!1;let i=P(r.callee);if(!E(i,`MemberExpression`)||k(i)!==`resolve`)return!1;let a=P(i.object);return E(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},nie=(e,t,n)=>!E(e,`ExpressionStatement`)||!E(e.expression,`AwaitExpression`)?!1:Di(e.expression.argument,t,n),rie=(e,t)=>{if(!E(e,`ExpressionStatement`)||!E(e.expression,`AssignmentExpression`)||!tie.has(e.expression.operator))return!1;let n=P(e.expression.left);if(!E(n,`MemberExpression`)||k(n)===null)return!1;let r=P(n.object);return E(r,`Identifier`)&&t.has(r.name)&&E(P(e.expression.right),`Literal`)},iie=(e,t)=>{if(!w(e))return!1;let n=new Set;for(let t of e.params){if(!E(t,`Identifier`))return!1;n.add(t.name)}if(!e.async){if(!E(e.body,`BlockStatement`))return Di(e.body,n,t);if(e.body.body.length!==1)return!1;let[r]=e.body.body;return!!(E(r,`ReturnStatement`)&&r.argument&&Di(r.argument,n,t))}if(!E(e.body,`BlockStatement`))return Ei(e.body,n);let r=e.body.body;for(let e=0;e<r.length;e++){let i=r[e],a=e===r.length-1;if(!nie(i,n,t)&&!(E(i,`ExpressionStatement`)&&Ei(i.expression,n)))return rie(i,n)?a:!E(i,`ReturnStatement`)||!a?!1:!i.argument||Ei(i.argument,n)||Di(i.argument,n,t)}return!0},aie=(e,t)=>E(e,`Property`)?qt(e,t,{allowConstTemplateLiteral:!0}):null,oie=(e,t)=>E(e,`MemberExpression`)?qt(e,t,{allowConstTemplateLiteral:!0}):null,Oi=(e,t,n,r,i)=>{let a=P(e);if(E(a,`Identifier`)){let e=r.symbolFor(a);return!e||e.kind!==`const`||!e.initializer||i.has(e.id)||bn(e,n,r)||qe(a,t,r)?null:(i.add(e.id),Oi(e.initializer,t,n,r,i))}if(!E(a,`ObjectExpression`))return null;let o=null;for(let e of a.properties){if(!E(e,`Property`)||e.kind!==`init`)return null;let n=aie(e,r);if(n===null)return null;n===t&&(o=e)}if(!o||!E(o,`Property`))return null;let s=P(o.value);return w(s)?s:ki(s,n,r,i)},ki=(e,t,n,r)=>{let i=P(e);if(w(i))return i;if(E(i,`MemberExpression`)){let e=oie(i,n);return e===null?null:Oi(P(i.object),e,t,n,r)}if(!E(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||bn(a,t,n)||(r.add(a.id),!a.initializer))return null;let o=P(a.initializer),s=Ti(a.bindingIdentifier);return s===null?w(o)?o:a.kind===`const`?ki(o,t,n,r):null:Oi(o,s,t,n,r)},Ai=(e,t)=>{let n=P(e);return!E(n,`CallExpression`)||On(n,t)?null:ki(n.callee,n,t,new Set)},ji=(e,t)=>{let n=Ai(e,t);return n&&iie(n,t)?n:null},z=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},Mi=e=>!!(e&&(E(e,`ArrowFunctionExpression`)||E(e,`FunctionExpression`))),sie=(e,t)=>{if(!E(e,`LogicalExpression`))return!1;let n=b(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?z(t,n):!!(e.operator===`||`&&r&&z(t,r));return E(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):E(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(E(r,`WhileStatement`)||E(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||E(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?z(t,r.body):!1},Ni=(e,t,n)=>{let r=n.cfg.enclosingFunction(t);if(!r||n.cfg.enclosingFunction(e)!==r)return!1;let i=n.cfg.cfgFor(r),a=i?.blockOf(e),o=i?.blockOf(t);if(!i||!a||!o)return!1;let s=e,c=e.parent??null;for(;c&&c!==r;){let e=null;if(E(c,`LogicalExpression`)&&c.right===s||E(c,`ConditionalExpression`)&&c.test!==s||E(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(E(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||E(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!z(t,e)&&!sie(c,t))return!1;s=c,c=c.parent??null}let l=(e,t,n)=>{let r=new Set,i=e===n?[]:[e];for(;i.length>0;){let e=i.shift();if(!(!e||r.has(e))){if(e===t)return!0;r.add(e);for(let t of e.successors)t.to!==n&&i.push(t.to)}}return!1};return!l(i.entry,a)||!l(i.entry,o)?!1:a===o?e.range[0]<t.range[0]:!l(i.entry,o,a)},B=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(E(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e)return t.scopes.isGlobalReference(r)?`global:${r.name}`:null;if(n.has(e.id))return`symbol:${e.id}`;n.add(e.id);let i=e.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=E(i,`Property`)?A(i):null;if(s&&E(a,`ObjectPattern`)&&E(o,`VariableDeclarator`)&&o.id===a){let r=B(o.init,t,n);return r?`${r}.${s}`:`symbol:${e.id}`}let c=e.initializer?P(e.initializer):null;return e.kind===`const`&&c&&(E(c,`Identifier`)||E(c,`MemberExpression`))?B(c,t,n)??`symbol:${e.id}`:`symbol:${e.id}`}if(E(r,`MemberExpression`)){let e=A(r,{allowComputedString:!0});if(!e)return null;let i=B(r.object,t,n);return i?`${i}.${e}`:null}if(E(r,`ThisExpression`))return`this`;if(E(r,`Literal`)&&(typeof r.value==`string`||typeof r.value==`number`))return`literal:${String(r.value)}`;if(w(r)){let e=S(r);return e===null?null:`function:${e}`}return null},cie=new Set(lr),lie=new Set([`push`,`unshift`]),uie=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setTimeout`]),die=new Set([`yieldNow`,`yieldTo`,`yieldToBrowser`,`slice`,`sliceYield`,`nextFrame`,`breathe`,`onYield`,`onProgress`,`progress`,`onStep`,`step`,`runStage`]),fie=e=>E(e,`Identifier`)?e.name:E(e,`MemberExpression`)&&E(e.property,`Identifier`)?e.property.name:null,Pi=e=>E(e,`ForStatement`)||E(e,`ForInStatement`)||E(e,`ForOfStatement`)||E(e,`WhileStatement`)||E(e,`DoWhileStatement`)?e.body:null,pie=(e,t=!1,n)=>{let r=null;return D(e,i=>{if(r||i!==e&&w(i)||t&&i!==e&&cie.has(i.type))return!1;E(i,`AwaitExpression`)&&!n?.(i)&&(r=i)}),r},Fi=e=>{if(E(e,`Identifier`))return gr.has(e.name);if(E(e,`MemberExpression`)&&E(e.property,`Identifier`)){let t=P(e.object);return e.property.name===`check`&&E(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)?!0:gr.has(e.property.name)}return!1},mie=(e,t)=>{if(E(e.callee,`Identifier`)&&uie.has(e.callee.name)&&t.scopes.isGlobalReference(e.callee))return!0;if(!E(e.callee,`MemberExpression`)||!E(e.callee.property,`Identifier`)||!uie.has(e.callee.property.name))return!1;let n=P(e.callee.object);return E(n,`Identifier`)&&(n.name===`globalThis`||n.name===`window`)&&t.scopes.isGlobalReference(n)},hie=(e,t,n=new Set)=>{if(!w(e)||n.has(e))return!1;n.add(e);let r=!1,i=!1;return D(e.body,a=>{if(a!==e.body&&w(a))return!1;if(E(a,`NewExpression`)&&E(a.callee,`Identifier`)&&a.callee.name===`Promise`&&t.scopes.isGlobalReference(a.callee)){let e=b(a),n=e.parent,i=E(n,`ReturnStatement`)&&n.argument===e||E(n,`AwaitExpression`)&&n.argument===e||w(n)&&n.body===e,o=a.arguments[0];i&&w(o)&&D(o.body,e=>{if(e!==o.body&&w(e))return!1;E(e,`CallExpression`)&&mie(e,t)&&(r=!0)})}if(!E(a,`CallExpression`)||mie(a,t))return;let o=Ai(a,t.scopes);if(o!==null){hie(o,t,n)&&(i=!0);return}Fi(a.callee)&&(i=!0)}),r||i},gie=(e,t)=>{if(!E(e,`AwaitExpression`))return!1;let n=e.argument;if(!n||!E(n,`CallExpression`))return!1;if(n.arguments.some(e=>{if(E(e,`SpreadElement`))return!1;let t=P(e);return E(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)}))return!0;let r=Ai(n,t.scopes);if(r!==null&&hie(r,t))return!0;if(ji(n,t.scopes)!==null)return!1;let i=fie(n.callee);return r!==null&&i&&die.has(i)?!1:Fi(n.callee)},_ie=(e,t)=>E(e,`AwaitExpression`)&&!!e.argument&&On(e.argument,t.scopes),vie=new Set([`all`,`allSettled`,`race`,`any`]),Ii=e=>{if(!E(e,`CallExpression`))return!1;let t=e.callee;return!E(t,`MemberExpression`)||t.computed||!E(t.object,`Identifier`)||t.object.name!==`Promise`||!E(t.property,`Identifier`)?!1:vie.has(t.property.name)},yie=e=>E(e,`AwaitExpression`)?Ii(e.argument):!1,bie=e=>{if(!E(e,`AwaitExpression`))return!1;let t=e.argument;if(!E(t,`NewExpression`)||!E(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(E(n,`Identifier`)&&gr.has(n.name))return!0;if(!Mi(n))return!1;let r=n.params?.[0],i=E(r,`Identifier`)?r.name:null,a=!1;return D(n.body,e=>{if(a)return!1;if(E(e,`CallExpression`)&&Fi(e.callee)||i&&E(e,`AssignmentExpression`)&&E(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},xie=e=>{let t=e;for(;E(t,`MemberExpression`);)t=t.object;return E(t,`Identifier`)?t.name:null},Sie=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Cie=(e,t)=>!!t&&e.references.some(e=>{let n=b(e.identifier),r=n.parent;return E(r,`ReturnStatement`)&&r.argument===n&&M(r)===t}),Li=(e,t,n)=>{if(E(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(E(e,`ObjectPattern`)){for(let r of e.properties??[])E(r,`Property`)&&r.value?Li(r.value,t,n):E(r,`RestElement`)&&r.argument&&Li(r.argument,t,n);return}if(E(e,`ArrayPattern`)){for(let r of e.elements??[])r&&Li(r,t,n);return}E(e,`AssignmentPattern`)&&e.left&&Li(e.left,t,n)},Ri=(e,t)=>{let n=new Set;return D(e,r=>{if(r!==e&&w(r))return!1;if(!E(r,`Identifier`))return;let i=t.symbolFor(r);i&&n.add(i.id)}),n},wie=(e,t)=>{let n=new Set;if(E(e,`ForOfStatement`)||E(e,`ForInStatement`))if(E(e.left,`VariableDeclaration`))for(let r of e.left.declarations)Li(r.id,t,n);else Li(e.left,t,n);return n},Tie=(e,t,n=null)=>{let r=new Set,i=[];D(e,a=>{if(a!==e&&w(a))return!1;if(E(a,`VariableDeclarator`)&&a.id&&a.init){let e=new Set;if(Li(a.id,t,e),n&&z(n,a.init)||!n&&wi(a.init))for(let t of e)r.add(t);let o=Ri(a.init,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o});return}if(E(a,`AssignmentExpression`)&&a.left){let e=new Set;if(Li(a.left,t,e),n&&z(n,a.right)||!n&&wi(a.right))for(let t of e)r.add(t);let o=Ri(a.right,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o})}});let a=!0;for(;a;){a=!1;for(let{declaredSymbolId:e,referencedSymbolIds:t}of i)if(!r.has(e)){for(let n of t)if(r.has(n)){r.add(e),a=!0;break}}}return r},Eie=e=>E(e,`Identifier`)?e:E(e,`AssignmentPattern`)&&E(e.left,`Identifier`)?e.left:null,Die=(e,t)=>{if(!E(e,`AwaitExpression`))return!1;let n=e.argument;if(!E(n,`CallExpression`))return!1;let r=Ai(n,t.scopes);if(!w(r))return!1;let i=M(n),a=t.scopes.ownScopeFor(r);if(!a)return!1;let o=Tie(r.body,t.scopes),s=new Set;for(let[e,a]of r.params.entries()){let r=Eie(a);if(!r)continue;let o=n.arguments[e];if(!E(o,`Identifier`))continue;let c=t.scopes.symbolFor(r),l=t.scopes.symbolFor(o);c&&l&&(Cie(l,i)||l.id===c.id)&&s.add(c.id)}let c=!1;return D(r.body,e=>{if(c||e!==r.body&&w(e))return!1;if(!E(e,`CallExpression`))return;let n=e.callee;if(!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)||!lie.has(n.property.name))return;let l=!1;for(let n of e.arguments??[]){if(wi(n)){l=!0;break}let e=Ri(n,t.scopes);for(let t of e)if(o.has(t)){l=!0;break}if(l)break}if(!l)return;let u=n.object;for(;E(u,`MemberExpression`);)u=u.object;if(!E(u,`Identifier`))return;let d=t.scopes.symbolFor(u);if(d&&(s.has(d.id)||!Sie(d.scope,a)&&Cie(d,i)))return c=!0,!1}),c},Oie=e=>{if(!E(e,`AwaitExpression`))return null;let t=P(e.argument);return E(t,`CallExpression`)&&E(P(t.callee),`MemberExpression`)?t:null},kie=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=wie(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=Ri(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},Aie=e=>{if(!E(e,`CallExpression`))return null;let t=P(e.callee);return E(t,`MemberExpression`)?t.object:null},zi=e=>{let t=P(e);for(;E(t,`MemberExpression`);)t=P(t.object);return t},jie=(e,t,n,r)=>{let i=Pi(n);if(!i)return!1;let a=zi(e);if(E(a,`Identifier`)){let e=r.scopes.symbolFor(a);if(!e||z(e.bindingIdentifier,n))return!1}else if(!E(a,`ThisExpression`))return!1;let o=!1;return D(i,e=>{if(o||e!==i&&w(e))return!1;let n=null;if(E(e,`AssignmentExpression`)?n=e.left:(E(e,`UpdateExpression`)||E(e,`UnaryExpression`)&&e.operator===`delete`)&&(n=e.argument),n&&B(n,r)===t)return o=!0,!1}),!o},Mie=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=Aie(e);return!r||B(r,n)!==t?!1:!E(b(e).parent,`ExpressionStatement`)},Nie=(e,t,n,r)=>{let i=Pi(t);if(!i)return!1;let a=!1,o=!1;return D(i,t=>{if(a&&o||t!==i&&w(t))return!1;z(t,e)||Mie(t,n,r)&&(Ni(t,e,r)&&(a=!0),Ni(e,t,r)&&(o=!0))}),a&&o},Pie=(e,t)=>{let n=M(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||M(e.identifier)!==n)return!1;let r=b(e.identifier),i=r.parent;if(!E(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=P(i.callee);return E(a,`MemberExpression`)?E(zi(a.object),`ThisExpression`):!1})},Fie=(e,t,n)=>{let r=new Set;return D(t,i=>{if(i!==t&&w(i))return!1;let a=null,o=null;E(i,`VariableDeclarator`)&&i.init?(a=i.id,o=i.init):E(i,`AssignmentExpression`)&&(a=i.left,o=i.right),!(!a||!o||!z(e,o))&&Li(a,n.scopes,r)}),r},Iie=(e,t,n)=>{let r=P(e);if(!E(r,`MemberExpression`))return!1;let i=zi(r);if(!E(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},Lie=(e,t,n)=>{let r=Pi(t);if(!r)return!1;let i=Fie(e,r,n);if(i.size===0)return!1;let a=!1;return D(r,o=>{if(a||o!==r&&w(o))return!1;if(!E(o,`CallExpression`)||!Ni(e,o,n))return;let s=o.callee;if(!E(s,`MemberExpression`)||s.computed||!E(s.property,`Identifier`)||!lie.has(s.property.name))return;let c=zi(s.object);if(!E(c,`Identifier`))return;let l=n.scopes.symbolFor(c);if(!(!l||z(l.bindingIdentifier,t)||!Pie(l,t))){for(let e of o.arguments)if(Iie(e,i,n))return a=!0,!1}}),a},Rie=(e,t,n)=>{let r=Oie(e);if(!r||!kie(r,t,n))return!1;let i=Aie(r);if(!i)return!1;let a=B(i,n);return!a||!jie(i,a,t,n)?!1:Nie(e,t,a,n)||E(zi(i),`ThisExpression`)&&E(P(i),`MemberExpression`)&&Lie(e,t,n)},zie=(e,t)=>_ie(e,t)||gie(e,t)||yie(e)||bie(e)||Die(e,t),Bi=(e,t)=>{if(E(e,`Identifier`))t.add(e.name);else if(E(e,`ObjectPattern`))for(let n of e.properties??[])E(n,`Property`)&&n.value?Bi(n.value,t):E(n,`RestElement`)&&n.argument&&Bi(n.argument,t);else if(E(e,`ArrayPattern`))for(let n of e.elements??[])n&&Bi(n,t);else E(e,`AssignmentPattern`)&&e.left&&Bi(e.left,t)},Bie=new Set([`push`,`unshift`,`splice`]),Vi=(e,t)=>{let n=[];D(e,t=>{if(t!==e&&w(t))return!1;if(!E(t,`VariableDeclarator`)||!t.init||!E(t.id,`Identifier`))return;let r=new Set;Ci(t.init,r),n.push({declaredName:t.id.name,referencedNames:r})});let r=!0;for(;r;){r=!1;for(let{declaredName:e,referencedNames:i}of n)if(!t.has(e)){for(let n of i)if(t.has(n)){t.add(e),r=!0;break}}}},Vie=e=>{let t=new Set,n=new Set;if(D(e,r=>{if(r!==e&&w(r))return!1;if(E(r,`AssignmentExpression`)&&r.left){Bi(r.left,t);return}if(E(r,`AwaitExpression`)&&r.argument){Ci(r.argument,n);return}if(!E(r,`CallExpression`))return;let i=r.callee;E(i,`MemberExpression`)&&!i.computed&&E(i.property,`Identifier`)&&Bie.has(i.property.name)&&E(i.object,`Identifier`)&&t.add(i.object.name)}),t.size===0)return!1;Vi(e,t);for(let e of t)if(n.has(e))return!0;return!1},Hie=new Set([...lr,`SwitchStatement`]),Uie=e=>{let t=new Set;return D(e,n=>{if(n!==e&&w(n))return!1;E(n,`VariableDeclarator`)&&n.id&&wi(n.init)&&Bi(n.id,t),E(n,`AssignmentExpression`)&&n.left&&wi(n.right)&&Bi(n.left,t)}),t},Hi=(e,t)=>{if(!e)return!1;if(wi(e))return!0;let n=new Set;Ci(e,n);for(let e of n)if(t.has(e))return!0;return!1},Wie=(e,t,n)=>{if(e.label)return E(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(Hie.has(r.type))return!1;r=r.parent}return!0},Gie=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),Ui=e=>{if(!e)return!1;if(Gie.has(e.type))return!0;if(E(e,`BlockStatement`)){let t=e.body??[];return Ui(t[t.length-1])}return!1},Kie=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(E(r,`IfStatement`)&&Hi(r.test,n)&&(Ui(r.consequent)||Ui(r.alternate)))return!0}return!1},qie=(e,t,n)=>{if(E(e,`ReturnStatement`)&&e.argument&&Hi(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(E(a,`IfStatement`)){if(Hi(a.test,n))return!0;r=!0}if(E(a,`TryStatement`)&&a.handler&&i===a.block&&wi(a.block)&&!r||E(a,`SwitchStatement`)&&Hi(a.discriminant,n)||E(a,`BlockStatement`)&&Kie(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},Jie=(e,t)=>{let n=Uie(e);Vi(e,n);let r=!1;return D(e,i=>{if(r||i!==e&&w(i))return!1;if((E(i,`ReturnStatement`)||E(i,`BreakStatement`)&&Wie(i,e,t))&&qie(i,e,n))return r=!0,!1}),r},Yie=new Set([...Bie,`pop`,`shift`]),Xie=e=>{let t=new Set;return D(e,n=>{if(n!==e&&w(n))return!1;if(E(n,`AssignmentExpression`)&&n.left){Bi(n.left,t);let e=xie(n.left);e&&t.add(e);return}if(!E(n,`CallExpression`))return;let r=n.callee;if(E(r,`MemberExpression`)&&!r.computed&&E(r.property,`Identifier`)&&Yie.has(r.property.name)){let e=xie(r.object);e&&t.add(e)}}),t},Zie=(e,t)=>{if(!e)return!1;let n=new Set;if(Ci(e,n),n.size===0)return!1;let r=Xie(t),i=Uie(t);Vi(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},Qie=e=>{let t=e.parent;return E(t,`LabeledStatement`)&&E(t.label,`Identifier`)?t.label.name:null},$ie=(e,t)=>{let n=!1;return D(e,e=>{if(n||Mi(e)||E(e,`FunctionDeclaration`))return!1;if(E(e,`AwaitExpression`)&&zie(e,t))return n=!0,!1}),n},eae=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),tae=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),nae=e=>{let t=e;for(;;){t=b(t);let e=t.parent;if(!e)return t;if(E(e,`SpreadElement`)||E(e,`ArrayExpression`)){t=e;continue}if(E(e,`LogicalExpression`)){t=e;continue}if(E(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(E(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(E(n,`CallExpression`)&&n.callee===e&&!e.computed&&E(e.property,`Identifier`)&&tae.has(e.property.name)){t=n;continue}}return t}},Wi=e=>{let t=e;for(;t.parent&&!w(t);)t=t.parent;return t},rae=(e,t)=>{let n=!1;return D(t,t=>{if(n)return!1;if(!Ii(t))return;let r=new Set;for(let e of t.arguments??[])Ci(e,r);if(r.has(e))return n=!0,!1}),n},iae=e=>{let t=nae(e),n=t.parent;if(E(n,`CallExpression`)&&Ii(n)&&(n.arguments??[]).some(e=>e===t))return!0;let r=null;return E(n,`VariableDeclarator`)&&n.init===t&&E(n.id,`Identifier`)?r=n.id.name:E(n,`AssignmentExpression`)&&n.right===t&&E(n.left,`Identifier`)&&(r=n.left.name),!r||!n?!1:rae(r,Wi(n))},aae=e=>{let t=Wi(e);if(!w(t))return!1;let n=null;return E(t,`FunctionDeclaration`)&&E(t.id,`Identifier`)?n=t.id.name:E(t.parent,`VariableDeclarator`)&&E(t.parent.id,`Identifier`)&&(n=t.parent.id.name),!n||!t.parent?!1:rae(n,Wi(t.parent))},oae=C({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:"Collect the items, then use `await Promise.all(items.map(...))` so independent work runs at the same time",create:e=>{let t=!1,n=(n,r)=>{if(t)return;let i=n.body;if(!i||$ie(i,e)||(E(n,`WhileStatement`)||E(n,`DoWhileStatement`))&&Zie(n.test,i)||Vie(i)||Jie(i,Qie(n))||aae(n))return;let a=pie(i,!0,t=>Rie(t,n,e));a&&e.report({node:a,message:`This makes the ${r} slow because each await runs one after another, so collect the independent calls & run them together with \`await Promise.all(items.map(...))\``})};return{ImportDeclaration(e){_r(e.source?.value)&&(t=!0)},ForStatement(e){n(e,`for-loop`)},ForInStatement(e){n(e,`for…in loop`)},ForOfStatement(e){e.await||n(e,`for…of loop`)},WhileStatement(e){n(e,`while-loop`)},DoWhileStatement(e){n(e,`do-while loop`)},CallExpression(n){if(t||!E(n.callee,`MemberExpression`)||!E(n.callee.property,`Identifier`))return;let r=n.callee.property.name;if(!eae.has(r))return;let i=n.arguments?.[0];if(!i||!Mi(i)||!i.async)return;let a=i.body;if(!a||(r===`map`||r===`flatMap`)&&iae(n))return;let o=pie(a);if(o){let t=r===`forEach`?"Async callback in .forEach silently drops every await, so the work never finishes before the loop moves on. Use a `for…of` loop, or `await Promise.all(items.map(async (item) => {...}))`":`Async callback in .${r} runs the awaits one after another, so it is slow. Use \`await Promise.all(items.map(async (item) => {...}))\` to run them at the same time`;e.report({node:o,message:t})}}}}}),Gi=(e,t)=>{if(e){if(E(e,`AssignmentPattern`)){Ci(e.right,t),Gi(e.left,t);return}if(E(e,`RestElement`)){Gi(e.argument,t);return}if(E(e,`ArrayPattern`)){for(let n of e.elements??[])Gi(n,t);return}if(E(e,`ObjectPattern`))for(let n of e.properties??[])E(n,`RestElement`)?Gi(n.argument,t):E(n,`Property`)&&(n.computed&&Ci(n.key,t),Gi(n.value,t))}},sae=e=>E(e,`ExpressionStatement`)?E(e.expression,`AwaitExpression`):!1,cae=e=>E(e,`ReturnStatement`)||E(e,`ThrowStatement`)||E(e,`ContinueStatement`)||E(e,`BreakStatement`),lae=e=>{if(!E(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(cae(t))return!0;if(!E(t,`BlockStatement`))return!1;for(let e of t.body??[])if(cae(e))return!0;return!1},Ki=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},uae=(e,t)=>{E(e,`VariableDeclarator`)&&(Ci(e.init,t),Gi(e.id,t))},dae=(e,t)=>{if(!E(e,`VariableDeclaration`))return{didIntroduceAwait:!1,didGrowBindings:!1};let n=!1,r=t.size,i=!0;for(;i;){i=!1;for(let r of e.declarations??[]){if(!E(r,`VariableDeclarator`))continue;if(wi(r.init)||wi(r.id)){n=!0;let e=t.size;bi(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(uae(r,e),!Ki(e,t))continue;let a=t.size;bi(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},fae=new Set([`cancelled`,`canceled`,`isCancelled`,`isCanceled`,`aborted`,`isAborted`,`disposed`,`isDisposed`,`destroyed`,`isDestroyed`,`stopped`,`isStopped`,`mounted`,`isMounted`,`unmounted`,`isUnmounted`,`active`,`isActive`,`stale`,`isStale`,`ignore`,`signal`,`abortSignal`,`abortController`]),pae=e=>{let t=!1;return D(e,e=>{if(t)return!1;if(!E(e,`MemberExpression`)||e.computed||!E(e.property,`Identifier`)||e.property.name!==`current`||!E(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},mae=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],hae=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of mae)if(t.includes(e))return!0;return!1},gae=e=>{let t=new Set;return D(e,e=>{(E(e,`Identifier`)||E(e,`PrivateIdentifier`))&&t.add(e.name)}),t},_ae=e=>{if(!e)return!1;let t=new Set;Ci(e,t);for(let e of t)if(fae.has(e))return!0;for(let t of gae(e))if(hae(t))return!0;return pae(e)},vae=e=>{if(!e)return!1;let t=!1;return D(e,e=>{if(t)return!1;if(E(e,`CallExpression`))return E(e.callee,`ArrowFunctionExpression`)||E(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(E(e,`ThisExpression`)||E(e,`PrivateIdentifier`))return t=!0,!1}),t},yae=e=>{if(!e)return!1;let t=P(e);if(!E(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=P(e);return E(t,`Literal`)||E(t,`TemplateLiteral`)||E(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},bae=(e,t,n)=>{let r=P(e);if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&i.kind===`const`&&i.initializer&&Qt(i.scope,n))},xae=(e,t,n)=>{let r=P(e);if(E(r,`MemberExpression`))return!0;if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!Qt(i.scope,n))},Sae=(e,t,n)=>{let r=P(e);return!yae(r)||!E(r,`BinaryExpression`)?!1:bae(r.left,t,n)&&xae(r.right,t,n)||bae(r.right,t,n)&&xae(r.left,t,n)},Cae=(e,t,n)=>{if(!n||!e)return!1;let r=P(e);if(!E(r,`LogicalExpression`)||r.operator!==`&&`&&r.operator!==`||`)return!1;let i=[r.left,r.right];for(;i.length>0;){let e=i.pop();if(!e)continue;let r=P(e);if(E(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Sae(r,t,n))return!1}return!0},wae=e=>{if(!e)return!1;let t=!1;return D(e,e=>{if(t||w(e)||E(e,`ThrowStatement`))return!1;if(E(e,`CallExpression`)||E(e,`NewExpression`)||E(e,`AssignmentExpression`)||E(e,`UpdateExpression`))return t=!0,!1}),t},Tae=(e,t)=>{if(!e)return!1;let n=new Set;if(Ci(e,n),n.size===0)return!1;let r=M(t);if(!r||!w(r)||!r.body)return!1;let i=!1;return D(r.body,e=>{if(i)return!1;let t=null;if(E(e,`AssignmentExpression`)?t=e.left:E(e,`UpdateExpression`)&&(t=e.argument),!t)return;let r=new Set;bi(t,r),E(t,`Identifier`)&&r.add(t.name);for(let e of r)if(n.has(e))return i=!0,!1}),i},Eae=(e,t)=>{let n=e[t],r=new Set,i=!1,a=!1;if(E(n,`VariableDeclaration`)?dae(n,r).didIntroduceAwait&&(i=!0):sae(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(sae(t)){a=!0,o++;continue}if(!E(t,`VariableDeclaration`))break;let n=dae(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},Dae=C({id:`async-defer-await`,title:`await before an early-return guard`,severity:`warn`,tags:[`test-noise`],recommendation:"Move the `await` below the early-return guard so the skip path stays fast and avoids unnecessary async work.",create:e=>{let t=t=>{for(let n=0;n<t.length-1;n++){let r=Eae(t,n);if(!r||r.guardCandidateIndex>=t.length)continue;let i=t[r.guardCandidateIndex];if(!lae(i)||!E(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(Ci(i.test,a),Ki(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=M(i),s=o?e.scopes.ownScopeFor(o):null;if(_ae(i.test)||vae(i.test)||yae(i.test)||Cae(i.test,e.scopes,s)||Tae(i.test,i)||wae(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(Ci(i.consequent,c),Ki(c,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}e.report({node:r.firstAwaitStatement,message:`This await blocks the function before an early-return that doesn't use the awaited value, so the skip path waits for nothing. Move the await below the guard so it only runs when you need the data`}),n=r.guardCandidateIndex-1}},n=e=>{e&&D(e,e=>{if(w(e))return!1;E(e,`BlockStatement`)?t(e.body??[]):E(e,`SwitchCase`)&&t(e.consequent??[])})},r=e=>{w(e)&&e.async&&E(e.body,`BlockStatement`)&&n(e.body)};return{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression:r}}}),Oae=(e,t,n)=>{let r=new Set;for(let e of t)D(e,e=>{if(!E(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return D(e,e=>{if(i||!E(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},kae=e=>{let t=e;for(;E(t,`ChainExpression`);)t=t.expression;if(!E(t,`CallExpression`)&&!E(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(E(r,`ChainExpression`)){r=r.expression;continue}if(E(r,`MemberExpression`)){E(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(E(r,`CallExpression`)){r=r.callee;continue}E(r,`Identifier`)&&n.push(r.name);break}return n},qi=e=>{if(E(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&E(t.init,`AwaitExpression`))return t.init.argument??null}return E(e,`ExpressionStatement`)&&E(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Aae=e=>tre.has(e)?!0:nre.some(t=>e.startsWith(t)),jae=e=>e?kae(e).some(Aae):!1,Mae=e=>e?kae(e).some(e=>gr.has(e)):!1,Nae=e=>E(e,`ExpressionStatement`)&&E(e.expression,`AwaitExpression`),Pae=e=>{let t=P(e);return E(t,`CallExpression`)?t.arguments.every(e=>{if(E(e,`SpreadElement`))return!1;let t=P(e);return E(t,`Identifier`)||E(t,`Literal`)}):!1},Fae=e=>{let t=qi(e);if(!t)return!1;let n=P(t);return!E(n,`CallExpression`)&&!E(n,`NewExpression`)&&!E(n,`ImportExpression`)},Iae=(e,t)=>{let n=null;for(let r of e){if(Fae(r))return!0;let e=qi(r);if(e&&On(e,t.scopes))return!0;let i=e?ji(e,t.scopes):null;if(Nae(r)){if(i===null||!e||!Pae(e)||n!==null&&n!==i)return!0;n=i}if(jae(e)||Mae(e)&&i===null)return!0}return!1},Lae=e=>{let t=e.parent;for(;t;){if(w(t)){let e=t.parent;if(e&&E(e,`CallExpression`)){let t=e.callee;if(E(t,`MemberExpression`)&&E(t.property,`Identifier`)&&t.property.name===`transaction`||E(t,`Identifier`)&&t.name===`transaction`)return!0}}t=t.parent??null}return!1},Rae=(e,t)=>{let n=[];for(let r of e){let e=qi(r);if(e){if(Oae(e,n,t.scopes))return;E(r,`VariableDeclaration`)&&r.declarations[0]?.id&&n.push(r.declarations[0].id)}}t.report({node:e[0],message:`These ${e.length} sequential await statements run one after another even though they look independent, so the page waits longer than it needs to. Run them together with Promise.all() instead`})},zae=C({id:`async-parallel`,title:`Independent awaits run sequentially`,tags:[`test-noise`],severity:`warn`,recommendation:"Use `const [a, b] = await Promise.all([fetchA(), fetchB()])` so independent calls run at the same time",create:e=>{let t=mt(e.filename??``),n=Qne.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||_r(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||Lae(t))return;let n=[],r=()=>{n.length>=3&&(Iae(n,e)||Rae(n,e)),n.length=0};for(let e of t.body??[])E(e,`VariableDeclaration`)&&e.declarations?.length===1&&E(e.declarations[0].init,`AwaitExpression`)||E(e,`ExpressionStatement`)&&E(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),Ji=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`||E(t,`UnaryExpression`)&&t.operator===`void`},Bae=e=>{let t=e[0];return t&&E(t,`Identifier`)&&t.name===`this`?e.slice(1):e},Vae="Storing an auth token in `localStorage`/`sessionStorage` exposes it to any XSS on the page: JavaScript can read web storage and exfiltrate the token. Keep tokens in an `HttpOnly`, `Secure`, `SameSite` cookie instead.",Hae=new Set([`localStorage`,`sessionStorage`]),Uae=new Set([`window`,`globalThis`,`self`]),Wae=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,Gae=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,Kae=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,qae=e=>!(!Wae.test(e)||Gae.test(e)&&!Kae.test(e)),Jae=e=>E(e,`Identifier`)?Hae.has(e.name):E(e,`MemberExpression`)&&!e.computed&&E(e.object,`Identifier`)&&Uae.has(e.object.name)&&E(e.property,`Identifier`)?Hae.has(e.property.name):!1,Yi=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=T(e,e.name);if(!n?.initializer)return null;if(E(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!E(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!E(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=P(n.initializer);return E(a,`Identifier`)?Yi(a,t)??a:a},Xi=(e,t)=>{let n=P(e);if(Zi(n,new Set(t)))return!0;if(E(n,`ConditionalExpression`)){let e=P(n.consequent),r=P(n.alternate);return(Ji(e)||Xi(e,t))&&(Ji(r)||Xi(r,t))&&(!Ji(e)||!Ji(r))}if(E(n,`LogicalExpression`)){if(n.operator===`&&`)return Xi(n.right,t);let e=P(n.left),r=P(n.right),i=Xi(e,t),a=Xi(r,t);return(i||Ji(e))&&(a||Ji(r))&&(i||a)}return!1},Zi=(e,t=new Set)=>{let n=P(e);if(t.has(n))return!1;if(t.add(n),Jae(n))return!0;if(E(n,`Identifier`)){let e=Yi(n);return e?Zi(e,new Set(t)):!1}if(!E(n,`CallExpression`))return!1;let r=P(n.callee);if(!E(r,`Identifier`))return!1;let i=Yi(r);if(!w(i))return!1;if(E(i,`ArrowFunctionExpression`)&&!E(i.body,`BlockStatement`))return Xi(i.body,t);let a=!1;for(let e of he(i)){if(!e.argument)continue;let n=P(e.argument);if(!Ji(n)){if(!Xi(n,t))return!1;a=!0}}return a},Yae=e=>{if(E(e,`Literal`)&&typeof e.value==`string`)return e.value;if(E(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(E(e,`Identifier`)&&e.name!==`undefined`){let t=T(e,e.name);return!t?.initializer||E(t.initializer,`Identifier`)?null:Yae(t.initializer)}return null},Xae=e=>!e.computed&&E(e.property,`Identifier`)?e.property.name:e.computed&&E(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,Qi=(e,t,n,r,i=new Set)=>{let a=P(e);if(i.has(a))return null;if(i.add(a),E(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=Yi(a);return s?Qi(s,t,n,r,i):null}if(r&&E(a,`CallExpression`)&&E(a.callee,`MemberExpression`)&&!a.callee.computed&&E(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&E(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?Qi(e,t,n,!0,i):null}return null},$i=new WeakMap,Zae=(e,t)=>{let n=$i.get(e);if(n)return n;if(!E(e,`FunctionDeclaration`)&&!E(e,`FunctionExpression`)&&!E(e,`ArrowFunctionExpression`))return $i.set(e,[]),[];let r=Bae(e.params).map(e=>{let n=P(e),r=E(n,`Identifier`)?n:E(n,`AssignmentPattern`)&&E(n.left,`Identifier`)?n.left:null;return r?t.symbolFor(r)?.id??null:null}),i=[];return D(e.body,n=>{if(n!==e.body&&w(n))return!1;if(!E(n,`CallExpression`))return;let a=P(n.callee);if(!E(a,`MemberExpression`)||a.computed||!E(a.property,`Identifier`)||a.property.name!==`setItem`||!Zi(a.object))return;let o=n.arguments[0],s=n.arguments[1];if(!o||!s)return;let c=Qi(o,r,t,!1),l=Qi(s,r,t,!0);c===null||l===null||i.push({keyParameterIndex:c,valueParameterIndex:l})}),$i.set(e,i),i},Qae=C({id:`auth-token-in-web-storage`,title:`Auth token in web storage`,severity:`warn`,recommendation:"Don't persist auth tokens (JWTs, access/refresh tokens, secrets) in `localStorage`/`sessionStorage`; they're readable by any XSS. Use an `HttpOnly` cookie set by the server.",create:Oe(e=>({CallExpression(t){let n=P(t.callee),r=[];if(E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)&&n.property.name===`setItem`&&Zi(P(n.object))){let e=t.arguments[0];e&&r.push(e)}else if(E(n,`Identifier`)){let i=Yi(n),a=i?Zae(i,e.scopes):[];for(let e of a){let n=t.arguments[e.keyParameterIndex];n&&t.arguments[e.valueParameterIndex]&&r.push(n)}}r.some(e=>{let t=Yae(e);return t!==null&&qae(t)})&&e.report({node:t,message:Vae})},AssignmentExpression(t){let n=t.left;if(!E(n,`MemberExpression`)||!Zi(n.object))return;let r=Xae(n);!r||!qae(r)||e.report({node:n,message:Vae})}}))}),$ae=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,eoe=new Set(`off.on.name.honorific-prefix.given-name.additional-name.family-name.honorific-suffix.nickname.email.username.new-password.current-password.one-time-code.organization-title.organization.street-address.address-line1.address-line2.address-line3.address-level4.address-level3.address-level2.address-level1.country.country-name.postal-code.cc-name.cc-given-name.cc-additional-name.cc-family-name.cc-number.cc-exp.cc-exp-month.cc-exp-year.cc-csc.cc-type.transaction-currency.transaction-amount.language.bday.bday-day.bday-month.bday-year.sex.tel.tel-country-code.tel-national.tel-area-code.tel-local.tel-extension.impp.url.photo`.split(`.`)),toe=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),noe=new Set([`shipping`,`billing`]),roe=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),ioe=e=>{let t=e.toLowerCase().split(/\s+/).filter(e=>e.length>0);if(t.length===0)return!0;let n=0;t[n]?.startsWith(`section-`)&&(n+=1),n<t.length&&noe.has(t[n])&&(n+=1);let r=n<t.length&&roe.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?toe.has(i):eoe.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},aoe=new Set([`input`,`textarea`,`select`,`form`]),ooe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},soe=C({id:`autocomplete-valid`,title:`Invalid autocomplete value`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Use a valid autofill token in `autoComplete` so browsers can fill the right field reliably.",category:`Accessibility`,create:Oe(e=>{let t=ooe(e.settings);return{JSXOpeningElement:n=>{let r=Zn(n,e.settings);if(!aoe.has(r)&&!t.inputComponents.has(r))return;let i=F(n.attributes,`autoComplete`);if(!i)return;let a=Xn(i);a&&(ioe(a)||e.report({node:i,message:$ae(a)}))}}})}),V=(e,t)=>e?.find(e=>E(e,`JSXAttribute`)&&E(e.name,`JSXIdentifier`)&&e.name.name===t),ea=e=>tr(e)?.split(`.`).at(-1)??null,coe=e=>{if(e.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!E(t,`ImportDeclaration`)||i(t)||E(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`?null:t},ta=e=>{let t=coe(e);if(!t||!E(t,`ImportDeclaration`))return null;let n=t.source.value;return typeof n==`string`?n:null},na=(e,t,n,r)=>{if(!E(e,`JSXMemberExpression`))return null;if(E(e.object,`JSXIdentifier`)){let i=N(e.object,r.scopes);if(!i)return null;let a=ta(i);return a===null||!t.test(a)?null:en(i.declarationNode)===n?e.property.name:null}if(!E(e.object,`JSXMemberExpression`)||!E(e.object.object,`JSXIdentifier`)||e.object.property.name!==n)return null;let i=N(e.object.object,r.scopes);if(!i||!E(i.declarationNode,`ImportNamespaceSpecifier`))return null;let a=ta(i);return a!==null&&t.test(a)?e.property.name:null},ra=(e,t)=>{let n=P(e);if(E(n,`JSXElement`)){loe(n,t);return}if(E(n,`JSXFragment`)){ia(n.children,t);return}if(E(n,`ConditionalExpression`)){ra(n.consequent,t),ra(n.alternate,t);return}if(E(n,`LogicalExpression`)){n.operator!==`&&`&&ra(n.left,t),ra(n.right,t);return}if(E(n,`ArrayExpression`)){for(let e of n.elements)e&&(E(e,`SpreadElement`)?t.onOpaqueExpression?.(e):ra(e,t));return}if(E(n,`Literal`)){if(typeof n.value==`string`||typeof n.value==`number`){let e=String(n.value);e.trim().length>0&&t.onStaticText?.(e)}return}if(E(n,`TemplateLiteral`)){let e=n.quasis.map(e=>e.value.cooked??e.value.raw??``).join(` `);(e.trim().length>0||n.expressions.length>0)&&t.onStaticText?.(e);return}E(n,`JSXEmptyExpression`)||E(n,`Identifier`)&&n.name===`undefined`||t.onOpaqueExpression?.(n)},loe=(e,t)=>{t.onElement(e)!==!1&&ia(e.children,t)},ia=(e,t)=>{for(let n of e)E(n,`JSXElement`)?loe(n,t):E(n,`JSXFragment`)?ia(n.children,t):E(n,`JSXExpressionContainer`)?ra(n.expression,t):E(n,`JSXText`)&&n.value.trim().length>0&&t.onStaticText?.(n.value)},aa=(e,t)=>{let n={foundPart:!1,sawOpaqueContent:!1},r=e=>{D(e,e=>{E(e,`JSXOpeningElement`)&&t.isPartElementName(e.name)&&(n.foundPart=!0)})};return ia(e,{onElement:e=>{if(t.isPartElementName(e.openingElement.name))return n.foundPart=!0,!1;let i=V(e.openingElement.attributes,`render`);return i?.value&&r(i.value),t.isOpaqueElement(e)&&(n.sawOpaqueContent=!0),!0},onOpaqueExpression:e=>{n.sawOpaqueContent=!0,r(e)}}),n},uoe=[{namespaceName:`Dialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/dialog)?$/},{namespaceName:`AlertDialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/alert-dialog)?$/}],doe=[`aria-label`,`aria-labelledby`,`title`],foe=e=>{if(!e.value||!E(e.value,`JSXExpressionContainer`))return!0;let t=P(e.value.expression);if(!E(t,`JSXElement`))return!0;let n=t.openingElement.attributes;return I(n)||doe.some(e=>F(n,e))},poe=(e,t,n)=>{if(na(e,t.moduleSourcePattern,t.namespaceName,n)===`Title`)return!0;let r=ea(e);return r===`Title`||r===`${t.namespaceName}Title`},moe=C({id:`base-ui-dialog-popup-requires-title`,title:`Base UI dialog popup without a title`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Base UI Dialog.Popup and AlertDialog.Popup a Title part (visually hidden when the design shows no heading) or name the dialog with aria-label.`,create:e=>({JSXOpeningElement(t){for(let n of uoe){if(na(t.name,n.moduleSourcePattern,n.namespaceName,e)!==`Popup`)continue;if(I(t.attributes))return;let r=V(t.attributes,`render`);if(r&&foe(r)||doe.some(e=>F(t.attributes,e)))return;let i=t.parent;if(!i||!E(i,`JSXElement`)||i.children.length===0)return;let a=aa(i.children,{isPartElementName:t=>poe(t,n,e),isOpaqueElement:t=>{let r=t.openingElement.name;if(na(r,n.moduleSourcePattern,n.namespaceName,e)!==null)return!1;let i=ea(r);return i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`}});if(a.foundPart||a.sawOpaqueContent)return;e.report({node:t.name,message:`This ${n.namespaceName}.Popup renders no ${n.namespaceName}.Title, so the dialog has no accessible name and assistive technology announces an unnamed dialog. Add a Title part (visually hidden if the design shows no heading) or an aria-label.`});return}}})}),hoe=/^@base-ui(?:-components)?\/react(?:\/field)?$/,goe=[`aria-label`,`aria-labelledby`],oa=(e,t)=>na(e,hoe,`Field`,t),_oe=(e,t)=>{if(oa(e,t)===`Label`)return!0;let n=ea(e);return n===`label`||n===`Label`||n===`FieldLabel`},voe=(e,t,n)=>{let r=e.parent;for(;r&&r!==t;){if(E(r,`JSXElement`)&&oa(r.openingElement.name,n)===`Control`)return!0;r=r.parent}return!1},yoe=(e,t)=>{let n={hasControl:!1,hasLabel:!1,sawUnprovableContent:!1};return ia(e.children,{onElement:r=>{let i=r.openingElement,a=i.name;if(_oe(a,t))return n.hasLabel=!0,!1;let o=oa(a,t);if((o===`Control`||voe(i,e,t))&&goe.some(e=>F(i.attributes,e)))return n.hasLabel=!0,!1;I(i.attributes)&&(n.sawUnprovableContent=!0);let s=V(i.attributes,`render`);if(s?.value&&D(s.value,e=>{E(e,`JSXOpeningElement`)&&goe.some(t=>F(e.attributes,t))&&(n.hasLabel=!0)}),o===`Control`)return n.hasControl=!0,!0;if(o!==null)return!0;let c=ea(a);return c!==null&&/^[A-Z]/.test(c)&&c!==`Fragment`&&(n.sawUnprovableContent=!0),!0},onOpaqueExpression:e=>{n.sawUnprovableContent=!0,D(e,e=>{E(e,`JSXOpeningElement`)&&_oe(e.name,t)&&(n.hasLabel=!0)})}}),n},sa=C({id:`base-ui-field-requires-label`,title:`Base UI field control without a label`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Field.Root that wraps a Field.Control a Field.Label (visually hidden when the design shows no label) or name the control directly with aria-label.`,create:e=>({JSXOpeningElement(t){if(oa(t.name,e)!==`Root`)return;let n=t.parent;if(!n||!E(n,`JSXElement`)||n.children.length===0)return;let r=yoe(n,e);!r.hasControl||r.hasLabel||r.sawUnprovableContent||e.report({node:t.name,message:`This Field.Root wraps a Field.Control but renders no Field.Label, so the field has no accessible name. Add a Field.Label (visually hidden if the design shows no label) or an aria-label on the control.`})}})}),ca=(e,t)=>{let n=e.parent?.parent;for(;n;){if(E(n,`JSXAttribute`))return`unprovable`;if(E(n,`JSXElement`)){let e=n.openingElement.name,r=t(e);if(r===`required`)return`inside-required`;if(r===`root`)return`inside-root-without-required`;let i=ea(e);if(i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`)return`unprovable`}n=n.parent}return`unprovable`},boe=/^@base-ui(?:-components)?\/react(?:\/tabs)?$/,la=(e,t)=>na(e,boe,`Tabs`,t),xoe=C({id:`base-ui-tabs-tab-requires-list`,title:`Base UI tab is outside Tabs.List`,severity:`warn`,category:`Correctness`,requires:[`base-ui`],matchByOccurrence:!0,recommendation:`Render each Base UI Tabs.Tab inside Tabs.List so the tablist role and arrow-key focus handling cover every tab.`,create:e=>({JSXOpeningElement(t){la(t.name,e)===`Tab`&&ca(t,t=>{let n=la(t,e);return n===`List`?`required`:n===`Root`?`root`:null})===`inside-root-without-required`&&e.report({node:t,message:`This Tabs.Tab is outside Tabs.List, so it misses the tablist grouping and arrow-key focus handling Base UI provides through the list. Nest it inside Tabs.List.`})}})}),Soe=e=>{let t=e;for(;t;){if(E(t,`MemberExpression`)){if(E(t.property,`Identifier`)&&t.property.name===`document`||E(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(E(t,`Identifier`)&&t.name===`document`)}return!1},ua=e=>{if(!E(e,`CallExpression`))return!1;let t=e.callee;return E(t,`Identifier`)?t.name===`createElement`:E(t,`MemberExpression`)&&(t.computed?E(t.property,`Literal`)&&t.property.value===`createElement`:E(t.property,`Identifier`)&&t.property.name===`createElement`)?!Soe(t.object):!1},da="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",Coe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.buttonHasType??{}:{};return{button:n.button??!0,submit:n.submit??!0,reset:n.reset??!0}},fa=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,pa=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Literal`)&&typeof r.value==`string`)return fa(r.value,t);if(E(r,`TemplateLiteral`)){let e=c(r);if(e!==null)return fa(e,t)}if(E(r,`ConditionalExpression`))return pa(r.consequent,t,n)&&pa(r.alternate,t,n);if(E(r,`Identifier`)){if(n.has(r.name))return!1;let e=T(r,r.name);return!e?.initializer||!ma(e)?!1:pa(e.initializer,t,new Set(n).add(r.name))}return!1},ma=e=>{let t=e.bindingIdentifier.parent;if(!t||!E(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&E(n,`VariableDeclaration`)&&n.kind===`const`)},woe=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),Toe=e=>{let t=e;for(;t.parent&&woe.has(t.parent.type);)t=t.parent;return t},ha=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=Toe(e),r=n.parent;if(!r)return!1;if(r.type===`FunctionDeclaration`||r.type===`FunctionExpression`||r.type===`ArrowFunctionExpression`)return r.params.some(e=>e===n);if(E(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!E(e,`Identifier`))return!1;let n=T(e,e.name);return n?ha(n.bindingIdentifier,t):!1}return!1},Eoe=e=>{let t=T(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!E(n,`Property`)||n.computed||n.value!==t||!ha(n)?!1:E(n.key,`Identifier`)?n.key.name===`type`:E(n.key,`Literal`)?n.key.value===`type`:!1},Doe=/Type$/,Ooe=(e,t)=>{if(!Doe.test(e.name))return!1;let n=T(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!E(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!E(i,`Property`)||i.computed||i.value!==r||!ha(i)?!1:pa(r.right,t)},ga=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Identifier`)){if(r.name===`type`||Eoe(r)||Ooe(r,t))return!0;if(n.has(r.name))return!1;let e=T(r,r.name);if(!e?.initializer||!ma(e))return!1;let i=P(e.initializer);return!E(i,`ConditionalExpression`)&&!E(i,`LogicalExpression`)?!1:ga(i,t,new Set(n).add(r.name))}if(E(r,`MemberExpression`)&&!r.computed&&E(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(E(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return ga(r.left,t,n);if(E(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>ga(e,t,n))&&e.every(e=>ga(e,t,n)||pa(e,t))}return!1},koe=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],Aoe={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},_a=e=>{for(let t of koe){let n=rt(e,e.name,t);if(n!==null)return n}return null},va=e=>e.computed?null:E(e.key,`Identifier`)?e.key.name:E(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,joe=e=>{if(E(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(E(e,`ReturnStatement`))return e.argument?(t.push(e.argument),!0):!1;let r=e;for(let e of Object.keys(r)){if(e===`parent`)continue;let t=r[e],i=Array.isArray(t)?t:[t];for(let e of i){if(!e||typeof e!=`object`||!(`type`in e))continue;let t=e;if(!(E(t,`FunctionDeclaration`)||E(t,`FunctionExpression`)||E(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},Moe=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!E(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=va(n);if(!r)return!1;let i=n.parent;if(!i||!E(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!E(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!E(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=P(a.init);if(!E(s,`CallExpression`))return!1;let c=P(s.callee);if(!E(c,`Identifier`))return!1;let l=_a(c);if(l!==null)return Aoe[l]===r;let u=T(c,c.name)?.initializer;if(!u||!E(u,`FunctionDeclaration`)&&!E(u,`FunctionExpression`)&&!E(u,`ArrowFunctionExpression`))return!1;let d=joe(u);return!d||d.length===0?!1:d.every(e=>{let n=P(e);if(!E(n,`ObjectExpression`))return!1;for(let e of n.properties){if(E(e,`SpreadElement`)||!E(e,`Property`))return!1;if(va(e)===r)return ya(e.value,t)}return!0})},ya=(e,t=new Set)=>{let n=P(e);if(E(n,`ObjectExpression`))return n.properties.every(e=>{if(E(e,`SpreadElement`))return ya(e.argument,t);if(!E(e,`Property`))return!1;let n=va(e);return n!==null&&n!==`type`});if(E(n,`CallExpression`)){let e=P(n.callee);return!E(e,`Identifier`)||_a(e)!==`mergeProps`?!1:n.arguments.every(e=>!E(e,`SpreadElement`)&&ya(e,t))}if(E(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=T(n,n.name);return r?r.initializer&&ma(r)?ya(r.initializer,e):Moe(r,e):!1}return!1},ba=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},Noe=e=>{let t=R(e.attributes,`form`,!1);return!!(t&&L(t)?.trim())},Poe=e=>!!Qn(e?an(e,`form`):void 0)?.trim(),Foe=e=>{if(!E(e,`CallExpression`)||!ua(e))return!1;let t=e.arguments[0];return!!(t&&E(t,`Literal`)&&t.value===`form`)},xa=e=>{let t=e.parent;for(;t;){if(E(t,`JSXElement`)&&O(t.openingElement)===`form`||Foe(t))return!0;t=t.parent}return!1},Sa=C({id:`button-has-type`,title:`Button missing explicit type`,severity:`warn`,recommendation:'Set an explicit button `type` so plain buttons do not submit forms by accident: `type="button"`, `"submit"`, or `"reset"`.',create:e=>{let t=Coe(e.settings),n=Or(e.settings),r=dt(e.filename);return{JSXOpeningElement(i){if(n&&r||O(i)!==`button`)return;let a=F(i.attributes,`type`);if(!a){if(n&&!Noe(i)&&!xa(i)||I(i.attributes)&&!i.attributes.every(e=>!E(e,`JSXSpreadAttribute`)||ya(e.argument)))return;e.report({node:i.name,message:da});return}let o=a.value;if(!o){ba(e,a);return}if(E(o,`Literal`)){pa(o,t)||ba(e,a);return}if(E(o,`JSXExpressionContainer`)){let n=o.expression;if(!n||n.type===`JSXEmptyExpression`||ga(n,t))return;pa(n,t)||ba(e,a)}},CallExpression(i){if(n&&r||!ua(i))return;let a=i.arguments[0];if(!a||!E(a,`Literal`)||a.value!==`button`)return;let o=i.arguments[1],s=Poe(o)||xa(i);if(!o||Ji(o)){if(n&&!s)return;e.report({node:i,message:da});return}if(!E(o,`ObjectExpression`))return;let c=null,l=!1;for(let e of o.properties){if(E(e,`SpreadElement`)){l=!0;continue}if(!E(e,`Property`))continue;let t=e.key;if(E(t,`Identifier`)&&t.name===`type`||E(t,`Literal`)&&t.value===`type`){c=e.value;break}}if(!c){if(n&&!s||l&&!o.properties.every(e=>!E(e,`SpreadElement`)||ya(e.argument)))return;e.report({node:o,message:da});return}ga(c,t)||pa(c,t)||ba(e,c)}}}}),Ioe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},Ca=e=>E(e,`Identifier`)||E(e,`MemberExpression`)&&!e.computed,wa=e=>!e.value||!E(e.value,`JSXExpressionContainer`)?!1:Ca(e.value.expression),Loe=e=>{if(!e.value)return!0;if(E(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return E(t,`Literal`)&&t.value===!0}return!1},Roe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(E(c,`JSXSpreadAttribute`)){o=!0;continue}if(!E(c,`JSXAttribute`))continue;let e=rn(c.name);e===`checked`?(t=c,n=wa(c)):e===`defaultChecked`&&!r?(r=c,i=wa(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&Loe(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},zoe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(E(c,`SpreadElement`)){o=!0;continue}if(!E(c,`Property`))continue;let e=c.key,l=null;if(E(e,`Identifier`)?l=e.name:E(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=Ca(c.value);else if(l===`defaultChecked`&&!r)r=c,i=Ca(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;E(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Ta=C({id:`checked-requires-onchange-or-readonly`,title:`Checked input without onChange`,severity:`warn`,recommendation:"Add `onChange`, `readOnly`, or `defaultChecked` so React knows whether the checkbox is editable, display-only, or uncontrolled.",category:`Correctness`,create:e=>{let t=Ioe(e.settings),n=n=>{n.checkedNode&&n.defaultCheckedNode&&!n.bothCheckedAndDefaultForwarded&&!t.ignoreExclusiveCheckedAttribute&&e.report({node:n.checkedNode,message:"This input mixes `checked` with `defaultChecked`, so React can't tell whether it is controlled or uncontrolled."}),n.checkedNode&&!n.hasOnChangeOrReadOnly&&!n.hasSpread&&!n.hasTruthyDisabled&&!t.ignoreMissingProperties&&e.report({node:n.checkedNode,message:"Your users can't toggle this input because `checked` has no `onChange`."})};return{JSXOpeningElement(e){O(e)===`input`&&n(Roe(e.attributes))},CallExpression(e){if(!ua(e))return;let t=e.arguments[0];if(!t||!E(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!E(r,`ObjectExpression`)||n(zoe(r))}}}}),Ea=C({id:`circular-dependency`,title:`Runtime import cycle`,severity:`warn`,execution:`project`,defaultEnabled:!1,recommendation:`Break the runtime cycle by extracting shared code into a lower-level module or inverting one dependency.`}),Da=(e,t,n)=>{let r=new Map,i=e,a=e.parent;for(;a&&!(w(a)||((E(a,`ConditionalExpression`)||E(a,`IfStatement`))&&(a.consequent===i&&r.set(a,`consequent`),a.alternate===i&&r.set(a,`alternate`)),a===n));)i=a,a=a.parent??null;let o=t,s=t.parent;for(;s&&!w(s);){if(E(s,`ConditionalExpression`)||E(s,`IfStatement`)){let e=r.get(s);if(e===`consequent`&&s.alternate===o||e===`alternate`&&s.consequent===o)return!0}if(s===n)break;o=s,s=s.parent??null}return!1},Oa=(t,n,r,i=t)=>{let a=new Set,o=n.filter(e=>{if(r.cfg.enclosingFunction(e)!==t)return!1;let n=e;for(;n&&n!==i;)n=n.parent??null;return n===i}),s=new Set(o),c=new Map;for(;o.length>0;){let t=o.pop();if(!t)break;if(t===i){a.add(t);continue}let n=t,r=n.parent??null,l=null,u=null,d=!1;for(;r&&r!==i;){if(E(r,`ConditionalExpression`)){let t=r.consequent===n,i=r.alternate===n;if(t||i){let i=mn(e(r.test));if(i!==null){if(i!==t){d=!0;break}n=r,r=n.parent??null;continue}l=r,u=t?`consequent`:`alternate`;break}}if(E(r,`LogicalExpression`)&&r.right===n){let t=mn(e(r.left));if(!(r.operator===`&&`&&t===!0||r.operator===`||`&&t===!1)){d=!0;break}}if(E(r,`AssignmentPattern`)&&r.right===n){d=!0;break}n=r,r=n.parent??null}if(d)continue;if(!l||!u){a.add(t);continue}let f=c.get(l)??new Set;f.add(u),c.set(l,f),f.has(`alternate`)&&f.has(`consequent`)&&!s.has(l)&&(s.add(l),o.push(l))}return a},ka=(e,t,n,r=e)=>{let i=n.cfg.enclosingFunction(e);if(!i)return!1;let a=n.cfg.cfgFor(i);if(!a)return!1;let o=a.blockOf(e);if(!o)return!1;let s=S(r),c=new Set([...Oa(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=S(e);return t===o&&s!==null&&n!==null&&n<s?[]:[t]}));if(c.has(o))return!0;let l=new Set([o]),u=[o];for(;u.length>0;){let e=u.pop();if(!e)break;for(let t of e.successors)if(!c.has(t.to)){if(t.to===a.exit)return!1;l.has(t.to)||(l.add(t.to),u.push(t.to))}}return c.size>0},Aa=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...Oa(e,t,n)].flatMap(e=>{let t=i.blockOf(e);return t?[t]:[]}));if(a.size===0)return!1;let o=new Set([i.entry]),s=[i.entry];for(;s.length>0;){let e=s.pop();if(!e)break;if(!a.has(e)){for(let t of e.successors)if(!(r.ignoreThrowEdges&&t.kind===`throw`)){if(t.to===i.exit)return!1;o.has(t.to)||(o.add(t.to),s.push(t.to))}}}return!0},ja=`Component`,Ma=`PureComponent`,Boe=e=>!E(e,`MemberExpression`)||!E(e.object,`Identifier`)||e.object.name!==`React`||!E(e.property,`Identifier`)?!1:e.property.name===ja||e.property.name===Ma,Na=e=>{if(!E(e,`ClassDeclaration`)&&!E(e,`ClassExpression`))return!1;let t=e.superClass;return t?Boe(t)?!0:E(t,`Identifier`)?t.name===ja||t.name===Ma:!1:!1},Voe=e=>{let t=e,n=e.parent;for(;n;){if(E(n,`IfStatement`)&&E(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||E(n,`ConditionalExpression`)&&E(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(E(n,`WhileStatement`)||E(n,`ForStatement`))&&n.body===t&&n.test&&E(n.test,`Literal`)&&!n.test.value||E(n,`LogicalExpression`)&&n.right===t&&E(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},H=(e,t)=>{if(Voe(e))return!1;let n=t.cfg.enclosingFunction(e);if(!n)return!0;let r=t.cfg.cfgFor(n);if(!r)return!0;let i=r.blockOf(e);if(!i)return!0;let a=new Set([r.entry]),o=[r.entry];for(;o.length>0;){let e=o.pop();if(!e)break;if(e===i)return!0;for(let t of e.successors)a.has(t.to)||(a.add(t.to),o.push(t.to))}return!1},Hoe=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),Uoe=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),Pa=(e,t)=>{let n=P(e.callee);if(!E(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=P(n.object);return E(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&k(n)===`now`},Fa=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Literal`))return typeof r.value==`number`;if(E(r,`CallExpression`))return Pa(r,t);if(E(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||e.declarationNode.range[0]>=r.range[0]||n.has(e.id)||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Fa(e.initializer,t,n))}return E(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&Fa(r.argument,t,n):!E(r,`BinaryExpression`)||!Uoe.has(r.operator)?!1:Fa(r.left,t,new Set(n))&&Fa(r.right,t,new Set(n))},Ia=(e,t)=>{if(Pa(e,t))return!0;let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=P(n.object);if(!E(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=k(n);if(r.name===`console`)return Hoe.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&Fa(a,t))},La=({node:e,scopes:t})=>{let n=P(e);if(E(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(E(n,`ThisExpression`))return`this`;if(!E(n,`MemberExpression`))return null;let r=La({node:n.object,scopes:t}),i=k(n);return r&&i?`${r}.${i}`:null},Woe=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),Goe=e=>{if(E(e,`FunctionDeclaration`))return e.id&&E(e.id,`Identifier`)?e.id:null;let t=b(e),n=t.parent;if(!n||!E(n,`VariableDeclarator`)||n.init!==t||!E(n.id,`Identifier`))return null;let r=n.parent;return!r||!E(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},Ra=(e,t,n,r)=>{let i=new Set,a=(e,o)=>{if(i.has(e))return;i.add(e);let s=new Map(o),c=new Map;D(e,t=>{if(t!==e&&w(t)){let e=Goe(t);return e&&t.body&&(!r||r(t))&&s.set(e,t.body),!1}let n=E(t,`VariableDeclarator`)&&t.init?P(t.init):null;if(E(t,`VariableDeclarator`)&&E(t.id,`Identifier`)&&E(n,`Identifier`)&&t.parent&&E(t.parent,`VariableDeclaration`)&&t.parent.kind===`const`){let e=T(n,n.name)?.bindingIdentifier;e&&c.set(t.id,e)}});for(let[e,t]of c){let n=t,r=new Set([e]);for(;c.has(n)&&!r.has(n);)r.add(n),n=c.get(n)??n;let i=s.get(n);i&&s.set(e,i)}let l=(e,i=!1)=>{if(!i&&w(e)||(t(e),xt(e,e=>l(e)),!E(e,`CallExpression`)))return;let o=P(e.callee);if(w(o)){o.body&&(!r||r(o))&&a(o.body,s);return}if(E(o,`Identifier`)){let e=T(o,o.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s);return}if(!(!E(o,`MemberExpression`)||!Woe.has(k(o)??``)))for(let t of e.arguments??[]){if(n&&!n(e,t))continue;let i=P(t);if(w(i))i.body&&(!r||r(i))&&a(i.body,s);else if(E(i,`Identifier`)){let e=T(i,i.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s)}}};l(e,!0),i.delete(e)};a(e,new Map)},za=(e,t)=>{if(!w(e))return;let n=e.body;n&&D(n,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:t(e))},Ba=(e,t,n,r=e,i=new Set)=>{let a=P(e);if(E(a,`ObjectExpression`))return a;if(!E(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||bn(o,r,n)||t.some(e=>Ye(a,e,r,n))?null:(i.add(o.id),Ba(o.initializer,t,n,r,i))},Va=new Set([`window`,`globalThis`,`global`,`self`]),Koe=new Set([`body`,`documentElement`,`visualViewport`]),qoe=new Set([`initPlaces`,`places`]),Ha=new Set([`forceUpdate`,`setState`]),Ua=`mobx-react`,Wa=`disposeOnUnmount`,Joe=[`handler`],Ga=new Map([[`addEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`addListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependOnceListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`on`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`once`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`subscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),Yoe=new Map([[`removeEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`removeListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`off`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`unsubscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),Ka=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),Xoe=new Map([[`addListener`,[`removeListener`,`off`]],[`on`,[`off`,`removeListener`]],[`once`,[`off`,`removeListener`]],[`prependListener`,[`off`,`removeListener`]],[`prependOnceListener`,[`off`,`removeListener`]]]),qa=new Set([`AccessibilityInfo`,`AppState`,`Appearance`,`BackHandler`,`Dimensions`,`Keyboard`,`Linking`,`NetInfo`]),Ja=(e,t)=>{let n=M(e);if(!n)return!1;let r=[];if(za(n,t=>{E(t,`AwaitExpression`)&&t.range[0]<e.range[0]&&r.push(t)}),r.length===0)return!1;let i=t.cfg?.cfgFor(n),a=i?.blockOf(e);if(!i||!a)return!0;let o=new Set([i.entry]),s=[i.entry];for(;s.length>0;){let e=s.pop();if(!e)break;for(let t of e.successors)o.has(t.to)||(o.add(t.to),s.push(t.to))}let c=!1;for(let e of r){if(c)break;let t=i.blockOf(e);if(!t||!o.has(t))continue;if(t===a){c=!0;break}let n=new Set([t]),r=[t];for(;r.length>0;){let e=r.pop();if(!e)break;for(let t of e.successors){if(t.to===a){c=!0;break}n.has(t.to)||(n.add(t.to),r.push(t.to))}}}return c},Ya=e=>{if(!E(e,`CallExpression`))return null;let t=P(e.callee);return E(t,`Identifier`)?t.name:null},Xa=(e,t)=>{let n=Ya(e),r=E(e,`CallExpression`)?P(e.callee):null;return!!(n&&E(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&rt(e,n,`mobx`)===`runInAction`)},Za=(e,t,n=new Set)=>{if(t.isGlobalReference(e))return e.name;let r=t.symbolFor(e);if(!r||r.kind!==`const`||n.has(r.id)||r.references.some(e=>e.flag!==`read`))return null;n.add(r.id);let i=r.declarationNode;if(E(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?P(i.init):null;return E(e,`Property`)&&E(n,`ObjectPattern`)&&E(a,`Identifier`)&&Va.has(a.name)&&t.isGlobalReference(a)?A(e,{allowComputedString:!0}):null}let a=r.initializer?P(r.initializer):null;if(E(a,`Identifier`))return Za(a,t,n);if(!E(a,`MemberExpression`))return null;let o=P(a.object);return E(o,`Identifier`)&&Va.has(o.name)&&t.isGlobalReference(o)?k(a):null},Qa=(e,t)=>{if(!E(e,`CallExpression`))return null;let n=P(e.callee);if(Ya(e)&&E(n,`Identifier`))return Za(n,t);if(!E(n,`MemberExpression`))return null;let r=P(n.object);return!E(r,`Identifier`)||!Va.has(r.name)||T(r,r.name)?null:k(n)},$a=e=>E(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:A(e,{allowComputedString:!0}),eo=new WeakMap,to=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},no=e=>{let t=eo.get(e);if(t)return t;let n=new Set,r=new Map,i=new Map;if(E(e,`ClassBody`)){for(let t of e.body){let e=$a(t);e&&(E(t,`MethodDefinition`)&&(t.kind===`get`||t.kind===`set`)&&n.add(e),(E(t,`MethodDefinition`)||E(t,`PropertyDefinition`))&&t.value&&w(t.value)&&r.set(e,t.value))}D(e,t=>{let n=E(t,`AssignmentExpression`)?P(t.left):E(t,`UpdateExpression`)?P(t.argument):null;if(!E(n,`MemberExpression`)||!E(P(n.object),`ThisExpression`))return;let r=k(n);if(!r)return;let a=to(t,e),o=i.get(r)??[];o.push({node:t,enclosingMemberName:a?$a(a):null,isAssignment:E(t,`AssignmentExpression`)}),i.set(r,o)})}let a={accessorNames:n,memberFunctionsByName:r,instanceWritesByName:i};return eo.set(e,a),a},ro=(e,t,n)=>{if(!e||!E(e,`ClassBody`))return null;let r=no(e),i=r.memberFunctionsByName.get(t);return i?(r.instanceWritesByName.get(t)??[]).some(e=>e.isAssignment&&(!n||e.node.range[0]<=n.range[0]))?null:i:null},io=(e,t,n,r=new Set)=>{r.has(e)||(r.add(e),Ra(e,e=>{let i=n(e);if(i===!1||!E(e,`CallExpression`))return i;let a=P(e.callee);if(!E(a,`MemberExpression`)||!E(P(a.object),`ThisExpression`))return;let o=k(a),s=o?ro(t,o,e):null;s&&io(s,t,n,r)}))},Zoe=(e,t,n)=>{let r=new Set,i=new Map,a=(e,o)=>{let s=i.get(e);s===!0||s===o||(i.set(e,o),Ra(e,e=>{if(n.cfg&&!H(e,n))return!1;if(o&&r.add(e),!E(e,`CallExpression`))return;let i=P(e.callee);if(!E(i,`MemberExpression`)||!E(P(i.object),`ThisExpression`))return;let s=k(i),c=s?ro(t,s,e):null;c&&a(c,o||Ja(e,n))}))};return a(e,!1),r},Qoe=(e,t,n,r)=>{let i=M(e),a=M(t);if(!i||!a||i===a)return!1;let o=new Map,s=new Set,c=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(s.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};s.add(e);let l={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return D(n??t,t=>{if(!E(t,`CallExpression`))return;let i=P(t.callee);if((E(i,`Identifier`)?y(i,r.scopes):E(i,`MemberExpression`)&&E(P(i.object),`ThisExpression`)?ro(n,k(i)??``,t):null)!==e)return;let a=M(t);if(!a)return;let o=c(a);o.canInvokeAfterSuspension&&(l.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(Ja(t,r)?l.canInvokeAfterSuspension=!0:l.canInvokeBeforeSuspension=!0)}),s.delete(e),o.set(e,l),l};return c(i).canInvokeAfterSuspension},ao=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return Ra(e,e=>{if(i)return!1;if(Xa(e,n))return i=!0,!1;if(!E(e,`CallExpression`))return;let a=P(e.callee);if(!E(a,`MemberExpression`)||!E(P(a.object),`ThisExpression`))return;let o=k(a);if(o&&Ha.has(o))return i=!0,!1;let s=o?ro(t,o,e):null;if(s&&ao(s,t,n,r))return i=!0,!1}),i},oo=(e,t,n=new Set)=>{let r=P(e);if(n.has(r))return null;if(n.add(r),w(r))return r;if(E(r,`Identifier`)){let e=T(r,r.name)?.initializer;return e?oo(e,t,n):null}let i=E(r,`CallExpression`)?P(r.callee):null,a=(E(r,`CallExpression`)&&E(i,`MemberExpression`)&&k(i)===`bind`&&r.arguments?.[0]&&E(P(r.arguments[0]),`ThisExpression`)?P(i.object):null)??r,o=E(a,`MemberExpression`)&&E(P(a.object),`ThisExpression`)?k(a):null;return o?ro(t,o,r):null},$oe=(e,t,n)=>{let r=oo(e,t);if(!w(r))return!1;let i=r.body;if(!i)return!1;let a=!1;return Ra(i,e=>{if(a)return;if(Xa(e,n)){a=!0;return}if(!E(e,`CallExpression`))return;let r=P(e.callee);if(E(r,`MemberExpression`)&&E(P(r.object),`ThisExpression`)){let i=k(r);if(i&&Ha.has(i)){a=!0;return}let o=i?ro(t,i,e):null;if(o&&!ao(o,t,n))return;a=!0}}),a},ese=(e,t,n)=>{let r=new Set,i=new Set;io(e,t,e=>{if(E(e,`VariableDeclarator`)){let t=e.init?P(e.init):null,i=E(t,`CallExpression`)?P(t.callee):null;if(t&&(E(t,`NewExpression`)||E(t,`ObjectExpression`)||E(t,`ArrayExpression`)||E(t,`CallExpression`)&&E(i,`Identifier`)&&qoe.has(i.name))){let t=new Set;bi(e.id,t);let i=n.scopeFor(e);for(let e of t){let t=i.symbolsByName.get(e);t&&r.add(t.id)}}else if(E(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;bi(e.id,t);let i=n.scopeFor(e);for(let e of t){let t=i.symbolsByName.get(e);t&&r.add(t.id)}}}}if(E(e,`AssignmentExpression`)&&E(e.left,`MemberExpression`)){let t=P(e.right),r=E(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(E(e,`CallExpression`))for(let t of e.arguments??[]){let e=P(t),a=E(e,`Identifier`)?n.symbolFor(e):null;a&&r.has(a.id)&&i.add(a.id)}});for(let e of i)r.delete(e);return r},tse=e=>{let t=P(e);for(;E(t,`MemberExpression`);){let e=P(t.object);if(E(e,`ThisExpression`))return k(t);t=e}return null},so=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!E(n,`ClassBody`))return!0;let r=no(n);if(r.accessorNames.has(e))return!1;let i=to(t,n),a=i?$a(i):null;return!(r.instanceWritesByName.get(e)??[]).some(({node:e,enclosingMemberName:n})=>{let r=a===`componentDidMount`&&n===`componentDidMount`&&e.range[0]<=t.range[0],i=a===`constructor`&&n===`constructor`&&e.range[0]<=t.range[0],o=a===`componentWillUnmount`&&n===`componentDidMount`,s=a===`componentWillUnmount`&&n===`componentWillUnmount`&&e.range[0]>t.range[0];return!(n===`constructor`&&a!==`constructor`)&&!r&&!i&&!o&&!s&&!((a===`constructor`||a===`componentDidMount`)&&n===`componentWillUnmount`)})},nse=(e,t)=>{if(!E(t,`ClassBody`))return!1;let n=e.parent;for(;n&&n!==t;){if(w(n))return n.parent?.parent===t;if(E(n,`IfStatement`)||E(n,`ConditionalExpression`)||E(n,`LogicalExpression`)||E(n,`SwitchStatement`)||E(n,`TryStatement`)||E(n,`CatchClause`)||E(n,`ForStatement`)||E(n,`ForInStatement`)||E(n,`ForOfStatement`)||E(n,`WhileStatement`)||E(n,`DoWhileStatement`))return!1;n=n.parent}return!1},rse=(e,t,n)=>{let r=t.symbolFor(e);if(!r||r.kind!==`const`)return null;let i=r.references.flatMap(e=>{let t=b(e.identifier),r=t.parent;if(!E(r,`AssignmentExpression`)||r.right!==t||!E(r.left,`MemberExpression`)||!E(P(r.left.object),`ThisExpression`)||!nse(r,n))return[];let i=k(r.left);return i&&so(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!E(a,`AssignmentExpression`))return null;let o=M(r.declarationNode);if(!o||M(a)!==o)return null;let s=Math.min(e.range[0],a.range[0]),c=Math.max(e.range[0],a.range[0]),l=!1;return za(o,e=>{if(E(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},co=(e,t,n,r=new Set)=>{let i=P(e);if(E(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=rse(i,t,n);if(a)return co(a,t,n,r);if(e.kind===`const`&&e.initializer&&E(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=P(e.initializer);return E(a,`Identifier`)||E(a,`MemberExpression`)?co(a,t,n,r):`${i.name}#${e.id}`}return e.kind===`const`||e.kind===`function`&&e.references.every(e=>e.flag===`read`)||e.kind===`import`?`${i.name}#${e.id}`:null}if(E(i,`ThisExpression`))return`this`;if(!E(i,`MemberExpression`))return null;let a=tse(i);if(!a){let e=P(i.object),n=k(i);return!E(e,`Identifier`)||!t.isGlobalReference(e)||!n||!Koe.has(n)?null:`${e.name}.${n}`}if(a&&(!E(P(i.object),`ThisExpression`)||!so(a,i,n)))return null;let o=co(i.object,t,n,r),s=k(i);return o&&s?`${o}.${s}`:null},lo=(e,t,n)=>{let r=P(e);return E(r,`Literal`)?JSON.stringify(r.value):co(r,t,n)},uo=(e,t,n)=>{let r=P(e);if(E(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(E(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=co(r,t,n);return i?`reference:${i}`:null},ise=(e,t)=>{let n=P(e);if(!E(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||bn(r,n,t)||Ye(n,`capture`,n,t))return null;let i=La({node:n,scopes:t});return i?`options:${i}`:null},fo=(e,t)=>{let n=P(e);return E(n,`Literal`)?!n.value:E(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},po=(e,t,n,r)=>{let i=P(e.callee);if(!E(i,`MemberExpression`))return null;let a=k(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:Joe}:t,s=o.captureOptionsIndex===void 0?o.identityArgumentKinds.length:o.captureOptionsIndex+1;if(e.arguments.length<o.identityArgumentKinds.length||e.arguments.length>s)return null;let c=lo(i.object,n,r);if(!c)return null;let l=[];for(let[t,i]of o.identityArgumentKinds.entries()){let a=e.arguments?.[t];if(!a||E(a,`SpreadElement`))return null;let o=i===`event`?uo(a,n,r):lo(a,n,r);if(!o)return null;l.push(o)}let u=`${c}|${l.join(`|`)}`;if(o.captureOptionsIndex===void 0)return u;let d=e.arguments?.[o.captureOptionsIndex];if(d&&E(d,`SpreadElement`))return null;let f=`false`;if(d){let e=P(d);if(fo(e,n))f=`false`;else if(E(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=Ba(d,[`capture`],n),t=ise(d,n);if(!e||e.properties.some(e=>!E(e,`Property`)||A(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>E(e,`Property`)&&A(e,{allowComputedString:!0})===`capture`);if(r&&E(r,`Property`)&&fo(r.value,n))f=`false`;else if(r&&E(r,`Property`)&&E(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},ase=(e,t,n,r)=>{let i=po(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},mo=(e,t,n)=>{let r=P(e.callee);if(!E(r,`MemberExpression`))return[];let i=co(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||E(o,`SpreadElement`))return a;let s=uo(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},ose=(e,t,n)=>{let r=e.arguments[2];if(!r||E(r,`SpreadElement`))return null;let i=Ba(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>E(e,`Property`)&&A(e,{allowComputedString:!0})===`signal`);if(!a||!E(a,`Property`))return null;let o=P(a.value);if(!E(o,`MemberExpression`)||k(o)!==`signal`)return null;let s=co(o.object,t,n);return s?`abort:${s}`:null},ho=(e,t,n,r,i)=>{let a=Xoe.get(t)??[n.releaseMethodName],o=po(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?ose(e,r,i):null;return c&&s.push(c),Ka.has(t)?[...s,...mo(e,r,i)]:s},go=(e,t,n)=>{let r=b(e),i=r.parent,a=E(i,`AssignmentExpression`)&&i.right===r?i.left:E(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?co(a,t,n):null},sse=(e,t)=>{let n=P(e.callee);if(E(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&rt(e,n.name,Ua)===Wa;if(!E(n,`MemberExpression`))return!1;let r=P(n.object);return k(n)===Wa&&E(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&_e(e,r.name,Ua)},_o=(e,t,n)=>{let r=P(e.callee);if(E(r,`MemberExpression`)){let i=k(r),a=i?Yoe.get(i):void 0;if(a){let r=ase(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=mo(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!E(P(r.object),`ThisExpression`)){let e=co(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=co(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=co(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=Qa(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!E(a,`SpreadElement`)){let e=co(a,t,n);return e?[`timer:${i}:${e}`]:[]}return[]},vo=(e,t,n,r,i=new Set)=>{if(i.has(e))return!0;i.add(e);let a=!1;return Ra(e,e=>{if(a||e.range[0]>=r)return;if(E(e,`ThrowStatement`)||E(e,`NewExpression`))return a=!0,!1;if(!E(e,`CallExpression`)||_o(e,n,t).length>0||Ia(e,n))return;let o=P(e.callee);if(E(o,`MemberExpression`)){if(E(P(o.object),`ThisExpression`)){let r=k(o),a=r?ro(t,r,e):null;if(a&&!vo(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=y(o,n);if(!(s&&!vo(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},cse=(e,t,n)=>{let r=new Map;return io(e,t,e=>{if(!E(e,`CallExpression`))return;let i=e.arguments?.[0],a=i&&!E(i,`SpreadElement`)?P(i):null;if(!sse(e,n.scopes)||!E(a,`ThisExpression`))return;let o=e.arguments?.[1];if(!o||E(o,`SpreadElement`))return;let s=oo(o,t);if(!w(s))return;let c=new Map;io(s,t,e=>{if(E(e,`CallExpression`))for(let r of _o(e,n.scopes,t)){let t=c.get(r)??[];t.push(e),c.set(r,t)}});for(let[t,i]of c){if(!Aa(s,i,n))continue;let a=r.get(t)??[];a.push(e),r.set(t,a)}}),r},yo=(e,t,n,r=new Set)=>{let i=new Set;if(!e||!w(e)||r.has(e))return i;r.add(e);let a=null;Ra(e,t=>{E(t,`AwaitExpression`)&&M(t)===e&&(a===null||t.range[0]<a)&&(a=t.range[0])});let o=new Map;io(e,t,i=>{if(!E(i,`CallExpression`)||a!==null&&M(i)===e&&i.range[0]>a)return;let s=vo(e,t,n.scopes,i.range[0]),c=P(i.callee);if(E(c,`Identifier`)){let e=yo(y(c,n.scopes),t,n,r);for(let t of s?[]:e){let e=o.get(t)??[];e.push(i),o.set(t,e)}}if(E(c,`MemberExpression`)&&E(P(c.object),`ThisExpression`)){let e=k(c),a=yo(e?ro(t,e,i):null,t,n,r);for(let e of a){let t=o.get(e)??[];t.push(i),o.set(e,t)}}for(let e of s?[]:_o(i,n.scopes,t)){let t=o.get(e)??[];t.push(i),o.set(e,t)}});for(let[t,r]of o)Aa(e,r,n)&&i.add(t);return i},bo=(e,t,n,r=new Set)=>{let i=new Map,a=new Map;if(!e||!w(e)||r.has(e))return i;r.add(e);let o=null;Ra(e,t=>{E(t,`AwaitExpression`)&&M(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])}),Ra(e,s=>{if(!E(s,`CallExpression`)||o!==null&&M(s)===e&&s.range[0]>o||vo(e,t,n.scopes,s.range[0]))return;for(let r of _o(s,n.scopes,t)){let t=a.get(r)??[];t.push(s),a.set(r,t),Aa(e,[s],n)&&i.set(r,(i.get(r)??0)+1)}if(!Aa(e,[s],n))return;let c=P(s.callee),l=E(c,`MemberExpression`)&&E(P(c.object),`ThisExpression`)?k(c):null,u=bo(l?ro(t,l,s):E(c,`Identifier`)?y(c,n.scopes):null,t,n,new Set(r));for(let[e,t]of u)i.set(e,(i.get(e)??0)+t)});for(let[t,r]of a){if(!Aa(e,r,n))continue;let a=1;[...r.keys()].every(t=>Aa(e,r.filter(e=>e!==r[t]),n))&&(a+=1),i.set(t,Math.max(i.get(t)??0,a))}return i},lse=(e,t,n)=>{let r=new Map;return io(e,t,e=>{if(E(e,`CallExpression`))for(let i of _o(e,n,t)){let t=r.get(i)??[];t.push(e),r.set(i,t)}}),r},xo=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(w(n))return null;if(E(n,`ForStatement`)||E(n,`ForInStatement`)||E(n,`ForOfStatement`)||E(n,`WhileStatement`)||E(n,`DoWhileStatement`))return n;n=n.parent}return null},use=(e,t,n)=>{let r=n.scopes,i=new Map;io(e,t,e=>{if(!E(e,`CallExpression`))return;if(n.cfg&&!H(e,n))return!1;let a=P(e.callee);if(!E(a,`MemberExpression`))return;let o=k(a),s=o?Ga.get(o):void 0;if(!s)return;let c=po(e,s,r,t);if(!c)return;let l=i.get(c)??[];l.push(e),i.set(c,l)});let a=new Map;for(let[t,n]of i){if(n.some(t=>!!xo(t,e))){a.set(t,1/0);continue}let r=[];for(let t of n){let n=r.find(n=>n.every(n=>Da(t,n,e)));n?n.push(t):r.push([t])}a.set(t,r.length)}return a},So=(e,t,r,i=new Set)=>{let a=P(e);if(E(a,`Identifier`)){let e=r.symbolFor(a);if(!e||i.has(e.id)||bn(e,a,r))return!1;let n=T(a,a.name)?.initializer;return n?(i.add(e.id),So(n,t,r,i)):!1}if(E(a,`MemberExpression`)){let e=k(a),o=P(a.object);if(e!==`current`)return So(o,t,r,i);if(!E(t,`ClassBody`)||!E(o,`MemberExpression`))return!1;let s=k(o),c=P(o.object);if(!s||!E(c,`ThisExpression`))return!1;let l=t.body?.find(e=>$a(e)===s);if(!l||!E(l,`PropertyDefinition`)||l.static||!E(l.value,`CallExpression`)||!n(l.value,`createRef`,r,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!1,resolveNamedAliases:!0}))return!1;let u=a;for(;u&&u.parent!==t;)u=u.parent;let d=u?To(u):null,f=!1;return d&&Ra(d,e=>{if(f||e.range[0]>=a.range[0]||!E(e,`AssignmentExpression`))return;let t=P(e.left);E(t,`MemberExpression`)&&E(P(t.object),`ThisExpression`)&&k(t)===s&&(f=!0)}),!f}return!1},Co=(e,t,n,r=new Set)=>{let i=P(e);if(E(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||bn(e,i,n))return!1;let a=T(i,i.name)?.initializer;return a?(r.add(e.id),Co(a,t,n,r)):!1}if(!E(i,`CallExpression`))return!1;let a=P(i.callee);if(!E(a,`MemberExpression`))return!1;let o=k(a),s=P(a.object);if((o===`select`||o===`selectAll`)&&E(s,`Identifier`)&&(_e(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!E(e,`SpreadElement`)&&So(e,t,n))}return Co(a.object,t,n,r)},dse=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!E(e,`CallExpression`))return null;let c=P(e.callee),l=E(c,`MemberExpression`)?k(c):null;if(l&&Ga.has(l)&&E(c,`MemberExpression`)){let u=Ga.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=P(c.object),m=So(p,i,s),h=Co(p,i,s);for(;;){if(p=P(p),E(p,`CallExpression`)){p=P(p.callee);continue}if(E(p,`MemberExpression`)){p=P(p.object);continue}break}let g=E(p,`Identifier`)?s.symbolFor(p):null,_=g?t.has(g.id):!1,ee=u?po(e,u,s,i):null,v=u?ho(e,l,u,s,i):[],te=v.flatMap(e=>n.get(e)??[]),ne=v.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),re=te.filter(t=>ka(e,[t],a)).length,ie=xo(e),ae=!!(ie&&te.some(t=>xo(t)===ie&&ka(e,[t],a))),y=ee?r.get(ee)??1:1,oe=!!(ee&&(ka(e,ne,a)||ka(e,te,a)&&(l===`addEventListener`||ae||re>=y)));if(!(!f&&!_&&!oe&&!m&&!h))return null;let se=go(e,s,i),ce=P(c.object),le=E(ce,`Identifier`)?rt(e,ce.name,`react-native`):null,ue=E(ce,`Identifier`)&&(le!==null&&qa.has(le)||s.isGlobalReference(ce)&&qa.has(ce.name)),de=l===`subscribe`&&se?[`returned:unsubscribe:${se}`,`returned:call:${se}`]:(l===`addEventListener`||l===`addListener`)&&ue&&se?[`returned:remove:${se}`]:[];return{isAcquiredAfterSuspension:o||Ja(e,a),node:e,listenerIdentityKey:Ka.has(l)?ee:null,registrationCount:Ka.has(l)?y:1,releaseKeys:u?[...ho(e,l,u,s,i),...de]:de}}let u=Qa(e,s);if(u===`setInterval`){let t=go(e,s,i);return{isAcquiredAfterSuspension:o||Ja(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!$oe(e.arguments[0],i,s))return null;let t=go(e,s,i);return{isAcquiredAfterSuspension:o||Ja(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},wo=e=>(E(e,`MethodDefinition`)||E(e,`PropertyDefinition`))&&w(e.value)?e.value:null,To=e=>{let t=wo(e);return t&&w(t)?t.body??null:null},Eo=C({id:`class-component-missing-component-will-unmount-teardown`,title:`Class component acquires a resource with no teardown`,severity:`warn`,category:`Bugs`,requires:[`react`],recommendation:"Release listeners and timers acquired in `componentDidMount`/`constructor` by adding a `componentWillUnmount` that removes them (or use MobX `disposeOnUnmount`).",create:e=>({ClassBody(t){let n=t.parent;if(!n||!Na(n))return;let r=t.body??[],i=r.find(e=>$a(e)===`componentWillUnmount`),a=yo(i?wo(i):null,t,e),o=bo(i?wo(i):null,t,e);for(let n of r){let r=$a(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=To(n);if(!i)continue;let s=ese(i,t,e.scopes),c=lse(i,t,e.scopes),l=use(i,t,e),u=Zoe(i,t,e),d=[];if(io(i,t,n=>{if(e.cfg&&!H(n,e))return!1;let r=dse(n,s,c,l,t,e,u.has(n)||Qoe(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=cse(i,t,e),p=d.find(t=>{if(t.isAcquiredAfterSuspension||t.releaseKeys.length===0)return!0;if(t.releaseKeys.some(e=>a.has(e))){if(t.listenerIdentityKey&&t.registrationCount>1){let e=t.releaseKeys.some(e=>e.startsWith(`listener:removeAllListeners:`)&&a.has(e)),n=t.releaseKeys.reduce((e,t)=>t.startsWith(`listener:removeAllListeners:`)?e:e+(o.get(t)??0),0);if(!e&&n<t.registrationCount)return!0}return!1}return!t.releaseKeys.some(n=>{let r=f.get(n)??[];return ka(t.node,r,e)})});if(p){e.report({node:p.node,message:"This class registers a listener or timer during mount without a matching teardown on every unmount path, so it can keep firing after the component unmounts; release it in `componentWillUnmount`."});return}}}})}),Do=(e,t,n={})=>{if(!e||!t)return e===t;let r=P(e),i=P(t);if(r!==e||i!==t)return Do(r,i,n);if(e.type!==t.type)return!1;if(E(e,`ThisExpression`))return!0;if(E(e,`Identifier`)&&E(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(E(e,`PrivateIdentifier`)&&E(t,`PrivateIdentifier`))return e.name===t.name;if(E(e,`Literal`)&&E(t,`Literal`))return e.value===t.value;if(E(e,`MemberExpression`)&&E(t,`MemberExpression`))return e.computed===t.computed?Do(e.object,t.object,n)&&Do(e.property,t.property,e.computed?n:{}):!1;if(E(e,`CallExpression`)&&E(t,`CallExpression`)){if(!Do(e.callee,t.callee,n))return!1;let r=e.arguments??[],i=t.arguments??[];return r.length===i.length?r.every((e,t)=>Do(e,i[t],n)):!1}return!1},fse=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),pse=/button|link|nav|anchor/i,mse=/(?:button|link|anchor)$/i,Oo=/^[A-Z]/,hse=[`onClick`,`onPress`],ko=e=>Ji(P(e)),Ao=(e,t)=>{let n=P(e);if(Ji(n))return!0;let r=N(n,t);return r?.kind!==`const`||!r.initializer?!1:Ji(P(r.initializer))},jo=(e,t,n=new Set)=>{let r=P(e);if(Ao(r,t))return null;if(E(r,`ConditionalExpression`)){let e=r.consequent,i=r.alternate;return Ao(e,t)?jo(i,t,n):Ao(i,t)?jo(e,t,n):null}if(E(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&E(e.declarationNode,`VariableDeclarator`)&&E(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),jo(e.initializer,t,n)):r}if(E(r,`ArrowFunctionExpression`)||E(r,`FunctionExpression`)||E(r,`FunctionDeclaration`)){let e=P(r.body);if(!E(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return E(t,`ExpressionStatement`)?t.expression:E(t,`ReturnStatement`)&&t.argument?P(t.argument):null}return r},Mo=(e,t)=>!e.value||!E(e.value,`JSXExpressionContainer`)?null:jo(e.value.expression,t),No=(e,t)=>{let n=F(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(E(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!E(n.value,`JSXExpressionContainer`))return!0;let r=P(n.value.expression);return!E(r,`Literal`)||r.value!==!1},Po=(e,t)=>{let n=F(e.attributes,t);if(!n?.value)return!1;if(E(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!E(n.value,`JSXExpressionContainer`))return!0;let r=P(n.value.expression);return E(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!ko(r)},Fo=e=>{if(E(e,`JSXText`))return e.value.trim().length>0;if(E(e,`JSXElement`))return Io(e);if(E(e,`JSXFragment`))return e.children.some(e=>Fo(e));if(!E(e,`JSXExpressionContainer`))return!1;let t=P(e.expression);return E(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:ko(t)?!1:E(t,`JSXElement`)?Io(t):E(t,`JSXFragment`)?t.children.some(e=>Fo(e)):!0},Io=e=>Po(e.openingElement,`aria-label`)||Po(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>Fo(e)),gse=e=>{let t=F(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=ai(t.value);return n!==null&&n<0},_se=(e,t)=>er(e,t)||No(e,`hidden`),vse=(e,t)=>{let n=e.openingElement,r=tr(n.name);if(!r)return!1;if(Jr.has(r)){if(!fse.has(r))return!1}else if(t){if(!Oo.test(r)||!mse.test(r))return!1}else if(!Oo.test(r)||!pse.test(r))return!1;return t?r===`a`&&!F(n.attributes,`href`)||No(n,`disabled`)||No(n,`isDisabled`)||No(n,`aria-disabled`)||gse(n)?!1:Io(e):!0},Lo=(e,t,n,r)=>{let i=e=>Lo(e,t,n,r);if(E(e,`JSXElement`)){if(t&&_se(e.openingElement,r))return!1;if(vse(e,t!==null)){if(!t)return!0;for(let r of hse){let i=F(e.openingElement.attributes,r),a=i?Mo(i,n):null;if(a&&Do(t,a))return!0}}return e.children.some(e=>i(e))}return E(e,`JSXFragment`)?e.children.some(e=>i(e)):t?E(e,`JSXExpressionContainer`)?i(e.expression):E(e,`LogicalExpression`)?i(e.left)||i(e.right):E(e,`ConditionalExpression`)?i(e.consequent)||i(e.alternate):!1:!1},Ro=(e,t,n,r)=>{if(!e||!E(e,`JSXElement`))return!1;let i=t?Mo(t,n):null;return t&&!i?!1:e.children.some(e=>Lo(e,i,n,r))},yse=new Set([`focus`,`select`]),bse=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),xse=new Set([`getElementById`,`querySelector`]),Sse=new Set([`global`,`globalThis`,`window`]),Cse=e=>{if(!e)return null;let t=E(e,`ChainExpression`)?e.expression:e;if(!E(t,`CallExpression`))return null;let n=P(t.callee);if(!E(n,`MemberExpression`))return null;let r=n.property;return E(r,`Identifier`)?r.name:null},zo=(e,t)=>{let n=Cse(e);return n!==null&&(yse.has(n)||t&&bse.has(n))},wse=(e,t)=>{let n=P(e);return E(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!E(n,`MemberExpression`)||!E(n.object,`Identifier`)||!E(n.property,`Identifier`)||n.property.name!==`document`?!1:Sse.has(n.object.name)&&t.isGlobalReference(n.object)},Bo=e=>{let t=P(e);return E(t,`Identifier`)||E(t,`Literal`)?!0:E(t,`TemplateLiteral`)&&t.expressions.every(e=>Bo(e))},Tse=(e,t)=>{if(!E(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!E(n.id,`Identifier`)||!n.init)return null;let r=P(n.init);if(!E(r,`CallExpression`)||r.arguments.length!==1||E(r.arguments[0],`SpreadElement`)||!Bo(r.arguments[0]))return null;let i=P(r.callee);return!E(i,`MemberExpression`)||!E(i.property,`Identifier`)||!xse.has(i.property.name)||!wse(i.object,t)?null:n.id.name},Vo=e=>E(e,`ReturnStatement`)?e.argument===null:!E(e,`BlockStatement`)||e.body.length!==1?!1:Vo(e.body[0]),Ese=e=>{if(!E(e,`IfStatement`)||e.alternate||!Vo(e.consequent))return!1;let t=P(e.test),n=E(t,`ChainExpression`)?t.expression:t;if(!E(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=P(n.callee),i=E(r,`MemberExpression`)?P(r.object):null;return E(r,`MemberExpression`)&&E(r.property,`Identifier`)&&r.property.name===`closest`&&E(i,`MemberExpression`)&&E(i.object,`Identifier`)&&E(i.property,`Identifier`)&&i.property.name===`target`&&E(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},Dse=(e,t)=>{if(!E(e,`ExpressionStatement`))return!1;let n=P(e.expression);if(!E(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=P(n.callee);if(!E(r,`MemberExpression`))return!1;let i=P(r.object);return E(i,`Identifier`)&&i.name===t&&E(r.property,`Identifier`)&&r.property.name===`focus`},Ose=(e,t,n)=>{if(!e)return!1;if(zo(e,n))return!0;if(!E(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!Ese(r[0]),a=r[i],o=a?Tse(a,t):null;return o?r.length===i+2&&Dse(r[i+1],o):i>0?!1:r.every(e=>E(e,`ExpressionStatement`)&&zo(e.expression,n))},Ho=(e,t)=>Ji(e)&&(!E(e,`Identifier`)||t.isGlobalReference(e)),Uo=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ConditionalExpression`)){let e=P(r.consequent),i=P(r.alternate),a=null;return Ho(e,t)&&(a=Uo(i,t,n)),Ho(i,t)&&(a=Uo(e,t,n)),a?{...a,isConditional:!0}:null}if(E(r,`Identifier`)){let e=t.symbolFor(r);return!e?.initializer||![`const`,`let`,`function`].includes(e.kind)||e.references.some(e=>e.flag!==`read`)||n.has(e.id)?null:(n.add(e.id),Uo(e.initializer,t,n))}return E(r,`ArrowFunctionExpression`)||E(r,`FunctionExpression`)||E(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},Wo=(e,t)=>{let n=Uo(e,t);return n?Ose(n.handlerFunction.body??null,t,!n.isConditional):!1},Go=(e,t)=>!e.value||!E(e.value,`JSXExpressionContainer`)?!1:Wo(e.value.expression,t),Ko=e=>{let t=F(e.attributes,`role`);if(!t)return!1;let n=Xn(t);return n!==null&&Lr.has(n)},qo=e=>{if(E(e,`Identifier`)||E(e,`PrivateIdentifier`))return e.name},Jo=e=>{if(E(e,`FunctionExpression`)||E(e,`ArrowFunctionExpression`))return e},kse=(e,t)=>{for(let n of e.body){if(!E(n,`MethodDefinition`)&&!E(n,`PropertyDefinition`)||qo(n.key)!==t)continue;let e=Jo(n.value);if(e)return e}},Yo=(e,t)=>{for(let n of e.properties){if(!E(n,`Property`)||qo(n.key)!==t)continue;let e=Jo(n.value);if(e)return e}},Xo=e=>{let t=qo(e.property);if(t===void 0)return;let n=e.object;if(E(n,`ThisExpression`)){let n=e.parent;for(;n;){if(E(n,`ClassBody`))return kse(n,t);if(E(n,`ObjectExpression`)){let e=Yo(n,t);if(e)return e}n=n.parent}return}if(E(n,`Identifier`)){let e=T(n,n.name);if(E(e?.initializer,`ObjectExpression`))return Yo(e.initializer,t)}},Ase=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Zo=e=>{if(!e)return!1;let t=E(e,`ChainExpression`)?e.expression:e;if(!E(t,`CallExpression`))return!1;let n=t.callee;return!E(n,`MemberExpression`)||!E(n.property,`Identifier`)?!1:Ase.has(n.property.name)},Qo=e=>{if(!e)return!1;if(Zo(e))return!0;if(E(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!E(e,`ExpressionStatement`)||!Zo(e.expression))return!1;return!0}return!1},$o=e=>{if(!e.value||!E(e.value,`JSXExpressionContainer`))return!1;let t=P(e.value.expression);return E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`)?Qo(t.body):E(t,`MemberExpression`)?Qo(Xo(t)?.body):!1},es=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],ts=[`onClick`,`onClickCapture`],jse=new Set([...ts,...es].map(e=>e.toLowerCase())),Mse=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),Nse=(e,t)=>{let n=P(e);if(E(n,`ObjectExpression`))return n;if(!E(n,`Identifier`))return null;let r=N(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=P(r.initializer);return E(i,`ObjectExpression`)?i:null},ns=(e,t,n,r)=>{let i=Nse(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(E(e,`SpreadElement`)){if(!ns(e.argument,t,n,r)){a=!1;break}continue}if(!E(e,`Property`)){a=!1;break}let i=A(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(Mse.has(o)){a=!1;break}jse.has(o)&&n.set(o,e.value)}return r.delete(i),a},Pse=(e,t)=>{let n=new Map;for(let r of e)if(E(r,`JSXSpreadAttribute`)&&!ns(r.argument,t,n,new Set))return null;return n},Fse=new Set([`tr`,`td`,`th`,`canvas`]),Ise=new Set([`motion`,`styled`]),Lse=e=>{let t=e.name;if(!E(t,`JSXMemberExpression`))return null;let n=t.object;if(!E(n,`JSXIdentifier`)||!Ise.has(n.name))return null;let r=t.property.name;return r&&Jr.has(r)?r:null},Rse=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),zse=e=>{let t=F(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!E(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Rse.has(r.toLowerCase()))},Bse=e=>{if(!E(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!E(e,`MemberExpression`))return null;let t=e.property;return E(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},rs=e=>{if(!e||typeof e!=`object`)return!1;if(Bse(e))return!0;let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let n=t[e];if(Array.isArray(n)){for(let e of n)if(e&&typeof e==`object`&&typeof e.type==`string`&&rs(e))return!0}else if(n&&typeof n==`object`&&typeof n.type==`string`&&rs(n))return!0}return!1},is=e=>{let t=P(e);if(E(t,`Identifier`)){let e=T(t,t.name);if(!e?.initializer)return null;t=P(e.initializer)}return E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`)||E(t,`FunctionDeclaration`)?t:null},Vse=e=>!e.value||!E(e.value,`JSXExpressionContainer`)?null:is(e.value.expression),Hse=e=>{let t=Vse(e);return t?rs(t.body??null):!1},Use=(e,t)=>e===`li`&&!!(F(t.attributes,`onMouseEnter`)||F(t.attributes,`onMouseOver`)),as=C({id:`click-events-have-key-events`,title:`Click handler missing keyboard handler`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Pair `onClick` with a key handler so keyboard users can trigger it.",category:`Accessibility`,create:e=>{let t=Or(e.settings),n=dt(e.filename);return{JSXOpeningElement(r){if(n)return;let i=Lse(r)??Zn(r,e.settings);if(!Jr.has(i)||i===`label`||!Fse.has(i)&&ii(i,r))return;let a=Pse(r.attributes,e.scopes);if(!a&&t)return;let o=a??new Map,s=F(r.attributes,`onClick`)??F(r.attributes,`onClickCapture`),c=ts.map(e=>o.get(e.toLowerCase())).find(e=>e!==void 0);if(!s&&!c||s&&$o(s)||s&&Go(s,e.scopes)||c&&Wo(c,e.scopes))return;let l=c?is(c):null;l&&rs(l.body??null)||zse(r)||Use(i,r)||s&&Hse(s)||Ro(r.parent,null,e.scopes,e.settings)||s&&Ro(r.parent,s,e.scopes,e.settings)||er(r,e.settings)||Ko(r)||es.some(e=>F(r.attributes,e)||o.has(e.toLowerCase()))||e.report({node:r.name,message:"Keyboard users can't trigger this click handler because there's no keyboard one, so add `onKeyUp`, `onKeyDown`, or `onKeyPress`."})}}}}),os=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=P(e.callee);if(!E(r,`MemberExpression`)||r.computed)return!1;let i=P(r.object);return E(i,`Identifier`)&&i.name===t&&E(r.property,`Identifier`)&&r.property.name===n},ss=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=P(n.object);return E(r,`Identifier`)&&r.name===`localStorage`&&E(n.property,`Identifier`)&&n.property.name===t},Wse=e=>{let t=e.handler;if(!t)return!1;let n=!1,r=!1;return D(t.body,e=>{if(w(e))return!1;E(e,`ReturnStatement`)&&(n=!0),E(e,`ThrowStatement`)&&(r=!0)}),n&&!r},Gse=(e,t)=>{let n=P(e);if(!E(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r)return null;let i=r.kind===`function`?r.declarationNode:r.initializer;return w(i)?i:null},Kse=(e,t)=>{if(!w(e))return!1;let n=e.params?.[0];if(!n||!E(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!1;let i=new Set([r.id]),a=!1;return D(e.body,e=>{if(w(e))return!1;if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)&&e.init){let n=P(e.init);if(E(n,`Identifier`)){let r=t.symbolFor(n);if(r&&i.has(r.id)){let n=t.symbolFor(e.id);n&&i.add(n.id)}}}if(!E(e,`UnaryExpression`)||e.operator!==`typeof`)return;let n=P(e.argument);if(!E(n,`MemberExpression`))return;let r=P(n.object);if(!E(r,`Identifier`))return;let o=t.symbolFor(r);o&&i.has(o.id)&&(a=!0)}),a},cs=(e,t)=>{e.set(t,(e.get(t)??0)+1)},qse=e=>{let t=e.parent;return!!(t&&E(t,`ReturnStatement`)&&t.argument===e)},Jse=({programNode:e,scopes:t,resolveKey:n})=>{let r=new Map,i=new Map,a=new Set;D(e,e=>{if(!E(e,`CallExpression`)||!ss(e,`getItem`))return;let t=e.arguments?.[0];if(!t)return;let i=n(t);i!==null&&cs(r,i)}),D(e,e=>{if(!E(e,`TryStatement`)||!Wse(e))return;let r=new Map,o=new Map;D(e.block,e=>{if(w(e))return!1;if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)&&e.init){let i=P(e.init);if(E(i,`CallExpression`)&&ss(i,`getItem`)){let a=i.arguments?.[0],o=t.symbolFor(e.id);if(a&&o){let e=n(a);e!==null&&r.set(o.id,e)}}if(E(i,`CallExpression`)&&os(i,`JSON`,`parse`)){let n=i.arguments?.[0],a=t.symbolFor(e.id);if(n&&E(n,`Identifier`)&&a){let e=t.symbolFor(n);e&&r.has(e.id)&&o.set(a.id,e.id)}}}if(!E(e,`ConditionalExpression`)||!qse(e))return;let s=P(e.test);if(!E(s,`CallExpression`))return;let c=s.arguments?.[0];if(!c||!E(c,`Identifier`))return;let l=t.symbolFor(c);if(!l)return;let u=o.get(l.id);if(u===void 0)return;let d=P(e.consequent);if(!E(d,`Identifier`)||t.symbolFor(d)?.id!==l.id)return;let f=Gse(s.callee,t);if(!f||!Kse(f,t))return;let p=r.get(u);p===void 0||a.has(u)||(a.add(u),cs(i,p))})});let o=new Set;for(let[e,t]of r)i.get(e)===t&&o.add(e);return o},Yse=/(?:[._:-]v\d+|@\d+|\bv\d+\b)/i,Xse=/[a-z]V\d+/,Zse=e=>Yse.test(e)||Xse.test(e),Qse=e=>os(e,`JSON`,`stringify`),ls=(e,t)=>{if(E(e,`Literal`))return typeof e.value==`string`?e.value:null;if(!E(e,`Identifier`))return null;let n=t.scopes.symbolFor(e);if(!n||n.kind!==`const`)return null;let r=n.initializer;return E(r,`Literal`)&&typeof r.value==`string`?r.value:null},us=C({id:`client-localstorage-no-version`,title:`Unversioned localStorage key`,tags:[`test-noise`],severity:`warn`,category:`Correctness`,recommendation:`Put a version in the storage key (e.g. "myKey:v1"). If you change the data shape later, old saved data can be ignored instead of crashing the app.`,create:e=>{let t=null,n=null;return{Program(e){t=e},CallExpression(r){if(!E(r.callee,`MemberExpression`))return;let i=P(r.callee.object);if(!E(i,`Identifier`)||i.name!==`localStorage`||!E(r.callee.property,`Identifier`)||r.callee.property.name!==`setItem`)return;let a=r.arguments?.[0];if(!a)return;let o=r.arguments?.[1];if(!o||!Qse(o))return;let s=ls(a,e);s!==null&&(Zse(s)||(n===null&&t&&(n=Jse({programNode:t,scopes:e.scopes,resolveKey:t=>ls(t,e)})),!n?.has(s)&&e.report({node:a,message:`${i.name}.setItem("${s}", JSON.stringify(...)) has no version, so changing the data shape later crashes your users' saved sessions. Add one to the key (e.g. "${s}:v1").`})))}}}}),ds=(e,t,n)=>{let r=e.get(t)??[];r.push(n),e.set(t,r)},fs=(e,t,n,r)=>{let i=e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)??new Map;ds(i,n,r),e.memberMutationCandidatesByReceiverIdentityAndMethod.set(t,i)},ps=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],ms=(e,t,n,r)=>{if(!E(t,`MemberExpression`))return;let i=k(t),a=B(t.object,r);i&&a&&(ds(e.memberMutationCandidatesByReceiverIdentity,a,n),fs(e,a,i,n))},$se=(e,t,n)=>{if(E(t,`AssignmentExpression`)){let r=P(t.left),i=B(r,n);i&&ds(e.receiverAssignmentCandidatesByIdentity,i,t),ms(e,r,t,n)}else E(t,`UnaryExpression`)&&t.operator===`delete`&&ms(e,P(t.argument),t,n);if(!E(t,`CallExpression`))return;let r=P(t.callee);if(!E(r,`MemberExpression`)||k(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(E(i,`Literal`)&&typeof i.value==`string`&&a&&!E(a,`SpreadElement`)){let r=B(a,n);r&&(ds(e.memberMutationCandidatesByReceiverIdentity,r,t),fs(e,r,i.value,t))}},hs=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=P(e.callee);if(!E(r,`MemberExpression`))return!1;let i=P(r.object);return k(r)===`defineProperty`&&E(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&E(e.arguments[1],`Literal`)&&e.arguments[1].value===t},ece=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},gs=(e,t)=>{let n=P(e);return E(n,`MemberExpression`)&&k(n)===t?n.object:null},_s=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},vs=(e,t)=>{let n=E(e,`FunctionDeclaration`)?e.id:E(e.parent,`VariableDeclarator`)&&e.parent.init===e&&E(e.parent.id,`Identifier`)?e.parent.id:null,r=n?t.scopes.scopeFor(e).symbolsByName.get(n.name):void 0;if(!r||r.references.length===0)return null;let i=[];for(let n of r.references){let r=n.identifier.parent;if(!E(r,`CallExpression`)||P(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},tce=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!E(i,`MethodDefinition`)||!E(a,`MethodDefinition`)||i.parent!==a.parent||!E(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},ys=(e,t,n,r=new Map)=>{let i=r.get(e)??new Set;if(i.has(t))return!1;let a=new Map(r);a.set(e,new Set([...i,t]));let o=n.cfg.enclosingFunction(e),s=n.cfg.enclosingFunction(t);if(!o||!s)return!1;if(o!==s){if(tce(o,s,e,n))return!0;if(_s(o,s)){let t=vs(s,n);return!t&&E(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>ys(e,t,n,a)))}if(_s(s,o)){let r=vs(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>ys(e,t,n,a)))}let r=vs(o,n),i=vs(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>ys(e,t,n,a)||r.some(e=>ys(e,t,n,a))):!1}let c=n.cfg.cfgFor(s),l=c?.blockOf(e),u=c?.blockOf(t);if(!c||!l||!u||l===u)return e.range[0]<t.range[0];let d=new Set,f=l===c.entry?[]:[c.entry];for(;f.length>0;){let e=f.shift();if(!(!e||d.has(e))){if(e===u)return!1;d.add(e);for(let t of e.successors)t.to!==l&&f.push(t.to)}}return!0},nce=(e,t,n)=>{let r=n.cfg.enclosingFunction(t);if(!r||e.length<2||e.some(e=>n.cfg.enclosingFunction(e)!==r))return!1;let i=n.cfg.cfgFor(r),a=i?.blockOf(t);if(!i||!a)return!1;let o=new Set(e.map(e=>i.blockOf(e)).filter(e=>e!==null));if(e.some(e=>i.blockOf(e)===a&&e.range[0]<t.range[0]))return!0;o.delete(a);let s=new Set,c=[i.entry];for(;c.length>0;){let e=c.shift();if(!(!e||s.has(e)||o.has(e))){if(e===a)return!1;s.add(e);for(let t of e.successors)c.push(t.to)}}return!0},bs=(e,t)=>{if(!E(e,`CallExpression`))return null;let n=P(e.callee);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.initializer??r?.declarationNode;return i&&w(P(i))?P(i):null},xs=(e,t,n,r)=>Cs(e,n).some(e=>e.callExpression!==t&&ys(e.callExpression,t,n)&&ws(e.callExpression,e.argumentIndex,n,r,new Map)),rce=(e,t,n,r)=>{let i=bs(P(e),n);if(!i||!w(i))return!1;let a=[];return D(i.body,e=>{if(e!==i.body&&w(e))return!1;E(e,`ReturnStatement`)&&e.argument&&a.push(e)}),a.length>0&&a.every(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return!1;let i=B(e.argument,n);if(!i)return!1;let a=P(e.argument),o=E(a,`Identifier`)?n.scopes.symbolFor(a):null;return o&&xs(o,e,n,r)?!0:!!r.memberMutationCandidatesByReceiverIdentity.get(i)?.some(r=>{let i=!!gs(E(r,`AssignmentExpression`)?r.left:E(r,`UnaryExpression`)?r.argument:r,t);return E(r,`CallExpression`)&&(i=hs(r,t,n)),i&&ys(r,e,n)})})},Ss=new WeakMap,Cs=(e,t,n=new Set)=>{let r=Ss.get(e);if(r)return r;if(n.has(e))return[];let i=new Set(n);i.add(e);let a=new Map,o=(e,t)=>{let n=a.get(e)??new Set;n.add(t),a.set(e,n)},s=e=>{if(e)for(let n of Cs(e,t,i))o(n.callExpression,n.argumentIndex)};for(let n of e.references){let e=n.identifier,r=!0;for(;e.parent&&r;){let t=e.parent;r=!1,P(t)===e?(e=t,r=!0):E(t,`Property`)&&t.value===e&&E(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(E(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||E(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||E(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(E(i,`VariableDeclarator`)&&i.init===e&&E(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(E(i,`AssignmentExpression`)&&i.right===e){let e=P(i.left),n=E(e,`Identifier`)?e:E(e,`MemberExpression`)&&E(P(e.object),`Identifier`)?P(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(E(i,`CallExpression`)){let t=i.arguments.findIndex(t=>t===e);t>=0&&o(i,t)}}let c=[...a].flatMap(([e,t])=>[...t].map(t=>({argumentIndex:t,callExpression:e})));return Ss.set(e,c),c},ice=(e,t,n)=>{if(!w(e))return!1;if(E(e,`ArrowFunctionExpression`)&&!E(e.body,`BlockStatement`))return B(e.body,n)===t;let r=[];return D(e.body,t=>{if(t!==e.body&&w(t))return!1;E(t,`ReturnStatement`)&&r.push(t)}),r.length>0&&r.every(e=>E(e,`ReturnStatement`)&&e.argument&&B(e.argument,n)===t)},ace=(e,t)=>{let n=e;for(;n.parent&&P(n.parent)===n;)n=n.parent;let r=n.parent;if(!E(r,`VariableDeclarator`)||r.init!==n||!E(r.id,`Identifier`))return null;let i=t.scopes.scopeFor(r);for(;i;){let e=i.symbolsByName.get(r.id.name);if(e)return e;i=i.parent}return null},ws=(e,t,n,r,i)=>{let a=bs(e,n);if(!a||!w(a))return!0;if(a.generator)return!1;let o=i.get(a)??new Set;if(o.has(t))return!1;o.add(t),i.set(a,o);let s=a.params[t];if(!E(s,`Identifier`))return!0;let c=n.scopes.ownScopeFor(a)?.symbolsByName.get(s.name);if(!c)return!0;let l=`symbol:${c.id}`;if(r.memberMutationCandidatesByReceiverIdentity.get(l)?.some(e=>n.cfg.enclosingFunction(e)===a)||Cs(c,n).some(e=>n.cfg.enclosingFunction(e.callExpression)===a?ws(e.callExpression,e.argumentIndex,n,r,i):!1))return!0;if(!ice(a,l,n))return!1;let u=ace(e,n);return u?Cs(u,n).some(e=>ws(e.callExpression,e.argumentIndex,n,r,i)):!1},oce=(e,t,n,r,i,a=[],o)=>{if(rce(t,n,i,e))return!0;let s=B(t,i),c=P(t),l=E(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&xs(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?ps(e,s,n):[],...a.flatMap(t=>ps(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!ece(i.scopes.scopeFor(e),u)&&!ys(e,r,i))continue;let t=null;if(E(e,`AssignmentExpression`)){if(s!==null&&B(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),ys(e,r,i)){d=!0;break}continue}t=gs(e.left,n)}else if(E(e,`UnaryExpression`)&&e.operator===`delete`)t=gs(e.argument,n);else if(E(e,`CallExpression`)&&hs(e,n,i)){let n=e.arguments[0];t=n&&!E(n,`SpreadElement`)?n:null}if(!t)continue;let c=B(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),ys(e,r,i)&&(d=!0))}return d||nce(p,r,i)},Ts=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>$se(t,n,e),hasProvenMutation:(n,r,i,a,o)=>oce(t,n,r,i,e,a,o)}},Es=(e,t)=>!!(e&&E(e,`MemberExpression`)&&E(e.property,`Identifier`)&&e.property.name===t),Ds=e=>Xr(e)||(e.kind!==`let`&&e.kind!==`var`||!E(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||!e.references.every(e=>e.flag===`read`)||e.scope.symbols.some(t=>t!==e&&t.name===e.name)?null:e.initializer),Os=e=>E(e,`Identifier`)?e.name:E(e,`Literal`)&&typeof e.value==`string`?e.value:null,ks=e=>{if(!E(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&E(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!E(n,`Property`)||!E(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!E(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!E(a,`TSTypeLiteral`))return null;let o=Os(n.key);if(!o)return null;for(let e of a.members)if(E(e,`TSPropertySignature`)&&Os(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},As=(e,t)=>{let n=e.parent;for(;n;){if(`typeParameters`in n){let e=n.typeParameters;if(e&&E(e,`TSTypeParameterDeclaration`)&&e.params.some(e=>E(e,`TSTypeParameter`)&&E(e.name,`Identifier`)&&e.name.name===t))return!0}n=n.parent}return!1},js=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},Ms=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=P(e.callee);if(E(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=P(n.object);return E(r,`Identifier`)&&(r.name===`window`||r.name===`globalThis`)&&t.isGlobalReference(r)},sce=new Set(`AbortSignal.Document.DocumentFragment.Element.EventTarget.HTMLElement.HTMLAnchorElement.HTMLButtonElement.HTMLCanvasElement.HTMLDivElement.HTMLFormElement.HTMLIFrameElement.HTMLImageElement.HTMLInputElement.HTMLLabelElement.HTMLLIElement.HTMLMediaElement.HTMLParagraphElement.HTMLSelectElement.HTMLSpanElement.HTMLTableElement.HTMLTextAreaElement.HTMLUListElement.HTMLVideoElement.MediaQueryList.Node.ShadowRoot.SVGElement.SVGSVGElement.Window.XMLDocument`.split(`.`)),cce=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,lce=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),uce=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),dce=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),Ns=e=>e===`Window`?[`Window`,`EventTarget`]:e===`Document`||e===`XMLDocument`||e===`DocumentFragment`||e===`ShadowRoot`?[e,`Node`,`EventTarget`]:e===`HTMLElement`||e.startsWith(`HTML`)?[e,`HTMLElement`,`Element`,`Node`,`EventTarget`]:e===`SVGElement`||e.startsWith(`SVG`)?[e,`SVGElement`,`Element`,`Node`,`EventTarget`]:e===`Element`?[`Element`,`Node`,`EventTarget`]:e===`Node`?[`Node`,`EventTarget`]:[e,`EventTarget`],fce=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:sce.has(e)||cce.test(e),Ps=(e,t,n)=>{if(E(e,`TSTypeReference`)){if(!E(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return fce(r,n)&&!js(e,r,t)&&!As(e,r)}if(!E(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(E(i,`TSNullKeyword`)||E(i,`TSUndefinedKeyword`))){if(!Ps(i,t,n))return!1;r=!0}return r},pce=(e,t)=>!E(e,`TSTypeReference`)||!E(e.typeName,`Identifier`)||!Ps(e,t,`dom-event-target`)?null:e.typeName.name,Fs=(e,t,n)=>E(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),Is=(e,t,n=new Set)=>{let r=P(e);if(Fs(r,`window`,t))return[`Window`,`EventTarget`];if(Fs(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(E(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=ks(e),a=i?pce(i,t):null;if(a)return Ns(a);let o=Ds(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),Is(o,t,s)}if(E(r,`NewExpression`)){let e=P(r.callee);if(E(e,`Identifier`)&&lce.has(e.name))return Ns(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(E(r,`MemberExpression`)){let e=k(r);if(e===`body`||e===`documentElement`)return Ns(`HTMLElement`)}if(E(r,`CallExpression`)){if(Ms(r,t))return Ns(`MediaQueryList`);let e=P(r.callee),i=E(e,`MemberExpression`)?k(e):null;if(i===`matchMedia`&&E(e,`MemberExpression`)&&Is(e.object,t,n).includes(`Window`))return Ns(`MediaQueryList`);if(i===`createElement`)return Ns(`HTMLElement`);if(i===`createElementNS`)return Ns(`SVGElement`);if(i&&uce.has(i))return Ns(`Element`)}return[`EventTarget`]},mce=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...lce]).some(t=>yce(e,t,n,new Set)),hce=(e,t,n)=>{let r=e,i=!1;for(;E(r,`TSAsExpression`)||E(r,`TSTypeAssertion`)||E(r,`TSSatisfiesExpression`);){if(Ps(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(E(a,`Identifier`)){let e=t.symbolFor(a),n=e?Xr(e):null;if(!n)return!1;a=P(n)}return i&&E(a,`Identifier`)||i&&E(a,`MemberExpression`)||i&&E(a,`ObjectExpression`)?!1:i&&E(a,`NewExpression`)?mce(a.callee,n,t):i},gce=e=>{if(!E(e,`MemberExpression`)||!E(P(e.object),`ThisExpression`))return null;let t=k(e);if(!t)return null;let n=e.parent;for(;n&&!E(n,`ClassBody`);){if((E(n,`FunctionDeclaration`)||E(n,`FunctionExpression`))&&!E(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!E(e,`PropertyDefinition`)||e.static)&&Os(e.key)===t)return e;return null},_ce=e=>{if(!E(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&E(t,`TSTypeAnnotation`)?t.typeAnnotation:null},vce=(e,t,n)=>{if(!E(e,`CallExpression`))return null;let r=P(e.callee);if(!E(r,`Identifier`))return null;let i=t.symbolFor(r);if(!i||n.has(i.id)||i.kind!==`const`&&!(i.kind===`function`&&i.references.every(e=>e.flag===`read`)))return null;let a=i.initializer??i.declarationNode;return!w(a)||a.async||a.generator?null:(n.add(i.id),a)},yce=(e,t,n,r)=>{let i=P(e);if(E(i,`Identifier`)){if(i.name===t&&n.isGlobalReference(i))return!0;let e=n.symbolFor(i);if(!e||r.has(e.id))return!1;let a=Xr(e);return a?(r.add(e.id),yce(a,t,n,r)):!1}if(!E(i,`MemberExpression`)||k(i)!==t)return!1;let a=P(i.object);return Fs(a,`window`,n)||Fs(a,`globalThis`,n)},bce=(e,t,r)=>{let i=P(e);for(;E(i,`Identifier`);){let e=t.symbolFor(i);if(!e||r.has(e.id))return!1;let n=Xr(e);if(!n)return!1;r.add(e.id),i=P(n)}if(!E(i,`CallExpression`)||!n(i,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!n(i,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!E(i.typeArguments,`TSTypeParameterInstantiation`))return!1;let a=i.typeArguments.params[0];return!!(a&&Ps(a,t,`dom-event-target`))},Ls=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(hce(e,n,t))return!0;let a=P(e);if(E(a,`Identifier`)){if(i&&(Fs(a,`document`,n)||Fs(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=ks(e);if(o&&Ps(o,n,t))return!0;let s=Ds(e);return s?(r.add(e.id),Ls(s,t,n,r)):!1}if(E(a,`NewExpression`))return mce(a.callee,t,n);if(E(a,`CallExpression`)){let e=P(a.callee);if(i&&E(e,`MemberExpression`)&&uce.has(k(e)??``)&&Ls(e.object,t,n,r))return!0;let o=vce(a,n,r);return!!(o&&Ne(o,n,e=>Ls(e,t,n,new Set(r)),void 0,`every`))}if(E(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(E(e,`Literal`)&&e.value===null)&&!(E(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>Ls(e,t,n,new Set(r)))}if(!E(a,`MemberExpression`))return!1;let o=gce(a);if(o&&E(o,`PropertyDefinition`)){let e=_ce(o);if(e&&Ps(e,n,t)||o.value&&Ls(o.value,t,n,r))return!0}if(!i)return!1;let s=k(a);if(s===`current`)return bce(a.object,n,r);let c=P(a.object);return s===`document`&&(Fs(c,`window`,n)||Fs(c,`globalThis`,n))?!0:s!==null&&dce.has(s)&&Ls(c,t,n,r)},xce=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,Sce=e=>xce.test(mt(e??``)),Rs=(e,t)=>{let n=P(e);return E(n,`Identifier`)?t.has(n.name):E(n,`SpreadElement`)?Rs(n.argument,t):E(n,`ObjectExpression`)?n.properties.some(e=>E(e,`Property`)?Rs(e.value,t):E(e,`SpreadElement`)&&Rs(e.argument,t)):E(n,`ArrayExpression`)?n.elements.some(e=>e&&Rs(e,t)):E(n,`ConditionalExpression`)?Rs(n.consequent,t)||Rs(n.alternate,t):E(n,`LogicalExpression`)?Rs(n.left,t)||Rs(n.right,t):E(n,`SequenceExpression`)?n.expressions.some(e=>Rs(e,t)):!1},zs=(e,t,n)=>{let r=P(t);if(E(e,`Identifier`)){Rs(r,n)&&n.add(e.name);return}if(E(e,`AssignmentPattern`)){zs(e.left,r,n);return}if(E(e,`ObjectPattern`)&&E(r,`ObjectExpression`)){for(let t of e.properties){if(!E(t,`Property`))continue;let e=Os(t.key);if(!e)continue;let i=r.properties.find(t=>E(t,`Property`)&&Os(t.key)===e);E(i,`Property`)&&zs(t.value,i.value,n)}return}if(E(e,`ArrayPattern`)&&E(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&zs(i,e,n)}},Cce=(e,t,n)=>{if(!E(e,`CallExpression`)||!n.filename)return!1;let r=P(e.callee);if(!E(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`import`)return!1;let a=i.declarationNode,o=a.parent,s=Dn(a);if(!s||!E(o,`ImportDeclaration`)||typeof o.source.value!=`string`)return!1;let c=Et(n.filename,o.source.value,s);if(!c||!w(c))return!1;let l=c.params[t];if(!E(l,`Identifier`))return!1;let u=new Set([l.name]),d=!1;return D(c.body,e=>{if(d)return!1;if(E(e,`VariableDeclarator`)&&e.init){zs(e.id,e.init,u);return}if(E(e,`AssignmentExpression`)&&E(e.left,`Identifier`)&&Rs(e.right,u)){u.add(e.left.name);return}if(E(e,`CallExpression`)){let t=P(e.callee);(E(t,`MemberExpression`)&&k(t)===`preventDefault`&&Rs(t.object,u)||e.arguments.some(e=>!E(e,`SpreadElement`)&&Rs(e,u)))&&(d=!0);return}if(E(e,`NewExpression`)&&e.arguments.some(e=>!E(e,`SpreadElement`)&&Rs(e,u))){d=!0;return}let t=E(e,`AssignmentExpression`)?P(e.left):null;E(e,`AssignmentExpression`)&&(E(t,`MemberExpression`)&&Rs(t.object,u)||Rs(e.right,u))&&(d=!0)}),!d},wce=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),Tce=new Set([`catch`,`finally`,`then`]),Bs=(e,t,n=new Set)=>{let r=(e,n)=>{let i=P(e);if(w(i))return i.async;if(!E(i,`Identifier`))return!1;let a=t.symbolFor(i);if(!a||n.has(a.id))return!1;let o=a.initializer??a.declarationNode,s=new Set(n);return s.add(a.id),r(o,s)},i=P(e);if(E(i,`Identifier`)){let e=t.symbolFor(i);if(!e||!e.initializer||n.has(e.id))return!1;let r=new Set(n);return r.add(e.id),Bs(e.initializer,t,r)}if(E(i,`NewExpression`)){let e=P(i.callee);return E(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e)}if(!E(i,`CallExpression`))return!1;let a=P(i.callee);if(E(a,`Identifier`))return r(a,n);if(!E(a,`MemberExpression`))return!1;let o=P(a.object);return Tce.has(k(a)??``)?Bs(a.object,t,n):!!(wce.has(k(a)??``)&&E(o,`Identifier`)&&o.name===`Promise`&&t.isGlobalReference(o))},Ece=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),Dce=new Set([`catch`,`finally`,`then`]),Vs=e=>{if(!w(e))return!1;let t=!1;return D(e,n=>{if(t||n!==e&&w(n))return!1;E(n,`CallExpression`)&&E(n.callee,`MemberExpression`)&&k(n.callee)===`preventDefault`&&(t=!0)}),t},Oce=(e,t)=>{let n=!1;return D(e,e=>{if(n)return!1;E(e,`AssignmentExpression`)&&e.operator===`=`&&E(e.left,`Identifier`)&&e.left.name===t&&Vs(e.right)&&(n=!0)}),n},kce=e=>{if(!e)return!1;if(Vs(e))return!0;if(E(e,`Identifier`)){let t=T(e,e.name);return t?Vs(t.initializer??void 0)?!0:Oce(t.scopeOwner,e.name):!1}if(E(e,`MemberExpression`)){let t=Xo(e);return t?Vs(t):!1}return!1},Hs=(e,t)=>{if(!e)return;let n=P(e);if(w(n))return n;if(E(n,`Identifier`)){let e=t.scopes.symbolFor(n),r=e?.initializer??e?.declarationNode;if(r&&w(r))return r;let i=T(n,n.name),a;return e&&i&&D(i.scopeOwner,r=>{if(r.range[0]>=n.range[0])return!1;if(E(r,`AssignmentExpression`)&&r.operator===`=`&&E(r.left,`Identifier`)&&t.scopes.symbolFor(r.left)===e){let e=P(r.right);a=w(e)?e:void 0}}),a}return E(n,`MemberExpression`)?Xo(n):void 0},Ace=(e,t,n)=>{if(!Cce(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(P(e)===r||E(e,`UnaryExpression`)&&e.operator===`!`||E(e,`LogicalExpression`)){r=e;continue}return E(e,`IfStatement`)&&e.test===r||E(e,`ConditionalExpression`)&&e.test===r||E(e,`WhileStatement`)&&e.test===r||E(e,`DoWhileStatement`)&&e.test===r||E(e,`ForStatement`)&&e.test===r}return!1},jce=(e,t)=>{let n=Hs(e,t);if(!n){let n=e?P(e):void 0;if(!n||!E(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&(r.kind===`let`||r.kind===`var`)&&r.references.some(e=>e.identifier.range[0]<n.range[0]&&e.flag!==`read`))}let r=new Map,i=(e,n=new Set)=>{let r=P(e);if(E(r,`Identifier`)){if(Ece.has(r.name)&&t.scopes.isGlobalReference(r))return!0;let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let a=Xr(e);if(!a)return!1;let o=new Set(n);return o.add(e.id),i(a,o)}if(!E(r,`MemberExpression`))return!1;let a=P(r.object);return Ece.has(k(r)??``)&&E(a,`Identifier`)&&(a.name===`window`||a.name===`globalThis`)&&t.scopes.isGlobalReference(a)},a=e=>{let n=e;for(;n.parent&&P(n.parent)===P(n);)n=n.parent;let r=n.parent;if(E(r,`NewExpression`)){let e=P(r.callee);return r.arguments.some(e=>e===n)&&E(e,`Identifier`)&&e.name===`Promise`&&t.scopes.isGlobalReference(e)}if(!E(r,`CallExpression`))return!1;if(P(r.callee)===P(n))return!0;if(!r.arguments.some(e=>e===n))return!1;let a=P(r.callee);if(i(a))return!1;if(E(a,`Identifier`)||!E(a,`MemberExpression`))return!0;let o=k(a);return!(Dce.has(o??``)&&Bs(a.object,t.scopes)||o===`addEventListener`&&Ls(a.object,`dom-event-target`,t.scopes))},o=(e,n,i=!1)=>{if(!w(e))return!1;let s=r.get(e)??new Set;if(s.has(n))return!1;s.add(n),r.set(e,s);let c=e.params[n];if(!c)return!i;let l=E(c,`AssignmentPattern`)?c.left:c;if(!E(l,`Identifier`))return!(i&&E(l,`ObjectPattern`));let u=t.scopes.symbolFor(l);if(!u)return!1;let d=new Set([u]),f=new Set,p=e=>{let n=P(e);if(!E(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&d.has(r))},m=e=>{let n=P(e);if(p(n))return!0;if(E(n,`SpreadElement`))return m(n.argument);if(E(n,`MemberExpression`)){let e=P(n.object);if(E(e,`Identifier`)){let n=t.scopes.symbolFor(e);if(n&&f.has(n))return!0}let r=k(n);if(E(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>E(e,`Property`)&&qo(e.key)===r);return!!(E(t,`Property`)&&m(t.value))}if(E(e,`ArrayExpression`)&&E(n.property,`Literal`)&&typeof n.property.value==`number`){let t=e.elements[n.property.value];return!!(t&&m(t))}return!1}return E(n,`ObjectExpression`)?n.properties.some(e=>E(e,`Property`)?m(e.value):E(e,`SpreadElement`)&&m(e.argument)):E(n,`ArrayExpression`)?n.elements.some(e=>e&&m(e)):E(n,`ConditionalExpression`)?m(n.consequent)||m(n.alternate):E(n,`LogicalExpression`)?m(n.left)||m(n.right):E(n,`SequenceExpression`)?n.expressions.some(m):!1},h=(e,n)=>{let r=P(n);if(E(e,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e);n&&d.add(n);return}if(E(e,`AssignmentPattern`)){h(e.left,r);return}if(E(e,`RestElement`)&&E(e.argument,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e.argument);n&&f.add(n);return}if(E(e,`ObjectPattern`)&&E(r,`ObjectExpression`)){for(let t of e.properties){if(E(t,`RestElement`)){h(t,r);continue}if(!E(t,`Property`))continue;let e=qo(t.key);if(!e)continue;let n=r.properties.find(t=>E(t,`Property`)&&qo(t.key)===e);E(n,`Property`)&&h(t.value,n.value)}return}if(E(e,`ArrayPattern`)&&E(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&h(n,e)}},g=!1;return D(e.body,n=>{if(g||n!==e.body&&w(n)&&!a(n))return!1;if(E(n,`VariableDeclarator`)&&n.init){h(n.id,n.init);return}if(E(n,`AssignmentExpression`)&&m(n.right)){if(E(n.left,`Identifier`)){let e=t.scopes.symbolFor(n.left);e&&d.add(e)}else g=!0;return}if(E(n,`AssignmentExpression`)){let e=P(n.left),t=P(n.right);if(E(e,`MemberExpression`)&&k(e)===`returnValue`&&p(e.object)&&E(t,`Literal`)&&t.value===!1){g=!0;return}}if(E(n,`ReturnStatement`)&&n.argument&&m(n.argument)){g=!0;return}if(E(n,`NewExpression`)){n.arguments.some(e=>!E(e,`SpreadElement`)&&m(e))&&(g=!0);return}if(!E(n,`CallExpression`))return;let r=P(n.callee);if(E(r,`MemberExpression`)&&k(r)===`preventDefault`&&p(r.object)){g=!0;return}let i=n.arguments.findIndex(e=>m(e));if(i<0)return;let s=Hs(n.callee,t);(!s&&!Ace(n,i,t)||s&&o(s,i))&&(g=!0)}),g};return o(n,0,!0)},Mce=(e,t)=>!!e.properties?.some(e=>E(e,`Property`)&&E(e.key,`Identifier`)&&e.key.name===`passive`&&E(e.value,`Literal`)&&e.value.value===t),Nce=C({id:`client-passive-event-listeners`,title:`Non-passive scroll listener`,tags:[`test-noise`],severity:`warn`,recommendation:"Add `{ passive: true }` as the third argument: `addEventListener('touchmove', handler, { passive: true })`. Only do this if the handler doesn't call `event.preventDefault()`, since passive listeners ignore it (which breaks pull-to-refresh, custom gestures, and nested scrolling).",create:e=>{if(Sce(e.filename))return kt;let t=Ts(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=P(n.callee);if(!Es(a,`addEventListener`)||!Ls(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,Is(a.object,e.scopes),t=>Ls(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!E(o,`Literal`)||typeof o.value!=`string`||!Eee.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||E(c,`SpreadElement`))return;let l=Hs(c,e)??c,u=r.get(l);if(u===void 0&&(u=kce(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=jce(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!E(f,`ObjectExpression`)||Mce(f,!1)||Mce(f,!0))||e.report({node:n,message:`"${s}" listener without { passive: true } makes scrolling janky for your users. Only add it if the handler doesn't call event.preventDefault(), since passive listeners silently ignore preventDefault().`})};return{AssignmentExpression(e){t.record(e)},CallExpression(e){t.record(e),Es(P(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),Us=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},Ws=e=>{if(!e.startsWith(`use`))return!1;if(e.length===3)return!0;let t=e.charCodeAt(3);return t>=65&&t<=90||t>=48&&t<=57},Gs=e=>Us(e)||Ws(e),Pce=(t,n)=>{let r=n?e(t):t;return E(r,`Identifier`)?r.name:E(r,`MemberExpression`)&&E(r.property,`Identifier`)?r.property.name:null},Ks=(e,t=!1)=>{let n=b(e);for(;;){let e=n.parent;if(!e||!E(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=Pce(e.callee,t);if(!r||!dn.has(r))return n;n=b(e)}},Fce=(e,t)=>{let n=Ks(e,t),r=n.parent;return r&&E(r,`VariableDeclarator`)&&E(r.id,`Identifier`)&&r.init===n&&Gs(r.id.name)?r.id.name:null},qs=(e,t=!1)=>(E(e,`FunctionDeclaration`)||E(e,`FunctionExpression`))&&e.id?Gs(e.id.name)?e.id.name:null:Fce(e,t),Js=e=>E(e,`MemberExpression`)&&!e.computed&&E(e.property,`Identifier`)?e.property.name:null,Ice=[`react`,`use-context-selector`,`react-tracked`],Lce=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!E(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!Ice.includes(t.source.value)?null:t.source.value},Rce=e=>Lce(e)!==null&&!!(e&&(E(e.declarationNode,`ImportDefaultSpecifier`)||E(e.declarationNode,`ImportNamespaceSpecifier`))),zce=(e,t)=>{if(!E(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!E(n.declarationNode,`VariableDeclarator`)||!E(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!E(r,`Property`)||A(r,{allowComputedString:!0})!==`createContext`)return!1;let i=P(n.initializer);return E(i,`Identifier`)&&Rce(N(i,t))},Bce=(e,t)=>{let n=P(e);if(E(n,`Identifier`)){if(zce(n,t))return!0;let e=N(n,t);return Lce(e)!==null&&!!(e&&en(e.declarationNode)===`createContext`)}if(!E(n,`MemberExpression`)||(Js(n)??(n.computed&&E(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=P(n.object);return E(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:Rce(N(r,t)):!1},Vce=(e,t)=>{let n=P(e);return E(n,`CallExpression`)&&Bce(n.callee,t)},Hce=(e,t)=>{let n=new Set;if(!E(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(E(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!E(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!E(r,`VariableDeclarator`)||!E(r.id,`Identifier`)||!r.init||!j(r.init)||!Vce(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},Ys=e=>{if(E(e,`FunctionDeclaration`)&&E(e.id,`Identifier`))return e.id;let t=b(e),n=t.parent;if(E(n,`VariableDeclarator`)&&E(n.id,`Identifier`))return n.id;if(E(n,`AssignmentExpression`)&&n.right===t&&E(n.left,`Identifier`))return n.left;if(E(n,`CallExpression`)){let e=n.parent;if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`))return e.id}return null},Xs=e=>Ys(e)?.name??null,Zs=(e,t)=>{let n=Ys(e);if(!n)return[];let r=t.scopeFor(e);for(;r;){let e=r.symbols.filter(e=>e.bindingIdentifier===n);if(e.length>0)return e;r=r.parent}return[]},Uce=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),Qs=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(E(t,`VariableDeclaration`))return t.kind===`const`;if(!Uce.has(t.type))return!1;t=t.parent??null}return!1},Wce=(e,t)=>{if(!E(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=en(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},Gce=(e,t)=>{if(!Wce(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=Ue(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},Kce=(e,t,n,r)=>{if(!E(e,`JSXIdentifier`))return!1;if(r&&Wce(e,n))return!0;let i=n.symbolFor(e);return i?t.has(i.id)||i.scope.symbols.some(n=>n.name===e.name&&t.has(n.id)):!1},qce=(e,t,n)=>E(e,`JSXMemberExpression`)?e.property.name===`Provider`&&Kce(e.object,t,n,!0):Gce(e,n)||Kce(e,t,n,!1),Jce="Every consumer of this context redraws on each render because its `value` is a fresh object/array/function rebuilt each render — memoize it in component scope (extract mapped providers into a child component first), or move it outside the component.",Yce=new Set([`flatMap`,`map`]),Xce=new Set([`forwardRef`,`memo`]),Zce=new Set([`useCallback`,`useMemo`]),Qce=new Set([`createElement`]),$ce=e=>{let t=P(e);return E(t,`ObjectExpression`)||E(t,`ArrayExpression`)||E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`)||E(t,`FunctionDeclaration`)},ele=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&E(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&ze(n,e.scopeOwner)?!0:!!(e.initializer&&E(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},tle=e=>w(e.scopeOwner)?e.scopeOwner:M(e.scopeOwner),nle=(e,t)=>{let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1){let n=(e[r]??0)-(t[r]??0);if(n!==0)return n}return e.length-t.length},$s=e=>{let t=Ks(e);return!!(t.parent&&E(t.parent,`ExportDefaultDeclaration`))},rle=e=>{if(!E(e,`FunctionExpression`)||!e.id)return!1;let t=b(e);if(Ks(e)!==t)return!1;let n=t.parent;return!(n&&E(n,`VariableDeclarator`)&&n.init===t&&E(n.id,`Identifier`))},ile=(e,t,r)=>{let i=[e],a=new Set;for(;i.length>0;){let e=i.pop();if(!e)continue;let o=P(e);if(o===t)return!0;if(!a.has(o)){if(a.add(o),E(o,`ConditionalExpression`)){let e=P(o.test);E(e,`Literal`)?i.push(e.value?o.consequent:o.alternate):i.push(o.alternate,o.consequent);continue}if(E(o,`LogicalExpression`)){let e=P(o.left);if(E(e,`Literal`)){let t=o.operator===`&&`&&!!e.value||o.operator===`||`&&!e.value||o.operator===`??`&&e.value===null;i.push(t?o.right:o.left);continue}i.push(o.right),o.operator!==`&&`&&i.push(o.left);continue}if(E(o,`SequenceExpression`)){let e=o.expressions.at(-1);e&&i.push(e);continue}if(E(o,`AssignmentExpression`)&&o.operator===`=`){i.push(o.right);continue}if(E(o,`AwaitExpression`)&&o.argument){i.push(o.argument);continue}if(E(o,`ArrayExpression`)){for(let e of o.elements)e&&i.push(E(e,`SpreadElement`)?e.argument:e);continue}if(E(o,`CallExpression`)&&n(o,Qce,r.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){i.push(...o.arguments.slice(2));let e=o.arguments[1];if(e&&E(e,`ObjectExpression`))for(let t of e.properties){if(!E(t,`Property`)||t.computed)continue;let e=t.key;(E(e,`Identifier`)&&e.name===`children`||E(e,`Literal`)&&e.value===`children`)&&i.push(t.value)}continue}if(E(o,`Identifier`)){let e=T(o,o.name,{preferInitializerBeforeReference:!0});e?.initializer&&Qs(e)&&ele(e,o)&&M(e.bindingIdentifier)===M(o)&&r.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&i.push(e.initializer);continue}if(E(o,`JSXElement`)||E(o,`JSXFragment`)){i.push(...o.children);continue}E(o,`JSXExpressionContainer`)&&o.expression.type!==`JSXEmptyExpression`&&i.push(o.expression)}}return!1},ec=(e,t,n)=>Ne(t,n.scopes,t=>ile(t,e,n),n.cfg),ale=(e,t,r)=>e.arguments[0]===t&&n(e,Zce,r.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(E(e.callee,`MemberExpression`)&&Yce.has(k(e.callee)??``)),ole=(e,t,n)=>{let r=e.arguments.findIndex(e=>e===t);if(r<0)return!1;let i=y(e.callee,n.scopes);if(!i||!w(i)||i.async||i.generator)return!1;let a=i.params[r];if(!a||!E(a,`Identifier`)||!(n.scopes.ownScopeFor(i)?.symbolsByName.get(a.name))?.references.some(e=>{let t=b(e.identifier),r=t.parent;return!!(r&&E(r,`CallExpression`)&&r.callee===t&&M(r)===i&&ze(r,i)&&n.cfg.isUnconditionalFromEntry(r)&&ec(r,i,n))}))return!1;let o=M(e);return!!(o&&(qs(o)!==null||$s(o))&&ec(e,o,n))},sle=(e,t)=>{let r=Zs(e,t.scopes).flatMap(e=>e.references);return r.length===0?!1:r.every(e=>{let r=b(e.identifier),i=r.parent;return!i||!E(i,`CallExpression`)||!i.arguments.some(e=>e===r)||i.arguments[0]===r&&n(i,Xce,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:ale(i,r,t)||!ole(i,r,t)})},cle=(e,t)=>{let n=b(e),r=n.parent;if(!r||!E(r,`CallExpression`))return!1;let i=M(r);return!i||qs(i)===null&&!$s(i)?!1:r.arguments[0]===n&&E(r.callee,`MemberExpression`)&&Yce.has(k(r.callee)??``)&&ec(r,i,t)?!0:r.callee===n&&ec(r,i,t)||r.arguments.some(e=>e===n)&&ole(r,n,t)},lle=C({id:`context-provider-value-from-unmemoized-local-literal`,title:`Context value from an unmemoized local literal`,tags:[`react-jsx-only`,`test-noise`],severity:`warn`,category:`Performance`,disabledWhen:[`react-compiler`],recommendation:`Memoize the context value in component scope so consumers do not redraw every render. For mapped providers, extract each item into a child component and memoize there.`,create:e=>{let t=t=>e.cfg.isUnconditionalFromEntry(t)&&H(t,e),n=new Set;return{Program(t){n=Hce(t,e.scopes)},JSXOpeningElement(r){if(!qce(r.name,n,e.scopes))return;let i=M(r);if(!i)return;let a=cle(i,e),o=$s(i);if((rle(i)||sle(i,e))&&!a&&!o||qs(i)===null&&!o&&!a)return;let s=V(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!E(c,`JSXExpressionContainer`))return;let l=P(c.expression);if(!E(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:Jee(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:Tee(n.identifier)}))).toSorted((e,t)=>nle(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!$ce(d.assignedExpression))return;e.report({node:s,message:Jce});return}let f=T(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&ele(f,l)&&tle(f)===i&&$ce(f.initializer)&&e.report({node:s,message:Jce})}}}}),ule=[`lucide-react`,`lucide-react-native`,`react-feather`,`phosphor-react`,`iconoir-react`,`react-bootstrap-icons`,`@heroicons/react`,`@tabler/icons-react`,`@phosphor-icons/react`,`@radix-ui/react-icons`,`@mui/icons-material`,`@ant-design/icons`,`@primer/octicons-react`],tc=e=>e===`react-icons`?e:e.startsWith(`react-icons/`)?e.split(`/`).slice(0,2).join(`/`):e===`@fortawesome/react-fontawesome`||/^@fortawesome\/free-[^/]+-svg-icons(?:\/|$)/.test(e)?`@fortawesome`:ule.find(t=>e===t||e.startsWith(`${t}/`))??null,dle=/[\p{L}\p{Nd}]/u,nc=e=>dle.test(e),rc=e=>Ir.has(e),ic=(e,t)=>{let n=[],r=0,i=0,a=null,o=!1;for(let s=0;s<e.length;s+=1){let c=e[s];if(o){o=!1;continue}if(c===`\\`){o=!0;continue}if(a){c===a&&(a=null);continue}if(c===`"`||c===`'`){a=c;continue}c===`[`&&(r+=1),c===`]`&&(r=Math.max(0,r-1)),c===`(`&&(i+=1),c===`)`&&(i=Math.max(0,i-1)),r===0&&i===0&&t(c)&&n.push(s)}return n},U=e=>{let t=[],n=0;for(let r of ic(e,e=>/\s/.test(e))){let i=e.slice(n,r);i&&t.push(i),n=r+1}let r=e.slice(n);return r&&t.push(r),t},fle=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),ple=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),mle=e=>e.toLowerCase()===`hidden`,hle=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=U(i);if(a.length===0)continue;let o=e>0&&!/^\s/.test(i),s=e<t.length-1&&!/\s$/.test(i);o&&a.shift(),s&&a.pop(),n.push(...a)}return n},gle=e=>{let t=F(e.attributes,`className`)??F(e.attributes,`class`);if(!t)return!1;let n=L(t);return n===null?t.value&&E(t.value,`JSXExpressionContainer`)&&E(t.value.expression,`TemplateLiteral`)?hle(t.value.expression).some(mle):!1:U(n).some(mle)},_le=e=>{let t=F(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(E(n,`Literal`))return n.value!==`false`&&!!n.value;if(E(n,`JSXExpressionContainer`)){let e=P(n.expression);if(E(e,`Literal`))return!!e.value}return!0},vle={display:`none`,visibility:`hidden`},yle=e=>{let t=F(e.attributes,`style`);if(!t?.value||!E(t.value,`JSXExpressionContainer`))return!1;let n=P(t.value.expression);if(!E(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!E(e,`Property`)||e.computed)continue;let t=e.key,n=E(t,`Identifier`)?t.name:E(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=vle[n];if(!r)continue;let i=P(e.value);if(E(i,`Literal`)&&i.value===r)return!0}return!1},ble=(e,t)=>er(e,t)||_le(e)||yle(e),xle=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=F(t.attributes,`type`),r=n?Xn(n):null;return!r||r.toLowerCase()!==`file`||!gle(t)?!1:!!F(t.attributes,`ref`)},Sle=[`link`,`canvas`],Cle=new Set([`alt`,`aria-label`,`aria-labelledby`]),ac=`label`,wle=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.controlHasAssociatedLabel??{}:{};return{depth:Math.min(n.depth??5,25),labelAttributes:n.labelAttributes??[],controlComponents:n.controlComponents??[],ignoreElements:n.ignoreElements??[],ignoreRoles:n.ignoreRoles??[]}},oc=(e,t)=>{let n=new Set(t);for(let t of e){if(E(t,`JSXSpreadAttribute`))return!0;if(!E(t,`JSXAttribute`)||!E(t.name,`JSXIdentifier`))continue;let e=rn(t.name);if(e&&(Cle.has(e)||n.has(e)))return t.value?E(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},sc=e=>{if(!e?.value)return!1;let t=e.value;if(E(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(E(t,`JSXExpressionContainer`)){let e=P(t.expression);if(E(e,`JSXEmptyExpression`))return!1;if(E(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(E(e,`TemplateLiteral`)){let t=c(e);if(t!==null)return t.trim().length>0}return!0}return!0},Tle=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!E(r,`JSXAttribute`))&&rn(r.name)?.toLowerCase()===n)return r}},Ele=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(E(r,`SpreadElement`))return null;let e=P(r);if(E(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(E(e,`TemplateLiteral`)){let t=c(e);if(t===null)return null;n.push(t);continue}if(E(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||E(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(E(e,`ArrayExpression`)){let r=Ele(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},Dle=(e,t)=>{if(E(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!E(e,`MemberExpression`))return!1;let n=P(e.object);return E(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},cc=(e,t)=>{let n=P(e);if(E(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(E(n,`TemplateLiteral`)){let e=c(n);return e===null||e.trim().length>0}if(E(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(E(n,`UnaryExpression`)&&n.operator===`void`||E(n,`UnaryExpression`)&&n.operator===`!`||E(n,`ArrowFunctionExpression`)||E(n,`FunctionExpression`)||E(n,`ClassExpression`))return!1;if(E(n,`ArrayExpression`)){let e=Ele(n,t);return e===null||e.trim().length>0}if(Dle(n,t)||E(n,`CallExpression`)&&Dle(n.callee,t))return!1;if(E(n,`ConditionalExpression`))return cc(n.consequent,t)&&cc(n.alternate,t);if(E(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?cc(e,t):!1}if(E(n,`LogicalExpression`)){let e=P(n.left);if(!E(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return cc(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?cc(r?n.right:e,t):cc(r?e:n.right,t)}return!0},Ole=(e,t)=>e?.value?E(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:E(e.value,`JSXExpressionContainer`)?cc(e.value.expression,t):!0:!1,lc=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},kle=e=>typeof e==`string`?lc(`literal`,e):typeof e==`number`?lc(`literal`,String(e)):null,uc=e=>{let t=P(e);if(E(t,`Identifier`))return t.name;if(E(t,`MemberExpression`)){if(t.computed)return null;let e=uc(t.object),n=t.property;return e===null||!E(n,`Identifier`)?null:`${e}.${n.name}`}return null},Ale=e=>{let t=e.quasis??[],n=e.expressions??[],r=[];for(let[e,i]of t.entries())if(r.push(i.value?.cooked??i.value?.raw??``),e<n.length){let t=uc(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return lc(`template`,r.join(``))},dc=e=>{let t=P(e);if(E(t,`Literal`)){let e=kle(t.value);return e===null?[]:[e]}if(E(t,`TemplateLiteral`)){let e=c(t);if(e!==null){let t=lc(`literal`,e);return t===null?[]:[t]}let n=Ale(t);return n===null?[]:[n]}if(E(t,`ConditionalExpression`))return[...dc(t.consequent),...dc(t.alternate)];let n=uc(t);if(n!==null){let e=lc(`identifier`,n);return e===null?[]:[e]}return[]},jle=e=>{if(!e?.value)return[];let t=e.value;if(E(t,`Literal`)){let e=kle(t.value);return e===null?[]:[e]}return E(t,`JSXExpressionContainer`)?dc(t.expression):[]},Mle=/^Icon($|[A-Z0-9_])|Icon$/,Nle=(e,t)=>{if(t.iconComponentNames.has(e)||Mle.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},fc=(e,t,n)=>{let r=P(e);if(E(r,`JSXEmptyExpression`))return!1;if(E(r,`Literal`))return typeof r.value==`string`?nc(r.value):typeof r.value==`number`;if(E(r,`TemplateLiteral`)){let e=c(r);return e===null||nc(e)}return E(r,`ConditionalExpression`)?fc(r.consequent,t,n)||fc(r.alternate,t,n):E(r,`LogicalExpression`)?r.operator===`&&`?fc(r.right,t,n):fc(r.left,t,n)||fc(r.right,t,n):E(r,`JSXElement`)||E(r,`JSXFragment`)?pc(r,t,n):!0},pc=(e,t,n)=>{if(t>n.depth)return!1;if(E(e,`JSXExpressionContainer`))return fc(e.expression,t,n);if(E(e,`JSXText`))return nc(e.value);if(E(e,`JSXFragment`))return e.children.some(e=>pc(e,t+1,n));if(E(e,`JSXElement`)){if(oc(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=Zn(e.openingElement,n.settings);if(Us(t)&&!n.controlComponents.includes(t)&&!Nle(t,n))return!0}for(let r of e.children)if(pc(r,t+1,n))return!0}return!1},Ple=(e,t)=>oc(e.openingElement.attributes,t.customAttributes)?!0:e.children.some(e=>pc(e,1,t)),Fle=e=>E(e,`ArrowFunctionExpression`)||E(e,`FunctionExpression`)||E(e,`FunctionDeclaration`),Ile=(e,t)=>{if(e===ac||e===`Label`)return!0;let n=F(t.attributes,`component`);return n?Xn(n)===ac:!1},Lle=(e,t)=>{let n=e.parent,r=!1;for(;n&&!E(n,`JSXAttribute`);){if(Fle(n)&&(r=!0),E(n,`JSXElement`)){let e=n.openingElement;if(ble(e,t.settings))return`hidden`;let i=Zn(e,t.settings);if(!r&&Ile(i,e)&&Ple(n,t)||Us(i)&&sc(F(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},Rle=e=>{let t=e.parent;for(;t;){if(E(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},zle=e=>{let t=e.parent;for(;t;){if(E(t,`VariableDeclarator`))return E(t.id,`Identifier`)?t.id.name:null;if(Fle(t)){if(E(t,`FunctionDeclaration`)&&t.id&&E(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},mc=(e,t)=>{let n=P(e);if(E(n,`Identifier`)){t.add(n.name);return}if(E(n,`CallExpression`)){let e=P(n.callee);E(e,`Identifier`)&&t.add(e.name);return}if(E(n,`LogicalExpression`)){mc(n.left,t),mc(n.right,t);return}E(n,`ConditionalExpression`)&&(mc(n.consequent,t),mc(n.alternate,t))},Ble=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(E(i,`JSXExpressionContainer`)){mc(i.expression,r);continue}(E(i,`JSXElement`)||E(i,`JSXFragment`))&&Ble(i,t+1,n,r)}},Vle=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=F(t.attributes,`type`);if(!n)return!0;let r=Xn(n);return r===null?!0:ple.has(r.toLowerCase())},Hle=C({id:`control-has-associated-label`,title:`Control missing accessible label`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Give every interactive control a label screen readers can read.`,category:`Accessibility`,create:e=>{let t=Or(e.settings),n=wle(e.settings),r=dt(e.filename),i=new Set,a=new Set,o=new Set,s=new Set,c=[],l={depth:n.depth,customAttributes:n.labelAttributes,controlComponents:n.controlComponents,settings:e.settings,iconComponentNames:i,iconNamespaceNames:a};return{ImportDeclaration(e){let t=e.source?.value;if(!(typeof t!=`string`||!tc(t)))for(let t of e.specifiers??[]){if(!E(t.local,`Identifier`))continue;let e=t.local.name;E(t,`ImportNamespaceSpecifier`)?a.add(e):i.add(e)}},JSXElement(i){if(r)return;let a=i.openingElement,u=Zn(a,e.settings);if(Ile(u,a)&&Ple(i,l)&&!Rle(i)){let e=F(a.attributes,`htmlFor`);for(let t of jle(e))o.add(t);u===ac&&Ble(i,1,l,s)}if(Sle.includes(u)||n.ignoreElements.includes(u))return;let d=F(a.attributes,`role`),f=d?Xn(d):null;if(f&&n.ignoreRoles.includes(f)||ble(a,e.settings)||xle(u,a))return;let p=Jr.has(u),m=(!t||!fle.has(u))&&ii(u,a),h=t&&f===`separator`&&!F(a.attributes,`tabIndex`),g=f!==null&&rc(f)&&!h,_=n.controlComponents.includes(u);if(m||p&&g||_){if(u===`input`){let e=F(a.attributes,`type`),t=e?Xn(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&sc(F(a.attributes,`value`)))return}if(!(p&&Ole(Tle(a.attributes,`title`),e.scopes))&&!(Vle(u,a)&&sc(F(a.attributes,`placeholder`)))&&!oc(a.attributes,n.labelAttributes)&&!Rle(i)&&Lle(i,l)===null){if(u!==`select`){for(let e of i.children)if(pc(e,1,l))return}c.push({opening:a,controlIdKeys:jle(F(a.attributes,`id`)),enclosingBindingName:zle(i)})}}},"Program:exit"(){for(let t of c)t.controlIdKeys.some(e=>o.has(e))||t.enclosingBindingName!==null&&s.has(t.enclosingBindingName)||e.report({node:t.opening,message:"Blind users can't tell what this control does because its name is missing or only a symbol, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}),hc=(t,n,r)=>{let i=P(t);if(E(i,`JSXElement`)){n.push(i.openingElement);for(let e of i.children)hc(e,n,r);return}if(E(i,`JSXFragment`)){for(let e of i.children)hc(e,n,r);return}if(r){if(E(i,`JSXExpressionContainer`)){hc(i.expression,n,!0);return}if(E(i,`ConditionalExpression`)){let t=mn(e(i.test));if(t!==null){hc(t?i.consequent:i.alternate,n,!0);return}hc(i.consequent,n,!0),hc(i.alternate,n,!0);return}if(E(i,`LogicalExpression`)){for(let e of ft(i))hc(e,n,!0);return}if(E(i,`ArrayExpression`)){for(let e of i.elements)e&&!E(e,`SpreadElement`)&&hc(e,n,!0);return}if(E(i,`SequenceExpression`)){if(i.expressions.length===0)return;hc(e(i),n,!0)}}},gc=(e,t={})=>{let n=[];for(let r of e.children)hc(r,n,t.includeStaticExpressionBranches===!0);return n},Ule=new Set([`grid`,`table`,`treegrid`]),Wle=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(E(i,`JSXAttribute`)){if(rn(i.name)?.toLowerCase()===t)return!1;continue}if(E(i,`JSXSpreadAttribute`)&&Sr(i.argument,t,!1,n.scopes))return!0}}return!1},_c=(e,t,n,r)=>n.isUnknown&&Wle(e,t,r),Gle=e=>e.attribute?L(e.attribute):Qn(e.expression),Kle=(e,t,n)=>{if(e.attribute)return Tr(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=P(e.expression),i=Qn(r);return i===null?E(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(wr(r)||E(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},qle=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=$t(e.attributes,n,!1);if(_c(e,n,r,t))return null;if(Kle(r,n.startsWith(`aria-`),t))return!0}return!1},Jle=e=>{for(let t of e){if(E(t,`JSXElement`)&&O(t.openingElement)===`caption`)return t;if(E(t,`JSXFragment`)){let e=Jle(t.children);if(e)return e}}return null},Yle=(e,t)=>er(e.openingElement,t.settings)?!1:Dr(e,t.settings),Xle=(e,t,n)=>{let r=e.parent;for(;r;){if(E(r,`JSXElement`)){if(er(r.openingElement,n.settings))return!1;if(O(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Zle=(e,t)=>{let n=e.parent;for(;n;){if(E(n,`JSXElement`)&&er(n.openingElement,t.settings))return!0;n=n.parent}return!1},Qle=C({id:`data-table-requires-accessible-name`,title:`Data table has no accessible name`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Give data tables a concise caption, or reference an existing visible title with aria-labelledby.`,create:e=>({JSXElement(t){let n=t.openingElement;if(O(n)!==`table`||cr(e,n)||er(n,e.settings)||Zle(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>_c(n,t,$t(n.attributes,t,!1),e)))return;let r=$t(n.attributes,`children`,!1),i=$t(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=$t(n.attributes,`role`,!1);if(_c(n,`role`,a,e))return;if(a.isPresent){let t=Gle(a);if(t===null){if(Kle(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>Fr.has(e));if(e&&!Ule.has(e))return}}if(!gc(t).some(n=>O(n)===`th`&&Xle(n,t,e)))return;let o=Jle(t.children),s=qle(n,e);s!==null&&(o&&Yle(o,e)||s||e.report({node:n,message:`This data table has headers but no accessible name. Add a caption or connect the table to a visible title with aria-labelledby.`}))}})}),vc=(e,t,n)=>{let r=P(e);if(w(r))return[r];if(E(r,`Identifier`)){if(n){let e=N(r,n);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:w(e.declarationNode)?[e.declarationNode]:e.initializer&&w(P(e.initializer))?[P(e.initializer)]:[]}let e=T(t,r.name);return e?.initializer&&w(P(e.initializer))?[P(e.initializer)]:[]}if(E(r,`ConditionalExpression`))return[...vc(r.consequent,t,n),...vc(r.alternate,t,n)];if(E(r,`SequenceExpression`)){let e=r.expressions.at(-1);return e?vc(e,t,n):[]}return[]},yc=(e,t)=>w(e)?E(e.body,`BlockStatement`)?he(e).flatMap(e=>e.argument?vc(e.argument,e,t):[]):vc(e.body,e,t):[],bc=(e,t,r={})=>{let i=t.symbolFor(e);if(!i)return[];let a=[i.bindingIdentifier],o=[i],s=new Set,c=new Set([i.id]);for(;o.length>0;){let e=o.pop();if(!(!e||s.has(e.id))){s.add(e.id);for(let i of e.references){if(i.flag!==`read`)continue;let e=b(i.identifier),s=e,l=s.parent;if(r.includeReactRefContainers&&E(l,`MemberExpression`)&&l.object===s&&k(l)===`current`&&(s=b(l),l=s.parent),r.includeReactRefContainers&&E(l,`CallExpression`)&&l.arguments[0]===e&&n(l,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(s=b(l),l=s.parent),!E(l,`VariableDeclarator`)||l.init!==s||!E(l.id,`Identifier`))continue;let u=t.symbolFor(l.id);!u||c.has(u.id)||(c.add(u.id),a.push(u.bindingIdentifier),o.push(u))}}}return a},xc=(e,t,r)=>n(e,t,r,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),Sc=(e,t)=>xc(e,Ct,t),$le=new Set([`useMemo`,`useCallback`,`useRef`]),eue=new Set([`useRef`]),tue=new Set([`debounce`,`throttle`]),Cc=new Set([`cancel`,`flush`]),nue=new Set([`document`,`window`]),rue=new Set([`then`,`catch`,`finally`]),iue=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),wc=e=>{if(!E(e,`CallExpression`))return!1;let t=P(e.callee);if(E(t,`Identifier`)){if(!tue.has(t.name))return!1;let e=T(t,t.name);return!e?.initializer||!E(e.initializer,`ImportSpecifier`)&&!E(e.initializer,`ImportDefaultSpecifier`)?!1:iue(p(t,t.name))}if(E(t,`MemberExpression`)&&tue.has(k(t)??``)){let e=P(t.object);if(!E(e,`Identifier`))return!1;let n=T(e,e.name);return!n?.initializer||!E(n.initializer,`ImportNamespaceSpecifier`)&&!E(n.initializer,`ImportDefaultSpecifier`)?!1:iue(p(e,e.name))}return!1},aue=e=>{if(!E(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=P(t);if(wc(n))return n;if(!E(n,`ArrowFunctionExpression`)&&!E(n,`FunctionExpression`))return null;if(!E(n.body,`BlockStatement`)){let e=P(n.body);return wc(e)?e:null}for(let e of n.body.body??[])if(E(e,`ReturnStatement`)&&e.argument){let t=P(e.argument);if(wc(t))return t}return null},oue=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=Ba(r,[`trailing`],t,n);return i?i.properties.some(e=>E(e,`Property`)&&A(e,{allowComputedString:!0})===`trailing`&&E(e.value,`Literal`)&&e.value.value===!1):!1},sue=e=>{let t=P(e);for(;E(t,`MemberExpression`);)t=P(t.object);return E(t,`Identifier`)?t:null},Tc=(e,t)=>{let n=sue(e);return n?t.symbolFor(n)?.id??null:null},Ec=(e,t)=>{let n=P(e);if(E(n,`MemberExpression`))return Cc.has(k(n)??``)?Tc(n.object,t):null;if(!E(n,`Identifier`))return null;let r=T(n,n.name)?.bindingIdentifier?.parent;if(!E(r,`Property`))return null;let i=E(r.key,`Identifier`)?r.key.name:E(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!Cc.has(i))return null;let a=r.parent,o=a?.parent;return!E(a,`ObjectPattern`)||!E(o,`VariableDeclarator`)||!o.init?null:Tc(o.init,t)},cue=(e,t,n)=>{D(e,r=>{if(r!==e&&w(r))return!1;if(!E(r,`CallExpression`))return;let i=Ec(r.callee,n);i!==null&&t.add(i)})},lue=(e,t)=>{let n=new Set,r=new Set,i=new Set;return D(e,e=>{if(!E(e,`CallExpression`))return;let n=P(e.callee);if(Sc(e,t)){let n=e.arguments?.[0],a=n?P(n):null;if(a&&w(a)){if(Ra(a,e=>{if(!E(e,`CallExpression`))return;let n=Tc(e.callee,t);n!==null&&r.add(n)}),E(a.body,`BlockStatement`))for(let e of he(a)){if(!e.argument)continue;let n=Ec(e.argument,t);n!==null&&i.add(n)}else{let e=Ec(a.body,t);e!==null&&i.add(e)}for(let e of yc(a))cue(e,i,t)}}if(E(n,`Identifier`)&&n.name===`useUnmount`&&(p(n,n.name)===`react-use`||!T(n,n.name)))for(let n of e.arguments??[]){let e=Ec(n,t);e!==null&&i.add(e)}if(!E(n,`Identifier`)||!Ws(n.name))return;let a=T(n,n.name)?.initializer;if(!a||!w(a))return;let o=new Set;D(a,e=>{if(!E(e,`CallExpression`)||!Sc(e,t))return;let n=Kn(e);if(n)for(let e of yc(n))D(e,e=>{if(!E(e,`CallExpression`))return;let t=P(e.callee);if(!E(t,`MemberExpression`)||!Cc.has(k(t)??``))return;let n=sue(t.object);n&&o.add(n.name)})});for(let[n,r]of(a.params??[]).entries()){if(!E(r,`Identifier`)||!o.has(r.name))continue;let a=e.arguments?.[n],s=a?Tc(a,t):null;s!==null&&i.add(s)}}),D(e,r=>{if(r!==e&&w(r))return!1;if(!E(r,`ReturnStatement`)||!r.argument)return;let i=P(r.argument);!E(i,`Identifier`)&&!E(i,`ObjectExpression`)&&!E(i,`ArrayExpression`)||D(i,e=>{if(!E(e,`Identifier`))return;let r=t.symbolFor(e)?.id;r!==void 0&&n.add(r)})}),{escapedSymbolIds:n,invokedSymbolIds:r,releasedSymbolIds:i}},uue=(e,t,n)=>{if(!E(e,`CallExpression`))return null;let r=e.arguments?.[0];if(!r)return null;let i=P(r);if(w(i))return i;if(!E(i,`Identifier`))return null;let a=i.name,o=null;return D(t,e=>{if(o)return!1;if(E(e,`FunctionDeclaration`)&&e.id?.name===a)return o=e,!1;if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)&&e.id.name===a&&e.init){let t=P(e.init);if(w(t))return o=t,!1;if(E(t,`CallExpression`)&&xc(t,new Set([`useCallback`]),n)){let e=t.arguments?.[0],n=e?P(e):null;if(n&&w(n))return o=n,!1}}}),o},due=new Set([`localStorage`,`sessionStorage`]),fue=e=>{let t=e;for(;;){let e=t.parent;if(e&&E(e,`MemberExpression`)&&e.object===t&&e.parent&&E(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return E(t,`CallExpression`)&&E(t.callee,`MemberExpression`)&&k(t.callee)===`catch`},pue=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])bi(n,t);let n=!1;return D(e,e=>{if(n)return!1;if(E(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(E(e,`Identifier`)&&nue.has(e.name)&&!t.has(e.name)&&!T(e,e.name)&&!(E(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(E(r,`Property`)&&!r.computed&&r.key===e)){if(E(r,`MemberExpression`)&&r.object===e){if(E(r.property,`Identifier`)&&due.has(r.property.name))return;let e=r;for(;e.parent&&E(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&E(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&E(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(E(e,`CallExpression`)){let t=e.callee;if(E(t,`Identifier`)&&t.name===`fetch`&&!T(t,t.name)||E(t,`MemberExpression`)&&rue.has(k(t)??``)&&k(t)!==`catch`&&!fue(e))return n=!0,!1;if(E(t,`MemberExpression`)&&E(t.object,`Identifier`)&&due.has(t.object.name))return}}),n},mue=e=>{if(!e)return!0;let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`||E(t,`UnaryExpression`)&&t.operator===`void`},hue=(e,t)=>{if(!E(e,`MemberExpression`)||k(e)!==`current`)return!1;let n=P(e.object);if(!E(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=P(r.initializer);return E(i,`CallExpression`)&&xc(i,eue,t)&&mue(i.arguments?.[0])},gue=(e,t)=>{if(!E(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return D(e,e=>{if(r)return!1;if(hue(e,t)||E(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(E(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])E(e.id,`Identifier`)&&n.add(e.id.name);continue}if(E(t,`IfStatement`)){let e=t.consequent;return(E(e,`ReturnStatement`)||E(e,`BlockStatement`)&&E(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},_ue=C({id:`debounce-no-cleanup`,title:`Memoized debounce never cancelled on unmount`,severity:`warn`,category:`Bugs`,recommendation:"A debounced/throttled callback holds a pending timer that still fires after unmount, so add `useEffect(() => () => debounced.cancel(), [debounced])` to cancel the trailing invocation when the component tears down.",create:e=>{let t=new WeakMap;return{CallExpression(n){if(!xc(n,$le,e.scopes))return;let r=aue(n);if(!r||oue(r,e.scopes,n))return;let i=b(n),a=i.parent;if(!E(a,`VariableDeclarator`)||a.init!==i||!E(a.id,`Identifier`))return;let o=a.id.name,s=M(n);if(!s)return;let c=t.get(s);c||(c=lue(s,e.scopes),t.set(s,c));let l=bc(a.id,e.scopes,{includeReactRefContainers:!0}),u=new Set(l.flatMap(t=>{let n=e.scopes.symbolFor(t)?.id;return n===void 0?[]:[n]}));if([...u].some(e=>c.releasedSymbolIds.has(e))||[...u].some(e=>c.escapedSymbolIds.has(e))||![...u].some(e=>c.invokedSymbolIds.has(e)))return;let d=uue(r,s,e.scopes);d&&pue(d)&&(gue(d,e.scopes)||e.report({node:r,message:`\`${o}\` keeps a pending debounced/throttled call that fires after unmount because nothing cancels it; return \`() => ${o}.cancel()\` from a useEffect so the trailing call is dropped on teardown.`}))}}}}),vue=1e3,yue=new Set([`arial`,`geist`,`helvetica`,`inter`,`lato`,`montserrat`,`open sans`,`plus jakarta sans`,`roboto`,`space grotesk`]),bue=new Map([[`text-xs`,12],[`text-sm`,14],[`text-base`,16],[`text-lg`,18],[`text-xl`,20],[`text-2xl`,24],[`text-3xl`,30],[`text-4xl`,36],[`text-5xl`,48],[`text-6xl`,60],[`text-7xl`,72],[`text-8xl`,96],[`text-9xl`,128]]),xue=new Set(`best of breed.best-in-class.built for the modern.cutting-edge.drive engagement.drive growth.drive results.empower your.enterprise-grade.future-proof.game changing.game-changer.harness the power.industry-leading.leverage the power.next-generation.seamless experience.seamlessly integrate.streamline your.supercharge your.transform your business.trusted by leading.trusted by the world.unleash the power.unleash your.unlock your potential.world-class`.split(`.`)),Sue=1e3,Cue=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),wue=new Set(`code.pre.kbd.samp.var.tt.markdown.markdownblock.markdowncontent.markdownrenderer.markdowntext.markdownview.mdx.mdxcontent.mdxremote.md.prose.richtext.article.blockquote.quote.trans.translation.translated.fbt.fbs`.split(`.`)),Tue=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Eue=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Due=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Oue=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,kue=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),Dc=new Set([`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`]),Aue=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Oc=/[\p{L}\p{N}]\.\.\./u,kc=e=>A(e,{allowComputedString:!0}),W=(e,t)=>{for(let n of[...e??[]].reverse()){let e=kc(n);if(!e)return null;if(e===t&&E(n,`Property`))return n}return null},jue=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=e.identifier;for(;t.parent&&E(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;let n=t.parent;return!!(E(n,`AssignmentExpression`)&&n.left===t||E(n,`UpdateExpression`)&&n.argument===t||E(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t||E(n,`CallExpression`)&&n.arguments?.some(e=>e===t))}),Mue=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ObjectExpression`))return r;if(!t||!E(r,`Identifier`))return null;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||n.has(i.id)||jue(i))return null;let a=new Set(n);return a.add(i.id),Mue(i.initializer,t,a)},G=(e,t)=>!E(e.name,`JSXIdentifier`)||e.name.name!==`style`||!E(e.value,`JSXExpressionContainer`)?null:Mue(e.value.expression,t),K=e=>{if(!E(e,`JSXOpeningElement`))return null;let t=R(e.attributes??[],`className`);return t?.value?E(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value:E(t.value,`JSXExpressionContainer`)&&E(t.value.expression,`Literal`)&&typeof t.value.expression.value==`string`?t.value.expression.value:E(t.value,`JSXExpressionContainer`)&&E(t.value.expression,`TemplateLiteral`)&&t.value.expression.quasis?.length===1?t.value.expression.quasis[0].value?.raw??null:null:null},q=e=>E(e,`Property`)&&E(e.value,`Literal`)&&typeof e.value.value==`string`?e.value.value:null,Ac=[`sm`,`md`,`lg`,`xl`,`2xl`],jc=[``,...Ac],Mc=new Map(Ac.map((e,t)=>[e,t])),Nc=e=>e.replace(/(?<!\\)_/g,` `),Nue=new Map([[`hidden`,{isVisible:!1,propertyName:`display`}],[`block`,{isVisible:!0,propertyName:`display`}],[`contents`,{isVisible:!0,propertyName:`display`}],[`flex`,{isVisible:!0,propertyName:`display`}],[`flow-root`,{isVisible:!0,propertyName:`display`}],[`grid`,{isVisible:!0,propertyName:`display`}],[`inline`,{isVisible:!0,propertyName:`display`}],[`inline-block`,{isVisible:!0,propertyName:`display`}],[`inline-flex`,{isVisible:!0,propertyName:`display`}],[`inline-grid`,{isVisible:!0,propertyName:`display`}],[`inline-table`,{isVisible:!0,propertyName:`display`}],[`list-item`,{isVisible:!0,propertyName:`display`}],[`table`,{isVisible:!0,propertyName:`display`}],[`table-caption`,{isVisible:!0,propertyName:`display`}],[`table-cell`,{isVisible:!0,propertyName:`display`}],[`table-column`,{isVisible:!0,propertyName:`display`}],[`table-column-group`,{isVisible:!0,propertyName:`display`}],[`table-footer-group`,{isVisible:!0,propertyName:`display`}],[`table-header-group`,{isVisible:!0,propertyName:`display`}],[`table-row`,{isVisible:!0,propertyName:`display`}],[`table-row-group`,{isVisible:!0,propertyName:`display`}]]),Pue=new Map([[`collapse`,{isVisible:!1,propertyName:`visibility`}],[`invisible`,{isVisible:!1,propertyName:`visibility`}],[`visible`,{isVisible:!0,propertyName:`visibility`}]]),Fue=new Set([`block`,`contents`,`flex`,`flow-root`,`grid`,`inline`,`inline block`,`inline flex`,`inline flow-root`,`inline grid`,`inline table`,`list-item`,`table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row`,`table-row-group`]),Iue=(e,t)=>{let n=`[${t}:`;return e.toLowerCase().startsWith(n)&&e.endsWith(`]`)?e.slice(n.length,-1):null},Pc=e=>{let t=Nue.get(e)??Pue.get(e);if(t)return{...t,status:`known`};let n=Iue(e,`display`);if(n!==null){let e=Nc(n).trim().toLowerCase();return e===`none`?{isVisible:!1,propertyName:`display`,status:`known`}:Fue.has(e)?{isVisible:!0,propertyName:`display`,status:`known`}:{isVisible:null,propertyName:`display`,status:`unknown`}}let r=Iue(e,`visibility`);if(r===null)return{isVisible:null,propertyName:null,status:`not-relevant`};let i=Nc(r).trim().toLowerCase();return i===`visible`?{isVisible:!0,propertyName:`visibility`,status:`known`}:i===`hidden`||i===`collapse`?{isVisible:!1,propertyName:`visibility`,status:`known`}:{isVisible:null,propertyName:`visibility`,status:`unknown`}},Lue=(e,t)=>{let n=0;for(let r=t-1;r>=0&&e[r]===`\\`;--r)n+=1;return n%2==1},Fc=e=>{let t=[],n=0;for(let r of ic(e,e=>e===`:`))t.push(e.slice(n,r)),n=r+1;let r=e.slice(n),i=r.endsWith(`!`)&&!Lue(r,r.length-1),a=r.startsWith(`!`)||i;return r.startsWith(`!`)&&(r=r.slice(1)),i&&(r=r.slice(0,-1)),{isImportant:a,utility:r,variants:t}},Rue=e=>{let t=0,n=jc.length;for(let r of e){let e=jc.indexOf(r);if(e>0){t=Math.max(t,e);continue}if(r.startsWith(`max-`)){let e=jc.indexOf(r.slice(4));if(e>0){n=Math.min(n,e);continue}}return null}return{maximumBreakpointIndex:n,minimumBreakpointIndex:t,specificity:e.length}},zue=(e,t,n)=>{let r=e.filter(({effect:e,scope:r})=>e.propertyName===n&&t>=r.minimumBreakpointIndex&&t<r.maximumBreakpointIndex);if(r.length===0)return!0;let i=r.some(({token:e})=>e.isImportant)?r.filter(({token:e})=>e.isImportant):r,a=Math.max(...i.map(({scope:e})=>e.specificity)),o=i.filter(({scope:e})=>e.specificity===a),s=Math.max(...o.map(({scope:e})=>e.minimumBreakpointIndex)),c=o.filter(({scope:e})=>e.minimumBreakpointIndex===s),l=Math.min(...c.map(({scope:e})=>e.maximumBreakpointIndex)),u=new Set(c.filter(({scope:e})=>e.maximumBreakpointIndex===l).map(({effect:e})=>e.isVisible));return u.size===1?u.values().next().value??null:null},Ic=e=>{let t=[];for(let n of U(e).map(Fc)){let e=Pc(n.utility);if(e.status===`not-relevant`)continue;let r=Rue(n.variants);if(r===null)return null;if(!r||r.minimumBreakpointIndex>=r.maximumBreakpointIndex)continue;if(e.status===`unknown`||e.propertyName===null||e.isVisible===null)return null;let i={isVisible:e.isVisible,propertyName:e.propertyName};t.push({effect:i,scope:r,token:n})}let n=[];for(let e=0;e<jc.length;e+=1){let r=zue(t,e,`display`),i=zue(t,e,`visibility`);if(r===null||i===null)return null;n.push(r&&i)}return n},Bue=(e,t)=>{if(er(e,t.settings))return!0;let n=R(e.attributes,`style`),r=n?G(n,t.scopes):null;if(r){let e=W(r.properties,`display`);if(e&&q(e)?.toLowerCase()===`none`)return!0;let t=W(r.properties,`visibility`),n=t?q(t)?.toLowerCase():null;if(n===`hidden`||n===`collapse`)return!0}let i=K(e);if(!i)return!1;let a=Ic(i);return!!(a&&a.every(e=>!e))},Lc=(e,t)=>{let n=e;for(;n;){if(E(n,`JSXElement`)&&Bue(n.openingElement,t))return!0;n=n.parent}return!1},Rc=e=>{if(!e||!E(e,`JSXOpeningElement`))return null;if(E(e.name,`JSXIdentifier`))return O(e);if(E(e.name,`JSXMemberExpression`)){let t=e.name;for(;E(t,`JSXMemberExpression`);)t=t.property;if(E(t,`JSXIdentifier`))return t.name}return null},zc=e=>{let t=e.parent;for(;t;){if(E(t,`JSXElement`)){let e=Rc(t.openingElement);if(e&&wue.has(e.toLowerCase()))return!0;let n=V(t.openingElement?.attributes??[],`translate`);if(E(n?.value,`Literal`)&&n.value.value===`no`)return!0}t=t.parent}return!1},Vue=/&(?:mdash|#0*8212|#x0*2014);/gi,Hue=/(?:^|[/\\])(?:articles?|blog|changelog|content|docs?|posts?)(?:[/\\]|$)/i,Uue=/\p{L}[^—\n]*—[^—\n]*\p{L}/u,Wue=/\p{L}+/gu,Gue=/[\r\n]/u,Bc=e=>e.includes(`—`)&&e.split(Gue).some(e=>Uue.test(e)&&(e.match(Wue)?.length??0)>=5),Vc=e=>{let t=P(e);return E(t,`Literal`)?typeof t.value==`string`&&Bc(t.value):E(t,`TemplateLiteral`)?t.quasis.some(e=>Bc(e.value.cooked??e.value.raw??``)):E(t,`ConditionalExpression`)?Vc(t.consequent)||Vc(t.alternate):E(t,`LogicalExpression`)?Vc(t.right):!1},Kue=C({id:`design-no-em-dash-in-jsx-text`,title:`Em dash in JSX text`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:`Replace em dashes in UI text with commas, colons, semicolons, or parentheses so the copy reads less like AI output.`,create:e=>e.filename&&Hue.test(e.filename)?kt:{JSXExpressionContainer(t){t.parent&&E(t.parent,`JSXAttribute`)||zc(t)||Lc(t,e)||Vc(t.expression)&&e.report({node:t,message:`Em dash (—) in UI text reads like AI output to your users.`})},JSXText(t){Bc((typeof t.value==`string`?t.value:``).replace(Vue,`—`))&&(zc(t)||Lc(t,e)||e.report({node:t,message:`Em dash (—) in UI text reads like AI output to your users.`}))}}}),que=(e,t,n)=>{let r=new Set;for(let n of e.matchAll(t))r.add(`${n[1]}${n[2]}`);let i=[];for(let t of e.matchAll(n)){let e=`${t[1]}${t[2]}`;r.has(e)&&i.push({value:e})}return i},Hc=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),Jue=C({id:`design-no-redundant-padding-axes`,title:`Redundant padding axes`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Collapse matching padding axes to `p-N` so duplicated classes do not make spacing harder to scan; keep split axes only when breakpoints differ.",create:e=>({JSXAttribute(t){if(!E(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=L(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||Hc(n,`px`)||Hc(n,`py`))return;let r=que(n,Tue,Eue);if(r.length!==0)for(let n of r)e.report({node:t,message:`px-${n.value} and py-${n.value} duplicate p-${n.value}, so the class list is noisier without changing spacing.`})}})}),Yue=C({id:`design-no-redundant-size-axes`,title:`Redundant width and height axes`,requires:[`tailwind:3.4`],tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Collapse matching width and height to `size-N` so duplicated classes do not make layout harder to scan.",create:e=>{let t=!1;return{JSXAttribute(n){if(t||!E(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=L(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||Hc(r,`w`)||Hc(r,`h`))return;let i=que(r,Due,Oue);if(i.length===0)return;let[a]=i;t=!0,e.report({node:n,message:`w-${a.value} and h-${a.value} duplicate size-${a.value}, so the class list is noisier without changing layout.`})}}}}),Xue=e=>e.split(/\s+/).filter(Boolean),Uc=C({id:`design-no-space-on-flex-children`,title:`space-* utility on flex children`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Use `gap-*` on the flex or grid parent. `space-x-*` and `space-y-*` leave gaps when a child is hidden, miss spacing on wrapped lines, and don't flip in right-to-left layouts.",create:e=>({JSXAttribute(t){if(!E(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=L(t);if(!n||!n.includes(`space-`))return;let r=Xue(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(kue.has(t)){i=!0;break}}if(!i)return;let a=n.match(Aue);if(!a)return;let o=a[1],s=a[2];e.report({node:t,message:`space-${o}-${s} on a flex or grid parent can leave uneven gaps when children hide, wrap, or render in RTL layouts.`})}})}),Zue=new Set([`alt`,`aria-label`,`placeholder`,`title`]),Que=e=>{let t=L(e);if(t!==null)return t;let n=e.value;return!n||!E(n,`JSXExpressionContainer`)?null:E(n.expression,`TemplateLiteral`)?c(n.expression):null},Wc=(e,t)=>{let n=P(e);if(E(n,`Literal`)){typeof n.value==`string`&&Oc.test(n.value)&&t.report({node:n,message:`Use the real ellipsis character ("…") instead of three period characters.`});return}if(E(n,`TemplateLiteral`)){let e=c(n);e&&Oc.test(e)&&t.report({node:n,message:`Use the real ellipsis character ("…") instead of three period characters.`});return}if(E(n,`ConditionalExpression`)){Wc(n.consequent,t),Wc(n.alternate,t);return}E(n,`LogicalExpression`)&&Wc(n.right,t)},Gc=C({id:`design-no-three-period-ellipsis`,title:`Three dots instead of ellipsis`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:`Use the real ellipsis character ("…") so UI labels look polished and consistent instead of like three separate periods.`,create:e=>({JSXAttribute(t){let n=rn(t.name)?.toLowerCase();if(!n||!Zue.has(n))return;let r=Que(t);!r||!Oc.test(r)||e.report({node:t.value??t,message:`Use the real ellipsis character ("…") instead of three period characters.`})},JSXExpressionContainer(t){t.parent&&E(t.parent,`JSXAttribute`)||zc(t)||Wc(t.expression,e)},JSXText(t){let n=typeof t.value==`string`?t.value:``;Oc.test(n)&&(zc(t)||e.report({node:t,message:`Use the real ellipsis character ("…") instead of three period characters.`}))}})}),Kc=e=>e===`button`||e===`Button`,$ue=e=>Kc(e)||e===`a`||e===`Link`,ede=new Set([`back`,`previous`]),qc=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),Jc=e=>{if(!E(e,`JSXElement`)&&!E(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(E(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(E(e,`JSXExpressionContainer`)){let t=e.expression;if(E(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(E(t,`TemplateLiteral`)){let e=c(t);if(e!==null){n.push(e);continue}}return null}if(E(e,`JSXFragment`)){let t=Jc(e);if(t===null)return null;n.push(t);continue}if(E(e,`JSXElement`))return null}return n.join(``).trim()},tde=e=>{let t=e.parent;for(;t;){if(E(t,`JSXElement`)&&Rc(t.openingElement)===`form`)return t;t=t.parent}return null},Yc=e=>{for(let t of e.children??[]){if(E(t,`JSXFragment`)){if(Yc(t))return!0;continue}if(!E(t,`JSXElement`))continue;let e=Rc(t.openingElement);if(e&&$ue(e)&&ede.has(qc(Jc(t)??``))||Yc(t))return!0}return!1},Xc=C({id:`design-no-vague-button-label`,title:`Vague button label`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,recommendation:`Name the action: "Save changes" instead of "Continue", "Send invite" instead of "Submit". The label is the button's accessible name.`,create:e=>({JSXElement(t){let n=Rc(t.openingElement);if(!n||!Kc(n))return;let r=Jc(t);if(!r)return;let i=qc(r);if(Cue.has(i)){if(i===`continue`){let e=tde(t);if(e&&Yc(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),nde=e=>{for(let t of e.children)if(!(E(t,`JSXText`)&&t.value.trim().length===0)){if(E(t,`JSXElement`))return t.openingElement;if(!(E(t,`JSXExpressionContainer`)&&E(t.expression,`JSXEmptyExpression`)))return}return null},Zc=C({id:`details-requires-summary`,title:`Details disclosure has no explicit summary`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Make a meaningful summary the first child of details so users can understand and operate the disclosure.`,create:e=>({JSXElement(t){if(O(t.openingElement)!==`details`)return;let n=nde(t);n!==void 0&&(n&&O(n)===`summary`||e.report({node:n??t.openingElement,message:`This details disclosure has no explicit summary as its first content child, so the browser falls back to an implementation-defined label. Add a meaningful summary first.`}))}})}),rde=new Set([`dialog`,`alertdialog`]),ide=[`aria-label`,`aria-labelledby`,`title`],Qc=C({id:`dialog-has-accessible-name`,title:`Dialog without accessible name`,severity:`warn`,recommendation:'Give every `<dialog>` / `role="dialog"` an accessible name with `aria-label` or `aria-labelledby` (referencing the dialog\'s title element).',create:e=>dt(e.filename)?kt:{JSXOpeningElement(t){if(!E(t.name,`JSXIdentifier`))return;let n=O(t);if(n[0]!==n[0]?.toLowerCase())return;let r=F(t.attributes,`role`),i=r?Xn(r):null;(n===`dialog`||i!==null&&rde.has(i))&&(I(t.attributes)||ide.some(e=>F(t.attributes,e))||e.report({node:t.name,message:"This dialog has no accessible name, so screen readers announce it as just “dialog.” Add `aria-label` or point `aria-labelledby` at its heading."}))}}}),$c=`createReactClass`,el=e=>{if(!E(e,`CallExpression`))return!1;let t=e.callee;return E(t,`MemberExpression`)?!!(E(t.object,`Identifier`)&&t.object.name===`React`&&E(t.property,`Identifier`)&&t.property.name===$c):E(t,`Identifier`)?t.name===$c:!1},ade=[`observer`,`lazy`,`withTracking`],ode=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??ade);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},tl=(e,t,n)=>{if(!e)return!0;let r=e.match(/^(\d+)\.(\d+)/);if(!r)return!0;let i=Number(r[1]),a=Number(r[2]);return i>t||i===t&&a>=n},nl=new WeakMap,rl=e=>{let t=nl.get(e);if(t!==void 0)return t;let n=!1,r=e=>{if(n)return;if(e.type===`JSXElement`||e.type===`JSXFragment`){n=!0;return}if(E(e,`CallExpression`)&&ua(e)){n=!0;return}let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let i=t[e];if(Array.isArray(i))for(let e of i)j(e)&&r(e);else j(i)&&r(i);if(n)return}};return r(e),nl.set(e,n),n},il=e=>{let t=!1;return D(e,e=>{if(E(e,`CallExpression`)&&E(e.callee,`Identifier`)&&e.callee.name===`createElement`)return t=!0,!1}),t},al=e=>E(e,`MemberExpression`)?!e.computed&&E(e.property,`Identifier`)?e.property.name:e.computed&&E(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,ol=e=>{let t=e.parent;for(;t&&(t.type===`TSAsExpression`||t.type===`TSSatisfiesExpression`||t.type===`TSNonNullExpression`||t.type===`TSTypeAssertion`);)t=t.parent??null;if(!t)return null;if(E(t,`VariableDeclarator`)&&E(t.id,`Identifier`))return t.id.name;if(E(t,`AssignmentExpression`)){let e=t.left;if(E(e,`Identifier`))return e.name;if(E(e,`MemberExpression`))return al(e)}return null},sl=e=>{let t=e.parent;if(!t||!E(t,`AssignmentExpression`))return!1;let n=t.left;return E(n,`MemberExpression`)&&E(n.object,`Identifier`)&&n.object.name===`module`&&al(n)===`exports`},sde=e=>{if(!E(e,`CallExpression`))return!1;if(el(e))return!0;let t=e.callee;return E(t,`MemberExpression`)?al(t)===`createClass`:!1},cde=e=>{if(!E(e,`CallExpression`))return!1;let t=e.callee;return E(t,`Identifier`)?t.name===`createContext`:E(t,`MemberExpression`)&&al(t)===`createContext`},lde=e=>(E(e,`FunctionExpression`)||E(e,`FunctionDeclaration`))&&!!e.id?.name,cl=e=>E(e,`CallExpression`)&&e.arguments[0]||null,ll=(e,t)=>{if(!E(e,`CallExpression`))return null;let n=e.callee;if(E(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},ude=(e,t)=>ll(e,t)!==null,ul=e=>{if(!e)return!1;if(tl(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},dde=(e,t)=>{if(!ude(e,t.additionalHoCs)||!rl(e))return!1;let n=ol(e),r=x(e);if(n&&r&&hl(n,r))return!1;let i=ll(e,t.additionalHoCs),a=cl(e);return!a||i===`forwardRef`&&E(e.parent,`CallExpression`)&&ll(e.parent,t.additionalHoCs)===`memo`&&cl(e.parent)===e&&ul(t.reactVersion)?!1:i===`memo`&&E(a,`CallExpression`)?ll(a,t.additionalHoCs)===`forwardRef`?!ul(t.reactVersion):!1:lde(a)?!1:E(a,`FunctionExpression`)||E(a,`ArrowFunctionExpression`)},dl=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((E(e,`PropertyDefinition`)||E(e,`MethodDefinition`))&&`static`in e&&e.static&&E(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},fl=e=>{if(E(e,`Identifier`))return[e.name];if(!E(e,`MemberExpression`))return[];let t=fl(e.object),n=al(e);return n?[...t,n]:t},pl=new WeakMap,ml=e=>{let t=pl.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(E(e,`AssignmentExpression`)&&E(e.left,`MemberExpression`)&&al(e.left)===`displayName`){E(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of fl(e.left.object))r.add(t)}let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let n=t[e];if(Array.isArray(n))for(let e of n)j(e)&&i(e);else j(n)&&i(n)}};i(e);let a={identifierTargets:n,memberPathSegments:r};return pl.set(e,a),a},hl=(e,t)=>ml(t).identifierTargets.has(e),fde=(e,t)=>ml(t).memberPathSegments.has(e),gl=C({id:`display-name`,title:`Component missing display name`,severity:`warn`,defaultEnabled:!1,recommendation:"Give each component a `displayName` so DevTools shows a clear name.",category:`Architecture`,create:e=>{let t=ode(e.settings),n=Or(e.settings),r=!t.ignoreTranspilerName,i=t=>{e.report({node:t,message:"This component shows up as Anonymous in React DevTools because it has no `displayName`."})};return{ClassDeclaration(e){if(Na(e)&&!(e.id&&Us(e.id.name)&&r)&&!dl(e)){if(e.id){let t=x(e);if(t&&hl(e.id.name,t))return}i(e.id??e)}},ClassExpression(e){if(Na(e)&&!(e.id&&Us(e.id.name)&&r)&&!dl(e)){if(e.id){let t=x(e);if(t&&hl(e.id.name,t))return}i(e.id??e)}},FunctionExpression(a){if(!rl(a))return;if(!n&&!a.id&&sl(a)){i(a);return}if(!n&&!Zt(a,e.scopes,e.cfg)&&!il(a)||a.id&&Us(a.id.name)&&r)return;if(E(a.parent,`Property`)&&a.parent.method){let e=a.parent.key,n=E(e,`Identifier`)?e.name:E(e,`Literal`)&&typeof e.value==`string`?e.value:null,r=x(a);if(n&&Us(n)&&t.ignoreTranspilerName&&(!r||!fde(n,r))){i(a);return}}let o=ol(a);if(!(o&&Us(o)&&r)){if(sl(a)&&!a.id){i(a);return}E(a.parent,`ReturnStatement`)&&!a.id&&i(a)}},ArrowFunctionExpression(t){let a=E(t.parent,`ExportDefaultDeclaration`);if(!rl(t)&&!a)return;if(!n&&sl(t)){i(t);return}if(!n&&!Zt(t,e.scopes,e.cfg)&&!il(t))return;if(E(t.parent,`ArrowFunctionExpression`)||E(t.parent,`ReturnStatement`)){i(t);return}let o=t.parent;for(;o;){if(E(o,`VariableDeclarator`)&&E(o.id,`Identifier`)){if(Us(o.id.name)&&r)return;break}if(E(o,`ExportDefaultDeclaration`)){i(t);return}if(sl(t)){i(t);return}if(E(o,`FunctionDeclaration`)||E(o,`FunctionExpression`)||E(o,`ArrowFunctionExpression`)||E(o,`ClassDeclaration`)||E(o,`ClassExpression`)||E(o,`Program`))break;o=o.parent??null}},FunctionDeclaration(t){if(!n&&E(t.parent,`ExportDefaultDeclaration`)&&Zt(t,e.scopes,e.cfg)){if(t.id){let e=x(t);if(e&&hl(t.id.name,e))return}i(t.id??t)}},CallExpression(e){if(t.checkContextObjects&&tl(t.reactVersion,16,3)&&cde(e)){let t=ol(e);if(t){let n=x(e);if(n&&hl(t,n))return}i(e);return}if(dde(e,t)){i(e);return}if(!sde(e))return;let n=e.arguments[0];if(!n||!E(n,`ObjectExpression`)){i(e);return}let a=!1;for(let e of n.properties){if(!E(e,`Property`)||e.computed)continue;let t=e.key;if(E(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(E(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&E(o,`VariableDeclarator`)&&E(o.id,`Identifier`)&&Us(o.id.name)&&r)){if(o&&E(o,`AssignmentExpression`)){let e=o.left;if(E(e,`Identifier`)&&Us(e.name)&&r||E(e,`MemberExpression`)&&E(e.property,`Identifier`)&&Us(e.property.name)&&r)return}i(e)}}}}}),_l=C({id:`duplicate-jsx-subtree`,title:`Duplicated JSX structure`,severity:`warn`,execution:`project`,recommendation:`Extract a shared component when the repeated JSX trees represent the same UI concept and should evolve together.`}),pde=(e,t,n,r)=>{let i=r===`different`;return i&&t!==n?`The cleanup removes \`${e}\` with a different callback binding and capture ${String(n)}, but it was registered with capture ${String(t)}. Pass the same callback binding and capture flag to both EventTarget calls.`:i?`The cleanup removes \`${e}\` with a different callback binding than the one registered, so \`removeEventListener\` cannot detach that listener. Pass the same callback binding to both calls.`:`The cleanup removes \`${e}\` with capture ${String(n)}, but it was registered with capture ${String(t)}. \`removeEventListener\` must use the same capture flag as \`addEventListener\`.`},mde=e=>{let t=!1;return D(e,e=>{if(E(e,`CallExpression`))return t=!0,!1}),t},vl=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,yl=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>yl(e,t)&&yl(n,t)),hde=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,bl=(e,t)=>{if(t.abortControllerSymbolId!==null&&yl(e,t.abortControllerSymbolId))return`cancelled`;let n=e.hasUnknownRemovalCall||t.abortControllerSymbolId!==null&&e.hasUnknownAbortCall?`unknown`:`not-cancelled`;for(let r of e.removals){if(r.eventName!==t.eventName||r.capture!==t.capture||r.callbackIdentity===null||vl(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=hde(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=bl(r,t),a=bl(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},gde=(e,t)=>bl(e,t)!==`not-cancelled`,xl=e=>{if(!e)return null;let t=P(e);return E(t,`MemberExpression`)?!t.computed&&E(t.property,`Identifier`)?t.property.name:t.computed&&E(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},_de=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),vde=(e,t)=>{if(E(e,`IfStatement`)){if(e.test===t)return!0;let n=mn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(E(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=mn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(E(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=mn(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return E(e,`TryStatement`)?e.finalizer===t:E(e,`SwitchStatement`)?e.discriminant===t:E(e,`ForStatement`)?e.init===t||e.test===t:E(e,`ForInStatement`)||E(e,`ForOfStatement`)?e.right===t:E(e,`WhileStatement`)?e.test===t:!1},Sl=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||_de.has(e.type)&&!vde(e,r)&&!n?.(e,r))return!0;r=e}return!1},Cl=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=P(e);if(E(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(!E(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&E(e,`SpreadElement`)){i=null;continue}if(!E(e,`Property`))return null;let r=A(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=P(e.value);if(E(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},yde=e=>{if(!e)return!1;let t=P(e);if(E(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!E(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!E(e,`Property`))return null;let t=A(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=P(e.value);if(!E(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},bde=new Set([...Ct,`useInsertionEffect`]),wl=e=>e.references.every(e=>e.flag===`read`),xde=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&wl(e),Tl=e=>e.kind===`const`&&E(e.declarationNode,`VariableDeclarator`)&&E(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,El=(e,t,n)=>{if(!E(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!xde(r)||n.has(r.id)||r.kind===`const`&&!Tl(r))return null;n.add(r.id);let i=r.initializer?P(r.initializer):null;if(r.kind===`const`&&E(i,`Identifier`)){let e=El(i,t,n);if(e)return e}return r},Dl=(e,t)=>{if(!e)return null;let n=P(e);if(w(n))return{node:n,isConcreteFunction:!0};if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r)return null;let i=r.initializer?P(r.initializer):null;return i&&w(i)?{node:i,isConcreteFunction:!0}:{node:r.bindingIdentifier,isConcreteFunction:!1}},Ol=(e,t)=>{let n=P(e);if(E(n,`Identifier`)){let e=El(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?P(e.initializer):null;return E(n,`NewExpression`)&&E(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:E(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)){let e=Ol(n.object,t);return n.property.name===`document`&&(e===`global:window`||e===`global:globalThis`)?`global:document`:n.property.name===`window`&&(e===`global:window`||e===`global:globalThis`)?`global:window`:e===null?null:`${e}.${n.property.name}`}return null},kl=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(E(r,`Literal`)&&typeof r.value==`string`)return r.value;if(E(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!E(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!Tl(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),kl(i.initializer,t,n))},Sde=(e,t)=>{let n=jl(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=P(r);if(!n||!E(i,`NewExpression`)||!E(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=P(n);if(!E(a,`Identifier`))return null;let o=El(a,t,new Set),s=o?.initializer?P(o.initializer):null;if(!E(s,`NewExpression`)||!E(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=Ol(n,t),l=kl(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},Al=(e,t)=>{let n=P(e);if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=P(r.initializer);return!E(i,`NewExpression`)||!E(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},jl=(e,t,n)=>{if(!e)return null;let r=P(e);return!E(r,`MemberExpression`)||(xl(r)??(n&&r.computed?kl(r.property,n):null))!==t?null:r.object},Cde=(e,t)=>E(e,`ObjectPattern`)?e.properties.some(e=>!E(e,`Property`)||A(e,{allowComputedString:!0})!==`signal`?!1:(E(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,Ml=(e,t,n=new Set)=>{let r=P(e),i=jl(r,`signal`);if(i)return Al(i,t);if(!E(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!wl(a))return null;n.add(a.id);let o=a.declarationNode;if(!E(o,`VariableDeclarator`))return null;if(E(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=P(a.initializer);if(E(e,`Identifier`))return Ml(e,t,n);let r=jl(e,`signal`);return r?Al(r,t):null}return Cde(o.id,a.bindingIdentifier)?Al(a.initializer,t):null},Nl=(e,t,n)=>{let r=P(e);if(E(r,`UnaryExpression`)&&r.operator===`!`){let e=Nl(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(E(r,`BinaryExpression`)){let e=mn(r.left),i=mn(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=Nl(a,t,n);if(e){let t=r.operator===`==`||r.operator===`===`,n=r.operator===`!=`||r.operator===`!==`,i=t&&!o||n&&o;if(t||n)return i?e===`aborted`?`not-aborted`:`aborted`:e}}return null}let i=jl(r,`aborted`);return i&&Ml(i,n)===t?`aborted`:null},wde=(e,t,n,r)=>{if(E(e,`IfStatement`)||E(e,`ConditionalExpression`)){let i=Nl(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!E(e,`LogicalExpression`)||e.right!==t)return!1;let i=Nl(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},Tde=(e,t,n,r)=>!Sl(e,t,(e,t)=>wde(e,t,n,r)),Ede=(e,t)=>{let n=P(e.callee);if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r?.initializer)return null;let i=P(r.initializer);if(!E(i,`CallExpression`))return null;let a=jl(i.callee,`bind`);if(!a)return null;let o=jl(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=Al(o,t),l=Al(s,t);return c!==null&&c===l?c:null},Dde=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=P(e);if(!E(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!E(e,`Property`))return n;if(A(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=Ml(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},Pl=(e,t,n)=>{let r=jl(e.callee,t,n);if(!r)return null;let i=Ol(r,n),a=kl(e.arguments?.[0],n),o=Dl(e.arguments?.[1],n),s=Cl(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Ode=(e,t)=>{let n=jl(e.callee,`call`);if(!n||!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!wl(r)||!E(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!E(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!E(e,`Property`))return!1;let t=E(e.value,`AssignmentPattern`)?e.value.left:e.value;return A(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=Ol(i.init,t),s=Ol(a,t);if(o===null||s===null||o!==s)return null;let c=kl(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:Dl(e.arguments?.[2],t),capture:Cl(e.arguments?.[3],{allowComputedString:!0})}},kde=(e,t)=>{if(!e)return null;let n=P(e);if(w(n))return n.body;if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r||!r.initializer)return null;let i=P(r.initializer);return w(i)?i.body:null},Ade=(e,t)=>{let n=[],r=[],i=new Map,a=0;if(!E(e,`BlockStatement`))return{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:!1,returnStatementCount:a};let o=e.body[e.body.length-1],s=E(o,`ReturnStatement`);return D(e,o=>{if(o!==e&&w(o)||E(o,`ClassDeclaration`)||E(o,`ClassExpression`))return!1;if(E(o,`CallExpression`)){if(Sl(o,e))return;let r=jl(o.callee,`addEventListener`,t),a=r?Ol(r,t):null;a!==null&&i.set(a,(i.get(a)??0)+1);let s=Pl(o,`addEventListener`,t);if(s?.callbackIdentity&&s.capture!==null){let e=Dde(s.node.arguments?.[2],t);n.push({node:s.node,targetKey:s.targetKey,eventName:s.eventName,callbackIdentity:s.callbackIdentity,capture:s.capture,once:yde(s.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=Sde(o,t);if(c){let e=n.filter(e=>e.targetKey===c.targetKey&&e.eventName===c.eventName),t=e[0];e.length===1&&t?.once&&i.get(c.targetKey)===1&&t.callbackIdentity.isConcreteFunction&&!mde(t.callbackIdentity.node)&&n.splice(n.indexOf(t),1)}return}if(E(o,`ReturnStatement`)){a+=1;let e=kde(o.argument,t);e&&r.push(e)}}),{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:s,returnStatementCount:a}},jde=(e,t)=>{let n=P(e.callee);if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r?.initializer||r.kind!==`const`&&r.kind!==`function`)return null;let i=P(r.initializer);return!w(i)||i.async||i.generator?null:{body:i.body,symbolId:r.id}},Fl=(e,t,n=new Set,r=!1)=>{let i=[],a=new Set,o=[],s=!1,c=!1,l=!1,u=E(e,`BlockStatement`)?e.body[e.body.length-1]:null,d=e=>{i.push(...e.removals),c||=e.hasUnknownAbortCall,l||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)a.add(t);o.push(...e.exhaustiveBranches)},f=e=>{let r=E(e,`BlockStatement`)?e.body:[e];for(let e of r){if(E(e,`BreakStatement`)||E(e,`ContinueStatement`))return!0;if(E(e,`BlockStatement`)){if(f(e))return!0;continue}if(E(e,`IfStatement`)){let r=mn(e.test);if(r!==null){let i=Fl(e.test,t,new Set(n),!0);if(!i)return!0;d(i);let a=r?e.consequent:e.alternate;if(a&&f(a))return!0;continue}}let r=Fl(e,t,new Set(n),!0);if(!r)return!0;d(r)}return!1};return D(e,p=>{if(p!==e&&w(p)||E(p,`ClassDeclaration`)||E(p,`ClassExpression`))return!1;if(E(p,`ReturnStatement`)&&p===u)return;if(E(p,`ReturnStatement`)||E(p,`ThrowStatement`)||r&&(E(p,`BreakStatement`)||E(p,`ContinueStatement`)))return s=!0,!1;if(E(p,`ForOfStatement`)){let t=P(p.right);return E(t,`ArrayExpression`)&&t.elements.some(e=>e&&!E(e,`SpreadElement`))&&!Sl(p,e)&&f(p.body),!1}if((E(p,`IfStatement`)||E(p,`ConditionalExpression`))&&p.alternate&&mn(p.test)===null&&!Sl(p,e)){let e=Fl(p.consequent,t,new Set(n)),r=Fl(p.alternate,t,new Set(n));e&&r&&(o.push({alternate:r,consequent:e}),c||=e.hasUnknownAbortCall&&r.hasUnknownAbortCall,l||=e.hasUnknownRemovalCall&&r.hasUnknownRemovalCall);let i=Fl(p.test,t,new Set(n));return i&&d(i),!1}if(!E(p,`CallExpression`))return;let m=Sl(p,e),h=jl(p.callee,`removeEventListener`,t);if(h&&!m){let e=Pl(p,`removeEventListener`,t);e?(i.push(e),l||=e.callbackIdentity===null||e.capture===null):l=!0}if(!h&&!m){let e=Ode(p,t);e&&i.push(e)}let g=jl(p.callee,`abort`);if(g){let n=Al(g,t);n===null?m||(c=!0):(!m||Tde(p,e,n,t))&&a.add(n);return}if(m)return;let _=Ede(p,t);if(_!==null){a.add(_);return}let ee=jde(p,t);if(!ee||n.has(ee.symbolId))return;n.add(ee.symbolId);let v=Fl(ee.body,t,n);v&&d(v)}),s?null:{removals:i,abortedControllerSymbolIds:a,exhaustiveBranches:o,hasUnknownAbortCall:c,hasUnknownRemovalCall:l}},Mde=(e,t)=>{let n=Ade(e,t);if(!n.hasCanonicalCleanupReturn||n.returnStatementCount!==1||n.cleanupBodies.length!==1)return null;let r=[],i=new Set,a=[],o=!1,s=!1,c=e=>{r.push(...e.removals),a.push(...e.exhaustiveBranches),o||=e.hasUnknownAbortCall,s||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)i.add(t)},l=Fl(e,t);for(let e of n.cleanupBodies){let n=Fl(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},Il=C({id:`effect-listener-cleanup-mismatch`,title:`Effect cleanup does not match its event listener`,severity:`error`,recommendation:"Pass the same callback binding and capture flag to `addEventListener` and `removeEventListener`, or abort the registration's local AbortController during cleanup.",create:e=>({CallExpression(t){if(!n(t,bde,e.scopes))return;let r=Kn(t);if(!w(r))return;let i=Mde(r.body,e);if(i)for(let t of i.registrations){if(t.hasUnknownCancellation||i.hasUnknownRemovalCall||i.registrations.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName).length>1||t.abortControllerSymbolId!==null&&i.hasUnknownAbortCall||t.abortControllerSymbolId!==null&&i.setupAbortAnalysis&&yl(i.setupAbortAnalysis,t.abortControllerSymbolId)||gde(i,t))continue;let n=i.removals.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName),r,a=!1;for(let e of n){if(!e.callbackIdentity||e.capture===null){a=!0;break}let n=vl(t.callbackIdentity,e.callbackIdentity);if(n===`unknown`){a=!0;break}if(n===`same`&&t.capture===e.capture){a=!0;break}r??={removalNode:e.node,removalCapture:e.capture,callbackComparison:n}}n.length===0||a||!r||e.report({node:r.removalNode,message:pde(t.eventName,t.capture,r.removalCapture,r.callbackComparison)})}}})}),Ll=(e,t)=>{if(!e)return null;let n=P(e);if(E(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(E(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=La({node:n,scopes:t});return r?`reference:${r}`:null},Rl=new Map([[`removeEventListener`,{registerMethod:`addEventListener`,requiresEventArgument:!0,allowsHandlerOnlyForm:!1}],[`removeListener`,{registerMethod:`addListener`,requiresEventArgument:!0,allowsHandlerOnlyForm:!0}],[`off`,{registerMethod:`on`,requiresEventArgument:!0,allowsHandlerOnlyForm:!1}],[`unsubscribe`,{registerMethod:`subscribe`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unsub`,{registerMethod:`sub`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unwatch`,{registerMethod:`watch`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unlisten`,{registerMethod:`listen`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}]]),Nde=new Map([...Rl.values()].map(e=>[e.registerMethod,e])),Pde=new Set([`off`,`removeEventListener`,`removeListener`]),zl=e=>!!(e&&Mi(P(e))),Bl=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return zl(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if(zl(a))return{method:n,receiverKey:r,eventKey:Ll(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&zl(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},Vl=C({id:`effect-listener-cleanup-reference-mismatch`,title:`Effect cleanup removes the wrong listener reference`,severity:`error`,category:`Bugs`,recommendation:`Removal APIs match by reference identity, so the second inline function passed to the remove call can never equal the one you added; hoist the handler into a single named const (or useCallback) and pass that same reference to both the add and remove calls.`,create:e=>({CallExpression(t){if(!Sc(t,e.scopes))return;let n=Kn(t);if(!n)return;let r=[],i=[];Ra(n,t=>{if(!E(t,`CallExpression`))return;let n=P(t.callee);if(!E(n,`MemberExpression`))return;let i=k(n);if(!i)return;let a=La({node:n.object,scopes:e.scopes});if(a===null)return;let o=Nde.get(i);if(!o)return;let s=Bl(t,o,i,a,e.scopes);s&&r.push(s)});for(let t of yc(n))Ra(t,t=>{if(!E(t,`CallExpression`))return;let n=P(t.callee);if(!E(n,`MemberExpression`))return;let r=k(n);if(!r||Pde.has(r))return;let a=Rl.get(r);if(!a)return;let o=La({node:n.object,scopes:e.scopes});if(o===null)return;let s=Bl(t,a,r,o,e.scopes);s&&i.push(s)});for(let t of i){let n=Rl.get(t.method);n&&r.some(e=>e.method!==n.registerMethod||e.receiverKey!==t.receiverKey||e.usesHandlerOnlyForm!==t.usesHandlerOnlyForm?!1:!n.requiresEventArgument||t.usesHandlerOnlyForm?!0:e.eventKey!==null&&e.eventKey===t.eventKey)&&e.report({node:t.handlerNode,message:`Your cleanup calls \`${t.method}\` with a brand-new inline function that never equals the handler you added, so the cleanup exists but detaches nothing and the listener leaks; pass one shared named handler to both calls.`})}}})}),Hl=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=S(e),c=S(t);if(!i||!a||!o||s===null||c===null)return!0;if(!H(e,r))return!1;if(a===o)return s<c;let l=new Set([a]),u=[a];for(;u.length>0;){let e=u.pop();if(!e)break;for(let t of e.successors){if(t.to===o)return!0;l.has(t.to)||(l.add(t.to),u.push(t.to))}}return!1},Ul=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),Fde=new Set([...Ul,`find`,`findIndex`,`sort`]),Wl=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),Gl=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),Kl=new Set([...Gl,`Map`,`Set`]),ql=(e,t,n)=>{let r=P(e);return E(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},Jl=(e,t)=>{let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=k(n);return!!((r===`from`||r===`of`)&&ql(n.object,`Array`,t))},Ide=(e,t)=>{let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=k(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&ql(n.object,`Object`,t))},Yl=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ArrayExpression`))return r.elements.length===0;if(E(r,`NewExpression`)){let e=P(r.callee);return!!(r.arguments.length===0&&E(e,`Identifier`)&&Kl.has(e.name)&&t.isGlobalReference(e))}if(E(r,`CallExpression`)){let e=P(r.callee);if(Jl(r,t)){if((E(e,`MemberExpression`)?k(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!E(i,`SpreadElement`)&&Yl(i,t,n))}return!!(E(e,`MemberExpression`)&&k(e)!==`concat`&&Wl.has(k(e)??``)&&Yl(e.object,t,n))}if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!E(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Yl(i.initializer,t,n))},Xl=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ArrayExpression`))return!0;if(E(r,`NewExpression`)){let e=P(r.callee);return!!(E(e,`Identifier`)&&Gl.has(e.name)&&t.isGlobalReference(e))}if(E(r,`CallExpression`)){if(Jl(r,t)||Ide(r,t))return!0;let e=P(r.callee);return!!(E(e,`MemberExpression`)&&Wl.has(k(e)??``)&&Xl(e.object,t,n))}if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!E(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Xl(i.initializer,t,n))},Zl=(e,t,n=new Set)=>{let r=P(e);if(!E(r,`NewExpression`)){if(!E(r,`Identifier`))return Xl(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!E(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Zl(e.initializer,t,n))}let i=P(r.callee);return!!(E(i,`Identifier`)&&Kl.has(i.name)&&t.isGlobalReference(i))},Ql=(e,t,n)=>{let r=P(e.callee);if(!E(r,`MemberExpression`))return!1;let i=k(r);if(i===`from`&&ql(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!E(t,`SpreadElement`)&&!Yl(t,n))}return!!(i&&Fde.has(i)&&e.arguments[0]===t&&!Yl(r.object,n)&&(i===`forEach`?Zl(r.object,n):Xl(r.object,n)))},$l=(e,t)=>{let n=P(e.callee);return!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)?!1:E(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:Ul.has(n.property.name)&&e.arguments[0]===t},eu=e=>{let t=e.parent;return!!(E(t,`CallExpression`)&&$l(t,e))},Lde=new Set([`then`,`catch`,`finally`]),tu=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&Lde.has(e.property.name)&&P(e.object).type===`CallExpression`,nu=e=>{let t=e.parent;for(;t&&yn.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>P(t)===e)?null:tu(P(t.callee))?t:null},ru=(e,t,n)=>{let r=new Set([e]),i=new Map,a=new Set,o=new Set,s=[e],c=e=>{if(e.type!==`Identifier`)return null;let t=n?.symbolFor(e);return t?`symbol:${String(t.id)}`:`name:${e.name}`},l=e=>{let t=e&&P(e);!w(t)||r.has(t)||(r.add(t),s.push(t))};for(;s.length>0;){let e=s.pop();if(!e)break;D(e,n=>{if(n!==e&&w(n)){if(n.type===`FunctionDeclaration`&&n.id?.type===`Identifier`){let e=c(n.id);e&&i.set(e,n)}return!1}if(n.type===`VariableDeclarator`&&n.id.type===`Identifier`){let e=n.init?P(n.init):null;if(w(e)){let t=c(n.id);t&&i.set(t,e)}return}if(n.type===`AssignmentExpression`){let e=P(n.left);if(e.type===`Identifier`){let t=c(e);t&&o.add(t)}return}if(n.type!==`CallExpression`)return;let r=P(n.callee);if(w(r)){l(r);return}if(r.type===`Identifier`){let e=c(r);e&&a.add(e);return}if(t&&tu(r))for(let e of n.arguments??[])l(e)});for(let e of a)o.has(e)||l(i.get(e))}return r},iu=(e,t)=>ru(e,!0,t),au=(e,t)=>ru(e,!1,t),Rde=(e,t)=>{let n=new Set,r=[e],i=new Set,a=e=>{!e||!w(e)||e.generator||n.has(e)||(n.add(e),r.push(e))};for(w(e)&&!e.generator&&n.add(e);r.length>0;){let e=r.pop();!e||i.has(e)||(i.add(e),D(e,n=>{if(n!==e&&w(n))return!1;if(n.type===`CallExpression`){a(y(n.callee,t));for(let e of n.arguments)e.type===`SpreadElement`||!Ql(n,e,t)||a(y(e,t))}}))}return n},ou=e=>{let t=M(e);return t?qs(t):null},su=e=>{let t=e.parent;for(;t;){if(E(t,`VariableDeclarator`))return t;if(E(t,`FunctionDeclaration`)||E(t,`FunctionExpression`)||E(t,`ArrowFunctionExpression`)||E(t,`Program`))return null;t=t.parent??null}return null},zde=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),cu=new Set([`useMemo`,`useState`]),Bde=new Set([`startTransition`]),lu=(e,t)=>{let n=P(e);return!E(n,`MemberExpression`)||n.computed||!E(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!E(n.property,`Identifier`)?!1:n.property.name===`from`},Vde=(e,t)=>{let n=P(e);if(!E(n,`Identifier`))return!1;let r=T(n,n.name);if(!r?.initializer)return!1;let i=su(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&E(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&lu(i.init,t))},uu=(e,t,n=new Set)=>{let r=P(e);if(!E(r,`Identifier`))return!1;if(r.name===`Array`&&t.isGlobalReference(r))return!0;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)?!1:(n.add(i.id),uu(i.initializer,t,n))},du=(e,t,n,r)=>{let i=P(e);if(E(i,`ArrayExpression`))return!0;if(E(i,`Identifier`)){let e=N(i,t);return!!(e?.kind===`const`&&e.initializer&&!de(i,r,n,t)&&du(e.initializer,t,n,r))}if(E(i,`NewExpression`))return uu(i.callee,t);if(!E(i,`CallExpression`))return!1;let a=P(i.callee);if(uu(a,t))return!0;if(!E(a,`MemberExpression`))return!1;let o=P(a.object);return!!(E(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&E(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},fu=(e,t,r={})=>{let i=b(e),a=i.parent;if(E(a,`NewExpression`)){let e=P(a.callee);return!!(t&&a.arguments?.[0]===i&&E(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return E(a,`CallExpression`)?a.callee===i||(t?n(a,cu,t,{allowGlobalReactNamespace:!0}):Yn(a,cu))&&a.arguments?.[0]===i||t&&n(a,Bde,t,{allowGlobalReactNamespace:!0})&&a.arguments?.[0]===i||t&&a.arguments?.[1]===i&&(lu(a.callee,t)||Vde(a.callee,t))?!0:E(a.callee,`MemberExpression`)&&!a.callee.computed&&E(a.callee.property,`Identifier`)&&zde.has(a.callee.property.name)&&a.arguments?.[0]===i&&(!r.requireProvenSynchronousCallbackReceiver||!!(t&&du(a.callee.object,t,a,a.callee.property.name))):!1},pu=new WeakMap,J=(e,t)=>{let n=M(e),r=n??e,i=pu.get(t);i||(i=new WeakMap,pu.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(qs(n))return i.set(r,n),n;if(!fu(n,t))return i.set(r,null),null;n=M(n)}return i.set(r,null),null},mu=e=>E(e,`JSXAttribute`)&&E(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),hu=e=>e?Ve(e)?!0:E(e,`BlockStatement`)?hu(e.body.at(-1)):E(e,`ContinueStatement`)||E(e,`BreakStatement`):!1,Hde=new Set([`createRef`,`useRef`]),gu=(e,t,r={})=>{let i=E(e,`MemberExpression`)?P(e.object):null;if(!E(e,`MemberExpression`)||k(e)!==`current`||!E(i,`Identifier`))return null;let a=N(i,t);if(!a?.initializer)return null;let o=P(a.initializer);return E(o,`CallExpression`)&&n(o,r.includeCreateRef?Hde:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:r.allowUnboundBareCalls,resolveNamedAliases:r.resolveNamedAliases})?a:null},_u=(e,t,n=new Set)=>{let r=P(e),i=gu(r,t);if(i)return i;if(!E(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=Ds(a);return o?(n.add(a.id),_u(o,t,n)):null},vu=(e,t)=>_u(e,t)!==null,yu=(e,t)=>{D(e,e=>{if(w(e))return!1;t(e)})},bu=e=>!E(e,`CallExpression`)||!E(e.callee,`MemberExpression`)||!E(e.callee.property,`Identifier`)?null:e.callee.property.name,Ude=e=>{let t=bu(e);return t!==null&&Kt.has(t)},xu=e=>{let t=bu(e);return t!==null&&(Kt.has(t)||t===`observe`)?t:null},Su=e=>xu(e)!==null,Cu=e=>{let t=bu(e);return t===null||!Lte.has(t)?!1:t===`listen`?(E(e,`CallExpression`)?e.arguments??[]:[]).some(e=>E(e,`ArrowFunctionExpression`)||E(e,`FunctionExpression`)):!0},Wde=e=>{let t=Ue(e);if(!t||typeof t.source.value!=`string`||t.importKind===`type`||E(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`)return null;if(E(e.declarationNode,`ImportNamespaceSpecifier`))return{source:t.source.value,importedName:null,isNamespace:!0};if(E(e.declarationNode,`ImportDefaultSpecifier`))return{source:t.source.value,importedName:`default`,isNamespace:!1};let n=en(e.declarationNode);return n?{source:t.source.value,importedName:n,isNamespace:!1}:null},Gde=(e,t,n)=>{let r=t.symbolFor(e);if(!r||n.has(r.id))return null;if(r.kind===`import`)return Wde(r);if(r.kind!==`const`||!r.initializer)return null;if(n.add(r.id),E(r.declarationNode,`VariableDeclarator`)&&E(r.declarationNode.id,`ObjectPattern`)){let e=wu(r.initializer,t,n);if(!e||!e.isNamespace&&e.importedName!==`default`)return null;for(let t of r.declarationNode.id.properties){if(!E(t,`Property`)||(E(t.value,`AssignmentPattern`)?t.value.left:t.value)!==r.bindingIdentifier)continue;let n=A(t,{allowComputedString:!0});return n?{source:e.source,importedName:n,isNamespace:!1}:null}return null}return wu(r.initializer,t,n)},wu=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Identifier`))return Gde(r,t,n);if(!E(r,`MemberExpression`))return null;let i=k(r);if(!i)return null;let a=wu(r.object,t,n);return!a||!a.isNamespace&&a.importedName!==`default`?null:{source:a.source,importedName:i,isNamespace:!1}},Tu=e=>{let t=e,n=t.parent;for(;n;){if(E(n,`AssignmentExpression`))return n.left===t;if(E(n,`UpdateExpression`)||E(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(E(n,`ForInStatement`)||E(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},Kde=new Set([...Ct,`useInsertionEffect`]),qde=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),Jde=new Set([`@react-native-community/netinfo`]),Yde=new Set([`events`,`node:events`,`react-native`]),Eu=new WeakMap,Xde=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),Zde=new Set([`clear`,`delete`,`set`]),Du=new WeakMap,Ou=new WeakMap,ku=new WeakMap,Au=new WeakMap,ju={subscribe:`subscription`,timer:`timer`,socket:`connection`},Mu=(e,t)=>{if(Vn(e,Kde,t.scopes))return!0;let n=P(e.callee);return!!(E(n,`Identifier`)&&qde.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},Nu=e=>E(e,`NewExpression`)&&E(e.callee,`Identifier`)&&m.has(e.callee.name),Y=(e,t,n=new Set,r=new Map)=>{if(!e)return null;let i=P(e);if(E(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(!e)return t.scopes.isGlobalReference(i)?`global:${i.name}`:null;if(n.has(e.id))return`symbol:${e.id}`;n.add(e.id);let a=r.get(e.id);if(a)return Y(a,t,n,r);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=E(o,`Property`)?A(o):null;if(l&&E(s,`ObjectPattern`)&&E(c,`VariableDeclarator`)&&c.id===s){let i=Y(c.init,t,n,r);return i?`${i}.${l}`:`symbol:${e.id}`}let u=e.initializer?P(e.initializer):null;return e.kind===`const`&&u&&(E(u,`Identifier`)||E(u,`MemberExpression`))?Y(u,t,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(E(i,`MemberExpression`)&&!i.computed){if(!E(i.property,`Identifier`))return null;let e=Y(i.object,t,n,r);return e?`${e}.${i.property.name}`:null}if(E(i,`ThisExpression`))return`this`;if(E(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`||typeof i.value==`boolean`))return`literal:${String(i.value)}`;if(w(i)){let e=S(i);return e===null?null:`function:${e}`}return null},Pu=(e,t)=>{if(!e)return null;let n=P(e),r=[];for(;E(n,`MemberExpression`)&&!n.computed;){if(!E(n.property,`Identifier`))return null;r.unshift(n.property.name),n=P(n.object)}if(!E(n,`Identifier`))return null;let i=t.scopes.symbolFor(n);if(i&&i.references.every(e=>e.flag===`read`)){let e=i.bindingIdentifier,n=[],a=e.parent;if(E(a,`ArrayPattern`)){let t=a.elements.findIndex(t=>t===e);t>=0&&(n.push(t),e=a)}else if(E(a,`Property`)&&E(a.parent,`ObjectPattern`)){let t=A(a);t&&(n.push(t),e=a.parent)}let o=e.parent,s=o?.parent,c=s?.parent;if(n.length>0&&E(o,`VariableDeclarator`)&&o.id===e&&E(s,`VariableDeclaration`)&&s.declarations.length===1&&E(c,`ForOfStatement`)&&c.left===s&&c.await!==!0){let e=dd(c.right,t);if(e){let i=P(c.right),a=E(i,`Identifier`)?t.scopes.symbolFor(i):null,o=a?.initializer?P(a.initializer):null,s=E(o,`ArrayExpression`)?o.elements.map(e=>{let t=e&&j(e)?e:null;for(let e of n){let n=t?P(t):null;if(typeof e==`number`&&E(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&j(r)?r:null}else if(typeof e==`string`&&E(n,`ObjectExpression`)){let r=n.properties.find(t=>E(t,`Property`)&&A(t)===e);t=E(r,`Property`)&&j(r.value)?r.value:null}else t=null}return t}):void 0;return s?.every(e=>{if(!e)return!0;let r=P(e),i=e=>{if(!E(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!!(n&&(n.kind===`const`||n.kind===`function`||n.kind===`import`||n.kind===`parameter`)&&n.references.every(e=>e.flag===`read`))};return E(r,`Literal`)||E(r,`ArrayExpression`)||E(r,`ObjectExpression`)||w(r)?!0:i(r)||n[0]===1&&E(r,`CallExpression`)&&i(P(r.callee))})===!0?{collectionKey:e,projectedValues:s,projectionKey:[...n.length>0?n.map(e=>`binding:${String(e)}`):[`binding:value`],...r].join(`.`)}:null}}}let a=i?.initializer?P(i.initializer):null;if(i?.kind===`const`&&E(a,`CallExpression`)){let e=Y(a.callee,t),n=[];for(let e of a.arguments){if(!j(e))continue;let r=Pu(e,t);if(r){n.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=Y(e,t);i&&n.push({collectionKey:null,identityKey:i})}let i=new Set(n.flatMap(({collectionKey:e})=>e===null?[]:[e]));if(e&&n.length===a.arguments.length&&i.size===1)return{collectionKey:[...i][0],projectionKey:[`call:${e}:${n.map(({identityKey:e})=>e).join(`:`)}`,...r].join(`.`)}}if(!i||i.kind!==`parameter`)return null;let o=i.bindingIdentifier.parent;for(;o&&!w(o);)o=o.parent;if(!o||!w(o))return null;let s=Ad(o);if(!s)return null;let c=P(s.callee);if(!E(c,`MemberExpression`))return null;let l=Y(c.object,t);if(!l)return null;let u=o.params[0],d=E(i.bindingIdentifier.parent,`AssignmentPattern`)&&i.bindingIdentifier.parent.left===i.bindingIdentifier?i.bindingIdentifier.parent:null,f=E(u,`ObjectPattern`)?Ti(i.bindingIdentifier):null,p=d?Y(d.right,t):null;if(d&&!p)return null;let m=u===i.bindingIdentifier?`value`:f&&p?`${f}=default:${p}`:f;return m?{collectionKey:l,projectionKey:[m,...r].join(`.`)}:null},Fu=(e,t)=>{let n=Pu(e,t);return n?`forEach:${n.collectionKey}:${n.projectionKey}`:null},Iu=(e,t)=>Fu(e,t)??Y(e,t),Lu=(e,t)=>{if(!e)return null;let n=Iu(e,t);if(n)return n;let r=P(e);if(E(r,`CallExpression`)){let e=Iu(r.callee,t),n=r.arguments.flatMap(e=>{if(!j(e))return[];let n=Lu(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!E(r,`BinaryExpression`)&&!E(r,`LogicalExpression`))return null;let i=Lu(r.left,t),a=Lu(r.right,t);return i&&a?`${r.type}:${r.operator}:${i}:${a}`:null},Qde=(e,t)=>{let n=P(e);if(E(n,`CallExpression`)&&Lu(n,t))return n;if(!E(n,`Identifier`))return Od(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?P(r.initializer):null;return!r||!i?Od(n,t):E(i,`ObjectExpression`)?r.kind===`const`&&r.references.every(e=>{if(e.flag!==`read`||Tu(e.identifier))return!1;let t=b(e.identifier),n=t.parent;if(!E(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=P(n.callee);if(!E(r,`MemberExpression`))return!1;let i=A(r);return i===`addEventListener`||i===`removeEventListener`})?i:null:E(i,`Identifier`)||E(i,`MemberExpression`)?null:Od(n,t)},Ru=(e,t,n)=>{let r=Pu(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>Cl(e?P(e):null,{allowIndeterminateEntries:!0}));if(e.every(e=>e===!1))return`capture:false`;if(e.every(e=>e===!0))return`capture:true`}let i=e?Qde(e,t):null;if(e&&!i)return null;let a=Cl(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=P(i);if(!E(o,`ObjectExpression`)){let e=n?Lu(o,t):null;return e?`options:${e}`:null}let s=`capture:false`;for(let e of o.properties??[]){if(!E(e,`Property`)){s=null;continue}let n=A(e);if(n===null||!e.computed&&n===`__proto__`){s=null;continue}if(n===`capture`){let n=Lu(e.value,t);s=n?`capture-value:${n}`:null}}return s},$de=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`ObjectExpression`))return Pu(n,t);let r=null;for(let e of n.properties??[]){if(!E(e,`Property`)){r=null;continue}let n=A(e);if(n===null||!e.computed&&n===`__proto__`){r=null;continue}n===`capture`&&(r=Pu(e.value,t))}return r},zu=(e,t,n,r=!1)=>{let i=Ru(e,n,r);return i!==null&&i===Ru(t,n,r)},Bu=(e,t,n=new Set)=>{let r=_u(e,t.scopes);if(r)return r;let i=P(e);for(;E(i,`MemberExpression`);){let e=_u(i,t.scopes)??gu(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=P(i.object)}if(E(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(e?.kind===`const`&&e.initializer&&!n.has(e.id)){let r=new Set(n);return r.add(e.id),Bu(e.initializer,t,r)}}return null},Vu=(e,t)=>Bu(e,t)!==null,Hu=(e,t)=>{let n=b(e),r=n.parent;if(E(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&Vu(r.left,t)){let e=Y(r.left,t);return e?{anchor:r,key:e}:null}if(!E(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=A(r),a=r.parent;if(!i||!E(a,`ObjectExpression`))return null;let o=b(a),s=o.parent;if(!E(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!Vu(s.left,t))return null;let c=Y(s.left,t);return c?{anchor:s,key:`${c}.${i}`}:null},Uu=(e,t)=>{let n=b(e),r=Hu(n,t);if(r)return r;let i=n.parent;if(!E(i,`VariableDeclarator`)||i.init!==n||!E(i.id,`Identifier`)||!E(i.parent,`VariableDeclaration`)||i.parent.kind!==`const`)return null;let a=t.scopes.symbolFor(i.id);return a?a.references.flatMap(e=>{let n=Hu(e.identifier,t);return n?[n]:[]}).find(n=>ad(e,[n.anchor],t))??null:null},Wu=(e,t,n)=>{let r=A(e),i=P(e.object),a=E(i,`Identifier`)?n.scopes.symbolFor(i):null,o=M(t);if(!r||!a||!o||!w(o))return null;for(let e of a.references){let i=b(e.identifier),a=i.parent;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==i||!Vu(a.left,n)||M(a)!==o||!kf(t,[a],o,n))continue;let s=Y(a.left,n);if(s)return{anchor:a,key:`${s}.${r}`}}return null},efe=(e,t)=>{let n=Uu(e,t);if(n)return n;let r=b(e),i=r.parent;return E(i,`AssignmentExpression`)&&i.right===r&&E(i.left,`MemberExpression`)?Wu(i.left,e,t):null},Gu=(e,t,r,i=new Set)=>{let a=P(e);if(E(a,`MemberExpression`)){if(Vu(a,r)){let e=Y(a,r);return e?new Set([e]):null}let e=A(a);if(!e)return null;let n=Gu(a.object,t,r,i);return n&&n.size>0?new Set([...n].map(t=>`${t}.${e}`)):null}if(E(a,`ConditionalExpression`)){let e=Gu(a.consequent,t,r,i),n=Gu(a.alternate,t,r,i);return e&&n?new Set([...e,...n]):null}if(!E(a,`Identifier`))return null;let o=r.scopes.symbolFor(a);if(!o||i.has(o.id))return null;let s=new Set(i);s.add(o.id);let c=o.initializer?P(o.initializer):null;if(E(c,`CallExpression`)&&n(c,`useRef`,r.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){let e=Y(a,r);return e?new Set([e]):null}if(o.kind===`const`&&o.initializer){let e=Gu(o.initializer,t,r,s);if(e)return e}let l=M(t),u=o.references.flatMap(e=>{let n=b(e.identifier),i=n.parent;if(!l||!E(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==n||M(i)!==l||!Vu(i.left,r)||!kf(t,[i],l,r))return[];let a=Y(i.left,r);return a?[a]:[]});if(u.length>0)return new Set(u);if(o.kind!==`parameter`)return null;let d=M(o.bindingIdentifier);if(!d||!w(d))return null;let f=d.params.findIndex(e=>P(e)===o.bindingIdentifier),p=Ys(d),m=p?r.scopes.symbolFor(p):null;if(f<0||!m)return null;let h=[];for(let e of m.references){let t=b(e.identifier),n=t.parent;if(E(n,`CallExpression`)&&n.callee===t){let e=n.arguments[f];if(!e||!j(e))return null;let t=Gu(e,n,r,s);if(!t||t.size===0)return null;h.push(t);continue}let i=t.parent,a=i?.parent;if(!(E(i,`ArrayExpression`)&&E(a,`CallExpression`)&&a.arguments?.[1]===i))return null}return h.length>0?new Set(h.flatMap(e=>[...e])):null},tfe=(e,t)=>{let n=efe(e,t);if(n)return new Set([n.key]);let r=b(e),i=r.parent;return!E(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r?new Set:Gu(i.left,i,t)??new Set},Ku=(e,t,n=!1)=>{let r=b(e),i=r.parent;if(E(i,`VariableDeclarator`)&&i.init===r){let r=Y(i.id,t);return n?Uu(e,t)?.key??r:r}if(E(i,`AssignmentExpression`)&&i.right===r){if(n&&E(i.left,`MemberExpression`)){let n=Wu(i.left,e,t);if(n)return n.key}return Y(i.left,t)}return n?Hu(r,t)?.key??null:null},qu=(e,t,n)=>e!==null&&(e===t.handleKey||e===Ku(t.node,n)),Ju=(e,t)=>{let n=P(e);if(E(n,`MemberExpression`))return Ju(n.object,t);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?Ue(r):null;return typeof i?.source.value==`string`?i.source.value:null},nfe=(e,t)=>{if(e.kind!==`subscribe`||!E(e.node,`CallExpression`))return!1;if(Cu(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||td(e.node,`addListener`,t))return!1;let n=P(e.node.callee);if(!E(n,`MemberExpression`))return!1;let r=Ju(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?Jde.has(r):r!==`react-native`;let i=P(n.object),a=Od(i,t),o=a&&E(a,`NewExpression`)?Ju(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&Yde.has(o))return!1;let s=E(i,`Identifier`)?t.scopes.symbolFor(i):null,c=E(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!E(i,`Identifier`)||c||s!==null&&(ks(s)!==null||Ds(s)!==null)?Is(i,t.scopes).length===0:!1},rfe=(e,t)=>{let n=P(e),r=wu(n,t.scopes);return E(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},Yu=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;if(r.name===`navigation`)return!0;n.add(e.id);let i=e.initializer?P(e.initializer):null,a=E(i,`CallExpression`)?wu(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&Yu(i,t,n))}if(!E(r,`CallExpression`))return!1;let i=P(r.callee);return!!(E(i,`MemberExpression`)&&!i.computed&&E(i.property,`Identifier`)&&i.property.name===`getParent`&&Yu(i.object,t,n))},Xu=(e,t)=>{if(nfe(e,t))return!0;if(!E(e.node,`CallExpression`))return!1;let n=P(e.node.callee);return!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&rfe(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&Yu(n.object,t)},Zu=(e,t,n)=>{let r=P(e);if(!E(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&Y(r,n)===t.handleKey&&!i.references.some(e=>Tu(e.identifier)))},ife=(e,t,n)=>Zu(e,t,n)&&Xu(t,n),Qu=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!ff.has(t)||n.receiverKey===null||e!==n.receiverKey||!E(n.node,`CallExpression`))return!1;let i=P(n.node.callee);if(!E(i,`MemberExpression`))return!1;let a=Od(i.object,r);return a!==null&&Nu(a)},$u=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(E(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id)||!e.references.every(e=>e.flag===`read`&&!Tu(e.identifier)))return null;let i=Ds(e);if(!i)return`symbol:${e.id}`;let a=P(i);if(!E(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(n);return o.add(e.id),$u(a,t,o)??`symbol:${e.id}`}if(w(r)){let e=S(r);return e===null?null:`function:${e}`}return null},afe=(e,t,n)=>{if(!e)return null;let r=P(e);if(!E(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!E(i.declarationNode,`VariableDeclarator`))return null;let a=i.references.filter(e=>e.flag!==`read`||Tu(e.identifier));if(a.length!==1)return null;let o=b(a[0].identifier),s=o.parent,c=M(t);return!E(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!kf(t,[s],c,n)?null:`symbol:${i.id}`},ed=(e,t,r=new Set)=>{let i=P(e);if(Is(i,t.scopes).includes(`MediaQueryList`))return!0;if(E(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(!e||r.has(e.id))return!1;let n=Ds(e);if(!n)return!1;let a=new Set(r);return a.add(e.id),ed(n,t,a)}if(!E(i,`CallExpression`)||!n(i,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let a=Kn(i,t.scopes);return!!(a&&Ne(a,t.scopes,e=>{let n=P(e);return E(n,`Literal`)&&n.value===null||E(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||ed(n,t,new Set(r))},t.cfg,`every`))},td=(e,t,n)=>{let r=P(e.callee);return e.arguments?.length===1&&E(r,`MemberExpression`)&&!r.computed&&E(r.property,`Identifier`)&&r.property.name===t&&ed(r.object,n)},nd=(e,t)=>{let n=P(e.callee);return!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:td(e,`addListener`,t)?{receiverKey:$u(n.object,t)??afe(n.object,e,t),registrationVerbName:n.property.name,eventKey:null,handlerKey:$u(e.arguments?.[0],t)}:{receiverKey:Iu(n.object,t),registrationVerbName:n.property.name,eventKey:Iu(e.arguments?.[0],t),handlerKey:Iu(e.arguments?.[1],t)}},rd=e=>{if(e.kind!==`subscribe`||!E(e.node,`CallExpression`))return null;let t=e.node.arguments?.length===1?e.node.arguments[0]:e.node.arguments?.[1];return t&&j(t)?t:null},id=(e,t)=>{let n=e;for(;E(n,`CallExpression`);){let e=E(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!E(e,`MemberExpression`)||e.computed||!E(e.property,`Identifier`))return null;if(e.property.name===`channel`)return Iu(e.object,t);n=P(e.object)}return null},ofe=(e,t)=>{let n=e,r=b(n);for(;E(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=b(r.parent),t=e.parent;if(!E(t,`CallExpression`)||t.callee!==e)break;n=t,r=b(n)}return n===e||xu(n)!==`subscribe`||id(n,t)===null?null:Ku(n,t,!0)},sfe=(e,t)=>{let n=iu(e,t.scopes),r=[...n];for(;r.length>0;){let e=r.pop();!e||!w(e)||D(e.body,i=>{if(i!==e.body&&w(i))return!1;if(!E(i,`CallExpression`))return;let a=null;if(E(i.callee,`Identifier`)&&et.has(i.callee.name)){let e=i.arguments?.[0];a=e&&j(e)?e:null}else{let e=i.arguments?.find(e=>j(e)&&nu(e)===i);e&&j(e)&&(a=e);let n=xu(i);n!==null&&(a=rd({kind:`subscribe`,node:i,resourceName:n,handleKey:null,...nd(i,t)}))}let o=a?y(a,t.scopes):null;!o||n.has(o)||(n.add(o),r.push(o))})}return n},cfe=(e,t)=>{let n=[];if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`))return n;let r=null;if(E(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];E(n,`ReturnStatement`)&&n.argument&&(r=n.argument)}let i=sfe(e,t);return D(e,a=>{if(a!==e&&w(a)&&(a===r||!i.has(a)&&!eu(a)))return!1;if(Nu(a)){n.push({kind:`socket`,node:a,resourceName:E(a.callee,`Identifier`)?a.callee.name:`WebSocket`,handleKey:Ku(a,t,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!E(a,`CallExpression`))return;if(E(a.callee,`Identifier`)&&et.has(a.callee.name)){if(a.callee.name===`setTimeout`&&(Ff(a)||If(a,t)))return;n.push({kind:`timer`,node:a,resourceName:a.callee.name,handleKey:Ku(a,t,!0),receiverKey:null,registrationVerbName:a.callee.name,eventKey:null,handlerKey:null});return}let o=xu(a);if(o!==null){let e=nd(a,t);n.push({kind:`subscribe`,node:a,resourceName:o,handleKey:(o===`on`?ofe(a,t):null)??Ku(a,t,!0),...e})}}),n.filter(e=>H(e.node,t))},ad=(e,t,n)=>{let r=e,i=M(r);for(;i&&eu(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!E(e,`CallExpression`))break;r=e,i=M(r)}return ka(r,t,n,e)},lfe=(e,t,n)=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||!E(e.body,`BlockStatement`))return t;let r=[];return yu(e.body,e=>{E(E(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=S(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=S(r);return i!==null&&i>t&&Cf(r,e,n)});return!ad(e.node,i,n)})},od=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=E(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!Tu(e.identifier));return r&&E(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&E(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},sd=(e,t)=>{if(!e)return!1;let n=P(e),r=new Set;if(D(n,e=>{if(!E(e,`Identifier`))return;let n=t.scopes.symbolFor(e);n&&r.add(n.id)}),r.size===0)return!1;let i=(e,n)=>{let i=!1;return D(e,e=>{if(!E(e,`Identifier`)||n&&!Tu(e))return;let a=t.scopes.symbolFor(e);if(a&&r.has(a.id))return i=!0,!1}),i},a=n.parent;for(;a&&!w(a);){if(E(a,`ForOfStatement`)){let e=P(a.left);if(!E(e,`VariableDeclaration`)&&(i(e,!1)||i(a.body,!0)))return!0}a=a.parent}return!1},cd=(e,t)=>{if(!E(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!E(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!E(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!E(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},ld=(e,t,n)=>{if(!E(e,`Identifier`)||!cd(e,t))return!1;let r=t.scopes.symbolFor(e);return r?n.has(r.id)?!0:(n.add(r.id),r.references.every(e=>{let r=b(e.identifier),i=r.parent;if(E(i,`ForOfStatement`)&&i.right===r||E(i,`MemberExpression`)&&i.object===r&&!i.computed&&E(i.property,`Identifier`)&&i.property.name===`push`&&E(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(E(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return E(i.id,`Identifier`)&&E(e,`VariableDeclaration`)&&e.kind===`const`?ld(i.id,t,n):!1}return!1})):!1},ud=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(!E(r,`Identifier`)||!cd(r,t))return null;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return null;n.add(i.id);let a=i.initializer?P(i.initializer):null,o=e=>{if(!e)return!1;let t=P(e);if(E(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(E(t,`ArrayExpression`))return!0;if(!E(t,`CallExpression`))return!1;let n=P(t.callee);return!!(E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?ld(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:E(a,`Identifier`)?ud(a,t,n):null},dd=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=Eu.get(t);if(i||(i=new Map,Eu.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=ud(e,t);return i.set(r.id,a),a},fd=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(!E(r,`Identifier`)||!cd(r,t))return null;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return null;n.add(i.id);let a=i.initializer?P(i.initializer):null,o=e=>{if(!e)return!1;let t=P(e);return E(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):E(t,`ArrayExpression`)&&t.elements.every(e=>e===null||E(e,`Literal`)&&(e.value===null||typeof e.value==`boolean`||typeof e.value==`number`||typeof e.value==`string`))};return o(a)?ld(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:E(a,`Identifier`)?fd(a,t,n):null},pd=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=od(n,t);if(r)return fd(r.right,t);let i=t.scopes.symbolFor(n);if(!i||i.kind!==`parameter`)return null;let a=i.bindingIdentifier.parent;for(;a&&!w(a);)a=a.parent;if(!a||!w(a))return null;let o=a.parent;if(!E(o,`CallExpression`))return null;let s=P(o.callee);if(E(s,`MemberExpression`)&&!s.computed&&E(s.property,`Identifier`)){if(E(s.object,`Identifier`)&&s.object.name===`Array`&&s.property.name===`from`&&o.arguments?.[1]===a)return Y(o.arguments[0],t);if(o.arguments?.[0]===a)return Y(s.object,t)}return null},ufe=(e,t)=>{let n=od(e,t);return n?Y(n.right,t):pd(e,t)},md=(e,t,n)=>{if(t===null)return;let r=e.get(t);(r===void 0||r<n)&&e.set(t,n)},hd=(e,t,n=1/0,r=new Set)=>{let i=new Map;if(!e)return i;let a=P(e);if(md(i,Y(a,t),n),!E(a,`Identifier`))return i;let o=t.scopes.symbolFor(a);if(!o||r.has(o.id)||!cd(a,t))return i;let s=new Set(r);s.add(o.id);let c=o.initializer?P(o.initializer):null,l=null,u=n;if(E(c,`Identifier`))l=c;else if(E(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&E(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,S(c)??1/0))}else if(E(c,`CallExpression`)){let e=P(c.callee);if(E(e,`MemberExpression`)&&!e.computed&&E(e.property,`Identifier`)){let r=e.property.name,i=E(e.object,`Identifier`)&&e.object.name===`Array`&&t.scopes.isGlobalReference(e.object)&&r===`from`&&c.arguments.length===1,a=(r===`slice`||r===`concat`)&&c.arguments.length===0||r===`toReversed`||r===`toSorted`;if(i){let e=c.arguments[0];l=j(e)?e:null}else a&&(l=e.object);l&&(u=Math.min(n,S(c)??1/0))}}if(!l)return i;for(let[e,n]of hd(l,t,u,s))md(i,e,n);return i},gd=(e,t)=>{let n=od(e,t);if(n)return hd(n.right,t);let r=e?P(e):null;if(!E(r,`Identifier`))return new Map;let i=t.scopes.symbolFor(r);if(!i||i.kind!==`parameter`)return new Map;let a=i.bindingIdentifier.parent;for(;a&&!w(a);)a=a.parent;let o=a?.parent,s=E(o,`CallExpression`)?P(o.callee):null;return E(s,`MemberExpression`)?hd(s.object,t):new Map},_d=(e,t,n)=>{let r=Ed(t.node,n);return r!==null&&gd(e,n).has(r)},vd=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=od(n,t)?.right;return r?dd(r,t):null},yd=(e,t)=>{if(!e)return!1;let n=P(e);return E(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},bd=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);return!r||r.kind!==`const`&&r.kind!==`function`&&r.kind!==`parameter`||!r.references.every(e=>e.flag===`read`&&!Tu(e.identifier))?null:r.id},xd=(e,t)=>{if(!E(e,`BreakStatement`)&&!E(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(E(n,`LabeledStatement`)&&n.label.name===e.label.name)return z(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(E(n,`ForStatement`)||E(n,`ForInStatement`)||E(n,`ForOfStatement`)||E(n,`WhileStatement`)||E(n,`DoWhileStatement`))return n===t;if(E(e,`BreakStatement`)&&E(n,`SwitchStatement`))return!1;n=n.parent}return!1},Sd=(e,t,n)=>{if(!(E(t.body,`BlockStatement`)?e.parent===t.body:e===t.body))return!1;let r=M(e),i=!1,a=!1;return D(t.body,o=>{if(i||a||o!==t.body&&w(o))return!1;if(E(o,`ReturnStatement`)||E(o,`ThrowStatement`)&&(!r||!Hl(o,e,r,n))||E(o,`BreakStatement`)&&xd(o,t))return i=!0,!1;if(E(o,`ContinueStatement`)&&xd(o,t)&&(S(o)??-1)<(S(e)??0))return a=!0,!1}),!i&&!a},Cd=(e,t,n)=>{let r=b(e).parent;return!!(E(r,`ExpressionStatement`)&&Sd(r,t,n))},wd=(e,t,n)=>{let r=b(e),i=E(r.parent,`ExpressionStatement`)?r.parent:null;if(!i)return null;let a=new Set,o=i.parent;for(;o&&!w(o);){if(E(o,`ForOfStatement`)){if(!Sd(i,o,n))return null;let e=Y(o.right,n);e&&a.add(e),i=o}o=o.parent}return[...t].every(e=>a.has(e))?i:null},dfe=(e,t,n)=>wd(e,t,n)!==null,ffe=e=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!E(t,`CallExpression`))return null;let n=P(t.callee);return!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)?null:E(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`&&t.arguments?.[1]===e||n.property.name===`map`&&t.arguments?.[0]===e?t:null},pfe=(e,t)=>{let n=M(e);if(!n||!E(n,`ArrowFunctionExpression`)&&!E(n,`FunctionExpression`))return null;let r=ffe(n);if(!r)return null;if(E(n.body,`BlockStatement`)){let r=b(e),i=r.parent,a=i?.parent;if(!E(i,`VariableDeclarator`)||i.init!==r||!E(i.id,`Identifier`)||!E(a,`VariableDeclaration`)||a.kind!==`const`||a.parent!==n.body)return null;let o=[];D(n.body,e=>{if(e!==n.body&&w(e))return!1;E(e,`ReturnStatement`)&&o.push(e)});let s=o[0],c=n.body.body??[],l=E(s,`ReturnStatement`)&&s.argument?P(s.argument):null,u=t.scopes.symbolFor(i.id);if(o.length!==1||c[c.length-1]!==s||!E(l,`Identifier`)||!u||t.scopes.symbolFor(l)?.id!==u.id||!ad(e,[s],t))return null}else if(b(e)!==n.body)return null;let i=b(r),a=i.parent;return E(a,`VariableDeclarator`)&&a.init===i?Y(a.id,t):null},Td=(e,t)=>{let n=b(e),r=n.parent,i=E(r,`CallExpression`)?P(r.callee):null;if(!E(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!E(i,`MemberExpression`)||i.computed||!E(i.object,`Identifier`)||!E(i.property,`Identifier`)||i.property.name!==`push`||!cd(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?P(a.initializer):null;return a&&E(o,`ArrayExpression`)&&(o.elements?.length??0)===0?a:null},Ed=(e,t)=>{let n=Td(e,t);if(n)return`symbol:${n.id}`;let r=pfe(e,t);if(r!==null)return r;let i=e,a=i.parent;for(;a;){if(w(a))return null;if(E(a,`VariableDeclarator`)&&a.init===i)return Y(a.id,t);i=a,a=i.parent}return null},Dd=(e,t)=>{if(!E(e.node,`CallExpression`))return null;let n=P(e.node.callee);if(!E(n,`MemberExpression`)||n.computed)return null;let r=P(n.object);if(!cd(r,t))return null;let i=t.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=b(e.identifier),n=t.parent;if(!E(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=P(n.callee);return E(r,`MemberExpression`)&&!r.computed&&E(r.object,`Identifier`)&&E(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(M(o)!==M(e.node)||!ad(e.node,[o],t))return null;let s=P(o.callee);if(!E(s,`MemberExpression`)||!E(s.object,`Identifier`)||!cd(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?P(c.initializer):null;return!c||!E(l,`ArrayExpression`)||(l.elements?.length??0)!==0||M(c.declarationNode)!==M(e.node)?null:c.references.every(e=>{let t=b(e.identifier),n=t.parent;if(E(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!E(r,`MemberExpression`)||r.object!==t||r.computed||!E(r.property,`Identifier`)||!E(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?Y(s.object,t):null},Od=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(!E(r,`Identifier`))return r;let i=t.scopes.symbolFor(r),a=(i?.kind===`let`||i?.kind===`var`)&&E(i.declarationNode,`VariableDeclarator`)&&i.declarationNode.id===i.bindingIdentifier&&i.references.every(e=>e.flag===`read`&&!Tu(e.identifier))&&i.scope.symbols.filter(e=>e.name===i.name).length===1,o=i?.kind===`function`&&w(i.declarationNode)?t.scopes.ownScopeFor(i.declarationNode)?.symbols.find(e=>e.name===i.name&&e.declarationNode===i.declarationNode):null,s=i?.kind===`function`&&i.references.every(e=>e.flag===`read`&&!Tu(e.identifier))&&(!o||o.references.every(e=>e.flag===`read`&&!Tu(e.identifier)))&&i.scope.symbols.filter(e=>e.name===i.name).length===1;return!i||i.kind!==`const`&&!a&&!s||!i.initializer||n.has(i.id)?r:(n.add(i.id),Od(i.initializer,t,n))},mfe=(e,t)=>{let n=Od(e,t);return E(n,`ObjectExpression`)?n:null},kd=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!E(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=mfe(n,t);if(!r)return null;for(let e of r.properties??[]){if(!E(e,`Property`)||A(e)!==`signal`)continue;let n=Y(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},Ad=e=>{let t=w(e)?e:M(e);if(!t||!w(t)||t.async||t.generator)return null;let n=t.parent;if(!E(n,`CallExpression`)||n.arguments?.[0]!==t)return null;let r=P(n.callee);return E(r,`MemberExpression`)&&!r.computed&&E(r.property,`Identifier`)&&r.property.name===`forEach`?n:null},jd=e=>{let t=b(e),n=t.parent;return E(n,`CallExpression`)&&n.callee===t?n:null},hfe=(e,t,n)=>{let r=Ys(e);if(!r||Od(r,n)!==e)return null;let i=n.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=jd(e.identifier);return t?[t]:[]});if(a.length!==1||i.references.length!==1)return null;let o=a[0];return M(o)===t&&H(o,n)?o:null},Md=(e,t)=>{if(!E(e,`NewExpression`))return!1;let n=P(e.callee);return E(n,`Identifier`)&&we.has(n.name)&&t.scopes.isGlobalReference(n)},gfe=(e,t)=>{if(!e)return!0;let n=P(e);return E(n,`Literal`)&&n.value===null||E(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},_fe=(e,t,n,r)=>{if(!w(e)||e.async||e.generator||n.receiverKey===null||!E(n.node,`CallExpression`))return null;let i=P(n.node.callee),a=E(i,`MemberExpression`)?P(i.object):null;if(!a||!E(a,`Identifier`))return null;let o=r.scopes.symbolFor(a),s=o?.declarationNode;if(!o||o.kind!==`let`&&o.kind!==`var`||!E(s,`VariableDeclarator`)||s.id!==o.bindingIdentifier||M(s)!==t||!gfe(s.init,r))return null;let c=[];for(let e of o.references){let t=b(e.identifier),n=t.parent;if(E(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){c.push(n);continue}let r=n,i=r?.parent;if(!E(r,`MemberExpression`)||r.object!==t||!E(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(A(r)??``))return null}if(c.length!==1)return null;let l=c[0];if(!l||!Md(P(l.right),r)||M(l)!==e||!Hl(l,n.node,e,r))return null;let u=[],d=S(l);if(d===null||(D(e.body,t=>{if(t!==e.body&&w(t))return!1;if(!E(t,`CallExpression`))return;let i=S(t);i===null||i>=d||!Cf(t,n,r)||u.push(Vd(t,e,n.receiverKey??``,r)??t)}),!Aa(e,u,r)))return null;let f=Ys(e),p=f?r.scopes.symbolFor(f):null;if(!p)return null;let m=[];for(let n of p.references){let i=jd(n.identifier);if(i&&M(i)===t){m.push(i);continue}let a=b(n.identifier),o=a.parent;if(!o||!Md(o,r)||M(o)!==e||!o.arguments.some(e=>e===a))return null}let h=m.length===1?m[0]:null;return h&&H(h,r)?h:null},Nd=(e,t,n,r)=>{let i=M(e);return!i||i===t?e:hfe(i,t,n)??(r?_fe(i,t,r,n):null)??e},vfe=(e,t,n)=>{if(!w(e))return[];let r=Ys(e),i=Y(r,n);if(!i)return[];let a=[];return D(t,e=>{if(e!==t&&w(e))return!1;let o=E(e,`CallExpression`)?e.arguments[1]:null;E(e,`CallExpression`)&&Gn(e)===`addEventListener`&&(Y(o,n)===i||E(o,`Identifier`)&&o.name===r?.name)&&a.push(e)}),a},yfe=(e,t,n)=>{let r=P(e);if(!E(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer?P(i.initializer):null;if(!i||i.kind!==`let`&&i.kind!==`var`||!E(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||!E(a,`Literal`)||a.value!==null||i.scope.symbols.filter(e=>e.name===i.name).length!==1)return null;let o=i.references.filter(e=>Tu(e.identifier));if(o.length!==1)return null;let s=o[0],c=b(s.identifier),l=c.parent;if(!E(l,`AssignmentExpression`)||l.operator!==`=`||l.left!==c||M(l)!==M(t.node)||!ad(t.node,[l],n))return null;let u=P(l.right);return w(u)?u:null},Pd=(e,t,n,r)=>{if(!w(e)||!E(t,`CallExpression`))return null;let i=new Map(r);for(let r=0;r<e.params.length;r+=1){let a=e.params[r],o=t.arguments?.[r],s=E(a,`AssignmentPattern`)?P(a.left):a;if(!E(s,`Identifier`))continue;let c=n.scopes.symbolFor(s),l=c?.references.some(e=>{let t=b(e.identifier),n=t.parent;return E(n,`AssignmentExpression`)&&n.left===t||E(n,`UpdateExpression`)&&n.argument===t||E(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!c||l)return null;if(!o){E(a,`AssignmentPattern`)?i.set(c.id,a.right):s.optional&&i.set(c.id,s);continue}E(o,`SpreadElement`)||i.set(c.id,o)}return i},bfe=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=E(e,`ChainExpression`)?e.expression:e,i=E(r,`CallExpression`)?P(r.callee):null,a=E(r,`CallExpression`)?r.arguments[0]:null,o=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`,s=Ed(t.node,n);if(!E(r,`CallExpression`)||!E(i,`MemberExpression`)||i.computed||!E(i.property,`Identifier`)||i.property.name!==`forEach`||!E(a,`Identifier`)||a.name!==o||!n.scopes.isGlobalReference(a)||s===null||s!==Y(i.object,n))return!1;let c=hd(i.object,n);return c.has(s)&&!xf(t.node,r,c,n)},Fd=(e,t,n,r=new Set,i=new Map,a=!1)=>{if(!w(e)||r.has(e))return!1;r.add(e);let o=!1,s=[];D(e.body,c=>{if(o||c!==e.body&&w(c)&&!eu(c))return!1;let l=E(c,`ChainExpression`)?c.expression:c;if(bfe(c,t,n)){if(a){s.push(c);return}return o=!0,!1}if(Cf(c,t,n,i)){let r=Ad(c),u=E(l,`CallExpression`)?P(l.callee):null,d=E(u,`MemberExpression`)?u.object:u,f=od(d,n),p=ufe(d,n),m=gd(d,n),h=Dd(t,n)??Ed(t.node,n);if(p!==null&&M(c)!==e){let e=M(c);r&&e&&w(e)&&h!==null&&m.has(h)&&Aa(e,[c],n)&&!xf(t.node,c,m,n)&&s.push(r);return}let g=od(E(l,`CallExpression`)?l.arguments?.[0]:null,n)??f;if(!g){if(a){let r=Hd(c,e,t,n,i);s.push(r??c);return}return o=!0,!1}let _=wd(c,t.kind===`subscribe`&&t.registrationVerbName===`addEventListener`&&E(t.node,`CallExpression`)?new Set([P(t.node.callee),t.node.arguments?.[0],t.node.arguments?.[1],t.node.arguments?.[2]].flatMap(e=>{let t=E(e,`MemberExpression`)?Pu(e.object,n):j(e)?Pu(e,n):null;return t?[t.collectionKey]:[]})):new Set,n);!e.async&&!e.generator&&(Cd(c,g,n)||_!==null)&&(h===null||m.size===0||m.has(h)&&!xf(t.node,c,m,n))&&s.push(_??g);return}if(!E(l,`CallExpression`))return;let u=Od(l.callee,n),d=E(u,`Identifier`)?yfe(u,t,n):u?Of(u,n):null,f=d&&w(d)?Pd(d,l,n,i):null;if(d&&w(d)&&f&&!d.async&&!d.generator&&Fd(d,t,n,new Set(r),f,a)){let r=Hd(c,e,t,n,i)??Sfe(c,e,t,n);s.push(r??l)}});let c=b(e.body);return a&&s.some(e=>b(e)===c)?!0:o||Aa(e,s,n)},Id=(e,t,n)=>e.length>0&&e.every(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return!1;let r=Od(e.argument,n);return!!(r&&w(r)&&Fd(r,t,n,new Set,new Map,!0))}),Ld=(e,t,n)=>{let r=P(e);if(!E(r,`CallExpression`))return!1;let i=P(r.callee);if(!E(i,`MemberExpression`)||i.computed||!E(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=P(i.object);if(!E(a,`MemberExpression`)||a.computed||!E(a.property,`Identifier`))return!1;let o=Y(a.object,n);if(o===null||o!==Y(r.arguments?.[0],n))return!1;let s=a.property.name;return Qu(o,s,t,n)?!0:t.kind===`socket`?qu(o,t,n)&&(ff.has(s)||df.has(s)):t.kind===`subscribe`&&qu(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||cn.has(s))},Rd=(e,t,n)=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||e.async)return!1;let r=e=>{if(Ld(e,t,n))return!0;let r=Od(e,n),i=Of(e,n);return r&&Ld(r,t,n)?!0:!!(i&&w(i)&&Fd(i,t,n))};if(!E(e.body,`BlockStatement`))return r(P(e.body));let i=[];return yu(e.body,e=>{E(e,`ReturnStatement`)&&e.argument&&r(P(e.argument))&&i.push(e)}),Aa(e,i,n)},zd=(e,t,n,r=new Map)=>{let i=Y(e,n,new Set,r);if(i!==null&&(i===t||t.startsWith(`${i}.`)))return!0;let a=P(e);if(!E(a,`BinaryExpression`)||a.operator!==`!=`&&a.operator!==`!==`)return!1;let o=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return Y(a.left,n,new Set,r)===t&&o(a.right)||Y(a.right,n,new Set,r)===t&&o(a.left)},Bd=(e,t,n,r)=>{let i=P(e),a=e=>{let t=P(e);if(E(t,`Identifier`)){let e=n.scopes.symbolFor(t),i=e?r.get(e.id):null;return!!(e&&E(i,`Identifier`)&&i.optional&&n.scopes.symbolFor(i)?.id===e.id)}if(E(t,`LogicalExpression`)){let e=a(t.left),n=a(t.right);return t.operator===`&&`?e||n:e&&n}return!1};if(a(i))return!0;if(E(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&mn(P(t))===!1)return!0}if(E(i,`UnaryExpression`)&&i.operator===`!`){let e=P(i.argument);if(E(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&mn(P(i))===!0)return!0}let a=Y(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:zd(i.argument,t,n,r)}if(E(i,`LogicalExpression`)){let e=Bd(i.left,t,n,r),a=Bd(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(E(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?Y(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},Vd=(e,t,n,r,i=new Map)=>{let a=e.parent,o=null;for(;a&&a!==t;){if(E(a,`IfStatement`)){if(!zd(a.test,n,r,i)||!ad(a.consequent,[e],r))return null;o=a;break}a=a.parent}if(w(t)&&E(t.body,`BlockStatement`)){let a=o??e;for(;a.parent&&a.parent!==t.body;)a=a.parent;let s=t.body.body.findIndex(e=>e===a);for(let e=s-1;e>=0;--e){let a=t.body.body[e];if(E(a,`IfStatement`)&&a.alternate===null&&hu(a.consequent)&&Bd(a.test,n,r,i))return a}}return o},Hd=(e,t,n,r,i=new Map)=>n.handleKey===null?null:Vd(e,t,n.handleKey,r,i),xfe=(e,t,n,r)=>{if(!w(t)||n.handleKey===null)return null;let i=e=>{let t=P(e);return E(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e.parent??null,o=null;for(;a&&a!==t&&!(E(a,`IfStatement`)&&z(e,a.consequent)&&(o=i(a.test).map(e=>Y(e,r)).find(e=>e!==null&&e!==n.handleKey)??null,o));)a=a.parent??null;if(!a||!E(a,`IfStatement`)||!o)return null;let s=J(n.node,r.scopes);if(!s){let e=M(n.node);for(;e&&!qs(e);)e=M(e);s=e}if(!s||!w(s))return null;let c=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t)},l=[],u=[];if(D(s.body,e=>{if(!E(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=Y(e.left,r);t===o&&l.push(e),t===n.handleKey&&E(P(e.right),`CallExpression`)&&Gn(P(e.right))===`setTimeout`&&u.push(e)}),l.length===0||u.length===0)return null;let d=Bu(l[0].left,r),f=d?.initializer?P(d.initializer):null,p=E(f,`CallExpression`)&&f.arguments[0]&&j(f.arguments[0])?f.arguments[0]:null;if(!p||!c(p))return null;let m=e=>{if(zd(e,o,r))return!0;let t=!1;return D(e,e=>{if(t)return!1;if(E(e,`MemberExpression`)&&Y(e,r)?.startsWith(`${o}.`))return t=!0,!1}),t},h=()=>{let e=Ys(M(n.node)??n.node),t=e?r.scopes.symbolFor(e):null;return!t||t.references.length===0?!1:t.references.every(e=>{let t=b(e.identifier),n=t.parent;if(!E(n,`CallExpression`)||n.callee!==t)return!1;let i=M(n);if(!i||!w(i))return!1;if(kf(n,l.filter(e=>M(e)===i&&!c(e.right)),i,r))return!0;let a=n.parent??null;for(;a&&a!==i;){if(E(a,`IfStatement`)&&z(n,a.consequent)&&m(a.test))return!0;a=a.parent??null}return!1})};if(!u.every(e=>{let t=M(e);return!t||!w(t)?!1:kf(e,l.filter(e=>M(e)===t&&!c(e.right)),t,r)||h()}))return null;let g=e=>{if(!w(e))return!1;let t=e.parent,i=t?.parent;return!!(E(t,`CallExpression`)&&t.arguments.some(t=>t===e)&&E(i,`AssignmentExpression`)&&Y(i.left,r)===n.handleKey)},_=t=>{let i=M(t);if(!i||!w(i))return!1;if(g(i))return!0;let a=[];return D(i.body,t=>{if(t!==i.body&&w(t))return!1;(t===e||tf(t,n,r))&&a.push(t)}),kf(t,a,i,r)||ad(t,a,r)};return l.every(e=>!c(e.right)||_(e))?a:null},Ud=new WeakMap,Wd=new WeakMap,Sfe=(e,t,n,r)=>{let i=Ud.get(e);if(i||(i=new WeakMap,Ud.set(e,i)),i.has(n.node))return i.get(n.node)??null;let a=Wd.get(e);if(a||(a=new WeakSet,Wd.set(e,a)),a.has(n.node))return null;a.add(n.node);let o=xfe(e,t,n,r);return a.delete(n.node),i.set(n.node,o),o},Gd=(e,t,n)=>{let r=new Set,i=t;for(;i&&i!==n;)r.add(i),i=i.parent??null;let a=e,o=a.parent??null;for(;o&&o!==n;){let e=E(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||E(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||E(o,`LogicalExpression`)&&o.right===a||E(o,`AssignmentPattern`)&&o.right===a||(E(o,`ForStatement`)||E(o,`ForInStatement`)||E(o,`ForOfStatement`)||E(o,`WhileStatement`)||E(o,`DoWhileStatement`))&&o.body===a?a:E(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},Cfe=(e,t,n,r=!1)=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||!E(e.body,`BlockStatement`))return!1;let i=n.cfg.cfgFor(e),a=i?.blockOf(t.node),o=S(t.node);if(!i||!a||o===null)return!1;let s=[];return yu(e.body,c=>{if(!E(c,`CallExpression`))return;let l=S(c),u=Hd(c,e,t,n),d=i.blockOf(c);if(l===null||l>=o||d!==a&&!u&&!r||!u&&Gd(c,t.node,e))return;if(Cf(c,t,n)){s.push(u??c);return}let f=Of(c.callee,n),p=f&&w(f)?Pd(f,c,n,new Map):null;f&&w(f)&&p&&Fd(f,t,n,new Set,p)&&s.push(u??c)}),r?kf(t.node,s,e,n):Aa(e,s,n)},wfe=(e,t,n)=>{let r=M(e);if(!r||!E(r,`ArrowFunctionExpression`)&&!E(r,`FunctionExpression`)&&!E(r,`FunctionDeclaration`))return!1;let i=!1;return D(r.body,a=>{if(i)return!1;if(!E(a,`CallExpression`)||M(a)!==r||!Mu(a,n))return;let o=Kn(a);if(o&&o!==e&&Rd(o,t,n))return i=!0,!1}),i},Tfe=(e,t,n)=>t.handleKey!==null&&wfe(e,t,n)&&Cfe(e,t,n,t.registrationVerbName===`setTimeout`),Kd=(e,t,n,r)=>{let i=P(e);if(E(i,`UnaryExpression`)&&i.operator===`!`)return Kd(i.argument,!t,n,r);if(E(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...Kd(i.left,t,n,r),...Kd(i.right,t,n,r)]:[];if(E(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=mn(i.left),a=mn(i.right),o=e??a,s=e===null?i.left:i.right,c=Y(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:E(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=Y(i,r);return a===null?[]:[{bindingIdentifier:E(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},Efe=(e,t,n)=>{if(!w(e)||e.async)return[];let r=[];D(e.body,i=>{if(i!==e.body&&w(i))return!1;E(i,`IfStatement`)&&!i.alternate&&!Hl(i.consequent,t,e,n)&&kf(t,[i],e,n)&&r.push(...Kd(i.test,!0,i,n))});let i=t,a=i.parent;for(;a&&a!==e;)E(a,`IfStatement`)&&a.consequent===i&&r.push(...Kd(a.test,!1,a,n)),i=a,a=a.parent;return r},Dfe=(e,t,n)=>{if(!E(e,`ReturnStatement`)||!e.argument)return!1;let r=Od(e.argument,n);if(!r||!w(r)||r.async||r.generator)return!1;let i=!1;return D(r.body,e=>{if(i||e!==r.body&&w(e))return!1;if(E(e,`AssignmentExpression`)&&e.operator===`=`&&Y(e.left,n)===t.key&&mn(e.right)===t.value&&n.cfg.isUnconditionalFromEntry(e))return i=!0,!1}),i},Ofe=(e,t,n,r)=>{let i=S(t);if(!w(e)||i===null)return!0;let a=!1;return D(e.body,t=>{if(a||t!==e.body&&w(t))return!1;let o=S(t);if(o===null||o>=i)return;let s=E(t,`AssignmentExpression`)?t.left:E(t,`UpdateExpression`)?t.argument:null;if(s&&Y(s,r)===n.key)return a=!0,!1}),a},kfe=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(E(a,`TryStatement`)&&a.block===i&&a.handler&&Hl(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},Afe=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!E(i.declarationNode,`VariableDeclarator`)||M(i.declarationNode)!==e?!1:i.references.every(e=>{if(!Tu(e.identifier))return!0;let r=b(e.identifier),i=r.parent;return E(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&mn(i.right)===t.value&&n.includes(M(i)??i)})},jfe=(e,t,n,r)=>{if(!w(e))return!0;let i=S(t.guardNode),a=S(n);if(i===null||a===null)return!0;let o=!1;return D(e.body,t=>{if(o||t!==e.body&&w(t))return!1;let s=S(t);if(!(s===null||s<=i||s>=a)&&(E(t,`AwaitExpression`)||E(t,`YieldExpression`)||E(t,`CallExpression`)&&!Ia(t,r.scopes))&&(Hl(t,n,e,r)||kfe(t,n,e,r)))return o=!0,!1}),o},qd=(e,t)=>{let n=gu(P(e),t.scopes),r=n?.initializer?P(n.initializer):null;if(!E(r,`CallExpression`))return null;let i=r.arguments?.[0]?P(r.arguments[0]):null;return!E(i,`Literal`)||typeof i.value!=`number`?null:Y(e,t)},Jd=(e,t)=>{let n=P(e);if(E(n,`LogicalExpression`)&&n.operator===`||`)return Jd(n.left,t)??Jd(n.right,t);if(!E(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=qd(n.left,t),i=qd(n.right,t),a=P(r?n.right:n.left),o=r??i;return o&&E(a,`Identifier`)?o:null},Yd=(e,t,n)=>{if(!w(e))return null;let r=null;return D(e.body,i=>{if(r||i!==e.body&&w(i))return!1;if(!E(i,`IfStatement`)||i.alternate)return;let a=Jd(i.test,n);!a||Hl(i.consequent,t,e,n)||!kf(t,[i],e,n)||(r=a)}),r},Mfe=(e,t,n)=>{if(E(e,`UpdateExpression`)&&Y(e.argument,n)===t)return!0;if(!E(e,`AssignmentExpression`)||Y(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=P(e.right);return E(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},Nfe=(e,t,n)=>{if(!w(e))return!1;let r=!1;return D(e.body,i=>{if(r||i!==e.body&&w(i))return!1;if(Mfe(i,t,n))return r=!0,!1}),r},Xd=(e,t,n)=>e.length>0&&e.every(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return!1;let r=Od(e.argument,n);return!!(r&&w(r)&&Fd(r,t,n))}),Pfe=(e,t)=>{let n=Y(e,t),r=P(e);if(!E(r,`Identifier`))return n;let i=Od(r,t);return i&&i!==r?Y(i,t)??n:n},Ffe=(e,t,n)=>{let r=P(e);if(!E(r,`BinaryExpression`)||r.operator!==`===`&&r.operator!==`==`)return null;let i=[{expression:r.left,value:r.right},{expression:r.right,value:r.left}];for(let{expression:e,value:r}of i){let i=P(e),a=P(r);if(!(!E(i,`MemberExpression`)||i.computed||!E(i.property,`Identifier`)||Pfe(i.object,n)!==t||!E(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},Ife=(e,t,n)=>{if(!w(e)||t.handleKey===null)return!1;let r=t.handleKey.lastIndexOf(`.`);if(r===-1)return!1;let i=t.handleKey.slice(0,r),a=[];D(e.body,r=>{if(r!==e.body&&w(r))return!1;if(!E(r,`IfStatement`)||r.alternate!==null||!hu(r.consequent)||!kf(t.node,[r],e,n))return;let o=Ffe(r.test,i,n);o&&a.push(o)});let o=new Set(a.map(({propertyName:e})=>e));if(o.size!==1)return!1;let s=[...o][0],c=new Set(a.map(({value:e})=>e)),l=J(t.node,n.scopes);if(!l){let e=M(t.node);for(;e&&!qs(e);)e=M(e);l=e}if(!s||!l||!w(l))return!1;let u=new Set,d=!1;return D(l.body,e=>{if(d)return!1;if(!E(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=Y(e.left,n);if(t===`${i}.${s}`)return d=!0,!1;if(t!==i)return;let r=P(e.right);if(E(r,`Literal`)&&r.value===null)return;let a=Od(r,n);if(!a||!E(a,`ObjectExpression`))return d=!0,!1;let o=a.properties.find(e=>E(e,`Property`)&&A(e)===s),c=E(o,`Property`)?P(o.value):null;if(!c||!E(c,`Literal`)||typeof c.value!=`string`)return d=!0,!1;u.add(c.value)}),!d&&u.size>0&&[...u].every(e=>c.has(e))},Lfe=(e,t,n)=>{if(!w(e)||t.handleKey===null)return!1;let r=S(t.node);if(r===null)return!1;let i=e=>{let t=P(e);return E(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e=>{let t=P(e),r=Y(t,n);if(r)return r;if(!E(t,`BinaryExpression`)||t.operator!==`!==`&&t.operator!==`!=`)return null;let i=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=i(t.left)?t.right:i(t.right)?t.left:null;return a?Y(a,n):null},o=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},s=e=>{if(!w(e))return!1;let r=e.parent,i=r?.parent;return!!(E(r,`CallExpression`)&&r.arguments.some(t=>t===e)&&Gn(r)===`setTimeout`&&E(i,`AssignmentExpression`)&&Y(i.left,n)===t.handleKey)},c=e=>{let r=M(e);if(!r||!w(r))return!1;let i=[];return D(r.body,a=>{if(a!==r.body&&w(a))return!1;let o=S(a),s=S(e);o!==null&&s!==null&&o<s&&tf(a,t,n)&&i.push(Hd(a,r,t,n)??a)}),kf(e,i,r,n)},l=null,u=null,d=null,f=null;if(D(e.body,o=>{if(l||!E(o,`IfStatement`))return;let s=S(o);if(s===null||s>=r||Hl(o.consequent,t.node,e,n))return;let c=i(o.test),p=c.map(a).filter(e=>e!==null);if(p.includes(t.handleKey??``)){u=p.find(e=>e!==t.handleKey)??null;for(let e of c){let t=P(e);if(!E(t,`BinaryExpression`)||t.operator!==`===`&&t.operator!==`==`)continue;let r=Y(t.left,n),i=Y(t.right,n);if(r&&i){d=r,f=i;break}}u&&d&&f&&(l=o)}}),!l||!u||!d||!f)return!1;let p=J(t.node,n.scopes);if(!p){let e=M(t.node);for(;e&&!qs(e);)e=M(e);p=e}if(!p||!w(p))return!1;let m=[],h=[],g=[],_=[];if(D(p.body,e=>{if(E(e,`AssignmentExpression`)){let r=Y(e.left,n);r===u&&m.push(e),r===d&&h.push(e),r===f&&g.push(e),r===t.handleKey&&E(P(e.right),`CallExpression`)&&Gn(P(e.right))===`setTimeout`&&_.push(e)}E(e,`UpdateExpression`)&&Y(e.argument,n)===f&&g.push(e)}),_.length===0)return!1;let ee=m.length>0?Bu(m[0].left,n)?.initializer:null,v=ee&&E(ee,`CallExpression`)?ee.arguments[0]:null;return!(!v||!j(v)||!o(v)||!_.every(e=>{let t=M(e);return!t||!w(t)?!1:kf(e,m.filter(e=>M(e)===t&&!o(e.right)),t,n)})||m.filter(e=>o(e.right)&&!s(M(e)??e)&&!c(e)).length>0||h.some(e=>Y(e.right,n)!==f)||g.some(e=>!c(e)))},Zd=(e,t,n)=>{let r=t.handleKey;if(!w(e)||r===null)return!1;let i=S(t.node);if(i===null)return!1;let a=!1,o=[];return D(e.body,s=>{if(a||s!==e.body&&w(s))return!1;if(E(s,`IfStatement`)&&!s.alternate&&zd(s.test,r,n)&&!Hl(s.consequent,t.node,e,n)&&kf(t.node,[s],e,n))return a=!0,!1;let c=S(s);if(c===null||c>=i||!tf(s,t,n))return;let l=Hd(s,e,t,n);o.push(l??s)}),a||Lfe(e,t,n)||Ife(e,t,n)||kf(t.node,o,e,n)},Qd=(e,t)=>e.kind===`subscribe`?e.handlerKey??Y(rd(e),t):e.kind!==`timer`||!E(e.node,`CallExpression`)?null:Y(e.node.arguments?.[0],t),$d=(e,t)=>{let n=Ys(e);return new Set([Y(e,t),Y(n,t)].filter(e=>e!==null))},ef=(e,t,n,r)=>Id(n,t,r)&&ad(Nd(t.node,e,r),n,r),tf=(e,t,n)=>{if(Cf(e,t,n))return!0;let r=E(e,`ChainExpression`)?e.expression:e;if(!E(r,`CallExpression`))return!1;let i=Od(r.callee,n),a=w(i)?i:Of(r.callee,n),o=a&&w(a)?Pd(a,r,n,new Map):null;return!!(a&&w(a)&&o&&!a.async&&!a.generator&&Fd(a,t,n,new Set,o,!0))},Rfe=(e,t,n)=>{let r=P(e);if(E(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&E(e.declarationNode,`VariableDeclarator`)&&M(e.declarationNode)===t?e:null}let i=gu(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;E(a,`MemberExpression`);)a=P(a.object);if(!E(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?P(o.initializer):null;return o&&o.kind===`const`&&E(o.declarationNode,`VariableDeclarator`)&&E(s,`ObjectExpression`)&&M(o.declarationNode)===t?o:null},zfe=e=>{let t=e;for(;E(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return b(t)},Bfe=(e,t,n,r)=>t.references.every(t=>{let i=zfe(t.identifier);if(Y(i,r)!==e.handleKey)return E(n.left,`Identifier`);if(!Tu(t.identifier))return!0;let a=i.parent;if(a===n)return!0;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.left!==i)return!1;let o=P(a.right),s=E(o,`Literal`)&&o.value===null||E(o,`Identifier`)&&o.name===`undefined`&&r.scopes.isGlobalReference(o),c=M(a);if(!s||!c||!w(c))return!1;let l=[];return D(c.body,t=>{if(t!==c.body&&w(t))return!1;tf(t,e,r)&&l.push(t)}),kf(a,l,c,r)}),Vfe=(e,t,n)=>{let r=Td(t.node,n);return!!(r&&M(r.declarationNode)===e)},Hfe=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`)return!1;let i=$d(t,r);if(!i.has(Qd(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&M(e.node)===t&&i.has(Qd(e,r)??``));return a.length===1&&a[0]===e},Ufe=(e,t,n,r,i)=>{let a=M(t.node),o=b(t.node),s=o.parent,c=t.handleKey!==null&&E(s,`AssignmentExpression`)&&s.operator===`=`&&s.right===o?Rfe(s.left,e,i):null,l=Vfe(e,t,i);if(t.kind!==`timer`||!a||!w(a)||a===e||a.async||a.generator||!c&&!l||!Id(r,t,i)||c&&E(s,`AssignmentExpression`)&&!Bfe(t,c,s,i))return!1;let u=Hfe(t,a,n,i);if(c&&!u&&!Zd(a,t,i))return!1;let d=t.node.parent;for(;d&&d!==a;){if(c&&(E(d,`ForStatement`)||E(d,`ForInStatement`)||E(d,`ForOfStatement`)||E(d,`WhileStatement`)||E(d,`DoWhileStatement`)))return!1;d=d.parent}let f=Ys(a),p=f?i.scopes.symbolFor(f):null;if(!p||p.references.length===0)return!1;let m=p.references.filter(e=>u&&z(e.identifier,t.node)&&Qd(t,i)===Y(e.identifier,i));if(u&&(m.length!==1||p.references.length!==2))return!1;let h=au(e,i.scopes);return p.references.every(o=>{let s=Y(o.identifier,i);if(m.some(e=>e===o))return!0;let c=n.find(e=>e!==t&&s!==null&&Qd(e,i)===s),l=c?rd(c):null;if(c&&!(l&&w(l)&&l.async)&&ef(e,c,r,i))return!0;let u=jd(o.identifier);if(!u)return!1;let d=M(u);if(!d||!w(d)||d===a||d.async||d.generator)return!1;if(d===e)return ad(Nd(u,e,i),r,i);let f=$d(d,i),p=n.find(e=>{if(e===t)return!1;let n=rd(e),r=n?Od(n,i):null;return f.has(Qd(e,i)??``)||r===d});return p?ef(e,p,r,i):h.has(d)&&ad(Nd(u,e,i),r,i)})},Wfe=(e,t,n,r,i,a)=>{let o=jd(e);if(o){let e=M(o);if(e&&e!==t&&au(r).has(e))return{generationKey:null};let n=e?Yd(e,o,a):null;return n?{generationKey:n}:null}let s=b(e),c=s.parent;if(!E(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!E(c.callee,`Identifier`)||c.callee.name!==`setTimeout`||!a.scopes.isGlobalReference(c.callee))return null;let l={kind:`timer`,node:c,resourceName:c.callee.name,handleKey:Ku(c,a),receiverKey:null,registrationVerbName:c.callee.name,eventKey:null,handlerKey:null},u=Yd(t,n,a);return l.handleKey!==null&&Xd(i,l,a)&&u?{generationKey:u}:null},Gfe=(e,t,n,r)=>{let i=M(t.node),a=b(t.node),o=a.parent;if(t.kind!==`subscribe`&&t.kind!==`timer`||t.handleKey===null||!i||!w(i)||i===e||i.async||i.generator||!E(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==a||!gu(P(o.left),r.scopes)||!au(e).has(i)||!Xd(n,t,r)||!Aa(e,n,r))return!1;let s=n.flatMap(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return[];let t=Od(e.argument,r);return t&&w(t)?[t]:[]}),c=Ys(i),l=c?r.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=l.references.map(a=>Wfe(a.identifier,i,t.node,e,n,r));if(u.some(e=>e===null))return!1;let d=new Set(u.flatMap(e=>e?.generationKey?[e.generationKey]:[]));if(d.size!==1)return!1;let f=d.values().next().value;return typeof f==`string`?[...au(e),...s].some(e=>Nfe(e,f,r)):!1},Kfe=(e,t,n,r)=>{if(Gfe(e,t,n,r))return!0;let i=M(t.node),a=i?nu(i):null;if(t.kind!==`timer`||t.handleKey===null||!i||!w(i)||i===e||i.async||i.generator||!E(t.node,`CallExpression`)||!E(t.node.callee,`Identifier`)||!r.scopes.isGlobalReference(t.node.callee)||!a||!iu(e,r.scopes).has(i)||!ad(a,n,r))return!1;let o=b(t.node),s=o.parent;if(!E(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!E(s.left,`Identifier`))return!1;let c=r.scopes.symbolFor(s.left);if(!c||c.kind!==`let`&&c.kind!==`var`||!E(c.declarationNode,`VariableDeclarator`)||M(c.declarationNode)!==e)return!1;let l=n.flatMap(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return[];let t=Od(e.argument,r);return t&&w(t)?[t]:[]});if(l.length!==n.length)return!1;let u=new Map;for(let e of l){if(!w(e))return!1;let n=[];if(D(e.body,i=>{if(i!==e.body&&w(i))return!1;if(E(i,`CallExpression`)&&E(i.callee,`Identifier`)&&r.scopes.isGlobalReference(i.callee)&&Cf(i,t,r)){let a=Hd(i,e,t,r);n.push({anchor:a??i,call:i,handleGuard:a})}}),!Aa(e,n.map(e=>e.anchor),r))return!1;u.set(e,n)}let d=c.references.filter(e=>Tu(e.identifier)),f=d.some(e=>b(e.identifier).parent===s),p=d.some(e=>{let t=b(e.identifier),n=t.parent;if(n===s)return!1;if(!E(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let i=P(n.right);if(!(E(i,`Literal`)&&i.value===null||E(i,`Identifier`)&&i.name===`undefined`&&r.scopes.isGlobalReference(i)))return!0;let a=M(n),o=a?u.get(a):void 0;return!(a&&o&&kf(n,o.map(e=>e.handleGuard&&z(n,e.handleGuard.consequent)?e.call:e.anchor),a,r))});if(!f||p)return!1;let m=t.node.parent;for(;m&&m!==i;){if(E(m,`ForStatement`)||E(m,`ForInStatement`)||E(m,`ForOfStatement`)||E(m,`WhileStatement`)||E(m,`DoWhileStatement`))return!1;m=m.parent}let h=!1;for(let e of t.node.arguments??[])D(e,e=>{if(h||w(e))return!1;if(E(e,`AwaitExpression`)||E(e,`YieldExpression`)||E(e,`CallExpression`)&&!Ia(e,r.scopes))return h=!0,!1});return h?!1:Efe(i,t.node,r).some(a=>Afe(e,a,l,r)&&!jfe(i,a,t.node,r)&&!Ofe(i,t.node,a,r)&&n.every(e=>Dfe(e,a,r)))},qfe=(e,t,n)=>{if(!w(e)||!E(e.body,`BlockStatement`))return!1;let r=new Set;if(D(e.body,e=>{if(!E(e,`CallExpression`))return;let i=P(e.callee);if(!E(i,`MemberExpression`)||Gn(e)!==`push`||!E(i.object,`Identifier`))return;let a=e.arguments[0];if(!a||!j(a))return;let o=P(a),s=w(o)?o:Od(a,n);if(!s||!w(s))return;let c=!1;if(D(s.body,e=>{if(c||e!==s.body&&w(e))return c?!1:void 0;if(!E(e,`CallExpression`))return;let r=P(e.callee);if(!E(r,`MemberExpression`))return;let i=E(t.node,`CallExpression`)?t.node:null;if(Gn(e)===`removeEventListener`&&i&&Iu(r.object,n)===t.receiverKey&&Iu(e.arguments[0],n)===t.eventKey&&Iu(e.arguments[1],n)===t.handlerKey&&zu(i.arguments[2],e.arguments[2],n,!0))return c=!0,!1}),!c)return;let l=b(t.node),u=l.parent,d=b(e),f=d.parent;if(!u||!E(u,`ExpressionStatement`)||u.expression!==l||!f||!E(f,`ExpressionStatement`)||f.expression!==d||!u.parent||!E(u.parent,`BlockStatement`)||u.parent!==f.parent)return;let p=u.parent.body.findIndex(e=>e.range[0]===u.range[0]);if(u.parent.body.findIndex(e=>e.range[0]===f.range[0])!==p+1)return;let m=n.scopes.symbolFor(i.object),h=m?.initializer?P(m.initializer):null;m?.kind!==`const`||!h||!E(h,`ArrayExpression`)||h.elements.length!==0||m.references.every(e=>{let t=b(e.identifier);if(E(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!E(n,`MemberExpression`)||n.object!==t)return!1;let r=b(n).parent;return!!(r&&E(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(A(n)??``))})&&r.add(m)}),r.size===0)return!1;let i=!1;return yu(e.body,e=>{if(i||!E(e,`ReturnStatement`)||!e.argument)return;let t=P(e.argument),a=w(t)?t:Od(e.argument,n);!a||!w(a)||D(a.body,e=>{if(i)return!1;if(!E(e,`CallExpression`))return;let t=P(e.callee);if(E(t,`Identifier`)){let a=od(t,n),o=a?P(a.right):null,s=E(o,`Identifier`)?n.scopes.symbolFor(o):null;if(a&&s&&r.has(s)&&Cd(e,a,n))return i=!0,!1}if(!E(t,`MemberExpression`)||Gn(e)!==`forEach`||!E(t.object,`Identifier`))return;let a=n.scopes.symbolFor(t.object);if(!a||!r.has(a))return;let o=e.arguments[0];if(!o||!j(o))return;let s=P(o);if(!w(s))return;let c=s.params[0];if(!c||!E(c,`Identifier`))return;let l=n.scopes.symbolFor(c);return D(s.body,e=>{if(E(e,`CallExpression`)&&E(P(e.callee),`Identifier`)&&n.scopes.symbolFor(P(e.callee))?.id===l?.id)return i=!0,!1}),i?!1:void 0})}),i},Jfe=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!E(t.node,`CallExpression`))return!1;let r=P(t.node.callee);if(!E(r,`MemberExpression`))return!1;let i=[r.object,t.node.arguments[0],t.node.arguments[1],t.node.arguments[2]],a=new Set(i.flatMap(e=>{let t=Pu(e,n);return t?[t.collectionKey]:[]}));if(a.size===0)return!1;let o=Iu(r.object,n),s=Iu(t.node.arguments[0],n),c=Iu(t.node.arguments[1],n),l=Ru(t.node.arguments[2],n,!0),u=!1;return D(e,e=>{if(u||!E(e,`CallExpression`))return u?!1:void 0;if(Gn(e)!==`removeEventListener`)return;let r=P(e.callee);if(E(r,`MemberExpression`)&&!(Iu(r.object,n)!==o||Iu(e.arguments[0],n)!==s||Iu(e.arguments[1],n)!==c||Ru(e.arguments[2],n,!0)!==l)&&yf(e,a,n)&&!xf(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return u=!0,!1}),u},nf=(e,t)=>{let n=P(e);return E(n,`MemberExpression`)?Bu(n,t):null},rf=(e,t)=>{let n=P(e);if(E(n,`LogicalExpression`)&&n.operator===`||`){let e=rf(n.left,t),r=rf(n.right,t);return[e,r].find(e=>e?.requiresBooleanFalse)??e??r}if(E(n,`UnaryExpression`)&&n.operator===`!`){let e=nf(n.argument,t);return e?{refSymbol:e,requiresBooleanFalse:!0}:null}if(E(n,`BinaryExpression`)&&(n.operator===`!=`||n.operator===`!==`)){let e=nf(n.left,t),r=nf(n.right,t),i=e??r;return!i||e&&r?null:{refSymbol:i,requiresBooleanFalse:!1}}return null},Yfe=(e,t)=>{let n=P(e);if(!E(n,`BinaryExpression`)||n.operator!==`==`&&n.operator!==`===`)return null;let r=nf(n.left,t),i=nf(n.right,t),a=r??i;return a&&!(r&&i)?{refSymbol:a,requiresBooleanFalse:!1}:null},af=(e,t,n,r=new Set)=>{if(!w(e)||r.has(e))return null;let i=new Set(r);i.add(e);let a=e.body;if(!E(a,`BlockStatement`)){let e=P(a);if(!E(e,`CallExpression`))return null;let r=Od(e.callee,n);return r?af(r,t,n,i):null}for(let e=0;e<a.body.length;e+=1){let r=a.body[e];if(!E(r,`VariableDeclaration`)){if(E(r,`ExpressionStatement`)){let o=P(r.expression);if(E(o,`AssignmentExpression`)){let e=Y(o.left,n),r=P(o.right),i=E(r,`Literal`)&&r.value===null||E(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r);if(e===t.handleKey&&i)continue}if(E(o,`CallExpression`)&&e===a.body.length-1){let e=Od(o.callee,n);return e?af(e,t,n,i):null}return null}return E(r,`IfStatement`)?hu(r.consequent)?rf(r.test,n):!r.alternate&&e===a.body.length-1?Yfe(r.test,n):null:null}}return null},of=(e,t,n,r=new Set)=>{if(!w(e)||r.has(e))return!1;let i=new Set(r);i.add(e);let a=!1;return D(e.body,r=>{if(a||r!==e.body&&w(r))return!1;if(E(r,`UpdateExpression`))return Bu(r.argument,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)?(a=!0,!1):void 0;if(E(r,`AssignmentExpression`))return Bu(r.left,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)&&(r.operator!==`=`||(t.requiresBooleanFalse?mn(P(r.right))===!1:mn(P(r.right))!==!0))?(a=!0,!1):void 0;if(!E(r,`CallExpression`))return;let o=Od(r.callee,n);if(o&&of(o,t,n,i)&&n.cfg.isUnconditionalFromEntry(r))return a=!0,!1}),a},Xfe=(e,t)=>{if(e.registrationVerbName!==`setTimeout`||!E(e.node,`CallExpression`))return!1;let n=e.node.arguments[0],r=n&&j(n)?P(n):null,i=r?w(r)?r:Od(r,t):null;if(!i)return!1;let a=af(i,e,t);if(!a)return!1;let o=J(e.node,t.scopes);if(!o){let t=M(e.node);for(;t&&!qs(t);)t=M(t);o=t}if(!o||!w(o))return!1;let s=!1;return D(o.body,e=>{if(s)return!1;if(!E(e,`CallExpression`)||!Mu(e,t))return;let n=Kn(e);!n||!w(n)||yu(n.body,e=>{if(s||!E(e,`ReturnStatement`)||!e.argument)return;let n=Od(e.argument,t);n&&of(n,a,t)&&(s=!0)})}),s},Zfe=(e,t,n)=>{if(t.registrationVerbName!==`setTimeout`||!w(e)||!E(t.node,`CallExpression`))return!1;let r=t.node.arguments[0],i=r&&j(r)?P(r):null,a=i?w(i)?i:Od(i,n):null;if(!a)return!1;let o=af(a,t,n);if(!o||o.requiresBooleanFalse)return!1;let s=[];return D(e.body,t=>{if(t!==e.body&&w(t))return!1;if(E(t,`UpdateExpression`)&&Bu(t.argument,n)?.id===o.refSymbol.id){s.push(t);return}E(t,`AssignmentExpression`)&&t.operator!==`=`&&Bu(t.left,n)?.id===o.refSymbol.id&&s.push(t)}),kf(t.node,s,e,n)},sf=(e,t)=>{if(Xfe(e,t))return!0;if(e.registrationVerbName!==`setTimeout`||!E(e.node,`CallExpression`))return!1;let n=e.node.arguments[0];if(!n||!j(n))return!1;let r=P(n),i=w(r)?r:Od(n,t);if(!i||!w(i)||!E(i.body,`BlockStatement`))return!1;let a=i.body.body[0];if(!a||!E(a,`IfStatement`)||!hu(a.consequent))return!1;let o=P(a.test);for(;E(o,`LogicalExpression`)&&o.operator===`||`;)o=P(o.left);if(!E(o,`UnaryExpression`)||o.operator!==`!`)return!1;let s=gu(P(o.argument),t.scopes,{resolveNamedAliases:!0});if(!s)return!1;let c=M(e.node),l=null;for(;c;){let e=c.parent;if(e&&E(e,`CallExpression`)&&Mu(e,t)){l=e;break}c=M(c)}let u=J(l||e.node,t.scopes);if(!u){let t=M(e.node);for(;t&&!qs(t);)t=M(t);u=t}if(!u||!w(u))return!1;let d=!1;return D(u.body,e=>{if(d)return!1;if(!E(e,`CallExpression`)||!Mu(e,t))return;let n=Kn(e);if(!n||!w(n))return;let r=P(n.body);w(r)&&D(r.body,e=>{if(E(e,`AssignmentExpression`)&&e.operator===`=`&&gu(P(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&mn(P(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1}),yu(n.body,e=>{if(d||!E(e,`ReturnStatement`)||!e.argument)return;let n=Od(e.argument,t);!n||!w(n)||D(n.body,e=>{if(E(e,`AssignmentExpression`)&&e.operator===`=`&&gu(P(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&mn(P(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1})})}),d},cf=(e,t,n,r=[t])=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||e.async)return!1;if(qfe(e,t,n)||Jfe(e,t,n)||sf(t,n)||Pf(e,t,n)||t.kind===`subscribe`&&M(t.node)===e&&Rf(t.node,!0,!0,n)&&Xu(t,n))return!0;if(!E(e.body,`BlockStatement`))return e.body===t.node&&Xu(t,n);let i=b(t.node),a=i.parent,o=E(a,`AssignmentExpression`)&&a.operator===`=`&&a.right===i&&E(a.left,`Identifier`)?n.scopes.symbolFor(a.left):null,s=t.kind===`timer`&&M(t.node)!==e&&!!(o&&(o.kind===`let`||o.kind===`var`)&&E(o.declarationNode,`VariableDeclarator`)&&M(o.declarationNode)===e),c=[];if(yu(e.body,e=>{if(!E(e,`ReturnStatement`))return;let r=S(e),i=S(t.node);if(r!==null&&i!==null&&r<i)return;let a=e.argument?P(e.argument):null;if(!a)return;if(Ld(a,t,n)){c.push(e);return}if(t.kind===`subscribe`&&(a===t.node||S(a)!==null&&S(a)===S(t.node))&&Xu(t,n)){c.push(e);return}if(t.kind===`subscribe`&&ife(a,t,n)){c.push(e);return}if(E(a,`Identifier`)&&(a.name===`undefined`&&n.scopes.isGlobalReference(a)||!n.scopes.symbolFor(a)?.initializer))return;let o=Od(a,n);if(o&&Ld(o,t,n)){c.push(e);return}!o||!w(o)||Fd(o,t,n,new Set,new Map,s)&&c.push(e)}),Kfe(e,t,c,n)||Ufe(e,t,r,c,n))return!0;let l=M(t.node),u=l?vfe(l,e,n):[];return t.kind===`subscribe`&&u.length>0&&u.every(e=>ad(e,c,n))?!0:ad(Nd(t.node,e,n,t),c,n)},Qfe=(e,t,n)=>{for(let r of t)if(!cf(e,r,n,t)&&!Tfe(e,r,n))return r;return null},lf=(e,t,n=new Set)=>{let r=P(e);if(E(r,`NewExpression`)&&E(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(E(r,`MemberExpression`))return lf(r.object,t,n);if(!E(r,`Identifier`))return!1;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return!1;if(n.add(i.id),i.initializer)return lf(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(E(a,`Property`)&&E(o,`ObjectPattern`)&&E(s,`VariableDeclarator`)&&s.init&&lf(s.init,t,n))},$fe=(e,t)=>{if(!E(e,`Property`))return!1;let n=E(e.key,`Identifier`)?e.key.name:E(e.key,`Literal`)?e.key.value:null;return n===`signal`?!lf(e.value,t):n===`once`?E(e.value,`Literal`)&&e.value.value===!0:!1},epe=(e,t)=>E(e,`CallExpression`)&&(e.arguments??[]).some(e=>E(e,`ObjectExpression`)&&(e.properties??[]).some(e=>$fe(e,t))),uf=new Map([[`addEventListener`,new Set([`removeEventListener`,`abort`])],[`addListener`,new Set([`removeListener`,`off`,`abort`])],[`on`,new Set([`off`,`removeListener`,`on`])],[`subscribe`,new Set([`unsubscribe`,`unsub`])],[`sub`,new Set([`unsub`,`unsubscribe`])],[`watch`,new Set([`unwatch`,`close`])],[`listen`,new Set([`unlisten`,`close`])],[`observe`,new Set([`disconnect`,`unobserve`])]]),df=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),ff=new Set([`close`]),tpe=new Set([`removeChannel`,`removeAllChannels`]),pf=e=>{let t=E(e,`ChainExpression`)?e.expression:e;if(!E(t,`CallExpression`))return null;let n=P(t.callee);if(E(n,`Identifier`))return ot.has(n.name)||Rt.has(n.name)||df.has(n.name)?n.name:null;if(E(n,`MemberExpression`)&&E(n.property,`Identifier`)){let e=n.property.name;return Rt.has(e)||cn.has(e)||tpe.has(e)||e===`on`?e:null}return null},npe=(e,t,n)=>{let r=M(e),i=M(t.node);if(!r||!i||!w(i)||!Tf(r,n)||!_u(e,n.scopes))return!1;let a=kd(t,n),o=Y(e,n);if(a===null||o===null)return!1;let s=i.body,c=[],l=[];D(s,e=>{if(e!==s&&w(e))return!1;if(E(e,`AssignmentExpression`)&&Y(e.left,n)===o&&Y(e.right,n)===a){l.push(e);return}if(!E(e,`CallExpression`))return;let t=E(e.callee,`ChainExpression`)?e.callee.expression:P(e.callee);E(t,`MemberExpression`)&&!t.computed&&E(t.property,`Identifier`)&&t.property.name===`abort`&&Y(t.object,n)===o&&c.push(e)});let u=l.filter(e=>kf(e,c,i,n));return kf(t.node,u,i,n)},mf=e=>E(e,`JSXAttribute`)&&E(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),hf=(e,t)=>{let n=Ys(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(e=>{let t=b(e.identifier),n=t.parent;return!!(E(n,`JSXExpressionContainer`)&&n.expression===t&&mf(n.parent))}):!1},gf=(e,t,n)=>{let r=Ys(e);if(!r)return!1;let i=t.scopes.symbolFor(r);if(!i)return!1;let a=e=>{let t=E(e,`Property`)?A(e):null;if(!E(e,`Property`)||!E(e.parent,`ObjectExpression`)||n&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let r=b(e.parent),i=r.parent;if(!E(i,`ReturnStatement`)||i.argument!==r)return!1;let a=M(i);return!!(a&&Ws(Ys(a)?.name??``))};if(i.references.some(e=>{let t=b(e.identifier),n=t.parent;return E(n,`Property`)&&n.value===t?a(n):!1}))return!0;let o=M(e);if(!o||!w(o)||!Ws(Ys(o)?.name??``))return!1;let s=!1;return D(o.body,e=>{if(s)return!1;if(E(e,`Property`)&&E(e.value,`Identifier`)&&e.value.name===r.name&&a(e))return s=!0,!1}),s},rpe=e=>{if(!w(e))return!1;let t=e.params[0];if(!t)return!1;let n=(E(t,`Identifier`)?t:E(t,`AssignmentPattern`)&&E(t.left,`Identifier`)?t.left:null)?.typeAnnotation,r=E(n,`TSTypeAnnotation`)?n.typeAnnotation:null;return!!(E(r,`TSNullKeyword`)||E(r,`TSUnionType`)&&r.types.some(e=>E(e,`TSNullKeyword`)))},ipe=(e,t)=>{if(!w(e))return!1;let n=Ys(e),r=M(e),i=r?Ys(r):null;if(!n||!r||!w(r)||!i||!Ws(i.name))return!1;let a=new Set;if(D(r.body,e=>{if(!E(e,`Property`)||!E(e.value,`Identifier`)||e.value.name!==n.name||!E(e.parent,`ObjectExpression`))return;let t=b(e.parent);if(E(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=A(e);t&&a.add(t)}}),a.size===0)return!1;let o=t.scopes.symbolFor(i);if(!o||o.references.length===0)return!1;let s=!1;for(let e of o.references){let n=b(e.identifier),r=n.parent,i=r?.parent;if(!E(r,`CallExpression`)||r.callee!==n||!E(i,`VariableDeclarator`)||i.init!==r||!E(i.id,`Identifier`))return!1;let o=t.scopes.symbolFor(i.id);if(!o)return!1;for(let e of o.references){let t=b(e.identifier),n=t.parent;if(!E(n,`MemberExpression`)||n.object!==t||!a.has(A(n)??``))continue;let r=b(n),i=r.parent;if(!E(i,`JSXExpressionContainer`)||i.expression!==r||!mf(i.parent))return!1;s=!0}}return s},_f=(e,t)=>hf(e,t)||gf(e,t,!0)||ipe(e,t)||rpe(e)&&gf(e,t,!1),vf=(e,t)=>{if(!w(e)||!e.returnType)return!1;let n=!1;if(D(e.returnType,e=>{if(E(e,`TSFunctionType`))return n=!0,!1}),!n)return!1;let r=Ys(e),i=r?t.scopes.symbolFor(r):null;return i?i.references.some(e=>{let t=b(e.identifier),n=t.parent;return!!(E(n,`JSXExpressionContainer`)&&n.expression===t&&E(n.parent,`JSXAttribute`))}):!1},ape=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(E(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=P(o.test);if(!E(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[P(e.left),P(e.right)],a=t.some(e=>zd(e,n,i)),s=t.some(e=>{if(!E(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=Y(e.left,i),a=Y(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},ope=(e,t,n,r)=>{if(!w(e))return[];let i=[];return D(e.body,a=>{if(a!==e.body&&w(a))return!1;if(!E(a,`IfStatement`)||a.alternate!==null||!hu(a.consequent))return;let o=P(a.test);if(!E(o,`BinaryExpression`)||o.operator!==`===`&&o.operator!==`==`)return;let s=Y(o.left,r),c=Y(o.right,r);(s===t&&c===n||c===t&&s===n)&&i.push(a)}),i},spe=(e,t,n)=>{if(!E(t.node,`CallExpression`))return!1;let r=M(t.node);if(!r||!w(r)||r!==M(e)||!_f(r,n))return!1;let i=P(t.node.callee),a=P(e.callee),o=E(a,`MemberExpression`)?Bu(a.object,n):null;if(!E(i,`MemberExpression`)||i.computed||!E(i.property,`Identifier`)||i.property.name!==`addEventListener`||!E(a,`MemberExpression`)||a.computed||!E(a.property,`Identifier`)||a.property.name!==`removeEventListener`||!o)return!1;let s=Y(P(i.object),n),c=Y(r.params?.[0],n),l=Y(a.object,n),u=Y(e.arguments?.[1],n);if(s===null||s!==c||l===null||t.eventKey===null||t.eventKey!==Y(e.arguments?.[0],n)||t.handlerKey===null)return!1;if(t.handlerKey!==u){if(!zu(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let i=S(e),a=[];return D(r.body,e=>{if(e!==r.body&&w(e))return!1;if(!E(e,`AssignmentExpression`)||e.operator!==`=`||!E(P(e.right),`ObjectExpression`)||gu(P(e.left),n.scopes)?.id!==o.id)return;let c=Y(e.left,n),d=P(e.right);if(!c||l!==`${c}.element`||u!==`${c}.handler`||i===null||(S(e)??-1)<=i||!E(d,`ObjectExpression`))return;let f=d.properties.find(e=>E(e,`Property`)&&A(e)===`element`),p=d.properties.find(e=>E(e,`Property`)&&A(e)===`handler`);E(f,`Property`)&&E(p,`Property`)&&Y(f.value,n)===s&&Y(p.value,n)===t.handlerKey&&a.push(e)}),Aa(r,[Vd(e,r,l,n)??e],n)&&ad(t.node,a,n)}if(!zu(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let d=S(e),f=[],p=r.body;D(p,e=>{if(e!==p&&w(e))return!1;E(e,`AssignmentExpression`)&&e.operator===`=`&&gu(P(e.left),n.scopes)?.id===o.id&&Y(e.right,n)===s&&d!==null&&(S(e)??-1)>d&&f.push(e)});let m=Vd(e,r,l,n)??ape(e,r,l,s,n)??e,h=f.filter(e=>kf(e,[m],r,n));return Aa(r,[m,...ope(r,l,s,n)],n)&&kf(t.node,h,r,n)},yf=(e,t,n)=>{let r=b(e),i=new Set,a=new Set;for(;;){let e=M(r);if(!e||!w(e)||i.has(e))return null;i.add(e);let o=e.body===r,s=r.parent,c=E(e.body,`BlockStatement`)&&E(s,`ExpressionStatement`)&&s.parent===e.body;if(!o&&!c||!Aa(e,[c?s:r],n))return null;let l=Ad(e);if(!l)return a.size===t.size&&Tf(e,n)?e:null;let u=P(l.callee);if(!E(u,`MemberExpression`))return null;let d=Y(u.object,n);if(!d||!t.has(d))return null;a.add(d),r=b(l)}},bf=e=>{let t=new Set,n=e;for(;;){let e=M(n);if(!e||!w(e)||t.has(e))break;t.add(e),n=e}return t},xf=(e,t,n,r)=>{let i=S(e),a=S(t);if(i===null||a===null)return!0;let o=bf(e),s=bf(t),c=(e,t)=>e!==null&&t<=(n.get(e)??-1/0),l=(e,t,i,a)=>{if(a&&E(e,`ReturnStatement`)&&c(Y(e.argument,r),t))return!0;if(E(e,`AssignmentExpression`)){let i=Y(e.left,r),a=P(e.left);return c(Y(e.right,r),t)&&!c(i,t)||!!(i&&[...n].some(([e,n])=>t<=n&&(i===e||i===`${e}.length`)))||E(a,`MemberExpression`)&&a.computed&&c(Y(a.object,r),t)}if(E(e,`UnaryExpression`)&&e.operator===`delete`){let n=P(e.argument);return E(n,`MemberExpression`)&&c(Y(n.object,r),t)}if(E(e,`UpdateExpression`)){let i=Y(e.argument,r);return!!(i&&[...n].some(([e,n])=>t<=n&&i===`${e}.length`))}if(!E(e,`CallExpression`)&&!E(e,`NewExpression`))return!1;let o=e.arguments.some(e=>j(e)?c(Y(e,r),t)&&pd(e,r)===null:!1),s=P(e.callee),u=E(e,`CallExpression`)&&E(s,`MemberExpression`)&&!s.computed&&E(s.object,`Identifier`)&&s.object.name===`Array`&&r.scopes.isGlobalReference(s.object)&&E(s.property,`Identifier`)&&s.property.name===`from`;return o&&!u||E(s,`MemberExpression`)&&!s.computed&&E(s.property,`Identifier`)&&(Xde.has(s.property.name)||Zde.has(s.property.name))&&c(Y(s.object,r),t)?!0:E(e,`CallExpression`)?[y(e.callee,r.scopes),...e.arguments.flatMap(t=>j(t)&&$l(e,t)?[y(t,r.scopes)]:[])].some(e=>{if(!e||!w(e)||e.generator||i.has(e))return!1;let n=new Set(i);n.add(e);let r=!1;return D(e.body,i=>{if(r||i!==e.body&&w(i))return!1;if(l(i,t,n,!1))return r=!0,!1}),r}):!1},u=e;for(;u.parent;)u=u.parent;let d=!1;return D(u,e=>{if(d)return!1;let t=S(e);if(t===null)return;let n=r.cfg.enclosingFunction(e);if(!n)return;let c=o.has(n)&&t>i,u=s.has(n)&&t<a;if(!(!c&&!u)&&l(e,t,new Set,!0))return d=!0,!1}),d},Sf=(e,t)=>Gn(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,cpe=(e,t,n)=>{let r=P(e.callee),i=P(t.callee);if(!E(r,`MemberExpression`)||!E(i,`MemberExpression`))return!0;let a=Gn(e),o=Gn(t),s=t.arguments?.[+!Sf(e,t)],c=M(t),l=Iu(e.arguments?.[0],n),u=Iu(t.arguments?.[0],n),d=o===`off`&&!s&&(t.arguments?.length===0||l!==null&&l===u);if(c&&w(c)&&Tf(c,n)&&Aa(c,[t],n)&&(o!==null&&df.has(o)||d))return!0;let f=[r.object,e.arguments?.[0],e.arguments?.[1],i.object,t.arguments?.[0],t.arguments?.[1]].flatMap(e=>{let t=Pu(e,n);return t?[t]:[]});if(a===`addEventListener`&&o===`removeEventListener`)for(let r of[e.arguments?.[2],t.arguments?.[2]]){let e=$de(r,n);e&&f.push(e)}if(f.length===0)return!0;let p=new Set(f.map(e=>e.collectionKey));return!yf(t,p,n)&&!dfe(t,p,n)?!1:!xf(e,t,new Map([...p].map(e=>[e,1/0])),n)},Cf=(e,t,n,r=new Map)=>{let i=E(e,`ChainExpression`)?e.expression:e;if(!E(i,`CallExpression`))return!1;let a=P(i.callee);if(t.kind===`timer`){let e=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;if(!E(a,`Identifier`)||!ot.has(a.name)||a.name!==e)return!1;let o=Y(i.arguments?.[0],n,new Set,r);if(qu(o,t,n))return!0;if(r.size>0&&o!==null)return!1;let s=i.arguments?.[0];if(s&&j(s)){let e=Gu(s,i,n);if(t.handleKey&&e?.has(t.handleKey))return!0}let c=Ed(t.node,n);return c!==null&&c===pd(i.arguments?.[0],n)}if(E(a,`Identifier`)&&t.kind===`subscribe`&&(Zu(a,t,n)&&(t.registrationVerbName!==`addEventListener`&&t.registrationVerbName!==`addListener`||Xu(t,n))||t.registrationVerbName===`addListener`&&_d(a,t,n)))return!0;let o=pf(i);if(!o||!E(a,`MemberExpression`)||a.computed||!E(a.property,`Identifier`))return!1;let s=Iu(a.object,n),c=Iu(i.arguments?.[0],n),l=t.registrationVerbName?uf.get(t.registrationVerbName):null,u=Dd(t,n),d=od(a.object,n),f=d?Y(d.right,n):pd(a.object,n);if(l&&wf(o,l)&&u!==null&&u===f&&(o!==`unobserve`||t.eventKey!==null&&c===t.eventKey)||spe(i,t,n)||Qu(s,o,t,n))return!0;if(t.kind===`socket`)return qu(s,t,n)&&(ff.has(o)||df.has(o));if(t.kind===`subscribe`&&E(t.node,`CallExpression`)&&(o===`removeChannel`||o===`removeAllChannels`)&&s===id(t.node,n)&&(o===`removeAllChannels`||qu(Y(i.arguments?.[0],n,new Set,r),t,n))||(qu(s,t,n)||t.kind===`subscribe`&&_d(a.object,t,n))&&(o===`unsubscribe`||o===`unsub`||o===`close`||o===`unwatch`||o===`unlisten`||cn.has(o))||o===`abort`&&s===kd(t,n)||o===`abort`&&npe(a.object,t,n))return!0;if(t.registrationVerbName===`addListener`&&o===`removeListener`&&E(t.node,`CallExpression`)&&t.node.arguments?.length===1){if(i.arguments?.length!==1)return!1;let e=Od(t.node.arguments[0],n);if(!td(t.node,`addListener`,n)&&!w(e))return!1}if(t.registrationVerbName===`addEventListener`&&o===`removeEventListener`&&E(t.node,`CallExpression`)&&(!E(P(t.node.callee),`MemberExpression`)||!zu(t.node.arguments?.[2],i.arguments?.[2],n,!0))||E(t.node,`CallExpression`)&&!cpe(t.node,i,n))return!1;let p=E(t.node,`CallExpression`)?P(t.node.callee):null,m=E(p,`MemberExpression`)?vd(p.object,n):null,h=vd(a.object,n);if(!(m!==null&&m===h)&&(t.receiverKey===null||s!==t.receiverKey))return!1;if(t.registrationVerbName===`subscribe`&&(o===`unsubscribe`||o===`unsub`)&&t.handleKey!==null&&Y(i.arguments?.[0],n)===t.handleKey)return!0;let g=t.registrationVerbName?uf.get(t.registrationVerbName):null;if(!g||!wf(o,g))return!1;let _=E(t.node,`CallExpression`)?t.node.arguments?.[0]:null,ee=i.arguments?.[0];if(sd(_,n)||sd(ee,n))return!1;if(t.eventKey!==null&&c!==null&&t.eventKey!==c){if(!E(t.node,`CallExpression`))return!1;let e=Fu(t.node.arguments?.[0],n),r=Fu(i.arguments?.[0],n);if((e!==null||r!==null)&&e!==r)return!1;let s=od(_,n),c=od(ee,n);if(s===null!=(c===null))return!1;let l=pd(t.node.arguments?.[0],n),u=pd(i.arguments?.[0],n);if(l===null||l!==u)return!1;if(s&&c){let e=bd(t.node.arguments?.[1],n),r=bd(i.arguments?.[1],n);if(t.registrationVerbName!==`addEventListener`||o!==`removeEventListener`)return!1;let s=P(t.node.callee);if(!E(s,`MemberExpression`)||!yd(s.object,n)||!yd(a.object,n)||e===null||e!==r||!zu(t.node.arguments?.[2],i.arguments?.[2],n)||!Cd(i,c,n))return!1}}if(o===`on`){let e=i.arguments?.[1];return E(e,`Literal`)&&e.value===null}if(o===`removeEventListener`||o===`removeListener`||o===`off`){let e=E(t.node,`CallExpression`)&&Sf(t.node,i),r=e?i.arguments?.[0]:i.arguments?.[1];if(!r)return o===`off`;let a=e?t.handlerKey??t.eventKey:t.handlerKey,s=E(t.node,`CallExpression`)?t.node.arguments?.[+!e]:null;return a!==null&&Iu(r,n)===a||s!==null&&Od(r,n)===Od(s,n)}return o===`unobserve`&&t.eventKey!==null?c===t.eventKey:!0},wf=(e,t)=>t.has(e)||df.has(e),Tf=(e,t)=>{let n=M(e);if(!n||!w(n))return!1;let r=n.parent;if(!E(r,`CallExpression`)||!Mu(r,t))return!1;if(!E(n.body,`BlockStatement`))return Od(n.body,t)===e;let i=!1;return yu(n.body,n=>{E(n,`ReturnStatement`)&&n.argument&&Od(n.argument,t)===e&&(i=!0)}),i},Ef=(e,t)=>{if(qf(e,t)||Tf(e,t))return!0;let n=Ys(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>M(t.identifier)!==e):!1},lpe=(e,t,n)=>{if(!w(e)||e.async||e.generator)return[];let r=M(t.node);if(!r||!w(r))return[];let i=new Map,a=e=>{let t=b(e),a=t.parent;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t)return;let o=Bu(a.left,n),s=Y(a.left,n),c=M(a),l=S(a);if(!o&&E(a.left,`MemberExpression`)){let e=A(a.left),t=P(a.left.object),r=E(t,`Identifier`)?n.scopes.symbolFor(t):null;if(!e||!r||!c||!w(c))return;for(let t of r.references){let r=b(t.identifier),a=r.parent;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==r||!Bu(a.left,n)||M(a)!==c)continue;let o=Y(a.left,n),s=S(a);!o||s===null||i.set(s,{assignmentNode:a,refCurrentKey:`${o}.${e}`,retainedFunction:c})}return}!o||!s||!c||c!==r||l===null||i.set(l,{assignmentNode:a,refCurrentKey:s,retainedFunction:c})};a(e);let o=Ys(e),s=o?n.scopes.symbolFor(o):null;for(let e of s?.references??[])a(e.identifier);return D(r.body,t=>{if(t!==r.body&&w(t))return!1;E(t,`AssignmentExpression`)&&Od(t.right,n)===e&&a(t.right)}),[...i.values()]},upe=(e,t,n)=>kf(t.node,[e.assignmentNode],e.retainedFunction,n)||ad(t.node,[e.assignmentNode],n),dpe=(e,t,n)=>{let r=!1;return D(e.retainedFunction.body,i=>{if(r||i!==e.retainedFunction.body&&w(i))return!1;if(!E(i,`AssignmentExpression`)||i===e.assignmentNode||Y(i.left,n)!==e.refCurrentKey||!Hl(t.node,i,e.retainedFunction,n))return;let a=Od(i.right,n);if(!a||!w(a)||!Fd(a,t,n))return r=!0,!1}),r},fpe=(e,t,r)=>{let i=M(e.retainedFunction);if(!i||!w(i))return!1;let a=t=>{if(!w(t))return!1;let n=!1;return D(t.body,i=>{if(n||i!==t.body&&w(i))return!1;if(E(i,`CallExpression`)&&Y(i.callee,r)===e.refCurrentKey){let a=b(i),o=a.parent,s=E(t.body,`BlockStatement`)&&E(o,`ExpressionStatement`)&&o.parent===t.body,c=t.body===a,l=!!Vd(i,t,e.refCurrentKey,r);if((s||c||l)&&!Af(t,i,e.refCurrentKey,r))return n=!0,!1}}),n},o=e=>{if(!w(e))return!1;if(!E(e.body,`BlockStatement`)){let t=Of(e.body,r);return!!(t&&a(t))}let t=[];return yu(e.body,e=>{if(!E(e,`ReturnStatement`)||!e.argument)return;let n=Of(e.argument,r);!n||!a(n)||t.push(e)}),Aa(e,t,r)},s=!1;return D(i.body,e=>{if(s)return!1;if(!E(e,`CallExpression`)||M(e)!==i||!n(e,`useEffect`,r.scopes))return;let t=Kn(e);if(t&&o(t))return s=!0,!1}),s},ppe=(e,t,r)=>{if(!hf(e.retainedFunction,r)&&!(()=>{if(!w(e.retainedFunction))return!1;let i=b(e.retainedFunction).parent;if(!E(i,`CallExpression`)||!n(i,`useCallback`,r.scopes))return!1;let a=e.retainedFunction.params?.[0],o=Y(a,r);return!o||t.receiverKey!==o?!1:_f(e.retainedFunction,r)})())return!1;let i=[];return D(e.retainedFunction.body,t=>{if(t!==e.retainedFunction.body&&w(t))return!1;E(t,`CallExpression`)&&Y(t.callee,r)===e.refCurrentKey&&i.push(t)}),kf(t.node,i,e.retainedFunction,r)},mpe=(e,t,n)=>{let r=M(e);return r?lpe(r,t,n).some(e=>upe(e,t,n)&&!dpe(e,t,n)&&(fpe(e,t,n)||ppe(e,t,n))):!1},hpe=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.receiverKey===null||n.eventKey===null||!E(n.node,`CallExpression`)||!w(t)||t.async||t.generator||!E(t.body,`BlockStatement`)||!Aa(t,[e],r))return!1;let i=E(e,`ChainExpression`)?e.expression:e;if(!E(i,`CallExpression`)||!zu(n.node.arguments?.[2],i.arguments?.[2],r))return!1;let a=M(t);if(!a||!w(a))return!1;let o=[];return D(a.body,e=>{if(e!==a.body&&w(e))return!1;if(!E(e,`CallExpression`))return;let i=nd(e,r);i.registrationVerbName===`addEventListener`&&i.receiverKey===n.receiverKey&&Od(e.arguments?.[1],r)===t&&o.push(e)}),o.some(e=>e===n.node)?!0:ad(n.node,o,r)||kf(n.node,o,a,r)},gpe=(e,t,n)=>{if(!H(e,n))return!1;let r=M(e);if(!r||r===M(t.node)||mpe(e,t,n))return!0;let i=M(t.node);return i&&w(i)&&Bf(i,n)&&Ipe(i,r,n)?Fpe(i,r,t,n):hpe(e,r,t,n)?!0:Ef(r,n)},Df=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=ku.get(t);r||(r=new WeakMap,ku.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];D(n,n=>{let r=E(n,`ChainExpression`)?n.expression:n;if(!E(r,`CallExpression`))return;let i=E(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(E(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else pf(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;if(e.kind===`timer`){let t=e.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;a=i.identifierCallsByName.get(t)??[]}else a=i.potentialNonTimerCalls;let o=!1,s=n=>{if(o)return!1;if(Cf(n,e,t)&&gpe(n,e,t))return o=!0,!1};for(let e of a)if(s(e)===!1)break;return o},Of=(e,t)=>{let r=Od(e,t);return w(r)?r:!E(r,`CallExpression`)||!n(r,`useCallback`,t.scopes)?null:Kn(r)},_pe=(e,t,n)=>{if(!w(e)||t.kind!==`subscribe`||t.registrationVerbName!==`addEventListener`||t.handlerKey===null||!t.receiverKey?.startsWith(`global:`)||!t.eventKey?.startsWith(`literal:`))return null;let r=S(t.node),i=n.cfg.cfgFor(e),a=i?.blockOf(t.node);if(r===null||!i||!a)return null;let o=[];return D(e.body,s=>{if(s!==e.body&&w(s))return!1;if(!E(s,`AssignmentExpression`)||s.operator!==`=`)return;let c=S(s),l=P(s.left);if(c===null||c>=r||i.blockOf(s)!==a||!E(l,`MemberExpression`)||!gu(l,n.scopes))return;let u=Y(l,n),d=Y(l.object,n),f=P(s.right);if(!u||!d||!E(f,`ObjectExpression`))return;let p=f.properties??[];if(!p.some(e=>!E(e,`Property`)))for(let e of p){if(!E(e,`Property`))continue;let r=A(e);if(r&&Y(e.value,n)===t.handlerKey){let e=`${u}.${r}`;o.push({handlerKey:e,refCurrentKey:u,refKey:d,assignmentNode:s})}}}),o.length===1?o[0]:null},kf=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=S(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=S(e);if(t===null||t>=o)return[];let a=i.blockOf(e);return a?[a]:[]}));if(s.size===0)return!1;if(s.has(a))return!0;let c=new Set([i.entry]),l=[i.entry];for(;l.length>0;){let e=l.pop();if(!e)break;if(!s.has(e)){if(e===a)return!1;for(let t of e.successors)c.has(t.to)||(c.add(t.to),l.push(t.to))}}return!0},vpe=(e,t,n,r)=>{if(!w(e))return!1;let i=e.body,a=[];return D(i,e=>{if(e!==i&&w(e))return!1;E(e,`CallExpression`)&&Of(e.callee,r)===t&&a.push(e)}),kf(n,a,e,r)},ype=(e,t,n,r,i,a)=>{if(!w(t))return!1;let o=E(e,`ChainExpression`)?e.expression:e;if(!E(o,`CallExpression`)||!E(o.callee,`MemberExpression`)||o.callee.computed||!E(o.callee.property,`Identifier`)||o.callee.property.name!==`removeEventListener`||!E(n.node,`CallExpression`)||n.node.arguments?.[2]!==void 0||o.arguments?.[2]!==void 0)return!1;let s=b(e).parent,c=s?.parent,l=c?.parent,u=c===t.body,d=!!(E(c,`BlockStatement`)&&E(l,`IfStatement`)&&l.consequent===c&&l.alternate===null&&Y(l.test,a)===i);return!E(s,`ExpressionStatement`)||!E(t.body,`BlockStatement`)||!u&&!d?!1:n.receiverKey!==null&&n.receiverKey===Y(o.callee.object,a)&&n.eventKey!==null&&n.eventKey===Y(o.arguments?.[0],a)&&Y(o.arguments?.[1],a)===r},bpe=(e,t,n)=>{let r=e.parent,i=E(r,`BlockStatement`)?r.parent:r,a=E(r,`BlockStatement`)?r:e;if(!E(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=P(i.test);return E(o,`UnaryExpression`)&&o.operator===`!`&&Y(o.argument,n)===t},Af=(e,t,n,r)=>{if(!w(e))return!0;let i=S(t);if(i===null)return!0;let a=!1;return D(e.body,t=>{if(a||t!==e.body&&w(t))return!1;if(!E(t,`ReturnStatement`))return;let o=S(t);if((o===null||o<i)&&!bpe(t,n,r))return a=!0,!1}),a},xpe=(e,t,n,r,i)=>{if(!w(e)||!w(t)||e.async||e.generator)return!1;let a=_pe(n,r,i);if(!a||!vpe(n,e,a.assignmentNode,i))return!1;let o=null;if(D(e.body,t=>{if(o||t!==e.body&&w(t))return!1;if(ype(t,e,r,a.handlerKey,a.refCurrentKey,i))return o=t,!1}),!o||Af(e,o,a.refCurrentKey,i))return!1;let s=!1;return D(t.body,t=>{if(s)return!1;if(E(t,`UnaryExpression`)&&t.operator===`delete`){let e=P(t.argument);return Y(e,i)===a.handlerKey||E(e,`MemberExpression`)&&Y(e.object,i)===a.refCurrentKey?(s=!0,!1):void 0}if(E(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=Y(e,i);return t!==null&&(t===a.refKey||t===a.refCurrentKey)})?(s=!0,!1):void 0;if(!E(t,`AssignmentExpression`))return;let o=P(t.left);if(E(o,`MemberExpression`)&&o.computed&&Y(o.object,i)===a.refCurrentKey)return s=!0,!1;let c=Y(t.left,i);if(c===a.handlerKey)return s=!0,!1;if(c!==a.refCurrentKey)return;let l=P(t.right);if(E(l,`Literal`)&&l.value===null&&M(t)===e)return;let u=(E(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>E(e,`Property`))&&u.some(e=>E(e,`Property`)&&`${a.refCurrentKey}.${A(e)??``}`===a.handlerKey&&Y(e.value,i)===r.handlerKey);if(M(t)!==n||!d)return s=!0,!1}),!s},Spe=(e,t,n,r,i)=>{let a=e=>{let a=Of(e,i);return!!(a&&xpe(a,t,n,r,i))};if(!w(e))return!1;if(!E(e.body,`BlockStatement`))return a(P(e.body));let o=[];return yu(e.body,e=>{E(e,`ReturnStatement`)&&e.argument&&a(P(e.argument))&&o.push(e)}),Aa(e,o,i)},Cpe=(e,t,n)=>{let r=Ys(e),i=r?n.scopes.symbolFor(r):null;if(!i||i.references.length===0)return!1;let a=new Set(t.flatMap(e=>{let t=Kn(e);return t&&w(t)?[t]:[]}));return i.references.every(e=>{let n=b(e.identifier),r=n.parent,i=E(r,`CallExpression`)?M(r):null;if(E(r,`CallExpression`)&&r.callee===n&&i&&w(i)&&a.has(i))return!0;let o=n.parent,s=o?.parent;return!!(E(o,`ArrayExpression`)&&E(s,`CallExpression`)&&s.arguments?.[1]===o&&t.includes(s))})},jf=(e,t,r,i)=>{if(!w(e)||!E(r.node,`CallExpression`))return!1;let a=r.node.arguments?.[0],o=a&&j(a)?P(a):null,s=o?w(o)?o:Od(o,i):null;if(!s||!w(s))return!1;let c=(e,a=new Set)=>{if(!w(e)||a.has(e))return!1;let o=new Set(a);o.add(e);let l=e.parent;if(E(l,`CallExpression`)&&l.arguments.some(t=>t===e)&&!n(l,`useCallback`,i.scopes)){if(z(l,s)||Gd(l,r.node,t))return!0;let e=M(l);return!!(e&&e!==t&&c(e,o))}let u=Ys(e),d=u?i.scopes.symbolFor(u):null;if(!d||d.references.length===0)return!1;let f=d.references.filter(e=>{let t=b(e.identifier).parent,n=t?.parent;return!(E(t,`ArrayExpression`)&&E(n,`CallExpression`)&&n.arguments?.[1]===t)});return f.length>0&&f.every(e=>{let n=b(e.identifier),i=n.parent;if(!E(i,`CallExpression`)||i.callee!==n)return!1;if(z(i,s)||Gd(i,r.node,t))return!0;let a=M(i);return!!(a&&a!==t&&c(a,o))})};if(c(e))return!0;let l=e.parent,u=[];if(E(l,`CallExpression`)&&l.arguments.some(t=>t===e)&&!n(l,`useCallback`,i.scopes))u=[l];else{let t=Ys(e),n=t?i.scopes.symbolFor(t):null;if(!n||n.references.length===0)return!1;for(let e of n.references){let t=b(e.identifier),n=t.parent;if(!E(n,`CallExpression`)||!n.arguments.some(e=>e===t))return!1;u.push(n)}}return u.length>0&&u.every(e=>{if(z(e,s)||Gd(e,r.node,t))return!0;let n=M(e);return!!(n&&n!==t&&c(n))})},wpe=(e,t,n,r)=>{if(!w(t))return!1;let i=t.parent;if(!E(i,`CallExpression`)||Kn(i)!==t||!Mu(i,r))return!1;let a=e.parent??null;for(;a&&a!==t;){if(E(a,`IfStatement`)&&z(e,a.consequent)){let n=Od(P(a.test),r)??P(a.test);if(E(n,`BinaryExpression`)&&(n.operator===`===`||n.operator===`==`)){let i=Bu(n.left,r),o=Bu(n.right,r),s=i??o,c=P(i?n.right:n.left),l=E(c,`Identifier`)&&c.name===`undefined`&&r.scopes.isGlobalReference(c),u=s?.initializer?P(s.initializer):null,d=E(u,`CallExpression`)&&u.arguments[0]&&j(u.arguments[0])?P(u.arguments[0]):null;if(s&&!(i&&o)&&l&&d&&E(d,`Identifier`)&&d.name===`undefined`&&r.scopes.isGlobalReference(d)){let n=[];D(t.body,e=>{E(e,`AssignmentExpression`)&&e.operator===`=`&&Bu(e.left,r)?.id===s.id&&n.push(e)});let i=n.filter(e=>{let t=P(e.right);return!(E(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t))}),o=!1,c=e.parent??null,l=new Set(i.flatMap(e=>{let t=P(e.right);return E(t,`Identifier`)?[t.name]:[]})),u=e=>{let t=P(e);if(E(t,`LogicalExpression`)&&t.operator===`&&`)return u(t.left)||u(t.right);if(!E(t,`CallExpression`)||Gn(t)!==`isArray`)return!1;let n=t.arguments[0];if(!n||!j(n))return!1;let r=P(n);return E(r,`Identifier`)&&l.has(r.name)};for(;c&&c!==a;){if(E(c,`IfStatement`)&&z(e,c.consequent)&&u(c.test)){o=!0;break}c=c.parent??null}if(o&&kf(e,i,t,r)&&n.length===i.length)return!0}}}a=a.parent??null}let o=e.parent??null,s=null,c=null,l=null;for(;o&&o!==t;){if(E(o,`IfStatement`)&&z(e,o.consequent)){let e=P(o.test),t=E(e,`UnaryExpression`)&&e.operator===`!`,n=Bu(t?e.argument:e,r),i=n?.initializer?P(n.initializer):null,a=E(i,`CallExpression`)&&i.arguments[0]?mn(P(i.arguments[0])):null,u=!t;if(n&&a===u){s=o,c=n,l=u;break}}o=o.parent??null}if(!s||!c||l===null)return!1;let u=M(c.declarationNode);if(!u||!w(u))return!1;let d=[],f=!1;return D(u.body,e=>{if(f)return!1;if(E(e,`UpdateExpression`)&&Bu(e.argument,r)?.id===c.id)return f=!0,!1;if(!(!E(e,`AssignmentExpression`)||Bu(e.left,r)?.id!==c.id)){if(e.operator!==`=`||mn(P(e.right))===null)return f=!0,!1;d.push(e)}}),f||!kf(e,d.filter(e=>mn(P(e.right))===!l),t,r)?!1:d.every(e=>{if(mn(P(e.right))===!l)return!0;let t=M(e);if(!t||!w(t))return!1;let i=t.parent;if(!E(i,`ReturnStatement`)||i.argument!==t)return!1;let a=M(i);return!!(a&&w(a)&&Rd(a,n,r))})},Mf=(e,t,n,r)=>{let i=M(e);if(!i||!w(i))return!1;let a=E(n.node,`CallExpression`)?n.node.arguments?.[0]:null,o=a&&j(a)?P(a):null,s=o?w(o)?o:y(o,r.scopes):null;if(s&&i===s)return!0;if(s){let e=Ys(i),a=(e?r.scopes.symbolFor(e):null)?.references.filter(e=>{let t=b(e.identifier).parent,n=t?.parent;return!(E(t,`ArrayExpression`)&&E(n,`CallExpression`)&&n.arguments?.[1]===t)});if(a&&a.length>0&&a.every(e=>{let r=b(e.identifier),i=r.parent;return!!(E(i,`CallExpression`)&&i.arguments.some(e=>e===r)&&(z(i,s)||Gd(i,n.node,t)))}))return!0;let o=M(i);if(o&&o!==t&&w(o)&&!E(o.body,`BlockStatement`)&&P(o.body)===i){let e=Ys(o),i=(e?r.scopes.symbolFor(e):null)?.references??[];if(i.length>0&&i.every(e=>{let i=b(e.identifier),a=i.parent,o=a?.parent,c=o?M(o):null;return!!(E(a,`CallExpression`)&&a.callee===i&&E(o,`CallExpression`)&&o.arguments.some(e=>e===a)&&(z(o,s)||Gd(o,n.node,t)||c&&jf(c,t,n,r)))}))return!0}}if(Nf(i,i,t,n,r)||jf(i,t,n,r)||wpe(e,i,n,r)||Zd(i,{...n,node:e},r))return!0;let c=i.parent;return!!(E(c,`CallExpression`)&&Kn(c)===i&&Mu(c,r)&&Rd(i,n,r))},Nf=(e,t,n,r,i)=>{let a=e.parent;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==e||!Vu(a.left,i))return!1;let o=Y(a.left,i),s=M(t);if(!o||!s||!w(s))return!1;let c=!1,l=!1;return D(s.body,e=>{if(l)return!1;if(!E(e,`MemberExpression`)||Y(e,i)!==o)return;let a=b(e),s=a.parent;if(E(s,`AssignmentExpression`)&&s.left===a)return Of(s.right,i)===t?void 0:(l=!0,!1);if(E(s,`IfStatement`)&&s.test===a){let e=!1;if(D(s.consequent,t=>{if(E(t,`CallExpression`)&&Y(P(t.callee),i)===o)return e=!0,!1}),e)return}if(E(s,`CallExpression`)&&s.callee===a&&Mf(s,n,r,i)){c=!0;return}return l=!0,!1}),c&&!l},Tpe=(e,t,n)=>{let r=Ys(e),i=r?n.scopes.symbolFor(r):null;return!i||i.references.length===0?Nf(e,e,e,t,n):i.references.every(r=>{let i=b(r.identifier),a=i.parent;if(E(a,`CallExpression`)&&a.callee===i){let r=M(a),i=!!(r&&jf(r,e,t,n)),o=Mf(a,e,t,n);return i||o}let o=i.parent,s=o?.parent;return E(o,`ArrayExpression`)&&E(s,`CallExpression`)&&s.arguments?.[1]===o?!0:Nf(i,e,e,t,n)})},Pf=(e,t,n)=>{let r=M(e);if(!r||!w(r))return!1;let i=Au.get(n);i||(i=new WeakMap,Au.set(n,i));let a=i.get(r);if(!a){let e=[];D(r.body,t=>{E(t,`CallExpression`)&&M(t)===r&&Mu(t,n)&&e.push(t)}),a=e,i.set(r,a)}if(t.kind===`timer`){let r=tfe(t.node,n),i=Zd(e,t,n),o=e.parent,s=!!(E(o,`CallExpression`)&&Kn(o)===e&&Mu(o,n)),c=i&&(!s||n.cfg.isUnconditionalFromEntry(t.node)),l=(r.size>0?[...r].map(e=>({...t,handleKey:e})):[t]).every(e=>a.some(t=>{let r=Kn(t);return!!(r&&Rd(r,e,n))}));return!!(r.size>0&&l&&(c||Zfe(e,t,n)||Tpe(e,t,n)||Cpe(e,a,n)))}for(let i of a){let a=b(i).parent;if(!E(a,`ExpressionStatement`)||a.parent!==r.body)continue;let o=Kn(i);if(o&&Spe(o,r,e,t,n))return!0}return!1},Epe=(e,t)=>{let r=Ys(e);if(!r)return!1;let i=new Set,a=e=>{let r=t.scopes.symbolFor(e);return!r||i.has(r.id)||r.references.length===0?!1:(i.add(r.id),r.references.every(e=>{let r=b(e.identifier);for(;E(r.parent,`ConditionalExpression`)&&(r.parent.consequent===r||r.parent.alternate===r);)r=b(r.parent);let i=r.parent;if(E(i,`CallExpression`)&&i.arguments?.[0]===r)return n(i,`useSyncExternalStore`,t.scopes);let o=i?.parent;return!!(E(i,`VariableDeclarator`)&&i.init===r&&E(i.id,`Identifier`)&&E(o,`VariableDeclaration`)&&o.kind===`const`&&a(i.id))}))};return a(r)},Dpe=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Ff=e=>{if(!E(e,`CallExpression`))return!1;let t=e.arguments[0],n=e.arguments[1],r=n?P(n):null;if(!t||!w(t)||!r||!E(r,`Literal`)||r.value!==0)return!1;let i=!1,a=!1;return D(t.body,e=>{if(a)return!1;if(!E(e,`CallExpression`))return;let t=Gn(e);if(!t||!Dpe.has(t))return a=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(i=!0)}),i&&!a},Ope=(e,t)=>{if(!e||!w(e))return!1;let n=Ys(e),r=n?t.scopes.symbolFor(n):null;return r?r.references.some(t=>{let n=b(t.identifier),r=n.parent;return!!(E(r,`CallExpression`)&&r.arguments[1]===n&&xu(r)===`addEventListener`&&M(r)===M(e))}):!1},kpe=(e,t)=>{if(!E(e,`CallExpression`)||!t.filename)return!1;let n=P(e.callee);if(!E(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n),i=r?Ue(r):null,a=r?Dn(r.declarationNode):null;if(!i||typeof i.source.value!=`string`||!a)return!1;let o=Nt(t.filename,i.source.value,a);if(!o||!w(o.functionNode))return!1;let s=new Set,c=e=>{if(!w(e)||s.has(e))return!1;s.add(e);let t=!0;return D(e.body,n=>{if(!t||n!==e.body&&w(n))return!1;if(E(n,`CallExpression`)){let e=P(n.callee);if(!E(e,`Identifier`))return t=!1,!1;let r=[];return D(o.programNode,t=>{if(w(t)&&Ys(t)?.name===e.name)return r.push(t),!1}),r.length!==1||!c(r[0])?(t=!1,!1):void 0}if(E(n,`NewExpression`)||E(n,`AssignmentExpression`)||E(n,`UpdateExpression`)||E(n,`AwaitExpression`)||E(n,`YieldExpression`)||E(n,`ThrowStatement`)||E(n,`UnaryExpression`)&&n.operator===`delete`)return t=!1,!1}),t};return c(o.functionNode)},Ape=(e,t,n)=>{if(!w(t)||!kpe(e,n))return!1;let r=e.parent;for(;r&&r!==t.body;){if(E(r,`AssignmentExpression`)&&z(e,r.right)&&Vu(P(r.left),n))return!0;r=r.parent}return!1},If=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?P(r):null;if(!n||!w(n)||!i||!E(i,`Literal`)||typeof i.value!=`number`||i.value<0||i.value>300)return!1;let a=!1,o=!1;return D(n.body,e=>{if(o||e!==n.body&&w(e))return!1;if(E(e,`CallExpression`)&&Ape(e,n,t))return;if(E(e,`CallExpression`)||E(e,`UpdateExpression`))return o=!0,!1;if(!E(e,`AssignmentExpression`))return;let r=P(e.left);if(E(r,`MemberExpression`)&&Vu(r,t)){a=!0;return}return o=!0,!1}),!o&&(a||Ope(M(e),t))},Lf=(e,t)=>{let n=b(e);for(;E(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=b(n.parent);let r=n.parent;return E(r,`ReturnStatement`)&&r.argument===n&&M(r)===t?r:null},Rf=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(E(a,`ReturnStatement`)&&a.argument===i||E(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(E(a,`ChainExpression`)||E(a,`TSAsExpression`)||E(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(E(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||E(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(E(a,`VariableDeclarator`)&&a.init===i&&E(a.id,`Identifier`)&&E(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=M(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:ad(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Lf(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},jpe=(e,t,n)=>{if(!w(e))return null;let r=e.body;if(!r)return null;let i=null,a=n?.allowReturnedResourceEscape!==!1&&!e.async&&!qf(e,t),o=a&&n?.requireCallableReturnedResource!==!0,s=Epe(e,t),c=r=>{if(s)return cf(e,r,t);if(r.kind!==`timer`)return!!(n?.allowReturnedResourceEscape===!0||_f(e,t)||vf(e,t))&&Rd(e,r,t)||Df(r,t)||Pf(e,r,t);if((n?.allowReturnedResourceEscape===!0||_f(e,t)||vf(e,t))&&Rd(e,r,t)||!n?.isEffectInvoked&&(Uu(r.node,t)!==null||Zd(e,r,t))&&Df(r,t)||sf(r,t)||Pf(e,r,t))return!0;let i=M(e),a=i?.parent;return!!(i&&E(a,`CallExpression`)&&Mu(a,t)&&cf(i,r,t))};return D(r,e=>{if(i!==null||w(e)||!H(e,t))return!1;if(Nu(e)&&!Rf(e,o,!1,t)){let n={kind:`socket`,node:e,resourceName:E(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:Ku(e,t),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(E(e,`CallExpression`)){if(E(e.callee,`Identifier`)&&(e.callee.name===`setInterval`||n?.includeOneShotTimers===!0&&e.callee.name===`setTimeout`&&t.scopes.isGlobalReference(e.callee))&&(n?.allowReturnedTimerEscape===!1||!Rf(e,!0,a,t))&&!Ff(e)&&!If(e,t)){let n={kind:`timer`,node:e,resourceName:e.callee.name,handleKey:Ku(e,t,!0),receiverKey:null,registrationVerbName:e.callee.name,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(Su(e)&&(!Rf(e,a,a,t)||n?.requireCallableReturnedResource===!0&&!Cu(e))){let n=nd(e,t),r={kind:`subscribe`,node:e,resourceName:n.registrationVerbName??`subscribe`,handleKey:Ku(e,t),...n};return!epe(e,t)&&!c(r)&&(i=r),!1}}}),i},zf=(e,t)=>{if(!w(e)||e.generator)return null;let n=b(e),r=n.parent;if(!E(r,`AssignmentExpression`)||r.operator!==`=`||r.right!==n)return null;let i=gu(P(r.left),t.scopes);if(!i)return null;let a=J(r,t.scopes);return!w(a)||M(r)!==a||M(i.bindingIdentifier)!==a||!H(r,t)?null:{assignmentNode:r,functionNode:e,refSymbol:i}},Bf=(e,t)=>zf(e,t)?.refSymbol??null,Vf=(e,t,n)=>{let r=b(e),i=r.parent;if(E(i,`VariableDeclarator`)&&i.init===r&&E(i.id,`Identifier`)&&E(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`){let r=n.scopes.symbolFor(i.id);return r?ad(e,r.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Lf(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(E(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=b(e);continue}if(E(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=b(e);continue}if(E(e,`LogicalExpression`)&&e.right===r){r=b(e);continue}break}let a=r.parent;return!!(E(a,`ReturnStatement`)&&a.argument===r&&M(a)===t||E(t,`ArrowFunctionExpression`)&&t.body===r)},Mpe=(e,t,n)=>E(e,`CallExpression`)&&gu(P(e.callee),n.scopes)?.id===t.id,Npe=(e,t)=>{let n=new Map;D(e.body,e=>{if(!w(e))return;let r=zf(e,t);if(r){let e=n.get(r.refSymbol.id)??[];e.push(r),n.set(r.refSymbol.id,e)}return!1});for(let[e,r]of n){let i=r.filter(e=>!ad(e.assignmentNode,r.filter(t=>t!==e).map(e=>e.assignmentNode),t));i.length===0?n.delete(e):n.set(e,i)}return n},Hf=(e,t,n)=>{if(!w(e))return[];let r=[],i=[];return D(e.body,a=>{if(a!==e.body&&w(a))return!1;E(a,`AssignmentExpression`)&&H(a,n)&&gu(P(a.left),n.scopes)?.id===t.id&&r.push(a),Mpe(a,t,n)&&H(a,n)&&i.push(a)}),i.filter(t=>!kf(t,r,e,n))},Uf=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},Ppe=(e,t)=>{let n=Du.get(t);n||(n=new WeakMap,Du.set(t,n));let r=n.get(e);if(r)return r;let i=Npe(e,t),a=new Map;D(e.body,n=>{if(n!==e.body&&w(n))return!1;if(!E(n,`CallExpression`)||M(n)!==e||!Mu(n,t))return;let r=Kn(n);if(w(r))for(let e of i.values()){let n=e[0]?.refSymbol;if(n)for(let e of Hf(r,n,t))Uf(a,n.id,!r.async&&Vf(e,r,t))}});let o=!0;for(;o;){o=!1;for(let e of i.values()){let n=e[0]?.refSymbol;if(!n)continue;let r=a.get(n.id);if(r)for(let n of e)for(let e of i.values()){let i=e[0]?.refSymbol;if(i)for(let e of Hf(n.functionNode,i,t)){let s=r.doesEffectOwnEveryResult&&!n.functionNode.async&&Vf(e,n.functionNode,t);Uf(a,i.id,s)&&(o=!0)}}}}let s={callbackDefinitionsByRefSymbolId:i,usageByRefSymbolId:a};return n.set(e,s),s},Wf=(e,t)=>{if(!w(e))return null;let n=zf(e,t),r=J(e,t.scopes);if(!n||!w(r))return null;let i=Ppe(r,t);return i.callbackDefinitionsByRefSymbolId.get(n.refSymbol.id)?.some(t=>t.functionNode===e)?i.usageByRefSymbolId.get(n.refSymbol.id)??null:null},Fpe=(t,n,r,i)=>{if(!w(t)||t.async||Wf(t,i)?.doesEffectOwnEveryResult!==!0||!E(t.body,`BlockStatement`))return!1;let a=t=>{let r=Of(e(t),i);if(!r)return!1;if(r===n)return!0;if(!w(r))return!1;let a=[];return D(r.body,e=>{if(e!==r.body&&w(e))return!1;E(e,`CallExpression`)&&Of(e.callee,i)===n&&a.push(e)}),Aa(r,a,i)},o=[];return yu(t.body,e=>{E(e,`ReturnStatement`)&&e.argument&&a(e.argument)&&o.push(e)}),ad(r.node,o,i)},Ipe=(e,t,n)=>{if(!w(e)||!E(e.body,`BlockStatement`))return!1;let r=!1;return yu(e.body,e=>{r||!E(e,`ReturnStatement`)||!e.argument||D(e.argument,e=>{if(Of(e,n)===t)return r=!0,!1})}),r},Gf=e=>E(e,`FunctionDeclaration`)?ou(e)!==null:!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||!E(e.parent,`VariableDeclarator`)?!1:ou(e)!==null,Kf=e=>{let t=b(e),n=t.parent;return E(n,`JSXExpressionContainer`)&&n.expression===t&&mu(n.parent)},qf=(e,t)=>{if(!w(e))return!1;let n=b(e),r=n.parent;if(E(r,`CallExpression`)&&r.arguments?.[0]===n&&Vn(r,`useCallback`,t.scopes)&&Kf(r))return!0;let i=e.parent;if(Kf(e))return!0;if(!E(i,`Property`)||i.value!==e||i.computed)return!1;let a=A(i);if(!a||!/^on[A-Z]/.test(a))return!1;let o=i.parent;if(!E(o,`ObjectExpression`))return!1;let s=o.parent;return(E(s,`CallExpression`)&&s.arguments.some(e=>e===o)||E(s,`JSXExpressionContainer`))&&J(i,t.scopes)!==null},Jf=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=P(e);return E(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:E(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||E(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:E(n,`ArrayExpression`)||E(n,`ArrowFunctionExpression`)||E(n,`ClassExpression`)||E(n,`FunctionExpression`)||E(n,`NewExpression`)||E(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},Yf=(e,t,n)=>{let r=P(e),i=Jf(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(E(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(E(r,`UnaryExpression`)&&r.operator===`!`){let e=Yf(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(E(r,`LogicalExpression`)){let e=Yf(r.left,t,n),i=Yf(r.right,t,n);return r.operator===`&&`?e===`falsy`||i===`falsy`?`falsy`:e===`truthy`&&i===`truthy`?`truthy`:`unknown`:r.operator===`||`?e===`truthy`||i===`truthy`?`truthy`:e===`falsy`&&i===`falsy`?`falsy`:`unknown`:`unknown`}if(E(r,`ConditionalExpression`)){let e=Yf(r.test,t,n);if(e===`truthy`)return Yf(r.consequent,t,n);if(e===`falsy`)return Yf(r.alternate,t,n);let i=Yf(r.consequent,t,n);return i===Yf(r.alternate,t,n)?i:`unknown`}return E(r,`CallExpression`)&&E(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&j(r.arguments[0])?Yf(r.arguments[0],t,n):`unknown`},Lpe=(e,t,n,r)=>{let i=new Map;if(!w(e)||!t.isDirect)return i;for(let[a,o]of e.params.entries()){let e=t.call.arguments[a],s=e&&j(e)?e:null,c=null,l=Jf(s,r);if(E(o,`Identifier`)?c=o:E(o,`AssignmentPattern`)&&E(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=Jf(o.right,r))):E(o,`RestElement`)&&E(o.argument,`Identifier`)&&(c=o.argument,l={isDefinitelyUndefined:!1,truthiness:`truthy`}),!c)continue;let u=r.scopes.symbolFor(c);if(!u)continue;let d=u.references.some(e=>e.flag!==`read`&&e.identifier.range[0]<n.range[0]);i.set(u.id,d?{isDefinitelyUndefined:!1,truthiness:`unknown`}:l)}return i},Rpe=(e,t,n,r)=>{if(!n.isDirect)return!1;let i=Lpe(e,n,t,r),a=t,o=t.parent??null;for(;o&&o!==e;){if(E(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!E(t,`IfStatement`)||t.alternate||!hu(t.consequent))&&Yf(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(E(o,`IfStatement`)||E(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):E(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((E(o,`WhileStatement`)||E(o,`DoWhileStatement`))&&o.body===a||E(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=Yf(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},zpe=(e,t)=>{if(!w(e))return[];let n=M(e);if(!n||!w(n))return[];let r=Ou.get(t);r||(r=new WeakMap,Ou.set(t,r));let i=r.get(n);if(i)return i.get(e)??[];let a=new Map,o=(e,t,n)=>{if(!e)return;let r=a.get(e)??[];r.push({call:t,isDirect:n}),a.set(e,r)};return D(n.body,e=>{if(!E(e,`CallExpression`)||M(e)!==n||!Mu(e,t))return;let r=Kn(e);!r||!w(r)||D(r.body,e=>{if(e!==r.body&&w(e))return!1;if(!(!E(e,`CallExpression`)||!H(e,t))){o(Of(e.callee,t),e,!0);for(let n of e.arguments)!j(n)||!$l(e,n)||o(Of(n,t),e,!1)}})}),r.set(n,a),a.get(e)??[]},Xf=C({id:`effect-needs-cleanup`,title:`Effect subscription or timer never cleaned up`,severity:`error`,tags:[`test-noise`],recommendation:"Return a cleanup function that stops the subscription or timer: `return () => target.removeEventListener(name, handler)` for listeners, `return () => clearInterval(id)` or `clearTimeout(id)` for timers, `return () => observer.disconnect()` for observers, `return () => socket.close()` for connections, or `return unsubscribe` if the subscribe call already gave you one.",create:e=>{let t=t=>{let n=Wf(t,e);if(!n&&!Ef(t,e))return;let r=zpe(t,e),i=r.length>0,a=jpe(t,e,n?{allowReturnedResourceEscape:n.doesEffectOwnEveryResult,allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0,requireCallableReturnedResource:!0}:i?{allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0}:void 0);if(!a||i&&a.resourceName===`setTimeout`&&(!H(a.node,e)||w(t)&&t.params.length>0&&!e.cfg.isUnconditionalFromEntry(a.node)&&r.every(n=>Rpe(t,a.node,n,e))))return;let o=ju[a.kind];e.report({node:a.node,message:`\`${a.resourceName}\` creates a ${o} in a function that outlives the render, with no cleanup path. Store the handle and release it, or move this into a useEffect that returns cleanup, so it does not leak after unmount.`})};return{CallExpression(n){if(Vn(n,`useCallback`,e.scopes)){let r=Kn(n);r&&!qf(r,e)&&t(r);return}if(!Mu(n,e))return;let r=Kn(n);if(!r)return;let i=lfe(r,cfe(r,e),e);if(i.length===0)return;let a=Qfe(r,i,e);if(!a)return;let o=ju[a.kind],s=Gn(n)??`effect`;e.report({node:n,message:`\`${a.resourceName}\` creates a ${o} in ${s} without guaranteed cleanup. Return a cleanup function that owns every allocation so it does not leak after unmount.`})},FunctionDeclaration(e){Gf(e)&&t(e)},ArrowFunctionExpression(n){(Gf(n)||qf(n,e)||Bf(n,e))&&t(n)},FunctionExpression(n){(Gf(n)||qf(n,e)||Bf(n,e))&&t(n)}}}}),Bpe=new Set([`window`,`globalThis`,`self`]),Vpe=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),Hpe=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=b(e.identifier),n=t.parent;return!E(n,`MemberExpression`)||n.object!==t?!1:E(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(E(n.parent,`CallExpression`)&&n.parent.callee===n&&Vpe.has(k(n)??``))}),Upe=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||Hpe(e))return null;r.add(e.id);let i=Ds(e);if(!i)return n;let a=P(i);if(!E(a,`Identifier`))return n;n=a}},Wpe=e=>{let t=M(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(E(n,`ConditionalExpression`)||E(n,`IfStatement`)||E(n,`LogicalExpression`)||E(n,`SwitchStatement`)||E(n,`ForStatement`)||E(n,`ForInStatement`)||E(n,`ForOfStatement`)||E(n,`WhileStatement`)||E(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},Zf=(e,t,n)=>{let r=M(e);if(!r||!w(r))return null;let i=b(r),a=i.parent;if(!E(a,`CallExpression`)||!a.arguments.some(e=>e===i))return null;let o=P(a.callee);if(!E(o,`MemberExpression`)||k(o)!==`forEach`||r.async||!Wpe(a))return null;let s=P(o.object);if(!E(s,`Identifier`))return null;let c=Upe(s,n);if(!c)return null;let l=La({node:c,scopes:n.scopes});if(!l)return null;let u=new Set,d=e=>{let t=P(e);if(E(t,`Identifier`)){let e=n.scopes.symbolFor(t);if(!e||e.references.some(e=>e.flag!==`read`))return null;let i=r.params.findIndex(t=>n.scopes.symbolFor(t)?.bindingIdentifier===e?.bindingIdentifier);if(i>=0)return`$${i}`;let a=Ds(e);return a&&!u.has(e.id)&&M(e.declarationNode)===r?(u.add(e.id),d(a)):La({node:t,scopes:n.scopes})}if(E(t,`Literal`))return JSON.stringify(t.value);if(E(t,`MemberExpression`)){let e=d(t.object),n=k(t);return e&&n?`${e}.${n}`:null}if(E(t,`CallExpression`)){let e=P(t.callee);if(!E(e,`MemberExpression`)||k(e)!==`getElementById`)return null;let r=P(e.object);if(!E(r,`Identifier`)||r.name!==`document`||!n.scopes.isGlobalReference(r))return null;let i=t.arguments.map(e=>E(e,`SpreadElement`)?null:d(e));return i.every(e=>e!==null)?`document.getElementById(${i.join(`,`)})`:null}return null},f=d(t);if(!f)return null;u.clear();let p=[],m=e,h=e.parent??null;for(;h&&h!==r;){if(E(h,`IfStatement`)){let e=h.consequent===m?`truthy`:`falsy`,t=d(h.test);if(!t)return null;p.push(`${e}:${t}`)}else if(E(h,`ConditionalExpression`)||E(h,`LogicalExpression`)||E(h,`SwitchStatement`)||E(h,`ForStatement`)||E(h,`ForInStatement`)||E(h,`ForOfStatement`)||E(h,`WhileStatement`)||E(h,`DoWhileStatement`))return null;m=h,h=h.parent??null}return h===r?`${l}:${p.join(`&`)}:${f}`:null},Qf=(e,t,n)=>{let r=T(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=b(e),a=i.parent;if(!(E(a,`VariableDeclarator`)&&a.id===e)&&!(E(a,`VariableDeclarator`)&&a.init===i)&&!(E(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(E(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(E(a,`MemberExpression`)&&a.object===i){let e=k(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!E(r,`CallExpression`)||r.callee!==a)return;if(e===`observe`){t.didObserve=!0,t.didReleaseAll=!1,t.observationCalls.push(r);let e=r.arguments?.[0],i=e?Zf(r,e,n):null,a=e?La({node:e,scopes:n.scopes}):null;i?t.observedIterationTargetKeys.add(i):a?t.observedTargetKeys.add(a):t.didObserveUnknownTarget=!0;return}if(e===`disconnect`&&t.didObserve){t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear();return}if(e===`unobserve`&&t.didObserve){let e=r.arguments?.[0],i=e?Zf(r,e,n):null,a=e?La({node:e,scopes:n.scopes}):null;i&&t.observedIterationTargetKeys.has(i)?t.observedIterationTargetKeys.delete(i):a&&t.observedTargetKeys.has(a)&&t.observedTargetKeys.delete(a)}return}if(E(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=P(a.callee);if(E(e,`MemberExpression`)&&k(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},Gpe=(e,t,n)=>{let r=!1;return Ra(e,e=>{E(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},Kpe=(e,t,n,r)=>{if(!n)return!1;let i=P(e);if(!E(i,`MemberExpression`)||k(i)!==`target`)return!1;let a=P(i.object);if(!E(a,`Identifier`))return!1;let o=r.symbolFor(a)?.bindingIdentifier;if(!o)return!1;let s=M(a);if(!s||s===t||!w(s))return!1;let c=b(s),l=c.parent;if(!E(l,`CallExpression`)||!l.arguments.some(e=>e===c))return!1;let u=P(l.callee);return E(u,`MemberExpression`)&&k(u)===`forEach`&&Gpe(u.object,n,r)&&(s.params??[]).some(e=>r.symbolFor(e)?.bindingIdentifier===o)},qpe=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?P(e.arguments[0]):null;if(!r||!E(r,`ArrowFunctionExpression`)&&!E(r,`FunctionExpression`))return n;let i=r,a=i.params?.[0],o=a?t.symbolFor(a)?.bindingIdentifier??null:null,s=i.params?.[1];if(!s||!E(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&Ra(i,e=>{if(!E(e,`CallExpression`))return;let r=P(e.callee);if(!E(r,`MemberExpression`))return;let a=P(r.object);if(!E(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=k(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(Kpe(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=La({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},$f=(e,t)=>{let n=P(e),r=E(n,`Identifier`)?T(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},ep=(e,t,n=new Set)=>{let r=P(e);if(n.has(r))return!1;if(n.add(r),E(r,`Identifier`)){let e=T(r,r.name)?.initializer;return e?ep(e,t,n):!1}let i=E(r,`CallExpression`)?P(r.callee):null,a=E(i,`MemberExpression`)?P(i.object):null;if(!E(r,`CallExpression`)||!E(i,`MemberExpression`)||k(i)!==`bind`||!E(a,`MemberExpression`)||k(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&$f(a.object,t)&&$f(o,t))},Jpe=(e,t)=>{let n=new Set;for(let r of e.bindingIdentifiers){let e=t.scopes.symbolFor(r);if(e)for(let t of e.references){let e=b(t.identifier),r=e.parent;if(!E(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=P(r.callee);E(i,`MemberExpression`)&&k(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!ka(e,[r],t)))return null;let i=P(r.callee);if(!E(i,`MemberExpression`))return null;let a=P(i.object);if(!E(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?P(o.initializer):null;return!o||o.kind!==`const`||!E(s,`ArrayExpression`)||(s.elements?.length??0)!==0||M(o.declarationNode)!==M(e.construction)||!o.references.every(e=>{let t=b(e.identifier),n=t.parent,r=n?.parent;return!!(E(n,`MemberExpression`)&&n.object===t&&E(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(k(n)??``))})?null:La({node:a,scopes:t.scopes})},Ype=(e,t)=>{if(!w(e)||e.async||e.generator)return!1;let n=e.params?.[0];if(!n||!E(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n)?.bindingIdentifier;if(!r)return!1;let i=[];return Ra(e,e=>{if(!E(e,`CallExpression`))return;let n=P(e.callee);if(!E(n,`MemberExpression`)||k(n)!==`disconnect`)return;let a=P(n.object);E(a,`Identifier`)&&t.scopes.symbolFor(a)?.bindingIdentifier===r&&i.push(e)}),Aa(e,i,t)},Xpe=(e,t,n,r)=>{let i=e=>{if(!w(e)||e.async||e.generator)return!1;let t=[];return D(e.body,i=>{if(!E(i,`CallExpression`)||M(i)!==e)return;let a=P(i.callee);if(!E(a,`MemberExpression`)||k(a)!==`forEach`||La({node:a.object,scopes:r.scopes})!==n)return;let o=i.arguments?.[0];o&&Ype(o,r)&&t.push(i)}),Aa(e,t,r)};if(!w(e))return!1;if(!E(e.body,`BlockStatement`)){let t=vc(e.body,e,r.scopes);return t.length>0&&t.every(i)}let a=he(e).filter(e=>{if(!e.argument)return!1;let t=vc(e.argument,e,r.scopes);return t.length>0&&t.every(i)});return t.every(e=>ka(e,a,r))},tp=C({id:`effect-observer-needs-disconnect`,title:`Observer created in an effect never disconnected`,severity:`error`,category:`Bugs`,recommendation:"Return a cleanup function that calls `observer.disconnect()` (or `observer.unobserve(node)`) so the observer stops firing callbacks against detached nodes after unmount instead of leaking on every mount.",create:e=>({CallExpression(t){if(!Sc(t,e.scopes))return;let n=Kn(t);if(!w(n))return;let r=new Map;if(Ra(n,t=>{if(!E(t,`NewExpression`))return;let n=P(t.callee);if(!(E(n,`Identifier`)?we.has(n.name)&&!T(n,n.name):E(n,`MemberExpression`)&&E(P(n.object),`Identifier`)&&Bpe.has(P(n.object).name)&&!T(n.object,P(n.object).name)&&we.has(k(n)??``)))return;let i=b(t),a=i.parent;if(!E(a,`VariableDeclarator`)||a.init!==i||!(E(a.id,`Identifier`)&&a.id.name))return;let o=qpe(t,e.scopes);r.set(a.id,{construction:t,bindingIdentifier:a.id,bindingIdentifiers:new Set([a.id]),didObserve:!1,didObserveUnknownTarget:!1,didReleaseAll:!1,didReleaseAllViaCallbackParameter:o.didReleaseAll||o.didReleaseObservedEntries,callbackReleasedTargetKeys:o.releasedTargetKeys,didEscape:!1,observationCalls:[],observedIterationTargetKeys:new Set,observedTargetKeys:new Set})}),r.size===0)return;for(let t of[...r.values()]){let n=bc(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)r.set(e,t)}let i=new Set(r.values());Ra(n,t=>{if(!E(t,`Identifier`))return;let n=T(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&Qf(t,i,e)});for(let t of yc(n))Ra(t,t=>{if(!E(t,`Identifier`))return;let n=T(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&Qf(t,i,e)});for(let t of i){for(let e of t.callbackReleasedTargetKeys)t.observedTargetKeys.delete(e);let n=t.construction.arguments?.[0];!n||!w(P(n))||Ra(P(n),n=>{if(!E(n,`Identifier`))return;let i=T(n,n.name)?.bindingIdentifier;i&&r.get(i)===t&&Qf(n,t,e)})}let a=E(n.body,`BlockStatement`)?he(n).flatMap(e=>e.argument?[e.argument]:[]):[n.body];for(let t of i){a.some(e=>ep(e,t.bindingIdentifiers))&&(t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear());let r=!t.didObserveUnknownTarget&&t.observedIterationTargetKeys.size===0&&t.observedTargetKeys.size===0;if(!t.didObserve||t.didReleaseAll||t.didReleaseAllViaCallbackParameter||r)continue;let i=Jpe(t,e);i&&Xpe(n,t.observationCalls,i,e)||e.report({node:t.construction,message:"This observer is created and started in the effect but never disconnected, so it keeps firing against detached nodes and leaks one observer per mount; return a cleanup that calls `disconnect()` or `unobserve()`."})}}})}),np=`cancelAnimationFrame`,rp=`collection-values:`,Zpe=new Set([`min`,`max`]),ip=e=>E(e,`CallExpression`)&&op(e,`requestAnimationFrame`),ap=new Set([`window`,`globalThis`,`self`]),op=(e,t)=>{let n=P(e.callee);if(E(n,`Identifier`))return n.name===t&&!T(n,n.name);if(!E(n,`MemberExpression`)||k(n)!==t)return!1;let r=P(n.object);return E(r,`Identifier`)&&ap.has(r.name)&&!T(r,r.name)},sp=e=>{if(!e)return null;let t=P(e);if(E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`))return t;if(E(t,`Identifier`)){let e=T(t,t.name)?.initializer;if(w(e))return e}return null},cp=(e,t,n)=>{let r=new Set,i=P(e);if(E(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of bc(e,n))r.add(t)}if((E(t,`FunctionExpression`)||E(t,`FunctionDeclaration`))&&t.id&&E(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of bc(e,n))r.add(t)}return r},lp=(e,t,n)=>{let r=P(e);return E(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},Qpe=(e,t,n)=>{let r=!1;return Ra(e,e=>{if(r)return!1;if(!ip(e))return;let i=e.arguments?.[0];if(i&&lp(i,t,n))return r=!0,!1}),r},$pe=(e,t)=>{let n=[];return Ra(e,e=>{if(!ip(e))return;let r=e.arguments?.[0];if(!r)return;let i=sp(r);i&&Qpe(i,cp(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},up=e=>{let t=P(e);if(E(t,`Identifier`)){let e=T(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=up(e.initializer);if(t&&t!==n)return t}return n}if(!E(t,`MemberExpression`))return null;let n=up(t.object),r=k(t);return n&&r?`${n}.${r}`:null},eme=e=>{let t=b(e),n=t.parent;if(E(n,`AssignmentExpression`)&&n.right===t)return up(n.left);if(E(n,`VariableDeclarator`)&&n.init===t&&E(n.id,`Identifier`))return up(n.id);if(E(n,`CallExpression`)&&E(n.callee,`MemberExpression`)){let e=k(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?up(n.callee.object):null;if(i)return`${rp}${i}`}return null},dp=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=cp(n,e.scheduledFunction,t),i=[e.rafCall];return Ra(e.scheduledFunction,e=>{if(!ip(e))return;let n=e.arguments?.[0];n&&lp(n,r,t)&&i.push(e)}),i},tme=e=>{let t=b(e),n=t.parent;return E(n,`AssignmentExpression`)&&n.right===t?n.left:E(n,`VariableDeclarator`)&&n.init===t&&E(n.id,`Identifier`)?n.id:null},fp=(e,t,n)=>{let r=[...n].filter(t=>{let n=t;for(;n&&n!==e;){if(w(n))return!1;n=n.parent}return n===e}).map(e=>e.range[0]),i=!1;return D(e,a=>{if(i||a!==e&&w(a))return!1;let o=E(a,`AssignmentExpression`)?a.left:E(a,`UpdateExpression`)?a.argument:null;if(o&&!n.has(o)&&up(o)===t&&r.some(e=>e<o.range[0]))return i=!0,!1}),i},nme=(e,t,n)=>{let r=dp(e,n),i=r.map(eme),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(rp))return a;let o=new Set(r.flatMap(e=>{let t=tme(e);return t?[t]:[]}));return fp(t,a,o)||fp(e.scheduledFunction,a,o)?null:a},rme=(e,t,n)=>{let r=!1;return Ra(e,e=>{if(r||!E(e,`CallExpression`))return;let i=P(e.callee);if(!E(i,`MemberExpression`)||k(i)!==`forEach`||up(i.object)!==t)return;let a=e.arguments?.[0],o=a&&!E(a,`SpreadElement`)?sp(a):null;if(!w(o))return;let s=o.params?.[0];E(s,`Identifier`)&&D(o,e=>{if(r||e!==o&&w(e))return!1;if(!E(e,`CallExpression`))return;let t=e.arguments?.[0];if(pp(e)&&E(t,`Identifier`)&&n.symbolFor(t)?.bindingIdentifier===n.symbolFor(s)?.bindingIdentifier)return r=!0,!1})}),r},ime=(e,t,n)=>{if(t.startsWith(rp))return rme(e,t.slice(18),n);let r=!1;return Ra(e,e=>{if(r||!E(e,`CallExpression`)||!pp(e))return;let n=e.arguments?.[0];n&&up(n)===t&&(r=!0)}),r},pp=e=>{if(op(e,np))return!0;let t=P(e.callee);if(!E(t,`Identifier`))return!1;let n=T(t,t.name)?.bindingIdentifier?.parent;if(!E(n,`Property`)||(E(n.key,`Identifier`)?n.key.name:E(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==np)return!1;let r=n.parent,i=r?.parent;if(!E(r,`ObjectPattern`)||!E(i,`VariableDeclarator`))return!1;let a=i.init?P(i.init):null;return E(a,`Identifier`)&&ap.has(a.name)&&!T(a,a.name)},ame=(e,t)=>{Ra(e,e=>{let n=E(e,`AssignmentExpression`)?e.left:E(e,`UpdateExpression`)?e.argument:null;if(E(n,`Identifier`)){let e=up(n);e&&t.add(e)}else if(E(n,`MemberExpression`)){let e=up(n);e&&t.add(e)}})},ome=(e,t,n)=>{if(E(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!E(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return vp(e.right);if(e.operator!==`=`)return!1;let r=P(e.right),i=E(r,`BinaryExpression`)?P(r.left):null;return E(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&E(i,`Identifier`)&&up(i)===t&&vp(r.right)},mp=(e,t)=>{let n=new Set,r=new Set;Ra(e,e=>{let i=E(e,`AssignmentExpression`)?e.left:E(e,`UpdateExpression`)?e.argument:null;if(!E(i,`Identifier`))return;let a=up(i);a&&(ome(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},sme=(e,t)=>{let n=E(e,`AssignmentExpression`)?e.left:E(e,`UpdateExpression`)?e.argument:null;if(!E(n,`Identifier`)&&!E(n,`MemberExpression`))return;let r=up(n);if(!r)return;if(E(e,`UpdateExpression`)||E(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!E(e,`AssignmentExpression`))return;let i=P(e.right);if(!E(i,`Literal`)||typeof i.value!=`boolean`){t.booleanValues.delete(r),t.changedFromSnapshotKeys.delete(r);return}t.changedFromSnapshotKeys.delete(r),t.booleanValues.set(r,i.value)},cme=e=>E(e,`IfStatement`)||E(e,`ConditionalExpression`)||E(e,`LogicalExpression`)||E(e,`SwitchStatement`)||E(e,`TryStatement`)||E(e,`ForStatement`)||E(e,`ForInStatement`)||E(e,`ForOfStatement`)||E(e,`WhileStatement`)||E(e,`DoWhileStatement`),lme=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(cme(n))return!1;n=n.parent}return n===t||e===t},ume=(e,t)=>{let n={booleanValues:new Map,changedFromSnapshotKeys:new Set},r=new Set,i=e=>{r.has(e)||(r.add(e),Ra(e,r=>{if(!lme(r,e)||(sme(r,n),!E(r,`CallExpression`)))return;let a=r.callee;if(E(a,`Identifier`)){let e=up(a);D(t,t=>{E(t,`VariableDeclarator`)&&E(t.id,`Identifier`)&&up(t.id)===e&&t.init&&w(t.init)&&i(t.init)});return}if(E(a,`MemberExpression`)){let e=up(a);if(!e)return;if(k(a)===`abort`){let e=up(a.object);e&&n.booleanValues.set(`${e}.signal.aborted`,!0)}D(t,t=>{E(t,`AssignmentExpression`)&&E(t.left,`MemberExpression`)&&up(t.left)===e&&t.right&&w(t.right)&&i(t.right)})}}))};return i(e),n},hp=(e,t)=>{let n=P(e);if(E(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(E(n,`Identifier`)||E(n,`MemberExpression`)){let e=up(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(E(n,`UnaryExpression`)&&n.operator===`!`){let e=hp(n.argument,t);return e===null?null:!e}if(E(n,`LogicalExpression`)){let e=hp(n.left,t);if(n.operator===`??`)return e;let r=hp(n.right,t);return n.operator===`&&`?e===!1||r===!1?!1:e===!0?r:null:e===!0||r===!0?!0:e===!1?r:null}if(!E(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=hp(n.left,t),o=hp(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=up(n.left),c=up(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},gp=e=>E(e,`ReturnStatement`)||E(e,`ThrowStatement`)?!0:E(e,`BlockStatement`)&&!!e.body?.some(e=>gp(e))||E(e,`IfStatement`)&&!!e.alternate&&gp(e.consequent)&&gp(e.alternate),_p=(e,t,n)=>{let r=hp(e,n);return r!==null&&r!==t},dme=(e,t,n)=>{let r=hp(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},fme=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((E(e,`IfStatement`)||E(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&_p(e.test,e.consequent===r,n)||E(e,`LogicalExpression`)&&e.right===r&&dme(e.left,e.operator,n))return!0;if(E(e,`BlockStatement`)){let t=e.body.findIndex(e=>e===r);if(t>=0)for(let r of e.body.slice(0,t)){let e=r;if(E(e,`IfStatement`)&&(gp(e.consequent)&&_p(e.test,!1,n)||e.alternate&&gp(e.alternate)&&_p(e.test,!0,n)))return!0}}r=e}return!1},pme=(e,t,n)=>{let r=dp(e,n).slice(1);return r.length>0&&r.every(n=>fme(n,e.scheduledFunction,t))},vp=e=>E(e,`Literal`)&&typeof e.value==`number`&&e.value>0,mme=(e,t)=>{let n=P(e);return E(n,`Literal`)&&typeof n.value==`number`||E(n,`Identifier`)&&!t.has(up(n)??``)},yp=(e,t,n)=>{let r=P(e);if(E(r,`Identifier`)){let e=up(r);return e?t.has(e):!1}if(E(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return yp(r.left,t,n)&&mme(r.right,n);if(r.operator===`*`||r.operator===`/`)return yp(r.left,t,n)&&vp(r.right)}if(!E(r,`CallExpression`))return!1;let i=P(r.callee),a=E(i,`MemberExpression`)?P(i.object):null;if(!E(i,`MemberExpression`)||!E(a,`Identifier`)||a.name!==`Math`||T(a,a.name)||!Zpe.has(k(i)??``))return!1;let o=!1;for(let e of r.arguments){if(yp(e,t,n)){o=!0;continue}if(!E(e,`Literal`)||typeof e.value!=`number`)return!1}return o},bp=(e,t,n,r,i)=>{let a=P(e);if(E(a,`UnaryExpression`)&&a.operator===`!`)return bp(a.argument,t,n,r,!i);if(E(a,`LogicalExpression`)&&a.operator!==`??`)return bp(a.left,t,n,r,i)&&bp(a.right,t,n,r,i);if(!E(a,`BinaryExpression`))return!1;let o=yp(a.left,t,r)&&E(a.right,`Literal`)&&typeof a.right.value==`number`,s=E(a.left,`Literal`)&&typeof a.left.value==`number`&&yp(a.right,t,r),c=(a.operator===`<`||a.operator===`<=`)&&o||(a.operator===`>`||a.operator===`>=`)&&s,l=(a.operator===`>`||a.operator===`>=`)&&o||(a.operator===`<`||a.operator===`<=`)&&s;if(i?c:l)return!0;let u=yp(a.left,n,r)&&E(a.right,`Literal`)&&typeof a.right.value==`number`,d=E(a.left,`Literal`)&&typeof a.left.value==`number`&&yp(a.right,n,r),f=(a.operator===`>`||a.operator===`>=`)&&u||(a.operator===`<`||a.operator===`<=`)&&d,p=(a.operator===`<`||a.operator===`<=`)&&u||(a.operator===`>`||a.operator===`>=`)&&d;return i?f:p},hme=(e,t)=>{let n=e.scheduledFunction,r=new Set;ame(n,r);let i=mp(n,!0),a=mp(n,!1);if(w(n)){for(let e of n.params??[])if(E(e,`Identifier`)){let t=up(e);t&&!r.has(t)&&i.add(t)}}let o=!0;for(;o;)o=!1,Ra(n,e=>{if(!E(e,`VariableDeclarator`)||!e.init)return;let t=E(e.id,`Identifier`)?up(e.id):null;!t||i.has(t)||a.has(t)||r.has(t)||(yp(e.init,i,r)?(i.add(t),o=!0):yp(e.init,a,r)&&(a.add(t),o=!0))});if(i.size===0&&a.size===0)return!1;let s=dp(e,t).slice(1);if(s.length===0)return!1;for(let e of s){let t=!1,o=e,s=e.parent;for(;s&&s!==n;){if((E(s,`IfStatement`)||E(s,`ConditionalExpression`))&&(s.consequent===o||s.alternate===o)&&bp(s.test,i,a,r,s.consequent===o)){t=!0;break}o=s,s=s.parent??null}if(!t)return!1}return!0},gme=C({id:`effect-raf-loop-needs-cancel`,title:`requestAnimationFrame loop never cancelled`,severity:`warn`,category:`Bugs`,recommendation:"Store the frame id and return a cleanup that calls `cancelAnimationFrame(id)` so self-scheduling work cannot continue after unmount.",create:e=>({CallExpression(t){if(!Sc(t,e.scopes))return;let n=Kn(t);if(!n)return;let r=yc(n);for(let t of $pe(n,e.scopes)){if(hme(t,e.scopes))continue;let i=nme(t,n,e.scopes);i&&r.some(t=>ime(t,i,e.scopes))||r.some(r=>pme(t,ume(r,n),e.scopes))||e.report({node:t.rafCall,message:`This requestAnimationFrame loop can schedule another frame but is never cancelled, so pending work may continue after unmount; store every frame id in one handle and cancel that handle from the returned effect cleanup.`})}}})}),_me=new Set([`removeEventListener`,`removeListener`,`off`]),vme=/(?:duration|delay|timeout|ms)$/i,yme=e=>{let t=P(e);if(E(t,`Literal`)&&typeof t.value==`number`)return!0;if(!E(t,`Identifier`))return!1;if(vme.test(t.name))return!0;let n=T(t,t.name);if(!n?.initializer)return!1;let r=P(n.initializer);return E(r,`Literal`)&&typeof r.value==`number`},bme=e=>{let t=P(e);return Mi(t)?!0:E(t,`CallExpression`)&&E(t.callee,`MemberExpression`)&&k(t.callee)===`bind`},xme=new Set([`addEventListener`,`addListener`,`on`,`once`]),Sme=`handler-only`,Cme=(e,t)=>{let n=new Set;return D(e,e=>{if(!E(e,`CallExpression`))return;let r=P(e.callee);if(!E(r,`MemberExpression`))return;let i=k(r);if(!i||!xme.has(i))return;let a=La({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?Sme:Ll(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},wme=C({id:`effect-remove-listener-inline-handler`,title:`removeEventListener called with a fresh inline handler`,severity:`error`,category:`Bugs`,tags:[`test-noise`],recommendation:"Removal APIs match the listener by reference equality, so a fresh inline arrow, function expression, or `.bind(...)` result can never equal the registered handler; hoist the handler into a named const and pass that same reference to both the add and remove calls.",create:e=>{let t=new WeakMap;return{CallExpression(n){let r=P(n.callee);if(!E(r,`MemberExpression`))return;let i=k(r);if(!i||!_me.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&yme(a[0])||!bme(s))return;let c=La({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?Sme:Ll(a[0],e.scopes),u=x(n);if(!c||!l||!u)return;let d=t.get(u);d||(d=Cme(u,e.scopes),t.set(u,d)),d.has(JSON.stringify([c,l]))&&e.report({node:s,message:`\`${i}\` gets a brand-new function reference here that never equals the registered listener, so this removal silently no-ops; pass the same named handler to both the add and remove calls.`})}}}}),Tme=new Set([`columnheader`,`rowheader`]),Eme=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=R(e.attributes,t,!1);if(!n)continue;let r=L(n);if(r===null||r.trim().length>0)return!0}return!1},Dme=C({id:`empty-table-header`,title:`Table header has no accessible text`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Give every table header concise text or an explicit accessible name.`,create:e=>({JSXElement(t){let n=t.openingElement,r=O(n);if(/^[A-Z]/.test(r))return;let i=R(n.attributes,`role`,!1),a=i?L(i)?.toLowerCase():null;r!==`th`&&(!a||!Tme.has(a))||Dr(t,e.settings)||Eme(n)||e.report({node:n,message:`This table header has no accessible text, so users cannot tell what its cells represent. Add header text or an accessible name.`})}})}),Ome=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set;return D(e,a=>{if(a!==e&&w(a)){let e=xp(a,t);for(let t of e)t.resolvedSymbol&&!Qt(t.resolvedSymbol.scope,n)&&(i.has(t.id)||(r.push(t),i.add(t.id)));return!1}let o=t.referenceFor(a);o&&o.resolvedSymbol&&(Qt(o.resolvedSymbol.scope,n)||i.has(o.id)||(r.push(o),i.add(o.id)))}),r},kme=new WeakMap,xp=(e,t)=>{let n=kme.get(t);n||(n=new WeakMap,kme.set(t,n));let r=n.get(e);if(r)return r;let i=Ome(e,t);return n.set(e,i),i};let Ame=0;const Sp=e=>{let t={id:Ame++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},Cp=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},jme=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},wp=(e,t,n)=>{if(e.nodeBlock.set(t,n),w(t)){e.nestedFunctions.push(t);return}let r=t,i=sn[t.type]??Object.keys(r);for(let t of i){if(t===`parent`)continue;let i=r[t];if(Array.isArray(i))for(let t of i)j(t)&&wp(e,t,n);else j(i)&&wp(e,i,n)}},Mme=e=>{switch(e.type){case`IfStatement`:case`WhileStatement`:case`DoWhileStatement`:case`ForStatement`:case`ForInStatement`:case`ForOfStatement`:case`SwitchStatement`:case`TryStatement`:case`ReturnStatement`:case`ThrowStatement`:case`BreakStatement`:case`ContinueStatement`:case`BlockStatement`:case`LabeledStatement`:return!0;default:return!1}},Nme=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=Nme(e.argument);return t===null?null:!t}return null},Pme=e=>e===null||Nme(e)===!0,Fme=(e,t)=>{if(t===null){if(e.loopStack.length>0){let t=e.loopStack[e.loopStack.length-1];return{merge:t.merge,header:t.header}}return e.switchStack.length>0?{merge:e.switchStack[e.switchStack.length-1].merge,header:null}:null}for(let n=e.labelStack.length-1;n>=0;n--){let r=e.labelStack[n];if(r.label===t)return{merge:r.merge,header:r.header}}return null},Tp=(e,t,n)=>{let r=n;for(let n of t)r=Ep(e,n,r);return r},Ep=(e,t,n)=>{if(e.nodeBlock.set(t,n),!Mme(t))return jme(e,n,t),wp(e,t,n),n;if(t.type===`BlockStatement`)return Tp(e,t.body,n);if(t.type===`LabeledStatement`){let r=Sp(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Ep(e,a,n);return e.labelStack.pop(),Cp(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&wp(e,t.argument,n),Cp(n,e.exit,`uncond`),Sp(e);if(t.type===`ThrowStatement`){t.argument&&wp(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?Cp(n,r.catch,`uncond`):r?.finally?Cp(n,r.finally,`uncond`):Cp(n,e.exit,`throw`),Sp(e)}if(t.type===`BreakStatement`){let r=Fme(e,t.label?t.label.name:null);return r?Cp(n,r.merge,`uncond`):Cp(n,e.exit,`uncond`),Sp(e)}if(t.type===`ContinueStatement`){let r=Fme(e,t.label?t.label.name:null);return r?.header&&Cp(n,r.header,`uncond`),Sp(e)}if(t.type===`IfStatement`){wp(e,t.test,n);let r=Sp(e),i=Sp(e);if(Cp(n,r,`cond`),Cp(Ep(e,t.consequent,r),i,`uncond`),t.alternate){let r=Sp(e);Cp(n,r,`cond`),Cp(Ep(e,t.alternate,r),i,`uncond`)}else Cp(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Pme(t.test);wp(e,t.test,n);let a=Sp(e),o=Sp(e),s=Sp(e);r?Cp(n,o,`uncond`):(Cp(n,a,`uncond`),Cp(a,o,i?`uncond`:`cond`),i||Cp(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Ep(e,t.body,o);return e.loopStack.pop(),r?(Cp(c,a,`uncond`),Cp(a,o,i?`uncond`:`cond`),i||Cp(a,s,`cond`)):Cp(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&wp(e,t.init,n),t.test&&wp(e,t.test,n);let r=Sp(e),i=Sp(e),a=Sp(e),o=Pme(t.test??null);Cp(n,r,`uncond`),Cp(r,i,o?`uncond`:`cond`),o||Cp(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Ep(e,t.body,i);return e.loopStack.pop(),t.update&&wp(e,t.update,r),Cp(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){wp(e,t.right,n),wp(e,t.left,n);let r=Sp(e),i=Sp(e),a=Sp(e);Cp(n,r,`uncond`),Cp(r,i,`cond`),Cp(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Ep(e,t.body,i);return e.loopStack.pop(),Cp(o,r,`uncond`),a}if(t.type===`SwitchStatement`){wp(e,t.discriminant,n);let r=Sp(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=Sp(e);Cp(n,t,`cond`),i&&Cp(i,t,`uncond`),i=Tp(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&Cp(i,r,`uncond`),a||Cp(n,r,`cond`),r}if(t.type===`TryStatement`){let r=Sp(e),i=Sp(e),a=null,o=null;t.handler&&(a=Sp(e)),t.finalizer&&(o=Sp(e)),Cp(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=Tp(e,t.block.body,r);if(e.tryStack.pop(),a&&Cp(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Ep(e,n,a);o?Cp(r,o,`uncond`):Cp(r,i,`uncond`)}return o&&t.finalizer?(Cp(s,o,`uncond`),Cp(Tp(e,t.finalizer.body,o),i,`uncond`)):Cp(s,i,`uncond`),i}return jme(e,n,t),wp(e,t,n),n},Ime=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=Sp(r),a=Sp(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=Tp(r,t.body,i):(wp(r,t,i),o=i),Cp(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},Lme=e=>{let t=t=>{let n=new Set,r=[];e.entry!==t&&r.push(e.entry);let i=0;for(;i<r.length;){let e=r[i];if(i+=1,!n.has(e)){n.add(e);for(let n of e.successors)n.kind!==`throw`&&n.to!==t&&r.push(n.to)}}return n},n=t(null),r=new Set;r.add(e.entry),r.add(e.exit);for(let i of e.blocks)if(!r.has(i)){if(!n.has(i)){r.add(i);continue}t(i).has(e.exit)||r.add(i)}return r},Dp=e=>{Ame=0;let t=new Map,n=[],r=(e,r)=>{let i=Ime(e,r,n);t.set(e,{cfg:i,unconditionalSet:Lme(i)})};e.type===`Program`&&r(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<n.length;e+=1){let i=n[e];!w(i)||!i.body||t.has(i)||r(i,i.body)}let i=e=>t.get(e)||(!w(e)||!e.body?null:(r(e,e.body),t.get(e)??null)),a=e=>{let t=e;for(;t;){if(w(t)||t.type===`Program`)return t;t=t.parent??null}return null};return{cfgFor:e=>i(e)?.cfg??null,enclosingFunction:a,isUnconditionalFromEntry:e=>{let t=a(e);if(!t)return!0;let n=i(t);if(!n)return!0;let r=n.cfg.blockOf(e);return r?n.unconditionalSet.has(r):!0}}},Rme=e=>{let t=P(e);return E(t,`ObjectExpression`)?`object`:E(t,`ArrayExpression`)?`array`:E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`)?`function`:E(t,`JSXElement`)||E(t,`JSXFragment`)?`JSX`:E(t,`NewExpression`)?`instance`:null},Op=(e,t,n=new Set)=>{let r=Rme(e);if(r)return{bindingName:null,kind:r};let i=P(e);if(!E(i,`Identifier`))return null;let a=t.symbolFor(i);if(!a||a.scope.kind===`module`||a.kind!==`const`||!a.initializer||n.has(a.id)||a.references.some(e=>e.flag!==`read`)||!E(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=Op(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},zme=new Set([...xn,`useImperativeHandle`,`useInsertionEffect`]),Bme=new WeakMap,Vme=new WeakMap,Hme=new WeakMap,Ume=e=>{let t=Bme.get(e.programNode);if(t)return t;let n=fn(e.programNode);return Bme.set(e.programNode,n),n},Wme=e=>{let t=Vme.get(e.programNode);if(t)return t;let n=Dp(e.programNode);return Vme.set(e.programNode,n),n},Gme=(e,t)=>{let n=t.enclosingFunction(e);if(!n)return!0;let r=t.cfgFor(n);if(!r)return!0;let i=r.blockOf(e);if(!i)return!0;let a=new Set([r.entry]),o=[r.entry];for(;o.length>0;){let e=o.pop();if(!e)break;if(e===i)return!0;for(let t of e.successors)a.has(t.to)||(a.add(t.to),o.push(t.to))}return!1},Kme=(e,t)=>{let n=qs(e)??t??``;return n!==`use`&&Ws(n)},qme=(e,t)=>{if(!E(e,`Identifier`))return null;let n=N(e,t);if(n?.kind!==`import`||!n.initializer)return null;let r=n.initializer.parent;if(!r||!E(r,`ImportDeclaration`))return null;let i=r.source?.value;if(typeof i!=`string`)return null;let a=Dn(n.initializer);return a?{exportedName:a,source:i}:null},Jme=(e,t,n)=>{if(!n)return null;let r=qme(e,t);if(!r)return null;let i=E(e,`Identifier`)?e.name:``;if(r.source===`react`||!Ws(i)&&!Ws(r.exportedName))return null;let a=Nt(n,r.source,r.exportedName);return!a||!Kme(a.functionNode,r.exportedName)?null:{cfg:Wme(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:Ume(a)}},kp=(e,t,n,r=new Set)=>{let i=P(e);if(E(i,`Identifier`)){let e=N(i,t);if(!e||r.has(e.id))return null;if(We(e)){let t=en(e.declarationNode);return!t||!n.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||Ap(e)?null:(r.add(e.id),kp(e.initializer,t,n,r))}if(E(i,`MemberExpression`)){let e=k(i);if(!e||!n.has(e))return null;let r=P(i.object);return!E(r,`Identifier`)||!At(r,t)?null:e===`useImperativeHandle`?2:1}if(!E(i,`ConditionalExpression`))return null;let a=kp(i.consequent,t,n,new Set(r)),o=kp(i.alternate,t,n,new Set(r));return a!==null&&a===o?a:null},Yme=(e,t,n,r)=>{if(!n)return null;let i=qme(P(e.callee),t);if(!i)return null;let a=nn(n,i.source,i.exportedName);return a?kp(a.exportedNode,Ume(a),r):null},Xme=(e,t,n,r)=>{let i=P(e.callee),a=y(i,t);if(a&&Kme(a)){let e=x(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return Jme(i,t,r)},Zme=e=>{if(!w(e))return[];let t=[];for(let[n,r]of(e.params??[]).entries()){let e=P(r);if(E(e,`Identifier`)){t.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:n,propertyName:null});continue}if(E(e,`AssignmentPattern`)&&E(e.left,`Identifier`)){t.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:n,propertyName:null});continue}if(E(e,`ObjectPattern`))for(let r of e.properties??[]){if(!E(r,`Property`))continue;let e=A(r,{allowComputedString:!0});if(!e)continue;let i=P(r.value);E(i,`Identifier`)?t.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:n,propertyName:e}):E(i,`AssignmentPattern`)&&E(i.left,`Identifier`)&&t.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:n,propertyName:e})}}return t},Qme=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ObjectExpression`))return r;if(!E(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||Ap(i)?null:(n.add(i.id),Qme(i.initializer,t,n))},$me=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(E(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(E(r,`Property`)&&A(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},ehe=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>E(e,`SpreadElement`)))return{expression:null,isProvenOmitted:!1};let r=e.arguments?.[t.parameterIndex];if(!r)return{expression:null,isProvenOmitted:!0};if(t.propertyName===null)return{expression:r,isProvenOmitted:!1};let i=Qme(r,n);return i?$me(i,t.propertyName):{expression:null,isProvenOmitted:!1}},Ap=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&E(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(E(n,`AssignmentExpression`)&&n.left===e||E(n,`UpdateExpression`)&&n.argument===e||E(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(E(n,`CallExpression`)&&n.callee===e&&E(e,`MemberExpression`)){let t=k(e);if(t&&(dr.has(t)||fr.has(t)))return!0}}return!1},jp=(e,t,n,r,i=new Set)=>{let a=P(e);if(!E(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||Ap(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!E(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),jp(o.initializer,t,n,r,i))},Mp=(e,t,n,r=new Set)=>{if(jp(e,`list`,t,n))return!0;let i=P(e);if(E(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||Ap(e)?!1:(r.add(e.id),Mp(e.initializer,t,n,r))}return E(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?E(e,`SpreadElement`)?jp(e.argument,`list`,t,n):jp(e,`value`,t,n):!1):!1},the=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of Zme(t.functionNode)){let o=ehe(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||Ap(s)||(jp(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),(jp(o.expression,`list`,n,r)||Mp(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},nhe=(e,t,r,i,a)=>{if(!w(e.functionNode))return!1;let o=e.functionNode;if(r<0||i.has(o)||[...t.valueSymbolIds,...t.listSymbolIds].some(t=>{let n=e.scopes.ownScopeFor(e.functionNode)?.symbols.find(e=>e.id===t);return n?Ap(n):!1}))return!1;let s=new Set(i);s.add(o);let c=!1;return D(o.body,i=>{if(c||i!==o.body&&w(i))return!1;if(!E(i,`CallExpression`)||!Gme(i,e.cfg))return;if(n(i,a,e.scopes,{allowGlobalReactNamespace:!0})){let n=P(i.callee),r=(E(n,`Identifier`)?n.name:E(n,`MemberExpression`)?k(n):null)===`useImperativeHandle`?2:1,a=i.arguments?.[r];return a&&!E(a,`SpreadElement`)&&Mp(a,e.scopes,t)?(c=!0,!1):void 0}let l=Yme(i,e.scopes,e.filePath,a);if(l!==null){let n=i.arguments?.[l];return n&&!E(n,`SpreadElement`)&&Mp(n,e.scopes,t)?(c=!0,!1):void 0}if(r===0)return;let u=Xme(i,e.scopes,e.cfg,e.filePath);if(!u)return;let d=the(i,u,e.scopes,t);if(!(d.valueSymbolIds.size===0&&d.listSymbolIds.size===0)&&nhe(u,d,r-1,s,a))return c=!0,!1}),c},rhe=(e,t,n=zme)=>{let r=Hme.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):Hme.set(e,new Map([[n,a]]));let o=Xme(e,t.scopes,t.cfg,t.filename);if(!o||!J(e,t.scopes)||!Gme(e,t.cfg))return a;for(let r of Zme(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||Ap(i))continue;let s=ehe(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=Op(c,s.expression?t.scopes:o.scopes);l&&nhe(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(E(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},ihe=new WeakMap,ahe=e=>{let t=new Map;if(!E(e,`Program`))return t;for(let n of e.body){let e=E(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!E(e,`TSInterfaceDeclaration`)&&!E(e,`TSTypeAliasDeclaration`)||!E(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},Np=(e,t)=>{let n=x(e);if(!n)return[];let r=ihe.get(n);return r||(r=ahe(n),ihe.set(n,r)),r.get(t)??[]},ohe=e=>E(e,`Identifier`)?e.name:E(e,`MemberExpression`)&&!e.computed&&E(e.object,`Identifier`)&&e.object.name===`React`&&E(e.property,`Identifier`)?`React.${e.property.name}`:null,Pp=e=>{let t=e.parent;if(!t||!E(t,`CallExpression`)||t.arguments[0]!==e)return!1;let n=ohe(t.callee);return n!==null&&fe.has(n)},she=new Set([`function`,`arrow-function`,`method`]),Fp=e=>{let t=e.scope;for(;t;){if(she.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},che=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),X=e=>{let t=e;for(;che.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},Ip=(e,t)=>{let n=X(e);if(E(n,`Identifier`)){let e=t?N(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&E(r,`ImportDeclaration`)&&r.source.value===`react`?en(e.declarationNode)??n.name:n.name}return E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)?n.property.name:null},Lp=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,lhe=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,uhe=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,dhe=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,fhe=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,phe=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,mhe=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,Rp=e=>`\`${e}\` re-runs on every render with no dependency array.`,hhe=e=>`\`${e}\` crashes without a function as its first argument.`,ghe=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",_he=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,zp=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,vhe=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,yhe=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,bhe=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,xhe=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,She=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,Che=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,whe=e=>`Assigning to \`${e}\` inside a hook is thrown away after each render, so the next render reads the old value.`,The=e=>{let t=e?.[`react-doctor`],n=e?.[`react-hooks`],r=typeof t==`object`&&t?t.exhaustiveDeps??{}:{},i=typeof n==`object`&&n?n:{};return{additionalHooks:r.additionalHooks??r.additionalEffectHooks??i.additionalHooks??i.additionalEffectHooks??``,additionalEffectHooks:r.additionalEffectHooks??i.additionalEffectHooks??``,enableDangerousAutofixThisMayCauseInfiniteLoops:r.enableDangerousAutofixThisMayCauseInfiniteLoops??!1,experimental_autoDependenciesHooks:r.experimental_autoDependenciesHooks??i.experimental_autoDependenciesHooks??[],requireExplicitEffectDeps:r.requireExplicitEffectDeps??i.requireExplicitEffectDeps??!1}},Ehe=new Set([`===`,`!==`]),Dhe=(e,t)=>{let r=e.declarationNode;if(!E(r,`VariableDeclarator`)||!E(r.id,`ArrayPattern`))return null;let i=r.id.elements[0],a=r.id.elements[1];if(i!==e.bindingIdentifier||!E(a,`Identifier`))return null;let o=r.init?P(r.init):null;return!o||!n(o,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(a)},Ohe=(e,t)=>{if(e.references.length!==1)return null;let n=e.references[0];if(n.flag!==`read`)return null;let r=b(n.identifier),i=r.parent;if(!E(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||M(i)!==t)return null;let a=P(i.arguments[0]);return E(a,`ArrowFunctionExpression`)||E(a,`FunctionExpression`)||E(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},khe=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=k(n),i=P(n.object);return!!(r===`is`&&E(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},Ahe=(e,t)=>{let n=P(e);return E(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},jhe=(e,t,n)=>{let r=P(e);if(E(t,`BinaryExpression`)&&Ehe.has(t.operator))return P(t.left)===r?Ahe(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:P(t.right)===r?Ahe(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!E(t,`CallExpression`)||!khe(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return E(i,`SpreadElement`)||E(a,`SpreadElement`)?null:P(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:P(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},Mhe=(e,t,n)=>{let r=e.parent;for(;r&&z(r,t);){let i=jhe(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},Nhe=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!z(e,t))return!1;if(E(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(E(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!yn.has(e.type))return!1;a=e}return i===r},Phe=(e,t)=>{let n=new Set,r=P(e);for(;E(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Xr(e);if(!i||!E(P(i),`Identifier`))break;n.add(e.id),r=P(i)}return r},Fhe=(e,t,n)=>{let r=Phe(e,n),i=Phe(t,n);if(r===i)return!0;if(E(r,`Identifier`)&&E(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return E(r,`Literal`)&&E(i,`Literal`)?Object.is(r.value,i.value):!1},Ihe=e=>{let t=b(e).parent;if(!E(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(E(n,`ArrayExpression`)&&n.elements.length)},Lhe=e=>{if(E(e,`ReturnStatement`)||E(e,`ThrowStatement`))return!0;if(!E(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&Lhe(t))},Rhe=(e,t)=>{if(!E(e,`IfStatement`)||e.alternate||!Lhe(e.consequent))return!1;let n=e.parent;if(!E(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&z(t,e))},zhe=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(E(i,`IfStatement`)&&z(e,i.test)&&(z(t,i.consequent)||i.alternate&&z(t,i.alternate)||Rhe(i,t))){let n=z(t,i.consequent);if(n===(!!(i.alternate&&z(t,i.alternate))||Rhe(i,t)))return null;let a=Mhe(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return Nhe(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},Bhe=(e,t,n)=>{if(!Ihe(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=Dhe(e,n);if(!r)return!1;let i=Ohe(r,t);if(!i)return!1;let a=e.references.filter(e=>z(e.identifier,t));if(a.length!==1)return!1;let o=b(a[0].identifier);if(E(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=zhe(a[0].identifier,i.callExpression,t,n);return!!(s&&Fhe(s,i.writtenValue,n))},Vhe=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,Hhe=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,Uhe=(e,t)=>{let n=new Set,r=e.split(`
1
+ import{$ as e,$i as t,$n as n,$r as r,$t as i,A as a,Aa as o,Ai as s,An as c,Ar as l,At as u,B as d,Bi as f,Bn as p,Br as m,Bt as h,C as g,Ca as _,Ci as ee,Cn as v,Cr as te,Ct as ne,D as re,Da as ie,Di as ae,Dn as y,Dr as oe,Dt as se,E as ce,Ea as le,Ei as ue,En as de,Er as fe,Et as pe,F as me,Fn as he,Fr as ge,Ft as eee,G as tee,Gi as nee,Gn as _e,Gr as ve,Gt as ye,H as be,Hi as ree,Hn as xe,Hr as Se,Ht as iee,I as aee,In as Ce,Ir as we,It as oee,J as Te,Ji as Ee,Jn as b,Jr as De,Jt as Oe,K as see,Ki as cee,Kn as x,Kr as ke,Kt as Ae,L as je,Ln as S,Lr as lee,Lt as Me,M as uee,Ma as dee,Mi as fee,Mn as Ne,Mr as pee,Mt as mee,N as hee,Ni as gee,Nn as Pe,Nr as Fe,Nt as Ie,O as Le,Oa as _ee,Oi as Re,On as ze,Or as vee,Ot as yee,P as Be,Pn as Ve,Pr as He,Pt as bee,Q as Ue,Qi as xee,Qn as We,Qr as Ge,Qt as See,R as Cee,Ri as wee,Rn as Tee,Rr as Eee,Rt as Dee,S as Oee,Sa as kee,Si as Ke,Sn as qe,Sr as Aee,St as jee,T as Mee,Ta as Nee,Ti as Je,Tn as Ye,Tr as Xe,Tt as Ze,U as Qe,Ui as Pee,Un as $e,Ur as et,Ut as tt,V as nt,Vi as Fee,Vn as rt,Vr as Iee,Vt as C,W as it,Wi as Lee,Wn as at,Wr as ot,Wt as st,X as Ree,Xi as zee,Xn as Bee,Xr as ct,Xt as Vee,Y as lt,Yi as Hee,Yn as ut,Yr as Uee,Yt as dt,Z as ft,Zi as pt,Zn as mt,Zr as Wee,Zt as Gee,_ as Kee,_a as qee,_i as ht,_n as Jee,_r as gt,_t as Yee,a as Xee,aa as w,ai as Zee,an as _t,ar as Qee,at as $ee,b as ete,ba as tte,bi as nte,bn as vt,br as yt,bt as rte,c as bt,ca as ite,ci as xt,cn as St,cr as Ct,ct as wt,d as Tt,da as ate,di as Et,dn as T,dr as ote,dt as ste,ea as Dt,ei as Ot,en as kt,er as At,et as jt,f as Mt,fa as cte,fi as Nt,fn as Pt,fr as lte,ft as ute,g as Ft,ga as dte,gi as It,gn as Lt,gr as Rt,gt as fte,h as zt,ha as pte,hi as Bt,hn as Vt,hr as mte,ht as hte,i as gte,ia as E,ii as _te,in as vte,ir as Ht,it as Ut,j as Wt,ja as yte,ji as bte,jn as Gt,jr as Kt,jt as xte,k as Ste,ka as Cte,ki as wte,kn as qt,kr as Tte,kt as Ete,l as Jt,la as Dte,li as D,ln as O,lr as Ote,lt as kte,m as Ate,ma as Yt,mi as Xt,mn as Zt,mr as jte,mt as Mte,n as Nte,na as Qt,ni as k,nn as Pte,nr as A,nt as Fte,o as $t,oa as j,oi as en,on as Ite,or as Lte,ot as Rte,p as zte,pa as tn,pi as nn,pn as rn,pr as Bte,pt as Vte,q as an,qi as Hte,qn as M,qr as Ute,qt as on,r as Wte,ra as sn,ri as Gte,rn as Kte,rr as cn,rt as ln,s as un,sa as qte,si as Jte,sn as Yte,sr as dn,st as Xte,t as Zte,ta as fn,ti as Qte,tn as $te,tr as N,tt as pn,u as mn,ua as ene,ui as tne,un as hn,ur as nne,ut as gn,v as _n,va as vn,vi as yn,vn as bn,vr as xn,vt as rne,w as Sn,wa as ine,wi as Cn,wn,wr as ane,wt as one,x as Tn,xa as En,xi as Dn,xn as On,xr as sne,xt as cne,y as kn,ya as An,yi as P,yn as jn,yr as Mn,yt as lne,z as Nn,zi as une,zn as Pn,zr as dne,zt as Fn}from"./capability-B60Msq5e.js";import{visitorKeys as fne}from"oxc-parser";import*as In from"node:fs";import{readFileSync as Ln}from"node:fs";import*as Rn from"node:path";import{analyze as pne}from"eslint-scope";import{Features as mne,transform as zn}from"lightningcss";import{visit as Bn}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as hne}from"@shaderfrog/glsl-parser/index.js";const gne={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},Vn=(e,t,r)=>n(e,t,r,gne),Hn=new Set([`Activity`,`unstable_Activity`]),_ne=e=>{let t=e.value;return t?E(t,`Literal`)?!0:E(t,`JSXExpressionContainer`)?E(t.expression,`Literal`):!1:!1},vne=(e,t)=>{D(e,e=>{if(!E(e,`JSXOpeningElement`)||!E(e.name,`JSXIdentifier`))return;let n=e.name.name;Fe.test(n)&&t.add(n)})},yne=(e,t)=>{if(!e)return 0;let n=0;return D(e,e=>{E(e,`CallExpression`)&&Vn(e,Ct,t)&&n++}),n},Un=new WeakMap,bne=e=>{let t=Un.get(e);if(t)return t;let n=new Map;D(e,e=>{if(E(e,`FunctionDeclaration`)&&e.id&&!n.has(e.id.name)){n.set(e.id.name,e.body);return}if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)&&!n.has(e.id.name)){let t=e.init;(E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`))&&n.set(e.id.name,t.body)}});let r={bodyByName:n,effectCountByName:new Map};return Un.set(e,r),r},xne=(e,t,n)=>{let r=bne(e),i=r.effectCountByName.get(t);if(i!==void 0)return i;let a=yne(r.bodyByName.get(t)??null,n);return r.effectCountByName.set(t,a),a},Wn=C({id:`activity-wraps-effect-heavy-subtree`,title:`Activity wraps an effect-heavy subtree`,severity:`warn`,requires:[`react:19.2`],recommendation:"Check what's under `<Activity>`. Every hide and show rebuilds every Effect inside from scratch. Move subscriptions and effect-driven setState out of the Activity, or load the data above it.",create:e=>{let t=new Set,n=new Set;return{ImportDeclaration(e){if(e.source?.value===`react`)for(let r of e.specifiers??[]){if(E(r,`ImportNamespaceSpecifier`)){E(r.local,`Identifier`)&&n.add(r.local.name);continue}if(E(r,`ImportDefaultSpecifier`)){E(r.local,`Identifier`)&&n.add(r.local.name);continue}if(!E(r,`ImportSpecifier`))continue;let e=en(r);!e||!Hn.has(e)||E(r.local,`Identifier`)&&t.add(r.local.name)}},JSXElement(r){let i=r.openingElement;if(!i)return;let a=i.name,o=!1;if(E(a,`JSXIdentifier`)?o=t.has(a.name):E(a,`JSXMemberExpression`)&&E(a.object,`JSXIdentifier`)&&n.has(a.object.name)&&E(a.property,`JSXIdentifier`)&&(o=Hn.has(a.property.name)),!o)return;let s=null;for(let e of i.attributes??[])if(E(e,`JSXAttribute`)&&E(e.name,`JSXIdentifier`)&&e.name.name===`mode`){s=e;break}if(!s||_ne(s))return;let c=new Set;vne(r,c);for(let e of t)c.delete(e);if(c.size===0)return;let l=x(r);if(!l)return;let u=0,d=[];for(let t of c){let n=xne(l,t,e.scopes);n!==0&&(u+=n,d.push(`<${t}>`))}u!==0&&e.report({node:i,message:`Every hide and show rebuilds ${d.join(`, `)} from scratch because <Activity> wraps components with ${u} effect hook${u===1?``:`s`}.`})}}}}),Gn=e=>!E(e,`CallExpression`)&&!E(e,`NewExpression`)?null:E(e.callee,`Identifier`)?e.callee.name:E(e.callee,`MemberExpression`)&&E(e.callee.property,`Identifier`)?e.callee.property.name:null,Kn=(e,t)=>{if(!E(e,`CallExpression`)&&!E(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return E(n,`ArrowFunctionExpression`)||E(n,`FunctionExpression`)?n:t?y(n,t):null},qn=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=P(r),E(r,`MemberExpression`)){r=r.object;continue}if(n&&E(r,`CallExpression`)){if(!E(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return E(r,`Identifier`)?r:null},Jn=(e,t)=>qn(e,t)?.name??null,Yn=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=Gn(e);return n?typeof t==`string`?n===t:t.has(n):!1},Sne=new Set([`useCallback`,`useEffectEvent`]),Cne=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),wne=/^use\w*(?:Throttle|Debounce)/i,Tne=e=>{let t=Gn(e);return t!==null&&wne.test(t)},Ene=(e,t)=>{if(!Vn(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return E(n,`ArrayExpression`)&&(n.elements?.length??0)===0},Dne=(e,t)=>E(e,`CallExpression`)?Vn(e,Sne,t)||Yn(e,Cne)||Ene(e,t)||Tne(e):E(e,`MemberExpression`)&&E(e.property,`Identifier`)&&e.property.name===`current`,One=(e,t,n)=>{let r=T(e,t);return!!(r?.initializer&&Vn(r.initializer,`useRef`,n))},kne=C({id:`advanced-event-handler-refs`,title:`Listener re-subscribes on every handler change`,tags:[`test-noise`],severity:`warn`,category:`Performance`,recommendation:"Store the handler in a ref and have the listener read `handlerRef.current()`. The subscription stays put while the latest handler still runs.",create:e=>({CallExpression(t){if(!Vn(t,Ct,e.scopes)||(t.arguments?.length??0)<2)return;let n=Kn(t);if(!n||!E(n,`ArrowFunctionExpression`)&&!E(n,`FunctionExpression`))return;let r=t.arguments[1];if(!E(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)E(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(D(n.body,e=>{if(!E(e,`CallExpression`)||!E(e.callee,`MemberExpression`)||!E(e.callee.property,`Identifier`)||!Kt.has(e.callee.property.name))return;let t=Jn(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];E(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let s=T(t,a);s?.initializer&&Dne(s.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!One(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),Xn=e=>{let t=e.value;return t&&E(t,`Literal`)&&typeof t.value==`string`?t.value:null},F=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!E(t,`JSXAttribute`))continue;let e=rn(t.name);if(e&&e.toLowerCase()===n)return t}},Ane=Object.freeze({}),jne=new WeakMap,Mne=e=>{if(!e)return Ane;let t=jne.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:Ane;return jne.set(e,r),r},Nne=(e,t)=>{let n=O(e);if(t.polymorphicPropName){let n=F(e.attributes,t.polymorphicPropName);if(n){let e=Xn(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},Pne=new WeakMap,Zn=(e,t)=>{let n=Pne.get(e);if(n&&n.settings===t)return n.elementType;let r=Nne(e,Mne(t));return Pne.set(e,{settings:t,elementType:r}),r},Fne=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},I=e=>e.some(e=>E(e,`JSXSpreadAttribute`)),Qn=e=>{if(!e)return null;let t=P(e);return E(t,`Literal`)&&typeof t.value==`string`?t.value:E(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},L=e=>{if(!E(e,`JSXAttribute`))return null;let t=Xn(e);if(t!==null)return t;let n=e.value;if(n&&E(n,`JSXExpressionContainer`)){let e=n.expression;if(E(e,`Literal`)&&typeof e.value==`string`)return e.value;if(E(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},$n=e=>e.attribute?L(e.attribute):Qn(e.expression),Ine=e=>{let t=e.expression??e.attribute?.value;return t?P(E(t,`JSXExpressionContainer`)?t.expression:t):null},er=(e,t)=>{if(Zn(e,t).toLowerCase()===`input`&&$n($t(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=$t(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=$n(n);if(e!==null)return e.length>0;let t=Ine(n);if(E(t,`Literal`)&&t.value)return!0}let r=$t(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=$n(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=Ine(r);return E(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},tr=e=>{if(E(e,`JSXIdentifier`))return e.name;if(E(e,`JSXMemberExpression`)){let t=tr(e.object);return t?`${t}.${e.property.name}`:null}return null},Lne=[`next/og`,`@vercel/og`,`satori`],Rne=new Set([`next/og`,`@vercel/og`]),nr=e=>{let t=e.parent;for(;t;){if(E(t,`ImportDeclaration`))return t;if(E(t,`Program`))return null;t=t.parent}return null},rr=e=>typeof e.source.value==`string`?e.source.value:null,zne=(e,t,n)=>{if(e.kind!==`import`)return!1;let r=e.declarationNode;if(!E(r,`ImportSpecifier`))return!1;let i=nr(r),a=i?rr(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return E(o,`Identifier`)&&o.name===t||E(o,`Literal`)&&o.value===t},Bne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=nr(t);if(!n||rr(n)!==`satori`)return!1;if(E(t,`ImportDefaultSpecifier`))return!0;if(!E(t,`ImportSpecifier`))return!1;let r=t.imported;return E(r,`Identifier`)&&r.name===`satori`||E(r,`Literal`)&&r.value===`satori`},ir=(e,t)=>{if(!E(e,`CallExpression`)&&!E(e,`NewExpression`))return!1;let n=P(e.callee);if(E(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(zne(e,`ImageResponse`,Rne)||Bne(e)))}if(!E(n,`MemberExpression`)||k(n)!==`ImageResponse`||!E(n.object,`Identifier`))return!1;let r=t.referenceFor(n.object)?.resolvedSymbol??null;if(!r||r.kind!==`import`)return!1;let i=r.declarationNode;if(!E(i,`ImportNamespaceSpecifier`))return!1;let a=nr(i),o=a?rr(a):null;return!!(o&&Rne.has(o))},Vne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${Ee}$`),ar=e=>e?Vne.test(Rn.basename(e)):!1,Hne=new WeakMap,Une=e=>e?ar(mt(e)):!1,Wne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},or=(e,t,n,r,i)=>{if(!w(e))return;if(E(e,`ArrowFunctionExpression`)){let a=P(e.body);if(!E(a,`BlockStatement`)){sr(a,t,n,r,i);return}}let a=e.body;E(a,`BlockStatement`)&&D(a,e=>{if(e!==a&&w(e))return!1;E(e,`ReturnStatement`)&&e.argument&&sr(P(e.argument),t,n,r,i)})},Gne=(e,t,n)=>{let r=!1;return D(e,e=>{if(r)return!1;if(E(e,`JSXOpeningElement`)&&!n.has(e)&&tr(e.name)===t)return r=!0,!1}),r},Kne=(e,t,n,r,i)=>{let a=tr(n.name);if(!a||a.includes(`.`)||!Wne(a)||i.has(a)||Gne(e,a,r))return;let o=T(n,a);o?.initializer&&(i.add(a),sr(P(o.initializer),e,t,r,i))},qne=(e,t)=>{let n=e.parent;for(;n;){if(ir(n,t))return!0;n=n.parent??null}return!1},Jne=(e,t,n)=>{let r=!1;return D(e,e=>{if(r)return!1;if(E(e,`CallExpression`)&&E(e.callee,`Identifier`)&&e.callee.name===t&&!qne(e,n))return r=!0,!1}),r},Yne=(e,t,n,r,i)=>{D(e,e=>{E(e,`JSXOpeningElement`)&&(r.add(e),Kne(t,n,e,r,i))})},sr=(e,t,n,r,i)=>{let a=P(e);if(E(a,`JSXElement`)||E(a,`JSXFragment`)){Yne(a,t,n,r,i);return}if(w(a)){or(a,t,n,r,i);return}if(E(a,`ConditionalExpression`)){sr(a.consequent,t,n,r,i),sr(a.alternate,t,n,r,i);return}if(E(a,`LogicalExpression`)){sr(a.left,t,n,r,i),sr(a.right,t,n,r,i);return}if(E(a,`CallExpression`)){let e=a.callee;if(w(e)){or(e,t,n,r,i);return}if(!E(e,`Identifier`)||i.has(e.name)||Gne(t,e.name,r)||Jne(t,e.name,n))return;let o=T(e,e.name);if(!o?.initializer||!w(P(o.initializer)))return;i.add(e.name),or(P(o.initializer),t,n,r,i);return}if(E(a,`Identifier`)){if(i.has(a.name))return;i.add(a.name);let e=T(a,a.name);if(!e?.initializer)return;sr(P(e.initializer),t,n,r,i)}},Xne=(e,t)=>{let n=Hne.get(e);if(n)return n;let r=new WeakSet;return xe(e,Lne)&&D(e,n=>{if(!(!E(n,`CallExpression`)&&!E(n,`NewExpression`))&&ir(n,t))for(let i of n.arguments)sr(i,e,t,r,new Set)}),Hne.set(e,r),r},cr=(e,t)=>{if(Une(e.filename))return!0;if(!t)return!1;let n=x(t);if(!n)return!1;let r=Xne(n,e.scopes);return r.has(t)?!0:E(t,`JSXElement`)?r.has(t.openingElement):!1},lr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],ur=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),Zne=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),dr=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),fr=new Set([`add`,`clear`,`delete`,`set`]),pr=new Set([`map`,`filter`,`forEach`,`flatMap`]),mr=new Set([`then`,`catch`,`finally`]),hr=new Set([`values`,`keys`,`entries`]),Qne=/\.browser\.[cm]?[jt]sx?$/,$ne=new Set(`vitest.jest.mocha.chai.sinon.expect.ava.uvu.node:test.bun:test.@testing-library/react.@testing-library/react-native.@testing-library/react-hooks.@testing-library/dom.@testing-library/user-event.@testing-library/jest-dom.@testing-library/vue.@testing-library/svelte.@testing-library/preact.@testing-library/cypress.playwright.playwright-core.@playwright/test.@playwright/experimental-ct-react.@playwright/experimental-ct-react17.cypress.@cypress/react.@cypress/react18.@storybook/test.@storybook/test-runner.@storybook/testing-library.@storybook/jest.puppeteer.puppeteer-core.webdriverio.@wdio/globals.@nuxt/test-utils`.split(`.`)),ere=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],tre=new Set(`render.rerender.renderHook.renderToString.renderToStaticMarkup.act.click.dblClick.dblclick.tripleClick.tap.press.longPress.type.clear.fill.focus.blur.hover.unhover.check.uncheck.selectOption.selectOptions.setChecked.setInputFiles.scrollIntoViewIfNeeded.dragTo.dragAndDrop.drop.evaluate.evaluateHandle.waitFor.waitForLoadState.waitForSelector.waitForURL.waitForResponse.waitForRequest.waitForEvent.waitForFunction.waitForElementToBeRemoved.goto.goBack.goForward.reload.screenshot.snapshot.toMatchSnapshot.toMatchInlineSnapshot.expect.expectTypeOf.step.describe.test.it.beforeAll.beforeEach.afterAll.afterEach.play.userEvent.screen.within`.split(`.`)),nre=[`findBy`,`findAllBy`],gr=new Set(`sleep.delay.wait.pause.throttle.debounce.tick.nextTick.advanceTimersByTime.advanceTimersByTimeAsync.runAllTimers.runAllTimersAsync.runOnlyPendingTimers.runOnlyPendingTimersAsync.setTimeout.setInterval.setImmediate.queueMicrotask.requestAnimationFrame.requestIdleCallback.yieldNow.yieldTo.yieldToBrowser.slice.sliceYield.nextFrame.breathe.onYield.onProgress.progress.onStep.step.stage.runStage.animate.transition.spring.tween.stagger.sequence.timeline.scrub.query.execute.exec.raw.transaction.$transaction.$executeRaw.$queryRaw.$executeRawUnsafe.$queryRawUnsafe.begin.commit.rollback.savepoint.lock.unlock.spawn.spawnSync.execSync.execFile.execFileSync.fork.$.sh.mkdir.rmdir.rename.rm.unlink.writeFile.appendFile.copyFile.navigate.goto.waitForNavigation.waitForURL.waitForLoadState.waitForResponse.waitForRequest.waitForSelector.waitForFunction.waitForEvent`.split(`.`)),_r=e=>typeof e!=`string`||e.length===0?!1:$ne.has(e)?!0:ere.some(t=>e.startsWith(t)),rre=new Set([`it`,`test`]),ire=new Set([`concurrent`,`only`,`skip`]),are=new Set([`doMock`,`mock`,`unstable_mockModule`]),ore=new Set([`jest`,`vi`]),sre=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),cre=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),lre=e=>{if(!e)return!1;let t=`/${e.replaceAll(`\\`,`/`)}`,n=t.slice(t.lastIndexOf(`/`)+1);return n.includes(`.test.`)||n.includes(`.spec.`)||t.includes(`/__tests__/`)||t.includes(`/__test__/`)||t.includes(`/__mocks__/`)},ure=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=Pn(e,e.name);return!!(r&&sre.has(r.source)&&r.exportedName&&t.has(r.exportedName))},dre=(e,t,n)=>lre(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),vr=(e,t,n)=>ure(e,t,n)||dre(e,t,n),yr=e=>{let t=P(e);if(E(t,`Identifier`))return t;if(E(t,`MemberExpression`)){let e=k(t);return!e||!ire.has(e)?null:yr(t.object)}let n=E(t,`CallExpression`)?P(t.callee):E(t,`TaggedTemplateExpression`)?P(t.tag):null;return!E(n,`MemberExpression`)||k(n)!==`each`?null:yr(n.object)},fre=(e,t)=>{let n=b(e),r=n.parent;if(!r||!E(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=yr(r.callee);return!!(i&&vr(i,rre,t))},pre=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!E(r,`Literal`)||typeof r.value!=`string`)return!1;let i=P(e.callee);if(!E(i,`MemberExpression`))return!1;let a=k(i);if(!a||!are.has(a))return!1;let o=P(i.object);return E(o,`Identifier`)&&vr(o,ore,n)},mre=(e,t)=>{let n=e.parent;for(;n;){if(w(n)){let e=b(n),r=e.parent;if(r&&E(r,`CallExpression`)&&pre(r,e,t))return!0}n=n.parent}return!1},hre=(e,t,n)=>{let r=e.parent,i=null;for(r&&E(r,`JSXElement`)&&r.openingElement===e&&(r=r.parent);r&&r!==t;){if(w(r))return!1;if(E(r,`JSXAttribute`)&&(i=r),E(r,`JSXElement`)){let e=r.openingElement.name;if(E(e,`JSXIdentifier`)){let t=n.scopes.referenceFor(e),a=Pn(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&a&&!cre.has(a.source)&&!_r(a.source)&&i?.parent===r.openingElement&&E(i.name,`JSXIdentifier`)&&i.name.name!==`children`)return!0}i=null}r=r.parent}return!1},br=(e,t)=>{if(mre(e,t))return!0;let n=M(e);return!n||!fre(n,t)?!1:hre(e,n,t)},gre=e=>{let t=e.parent;return t?E(t,`JSXSpreadAttribute`)||E(t,`SpreadElement`)?t.argument===e:E(t,`VariableDeclarator`)&&t.init===e:!1},xr=(e,t,n,r,i)=>{let a=P(e);if(r&&E(a,`Identifier`)){let e=r.symbolFor(a);if(!e||e.kind!==`const`||!e.initializer||i.has(e.id)||e.references.some(e=>e.flag!==`read`||!gre(e.identifier)))return!0;i.add(e.id);let o=xr(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!E(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(E(e,`SpreadElement`)){if(xr(e.argument,t,n,r,i))return!0;continue}if(!E(e,`Property`))return!0;let a=A(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},Sr=(e,t,n=!0,r)=>xr(e,t,n,r,new Set),R=(e,t,n=!0)=>{let r=n?t:t.toLowerCase();for(let i=e.length-1;i>=0;--i){let a=e[i];if(!a)return null;if(E(a,`JSXSpreadAttribute`)){if(Sr(a.argument,t,n))return null;continue}if(!E(a,`JSXAttribute`))continue;let o=rn(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},Cr=(e,t)=>e.some(e=>E(e,`JSXSpreadAttribute`)&&Sr(e.argument,t,!1)),wr=e=>{let t=P(e);return E(t,`UnaryExpression`)&&t.operator===`void`&&E(P(t.argument),`Literal`)},Tr=(e,t={})=>{if(!e?.value)return!1;let n=L(e);if(n!==null)return n.trim().length>0;if(!E(e.value,`JSXExpressionContainer`))return!0;let r=P(e.value.expression);return E(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:E(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!wr(r)},_re=(e,t,n)=>{let{openingElement:r}=e;if(r===n||er(r,t))return!1;if(E(r.name,`JSXMemberExpression`)||E(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=R(r.attributes,`aria-label`,!1);if(Tr(i,{booleanValuesRender:!0})||!i&&Cr(r.attributes,`aria-label`))return!0;if(E(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=R(r.attributes,`alt`,!1);return Tr(e)||!e&&Cr(r.attributes,`alt`)}return Dr(e,t,n)},Er=(e,t,n)=>{for(let r of e){if(E(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(E(r,`JSXElement`)){if(_re(r,t,n))return!0;continue}if(E(r,`JSXFragment`)){if(Er(r.children,t,n))return!0;continue}if(E(r,`JSXExpressionContainer`)){let e=P(r.expression);if(E(e,`JSXEmptyExpression`))continue;if(E(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(wr(e)||E(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},Dr=(e,t,n)=>{if(Er(e.children,t,n))return!0;let r=R(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(Tr(r)||!r&&Cr(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=R(e.openingElement.attributes,`children`,!1);return!!(Tr(i)||!i&&Cr(e.openingElement.attributes,`children`))},Or=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&!!t&&Reflect.get(t,`portedRuleMode`)===`curated`},vre=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},yre=e=>!!(E(e,`Identifier`)&&e.name===`undefined`||E(e,`Literal`)&&e.value===null),kr=e=>yre(e)?!0:E(e,`ConditionalExpression`)?kr(e.consequent)||kr(e.alternate):!1,Ar=e=>{if(!e.value)return!1;if(E(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!kr(t):!0}return!0},bre=e=>{if(!e)return!1;let t=Xn(e);return t===`presentation`||t===`none`},jr=e=>{if(!e.value)return!1;if(E(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(E(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:E(t,`Identifier`)&&t.name===`undefined`?!1:E(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},xre=(e,t,n)=>{let r=F(e.attributes,`alt`);if(r){Ar(r)||n.report({node:t,message:'Screen reader users cannot access this image because its `alt` is empty or invalid. Add a short description, or `alt=""` if it is decorative.'});return}if(bre(F(e.attributes,`role`))){n.report({node:t,message:'Screen readers skip a decorative image more reliably with `alt=""` than `role="presentation"`, so use `alt=""` instead.'});return}let i=F(e.attributes,`aria-label`);if(i){jr(i)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-label` has no value, so give it a short description."});return}let a=F(e.attributes,`aria-labelledby`);if(a){jr(a)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-labelledby` has no value, so point it at the id of the text that labels this."});return}n.report({node:t,message:'Screen reader users cannot access this image without `alt`. Add `alt="image_description"`, or `alt=""` if it is decorative.'})},Sre=(e,t,n,r)=>{let i=F(e.attributes,`aria-label`),a=F(e.attributes,`aria-labelledby`),o=i&&jr(i)||a&&jr(a),s=F(e.attributes,`title`),c=s?Xn(s):null,l=!!(c&&c.length>0);o||l||Dr(t,r.settings)||r.report({node:n,message:"Screen reader users cannot use this `<object>` because assistive tech cannot describe it, so add `alt`, `aria-label`, `aria-labelledby`, `title`, or inner fallback text."})},Cre=(e,t,n)=>{let r=F(e.attributes,`aria-label`),i=F(e.attributes,`aria-labelledby`);if(r&&jr(r)||i&&jr(i))return;let a=F(e.attributes,`alt`);(!a||!Ar(a))&&n.report({node:t,message:"Blind users can't use this `<area>` of the image map because screen readers can't describe it, so add `alt`, `aria-label`, or `aria-labelledby`."})},wre=(e,t,n)=>{let r=F(e.attributes,`aria-label`),i=F(e.attributes,`aria-labelledby`);if(r&&jr(r)||i&&jr(i))return;let a=F(e.attributes,`alt`);(!a||!Ar(a))&&n.report({node:t,message:"Blind users can't use this image button because screen readers can't describe it, so add `alt`, `aria-label`, or `aria-labelledby`."})},Mr=C({id:`alt-text`,title:`Image missing alt text`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give every meaningful image an `alt`, `aria-label`, or `aria-labelledby`.",category:`Accessibility`,create:e=>{let t=Or(e.settings);if(t&&cr(e))return kt;let n=vre(e.settings),r=!n.elements||n.elements.includes(`img`),i=!n.elements||n.elements.includes(`object`),a=!n.elements||n.elements.includes(`area`),o=!n.elements||n.elements.includes(`input[type="image"]`),s=new Set(n.img??[]),c=new Set(n.object??[]),l=new Set(n.area??[]),u=new Set(n[`input[type="image"]`]??[]),d=Fne(e.settings);return{JSXOpeningElement(n){if(t&&br(n,e))return;if(!d&&E(n.name,`JSXIdentifier`)){let e=n.name.name;if(e!==`img`&&e!==`object`&&e!==`area`&&e.toLowerCase()!==`input`&&!s.has(e)&&!c.has(e)&&!l.has(e)&&!u.has(e))return}if(t&&cr(e,n)||t&&I(n.attributes))return;let f=Zn(n,e.settings);if(r&&(f===`img`||s.has(f))){if(t&&er(n,e.settings))return;xre(n,n,e);return}if(i&&(f===`object`||c.has(f))){let t=n.parent;t&&E(t,`JSXElement`)&&Sre(n,t,n,e);return}if(a&&(f===`area`||l.has(f))){Cre(n,n,e);return}o&&(f.toLowerCase()===`input`&&(()=>{let e=F(n.attributes,`type`);return e?Xn(e)?.toLowerCase()===`image`:!1})()||u.has(f))&&wre(n,n,e)}}}}),Tre=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,Ere=[`click here`,`here`,`link`,`a link`,`learn more`],Dre=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??Ere}},Ore=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),kre=e=>E(e,`Literal`)&&typeof e.value==`string`?e.value:E(e,`TemplateLiteral`)?c(e):null,Nr=(e,t)=>{let n=e.openingElement,r=F(n.attributes,`aria-label`);if(r){let e=Xn(r);if(e!==null)return e}if(Zn(n,t)===`img`){let e=F(n.attributes,`alt`);if(e){let t=Xn(e);if(t!==null)return t}}if(er(n,t))return null;let i=[];for(let n of e.children){let e=n;if(E(e,`JSXText`))i.push(e.value);else if(E(e,`JSXElement`)){let n=Nr(e,t);n!==null&&i.push(n)}else if(E(e,`JSXExpressionContainer`)){let t=kre(e.expression);t!==null&&i.push(t)}}return i.join(``)},Pr=C({id:`anchor-ambiguous-text`,title:`Ambiguous link text`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Name where a link goes. Avoid 'click here', 'learn more', and 'link'.`,category:`Accessibility`,create:e=>{if(dt(e.filename))return kt;let t=Dre(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(Zn(t.openingElement,e.settings)!==`a`)return;let r=Nr(t,e.settings);if(r===null||r.trim().length===0)return;let i=Ore(r);n.has(i)&&e.report({node:t.openingElement.name,message:Tre(i)})}}}}),Fr=new Set(`alert.alertdialog.application.article.banner.blockquote.button.caption.cell.checkbox.code.columnheader.combobox.complementary.contentinfo.definition.deletion.dialog.directory.doc-abstract.doc-acknowledgments.doc-afterword.doc-appendix.doc-backlink.doc-biblioentry.doc-bibliography.doc-biblioref.doc-chapter.doc-colophon.doc-conclusion.doc-cover.doc-credit.doc-credits.doc-dedication.doc-endnote.doc-endnotes.doc-epigraph.doc-epilogue.doc-errata.doc-example.doc-footnote.doc-foreword.doc-glossary.doc-glossref.doc-index.doc-introduction.doc-noteref.doc-notice.doc-pagebreak.doc-pagelist.doc-part.doc-preface.doc-prologue.doc-pullquote.doc-qna.doc-subtitle.doc-tip.doc-toc.document.emphasis.feed.figure.form.generic.graphics-document.graphics-object.graphics-symbol.grid.gridcell.group.heading.img.insertion.link.list.listbox.listitem.log.main.mark.marquee.math.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.meter.navigation.none.note.option.paragraph.presentation.progressbar.radio.radiogroup.region.row.rowgroup.rowheader.scrollbar.search.searchbox.separator.slider.spinbutton.status.strong.subscript.superscript.switch.tab.table.tablist.tabpanel.term.textbox.time.timer.toolbar.tooltip.tree.treegrid.treeitem`.split(`.`)),Ir=new Set(`button.checkbox.columnheader.combobox.grid.gridcell.link.listbox.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.option.radio.radiogroup.row.rowheader.scrollbar.searchbox.separator.slider.spinbutton.switch.tab.tablist.textbox.toolbar.tree.treegrid.treeitem`.split(`.`)),Are=new Set(`alert.alertdialog.application.article.banner.blockquote.caption.cell.complementary.contentinfo.definition.deletion.dialog.directory.document.feed.figure.form.group.heading.img.insertion.list.listitem.log.main.marquee.math.navigation.note.paragraph.progressbar.region.rowgroup.search.status.table.tabpanel.term.time.timer.tooltip`.split(`.`)),jre=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),Lr=new Set([`presentation`,`none`]),Mre=e=>e.trim().split(/\s+/).find(e=>Fr.has(e))===`link`,Nre=e=>{let t=e.parent;for(;t;){if(E(t,`JSXAttribute`)){let e=t.parent;return e&&E(e,`JSXOpeningElement`)?tr(e.name)===`Trans`:!1}t=t.parent??null}return!1},Pre=e=>e.children.some(e=>{if(!E(e,`JSXElement`))return!1;let t=e,n=tr(t.openingElement.name);return!n||n[0]===n[0]?.toLowerCase()?!1:!F(t.openingElement.attributes,`aria-hidden`)}),Rr=C({id:`anchor-has-content`,title:`Anchor has no content`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Put readable text inside every link.`,category:`Accessibility`,create:e=>{let t=Or(e.settings),n=dt(e.filename);return{JSXElement(r){if(t&&n)return;let i=r.openingElement;if(Zn(i,e.settings)!==`a`)return;let a=F(i.attributes,`href`),o=F(i.attributes,`role`),s=o?Jt(o,e.scopes):[],c=s===null||s.some(e=>Mre(e));if(!(t&&!a&&!c)&&!er(i,e.settings)&&!(Dr(r,e.settings)||!t&&Pre(r))){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(F(i.attributes,e))return;t&&Nre(r)||e.report({node:i.name,message:"Blind users can't follow this link because screen readers announce nothing, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}}),zr=[`href`],Br=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return zr;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return zr;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?zr:r},Vr="Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions).",Hr="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",Ur="Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.",Fre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:[...Br(e),...n.specialLink??[]],components:new Set(n.components??[]),aspects:n.aspects?new Set(n.aspects):null}},Wr=(e,t)=>e.aspects===null||e.aspects.has(t),Ire=e=>{let t=e.parent;if(!t||!E(t,`JSXElement`))return!1;let n=t.parent;if(!n||!E(n,`JSXElement`))return!1;let r=tr(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},Lre=e=>!!F(e.attributes,`role`)&&!!F(e.attributes,`tabindex`)&&(!!F(e.attributes,`onkeydown`)||!!F(e.attributes,`onkeyup`)),Gr=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},Rre=e=>{if(E(e,`JSXExpressionContainer`)){let t=e.expression;if(E(t,`Identifier`)&&t.name===`undefined`||E(t,`Literal`)&&t.value===null)return!0}return!!E(e,`JSXFragment`)},zre=e=>{let t=e.value;if(!t)return`nullish`;if(E(t,`Literal`))return typeof t.value==`string`&&Gr(t.value,new Set)?`invalid`:`valid`;if(E(t,`JSXExpressionContainer`)){let e=t.expression;return E(e,`Identifier`)&&e.name===`undefined`?`nullish`:E(e,`Literal`)?e.value===null?`nullish`:typeof e.value==`string`&&Gr(e.value,new Set)?`invalid`:`valid`:E(e,`TemplateLiteral`)&&e.expressions.length===0&&Gr(e.quasis[0]?.value.cooked??``,new Set)?`invalid`:`valid`}return E(t,`JSXFragment`)?`nullish`:`valid`},Kr=C({id:`anchor-is-valid`,title:`Anchor used as a button`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Give links a real destination. Use `<button>` for in-page actions.",category:`Accessibility`,create:e=>{let t=Fre(e.settings),n=Or(e.settings),r=Fne(e.settings),i=dt(e.filename);return{JSXOpeningElement(a){if(n&&i)return;let o=Zn(a,e.settings),s=tr(a.name);if(o!==`a`&&(n||!s||!t.components.has(s))||n&&!r&&o!==`a`)return;if(!n){let n=!1,r=!1;for(let e of t.hrefAttributeNames){let t=F(a.attributes,e);if(!t)continue;let i=zre(t);i===`invalid`?(n=!0,r=!0):i===`valid`&&(n=!0)}let i=I(a.attributes),o=!!F(a.attributes,`onClick`);if(!n){!i&&Wr(t,`noHref`)&&(!o||!Wr(t,`preferButton`))&&e.report({node:a.name,message:Vr}),!i&&o&&Wr(t,`preferButton`)&&e.report({node:a.name,message:Ur});return}r&&(o&&Wr(t,`preferButton`)?e.report({node:a.name,message:Ur}):Wr(t,`invalidHref`)&&e.report({node:a.name,message:Hr}));return}let c;for(let e of t.hrefAttributeNames)if(c=F(a.attributes,e),c)break;if(c){if(!c.value){e.report({node:a.name,message:Hr});return}let n=Jt(c,e.scopes);if(n===null?Rre(c.value):n.length>0&&n.every(e=>Gr(e,t.validHrefs))){let t=!!F(a.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:a.name,message:t?Ur:Hr})}return}I(a.attributes)||Ire(a)||Lre(a)||e.report({node:a.name,message:Vr})}}}}),qr=C({id:`anchor-target-exists`,title:`Fragment link target is missing`,severity:`warn`,recommendation:`Add an element with the referenced id, or update the fragment link to point to an existing target.`,create:e=>{if(dt(e.filename))return kt;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(Zn(n,e.settings)!==`a`)return;let r=null;for(let t of Br(e.settings))if(r=R(n.attributes,t,!1),r)break;if(!r)return;let i=L(r);if(!i?.startsWith(`#`)||i.length===1||i.startsWith(`#/`)||i.startsWith(`#!`))return;let a=i.indexOf(`:~:`),o=i.slice(1,a===-1?void 0:a);!o||o.toLowerCase()===`top`||t.push({hrefAttribute:r,targetId:o})},"Program:exit"(){if(!n||t.length===0)return;let r=Xee({configuredRootDirectory:ye(e.settings,`rootDirectory`),currentFilePath:e.filename??``,currentProgramNode:n,currentScopes:e.scopes});if(r)for(let n of t)r.has(n.targetId)||e.report({node:n.hrefAttribute,message:`This fragment link points to "#${n.targetId}", but no matching static id was found in the project.`})}}}}),Bre=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),Jr=new Set(`a.abbr.acronym.address.applet.area.article.aside.audio.b.base.basefont.bdi.bdo.bgsound.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.command.content.data.datalist.dd.del.details.dfn.dialog.dir.div.dl.dt.element.em.embed.fieldset.figcaption.figure.font.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.image.img.input.ins.isindex.kbd.keygen.label.legend.li.link.listing.main.map.mark.marquee.math.menu.menuitem.meta.meter.multicol.nav.nextid.nobr.noembed.noframes.noscript.object.ol.optgroup.option.output.p.param.picture.plaintext.pre.progress.q.rb.rbc.rp.rt.rtc.ruby.s.samp.script.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.svg.table.tbody.td.template.textarea.tfoot.th.thead.time.title.tr.track.tt.u.ul.var.video.wbr.xmp`.split(`.`)),Yr=new Set(`abbr.address.article.aside.blockquote.br.caption.code.dd.del.details.dfn.dialog.dir.dl.dt.em.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.hr.html.iframe.img.ins.label.legend.li.main.mark.marquee.menu.meter.nav.ol.optgroup.output.p.pre.progress.ruby.section.strong.sub.sup.table.tbody.tfoot.thead.time.ul`.split(`.`)),Xr=e=>e.kind!==`const`||!E(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,Vre=new Set([``,`plaintext-only`,`true`]),Zr={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},Qr={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},$r={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},ei={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},Hre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),ti=(e,t,n)=>{let r=P(e);if(E(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?Zr:Qr;if(typeof r.value==`string`){let e=r.value.toLowerCase();return Vre.has(e)?Zr:e===`false`?Qr:$r}return $r}if(E(r,`ConditionalExpression`))return Hre(ti(r.consequent,t,n),ti(r.alternate,t,n));if(E(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return ei;let i=Xr(e);if(!i)return ei;let a=new Set(n);return a.add(e.id),ti(i,t,a)}return ei},ni=(e,t)=>{let n=F(e.attributes,`contenteditable`);return n?n.value?E(n.value,`Literal`)?ti(n.value,t,new Set):E(n.value,`JSXExpressionContainer`)?ti(n.value.expression,t,new Set):ei:Zr:null},Ure=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(E(r,`JSXElement`)){let e=r.openingElement;if(!Jr.has(Zn(e,n)))return!1;let i=ni(e,t);if(i){if(i.canBeEnabled&&!i.canBeDisabled&&!i.canBeInherited)return!0;if(!(i.canBeInherited&&!i.canBeDisabled&&!i.canBeEnabled))return!1}}r=r.parent}return!1},ri=(e,t,n)=>ni(e,t)?.canBeEnabled?!Ure(e,t,n):!1,ii=(e,t)=>{switch(e){case`audio`:case`button`:case`canvas`:case`datalist`:case`embed`:case`menuitem`:case`option`:case`select`:case`summary`:case`td`:case`th`:case`tr`:case`textarea`:case`video`:return!0;case`input`:{let e=F(t.attributes,`type`);if(e){let t=Xn(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return F(t.attributes,`href`)!==void 0;case`img`:return F(t.attributes,`usemap`)!==void 0;default:return!1}},ai=e=>{if(!e)return null;if(E(e,`Literal`)){if(typeof e.value==`number`)return e.value;if(typeof e.value==`string`){let t=Number(e.value);return Number.isFinite(t)?t:null}}if(E(e,`JSXExpressionContainer`)){let t=e.expression;if(E(t,`Literal`)){if(typeof t.value==`number`)return t.value;if(typeof t.value==`string`){let e=Number(t.value);return Number.isFinite(e)?e:null}}if(E(t,`UnaryExpression`)&&t.operator===`-`&&E(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(E(t,`TemplateLiteral`)){let e=c(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(E(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return E(t.test,`Literal`)?ai(e(t.test.value?t.consequent:t.alternate)):ai(e(t.consequent))}}return null},oi="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",si=C({id:`aria-activedescendant-has-tabindex`,title:`aria-activedescendant missing tabindex`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Add `tabIndex` so keyboard users can reach elements that use `aria-activedescendant`.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){if(!F(t.attributes,`aria-activedescendant`))return;let n=Zn(t,e.settings);if(!Jr.has(n))return;let r=F(t.attributes,`tabIndex`);if(r){let n=ai(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:oi});return}ii(n,t)||ri(t,e.scopes,e.settings)||e.report({node:t.name,message:oi})}})}),Wre=[`aria-label`,`aria-labelledby`,`alt`,`title`],ci=(e,t)=>{let n=R(e.attributes,t,!1);if(!n)return!1;let r=L(n);return r===null?null:r.trim().length>0},li=C({id:`aria-braille-equivalent`,title:`Braille-only accessible description`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Pair braille-specific labels and role descriptions with an equivalent accessible name or role description.`,create:e=>({JSXElement(t){let n=t.openingElement;if(I(n.attributes))return;if(ci(n,`aria-brailleroledescription`)===!0&&ci(n,`aria-roledescription`)===!1){let t=R(n.attributes,`aria-brailleroledescription`,!1);t&&e.report({node:t,message:`This braille role description has no non-braille equivalent. Add a nonempty aria-roledescription for other assistive technologies.`})}if(ci(n,`aria-braillelabel`)!==!0||Dr(t,e.settings)||Wre.map(e=>ci(n,e)).some(e=>e===!0||e===null))return;let r=R(n.attributes,`aria-braillelabel`,!1);r&&e.report({node:r,message:`This braille label is the element's only accessible name. Add visible text, aria-label, aria-labelledby, alt, or title for non-braille assistive technology.`})}})}),ui=new Map([[`aria-activedescendant`,{type:`id`}],[`aria-atomic`,{type:`boolean`}],[`aria-autocomplete`,{type:`token`,allowedTokens:[`inline`,`list`,`both`,`none`]}],[`aria-braillelabel`,{type:`string`}],[`aria-brailleroledescription`,{type:`string`}],[`aria-busy`,{type:`boolean`}],[`aria-checked`,{type:`tristate`}],[`aria-colcount`,{type:`integer`}],[`aria-colindex`,{type:`integer`}],[`aria-colspan`,{type:`integer`}],[`aria-controls`,{type:`idlist`}],[`aria-current`,{type:`token`,allowedTokens:[`page`,`step`,`location`,`date`,`time`,`true`,`false`]}],[`aria-describedby`,{type:`idlist`}],[`aria-description`,{type:`string`}],[`aria-details`,{type:`id`}],[`aria-disabled`,{type:`boolean`}],[`aria-dropeffect`,{type:`tokenlist`,allowedTokens:[`copy`,`execute`,`link`,`move`,`none`,`popup`]}],[`aria-errormessage`,{type:`id`}],[`aria-expanded`,{type:`true-false-undefined`}],[`aria-flowto`,{type:`idlist`}],[`aria-grabbed`,{type:`true-false-undefined`}],[`aria-haspopup`,{type:`token`,allowedTokens:[`false`,`true`,`menu`,`listbox`,`tree`,`grid`,`dialog`]}],[`aria-hidden`,{type:`true-false-undefined`}],[`aria-invalid`,{type:`token`,allowedTokens:[`grammar`,`false`,`spelling`,`true`]}],[`aria-keyshortcuts`,{type:`string`}],[`aria-label`,{type:`string`}],[`aria-labelledby`,{type:`idlist`}],[`aria-level`,{type:`integer`}],[`aria-live`,{type:`token`,allowedTokens:[`assertive`,`off`,`polite`]}],[`aria-modal`,{type:`boolean`}],[`aria-multiline`,{type:`boolean`}],[`aria-multiselectable`,{type:`boolean`}],[`aria-orientation`,{type:`token`,allowedTokens:[`horizontal`,`undefined`,`vertical`]}],[`aria-owns`,{type:`idlist`}],[`aria-placeholder`,{type:`string`}],[`aria-posinset`,{type:`integer`}],[`aria-pressed`,{type:`tristate`}],[`aria-readonly`,{type:`boolean`}],[`aria-relevant`,{type:`tokenlist`,allowedTokens:[`additions`,`all`,`removals`,`text`]}],[`aria-required`,{type:`boolean`}],[`aria-roledescription`,{type:`string`}],[`aria-rowcount`,{type:`integer`}],[`aria-rowindex`,{type:`integer`}],[`aria-rowspan`,{type:`integer`}],[`aria-selected`,{type:`true-false-undefined`}],[`aria-setsize`,{type:`integer`}],[`aria-sort`,{type:`token`,allowedTokens:[`ascending`,`descending`,`none`,`other`]}],[`aria-valuemax`,{type:`number`}],[`aria-valuemin`,{type:`number`}],[`aria-valuenow`,{type:`number`}],[`aria-valuetext`,{type:`string`}]]),Gre=e=>ui.has(e),Kre=e=>`Screen reader users get no help from \`${e}\` because it isn't a real ARIA attribute, so fix the spelling against the WAI-ARIA list.`,di=C({id:`aria-props`,title:`Invalid ARIA attribute`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Only use `aria-*` attributes that actually exist.",category:`Accessibility`,create:e=>({JSXAttribute(t){if(!E(t.name,`JSXIdentifier`))return;let n=rn(t.name);!n||!n.startsWith(`aria-`)||Gre(n)||e.report({node:t.name,message:Kre(n)})}})}),qre={"aria-activedescendant":{kind:`id`},"aria-details":{kind:`id`},"aria-errormessage":{kind:`id`},"aria-atomic":{kind:`boolean`},"aria-busy":{kind:`boolean`},"aria-disabled":{kind:`boolean`},"aria-modal":{kind:`boolean`},"aria-multiline":{kind:`boolean`},"aria-multiselectable":{kind:`boolean`},"aria-readonly":{kind:`boolean`},"aria-required":{kind:`boolean`},"aria-braillelabel":{kind:`string`},"aria-brailleroledescription":{kind:`string`},"aria-description":{kind:`string`},"aria-keyshortcuts":{kind:`string`},"aria-label":{kind:`string`},"aria-placeholder":{kind:`string`},"aria-roledescription":{kind:`string`},"aria-valuetext":{kind:`string`},"aria-checked":{kind:`tristate`},"aria-pressed":{kind:`tristate`},"aria-colcount":{kind:`integer`},"aria-colindex":{kind:`integer`},"aria-colspan":{kind:`integer`},"aria-level":{kind:`integer`},"aria-posinset":{kind:`integer`},"aria-rowcount":{kind:`integer`},"aria-rowindex":{kind:`integer`},"aria-rowspan":{kind:`integer`},"aria-setsize":{kind:`integer`},"aria-controls":{kind:`id-list`},"aria-describedby":{kind:`id-list`},"aria-flowto":{kind:`id-list`},"aria-labelledby":{kind:`id-list`},"aria-owns":{kind:`id-list`},"aria-expanded":{kind:`optional-boolean`},"aria-grabbed":{kind:`optional-boolean`},"aria-hidden":{kind:`optional-boolean`},"aria-selected":{kind:`optional-boolean`},"aria-valuemax":{kind:`number`},"aria-valuemin":{kind:`number`},"aria-valuenow":{kind:`number`},"aria-autocomplete":{kind:`token`,tokens:[`none`,`inline`,`list`,`both`]},"aria-current":{kind:`token`,tokens:[`page`,`step`,`location`,`date`,`time`,`true`,`false`]},"aria-haspopup":{kind:`token`,tokens:[`false`,`true`,`menu`,`listbox`,`tree`,`grid`,`dialog`]},"aria-invalid":{kind:`token`,tokens:[`grammar`,`false`,`spelling`,`true`]},"aria-live":{kind:`token`,tokens:[`assertive`,`off`,`polite`]},"aria-orientation":{kind:`token`,tokens:[`horizontal`,`undefined`,`vertical`]},"aria-sort":{kind:`token`,tokens:[`ascending`,`descending`,`none`,`other`]},"aria-dropeffect":{kind:`token-list`,tokens:[`copy`,`execute`,`link`,`move`,`none`,`popup`]},"aria-relevant":{kind:`token-list`,tokens:[`additions`,`all`,`removals`,`text`]}},Jre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:return`'true' or 'false'`;case`tristate`:return`'true', 'false', or 'mixed'`;case`string`:return`a string value`;case`integer`:return`an integer value`;case`number`:return`a number value`;case`id`:return`a single element ID`;case`id-list`:return`a space-separated list of element IDs`;case`token`:return`one of: ${e.tokens.join(`, `)}`;case`token-list`:return`a space-separated list of: ${e.tokens.join(`, `)}`}},fi=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${Jre(t)}.`,Yre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:case`tristate`:case`string`:return!0;case`token`:case`token-list`:return e.tokens.includes(`true`);default:return!1}},pi=e=>{if(E(e,`Literal`))return typeof e.value==`boolean`?e.value:typeof e.value==`string`?e.value.length>0:typeof e.value==`number`?e.value!==0&&!Number.isNaN(e.value):e.value===null?!1:null;if(E(e,`TemplateLiteral`)){let t=c(e);return t===null?null:t.length>0}if(E(e,`UnaryExpression`)&&e.operator===`!`){let t=pi(e.argument);return t===null?null:!t}return null},Xre=e=>{if(E(e,`Literal`))return!0;if(E(e,`JSXExpressionContainer`)){let t=e.expression;return E(t,`Literal`)?t.value!==null:E(t,`TemplateLiteral`)?!0:E(t,`UnaryExpression`)&&t.operator===`!`?pi(t.argument)!==null:!1}return!1},mi=(e,t)=>{if(E(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(E(e,`JSXExpressionContainer`)){let n=e.expression;if(E(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(E(n,`TemplateLiteral`))return c(n)?.toLowerCase()??null;if(t&&E(n,`UnaryExpression`)&&n.operator===`!`){let e=pi(n.argument);return e===null?null:String(!e)}}return null},hi=e=>{if(!E(e,`JSXExpressionContainer`))return!1;let t=e.expression;return E(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},Zre=(e,t)=>{if(!Xre(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=mi(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=mi(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return hi(t)?!0:mi(t,!1)!==null;case`integer`:case`number`:{let e=mi(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(E(t,`JSXExpressionContainer`)){let e=t.expression;if(E(e,`Literal`)&&typeof e.value==`number`||E(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&E(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(hi(t))return!0;let e=mi(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=mi(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=mi(t,!0);if(n===null)return!1;let r=n.split(/\s+/).filter(e=>e.length>0);return r.length===0?!1:r.every(t=>e.tokens.includes(t))}}},gi=C({id:`aria-proptypes`,title:`Invalid ARIA attribute value`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give each `aria-*` attribute the kind of value it expects.",category:`Accessibility`,create:e=>({JSXAttribute(t){if(!E(t.name,`JSXIdentifier`))return;let n=rn(t.name);if(!n)return;let r=n.toLowerCase(),i=qre[r];if(i){if(!t.value){Yre(i)||e.report({node:t,message:fi(r,i)});return}Zre(i,t.value)||e.report({node:t,message:fi(r,i)})}}})}),_i=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,Qre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??Or(e)}},vi=C({id:`aria-role`,title:`Invalid ARIA role`,tags:[`react-jsx-only`],severity:`error`,recommendation:`Use a real, non-abstract ARIA role so assistive tech can expose the element correctly.`,category:`Accessibility`,create:e=>{let t=Qre(e.settings);return{JSXOpeningElement(n){let r=F(n.attributes,`role`);if(!r)return;let i=Zn(n,e.settings);if(t.ignoreNonDOM&&!Jr.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:_i(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!Fr.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:_i(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:_i(``)});return}if(E(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:_i(``)});return}a([o.value]);return}if(E(o,`JSXExpressionContainer`)){let t=o.expression;if(E(t,`Literal`)&&t.value===null){e.report({node:r,message:_i(``)});return}if(E(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:_i(``)});return}let n=Jt(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:_i(``)})}}}}),$re=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,yi=C({id:`aria-unsupported-elements`,title:`ARIA on unsupported element`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Do not put `role` or `aria-*` on reserved HTML elements.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){let n=Zn(t,e.settings);if(Bre.has(n))for(let r of t.attributes){if(!E(r,`JSXAttribute`)||!E(r.name,`JSXIdentifier`))continue;let t=rn(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:$re(n,t)})}}})}),bi=(e,t)=>{if(e){if(E(e,`Identifier`)){t.add(e.name);return}if(E(e,`AssignmentPattern`)){bi(e.left,t);return}if(E(e,`RestElement`)){bi(e.argument,t);return}if(E(e,`ArrayPattern`)){for(let n of e.elements??[])bi(n,t);return}if(E(e,`ObjectPattern`))for(let n of e.properties??[]){if(E(n,`RestElement`)){bi(n.argument,t);continue}E(n,`Property`)&&bi(n.value,t)}}},xi=(e,t,n)=>{if(e&&!E(e,`Identifier`)){if(E(e,`AssignmentPattern`)){Si(e.right,t,n),xi(e.left,t,n);return}if(E(e,`RestElement`)){xi(e.argument,t,n);return}if(E(e,`ArrayPattern`)){for(let r of e.elements??[])xi(r,t,n);return}if(E(e,`ObjectPattern`))for(let r of e.properties??[]){if(E(r,`RestElement`)){xi(r.argument,t,n);continue}E(r,`Property`)&&(r.computed&&Si(r.key,t,n),xi(r.value,t,n))}}},eie=(e,t,n)=>{if(!E(e,`FunctionDeclaration`)&&!E(e,`FunctionExpression`)&&!E(e,`ArrowFunctionExpression`))return;let r=new Set(n);for(let t of e.params??[])bi(t,r);for(let n of e.params??[])xi(n,t,r);Si(e.body,t,r)},Si=(e,t,n)=>{if(!e)return;if(E(e,`Identifier`)){n.has(e.name)||t.add(e.name);return}if(E(e,`MemberExpression`)){Si(e.object,t,n),e.computed&&Si(e.property,t,n);return}if(E(e,`Property`)){e.computed&&Si(e.key,t,n),Si(e.value,t,n);return}if(E(e,`FunctionDeclaration`)||E(e,`FunctionExpression`)||E(e,`ArrowFunctionExpression`)){eie(e,t,n);return}if(E(e,`TSAsExpression`)||E(e,`TSSatisfiesExpression`)||E(e,`TSTypeAssertion`)||E(e,`TSNonNullExpression`)||E(e,`TSInstantiationExpression`)){Si(e.expression,t,n);return}if(typeof e.type==`string`&&e.type.startsWith(`TS`))return;let r=e;for(let e of Object.keys(r)){if(e===`parent`||qte.has(e))continue;let i=r[e];if(Array.isArray(i))for(let e of i)j(e)&&Si(e,t,n);else j(i)&&Si(i,t,n)}},Ci=(e,t)=>Si(e,t,new Set),wi=e=>{if(!e)return!1;let t=!1;return D(e,e=>{if(t||E(e,`FunctionDeclaration`)||E(e,`FunctionExpression`)||E(e,`ArrowFunctionExpression`))return!1;if(E(e,`AwaitExpression`))return t=!0,!1}),t},Ti=e=>{let t=e;E(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!E(n,`Property`)||n.value!==t||!n.parent||!E(n.parent,`ObjectPattern`)?null:A(n,{allowComputedString:!0})},tie=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),Ei=(e,t)=>{let n=P(e);return E(n,`Literal`)?!0:E(n,`Identifier`)?t.has(n.name):E(n,`BinaryExpression`)||E(n,`LogicalExpression`)?Ei(n.left,t)&&Ei(n.right,t):E(n,`UnaryExpression`)?n.operator!==`delete`&&Ei(n.argument,t):E(n,`ConditionalExpression`)?Ei(n.test,t)&&Ei(n.consequent,t)&&Ei(n.alternate,t):E(n,`TemplateLiteral`)?n.expressions.every(e=>Ei(e,t)):!1},Di=(e,t,n)=>{let r=P(e);if(!E(r,`CallExpression`)||!r.arguments.every(e=>!E(e,`SpreadElement`)&&Ei(e,t)))return!1;let i=P(r.callee);if(!E(i,`MemberExpression`)||k(i)!==`resolve`)return!1;let a=P(i.object);return E(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},nie=(e,t,n)=>!E(e,`ExpressionStatement`)||!E(e.expression,`AwaitExpression`)?!1:Di(e.expression.argument,t,n),rie=(e,t)=>{if(!E(e,`ExpressionStatement`)||!E(e.expression,`AssignmentExpression`)||!tie.has(e.expression.operator))return!1;let n=P(e.expression.left);if(!E(n,`MemberExpression`)||k(n)===null)return!1;let r=P(n.object);return E(r,`Identifier`)&&t.has(r.name)&&E(P(e.expression.right),`Literal`)},iie=(e,t)=>{if(!w(e))return!1;let n=new Set;for(let t of e.params){if(!E(t,`Identifier`))return!1;n.add(t.name)}if(!e.async){if(!E(e.body,`BlockStatement`))return Di(e.body,n,t);if(e.body.body.length!==1)return!1;let[r]=e.body.body;return!!(E(r,`ReturnStatement`)&&r.argument&&Di(r.argument,n,t))}if(!E(e.body,`BlockStatement`))return Ei(e.body,n);let r=e.body.body;for(let e=0;e<r.length;e++){let i=r[e],a=e===r.length-1;if(!nie(i,n,t)&&!(E(i,`ExpressionStatement`)&&Ei(i.expression,n)))return rie(i,n)?a:!E(i,`ReturnStatement`)||!a?!1:!i.argument||Ei(i.argument,n)||Di(i.argument,n,t)}return!0},aie=(e,t)=>E(e,`Property`)?qt(e,t,{allowConstTemplateLiteral:!0}):null,oie=(e,t)=>E(e,`MemberExpression`)?qt(e,t,{allowConstTemplateLiteral:!0}):null,Oi=(e,t,n,r,i)=>{let a=P(e);if(E(a,`Identifier`)){let e=r.symbolFor(a);return!e||e.kind!==`const`||!e.initializer||i.has(e.id)||bn(e,n,r)||qe(a,t,r)?null:(i.add(e.id),Oi(e.initializer,t,n,r,i))}if(!E(a,`ObjectExpression`))return null;let o=null;for(let e of a.properties){if(!E(e,`Property`)||e.kind!==`init`)return null;let n=aie(e,r);if(n===null)return null;n===t&&(o=e)}if(!o||!E(o,`Property`))return null;let s=P(o.value);return w(s)?s:ki(s,n,r,i)},ki=(e,t,n,r)=>{let i=P(e);if(w(i))return i;if(E(i,`MemberExpression`)){let e=oie(i,n);return e===null?null:Oi(P(i.object),e,t,n,r)}if(!E(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||bn(a,t,n)||(r.add(a.id),!a.initializer))return null;let o=P(a.initializer),s=Ti(a.bindingIdentifier);return s===null?w(o)?o:a.kind===`const`?ki(o,t,n,r):null:Oi(o,s,t,n,r)},Ai=(e,t)=>{let n=P(e);return!E(n,`CallExpression`)||On(n,t)?null:ki(n.callee,n,t,new Set)},ji=(e,t)=>{let n=Ai(e,t);return n&&iie(n,t)?n:null},z=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},Mi=e=>!!(e&&(E(e,`ArrowFunctionExpression`)||E(e,`FunctionExpression`))),sie=(e,t)=>{if(!E(e,`LogicalExpression`))return!1;let n=b(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?z(t,n):!!(e.operator===`||`&&r&&z(t,r));return E(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):E(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(E(r,`WhileStatement`)||E(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||E(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?z(t,r.body):!1},Ni=(e,t,n)=>{let r=n.cfg.enclosingFunction(t);if(!r||n.cfg.enclosingFunction(e)!==r)return!1;let i=n.cfg.cfgFor(r),a=i?.blockOf(e),o=i?.blockOf(t);if(!i||!a||!o)return!1;let s=e,c=e.parent??null;for(;c&&c!==r;){let e=null;if(E(c,`LogicalExpression`)&&c.right===s||E(c,`ConditionalExpression`)&&c.test!==s||E(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(E(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||E(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!z(t,e)&&!sie(c,t))return!1;s=c,c=c.parent??null}let l=(e,t,n)=>{let r=new Set,i=e===n?[]:[e];for(;i.length>0;){let e=i.shift();if(!(!e||r.has(e))){if(e===t)return!0;r.add(e);for(let t of e.successors)t.to!==n&&i.push(t.to)}}return!1};return!l(i.entry,a)||!l(i.entry,o)?!1:a===o?e.range[0]<t.range[0]:!l(i.entry,o,a)},B=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(E(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e)return t.scopes.isGlobalReference(r)?`global:${r.name}`:null;if(n.has(e.id))return`symbol:${e.id}`;n.add(e.id);let i=e.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=E(i,`Property`)?A(i):null;if(s&&E(a,`ObjectPattern`)&&E(o,`VariableDeclarator`)&&o.id===a){let r=B(o.init,t,n);return r?`${r}.${s}`:`symbol:${e.id}`}let c=e.initializer?P(e.initializer):null;return e.kind===`const`&&c&&(E(c,`Identifier`)||E(c,`MemberExpression`))?B(c,t,n)??`symbol:${e.id}`:`symbol:${e.id}`}if(E(r,`MemberExpression`)){let e=A(r,{allowComputedString:!0});if(!e)return null;let i=B(r.object,t,n);return i?`${i}.${e}`:null}if(E(r,`ThisExpression`))return`this`;if(E(r,`Literal`)&&(typeof r.value==`string`||typeof r.value==`number`))return`literal:${String(r.value)}`;if(w(r)){let e=S(r);return e===null?null:`function:${e}`}return null},cie=new Set(lr),lie=new Set([`push`,`unshift`]),uie=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setTimeout`]),die=new Set([`yieldNow`,`yieldTo`,`yieldToBrowser`,`slice`,`sliceYield`,`nextFrame`,`breathe`,`onYield`,`onProgress`,`progress`,`onStep`,`step`,`runStage`]),fie=e=>E(e,`Identifier`)?e.name:E(e,`MemberExpression`)&&E(e.property,`Identifier`)?e.property.name:null,Pi=e=>E(e,`ForStatement`)||E(e,`ForInStatement`)||E(e,`ForOfStatement`)||E(e,`WhileStatement`)||E(e,`DoWhileStatement`)?e.body:null,pie=(e,t=!1,n)=>{let r=null;return D(e,i=>{if(r||i!==e&&w(i)||t&&i!==e&&cie.has(i.type))return!1;E(i,`AwaitExpression`)&&!n?.(i)&&(r=i)}),r},Fi=e=>{if(E(e,`Identifier`))return gr.has(e.name);if(E(e,`MemberExpression`)&&E(e.property,`Identifier`)){let t=P(e.object);return e.property.name===`check`&&E(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)?!0:gr.has(e.property.name)}return!1},mie=(e,t)=>{if(E(e.callee,`Identifier`)&&uie.has(e.callee.name)&&t.scopes.isGlobalReference(e.callee))return!0;if(!E(e.callee,`MemberExpression`)||!E(e.callee.property,`Identifier`)||!uie.has(e.callee.property.name))return!1;let n=P(e.callee.object);return E(n,`Identifier`)&&(n.name===`globalThis`||n.name===`window`)&&t.scopes.isGlobalReference(n)},hie=(e,t,n=new Set)=>{if(!w(e)||n.has(e))return!1;n.add(e);let r=!1,i=!1;return D(e.body,a=>{if(a!==e.body&&w(a))return!1;if(E(a,`NewExpression`)&&E(a.callee,`Identifier`)&&a.callee.name===`Promise`&&t.scopes.isGlobalReference(a.callee)){let e=b(a),n=e.parent,i=E(n,`ReturnStatement`)&&n.argument===e||E(n,`AwaitExpression`)&&n.argument===e||w(n)&&n.body===e,o=a.arguments[0];i&&w(o)&&D(o.body,e=>{if(e!==o.body&&w(e))return!1;E(e,`CallExpression`)&&mie(e,t)&&(r=!0)})}if(!E(a,`CallExpression`)||mie(a,t))return;let o=Ai(a,t.scopes);if(o!==null){hie(o,t,n)&&(i=!0);return}Fi(a.callee)&&(i=!0)}),r||i},gie=(e,t)=>{if(!E(e,`AwaitExpression`))return!1;let n=e.argument;if(!n||!E(n,`CallExpression`))return!1;if(n.arguments.some(e=>{if(E(e,`SpreadElement`))return!1;let t=P(e);return E(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)}))return!0;let r=Ai(n,t.scopes);if(r!==null&&hie(r,t))return!0;if(ji(n,t.scopes)!==null)return!1;let i=fie(n.callee);return r!==null&&i&&die.has(i)?!1:Fi(n.callee)},_ie=(e,t)=>E(e,`AwaitExpression`)&&!!e.argument&&On(e.argument,t.scopes),vie=new Set([`all`,`allSettled`,`race`,`any`]),Ii=e=>{if(!E(e,`CallExpression`))return!1;let t=e.callee;return!E(t,`MemberExpression`)||t.computed||!E(t.object,`Identifier`)||t.object.name!==`Promise`||!E(t.property,`Identifier`)?!1:vie.has(t.property.name)},yie=e=>E(e,`AwaitExpression`)?Ii(e.argument):!1,bie=e=>{if(!E(e,`AwaitExpression`))return!1;let t=e.argument;if(!E(t,`NewExpression`)||!E(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(E(n,`Identifier`)&&gr.has(n.name))return!0;if(!Mi(n))return!1;let r=n.params?.[0],i=E(r,`Identifier`)?r.name:null,a=!1;return D(n.body,e=>{if(a)return!1;if(E(e,`CallExpression`)&&Fi(e.callee)||i&&E(e,`AssignmentExpression`)&&E(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},xie=e=>{let t=e;for(;E(t,`MemberExpression`);)t=t.object;return E(t,`Identifier`)?t.name:null},Sie=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Cie=(e,t)=>!!t&&e.references.some(e=>{let n=b(e.identifier),r=n.parent;return E(r,`ReturnStatement`)&&r.argument===n&&M(r)===t}),Li=(e,t,n)=>{if(E(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(E(e,`ObjectPattern`)){for(let r of e.properties??[])E(r,`Property`)&&r.value?Li(r.value,t,n):E(r,`RestElement`)&&r.argument&&Li(r.argument,t,n);return}if(E(e,`ArrayPattern`)){for(let r of e.elements??[])r&&Li(r,t,n);return}E(e,`AssignmentPattern`)&&e.left&&Li(e.left,t,n)},Ri=(e,t)=>{let n=new Set;return D(e,r=>{if(r!==e&&w(r))return!1;if(!E(r,`Identifier`))return;let i=t.symbolFor(r);i&&n.add(i.id)}),n},wie=(e,t)=>{let n=new Set;if(E(e,`ForOfStatement`)||E(e,`ForInStatement`))if(E(e.left,`VariableDeclaration`))for(let r of e.left.declarations)Li(r.id,t,n);else Li(e.left,t,n);return n},Tie=(e,t,n=null)=>{let r=new Set,i=[];D(e,a=>{if(a!==e&&w(a))return!1;if(E(a,`VariableDeclarator`)&&a.id&&a.init){let e=new Set;if(Li(a.id,t,e),n&&z(n,a.init)||!n&&wi(a.init))for(let t of e)r.add(t);let o=Ri(a.init,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o});return}if(E(a,`AssignmentExpression`)&&a.left){let e=new Set;if(Li(a.left,t,e),n&&z(n,a.right)||!n&&wi(a.right))for(let t of e)r.add(t);let o=Ri(a.right,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o})}});let a=!0;for(;a;){a=!1;for(let{declaredSymbolId:e,referencedSymbolIds:t}of i)if(!r.has(e)){for(let n of t)if(r.has(n)){r.add(e),a=!0;break}}}return r},Eie=e=>E(e,`Identifier`)?e:E(e,`AssignmentPattern`)&&E(e.left,`Identifier`)?e.left:null,Die=(e,t)=>{if(!E(e,`AwaitExpression`))return!1;let n=e.argument;if(!E(n,`CallExpression`))return!1;let r=Ai(n,t.scopes);if(!w(r))return!1;let i=M(n),a=t.scopes.ownScopeFor(r);if(!a)return!1;let o=Tie(r.body,t.scopes),s=new Set;for(let[e,a]of r.params.entries()){let r=Eie(a);if(!r)continue;let o=n.arguments[e];if(!E(o,`Identifier`))continue;let c=t.scopes.symbolFor(r),l=t.scopes.symbolFor(o);c&&l&&(Cie(l,i)||l.id===c.id)&&s.add(c.id)}let c=!1;return D(r.body,e=>{if(c||e!==r.body&&w(e))return!1;if(!E(e,`CallExpression`))return;let n=e.callee;if(!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)||!lie.has(n.property.name))return;let l=!1;for(let n of e.arguments??[]){if(wi(n)){l=!0;break}let e=Ri(n,t.scopes);for(let t of e)if(o.has(t)){l=!0;break}if(l)break}if(!l)return;let u=n.object;for(;E(u,`MemberExpression`);)u=u.object;if(!E(u,`Identifier`))return;let d=t.scopes.symbolFor(u);if(d&&(s.has(d.id)||!Sie(d.scope,a)&&Cie(d,i)))return c=!0,!1}),c},Oie=e=>{if(!E(e,`AwaitExpression`))return null;let t=P(e.argument);return E(t,`CallExpression`)&&E(P(t.callee),`MemberExpression`)?t:null},kie=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=wie(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=Ri(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},Aie=e=>{if(!E(e,`CallExpression`))return null;let t=P(e.callee);return E(t,`MemberExpression`)?t.object:null},zi=e=>{let t=P(e);for(;E(t,`MemberExpression`);)t=P(t.object);return t},jie=(e,t,n,r)=>{let i=Pi(n);if(!i)return!1;let a=zi(e);if(E(a,`Identifier`)){let e=r.scopes.symbolFor(a);if(!e||z(e.bindingIdentifier,n))return!1}else if(!E(a,`ThisExpression`))return!1;let o=!1;return D(i,e=>{if(o||e!==i&&w(e))return!1;let n=null;if(E(e,`AssignmentExpression`)?n=e.left:(E(e,`UpdateExpression`)||E(e,`UnaryExpression`)&&e.operator===`delete`)&&(n=e.argument),n&&B(n,r)===t)return o=!0,!1}),!o},Mie=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=Aie(e);return!r||B(r,n)!==t?!1:!E(b(e).parent,`ExpressionStatement`)},Nie=(e,t,n,r)=>{let i=Pi(t);if(!i)return!1;let a=!1,o=!1;return D(i,t=>{if(a&&o||t!==i&&w(t))return!1;z(t,e)||Mie(t,n,r)&&(Ni(t,e,r)&&(a=!0),Ni(e,t,r)&&(o=!0))}),a&&o},Pie=(e,t)=>{let n=M(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||M(e.identifier)!==n)return!1;let r=b(e.identifier),i=r.parent;if(!E(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=P(i.callee);return E(a,`MemberExpression`)?E(zi(a.object),`ThisExpression`):!1})},Fie=(e,t,n)=>{let r=new Set;return D(t,i=>{if(i!==t&&w(i))return!1;let a=null,o=null;E(i,`VariableDeclarator`)&&i.init?(a=i.id,o=i.init):E(i,`AssignmentExpression`)&&(a=i.left,o=i.right),!(!a||!o||!z(e,o))&&Li(a,n.scopes,r)}),r},Iie=(e,t,n)=>{let r=P(e);if(!E(r,`MemberExpression`))return!1;let i=zi(r);if(!E(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},Lie=(e,t,n)=>{let r=Pi(t);if(!r)return!1;let i=Fie(e,r,n);if(i.size===0)return!1;let a=!1;return D(r,o=>{if(a||o!==r&&w(o))return!1;if(!E(o,`CallExpression`)||!Ni(e,o,n))return;let s=o.callee;if(!E(s,`MemberExpression`)||s.computed||!E(s.property,`Identifier`)||!lie.has(s.property.name))return;let c=zi(s.object);if(!E(c,`Identifier`))return;let l=n.scopes.symbolFor(c);if(!(!l||z(l.bindingIdentifier,t)||!Pie(l,t))){for(let e of o.arguments)if(Iie(e,i,n))return a=!0,!1}}),a},Rie=(e,t,n)=>{let r=Oie(e);if(!r||!kie(r,t,n))return!1;let i=Aie(r);if(!i)return!1;let a=B(i,n);return!a||!jie(i,a,t,n)?!1:Nie(e,t,a,n)||E(zi(i),`ThisExpression`)&&E(P(i),`MemberExpression`)&&Lie(e,t,n)},zie=(e,t)=>_ie(e,t)||gie(e,t)||yie(e)||bie(e)||Die(e,t),Bi=(e,t)=>{if(E(e,`Identifier`))t.add(e.name);else if(E(e,`ObjectPattern`))for(let n of e.properties??[])E(n,`Property`)&&n.value?Bi(n.value,t):E(n,`RestElement`)&&n.argument&&Bi(n.argument,t);else if(E(e,`ArrayPattern`))for(let n of e.elements??[])n&&Bi(n,t);else E(e,`AssignmentPattern`)&&e.left&&Bi(e.left,t)},Bie=new Set([`push`,`unshift`,`splice`]),Vi=(e,t)=>{let n=[];D(e,t=>{if(t!==e&&w(t))return!1;if(!E(t,`VariableDeclarator`)||!t.init||!E(t.id,`Identifier`))return;let r=new Set;Ci(t.init,r),n.push({declaredName:t.id.name,referencedNames:r})});let r=!0;for(;r;){r=!1;for(let{declaredName:e,referencedNames:i}of n)if(!t.has(e)){for(let n of i)if(t.has(n)){t.add(e),r=!0;break}}}},Vie=e=>{let t=new Set,n=new Set;if(D(e,r=>{if(r!==e&&w(r))return!1;if(E(r,`AssignmentExpression`)&&r.left){Bi(r.left,t);return}if(E(r,`AwaitExpression`)&&r.argument){Ci(r.argument,n);return}if(!E(r,`CallExpression`))return;let i=r.callee;E(i,`MemberExpression`)&&!i.computed&&E(i.property,`Identifier`)&&Bie.has(i.property.name)&&E(i.object,`Identifier`)&&t.add(i.object.name)}),t.size===0)return!1;Vi(e,t);for(let e of t)if(n.has(e))return!0;return!1},Hie=new Set([...lr,`SwitchStatement`]),Uie=e=>{let t=new Set;return D(e,n=>{if(n!==e&&w(n))return!1;E(n,`VariableDeclarator`)&&n.id&&wi(n.init)&&Bi(n.id,t),E(n,`AssignmentExpression`)&&n.left&&wi(n.right)&&Bi(n.left,t)}),t},Hi=(e,t)=>{if(!e)return!1;if(wi(e))return!0;let n=new Set;Ci(e,n);for(let e of n)if(t.has(e))return!0;return!1},Wie=(e,t,n)=>{if(e.label)return E(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(Hie.has(r.type))return!1;r=r.parent}return!0},Gie=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),Ui=e=>{if(!e)return!1;if(Gie.has(e.type))return!0;if(E(e,`BlockStatement`)){let t=e.body??[];return Ui(t[t.length-1])}return!1},Kie=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(E(r,`IfStatement`)&&Hi(r.test,n)&&(Ui(r.consequent)||Ui(r.alternate)))return!0}return!1},qie=(e,t,n)=>{if(E(e,`ReturnStatement`)&&e.argument&&Hi(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(E(a,`IfStatement`)){if(Hi(a.test,n))return!0;r=!0}if(E(a,`TryStatement`)&&a.handler&&i===a.block&&wi(a.block)&&!r||E(a,`SwitchStatement`)&&Hi(a.discriminant,n)||E(a,`BlockStatement`)&&Kie(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},Jie=(e,t)=>{let n=Uie(e);Vi(e,n);let r=!1;return D(e,i=>{if(r||i!==e&&w(i))return!1;if((E(i,`ReturnStatement`)||E(i,`BreakStatement`)&&Wie(i,e,t))&&qie(i,e,n))return r=!0,!1}),r},Yie=new Set([...Bie,`pop`,`shift`]),Xie=e=>{let t=new Set;return D(e,n=>{if(n!==e&&w(n))return!1;if(E(n,`AssignmentExpression`)&&n.left){Bi(n.left,t);let e=xie(n.left);e&&t.add(e);return}if(!E(n,`CallExpression`))return;let r=n.callee;if(E(r,`MemberExpression`)&&!r.computed&&E(r.property,`Identifier`)&&Yie.has(r.property.name)){let e=xie(r.object);e&&t.add(e)}}),t},Zie=(e,t)=>{if(!e)return!1;let n=new Set;if(Ci(e,n),n.size===0)return!1;let r=Xie(t),i=Uie(t);Vi(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},Qie=e=>{let t=e.parent;return E(t,`LabeledStatement`)&&E(t.label,`Identifier`)?t.label.name:null},$ie=(e,t)=>{let n=!1;return D(e,e=>{if(n||Mi(e)||E(e,`FunctionDeclaration`))return!1;if(E(e,`AwaitExpression`)&&zie(e,t))return n=!0,!1}),n},eae=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),tae=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),nae=e=>{let t=e;for(;;){t=b(t);let e=t.parent;if(!e)return t;if(E(e,`SpreadElement`)||E(e,`ArrayExpression`)){t=e;continue}if(E(e,`LogicalExpression`)){t=e;continue}if(E(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(E(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(E(n,`CallExpression`)&&n.callee===e&&!e.computed&&E(e.property,`Identifier`)&&tae.has(e.property.name)){t=n;continue}}return t}},Wi=e=>{let t=e;for(;t.parent&&!w(t);)t=t.parent;return t},rae=(e,t)=>{let n=!1;return D(t,t=>{if(n)return!1;if(!Ii(t))return;let r=new Set;for(let e of t.arguments??[])Ci(e,r);if(r.has(e))return n=!0,!1}),n},iae=e=>{let t=nae(e),n=t.parent;if(E(n,`CallExpression`)&&Ii(n)&&(n.arguments??[]).some(e=>e===t))return!0;let r=null;return E(n,`VariableDeclarator`)&&n.init===t&&E(n.id,`Identifier`)?r=n.id.name:E(n,`AssignmentExpression`)&&n.right===t&&E(n.left,`Identifier`)&&(r=n.left.name),!r||!n?!1:rae(r,Wi(n))},aae=e=>{let t=Wi(e);if(!w(t))return!1;let n=null;return E(t,`FunctionDeclaration`)&&E(t.id,`Identifier`)?n=t.id.name:E(t.parent,`VariableDeclarator`)&&E(t.parent.id,`Identifier`)&&(n=t.parent.id.name),!n||!t.parent?!1:rae(n,Wi(t.parent))},oae=C({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:"Collect the items, then use `await Promise.all(items.map(...))` so independent work runs at the same time",create:e=>{let t=!1,n=(n,r)=>{if(t)return;let i=n.body;if(!i||$ie(i,e)||(E(n,`WhileStatement`)||E(n,`DoWhileStatement`))&&Zie(n.test,i)||Vie(i)||Jie(i,Qie(n))||aae(n))return;let a=pie(i,!0,t=>Rie(t,n,e));a&&e.report({node:a,message:`This makes the ${r} slow because each await runs one after another, so collect the independent calls & run them together with \`await Promise.all(items.map(...))\``})};return{ImportDeclaration(e){_r(e.source?.value)&&(t=!0)},ForStatement(e){n(e,`for-loop`)},ForInStatement(e){n(e,`for…in loop`)},ForOfStatement(e){e.await||n(e,`for…of loop`)},WhileStatement(e){n(e,`while-loop`)},DoWhileStatement(e){n(e,`do-while loop`)},CallExpression(n){if(t||!E(n.callee,`MemberExpression`)||!E(n.callee.property,`Identifier`))return;let r=n.callee.property.name;if(!eae.has(r))return;let i=n.arguments?.[0];if(!i||!Mi(i)||!i.async)return;let a=i.body;if(!a||(r===`map`||r===`flatMap`)&&iae(n))return;let o=pie(a);if(o){let t=r===`forEach`?"Async callback in .forEach silently drops every await, so the work never finishes before the loop moves on. Use a `for…of` loop, or `await Promise.all(items.map(async (item) => {...}))`":`Async callback in .${r} runs the awaits one after another, so it is slow. Use \`await Promise.all(items.map(async (item) => {...}))\` to run them at the same time`;e.report({node:o,message:t})}}}}}),Gi=(e,t)=>{if(e){if(E(e,`AssignmentPattern`)){Ci(e.right,t),Gi(e.left,t);return}if(E(e,`RestElement`)){Gi(e.argument,t);return}if(E(e,`ArrayPattern`)){for(let n of e.elements??[])Gi(n,t);return}if(E(e,`ObjectPattern`))for(let n of e.properties??[])E(n,`RestElement`)?Gi(n.argument,t):E(n,`Property`)&&(n.computed&&Ci(n.key,t),Gi(n.value,t))}},sae=e=>E(e,`ExpressionStatement`)?E(e.expression,`AwaitExpression`):!1,cae=e=>E(e,`ReturnStatement`)||E(e,`ThrowStatement`)||E(e,`ContinueStatement`)||E(e,`BreakStatement`),lae=e=>{if(!E(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(cae(t))return!0;if(!E(t,`BlockStatement`))return!1;for(let e of t.body??[])if(cae(e))return!0;return!1},Ki=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},uae=(e,t)=>{E(e,`VariableDeclarator`)&&(Ci(e.init,t),Gi(e.id,t))},dae=(e,t)=>{if(!E(e,`VariableDeclaration`))return{didIntroduceAwait:!1,didGrowBindings:!1};let n=!1,r=t.size,i=!0;for(;i;){i=!1;for(let r of e.declarations??[]){if(!E(r,`VariableDeclarator`))continue;if(wi(r.init)||wi(r.id)){n=!0;let e=t.size;bi(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(uae(r,e),!Ki(e,t))continue;let a=t.size;bi(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},fae=new Set([`cancelled`,`canceled`,`isCancelled`,`isCanceled`,`aborted`,`isAborted`,`disposed`,`isDisposed`,`destroyed`,`isDestroyed`,`stopped`,`isStopped`,`mounted`,`isMounted`,`unmounted`,`isUnmounted`,`active`,`isActive`,`stale`,`isStale`,`ignore`,`signal`,`abortSignal`,`abortController`]),pae=e=>{let t=!1;return D(e,e=>{if(t)return!1;if(!E(e,`MemberExpression`)||e.computed||!E(e.property,`Identifier`)||e.property.name!==`current`||!E(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},mae=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],hae=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of mae)if(t.includes(e))return!0;return!1},gae=e=>{let t=new Set;return D(e,e=>{(E(e,`Identifier`)||E(e,`PrivateIdentifier`))&&t.add(e.name)}),t},_ae=e=>{if(!e)return!1;let t=new Set;Ci(e,t);for(let e of t)if(fae.has(e))return!0;for(let t of gae(e))if(hae(t))return!0;return pae(e)},vae=e=>{if(!e)return!1;let t=!1;return D(e,e=>{if(t)return!1;if(E(e,`CallExpression`))return E(e.callee,`ArrowFunctionExpression`)||E(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(E(e,`ThisExpression`)||E(e,`PrivateIdentifier`))return t=!0,!1}),t},yae=e=>{if(!e)return!1;let t=P(e);if(!E(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=P(e);return E(t,`Literal`)||E(t,`TemplateLiteral`)||E(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},bae=(e,t,n)=>{let r=P(e);if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&i.kind===`const`&&i.initializer&&Qt(i.scope,n))},xae=(e,t,n)=>{let r=P(e);if(E(r,`MemberExpression`))return!0;if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!Qt(i.scope,n))},Sae=(e,t,n)=>{let r=P(e);return!yae(r)||!E(r,`BinaryExpression`)?!1:bae(r.left,t,n)&&xae(r.right,t,n)||bae(r.right,t,n)&&xae(r.left,t,n)},Cae=(e,t,n)=>{if(!n||!e)return!1;let r=P(e);if(!E(r,`LogicalExpression`)||r.operator!==`&&`&&r.operator!==`||`)return!1;let i=[r.left,r.right];for(;i.length>0;){let e=i.pop();if(!e)continue;let r=P(e);if(E(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Sae(r,t,n))return!1}return!0},wae=e=>{if(!e)return!1;let t=!1;return D(e,e=>{if(t||w(e)||E(e,`ThrowStatement`))return!1;if(E(e,`CallExpression`)||E(e,`NewExpression`)||E(e,`AssignmentExpression`)||E(e,`UpdateExpression`))return t=!0,!1}),t},Tae=(e,t)=>{if(!e)return!1;let n=new Set;if(Ci(e,n),n.size===0)return!1;let r=M(t);if(!r||!w(r)||!r.body)return!1;let i=!1;return D(r.body,e=>{if(i)return!1;let t=null;if(E(e,`AssignmentExpression`)?t=e.left:E(e,`UpdateExpression`)&&(t=e.argument),!t)return;let r=new Set;bi(t,r),E(t,`Identifier`)&&r.add(t.name);for(let e of r)if(n.has(e))return i=!0,!1}),i},Eae=(e,t)=>{let n=e[t],r=new Set,i=!1,a=!1;if(E(n,`VariableDeclaration`)?dae(n,r).didIntroduceAwait&&(i=!0):sae(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(sae(t)){a=!0,o++;continue}if(!E(t,`VariableDeclaration`))break;let n=dae(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},Dae=C({id:`async-defer-await`,title:`await before an early-return guard`,severity:`warn`,tags:[`test-noise`],recommendation:"Move the `await` below the early-return guard so the skip path stays fast and avoids unnecessary async work.",create:e=>{let t=t=>{for(let n=0;n<t.length-1;n++){let r=Eae(t,n);if(!r||r.guardCandidateIndex>=t.length)continue;let i=t[r.guardCandidateIndex];if(!lae(i)||!E(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(Ci(i.test,a),Ki(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=M(i),s=o?e.scopes.ownScopeFor(o):null;if(_ae(i.test)||vae(i.test)||yae(i.test)||Cae(i.test,e.scopes,s)||Tae(i.test,i)||wae(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(Ci(i.consequent,c),Ki(c,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}e.report({node:r.firstAwaitStatement,message:`This await blocks the function before an early-return that doesn't use the awaited value, so the skip path waits for nothing. Move the await below the guard so it only runs when you need the data`}),n=r.guardCandidateIndex-1}},n=e=>{e&&D(e,e=>{if(w(e))return!1;E(e,`BlockStatement`)?t(e.body??[]):E(e,`SwitchCase`)&&t(e.consequent??[])})},r=e=>{w(e)&&e.async&&E(e.body,`BlockStatement`)&&n(e.body)};return{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression:r}}}),Oae=(e,t,n)=>{let r=new Set;for(let e of t)D(e,e=>{if(!E(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return D(e,e=>{if(i||!E(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},kae=e=>{let t=e;for(;E(t,`ChainExpression`);)t=t.expression;if(!E(t,`CallExpression`)&&!E(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(E(r,`ChainExpression`)){r=r.expression;continue}if(E(r,`MemberExpression`)){E(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(E(r,`CallExpression`)){r=r.callee;continue}E(r,`Identifier`)&&n.push(r.name);break}return n},qi=e=>{if(E(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&E(t.init,`AwaitExpression`))return t.init.argument??null}return E(e,`ExpressionStatement`)&&E(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Aae=e=>tre.has(e)?!0:nre.some(t=>e.startsWith(t)),jae=e=>e?kae(e).some(Aae):!1,Mae=e=>e?kae(e).some(e=>gr.has(e)):!1,Nae=e=>E(e,`ExpressionStatement`)&&E(e.expression,`AwaitExpression`),Pae=e=>{let t=P(e);return E(t,`CallExpression`)?t.arguments.every(e=>{if(E(e,`SpreadElement`))return!1;let t=P(e);return E(t,`Identifier`)||E(t,`Literal`)}):!1},Fae=e=>{let t=qi(e);if(!t)return!1;let n=P(t);return!E(n,`CallExpression`)&&!E(n,`NewExpression`)&&!E(n,`ImportExpression`)},Iae=(e,t)=>{let n=null;for(let r of e){if(Fae(r))return!0;let e=qi(r);if(e&&On(e,t.scopes))return!0;let i=e?ji(e,t.scopes):null;if(Nae(r)){if(i===null||!e||!Pae(e)||n!==null&&n!==i)return!0;n=i}if(jae(e)||Mae(e)&&i===null)return!0}return!1},Lae=e=>{let t=e.parent;for(;t;){if(w(t)){let e=t.parent;if(e&&E(e,`CallExpression`)){let t=e.callee;if(E(t,`MemberExpression`)&&E(t.property,`Identifier`)&&t.property.name===`transaction`||E(t,`Identifier`)&&t.name===`transaction`)return!0}}t=t.parent??null}return!1},Rae=(e,t)=>{let n=[];for(let r of e){let e=qi(r);if(e){if(Oae(e,n,t.scopes))return;E(r,`VariableDeclaration`)&&r.declarations[0]?.id&&n.push(r.declarations[0].id)}}t.report({node:e[0],message:`These ${e.length} sequential await statements run one after another even though they look independent, so the page waits longer than it needs to. Run them together with Promise.all() instead`})},zae=C({id:`async-parallel`,title:`Independent awaits run sequentially`,tags:[`test-noise`],severity:`warn`,recommendation:"Use `const [a, b] = await Promise.all([fetchA(), fetchB()])` so independent calls run at the same time",create:e=>{let t=mt(e.filename??``),n=Qne.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||_r(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||Lae(t))return;let n=[],r=()=>{n.length>=3&&(Iae(n,e)||Rae(n,e)),n.length=0};for(let e of t.body??[])E(e,`VariableDeclaration`)&&e.declarations?.length===1&&E(e.declarations[0].init,`AwaitExpression`)||E(e,`ExpressionStatement`)&&E(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),Ji=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`||E(t,`UnaryExpression`)&&t.operator===`void`},Bae=e=>{let t=e[0];return t&&E(t,`Identifier`)&&t.name===`this`?e.slice(1):e},Vae="Storing an auth token in `localStorage`/`sessionStorage` exposes it to any XSS on the page: JavaScript can read web storage and exfiltrate the token. Keep tokens in an `HttpOnly`, `Secure`, `SameSite` cookie instead.",Hae=new Set([`localStorage`,`sessionStorage`]),Uae=new Set([`window`,`globalThis`,`self`]),Wae=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,Gae=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,Kae=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,qae=e=>!(!Wae.test(e)||Gae.test(e)&&!Kae.test(e)),Jae=e=>E(e,`Identifier`)?Hae.has(e.name):E(e,`MemberExpression`)&&!e.computed&&E(e.object,`Identifier`)&&Uae.has(e.object.name)&&E(e.property,`Identifier`)?Hae.has(e.property.name):!1,Yi=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=T(e,e.name);if(!n?.initializer)return null;if(E(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!E(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!E(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=P(n.initializer);return E(a,`Identifier`)?Yi(a,t)??a:a},Xi=(e,t)=>{let n=P(e);if(Zi(n,new Set(t)))return!0;if(E(n,`ConditionalExpression`)){let e=P(n.consequent),r=P(n.alternate);return(Ji(e)||Xi(e,t))&&(Ji(r)||Xi(r,t))&&(!Ji(e)||!Ji(r))}if(E(n,`LogicalExpression`)){if(n.operator===`&&`)return Xi(n.right,t);let e=P(n.left),r=P(n.right),i=Xi(e,t),a=Xi(r,t);return(i||Ji(e))&&(a||Ji(r))&&(i||a)}return!1},Zi=(e,t=new Set)=>{let n=P(e);if(t.has(n))return!1;if(t.add(n),Jae(n))return!0;if(E(n,`Identifier`)){let e=Yi(n);return e?Zi(e,new Set(t)):!1}if(!E(n,`CallExpression`))return!1;let r=P(n.callee);if(!E(r,`Identifier`))return!1;let i=Yi(r);if(!w(i))return!1;if(E(i,`ArrowFunctionExpression`)&&!E(i.body,`BlockStatement`))return Xi(i.body,t);let a=!1;for(let e of he(i)){if(!e.argument)continue;let n=P(e.argument);if(!Ji(n)){if(!Xi(n,t))return!1;a=!0}}return a},Yae=e=>{if(E(e,`Literal`)&&typeof e.value==`string`)return e.value;if(E(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(E(e,`Identifier`)&&e.name!==`undefined`){let t=T(e,e.name);return!t?.initializer||E(t.initializer,`Identifier`)?null:Yae(t.initializer)}return null},Xae=e=>!e.computed&&E(e.property,`Identifier`)?e.property.name:e.computed&&E(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,Qi=(e,t,n,r,i=new Set)=>{let a=P(e);if(i.has(a))return null;if(i.add(a),E(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=Yi(a);return s?Qi(s,t,n,r,i):null}if(r&&E(a,`CallExpression`)&&E(a.callee,`MemberExpression`)&&!a.callee.computed&&E(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&E(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?Qi(e,t,n,!0,i):null}return null},$i=new WeakMap,Zae=(e,t)=>{let n=$i.get(e);if(n)return n;if(!E(e,`FunctionDeclaration`)&&!E(e,`FunctionExpression`)&&!E(e,`ArrowFunctionExpression`))return $i.set(e,[]),[];let r=Bae(e.params).map(e=>{let n=P(e),r=E(n,`Identifier`)?n:E(n,`AssignmentPattern`)&&E(n.left,`Identifier`)?n.left:null;return r?t.symbolFor(r)?.id??null:null}),i=[];return D(e.body,n=>{if(n!==e.body&&w(n))return!1;if(!E(n,`CallExpression`))return;let a=P(n.callee);if(!E(a,`MemberExpression`)||a.computed||!E(a.property,`Identifier`)||a.property.name!==`setItem`||!Zi(a.object))return;let o=n.arguments[0],s=n.arguments[1];if(!o||!s)return;let c=Qi(o,r,t,!1),l=Qi(s,r,t,!0);c===null||l===null||i.push({keyParameterIndex:c,valueParameterIndex:l})}),$i.set(e,i),i},Qae=C({id:`auth-token-in-web-storage`,title:`Auth token in web storage`,severity:`warn`,recommendation:"Don't persist auth tokens (JWTs, access/refresh tokens, secrets) in `localStorage`/`sessionStorage`; they're readable by any XSS. Use an `HttpOnly` cookie set by the server.",create:Oe(e=>({CallExpression(t){let n=P(t.callee),r=[];if(E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)&&n.property.name===`setItem`&&Zi(P(n.object))){let e=t.arguments[0];e&&r.push(e)}else if(E(n,`Identifier`)){let i=Yi(n),a=i?Zae(i,e.scopes):[];for(let e of a){let n=t.arguments[e.keyParameterIndex];n&&t.arguments[e.valueParameterIndex]&&r.push(n)}}r.some(e=>{let t=Yae(e);return t!==null&&qae(t)})&&e.report({node:t,message:Vae})},AssignmentExpression(t){let n=t.left;if(!E(n,`MemberExpression`)||!Zi(n.object))return;let r=Xae(n);!r||!qae(r)||e.report({node:n,message:Vae})}}))}),$ae=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,eoe=new Set(`off.on.name.honorific-prefix.given-name.additional-name.family-name.honorific-suffix.nickname.email.username.new-password.current-password.one-time-code.organization-title.organization.street-address.address-line1.address-line2.address-line3.address-level4.address-level3.address-level2.address-level1.country.country-name.postal-code.cc-name.cc-given-name.cc-additional-name.cc-family-name.cc-number.cc-exp.cc-exp-month.cc-exp-year.cc-csc.cc-type.transaction-currency.transaction-amount.language.bday.bday-day.bday-month.bday-year.sex.tel.tel-country-code.tel-national.tel-area-code.tel-local.tel-extension.impp.url.photo`.split(`.`)),toe=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),noe=new Set([`shipping`,`billing`]),roe=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),ioe=e=>{let t=e.toLowerCase().split(/\s+/).filter(e=>e.length>0);if(t.length===0)return!0;let n=0;t[n]?.startsWith(`section-`)&&(n+=1),n<t.length&&noe.has(t[n])&&(n+=1);let r=n<t.length&&roe.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?toe.has(i):eoe.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},aoe=new Set([`input`,`textarea`,`select`,`form`]),ooe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},soe=C({id:`autocomplete-valid`,title:`Invalid autocomplete value`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Use a valid autofill token in `autoComplete` so browsers can fill the right field reliably.",category:`Accessibility`,create:Oe(e=>{let t=ooe(e.settings);return{JSXOpeningElement:n=>{let r=Zn(n,e.settings);if(!aoe.has(r)&&!t.inputComponents.has(r))return;let i=F(n.attributes,`autoComplete`);if(!i)return;let a=Xn(i);a&&(ioe(a)||e.report({node:i,message:$ae(a)}))}}})}),V=(e,t)=>e?.find(e=>E(e,`JSXAttribute`)&&E(e.name,`JSXIdentifier`)&&e.name.name===t),ea=e=>tr(e)?.split(`.`).at(-1)??null,coe=e=>{if(e.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!E(t,`ImportDeclaration`)||i(t)||E(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`?null:t},ta=e=>{let t=coe(e);if(!t||!E(t,`ImportDeclaration`))return null;let n=t.source.value;return typeof n==`string`?n:null},na=(e,t,n,r)=>{if(!E(e,`JSXMemberExpression`))return null;if(E(e.object,`JSXIdentifier`)){let i=N(e.object,r.scopes);if(!i)return null;let a=ta(i);return a===null||!t.test(a)?null:en(i.declarationNode)===n?e.property.name:null}if(!E(e.object,`JSXMemberExpression`)||!E(e.object.object,`JSXIdentifier`)||e.object.property.name!==n)return null;let i=N(e.object.object,r.scopes);if(!i||!E(i.declarationNode,`ImportNamespaceSpecifier`))return null;let a=ta(i);return a!==null&&t.test(a)?e.property.name:null},ra=(e,t)=>{let n=P(e);if(E(n,`JSXElement`)){loe(n,t);return}if(E(n,`JSXFragment`)){ia(n.children,t);return}if(E(n,`ConditionalExpression`)){ra(n.consequent,t),ra(n.alternate,t);return}if(E(n,`LogicalExpression`)){n.operator!==`&&`&&ra(n.left,t),ra(n.right,t);return}if(E(n,`ArrayExpression`)){for(let e of n.elements)e&&(E(e,`SpreadElement`)?t.onOpaqueExpression?.(e):ra(e,t));return}if(E(n,`Literal`)){if(typeof n.value==`string`||typeof n.value==`number`){let e=String(n.value);e.trim().length>0&&t.onStaticText?.(e)}return}if(E(n,`TemplateLiteral`)){let e=n.quasis.map(e=>e.value.cooked??e.value.raw??``).join(` `);(e.trim().length>0||n.expressions.length>0)&&t.onStaticText?.(e);return}E(n,`JSXEmptyExpression`)||E(n,`Identifier`)&&n.name===`undefined`||t.onOpaqueExpression?.(n)},loe=(e,t)=>{t.onElement(e)!==!1&&ia(e.children,t)},ia=(e,t)=>{for(let n of e)E(n,`JSXElement`)?loe(n,t):E(n,`JSXFragment`)?ia(n.children,t):E(n,`JSXExpressionContainer`)?ra(n.expression,t):E(n,`JSXText`)&&n.value.trim().length>0&&t.onStaticText?.(n.value)},aa=(e,t)=>{let n={foundPart:!1,sawOpaqueContent:!1},r=e=>{D(e,e=>{E(e,`JSXOpeningElement`)&&t.isPartElementName(e.name)&&(n.foundPart=!0)})};return ia(e,{onElement:e=>{if(t.isPartElementName(e.openingElement.name))return n.foundPart=!0,!1;let i=V(e.openingElement.attributes,`render`);return i?.value&&r(i.value),t.isOpaqueElement(e)&&(n.sawOpaqueContent=!0),!0},onOpaqueExpression:e=>{n.sawOpaqueContent=!0,r(e)}}),n},uoe=[{namespaceName:`Dialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/dialog)?$/},{namespaceName:`AlertDialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/alert-dialog)?$/}],doe=[`aria-label`,`aria-labelledby`,`title`],foe=e=>{if(!e.value||!E(e.value,`JSXExpressionContainer`))return!0;let t=P(e.value.expression);if(!E(t,`JSXElement`))return!0;let n=t.openingElement.attributes;return I(n)||doe.some(e=>F(n,e))},poe=(e,t,n)=>{if(na(e,t.moduleSourcePattern,t.namespaceName,n)===`Title`)return!0;let r=ea(e);return r===`Title`||r===`${t.namespaceName}Title`},moe=C({id:`base-ui-dialog-popup-requires-title`,title:`Base UI dialog popup without a title`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Base UI Dialog.Popup and AlertDialog.Popup a Title part (visually hidden when the design shows no heading) or name the dialog with aria-label.`,create:e=>({JSXOpeningElement(t){for(let n of uoe){if(na(t.name,n.moduleSourcePattern,n.namespaceName,e)!==`Popup`)continue;if(I(t.attributes))return;let r=V(t.attributes,`render`);if(r&&foe(r)||doe.some(e=>F(t.attributes,e)))return;let i=t.parent;if(!i||!E(i,`JSXElement`)||i.children.length===0)return;let a=aa(i.children,{isPartElementName:t=>poe(t,n,e),isOpaqueElement:t=>{let r=t.openingElement.name;if(na(r,n.moduleSourcePattern,n.namespaceName,e)!==null)return!1;let i=ea(r);return i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`}});if(a.foundPart||a.sawOpaqueContent)return;e.report({node:t.name,message:`This ${n.namespaceName}.Popup renders no ${n.namespaceName}.Title, so the dialog has no accessible name and assistive technology announces an unnamed dialog. Add a Title part (visually hidden if the design shows no heading) or an aria-label.`});return}}})}),hoe=/^@base-ui(?:-components)?\/react(?:\/field)?$/,goe=[`aria-label`,`aria-labelledby`],oa=(e,t)=>na(e,hoe,`Field`,t),_oe=(e,t)=>{if(oa(e,t)===`Label`)return!0;let n=ea(e);return n===`label`||n===`Label`||n===`FieldLabel`},voe=(e,t,n)=>{let r=e.parent;for(;r&&r!==t;){if(E(r,`JSXElement`)&&oa(r.openingElement.name,n)===`Control`)return!0;r=r.parent}return!1},yoe=(e,t)=>{let n={hasControl:!1,hasLabel:!1,sawUnprovableContent:!1};return ia(e.children,{onElement:r=>{let i=r.openingElement,a=i.name;if(_oe(a,t))return n.hasLabel=!0,!1;let o=oa(a,t);if((o===`Control`||voe(i,e,t))&&goe.some(e=>F(i.attributes,e)))return n.hasLabel=!0,!1;I(i.attributes)&&(n.sawUnprovableContent=!0);let s=V(i.attributes,`render`);if(s?.value&&D(s.value,e=>{E(e,`JSXOpeningElement`)&&goe.some(t=>F(e.attributes,t))&&(n.hasLabel=!0)}),o===`Control`)return n.hasControl=!0,!0;if(o!==null)return!0;let c=ea(a);return c!==null&&/^[A-Z]/.test(c)&&c!==`Fragment`&&(n.sawUnprovableContent=!0),!0},onOpaqueExpression:e=>{n.sawUnprovableContent=!0,D(e,e=>{E(e,`JSXOpeningElement`)&&_oe(e.name,t)&&(n.hasLabel=!0)})}}),n},sa=C({id:`base-ui-field-requires-label`,title:`Base UI field control without a label`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Field.Root that wraps a Field.Control a Field.Label (visually hidden when the design shows no label) or name the control directly with aria-label.`,create:e=>({JSXOpeningElement(t){if(oa(t.name,e)!==`Root`)return;let n=t.parent;if(!n||!E(n,`JSXElement`)||n.children.length===0)return;let r=yoe(n,e);!r.hasControl||r.hasLabel||r.sawUnprovableContent||e.report({node:t.name,message:`This Field.Root wraps a Field.Control but renders no Field.Label, so the field has no accessible name. Add a Field.Label (visually hidden if the design shows no label) or an aria-label on the control.`})}})}),ca=(e,t)=>{let n=e.parent?.parent;for(;n;){if(E(n,`JSXAttribute`))return`unprovable`;if(E(n,`JSXElement`)){let e=n.openingElement.name,r=t(e);if(r===`required`)return`inside-required`;if(r===`root`)return`inside-root-without-required`;let i=ea(e);if(i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`)return`unprovable`}n=n.parent}return`unprovable`},boe=/^@base-ui(?:-components)?\/react(?:\/tabs)?$/,la=(e,t)=>na(e,boe,`Tabs`,t),xoe=C({id:`base-ui-tabs-tab-requires-list`,title:`Base UI tab is outside Tabs.List`,severity:`warn`,category:`Correctness`,requires:[`base-ui`],matchByOccurrence:!0,recommendation:`Render each Base UI Tabs.Tab inside Tabs.List so the tablist role and arrow-key focus handling cover every tab.`,create:e=>({JSXOpeningElement(t){la(t.name,e)===`Tab`&&ca(t,t=>{let n=la(t,e);return n===`List`?`required`:n===`Root`?`root`:null})===`inside-root-without-required`&&e.report({node:t,message:`This Tabs.Tab is outside Tabs.List, so it misses the tablist grouping and arrow-key focus handling Base UI provides through the list. Nest it inside Tabs.List.`})}})}),Soe=e=>{let t=e;for(;t;){if(E(t,`MemberExpression`)){if(E(t.property,`Identifier`)&&t.property.name===`document`||E(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(E(t,`Identifier`)&&t.name===`document`)}return!1},ua=e=>{if(!E(e,`CallExpression`))return!1;let t=e.callee;return E(t,`Identifier`)?t.name===`createElement`:E(t,`MemberExpression`)&&(t.computed?E(t.property,`Literal`)&&t.property.value===`createElement`:E(t.property,`Identifier`)&&t.property.name===`createElement`)?!Soe(t.object):!1},da="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",Coe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.buttonHasType??{}:{};return{button:n.button??!0,submit:n.submit??!0,reset:n.reset??!0}},fa=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,pa=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Literal`)&&typeof r.value==`string`)return fa(r.value,t);if(E(r,`TemplateLiteral`)){let e=c(r);if(e!==null)return fa(e,t)}if(E(r,`ConditionalExpression`))return pa(r.consequent,t,n)&&pa(r.alternate,t,n);if(E(r,`Identifier`)){if(n.has(r.name))return!1;let e=T(r,r.name);return!e?.initializer||!ma(e)?!1:pa(e.initializer,t,new Set(n).add(r.name))}return!1},ma=e=>{let t=e.bindingIdentifier.parent;if(!t||!E(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&E(n,`VariableDeclaration`)&&n.kind===`const`)},woe=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),Toe=e=>{let t=e;for(;t.parent&&woe.has(t.parent.type);)t=t.parent;return t},ha=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=Toe(e),r=n.parent;if(!r)return!1;if(r.type===`FunctionDeclaration`||r.type===`FunctionExpression`||r.type===`ArrowFunctionExpression`)return r.params.some(e=>e===n);if(E(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!E(e,`Identifier`))return!1;let n=T(e,e.name);return n?ha(n.bindingIdentifier,t):!1}return!1},Eoe=e=>{let t=T(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!E(n,`Property`)||n.computed||n.value!==t||!ha(n)?!1:E(n.key,`Identifier`)?n.key.name===`type`:E(n.key,`Literal`)?n.key.value===`type`:!1},Doe=/Type$/,Ooe=(e,t)=>{if(!Doe.test(e.name))return!1;let n=T(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!E(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!E(i,`Property`)||i.computed||i.value!==r||!ha(i)?!1:pa(r.right,t)},ga=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Identifier`)){if(r.name===`type`||Eoe(r)||Ooe(r,t))return!0;if(n.has(r.name))return!1;let e=T(r,r.name);if(!e?.initializer||!ma(e))return!1;let i=P(e.initializer);return!E(i,`ConditionalExpression`)&&!E(i,`LogicalExpression`)?!1:ga(i,t,new Set(n).add(r.name))}if(E(r,`MemberExpression`)&&!r.computed&&E(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(E(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return ga(r.left,t,n);if(E(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>ga(e,t,n))&&e.every(e=>ga(e,t,n)||pa(e,t))}return!1},koe=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],Aoe={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},_a=e=>{for(let t of koe){let n=rt(e,e.name,t);if(n!==null)return n}return null},va=e=>e.computed?null:E(e.key,`Identifier`)?e.key.name:E(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,joe=e=>{if(E(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(E(e,`ReturnStatement`))return e.argument?(t.push(e.argument),!0):!1;let r=e;for(let e of Object.keys(r)){if(e===`parent`)continue;let t=r[e],i=Array.isArray(t)?t:[t];for(let e of i){if(!e||typeof e!=`object`||!(`type`in e))continue;let t=e;if(!(E(t,`FunctionDeclaration`)||E(t,`FunctionExpression`)||E(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},Moe=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!E(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=va(n);if(!r)return!1;let i=n.parent;if(!i||!E(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!E(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!E(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=P(a.init);if(!E(s,`CallExpression`))return!1;let c=P(s.callee);if(!E(c,`Identifier`))return!1;let l=_a(c);if(l!==null)return Aoe[l]===r;let u=T(c,c.name)?.initializer;if(!u||!E(u,`FunctionDeclaration`)&&!E(u,`FunctionExpression`)&&!E(u,`ArrowFunctionExpression`))return!1;let d=joe(u);return!d||d.length===0?!1:d.every(e=>{let n=P(e);if(!E(n,`ObjectExpression`))return!1;for(let e of n.properties){if(E(e,`SpreadElement`)||!E(e,`Property`))return!1;if(va(e)===r)return ya(e.value,t)}return!0})},ya=(e,t=new Set)=>{let n=P(e);if(E(n,`ObjectExpression`))return n.properties.every(e=>{if(E(e,`SpreadElement`))return ya(e.argument,t);if(!E(e,`Property`))return!1;let n=va(e);return n!==null&&n!==`type`});if(E(n,`CallExpression`)){let e=P(n.callee);return!E(e,`Identifier`)||_a(e)!==`mergeProps`?!1:n.arguments.every(e=>!E(e,`SpreadElement`)&&ya(e,t))}if(E(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=T(n,n.name);return r?r.initializer&&ma(r)?ya(r.initializer,e):Moe(r,e):!1}return!1},ba=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},Noe=e=>{let t=R(e.attributes,`form`,!1);return!!(t&&L(t)?.trim())},Poe=e=>!!Qn(e?an(e,`form`):void 0)?.trim(),Foe=e=>{if(!E(e,`CallExpression`)||!ua(e))return!1;let t=e.arguments[0];return!!(t&&E(t,`Literal`)&&t.value===`form`)},xa=e=>{let t=e.parent;for(;t;){if(E(t,`JSXElement`)&&O(t.openingElement)===`form`||Foe(t))return!0;t=t.parent}return!1},Sa=C({id:`button-has-type`,title:`Button missing explicit type`,severity:`warn`,recommendation:'Set an explicit button `type` so plain buttons do not submit forms by accident: `type="button"`, `"submit"`, or `"reset"`.',create:e=>{let t=Coe(e.settings),n=Or(e.settings),r=dt(e.filename);return{JSXOpeningElement(i){if(n&&r||O(i)!==`button`)return;let a=F(i.attributes,`type`);if(!a){if(n&&!Noe(i)&&!xa(i)||I(i.attributes)&&!i.attributes.every(e=>!E(e,`JSXSpreadAttribute`)||ya(e.argument)))return;e.report({node:i.name,message:da});return}let o=a.value;if(!o){ba(e,a);return}if(E(o,`Literal`)){pa(o,t)||ba(e,a);return}if(E(o,`JSXExpressionContainer`)){let n=o.expression;if(!n||n.type===`JSXEmptyExpression`||ga(n,t))return;pa(n,t)||ba(e,a)}},CallExpression(i){if(n&&r||!ua(i))return;let a=i.arguments[0];if(!a||!E(a,`Literal`)||a.value!==`button`)return;let o=i.arguments[1],s=Poe(o)||xa(i);if(!o||Ji(o)){if(n&&!s)return;e.report({node:i,message:da});return}if(!E(o,`ObjectExpression`))return;let c=null,l=!1;for(let e of o.properties){if(E(e,`SpreadElement`)){l=!0;continue}if(!E(e,`Property`))continue;let t=e.key;if(E(t,`Identifier`)&&t.name===`type`||E(t,`Literal`)&&t.value===`type`){c=e.value;break}}if(!c){if(n&&!s||l&&!o.properties.every(e=>!E(e,`SpreadElement`)||ya(e.argument)))return;e.report({node:o,message:da});return}ga(c,t)||pa(c,t)||ba(e,c)}}}}),Ioe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},Ca=e=>E(e,`Identifier`)||E(e,`MemberExpression`)&&!e.computed,wa=e=>!e.value||!E(e.value,`JSXExpressionContainer`)?!1:Ca(e.value.expression),Loe=e=>{if(!e.value)return!0;if(E(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return E(t,`Literal`)&&t.value===!0}return!1},Roe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(E(c,`JSXSpreadAttribute`)){o=!0;continue}if(!E(c,`JSXAttribute`))continue;let e=rn(c.name);e===`checked`?(t=c,n=wa(c)):e===`defaultChecked`&&!r?(r=c,i=wa(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&Loe(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},zoe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(E(c,`SpreadElement`)){o=!0;continue}if(!E(c,`Property`))continue;let e=c.key,l=null;if(E(e,`Identifier`)?l=e.name:E(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=Ca(c.value);else if(l===`defaultChecked`&&!r)r=c,i=Ca(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;E(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Ta=C({id:`checked-requires-onchange-or-readonly`,title:`Checked input without onChange`,severity:`warn`,recommendation:"Add `onChange`, `readOnly`, or `defaultChecked` so React knows whether the checkbox is editable, display-only, or uncontrolled.",category:`Correctness`,create:e=>{let t=Ioe(e.settings),n=n=>{n.checkedNode&&n.defaultCheckedNode&&!n.bothCheckedAndDefaultForwarded&&!t.ignoreExclusiveCheckedAttribute&&e.report({node:n.checkedNode,message:"This input mixes `checked` with `defaultChecked`, so React can't tell whether it is controlled or uncontrolled."}),n.checkedNode&&!n.hasOnChangeOrReadOnly&&!n.hasSpread&&!n.hasTruthyDisabled&&!t.ignoreMissingProperties&&e.report({node:n.checkedNode,message:"Your users can't toggle this input because `checked` has no `onChange`."})};return{JSXOpeningElement(e){O(e)===`input`&&n(Roe(e.attributes))},CallExpression(e){if(!ua(e))return;let t=e.arguments[0];if(!t||!E(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!E(r,`ObjectExpression`)||n(zoe(r))}}}}),Ea=C({id:`circular-dependency`,title:`Runtime import cycle`,severity:`warn`,execution:`project`,defaultEnabled:!1,recommendation:`Break the runtime cycle by extracting shared code into a lower-level module or inverting one dependency.`}),Da=(e,t,n)=>{let r=new Map,i=e,a=e.parent;for(;a&&!(w(a)||((E(a,`ConditionalExpression`)||E(a,`IfStatement`))&&(a.consequent===i&&r.set(a,`consequent`),a.alternate===i&&r.set(a,`alternate`)),a===n));)i=a,a=a.parent??null;let o=t,s=t.parent;for(;s&&!w(s);){if(E(s,`ConditionalExpression`)||E(s,`IfStatement`)){let e=r.get(s);if(e===`consequent`&&s.alternate===o||e===`alternate`&&s.consequent===o)return!0}if(s===n)break;o=s,s=s.parent??null}return!1},Oa=(t,n,r,i=t)=>{let a=new Set,o=n.filter(e=>{if(r.cfg.enclosingFunction(e)!==t)return!1;let n=e;for(;n&&n!==i;)n=n.parent??null;return n===i}),s=new Set(o),c=new Map;for(;o.length>0;){let t=o.pop();if(!t)break;if(t===i){a.add(t);continue}let n=t,r=n.parent??null,l=null,u=null,d=!1;for(;r&&r!==i;){if(E(r,`ConditionalExpression`)){let t=r.consequent===n,i=r.alternate===n;if(t||i){let i=mn(e(r.test));if(i!==null){if(i!==t){d=!0;break}n=r,r=n.parent??null;continue}l=r,u=t?`consequent`:`alternate`;break}}if(E(r,`LogicalExpression`)&&r.right===n){let t=mn(e(r.left));if(!(r.operator===`&&`&&t===!0||r.operator===`||`&&t===!1)){d=!0;break}}if(E(r,`AssignmentPattern`)&&r.right===n){d=!0;break}n=r,r=n.parent??null}if(d)continue;if(!l||!u){a.add(t);continue}let f=c.get(l)??new Set;f.add(u),c.set(l,f),f.has(`alternate`)&&f.has(`consequent`)&&!s.has(l)&&(s.add(l),o.push(l))}return a},ka=(e,t,n,r=e)=>{let i=n.cfg.enclosingFunction(e);if(!i)return!1;let a=n.cfg.cfgFor(i);if(!a)return!1;let o=a.blockOf(e);if(!o)return!1;let s=S(r),c=new Set([...Oa(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=S(e);return t===o&&s!==null&&n!==null&&n<s?[]:[t]}));if(c.has(o))return!0;let l=new Set([o]),u=[o];for(;u.length>0;){let e=u.pop();if(!e)break;for(let t of e.successors)if(!c.has(t.to)){if(t.to===a.exit)return!1;l.has(t.to)||(l.add(t.to),u.push(t.to))}}return c.size>0},Aa=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...Oa(e,t,n)].flatMap(e=>{let t=i.blockOf(e);return t?[t]:[]}));if(a.size===0)return!1;let o=new Set([i.entry]),s=[i.entry];for(;s.length>0;){let e=s.pop();if(!e)break;if(!a.has(e)){for(let t of e.successors)if(!(r.ignoreThrowEdges&&t.kind===`throw`)){if(t.to===i.exit)return!1;o.has(t.to)||(o.add(t.to),s.push(t.to))}}}return!0},ja=`Component`,Ma=`PureComponent`,Boe=e=>!E(e,`MemberExpression`)||!E(e.object,`Identifier`)||e.object.name!==`React`||!E(e.property,`Identifier`)?!1:e.property.name===ja||e.property.name===Ma,Na=e=>{if(!E(e,`ClassDeclaration`)&&!E(e,`ClassExpression`))return!1;let t=e.superClass;return t?Boe(t)?!0:E(t,`Identifier`)?t.name===ja||t.name===Ma:!1:!1},Voe=e=>{let t=e,n=e.parent;for(;n;){if(E(n,`IfStatement`)&&E(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||E(n,`ConditionalExpression`)&&E(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(E(n,`WhileStatement`)||E(n,`ForStatement`))&&n.body===t&&n.test&&E(n.test,`Literal`)&&!n.test.value||E(n,`LogicalExpression`)&&n.right===t&&E(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},H=(e,t)=>{if(Voe(e))return!1;let n=t.cfg.enclosingFunction(e);if(!n)return!0;let r=t.cfg.cfgFor(n);if(!r)return!0;let i=r.blockOf(e);if(!i)return!0;let a=new Set([r.entry]),o=[r.entry];for(;o.length>0;){let e=o.pop();if(!e)break;if(e===i)return!0;for(let t of e.successors)a.has(t.to)||(a.add(t.to),o.push(t.to))}return!1},Hoe=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),Uoe=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),Pa=(e,t)=>{let n=P(e.callee);if(!E(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=P(n.object);return E(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&k(n)===`now`},Fa=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Literal`))return typeof r.value==`number`;if(E(r,`CallExpression`))return Pa(r,t);if(E(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||e.declarationNode.range[0]>=r.range[0]||n.has(e.id)||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Fa(e.initializer,t,n))}return E(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&Fa(r.argument,t,n):!E(r,`BinaryExpression`)||!Uoe.has(r.operator)?!1:Fa(r.left,t,new Set(n))&&Fa(r.right,t,new Set(n))},Ia=(e,t)=>{if(Pa(e,t))return!0;let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=P(n.object);if(!E(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=k(n);if(r.name===`console`)return Hoe.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&Fa(a,t))},La=({node:e,scopes:t})=>{let n=P(e);if(E(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(E(n,`ThisExpression`))return`this`;if(!E(n,`MemberExpression`))return null;let r=La({node:n.object,scopes:t}),i=k(n);return r&&i?`${r}.${i}`:null},Woe=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),Goe=e=>{if(E(e,`FunctionDeclaration`))return e.id&&E(e.id,`Identifier`)?e.id:null;let t=b(e),n=t.parent;if(!n||!E(n,`VariableDeclarator`)||n.init!==t||!E(n.id,`Identifier`))return null;let r=n.parent;return!r||!E(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},Ra=(e,t,n,r)=>{let i=new Set,a=(e,o)=>{if(i.has(e))return;i.add(e);let s=new Map(o),c=new Map;D(e,t=>{if(t!==e&&w(t)){let e=Goe(t);return e&&t.body&&(!r||r(t))&&s.set(e,t.body),!1}let n=E(t,`VariableDeclarator`)&&t.init?P(t.init):null;if(E(t,`VariableDeclarator`)&&E(t.id,`Identifier`)&&E(n,`Identifier`)&&t.parent&&E(t.parent,`VariableDeclaration`)&&t.parent.kind===`const`){let e=T(n,n.name)?.bindingIdentifier;e&&c.set(t.id,e)}});for(let[e,t]of c){let n=t,r=new Set([e]);for(;c.has(n)&&!r.has(n);)r.add(n),n=c.get(n)??n;let i=s.get(n);i&&s.set(e,i)}let l=(e,i=!1)=>{if(!i&&w(e)||(t(e),xt(e,e=>l(e)),!E(e,`CallExpression`)))return;let o=P(e.callee);if(w(o)){o.body&&(!r||r(o))&&a(o.body,s);return}if(E(o,`Identifier`)){let e=T(o,o.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s);return}if(!(!E(o,`MemberExpression`)||!Woe.has(k(o)??``)))for(let t of e.arguments??[]){if(n&&!n(e,t))continue;let i=P(t);if(w(i))i.body&&(!r||r(i))&&a(i.body,s);else if(E(i,`Identifier`)){let e=T(i,i.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s)}}};l(e,!0),i.delete(e)};a(e,new Map)},za=(e,t)=>{if(!w(e))return;let n=e.body;n&&D(n,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:t(e))},Ba=(e,t,n,r=e,i=new Set)=>{let a=P(e);if(E(a,`ObjectExpression`))return a;if(!E(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||bn(o,r,n)||t.some(e=>Ye(a,e,r,n))?null:(i.add(o.id),Ba(o.initializer,t,n,r,i))},Va=new Set([`window`,`globalThis`,`global`,`self`]),Koe=new Set([`body`,`documentElement`,`visualViewport`]),qoe=new Set([`initPlaces`,`places`]),Ha=new Set([`forceUpdate`,`setState`]),Ua=`mobx-react`,Wa=`disposeOnUnmount`,Joe=[`handler`],Ga=new Map([[`addEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`addListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependOnceListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`on`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`once`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`subscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),Yoe=new Map([[`removeEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`removeListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`off`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`unsubscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),Ka=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),Xoe=new Map([[`addListener`,[`removeListener`,`off`]],[`on`,[`off`,`removeListener`]],[`once`,[`off`,`removeListener`]],[`prependListener`,[`off`,`removeListener`]],[`prependOnceListener`,[`off`,`removeListener`]]]),qa=new Set([`AccessibilityInfo`,`AppState`,`Appearance`,`BackHandler`,`Dimensions`,`Keyboard`,`Linking`,`NetInfo`]),Ja=(e,t)=>{let n=M(e);if(!n)return!1;let r=[];if(za(n,t=>{E(t,`AwaitExpression`)&&t.range[0]<e.range[0]&&r.push(t)}),r.length===0)return!1;let i=t.cfg?.cfgFor(n),a=i?.blockOf(e);if(!i||!a)return!0;let o=new Set([i.entry]),s=[i.entry];for(;s.length>0;){let e=s.pop();if(!e)break;for(let t of e.successors)o.has(t.to)||(o.add(t.to),s.push(t.to))}let c=!1;for(let e of r){if(c)break;let t=i.blockOf(e);if(!t||!o.has(t))continue;if(t===a){c=!0;break}let n=new Set([t]),r=[t];for(;r.length>0;){let e=r.pop();if(!e)break;for(let t of e.successors){if(t.to===a){c=!0;break}n.has(t.to)||(n.add(t.to),r.push(t.to))}}}return c},Ya=e=>{if(!E(e,`CallExpression`))return null;let t=P(e.callee);return E(t,`Identifier`)?t.name:null},Xa=(e,t)=>{let n=Ya(e),r=E(e,`CallExpression`)?P(e.callee):null;return!!(n&&E(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&rt(e,n,`mobx`)===`runInAction`)},Za=(e,t,n=new Set)=>{if(t.isGlobalReference(e))return e.name;let r=t.symbolFor(e);if(!r||r.kind!==`const`||n.has(r.id)||r.references.some(e=>e.flag!==`read`))return null;n.add(r.id);let i=r.declarationNode;if(E(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?P(i.init):null;return E(e,`Property`)&&E(n,`ObjectPattern`)&&E(a,`Identifier`)&&Va.has(a.name)&&t.isGlobalReference(a)?A(e,{allowComputedString:!0}):null}let a=r.initializer?P(r.initializer):null;if(E(a,`Identifier`))return Za(a,t,n);if(!E(a,`MemberExpression`))return null;let o=P(a.object);return E(o,`Identifier`)&&Va.has(o.name)&&t.isGlobalReference(o)?k(a):null},Qa=(e,t)=>{if(!E(e,`CallExpression`))return null;let n=P(e.callee);if(Ya(e)&&E(n,`Identifier`))return Za(n,t);if(!E(n,`MemberExpression`))return null;let r=P(n.object);return!E(r,`Identifier`)||!Va.has(r.name)||T(r,r.name)?null:k(n)},$a=e=>E(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:A(e,{allowComputedString:!0}),eo=new WeakMap,to=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},no=e=>{let t=eo.get(e);if(t)return t;let n=new Set,r=new Map,i=new Map;if(E(e,`ClassBody`)){for(let t of e.body){let e=$a(t);e&&(E(t,`MethodDefinition`)&&(t.kind===`get`||t.kind===`set`)&&n.add(e),(E(t,`MethodDefinition`)||E(t,`PropertyDefinition`))&&t.value&&w(t.value)&&r.set(e,t.value))}D(e,t=>{let n=E(t,`AssignmentExpression`)?P(t.left):E(t,`UpdateExpression`)?P(t.argument):null;if(!E(n,`MemberExpression`)||!E(P(n.object),`ThisExpression`))return;let r=k(n);if(!r)return;let a=to(t,e),o=i.get(r)??[];o.push({node:t,enclosingMemberName:a?$a(a):null,isAssignment:E(t,`AssignmentExpression`)}),i.set(r,o)})}let a={accessorNames:n,memberFunctionsByName:r,instanceWritesByName:i};return eo.set(e,a),a},ro=(e,t,n)=>{if(!e||!E(e,`ClassBody`))return null;let r=no(e),i=r.memberFunctionsByName.get(t);return i?(r.instanceWritesByName.get(t)??[]).some(e=>e.isAssignment&&(!n||e.node.range[0]<=n.range[0]))?null:i:null},io=(e,t,n,r=new Set)=>{r.has(e)||(r.add(e),Ra(e,e=>{let i=n(e);if(i===!1||!E(e,`CallExpression`))return i;let a=P(e.callee);if(!E(a,`MemberExpression`)||!E(P(a.object),`ThisExpression`))return;let o=k(a),s=o?ro(t,o,e):null;s&&io(s,t,n,r)}))},Zoe=(e,t,n)=>{let r=new Set,i=new Map,a=(e,o)=>{let s=i.get(e);s===!0||s===o||(i.set(e,o),Ra(e,e=>{if(n.cfg&&!H(e,n))return!1;if(o&&r.add(e),!E(e,`CallExpression`))return;let i=P(e.callee);if(!E(i,`MemberExpression`)||!E(P(i.object),`ThisExpression`))return;let s=k(i),c=s?ro(t,s,e):null;c&&a(c,o||Ja(e,n))}))};return a(e,!1),r},Qoe=(e,t,n,r)=>{let i=M(e),a=M(t);if(!i||!a||i===a)return!1;let o=new Map,s=new Set,c=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(s.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};s.add(e);let l={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return D(n??t,t=>{if(!E(t,`CallExpression`))return;let i=P(t.callee);if((E(i,`Identifier`)?y(i,r.scopes):E(i,`MemberExpression`)&&E(P(i.object),`ThisExpression`)?ro(n,k(i)??``,t):null)!==e)return;let a=M(t);if(!a)return;let o=c(a);o.canInvokeAfterSuspension&&(l.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(Ja(t,r)?l.canInvokeAfterSuspension=!0:l.canInvokeBeforeSuspension=!0)}),s.delete(e),o.set(e,l),l};return c(i).canInvokeAfterSuspension},ao=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return Ra(e,e=>{if(i)return!1;if(Xa(e,n))return i=!0,!1;if(!E(e,`CallExpression`))return;let a=P(e.callee);if(!E(a,`MemberExpression`)||!E(P(a.object),`ThisExpression`))return;let o=k(a);if(o&&Ha.has(o))return i=!0,!1;let s=o?ro(t,o,e):null;if(s&&ao(s,t,n,r))return i=!0,!1}),i},oo=(e,t,n=new Set)=>{let r=P(e);if(n.has(r))return null;if(n.add(r),w(r))return r;if(E(r,`Identifier`)){let e=T(r,r.name)?.initializer;return e?oo(e,t,n):null}let i=E(r,`CallExpression`)?P(r.callee):null,a=(E(r,`CallExpression`)&&E(i,`MemberExpression`)&&k(i)===`bind`&&r.arguments?.[0]&&E(P(r.arguments[0]),`ThisExpression`)?P(i.object):null)??r,o=E(a,`MemberExpression`)&&E(P(a.object),`ThisExpression`)?k(a):null;return o?ro(t,o,r):null},$oe=(e,t,n)=>{let r=oo(e,t);if(!w(r))return!1;let i=r.body;if(!i)return!1;let a=!1;return Ra(i,e=>{if(a)return;if(Xa(e,n)){a=!0;return}if(!E(e,`CallExpression`))return;let r=P(e.callee);if(E(r,`MemberExpression`)&&E(P(r.object),`ThisExpression`)){let i=k(r);if(i&&Ha.has(i)){a=!0;return}let o=i?ro(t,i,e):null;if(o&&!ao(o,t,n))return;a=!0}}),a},ese=(e,t,n)=>{let r=new Set,i=new Set;io(e,t,e=>{if(E(e,`VariableDeclarator`)){let t=e.init?P(e.init):null,i=E(t,`CallExpression`)?P(t.callee):null;if(t&&(E(t,`NewExpression`)||E(t,`ObjectExpression`)||E(t,`ArrayExpression`)||E(t,`CallExpression`)&&E(i,`Identifier`)&&qoe.has(i.name))){let t=new Set;bi(e.id,t);let i=n.scopeFor(e);for(let e of t){let t=i.symbolsByName.get(e);t&&r.add(t.id)}}else if(E(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;bi(e.id,t);let i=n.scopeFor(e);for(let e of t){let t=i.symbolsByName.get(e);t&&r.add(t.id)}}}}if(E(e,`AssignmentExpression`)&&E(e.left,`MemberExpression`)){let t=P(e.right),r=E(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(E(e,`CallExpression`))for(let t of e.arguments??[]){let e=P(t),a=E(e,`Identifier`)?n.symbolFor(e):null;a&&r.has(a.id)&&i.add(a.id)}});for(let e of i)r.delete(e);return r},tse=e=>{let t=P(e);for(;E(t,`MemberExpression`);){let e=P(t.object);if(E(e,`ThisExpression`))return k(t);t=e}return null},so=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!E(n,`ClassBody`))return!0;let r=no(n);if(r.accessorNames.has(e))return!1;let i=to(t,n),a=i?$a(i):null;return!(r.instanceWritesByName.get(e)??[]).some(({node:e,enclosingMemberName:n})=>{let r=a===`componentDidMount`&&n===`componentDidMount`&&e.range[0]<=t.range[0],i=a===`constructor`&&n===`constructor`&&e.range[0]<=t.range[0],o=a===`componentWillUnmount`&&n===`componentDidMount`,s=a===`componentWillUnmount`&&n===`componentWillUnmount`&&e.range[0]>t.range[0];return!(n===`constructor`&&a!==`constructor`)&&!r&&!i&&!o&&!s&&!((a===`constructor`||a===`componentDidMount`)&&n===`componentWillUnmount`)})},nse=(e,t)=>{if(!E(t,`ClassBody`))return!1;let n=e.parent;for(;n&&n!==t;){if(w(n))return n.parent?.parent===t;if(E(n,`IfStatement`)||E(n,`ConditionalExpression`)||E(n,`LogicalExpression`)||E(n,`SwitchStatement`)||E(n,`TryStatement`)||E(n,`CatchClause`)||E(n,`ForStatement`)||E(n,`ForInStatement`)||E(n,`ForOfStatement`)||E(n,`WhileStatement`)||E(n,`DoWhileStatement`))return!1;n=n.parent}return!1},rse=(e,t,n)=>{let r=t.symbolFor(e);if(!r||r.kind!==`const`)return null;let i=r.references.flatMap(e=>{let t=b(e.identifier),r=t.parent;if(!E(r,`AssignmentExpression`)||r.right!==t||!E(r.left,`MemberExpression`)||!E(P(r.left.object),`ThisExpression`)||!nse(r,n))return[];let i=k(r.left);return i&&so(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!E(a,`AssignmentExpression`))return null;let o=M(r.declarationNode);if(!o||M(a)!==o)return null;let s=Math.min(e.range[0],a.range[0]),c=Math.max(e.range[0],a.range[0]),l=!1;return za(o,e=>{if(E(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},co=(e,t,n,r=new Set)=>{let i=P(e);if(E(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=rse(i,t,n);if(a)return co(a,t,n,r);if(e.kind===`const`&&e.initializer&&E(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=P(e.initializer);return E(a,`Identifier`)||E(a,`MemberExpression`)?co(a,t,n,r):`${i.name}#${e.id}`}return e.kind===`const`||e.kind===`function`&&e.references.every(e=>e.flag===`read`)||e.kind===`import`?`${i.name}#${e.id}`:null}if(E(i,`ThisExpression`))return`this`;if(!E(i,`MemberExpression`))return null;let a=tse(i);if(!a){let e=P(i.object),n=k(i);return!E(e,`Identifier`)||!t.isGlobalReference(e)||!n||!Koe.has(n)?null:`${e.name}.${n}`}if(a&&(!E(P(i.object),`ThisExpression`)||!so(a,i,n)))return null;let o=co(i.object,t,n,r),s=k(i);return o&&s?`${o}.${s}`:null},lo=(e,t,n)=>{let r=P(e);return E(r,`Literal`)?JSON.stringify(r.value):co(r,t,n)},uo=(e,t,n)=>{let r=P(e);if(E(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(E(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=co(r,t,n);return i?`reference:${i}`:null},ise=(e,t)=>{let n=P(e);if(!E(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||bn(r,n,t)||Ye(n,`capture`,n,t))return null;let i=La({node:n,scopes:t});return i?`options:${i}`:null},fo=(e,t)=>{let n=P(e);return E(n,`Literal`)?!n.value:E(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},po=(e,t,n,r)=>{let i=P(e.callee);if(!E(i,`MemberExpression`))return null;let a=k(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:Joe}:t,s=o.captureOptionsIndex===void 0?o.identityArgumentKinds.length:o.captureOptionsIndex+1;if(e.arguments.length<o.identityArgumentKinds.length||e.arguments.length>s)return null;let c=lo(i.object,n,r);if(!c)return null;let l=[];for(let[t,i]of o.identityArgumentKinds.entries()){let a=e.arguments?.[t];if(!a||E(a,`SpreadElement`))return null;let o=i===`event`?uo(a,n,r):lo(a,n,r);if(!o)return null;l.push(o)}let u=`${c}|${l.join(`|`)}`;if(o.captureOptionsIndex===void 0)return u;let d=e.arguments?.[o.captureOptionsIndex];if(d&&E(d,`SpreadElement`))return null;let f=`false`;if(d){let e=P(d);if(fo(e,n))f=`false`;else if(E(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=Ba(d,[`capture`],n),t=ise(d,n);if(!e||e.properties.some(e=>!E(e,`Property`)||A(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>E(e,`Property`)&&A(e,{allowComputedString:!0})===`capture`);if(r&&E(r,`Property`)&&fo(r.value,n))f=`false`;else if(r&&E(r,`Property`)&&E(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},ase=(e,t,n,r)=>{let i=po(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},mo=(e,t,n)=>{let r=P(e.callee);if(!E(r,`MemberExpression`))return[];let i=co(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||E(o,`SpreadElement`))return a;let s=uo(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},ose=(e,t,n)=>{let r=e.arguments[2];if(!r||E(r,`SpreadElement`))return null;let i=Ba(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>E(e,`Property`)&&A(e,{allowComputedString:!0})===`signal`);if(!a||!E(a,`Property`))return null;let o=P(a.value);if(!E(o,`MemberExpression`)||k(o)!==`signal`)return null;let s=co(o.object,t,n);return s?`abort:${s}`:null},ho=(e,t,n,r,i)=>{let a=Xoe.get(t)??[n.releaseMethodName],o=po(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?ose(e,r,i):null;return c&&s.push(c),Ka.has(t)?[...s,...mo(e,r,i)]:s},go=(e,t,n)=>{let r=b(e),i=r.parent,a=E(i,`AssignmentExpression`)&&i.right===r?i.left:E(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?co(a,t,n):null},sse=(e,t)=>{let n=P(e.callee);if(E(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&rt(e,n.name,Ua)===Wa;if(!E(n,`MemberExpression`))return!1;let r=P(n.object);return k(n)===Wa&&E(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&_e(e,r.name,Ua)},_o=(e,t,n)=>{let r=P(e.callee);if(E(r,`MemberExpression`)){let i=k(r),a=i?Yoe.get(i):void 0;if(a){let r=ase(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=mo(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!E(P(r.object),`ThisExpression`)){let e=co(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=co(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=co(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=Qa(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!E(a,`SpreadElement`)){let e=co(a,t,n);return e?[`timer:${i}:${e}`]:[]}return[]},vo=(e,t,n,r,i=new Set)=>{if(i.has(e))return!0;i.add(e);let a=!1;return Ra(e,e=>{if(a||e.range[0]>=r)return;if(E(e,`ThrowStatement`)||E(e,`NewExpression`))return a=!0,!1;if(!E(e,`CallExpression`)||_o(e,n,t).length>0||Ia(e,n))return;let o=P(e.callee);if(E(o,`MemberExpression`)){if(E(P(o.object),`ThisExpression`)){let r=k(o),a=r?ro(t,r,e):null;if(a&&!vo(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=y(o,n);if(!(s&&!vo(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},cse=(e,t,n)=>{let r=new Map;return io(e,t,e=>{if(!E(e,`CallExpression`))return;let i=e.arguments?.[0],a=i&&!E(i,`SpreadElement`)?P(i):null;if(!sse(e,n.scopes)||!E(a,`ThisExpression`))return;let o=e.arguments?.[1];if(!o||E(o,`SpreadElement`))return;let s=oo(o,t);if(!w(s))return;let c=new Map;io(s,t,e=>{if(E(e,`CallExpression`))for(let r of _o(e,n.scopes,t)){let t=c.get(r)??[];t.push(e),c.set(r,t)}});for(let[t,i]of c){if(!Aa(s,i,n))continue;let a=r.get(t)??[];a.push(e),r.set(t,a)}}),r},yo=(e,t,n,r=new Set)=>{let i=new Set;if(!e||!w(e)||r.has(e))return i;r.add(e);let a=null;Ra(e,t=>{E(t,`AwaitExpression`)&&M(t)===e&&(a===null||t.range[0]<a)&&(a=t.range[0])});let o=new Map;io(e,t,i=>{if(!E(i,`CallExpression`)||a!==null&&M(i)===e&&i.range[0]>a)return;let s=vo(e,t,n.scopes,i.range[0]),c=P(i.callee);if(E(c,`Identifier`)){let e=yo(y(c,n.scopes),t,n,r);for(let t of s?[]:e){let e=o.get(t)??[];e.push(i),o.set(t,e)}}if(E(c,`MemberExpression`)&&E(P(c.object),`ThisExpression`)){let e=k(c),a=yo(e?ro(t,e,i):null,t,n,r);for(let e of a){let t=o.get(e)??[];t.push(i),o.set(e,t)}}for(let e of s?[]:_o(i,n.scopes,t)){let t=o.get(e)??[];t.push(i),o.set(e,t)}});for(let[t,r]of o)Aa(e,r,n)&&i.add(t);return i},bo=(e,t,n,r=new Set)=>{let i=new Map,a=new Map;if(!e||!w(e)||r.has(e))return i;r.add(e);let o=null;Ra(e,t=>{E(t,`AwaitExpression`)&&M(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])}),Ra(e,s=>{if(!E(s,`CallExpression`)||o!==null&&M(s)===e&&s.range[0]>o||vo(e,t,n.scopes,s.range[0]))return;for(let r of _o(s,n.scopes,t)){let t=a.get(r)??[];t.push(s),a.set(r,t),Aa(e,[s],n)&&i.set(r,(i.get(r)??0)+1)}if(!Aa(e,[s],n))return;let c=P(s.callee),l=E(c,`MemberExpression`)&&E(P(c.object),`ThisExpression`)?k(c):null,u=bo(l?ro(t,l,s):E(c,`Identifier`)?y(c,n.scopes):null,t,n,new Set(r));for(let[e,t]of u)i.set(e,(i.get(e)??0)+t)});for(let[t,r]of a){if(!Aa(e,r,n))continue;let a=1;[...r.keys()].every(t=>Aa(e,r.filter(e=>e!==r[t]),n))&&(a+=1),i.set(t,Math.max(i.get(t)??0,a))}return i},lse=(e,t,n)=>{let r=new Map;return io(e,t,e=>{if(E(e,`CallExpression`))for(let i of _o(e,n,t)){let t=r.get(i)??[];t.push(e),r.set(i,t)}}),r},xo=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(w(n))return null;if(E(n,`ForStatement`)||E(n,`ForInStatement`)||E(n,`ForOfStatement`)||E(n,`WhileStatement`)||E(n,`DoWhileStatement`))return n;n=n.parent}return null},use=(e,t,n)=>{let r=n.scopes,i=new Map;io(e,t,e=>{if(!E(e,`CallExpression`))return;if(n.cfg&&!H(e,n))return!1;let a=P(e.callee);if(!E(a,`MemberExpression`))return;let o=k(a),s=o?Ga.get(o):void 0;if(!s)return;let c=po(e,s,r,t);if(!c)return;let l=i.get(c)??[];l.push(e),i.set(c,l)});let a=new Map;for(let[t,n]of i){if(n.some(t=>!!xo(t,e))){a.set(t,1/0);continue}let r=[];for(let t of n){let n=r.find(n=>n.every(n=>Da(t,n,e)));n?n.push(t):r.push([t])}a.set(t,r.length)}return a},So=(e,t,r,i=new Set)=>{let a=P(e);if(E(a,`Identifier`)){let e=r.symbolFor(a);if(!e||i.has(e.id)||bn(e,a,r))return!1;let n=T(a,a.name)?.initializer;return n?(i.add(e.id),So(n,t,r,i)):!1}if(E(a,`MemberExpression`)){let e=k(a),o=P(a.object);if(e!==`current`)return So(o,t,r,i);if(!E(t,`ClassBody`)||!E(o,`MemberExpression`))return!1;let s=k(o),c=P(o.object);if(!s||!E(c,`ThisExpression`))return!1;let l=t.body?.find(e=>$a(e)===s);if(!l||!E(l,`PropertyDefinition`)||l.static||!E(l.value,`CallExpression`)||!n(l.value,`createRef`,r,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!1,resolveNamedAliases:!0}))return!1;let u=a;for(;u&&u.parent!==t;)u=u.parent;let d=u?To(u):null,f=!1;return d&&Ra(d,e=>{if(f||e.range[0]>=a.range[0]||!E(e,`AssignmentExpression`))return;let t=P(e.left);E(t,`MemberExpression`)&&E(P(t.object),`ThisExpression`)&&k(t)===s&&(f=!0)}),!f}return!1},Co=(e,t,n,r=new Set)=>{let i=P(e);if(E(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||bn(e,i,n))return!1;let a=T(i,i.name)?.initializer;return a?(r.add(e.id),Co(a,t,n,r)):!1}if(!E(i,`CallExpression`))return!1;let a=P(i.callee);if(!E(a,`MemberExpression`))return!1;let o=k(a),s=P(a.object);if((o===`select`||o===`selectAll`)&&E(s,`Identifier`)&&(_e(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!E(e,`SpreadElement`)&&So(e,t,n))}return Co(a.object,t,n,r)},dse=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!E(e,`CallExpression`))return null;let c=P(e.callee),l=E(c,`MemberExpression`)?k(c):null;if(l&&Ga.has(l)&&E(c,`MemberExpression`)){let u=Ga.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=P(c.object),m=So(p,i,s),h=Co(p,i,s);for(;;){if(p=P(p),E(p,`CallExpression`)){p=P(p.callee);continue}if(E(p,`MemberExpression`)){p=P(p.object);continue}break}let g=E(p,`Identifier`)?s.symbolFor(p):null,_=g?t.has(g.id):!1,ee=u?po(e,u,s,i):null,v=u?ho(e,l,u,s,i):[],te=v.flatMap(e=>n.get(e)??[]),ne=v.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),re=te.filter(t=>ka(e,[t],a)).length,ie=xo(e),ae=!!(ie&&te.some(t=>xo(t)===ie&&ka(e,[t],a))),y=ee?r.get(ee)??1:1,oe=!!(ee&&(ka(e,ne,a)||ka(e,te,a)&&(l===`addEventListener`||ae||re>=y)));if(!(!f&&!_&&!oe&&!m&&!h))return null;let se=go(e,s,i),ce=P(c.object),le=E(ce,`Identifier`)?rt(e,ce.name,`react-native`):null,ue=E(ce,`Identifier`)&&(le!==null&&qa.has(le)||s.isGlobalReference(ce)&&qa.has(ce.name)),de=l===`subscribe`&&se?[`returned:unsubscribe:${se}`,`returned:call:${se}`]:(l===`addEventListener`||l===`addListener`)&&ue&&se?[`returned:remove:${se}`]:[];return{isAcquiredAfterSuspension:o||Ja(e,a),node:e,listenerIdentityKey:Ka.has(l)?ee:null,registrationCount:Ka.has(l)?y:1,releaseKeys:u?[...ho(e,l,u,s,i),...de]:de}}let u=Qa(e,s);if(u===`setInterval`){let t=go(e,s,i);return{isAcquiredAfterSuspension:o||Ja(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!$oe(e.arguments[0],i,s))return null;let t=go(e,s,i);return{isAcquiredAfterSuspension:o||Ja(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},wo=e=>(E(e,`MethodDefinition`)||E(e,`PropertyDefinition`))&&w(e.value)?e.value:null,To=e=>{let t=wo(e);return t&&w(t)?t.body??null:null},Eo=C({id:`class-component-missing-component-will-unmount-teardown`,title:`Class component acquires a resource with no teardown`,severity:`warn`,category:`Bugs`,requires:[`react`],recommendation:"Release listeners and timers acquired in `componentDidMount`/`constructor` by adding a `componentWillUnmount` that removes them (or use MobX `disposeOnUnmount`).",create:e=>({ClassBody(t){let n=t.parent;if(!n||!Na(n))return;let r=t.body??[],i=r.find(e=>$a(e)===`componentWillUnmount`),a=yo(i?wo(i):null,t,e),o=bo(i?wo(i):null,t,e);for(let n of r){let r=$a(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=To(n);if(!i)continue;let s=ese(i,t,e.scopes),c=lse(i,t,e.scopes),l=use(i,t,e),u=Zoe(i,t,e),d=[];if(io(i,t,n=>{if(e.cfg&&!H(n,e))return!1;let r=dse(n,s,c,l,t,e,u.has(n)||Qoe(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=cse(i,t,e),p=d.find(t=>{if(t.isAcquiredAfterSuspension||t.releaseKeys.length===0)return!0;if(t.releaseKeys.some(e=>a.has(e))){if(t.listenerIdentityKey&&t.registrationCount>1){let e=t.releaseKeys.some(e=>e.startsWith(`listener:removeAllListeners:`)&&a.has(e)),n=t.releaseKeys.reduce((e,t)=>t.startsWith(`listener:removeAllListeners:`)?e:e+(o.get(t)??0),0);if(!e&&n<t.registrationCount)return!0}return!1}return!t.releaseKeys.some(n=>{let r=f.get(n)??[];return ka(t.node,r,e)})});if(p){e.report({node:p.node,message:"This class registers a listener or timer during mount without a matching teardown on every unmount path, so it can keep firing after the component unmounts; release it in `componentWillUnmount`."});return}}}})}),Do=(e,t,n={})=>{if(!e||!t)return e===t;let r=P(e),i=P(t);if(r!==e||i!==t)return Do(r,i,n);if(e.type!==t.type)return!1;if(E(e,`ThisExpression`))return!0;if(E(e,`Identifier`)&&E(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(E(e,`PrivateIdentifier`)&&E(t,`PrivateIdentifier`))return e.name===t.name;if(E(e,`Literal`)&&E(t,`Literal`))return e.value===t.value;if(E(e,`MemberExpression`)&&E(t,`MemberExpression`))return e.computed===t.computed?Do(e.object,t.object,n)&&Do(e.property,t.property,e.computed?n:{}):!1;if(E(e,`CallExpression`)&&E(t,`CallExpression`)){if(!Do(e.callee,t.callee,n))return!1;let r=e.arguments??[],i=t.arguments??[];return r.length===i.length?r.every((e,t)=>Do(e,i[t],n)):!1}return!1},fse=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),pse=/button|link|nav|anchor/i,mse=/(?:button|link|anchor)$/i,Oo=/^[A-Z]/,hse=[`onClick`,`onPress`],ko=e=>Ji(P(e)),Ao=(e,t)=>{let n=P(e);if(Ji(n))return!0;let r=N(n,t);return r?.kind!==`const`||!r.initializer?!1:Ji(P(r.initializer))},jo=(e,t,n=new Set)=>{let r=P(e);if(Ao(r,t))return null;if(E(r,`ConditionalExpression`)){let e=r.consequent,i=r.alternate;return Ao(e,t)?jo(i,t,n):Ao(i,t)?jo(e,t,n):null}if(E(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&E(e.declarationNode,`VariableDeclarator`)&&E(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),jo(e.initializer,t,n)):r}if(E(r,`ArrowFunctionExpression`)||E(r,`FunctionExpression`)||E(r,`FunctionDeclaration`)){let e=P(r.body);if(!E(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return E(t,`ExpressionStatement`)?t.expression:E(t,`ReturnStatement`)&&t.argument?P(t.argument):null}return r},Mo=(e,t)=>!e.value||!E(e.value,`JSXExpressionContainer`)?null:jo(e.value.expression,t),No=(e,t)=>{let n=F(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(E(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!E(n.value,`JSXExpressionContainer`))return!0;let r=P(n.value.expression);return!E(r,`Literal`)||r.value!==!1},Po=(e,t)=>{let n=F(e.attributes,t);if(!n?.value)return!1;if(E(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!E(n.value,`JSXExpressionContainer`))return!0;let r=P(n.value.expression);return E(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!ko(r)},Fo=e=>{if(E(e,`JSXText`))return e.value.trim().length>0;if(E(e,`JSXElement`))return Io(e);if(E(e,`JSXFragment`))return e.children.some(e=>Fo(e));if(!E(e,`JSXExpressionContainer`))return!1;let t=P(e.expression);return E(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:ko(t)?!1:E(t,`JSXElement`)?Io(t):E(t,`JSXFragment`)?t.children.some(e=>Fo(e)):!0},Io=e=>Po(e.openingElement,`aria-label`)||Po(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>Fo(e)),gse=e=>{let t=F(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=ai(t.value);return n!==null&&n<0},_se=(e,t)=>er(e,t)||No(e,`hidden`),vse=(e,t)=>{let n=e.openingElement,r=tr(n.name);if(!r)return!1;if(Jr.has(r)){if(!fse.has(r))return!1}else if(t){if(!Oo.test(r)||!mse.test(r))return!1}else if(!Oo.test(r)||!pse.test(r))return!1;return t?r===`a`&&!F(n.attributes,`href`)||No(n,`disabled`)||No(n,`isDisabled`)||No(n,`aria-disabled`)||gse(n)?!1:Io(e):!0},Lo=(e,t,n,r)=>{let i=e=>Lo(e,t,n,r);if(E(e,`JSXElement`)){if(t&&_se(e.openingElement,r))return!1;if(vse(e,t!==null)){if(!t)return!0;for(let r of hse){let i=F(e.openingElement.attributes,r),a=i?Mo(i,n):null;if(a&&Do(t,a))return!0}}return e.children.some(e=>i(e))}return E(e,`JSXFragment`)?e.children.some(e=>i(e)):t?E(e,`JSXExpressionContainer`)?i(e.expression):E(e,`LogicalExpression`)?i(e.left)||i(e.right):E(e,`ConditionalExpression`)?i(e.consequent)||i(e.alternate):!1:!1},Ro=(e,t,n,r)=>{if(!e||!E(e,`JSXElement`))return!1;let i=t?Mo(t,n):null;return t&&!i?!1:e.children.some(e=>Lo(e,i,n,r))},yse=new Set([`focus`,`select`]),bse=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),xse=new Set([`getElementById`,`querySelector`]),Sse=new Set([`global`,`globalThis`,`window`]),Cse=e=>{if(!e)return null;let t=E(e,`ChainExpression`)?e.expression:e;if(!E(t,`CallExpression`))return null;let n=P(t.callee);if(!E(n,`MemberExpression`))return null;let r=n.property;return E(r,`Identifier`)?r.name:null},zo=(e,t)=>{let n=Cse(e);return n!==null&&(yse.has(n)||t&&bse.has(n))},wse=(e,t)=>{let n=P(e);return E(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!E(n,`MemberExpression`)||!E(n.object,`Identifier`)||!E(n.property,`Identifier`)||n.property.name!==`document`?!1:Sse.has(n.object.name)&&t.isGlobalReference(n.object)},Bo=e=>{let t=P(e);return E(t,`Identifier`)||E(t,`Literal`)?!0:E(t,`TemplateLiteral`)&&t.expressions.every(e=>Bo(e))},Tse=(e,t)=>{if(!E(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!E(n.id,`Identifier`)||!n.init)return null;let r=P(n.init);if(!E(r,`CallExpression`)||r.arguments.length!==1||E(r.arguments[0],`SpreadElement`)||!Bo(r.arguments[0]))return null;let i=P(r.callee);return!E(i,`MemberExpression`)||!E(i.property,`Identifier`)||!xse.has(i.property.name)||!wse(i.object,t)?null:n.id.name},Vo=e=>E(e,`ReturnStatement`)?e.argument===null:!E(e,`BlockStatement`)||e.body.length!==1?!1:Vo(e.body[0]),Ese=e=>{if(!E(e,`IfStatement`)||e.alternate||!Vo(e.consequent))return!1;let t=P(e.test),n=E(t,`ChainExpression`)?t.expression:t;if(!E(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=P(n.callee),i=E(r,`MemberExpression`)?P(r.object):null;return E(r,`MemberExpression`)&&E(r.property,`Identifier`)&&r.property.name===`closest`&&E(i,`MemberExpression`)&&E(i.object,`Identifier`)&&E(i.property,`Identifier`)&&i.property.name===`target`&&E(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},Dse=(e,t)=>{if(!E(e,`ExpressionStatement`))return!1;let n=P(e.expression);if(!E(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=P(n.callee);if(!E(r,`MemberExpression`))return!1;let i=P(r.object);return E(i,`Identifier`)&&i.name===t&&E(r.property,`Identifier`)&&r.property.name===`focus`},Ose=(e,t,n)=>{if(!e)return!1;if(zo(e,n))return!0;if(!E(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!Ese(r[0]),a=r[i],o=a?Tse(a,t):null;return o?r.length===i+2&&Dse(r[i+1],o):i>0?!1:r.every(e=>E(e,`ExpressionStatement`)&&zo(e.expression,n))},Ho=(e,t)=>Ji(e)&&(!E(e,`Identifier`)||t.isGlobalReference(e)),Uo=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ConditionalExpression`)){let e=P(r.consequent),i=P(r.alternate),a=null;return Ho(e,t)&&(a=Uo(i,t,n)),Ho(i,t)&&(a=Uo(e,t,n)),a?{...a,isConditional:!0}:null}if(E(r,`Identifier`)){let e=t.symbolFor(r);return!e?.initializer||![`const`,`let`,`function`].includes(e.kind)||e.references.some(e=>e.flag!==`read`)||n.has(e.id)?null:(n.add(e.id),Uo(e.initializer,t,n))}return E(r,`ArrowFunctionExpression`)||E(r,`FunctionExpression`)||E(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},Wo=(e,t)=>{let n=Uo(e,t);return n?Ose(n.handlerFunction.body??null,t,!n.isConditional):!1},Go=(e,t)=>!e.value||!E(e.value,`JSXExpressionContainer`)?!1:Wo(e.value.expression,t),Ko=e=>{let t=F(e.attributes,`role`);if(!t)return!1;let n=Xn(t);return n!==null&&Lr.has(n)},qo=e=>{if(E(e,`Identifier`)||E(e,`PrivateIdentifier`))return e.name},Jo=e=>{if(E(e,`FunctionExpression`)||E(e,`ArrowFunctionExpression`))return e},kse=(e,t)=>{for(let n of e.body){if(!E(n,`MethodDefinition`)&&!E(n,`PropertyDefinition`)||qo(n.key)!==t)continue;let e=Jo(n.value);if(e)return e}},Yo=(e,t)=>{for(let n of e.properties){if(!E(n,`Property`)||qo(n.key)!==t)continue;let e=Jo(n.value);if(e)return e}},Xo=e=>{let t=qo(e.property);if(t===void 0)return;let n=e.object;if(E(n,`ThisExpression`)){let n=e.parent;for(;n;){if(E(n,`ClassBody`))return kse(n,t);if(E(n,`ObjectExpression`)){let e=Yo(n,t);if(e)return e}n=n.parent}return}if(E(n,`Identifier`)){let e=T(n,n.name);if(E(e?.initializer,`ObjectExpression`))return Yo(e.initializer,t)}},Ase=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Zo=e=>{if(!e)return!1;let t=E(e,`ChainExpression`)?e.expression:e;if(!E(t,`CallExpression`))return!1;let n=t.callee;return!E(n,`MemberExpression`)||!E(n.property,`Identifier`)?!1:Ase.has(n.property.name)},Qo=e=>{if(!e)return!1;if(Zo(e))return!0;if(E(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!E(e,`ExpressionStatement`)||!Zo(e.expression))return!1;return!0}return!1},$o=e=>{if(!e.value||!E(e.value,`JSXExpressionContainer`))return!1;let t=P(e.value.expression);return E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`)?Qo(t.body):E(t,`MemberExpression`)?Qo(Xo(t)?.body):!1},es=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],ts=[`onClick`,`onClickCapture`],jse=new Set([...ts,...es].map(e=>e.toLowerCase())),Mse=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),Nse=(e,t)=>{let n=P(e);if(E(n,`ObjectExpression`))return n;if(!E(n,`Identifier`))return null;let r=N(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=P(r.initializer);return E(i,`ObjectExpression`)?i:null},ns=(e,t,n,r)=>{let i=Nse(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(E(e,`SpreadElement`)){if(!ns(e.argument,t,n,r)){a=!1;break}continue}if(!E(e,`Property`)){a=!1;break}let i=A(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(Mse.has(o)){a=!1;break}jse.has(o)&&n.set(o,e.value)}return r.delete(i),a},Pse=(e,t)=>{let n=new Map;for(let r of e)if(E(r,`JSXSpreadAttribute`)&&!ns(r.argument,t,n,new Set))return null;return n},Fse=new Set([`tr`,`td`,`th`,`canvas`]),Ise=new Set([`motion`,`styled`]),Lse=e=>{let t=e.name;if(!E(t,`JSXMemberExpression`))return null;let n=t.object;if(!E(n,`JSXIdentifier`)||!Ise.has(n.name))return null;let r=t.property.name;return r&&Jr.has(r)?r:null},Rse=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),zse=e=>{let t=F(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!E(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Rse.has(r.toLowerCase()))},Bse=e=>{if(!E(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!E(e,`MemberExpression`))return null;let t=e.property;return E(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},rs=e=>{if(!e||typeof e!=`object`)return!1;if(Bse(e))return!0;let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let n=t[e];if(Array.isArray(n)){for(let e of n)if(e&&typeof e==`object`&&typeof e.type==`string`&&rs(e))return!0}else if(n&&typeof n==`object`&&typeof n.type==`string`&&rs(n))return!0}return!1},is=e=>{let t=P(e);if(E(t,`Identifier`)){let e=T(t,t.name);if(!e?.initializer)return null;t=P(e.initializer)}return E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`)||E(t,`FunctionDeclaration`)?t:null},Vse=e=>!e.value||!E(e.value,`JSXExpressionContainer`)?null:is(e.value.expression),Hse=e=>{let t=Vse(e);return t?rs(t.body??null):!1},Use=(e,t)=>e===`li`&&!!(F(t.attributes,`onMouseEnter`)||F(t.attributes,`onMouseOver`)),as=C({id:`click-events-have-key-events`,title:`Click handler missing keyboard handler`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Pair `onClick` with a key handler so keyboard users can trigger it.",category:`Accessibility`,create:e=>{let t=Or(e.settings),n=dt(e.filename);return{JSXOpeningElement(r){if(n)return;let i=Lse(r)??Zn(r,e.settings);if(!Jr.has(i)||i===`label`||!Fse.has(i)&&ii(i,r))return;let a=Pse(r.attributes,e.scopes);if(!a&&t)return;let o=a??new Map,s=F(r.attributes,`onClick`)??F(r.attributes,`onClickCapture`),c=ts.map(e=>o.get(e.toLowerCase())).find(e=>e!==void 0);if(!s&&!c||s&&$o(s)||s&&Go(s,e.scopes)||c&&Wo(c,e.scopes))return;let l=c?is(c):null;l&&rs(l.body??null)||zse(r)||Use(i,r)||s&&Hse(s)||Ro(r.parent,null,e.scopes,e.settings)||s&&Ro(r.parent,s,e.scopes,e.settings)||er(r,e.settings)||Ko(r)||es.some(e=>F(r.attributes,e)||o.has(e.toLowerCase()))||e.report({node:r.name,message:"Keyboard users can't trigger this click handler because there's no keyboard one, so add `onKeyUp`, `onKeyDown`, or `onKeyPress`."})}}}}),os=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=P(e.callee);if(!E(r,`MemberExpression`)||r.computed)return!1;let i=P(r.object);return E(i,`Identifier`)&&i.name===t&&E(r.property,`Identifier`)&&r.property.name===n},ss=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=P(n.object);return E(r,`Identifier`)&&r.name===`localStorage`&&E(n.property,`Identifier`)&&n.property.name===t},Wse=e=>{let t=e.handler;if(!t)return!1;let n=!1,r=!1;return D(t.body,e=>{if(w(e))return!1;E(e,`ReturnStatement`)&&(n=!0),E(e,`ThrowStatement`)&&(r=!0)}),n&&!r},Gse=(e,t)=>{let n=P(e);if(!E(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r)return null;let i=r.kind===`function`?r.declarationNode:r.initializer;return w(i)?i:null},Kse=(e,t)=>{if(!w(e))return!1;let n=e.params?.[0];if(!n||!E(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!1;let i=new Set([r.id]),a=!1;return D(e.body,e=>{if(w(e))return!1;if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)&&e.init){let n=P(e.init);if(E(n,`Identifier`)){let r=t.symbolFor(n);if(r&&i.has(r.id)){let n=t.symbolFor(e.id);n&&i.add(n.id)}}}if(!E(e,`UnaryExpression`)||e.operator!==`typeof`)return;let n=P(e.argument);if(!E(n,`MemberExpression`))return;let r=P(n.object);if(!E(r,`Identifier`))return;let o=t.symbolFor(r);o&&i.has(o.id)&&(a=!0)}),a},cs=(e,t)=>{e.set(t,(e.get(t)??0)+1)},qse=e=>{let t=e.parent;return!!(t&&E(t,`ReturnStatement`)&&t.argument===e)},Jse=({programNode:e,scopes:t,resolveKey:n})=>{let r=new Map,i=new Map,a=new Set;D(e,e=>{if(!E(e,`CallExpression`)||!ss(e,`getItem`))return;let t=e.arguments?.[0];if(!t)return;let i=n(t);i!==null&&cs(r,i)}),D(e,e=>{if(!E(e,`TryStatement`)||!Wse(e))return;let r=new Map,o=new Map;D(e.block,e=>{if(w(e))return!1;if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)&&e.init){let i=P(e.init);if(E(i,`CallExpression`)&&ss(i,`getItem`)){let a=i.arguments?.[0],o=t.symbolFor(e.id);if(a&&o){let e=n(a);e!==null&&r.set(o.id,e)}}if(E(i,`CallExpression`)&&os(i,`JSON`,`parse`)){let n=i.arguments?.[0],a=t.symbolFor(e.id);if(n&&E(n,`Identifier`)&&a){let e=t.symbolFor(n);e&&r.has(e.id)&&o.set(a.id,e.id)}}}if(!E(e,`ConditionalExpression`)||!qse(e))return;let s=P(e.test);if(!E(s,`CallExpression`))return;let c=s.arguments?.[0];if(!c||!E(c,`Identifier`))return;let l=t.symbolFor(c);if(!l)return;let u=o.get(l.id);if(u===void 0)return;let d=P(e.consequent);if(!E(d,`Identifier`)||t.symbolFor(d)?.id!==l.id)return;let f=Gse(s.callee,t);if(!f||!Kse(f,t))return;let p=r.get(u);p===void 0||a.has(u)||(a.add(u),cs(i,p))})});let o=new Set;for(let[e,t]of r)i.get(e)===t&&o.add(e);return o},Yse=/(?:[._:-]v\d+|@\d+|\bv\d+\b)/i,Xse=/[a-z]V\d+/,Zse=e=>Yse.test(e)||Xse.test(e),Qse=e=>os(e,`JSON`,`stringify`),ls=(e,t)=>{if(E(e,`Literal`))return typeof e.value==`string`?e.value:null;if(!E(e,`Identifier`))return null;let n=t.scopes.symbolFor(e);if(!n||n.kind!==`const`)return null;let r=n.initializer;return E(r,`Literal`)&&typeof r.value==`string`?r.value:null},us=C({id:`client-localstorage-no-version`,title:`Unversioned localStorage key`,tags:[`test-noise`],severity:`warn`,category:`Correctness`,recommendation:`Put a version in the storage key (e.g. "myKey:v1"). If you change the data shape later, old saved data can be ignored instead of crashing the app.`,create:e=>{let t=null,n=null;return{Program(e){t=e},CallExpression(r){if(!E(r.callee,`MemberExpression`))return;let i=P(r.callee.object);if(!E(i,`Identifier`)||i.name!==`localStorage`||!E(r.callee.property,`Identifier`)||r.callee.property.name!==`setItem`)return;let a=r.arguments?.[0];if(!a)return;let o=r.arguments?.[1];if(!o||!Qse(o))return;let s=ls(a,e);s!==null&&(Zse(s)||(n===null&&t&&(n=Jse({programNode:t,scopes:e.scopes,resolveKey:t=>ls(t,e)})),!n?.has(s)&&e.report({node:a,message:`${i.name}.setItem("${s}", JSON.stringify(...)) has no version, so changing the data shape later crashes your users' saved sessions. Add one to the key (e.g. "${s}:v1").`})))}}}}),ds=(e,t,n)=>{let r=e.get(t)??[];r.push(n),e.set(t,r)},fs=(e,t,n,r)=>{let i=e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)??new Map;ds(i,n,r),e.memberMutationCandidatesByReceiverIdentityAndMethod.set(t,i)},ps=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],ms=(e,t,n,r)=>{if(!E(t,`MemberExpression`))return;let i=k(t),a=B(t.object,r);i&&a&&(ds(e.memberMutationCandidatesByReceiverIdentity,a,n),fs(e,a,i,n))},$se=(e,t,n)=>{if(E(t,`AssignmentExpression`)){let r=P(t.left),i=B(r,n);i&&ds(e.receiverAssignmentCandidatesByIdentity,i,t),ms(e,r,t,n)}else E(t,`UnaryExpression`)&&t.operator===`delete`&&ms(e,P(t.argument),t,n);if(!E(t,`CallExpression`))return;let r=P(t.callee);if(!E(r,`MemberExpression`)||k(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(E(i,`Literal`)&&typeof i.value==`string`&&a&&!E(a,`SpreadElement`)){let r=B(a,n);r&&(ds(e.memberMutationCandidatesByReceiverIdentity,r,t),fs(e,r,i.value,t))}},hs=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=P(e.callee);if(!E(r,`MemberExpression`))return!1;let i=P(r.object);return k(r)===`defineProperty`&&E(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&E(e.arguments[1],`Literal`)&&e.arguments[1].value===t},ece=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},gs=(e,t)=>{let n=P(e);return E(n,`MemberExpression`)&&k(n)===t?n.object:null},_s=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},vs=(e,t)=>{let n=E(e,`FunctionDeclaration`)?e.id:E(e.parent,`VariableDeclarator`)&&e.parent.init===e&&E(e.parent.id,`Identifier`)?e.parent.id:null,r=n?t.scopes.scopeFor(e).symbolsByName.get(n.name):void 0;if(!r||r.references.length===0)return null;let i=[];for(let n of r.references){let r=n.identifier.parent;if(!E(r,`CallExpression`)||P(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},tce=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!E(i,`MethodDefinition`)||!E(a,`MethodDefinition`)||i.parent!==a.parent||!E(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},ys=(e,t,n,r=new Map)=>{let i=r.get(e)??new Set;if(i.has(t))return!1;let a=new Map(r);a.set(e,new Set([...i,t]));let o=n.cfg.enclosingFunction(e),s=n.cfg.enclosingFunction(t);if(!o||!s)return!1;if(o!==s){if(tce(o,s,e,n))return!0;if(_s(o,s)){let t=vs(s,n);return!t&&E(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>ys(e,t,n,a)))}if(_s(s,o)){let r=vs(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>ys(e,t,n,a)))}let r=vs(o,n),i=vs(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>ys(e,t,n,a)||r.some(e=>ys(e,t,n,a))):!1}let c=n.cfg.cfgFor(s),l=c?.blockOf(e),u=c?.blockOf(t);if(!c||!l||!u||l===u)return e.range[0]<t.range[0];let d=new Set,f=l===c.entry?[]:[c.entry];for(;f.length>0;){let e=f.shift();if(!(!e||d.has(e))){if(e===u)return!1;d.add(e);for(let t of e.successors)t.to!==l&&f.push(t.to)}}return!0},nce=(e,t,n)=>{let r=n.cfg.enclosingFunction(t);if(!r||e.length<2||e.some(e=>n.cfg.enclosingFunction(e)!==r))return!1;let i=n.cfg.cfgFor(r),a=i?.blockOf(t);if(!i||!a)return!1;let o=new Set(e.map(e=>i.blockOf(e)).filter(e=>e!==null));if(e.some(e=>i.blockOf(e)===a&&e.range[0]<t.range[0]))return!0;o.delete(a);let s=new Set,c=[i.entry];for(;c.length>0;){let e=c.shift();if(!(!e||s.has(e)||o.has(e))){if(e===a)return!1;s.add(e);for(let t of e.successors)c.push(t.to)}}return!0},bs=(e,t)=>{if(!E(e,`CallExpression`))return null;let n=P(e.callee);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.initializer??r?.declarationNode;return i&&w(P(i))?P(i):null},xs=(e,t,n,r)=>Cs(e,n).some(e=>e.callExpression!==t&&ys(e.callExpression,t,n)&&ws(e.callExpression,e.argumentIndex,n,r,new Map)),rce=(e,t,n,r)=>{let i=bs(P(e),n);if(!i||!w(i))return!1;let a=[];return D(i.body,e=>{if(e!==i.body&&w(e))return!1;E(e,`ReturnStatement`)&&e.argument&&a.push(e)}),a.length>0&&a.every(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return!1;let i=B(e.argument,n);if(!i)return!1;let a=P(e.argument),o=E(a,`Identifier`)?n.scopes.symbolFor(a):null;return o&&xs(o,e,n,r)?!0:!!r.memberMutationCandidatesByReceiverIdentity.get(i)?.some(r=>{let i=!!gs(E(r,`AssignmentExpression`)?r.left:E(r,`UnaryExpression`)?r.argument:r,t);return E(r,`CallExpression`)&&(i=hs(r,t,n)),i&&ys(r,e,n)})})},Ss=new WeakMap,Cs=(e,t,n=new Set)=>{let r=Ss.get(e);if(r)return r;if(n.has(e))return[];let i=new Set(n);i.add(e);let a=new Map,o=(e,t)=>{let n=a.get(e)??new Set;n.add(t),a.set(e,n)},s=e=>{if(e)for(let n of Cs(e,t,i))o(n.callExpression,n.argumentIndex)};for(let n of e.references){let e=n.identifier,r=!0;for(;e.parent&&r;){let t=e.parent;r=!1,P(t)===e?(e=t,r=!0):E(t,`Property`)&&t.value===e&&E(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(E(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||E(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||E(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(E(i,`VariableDeclarator`)&&i.init===e&&E(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(E(i,`AssignmentExpression`)&&i.right===e){let e=P(i.left),n=E(e,`Identifier`)?e:E(e,`MemberExpression`)&&E(P(e.object),`Identifier`)?P(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(E(i,`CallExpression`)){let t=i.arguments.findIndex(t=>t===e);t>=0&&o(i,t)}}let c=[...a].flatMap(([e,t])=>[...t].map(t=>({argumentIndex:t,callExpression:e})));return Ss.set(e,c),c},ice=(e,t,n)=>{if(!w(e))return!1;if(E(e,`ArrowFunctionExpression`)&&!E(e.body,`BlockStatement`))return B(e.body,n)===t;let r=[];return D(e.body,t=>{if(t!==e.body&&w(t))return!1;E(t,`ReturnStatement`)&&r.push(t)}),r.length>0&&r.every(e=>E(e,`ReturnStatement`)&&e.argument&&B(e.argument,n)===t)},ace=(e,t)=>{let n=e;for(;n.parent&&P(n.parent)===n;)n=n.parent;let r=n.parent;if(!E(r,`VariableDeclarator`)||r.init!==n||!E(r.id,`Identifier`))return null;let i=t.scopes.scopeFor(r);for(;i;){let e=i.symbolsByName.get(r.id.name);if(e)return e;i=i.parent}return null},ws=(e,t,n,r,i)=>{let a=bs(e,n);if(!a||!w(a))return!0;if(a.generator)return!1;let o=i.get(a)??new Set;if(o.has(t))return!1;o.add(t),i.set(a,o);let s=a.params[t];if(!E(s,`Identifier`))return!0;let c=n.scopes.ownScopeFor(a)?.symbolsByName.get(s.name);if(!c)return!0;let l=`symbol:${c.id}`;if(r.memberMutationCandidatesByReceiverIdentity.get(l)?.some(e=>n.cfg.enclosingFunction(e)===a)||Cs(c,n).some(e=>n.cfg.enclosingFunction(e.callExpression)===a?ws(e.callExpression,e.argumentIndex,n,r,i):!1))return!0;if(!ice(a,l,n))return!1;let u=ace(e,n);return u?Cs(u,n).some(e=>ws(e.callExpression,e.argumentIndex,n,r,i)):!1},oce=(e,t,n,r,i,a=[],o)=>{if(rce(t,n,i,e))return!0;let s=B(t,i),c=P(t),l=E(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&xs(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?ps(e,s,n):[],...a.flatMap(t=>ps(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!ece(i.scopes.scopeFor(e),u)&&!ys(e,r,i))continue;let t=null;if(E(e,`AssignmentExpression`)){if(s!==null&&B(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),ys(e,r,i)){d=!0;break}continue}t=gs(e.left,n)}else if(E(e,`UnaryExpression`)&&e.operator===`delete`)t=gs(e.argument,n);else if(E(e,`CallExpression`)&&hs(e,n,i)){let n=e.arguments[0];t=n&&!E(n,`SpreadElement`)?n:null}if(!t)continue;let c=B(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),ys(e,r,i)&&(d=!0))}return d||nce(p,r,i)},Ts=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>$se(t,n,e),hasProvenMutation:(n,r,i,a,o)=>oce(t,n,r,i,e,a,o)}},Es=(e,t)=>!!(e&&E(e,`MemberExpression`)&&E(e.property,`Identifier`)&&e.property.name===t),Ds=e=>Xr(e)||(e.kind!==`let`&&e.kind!==`var`||!E(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||!e.references.every(e=>e.flag===`read`)||e.scope.symbols.some(t=>t!==e&&t.name===e.name)?null:e.initializer),Os=e=>E(e,`Identifier`)?e.name:E(e,`Literal`)&&typeof e.value==`string`?e.value:null,ks=e=>{if(!E(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&E(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!E(n,`Property`)||!E(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!E(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!E(a,`TSTypeLiteral`))return null;let o=Os(n.key);if(!o)return null;for(let e of a.members)if(E(e,`TSPropertySignature`)&&Os(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},As=(e,t)=>{let n=e.parent;for(;n;){if(`typeParameters`in n){let e=n.typeParameters;if(e&&E(e,`TSTypeParameterDeclaration`)&&e.params.some(e=>E(e,`TSTypeParameter`)&&E(e.name,`Identifier`)&&e.name.name===t))return!0}n=n.parent}return!1},js=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},Ms=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=P(e.callee);if(E(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=P(n.object);return E(r,`Identifier`)&&(r.name===`window`||r.name===`globalThis`)&&t.isGlobalReference(r)},sce=new Set(`AbortSignal.Document.DocumentFragment.Element.EventTarget.HTMLElement.HTMLAnchorElement.HTMLButtonElement.HTMLCanvasElement.HTMLDivElement.HTMLFormElement.HTMLIFrameElement.HTMLImageElement.HTMLInputElement.HTMLLabelElement.HTMLLIElement.HTMLMediaElement.HTMLParagraphElement.HTMLSelectElement.HTMLSpanElement.HTMLTableElement.HTMLTextAreaElement.HTMLUListElement.HTMLVideoElement.MediaQueryList.Node.ShadowRoot.SVGElement.SVGSVGElement.Window.XMLDocument`.split(`.`)),cce=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,lce=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),uce=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),dce=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),Ns=e=>e===`Window`?[`Window`,`EventTarget`]:e===`Document`||e===`XMLDocument`||e===`DocumentFragment`||e===`ShadowRoot`?[e,`Node`,`EventTarget`]:e===`HTMLElement`||e.startsWith(`HTML`)?[e,`HTMLElement`,`Element`,`Node`,`EventTarget`]:e===`SVGElement`||e.startsWith(`SVG`)?[e,`SVGElement`,`Element`,`Node`,`EventTarget`]:e===`Element`?[`Element`,`Node`,`EventTarget`]:e===`Node`?[`Node`,`EventTarget`]:[e,`EventTarget`],fce=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:sce.has(e)||cce.test(e),Ps=(e,t,n)=>{if(E(e,`TSTypeReference`)){if(!E(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return fce(r,n)&&!js(e,r,t)&&!As(e,r)}if(!E(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(E(i,`TSNullKeyword`)||E(i,`TSUndefinedKeyword`))){if(!Ps(i,t,n))return!1;r=!0}return r},pce=(e,t)=>!E(e,`TSTypeReference`)||!E(e.typeName,`Identifier`)||!Ps(e,t,`dom-event-target`)?null:e.typeName.name,Fs=(e,t,n)=>E(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),Is=(e,t,n=new Set)=>{let r=P(e);if(Fs(r,`window`,t))return[`Window`,`EventTarget`];if(Fs(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(E(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=ks(e),a=i?pce(i,t):null;if(a)return Ns(a);let o=Ds(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),Is(o,t,s)}if(E(r,`NewExpression`)){let e=P(r.callee);if(E(e,`Identifier`)&&lce.has(e.name))return Ns(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(E(r,`MemberExpression`)){let e=k(r);if(e===`body`||e===`documentElement`)return Ns(`HTMLElement`)}if(E(r,`CallExpression`)){if(Ms(r,t))return Ns(`MediaQueryList`);let e=P(r.callee),i=E(e,`MemberExpression`)?k(e):null;if(i===`matchMedia`&&E(e,`MemberExpression`)&&Is(e.object,t,n).includes(`Window`))return Ns(`MediaQueryList`);if(i===`createElement`)return Ns(`HTMLElement`);if(i===`createElementNS`)return Ns(`SVGElement`);if(i&&uce.has(i))return Ns(`Element`)}return[`EventTarget`]},mce=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...lce]).some(t=>yce(e,t,n,new Set)),hce=(e,t,n)=>{let r=e,i=!1;for(;E(r,`TSAsExpression`)||E(r,`TSTypeAssertion`)||E(r,`TSSatisfiesExpression`);){if(Ps(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(E(a,`Identifier`)){let e=t.symbolFor(a),n=e?Xr(e):null;if(!n)return!1;a=P(n)}return i&&E(a,`Identifier`)||i&&E(a,`MemberExpression`)||i&&E(a,`ObjectExpression`)?!1:i&&E(a,`NewExpression`)?mce(a.callee,n,t):i},gce=e=>{if(!E(e,`MemberExpression`)||!E(P(e.object),`ThisExpression`))return null;let t=k(e);if(!t)return null;let n=e.parent;for(;n&&!E(n,`ClassBody`);){if((E(n,`FunctionDeclaration`)||E(n,`FunctionExpression`))&&!E(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!E(e,`PropertyDefinition`)||e.static)&&Os(e.key)===t)return e;return null},_ce=e=>{if(!E(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&E(t,`TSTypeAnnotation`)?t.typeAnnotation:null},vce=(e,t,n)=>{if(!E(e,`CallExpression`))return null;let r=P(e.callee);if(!E(r,`Identifier`))return null;let i=t.symbolFor(r);if(!i||n.has(i.id)||i.kind!==`const`&&!(i.kind===`function`&&i.references.every(e=>e.flag===`read`)))return null;let a=i.initializer??i.declarationNode;return!w(a)||a.async||a.generator?null:(n.add(i.id),a)},yce=(e,t,n,r)=>{let i=P(e);if(E(i,`Identifier`)){if(i.name===t&&n.isGlobalReference(i))return!0;let e=n.symbolFor(i);if(!e||r.has(e.id))return!1;let a=Xr(e);return a?(r.add(e.id),yce(a,t,n,r)):!1}if(!E(i,`MemberExpression`)||k(i)!==t)return!1;let a=P(i.object);return Fs(a,`window`,n)||Fs(a,`globalThis`,n)},bce=(e,t,r)=>{let i=P(e);for(;E(i,`Identifier`);){let e=t.symbolFor(i);if(!e||r.has(e.id))return!1;let n=Xr(e);if(!n)return!1;r.add(e.id),i=P(n)}if(!E(i,`CallExpression`)||!n(i,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!n(i,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!E(i.typeArguments,`TSTypeParameterInstantiation`))return!1;let a=i.typeArguments.params[0];return!!(a&&Ps(a,t,`dom-event-target`))},Ls=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(hce(e,n,t))return!0;let a=P(e);if(E(a,`Identifier`)){if(i&&(Fs(a,`document`,n)||Fs(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=ks(e);if(o&&Ps(o,n,t))return!0;let s=Ds(e);return s?(r.add(e.id),Ls(s,t,n,r)):!1}if(E(a,`NewExpression`))return mce(a.callee,t,n);if(E(a,`CallExpression`)){let e=P(a.callee);if(i&&E(e,`MemberExpression`)&&uce.has(k(e)??``)&&Ls(e.object,t,n,r))return!0;let o=vce(a,n,r);return!!(o&&Ne(o,n,e=>Ls(e,t,n,new Set(r)),void 0,`every`))}if(E(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(E(e,`Literal`)&&e.value===null)&&!(E(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>Ls(e,t,n,new Set(r)))}if(!E(a,`MemberExpression`))return!1;let o=gce(a);if(o&&E(o,`PropertyDefinition`)){let e=_ce(o);if(e&&Ps(e,n,t)||o.value&&Ls(o.value,t,n,r))return!0}if(!i)return!1;let s=k(a);if(s===`current`)return bce(a.object,n,r);let c=P(a.object);return s===`document`&&(Fs(c,`window`,n)||Fs(c,`globalThis`,n))?!0:s!==null&&dce.has(s)&&Ls(c,t,n,r)},xce=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,Sce=e=>xce.test(mt(e??``)),Rs=(e,t)=>{let n=P(e);return E(n,`Identifier`)?t.has(n.name):E(n,`SpreadElement`)?Rs(n.argument,t):E(n,`ObjectExpression`)?n.properties.some(e=>E(e,`Property`)?Rs(e.value,t):E(e,`SpreadElement`)&&Rs(e.argument,t)):E(n,`ArrayExpression`)?n.elements.some(e=>e&&Rs(e,t)):E(n,`ConditionalExpression`)?Rs(n.consequent,t)||Rs(n.alternate,t):E(n,`LogicalExpression`)?Rs(n.left,t)||Rs(n.right,t):E(n,`SequenceExpression`)?n.expressions.some(e=>Rs(e,t)):!1},zs=(e,t,n)=>{let r=P(t);if(E(e,`Identifier`)){Rs(r,n)&&n.add(e.name);return}if(E(e,`AssignmentPattern`)){zs(e.left,r,n);return}if(E(e,`ObjectPattern`)&&E(r,`ObjectExpression`)){for(let t of e.properties){if(!E(t,`Property`))continue;let e=Os(t.key);if(!e)continue;let i=r.properties.find(t=>E(t,`Property`)&&Os(t.key)===e);E(i,`Property`)&&zs(t.value,i.value,n)}return}if(E(e,`ArrayPattern`)&&E(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&zs(i,e,n)}},Cce=(e,t,n)=>{if(!E(e,`CallExpression`)||!n.filename)return!1;let r=P(e.callee);if(!E(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`import`)return!1;let a=i.declarationNode,o=a.parent,s=Dn(a);if(!s||!E(o,`ImportDeclaration`)||typeof o.source.value!=`string`)return!1;let c=Et(n.filename,o.source.value,s);if(!c||!w(c))return!1;let l=c.params[t];if(!E(l,`Identifier`))return!1;let u=new Set([l.name]),d=!1;return D(c.body,e=>{if(d)return!1;if(E(e,`VariableDeclarator`)&&e.init){zs(e.id,e.init,u);return}if(E(e,`AssignmentExpression`)&&E(e.left,`Identifier`)&&Rs(e.right,u)){u.add(e.left.name);return}if(E(e,`CallExpression`)){let t=P(e.callee);(E(t,`MemberExpression`)&&k(t)===`preventDefault`&&Rs(t.object,u)||e.arguments.some(e=>!E(e,`SpreadElement`)&&Rs(e,u)))&&(d=!0);return}if(E(e,`NewExpression`)&&e.arguments.some(e=>!E(e,`SpreadElement`)&&Rs(e,u))){d=!0;return}let t=E(e,`AssignmentExpression`)?P(e.left):null;E(e,`AssignmentExpression`)&&(E(t,`MemberExpression`)&&Rs(t.object,u)||Rs(e.right,u))&&(d=!0)}),!d},wce=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),Tce=new Set([`catch`,`finally`,`then`]),Bs=(e,t,n=new Set)=>{let r=(e,n)=>{let i=P(e);if(w(i))return i.async;if(!E(i,`Identifier`))return!1;let a=t.symbolFor(i);if(!a||n.has(a.id))return!1;let o=a.initializer??a.declarationNode,s=new Set(n);return s.add(a.id),r(o,s)},i=P(e);if(E(i,`Identifier`)){let e=t.symbolFor(i);if(!e||!e.initializer||n.has(e.id))return!1;let r=new Set(n);return r.add(e.id),Bs(e.initializer,t,r)}if(E(i,`NewExpression`)){let e=P(i.callee);return E(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e)}if(!E(i,`CallExpression`))return!1;let a=P(i.callee);if(E(a,`Identifier`))return r(a,n);if(!E(a,`MemberExpression`))return!1;let o=P(a.object);return Tce.has(k(a)??``)?Bs(a.object,t,n):!!(wce.has(k(a)??``)&&E(o,`Identifier`)&&o.name===`Promise`&&t.isGlobalReference(o))},Ece=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),Dce=new Set([`catch`,`finally`,`then`]),Vs=e=>{if(!w(e))return!1;let t=!1;return D(e,n=>{if(t||n!==e&&w(n))return!1;E(n,`CallExpression`)&&E(n.callee,`MemberExpression`)&&k(n.callee)===`preventDefault`&&(t=!0)}),t},Oce=(e,t)=>{let n=!1;return D(e,e=>{if(n)return!1;E(e,`AssignmentExpression`)&&e.operator===`=`&&E(e.left,`Identifier`)&&e.left.name===t&&Vs(e.right)&&(n=!0)}),n},kce=e=>{if(!e)return!1;if(Vs(e))return!0;if(E(e,`Identifier`)){let t=T(e,e.name);return t?Vs(t.initializer??void 0)?!0:Oce(t.scopeOwner,e.name):!1}if(E(e,`MemberExpression`)){let t=Xo(e);return t?Vs(t):!1}return!1},Hs=(e,t)=>{if(!e)return;let n=P(e);if(w(n))return n;if(E(n,`Identifier`)){let e=t.scopes.symbolFor(n),r=e?.initializer??e?.declarationNode;if(r&&w(r))return r;let i=T(n,n.name),a;return e&&i&&D(i.scopeOwner,r=>{if(r.range[0]>=n.range[0])return!1;if(E(r,`AssignmentExpression`)&&r.operator===`=`&&E(r.left,`Identifier`)&&t.scopes.symbolFor(r.left)===e){let e=P(r.right);a=w(e)?e:void 0}}),a}return E(n,`MemberExpression`)?Xo(n):void 0},Ace=(e,t,n)=>{if(!Cce(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(P(e)===r||E(e,`UnaryExpression`)&&e.operator===`!`||E(e,`LogicalExpression`)){r=e;continue}return E(e,`IfStatement`)&&e.test===r||E(e,`ConditionalExpression`)&&e.test===r||E(e,`WhileStatement`)&&e.test===r||E(e,`DoWhileStatement`)&&e.test===r||E(e,`ForStatement`)&&e.test===r}return!1},jce=(e,t)=>{let n=Hs(e,t);if(!n){let n=e?P(e):void 0;if(!n||!E(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&(r.kind===`let`||r.kind===`var`)&&r.references.some(e=>e.identifier.range[0]<n.range[0]&&e.flag!==`read`))}let r=new Map,i=(e,n=new Set)=>{let r=P(e);if(E(r,`Identifier`)){if(Ece.has(r.name)&&t.scopes.isGlobalReference(r))return!0;let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let a=Xr(e);if(!a)return!1;let o=new Set(n);return o.add(e.id),i(a,o)}if(!E(r,`MemberExpression`))return!1;let a=P(r.object);return Ece.has(k(r)??``)&&E(a,`Identifier`)&&(a.name===`window`||a.name===`globalThis`)&&t.scopes.isGlobalReference(a)},a=e=>{let n=e;for(;n.parent&&P(n.parent)===P(n);)n=n.parent;let r=n.parent;if(E(r,`NewExpression`)){let e=P(r.callee);return r.arguments.some(e=>e===n)&&E(e,`Identifier`)&&e.name===`Promise`&&t.scopes.isGlobalReference(e)}if(!E(r,`CallExpression`))return!1;if(P(r.callee)===P(n))return!0;if(!r.arguments.some(e=>e===n))return!1;let a=P(r.callee);if(i(a))return!1;if(E(a,`Identifier`)||!E(a,`MemberExpression`))return!0;let o=k(a);return!(Dce.has(o??``)&&Bs(a.object,t.scopes)||o===`addEventListener`&&Ls(a.object,`dom-event-target`,t.scopes))},o=(e,n,i=!1)=>{if(!w(e))return!1;let s=r.get(e)??new Set;if(s.has(n))return!1;s.add(n),r.set(e,s);let c=e.params[n];if(!c)return!i;let l=E(c,`AssignmentPattern`)?c.left:c;if(!E(l,`Identifier`))return!(i&&E(l,`ObjectPattern`));let u=t.scopes.symbolFor(l);if(!u)return!1;let d=new Set([u]),f=new Set,p=e=>{let n=P(e);if(!E(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&d.has(r))},m=e=>{let n=P(e);if(p(n))return!0;if(E(n,`SpreadElement`))return m(n.argument);if(E(n,`MemberExpression`)){let e=P(n.object);if(E(e,`Identifier`)){let n=t.scopes.symbolFor(e);if(n&&f.has(n))return!0}let r=k(n);if(E(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>E(e,`Property`)&&qo(e.key)===r);return!!(E(t,`Property`)&&m(t.value))}if(E(e,`ArrayExpression`)&&E(n.property,`Literal`)&&typeof n.property.value==`number`){let t=e.elements[n.property.value];return!!(t&&m(t))}return!1}return E(n,`ObjectExpression`)?n.properties.some(e=>E(e,`Property`)?m(e.value):E(e,`SpreadElement`)&&m(e.argument)):E(n,`ArrayExpression`)?n.elements.some(e=>e&&m(e)):E(n,`ConditionalExpression`)?m(n.consequent)||m(n.alternate):E(n,`LogicalExpression`)?m(n.left)||m(n.right):E(n,`SequenceExpression`)?n.expressions.some(m):!1},h=(e,n)=>{let r=P(n);if(E(e,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e);n&&d.add(n);return}if(E(e,`AssignmentPattern`)){h(e.left,r);return}if(E(e,`RestElement`)&&E(e.argument,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e.argument);n&&f.add(n);return}if(E(e,`ObjectPattern`)&&E(r,`ObjectExpression`)){for(let t of e.properties){if(E(t,`RestElement`)){h(t,r);continue}if(!E(t,`Property`))continue;let e=qo(t.key);if(!e)continue;let n=r.properties.find(t=>E(t,`Property`)&&qo(t.key)===e);E(n,`Property`)&&h(t.value,n.value)}return}if(E(e,`ArrayPattern`)&&E(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&h(n,e)}},g=!1;return D(e.body,n=>{if(g||n!==e.body&&w(n)&&!a(n))return!1;if(E(n,`VariableDeclarator`)&&n.init){h(n.id,n.init);return}if(E(n,`AssignmentExpression`)&&m(n.right)){if(E(n.left,`Identifier`)){let e=t.scopes.symbolFor(n.left);e&&d.add(e)}else g=!0;return}if(E(n,`AssignmentExpression`)){let e=P(n.left),t=P(n.right);if(E(e,`MemberExpression`)&&k(e)===`returnValue`&&p(e.object)&&E(t,`Literal`)&&t.value===!1){g=!0;return}}if(E(n,`ReturnStatement`)&&n.argument&&m(n.argument)){g=!0;return}if(E(n,`NewExpression`)){n.arguments.some(e=>!E(e,`SpreadElement`)&&m(e))&&(g=!0);return}if(!E(n,`CallExpression`))return;let r=P(n.callee);if(E(r,`MemberExpression`)&&k(r)===`preventDefault`&&p(r.object)){g=!0;return}let i=n.arguments.findIndex(e=>m(e));if(i<0)return;let s=Hs(n.callee,t);(!s&&!Ace(n,i,t)||s&&o(s,i))&&(g=!0)}),g};return o(n,0,!0)},Mce=(e,t)=>!!e.properties?.some(e=>E(e,`Property`)&&E(e.key,`Identifier`)&&e.key.name===`passive`&&E(e.value,`Literal`)&&e.value.value===t),Nce=C({id:`client-passive-event-listeners`,title:`Non-passive scroll listener`,tags:[`test-noise`],severity:`warn`,recommendation:"Add `{ passive: true }` as the third argument: `addEventListener('touchmove', handler, { passive: true })`. Only do this if the handler doesn't call `event.preventDefault()`, since passive listeners ignore it (which breaks pull-to-refresh, custom gestures, and nested scrolling).",create:e=>{if(Sce(e.filename))return kt;let t=Ts(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=P(n.callee);if(!Es(a,`addEventListener`)||!Ls(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,Is(a.object,e.scopes),t=>Ls(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!E(o,`Literal`)||typeof o.value!=`string`||!Eee.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||E(c,`SpreadElement`))return;let l=Hs(c,e)??c,u=r.get(l);if(u===void 0&&(u=kce(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=jce(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!E(f,`ObjectExpression`)||Mce(f,!1)||Mce(f,!0))||e.report({node:n,message:`"${s}" listener without { passive: true } makes scrolling janky for your users. Only add it if the handler doesn't call event.preventDefault(), since passive listeners silently ignore preventDefault().`})};return{AssignmentExpression(e){t.record(e)},CallExpression(e){t.record(e),Es(P(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),Us=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},Ws=e=>{if(!e.startsWith(`use`))return!1;if(e.length===3)return!0;let t=e.charCodeAt(3);return t>=65&&t<=90||t>=48&&t<=57},Gs=e=>Us(e)||Ws(e),Pce=(t,n)=>{let r=n?e(t):t;return E(r,`Identifier`)?r.name:E(r,`MemberExpression`)&&E(r.property,`Identifier`)?r.property.name:null},Ks=(e,t=!1)=>{let n=b(e);for(;;){let e=n.parent;if(!e||!E(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=Pce(e.callee,t);if(!r||!dn.has(r))return n;n=b(e)}},Fce=(e,t)=>{let n=Ks(e,t),r=n.parent;return r&&E(r,`VariableDeclarator`)&&E(r.id,`Identifier`)&&r.init===n&&Gs(r.id.name)?r.id.name:null},qs=(e,t=!1)=>(E(e,`FunctionDeclaration`)||E(e,`FunctionExpression`))&&e.id?Gs(e.id.name)?e.id.name:null:Fce(e,t),Js=e=>E(e,`MemberExpression`)&&!e.computed&&E(e.property,`Identifier`)?e.property.name:null,Ice=[`react`,`use-context-selector`,`react-tracked`],Lce=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!E(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!Ice.includes(t.source.value)?null:t.source.value},Rce=e=>Lce(e)!==null&&!!(e&&(E(e.declarationNode,`ImportDefaultSpecifier`)||E(e.declarationNode,`ImportNamespaceSpecifier`))),zce=(e,t)=>{if(!E(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!E(n.declarationNode,`VariableDeclarator`)||!E(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!E(r,`Property`)||A(r,{allowComputedString:!0})!==`createContext`)return!1;let i=P(n.initializer);return E(i,`Identifier`)&&Rce(N(i,t))},Bce=(e,t)=>{let n=P(e);if(E(n,`Identifier`)){if(zce(n,t))return!0;let e=N(n,t);return Lce(e)!==null&&!!(e&&en(e.declarationNode)===`createContext`)}if(!E(n,`MemberExpression`)||(Js(n)??(n.computed&&E(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=P(n.object);return E(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:Rce(N(r,t)):!1},Vce=(e,t)=>{let n=P(e);return E(n,`CallExpression`)&&Bce(n.callee,t)},Hce=(e,t)=>{let n=new Set;if(!E(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(E(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!E(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!E(r,`VariableDeclarator`)||!E(r.id,`Identifier`)||!r.init||!j(r.init)||!Vce(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},Ys=e=>{if(E(e,`FunctionDeclaration`)&&E(e.id,`Identifier`))return e.id;let t=b(e),n=t.parent;if(E(n,`VariableDeclarator`)&&E(n.id,`Identifier`))return n.id;if(E(n,`AssignmentExpression`)&&n.right===t&&E(n.left,`Identifier`))return n.left;if(E(n,`CallExpression`)){let e=n.parent;if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`))return e.id}return null},Xs=e=>Ys(e)?.name??null,Zs=(e,t)=>{let n=Ys(e);if(!n)return[];let r=t.scopeFor(e);for(;r;){let e=r.symbols.filter(e=>e.bindingIdentifier===n);if(e.length>0)return e;r=r.parent}return[]},Uce=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),Qs=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(E(t,`VariableDeclaration`))return t.kind===`const`;if(!Uce.has(t.type))return!1;t=t.parent??null}return!1},Wce=(e,t)=>{if(!E(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=en(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},Gce=(e,t)=>{if(!Wce(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=Ue(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},Kce=(e,t,n,r)=>{if(!E(e,`JSXIdentifier`))return!1;if(r&&Wce(e,n))return!0;let i=n.symbolFor(e);return i?t.has(i.id)||i.scope.symbols.some(n=>n.name===e.name&&t.has(n.id)):!1},qce=(e,t,n)=>E(e,`JSXMemberExpression`)?e.property.name===`Provider`&&Kce(e.object,t,n,!0):Gce(e,n)||Kce(e,t,n,!1),Jce="Every consumer of this context redraws on each render because its `value` is a fresh object/array/function rebuilt each render — memoize it in component scope (extract mapped providers into a child component first), or move it outside the component.",Yce=new Set([`flatMap`,`map`]),Xce=new Set([`forwardRef`,`memo`]),Zce=new Set([`useCallback`,`useMemo`]),Qce=new Set([`createElement`]),$ce=e=>{let t=P(e);return E(t,`ObjectExpression`)||E(t,`ArrayExpression`)||E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`)||E(t,`FunctionDeclaration`)},ele=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&E(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&ze(n,e.scopeOwner)?!0:!!(e.initializer&&E(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},tle=e=>w(e.scopeOwner)?e.scopeOwner:M(e.scopeOwner),nle=(e,t)=>{let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1){let n=(e[r]??0)-(t[r]??0);if(n!==0)return n}return e.length-t.length},$s=e=>{let t=Ks(e);return!!(t.parent&&E(t.parent,`ExportDefaultDeclaration`))},rle=e=>{if(!E(e,`FunctionExpression`)||!e.id)return!1;let t=b(e);if(Ks(e)!==t)return!1;let n=t.parent;return!(n&&E(n,`VariableDeclarator`)&&n.init===t&&E(n.id,`Identifier`))},ile=(e,t,r)=>{let i=[e],a=new Set;for(;i.length>0;){let e=i.pop();if(!e)continue;let o=P(e);if(o===t)return!0;if(!a.has(o)){if(a.add(o),E(o,`ConditionalExpression`)){let e=P(o.test);E(e,`Literal`)?i.push(e.value?o.consequent:o.alternate):i.push(o.alternate,o.consequent);continue}if(E(o,`LogicalExpression`)){let e=P(o.left);if(E(e,`Literal`)){let t=o.operator===`&&`&&!!e.value||o.operator===`||`&&!e.value||o.operator===`??`&&e.value===null;i.push(t?o.right:o.left);continue}i.push(o.right),o.operator!==`&&`&&i.push(o.left);continue}if(E(o,`SequenceExpression`)){let e=o.expressions.at(-1);e&&i.push(e);continue}if(E(o,`AssignmentExpression`)&&o.operator===`=`){i.push(o.right);continue}if(E(o,`AwaitExpression`)&&o.argument){i.push(o.argument);continue}if(E(o,`ArrayExpression`)){for(let e of o.elements)e&&i.push(E(e,`SpreadElement`)?e.argument:e);continue}if(E(o,`CallExpression`)&&n(o,Qce,r.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){i.push(...o.arguments.slice(2));let e=o.arguments[1];if(e&&E(e,`ObjectExpression`))for(let t of e.properties){if(!E(t,`Property`)||t.computed)continue;let e=t.key;(E(e,`Identifier`)&&e.name===`children`||E(e,`Literal`)&&e.value===`children`)&&i.push(t.value)}continue}if(E(o,`Identifier`)){let e=T(o,o.name,{preferInitializerBeforeReference:!0});e?.initializer&&Qs(e)&&ele(e,o)&&M(e.bindingIdentifier)===M(o)&&r.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&i.push(e.initializer);continue}if(E(o,`JSXElement`)||E(o,`JSXFragment`)){i.push(...o.children);continue}E(o,`JSXExpressionContainer`)&&o.expression.type!==`JSXEmptyExpression`&&i.push(o.expression)}}return!1},ec=(e,t,n)=>Ne(t,n.scopes,t=>ile(t,e,n),n.cfg),ale=(e,t,r)=>e.arguments[0]===t&&n(e,Zce,r.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(E(e.callee,`MemberExpression`)&&Yce.has(k(e.callee)??``)),ole=(e,t,n)=>{let r=e.arguments.findIndex(e=>e===t);if(r<0)return!1;let i=y(e.callee,n.scopes);if(!i||!w(i)||i.async||i.generator)return!1;let a=i.params[r];if(!a||!E(a,`Identifier`)||!(n.scopes.ownScopeFor(i)?.symbolsByName.get(a.name))?.references.some(e=>{let t=b(e.identifier),r=t.parent;return!!(r&&E(r,`CallExpression`)&&r.callee===t&&M(r)===i&&ze(r,i)&&n.cfg.isUnconditionalFromEntry(r)&&ec(r,i,n))}))return!1;let o=M(e);return!!(o&&(qs(o)!==null||$s(o))&&ec(e,o,n))},sle=(e,t)=>{let r=Zs(e,t.scopes).flatMap(e=>e.references);return r.length===0?!1:r.every(e=>{let r=b(e.identifier),i=r.parent;return!i||!E(i,`CallExpression`)||!i.arguments.some(e=>e===r)||i.arguments[0]===r&&n(i,Xce,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:ale(i,r,t)||!ole(i,r,t)})},cle=(e,t)=>{let n=b(e),r=n.parent;if(!r||!E(r,`CallExpression`))return!1;let i=M(r);return!i||qs(i)===null&&!$s(i)?!1:r.arguments[0]===n&&E(r.callee,`MemberExpression`)&&Yce.has(k(r.callee)??``)&&ec(r,i,t)?!0:r.callee===n&&ec(r,i,t)||r.arguments.some(e=>e===n)&&ole(r,n,t)},lle=C({id:`context-provider-value-from-unmemoized-local-literal`,title:`Context value from an unmemoized local literal`,tags:[`react-jsx-only`,`test-noise`],severity:`warn`,category:`Performance`,disabledWhen:[`react-compiler`],recommendation:`Memoize the context value in component scope so consumers do not redraw every render. For mapped providers, extract each item into a child component and memoize there.`,create:e=>{let t=t=>e.cfg.isUnconditionalFromEntry(t)&&H(t,e),n=new Set;return{Program(t){n=Hce(t,e.scopes)},JSXOpeningElement(r){if(!qce(r.name,n,e.scopes))return;let i=M(r);if(!i)return;let a=cle(i,e),o=$s(i);if((rle(i)||sle(i,e))&&!a&&!o||qs(i)===null&&!o&&!a)return;let s=V(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!E(c,`JSXExpressionContainer`))return;let l=P(c.expression);if(!E(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:Jee(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:Tee(n.identifier)}))).toSorted((e,t)=>nle(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!$ce(d.assignedExpression))return;e.report({node:s,message:Jce});return}let f=T(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&ele(f,l)&&tle(f)===i&&$ce(f.initializer)&&e.report({node:s,message:Jce})}}}}),ule=[`lucide-react`,`lucide-react-native`,`react-feather`,`phosphor-react`,`iconoir-react`,`react-bootstrap-icons`,`@heroicons/react`,`@tabler/icons-react`,`@phosphor-icons/react`,`@radix-ui/react-icons`,`@mui/icons-material`,`@ant-design/icons`,`@primer/octicons-react`],tc=e=>e===`react-icons`?e:e.startsWith(`react-icons/`)?e.split(`/`).slice(0,2).join(`/`):e===`@fortawesome/react-fontawesome`||/^@fortawesome\/free-[^/]+-svg-icons(?:\/|$)/.test(e)?`@fortawesome`:ule.find(t=>e===t||e.startsWith(`${t}/`))??null,dle=/[\p{L}\p{Nd}]/u,nc=e=>dle.test(e),rc=e=>Ir.has(e),ic=(e,t)=>{let n=[],r=0,i=0,a=null,o=!1;for(let s=0;s<e.length;s+=1){let c=e[s];if(o){o=!1;continue}if(c===`\\`){o=!0;continue}if(a){c===a&&(a=null);continue}if(c===`"`||c===`'`){a=c;continue}c===`[`&&(r+=1),c===`]`&&(r=Math.max(0,r-1)),c===`(`&&(i+=1),c===`)`&&(i=Math.max(0,i-1)),r===0&&i===0&&t(c)&&n.push(s)}return n},U=e=>{let t=[],n=0;for(let r of ic(e,e=>/\s/.test(e))){let i=e.slice(n,r);i&&t.push(i),n=r+1}let r=e.slice(n);return r&&t.push(r),t},fle=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),ple=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),mle=e=>e.toLowerCase()===`hidden`,hle=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=U(i);if(a.length===0)continue;let o=e>0&&!/^\s/.test(i),s=e<t.length-1&&!/\s$/.test(i);o&&a.shift(),s&&a.pop(),n.push(...a)}return n},gle=e=>{let t=F(e.attributes,`className`)??F(e.attributes,`class`);if(!t)return!1;let n=L(t);return n===null?t.value&&E(t.value,`JSXExpressionContainer`)&&E(t.value.expression,`TemplateLiteral`)?hle(t.value.expression).some(mle):!1:U(n).some(mle)},_le=e=>{let t=F(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(E(n,`Literal`))return n.value!==`false`&&!!n.value;if(E(n,`JSXExpressionContainer`)){let e=P(n.expression);if(E(e,`Literal`))return!!e.value}return!0},vle={display:`none`,visibility:`hidden`},yle=e=>{let t=F(e.attributes,`style`);if(!t?.value||!E(t.value,`JSXExpressionContainer`))return!1;let n=P(t.value.expression);if(!E(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!E(e,`Property`)||e.computed)continue;let t=e.key,n=E(t,`Identifier`)?t.name:E(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=vle[n];if(!r)continue;let i=P(e.value);if(E(i,`Literal`)&&i.value===r)return!0}return!1},ble=(e,t)=>er(e,t)||_le(e)||yle(e),xle=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=F(t.attributes,`type`),r=n?Xn(n):null;return!r||r.toLowerCase()!==`file`||!gle(t)?!1:!!F(t.attributes,`ref`)},Sle=[`link`,`canvas`],Cle=new Set([`alt`,`aria-label`,`aria-labelledby`]),ac=`label`,wle=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.controlHasAssociatedLabel??{}:{};return{depth:Math.min(n.depth??5,25),labelAttributes:n.labelAttributes??[],controlComponents:n.controlComponents??[],ignoreElements:n.ignoreElements??[],ignoreRoles:n.ignoreRoles??[]}},oc=(e,t)=>{let n=new Set(t);for(let t of e){if(E(t,`JSXSpreadAttribute`))return!0;if(!E(t,`JSXAttribute`)||!E(t.name,`JSXIdentifier`))continue;let e=rn(t.name);if(e&&(Cle.has(e)||n.has(e)))return t.value?E(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},sc=e=>{if(!e?.value)return!1;let t=e.value;if(E(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(E(t,`JSXExpressionContainer`)){let e=P(t.expression);if(E(e,`JSXEmptyExpression`))return!1;if(E(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(E(e,`TemplateLiteral`)){let t=c(e);if(t!==null)return t.trim().length>0}return!0}return!0},Tle=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!E(r,`JSXAttribute`))&&rn(r.name)?.toLowerCase()===n)return r}},Ele=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(E(r,`SpreadElement`))return null;let e=P(r);if(E(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(E(e,`TemplateLiteral`)){let t=c(e);if(t===null)return null;n.push(t);continue}if(E(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||E(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(E(e,`ArrayExpression`)){let r=Ele(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},Dle=(e,t)=>{if(E(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!E(e,`MemberExpression`))return!1;let n=P(e.object);return E(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},cc=(e,t)=>{let n=P(e);if(E(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(E(n,`TemplateLiteral`)){let e=c(n);return e===null||e.trim().length>0}if(E(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(E(n,`UnaryExpression`)&&n.operator===`void`||E(n,`UnaryExpression`)&&n.operator===`!`||E(n,`ArrowFunctionExpression`)||E(n,`FunctionExpression`)||E(n,`ClassExpression`))return!1;if(E(n,`ArrayExpression`)){let e=Ele(n,t);return e===null||e.trim().length>0}if(Dle(n,t)||E(n,`CallExpression`)&&Dle(n.callee,t))return!1;if(E(n,`ConditionalExpression`))return cc(n.consequent,t)&&cc(n.alternate,t);if(E(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?cc(e,t):!1}if(E(n,`LogicalExpression`)){let e=P(n.left);if(!E(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return cc(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?cc(r?n.right:e,t):cc(r?e:n.right,t)}return!0},Ole=(e,t)=>e?.value?E(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:E(e.value,`JSXExpressionContainer`)?cc(e.value.expression,t):!0:!1,lc=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},kle=e=>typeof e==`string`?lc(`literal`,e):typeof e==`number`?lc(`literal`,String(e)):null,uc=e=>{let t=P(e);if(E(t,`Identifier`))return t.name;if(E(t,`MemberExpression`)){if(t.computed)return null;let e=uc(t.object),n=t.property;return e===null||!E(n,`Identifier`)?null:`${e}.${n.name}`}return null},Ale=e=>{let t=e.quasis??[],n=e.expressions??[],r=[];for(let[e,i]of t.entries())if(r.push(i.value?.cooked??i.value?.raw??``),e<n.length){let t=uc(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return lc(`template`,r.join(``))},dc=e=>{let t=P(e);if(E(t,`Literal`)){let e=kle(t.value);return e===null?[]:[e]}if(E(t,`TemplateLiteral`)){let e=c(t);if(e!==null){let t=lc(`literal`,e);return t===null?[]:[t]}let n=Ale(t);return n===null?[]:[n]}if(E(t,`ConditionalExpression`))return[...dc(t.consequent),...dc(t.alternate)];let n=uc(t);if(n!==null){let e=lc(`identifier`,n);return e===null?[]:[e]}return[]},jle=e=>{if(!e?.value)return[];let t=e.value;if(E(t,`Literal`)){let e=kle(t.value);return e===null?[]:[e]}return E(t,`JSXExpressionContainer`)?dc(t.expression):[]},Mle=/^Icon($|[A-Z0-9_])|Icon$/,Nle=(e,t)=>{if(t.iconComponentNames.has(e)||Mle.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},fc=(e,t,n)=>{let r=P(e);if(E(r,`JSXEmptyExpression`))return!1;if(E(r,`Literal`))return typeof r.value==`string`?nc(r.value):typeof r.value==`number`;if(E(r,`TemplateLiteral`)){let e=c(r);return e===null||nc(e)}return E(r,`ConditionalExpression`)?fc(r.consequent,t,n)||fc(r.alternate,t,n):E(r,`LogicalExpression`)?r.operator===`&&`?fc(r.right,t,n):fc(r.left,t,n)||fc(r.right,t,n):E(r,`JSXElement`)||E(r,`JSXFragment`)?pc(r,t,n):!0},pc=(e,t,n)=>{if(t>n.depth)return!1;if(E(e,`JSXExpressionContainer`))return fc(e.expression,t,n);if(E(e,`JSXText`))return nc(e.value);if(E(e,`JSXFragment`))return e.children.some(e=>pc(e,t+1,n));if(E(e,`JSXElement`)){if(oc(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=Zn(e.openingElement,n.settings);if(Us(t)&&!n.controlComponents.includes(t)&&!Nle(t,n))return!0}for(let r of e.children)if(pc(r,t+1,n))return!0}return!1},Ple=(e,t)=>oc(e.openingElement.attributes,t.customAttributes)?!0:e.children.some(e=>pc(e,1,t)),Fle=e=>E(e,`ArrowFunctionExpression`)||E(e,`FunctionExpression`)||E(e,`FunctionDeclaration`),Ile=(e,t)=>{if(e===ac||e===`Label`)return!0;let n=F(t.attributes,`component`);return n?Xn(n)===ac:!1},Lle=(e,t)=>{let n=e.parent,r=!1;for(;n&&!E(n,`JSXAttribute`);){if(Fle(n)&&(r=!0),E(n,`JSXElement`)){let e=n.openingElement;if(ble(e,t.settings))return`hidden`;let i=Zn(e,t.settings);if(!r&&Ile(i,e)&&Ple(n,t)||Us(i)&&sc(F(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},Rle=e=>{let t=e.parent;for(;t;){if(E(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},zle=e=>{let t=e.parent;for(;t;){if(E(t,`VariableDeclarator`))return E(t.id,`Identifier`)?t.id.name:null;if(Fle(t)){if(E(t,`FunctionDeclaration`)&&t.id&&E(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},mc=(e,t)=>{let n=P(e);if(E(n,`Identifier`)){t.add(n.name);return}if(E(n,`CallExpression`)){let e=P(n.callee);E(e,`Identifier`)&&t.add(e.name);return}if(E(n,`LogicalExpression`)){mc(n.left,t),mc(n.right,t);return}E(n,`ConditionalExpression`)&&(mc(n.consequent,t),mc(n.alternate,t))},Ble=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(E(i,`JSXExpressionContainer`)){mc(i.expression,r);continue}(E(i,`JSXElement`)||E(i,`JSXFragment`))&&Ble(i,t+1,n,r)}},Vle=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=F(t.attributes,`type`);if(!n)return!0;let r=Xn(n);return r===null?!0:ple.has(r.toLowerCase())},Hle=C({id:`control-has-associated-label`,title:`Control missing accessible label`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Give every interactive control a label screen readers can read.`,category:`Accessibility`,create:e=>{let t=Or(e.settings),n=wle(e.settings),r=dt(e.filename),i=new Set,a=new Set,o=new Set,s=new Set,c=[],l={depth:n.depth,customAttributes:n.labelAttributes,controlComponents:n.controlComponents,settings:e.settings,iconComponentNames:i,iconNamespaceNames:a};return{ImportDeclaration(e){let t=e.source?.value;if(!(typeof t!=`string`||!tc(t)))for(let t of e.specifiers??[]){if(!E(t.local,`Identifier`))continue;let e=t.local.name;E(t,`ImportNamespaceSpecifier`)?a.add(e):i.add(e)}},JSXElement(i){if(r)return;let a=i.openingElement,u=Zn(a,e.settings);if(Ile(u,a)&&Ple(i,l)&&!Rle(i)){let e=F(a.attributes,`htmlFor`);for(let t of jle(e))o.add(t);u===ac&&Ble(i,1,l,s)}if(Sle.includes(u)||n.ignoreElements.includes(u))return;let d=F(a.attributes,`role`),f=d?Xn(d):null;if(f&&n.ignoreRoles.includes(f)||ble(a,e.settings)||xle(u,a))return;let p=Jr.has(u),m=(!t||!fle.has(u))&&ii(u,a),h=t&&f===`separator`&&!F(a.attributes,`tabIndex`),g=f!==null&&rc(f)&&!h,_=n.controlComponents.includes(u);if(m||p&&g||_){if(u===`input`){let e=F(a.attributes,`type`),t=e?Xn(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&sc(F(a.attributes,`value`)))return}if(!(p&&Ole(Tle(a.attributes,`title`),e.scopes))&&!(Vle(u,a)&&sc(F(a.attributes,`placeholder`)))&&!oc(a.attributes,n.labelAttributes)&&!Rle(i)&&Lle(i,l)===null){if(u!==`select`){for(let e of i.children)if(pc(e,1,l))return}c.push({opening:a,controlIdKeys:jle(F(a.attributes,`id`)),enclosingBindingName:zle(i)})}}},"Program:exit"(){for(let t of c)t.controlIdKeys.some(e=>o.has(e))||t.enclosingBindingName!==null&&s.has(t.enclosingBindingName)||e.report({node:t.opening,message:"Blind users can't tell what this control does because its name is missing or only a symbol, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}),hc=(t,n,r)=>{let i=P(t);if(E(i,`JSXElement`)){n.push(i.openingElement);for(let e of i.children)hc(e,n,r);return}if(E(i,`JSXFragment`)){for(let e of i.children)hc(e,n,r);return}if(r){if(E(i,`JSXExpressionContainer`)){hc(i.expression,n,!0);return}if(E(i,`ConditionalExpression`)){let t=mn(e(i.test));if(t!==null){hc(t?i.consequent:i.alternate,n,!0);return}hc(i.consequent,n,!0),hc(i.alternate,n,!0);return}if(E(i,`LogicalExpression`)){for(let e of ft(i))hc(e,n,!0);return}if(E(i,`ArrayExpression`)){for(let e of i.elements)e&&!E(e,`SpreadElement`)&&hc(e,n,!0);return}if(E(i,`SequenceExpression`)){if(i.expressions.length===0)return;hc(e(i),n,!0)}}},gc=(e,t={})=>{let n=[];for(let r of e.children)hc(r,n,t.includeStaticExpressionBranches===!0);return n},Ule=new Set([`grid`,`table`,`treegrid`]),Wle=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(E(i,`JSXAttribute`)){if(rn(i.name)?.toLowerCase()===t)return!1;continue}if(E(i,`JSXSpreadAttribute`)&&Sr(i.argument,t,!1,n.scopes))return!0}}return!1},_c=(e,t,n,r)=>n.isUnknown&&Wle(e,t,r),Gle=e=>e.attribute?L(e.attribute):Qn(e.expression),Kle=(e,t,n)=>{if(e.attribute)return Tr(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=P(e.expression),i=Qn(r);return i===null?E(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(wr(r)||E(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},qle=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=$t(e.attributes,n,!1);if(_c(e,n,r,t))return null;if(Kle(r,n.startsWith(`aria-`),t))return!0}return!1},Jle=e=>{for(let t of e){if(E(t,`JSXElement`)&&O(t.openingElement)===`caption`)return t;if(E(t,`JSXFragment`)){let e=Jle(t.children);if(e)return e}}return null},Yle=(e,t)=>er(e.openingElement,t.settings)?!1:Dr(e,t.settings),Xle=(e,t,n)=>{let r=e.parent;for(;r;){if(E(r,`JSXElement`)){if(er(r.openingElement,n.settings))return!1;if(O(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Zle=(e,t)=>{let n=e.parent;for(;n;){if(E(n,`JSXElement`)&&er(n.openingElement,t.settings))return!0;n=n.parent}return!1},Qle=C({id:`data-table-requires-accessible-name`,title:`Data table has no accessible name`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Give data tables a concise caption, or reference an existing visible title with aria-labelledby.`,create:e=>({JSXElement(t){let n=t.openingElement;if(O(n)!==`table`||cr(e,n)||er(n,e.settings)||Zle(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>_c(n,t,$t(n.attributes,t,!1),e)))return;let r=$t(n.attributes,`children`,!1),i=$t(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=$t(n.attributes,`role`,!1);if(_c(n,`role`,a,e))return;if(a.isPresent){let t=Gle(a);if(t===null){if(Kle(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>Fr.has(e));if(e&&!Ule.has(e))return}}if(!gc(t).some(n=>O(n)===`th`&&Xle(n,t,e)))return;let o=Jle(t.children),s=qle(n,e);s!==null&&(o&&Yle(o,e)||s||e.report({node:n,message:`This data table has headers but no accessible name. Add a caption or connect the table to a visible title with aria-labelledby.`}))}})}),vc=(e,t,n)=>{let r=P(e);if(w(r))return[r];if(E(r,`Identifier`)){if(n){let e=N(r,n);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:w(e.declarationNode)?[e.declarationNode]:e.initializer&&w(P(e.initializer))?[P(e.initializer)]:[]}let e=T(t,r.name);return e?.initializer&&w(P(e.initializer))?[P(e.initializer)]:[]}if(E(r,`ConditionalExpression`))return[...vc(r.consequent,t,n),...vc(r.alternate,t,n)];if(E(r,`SequenceExpression`)){let e=r.expressions.at(-1);return e?vc(e,t,n):[]}return[]},yc=(e,t)=>w(e)?E(e.body,`BlockStatement`)?he(e).flatMap(e=>e.argument?vc(e.argument,e,t):[]):vc(e.body,e,t):[],bc=(e,t,r={})=>{let i=t.symbolFor(e);if(!i)return[];let a=[i.bindingIdentifier],o=[i],s=new Set,c=new Set([i.id]);for(;o.length>0;){let e=o.pop();if(!(!e||s.has(e.id))){s.add(e.id);for(let i of e.references){if(i.flag!==`read`)continue;let e=b(i.identifier),s=e,l=s.parent;if(r.includeReactRefContainers&&E(l,`MemberExpression`)&&l.object===s&&k(l)===`current`&&(s=b(l),l=s.parent),r.includeReactRefContainers&&E(l,`CallExpression`)&&l.arguments[0]===e&&n(l,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(s=b(l),l=s.parent),!E(l,`VariableDeclarator`)||l.init!==s||!E(l.id,`Identifier`))continue;let u=t.symbolFor(l.id);!u||c.has(u.id)||(c.add(u.id),a.push(u.bindingIdentifier),o.push(u))}}}return a},xc=(e,t,r)=>n(e,t,r,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),Sc=(e,t)=>xc(e,Ct,t),$le=new Set([`useMemo`,`useCallback`,`useRef`]),eue=new Set([`useRef`]),tue=new Set([`debounce`,`throttle`]),Cc=new Set([`cancel`,`flush`]),nue=new Set([`document`,`window`]),rue=new Set([`then`,`catch`,`finally`]),iue=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),wc=e=>{if(!E(e,`CallExpression`))return!1;let t=P(e.callee);if(E(t,`Identifier`)){if(!tue.has(t.name))return!1;let e=T(t,t.name);return!e?.initializer||!E(e.initializer,`ImportSpecifier`)&&!E(e.initializer,`ImportDefaultSpecifier`)?!1:iue(p(t,t.name))}if(E(t,`MemberExpression`)&&tue.has(k(t)??``)){let e=P(t.object);if(!E(e,`Identifier`))return!1;let n=T(e,e.name);return!n?.initializer||!E(n.initializer,`ImportNamespaceSpecifier`)&&!E(n.initializer,`ImportDefaultSpecifier`)?!1:iue(p(e,e.name))}return!1},aue=e=>{if(!E(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=P(t);if(wc(n))return n;if(!E(n,`ArrowFunctionExpression`)&&!E(n,`FunctionExpression`))return null;if(!E(n.body,`BlockStatement`)){let e=P(n.body);return wc(e)?e:null}for(let e of n.body.body??[])if(E(e,`ReturnStatement`)&&e.argument){let t=P(e.argument);if(wc(t))return t}return null},oue=(e,t,n)=>{if(!E(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=Ba(r,[`trailing`],t,n);return i?i.properties.some(e=>E(e,`Property`)&&A(e,{allowComputedString:!0})===`trailing`&&E(e.value,`Literal`)&&e.value.value===!1):!1},sue=e=>{let t=P(e);for(;E(t,`MemberExpression`);)t=P(t.object);return E(t,`Identifier`)?t:null},Tc=(e,t)=>{let n=sue(e);return n?t.symbolFor(n)?.id??null:null},Ec=(e,t)=>{let n=P(e);if(E(n,`MemberExpression`))return Cc.has(k(n)??``)?Tc(n.object,t):null;if(!E(n,`Identifier`))return null;let r=T(n,n.name)?.bindingIdentifier?.parent;if(!E(r,`Property`))return null;let i=E(r.key,`Identifier`)?r.key.name:E(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!Cc.has(i))return null;let a=r.parent,o=a?.parent;return!E(a,`ObjectPattern`)||!E(o,`VariableDeclarator`)||!o.init?null:Tc(o.init,t)},cue=(e,t,n)=>{D(e,r=>{if(r!==e&&w(r))return!1;if(!E(r,`CallExpression`))return;let i=Ec(r.callee,n);i!==null&&t.add(i)})},lue=(e,t)=>{let n=new Set,r=new Set,i=new Set;return D(e,e=>{if(!E(e,`CallExpression`))return;let n=P(e.callee);if(Sc(e,t)){let n=e.arguments?.[0],a=n?P(n):null;if(a&&w(a)){if(Ra(a,e=>{if(!E(e,`CallExpression`))return;let n=Tc(e.callee,t);n!==null&&r.add(n)}),E(a.body,`BlockStatement`))for(let e of he(a)){if(!e.argument)continue;let n=Ec(e.argument,t);n!==null&&i.add(n)}else{let e=Ec(a.body,t);e!==null&&i.add(e)}for(let e of yc(a))cue(e,i,t)}}if(E(n,`Identifier`)&&n.name===`useUnmount`&&(p(n,n.name)===`react-use`||!T(n,n.name)))for(let n of e.arguments??[]){let e=Ec(n,t);e!==null&&i.add(e)}if(!E(n,`Identifier`)||!Ws(n.name))return;let a=T(n,n.name)?.initializer;if(!a||!w(a))return;let o=new Set;D(a,e=>{if(!E(e,`CallExpression`)||!Sc(e,t))return;let n=Kn(e);if(n)for(let e of yc(n))D(e,e=>{if(!E(e,`CallExpression`))return;let t=P(e.callee);if(!E(t,`MemberExpression`)||!Cc.has(k(t)??``))return;let n=sue(t.object);n&&o.add(n.name)})});for(let[n,r]of(a.params??[]).entries()){if(!E(r,`Identifier`)||!o.has(r.name))continue;let a=e.arguments?.[n],s=a?Tc(a,t):null;s!==null&&i.add(s)}}),D(e,r=>{if(r!==e&&w(r))return!1;if(!E(r,`ReturnStatement`)||!r.argument)return;let i=P(r.argument);!E(i,`Identifier`)&&!E(i,`ObjectExpression`)&&!E(i,`ArrayExpression`)||D(i,e=>{if(!E(e,`Identifier`))return;let r=t.symbolFor(e)?.id;r!==void 0&&n.add(r)})}),{escapedSymbolIds:n,invokedSymbolIds:r,releasedSymbolIds:i}},uue=(e,t,n)=>{if(!E(e,`CallExpression`))return null;let r=e.arguments?.[0];if(!r)return null;let i=P(r);if(w(i))return i;if(!E(i,`Identifier`))return null;let a=i.name,o=null;return D(t,e=>{if(o)return!1;if(E(e,`FunctionDeclaration`)&&e.id?.name===a)return o=e,!1;if(E(e,`VariableDeclarator`)&&E(e.id,`Identifier`)&&e.id.name===a&&e.init){let t=P(e.init);if(w(t))return o=t,!1;if(E(t,`CallExpression`)&&xc(t,new Set([`useCallback`]),n)){let e=t.arguments?.[0],n=e?P(e):null;if(n&&w(n))return o=n,!1}}}),o},due=new Set([`localStorage`,`sessionStorage`]),fue=e=>{let t=e;for(;;){let e=t.parent;if(e&&E(e,`MemberExpression`)&&e.object===t&&e.parent&&E(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return E(t,`CallExpression`)&&E(t.callee,`MemberExpression`)&&k(t.callee)===`catch`},pue=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])bi(n,t);let n=!1;return D(e,e=>{if(n)return!1;if(E(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(E(e,`Identifier`)&&nue.has(e.name)&&!t.has(e.name)&&!T(e,e.name)&&!(E(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(E(r,`Property`)&&!r.computed&&r.key===e)){if(E(r,`MemberExpression`)&&r.object===e){if(E(r.property,`Identifier`)&&due.has(r.property.name))return;let e=r;for(;e.parent&&E(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&E(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&E(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(E(e,`CallExpression`)){let t=e.callee;if(E(t,`Identifier`)&&t.name===`fetch`&&!T(t,t.name)||E(t,`MemberExpression`)&&rue.has(k(t)??``)&&k(t)!==`catch`&&!fue(e))return n=!0,!1;if(E(t,`MemberExpression`)&&E(t.object,`Identifier`)&&due.has(t.object.name))return}}),n},mue=e=>{if(!e)return!0;let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`||E(t,`UnaryExpression`)&&t.operator===`void`},hue=(e,t)=>{if(!E(e,`MemberExpression`)||k(e)!==`current`)return!1;let n=P(e.object);if(!E(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=P(r.initializer);return E(i,`CallExpression`)&&xc(i,eue,t)&&mue(i.arguments?.[0])},gue=(e,t)=>{if(!E(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return D(e,e=>{if(r)return!1;if(hue(e,t)||E(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(E(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])E(e.id,`Identifier`)&&n.add(e.id.name);continue}if(E(t,`IfStatement`)){let e=t.consequent;return(E(e,`ReturnStatement`)||E(e,`BlockStatement`)&&E(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},_ue=C({id:`debounce-no-cleanup`,title:`Memoized debounce never cancelled on unmount`,severity:`warn`,category:`Bugs`,recommendation:"A debounced/throttled callback holds a pending timer that still fires after unmount, so add `useEffect(() => () => debounced.cancel(), [debounced])` to cancel the trailing invocation when the component tears down.",create:e=>{let t=new WeakMap;return{CallExpression(n){if(!xc(n,$le,e.scopes))return;let r=aue(n);if(!r||oue(r,e.scopes,n))return;let i=b(n),a=i.parent;if(!E(a,`VariableDeclarator`)||a.init!==i||!E(a.id,`Identifier`))return;let o=a.id.name,s=M(n);if(!s)return;let c=t.get(s);c||(c=lue(s,e.scopes),t.set(s,c));let l=bc(a.id,e.scopes,{includeReactRefContainers:!0}),u=new Set(l.flatMap(t=>{let n=e.scopes.symbolFor(t)?.id;return n===void 0?[]:[n]}));if([...u].some(e=>c.releasedSymbolIds.has(e))||[...u].some(e=>c.escapedSymbolIds.has(e))||![...u].some(e=>c.invokedSymbolIds.has(e)))return;let d=uue(r,s,e.scopes);d&&pue(d)&&(gue(d,e.scopes)||e.report({node:r,message:`\`${o}\` keeps a pending debounced/throttled call that fires after unmount because nothing cancels it; return \`() => ${o}.cancel()\` from a useEffect so the trailing call is dropped on teardown.`}))}}}}),vue=1e3,yue=new Set([`arial`,`geist`,`helvetica`,`inter`,`lato`,`montserrat`,`open sans`,`plus jakarta sans`,`roboto`,`space grotesk`]),bue=new Map([[`text-xs`,12],[`text-sm`,14],[`text-base`,16],[`text-lg`,18],[`text-xl`,20],[`text-2xl`,24],[`text-3xl`,30],[`text-4xl`,36],[`text-5xl`,48],[`text-6xl`,60],[`text-7xl`,72],[`text-8xl`,96],[`text-9xl`,128]]),xue=new Set(`best of breed.best-in-class.built for the modern.cutting-edge.drive engagement.drive growth.drive results.empower your.enterprise-grade.future-proof.game changing.game-changer.harness the power.industry-leading.leverage the power.next-generation.seamless experience.seamlessly integrate.streamline your.supercharge your.transform your business.trusted by leading.trusted by the world.unleash the power.unleash your.unlock your potential.world-class`.split(`.`)),Sue=1e3,Cue=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),wue=new Set(`code.pre.kbd.samp.var.tt.markdown.markdownblock.markdowncontent.markdownrenderer.markdowntext.markdownview.mdx.mdxcontent.mdxremote.md.prose.richtext.article.blockquote.quote.trans.translation.translated.fbt.fbs`.split(`.`)),Tue=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Eue=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Due=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Oue=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,kue=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),Dc=new Set([`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`]),Aue=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Oc=/[\p{L}\p{N}]\.\.\./u,kc=e=>A(e,{allowComputedString:!0}),W=(e,t)=>{for(let n of[...e??[]].reverse()){let e=kc(n);if(!e)return null;if(e===t&&E(n,`Property`))return n}return null},jue=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=e.identifier;for(;t.parent&&E(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;let n=t.parent;return!!(E(n,`AssignmentExpression`)&&n.left===t||E(n,`UpdateExpression`)&&n.argument===t||E(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t||E(n,`CallExpression`)&&n.arguments?.some(e=>e===t))}),Mue=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ObjectExpression`))return r;if(!t||!E(r,`Identifier`))return null;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||n.has(i.id)||jue(i))return null;let a=new Set(n);return a.add(i.id),Mue(i.initializer,t,a)},G=(e,t)=>!E(e.name,`JSXIdentifier`)||e.name.name!==`style`||!E(e.value,`JSXExpressionContainer`)?null:Mue(e.value.expression,t),K=e=>{if(!E(e,`JSXOpeningElement`))return null;let t=R(e.attributes??[],`className`);return t?.value?E(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value:E(t.value,`JSXExpressionContainer`)&&E(t.value.expression,`Literal`)&&typeof t.value.expression.value==`string`?t.value.expression.value:E(t.value,`JSXExpressionContainer`)&&E(t.value.expression,`TemplateLiteral`)&&t.value.expression.quasis?.length===1?t.value.expression.quasis[0].value?.raw??null:null:null},q=e=>E(e,`Property`)&&E(e.value,`Literal`)&&typeof e.value.value==`string`?e.value.value:null,Ac=[`sm`,`md`,`lg`,`xl`,`2xl`],jc=[``,...Ac],Mc=new Map(Ac.map((e,t)=>[e,t])),Nc=e=>e.replace(/(?<!\\)_/g,` `),Nue=new Map([[`hidden`,{isVisible:!1,propertyName:`display`}],[`block`,{isVisible:!0,propertyName:`display`}],[`contents`,{isVisible:!0,propertyName:`display`}],[`flex`,{isVisible:!0,propertyName:`display`}],[`flow-root`,{isVisible:!0,propertyName:`display`}],[`grid`,{isVisible:!0,propertyName:`display`}],[`inline`,{isVisible:!0,propertyName:`display`}],[`inline-block`,{isVisible:!0,propertyName:`display`}],[`inline-flex`,{isVisible:!0,propertyName:`display`}],[`inline-grid`,{isVisible:!0,propertyName:`display`}],[`inline-table`,{isVisible:!0,propertyName:`display`}],[`list-item`,{isVisible:!0,propertyName:`display`}],[`table`,{isVisible:!0,propertyName:`display`}],[`table-caption`,{isVisible:!0,propertyName:`display`}],[`table-cell`,{isVisible:!0,propertyName:`display`}],[`table-column`,{isVisible:!0,propertyName:`display`}],[`table-column-group`,{isVisible:!0,propertyName:`display`}],[`table-footer-group`,{isVisible:!0,propertyName:`display`}],[`table-header-group`,{isVisible:!0,propertyName:`display`}],[`table-row`,{isVisible:!0,propertyName:`display`}],[`table-row-group`,{isVisible:!0,propertyName:`display`}]]),Pue=new Map([[`collapse`,{isVisible:!1,propertyName:`visibility`}],[`invisible`,{isVisible:!1,propertyName:`visibility`}],[`visible`,{isVisible:!0,propertyName:`visibility`}]]),Fue=new Set([`block`,`contents`,`flex`,`flow-root`,`grid`,`inline`,`inline block`,`inline flex`,`inline flow-root`,`inline grid`,`inline table`,`list-item`,`table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row`,`table-row-group`]),Iue=(e,t)=>{let n=`[${t}:`;return e.toLowerCase().startsWith(n)&&e.endsWith(`]`)?e.slice(n.length,-1):null},Pc=e=>{let t=Nue.get(e)??Pue.get(e);if(t)return{...t,status:`known`};let n=Iue(e,`display`);if(n!==null){let e=Nc(n).trim().toLowerCase();return e===`none`?{isVisible:!1,propertyName:`display`,status:`known`}:Fue.has(e)?{isVisible:!0,propertyName:`display`,status:`known`}:{isVisible:null,propertyName:`display`,status:`unknown`}}let r=Iue(e,`visibility`);if(r===null)return{isVisible:null,propertyName:null,status:`not-relevant`};let i=Nc(r).trim().toLowerCase();return i===`visible`?{isVisible:!0,propertyName:`visibility`,status:`known`}:i===`hidden`||i===`collapse`?{isVisible:!1,propertyName:`visibility`,status:`known`}:{isVisible:null,propertyName:`visibility`,status:`unknown`}},Lue=(e,t)=>{let n=0;for(let r=t-1;r>=0&&e[r]===`\\`;--r)n+=1;return n%2==1},Fc=e=>{let t=[],n=0;for(let r of ic(e,e=>e===`:`))t.push(e.slice(n,r)),n=r+1;let r=e.slice(n),i=r.endsWith(`!`)&&!Lue(r,r.length-1),a=r.startsWith(`!`)||i;return r.startsWith(`!`)&&(r=r.slice(1)),i&&(r=r.slice(0,-1)),{isImportant:a,utility:r,variants:t}},Rue=e=>{let t=0,n=jc.length;for(let r of e){let e=jc.indexOf(r);if(e>0){t=Math.max(t,e);continue}if(r.startsWith(`max-`)){let e=jc.indexOf(r.slice(4));if(e>0){n=Math.min(n,e);continue}}return null}return{maximumBreakpointIndex:n,minimumBreakpointIndex:t,specificity:e.length}},zue=(e,t,n)=>{let r=e.filter(({effect:e,scope:r})=>e.propertyName===n&&t>=r.minimumBreakpointIndex&&t<r.maximumBreakpointIndex);if(r.length===0)return!0;let i=r.some(({token:e})=>e.isImportant)?r.filter(({token:e})=>e.isImportant):r,a=Math.max(...i.map(({scope:e})=>e.specificity)),o=i.filter(({scope:e})=>e.specificity===a),s=Math.max(...o.map(({scope:e})=>e.minimumBreakpointIndex)),c=o.filter(({scope:e})=>e.minimumBreakpointIndex===s),l=Math.min(...c.map(({scope:e})=>e.maximumBreakpointIndex)),u=new Set(c.filter(({scope:e})=>e.maximumBreakpointIndex===l).map(({effect:e})=>e.isVisible));return u.size===1?u.values().next().value??null:null},Ic=e=>{let t=[];for(let n of U(e).map(Fc)){let e=Pc(n.utility);if(e.status===`not-relevant`)continue;let r=Rue(n.variants);if(r===null)return null;if(!r||r.minimumBreakpointIndex>=r.maximumBreakpointIndex)continue;if(e.status===`unknown`||e.propertyName===null||e.isVisible===null)return null;let i={isVisible:e.isVisible,propertyName:e.propertyName};t.push({effect:i,scope:r,token:n})}let n=[];for(let e=0;e<jc.length;e+=1){let r=zue(t,e,`display`),i=zue(t,e,`visibility`);if(r===null||i===null)return null;n.push(r&&i)}return n},Bue=(e,t)=>{if(er(e,t.settings))return!0;let n=R(e.attributes,`style`),r=n?G(n,t.scopes):null;if(r){let e=W(r.properties,`display`);if(e&&q(e)?.toLowerCase()===`none`)return!0;let t=W(r.properties,`visibility`),n=t?q(t)?.toLowerCase():null;if(n===`hidden`||n===`collapse`)return!0}let i=K(e);if(!i)return!1;let a=Ic(i);return!!(a&&a.every(e=>!e))},Lc=(e,t)=>{let n=e;for(;n;){if(E(n,`JSXElement`)&&Bue(n.openingElement,t))return!0;n=n.parent}return!1},Rc=e=>{if(!e||!E(e,`JSXOpeningElement`))return null;if(E(e.name,`JSXIdentifier`))return O(e);if(E(e.name,`JSXMemberExpression`)){let t=e.name;for(;E(t,`JSXMemberExpression`);)t=t.property;if(E(t,`JSXIdentifier`))return t.name}return null},zc=e=>{let t=e.parent;for(;t;){if(E(t,`JSXElement`)){let e=Rc(t.openingElement);if(e&&wue.has(e.toLowerCase()))return!0;let n=V(t.openingElement?.attributes??[],`translate`);if(E(n?.value,`Literal`)&&n.value.value===`no`)return!0}t=t.parent}return!1},Vue=/&(?:mdash|#0*8212|#x0*2014);/gi,Hue=/(?:^|[/\\])(?:articles?|blog|changelog|content|docs?|posts?)(?:[/\\]|$)/i,Uue=/\p{L}[^—\n]*—[^—\n]*\p{L}/u,Wue=/\p{L}+/gu,Gue=/[\r\n]/u,Bc=e=>e.includes(`—`)&&e.split(Gue).some(e=>Uue.test(e)&&(e.match(Wue)?.length??0)>=5),Vc=e=>{let t=P(e);return E(t,`Literal`)?typeof t.value==`string`&&Bc(t.value):E(t,`TemplateLiteral`)?t.quasis.some(e=>Bc(e.value.cooked??e.value.raw??``)):E(t,`ConditionalExpression`)?Vc(t.consequent)||Vc(t.alternate):E(t,`LogicalExpression`)?Vc(t.right):!1},Kue=C({id:`design-no-em-dash-in-jsx-text`,title:`Em dash in JSX text`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:`Replace em dashes in UI text with commas, colons, semicolons, or parentheses so the copy reads less like AI output.`,create:e=>e.filename&&Hue.test(e.filename)?kt:{JSXExpressionContainer(t){t.parent&&E(t.parent,`JSXAttribute`)||zc(t)||Lc(t,e)||Vc(t.expression)&&e.report({node:t,message:`Em dash (—) in UI text reads like AI output to your users.`})},JSXText(t){Bc((typeof t.value==`string`?t.value:``).replace(Vue,`—`))&&(zc(t)||Lc(t,e)||e.report({node:t,message:`Em dash (—) in UI text reads like AI output to your users.`}))}}}),que=(e,t,n)=>{let r=new Set;for(let n of e.matchAll(t))r.add(`${n[1]}${n[2]}`);let i=[];for(let t of e.matchAll(n)){let e=`${t[1]}${t[2]}`;r.has(e)&&i.push({value:e})}return i},Hc=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),Jue=C({id:`design-no-redundant-padding-axes`,title:`Redundant padding axes`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Collapse matching padding axes to `p-N` so duplicated classes do not make spacing harder to scan; keep split axes only when breakpoints differ.",create:e=>({JSXAttribute(t){if(!E(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=L(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||Hc(n,`px`)||Hc(n,`py`))return;let r=que(n,Tue,Eue);if(r.length!==0)for(let n of r)e.report({node:t,message:`px-${n.value} and py-${n.value} duplicate p-${n.value}, so the class list is noisier without changing spacing.`})}})}),Yue=C({id:`design-no-redundant-size-axes`,title:`Redundant width and height axes`,requires:[`tailwind:3.4`],tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Collapse matching width and height to `size-N` so duplicated classes do not make layout harder to scan.",create:e=>{let t=!1;return{JSXAttribute(n){if(t||!E(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=L(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||Hc(r,`w`)||Hc(r,`h`))return;let i=que(r,Due,Oue);if(i.length===0)return;let[a]=i;t=!0,e.report({node:n,message:`w-${a.value} and h-${a.value} duplicate size-${a.value}, so the class list is noisier without changing layout.`})}}}}),Xue=e=>e.split(/\s+/).filter(Boolean),Uc=C({id:`design-no-space-on-flex-children`,title:`space-* utility on flex children`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Use `gap-*` on the flex or grid parent. `space-x-*` and `space-y-*` leave gaps when a child is hidden, miss spacing on wrapped lines, and don't flip in right-to-left layouts.",create:e=>({JSXAttribute(t){if(!E(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=L(t);if(!n||!n.includes(`space-`))return;let r=Xue(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(kue.has(t)){i=!0;break}}if(!i)return;let a=n.match(Aue);if(!a)return;let o=a[1],s=a[2];e.report({node:t,message:`space-${o}-${s} on a flex or grid parent can leave uneven gaps when children hide, wrap, or render in RTL layouts.`})}})}),Zue=new Set([`alt`,`aria-label`,`placeholder`,`title`]),Que=e=>{let t=L(e);if(t!==null)return t;let n=e.value;return!n||!E(n,`JSXExpressionContainer`)?null:E(n.expression,`TemplateLiteral`)?c(n.expression):null},Wc=(e,t)=>{let n=P(e);if(E(n,`Literal`)){typeof n.value==`string`&&Oc.test(n.value)&&t.report({node:n,message:`Use the real ellipsis character ("…") instead of three period characters.`});return}if(E(n,`TemplateLiteral`)){let e=c(n);e&&Oc.test(e)&&t.report({node:n,message:`Use the real ellipsis character ("…") instead of three period characters.`});return}if(E(n,`ConditionalExpression`)){Wc(n.consequent,t),Wc(n.alternate,t);return}E(n,`LogicalExpression`)&&Wc(n.right,t)},Gc=C({id:`design-no-three-period-ellipsis`,title:`Three dots instead of ellipsis`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:`Use the real ellipsis character ("…") so UI labels look polished and consistent instead of like three separate periods.`,create:e=>({JSXAttribute(t){let n=rn(t.name)?.toLowerCase();if(!n||!Zue.has(n))return;let r=Que(t);!r||!Oc.test(r)||e.report({node:t.value??t,message:`Use the real ellipsis character ("…") instead of three period characters.`})},JSXExpressionContainer(t){t.parent&&E(t.parent,`JSXAttribute`)||zc(t)||Wc(t.expression,e)},JSXText(t){let n=typeof t.value==`string`?t.value:``;Oc.test(n)&&(zc(t)||e.report({node:t,message:`Use the real ellipsis character ("…") instead of three period characters.`}))}})}),Kc=e=>e===`button`||e===`Button`,$ue=e=>Kc(e)||e===`a`||e===`Link`,ede=new Set([`back`,`previous`]),qc=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),Jc=e=>{if(!E(e,`JSXElement`)&&!E(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(E(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(E(e,`JSXExpressionContainer`)){let t=e.expression;if(E(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(E(t,`TemplateLiteral`)){let e=c(t);if(e!==null){n.push(e);continue}}return null}if(E(e,`JSXFragment`)){let t=Jc(e);if(t===null)return null;n.push(t);continue}if(E(e,`JSXElement`))return null}return n.join(``).trim()},tde=e=>{let t=e.parent;for(;t;){if(E(t,`JSXElement`)&&Rc(t.openingElement)===`form`)return t;t=t.parent}return null},Yc=e=>{for(let t of e.children??[]){if(E(t,`JSXFragment`)){if(Yc(t))return!0;continue}if(!E(t,`JSXElement`))continue;let e=Rc(t.openingElement);if(e&&$ue(e)&&ede.has(qc(Jc(t)??``))||Yc(t))return!0}return!1},Xc=C({id:`design-no-vague-button-label`,title:`Vague button label`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,recommendation:`Name the action: "Save changes" instead of "Continue", "Send invite" instead of "Submit". The label is the button's accessible name.`,create:e=>({JSXElement(t){let n=Rc(t.openingElement);if(!n||!Kc(n))return;let r=Jc(t);if(!r)return;let i=qc(r);if(Cue.has(i)){if(i===`continue`){let e=tde(t);if(e&&Yc(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),nde=e=>{for(let t of e.children)if(!(E(t,`JSXText`)&&t.value.trim().length===0)){if(E(t,`JSXElement`))return t.openingElement;if(!(E(t,`JSXExpressionContainer`)&&E(t.expression,`JSXEmptyExpression`)))return}return null},Zc=C({id:`details-requires-summary`,title:`Details disclosure has no explicit summary`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Make a meaningful summary the first child of details so users can understand and operate the disclosure.`,create:e=>({JSXElement(t){if(O(t.openingElement)!==`details`)return;let n=nde(t);n!==void 0&&(n&&O(n)===`summary`||e.report({node:n??t.openingElement,message:`This details disclosure has no explicit summary as its first content child, so the browser falls back to an implementation-defined label. Add a meaningful summary first.`}))}})}),rde=new Set([`dialog`,`alertdialog`]),ide=[`aria-label`,`aria-labelledby`,`title`],Qc=C({id:`dialog-has-accessible-name`,title:`Dialog without accessible name`,severity:`warn`,recommendation:'Give every `<dialog>` / `role="dialog"` an accessible name with `aria-label` or `aria-labelledby` (referencing the dialog\'s title element).',create:e=>dt(e.filename)?kt:{JSXOpeningElement(t){if(!E(t.name,`JSXIdentifier`))return;let n=O(t);if(n[0]!==n[0]?.toLowerCase())return;let r=F(t.attributes,`role`),i=r?Xn(r):null;(n===`dialog`||i!==null&&rde.has(i))&&(I(t.attributes)||ide.some(e=>F(t.attributes,e))||e.report({node:t.name,message:"This dialog has no accessible name, so screen readers announce it as just “dialog.” Add `aria-label` or point `aria-labelledby` at its heading."}))}}}),$c=`createReactClass`,el=e=>{if(!E(e,`CallExpression`))return!1;let t=e.callee;return E(t,`MemberExpression`)?!!(E(t.object,`Identifier`)&&t.object.name===`React`&&E(t.property,`Identifier`)&&t.property.name===$c):E(t,`Identifier`)?t.name===$c:!1},ade=[`observer`,`lazy`,`withTracking`],ode=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??ade);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},tl=(e,t,n)=>{if(!e)return!0;let r=e.match(/^(\d+)\.(\d+)/);if(!r)return!0;let i=Number(r[1]),a=Number(r[2]);return i>t||i===t&&a>=n},nl=new WeakMap,rl=e=>{let t=nl.get(e);if(t!==void 0)return t;let n=!1,r=e=>{if(n)return;if(e.type===`JSXElement`||e.type===`JSXFragment`){n=!0;return}if(E(e,`CallExpression`)&&ua(e)){n=!0;return}let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let i=t[e];if(Array.isArray(i))for(let e of i)j(e)&&r(e);else j(i)&&r(i);if(n)return}};return r(e),nl.set(e,n),n},il=e=>{let t=!1;return D(e,e=>{if(E(e,`CallExpression`)&&E(e.callee,`Identifier`)&&e.callee.name===`createElement`)return t=!0,!1}),t},al=e=>E(e,`MemberExpression`)?!e.computed&&E(e.property,`Identifier`)?e.property.name:e.computed&&E(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,ol=e=>{let t=e.parent;for(;t&&(t.type===`TSAsExpression`||t.type===`TSSatisfiesExpression`||t.type===`TSNonNullExpression`||t.type===`TSTypeAssertion`);)t=t.parent??null;if(!t)return null;if(E(t,`VariableDeclarator`)&&E(t.id,`Identifier`))return t.id.name;if(E(t,`AssignmentExpression`)){let e=t.left;if(E(e,`Identifier`))return e.name;if(E(e,`MemberExpression`))return al(e)}return null},sl=e=>{let t=e.parent;if(!t||!E(t,`AssignmentExpression`))return!1;let n=t.left;return E(n,`MemberExpression`)&&E(n.object,`Identifier`)&&n.object.name===`module`&&al(n)===`exports`},sde=e=>{if(!E(e,`CallExpression`))return!1;if(el(e))return!0;let t=e.callee;return E(t,`MemberExpression`)?al(t)===`createClass`:!1},cde=e=>{if(!E(e,`CallExpression`))return!1;let t=e.callee;return E(t,`Identifier`)?t.name===`createContext`:E(t,`MemberExpression`)&&al(t)===`createContext`},lde=e=>(E(e,`FunctionExpression`)||E(e,`FunctionDeclaration`))&&!!e.id?.name,cl=e=>E(e,`CallExpression`)&&e.arguments[0]||null,ll=(e,t)=>{if(!E(e,`CallExpression`))return null;let n=e.callee;if(E(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},ude=(e,t)=>ll(e,t)!==null,ul=e=>{if(!e)return!1;if(tl(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},dde=(e,t)=>{if(!ude(e,t.additionalHoCs)||!rl(e))return!1;let n=ol(e),r=x(e);if(n&&r&&hl(n,r))return!1;let i=ll(e,t.additionalHoCs),a=cl(e);return!a||i===`forwardRef`&&E(e.parent,`CallExpression`)&&ll(e.parent,t.additionalHoCs)===`memo`&&cl(e.parent)===e&&ul(t.reactVersion)?!1:i===`memo`&&E(a,`CallExpression`)?ll(a,t.additionalHoCs)===`forwardRef`?!ul(t.reactVersion):!1:lde(a)?!1:E(a,`FunctionExpression`)||E(a,`ArrowFunctionExpression`)},dl=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((E(e,`PropertyDefinition`)||E(e,`MethodDefinition`))&&`static`in e&&e.static&&E(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},fl=e=>{if(E(e,`Identifier`))return[e.name];if(!E(e,`MemberExpression`))return[];let t=fl(e.object),n=al(e);return n?[...t,n]:t},pl=new WeakMap,ml=e=>{let t=pl.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(E(e,`AssignmentExpression`)&&E(e.left,`MemberExpression`)&&al(e.left)===`displayName`){E(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of fl(e.left.object))r.add(t)}let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let n=t[e];if(Array.isArray(n))for(let e of n)j(e)&&i(e);else j(n)&&i(n)}};i(e);let a={identifierTargets:n,memberPathSegments:r};return pl.set(e,a),a},hl=(e,t)=>ml(t).identifierTargets.has(e),fde=(e,t)=>ml(t).memberPathSegments.has(e),gl=C({id:`display-name`,title:`Component missing display name`,severity:`warn`,defaultEnabled:!1,recommendation:"Give each component a `displayName` so DevTools shows a clear name.",category:`Architecture`,create:e=>{let t=ode(e.settings),n=Or(e.settings),r=!t.ignoreTranspilerName,i=t=>{e.report({node:t,message:"This component shows up as Anonymous in React DevTools because it has no `displayName`."})};return{ClassDeclaration(e){if(Na(e)&&!(e.id&&Us(e.id.name)&&r)&&!dl(e)){if(e.id){let t=x(e);if(t&&hl(e.id.name,t))return}i(e.id??e)}},ClassExpression(e){if(Na(e)&&!(e.id&&Us(e.id.name)&&r)&&!dl(e)){if(e.id){let t=x(e);if(t&&hl(e.id.name,t))return}i(e.id??e)}},FunctionExpression(a){if(!rl(a))return;if(!n&&!a.id&&sl(a)){i(a);return}if(!n&&!Zt(a,e.scopes,e.cfg)&&!il(a)||a.id&&Us(a.id.name)&&r)return;if(E(a.parent,`Property`)&&a.parent.method){let e=a.parent.key,n=E(e,`Identifier`)?e.name:E(e,`Literal`)&&typeof e.value==`string`?e.value:null,r=x(a);if(n&&Us(n)&&t.ignoreTranspilerName&&(!r||!fde(n,r))){i(a);return}}let o=ol(a);if(!(o&&Us(o)&&r)){if(sl(a)&&!a.id){i(a);return}E(a.parent,`ReturnStatement`)&&!a.id&&i(a)}},ArrowFunctionExpression(t){let a=E(t.parent,`ExportDefaultDeclaration`);if(!rl(t)&&!a)return;if(!n&&sl(t)){i(t);return}if(!n&&!Zt(t,e.scopes,e.cfg)&&!il(t))return;if(E(t.parent,`ArrowFunctionExpression`)||E(t.parent,`ReturnStatement`)){i(t);return}let o=t.parent;for(;o;){if(E(o,`VariableDeclarator`)&&E(o.id,`Identifier`)){if(Us(o.id.name)&&r)return;break}if(E(o,`ExportDefaultDeclaration`)){i(t);return}if(sl(t)){i(t);return}if(E(o,`FunctionDeclaration`)||E(o,`FunctionExpression`)||E(o,`ArrowFunctionExpression`)||E(o,`ClassDeclaration`)||E(o,`ClassExpression`)||E(o,`Program`))break;o=o.parent??null}},FunctionDeclaration(t){if(!n&&E(t.parent,`ExportDefaultDeclaration`)&&Zt(t,e.scopes,e.cfg)){if(t.id){let e=x(t);if(e&&hl(t.id.name,e))return}i(t.id??t)}},CallExpression(e){if(t.checkContextObjects&&tl(t.reactVersion,16,3)&&cde(e)){let t=ol(e);if(t){let n=x(e);if(n&&hl(t,n))return}i(e);return}if(dde(e,t)){i(e);return}if(!sde(e))return;let n=e.arguments[0];if(!n||!E(n,`ObjectExpression`)){i(e);return}let a=!1;for(let e of n.properties){if(!E(e,`Property`)||e.computed)continue;let t=e.key;if(E(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(E(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&E(o,`VariableDeclarator`)&&E(o.id,`Identifier`)&&Us(o.id.name)&&r)){if(o&&E(o,`AssignmentExpression`)){let e=o.left;if(E(e,`Identifier`)&&Us(e.name)&&r||E(e,`MemberExpression`)&&E(e.property,`Identifier`)&&Us(e.property.name)&&r)return}i(e)}}}}}),_l=C({id:`duplicate-jsx-subtree`,title:`Duplicated JSX structure`,severity:`warn`,execution:`project`,recommendation:`Extract a shared component when the repeated JSX trees represent the same UI concept and should evolve together.`}),pde=(e,t,n,r)=>{let i=r===`different`;return i&&t!==n?`The cleanup removes \`${e}\` with a different callback binding and capture ${String(n)}, but it was registered with capture ${String(t)}. Pass the same callback binding and capture flag to both EventTarget calls.`:i?`The cleanup removes \`${e}\` with a different callback binding than the one registered, so \`removeEventListener\` cannot detach that listener. Pass the same callback binding to both calls.`:`The cleanup removes \`${e}\` with capture ${String(n)}, but it was registered with capture ${String(t)}. \`removeEventListener\` must use the same capture flag as \`addEventListener\`.`},mde=e=>{let t=!1;return D(e,e=>{if(E(e,`CallExpression`))return t=!0,!1}),t},vl=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,yl=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>yl(e,t)&&yl(n,t)),hde=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,bl=(e,t)=>{if(t.abortControllerSymbolId!==null&&yl(e,t.abortControllerSymbolId))return`cancelled`;let n=e.hasUnknownRemovalCall||t.abortControllerSymbolId!==null&&e.hasUnknownAbortCall?`unknown`:`not-cancelled`;for(let r of e.removals){if(r.eventName!==t.eventName||r.capture!==t.capture||r.callbackIdentity===null||vl(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=hde(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=bl(r,t),a=bl(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},gde=(e,t)=>bl(e,t)!==`not-cancelled`,xl=e=>{if(!e)return null;let t=P(e);return E(t,`MemberExpression`)?!t.computed&&E(t.property,`Identifier`)?t.property.name:t.computed&&E(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},_de=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),vde=(e,t)=>{if(E(e,`IfStatement`)){if(e.test===t)return!0;let n=mn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(E(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=mn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(E(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=mn(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return E(e,`TryStatement`)?e.finalizer===t:E(e,`SwitchStatement`)?e.discriminant===t:E(e,`ForStatement`)?e.init===t||e.test===t:E(e,`ForInStatement`)||E(e,`ForOfStatement`)?e.right===t:E(e,`WhileStatement`)?e.test===t:!1},Sl=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||_de.has(e.type)&&!vde(e,r)&&!n?.(e,r))return!0;r=e}return!1},Cl=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=P(e);if(E(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(!E(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&E(e,`SpreadElement`)){i=null;continue}if(!E(e,`Property`))return null;let r=A(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=P(e.value);if(E(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},yde=e=>{if(!e)return!1;let t=P(e);if(E(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!E(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!E(e,`Property`))return null;let t=A(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=P(e.value);if(!E(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},bde=new Set([...Ct,`useInsertionEffect`]),wl=e=>e.references.every(e=>e.flag===`read`),xde=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&wl(e),Tl=e=>e.kind===`const`&&E(e.declarationNode,`VariableDeclarator`)&&E(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,El=(e,t,n)=>{if(!E(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!xde(r)||n.has(r.id)||r.kind===`const`&&!Tl(r))return null;n.add(r.id);let i=r.initializer?P(r.initializer):null;if(r.kind===`const`&&E(i,`Identifier`)){let e=El(i,t,n);if(e)return e}return r},Dl=(e,t)=>{if(!e)return null;let n=P(e);if(w(n))return{node:n,isConcreteFunction:!0};if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r)return null;let i=r.initializer?P(r.initializer):null;return i&&w(i)?{node:i,isConcreteFunction:!0}:{node:r.bindingIdentifier,isConcreteFunction:!1}},Ol=(e,t)=>{let n=P(e);if(E(n,`Identifier`)){let e=El(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?P(e.initializer):null;return E(n,`NewExpression`)&&E(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:E(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)){let e=Ol(n.object,t);return n.property.name===`document`&&(e===`global:window`||e===`global:globalThis`)?`global:document`:n.property.name===`window`&&(e===`global:window`||e===`global:globalThis`)?`global:window`:e===null?null:`${e}.${n.property.name}`}return null},kl=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(E(r,`Literal`)&&typeof r.value==`string`)return r.value;if(E(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!E(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!Tl(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),kl(i.initializer,t,n))},Sde=(e,t)=>{let n=jl(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=P(r);if(!n||!E(i,`NewExpression`)||!E(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=P(n);if(!E(a,`Identifier`))return null;let o=El(a,t,new Set),s=o?.initializer?P(o.initializer):null;if(!E(s,`NewExpression`)||!E(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=Ol(n,t),l=kl(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},Al=(e,t)=>{let n=P(e);if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=P(r.initializer);return!E(i,`NewExpression`)||!E(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},jl=(e,t,n)=>{if(!e)return null;let r=P(e);return!E(r,`MemberExpression`)||(xl(r)??(n&&r.computed?kl(r.property,n):null))!==t?null:r.object},Cde=(e,t)=>E(e,`ObjectPattern`)?e.properties.some(e=>!E(e,`Property`)||A(e,{allowComputedString:!0})!==`signal`?!1:(E(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,Ml=(e,t,n=new Set)=>{let r=P(e),i=jl(r,`signal`);if(i)return Al(i,t);if(!E(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!wl(a))return null;n.add(a.id);let o=a.declarationNode;if(!E(o,`VariableDeclarator`))return null;if(E(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=P(a.initializer);if(E(e,`Identifier`))return Ml(e,t,n);let r=jl(e,`signal`);return r?Al(r,t):null}return Cde(o.id,a.bindingIdentifier)?Al(a.initializer,t):null},Nl=(e,t,n)=>{let r=P(e);if(E(r,`UnaryExpression`)&&r.operator===`!`){let e=Nl(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(E(r,`BinaryExpression`)){let e=mn(r.left),i=mn(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=Nl(a,t,n);if(e){let t=r.operator===`==`||r.operator===`===`,n=r.operator===`!=`||r.operator===`!==`,i=t&&!o||n&&o;if(t||n)return i?e===`aborted`?`not-aborted`:`aborted`:e}}return null}let i=jl(r,`aborted`);return i&&Ml(i,n)===t?`aborted`:null},wde=(e,t,n,r)=>{if(E(e,`IfStatement`)||E(e,`ConditionalExpression`)){let i=Nl(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!E(e,`LogicalExpression`)||e.right!==t)return!1;let i=Nl(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},Tde=(e,t,n,r)=>!Sl(e,t,(e,t)=>wde(e,t,n,r)),Ede=(e,t)=>{let n=P(e.callee);if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r?.initializer)return null;let i=P(r.initializer);if(!E(i,`CallExpression`))return null;let a=jl(i.callee,`bind`);if(!a)return null;let o=jl(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=Al(o,t),l=Al(s,t);return c!==null&&c===l?c:null},Dde=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=P(e);if(!E(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!E(e,`Property`))return n;if(A(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=Ml(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},Pl=(e,t,n)=>{let r=jl(e.callee,t,n);if(!r)return null;let i=Ol(r,n),a=kl(e.arguments?.[0],n),o=Dl(e.arguments?.[1],n),s=Cl(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Ode=(e,t)=>{let n=jl(e.callee,`call`);if(!n||!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!wl(r)||!E(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!E(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!E(e,`Property`))return!1;let t=E(e.value,`AssignmentPattern`)?e.value.left:e.value;return A(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=Ol(i.init,t),s=Ol(a,t);if(o===null||s===null||o!==s)return null;let c=kl(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:Dl(e.arguments?.[2],t),capture:Cl(e.arguments?.[3],{allowComputedString:!0})}},kde=(e,t)=>{if(!e)return null;let n=P(e);if(w(n))return n.body;if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r||!r.initializer)return null;let i=P(r.initializer);return w(i)?i.body:null},Ade=(e,t)=>{let n=[],r=[],i=new Map,a=0;if(!E(e,`BlockStatement`))return{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:!1,returnStatementCount:a};let o=e.body[e.body.length-1],s=E(o,`ReturnStatement`);return D(e,o=>{if(o!==e&&w(o)||E(o,`ClassDeclaration`)||E(o,`ClassExpression`))return!1;if(E(o,`CallExpression`)){if(Sl(o,e))return;let r=jl(o.callee,`addEventListener`,t),a=r?Ol(r,t):null;a!==null&&i.set(a,(i.get(a)??0)+1);let s=Pl(o,`addEventListener`,t);if(s?.callbackIdentity&&s.capture!==null){let e=Dde(s.node.arguments?.[2],t);n.push({node:s.node,targetKey:s.targetKey,eventName:s.eventName,callbackIdentity:s.callbackIdentity,capture:s.capture,once:yde(s.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=Sde(o,t);if(c){let e=n.filter(e=>e.targetKey===c.targetKey&&e.eventName===c.eventName),t=e[0];e.length===1&&t?.once&&i.get(c.targetKey)===1&&t.callbackIdentity.isConcreteFunction&&!mde(t.callbackIdentity.node)&&n.splice(n.indexOf(t),1)}return}if(E(o,`ReturnStatement`)){a+=1;let e=kde(o.argument,t);e&&r.push(e)}}),{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:s,returnStatementCount:a}},jde=(e,t)=>{let n=P(e.callee);if(!E(n,`Identifier`))return null;let r=El(n,t,new Set);if(!r?.initializer||r.kind!==`const`&&r.kind!==`function`)return null;let i=P(r.initializer);return!w(i)||i.async||i.generator?null:{body:i.body,symbolId:r.id}},Fl=(e,t,n=new Set,r=!1)=>{let i=[],a=new Set,o=[],s=!1,c=!1,l=!1,u=E(e,`BlockStatement`)?e.body[e.body.length-1]:null,d=e=>{i.push(...e.removals),c||=e.hasUnknownAbortCall,l||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)a.add(t);o.push(...e.exhaustiveBranches)},f=e=>{let r=E(e,`BlockStatement`)?e.body:[e];for(let e of r){if(E(e,`BreakStatement`)||E(e,`ContinueStatement`))return!0;if(E(e,`BlockStatement`)){if(f(e))return!0;continue}if(E(e,`IfStatement`)){let r=mn(e.test);if(r!==null){let i=Fl(e.test,t,new Set(n),!0);if(!i)return!0;d(i);let a=r?e.consequent:e.alternate;if(a&&f(a))return!0;continue}}let r=Fl(e,t,new Set(n),!0);if(!r)return!0;d(r)}return!1};return D(e,p=>{if(p!==e&&w(p)||E(p,`ClassDeclaration`)||E(p,`ClassExpression`))return!1;if(E(p,`ReturnStatement`)&&p===u)return;if(E(p,`ReturnStatement`)||E(p,`ThrowStatement`)||r&&(E(p,`BreakStatement`)||E(p,`ContinueStatement`)))return s=!0,!1;if(E(p,`ForOfStatement`)){let t=P(p.right);return E(t,`ArrayExpression`)&&t.elements.some(e=>e&&!E(e,`SpreadElement`))&&!Sl(p,e)&&f(p.body),!1}if((E(p,`IfStatement`)||E(p,`ConditionalExpression`))&&p.alternate&&mn(p.test)===null&&!Sl(p,e)){let e=Fl(p.consequent,t,new Set(n)),r=Fl(p.alternate,t,new Set(n));e&&r&&(o.push({alternate:r,consequent:e}),c||=e.hasUnknownAbortCall&&r.hasUnknownAbortCall,l||=e.hasUnknownRemovalCall&&r.hasUnknownRemovalCall);let i=Fl(p.test,t,new Set(n));return i&&d(i),!1}if(!E(p,`CallExpression`))return;let m=Sl(p,e),h=jl(p.callee,`removeEventListener`,t);if(h&&!m){let e=Pl(p,`removeEventListener`,t);e?(i.push(e),l||=e.callbackIdentity===null||e.capture===null):l=!0}if(!h&&!m){let e=Ode(p,t);e&&i.push(e)}let g=jl(p.callee,`abort`);if(g){let n=Al(g,t);n===null?m||(c=!0):(!m||Tde(p,e,n,t))&&a.add(n);return}if(m)return;let _=Ede(p,t);if(_!==null){a.add(_);return}let ee=jde(p,t);if(!ee||n.has(ee.symbolId))return;n.add(ee.symbolId);let v=Fl(ee.body,t,n);v&&d(v)}),s?null:{removals:i,abortedControllerSymbolIds:a,exhaustiveBranches:o,hasUnknownAbortCall:c,hasUnknownRemovalCall:l}},Mde=(e,t)=>{let n=Ade(e,t);if(!n.hasCanonicalCleanupReturn||n.returnStatementCount!==1||n.cleanupBodies.length!==1)return null;let r=[],i=new Set,a=[],o=!1,s=!1,c=e=>{r.push(...e.removals),a.push(...e.exhaustiveBranches),o||=e.hasUnknownAbortCall,s||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)i.add(t)},l=Fl(e,t);for(let e of n.cleanupBodies){let n=Fl(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},Il=C({id:`effect-listener-cleanup-mismatch`,title:`Effect cleanup does not match its event listener`,severity:`error`,recommendation:"Pass the same callback binding and capture flag to `addEventListener` and `removeEventListener`, or abort the registration's local AbortController during cleanup.",create:e=>({CallExpression(t){if(!n(t,bde,e.scopes))return;let r=Kn(t);if(!w(r))return;let i=Mde(r.body,e);if(i)for(let t of i.registrations){if(t.hasUnknownCancellation||i.hasUnknownRemovalCall||i.registrations.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName).length>1||t.abortControllerSymbolId!==null&&i.hasUnknownAbortCall||t.abortControllerSymbolId!==null&&i.setupAbortAnalysis&&yl(i.setupAbortAnalysis,t.abortControllerSymbolId)||gde(i,t))continue;let n=i.removals.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName),r,a=!1;for(let e of n){if(!e.callbackIdentity||e.capture===null){a=!0;break}let n=vl(t.callbackIdentity,e.callbackIdentity);if(n===`unknown`){a=!0;break}if(n===`same`&&t.capture===e.capture){a=!0;break}r??={removalNode:e.node,removalCapture:e.capture,callbackComparison:n}}n.length===0||a||!r||e.report({node:r.removalNode,message:pde(t.eventName,t.capture,r.removalCapture,r.callbackComparison)})}}})}),Ll=(e,t)=>{if(!e)return null;let n=P(e);if(E(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(E(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=La({node:n,scopes:t});return r?`reference:${r}`:null},Rl=new Map([[`removeEventListener`,{registerMethod:`addEventListener`,requiresEventArgument:!0,allowsHandlerOnlyForm:!1}],[`removeListener`,{registerMethod:`addListener`,requiresEventArgument:!0,allowsHandlerOnlyForm:!0}],[`off`,{registerMethod:`on`,requiresEventArgument:!0,allowsHandlerOnlyForm:!1}],[`unsubscribe`,{registerMethod:`subscribe`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unsub`,{registerMethod:`sub`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unwatch`,{registerMethod:`watch`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unlisten`,{registerMethod:`listen`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}]]),Nde=new Map([...Rl.values()].map(e=>[e.registerMethod,e])),Pde=new Set([`off`,`removeEventListener`,`removeListener`]),zl=e=>!!(e&&Mi(P(e))),Bl=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return zl(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if(zl(a))return{method:n,receiverKey:r,eventKey:Ll(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&zl(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},Vl=C({id:`effect-listener-cleanup-reference-mismatch`,title:`Effect cleanup removes the wrong listener reference`,severity:`error`,category:`Bugs`,recommendation:`Removal APIs match by reference identity, so the second inline function passed to the remove call can never equal the one you added; hoist the handler into a single named const (or useCallback) and pass that same reference to both the add and remove calls.`,create:e=>({CallExpression(t){if(!Sc(t,e.scopes))return;let n=Kn(t);if(!n)return;let r=[],i=[];Ra(n,t=>{if(!E(t,`CallExpression`))return;let n=P(t.callee);if(!E(n,`MemberExpression`))return;let i=k(n);if(!i)return;let a=La({node:n.object,scopes:e.scopes});if(a===null)return;let o=Nde.get(i);if(!o)return;let s=Bl(t,o,i,a,e.scopes);s&&r.push(s)});for(let t of yc(n))Ra(t,t=>{if(!E(t,`CallExpression`))return;let n=P(t.callee);if(!E(n,`MemberExpression`))return;let r=k(n);if(!r||Pde.has(r))return;let a=Rl.get(r);if(!a)return;let o=La({node:n.object,scopes:e.scopes});if(o===null)return;let s=Bl(t,a,r,o,e.scopes);s&&i.push(s)});for(let t of i){let n=Rl.get(t.method);n&&r.some(e=>e.method!==n.registerMethod||e.receiverKey!==t.receiverKey||e.usesHandlerOnlyForm!==t.usesHandlerOnlyForm?!1:!n.requiresEventArgument||t.usesHandlerOnlyForm?!0:e.eventKey!==null&&e.eventKey===t.eventKey)&&e.report({node:t.handlerNode,message:`Your cleanup calls \`${t.method}\` with a brand-new inline function that never equals the handler you added, so the cleanup exists but detaches nothing and the listener leaks; pass one shared named handler to both calls.`})}}})}),Hl=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=S(e),c=S(t);if(!i||!a||!o||s===null||c===null)return!0;if(!H(e,r))return!1;if(a===o)return s<c;let l=new Set([a]),u=[a];for(;u.length>0;){let e=u.pop();if(!e)break;for(let t of e.successors){if(t.to===o)return!0;l.has(t.to)||(l.add(t.to),u.push(t.to))}}return!1},Ul=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),Fde=new Set([...Ul,`find`,`findIndex`,`sort`]),Wl=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),Gl=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),Kl=new Set([...Gl,`Map`,`Set`]),ql=(e,t,n)=>{let r=P(e);return E(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},Jl=(e,t)=>{let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=k(n);return!!((r===`from`||r===`of`)&&ql(n.object,`Array`,t))},Ide=(e,t)=>{let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=k(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&ql(n.object,`Object`,t))},Yl=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ArrayExpression`))return r.elements.length===0;if(E(r,`NewExpression`)){let e=P(r.callee);return!!(r.arguments.length===0&&E(e,`Identifier`)&&Kl.has(e.name)&&t.isGlobalReference(e))}if(E(r,`CallExpression`)){let e=P(r.callee);if(Jl(r,t)){if((E(e,`MemberExpression`)?k(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!E(i,`SpreadElement`)&&Yl(i,t,n))}return!!(E(e,`MemberExpression`)&&k(e)!==`concat`&&Wl.has(k(e)??``)&&Yl(e.object,t,n))}if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!E(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Yl(i.initializer,t,n))},Xl=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ArrayExpression`))return!0;if(E(r,`NewExpression`)){let e=P(r.callee);return!!(E(e,`Identifier`)&&Gl.has(e.name)&&t.isGlobalReference(e))}if(E(r,`CallExpression`)){if(Jl(r,t)||Ide(r,t))return!0;let e=P(r.callee);return!!(E(e,`MemberExpression`)&&Wl.has(k(e)??``)&&Xl(e.object,t,n))}if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!E(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Xl(i.initializer,t,n))},Zl=(e,t,n=new Set)=>{let r=P(e);if(!E(r,`NewExpression`)){if(!E(r,`Identifier`))return Xl(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!E(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Zl(e.initializer,t,n))}let i=P(r.callee);return!!(E(i,`Identifier`)&&Kl.has(i.name)&&t.isGlobalReference(i))},Ql=(e,t,n)=>{let r=P(e.callee);if(!E(r,`MemberExpression`))return!1;let i=k(r);if(i===`from`&&ql(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!E(t,`SpreadElement`)&&!Yl(t,n))}return!!(i&&Fde.has(i)&&e.arguments[0]===t&&!Yl(r.object,n)&&(i===`forEach`?Zl(r.object,n):Xl(r.object,n)))},$l=(e,t)=>{let n=P(e.callee);return!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)?!1:E(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:Ul.has(n.property.name)&&e.arguments[0]===t},eu=e=>{let t=e.parent;return!!(E(t,`CallExpression`)&&$l(t,e))},Lde=new Set([`then`,`catch`,`finally`]),tu=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&Lde.has(e.property.name)&&P(e.object).type===`CallExpression`,nu=e=>{let t=e.parent;for(;t&&yn.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>P(t)===e)?null:tu(P(t.callee))?t:null},ru=(e,t,n)=>{let r=new Set([e]),i=new Map,a=new Set,o=new Set,s=[e],c=e=>{if(e.type!==`Identifier`)return null;let t=n?.symbolFor(e);return t?`symbol:${String(t.id)}`:`name:${e.name}`},l=e=>{let t=e&&P(e);!w(t)||r.has(t)||(r.add(t),s.push(t))};for(;s.length>0;){let e=s.pop();if(!e)break;D(e,n=>{if(n!==e&&w(n)){if(n.type===`FunctionDeclaration`&&n.id?.type===`Identifier`){let e=c(n.id);e&&i.set(e,n)}return!1}if(n.type===`VariableDeclarator`&&n.id.type===`Identifier`){let e=n.init?P(n.init):null;if(w(e)){let t=c(n.id);t&&i.set(t,e)}return}if(n.type===`AssignmentExpression`){let e=P(n.left);if(e.type===`Identifier`){let t=c(e);t&&o.add(t)}return}if(n.type!==`CallExpression`)return;let r=P(n.callee);if(w(r)){l(r);return}if(r.type===`Identifier`){let e=c(r);e&&a.add(e);return}if(t&&tu(r))for(let e of n.arguments??[])l(e)});for(let e of a)o.has(e)||l(i.get(e))}return r},iu=(e,t)=>ru(e,!0,t),au=(e,t)=>ru(e,!1,t),Rde=(e,t)=>{let n=new Set,r=[e],i=new Set,a=e=>{!e||!w(e)||e.generator||n.has(e)||(n.add(e),r.push(e))};for(w(e)&&!e.generator&&n.add(e);r.length>0;){let e=r.pop();!e||i.has(e)||(i.add(e),D(e,n=>{if(n!==e&&w(n))return!1;if(n.type===`CallExpression`){a(y(n.callee,t));for(let e of n.arguments)e.type===`SpreadElement`||!Ql(n,e,t)||a(y(e,t))}}))}return n},ou=e=>{let t=M(e);return t?qs(t):null},su=e=>{let t=e.parent;for(;t;){if(E(t,`VariableDeclarator`))return t;if(E(t,`FunctionDeclaration`)||E(t,`FunctionExpression`)||E(t,`ArrowFunctionExpression`)||E(t,`Program`))return null;t=t.parent??null}return null},zde=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),cu=new Set([`useMemo`,`useState`]),Bde=new Set([`startTransition`]),lu=(e,t)=>{let n=P(e);return!E(n,`MemberExpression`)||n.computed||!E(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!E(n.property,`Identifier`)?!1:n.property.name===`from`},Vde=(e,t)=>{let n=P(e);if(!E(n,`Identifier`))return!1;let r=T(n,n.name);if(!r?.initializer)return!1;let i=su(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&E(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&lu(i.init,t))},uu=(e,t,n=new Set)=>{let r=P(e);if(!E(r,`Identifier`))return!1;if(r.name===`Array`&&t.isGlobalReference(r))return!0;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)?!1:(n.add(i.id),uu(i.initializer,t,n))},du=(e,t,n,r)=>{let i=P(e);if(E(i,`ArrayExpression`))return!0;if(E(i,`Identifier`)){let e=N(i,t);return!!(e?.kind===`const`&&e.initializer&&!de(i,r,n,t)&&du(e.initializer,t,n,r))}if(E(i,`NewExpression`))return uu(i.callee,t);if(!E(i,`CallExpression`))return!1;let a=P(i.callee);if(uu(a,t))return!0;if(!E(a,`MemberExpression`))return!1;let o=P(a.object);return!!(E(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&E(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},fu=(e,t,r={})=>{let i=b(e),a=i.parent;if(E(a,`NewExpression`)){let e=P(a.callee);return!!(t&&a.arguments?.[0]===i&&E(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return E(a,`CallExpression`)?a.callee===i||(t?n(a,cu,t,{allowGlobalReactNamespace:!0}):Yn(a,cu))&&a.arguments?.[0]===i||t&&n(a,Bde,t,{allowGlobalReactNamespace:!0})&&a.arguments?.[0]===i||t&&a.arguments?.[1]===i&&(lu(a.callee,t)||Vde(a.callee,t))?!0:E(a.callee,`MemberExpression`)&&!a.callee.computed&&E(a.callee.property,`Identifier`)&&zde.has(a.callee.property.name)&&a.arguments?.[0]===i&&(!r.requireProvenSynchronousCallbackReceiver||!!(t&&du(a.callee.object,t,a,a.callee.property.name))):!1},pu=new WeakMap,J=(e,t)=>{let n=M(e),r=n??e,i=pu.get(t);i||(i=new WeakMap,pu.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(qs(n))return i.set(r,n),n;if(!fu(n,t))return i.set(r,null),null;n=M(n)}return i.set(r,null),null},mu=e=>E(e,`JSXAttribute`)&&E(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),hu=e=>e?Ve(e)?!0:E(e,`BlockStatement`)?hu(e.body.at(-1)):E(e,`ContinueStatement`)||E(e,`BreakStatement`):!1,Hde=new Set([`createRef`,`useRef`]),gu=(e,t,r={})=>{let i=E(e,`MemberExpression`)?P(e.object):null;if(!E(e,`MemberExpression`)||k(e)!==`current`||!E(i,`Identifier`))return null;let a=N(i,t);if(!a?.initializer)return null;let o=P(a.initializer);return E(o,`CallExpression`)&&n(o,r.includeCreateRef?Hde:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:r.allowUnboundBareCalls,resolveNamedAliases:r.resolveNamedAliases})?a:null},_u=(e,t,n=new Set)=>{let r=P(e),i=gu(r,t);if(i)return i;if(!E(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=Ds(a);return o?(n.add(a.id),_u(o,t,n)):null},vu=(e,t)=>_u(e,t)!==null,yu=(e,t)=>{D(e,e=>{if(w(e))return!1;t(e)})},bu=e=>!E(e,`CallExpression`)||!E(e.callee,`MemberExpression`)||!E(e.callee.property,`Identifier`)?null:e.callee.property.name,Ude=e=>{let t=bu(e);return t!==null&&Kt.has(t)},xu=e=>{let t=bu(e);return t!==null&&(Kt.has(t)||t===`observe`)?t:null},Su=e=>xu(e)!==null,Cu=e=>{let t=bu(e);return t===null||!Lte.has(t)?!1:t===`listen`?(E(e,`CallExpression`)?e.arguments??[]:[]).some(e=>E(e,`ArrowFunctionExpression`)||E(e,`FunctionExpression`)):!0},Wde=e=>{let t=Ue(e);if(!t||typeof t.source.value!=`string`||t.importKind===`type`||E(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`)return null;if(E(e.declarationNode,`ImportNamespaceSpecifier`))return{source:t.source.value,importedName:null,isNamespace:!0};if(E(e.declarationNode,`ImportDefaultSpecifier`))return{source:t.source.value,importedName:`default`,isNamespace:!1};let n=en(e.declarationNode);return n?{source:t.source.value,importedName:n,isNamespace:!1}:null},Gde=(e,t,n)=>{let r=t.symbolFor(e);if(!r||n.has(r.id))return null;if(r.kind===`import`)return Wde(r);if(r.kind!==`const`||!r.initializer)return null;if(n.add(r.id),E(r.declarationNode,`VariableDeclarator`)&&E(r.declarationNode.id,`ObjectPattern`)){let e=wu(r.initializer,t,n);if(!e||!e.isNamespace&&e.importedName!==`default`)return null;for(let t of r.declarationNode.id.properties){if(!E(t,`Property`)||(E(t.value,`AssignmentPattern`)?t.value.left:t.value)!==r.bindingIdentifier)continue;let n=A(t,{allowComputedString:!0});return n?{source:e.source,importedName:n,isNamespace:!1}:null}return null}return wu(r.initializer,t,n)},wu=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Identifier`))return Gde(r,t,n);if(!E(r,`MemberExpression`))return null;let i=k(r);if(!i)return null;let a=wu(r.object,t,n);return!a||!a.isNamespace&&a.importedName!==`default`?null:{source:a.source,importedName:i,isNamespace:!1}},Tu=e=>{let t=e,n=t.parent;for(;n;){if(E(n,`AssignmentExpression`))return n.left===t;if(E(n,`UpdateExpression`)||E(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(E(n,`ForInStatement`)||E(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},Kde=new Set([...Ct,`useInsertionEffect`]),qde=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),Jde=new Set([`@react-native-community/netinfo`]),Yde=new Set([`events`,`node:events`,`react-native`]),Eu=new WeakMap,Xde=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),Zde=new Set([`clear`,`delete`,`set`]),Du=new WeakMap,Ou=new WeakMap,ku=new WeakMap,Au=new WeakMap,ju={subscribe:`subscription`,timer:`timer`,socket:`connection`},Mu=(e,t)=>{if(Vn(e,Kde,t.scopes))return!0;let n=P(e.callee);return!!(E(n,`Identifier`)&&qde.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},Nu=e=>E(e,`NewExpression`)&&E(e.callee,`Identifier`)&&m.has(e.callee.name),Y=(e,t,n=new Set,r=new Map)=>{if(!e)return null;let i=P(e);if(E(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(!e)return t.scopes.isGlobalReference(i)?`global:${i.name}`:null;if(n.has(e.id))return`symbol:${e.id}`;n.add(e.id);let a=r.get(e.id);if(a)return Y(a,t,n,r);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=E(o,`Property`)?A(o):null;if(l&&E(s,`ObjectPattern`)&&E(c,`VariableDeclarator`)&&c.id===s){let i=Y(c.init,t,n,r);return i?`${i}.${l}`:`symbol:${e.id}`}let u=e.initializer?P(e.initializer):null;return e.kind===`const`&&u&&(E(u,`Identifier`)||E(u,`MemberExpression`))?Y(u,t,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(E(i,`MemberExpression`)&&!i.computed){if(!E(i.property,`Identifier`))return null;let e=Y(i.object,t,n,r);return e?`${e}.${i.property.name}`:null}if(E(i,`ThisExpression`))return`this`;if(E(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`||typeof i.value==`boolean`))return`literal:${String(i.value)}`;if(w(i)){let e=S(i);return e===null?null:`function:${e}`}return null},Pu=(e,t)=>{if(!e)return null;let n=P(e),r=[];for(;E(n,`MemberExpression`)&&!n.computed;){if(!E(n.property,`Identifier`))return null;r.unshift(n.property.name),n=P(n.object)}if(!E(n,`Identifier`))return null;let i=t.scopes.symbolFor(n);if(i&&i.references.every(e=>e.flag===`read`)){let e=i.bindingIdentifier,n=[],a=e.parent;if(E(a,`ArrayPattern`)){let t=a.elements.findIndex(t=>t===e);t>=0&&(n.push(t),e=a)}else if(E(a,`Property`)&&E(a.parent,`ObjectPattern`)){let t=A(a);t&&(n.push(t),e=a.parent)}let o=e.parent,s=o?.parent,c=s?.parent;if(n.length>0&&E(o,`VariableDeclarator`)&&o.id===e&&E(s,`VariableDeclaration`)&&s.declarations.length===1&&E(c,`ForOfStatement`)&&c.left===s&&c.await!==!0){let e=dd(c.right,t);if(e){let i=P(c.right),a=E(i,`Identifier`)?t.scopes.symbolFor(i):null,o=a?.initializer?P(a.initializer):null,s=E(o,`ArrayExpression`)?o.elements.map(e=>{let t=e&&j(e)?e:null;for(let e of n){let n=t?P(t):null;if(typeof e==`number`&&E(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&j(r)?r:null}else if(typeof e==`string`&&E(n,`ObjectExpression`)){let r=n.properties.find(t=>E(t,`Property`)&&A(t)===e);t=E(r,`Property`)&&j(r.value)?r.value:null}else t=null}return t}):void 0;return s?.every(e=>{if(!e)return!0;let r=P(e),i=e=>{if(!E(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!!(n&&(n.kind===`const`||n.kind===`function`||n.kind===`import`||n.kind===`parameter`)&&n.references.every(e=>e.flag===`read`))};return E(r,`Literal`)||E(r,`ArrayExpression`)||E(r,`ObjectExpression`)||w(r)?!0:i(r)||n[0]===1&&E(r,`CallExpression`)&&i(P(r.callee))})===!0?{collectionKey:e,projectedValues:s,projectionKey:[...n.length>0?n.map(e=>`binding:${String(e)}`):[`binding:value`],...r].join(`.`)}:null}}}let a=i?.initializer?P(i.initializer):null;if(i?.kind===`const`&&E(a,`CallExpression`)){let e=Y(a.callee,t),n=[];for(let e of a.arguments){if(!j(e))continue;let r=Pu(e,t);if(r){n.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=Y(e,t);i&&n.push({collectionKey:null,identityKey:i})}let i=new Set(n.flatMap(({collectionKey:e})=>e===null?[]:[e]));if(e&&n.length===a.arguments.length&&i.size===1)return{collectionKey:[...i][0],projectionKey:[`call:${e}:${n.map(({identityKey:e})=>e).join(`:`)}`,...r].join(`.`)}}if(!i||i.kind!==`parameter`)return null;let o=i.bindingIdentifier.parent;for(;o&&!w(o);)o=o.parent;if(!o||!w(o))return null;let s=Ad(o);if(!s)return null;let c=P(s.callee);if(!E(c,`MemberExpression`))return null;let l=Y(c.object,t);if(!l)return null;let u=o.params[0],d=E(i.bindingIdentifier.parent,`AssignmentPattern`)&&i.bindingIdentifier.parent.left===i.bindingIdentifier?i.bindingIdentifier.parent:null,f=E(u,`ObjectPattern`)?Ti(i.bindingIdentifier):null,p=d?Y(d.right,t):null;if(d&&!p)return null;let m=u===i.bindingIdentifier?`value`:f&&p?`${f}=default:${p}`:f;return m?{collectionKey:l,projectionKey:[m,...r].join(`.`)}:null},Fu=(e,t)=>{let n=Pu(e,t);return n?`forEach:${n.collectionKey}:${n.projectionKey}`:null},Iu=(e,t)=>Fu(e,t)??Y(e,t),Lu=(e,t)=>{if(!e)return null;let n=Iu(e,t);if(n)return n;let r=P(e);if(E(r,`CallExpression`)){let e=Iu(r.callee,t),n=r.arguments.flatMap(e=>{if(!j(e))return[];let n=Lu(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!E(r,`BinaryExpression`)&&!E(r,`LogicalExpression`))return null;let i=Lu(r.left,t),a=Lu(r.right,t);return i&&a?`${r.type}:${r.operator}:${i}:${a}`:null},Qde=(e,t)=>{let n=P(e);if(E(n,`CallExpression`)&&Lu(n,t))return n;if(!E(n,`Identifier`))return Od(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?P(r.initializer):null;return!r||!i?Od(n,t):E(i,`ObjectExpression`)?r.kind===`const`&&r.references.every(e=>{if(e.flag!==`read`||Tu(e.identifier))return!1;let t=b(e.identifier),n=t.parent;if(!E(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=P(n.callee);if(!E(r,`MemberExpression`))return!1;let i=A(r);return i===`addEventListener`||i===`removeEventListener`})?i:null:E(i,`Identifier`)||E(i,`MemberExpression`)?null:Od(n,t)},Ru=(e,t,n)=>{let r=Pu(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>Cl(e?P(e):null,{allowIndeterminateEntries:!0}));if(e.every(e=>e===!1))return`capture:false`;if(e.every(e=>e===!0))return`capture:true`}let i=e?Qde(e,t):null;if(e&&!i)return null;let a=Cl(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=P(i);if(!E(o,`ObjectExpression`)){let e=n?Lu(o,t):null;return e?`options:${e}`:null}let s=`capture:false`;for(let e of o.properties??[]){if(!E(e,`Property`)){s=null;continue}let n=A(e);if(n===null||!e.computed&&n===`__proto__`){s=null;continue}if(n===`capture`){let n=Lu(e.value,t);s=n?`capture-value:${n}`:null}}return s},$de=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`ObjectExpression`))return Pu(n,t);let r=null;for(let e of n.properties??[]){if(!E(e,`Property`)){r=null;continue}let n=A(e);if(n===null||!e.computed&&n===`__proto__`){r=null;continue}n===`capture`&&(r=Pu(e.value,t))}return r},zu=(e,t,n,r=!1)=>{let i=Ru(e,n,r);return i!==null&&i===Ru(t,n,r)},Bu=(e,t,n=new Set)=>{let r=_u(e,t.scopes);if(r)return r;let i=P(e);for(;E(i,`MemberExpression`);){let e=_u(i,t.scopes)??gu(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=P(i.object)}if(E(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(e?.kind===`const`&&e.initializer&&!n.has(e.id)){let r=new Set(n);return r.add(e.id),Bu(e.initializer,t,r)}}return null},Vu=(e,t)=>Bu(e,t)!==null,Hu=(e,t)=>{let n=b(e),r=n.parent;if(E(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&Vu(r.left,t)){let e=Y(r.left,t);return e?{anchor:r,key:e}:null}if(!E(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=A(r),a=r.parent;if(!i||!E(a,`ObjectExpression`))return null;let o=b(a),s=o.parent;if(!E(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!Vu(s.left,t))return null;let c=Y(s.left,t);return c?{anchor:s,key:`${c}.${i}`}:null},Uu=(e,t)=>{let n=b(e),r=Hu(n,t);if(r)return r;let i=n.parent;if(!E(i,`VariableDeclarator`)||i.init!==n||!E(i.id,`Identifier`)||!E(i.parent,`VariableDeclaration`)||i.parent.kind!==`const`)return null;let a=t.scopes.symbolFor(i.id);return a?a.references.flatMap(e=>{let n=Hu(e.identifier,t);return n?[n]:[]}).find(n=>ad(e,[n.anchor],t))??null:null},Wu=(e,t,n)=>{let r=A(e),i=P(e.object),a=E(i,`Identifier`)?n.scopes.symbolFor(i):null,o=M(t);if(!r||!a||!o||!w(o))return null;for(let e of a.references){let i=b(e.identifier),a=i.parent;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==i||!Vu(a.left,n)||M(a)!==o||!kf(t,[a],o,n))continue;let s=Y(a.left,n);if(s)return{anchor:a,key:`${s}.${r}`}}return null},efe=(e,t)=>{let n=Uu(e,t);if(n)return n;let r=b(e),i=r.parent;return E(i,`AssignmentExpression`)&&i.right===r&&E(i.left,`MemberExpression`)?Wu(i.left,e,t):null},Gu=(e,t,r,i=new Set)=>{let a=P(e);if(E(a,`MemberExpression`)){if(Vu(a,r)){let e=Y(a,r);return e?new Set([e]):null}let e=A(a);if(!e)return null;let n=Gu(a.object,t,r,i);return n&&n.size>0?new Set([...n].map(t=>`${t}.${e}`)):null}if(E(a,`ConditionalExpression`)){let e=Gu(a.consequent,t,r,i),n=Gu(a.alternate,t,r,i);return e&&n?new Set([...e,...n]):null}if(!E(a,`Identifier`))return null;let o=r.scopes.symbolFor(a);if(!o||i.has(o.id))return null;let s=new Set(i);s.add(o.id);let c=o.initializer?P(o.initializer):null;if(E(c,`CallExpression`)&&n(c,`useRef`,r.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){let e=Y(a,r);return e?new Set([e]):null}if(o.kind===`const`&&o.initializer){let e=Gu(o.initializer,t,r,s);if(e)return e}let l=M(t),u=o.references.flatMap(e=>{let n=b(e.identifier),i=n.parent;if(!l||!E(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==n||M(i)!==l||!Vu(i.left,r)||!kf(t,[i],l,r))return[];let a=Y(i.left,r);return a?[a]:[]});if(u.length>0)return new Set(u);if(o.kind!==`parameter`)return null;let d=M(o.bindingIdentifier);if(!d||!w(d))return null;let f=d.params.findIndex(e=>P(e)===o.bindingIdentifier),p=Ys(d),m=p?r.scopes.symbolFor(p):null;if(f<0||!m)return null;let h=[];for(let e of m.references){let t=b(e.identifier),n=t.parent;if(E(n,`CallExpression`)&&n.callee===t){let e=n.arguments[f];if(!e||!j(e))return null;let t=Gu(e,n,r,s);if(!t||t.size===0)return null;h.push(t);continue}let i=t.parent,a=i?.parent;if(!(E(i,`ArrayExpression`)&&E(a,`CallExpression`)&&a.arguments?.[1]===i))return null}return h.length>0?new Set(h.flatMap(e=>[...e])):null},tfe=(e,t)=>{let n=efe(e,t);if(n)return new Set([n.key]);let r=b(e),i=r.parent;return!E(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r?new Set:Gu(i.left,i,t)??new Set},Ku=(e,t,n=!1)=>{let r=b(e),i=r.parent;if(E(i,`VariableDeclarator`)&&i.init===r){let r=Y(i.id,t);return n?Uu(e,t)?.key??r:r}if(E(i,`AssignmentExpression`)&&i.right===r){if(n&&E(i.left,`MemberExpression`)){let n=Wu(i.left,e,t);if(n)return n.key}return Y(i.left,t)}return n?Hu(r,t)?.key??null:null},qu=(e,t,n)=>e!==null&&(e===t.handleKey||e===Ku(t.node,n)),Ju=(e,t)=>{let n=P(e);if(E(n,`MemberExpression`))return Ju(n.object,t);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?Ue(r):null;return typeof i?.source.value==`string`?i.source.value:null},nfe=(e,t)=>{if(e.kind!==`subscribe`||!E(e.node,`CallExpression`))return!1;if(Cu(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||td(e.node,`addListener`,t))return!1;let n=P(e.node.callee);if(!E(n,`MemberExpression`))return!1;let r=Ju(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?Jde.has(r):r!==`react-native`;let i=P(n.object),a=Od(i,t),o=a&&E(a,`NewExpression`)?Ju(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&Yde.has(o))return!1;let s=E(i,`Identifier`)?t.scopes.symbolFor(i):null,c=E(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!E(i,`Identifier`)||c||s!==null&&(ks(s)!==null||Ds(s)!==null)?Is(i,t.scopes).length===0:!1},rfe=(e,t)=>{let n=P(e),r=wu(n,t.scopes);return E(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},Yu=(e,t,n=new Set)=>{let r=P(e);if(E(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;if(r.name===`navigation`)return!0;n.add(e.id);let i=e.initializer?P(e.initializer):null,a=E(i,`CallExpression`)?wu(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&Yu(i,t,n))}if(!E(r,`CallExpression`))return!1;let i=P(r.callee);return!!(E(i,`MemberExpression`)&&!i.computed&&E(i.property,`Identifier`)&&i.property.name===`getParent`&&Yu(i.object,t,n))},Xu=(e,t)=>{if(nfe(e,t))return!0;if(!E(e.node,`CallExpression`))return!1;let n=P(e.node.callee);return!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&rfe(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&Yu(n.object,t)},Zu=(e,t,n)=>{let r=P(e);if(!E(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&Y(r,n)===t.handleKey&&!i.references.some(e=>Tu(e.identifier)))},ife=(e,t,n)=>Zu(e,t,n)&&Xu(t,n),Qu=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!ff.has(t)||n.receiverKey===null||e!==n.receiverKey||!E(n.node,`CallExpression`))return!1;let i=P(n.node.callee);if(!E(i,`MemberExpression`))return!1;let a=Od(i.object,r);return a!==null&&Nu(a)},$u=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(E(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id)||!e.references.every(e=>e.flag===`read`&&!Tu(e.identifier)))return null;let i=Ds(e);if(!i)return`symbol:${e.id}`;let a=P(i);if(!E(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(n);return o.add(e.id),$u(a,t,o)??`symbol:${e.id}`}if(w(r)){let e=S(r);return e===null?null:`function:${e}`}return null},afe=(e,t,n)=>{if(!e)return null;let r=P(e);if(!E(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!E(i.declarationNode,`VariableDeclarator`))return null;let a=i.references.filter(e=>e.flag!==`read`||Tu(e.identifier));if(a.length!==1)return null;let o=b(a[0].identifier),s=o.parent,c=M(t);return!E(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!kf(t,[s],c,n)?null:`symbol:${i.id}`},ed=(e,t,r=new Set)=>{let i=P(e);if(Is(i,t.scopes).includes(`MediaQueryList`))return!0;if(E(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(!e||r.has(e.id))return!1;let n=Ds(e);if(!n)return!1;let a=new Set(r);return a.add(e.id),ed(n,t,a)}if(!E(i,`CallExpression`)||!n(i,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let a=Kn(i,t.scopes);return!!(a&&Ne(a,t.scopes,e=>{let n=P(e);return E(n,`Literal`)&&n.value===null||E(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||ed(n,t,new Set(r))},t.cfg,`every`))},td=(e,t,n)=>{let r=P(e.callee);return e.arguments?.length===1&&E(r,`MemberExpression`)&&!r.computed&&E(r.property,`Identifier`)&&r.property.name===t&&ed(r.object,n)},nd=(e,t)=>{let n=P(e.callee);return!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:td(e,`addListener`,t)?{receiverKey:$u(n.object,t)??afe(n.object,e,t),registrationVerbName:n.property.name,eventKey:null,handlerKey:$u(e.arguments?.[0],t)}:{receiverKey:Iu(n.object,t),registrationVerbName:n.property.name,eventKey:Iu(e.arguments?.[0],t),handlerKey:Iu(e.arguments?.[1],t)}},rd=e=>{if(e.kind!==`subscribe`||!E(e.node,`CallExpression`))return null;let t=e.node.arguments?.length===1?e.node.arguments[0]:e.node.arguments?.[1];return t&&j(t)?t:null},id=(e,t)=>{let n=e;for(;E(n,`CallExpression`);){let e=E(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!E(e,`MemberExpression`)||e.computed||!E(e.property,`Identifier`))return null;if(e.property.name===`channel`)return Iu(e.object,t);n=P(e.object)}return null},ofe=(e,t)=>{let n=e,r=b(n);for(;E(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=b(r.parent),t=e.parent;if(!E(t,`CallExpression`)||t.callee!==e)break;n=t,r=b(n)}return n===e||xu(n)!==`subscribe`||id(n,t)===null?null:Ku(n,t,!0)},sfe=(e,t)=>{let n=iu(e,t.scopes),r=[...n];for(;r.length>0;){let e=r.pop();!e||!w(e)||D(e.body,i=>{if(i!==e.body&&w(i))return!1;if(!E(i,`CallExpression`))return;let a=null;if(E(i.callee,`Identifier`)&&et.has(i.callee.name)){let e=i.arguments?.[0];a=e&&j(e)?e:null}else{let e=i.arguments?.find(e=>j(e)&&nu(e)===i);e&&j(e)&&(a=e);let n=xu(i);n!==null&&(a=rd({kind:`subscribe`,node:i,resourceName:n,handleKey:null,...nd(i,t)}))}let o=a?y(a,t.scopes):null;!o||n.has(o)||(n.add(o),r.push(o))})}return n},cfe=(e,t)=>{let n=[];if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`))return n;let r=null;if(E(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];E(n,`ReturnStatement`)&&n.argument&&(r=n.argument)}let i=sfe(e,t);return D(e,a=>{if(a!==e&&w(a)&&(a===r||!i.has(a)&&!eu(a)))return!1;if(Nu(a)){n.push({kind:`socket`,node:a,resourceName:E(a.callee,`Identifier`)?a.callee.name:`WebSocket`,handleKey:Ku(a,t,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!E(a,`CallExpression`))return;if(E(a.callee,`Identifier`)&&et.has(a.callee.name)){if(a.callee.name===`setTimeout`&&(Ff(a)||If(a,t)))return;n.push({kind:`timer`,node:a,resourceName:a.callee.name,handleKey:Ku(a,t,!0),receiverKey:null,registrationVerbName:a.callee.name,eventKey:null,handlerKey:null});return}let o=xu(a);if(o!==null){let e=nd(a,t);n.push({kind:`subscribe`,node:a,resourceName:o,handleKey:(o===`on`?ofe(a,t):null)??Ku(a,t,!0),...e})}}),n.filter(e=>H(e.node,t))},ad=(e,t,n)=>{let r=e,i=M(r);for(;i&&eu(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!E(e,`CallExpression`))break;r=e,i=M(r)}return ka(r,t,n,e)},lfe=(e,t,n)=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||!E(e.body,`BlockStatement`))return t;let r=[];return yu(e.body,e=>{E(E(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=S(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=S(r);return i!==null&&i>t&&Cf(r,e,n)});return!ad(e.node,i,n)})},od=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=E(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!Tu(e.identifier));return r&&E(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&E(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},sd=(e,t)=>{if(!e)return!1;let n=P(e),r=new Set;if(D(n,e=>{if(!E(e,`Identifier`))return;let n=t.scopes.symbolFor(e);n&&r.add(n.id)}),r.size===0)return!1;let i=(e,n)=>{let i=!1;return D(e,e=>{if(!E(e,`Identifier`)||n&&!Tu(e))return;let a=t.scopes.symbolFor(e);if(a&&r.has(a.id))return i=!0,!1}),i},a=n.parent;for(;a&&!w(a);){if(E(a,`ForOfStatement`)){let e=P(a.left);if(!E(e,`VariableDeclaration`)&&(i(e,!1)||i(a.body,!0)))return!0}a=a.parent}return!1},cd=(e,t)=>{if(!E(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!E(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!E(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!E(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},ld=(e,t,n)=>{if(!E(e,`Identifier`)||!cd(e,t))return!1;let r=t.scopes.symbolFor(e);return r?n.has(r.id)?!0:(n.add(r.id),r.references.every(e=>{let r=b(e.identifier),i=r.parent;if(E(i,`ForOfStatement`)&&i.right===r||E(i,`MemberExpression`)&&i.object===r&&!i.computed&&E(i.property,`Identifier`)&&i.property.name===`push`&&E(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(E(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return E(i.id,`Identifier`)&&E(e,`VariableDeclaration`)&&e.kind===`const`?ld(i.id,t,n):!1}return!1})):!1},ud=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(!E(r,`Identifier`)||!cd(r,t))return null;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return null;n.add(i.id);let a=i.initializer?P(i.initializer):null,o=e=>{if(!e)return!1;let t=P(e);if(E(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(E(t,`ArrayExpression`))return!0;if(!E(t,`CallExpression`))return!1;let n=P(t.callee);return!!(E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?ld(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:E(a,`Identifier`)?ud(a,t,n):null},dd=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=Eu.get(t);if(i||(i=new Map,Eu.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=ud(e,t);return i.set(r.id,a),a},fd=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(!E(r,`Identifier`)||!cd(r,t))return null;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return null;n.add(i.id);let a=i.initializer?P(i.initializer):null,o=e=>{if(!e)return!1;let t=P(e);return E(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):E(t,`ArrayExpression`)&&t.elements.every(e=>e===null||E(e,`Literal`)&&(e.value===null||typeof e.value==`boolean`||typeof e.value==`number`||typeof e.value==`string`))};return o(a)?ld(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:E(a,`Identifier`)?fd(a,t,n):null},pd=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=od(n,t);if(r)return fd(r.right,t);let i=t.scopes.symbolFor(n);if(!i||i.kind!==`parameter`)return null;let a=i.bindingIdentifier.parent;for(;a&&!w(a);)a=a.parent;if(!a||!w(a))return null;let o=a.parent;if(!E(o,`CallExpression`))return null;let s=P(o.callee);if(E(s,`MemberExpression`)&&!s.computed&&E(s.property,`Identifier`)){if(E(s.object,`Identifier`)&&s.object.name===`Array`&&s.property.name===`from`&&o.arguments?.[1]===a)return Y(o.arguments[0],t);if(o.arguments?.[0]===a)return Y(s.object,t)}return null},ufe=(e,t)=>{let n=od(e,t);return n?Y(n.right,t):pd(e,t)},md=(e,t,n)=>{if(t===null)return;let r=e.get(t);(r===void 0||r<n)&&e.set(t,n)},hd=(e,t,n=1/0,r=new Set)=>{let i=new Map;if(!e)return i;let a=P(e);if(md(i,Y(a,t),n),!E(a,`Identifier`))return i;let o=t.scopes.symbolFor(a);if(!o||r.has(o.id)||!cd(a,t))return i;let s=new Set(r);s.add(o.id);let c=o.initializer?P(o.initializer):null,l=null,u=n;if(E(c,`Identifier`))l=c;else if(E(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&E(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,S(c)??1/0))}else if(E(c,`CallExpression`)){let e=P(c.callee);if(E(e,`MemberExpression`)&&!e.computed&&E(e.property,`Identifier`)){let r=e.property.name,i=E(e.object,`Identifier`)&&e.object.name===`Array`&&t.scopes.isGlobalReference(e.object)&&r===`from`&&c.arguments.length===1,a=(r===`slice`||r===`concat`)&&c.arguments.length===0||r===`toReversed`||r===`toSorted`;if(i){let e=c.arguments[0];l=j(e)?e:null}else a&&(l=e.object);l&&(u=Math.min(n,S(c)??1/0))}}if(!l)return i;for(let[e,n]of hd(l,t,u,s))md(i,e,n);return i},gd=(e,t)=>{let n=od(e,t);if(n)return hd(n.right,t);let r=e?P(e):null;if(!E(r,`Identifier`))return new Map;let i=t.scopes.symbolFor(r);if(!i||i.kind!==`parameter`)return new Map;let a=i.bindingIdentifier.parent;for(;a&&!w(a);)a=a.parent;let o=a?.parent,s=E(o,`CallExpression`)?P(o.callee):null;return E(s,`MemberExpression`)?hd(s.object,t):new Map},_d=(e,t,n)=>{let r=Ed(t.node,n);return r!==null&&gd(e,n).has(r)},vd=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=od(n,t)?.right;return r?dd(r,t):null},yd=(e,t)=>{if(!e)return!1;let n=P(e);return E(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},bd=(e,t)=>{if(!e)return null;let n=P(e);if(!E(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);return!r||r.kind!==`const`&&r.kind!==`function`&&r.kind!==`parameter`||!r.references.every(e=>e.flag===`read`&&!Tu(e.identifier))?null:r.id},xd=(e,t)=>{if(!E(e,`BreakStatement`)&&!E(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(E(n,`LabeledStatement`)&&n.label.name===e.label.name)return z(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(E(n,`ForStatement`)||E(n,`ForInStatement`)||E(n,`ForOfStatement`)||E(n,`WhileStatement`)||E(n,`DoWhileStatement`))return n===t;if(E(e,`BreakStatement`)&&E(n,`SwitchStatement`))return!1;n=n.parent}return!1},Sd=(e,t,n)=>{if(!(E(t.body,`BlockStatement`)?e.parent===t.body:e===t.body))return!1;let r=M(e),i=!1,a=!1;return D(t.body,o=>{if(i||a||o!==t.body&&w(o))return!1;if(E(o,`ReturnStatement`)||E(o,`ThrowStatement`)&&(!r||!Hl(o,e,r,n))||E(o,`BreakStatement`)&&xd(o,t))return i=!0,!1;if(E(o,`ContinueStatement`)&&xd(o,t)&&(S(o)??-1)<(S(e)??0))return a=!0,!1}),!i&&!a},Cd=(e,t,n)=>{let r=b(e).parent;return!!(E(r,`ExpressionStatement`)&&Sd(r,t,n))},wd=(e,t,n)=>{let r=b(e),i=E(r.parent,`ExpressionStatement`)?r.parent:null;if(!i)return null;let a=new Set,o=i.parent;for(;o&&!w(o);){if(E(o,`ForOfStatement`)){if(!Sd(i,o,n))return null;let e=Y(o.right,n);e&&a.add(e),i=o}o=o.parent}return[...t].every(e=>a.has(e))?i:null},dfe=(e,t,n)=>wd(e,t,n)!==null,ffe=e=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!E(t,`CallExpression`))return null;let n=P(t.callee);return!E(n,`MemberExpression`)||n.computed||!E(n.property,`Identifier`)?null:E(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`&&t.arguments?.[1]===e||n.property.name===`map`&&t.arguments?.[0]===e?t:null},pfe=(e,t)=>{let n=M(e);if(!n||!E(n,`ArrowFunctionExpression`)&&!E(n,`FunctionExpression`))return null;let r=ffe(n);if(!r)return null;if(E(n.body,`BlockStatement`)){let r=b(e),i=r.parent,a=i?.parent;if(!E(i,`VariableDeclarator`)||i.init!==r||!E(i.id,`Identifier`)||!E(a,`VariableDeclaration`)||a.kind!==`const`||a.parent!==n.body)return null;let o=[];D(n.body,e=>{if(e!==n.body&&w(e))return!1;E(e,`ReturnStatement`)&&o.push(e)});let s=o[0],c=n.body.body??[],l=E(s,`ReturnStatement`)&&s.argument?P(s.argument):null,u=t.scopes.symbolFor(i.id);if(o.length!==1||c[c.length-1]!==s||!E(l,`Identifier`)||!u||t.scopes.symbolFor(l)?.id!==u.id||!ad(e,[s],t))return null}else if(b(e)!==n.body)return null;let i=b(r),a=i.parent;return E(a,`VariableDeclarator`)&&a.init===i?Y(a.id,t):null},Td=(e,t)=>{let n=b(e),r=n.parent,i=E(r,`CallExpression`)?P(r.callee):null;if(!E(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!E(i,`MemberExpression`)||i.computed||!E(i.object,`Identifier`)||!E(i.property,`Identifier`)||i.property.name!==`push`||!cd(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?P(a.initializer):null;return a&&E(o,`ArrayExpression`)&&(o.elements?.length??0)===0?a:null},Ed=(e,t)=>{let n=Td(e,t);if(n)return`symbol:${n.id}`;let r=pfe(e,t);if(r!==null)return r;let i=e,a=i.parent;for(;a;){if(w(a))return null;if(E(a,`VariableDeclarator`)&&a.init===i)return Y(a.id,t);i=a,a=i.parent}return null},Dd=(e,t)=>{if(!E(e.node,`CallExpression`))return null;let n=P(e.node.callee);if(!E(n,`MemberExpression`)||n.computed)return null;let r=P(n.object);if(!cd(r,t))return null;let i=t.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=b(e.identifier),n=t.parent;if(!E(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=P(n.callee);return E(r,`MemberExpression`)&&!r.computed&&E(r.object,`Identifier`)&&E(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(M(o)!==M(e.node)||!ad(e.node,[o],t))return null;let s=P(o.callee);if(!E(s,`MemberExpression`)||!E(s.object,`Identifier`)||!cd(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?P(c.initializer):null;return!c||!E(l,`ArrayExpression`)||(l.elements?.length??0)!==0||M(c.declarationNode)!==M(e.node)?null:c.references.every(e=>{let t=b(e.identifier),n=t.parent;if(E(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!E(r,`MemberExpression`)||r.object!==t||r.computed||!E(r.property,`Identifier`)||!E(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?Y(s.object,t):null},Od=(e,t,n=new Set)=>{if(!e)return null;let r=P(e);if(!E(r,`Identifier`))return r;let i=t.scopes.symbolFor(r),a=(i?.kind===`let`||i?.kind===`var`)&&E(i.declarationNode,`VariableDeclarator`)&&i.declarationNode.id===i.bindingIdentifier&&i.references.every(e=>e.flag===`read`&&!Tu(e.identifier))&&i.scope.symbols.filter(e=>e.name===i.name).length===1,o=i?.kind===`function`&&w(i.declarationNode)?t.scopes.ownScopeFor(i.declarationNode)?.symbols.find(e=>e.name===i.name&&e.declarationNode===i.declarationNode):null,s=i?.kind===`function`&&i.references.every(e=>e.flag===`read`&&!Tu(e.identifier))&&(!o||o.references.every(e=>e.flag===`read`&&!Tu(e.identifier)))&&i.scope.symbols.filter(e=>e.name===i.name).length===1;return!i||i.kind!==`const`&&!a&&!s||!i.initializer||n.has(i.id)?r:(n.add(i.id),Od(i.initializer,t,n))},mfe=(e,t)=>{let n=Od(e,t);return E(n,`ObjectExpression`)?n:null},kd=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!E(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=mfe(n,t);if(!r)return null;for(let e of r.properties??[]){if(!E(e,`Property`)||A(e)!==`signal`)continue;let n=Y(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},Ad=e=>{let t=w(e)?e:M(e);if(!t||!w(t)||t.async||t.generator)return null;let n=t.parent;if(!E(n,`CallExpression`)||n.arguments?.[0]!==t)return null;let r=P(n.callee);return E(r,`MemberExpression`)&&!r.computed&&E(r.property,`Identifier`)&&r.property.name===`forEach`?n:null},jd=e=>{let t=b(e),n=t.parent;return E(n,`CallExpression`)&&n.callee===t?n:null},hfe=(e,t,n)=>{let r=Ys(e);if(!r||Od(r,n)!==e)return null;let i=n.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=jd(e.identifier);return t?[t]:[]});if(a.length!==1||i.references.length!==1)return null;let o=a[0];return M(o)===t&&H(o,n)?o:null},Md=(e,t)=>{if(!E(e,`NewExpression`))return!1;let n=P(e.callee);return E(n,`Identifier`)&&we.has(n.name)&&t.scopes.isGlobalReference(n)},gfe=(e,t)=>{if(!e)return!0;let n=P(e);return E(n,`Literal`)&&n.value===null||E(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},_fe=(e,t,n,r)=>{if(!w(e)||e.async||e.generator||n.receiverKey===null||!E(n.node,`CallExpression`))return null;let i=P(n.node.callee),a=E(i,`MemberExpression`)?P(i.object):null;if(!a||!E(a,`Identifier`))return null;let o=r.scopes.symbolFor(a),s=o?.declarationNode;if(!o||o.kind!==`let`&&o.kind!==`var`||!E(s,`VariableDeclarator`)||s.id!==o.bindingIdentifier||M(s)!==t||!gfe(s.init,r))return null;let c=[];for(let e of o.references){let t=b(e.identifier),n=t.parent;if(E(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){c.push(n);continue}let r=n,i=r?.parent;if(!E(r,`MemberExpression`)||r.object!==t||!E(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(A(r)??``))return null}if(c.length!==1)return null;let l=c[0];if(!l||!Md(P(l.right),r)||M(l)!==e||!Hl(l,n.node,e,r))return null;let u=[],d=S(l);if(d===null||(D(e.body,t=>{if(t!==e.body&&w(t))return!1;if(!E(t,`CallExpression`))return;let i=S(t);i===null||i>=d||!Cf(t,n,r)||u.push(Vd(t,e,n.receiverKey??``,r)??t)}),!Aa(e,u,r)))return null;let f=Ys(e),p=f?r.scopes.symbolFor(f):null;if(!p)return null;let m=[];for(let n of p.references){let i=jd(n.identifier);if(i&&M(i)===t){m.push(i);continue}let a=b(n.identifier),o=a.parent;if(!o||!Md(o,r)||M(o)!==e||!o.arguments.some(e=>e===a))return null}let h=m.length===1?m[0]:null;return h&&H(h,r)?h:null},Nd=(e,t,n,r)=>{let i=M(e);return!i||i===t?e:hfe(i,t,n)??(r?_fe(i,t,r,n):null)??e},vfe=(e,t,n)=>{if(!w(e))return[];let r=Ys(e),i=Y(r,n);if(!i)return[];let a=[];return D(t,e=>{if(e!==t&&w(e))return!1;let o=E(e,`CallExpression`)?e.arguments[1]:null;E(e,`CallExpression`)&&Gn(e)===`addEventListener`&&(Y(o,n)===i||E(o,`Identifier`)&&o.name===r?.name)&&a.push(e)}),a},yfe=(e,t,n)=>{let r=P(e);if(!E(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer?P(i.initializer):null;if(!i||i.kind!==`let`&&i.kind!==`var`||!E(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||!E(a,`Literal`)||a.value!==null||i.scope.symbols.filter(e=>e.name===i.name).length!==1)return null;let o=i.references.filter(e=>Tu(e.identifier));if(o.length!==1)return null;let s=o[0],c=b(s.identifier),l=c.parent;if(!E(l,`AssignmentExpression`)||l.operator!==`=`||l.left!==c||M(l)!==M(t.node)||!ad(t.node,[l],n))return null;let u=P(l.right);return w(u)?u:null},Pd=(e,t,n,r)=>{if(!w(e)||!E(t,`CallExpression`))return null;let i=new Map(r);for(let r=0;r<e.params.length;r+=1){let a=e.params[r],o=t.arguments?.[r],s=E(a,`AssignmentPattern`)?P(a.left):a;if(!E(s,`Identifier`))continue;let c=n.scopes.symbolFor(s),l=c?.references.some(e=>{let t=b(e.identifier),n=t.parent;return E(n,`AssignmentExpression`)&&n.left===t||E(n,`UpdateExpression`)&&n.argument===t||E(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!c||l)return null;if(!o){E(a,`AssignmentPattern`)?i.set(c.id,a.right):s.optional&&i.set(c.id,s);continue}E(o,`SpreadElement`)||i.set(c.id,o)}return i},bfe=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=E(e,`ChainExpression`)?e.expression:e,i=E(r,`CallExpression`)?P(r.callee):null,a=E(r,`CallExpression`)?r.arguments[0]:null,o=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`,s=Ed(t.node,n);if(!E(r,`CallExpression`)||!E(i,`MemberExpression`)||i.computed||!E(i.property,`Identifier`)||i.property.name!==`forEach`||!E(a,`Identifier`)||a.name!==o||!n.scopes.isGlobalReference(a)||s===null||s!==Y(i.object,n))return!1;let c=hd(i.object,n);return c.has(s)&&!xf(t.node,r,c,n)},Fd=(e,t,n,r=new Set,i=new Map,a=!1)=>{if(!w(e)||r.has(e))return!1;r.add(e);let o=!1,s=[];D(e.body,c=>{if(o||c!==e.body&&w(c)&&!eu(c))return!1;let l=E(c,`ChainExpression`)?c.expression:c;if(bfe(c,t,n)){if(a){s.push(c);return}return o=!0,!1}if(Cf(c,t,n,i)){let r=Ad(c),u=E(l,`CallExpression`)?P(l.callee):null,d=E(u,`MemberExpression`)?u.object:u,f=od(d,n),p=ufe(d,n),m=gd(d,n),h=Dd(t,n)??Ed(t.node,n);if(p!==null&&M(c)!==e){let e=M(c);r&&e&&w(e)&&h!==null&&m.has(h)&&Aa(e,[c],n)&&!xf(t.node,c,m,n)&&s.push(r);return}let g=od(E(l,`CallExpression`)?l.arguments?.[0]:null,n)??f;if(!g){if(a){let r=Hd(c,e,t,n,i);s.push(r??c);return}return o=!0,!1}let _=wd(c,t.kind===`subscribe`&&t.registrationVerbName===`addEventListener`&&E(t.node,`CallExpression`)?new Set([P(t.node.callee),t.node.arguments?.[0],t.node.arguments?.[1],t.node.arguments?.[2]].flatMap(e=>{let t=E(e,`MemberExpression`)?Pu(e.object,n):j(e)?Pu(e,n):null;return t?[t.collectionKey]:[]})):new Set,n);!e.async&&!e.generator&&(Cd(c,g,n)||_!==null)&&(h===null||m.size===0||m.has(h)&&!xf(t.node,c,m,n))&&s.push(_??g);return}if(!E(l,`CallExpression`))return;let u=Od(l.callee,n),d=E(u,`Identifier`)?yfe(u,t,n):u?Of(u,n):null,f=d&&w(d)?Pd(d,l,n,i):null;if(d&&w(d)&&f&&!d.async&&!d.generator&&Fd(d,t,n,new Set(r),f,a)){let r=Hd(c,e,t,n,i)??Sfe(c,e,t,n);s.push(r??l)}});let c=b(e.body);return a&&s.some(e=>b(e)===c)?!0:o||Aa(e,s,n)},Id=(e,t,n)=>e.length>0&&e.every(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return!1;let r=Od(e.argument,n);return!!(r&&w(r)&&Fd(r,t,n,new Set,new Map,!0))}),Ld=(e,t,n)=>{let r=P(e);if(!E(r,`CallExpression`))return!1;let i=P(r.callee);if(!E(i,`MemberExpression`)||i.computed||!E(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=P(i.object);if(!E(a,`MemberExpression`)||a.computed||!E(a.property,`Identifier`))return!1;let o=Y(a.object,n);if(o===null||o!==Y(r.arguments?.[0],n))return!1;let s=a.property.name;return Qu(o,s,t,n)?!0:t.kind===`socket`?qu(o,t,n)&&(ff.has(s)||df.has(s)):t.kind===`subscribe`&&qu(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||cn.has(s))},Rd=(e,t,n)=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||e.async)return!1;let r=e=>{if(Ld(e,t,n))return!0;let r=Od(e,n),i=Of(e,n);return r&&Ld(r,t,n)?!0:!!(i&&w(i)&&Fd(i,t,n))};if(!E(e.body,`BlockStatement`))return r(P(e.body));let i=[];return yu(e.body,e=>{E(e,`ReturnStatement`)&&e.argument&&r(P(e.argument))&&i.push(e)}),Aa(e,i,n)},zd=(e,t,n,r=new Map)=>{let i=Y(e,n,new Set,r);if(i!==null&&(i===t||t.startsWith(`${i}.`)))return!0;let a=P(e);if(!E(a,`BinaryExpression`)||a.operator!==`!=`&&a.operator!==`!==`)return!1;let o=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return Y(a.left,n,new Set,r)===t&&o(a.right)||Y(a.right,n,new Set,r)===t&&o(a.left)},Bd=(e,t,n,r)=>{let i=P(e),a=e=>{let t=P(e);if(E(t,`Identifier`)){let e=n.scopes.symbolFor(t),i=e?r.get(e.id):null;return!!(e&&E(i,`Identifier`)&&i.optional&&n.scopes.symbolFor(i)?.id===e.id)}if(E(t,`LogicalExpression`)){let e=a(t.left),n=a(t.right);return t.operator===`&&`?e||n:e&&n}return!1};if(a(i))return!0;if(E(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&mn(P(t))===!1)return!0}if(E(i,`UnaryExpression`)&&i.operator===`!`){let e=P(i.argument);if(E(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&mn(P(i))===!0)return!0}let a=Y(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:zd(i.argument,t,n,r)}if(E(i,`LogicalExpression`)){let e=Bd(i.left,t,n,r),a=Bd(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(E(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?Y(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},Vd=(e,t,n,r,i=new Map)=>{let a=e.parent,o=null;for(;a&&a!==t;){if(E(a,`IfStatement`)){if(!zd(a.test,n,r,i)||!ad(a.consequent,[e],r))return null;o=a;break}a=a.parent}if(w(t)&&E(t.body,`BlockStatement`)){let a=o??e;for(;a.parent&&a.parent!==t.body;)a=a.parent;let s=t.body.body.findIndex(e=>e===a);for(let e=s-1;e>=0;--e){let a=t.body.body[e];if(E(a,`IfStatement`)&&a.alternate===null&&hu(a.consequent)&&Bd(a.test,n,r,i))return a}}return o},Hd=(e,t,n,r,i=new Map)=>n.handleKey===null?null:Vd(e,t,n.handleKey,r,i),xfe=(e,t,n,r)=>{if(!w(t)||n.handleKey===null)return null;let i=e=>{let t=P(e);return E(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e.parent??null,o=null;for(;a&&a!==t&&!(E(a,`IfStatement`)&&z(e,a.consequent)&&(o=i(a.test).map(e=>Y(e,r)).find(e=>e!==null&&e!==n.handleKey)??null,o));)a=a.parent??null;if(!a||!E(a,`IfStatement`)||!o)return null;let s=J(n.node,r.scopes);if(!s){let e=M(n.node);for(;e&&!qs(e);)e=M(e);s=e}if(!s||!w(s))return null;let c=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t)},l=[],u=[];if(D(s.body,e=>{if(!E(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=Y(e.left,r);t===o&&l.push(e),t===n.handleKey&&E(P(e.right),`CallExpression`)&&Gn(P(e.right))===`setTimeout`&&u.push(e)}),l.length===0||u.length===0)return null;let d=Bu(l[0].left,r),f=d?.initializer?P(d.initializer):null,p=E(f,`CallExpression`)&&f.arguments[0]&&j(f.arguments[0])?f.arguments[0]:null;if(!p||!c(p))return null;let m=e=>{if(zd(e,o,r))return!0;let t=!1;return D(e,e=>{if(t)return!1;if(E(e,`MemberExpression`)&&Y(e,r)?.startsWith(`${o}.`))return t=!0,!1}),t},h=()=>{let e=Ys(M(n.node)??n.node),t=e?r.scopes.symbolFor(e):null;return!t||t.references.length===0?!1:t.references.every(e=>{let t=b(e.identifier),n=t.parent;if(!E(n,`CallExpression`)||n.callee!==t)return!1;let i=M(n);if(!i||!w(i))return!1;if(kf(n,l.filter(e=>M(e)===i&&!c(e.right)),i,r))return!0;let a=n.parent??null;for(;a&&a!==i;){if(E(a,`IfStatement`)&&z(n,a.consequent)&&m(a.test))return!0;a=a.parent??null}return!1})};if(!u.every(e=>{let t=M(e);return!t||!w(t)?!1:kf(e,l.filter(e=>M(e)===t&&!c(e.right)),t,r)||h()}))return null;let g=e=>{if(!w(e))return!1;let t=e.parent,i=t?.parent;return!!(E(t,`CallExpression`)&&t.arguments.some(t=>t===e)&&E(i,`AssignmentExpression`)&&Y(i.left,r)===n.handleKey)},_=t=>{let i=M(t);if(!i||!w(i))return!1;if(g(i))return!0;let a=[];return D(i.body,t=>{if(t!==i.body&&w(t))return!1;(t===e||tf(t,n,r))&&a.push(t)}),kf(t,a,i,r)||ad(t,a,r)};return l.every(e=>!c(e.right)||_(e))?a:null},Ud=new WeakMap,Wd=new WeakMap,Sfe=(e,t,n,r)=>{let i=Ud.get(e);if(i||(i=new WeakMap,Ud.set(e,i)),i.has(n.node))return i.get(n.node)??null;let a=Wd.get(e);if(a||(a=new WeakSet,Wd.set(e,a)),a.has(n.node))return null;a.add(n.node);let o=xfe(e,t,n,r);return a.delete(n.node),i.set(n.node,o),o},Gd=(e,t,n)=>{let r=new Set,i=t;for(;i&&i!==n;)r.add(i),i=i.parent??null;let a=e,o=a.parent??null;for(;o&&o!==n;){let e=E(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||E(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||E(o,`LogicalExpression`)&&o.right===a||E(o,`AssignmentPattern`)&&o.right===a||(E(o,`ForStatement`)||E(o,`ForInStatement`)||E(o,`ForOfStatement`)||E(o,`WhileStatement`)||E(o,`DoWhileStatement`))&&o.body===a?a:E(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},Cfe=(e,t,n,r=!1)=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||!E(e.body,`BlockStatement`))return!1;let i=n.cfg.cfgFor(e),a=i?.blockOf(t.node),o=S(t.node);if(!i||!a||o===null)return!1;let s=[];return yu(e.body,c=>{if(!E(c,`CallExpression`))return;let l=S(c),u=Hd(c,e,t,n),d=i.blockOf(c);if(l===null||l>=o||d!==a&&!u&&!r||!u&&Gd(c,t.node,e))return;if(Cf(c,t,n)){s.push(u??c);return}let f=Of(c.callee,n),p=f&&w(f)?Pd(f,c,n,new Map):null;f&&w(f)&&p&&Fd(f,t,n,new Set,p)&&s.push(u??c)}),r?kf(t.node,s,e,n):Aa(e,s,n)},wfe=(e,t,n)=>{let r=M(e);if(!r||!E(r,`ArrowFunctionExpression`)&&!E(r,`FunctionExpression`)&&!E(r,`FunctionDeclaration`))return!1;let i=!1;return D(r.body,a=>{if(i)return!1;if(!E(a,`CallExpression`)||M(a)!==r||!Mu(a,n))return;let o=Kn(a);if(o&&o!==e&&Rd(o,t,n))return i=!0,!1}),i},Tfe=(e,t,n)=>t.handleKey!==null&&wfe(e,t,n)&&Cfe(e,t,n,t.registrationVerbName===`setTimeout`),Kd=(e,t,n,r)=>{let i=P(e);if(E(i,`UnaryExpression`)&&i.operator===`!`)return Kd(i.argument,!t,n,r);if(E(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...Kd(i.left,t,n,r),...Kd(i.right,t,n,r)]:[];if(E(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=mn(i.left),a=mn(i.right),o=e??a,s=e===null?i.left:i.right,c=Y(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:E(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=Y(i,r);return a===null?[]:[{bindingIdentifier:E(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},Efe=(e,t,n)=>{if(!w(e)||e.async)return[];let r=[];D(e.body,i=>{if(i!==e.body&&w(i))return!1;E(i,`IfStatement`)&&!i.alternate&&!Hl(i.consequent,t,e,n)&&kf(t,[i],e,n)&&r.push(...Kd(i.test,!0,i,n))});let i=t,a=i.parent;for(;a&&a!==e;)E(a,`IfStatement`)&&a.consequent===i&&r.push(...Kd(a.test,!1,a,n)),i=a,a=a.parent;return r},Dfe=(e,t,n)=>{if(!E(e,`ReturnStatement`)||!e.argument)return!1;let r=Od(e.argument,n);if(!r||!w(r)||r.async||r.generator)return!1;let i=!1;return D(r.body,e=>{if(i||e!==r.body&&w(e))return!1;if(E(e,`AssignmentExpression`)&&e.operator===`=`&&Y(e.left,n)===t.key&&mn(e.right)===t.value&&n.cfg.isUnconditionalFromEntry(e))return i=!0,!1}),i},Ofe=(e,t,n,r)=>{let i=S(t);if(!w(e)||i===null)return!0;let a=!1;return D(e.body,t=>{if(a||t!==e.body&&w(t))return!1;let o=S(t);if(o===null||o>=i)return;let s=E(t,`AssignmentExpression`)?t.left:E(t,`UpdateExpression`)?t.argument:null;if(s&&Y(s,r)===n.key)return a=!0,!1}),a},kfe=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(E(a,`TryStatement`)&&a.block===i&&a.handler&&Hl(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},Afe=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!E(i.declarationNode,`VariableDeclarator`)||M(i.declarationNode)!==e?!1:i.references.every(e=>{if(!Tu(e.identifier))return!0;let r=b(e.identifier),i=r.parent;return E(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&mn(i.right)===t.value&&n.includes(M(i)??i)})},jfe=(e,t,n,r)=>{if(!w(e))return!0;let i=S(t.guardNode),a=S(n);if(i===null||a===null)return!0;let o=!1;return D(e.body,t=>{if(o||t!==e.body&&w(t))return!1;let s=S(t);if(!(s===null||s<=i||s>=a)&&(E(t,`AwaitExpression`)||E(t,`YieldExpression`)||E(t,`CallExpression`)&&!Ia(t,r.scopes))&&(Hl(t,n,e,r)||kfe(t,n,e,r)))return o=!0,!1}),o},qd=(e,t)=>{let n=gu(P(e),t.scopes),r=n?.initializer?P(n.initializer):null;if(!E(r,`CallExpression`))return null;let i=r.arguments?.[0]?P(r.arguments[0]):null;return!E(i,`Literal`)||typeof i.value!=`number`?null:Y(e,t)},Jd=(e,t)=>{let n=P(e);if(E(n,`LogicalExpression`)&&n.operator===`||`)return Jd(n.left,t)??Jd(n.right,t);if(!E(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=qd(n.left,t),i=qd(n.right,t),a=P(r?n.right:n.left),o=r??i;return o&&E(a,`Identifier`)?o:null},Yd=(e,t,n)=>{if(!w(e))return null;let r=null;return D(e.body,i=>{if(r||i!==e.body&&w(i))return!1;if(!E(i,`IfStatement`)||i.alternate)return;let a=Jd(i.test,n);!a||Hl(i.consequent,t,e,n)||!kf(t,[i],e,n)||(r=a)}),r},Mfe=(e,t,n)=>{if(E(e,`UpdateExpression`)&&Y(e.argument,n)===t)return!0;if(!E(e,`AssignmentExpression`)||Y(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=P(e.right);return E(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},Nfe=(e,t,n)=>{if(!w(e))return!1;let r=!1;return D(e.body,i=>{if(r||i!==e.body&&w(i))return!1;if(Mfe(i,t,n))return r=!0,!1}),r},Xd=(e,t,n)=>e.length>0&&e.every(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return!1;let r=Od(e.argument,n);return!!(r&&w(r)&&Fd(r,t,n))}),Pfe=(e,t)=>{let n=Y(e,t),r=P(e);if(!E(r,`Identifier`))return n;let i=Od(r,t);return i&&i!==r?Y(i,t)??n:n},Ffe=(e,t,n)=>{let r=P(e);if(!E(r,`BinaryExpression`)||r.operator!==`===`&&r.operator!==`==`)return null;let i=[{expression:r.left,value:r.right},{expression:r.right,value:r.left}];for(let{expression:e,value:r}of i){let i=P(e),a=P(r);if(!(!E(i,`MemberExpression`)||i.computed||!E(i.property,`Identifier`)||Pfe(i.object,n)!==t||!E(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},Ife=(e,t,n)=>{if(!w(e)||t.handleKey===null)return!1;let r=t.handleKey.lastIndexOf(`.`);if(r===-1)return!1;let i=t.handleKey.slice(0,r),a=[];D(e.body,r=>{if(r!==e.body&&w(r))return!1;if(!E(r,`IfStatement`)||r.alternate!==null||!hu(r.consequent)||!kf(t.node,[r],e,n))return;let o=Ffe(r.test,i,n);o&&a.push(o)});let o=new Set(a.map(({propertyName:e})=>e));if(o.size!==1)return!1;let s=[...o][0],c=new Set(a.map(({value:e})=>e)),l=J(t.node,n.scopes);if(!l){let e=M(t.node);for(;e&&!qs(e);)e=M(e);l=e}if(!s||!l||!w(l))return!1;let u=new Set,d=!1;return D(l.body,e=>{if(d)return!1;if(!E(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=Y(e.left,n);if(t===`${i}.${s}`)return d=!0,!1;if(t!==i)return;let r=P(e.right);if(E(r,`Literal`)&&r.value===null)return;let a=Od(r,n);if(!a||!E(a,`ObjectExpression`))return d=!0,!1;let o=a.properties.find(e=>E(e,`Property`)&&A(e)===s),c=E(o,`Property`)?P(o.value):null;if(!c||!E(c,`Literal`)||typeof c.value!=`string`)return d=!0,!1;u.add(c.value)}),!d&&u.size>0&&[...u].every(e=>c.has(e))},Lfe=(e,t,n)=>{if(!w(e)||t.handleKey===null)return!1;let r=S(t.node);if(r===null)return!1;let i=e=>{let t=P(e);return E(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e=>{let t=P(e),r=Y(t,n);if(r)return r;if(!E(t,`BinaryExpression`)||t.operator!==`!==`&&t.operator!==`!=`)return null;let i=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=i(t.left)?t.right:i(t.right)?t.left:null;return a?Y(a,n):null},o=e=>{let t=P(e);return E(t,`Literal`)&&t.value===null||E(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},s=e=>{if(!w(e))return!1;let r=e.parent,i=r?.parent;return!!(E(r,`CallExpression`)&&r.arguments.some(t=>t===e)&&Gn(r)===`setTimeout`&&E(i,`AssignmentExpression`)&&Y(i.left,n)===t.handleKey)},c=e=>{let r=M(e);if(!r||!w(r))return!1;let i=[];return D(r.body,a=>{if(a!==r.body&&w(a))return!1;let o=S(a),s=S(e);o!==null&&s!==null&&o<s&&tf(a,t,n)&&i.push(Hd(a,r,t,n)??a)}),kf(e,i,r,n)},l=null,u=null,d=null,f=null;if(D(e.body,o=>{if(l||!E(o,`IfStatement`))return;let s=S(o);if(s===null||s>=r||Hl(o.consequent,t.node,e,n))return;let c=i(o.test),p=c.map(a).filter(e=>e!==null);if(p.includes(t.handleKey??``)){u=p.find(e=>e!==t.handleKey)??null;for(let e of c){let t=P(e);if(!E(t,`BinaryExpression`)||t.operator!==`===`&&t.operator!==`==`)continue;let r=Y(t.left,n),i=Y(t.right,n);if(r&&i){d=r,f=i;break}}u&&d&&f&&(l=o)}}),!l||!u||!d||!f)return!1;let p=J(t.node,n.scopes);if(!p){let e=M(t.node);for(;e&&!qs(e);)e=M(e);p=e}if(!p||!w(p))return!1;let m=[],h=[],g=[],_=[];if(D(p.body,e=>{if(E(e,`AssignmentExpression`)){let r=Y(e.left,n);r===u&&m.push(e),r===d&&h.push(e),r===f&&g.push(e),r===t.handleKey&&E(P(e.right),`CallExpression`)&&Gn(P(e.right))===`setTimeout`&&_.push(e)}E(e,`UpdateExpression`)&&Y(e.argument,n)===f&&g.push(e)}),_.length===0)return!1;let ee=m.length>0?Bu(m[0].left,n)?.initializer:null,v=ee&&E(ee,`CallExpression`)?ee.arguments[0]:null;return!(!v||!j(v)||!o(v)||!_.every(e=>{let t=M(e);return!t||!w(t)?!1:kf(e,m.filter(e=>M(e)===t&&!o(e.right)),t,n)})||m.filter(e=>o(e.right)&&!s(M(e)??e)&&!c(e)).length>0||h.some(e=>Y(e.right,n)!==f)||g.some(e=>!c(e)))},Zd=(e,t,n)=>{let r=t.handleKey;if(!w(e)||r===null)return!1;let i=S(t.node);if(i===null)return!1;let a=!1,o=[];return D(e.body,s=>{if(a||s!==e.body&&w(s))return!1;if(E(s,`IfStatement`)&&!s.alternate&&zd(s.test,r,n)&&!Hl(s.consequent,t.node,e,n)&&kf(t.node,[s],e,n))return a=!0,!1;let c=S(s);if(c===null||c>=i||!tf(s,t,n))return;let l=Hd(s,e,t,n);o.push(l??s)}),a||Lfe(e,t,n)||Ife(e,t,n)||kf(t.node,o,e,n)},Qd=(e,t)=>e.kind===`subscribe`?e.handlerKey??Y(rd(e),t):e.kind!==`timer`||!E(e.node,`CallExpression`)?null:Y(e.node.arguments?.[0],t),$d=(e,t)=>{let n=Ys(e);return new Set([Y(e,t),Y(n,t)].filter(e=>e!==null))},ef=(e,t,n,r)=>Id(n,t,r)&&ad(Nd(t.node,e,r),n,r),tf=(e,t,n)=>{if(Cf(e,t,n))return!0;let r=E(e,`ChainExpression`)?e.expression:e;if(!E(r,`CallExpression`))return!1;let i=Od(r.callee,n),a=w(i)?i:Of(r.callee,n),o=a&&w(a)?Pd(a,r,n,new Map):null;return!!(a&&w(a)&&o&&!a.async&&!a.generator&&Fd(a,t,n,new Set,o,!0))},Rfe=(e,t,n)=>{let r=P(e);if(E(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&E(e.declarationNode,`VariableDeclarator`)&&M(e.declarationNode)===t?e:null}let i=gu(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;E(a,`MemberExpression`);)a=P(a.object);if(!E(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?P(o.initializer):null;return o&&o.kind===`const`&&E(o.declarationNode,`VariableDeclarator`)&&E(s,`ObjectExpression`)&&M(o.declarationNode)===t?o:null},zfe=e=>{let t=e;for(;E(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return b(t)},Bfe=(e,t,n,r)=>t.references.every(t=>{let i=zfe(t.identifier);if(Y(i,r)!==e.handleKey)return E(n.left,`Identifier`);if(!Tu(t.identifier))return!0;let a=i.parent;if(a===n)return!0;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.left!==i)return!1;let o=P(a.right),s=E(o,`Literal`)&&o.value===null||E(o,`Identifier`)&&o.name===`undefined`&&r.scopes.isGlobalReference(o),c=M(a);if(!s||!c||!w(c))return!1;let l=[];return D(c.body,t=>{if(t!==c.body&&w(t))return!1;tf(t,e,r)&&l.push(t)}),kf(a,l,c,r)}),Vfe=(e,t,n)=>{let r=Td(t.node,n);return!!(r&&M(r.declarationNode)===e)},Hfe=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`)return!1;let i=$d(t,r);if(!i.has(Qd(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&M(e.node)===t&&i.has(Qd(e,r)??``));return a.length===1&&a[0]===e},Ufe=(e,t,n,r,i)=>{let a=M(t.node),o=b(t.node),s=o.parent,c=t.handleKey!==null&&E(s,`AssignmentExpression`)&&s.operator===`=`&&s.right===o?Rfe(s.left,e,i):null,l=Vfe(e,t,i);if(t.kind!==`timer`||!a||!w(a)||a===e||a.async||a.generator||!c&&!l||!Id(r,t,i)||c&&E(s,`AssignmentExpression`)&&!Bfe(t,c,s,i))return!1;let u=Hfe(t,a,n,i);if(c&&!u&&!Zd(a,t,i))return!1;let d=t.node.parent;for(;d&&d!==a;){if(c&&(E(d,`ForStatement`)||E(d,`ForInStatement`)||E(d,`ForOfStatement`)||E(d,`WhileStatement`)||E(d,`DoWhileStatement`)))return!1;d=d.parent}let f=Ys(a),p=f?i.scopes.symbolFor(f):null;if(!p||p.references.length===0)return!1;let m=p.references.filter(e=>u&&z(e.identifier,t.node)&&Qd(t,i)===Y(e.identifier,i));if(u&&(m.length!==1||p.references.length!==2))return!1;let h=au(e,i.scopes);return p.references.every(o=>{let s=Y(o.identifier,i);if(m.some(e=>e===o))return!0;let c=n.find(e=>e!==t&&s!==null&&Qd(e,i)===s),l=c?rd(c):null;if(c&&!(l&&w(l)&&l.async)&&ef(e,c,r,i))return!0;let u=jd(o.identifier);if(!u)return!1;let d=M(u);if(!d||!w(d)||d===a||d.async||d.generator)return!1;if(d===e)return ad(Nd(u,e,i),r,i);let f=$d(d,i),p=n.find(e=>{if(e===t)return!1;let n=rd(e),r=n?Od(n,i):null;return f.has(Qd(e,i)??``)||r===d});return p?ef(e,p,r,i):h.has(d)&&ad(Nd(u,e,i),r,i)})},Wfe=(e,t,n,r,i,a)=>{let o=jd(e);if(o){let e=M(o);if(e&&e!==t&&au(r).has(e))return{generationKey:null};let n=e?Yd(e,o,a):null;return n?{generationKey:n}:null}let s=b(e),c=s.parent;if(!E(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!E(c.callee,`Identifier`)||c.callee.name!==`setTimeout`||!a.scopes.isGlobalReference(c.callee))return null;let l={kind:`timer`,node:c,resourceName:c.callee.name,handleKey:Ku(c,a),receiverKey:null,registrationVerbName:c.callee.name,eventKey:null,handlerKey:null},u=Yd(t,n,a);return l.handleKey!==null&&Xd(i,l,a)&&u?{generationKey:u}:null},Gfe=(e,t,n,r)=>{let i=M(t.node),a=b(t.node),o=a.parent;if(t.kind!==`subscribe`&&t.kind!==`timer`||t.handleKey===null||!i||!w(i)||i===e||i.async||i.generator||!E(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==a||!gu(P(o.left),r.scopes)||!au(e).has(i)||!Xd(n,t,r)||!Aa(e,n,r))return!1;let s=n.flatMap(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return[];let t=Od(e.argument,r);return t&&w(t)?[t]:[]}),c=Ys(i),l=c?r.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=l.references.map(a=>Wfe(a.identifier,i,t.node,e,n,r));if(u.some(e=>e===null))return!1;let d=new Set(u.flatMap(e=>e?.generationKey?[e.generationKey]:[]));if(d.size!==1)return!1;let f=d.values().next().value;return typeof f==`string`?[...au(e),...s].some(e=>Nfe(e,f,r)):!1},Kfe=(e,t,n,r)=>{if(Gfe(e,t,n,r))return!0;let i=M(t.node),a=i?nu(i):null;if(t.kind!==`timer`||t.handleKey===null||!i||!w(i)||i===e||i.async||i.generator||!E(t.node,`CallExpression`)||!E(t.node.callee,`Identifier`)||!r.scopes.isGlobalReference(t.node.callee)||!a||!iu(e,r.scopes).has(i)||!ad(a,n,r))return!1;let o=b(t.node),s=o.parent;if(!E(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!E(s.left,`Identifier`))return!1;let c=r.scopes.symbolFor(s.left);if(!c||c.kind!==`let`&&c.kind!==`var`||!E(c.declarationNode,`VariableDeclarator`)||M(c.declarationNode)!==e)return!1;let l=n.flatMap(e=>{if(!E(e,`ReturnStatement`)||!e.argument)return[];let t=Od(e.argument,r);return t&&w(t)?[t]:[]});if(l.length!==n.length)return!1;let u=new Map;for(let e of l){if(!w(e))return!1;let n=[];if(D(e.body,i=>{if(i!==e.body&&w(i))return!1;if(E(i,`CallExpression`)&&E(i.callee,`Identifier`)&&r.scopes.isGlobalReference(i.callee)&&Cf(i,t,r)){let a=Hd(i,e,t,r);n.push({anchor:a??i,call:i,handleGuard:a})}}),!Aa(e,n.map(e=>e.anchor),r))return!1;u.set(e,n)}let d=c.references.filter(e=>Tu(e.identifier)),f=d.some(e=>b(e.identifier).parent===s),p=d.some(e=>{let t=b(e.identifier),n=t.parent;if(n===s)return!1;if(!E(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let i=P(n.right);if(!(E(i,`Literal`)&&i.value===null||E(i,`Identifier`)&&i.name===`undefined`&&r.scopes.isGlobalReference(i)))return!0;let a=M(n),o=a?u.get(a):void 0;return!(a&&o&&kf(n,o.map(e=>e.handleGuard&&z(n,e.handleGuard.consequent)?e.call:e.anchor),a,r))});if(!f||p)return!1;let m=t.node.parent;for(;m&&m!==i;){if(E(m,`ForStatement`)||E(m,`ForInStatement`)||E(m,`ForOfStatement`)||E(m,`WhileStatement`)||E(m,`DoWhileStatement`))return!1;m=m.parent}let h=!1;for(let e of t.node.arguments??[])D(e,e=>{if(h||w(e))return!1;if(E(e,`AwaitExpression`)||E(e,`YieldExpression`)||E(e,`CallExpression`)&&!Ia(e,r.scopes))return h=!0,!1});return h?!1:Efe(i,t.node,r).some(a=>Afe(e,a,l,r)&&!jfe(i,a,t.node,r)&&!Ofe(i,t.node,a,r)&&n.every(e=>Dfe(e,a,r)))},qfe=(e,t,n)=>{if(!w(e)||!E(e.body,`BlockStatement`))return!1;let r=new Set;if(D(e.body,e=>{if(!E(e,`CallExpression`))return;let i=P(e.callee);if(!E(i,`MemberExpression`)||Gn(e)!==`push`||!E(i.object,`Identifier`))return;let a=e.arguments[0];if(!a||!j(a))return;let o=P(a),s=w(o)?o:Od(a,n);if(!s||!w(s))return;let c=!1;if(D(s.body,e=>{if(c||e!==s.body&&w(e))return c?!1:void 0;if(!E(e,`CallExpression`))return;let r=P(e.callee);if(!E(r,`MemberExpression`))return;let i=E(t.node,`CallExpression`)?t.node:null;if(Gn(e)===`removeEventListener`&&i&&Iu(r.object,n)===t.receiverKey&&Iu(e.arguments[0],n)===t.eventKey&&Iu(e.arguments[1],n)===t.handlerKey&&zu(i.arguments[2],e.arguments[2],n,!0))return c=!0,!1}),!c)return;let l=b(t.node),u=l.parent,d=b(e),f=d.parent;if(!u||!E(u,`ExpressionStatement`)||u.expression!==l||!f||!E(f,`ExpressionStatement`)||f.expression!==d||!u.parent||!E(u.parent,`BlockStatement`)||u.parent!==f.parent)return;let p=u.parent.body.findIndex(e=>e.range[0]===u.range[0]);if(u.parent.body.findIndex(e=>e.range[0]===f.range[0])!==p+1)return;let m=n.scopes.symbolFor(i.object),h=m?.initializer?P(m.initializer):null;m?.kind!==`const`||!h||!E(h,`ArrayExpression`)||h.elements.length!==0||m.references.every(e=>{let t=b(e.identifier);if(E(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!E(n,`MemberExpression`)||n.object!==t)return!1;let r=b(n).parent;return!!(r&&E(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(A(n)??``))})&&r.add(m)}),r.size===0)return!1;let i=!1;return yu(e.body,e=>{if(i||!E(e,`ReturnStatement`)||!e.argument)return;let t=P(e.argument),a=w(t)?t:Od(e.argument,n);!a||!w(a)||D(a.body,e=>{if(i)return!1;if(!E(e,`CallExpression`))return;let t=P(e.callee);if(E(t,`Identifier`)){let a=od(t,n),o=a?P(a.right):null,s=E(o,`Identifier`)?n.scopes.symbolFor(o):null;if(a&&s&&r.has(s)&&Cd(e,a,n))return i=!0,!1}if(!E(t,`MemberExpression`)||Gn(e)!==`forEach`||!E(t.object,`Identifier`))return;let a=n.scopes.symbolFor(t.object);if(!a||!r.has(a))return;let o=e.arguments[0];if(!o||!j(o))return;let s=P(o);if(!w(s))return;let c=s.params[0];if(!c||!E(c,`Identifier`))return;let l=n.scopes.symbolFor(c);return D(s.body,e=>{if(E(e,`CallExpression`)&&E(P(e.callee),`Identifier`)&&n.scopes.symbolFor(P(e.callee))?.id===l?.id)return i=!0,!1}),i?!1:void 0})}),i},Jfe=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!E(t.node,`CallExpression`))return!1;let r=P(t.node.callee);if(!E(r,`MemberExpression`))return!1;let i=[r.object,t.node.arguments[0],t.node.arguments[1],t.node.arguments[2]],a=new Set(i.flatMap(e=>{let t=Pu(e,n);return t?[t.collectionKey]:[]}));if(a.size===0)return!1;let o=Iu(r.object,n),s=Iu(t.node.arguments[0],n),c=Iu(t.node.arguments[1],n),l=Ru(t.node.arguments[2],n,!0),u=!1;return D(e,e=>{if(u||!E(e,`CallExpression`))return u?!1:void 0;if(Gn(e)!==`removeEventListener`)return;let r=P(e.callee);if(E(r,`MemberExpression`)&&!(Iu(r.object,n)!==o||Iu(e.arguments[0],n)!==s||Iu(e.arguments[1],n)!==c||Ru(e.arguments[2],n,!0)!==l)&&yf(e,a,n)&&!xf(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return u=!0,!1}),u},nf=(e,t)=>{let n=P(e);return E(n,`MemberExpression`)?Bu(n,t):null},rf=(e,t)=>{let n=P(e);if(E(n,`LogicalExpression`)&&n.operator===`||`){let e=rf(n.left,t),r=rf(n.right,t);return[e,r].find(e=>e?.requiresBooleanFalse)??e??r}if(E(n,`UnaryExpression`)&&n.operator===`!`){let e=nf(n.argument,t);return e?{refSymbol:e,requiresBooleanFalse:!0}:null}if(E(n,`BinaryExpression`)&&(n.operator===`!=`||n.operator===`!==`)){let e=nf(n.left,t),r=nf(n.right,t),i=e??r;return!i||e&&r?null:{refSymbol:i,requiresBooleanFalse:!1}}return null},Yfe=(e,t)=>{let n=P(e);if(!E(n,`BinaryExpression`)||n.operator!==`==`&&n.operator!==`===`)return null;let r=nf(n.left,t),i=nf(n.right,t),a=r??i;return a&&!(r&&i)?{refSymbol:a,requiresBooleanFalse:!1}:null},af=(e,t,n,r=new Set)=>{if(!w(e)||r.has(e))return null;let i=new Set(r);i.add(e);let a=e.body;if(!E(a,`BlockStatement`)){let e=P(a);if(!E(e,`CallExpression`))return null;let r=Od(e.callee,n);return r?af(r,t,n,i):null}for(let e=0;e<a.body.length;e+=1){let r=a.body[e];if(!E(r,`VariableDeclaration`)){if(E(r,`ExpressionStatement`)){let o=P(r.expression);if(E(o,`AssignmentExpression`)){let e=Y(o.left,n),r=P(o.right),i=E(r,`Literal`)&&r.value===null||E(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r);if(e===t.handleKey&&i)continue}if(E(o,`CallExpression`)&&e===a.body.length-1){let e=Od(o.callee,n);return e?af(e,t,n,i):null}return null}return E(r,`IfStatement`)?hu(r.consequent)?rf(r.test,n):!r.alternate&&e===a.body.length-1?Yfe(r.test,n):null:null}}return null},of=(e,t,n,r=new Set)=>{if(!w(e)||r.has(e))return!1;let i=new Set(r);i.add(e);let a=!1;return D(e.body,r=>{if(a||r!==e.body&&w(r))return!1;if(E(r,`UpdateExpression`))return Bu(r.argument,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)?(a=!0,!1):void 0;if(E(r,`AssignmentExpression`))return Bu(r.left,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)&&(r.operator!==`=`||(t.requiresBooleanFalse?mn(P(r.right))===!1:mn(P(r.right))!==!0))?(a=!0,!1):void 0;if(!E(r,`CallExpression`))return;let o=Od(r.callee,n);if(o&&of(o,t,n,i)&&n.cfg.isUnconditionalFromEntry(r))return a=!0,!1}),a},Xfe=(e,t)=>{if(e.registrationVerbName!==`setTimeout`||!E(e.node,`CallExpression`))return!1;let n=e.node.arguments[0],r=n&&j(n)?P(n):null,i=r?w(r)?r:Od(r,t):null;if(!i)return!1;let a=af(i,e,t);if(!a)return!1;let o=J(e.node,t.scopes);if(!o){let t=M(e.node);for(;t&&!qs(t);)t=M(t);o=t}if(!o||!w(o))return!1;let s=!1;return D(o.body,e=>{if(s)return!1;if(!E(e,`CallExpression`)||!Mu(e,t))return;let n=Kn(e);!n||!w(n)||yu(n.body,e=>{if(s||!E(e,`ReturnStatement`)||!e.argument)return;let n=Od(e.argument,t);n&&of(n,a,t)&&(s=!0)})}),s},Zfe=(e,t,n)=>{if(t.registrationVerbName!==`setTimeout`||!w(e)||!E(t.node,`CallExpression`))return!1;let r=t.node.arguments[0],i=r&&j(r)?P(r):null,a=i?w(i)?i:Od(i,n):null;if(!a)return!1;let o=af(a,t,n);if(!o||o.requiresBooleanFalse)return!1;let s=[];return D(e.body,t=>{if(t!==e.body&&w(t))return!1;if(E(t,`UpdateExpression`)&&Bu(t.argument,n)?.id===o.refSymbol.id){s.push(t);return}E(t,`AssignmentExpression`)&&t.operator!==`=`&&Bu(t.left,n)?.id===o.refSymbol.id&&s.push(t)}),kf(t.node,s,e,n)},sf=(e,t)=>{if(Xfe(e,t))return!0;if(e.registrationVerbName!==`setTimeout`||!E(e.node,`CallExpression`))return!1;let n=e.node.arguments[0];if(!n||!j(n))return!1;let r=P(n),i=w(r)?r:Od(n,t);if(!i||!w(i)||!E(i.body,`BlockStatement`))return!1;let a=i.body.body[0];if(!a||!E(a,`IfStatement`)||!hu(a.consequent))return!1;let o=P(a.test);for(;E(o,`LogicalExpression`)&&o.operator===`||`;)o=P(o.left);if(!E(o,`UnaryExpression`)||o.operator!==`!`)return!1;let s=gu(P(o.argument),t.scopes,{resolveNamedAliases:!0});if(!s)return!1;let c=M(e.node),l=null;for(;c;){let e=c.parent;if(e&&E(e,`CallExpression`)&&Mu(e,t)){l=e;break}c=M(c)}let u=J(l||e.node,t.scopes);if(!u){let t=M(e.node);for(;t&&!qs(t);)t=M(t);u=t}if(!u||!w(u))return!1;let d=!1;return D(u.body,e=>{if(d)return!1;if(!E(e,`CallExpression`)||!Mu(e,t))return;let n=Kn(e);if(!n||!w(n))return;let r=P(n.body);w(r)&&D(r.body,e=>{if(E(e,`AssignmentExpression`)&&e.operator===`=`&&gu(P(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&mn(P(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1}),yu(n.body,e=>{if(d||!E(e,`ReturnStatement`)||!e.argument)return;let n=Od(e.argument,t);!n||!w(n)||D(n.body,e=>{if(E(e,`AssignmentExpression`)&&e.operator===`=`&&gu(P(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&mn(P(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1})})}),d},cf=(e,t,n,r=[t])=>{if(!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||e.async)return!1;if(qfe(e,t,n)||Jfe(e,t,n)||sf(t,n)||Pf(e,t,n)||t.kind===`subscribe`&&M(t.node)===e&&Rf(t.node,!0,!0,n)&&Xu(t,n))return!0;if(!E(e.body,`BlockStatement`))return e.body===t.node&&Xu(t,n);let i=b(t.node),a=i.parent,o=E(a,`AssignmentExpression`)&&a.operator===`=`&&a.right===i&&E(a.left,`Identifier`)?n.scopes.symbolFor(a.left):null,s=t.kind===`timer`&&M(t.node)!==e&&!!(o&&(o.kind===`let`||o.kind===`var`)&&E(o.declarationNode,`VariableDeclarator`)&&M(o.declarationNode)===e),c=[];if(yu(e.body,e=>{if(!E(e,`ReturnStatement`))return;let r=S(e),i=S(t.node);if(r!==null&&i!==null&&r<i)return;let a=e.argument?P(e.argument):null;if(!a)return;if(Ld(a,t,n)){c.push(e);return}if(t.kind===`subscribe`&&(a===t.node||S(a)!==null&&S(a)===S(t.node))&&Xu(t,n)){c.push(e);return}if(t.kind===`subscribe`&&ife(a,t,n)){c.push(e);return}if(E(a,`Identifier`)&&(a.name===`undefined`&&n.scopes.isGlobalReference(a)||!n.scopes.symbolFor(a)?.initializer))return;let o=Od(a,n);if(o&&Ld(o,t,n)){c.push(e);return}!o||!w(o)||Fd(o,t,n,new Set,new Map,s)&&c.push(e)}),Kfe(e,t,c,n)||Ufe(e,t,r,c,n))return!0;let l=M(t.node),u=l?vfe(l,e,n):[];return t.kind===`subscribe`&&u.length>0&&u.every(e=>ad(e,c,n))?!0:ad(Nd(t.node,e,n,t),c,n)},Qfe=(e,t,n)=>{for(let r of t)if(!cf(e,r,n,t)&&!Tfe(e,r,n))return r;return null},lf=(e,t,n=new Set)=>{let r=P(e);if(E(r,`NewExpression`)&&E(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(E(r,`MemberExpression`))return lf(r.object,t,n);if(!E(r,`Identifier`))return!1;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return!1;if(n.add(i.id),i.initializer)return lf(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(E(a,`Property`)&&E(o,`ObjectPattern`)&&E(s,`VariableDeclarator`)&&s.init&&lf(s.init,t,n))},$fe=(e,t)=>{if(!E(e,`Property`))return!1;let n=E(e.key,`Identifier`)?e.key.name:E(e.key,`Literal`)?e.key.value:null;return n===`signal`?!lf(e.value,t):n===`once`?E(e.value,`Literal`)&&e.value.value===!0:!1},epe=(e,t)=>E(e,`CallExpression`)&&(e.arguments??[]).some(e=>E(e,`ObjectExpression`)&&(e.properties??[]).some(e=>$fe(e,t))),uf=new Map([[`addEventListener`,new Set([`removeEventListener`,`abort`])],[`addListener`,new Set([`removeListener`,`off`,`abort`])],[`on`,new Set([`off`,`removeListener`,`on`])],[`subscribe`,new Set([`unsubscribe`,`unsub`])],[`sub`,new Set([`unsub`,`unsubscribe`])],[`watch`,new Set([`unwatch`,`close`])],[`listen`,new Set([`unlisten`,`close`])],[`observe`,new Set([`disconnect`,`unobserve`])]]),df=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),ff=new Set([`close`]),tpe=new Set([`removeChannel`,`removeAllChannels`]),pf=e=>{let t=E(e,`ChainExpression`)?e.expression:e;if(!E(t,`CallExpression`))return null;let n=P(t.callee);if(E(n,`Identifier`))return ot.has(n.name)||Rt.has(n.name)||df.has(n.name)?n.name:null;if(E(n,`MemberExpression`)&&E(n.property,`Identifier`)){let e=n.property.name;return Rt.has(e)||cn.has(e)||tpe.has(e)||e===`on`?e:null}return null},npe=(e,t,n)=>{let r=M(e),i=M(t.node);if(!r||!i||!w(i)||!Tf(r,n)||!_u(e,n.scopes))return!1;let a=kd(t,n),o=Y(e,n);if(a===null||o===null)return!1;let s=i.body,c=[],l=[];D(s,e=>{if(e!==s&&w(e))return!1;if(E(e,`AssignmentExpression`)&&Y(e.left,n)===o&&Y(e.right,n)===a){l.push(e);return}if(!E(e,`CallExpression`))return;let t=E(e.callee,`ChainExpression`)?e.callee.expression:P(e.callee);E(t,`MemberExpression`)&&!t.computed&&E(t.property,`Identifier`)&&t.property.name===`abort`&&Y(t.object,n)===o&&c.push(e)});let u=l.filter(e=>kf(e,c,i,n));return kf(t.node,u,i,n)},mf=e=>E(e,`JSXAttribute`)&&E(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),hf=(e,t)=>{let n=Ys(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(e=>{let t=b(e.identifier),n=t.parent;return!!(E(n,`JSXExpressionContainer`)&&n.expression===t&&mf(n.parent))}):!1},gf=(e,t,n)=>{let r=Ys(e);if(!r)return!1;let i=t.scopes.symbolFor(r);if(!i)return!1;let a=e=>{let t=E(e,`Property`)?A(e):null;if(!E(e,`Property`)||!E(e.parent,`ObjectExpression`)||n&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let r=b(e.parent),i=r.parent;if(!E(i,`ReturnStatement`)||i.argument!==r)return!1;let a=M(i);return!!(a&&Ws(Ys(a)?.name??``))};if(i.references.some(e=>{let t=b(e.identifier),n=t.parent;return E(n,`Property`)&&n.value===t?a(n):!1}))return!0;let o=M(e);if(!o||!w(o)||!Ws(Ys(o)?.name??``))return!1;let s=!1;return D(o.body,e=>{if(s)return!1;if(E(e,`Property`)&&E(e.value,`Identifier`)&&e.value.name===r.name&&a(e))return s=!0,!1}),s},rpe=e=>{if(!w(e))return!1;let t=e.params[0];if(!t)return!1;let n=(E(t,`Identifier`)?t:E(t,`AssignmentPattern`)&&E(t.left,`Identifier`)?t.left:null)?.typeAnnotation,r=E(n,`TSTypeAnnotation`)?n.typeAnnotation:null;return!!(E(r,`TSNullKeyword`)||E(r,`TSUnionType`)&&r.types.some(e=>E(e,`TSNullKeyword`)))},ipe=(e,t)=>{if(!w(e))return!1;let n=Ys(e),r=M(e),i=r?Ys(r):null;if(!n||!r||!w(r)||!i||!Ws(i.name))return!1;let a=new Set;if(D(r.body,e=>{if(!E(e,`Property`)||!E(e.value,`Identifier`)||e.value.name!==n.name||!E(e.parent,`ObjectExpression`))return;let t=b(e.parent);if(E(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=A(e);t&&a.add(t)}}),a.size===0)return!1;let o=t.scopes.symbolFor(i);if(!o||o.references.length===0)return!1;let s=!1;for(let e of o.references){let n=b(e.identifier),r=n.parent,i=r?.parent;if(!E(r,`CallExpression`)||r.callee!==n||!E(i,`VariableDeclarator`)||i.init!==r||!E(i.id,`Identifier`))return!1;let o=t.scopes.symbolFor(i.id);if(!o)return!1;for(let e of o.references){let t=b(e.identifier),n=t.parent;if(!E(n,`MemberExpression`)||n.object!==t||!a.has(A(n)??``))continue;let r=b(n),i=r.parent;if(!E(i,`JSXExpressionContainer`)||i.expression!==r||!mf(i.parent))return!1;s=!0}}return s},_f=(e,t)=>hf(e,t)||gf(e,t,!0)||ipe(e,t)||rpe(e)&&gf(e,t,!1),vf=(e,t)=>{if(!w(e)||!e.returnType)return!1;let n=!1;if(D(e.returnType,e=>{if(E(e,`TSFunctionType`))return n=!0,!1}),!n)return!1;let r=Ys(e),i=r?t.scopes.symbolFor(r):null;return i?i.references.some(e=>{let t=b(e.identifier),n=t.parent;return!!(E(n,`JSXExpressionContainer`)&&n.expression===t&&E(n.parent,`JSXAttribute`))}):!1},ape=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(E(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=P(o.test);if(!E(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[P(e.left),P(e.right)],a=t.some(e=>zd(e,n,i)),s=t.some(e=>{if(!E(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=Y(e.left,i),a=Y(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},ope=(e,t,n,r)=>{if(!w(e))return[];let i=[];return D(e.body,a=>{if(a!==e.body&&w(a))return!1;if(!E(a,`IfStatement`)||a.alternate!==null||!hu(a.consequent))return;let o=P(a.test);if(!E(o,`BinaryExpression`)||o.operator!==`===`&&o.operator!==`==`)return;let s=Y(o.left,r),c=Y(o.right,r);(s===t&&c===n||c===t&&s===n)&&i.push(a)}),i},spe=(e,t,n)=>{if(!E(t.node,`CallExpression`))return!1;let r=M(t.node);if(!r||!w(r)||r!==M(e)||!_f(r,n))return!1;let i=P(t.node.callee),a=P(e.callee),o=E(a,`MemberExpression`)?Bu(a.object,n):null;if(!E(i,`MemberExpression`)||i.computed||!E(i.property,`Identifier`)||i.property.name!==`addEventListener`||!E(a,`MemberExpression`)||a.computed||!E(a.property,`Identifier`)||a.property.name!==`removeEventListener`||!o)return!1;let s=Y(P(i.object),n),c=Y(r.params?.[0],n),l=Y(a.object,n),u=Y(e.arguments?.[1],n);if(s===null||s!==c||l===null||t.eventKey===null||t.eventKey!==Y(e.arguments?.[0],n)||t.handlerKey===null)return!1;if(t.handlerKey!==u){if(!zu(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let i=S(e),a=[];return D(r.body,e=>{if(e!==r.body&&w(e))return!1;if(!E(e,`AssignmentExpression`)||e.operator!==`=`||!E(P(e.right),`ObjectExpression`)||gu(P(e.left),n.scopes)?.id!==o.id)return;let c=Y(e.left,n),d=P(e.right);if(!c||l!==`${c}.element`||u!==`${c}.handler`||i===null||(S(e)??-1)<=i||!E(d,`ObjectExpression`))return;let f=d.properties.find(e=>E(e,`Property`)&&A(e)===`element`),p=d.properties.find(e=>E(e,`Property`)&&A(e)===`handler`);E(f,`Property`)&&E(p,`Property`)&&Y(f.value,n)===s&&Y(p.value,n)===t.handlerKey&&a.push(e)}),Aa(r,[Vd(e,r,l,n)??e],n)&&ad(t.node,a,n)}if(!zu(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let d=S(e),f=[],p=r.body;D(p,e=>{if(e!==p&&w(e))return!1;E(e,`AssignmentExpression`)&&e.operator===`=`&&gu(P(e.left),n.scopes)?.id===o.id&&Y(e.right,n)===s&&d!==null&&(S(e)??-1)>d&&f.push(e)});let m=Vd(e,r,l,n)??ape(e,r,l,s,n)??e,h=f.filter(e=>kf(e,[m],r,n));return Aa(r,[m,...ope(r,l,s,n)],n)&&kf(t.node,h,r,n)},yf=(e,t,n)=>{let r=b(e),i=new Set,a=new Set;for(;;){let e=M(r);if(!e||!w(e)||i.has(e))return null;i.add(e);let o=e.body===r,s=r.parent,c=E(e.body,`BlockStatement`)&&E(s,`ExpressionStatement`)&&s.parent===e.body;if(!o&&!c||!Aa(e,[c?s:r],n))return null;let l=Ad(e);if(!l)return a.size===t.size&&Tf(e,n)?e:null;let u=P(l.callee);if(!E(u,`MemberExpression`))return null;let d=Y(u.object,n);if(!d||!t.has(d))return null;a.add(d),r=b(l)}},bf=e=>{let t=new Set,n=e;for(;;){let e=M(n);if(!e||!w(e)||t.has(e))break;t.add(e),n=e}return t},xf=(e,t,n,r)=>{let i=S(e),a=S(t);if(i===null||a===null)return!0;let o=bf(e),s=bf(t),c=(e,t)=>e!==null&&t<=(n.get(e)??-1/0),l=(e,t,i,a)=>{if(a&&E(e,`ReturnStatement`)&&c(Y(e.argument,r),t))return!0;if(E(e,`AssignmentExpression`)){let i=Y(e.left,r),a=P(e.left);return c(Y(e.right,r),t)&&!c(i,t)||!!(i&&[...n].some(([e,n])=>t<=n&&(i===e||i===`${e}.length`)))||E(a,`MemberExpression`)&&a.computed&&c(Y(a.object,r),t)}if(E(e,`UnaryExpression`)&&e.operator===`delete`){let n=P(e.argument);return E(n,`MemberExpression`)&&c(Y(n.object,r),t)}if(E(e,`UpdateExpression`)){let i=Y(e.argument,r);return!!(i&&[...n].some(([e,n])=>t<=n&&i===`${e}.length`))}if(!E(e,`CallExpression`)&&!E(e,`NewExpression`))return!1;let o=e.arguments.some(e=>j(e)?c(Y(e,r),t)&&pd(e,r)===null:!1),s=P(e.callee),u=E(e,`CallExpression`)&&E(s,`MemberExpression`)&&!s.computed&&E(s.object,`Identifier`)&&s.object.name===`Array`&&r.scopes.isGlobalReference(s.object)&&E(s.property,`Identifier`)&&s.property.name===`from`;return o&&!u||E(s,`MemberExpression`)&&!s.computed&&E(s.property,`Identifier`)&&(Xde.has(s.property.name)||Zde.has(s.property.name))&&c(Y(s.object,r),t)?!0:E(e,`CallExpression`)?[y(e.callee,r.scopes),...e.arguments.flatMap(t=>j(t)&&$l(e,t)?[y(t,r.scopes)]:[])].some(e=>{if(!e||!w(e)||e.generator||i.has(e))return!1;let n=new Set(i);n.add(e);let r=!1;return D(e.body,i=>{if(r||i!==e.body&&w(i))return!1;if(l(i,t,n,!1))return r=!0,!1}),r}):!1},u=e;for(;u.parent;)u=u.parent;let d=!1;return D(u,e=>{if(d)return!1;let t=S(e);if(t===null)return;let n=r.cfg.enclosingFunction(e);if(!n)return;let c=o.has(n)&&t>i,u=s.has(n)&&t<a;if(!(!c&&!u)&&l(e,t,new Set,!0))return d=!0,!1}),d},Sf=(e,t)=>Gn(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,cpe=(e,t,n)=>{let r=P(e.callee),i=P(t.callee);if(!E(r,`MemberExpression`)||!E(i,`MemberExpression`))return!0;let a=Gn(e),o=Gn(t),s=t.arguments?.[+!Sf(e,t)],c=M(t),l=Iu(e.arguments?.[0],n),u=Iu(t.arguments?.[0],n),d=o===`off`&&!s&&(t.arguments?.length===0||l!==null&&l===u);if(c&&w(c)&&Tf(c,n)&&Aa(c,[t],n)&&(o!==null&&df.has(o)||d))return!0;let f=[r.object,e.arguments?.[0],e.arguments?.[1],i.object,t.arguments?.[0],t.arguments?.[1]].flatMap(e=>{let t=Pu(e,n);return t?[t]:[]});if(a===`addEventListener`&&o===`removeEventListener`)for(let r of[e.arguments?.[2],t.arguments?.[2]]){let e=$de(r,n);e&&f.push(e)}if(f.length===0)return!0;let p=new Set(f.map(e=>e.collectionKey));return!yf(t,p,n)&&!dfe(t,p,n)?!1:!xf(e,t,new Map([...p].map(e=>[e,1/0])),n)},Cf=(e,t,n,r=new Map)=>{let i=E(e,`ChainExpression`)?e.expression:e;if(!E(i,`CallExpression`))return!1;let a=P(i.callee);if(t.kind===`timer`){let e=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;if(!E(a,`Identifier`)||!ot.has(a.name)||a.name!==e)return!1;let o=Y(i.arguments?.[0],n,new Set,r);if(qu(o,t,n))return!0;if(r.size>0&&o!==null)return!1;let s=i.arguments?.[0];if(s&&j(s)){let e=Gu(s,i,n);if(t.handleKey&&e?.has(t.handleKey))return!0}let c=Ed(t.node,n);return c!==null&&c===pd(i.arguments?.[0],n)}if(E(a,`Identifier`)&&t.kind===`subscribe`&&(Zu(a,t,n)&&(t.registrationVerbName!==`addEventListener`&&t.registrationVerbName!==`addListener`||Xu(t,n))||t.registrationVerbName===`addListener`&&_d(a,t,n)))return!0;let o=pf(i);if(!o||!E(a,`MemberExpression`)||a.computed||!E(a.property,`Identifier`))return!1;let s=Iu(a.object,n),c=Iu(i.arguments?.[0],n),l=t.registrationVerbName?uf.get(t.registrationVerbName):null,u=Dd(t,n),d=od(a.object,n),f=d?Y(d.right,n):pd(a.object,n);if(l&&wf(o,l)&&u!==null&&u===f&&(o!==`unobserve`||t.eventKey!==null&&c===t.eventKey)||spe(i,t,n)||Qu(s,o,t,n))return!0;if(t.kind===`socket`)return qu(s,t,n)&&(ff.has(o)||df.has(o));if(t.kind===`subscribe`&&E(t.node,`CallExpression`)&&(o===`removeChannel`||o===`removeAllChannels`)&&s===id(t.node,n)&&(o===`removeAllChannels`||qu(Y(i.arguments?.[0],n,new Set,r),t,n))||(qu(s,t,n)||t.kind===`subscribe`&&_d(a.object,t,n))&&(o===`unsubscribe`||o===`unsub`||o===`close`||o===`unwatch`||o===`unlisten`||cn.has(o))||o===`abort`&&s===kd(t,n)||o===`abort`&&npe(a.object,t,n))return!0;if(t.registrationVerbName===`addListener`&&o===`removeListener`&&E(t.node,`CallExpression`)&&t.node.arguments?.length===1){if(i.arguments?.length!==1)return!1;let e=Od(t.node.arguments[0],n);if(!td(t.node,`addListener`,n)&&!w(e))return!1}if(t.registrationVerbName===`addEventListener`&&o===`removeEventListener`&&E(t.node,`CallExpression`)&&(!E(P(t.node.callee),`MemberExpression`)||!zu(t.node.arguments?.[2],i.arguments?.[2],n,!0))||E(t.node,`CallExpression`)&&!cpe(t.node,i,n))return!1;let p=E(t.node,`CallExpression`)?P(t.node.callee):null,m=E(p,`MemberExpression`)?vd(p.object,n):null,h=vd(a.object,n);if(!(m!==null&&m===h)&&(t.receiverKey===null||s!==t.receiverKey))return!1;if(t.registrationVerbName===`subscribe`&&(o===`unsubscribe`||o===`unsub`)&&t.handleKey!==null&&Y(i.arguments?.[0],n)===t.handleKey)return!0;let g=t.registrationVerbName?uf.get(t.registrationVerbName):null;if(!g||!wf(o,g))return!1;let _=E(t.node,`CallExpression`)?t.node.arguments?.[0]:null,ee=i.arguments?.[0];if(sd(_,n)||sd(ee,n))return!1;if(t.eventKey!==null&&c!==null&&t.eventKey!==c){if(!E(t.node,`CallExpression`))return!1;let e=Fu(t.node.arguments?.[0],n),r=Fu(i.arguments?.[0],n);if((e!==null||r!==null)&&e!==r)return!1;let s=od(_,n),c=od(ee,n);if(s===null!=(c===null))return!1;let l=pd(t.node.arguments?.[0],n),u=pd(i.arguments?.[0],n);if(l===null||l!==u)return!1;if(s&&c){let e=bd(t.node.arguments?.[1],n),r=bd(i.arguments?.[1],n);if(t.registrationVerbName!==`addEventListener`||o!==`removeEventListener`)return!1;let s=P(t.node.callee);if(!E(s,`MemberExpression`)||!yd(s.object,n)||!yd(a.object,n)||e===null||e!==r||!zu(t.node.arguments?.[2],i.arguments?.[2],n)||!Cd(i,c,n))return!1}}if(o===`on`){let e=i.arguments?.[1];return E(e,`Literal`)&&e.value===null}if(o===`removeEventListener`||o===`removeListener`||o===`off`){let e=E(t.node,`CallExpression`)&&Sf(t.node,i),r=e?i.arguments?.[0]:i.arguments?.[1];if(!r)return o===`off`;let a=e?t.handlerKey??t.eventKey:t.handlerKey,s=E(t.node,`CallExpression`)?t.node.arguments?.[+!e]:null;return a!==null&&Iu(r,n)===a||s!==null&&Od(r,n)===Od(s,n)}return o===`unobserve`&&t.eventKey!==null?c===t.eventKey:!0},wf=(e,t)=>t.has(e)||df.has(e),Tf=(e,t)=>{let n=M(e);if(!n||!w(n))return!1;let r=n.parent;if(!E(r,`CallExpression`)||!Mu(r,t))return!1;if(!E(n.body,`BlockStatement`))return Od(n.body,t)===e;let i=!1;return yu(n.body,n=>{E(n,`ReturnStatement`)&&n.argument&&Od(n.argument,t)===e&&(i=!0)}),i},Ef=(e,t)=>{if(qf(e,t)||Tf(e,t))return!0;let n=Ys(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>M(t.identifier)!==e):!1},lpe=(e,t,n)=>{if(!w(e)||e.async||e.generator)return[];let r=M(t.node);if(!r||!w(r))return[];let i=new Map,a=e=>{let t=b(e),a=t.parent;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t)return;let o=Bu(a.left,n),s=Y(a.left,n),c=M(a),l=S(a);if(!o&&E(a.left,`MemberExpression`)){let e=A(a.left),t=P(a.left.object),r=E(t,`Identifier`)?n.scopes.symbolFor(t):null;if(!e||!r||!c||!w(c))return;for(let t of r.references){let r=b(t.identifier),a=r.parent;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==r||!Bu(a.left,n)||M(a)!==c)continue;let o=Y(a.left,n),s=S(a);!o||s===null||i.set(s,{assignmentNode:a,refCurrentKey:`${o}.${e}`,retainedFunction:c})}return}!o||!s||!c||c!==r||l===null||i.set(l,{assignmentNode:a,refCurrentKey:s,retainedFunction:c})};a(e);let o=Ys(e),s=o?n.scopes.symbolFor(o):null;for(let e of s?.references??[])a(e.identifier);return D(r.body,t=>{if(t!==r.body&&w(t))return!1;E(t,`AssignmentExpression`)&&Od(t.right,n)===e&&a(t.right)}),[...i.values()]},upe=(e,t,n)=>kf(t.node,[e.assignmentNode],e.retainedFunction,n)||ad(t.node,[e.assignmentNode],n),dpe=(e,t,n)=>{let r=!1;return D(e.retainedFunction.body,i=>{if(r||i!==e.retainedFunction.body&&w(i))return!1;if(!E(i,`AssignmentExpression`)||i===e.assignmentNode||Y(i.left,n)!==e.refCurrentKey||!Hl(t.node,i,e.retainedFunction,n))return;let a=Od(i.right,n);if(!a||!w(a)||!Fd(a,t,n))return r=!0,!1}),r},fpe=(e,t,r)=>{let i=M(e.retainedFunction);if(!i||!w(i))return!1;let a=t=>{if(!w(t))return!1;let n=!1;return D(t.body,i=>{if(n||i!==t.body&&w(i))return!1;if(E(i,`CallExpression`)&&Y(i.callee,r)===e.refCurrentKey){let a=b(i),o=a.parent,s=E(t.body,`BlockStatement`)&&E(o,`ExpressionStatement`)&&o.parent===t.body,c=t.body===a,l=!!Vd(i,t,e.refCurrentKey,r);if((s||c||l)&&!Af(t,i,e.refCurrentKey,r))return n=!0,!1}}),n},o=e=>{if(!w(e))return!1;if(!E(e.body,`BlockStatement`)){let t=Of(e.body,r);return!!(t&&a(t))}let t=[];return yu(e.body,e=>{if(!E(e,`ReturnStatement`)||!e.argument)return;let n=Of(e.argument,r);!n||!a(n)||t.push(e)}),Aa(e,t,r)},s=!1;return D(i.body,e=>{if(s)return!1;if(!E(e,`CallExpression`)||M(e)!==i||!n(e,`useEffect`,r.scopes))return;let t=Kn(e);if(t&&o(t))return s=!0,!1}),s},ppe=(e,t,r)=>{if(!hf(e.retainedFunction,r)&&!(()=>{if(!w(e.retainedFunction))return!1;let i=b(e.retainedFunction).parent;if(!E(i,`CallExpression`)||!n(i,`useCallback`,r.scopes))return!1;let a=e.retainedFunction.params?.[0],o=Y(a,r);return!o||t.receiverKey!==o?!1:_f(e.retainedFunction,r)})())return!1;let i=[];return D(e.retainedFunction.body,t=>{if(t!==e.retainedFunction.body&&w(t))return!1;E(t,`CallExpression`)&&Y(t.callee,r)===e.refCurrentKey&&i.push(t)}),kf(t.node,i,e.retainedFunction,r)},mpe=(e,t,n)=>{let r=M(e);return r?lpe(r,t,n).some(e=>upe(e,t,n)&&!dpe(e,t,n)&&(fpe(e,t,n)||ppe(e,t,n))):!1},hpe=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.receiverKey===null||n.eventKey===null||!E(n.node,`CallExpression`)||!w(t)||t.async||t.generator||!E(t.body,`BlockStatement`)||!Aa(t,[e],r))return!1;let i=E(e,`ChainExpression`)?e.expression:e;if(!E(i,`CallExpression`)||!zu(n.node.arguments?.[2],i.arguments?.[2],r))return!1;let a=M(t);if(!a||!w(a))return!1;let o=[];return D(a.body,e=>{if(e!==a.body&&w(e))return!1;if(!E(e,`CallExpression`))return;let i=nd(e,r);i.registrationVerbName===`addEventListener`&&i.receiverKey===n.receiverKey&&Od(e.arguments?.[1],r)===t&&o.push(e)}),o.some(e=>e===n.node)?!0:ad(n.node,o,r)||kf(n.node,o,a,r)},gpe=(e,t,n)=>{if(!H(e,n))return!1;let r=M(e);if(!r||r===M(t.node)||mpe(e,t,n))return!0;let i=M(t.node);return i&&w(i)&&Bf(i,n)&&Ipe(i,r,n)?Fpe(i,r,t,n):hpe(e,r,t,n)?!0:Ef(r,n)},Df=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=ku.get(t);r||(r=new WeakMap,ku.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];D(n,n=>{let r=E(n,`ChainExpression`)?n.expression:n;if(!E(r,`CallExpression`))return;let i=E(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(E(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else pf(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;if(e.kind===`timer`){let t=e.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;a=i.identifierCallsByName.get(t)??[]}else a=i.potentialNonTimerCalls;let o=!1,s=n=>{if(o)return!1;if(Cf(n,e,t)&&gpe(n,e,t))return o=!0,!1};for(let e of a)if(s(e)===!1)break;return o},Of=(e,t)=>{let r=Od(e,t);return w(r)?r:!E(r,`CallExpression`)||!n(r,`useCallback`,t.scopes)?null:Kn(r)},_pe=(e,t,n)=>{if(!w(e)||t.kind!==`subscribe`||t.registrationVerbName!==`addEventListener`||t.handlerKey===null||!t.receiverKey?.startsWith(`global:`)||!t.eventKey?.startsWith(`literal:`))return null;let r=S(t.node),i=n.cfg.cfgFor(e),a=i?.blockOf(t.node);if(r===null||!i||!a)return null;let o=[];return D(e.body,s=>{if(s!==e.body&&w(s))return!1;if(!E(s,`AssignmentExpression`)||s.operator!==`=`)return;let c=S(s),l=P(s.left);if(c===null||c>=r||i.blockOf(s)!==a||!E(l,`MemberExpression`)||!gu(l,n.scopes))return;let u=Y(l,n),d=Y(l.object,n),f=P(s.right);if(!u||!d||!E(f,`ObjectExpression`))return;let p=f.properties??[];if(!p.some(e=>!E(e,`Property`)))for(let e of p){if(!E(e,`Property`))continue;let r=A(e);if(r&&Y(e.value,n)===t.handlerKey){let e=`${u}.${r}`;o.push({handlerKey:e,refCurrentKey:u,refKey:d,assignmentNode:s})}}}),o.length===1?o[0]:null},kf=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=S(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=S(e);if(t===null||t>=o)return[];let a=i.blockOf(e);return a?[a]:[]}));if(s.size===0)return!1;if(s.has(a))return!0;let c=new Set([i.entry]),l=[i.entry];for(;l.length>0;){let e=l.pop();if(!e)break;if(!s.has(e)){if(e===a)return!1;for(let t of e.successors)c.has(t.to)||(c.add(t.to),l.push(t.to))}}return!0},vpe=(e,t,n,r)=>{if(!w(e))return!1;let i=e.body,a=[];return D(i,e=>{if(e!==i&&w(e))return!1;E(e,`CallExpression`)&&Of(e.callee,r)===t&&a.push(e)}),kf(n,a,e,r)},ype=(e,t,n,r,i,a)=>{if(!w(t))return!1;let o=E(e,`ChainExpression`)?e.expression:e;if(!E(o,`CallExpression`)||!E(o.callee,`MemberExpression`)||o.callee.computed||!E(o.callee.property,`Identifier`)||o.callee.property.name!==`removeEventListener`||!E(n.node,`CallExpression`)||n.node.arguments?.[2]!==void 0||o.arguments?.[2]!==void 0)return!1;let s=b(e).parent,c=s?.parent,l=c?.parent,u=c===t.body,d=!!(E(c,`BlockStatement`)&&E(l,`IfStatement`)&&l.consequent===c&&l.alternate===null&&Y(l.test,a)===i);return!E(s,`ExpressionStatement`)||!E(t.body,`BlockStatement`)||!u&&!d?!1:n.receiverKey!==null&&n.receiverKey===Y(o.callee.object,a)&&n.eventKey!==null&&n.eventKey===Y(o.arguments?.[0],a)&&Y(o.arguments?.[1],a)===r},bpe=(e,t,n)=>{let r=e.parent,i=E(r,`BlockStatement`)?r.parent:r,a=E(r,`BlockStatement`)?r:e;if(!E(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=P(i.test);return E(o,`UnaryExpression`)&&o.operator===`!`&&Y(o.argument,n)===t},Af=(e,t,n,r)=>{if(!w(e))return!0;let i=S(t);if(i===null)return!0;let a=!1;return D(e.body,t=>{if(a||t!==e.body&&w(t))return!1;if(!E(t,`ReturnStatement`))return;let o=S(t);if((o===null||o<i)&&!bpe(t,n,r))return a=!0,!1}),a},xpe=(e,t,n,r,i)=>{if(!w(e)||!w(t)||e.async||e.generator)return!1;let a=_pe(n,r,i);if(!a||!vpe(n,e,a.assignmentNode,i))return!1;let o=null;if(D(e.body,t=>{if(o||t!==e.body&&w(t))return!1;if(ype(t,e,r,a.handlerKey,a.refCurrentKey,i))return o=t,!1}),!o||Af(e,o,a.refCurrentKey,i))return!1;let s=!1;return D(t.body,t=>{if(s)return!1;if(E(t,`UnaryExpression`)&&t.operator===`delete`){let e=P(t.argument);return Y(e,i)===a.handlerKey||E(e,`MemberExpression`)&&Y(e.object,i)===a.refCurrentKey?(s=!0,!1):void 0}if(E(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=Y(e,i);return t!==null&&(t===a.refKey||t===a.refCurrentKey)})?(s=!0,!1):void 0;if(!E(t,`AssignmentExpression`))return;let o=P(t.left);if(E(o,`MemberExpression`)&&o.computed&&Y(o.object,i)===a.refCurrentKey)return s=!0,!1;let c=Y(t.left,i);if(c===a.handlerKey)return s=!0,!1;if(c!==a.refCurrentKey)return;let l=P(t.right);if(E(l,`Literal`)&&l.value===null&&M(t)===e)return;let u=(E(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>E(e,`Property`))&&u.some(e=>E(e,`Property`)&&`${a.refCurrentKey}.${A(e)??``}`===a.handlerKey&&Y(e.value,i)===r.handlerKey);if(M(t)!==n||!d)return s=!0,!1}),!s},Spe=(e,t,n,r,i)=>{let a=e=>{let a=Of(e,i);return!!(a&&xpe(a,t,n,r,i))};if(!w(e))return!1;if(!E(e.body,`BlockStatement`))return a(P(e.body));let o=[];return yu(e.body,e=>{E(e,`ReturnStatement`)&&e.argument&&a(P(e.argument))&&o.push(e)}),Aa(e,o,i)},Cpe=(e,t,n)=>{let r=Ys(e),i=r?n.scopes.symbolFor(r):null;if(!i||i.references.length===0)return!1;let a=new Set(t.flatMap(e=>{let t=Kn(e);return t&&w(t)?[t]:[]}));return i.references.every(e=>{let n=b(e.identifier),r=n.parent,i=E(r,`CallExpression`)?M(r):null;if(E(r,`CallExpression`)&&r.callee===n&&i&&w(i)&&a.has(i))return!0;let o=n.parent,s=o?.parent;return!!(E(o,`ArrayExpression`)&&E(s,`CallExpression`)&&s.arguments?.[1]===o&&t.includes(s))})},jf=(e,t,r,i)=>{if(!w(e)||!E(r.node,`CallExpression`))return!1;let a=r.node.arguments?.[0],o=a&&j(a)?P(a):null,s=o?w(o)?o:Od(o,i):null;if(!s||!w(s))return!1;let c=(e,a=new Set)=>{if(!w(e)||a.has(e))return!1;let o=new Set(a);o.add(e);let l=e.parent;if(E(l,`CallExpression`)&&l.arguments.some(t=>t===e)&&!n(l,`useCallback`,i.scopes)){if(z(l,s)||Gd(l,r.node,t))return!0;let e=M(l);return!!(e&&e!==t&&c(e,o))}let u=Ys(e),d=u?i.scopes.symbolFor(u):null;if(!d||d.references.length===0)return!1;let f=d.references.filter(e=>{let t=b(e.identifier).parent,n=t?.parent;return!(E(t,`ArrayExpression`)&&E(n,`CallExpression`)&&n.arguments?.[1]===t)});return f.length>0&&f.every(e=>{let n=b(e.identifier),i=n.parent;if(!E(i,`CallExpression`)||i.callee!==n)return!1;if(z(i,s)||Gd(i,r.node,t))return!0;let a=M(i);return!!(a&&a!==t&&c(a,o))})};if(c(e))return!0;let l=e.parent,u=[];if(E(l,`CallExpression`)&&l.arguments.some(t=>t===e)&&!n(l,`useCallback`,i.scopes))u=[l];else{let t=Ys(e),n=t?i.scopes.symbolFor(t):null;if(!n||n.references.length===0)return!1;for(let e of n.references){let t=b(e.identifier),n=t.parent;if(!E(n,`CallExpression`)||!n.arguments.some(e=>e===t))return!1;u.push(n)}}return u.length>0&&u.every(e=>{if(z(e,s)||Gd(e,r.node,t))return!0;let n=M(e);return!!(n&&n!==t&&c(n))})},wpe=(e,t,n,r)=>{if(!w(t))return!1;let i=t.parent;if(!E(i,`CallExpression`)||Kn(i)!==t||!Mu(i,r))return!1;let a=e.parent??null;for(;a&&a!==t;){if(E(a,`IfStatement`)&&z(e,a.consequent)){let n=Od(P(a.test),r)??P(a.test);if(E(n,`BinaryExpression`)&&(n.operator===`===`||n.operator===`==`)){let i=Bu(n.left,r),o=Bu(n.right,r),s=i??o,c=P(i?n.right:n.left),l=E(c,`Identifier`)&&c.name===`undefined`&&r.scopes.isGlobalReference(c),u=s?.initializer?P(s.initializer):null,d=E(u,`CallExpression`)&&u.arguments[0]&&j(u.arguments[0])?P(u.arguments[0]):null;if(s&&!(i&&o)&&l&&d&&E(d,`Identifier`)&&d.name===`undefined`&&r.scopes.isGlobalReference(d)){let n=[];D(t.body,e=>{E(e,`AssignmentExpression`)&&e.operator===`=`&&Bu(e.left,r)?.id===s.id&&n.push(e)});let i=n.filter(e=>{let t=P(e.right);return!(E(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t))}),o=!1,c=e.parent??null,l=new Set(i.flatMap(e=>{let t=P(e.right);return E(t,`Identifier`)?[t.name]:[]})),u=e=>{let t=P(e);if(E(t,`LogicalExpression`)&&t.operator===`&&`)return u(t.left)||u(t.right);if(!E(t,`CallExpression`)||Gn(t)!==`isArray`)return!1;let n=t.arguments[0];if(!n||!j(n))return!1;let r=P(n);return E(r,`Identifier`)&&l.has(r.name)};for(;c&&c!==a;){if(E(c,`IfStatement`)&&z(e,c.consequent)&&u(c.test)){o=!0;break}c=c.parent??null}if(o&&kf(e,i,t,r)&&n.length===i.length)return!0}}}a=a.parent??null}let o=e.parent??null,s=null,c=null,l=null;for(;o&&o!==t;){if(E(o,`IfStatement`)&&z(e,o.consequent)){let e=P(o.test),t=E(e,`UnaryExpression`)&&e.operator===`!`,n=Bu(t?e.argument:e,r),i=n?.initializer?P(n.initializer):null,a=E(i,`CallExpression`)&&i.arguments[0]?mn(P(i.arguments[0])):null,u=!t;if(n&&a===u){s=o,c=n,l=u;break}}o=o.parent??null}if(!s||!c||l===null)return!1;let u=M(c.declarationNode);if(!u||!w(u))return!1;let d=[],f=!1;return D(u.body,e=>{if(f)return!1;if(E(e,`UpdateExpression`)&&Bu(e.argument,r)?.id===c.id)return f=!0,!1;if(!(!E(e,`AssignmentExpression`)||Bu(e.left,r)?.id!==c.id)){if(e.operator!==`=`||mn(P(e.right))===null)return f=!0,!1;d.push(e)}}),f||!kf(e,d.filter(e=>mn(P(e.right))===!l),t,r)?!1:d.every(e=>{if(mn(P(e.right))===!l)return!0;let t=M(e);if(!t||!w(t))return!1;let i=t.parent;if(!E(i,`ReturnStatement`)||i.argument!==t)return!1;let a=M(i);return!!(a&&w(a)&&Rd(a,n,r))})},Mf=(e,t,n,r)=>{let i=M(e);if(!i||!w(i))return!1;let a=E(n.node,`CallExpression`)?n.node.arguments?.[0]:null,o=a&&j(a)?P(a):null,s=o?w(o)?o:y(o,r.scopes):null;if(s&&i===s)return!0;if(s){let e=Ys(i),a=(e?r.scopes.symbolFor(e):null)?.references.filter(e=>{let t=b(e.identifier).parent,n=t?.parent;return!(E(t,`ArrayExpression`)&&E(n,`CallExpression`)&&n.arguments?.[1]===t)});if(a&&a.length>0&&a.every(e=>{let r=b(e.identifier),i=r.parent;return!!(E(i,`CallExpression`)&&i.arguments.some(e=>e===r)&&(z(i,s)||Gd(i,n.node,t)))}))return!0;let o=M(i);if(o&&o!==t&&w(o)&&!E(o.body,`BlockStatement`)&&P(o.body)===i){let e=Ys(o),i=(e?r.scopes.symbolFor(e):null)?.references??[];if(i.length>0&&i.every(e=>{let i=b(e.identifier),a=i.parent,o=a?.parent,c=o?M(o):null;return!!(E(a,`CallExpression`)&&a.callee===i&&E(o,`CallExpression`)&&o.arguments.some(e=>e===a)&&(z(o,s)||Gd(o,n.node,t)||c&&jf(c,t,n,r)))}))return!0}}if(Nf(i,i,t,n,r)||jf(i,t,n,r)||wpe(e,i,n,r)||Zd(i,{...n,node:e},r))return!0;let c=i.parent;return!!(E(c,`CallExpression`)&&Kn(c)===i&&Mu(c,r)&&Rd(i,n,r))},Nf=(e,t,n,r,i)=>{let a=e.parent;if(!E(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==e||!Vu(a.left,i))return!1;let o=Y(a.left,i),s=M(t);if(!o||!s||!w(s))return!1;let c=!1,l=!1;return D(s.body,e=>{if(l)return!1;if(!E(e,`MemberExpression`)||Y(e,i)!==o)return;let a=b(e),s=a.parent;if(E(s,`AssignmentExpression`)&&s.left===a)return Of(s.right,i)===t?void 0:(l=!0,!1);if(E(s,`IfStatement`)&&s.test===a){let e=!1;if(D(s.consequent,t=>{if(E(t,`CallExpression`)&&Y(P(t.callee),i)===o)return e=!0,!1}),e)return}if(E(s,`CallExpression`)&&s.callee===a&&Mf(s,n,r,i)){c=!0;return}return l=!0,!1}),c&&!l},Tpe=(e,t,n)=>{let r=Ys(e),i=r?n.scopes.symbolFor(r):null;return!i||i.references.length===0?Nf(e,e,e,t,n):i.references.every(r=>{let i=b(r.identifier),a=i.parent;if(E(a,`CallExpression`)&&a.callee===i){let r=M(a),i=!!(r&&jf(r,e,t,n)),o=Mf(a,e,t,n);return i||o}let o=i.parent,s=o?.parent;return E(o,`ArrayExpression`)&&E(s,`CallExpression`)&&s.arguments?.[1]===o?!0:Nf(i,e,e,t,n)})},Pf=(e,t,n)=>{let r=M(e);if(!r||!w(r))return!1;let i=Au.get(n);i||(i=new WeakMap,Au.set(n,i));let a=i.get(r);if(!a){let e=[];D(r.body,t=>{E(t,`CallExpression`)&&M(t)===r&&Mu(t,n)&&e.push(t)}),a=e,i.set(r,a)}if(t.kind===`timer`){let r=tfe(t.node,n),i=Zd(e,t,n),o=e.parent,s=!!(E(o,`CallExpression`)&&Kn(o)===e&&Mu(o,n)),c=i&&(!s||n.cfg.isUnconditionalFromEntry(t.node)),l=(r.size>0?[...r].map(e=>({...t,handleKey:e})):[t]).every(e=>a.some(t=>{let r=Kn(t);return!!(r&&Rd(r,e,n))}));return!!(r.size>0&&l&&(c||Zfe(e,t,n)||Tpe(e,t,n)||Cpe(e,a,n)))}for(let i of a){let a=b(i).parent;if(!E(a,`ExpressionStatement`)||a.parent!==r.body)continue;let o=Kn(i);if(o&&Spe(o,r,e,t,n))return!0}return!1},Epe=(e,t)=>{let r=Ys(e);if(!r)return!1;let i=new Set,a=e=>{let r=t.scopes.symbolFor(e);return!r||i.has(r.id)||r.references.length===0?!1:(i.add(r.id),r.references.every(e=>{let r=b(e.identifier);for(;E(r.parent,`ConditionalExpression`)&&(r.parent.consequent===r||r.parent.alternate===r);)r=b(r.parent);let i=r.parent;if(E(i,`CallExpression`)&&i.arguments?.[0]===r)return n(i,`useSyncExternalStore`,t.scopes);let o=i?.parent;return!!(E(i,`VariableDeclarator`)&&i.init===r&&E(i.id,`Identifier`)&&E(o,`VariableDeclaration`)&&o.kind===`const`&&a(i.id))}))};return a(r)},Dpe=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Ff=e=>{if(!E(e,`CallExpression`))return!1;let t=e.arguments[0],n=e.arguments[1],r=n?P(n):null;if(!t||!w(t)||!r||!E(r,`Literal`)||r.value!==0)return!1;let i=!1,a=!1;return D(t.body,e=>{if(a)return!1;if(!E(e,`CallExpression`))return;let t=Gn(e);if(!t||!Dpe.has(t))return a=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(i=!0)}),i&&!a},Ope=(e,t)=>{if(!e||!w(e))return!1;let n=Ys(e),r=n?t.scopes.symbolFor(n):null;return r?r.references.some(t=>{let n=b(t.identifier),r=n.parent;return!!(E(r,`CallExpression`)&&r.arguments[1]===n&&xu(r)===`addEventListener`&&M(r)===M(e))}):!1},kpe=(e,t)=>{if(!E(e,`CallExpression`)||!t.filename)return!1;let n=P(e.callee);if(!E(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n),i=r?Ue(r):null,a=r?Dn(r.declarationNode):null;if(!i||typeof i.source.value!=`string`||!a)return!1;let o=Nt(t.filename,i.source.value,a);if(!o||!w(o.functionNode))return!1;let s=new Set,c=e=>{if(!w(e)||s.has(e))return!1;s.add(e);let t=!0;return D(e.body,n=>{if(!t||n!==e.body&&w(n))return!1;if(E(n,`CallExpression`)){let e=P(n.callee);if(!E(e,`Identifier`))return t=!1,!1;let r=[];return D(o.programNode,t=>{if(w(t)&&Ys(t)?.name===e.name)return r.push(t),!1}),r.length!==1||!c(r[0])?(t=!1,!1):void 0}if(E(n,`NewExpression`)||E(n,`AssignmentExpression`)||E(n,`UpdateExpression`)||E(n,`AwaitExpression`)||E(n,`YieldExpression`)||E(n,`ThrowStatement`)||E(n,`UnaryExpression`)&&n.operator===`delete`)return t=!1,!1}),t};return c(o.functionNode)},Ape=(e,t,n)=>{if(!w(t)||!kpe(e,n))return!1;let r=e.parent;for(;r&&r!==t.body;){if(E(r,`AssignmentExpression`)&&z(e,r.right)&&Vu(P(r.left),n))return!0;r=r.parent}return!1},If=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?P(r):null;if(!n||!w(n)||!i||!E(i,`Literal`)||typeof i.value!=`number`||i.value<0||i.value>300)return!1;let a=!1,o=!1;return D(n.body,e=>{if(o||e!==n.body&&w(e))return!1;if(E(e,`CallExpression`)&&Ape(e,n,t))return;if(E(e,`CallExpression`)||E(e,`UpdateExpression`))return o=!0,!1;if(!E(e,`AssignmentExpression`))return;let r=P(e.left);if(E(r,`MemberExpression`)&&Vu(r,t)){a=!0;return}return o=!0,!1}),!o&&(a||Ope(M(e),t))},Lf=(e,t)=>{let n=b(e);for(;E(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=b(n.parent);let r=n.parent;return E(r,`ReturnStatement`)&&r.argument===n&&M(r)===t?r:null},Rf=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(E(a,`ReturnStatement`)&&a.argument===i||E(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(E(a,`ChainExpression`)||E(a,`TSAsExpression`)||E(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(E(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||E(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(E(a,`VariableDeclarator`)&&a.init===i&&E(a.id,`Identifier`)&&E(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=M(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:ad(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Lf(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},jpe=(e,t,n)=>{if(!w(e))return null;let r=e.body;if(!r)return null;let i=null,a=n?.allowReturnedResourceEscape!==!1&&!e.async&&!qf(e,t),o=a&&n?.requireCallableReturnedResource!==!0,s=Epe(e,t),c=r=>{if(s)return cf(e,r,t);if(r.kind!==`timer`)return!!(n?.allowReturnedResourceEscape===!0||_f(e,t)||vf(e,t))&&Rd(e,r,t)||Df(r,t)||Pf(e,r,t);if((n?.allowReturnedResourceEscape===!0||_f(e,t)||vf(e,t))&&Rd(e,r,t)||!n?.isEffectInvoked&&(Uu(r.node,t)!==null||Zd(e,r,t))&&Df(r,t)||sf(r,t)||Pf(e,r,t))return!0;let i=M(e),a=i?.parent;return!!(i&&E(a,`CallExpression`)&&Mu(a,t)&&cf(i,r,t))};return D(r,e=>{if(i!==null||w(e)||!H(e,t))return!1;if(Nu(e)&&!Rf(e,o,!1,t)){let n={kind:`socket`,node:e,resourceName:E(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:Ku(e,t),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(E(e,`CallExpression`)){if(E(e.callee,`Identifier`)&&(e.callee.name===`setInterval`||n?.includeOneShotTimers===!0&&e.callee.name===`setTimeout`&&t.scopes.isGlobalReference(e.callee))&&(n?.allowReturnedTimerEscape===!1||!Rf(e,!0,a,t))&&!Ff(e)&&!If(e,t)){let n={kind:`timer`,node:e,resourceName:e.callee.name,handleKey:Ku(e,t,!0),receiverKey:null,registrationVerbName:e.callee.name,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(Su(e)&&(!Rf(e,a,a,t)||n?.requireCallableReturnedResource===!0&&!Cu(e))){let n=nd(e,t),r={kind:`subscribe`,node:e,resourceName:n.registrationVerbName??`subscribe`,handleKey:Ku(e,t),...n};return!epe(e,t)&&!c(r)&&(i=r),!1}}}),i},zf=(e,t)=>{if(!w(e)||e.generator)return null;let n=b(e),r=n.parent;if(!E(r,`AssignmentExpression`)||r.operator!==`=`||r.right!==n)return null;let i=gu(P(r.left),t.scopes);if(!i)return null;let a=J(r,t.scopes);return!w(a)||M(r)!==a||M(i.bindingIdentifier)!==a||!H(r,t)?null:{assignmentNode:r,functionNode:e,refSymbol:i}},Bf=(e,t)=>zf(e,t)?.refSymbol??null,Vf=(e,t,n)=>{let r=b(e),i=r.parent;if(E(i,`VariableDeclarator`)&&i.init===r&&E(i.id,`Identifier`)&&E(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`){let r=n.scopes.symbolFor(i.id);return r?ad(e,r.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Lf(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(E(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=b(e);continue}if(E(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=b(e);continue}if(E(e,`LogicalExpression`)&&e.right===r){r=b(e);continue}break}let a=r.parent;return!!(E(a,`ReturnStatement`)&&a.argument===r&&M(a)===t||E(t,`ArrowFunctionExpression`)&&t.body===r)},Mpe=(e,t,n)=>E(e,`CallExpression`)&&gu(P(e.callee),n.scopes)?.id===t.id,Npe=(e,t)=>{let n=new Map;D(e.body,e=>{if(!w(e))return;let r=zf(e,t);if(r){let e=n.get(r.refSymbol.id)??[];e.push(r),n.set(r.refSymbol.id,e)}return!1});for(let[e,r]of n){let i=r.filter(e=>!ad(e.assignmentNode,r.filter(t=>t!==e).map(e=>e.assignmentNode),t));i.length===0?n.delete(e):n.set(e,i)}return n},Hf=(e,t,n)=>{if(!w(e))return[];let r=[],i=[];return D(e.body,a=>{if(a!==e.body&&w(a))return!1;E(a,`AssignmentExpression`)&&H(a,n)&&gu(P(a.left),n.scopes)?.id===t.id&&r.push(a),Mpe(a,t,n)&&H(a,n)&&i.push(a)}),i.filter(t=>!kf(t,r,e,n))},Uf=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},Ppe=(e,t)=>{let n=Du.get(t);n||(n=new WeakMap,Du.set(t,n));let r=n.get(e);if(r)return r;let i=Npe(e,t),a=new Map;D(e.body,n=>{if(n!==e.body&&w(n))return!1;if(!E(n,`CallExpression`)||M(n)!==e||!Mu(n,t))return;let r=Kn(n);if(w(r))for(let e of i.values()){let n=e[0]?.refSymbol;if(n)for(let e of Hf(r,n,t))Uf(a,n.id,!r.async&&Vf(e,r,t))}});let o=!0;for(;o;){o=!1;for(let e of i.values()){let n=e[0]?.refSymbol;if(!n)continue;let r=a.get(n.id);if(r)for(let n of e)for(let e of i.values()){let i=e[0]?.refSymbol;if(i)for(let e of Hf(n.functionNode,i,t)){let s=r.doesEffectOwnEveryResult&&!n.functionNode.async&&Vf(e,n.functionNode,t);Uf(a,i.id,s)&&(o=!0)}}}}let s={callbackDefinitionsByRefSymbolId:i,usageByRefSymbolId:a};return n.set(e,s),s},Wf=(e,t)=>{if(!w(e))return null;let n=zf(e,t),r=J(e,t.scopes);if(!n||!w(r))return null;let i=Ppe(r,t);return i.callbackDefinitionsByRefSymbolId.get(n.refSymbol.id)?.some(t=>t.functionNode===e)?i.usageByRefSymbolId.get(n.refSymbol.id)??null:null},Fpe=(t,n,r,i)=>{if(!w(t)||t.async||Wf(t,i)?.doesEffectOwnEveryResult!==!0||!E(t.body,`BlockStatement`))return!1;let a=t=>{let r=Of(e(t),i);if(!r)return!1;if(r===n)return!0;if(!w(r))return!1;let a=[];return D(r.body,e=>{if(e!==r.body&&w(e))return!1;E(e,`CallExpression`)&&Of(e.callee,i)===n&&a.push(e)}),Aa(r,a,i)},o=[];return yu(t.body,e=>{E(e,`ReturnStatement`)&&e.argument&&a(e.argument)&&o.push(e)}),ad(r.node,o,i)},Ipe=(e,t,n)=>{if(!w(e)||!E(e.body,`BlockStatement`))return!1;let r=!1;return yu(e.body,e=>{r||!E(e,`ReturnStatement`)||!e.argument||D(e.argument,e=>{if(Of(e,n)===t)return r=!0,!1})}),r},Gf=e=>E(e,`FunctionDeclaration`)?ou(e)!==null:!E(e,`ArrowFunctionExpression`)&&!E(e,`FunctionExpression`)||!E(e.parent,`VariableDeclarator`)?!1:ou(e)!==null,Kf=e=>{let t=b(e),n=t.parent;return E(n,`JSXExpressionContainer`)&&n.expression===t&&mu(n.parent)},qf=(e,t)=>{if(!w(e))return!1;let n=b(e),r=n.parent;if(E(r,`CallExpression`)&&r.arguments?.[0]===n&&Vn(r,`useCallback`,t.scopes)&&Kf(r))return!0;let i=e.parent;if(Kf(e))return!0;if(!E(i,`Property`)||i.value!==e||i.computed)return!1;let a=A(i);if(!a||!/^on[A-Z]/.test(a))return!1;let o=i.parent;if(!E(o,`ObjectExpression`))return!1;let s=o.parent;return(E(s,`CallExpression`)&&s.arguments.some(e=>e===o)||E(s,`JSXExpressionContainer`))&&J(i,t.scopes)!==null},Jf=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=P(e);return E(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:E(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||E(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:E(n,`ArrayExpression`)||E(n,`ArrowFunctionExpression`)||E(n,`ClassExpression`)||E(n,`FunctionExpression`)||E(n,`NewExpression`)||E(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},Yf=(e,t,n)=>{let r=P(e),i=Jf(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(E(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(E(r,`UnaryExpression`)&&r.operator===`!`){let e=Yf(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(E(r,`LogicalExpression`)){let e=Yf(r.left,t,n),i=Yf(r.right,t,n);return r.operator===`&&`?e===`falsy`||i===`falsy`?`falsy`:e===`truthy`&&i===`truthy`?`truthy`:`unknown`:r.operator===`||`?e===`truthy`||i===`truthy`?`truthy`:e===`falsy`&&i===`falsy`?`falsy`:`unknown`:`unknown`}if(E(r,`ConditionalExpression`)){let e=Yf(r.test,t,n);if(e===`truthy`)return Yf(r.consequent,t,n);if(e===`falsy`)return Yf(r.alternate,t,n);let i=Yf(r.consequent,t,n);return i===Yf(r.alternate,t,n)?i:`unknown`}return E(r,`CallExpression`)&&E(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&j(r.arguments[0])?Yf(r.arguments[0],t,n):`unknown`},Lpe=(e,t,n,r)=>{let i=new Map;if(!w(e)||!t.isDirect)return i;for(let[a,o]of e.params.entries()){let e=t.call.arguments[a],s=e&&j(e)?e:null,c=null,l=Jf(s,r);if(E(o,`Identifier`)?c=o:E(o,`AssignmentPattern`)&&E(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=Jf(o.right,r))):E(o,`RestElement`)&&E(o.argument,`Identifier`)&&(c=o.argument,l={isDefinitelyUndefined:!1,truthiness:`truthy`}),!c)continue;let u=r.scopes.symbolFor(c);if(!u)continue;let d=u.references.some(e=>e.flag!==`read`&&e.identifier.range[0]<n.range[0]);i.set(u.id,d?{isDefinitelyUndefined:!1,truthiness:`unknown`}:l)}return i},Rpe=(e,t,n,r)=>{if(!n.isDirect)return!1;let i=Lpe(e,n,t,r),a=t,o=t.parent??null;for(;o&&o!==e;){if(E(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!E(t,`IfStatement`)||t.alternate||!hu(t.consequent))&&Yf(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(E(o,`IfStatement`)||E(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):E(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((E(o,`WhileStatement`)||E(o,`DoWhileStatement`))&&o.body===a||E(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=Yf(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},zpe=(e,t)=>{if(!w(e))return[];let n=M(e);if(!n||!w(n))return[];let r=Ou.get(t);r||(r=new WeakMap,Ou.set(t,r));let i=r.get(n);if(i)return i.get(e)??[];let a=new Map,o=(e,t,n)=>{if(!e)return;let r=a.get(e)??[];r.push({call:t,isDirect:n}),a.set(e,r)};return D(n.body,e=>{if(!E(e,`CallExpression`)||M(e)!==n||!Mu(e,t))return;let r=Kn(e);!r||!w(r)||D(r.body,e=>{if(e!==r.body&&w(e))return!1;if(!(!E(e,`CallExpression`)||!H(e,t))){o(Of(e.callee,t),e,!0);for(let n of e.arguments)!j(n)||!$l(e,n)||o(Of(n,t),e,!1)}})}),r.set(n,a),a.get(e)??[]},Xf=C({id:`effect-needs-cleanup`,title:`Effect subscription or timer never cleaned up`,severity:`error`,tags:[`test-noise`],recommendation:"Return a cleanup function that stops the subscription or timer: `return () => target.removeEventListener(name, handler)` for listeners, `return () => clearInterval(id)` or `clearTimeout(id)` for timers, `return () => observer.disconnect()` for observers, `return () => socket.close()` for connections, or `return unsubscribe` if the subscribe call already gave you one.",create:e=>{let t=t=>{let n=Wf(t,e);if(!n&&!Ef(t,e))return;let r=zpe(t,e),i=r.length>0,a=jpe(t,e,n?{allowReturnedResourceEscape:n.doesEffectOwnEveryResult,allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0,requireCallableReturnedResource:!0}:i?{allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0}:void 0);if(!a||i&&a.resourceName===`setTimeout`&&(!H(a.node,e)||w(t)&&t.params.length>0&&!e.cfg.isUnconditionalFromEntry(a.node)&&r.every(n=>Rpe(t,a.node,n,e))))return;let o=ju[a.kind];e.report({node:a.node,message:`\`${a.resourceName}\` creates a ${o} in a function that outlives the render, with no cleanup path. Store the handle and release it, or move this into a useEffect that returns cleanup, so it does not leak after unmount.`})};return{CallExpression(n){if(Vn(n,`useCallback`,e.scopes)){let r=Kn(n);r&&!qf(r,e)&&t(r);return}if(!Mu(n,e))return;let r=Kn(n);if(!r)return;let i=lfe(r,cfe(r,e),e);if(i.length===0)return;let a=Qfe(r,i,e);if(!a)return;let o=ju[a.kind],s=Gn(n)??`effect`;e.report({node:n,message:`\`${a.resourceName}\` creates a ${o} in ${s} without guaranteed cleanup. Return a cleanup function that owns every allocation so it does not leak after unmount.`})},FunctionDeclaration(e){Gf(e)&&t(e)},ArrowFunctionExpression(n){(Gf(n)||qf(n,e)||Bf(n,e))&&t(n)},FunctionExpression(n){(Gf(n)||qf(n,e)||Bf(n,e))&&t(n)}}}}),Bpe=new Set([`window`,`globalThis`,`self`]),Vpe=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),Hpe=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=b(e.identifier),n=t.parent;return!E(n,`MemberExpression`)||n.object!==t?!1:E(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(E(n.parent,`CallExpression`)&&n.parent.callee===n&&Vpe.has(k(n)??``))}),Upe=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||Hpe(e))return null;r.add(e.id);let i=Ds(e);if(!i)return n;let a=P(i);if(!E(a,`Identifier`))return n;n=a}},Wpe=e=>{let t=M(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(E(n,`ConditionalExpression`)||E(n,`IfStatement`)||E(n,`LogicalExpression`)||E(n,`SwitchStatement`)||E(n,`ForStatement`)||E(n,`ForInStatement`)||E(n,`ForOfStatement`)||E(n,`WhileStatement`)||E(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},Zf=(e,t,n)=>{let r=M(e);if(!r||!w(r))return null;let i=b(r),a=i.parent;if(!E(a,`CallExpression`)||!a.arguments.some(e=>e===i))return null;let o=P(a.callee);if(!E(o,`MemberExpression`)||k(o)!==`forEach`||r.async||!Wpe(a))return null;let s=P(o.object);if(!E(s,`Identifier`))return null;let c=Upe(s,n);if(!c)return null;let l=La({node:c,scopes:n.scopes});if(!l)return null;let u=new Set,d=e=>{let t=P(e);if(E(t,`Identifier`)){let e=n.scopes.symbolFor(t);if(!e||e.references.some(e=>e.flag!==`read`))return null;let i=r.params.findIndex(t=>n.scopes.symbolFor(t)?.bindingIdentifier===e?.bindingIdentifier);if(i>=0)return`$${i}`;let a=Ds(e);return a&&!u.has(e.id)&&M(e.declarationNode)===r?(u.add(e.id),d(a)):La({node:t,scopes:n.scopes})}if(E(t,`Literal`))return JSON.stringify(t.value);if(E(t,`MemberExpression`)){let e=d(t.object),n=k(t);return e&&n?`${e}.${n}`:null}if(E(t,`CallExpression`)){let e=P(t.callee);if(!E(e,`MemberExpression`)||k(e)!==`getElementById`)return null;let r=P(e.object);if(!E(r,`Identifier`)||r.name!==`document`||!n.scopes.isGlobalReference(r))return null;let i=t.arguments.map(e=>E(e,`SpreadElement`)?null:d(e));return i.every(e=>e!==null)?`document.getElementById(${i.join(`,`)})`:null}return null},f=d(t);if(!f)return null;u.clear();let p=[],m=e,h=e.parent??null;for(;h&&h!==r;){if(E(h,`IfStatement`)){let e=h.consequent===m?`truthy`:`falsy`,t=d(h.test);if(!t)return null;p.push(`${e}:${t}`)}else if(E(h,`ConditionalExpression`)||E(h,`LogicalExpression`)||E(h,`SwitchStatement`)||E(h,`ForStatement`)||E(h,`ForInStatement`)||E(h,`ForOfStatement`)||E(h,`WhileStatement`)||E(h,`DoWhileStatement`))return null;m=h,h=h.parent??null}return h===r?`${l}:${p.join(`&`)}:${f}`:null},Qf=(e,t,n)=>{let r=T(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=b(e),a=i.parent;if(!(E(a,`VariableDeclarator`)&&a.id===e)&&!(E(a,`VariableDeclarator`)&&a.init===i)&&!(E(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(E(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(E(a,`MemberExpression`)&&a.object===i){let e=k(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!E(r,`CallExpression`)||r.callee!==a)return;if(e===`observe`){t.didObserve=!0,t.didReleaseAll=!1,t.observationCalls.push(r);let e=r.arguments?.[0],i=e?Zf(r,e,n):null,a=e?La({node:e,scopes:n.scopes}):null;i?t.observedIterationTargetKeys.add(i):a?t.observedTargetKeys.add(a):t.didObserveUnknownTarget=!0;return}if(e===`disconnect`&&t.didObserve){t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear();return}if(e===`unobserve`&&t.didObserve){let e=r.arguments?.[0],i=e?Zf(r,e,n):null,a=e?La({node:e,scopes:n.scopes}):null;i&&t.observedIterationTargetKeys.has(i)?t.observedIterationTargetKeys.delete(i):a&&t.observedTargetKeys.has(a)&&t.observedTargetKeys.delete(a)}return}if(E(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=P(a.callee);if(E(e,`MemberExpression`)&&k(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},Gpe=(e,t,n)=>{let r=!1;return Ra(e,e=>{E(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},Kpe=(e,t,n,r)=>{if(!n)return!1;let i=P(e);if(!E(i,`MemberExpression`)||k(i)!==`target`)return!1;let a=P(i.object);if(!E(a,`Identifier`))return!1;let o=r.symbolFor(a)?.bindingIdentifier;if(!o)return!1;let s=M(a);if(!s||s===t||!w(s))return!1;let c=b(s),l=c.parent;if(!E(l,`CallExpression`)||!l.arguments.some(e=>e===c))return!1;let u=P(l.callee);return E(u,`MemberExpression`)&&k(u)===`forEach`&&Gpe(u.object,n,r)&&(s.params??[]).some(e=>r.symbolFor(e)?.bindingIdentifier===o)},qpe=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?P(e.arguments[0]):null;if(!r||!E(r,`ArrowFunctionExpression`)&&!E(r,`FunctionExpression`))return n;let i=r,a=i.params?.[0],o=a?t.symbolFor(a)?.bindingIdentifier??null:null,s=i.params?.[1];if(!s||!E(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&Ra(i,e=>{if(!E(e,`CallExpression`))return;let r=P(e.callee);if(!E(r,`MemberExpression`))return;let a=P(r.object);if(!E(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=k(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(Kpe(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=La({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},$f=(e,t)=>{let n=P(e),r=E(n,`Identifier`)?T(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},ep=(e,t,n=new Set)=>{let r=P(e);if(n.has(r))return!1;if(n.add(r),E(r,`Identifier`)){let e=T(r,r.name)?.initializer;return e?ep(e,t,n):!1}let i=E(r,`CallExpression`)?P(r.callee):null,a=E(i,`MemberExpression`)?P(i.object):null;if(!E(r,`CallExpression`)||!E(i,`MemberExpression`)||k(i)!==`bind`||!E(a,`MemberExpression`)||k(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&$f(a.object,t)&&$f(o,t))},Jpe=(e,t)=>{let n=new Set;for(let r of e.bindingIdentifiers){let e=t.scopes.symbolFor(r);if(e)for(let t of e.references){let e=b(t.identifier),r=e.parent;if(!E(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=P(r.callee);E(i,`MemberExpression`)&&k(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!ka(e,[r],t)))return null;let i=P(r.callee);if(!E(i,`MemberExpression`))return null;let a=P(i.object);if(!E(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?P(o.initializer):null;return!o||o.kind!==`const`||!E(s,`ArrayExpression`)||(s.elements?.length??0)!==0||M(o.declarationNode)!==M(e.construction)||!o.references.every(e=>{let t=b(e.identifier),n=t.parent,r=n?.parent;return!!(E(n,`MemberExpression`)&&n.object===t&&E(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(k(n)??``))})?null:La({node:a,scopes:t.scopes})},Ype=(e,t)=>{if(!w(e)||e.async||e.generator)return!1;let n=e.params?.[0];if(!n||!E(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n)?.bindingIdentifier;if(!r)return!1;let i=[];return Ra(e,e=>{if(!E(e,`CallExpression`))return;let n=P(e.callee);if(!E(n,`MemberExpression`)||k(n)!==`disconnect`)return;let a=P(n.object);E(a,`Identifier`)&&t.scopes.symbolFor(a)?.bindingIdentifier===r&&i.push(e)}),Aa(e,i,t)},Xpe=(e,t,n,r)=>{let i=e=>{if(!w(e)||e.async||e.generator)return!1;let t=[];return D(e.body,i=>{if(!E(i,`CallExpression`)||M(i)!==e)return;let a=P(i.callee);if(!E(a,`MemberExpression`)||k(a)!==`forEach`||La({node:a.object,scopes:r.scopes})!==n)return;let o=i.arguments?.[0];o&&Ype(o,r)&&t.push(i)}),Aa(e,t,r)};if(!w(e))return!1;if(!E(e.body,`BlockStatement`)){let t=vc(e.body,e,r.scopes);return t.length>0&&t.every(i)}let a=he(e).filter(e=>{if(!e.argument)return!1;let t=vc(e.argument,e,r.scopes);return t.length>0&&t.every(i)});return t.every(e=>ka(e,a,r))},tp=C({id:`effect-observer-needs-disconnect`,title:`Observer created in an effect never disconnected`,severity:`error`,category:`Bugs`,recommendation:"Return a cleanup function that calls `observer.disconnect()` (or `observer.unobserve(node)`) so the observer stops firing callbacks against detached nodes after unmount instead of leaking on every mount.",create:e=>({CallExpression(t){if(!Sc(t,e.scopes))return;let n=Kn(t);if(!w(n))return;let r=new Map;if(Ra(n,t=>{if(!E(t,`NewExpression`))return;let n=P(t.callee);if(!(E(n,`Identifier`)?we.has(n.name)&&!T(n,n.name):E(n,`MemberExpression`)&&E(P(n.object),`Identifier`)&&Bpe.has(P(n.object).name)&&!T(n.object,P(n.object).name)&&we.has(k(n)??``)))return;let i=b(t),a=i.parent;if(!E(a,`VariableDeclarator`)||a.init!==i||!(E(a.id,`Identifier`)&&a.id.name))return;let o=qpe(t,e.scopes);r.set(a.id,{construction:t,bindingIdentifier:a.id,bindingIdentifiers:new Set([a.id]),didObserve:!1,didObserveUnknownTarget:!1,didReleaseAll:!1,didReleaseAllViaCallbackParameter:o.didReleaseAll||o.didReleaseObservedEntries,callbackReleasedTargetKeys:o.releasedTargetKeys,didEscape:!1,observationCalls:[],observedIterationTargetKeys:new Set,observedTargetKeys:new Set})}),r.size===0)return;for(let t of[...r.values()]){let n=bc(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)r.set(e,t)}let i=new Set(r.values());Ra(n,t=>{if(!E(t,`Identifier`))return;let n=T(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&Qf(t,i,e)});for(let t of yc(n))Ra(t,t=>{if(!E(t,`Identifier`))return;let n=T(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&Qf(t,i,e)});for(let t of i){for(let e of t.callbackReleasedTargetKeys)t.observedTargetKeys.delete(e);let n=t.construction.arguments?.[0];!n||!w(P(n))||Ra(P(n),n=>{if(!E(n,`Identifier`))return;let i=T(n,n.name)?.bindingIdentifier;i&&r.get(i)===t&&Qf(n,t,e)})}let a=E(n.body,`BlockStatement`)?he(n).flatMap(e=>e.argument?[e.argument]:[]):[n.body];for(let t of i){a.some(e=>ep(e,t.bindingIdentifiers))&&(t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear());let r=!t.didObserveUnknownTarget&&t.observedIterationTargetKeys.size===0&&t.observedTargetKeys.size===0;if(!t.didObserve||t.didReleaseAll||t.didReleaseAllViaCallbackParameter||r)continue;let i=Jpe(t,e);i&&Xpe(n,t.observationCalls,i,e)||e.report({node:t.construction,message:"This observer is created and started in the effect but never disconnected, so it keeps firing against detached nodes and leaks one observer per mount; return a cleanup that calls `disconnect()` or `unobserve()`."})}}})}),np=`cancelAnimationFrame`,rp=`collection-values:`,Zpe=new Set([`min`,`max`]),ip=e=>E(e,`CallExpression`)&&op(e,`requestAnimationFrame`),ap=new Set([`window`,`globalThis`,`self`]),op=(e,t)=>{let n=P(e.callee);if(E(n,`Identifier`))return n.name===t&&!T(n,n.name);if(!E(n,`MemberExpression`)||k(n)!==t)return!1;let r=P(n.object);return E(r,`Identifier`)&&ap.has(r.name)&&!T(r,r.name)},sp=e=>{if(!e)return null;let t=P(e);if(E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`))return t;if(E(t,`Identifier`)){let e=T(t,t.name)?.initializer;if(w(e))return e}return null},cp=(e,t,n)=>{let r=new Set,i=P(e);if(E(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of bc(e,n))r.add(t)}if((E(t,`FunctionExpression`)||E(t,`FunctionDeclaration`))&&t.id&&E(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of bc(e,n))r.add(t)}return r},lp=(e,t,n)=>{let r=P(e);return E(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},Qpe=(e,t,n)=>{let r=!1;return Ra(e,e=>{if(r)return!1;if(!ip(e))return;let i=e.arguments?.[0];if(i&&lp(i,t,n))return r=!0,!1}),r},$pe=(e,t)=>{let n=[];return Ra(e,e=>{if(!ip(e))return;let r=e.arguments?.[0];if(!r)return;let i=sp(r);i&&Qpe(i,cp(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},up=e=>{let t=P(e);if(E(t,`Identifier`)){let e=T(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=up(e.initializer);if(t&&t!==n)return t}return n}if(!E(t,`MemberExpression`))return null;let n=up(t.object),r=k(t);return n&&r?`${n}.${r}`:null},eme=e=>{let t=b(e),n=t.parent;if(E(n,`AssignmentExpression`)&&n.right===t)return up(n.left);if(E(n,`VariableDeclarator`)&&n.init===t&&E(n.id,`Identifier`))return up(n.id);if(E(n,`CallExpression`)&&E(n.callee,`MemberExpression`)){let e=k(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?up(n.callee.object):null;if(i)return`${rp}${i}`}return null},dp=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=cp(n,e.scheduledFunction,t),i=[e.rafCall];return Ra(e.scheduledFunction,e=>{if(!ip(e))return;let n=e.arguments?.[0];n&&lp(n,r,t)&&i.push(e)}),i},tme=e=>{let t=b(e),n=t.parent;return E(n,`AssignmentExpression`)&&n.right===t?n.left:E(n,`VariableDeclarator`)&&n.init===t&&E(n.id,`Identifier`)?n.id:null},fp=(e,t,n)=>{let r=[...n].filter(t=>{let n=t;for(;n&&n!==e;){if(w(n))return!1;n=n.parent}return n===e}).map(e=>e.range[0]),i=!1;return D(e,a=>{if(i||a!==e&&w(a))return!1;let o=E(a,`AssignmentExpression`)?a.left:E(a,`UpdateExpression`)?a.argument:null;if(o&&!n.has(o)&&up(o)===t&&r.some(e=>e<o.range[0]))return i=!0,!1}),i},nme=(e,t,n)=>{let r=dp(e,n),i=r.map(eme),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(rp))return a;let o=new Set(r.flatMap(e=>{let t=tme(e);return t?[t]:[]}));return fp(t,a,o)||fp(e.scheduledFunction,a,o)?null:a},rme=(e,t,n)=>{let r=!1;return Ra(e,e=>{if(r||!E(e,`CallExpression`))return;let i=P(e.callee);if(!E(i,`MemberExpression`)||k(i)!==`forEach`||up(i.object)!==t)return;let a=e.arguments?.[0],o=a&&!E(a,`SpreadElement`)?sp(a):null;if(!w(o))return;let s=o.params?.[0];E(s,`Identifier`)&&D(o,e=>{if(r||e!==o&&w(e))return!1;if(!E(e,`CallExpression`))return;let t=e.arguments?.[0];if(pp(e)&&E(t,`Identifier`)&&n.symbolFor(t)?.bindingIdentifier===n.symbolFor(s)?.bindingIdentifier)return r=!0,!1})}),r},ime=(e,t,n)=>{if(t.startsWith(rp))return rme(e,t.slice(18),n);let r=!1;return Ra(e,e=>{if(r||!E(e,`CallExpression`)||!pp(e))return;let n=e.arguments?.[0];n&&up(n)===t&&(r=!0)}),r},pp=e=>{if(op(e,np))return!0;let t=P(e.callee);if(!E(t,`Identifier`))return!1;let n=T(t,t.name)?.bindingIdentifier?.parent;if(!E(n,`Property`)||(E(n.key,`Identifier`)?n.key.name:E(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==np)return!1;let r=n.parent,i=r?.parent;if(!E(r,`ObjectPattern`)||!E(i,`VariableDeclarator`))return!1;let a=i.init?P(i.init):null;return E(a,`Identifier`)&&ap.has(a.name)&&!T(a,a.name)},ame=(e,t)=>{Ra(e,e=>{let n=E(e,`AssignmentExpression`)?e.left:E(e,`UpdateExpression`)?e.argument:null;if(E(n,`Identifier`)){let e=up(n);e&&t.add(e)}else if(E(n,`MemberExpression`)){let e=up(n);e&&t.add(e)}})},ome=(e,t,n)=>{if(E(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!E(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return vp(e.right);if(e.operator!==`=`)return!1;let r=P(e.right),i=E(r,`BinaryExpression`)?P(r.left):null;return E(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&E(i,`Identifier`)&&up(i)===t&&vp(r.right)},mp=(e,t)=>{let n=new Set,r=new Set;Ra(e,e=>{let i=E(e,`AssignmentExpression`)?e.left:E(e,`UpdateExpression`)?e.argument:null;if(!E(i,`Identifier`))return;let a=up(i);a&&(ome(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},sme=(e,t)=>{let n=E(e,`AssignmentExpression`)?e.left:E(e,`UpdateExpression`)?e.argument:null;if(!E(n,`Identifier`)&&!E(n,`MemberExpression`))return;let r=up(n);if(!r)return;if(E(e,`UpdateExpression`)||E(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!E(e,`AssignmentExpression`))return;let i=P(e.right);if(!E(i,`Literal`)||typeof i.value!=`boolean`){t.booleanValues.delete(r),t.changedFromSnapshotKeys.delete(r);return}t.changedFromSnapshotKeys.delete(r),t.booleanValues.set(r,i.value)},cme=e=>E(e,`IfStatement`)||E(e,`ConditionalExpression`)||E(e,`LogicalExpression`)||E(e,`SwitchStatement`)||E(e,`TryStatement`)||E(e,`ForStatement`)||E(e,`ForInStatement`)||E(e,`ForOfStatement`)||E(e,`WhileStatement`)||E(e,`DoWhileStatement`),lme=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(cme(n))return!1;n=n.parent}return n===t||e===t},ume=(e,t)=>{let n={booleanValues:new Map,changedFromSnapshotKeys:new Set},r=new Set,i=e=>{r.has(e)||(r.add(e),Ra(e,r=>{if(!lme(r,e)||(sme(r,n),!E(r,`CallExpression`)))return;let a=r.callee;if(E(a,`Identifier`)){let e=up(a);D(t,t=>{E(t,`VariableDeclarator`)&&E(t.id,`Identifier`)&&up(t.id)===e&&t.init&&w(t.init)&&i(t.init)});return}if(E(a,`MemberExpression`)){let e=up(a);if(!e)return;if(k(a)===`abort`){let e=up(a.object);e&&n.booleanValues.set(`${e}.signal.aborted`,!0)}D(t,t=>{E(t,`AssignmentExpression`)&&E(t.left,`MemberExpression`)&&up(t.left)===e&&t.right&&w(t.right)&&i(t.right)})}}))};return i(e),n},hp=(e,t)=>{let n=P(e);if(E(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(E(n,`Identifier`)||E(n,`MemberExpression`)){let e=up(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(E(n,`UnaryExpression`)&&n.operator===`!`){let e=hp(n.argument,t);return e===null?null:!e}if(E(n,`LogicalExpression`)){let e=hp(n.left,t);if(n.operator===`??`)return e;let r=hp(n.right,t);return n.operator===`&&`?e===!1||r===!1?!1:e===!0?r:null:e===!0||r===!0?!0:e===!1?r:null}if(!E(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=hp(n.left,t),o=hp(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=up(n.left),c=up(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},gp=e=>E(e,`ReturnStatement`)||E(e,`ThrowStatement`)?!0:E(e,`BlockStatement`)&&!!e.body?.some(e=>gp(e))||E(e,`IfStatement`)&&!!e.alternate&&gp(e.consequent)&&gp(e.alternate),_p=(e,t,n)=>{let r=hp(e,n);return r!==null&&r!==t},dme=(e,t,n)=>{let r=hp(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},fme=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((E(e,`IfStatement`)||E(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&_p(e.test,e.consequent===r,n)||E(e,`LogicalExpression`)&&e.right===r&&dme(e.left,e.operator,n))return!0;if(E(e,`BlockStatement`)){let t=e.body.findIndex(e=>e===r);if(t>=0)for(let r of e.body.slice(0,t)){let e=r;if(E(e,`IfStatement`)&&(gp(e.consequent)&&_p(e.test,!1,n)||e.alternate&&gp(e.alternate)&&_p(e.test,!0,n)))return!0}}r=e}return!1},pme=(e,t,n)=>{let r=dp(e,n).slice(1);return r.length>0&&r.every(n=>fme(n,e.scheduledFunction,t))},vp=e=>E(e,`Literal`)&&typeof e.value==`number`&&e.value>0,mme=(e,t)=>{let n=P(e);return E(n,`Literal`)&&typeof n.value==`number`||E(n,`Identifier`)&&!t.has(up(n)??``)},yp=(e,t,n)=>{let r=P(e);if(E(r,`Identifier`)){let e=up(r);return e?t.has(e):!1}if(E(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return yp(r.left,t,n)&&mme(r.right,n);if(r.operator===`*`||r.operator===`/`)return yp(r.left,t,n)&&vp(r.right)}if(!E(r,`CallExpression`))return!1;let i=P(r.callee),a=E(i,`MemberExpression`)?P(i.object):null;if(!E(i,`MemberExpression`)||!E(a,`Identifier`)||a.name!==`Math`||T(a,a.name)||!Zpe.has(k(i)??``))return!1;let o=!1;for(let e of r.arguments){if(yp(e,t,n)){o=!0;continue}if(!E(e,`Literal`)||typeof e.value!=`number`)return!1}return o},bp=(e,t,n,r,i)=>{let a=P(e);if(E(a,`UnaryExpression`)&&a.operator===`!`)return bp(a.argument,t,n,r,!i);if(E(a,`LogicalExpression`)&&a.operator!==`??`)return bp(a.left,t,n,r,i)&&bp(a.right,t,n,r,i);if(!E(a,`BinaryExpression`))return!1;let o=yp(a.left,t,r)&&E(a.right,`Literal`)&&typeof a.right.value==`number`,s=E(a.left,`Literal`)&&typeof a.left.value==`number`&&yp(a.right,t,r),c=(a.operator===`<`||a.operator===`<=`)&&o||(a.operator===`>`||a.operator===`>=`)&&s,l=(a.operator===`>`||a.operator===`>=`)&&o||(a.operator===`<`||a.operator===`<=`)&&s;if(i?c:l)return!0;let u=yp(a.left,n,r)&&E(a.right,`Literal`)&&typeof a.right.value==`number`,d=E(a.left,`Literal`)&&typeof a.left.value==`number`&&yp(a.right,n,r),f=(a.operator===`>`||a.operator===`>=`)&&u||(a.operator===`<`||a.operator===`<=`)&&d,p=(a.operator===`<`||a.operator===`<=`)&&u||(a.operator===`>`||a.operator===`>=`)&&d;return i?f:p},hme=(e,t)=>{let n=e.scheduledFunction,r=new Set;ame(n,r);let i=mp(n,!0),a=mp(n,!1);if(w(n)){for(let e of n.params??[])if(E(e,`Identifier`)){let t=up(e);t&&!r.has(t)&&i.add(t)}}let o=!0;for(;o;)o=!1,Ra(n,e=>{if(!E(e,`VariableDeclarator`)||!e.init)return;let t=E(e.id,`Identifier`)?up(e.id):null;!t||i.has(t)||a.has(t)||r.has(t)||(yp(e.init,i,r)?(i.add(t),o=!0):yp(e.init,a,r)&&(a.add(t),o=!0))});if(i.size===0&&a.size===0)return!1;let s=dp(e,t).slice(1);if(s.length===0)return!1;for(let e of s){let t=!1,o=e,s=e.parent;for(;s&&s!==n;){if((E(s,`IfStatement`)||E(s,`ConditionalExpression`))&&(s.consequent===o||s.alternate===o)&&bp(s.test,i,a,r,s.consequent===o)){t=!0;break}o=s,s=s.parent??null}if(!t)return!1}return!0},gme=C({id:`effect-raf-loop-needs-cancel`,title:`requestAnimationFrame loop never cancelled`,severity:`warn`,category:`Bugs`,recommendation:"Store the frame id and return a cleanup that calls `cancelAnimationFrame(id)` so self-scheduling work cannot continue after unmount.",create:e=>({CallExpression(t){if(!Sc(t,e.scopes))return;let n=Kn(t);if(!n)return;let r=yc(n);for(let t of $pe(n,e.scopes)){if(hme(t,e.scopes))continue;let i=nme(t,n,e.scopes);i&&r.some(t=>ime(t,i,e.scopes))||r.some(r=>pme(t,ume(r,n),e.scopes))||e.report({node:t.rafCall,message:`This requestAnimationFrame loop can schedule another frame but is never cancelled, so pending work may continue after unmount; store every frame id in one handle and cancel that handle from the returned effect cleanup.`})}}})}),_me=new Set([`removeEventListener`,`removeListener`,`off`]),vme=/(?:duration|delay|timeout|ms)$/i,yme=e=>{let t=P(e);if(E(t,`Literal`)&&typeof t.value==`number`)return!0;if(!E(t,`Identifier`))return!1;if(vme.test(t.name))return!0;let n=T(t,t.name);if(!n?.initializer)return!1;let r=P(n.initializer);return E(r,`Literal`)&&typeof r.value==`number`},bme=e=>{let t=P(e);return Mi(t)?!0:E(t,`CallExpression`)&&E(t.callee,`MemberExpression`)&&k(t.callee)===`bind`},xme=new Set([`addEventListener`,`addListener`,`on`,`once`]),Sme=`handler-only`,Cme=(e,t)=>{let n=new Set;return D(e,e=>{if(!E(e,`CallExpression`))return;let r=P(e.callee);if(!E(r,`MemberExpression`))return;let i=k(r);if(!i||!xme.has(i))return;let a=La({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?Sme:Ll(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},wme=C({id:`effect-remove-listener-inline-handler`,title:`removeEventListener called with a fresh inline handler`,severity:`error`,category:`Bugs`,tags:[`test-noise`],recommendation:"Removal APIs match the listener by reference equality, so a fresh inline arrow, function expression, or `.bind(...)` result can never equal the registered handler; hoist the handler into a named const and pass that same reference to both the add and remove calls.",create:e=>{let t=new WeakMap;return{CallExpression(n){let r=P(n.callee);if(!E(r,`MemberExpression`))return;let i=k(r);if(!i||!_me.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&yme(a[0])||!bme(s))return;let c=La({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?Sme:Ll(a[0],e.scopes),u=x(n);if(!c||!l||!u)return;let d=t.get(u);d||(d=Cme(u,e.scopes),t.set(u,d)),d.has(JSON.stringify([c,l]))&&e.report({node:s,message:`\`${i}\` gets a brand-new function reference here that never equals the registered listener, so this removal silently no-ops; pass the same named handler to both the add and remove calls.`})}}}}),Tme=new Set([`columnheader`,`rowheader`]),Eme=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=R(e.attributes,t,!1);if(!n)continue;let r=L(n);if(r===null||r.trim().length>0)return!0}return!1},Dme=C({id:`empty-table-header`,title:`Table header has no accessible text`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Give every table header concise text or an explicit accessible name.`,create:e=>({JSXElement(t){let n=t.openingElement,r=O(n);if(/^[A-Z]/.test(r))return;let i=R(n.attributes,`role`,!1),a=i?L(i)?.toLowerCase():null;r!==`th`&&(!a||!Tme.has(a))||Dr(t,e.settings)||Eme(n)||e.report({node:n,message:`This table header has no accessible text, so users cannot tell what its cells represent. Add header text or an accessible name.`})}})}),Ome=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set;return D(e,a=>{if(a!==e&&w(a)){let e=xp(a,t);for(let t of e)t.resolvedSymbol&&!Qt(t.resolvedSymbol.scope,n)&&(i.has(t.id)||(r.push(t),i.add(t.id)));return!1}let o=t.referenceFor(a);o&&o.resolvedSymbol&&(Qt(o.resolvedSymbol.scope,n)||i.has(o.id)||(r.push(o),i.add(o.id)))}),r},kme=new WeakMap,xp=(e,t)=>{let n=kme.get(t);n||(n=new WeakMap,kme.set(t,n));let r=n.get(e);if(r)return r;let i=Ome(e,t);return n.set(e,i),i};let Ame=0;const Sp=e=>{let t={id:Ame++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},Cp=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},jme=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},wp=(e,t,n)=>{if(e.nodeBlock.set(t,n),w(t)){e.nestedFunctions.push(t);return}let r=t,i=sn[t.type]??Object.keys(r);for(let t of i){if(t===`parent`)continue;let i=r[t];if(Array.isArray(i))for(let t of i)j(t)&&wp(e,t,n);else j(i)&&wp(e,i,n)}},Mme=e=>{switch(e.type){case`IfStatement`:case`WhileStatement`:case`DoWhileStatement`:case`ForStatement`:case`ForInStatement`:case`ForOfStatement`:case`SwitchStatement`:case`TryStatement`:case`ReturnStatement`:case`ThrowStatement`:case`BreakStatement`:case`ContinueStatement`:case`BlockStatement`:case`LabeledStatement`:return!0;default:return!1}},Nme=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=Nme(e.argument);return t===null?null:!t}return null},Pme=e=>e===null||Nme(e)===!0,Fme=(e,t)=>{if(t===null){if(e.loopStack.length>0){let t=e.loopStack[e.loopStack.length-1];return{merge:t.merge,header:t.header}}return e.switchStack.length>0?{merge:e.switchStack[e.switchStack.length-1].merge,header:null}:null}for(let n=e.labelStack.length-1;n>=0;n--){let r=e.labelStack[n];if(r.label===t)return{merge:r.merge,header:r.header}}return null},Tp=(e,t,n)=>{let r=n;for(let n of t)r=Ep(e,n,r);return r},Ep=(e,t,n)=>{if(e.nodeBlock.set(t,n),!Mme(t))return jme(e,n,t),wp(e,t,n),n;if(t.type===`BlockStatement`)return Tp(e,t.body,n);if(t.type===`LabeledStatement`){let r=Sp(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Ep(e,a,n);return e.labelStack.pop(),Cp(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&wp(e,t.argument,n),Cp(n,e.exit,`uncond`),Sp(e);if(t.type===`ThrowStatement`){t.argument&&wp(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?Cp(n,r.catch,`uncond`):r?.finally?Cp(n,r.finally,`uncond`):Cp(n,e.exit,`throw`),Sp(e)}if(t.type===`BreakStatement`){let r=Fme(e,t.label?t.label.name:null);return r?Cp(n,r.merge,`uncond`):Cp(n,e.exit,`uncond`),Sp(e)}if(t.type===`ContinueStatement`){let r=Fme(e,t.label?t.label.name:null);return r?.header&&Cp(n,r.header,`uncond`),Sp(e)}if(t.type===`IfStatement`){wp(e,t.test,n);let r=Sp(e),i=Sp(e);if(Cp(n,r,`cond`),Cp(Ep(e,t.consequent,r),i,`uncond`),t.alternate){let r=Sp(e);Cp(n,r,`cond`),Cp(Ep(e,t.alternate,r),i,`uncond`)}else Cp(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Pme(t.test);wp(e,t.test,n);let a=Sp(e),o=Sp(e),s=Sp(e);r?Cp(n,o,`uncond`):(Cp(n,a,`uncond`),Cp(a,o,i?`uncond`:`cond`),i||Cp(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Ep(e,t.body,o);return e.loopStack.pop(),r?(Cp(c,a,`uncond`),Cp(a,o,i?`uncond`:`cond`),i||Cp(a,s,`cond`)):Cp(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&wp(e,t.init,n),t.test&&wp(e,t.test,n);let r=Sp(e),i=Sp(e),a=Sp(e),o=Pme(t.test??null);Cp(n,r,`uncond`),Cp(r,i,o?`uncond`:`cond`),o||Cp(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Ep(e,t.body,i);return e.loopStack.pop(),t.update&&wp(e,t.update,r),Cp(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){wp(e,t.right,n),wp(e,t.left,n);let r=Sp(e),i=Sp(e),a=Sp(e);Cp(n,r,`uncond`),Cp(r,i,`cond`),Cp(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Ep(e,t.body,i);return e.loopStack.pop(),Cp(o,r,`uncond`),a}if(t.type===`SwitchStatement`){wp(e,t.discriminant,n);let r=Sp(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=Sp(e);Cp(n,t,`cond`),i&&Cp(i,t,`uncond`),i=Tp(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&Cp(i,r,`uncond`),a||Cp(n,r,`cond`),r}if(t.type===`TryStatement`){let r=Sp(e),i=Sp(e),a=null,o=null;t.handler&&(a=Sp(e)),t.finalizer&&(o=Sp(e)),Cp(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=Tp(e,t.block.body,r);if(e.tryStack.pop(),a&&Cp(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Ep(e,n,a);o?Cp(r,o,`uncond`):Cp(r,i,`uncond`)}return o&&t.finalizer?(Cp(s,o,`uncond`),Cp(Tp(e,t.finalizer.body,o),i,`uncond`)):Cp(s,i,`uncond`),i}return jme(e,n,t),wp(e,t,n),n},Ime=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=Sp(r),a=Sp(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=Tp(r,t.body,i):(wp(r,t,i),o=i),Cp(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},Lme=e=>{let t=t=>{let n=new Set,r=[];e.entry!==t&&r.push(e.entry);let i=0;for(;i<r.length;){let e=r[i];if(i+=1,!n.has(e)){n.add(e);for(let n of e.successors)n.kind!==`throw`&&n.to!==t&&r.push(n.to)}}return n},n=t(null),r=new Set;r.add(e.entry),r.add(e.exit);for(let i of e.blocks)if(!r.has(i)){if(!n.has(i)){r.add(i);continue}t(i).has(e.exit)||r.add(i)}return r},Dp=e=>{Ame=0;let t=new Map,n=[],r=(e,r)=>{let i=Ime(e,r,n);t.set(e,{cfg:i,unconditionalSet:Lme(i)})};e.type===`Program`&&r(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<n.length;e+=1){let i=n[e];!w(i)||!i.body||t.has(i)||r(i,i.body)}let i=e=>t.get(e)||(!w(e)||!e.body?null:(r(e,e.body),t.get(e)??null)),a=e=>{let t=e;for(;t;){if(w(t)||t.type===`Program`)return t;t=t.parent??null}return null};return{cfgFor:e=>i(e)?.cfg??null,enclosingFunction:a,isUnconditionalFromEntry:e=>{let t=a(e);if(!t)return!0;let n=i(t);if(!n)return!0;let r=n.cfg.blockOf(e);return r?n.unconditionalSet.has(r):!0}}},Rme=e=>{let t=P(e);return E(t,`ObjectExpression`)?`object`:E(t,`ArrayExpression`)?`array`:E(t,`ArrowFunctionExpression`)||E(t,`FunctionExpression`)?`function`:E(t,`JSXElement`)||E(t,`JSXFragment`)?`JSX`:E(t,`NewExpression`)?`instance`:null},Op=(e,t,n=new Set)=>{let r=Rme(e);if(r)return{bindingName:null,kind:r};let i=P(e);if(!E(i,`Identifier`))return null;let a=t.symbolFor(i);if(!a||a.scope.kind===`module`||a.kind!==`const`||!a.initializer||n.has(a.id)||a.references.some(e=>e.flag!==`read`)||!E(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=Op(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},zme=new Set([...xn,`useImperativeHandle`,`useInsertionEffect`]),Bme=new WeakMap,Vme=new WeakMap,Hme=new WeakMap,Ume=e=>{let t=Bme.get(e.programNode);if(t)return t;let n=fn(e.programNode);return Bme.set(e.programNode,n),n},Wme=e=>{let t=Vme.get(e.programNode);if(t)return t;let n=Dp(e.programNode);return Vme.set(e.programNode,n),n},Gme=(e,t)=>{let n=t.enclosingFunction(e);if(!n)return!0;let r=t.cfgFor(n);if(!r)return!0;let i=r.blockOf(e);if(!i)return!0;let a=new Set([r.entry]),o=[r.entry];for(;o.length>0;){let e=o.pop();if(!e)break;if(e===i)return!0;for(let t of e.successors)a.has(t.to)||(a.add(t.to),o.push(t.to))}return!1},Kme=(e,t)=>{let n=qs(e)??t??``;return n!==`use`&&Ws(n)},qme=(e,t)=>{if(!E(e,`Identifier`))return null;let n=N(e,t);if(n?.kind!==`import`||!n.initializer)return null;let r=n.initializer.parent;if(!r||!E(r,`ImportDeclaration`))return null;let i=r.source?.value;if(typeof i!=`string`)return null;let a=Dn(n.initializer);return a?{exportedName:a,source:i}:null},Jme=(e,t,n)=>{if(!n)return null;let r=qme(e,t);if(!r)return null;let i=E(e,`Identifier`)?e.name:``;if(r.source===`react`||!Ws(i)&&!Ws(r.exportedName))return null;let a=Nt(n,r.source,r.exportedName);return!a||!Kme(a.functionNode,r.exportedName)?null:{cfg:Wme(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:Ume(a)}},kp=(e,t,n,r=new Set)=>{let i=P(e);if(E(i,`Identifier`)){let e=N(i,t);if(!e||r.has(e.id))return null;if(We(e)){let t=en(e.declarationNode);return!t||!n.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||Ap(e)?null:(r.add(e.id),kp(e.initializer,t,n,r))}if(E(i,`MemberExpression`)){let e=k(i);if(!e||!n.has(e))return null;let r=P(i.object);return!E(r,`Identifier`)||!At(r,t)?null:e===`useImperativeHandle`?2:1}if(!E(i,`ConditionalExpression`))return null;let a=kp(i.consequent,t,n,new Set(r)),o=kp(i.alternate,t,n,new Set(r));return a!==null&&a===o?a:null},Yme=(e,t,n,r)=>{if(!n)return null;let i=qme(P(e.callee),t);if(!i)return null;let a=nn(n,i.source,i.exportedName);return a?kp(a.exportedNode,Ume(a),r):null},Xme=(e,t,n,r)=>{let i=P(e.callee),a=y(i,t);if(a&&Kme(a)){let e=x(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return Jme(i,t,r)},Zme=e=>{if(!w(e))return[];let t=[];for(let[n,r]of(e.params??[]).entries()){let e=P(r);if(E(e,`Identifier`)){t.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:n,propertyName:null});continue}if(E(e,`AssignmentPattern`)&&E(e.left,`Identifier`)){t.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:n,propertyName:null});continue}if(E(e,`ObjectPattern`))for(let r of e.properties??[]){if(!E(r,`Property`))continue;let e=A(r,{allowComputedString:!0});if(!e)continue;let i=P(r.value);E(i,`Identifier`)?t.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:n,propertyName:e}):E(i,`AssignmentPattern`)&&E(i.left,`Identifier`)&&t.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:n,propertyName:e})}}return t},Qme=(e,t,n=new Set)=>{let r=P(e);if(E(r,`ObjectExpression`))return r;if(!E(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||Ap(i)?null:(n.add(i.id),Qme(i.initializer,t,n))},$me=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(E(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(E(r,`Property`)&&A(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},ehe=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>E(e,`SpreadElement`)))return{expression:null,isProvenOmitted:!1};let r=e.arguments?.[t.parameterIndex];if(!r)return{expression:null,isProvenOmitted:!0};if(t.propertyName===null)return{expression:r,isProvenOmitted:!1};let i=Qme(r,n);return i?$me(i,t.propertyName):{expression:null,isProvenOmitted:!1}},Ap=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&E(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(E(n,`AssignmentExpression`)&&n.left===e||E(n,`UpdateExpression`)&&n.argument===e||E(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(E(n,`CallExpression`)&&n.callee===e&&E(e,`MemberExpression`)){let t=k(e);if(t&&(dr.has(t)||fr.has(t)))return!0}}return!1},jp=(e,t,n,r,i=new Set)=>{let a=P(e);if(!E(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||Ap(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!E(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),jp(o.initializer,t,n,r,i))},Mp=(e,t,n,r=new Set)=>{if(jp(e,`list`,t,n))return!0;let i=P(e);if(E(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||Ap(e)?!1:(r.add(e.id),Mp(e.initializer,t,n,r))}return E(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?E(e,`SpreadElement`)?jp(e.argument,`list`,t,n):jp(e,`value`,t,n):!1):!1},the=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of Zme(t.functionNode)){let o=ehe(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||Ap(s)||(jp(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),(jp(o.expression,`list`,n,r)||Mp(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},nhe=(e,t,r,i,a)=>{if(!w(e.functionNode))return!1;let o=e.functionNode;if(r<0||i.has(o)||[...t.valueSymbolIds,...t.listSymbolIds].some(t=>{let n=e.scopes.ownScopeFor(e.functionNode)?.symbols.find(e=>e.id===t);return n?Ap(n):!1}))return!1;let s=new Set(i);s.add(o);let c=!1;return D(o.body,i=>{if(c||i!==o.body&&w(i))return!1;if(!E(i,`CallExpression`)||!Gme(i,e.cfg))return;if(n(i,a,e.scopes,{allowGlobalReactNamespace:!0})){let n=P(i.callee),r=(E(n,`Identifier`)?n.name:E(n,`MemberExpression`)?k(n):null)===`useImperativeHandle`?2:1,a=i.arguments?.[r];return a&&!E(a,`SpreadElement`)&&Mp(a,e.scopes,t)?(c=!0,!1):void 0}let l=Yme(i,e.scopes,e.filePath,a);if(l!==null){let n=i.arguments?.[l];return n&&!E(n,`SpreadElement`)&&Mp(n,e.scopes,t)?(c=!0,!1):void 0}if(r===0)return;let u=Xme(i,e.scopes,e.cfg,e.filePath);if(!u)return;let d=the(i,u,e.scopes,t);if(!(d.valueSymbolIds.size===0&&d.listSymbolIds.size===0)&&nhe(u,d,r-1,s,a))return c=!0,!1}),c},rhe=(e,t,n=zme)=>{let r=Hme.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):Hme.set(e,new Map([[n,a]]));let o=Xme(e,t.scopes,t.cfg,t.filename);if(!o||!J(e,t.scopes)||!Gme(e,t.cfg))return a;for(let r of Zme(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||Ap(i))continue;let s=ehe(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=Op(c,s.expression?t.scopes:o.scopes);l&&nhe(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(E(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},ihe=new WeakMap,ahe=e=>{let t=new Map;if(!E(e,`Program`))return t;for(let n of e.body){let e=E(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!E(e,`TSInterfaceDeclaration`)&&!E(e,`TSTypeAliasDeclaration`)||!E(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},Np=(e,t)=>{let n=x(e);if(!n)return[];let r=ihe.get(n);return r||(r=ahe(n),ihe.set(n,r)),r.get(t)??[]},ohe=e=>E(e,`Identifier`)?e.name:E(e,`MemberExpression`)&&!e.computed&&E(e.object,`Identifier`)&&e.object.name===`React`&&E(e.property,`Identifier`)?`React.${e.property.name}`:null,Pp=e=>{let t=e.parent;if(!t||!E(t,`CallExpression`)||t.arguments[0]!==e)return!1;let n=ohe(t.callee);return n!==null&&fe.has(n)},she=new Set([`function`,`arrow-function`,`method`]),Fp=e=>{let t=e.scope;for(;t;){if(she.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},che=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),X=e=>{let t=e;for(;che.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},Ip=(e,t)=>{let n=X(e);if(E(n,`Identifier`)){let e=t?N(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&E(r,`ImportDeclaration`)&&r.source.value===`react`?en(e.declarationNode)??n.name:n.name}return E(n,`MemberExpression`)&&!n.computed&&E(n.property,`Identifier`)?n.property.name:null},Lp=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,lhe=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,uhe=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,dhe=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,fhe=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,phe=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,mhe=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,Rp=e=>`\`${e}\` re-runs on every render with no dependency array.`,hhe=e=>`\`${e}\` crashes without a function as its first argument.`,ghe=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",_he=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,zp=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,vhe=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,yhe=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,bhe=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,xhe=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,She=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,Che=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,whe=e=>`Assigning to \`${e}\` inside a hook is thrown away after each render, so the next render reads the old value.`,The=e=>{let t=e?.[`react-doctor`],n=e?.[`react-hooks`],r=typeof t==`object`&&t?t.exhaustiveDeps??{}:{},i=typeof n==`object`&&n?n:{};return{additionalHooks:r.additionalHooks??r.additionalEffectHooks??i.additionalHooks??i.additionalEffectHooks??``,additionalEffectHooks:r.additionalEffectHooks??i.additionalEffectHooks??``,enableDangerousAutofixThisMayCauseInfiniteLoops:r.enableDangerousAutofixThisMayCauseInfiniteLoops??!1,experimental_autoDependenciesHooks:r.experimental_autoDependenciesHooks??i.experimental_autoDependenciesHooks??[],requireExplicitEffectDeps:r.requireExplicitEffectDeps??i.requireExplicitEffectDeps??!1}},Ehe=new Set([`===`,`!==`]),Dhe=(e,t)=>{let r=e.declarationNode;if(!E(r,`VariableDeclarator`)||!E(r.id,`ArrayPattern`))return null;let i=r.id.elements[0],a=r.id.elements[1];if(i!==e.bindingIdentifier||!E(a,`Identifier`))return null;let o=r.init?P(r.init):null;return!o||!n(o,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(a)},Ohe=(e,t)=>{if(e.references.length!==1)return null;let n=e.references[0];if(n.flag!==`read`)return null;let r=b(n.identifier),i=r.parent;if(!E(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||M(i)!==t)return null;let a=P(i.arguments[0]);return E(a,`ArrowFunctionExpression`)||E(a,`FunctionExpression`)||E(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},khe=(e,t)=>{if(!E(e,`CallExpression`))return!1;let n=P(e.callee);if(!E(n,`MemberExpression`))return!1;let r=k(n),i=P(n.object);return!!(r===`is`&&E(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},Ahe=(e,t)=>{let n=P(e);return E(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},jhe=(e,t,n)=>{let r=P(e);if(E(t,`BinaryExpression`)&&Ehe.has(t.operator))return P(t.left)===r?Ahe(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:P(t.right)===r?Ahe(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!E(t,`CallExpression`)||!khe(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return E(i,`SpreadElement`)||E(a,`SpreadElement`)?null:P(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:P(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},Mhe=(e,t,n)=>{let r=e.parent;for(;r&&z(r,t);){let i=jhe(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},Nhe=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!z(e,t))return!1;if(E(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(E(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!yn.has(e.type))return!1;a=e}return i===r},Phe=(e,t)=>{let n=new Set,r=P(e);for(;E(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Xr(e);if(!i||!E(P(i),`Identifier`))break;n.add(e.id),r=P(i)}return r},Fhe=(e,t,n)=>{let r=Phe(e,n),i=Phe(t,n);if(r===i)return!0;if(E(r,`Identifier`)&&E(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return E(r,`Literal`)&&E(i,`Literal`)?Object.is(r.value,i.value):!1},Ihe=e=>{let t=b(e).parent;if(!E(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(E(n,`ArrayExpression`)&&n.elements.length)},Lhe=e=>{if(E(e,`ReturnStatement`)||E(e,`ThrowStatement`))return!0;if(!E(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&Lhe(t))},Rhe=(e,t)=>{if(!E(e,`IfStatement`)||e.alternate||!Lhe(e.consequent))return!1;let n=e.parent;if(!E(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&z(t,e))},zhe=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(E(i,`IfStatement`)&&z(e,i.test)&&(z(t,i.consequent)||i.alternate&&z(t,i.alternate)||Rhe(i,t))){let n=z(t,i.consequent);if(n===(!!(i.alternate&&z(t,i.alternate))||Rhe(i,t)))return null;let a=Mhe(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return Nhe(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},Bhe=(e,t,n)=>{if(!Ihe(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=Dhe(e,n);if(!r)return!1;let i=Ohe(r,t);if(!i)return!1;let a=e.references.filter(e=>z(e.identifier,t));if(a.length!==1)return!1;let o=b(a[0].identifier);if(E(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=zhe(a[0].identifier,i.callExpression,t,n);return!!(s&&Fhe(s,i.writtenValue,n))},Vhe=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,Hhe=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,Uhe=(e,t)=>{let n=new Set,r=e.split(`
2
2
  `);for(let e=0;e<r.length;e++){let i=r[e];if(!i.includes(`-disable`))continue;let a=Vhe.exec(i);if(a&&t.test(a[1]??``)){n.add(e+2);continue}let o=Hhe.exec(i);o&&t.test(o[1]??``)&&n.add(e+1)}return n},Whe=e=>{let t=[],n=[],r=0,i=0;for(let a=0;a<e.length;a++)e[a]===`
3
3
  `&&(t.push(a),r+=Buffer.byteLength(e.slice(i,a+1),`utf8`),n.push(r-1),i=a+1);return{utf16:t,utf8:n}},Ghe=(e,t)=>{let n=Uhe(e,t);if(n.size===0)return null;let r=Whe(e);return{suppressedLines:n,utf16NewlineOffsets:r.utf16,utf8NewlineOffsets:r.utf8}},Khe=(e,t)=>{let n=0,r=t.length-1,i=0;for(;n<=r;){let a=Math.floor((n+r)/2);t[a]<e?(i=a+1,n=a+1):r=a-1}return i+1},qhe=e=>{let t=RegExp(`(?:^|[\\s,/])${e}(?:$|[\\s,:])`),n=new Map,r=e=>{if(!e)return null;let r=n.get(e);if(r!==void 0)return r;let i=null;try{i=Ghe(Ln(e,`utf8`),t)}catch{i=null}return n.set(e,i),i};return{clearCache:()=>n.clear(),isSuppressedAt:(e,t)=>{if(t===null)return!1;let n=r(e);return n?n.suppressedLines.has(Khe(t,n.utf16NewlineOffsets))||n.suppressedLines.has(Khe(t,n.utf8NewlineOffsets)):!1}}},Jhe=qhe(`exhaustive-deps`),Yhe=Jhe.isSuppressedAt;Jhe.clearCache;const Xhe=new Set([`useEventCallback`,`useStableCallback`,`useMemoizedFn`,`usePersistFn`,`useLatestCallback`,`useCallbackRef`,`useEvent`]),Bp=(e,t)=>{if(e.references.some(e=>e.flag!==`read`))return!1;let n=e.declarationNode;for(;n&&n.type!==`VariableDeclarator`;)n=n.parent??null;if(!n||!E(n,`VariableDeclarator`))return!1;let r=n.init;if(!r)return!1;let i=X(r);if(e.kind===`const`&&(E(i,`Literal`)&&(i.value===null||typeof i.value==`number`||typeof i.value==`string`||typeof i.value==`boolean`)||E(i,`TemplateLiteral`)&&c(i)!==null))return!0;if(!E(i,`CallExpression`))return!1;let a=Ip(i.callee,t);if(!a)return!1;if(a===`useRef`||a===`useEffectEvent`||Xhe.has(a))return!0;if(a===`useState`||a===`useReducer`||a===`useActionState`||a===`useTransition`){if(!E(n.id,`ArrayPattern`))return!1;let t=n.id.elements[1];if(!t)return!1;let r=E(t,`AssignmentPattern`)?t.left:t;return E(r,`Identifier`)&&e.bindingIdentifier===r}return!1},Vp=e=>{if(e.kind===`function`&&E(e.declarationNode,`FunctionDeclaration`))return e.declarationNode;let t=e.initializer?X(e.initializer):null;return t&&(E(t,`FunctionExpression`)||E(t,`ArrowFunctionExpression`))?t:null},Hp=(e,t)=>{let n=e.initializer;return!!(n&&z(t,n))},Zhe=new Set([`useCallback`,`useMemo`]),Qhe=(e,t,n)=>{if(n.has(e.id))return!0;if(e.references.some(e=>e.flag!==`read`))return!1;let r=e.declarationNode;for(;r&&r.type!==`VariableDeclarator`;)r=r.parent??null;if(!r||!E(r,`VariableDeclarator`)||r.id!==e.bindingIdentifier||!r.init)return!1;let i=X(r.init);if(!E(i,`CallExpression`))return!1;let a=Ip(i.callee,t);if(!a||!Zhe.has(a))return!1;let o=i.arguments[1];if(!o||!j(o))return!1;let s=X(o);if(!E(s,`ArrayExpression`))return!1;n.add(e.id);let c=e=>{let r=X(e);if(E(r,`Literal`))return!0;if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?Fp(i)?!0:Up(i,t,n):!1},l=s.elements.every(e=>e!==null&&c(e));return l||n.delete(e.id),l},$he=(e,t)=>{for(let n of e.properties){let e=n;if(!E(e,`Property`))return null;if(e.computed)continue;let r=e.key;if((E(r,`Identifier`)?r.name:E(r,`Literal`)&&typeof r.value==`string`?r.value:null)===t)return X(e.value)}return null},ege=(e,t,n)=>{if(e.kind!==`const`||!t.startsWith(`${e.name}.`)||e.references.some(e=>e.flag!==`read`))return!1;let r=e.initializer?X(e.initializer):null;if(!r||!E(r,`ObjectExpression`))return!1;let i=t.slice(e.name.length+1).split(`.`),a=r;for(let e of i){if(!E(a,`ObjectExpression`))return!1;let t=$he(a,e);if(!t)return!1;a=t}return E(a,`CallExpression`)&&Ip(a.callee,n)===`useRef`},tge=(e,t,n)=>{if(n.has(e.id))return!0;let r=Vp(e);if(!r)return!1;n.add(e.id);for(let i of xp(r,t)){let r=i.resolvedSymbol;if(r&&r.id!==e.id&&!Fp(r)&&!Up(r,t,n))return n.delete(e.id),!1}return!0},nge=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=N(e.bindingIdentifier,t);return n!==null&&n!==e&&n.kind===`import`},rge=e=>{let t=b(e);for(;t.parent;){let e=t.parent;if(E(e,`AssignmentExpression`))return e.left===t;if(E(e,`UpdateExpression`))return e.argument===t;if(E(e,`UnaryExpression`))return e.operator===`delete`&&e.argument===t;if(E(e,`ForInStatement`)||E(e,`ForOfStatement`))return e.left===t;if(E(e,`ArrayPattern`)&&e.elements.some(e=>e===t)||E(e,`ObjectPattern`)&&e.properties.some(e=>e===t)||E(e,`RestElement`)&&e.argument===t||E(e,`AssignmentPattern`)&&e.left===t||E(e,`Property`)&&e.value===t&&E(e.parent,`ObjectPattern`)){t=e;continue}return!1}return!1},ige=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=e.initializer?X(e.initializer):null;if(!E(n,`AssignmentExpression`)||n.operator!==`??=`)return!1;let r=gu(X(n.left),t);return r?r.references.every(e=>{let t=b(e.identifier).parent;if(!E(t,`MemberExpression`)||X(t.object)!==e.identifier||k(t)!==`current`)return!1;let r=b(t),i=r.parent;return E(i,`AssignmentExpression`)&&i.left===r?i===n:!rge(r)}):!1},Up=(e,t,n=new Set)=>Bp(e,t)||ige(e,t)||nge(e,t)||tge(e,t,n)||Qhe(e,t,n),Wp=(e,t)=>{let r=e.initializer?P(e.initializer):null;return!r||!E(r,`CallExpression`)?!1:n(r,`useEffectEvent`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0})},Gp=(e,t)=>{let n=t.symbolFor(e);if(n)return n;if(!E(e,`Identifier`))return null;let r=t.scopeFor(e);for(;;){let t=r.symbolsByName.get(e.name);if(t)return t;if(!r.parent)return null;r=r.parent}},age=new Set([`ComponentClass`,`ComponentType`,`FC`,`FunctionComponent`]),oge=(e,t)=>{let n=Gp(e,t);return!!(n&&We(n)&&(E(n.declarationNode,`ImportDefaultSpecifier`)||E(n.declarationNode,`ImportNamespaceSpecifier`)))},Kp=(e,t,n)=>{if(!e)return!1;if(E(e,`TSTypeAnnotation`))return Kp(e.typeAnnotation,t,n);if(E(e,`TSIntersectionType`))return(e.types??[]).some(e=>Kp(e,t,n));if(!E(e,`TSTypeReference`))return!1;let r=e.typeName;if(E(r,`TSQualifiedName`))return E(r.left,`Identifier`)&&E(r.right,`Identifier`)&&age.has(r.right.name)&&oge(r.left,t);if(!E(r,`Identifier`))return!1;let i=Gp(r,t);if(!i||n.has(i.id))return!1;if(We(i)){let e=en(i.declarationNode);return!!(e&&age.has(e))}return E(i.declarationNode,`TSTypeAliasDeclaration`)?(n.add(i.id),Kp(i.declarationNode.typeAnnotation,t,n)):!1},qp=(e,t)=>{let n=e.bindingIdentifier;return E(n,`Identifier`)&&Kp(n.typeAnnotation,t,new Set)},Jp=new Set([`useEffect`,`useLayoutEffect`,`useCallback`,`useMemo`,`useImperativeHandle`,`useInsertionEffect`]),Yp=new Set([`useMemo`,`useCallback`]),Xp=new Set([`useEffect`,`useLayoutEffect`,`useInsertionEffect`]),sge=new Set([`useEffect`,`useLayoutEffect`]),cge=new Set([`Array`,`ReadonlyArray`]),lge=e=>{if(!e)return null;try{return new RegExp(e)}catch{return null}},uge=e=>{let t=e.callee;return E(t,`Identifier`)?t.name:E(t,`MemberExpression`)&&E(t.object,`Identifier`)&&E(t.property,`Identifier`)&&!t.computed?`${t.object.name}.${t.property.name}`:null},dge=e=>{if((E(e,`FunctionDeclaration`)||E(e,`FunctionExpression`))&&e.id)return e.id.name;let t=e.parent;for(;t&&E(t,`CallExpression`);){let e=uge(t);if(e&&fe.has(e))t=t.parent??null;else break}return t&&E(t,`VariableDeclarator`)&&E(t.id,`Identifier`)?t.id.name:null},fge=e=>{let t=e.parent;for(;t;){if(E(t,`FunctionDeclaration`)||E(t,`FunctionExpression`)||E(t,`ArrowFunctionExpression`)){if(Pp(t))return t;let e=dge(t);if(e&&Gs(e))return t}t=t.parent??null}return null},pge=e=>+(e===`useImperativeHandle`),mge=e=>e===`useImperativeHandle`?2:1,Zp=e=>{if(!E(e,`ObjectPattern`))return null;let t=e.properties[0];if(!t||!E(t,`Property`))return null;let n=t.key,r=t.value,i=E(n,`Identifier`)?n.name:E(n,`Literal`)&&typeof n.value==`string`?n.value:null;if(!i)return null;let a=Zp(r);return a?`${i}.${a}`:i},Qp=e=>{let t=e.identifier;return E(t,`Identifier`)||E(t,`JSXIdentifier`)?t.name:``},hge=e=>{let t=e.indexOf(`.current`);if(t===-1)return e;let n=t+8;return n===e.length||e[n]===`.`?e.slice(0,t):e},gge=e=>{let t=e.identifier,n=t.parent??null;if(n&&n.type===`ChainExpression`&&(n=n.parent??null),!n||!E(n,`MemberExpression`)||n.object!==t){if(n&&E(n,`VariableDeclarator`)&&n.init===t){let t=Zp(n.id),r=Qp(e);if(t&&r)return`${r}.${t}`}return Qp(e)}let r=n;for(;;){let e=r.parent;if(!e)break;let t=che.has(e.type),n=t?e.parent:e,i=t?e:r;if(n&&E(n,`MemberExpression`)&&n.object===i){r=n;continue}break}let i=$p(r);if(i===null)return Qp(e);let a=r.parent;if(a&&E(a,`VariableDeclarator`)&&a.init===r){let e=Zp(a.id);if(e)return hge(`${i}.${e}`)}let o=hge(i);if(o!==i)return o;if(e.flag!==`read`){let e=i.lastIndexOf(`.`);if(e!==-1)return i.slice(0,e)}return i},_ge=e=>{let t=X(e);if(E(t,`Identifier`))return t.name;if(E(t,`MemberExpression`))return $p(t);if(E(t,`CallExpression`)&&(t.arguments?.length??0)===0){let e=X(t.callee);if(E(e,`Identifier`))return e.name;if(E(e,`MemberExpression`)&&!nm(e))return $p(e)}return null},vge=e=>{let t=b(e);for(;t.parent;){let e=t.parent;if((E(e,`IfStatement`)||E(e,`WhileStatement`)||E(e,`DoWhileStatement`)||E(e,`ConditionalExpression`))&&e.test===t)return!0;if(E(e,`UnaryExpression`)&&e.operator===`!`||E(e,`LogicalExpression`)){t=e;continue}return!1}return!1},yge=(e,t)=>{if(!e)return!1;let n=X(e);return E(n,`ArrayExpression`)?n.elements.some(e=>{if(!e)return!1;let n=X(e);return E(n,`Identifier`)&&n.name===t}):!1},$p=e=>{let t=X(e);if(E(t,`Identifier`))return t.name;if(E(t,`ThisExpression`))return`this`;if(E(t,`MemberExpression`)){let e=$p(t.object);if(e&&t.computed)return e;if(e&&!t.computed&&E(t.property,`Identifier`))return`${e}.${t.property.name}`}return null},bge=(e,t,n,r,i=!1)=>{let a=new Set,o=new Set,s=new Set,c=new Set,l=fge(e),u=l?t.ownScopeFor(l):null;for(let l of xp(e,t)){let d=l.resolvedSymbol;if(!d||Hp(d,e))continue;if(i&&Bhe(d,e,t)){o.add(d.name);continue}if(Up(d,t)){o.add(d.name);continue}if(Fp(d)){s.add(d.name);continue}if(u&&!Qt(d.scope,u)){c.add(d.name);continue}let f=gge(l);if(f&&!(f===d.name&&vge(l.identifier)&&[...r??[]].some(e=>e.startsWith(`${d.name}.`)))){if(ege(d,f,t)){o.add(f);continue}if(f===d.name){if(n?.has(f)){a.add(f);continue}let e=Dge(l,d,t)??Age(l,d,t)??Tge(d,t);if(e){e.size===0&&o.add(f);for(let t of e)a.add(t);continue}}a.add(f)}}return{keys:a,stableCapturedNames:o,moduleScopeCapturedNames:s,outerFunctionCapturedNames:c}},xge=e=>E(e,`Literal`)||E(e,`TemplateLiteral`)&&c(e)!==null,Sge=e=>E(e,`Literal`)&&typeof e.value!=`string`,em=(e,t)=>t===e||t.startsWith(`${e}.`),Cge=(e,t)=>{for(let n of t)if(n!==e&&e.startsWith(`${n}.`))return!0;return!1},tm=e=>{let t=X(e);return E(t,`Identifier`)?t:E(t,`MemberExpression`)?tm(t.object):null},nm=e=>{let t=X(e);return E(t,`MemberExpression`)?t.computed?!0:nm(t.object):!1},wge=(e,t,n)=>{let r=new Set;for(let i of e){let e=rm(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},rm=(e,t,n)=>{let r=X(e);if(E(r,`Literal`)&&(r.value===null||typeof r.value==`string`||typeof r.value==`number`||typeof r.value==`boolean`)||E(r,`TemplateLiteral`)&&c(r)!==null)return new Set;if(E(r,`Identifier`)){let e=t.symbolFor(r);if(!e)return null;if(Fp(e)||Up(e,t))return new Set;if(e.kind===`const`&&e.initializer&&E(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&e.references.every(e=>e.flag===`read`)){if(n.has(e.id))return null;n.add(e.id);let r=rm(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(E(r,`MemberExpression`)){if(nm(r))return null;let e=$p(r),n=tm(r),i=n?t.symbolFor(n):null;return!e||!i?null:Fp(i)||ege(i,e,t)||Up(i,t)?new Set:new Set([e])}return E(r,`LogicalExpression`)?wge([r.left,r.right],t,n):E(r,`ConditionalExpression`)?wge([r.test,r.consequent,r.alternate],t,n):null},Tge=(e,t)=>e.kind!==`const`||!e.initializer||!E(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?null:rm(e.initializer,t,new Set([e.id])),im=e=>{let t=X(e);return E(t,`Literal`)||E(t,`Identifier`)?!0:E(t,`MemberExpression`)?im(t.object)&&(!t.computed||im(t.property)):E(t,`BinaryExpression`)||E(t,`LogicalExpression`)?im(t.left)&&im(t.right):E(t,`UnaryExpression`)?t.operator!==`delete`&&im(t.argument):E(t,`ConditionalExpression`)?im(t.test)&&im(t.consequent)&&im(t.alternate):E(t,`TemplateLiteral`)?t.expressions.every(e=>im(e)):!1},am=e=>E(e,`BlockStatement`)?e.body.every(e=>am(e)):E(e,`ReturnStatement`)?!e.argument||im(e.argument):E(e,`IfStatement`)?im(e.test)&&am(e.consequent)&&(!e.alternate||am(e.alternate)):!1,Ege=e=>!E(e,`FunctionDeclaration`)&&!E(e,`FunctionExpression`)&&!E(e,`ArrowFunctionExpression`)||e.async||e.generator?!1:E(e.body,`BlockStatement`)?am(e.body):im(e.body),Dge=(e,t,n)=>{if(t.references.some(e=>e.flag!==`read`))return null;let r=b(e.identifier),i=r.parent;if(!E(i,`CallExpression`)||i.callee!==r)return null;let a=Vp(t);if(!a||!Ege(a))return null;let o=new Set;for(let e of xp(a,n)){let r=e.resolvedSymbol;if(!r||r.id===t.id||Fp(r)||Up(r,n))continue;let i=gge(e);if(!i)return null;if(i===r.name){let e=Tge(r,n);if(e){for(let t of e)o.add(t);continue}}o.add(i)}return o.size>0?o:null},om=(e,t,n)=>{let r=new Set;for(let i of e){let e=sm(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},sm=(e,t,n)=>{let r=X(e);if(E(r,`Literal`))return new Set;if(E(r,`Identifier`)){if(t.isGlobalReference(r))return new Set;let e=t.symbolFor(r);if(!e)return null;if(Fp(e)||Up(e,t))return new Set;if(e.kind===`const`&&e.initializer&&E(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&e.references.every(e=>e.flag===`read`)&&!n.has(e.id)){n.add(e.id);let r=sm(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(E(r,`MemberExpression`)){if(nm(r))return null;let e=$p(r),n=tm(r),i=n?t.symbolFor(n):null;return!e||!i?null:Fp(i)||Up(i,t)?new Set:new Set([e])}if(E(r,`BinaryExpression`)||E(r,`LogicalExpression`))return om([r.left,r.right],t,n);if(E(r,`UnaryExpression`)&&r.operator!==`delete`)return sm(r.argument,t,n);if(E(r,`ConditionalExpression`))return om([r.test,r.consequent,r.alternate],t,n);if(E(r,`TemplateLiteral`))return om(r.expressions,t,n);if(E(r,`NewExpression`)){let e=X(r.callee);if(!E(e,`Identifier`)||e.name!==`Error`||!t.isGlobalReference(e))return null;let i=[];for(let e of r.arguments){if(!j(e)||E(e,`SpreadElement`))return null;i.push(e)}return om(i,t,n)}return null},Oge=(e,t,n)=>{let r=new Set,i=e;for(;i.parent&&i.parent!==t;){let e=i.parent;if(E(e,`IfStatement`)){if(e.test===i)return null;let t=sm(e.test,n,new Set);if(!t)return null;for(let e of t)r.add(e)}else if(!E(e,`ExpressionStatement`)&&!E(e,`BlockStatement`))return null;i=e}return i.parent===t?r:null},kge=(e,t)=>{let r=b(e),i=r.parent;return E(i,`CallExpression`)&&i.arguments.some(e=>e===r)&&n(i,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})},Age=(e,t,n)=>{if(t.kind!==`let`||!E(t.declarationNode,`VariableDeclarator`)||t.declarationNode.id!==t.bindingIdentifier)return null;let r=M(t.bindingIdentifier);if(!r)return null;let i=M(e.identifier);if(!i||i===r)return null;let a=new Set;if(t.initializer){let e=sm(t.initializer,n,new Set([t.id]));if(!e)return null;for(let t of e)a.add(t)}let o=0;for(let e of t.references){if(e.flag===`read`){if(M(e.identifier)!==i&&!kge(e.identifier,n))return null;continue}if(e.flag!==`write`)return null;let s=b(e.identifier),c=s.parent;if(!E(c,`AssignmentExpression`)||c.operator!==`=`||c.left!==s||M(s)!==r)return null;let l=sm(c.right,n,new Set([t.id])),u=Oge(c,r,n);if(!l||!u)return null;for(let e of l)a.add(e);for(let e of u)a.add(e);o+=1}return o>0&&a.size>0?a:null},jge=(e,t)=>{let n=cm(e,t),r=n?.initializer?X(n.initializer):null;return!!(r&&E(r,`CallExpression`)&&Ip(r.callee,t)===`useCallback`)},Mge=(e,t)=>{let n=tm(e);if(!n)return!1;let r=t.symbolFor(n);return!r||Fp(r)?!1:!jge(e,t)},cm=(e,t)=>{let n=tm(e);return n?t.symbolFor(n):null},Nge=e=>{let t=X(e);return E(t,`CallExpression`)&&(t.arguments?.length??0)===0?t.callee:e},Pge=e=>E(e,`Literal`)?!!e.regex:!1,Fge=(e,t,n)=>{let r=X(e),i=X(t);if(!E(r,`Identifier`)||!E(i,`Identifier`))return!1;let a=n.symbolFor(r),o=n.symbolFor(i);return!!(a&&o&&a.id===o.id)},Ige=(e,t)=>{let n=X(e);return E(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)||E(n,`UnaryExpression`)&&n.operator===`void`},Lge=(e,t)=>{let n=e.bindingIdentifier.parent?.parent;if(E(n,`ObjectPattern`)){let e=n.typeAnnotation;if(e&&E(e,`TSTypeAnnotation`))return e.typeAnnotation}let r=M(e.bindingIdentifier);if(!r)return null;let i=b(r),a=i.parent;if(!E(a,`VariableDeclarator`)||a.init!==i||!E(a.id,`Identifier`))return null;let o=t.symbolFor(a.id);if(!o||!qp(o,t))return null;let s=a.id.typeAnnotation;if(!s||!E(s,`TSTypeAnnotation`))return null;let c=s.typeAnnotation;return E(c,`TSTypeReference`)?c.typeArguments?.params[0]??null:null},lm=(e,t,n,r=new Set)=>{if(E(e,`TSTypeAnnotation`))return lm(e.typeAnnotation,t,n,r);if(E(e,`TSIntersectionType`)){for(let i of e.types){let e=lm(i,t,n,r);if(e)return e}return null}if(E(e,`TSTypeAliasDeclaration`))return lm(e.typeAnnotation,t,n,r);let i=E(e,`TSTypeLiteral`)?e.members:E(e,`TSInterfaceDeclaration`)?e.body.body:null;if(i){for(let e of i)if(!(!E(e,`TSPropertySignature`)||Os(e.key)!==t))return e.typeAnnotation?.typeAnnotation??null;return null}if(!E(e,`TSTypeReference`)||!E(e.typeName,`Identifier`)||r.has(e.typeName.name))return null;let a=new Set(r).add(e.typeName.name);for(let r of Np(n,e.typeName.name)){let e=lm(r,t,n,a);if(e)return e}return null},um=(e,t,n=new Set)=>{if(E(e,`TSTypeAnnotation`))return um(e.typeAnnotation,t,n);if(E(e,`TSNullKeyword`)||E(e,`TSAnyKeyword`)||E(e,`TSUnknownKeyword`))return!1;if(E(e,`TSUnionType`))return e.types.every(e=>um(e,t,n));if(!E(e,`TSTypeReference`))return!0;if(!E(e.typeName,`Identifier`)||n.has(e.typeName.name))return!1;let r=Np(t,e.typeName.name);if(r.length===0)return p(t,e.typeName.name)===null&&cge.has(e.typeName.name);let i=new Set(n).add(e.typeName.name);return r.every(e=>E(e,`TSTypeAliasDeclaration`)?um(e.typeAnnotation,t,i):E(e,`TSInterfaceDeclaration`))},Rge=(e,t)=>{let n=X(e);if(!E(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!1;let i=ks(r);if(i)return um(i,n);let a=r.bindingIdentifier.parent;if(!E(a,`Property`))return!1;let o=Os(a.key),s=Lge(r,t);if(!o||!s)return!1;let c=lm(s,o,n);return!!(c&&um(c,n))},dm=(e,t,n=new Set)=>{let r=X(e);if(E(r,`ArrayExpression`)||E(r,`ObjectExpression`)||E(r,`ClassExpression`)||E(r,`NewExpression`)||E(r,`TemplateLiteral`))return!0;if(E(r,`Literal`))return r.value!==null;if(E(r,`LogicalExpression`)&&r.operator===`??`)return dm(r.right,t,n);if(E(r,`ConditionalExpression`))return dm(r.consequent,t,n)&&dm(r.alternate,t,n);if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||n.has(i.id))return!1;let a=new Set(n).add(i.id);return dm(i.initializer,t,a)},zge=(e,t)=>{let r=X(e);if(!E(r,`Identifier`))return null;let i=t.symbolFor(r),a=i?.declarationNode;if(!i||!a||!E(a,`VariableDeclarator`)||!E(a.id,`ArrayPattern`)||a.id.elements[0]!==i.bindingIdentifier||!E(a.init,`CallExpression`)||!n(a.init,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let o=a.init.arguments[0];return j(o)&&!E(o,`SpreadElement`)?o:null},Bge=(e,t)=>{let n=X(e);if(!E(n,`ConditionalExpression`))return!1;let r=X(n.test);if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r),a=i?.initializer?X(i.initializer):null;if(i?.kind!==`const`||!a||!E(a,`BinaryExpression`)||a.operator!==`!==`&&a.operator!==`!=`)return!1;let o=null;if(Ige(a.right,t)?o=a.left:Ige(a.left,t)&&(o=a.right),!o||!Fge(n.consequent,o,t))return!1;let s=zge(n.alternate,t);return!!(s&&dm(s,t)&&Rge(o,t))},fm=(e,t,n=!1)=>{if(!e)return!1;let r=X(e);return Pge(r)?!0:E(r,`ConditionalExpression`)?fm(r.consequent,t,!0)||fm(r.alternate,t,!0):E(r,`LogicalExpression`)?r.operator===`??`&&Bge(r.left,t)?fm(r.left,t,!0):fm(r.left,t,!0)||fm(r.right,t,!0):E(r,`ObjectExpression`)||E(r,`ArrayExpression`)||n&&(E(r,`ArrowFunctionExpression`)||E(r,`FunctionExpression`))||E(r,`ClassExpression`)||E(r,`ClassDeclaration`)||E(r,`JSXElement`)||E(r,`JSXFragment`)||E(r,`AssignmentExpression`)||E(r,`NewExpression`)},pm=(e,t,n=new Set)=>{let r=X(e);if(fm(r,t))return!0;if(E(r,`ConditionalExpression`))return pm(r.consequent,t,n)||pm(r.alternate,t,n);if(E(r,`LogicalExpression`))return pm(r.left,t,n)||pm(r.right,t,n);if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);return!i||n.has(i.id)?!1:i.kind===`let`||i.kind===`var`?!0:i.kind!==`const`||!i.initializer?!1:(n.add(i.id),pm(i.initializer,t,n))},Vge=(e,t,n)=>{if(!Mge(t,n))return!1;if(Xp.has(e))return!0;if(e!==`useMemo`)return!1;let r=cm(t,n);return!!(r&&!Up(r,n)&&!fm(r.initializer,n))},Hge=e=>E(e.declarationNode,`VariableDeclarator`)&&E(e.declarationNode.id,`Identifier`)||E(e.declarationNode,`ClassDeclaration`),Uge=e=>Vp(e)!==null,Wge=new Set([`Array`,`Date`,`Error`,`Map`,`Object`,`RegExp`,`Set`,`WeakMap`,`WeakSet`]),Gge=e=>{if(!e)return null;let t=E(e,`AssignmentPattern`)?e.left:e;return E(t,`Identifier`)?t:null},Kge=(e,t)=>{let n=new Set,r=t.symbolFor(e);for(;r?.kind===`const`&&E(r.declarationNode,`VariableDeclarator`)&&r.declarationNode.id===r.bindingIdentifier&&r.initializer;){if(n.has(r.id))return null;n.add(r.id);let e=X(r.initializer);if(!E(e,`Identifier`))return r;r=t.symbolFor(e)}return r},mm=(e,t)=>{let r=Kge(e,t);if(!r||!E(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!E(i.id,`ArrayPattern`))return null;let a=i.id.elements?.[1],o=j(a)?Gge(a):null;if(!o||o!==r.bindingIdentifier)return null;let s=i.init?X(i.init):null;if(!s||!E(s,`CallExpression`)||!n(s,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let c=i.id.elements?.[0],l=j(c)?Gge(c):null;return{setterSymbol:r,stateSymbol:l?t.symbolFor(l):null}},hm=(e,t,n,r=new Set)=>{if(!t)return!1;let i=X(e);if(E(i,`Identifier`)){let e=n.referenceFor(i);if(e?.flag!==`write`&&e?.resolvedSymbol?.id===t.id)return!0;let a=e?.resolvedSymbol;if(a?.kind===`const`&&a.initializer&&!Fp(a)&&!r.has(a.id)){let e=new Set(r);return e.add(a.id),hm(a.initializer,t,n,e)}return!1}let a=i;for(let e of Object.keys(a)){if(e===`parent`)continue;let r=a[e];if(Array.isArray(r)){if(r.some(e=>j(e)&&hm(e,t,n)))return!0}else if(j(r)&&hm(r,t,n))return!0}return!1},gm=(e,t,n=new Set)=>{let r=X(e);if(E(r,`ObjectExpression`)||E(r,`ArrayExpression`)||E(r,`JSXElement`)||E(r,`JSXFragment`)||Pge(r))return!0;if(E(r,`SequenceExpression`)){let e=r.expressions.at(-1);return!!(e&&gm(e,t))}if(E(r,`ConditionalExpression`))return gm(r.consequent,t,n)&&gm(r.alternate,t,n);if(E(r,`LogicalExpression`))return gm(r.left,t,n)&&gm(r.right,t,n);if(E(r,`CallExpression`)){let e=X(r.callee);return E(e,`Identifier`)&&t.isGlobalReference(e)&&(e.name===`Array`||e.name===`Object`)&&(e.name===`Array`||r.arguments.length===0)}if(E(r,`NewExpression`)){let e=X(r.callee);return E(e,`Identifier`)&&t.isGlobalReference(e)&&Wge.has(e.name)&&(e.name!==`Object`||r.arguments.length===0)}if(!E(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||Fp(i)||n.has(i.id))return!1;let a=new Set(n);return a.add(i.id),gm(i.initializer,t,a)},qge=e=>{let t=X(e);return E(t,`Literal`)&&(typeof t.value==`number`&&t.value!==0||typeof t.value==`bigint`&&t.value!==0n||typeof t.value==`string`&&t.value.length>0)},_m=(e,t,n)=>{let r=X(e);if(gm(r,n))return!0;if(E(r,`ConditionalExpression`)){let e=_m(r.consequent,t,n),i=_m(r.alternate,t,n);return hm(r.test,t,n)?e&&i:e||i}return hm(r,t,n)?E(r,`UnaryExpression`)?r.operator===`!`:E(r,`UpdateExpression`)?!0:E(r,`BinaryExpression`)?(r.operator===`+`||r.operator===`-`)&&hm(r.left,t,n)&&qge(r.right):!1:!1},Jge=(e,t,n)=>{let r=X(e);if(!E(r,`ConditionalExpression`))return!1;let i=X(r.test);if(!E(i,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(i.operator))return!1;let a=e=>{let r=X(e);return E(r,`Identifier`)&&n.symbolFor(r)?.id===t?.id},o=null;if(a(i.left)&&(o=i.right),a(i.right)&&(o=i.left),!o||!pm(o,n))return!1;let s=e=>{let t=X(e),r=X(o);return E(t,`Identifier`)?E(r,`Identifier`)&&n.symbolFor(t)?.id===n.symbolFor(r)?.id:E(t,`Literal`)&&E(r,`Literal`)&&t.value===r.value};return i.operator===`===`||i.operator===`==`?a(r.consequent)&&s(r.alternate):s(r.consequent)&&a(r.alternate)},Yge=(e,t)=>{let n=X(e);if(!E(n,`ArrowFunctionExpression`)&&!E(n,`FunctionExpression`))return!1;let r=n.params?.[0];if(!r||!E(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!E(n.body,`BlockStatement`))return Jge(n.body,i,t)||_m(n.body,i,t);if(n.body.body.length!==1)return!1;let a=n.body.body[0];return!E(a,`ReturnStatement`)||!j(a.argument)?!1:Jge(a.argument,i,t)||_m(a.argument,i,t)},Xge=(e,t)=>{let n=e.parent;if(!n||!E(n,`CallExpression`)||n.callee!==e)return!1;let r=mm(e,t),i=n.arguments?.[0];return!r||!i||!j(i)?!1:Yge(i,t)?!0:_m(i,r.stateSymbol,t)},Zge=(e,t)=>{let n=null,r=i=>{if(n||i!==e&&(E(i,`FunctionDeclaration`)||E(i,`FunctionExpression`)||E(i,`ArrowFunctionExpression`)))return;if(E(i,`Identifier`)){let e=mm(i,t);if(e&&Xge(i,t)){n=e.setterSymbol.name;return}}let a=i;for(let e of Object.keys(a)){if(e===`parent`)continue;let t=a[e];if(Array.isArray(t))for(let e of t)j(e)&&r(e);else j(t)&&r(t)}};return r(e),n},Qge=(e,t)=>{let n=null,r=i=>{if(n||i!==e&&(E(i,`FunctionDeclaration`)||E(i,`FunctionExpression`)||E(i,`ArrowFunctionExpression`)))return;if(E(i,`Identifier`)){let e=mm(i,t);if(e){n=e.setterSymbol.name;return}}let a=i;for(let e of Object.keys(a)){if(e===`parent`)continue;let t=a[e];if(Array.isArray(t))for(let e of t)j(e)&&r(e);else j(t)&&r(t)}};return r(e),n},$ge=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set,a=e=>{if(E(e,`AssignmentExpression`)&&E(e.left,`Identifier`)){let a=t.symbolFor(e.left);a&&!i.has(a.name)&&!Fp(a)&&!Qt(a.scope,n)&&(i.add(a.name),r.push({name:a.name,node:e.left}))}let o=e;for(let e of Object.keys(o)){if(e===`parent`)continue;let t=o[e];if(Array.isArray(t))for(let e of t)j(e)&&a(e);else j(t)&&a(t)}};return a(e),r},vm=e=>{let t=$p(e);if(!t)return null;let n=t.indexOf(`.current`);return n===-1?null:t.slice(0,n+8)},e_e=(e,t)=>{let n=null,r=t=>{if(n||t!==e&&(E(t,`FunctionExpression`)||E(t,`ArrowFunctionExpression`)))return;if(E(t,`ReturnStatement`)){let e=t.argument;if(e&&(E(e,`FunctionExpression`)||E(e,`ArrowFunctionExpression`))){n=e;return}}let i=t;for(let e of Object.keys(i)){if(e===`parent`)continue;let t=i[e];if(Array.isArray(t))for(let e of t)j(e)&&r(e);else j(t)&&r(t)}};if(r(e),!n)return null;let i=null,a=n=>{if(i)return;if(E(n,`MemberExpression`)){let r=vm(n);if(r){let a=tm(n),o=a?t.symbolFor(a):null,s=t.ownScopeFor(e)??t.scopeFor(e);if(!o||!Qt(o.scope,s)){i={refCurrentName:r,refSymbol:o};return}}}let r=n;for(let e of Object.keys(r)){if(e===`parent`)continue;let t=r[e];if(Array.isArray(t))for(let e of t)j(e)&&a(e);else j(t)&&a(t)}};return a(n),i},t_e=e=>{if(!e)return!1;for(let t of e.references){let e=t.identifier.parent;if(!e||!E(e,`MemberExpression`)||e.object!==t.identifier||vm(e)===null)continue;let n=e.parent;if(n&&E(n,`AssignmentExpression`)&&n.left===e||n&&E(n,`UpdateExpression`)&&n.argument===e)return!0}return!1},n_e=(e,t)=>{if(!e)return!1;let n=e.initializer?X(e.initializer):null;if(!n||!E(n,`CallExpression`)||Ip(n.callee,t)!==`useRef`)return!1;let r=n.arguments[0];if(!r||!j(r))return!1;let i=X(r);return!(E(i,`Literal`)&&i.value===null||E(i,`Identifier`)&&i.name===`undefined`)},r_e=(e,t)=>{let n=!1,r=i=>{if(n||i!==e&&(E(i,`FunctionExpression`)||E(i,`ArrowFunctionExpression`)))return;if(E(i,`AssignmentExpression`)&&vm(i.left)===t){n=!0;return}let a=i;for(let e of Object.keys(a)){if(e===`parent`)continue;let t=a[e];if(Array.isArray(t))for(let e of t)j(e)&&r(e);else j(t)&&r(t)}};return r(e),n},i_e=(e,t,n)=>{let r=tm(e);if(!r)return!1;let i=n.symbolFor(r);if(!i||Fp(i))return!1;let a=fge(t),o=a?n.ownScopeFor(a):null;return!!(o&&!Qt(i.scope,o))},a_e=(e,t,n)=>{let r=xp(e,n).find(e=>e.resolvedSymbol?.name===t)?.resolvedSymbol??null;if(!r)return!1;let i=!1;return D(e,e=>{if(i)return!1;if(E(e,`CallExpression`)){let a=X(e.callee);if(E(a,`MemberExpression`)){let e=X(a.object),o=!1;for(;e&&E(e,`MemberExpression`);){if(E(e.property,`Identifier`)&&e.property.name===`current`){o=!0;break}e=X(e.object)}if(!o&&e&&E(e,`Identifier`)&&e.name===t&&n.symbolFor(e)===r)return i=!0,!1}}}),i},o_e=(e,t,n,r,i)=>{let a=[...e].filter(e=>e.startsWith(`props.`));if(a.length<2||t.has(`props`))return;let o=a.every(e=>[...t].some(t=>em(t,e)));i&&o||a_e(n,`props`,r)&&e.add(`props`)},s_e=C({id:`exhaustive-deps`,title:`Missing effect dependencies`,severity:`warn`,tags:[`test-noise`],recommendation:`Don't blindly add missing dependencies. Read the hook callback first.
4
4