@farm.js/react 0.1.0-beta.12 → 0.1.0-beta.14
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/README.md +3 -3
- package/dist/compiler-runtime.cjs +358 -77
- package/dist/compiler-runtime.cjs.map +1 -1
- package/dist/compiler-runtime.d.mts +3 -1
- package/dist/compiler-runtime.d.ts +3 -1
- package/dist/compiler-runtime.mjs +358 -77
- package/dist/compiler-runtime.mjs.map +1 -1
- package/dist/index.cjs +11 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +11 -2
- package/dist/index.mjs.map +1 -1
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.mjs.map +1 -1
- package/package.json +2 -2
package/dist/vite.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/compiler.ts","../src/compiler-report.ts","../src/index.ts","../src/vite.ts"],"names":["t","traverse","method","result","line","parent","unsupported","reason","plan","staticBefore","nested","name","transformAsync","relative","resolve","mkdir","dirname","writeFile","realpath","lstat","sep","isAbsolute","normalizePath"],"mappings":";;;;;;;;AAyMA,IAAM,4BAAA,uBAAmC,GAAA,CAAI;AAAA,EAC3C,eAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,SAAS,0BACP,IAAA,EACS;AACT,EAAA,IAAI,IAAA,CAAK,OAAO,MAAA,KAAW,CAAA,IAAK,KAAK,YAAA,CAAa,MAAA,GAAS,GAAG,OAAO,KAAA;AACrE,EAAA,IACE,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,UAAA,CAAW,IAAA;AAAA,IACpC,CAAC,SAAA,KACCA,UAAA,CAAE,cAAA,CAAe,SAAS,CAAA,IAC1BA,UAAA,CAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,IAChC,UAAA,CAAW,IAAA,CAAK,SAAA,CAAU,KAAK,IAAI;AAAA,GACvC,EACA;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAK,MAAA,CAAO,KAAA;AAAA,IAAM,CAAC,UACxB,4BAAA,CAA6B,GAAA,CAAI,MAAM,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC;AAAA,GACrE;AACF;AAqLA,IAAM,gCAAA,GAA+E;AAAA,EACnF,WAAA,EAAa,2BAAA;AAAA,EACb,kBAAA,EAAoB,+BAAA;AAAA,EACpB,oBAAA,EAAsB,iCAAA;AAAA,EACtB,YAAA,EAAc,yBAAA;AAAA,EACd,YAAA,EAAc,yBAAA;AAAA,EACd,mBAAA,EAAqB,+BAAA;AAAA,EACrB,4BAAA,EAA8B,uCAAA;AAAA,EAC9B,kCAAA,EAAoC,4CAAA;AAAA,EACpC,mCAAA,EAAqC,6CAAA;AAAA,EACrC,2BAAA,EAA6B,sCAAA;AAAA,EAC7B,+BAAA,EAAiC,yCAAA;AAAA,EACjC,uBAAA,EAAyB,kCAAA;AAAA,EACzB,yCAAA,EAA2C,kDAAA;AAAA,EAC3C,yBAAA,EAA2B,oCAAA;AAAA,EAC3B,+BAAA,EAAiC,yCAAA;AAAA,EACjC,gCAAA,EAAkC,0CAAA;AAAA,EAClC,0BAAA,EAA4B,qCAAA;AAAA,EAC5B,qCAAA,EAAuC,+CAAA;AAAA,EACvC,yCAAA,EAA2C,kDAAA;AAAA,EAC3C,sCAAA,EAAwC,gDAAA;AAAA,EACxC,0CAAA,EAA4C,mDAAA;AAAA,EAC5C,2BAAA,EAA6B,sCAAA;AAAA,EAC7B,kCAAA,EAAoC,4CAAA;AAAA,EACpC,wBAAA,EAA0B,oCAAA;AAAA,EAC1B,+BAAA,EAAiC,0CAAA;AAAA,EACjC,wCAAA,EAA0C,kDAAA;AAAA,EAC1C,8CAAA,EACE,uDAAA;AAAA,EACF,+CAAA,EACE,wDAAA;AAAA,EACF,uCAAA,EAAyC,iDAAA;AAAA,EACzC,mCAAA,EAAqC,6CAAA;AAAA,EACrC,qDAAA,EACE,6DAAA;AAAA,EACF,qCAAA,EAAuC,+CAAA;AAAA,EACvC,2CAAA,EAA6C,oDAAA;AAAA,EAC7C,4CAAA,EACE,qDAAA;AAAA,EACF,sCAAA,EAAwC,gDAAA;AAAA,EACxC,iDAAA,EACE,0DAAA;AAAA,EACF,qDAAA,EACE,6DAAA;AAAA,EACF,kDAAA,EACE,2DAAA;AAAA,EACF,sDAAA,EACE,8DAAA;AAAA,EACF,uCAAA,EAAyC,iDAAA;AAAA,EACzC,8CAAA,EACE,uDAAA;AAAA,EACF,iBAAA,EAAmB,6BAAA;AAAA,EACnB,wBAAA,EAA0B,mCAAA;AAAA,EAC1B,iCAAA,EAAmC,2CAAA;AAAA,EACnC,uCAAA,EAAyC,gDAAA;AAAA,EACzC,wCAAA,EAA0C,iDAAA;AAAA,EAC1C,gCAAA,EAAkC,0CAAA;AAAA,EAClC,4BAAA,EAA8B,sCAAA;AAAA,EAC9B,8CAAA,EACE,sDAAA;AAAA,EACF,8BAAA,EAAgC,wCAAA;AAAA,EAChC,oCAAA,EAAsC,6CAAA;AAAA,EACtC,qCAAA,EAAuC,8CAAA;AAAA,EACvC,+BAAA,EAAiC,yCAAA;AAAA,EACjC,0CAAA,EAA4C,mDAAA;AAAA,EAC5C,8CAAA,EACE,sDAAA;AAAA,EACF,2CAAA,EAA6C,oDAAA;AAAA,EAC7C,+CAAA,EACE,uDAAA;AAAA,EACF,gCAAA,EAAkC,0CAAA;AAAA,EAClC,uCAAA,EAAyC,gDAAA;AAAA,EACzC,qBAAA,EAAuB,iCAAA;AAAA,EACvB,4BAAA,EAA8B,uCAAA;AAAA,EAC9B,qCAAA,EAAuC,+CAAA;AAAA,EACvC,2CAAA,EAA6C,oDAAA;AAAA,EAC7C,4CAAA,EACE,qDAAA;AAAA,EACF,oCAAA,EAAsC,8CAAA;AAAA,EACtC,gCAAA,EAAkC,0CAAA;AAAA,EAClC,kDAAA,EACE,0DAAA;AAAA,EACF,kCAAA,EAAoC,4CAAA;AAAA,EACpC,wCAAA,EAA0C,iDAAA;AAAA,EAC1C,yCAAA,EAA2C,kDAAA;AAAA,EAC3C,mCAAA,EAAqC,6CAAA;AAAA,EACrC,8CAAA,EACE,uDAAA;AAAA,EACF,kDAAA,EACE,0DAAA;AAAA,EACF,+CAAA,EACE,wDAAA;AAAA,EACF,mDAAA,EACE,2DAAA;AAAA,EACF,oCAAA,EAAsC,8CAAA;AAAA,EACtC,2CAAA,EAA6C,oDAAA;AAAA,EAC7C,cAAA,EAAgB,2BAAA;AAAA,EAChB,cAAA,EAAgB,2BAAA;AAAA,EAChB,SAAA,EAAW;AACb,CAAA;AAEA,SAAS,uBAAA,CACP,KAAA,EACA,mBAAA,EACA,qBAAA,EACA,iCACA,kCAAA,EACA,sBAAA,EACA,gCAAA,EACA,mCAAA,EACA,yBACA,0BAAA,EACA,4BAAA,EACA,sBAAA,EACA,yBAAA,EACA,yCACA,4BAAA,EAC8B;AAC9B,EAAA,MAAM,QAAA,uBAAe,GAAA,EAAgC;AACrD,EAAA,IAAI,yBAAA,GAA4B,KAAA;AAChC,EAAA,IAAI,uBAAA,GAA0B,KAAA;AAC9B,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,IAAA,CAAK,SAAS,YAAA,EAAc;AAC9B,MAAA,yBAAA,KAAA,yBAAA,GAA8B,IAAA,CAAK,aAAa,MAAA,GAAS,CAAA,CAAA;AACzD,MAAA,uBAAA,KAAA,uBAAA,GAA4B,OAAA,CAAQ,IAAA,CAAK,gBAAA,EAAkB,IAAI,CAAA,CAAA;AAC/D,MAAA;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,QAAQ,gCAAA,EAAkC;AACjD,MAAA,QAAA,CAAS,GAAA,CAAI,KAAK,IAAkC,CAAA;AAAA,IACtD;AAAA,EACF;AACA,EAAA,IAAI,MAAM,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,IAAA,KAAS,YAAY,CAAA,EAAG;AACpD,IAAA,MAAM,mBACJ,yBAAA,IAA6B,uBAAA,GACzB,wBACA,yBAAA,GACE,wBAAA,GACA,0BACE,iBAAA,GACA,YAAA;AACV,IAAA,MAAM,eAAA,GACJ,gCAAgC,qBAAA,IAAyB,sBAAA;AAC3D,IAAA,MAAM,wCACJ,gCAAA,KACC,kCAAA,IACC,mCACA,4BAAA,IACA,0BAAA,IACA,2BACA,sBAAA,IACA,4BAAA,CAAA;AACJ,IAAA,MAAM,UAAA,GAAa,0CACf,+BAAA,GACA,mCAAA,GACE,mCACA,qCAAA,GACE,4BAAA,GACA,qCACE,+BAAA,GACA,+BAAA,GACE,8BACA,4BAAA,GACE,eAAA,IAAmB,yBACjB,sBAAA,GACA,yBAAA,GACF,6BACE,eAAA,IAAmB,sBAAA,GACjB,wBACA,wBAAA,GACD,uBAAA,KAA4B,mBAAmB,sBAAA,CAAA,IAC7C,sBAAA,IAA0B,kBAC3B,eAAA,GACA,4BAAA,GACE,gBACA,uBAAA,GACE,kBAAA,GACA,6BAA6B,gBAAA,KAAqB,YAAA,GAChD,wBACA,sBAAA,GACE,iBAAA,GACA,yBAAyB,sBAAA,GACvB,wBAAA,GACA,wBACE,gBAAA,GACA,sBAAA,GACE,iBAAA,GACA,mBAAA,GACE,SAAA,GACA,EAAA;AAClC,IAAA,QAAA,CAAS,GAAA,CAAI,CAAA,EAAG,gBAAgB,CAAA,EAAG,UAAU,CAAA,CAAgC,CAAA;AAAA,EAC/E;AACA,EAAA,OAAO,CAAC,GAAG,QAAQ,CAAA,CAAE,IAAA,EAAK;AAC5B;AAQA,IAAM,oCAAoB,IAAI,GAAA,CAAI,CAAC,SAAA,EAAW,QAAA,EAAU,QAAQ,CAAC,CAAA;AACjE,IAAM,eAAA,mBAAkB,IAAI,GAAA,CAAI,CAAC,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEhG,SAAS,gBAAgB,IAAA,EAAuB;AAC9C,EAAA,OAAO,QAAA,CAAS,KAAK,IAAI,CAAA;AAC3B;AAEA,SAAS,cAAc,OAAA,EAAgC;AACrD,EAAA,MAAM,IAAA,GAAO,QAAQ,cAAA,CAAe,IAAA;AACpC,EAAA,OAAOA,WAAE,eAAA,CAAgB,IAAI,KAAK,QAAA,CAAS,IAAA,CAAK,KAAK,IAAI,CAAA;AAC3D;AAEA,SAAS,gBAAgB,IAAA,EAAgE;AACvF,EAAA,OAAA,CAAQ,IAAA,CAAK,cAAc,EAAC,EAAG,IAAI,CAAC,SAAA,KAAc,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA;AACzE;AAEA,SAAS,cAAA,CACP,UAAA,EACA,aAAA,EACA,UAAA,EACgC;AAChC,EAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,UAAU,GAAG,OAAO,KAAA;AAC5C,EAAA,IAAIA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,CAAA,SAAU,aAAA,CAAc,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,IAAI,CAAA;AACtF,EAAA,OACEA,UAAA,CAAE,kBAAA,CAAmB,UAAA,CAAW,MAAM,CAAA,IACtC,CAAC,UAAA,CAAW,MAAA,CAAO,QAAA,IACnBA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,OAAO,MAAM,CAAA,IACvC,UAAA,CAAW,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA,IAC5CA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,YAAY,CAAA;AAEnE;AAEA,SAAS,gBAAwC,UAAA,EAAkB;AACjE,EAAA,OAAOA,UAAA,CAAE,SAAA,CAAU,UAAA,EAAY,IAAI,CAAA;AACrC;AAEA,SAAS,eAAe,UAAA,EAAkC;AACxD,EAAA,OAAOA,UAAA,CAAE,IAAA,CAAKA,UAAA,CAAE,OAAA,CAAQ,CAACA,WAAE,mBAAA,CAAoB,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D;AAEA,SAAS,wBAAA,CACP,YACA,aAAA,EACU;AACV,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AACvD,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AAC9C,MAAA,IAAI,KAAA,IAAS,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG,YAAA,CAAa,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA;AAAA,IACnF;AAAA,GACD,CAAA;AACD,EAAA,OAAO,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAC7D;AAEA,SAAS,oBAAA,CAAqB,YAA0B,IAAA,EAAuB;AAC7E,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAAA,aAAA,CAAS,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAG;AAAA,IACpD,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,IAAA,CAAK,KAAK,IAAA,KAAS,IAAA,IAAQ,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,IAAI,CAAA,EAAG;AAC3D,QAAA,UAAA,GAAa,IAAA;AAAA,MACf;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,0BAAA,CACP,YACA,YAAA,EACG;AACH,EAAA,IAAI,YAAA,CAAa,IAAA,KAAS,CAAA,EAAG,OAAO,gBAAgB,UAAU,CAAA;AAC9D,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AACvD,EAAAA,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,KAAK,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AAC3C,MAAA,MAAM,WAAA,GAAc,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AACnD,MAAA,IAAI,CAAC,WAAA,EAAa;AAClB,MAAA,IAAA,CAAK,WAAA,CAAYD,UAAA,CAAE,SAAA,CAAU,WAAW,CAAC,CAAA;AACzC,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AACzD;AAEA,SAAS,mBAAA,CACP,OAAA,EACA,WAAA,EACA,cAAA,EACA,iBACA,qBAAA,EAC0C;AAC1C,EAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,YAAA,IAAgB,EAAC;AAC9C,EAAA,IAAI,YAAA,CAAa,WAAW,CAAA,IAAK,qBAAA,CAAsB,IAAI,YAAA,CAAa,CAAC,CAAC,CAAA,EAAG,OAAO,MAAA;AACpF,EAAA,MAAM,aAAA,GAAgB,mBAAmB,WAAW,CAAA;AACpD,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA;AACpC,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,aAAA,IAAiB,CAACA,UAAA,CAAE,YAAA,CAAa,OAAO,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,OAAO,CAAA,EAAG,OAAO,MAAA;AAEnF,EAAA,MAAM,YAAA,uBAAmB,GAAA,CAA0B,CAAC,CAAC,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAC,CAAC,CAAA;AAC5E,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA;AACrC,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AACxC,EAAA,IAAIA,WAAE,YAAA,CAAa,QAAQ,KAAKA,UAAA,CAAE,YAAA,CAAa,QAAQ,CAAA,EAAG;AACxD,IAAA,YAAA,CAAa,GAAA,CAAI,QAAA,CAAS,IAAA,EAAM,QAAQ,CAAA;AAAA,EAC1C;AACA,EAAA,MAAM,gBAAA,GAAmB,0BAAA,CAA2B,aAAA,EAAe,YAAY,CAAA;AAC/E,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,OAAA,CAAQ,KAAK,CAAC,CAAA;AAC1D,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,EAAA,IAAI,WAAA,GAAc,CAAA;AAClB,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,CAAC,SAAS,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACrD,MAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AACnD,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,IAAI,SAAS,KAAA,KAAU,YAAA,CAAa,CAAC,CAAA,IAAM,MAAA,IAAU,WAAW,QAAA,EAAW;AACzE,QAAA,KAAA,GAAQ,KAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AACV,QAAA;AAAA,MACF;AACA,MAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,MAAA,IACE,CAAC,MAAA,CAAO,kBAAA,EAAmB,IAC1B,MAAA,CAAO,IAAA,CAAK,QAAA,KAAa,KAAA,IAAS,MAAA,CAAO,IAAA,CAAK,QAAA,KAAa,KAAA,EAC5D;AACA,QAAA,KAAA,GAAQ,KAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AACV,QAAA;AAAA,MACF;AACA,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,IAAA,KAAS,IAAA,CAAK,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,IAAA;AAC/E,MAAA,IAAI,CAACD,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,iBAAA,CAAkB,KAAA,EAAO,gBAAgB,CAAA,EAAG;AAC3E,QAAA,KAAA,GAAQ,KAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AACV,QAAA;AAAA,MACF;AACA,MAAA,MAAA,GAAS,QAAA;AACT,MAAA,WAAA,IAAe,CAAA;AAAA,IACjB;AAAA,GACD,CAAA;AACD,EAAA,OAAO,KAAA,IAAS,MAAA,IAAU,WAAA,GAAc,CAAA,GACpC,EAAE,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,KAAA,EAAOA,UAAA,CAAE,UAAA,CAAW,MAAA,CAAO,SAAS,GAAE,GAClE,MAAA;AACN;AAEA,SAAS,8BAAA,CACP,YACA,eAAA,EACS;AACT,EAAA,IACE,WAAW,SAAA,CAAU,MAAA,KAAW,CAAA,IAChC,CAACA,WAAE,YAAA,CAAa,UAAA,CAAW,SAAA,CAAU,CAAC,CAAC,CAAA,IACvC,CAACA,WAAE,kBAAA,CAAmB,UAAA,CAAW,MAAM,CAAA,IACvC,UAAA,CAAW,MAAA,CAAO,QAAA,IAClB,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,MAAM,CAAA,IACxC,CAACA,UAAA,CAAE,YAAA,CAAa,WAAW,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA,EAC3D;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,WAAW,eAAA,CAAgB,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,OAAO,IAAI,CAAA;AAClE,EAAA,OAAO,OAAA,CAAQ,UAAU,UAAU,CAAA;AACrC;AAEA,SAAS,oCAAA,CACP,YACA,eAAA,EACS;AACT,EAAA,IAAI,KAAA,GAAQ,KAAA;AACZ,EAAAC,aAAA,CAAS,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAG;AAAA,IACpD,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,CAAC,8BAAA,CAA+B,IAAA,CAAK,IAAA,EAAM,eAAe,CAAA,EAAG;AACjE,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,6BAAA,CACP,YACA,eAAA,EACS;AACT,EAAA,IACE,WAAW,SAAA,CAAU,MAAA,KAAW,CAAA,IAChC,CAACD,WAAE,YAAA,CAAa,UAAA,CAAW,SAAA,CAAU,CAAC,CAAC,CAAA,IACvC,CAACA,WAAE,kBAAA,CAAmB,UAAA,CAAW,MAAM,CAAA,IACvC,UAAA,CAAW,MAAA,CAAO,QAAA,IAClB,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,MAAM,CAAA,IACxC,CAACA,UAAA,CAAE,YAAA,CAAa,WAAW,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA,EAC3D;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,WAAW,eAAA,CAAgB,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,OAAO,IAAI,CAAA;AAClE,EAAA,OAAO,OAAA,CAAQ,UAAU,UAAU,CAAA;AACrC;AAEA,SAAS,mCAAA,CACP,YACA,eAAA,EACS;AACT,EAAA,IAAI,KAAA,GAAQ,KAAA;AACZ,EAAAC,aAAA,CAAS,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAG;AAAA,IACpD,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,CAAC,6BAAA,CAA8B,IAAA,CAAK,IAAA,EAAM,eAAe,CAAA,EAAG;AAChE,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,qBAAA,CACP,OAAA,EACA,WAAA,EACA,cAAA,EACA,iBACA,qBAAA,EAC4C;AAC5C,EAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,YAAA,IAAgB,EAAC;AAC9C,EAAA,IAAI,YAAA,CAAa,WAAW,CAAA,IAAK,qBAAA,CAAsB,IAAI,YAAA,CAAa,CAAC,CAAC,CAAA,EAAG,OAAO,MAAA;AACpF,EAAA,MAAM,aAAA,GAAgB,mBAAmB,WAAW,CAAA;AACpD,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA;AACpC,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,aAAA,IAAiB,CAACD,UAAA,CAAE,YAAA,CAAa,OAAO,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,OAAO,CAAA,EAAG,OAAO,MAAA;AAEnF,EAAA,MAAM,YAAA,uBAAmB,GAAA,CAA0B,CAAC,CAAC,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAC,CAAC,CAAA;AAC5E,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA;AACrC,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AACxC,EAAA,IAAIA,WAAE,YAAA,CAAa,QAAQ,KAAKA,UAAA,CAAE,YAAA,CAAa,QAAQ,CAAA,EAAG;AACxD,IAAA,YAAA,CAAa,GAAA,CAAI,QAAA,CAAS,IAAA,EAAM,QAAQ,CAAA;AAAA,EAC1C;AACA,EAAA,MAAM,gBAAA,GAAmB,0BAAA,CAA2B,aAAA,EAAe,YAAY,CAAA;AAC/E,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,OAAA,CAAQ,KAAK,CAAC,CAAA;AAC1D,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,CAAC,SAAS,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACrD,MAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AACnD,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,MAAA,MAAM,OAAO,MAAA,CAAO,UAAA;AACpB,MAAA,IACE,CAAC,QAAA,CAAS,UAAA,IACV,QAAA,CAAS,UAAU,YAAA,CAAa,CAAC,CAAA,IAChC,MAAA,IAAU,MAAA,KAAW,QAAA,IACtB,CAAC,MAAA,CAAO,oBAAmB,IAC3B,MAAA,CAAO,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,IAAA,IAC5B,MAAA,CAAO,IAAA,CAAK,YACZ,CAACD,UAAA,CAAE,YAAA,CAAa,MAAA,CAAO,IAAA,CAAK,QAAA,EAAU,EAAE,IAAA,EAAM,OAAO,CAAA,IACrD,CAAC,IAAA,IACD,CAAC,IAAA,CAAK,gBAAA,EAAiB,IACvB,KAAK,IAAA,CAAK,MAAA,KAAW,MAAA,CAAO,IAAA,IAC5B,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,KAC/B,CAACA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,KACtC,CAACA,UAAA,CAAE,iBAAA,CAAkB,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,EAAG,gBAAgB,CAAA,EAC7D;AACA,QAAA,KAAA,GAAQ,KAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AACV,QAAA;AAAA,MACF;AACA,MAAA,MAAA,GAAS,QAAA;AACT,MAAA,KAAA,IAAS,CAAA;AAAA,IACX;AAAA,GACD,CAAA;AACD,EAAA,OAAO,KAAA,IAAS,MAAA,IAAU,KAAA,GAAQ,CAAA,GAC9B,EAAE,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,KAAA,EAAOA,UAAA,CAAE,UAAA,CAAW,MAAA,CAAO,SAAS,GAAE,GAClE,MAAA;AACN;AAEA,SAAS,oBAAA,CACP,OAAA,EACA,WAAA,EACA,cAAA,EACA,iBACA,qBAAA,EAC2C;AAC3C,EAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,YAAA,IAAgB,EAAC;AAC9C,EAAA,IAAI,YAAA,CAAa,WAAW,CAAA,IAAK,qBAAA,CAAsB,IAAI,YAAA,CAAa,CAAC,CAAC,CAAA,EAAG,OAAO,MAAA;AACpF,EAAA,MAAM,aAAA,GAAgB,mBAAmB,WAAW,CAAA;AACpD,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA;AACpC,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,aAAA,IAAiB,CAACA,UAAA,CAAE,YAAA,CAAa,OAAO,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,OAAO,CAAA,EAAG,OAAO,MAAA;AAEnF,EAAA,MAAM,YAAA,uBAAmB,GAAA,CAA0B,CAAC,CAAC,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAC,CAAC,CAAA;AAC5E,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA;AACrC,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AACxC,EAAA,IAAIA,WAAE,YAAA,CAAa,QAAQ,KAAKA,UAAA,CAAE,YAAA,CAAa,QAAQ,CAAA,EAAG;AACxD,IAAA,YAAA,CAAa,GAAA,CAAI,QAAA,CAAS,IAAA,EAAM,QAAQ,CAAA;AAAA,EAC1C;AACA,EAAA,MAAM,gBAAA,GAAmB,0BAAA,CAA2B,aAAA,EAAe,YAAY,CAAA;AAC/E,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,OAAA,CAAQ,KAAK,CAAC,CAAA;AAC1D,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,CAAC,SAAS,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACrD,MAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AACnD,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,MAAA,MAAM,OAAO,MAAA,CAAO,UAAA;AACpB,MAAA,IACE,CAAC,QAAA,CAAS,UAAA,IACV,QAAA,CAAS,UAAU,YAAA,CAAa,CAAC,CAAA,IAChC,MAAA,IAAU,MAAA,KAAW,QAAA,IACtB,CAAC,MAAA,CAAO,oBAAmB,IAC3B,MAAA,CAAO,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,IAAA,IAC5B,MAAA,CAAO,IAAA,CAAK,YACZ,CAACD,UAAA,CAAE,YAAA,CAAa,MAAA,CAAO,IAAA,CAAK,QAAA,EAAU,EAAE,IAAA,EAAM,OAAO,CAAA,IACrD,CAAC,IAAA,IACD,CAAC,IAAA,CAAK,gBAAA,EAAiB,IACvB,KAAK,IAAA,CAAK,MAAA,KAAW,MAAA,CAAO,IAAA,IAC5B,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,KAC/B,CAACA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,KACtC,CAACA,UAAA,CAAE,iBAAA,CAAkB,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,EAAG,gBAAgB,CAAA,EAC7D;AACA,QAAA,KAAA,GAAQ,KAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AACV,QAAA;AAAA,MACF;AACA,MAAA,MAAA,GAAS,QAAA;AACT,MAAA,KAAA,IAAS,CAAA;AAAA,IACX;AAAA,GACD,CAAA;AACD,EAAA,OAAO,KAAA,IAAS,MAAA,IAAU,KAAA,GAAQ,CAAA,GAC9B,EAAE,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,KAAA,EAAOA,UAAA,CAAE,UAAA,CAAW,MAAA,CAAO,SAAS,GAAE,GAClE,MAAA;AACN;AAEA,SAAS,uBAAA,CAAwB,YAA0B,KAAA,EAAsC;AAC/F,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,EAAAC,aAAA,CAAS,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAG;AAAA,IACpD,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,IAAK,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACvE,QAAA,UAAA,CAAW,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA;AAAA,MAC/B;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO,CAAC,GAAG,UAAU,CAAA;AACvB;AAEA,SAAS,oBAAA,CACP,YACA,aAAA,EACG;AACH,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AACvD,EAAAA,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,KAAK,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AAC3C,MAAA,MAAM,OAAA,GAAU,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AAChD,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,IAAA,CAAK,WAAA,CAAY,eAAA,CAAgB,OAAO,CAAC,CAAA;AACzC,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AACzD;AAEA,SAAS,6BAAA,CACP,UAAA,EACA,KAAA,EACA,cAAA,EACG;AACH,EAAA,IAAI,KAAA,CAAM,IAAA,KAAS,CAAA,EAAG,OAAO,gBAAgB,UAAU,CAAA;AACvD,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AACvD,EAAAA,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,CAAC,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,IAAK,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,IAAI,KAAK,UAAA,CAAW,mBAAA,MAAyB,IAAA,CAAK,UAAA,CAAW,qBAAoB,EAAG;AACpF,MAAA,IAAA,CAAK,WAAA;AAAA,QACHD,UAAA,CAAE,gBAAA,CAAiBA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAC;AAAA,OAC9E;AACA,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AACzD;AAEA,SAAS,4BAAA,CACP,UAAA,EACA,KAAA,EACA,cAAA,EACa;AACb,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,EAAA,IAAI,KAAA,CAAM,IAAA,KAAS,CAAA,EAAG,OAAO,UAAA;AAC7B,EAAAC,aAAA,CAAS,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAG;AAAA,IACpD,iBAAiB,IAAA,EAAM;AACrB,MAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAU,QAAA,KAAa,IAAA,CAAK,IAAA;AAC5C,MAAA,IACE,QAAA,IACA,CAACD,UAAA,CAAE,YAAA,CAAa,QAAQ,EAAE,IAAA,EAAM,eAAe,IAAA,EAAM,KACrD,CAACA,UAAA,CAAE,aAAa,QAAQ,CAAA,IACxB,CAAC,KAAA,CAAM,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA,EACxB;AACA,QAAA;AAAA,MACF;AACA,MAAA,UAAA,CAAW,GAAA,CAAI,SAAS,IAAI,CAAA;AAAA,IAC9B;AAAA,GACD,CAAA;AACD,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,wBAAA,CACP,UAAA,EACA,cAAA,EACA,cAAA,EACG;AACH,EAAA,IAAI,cAAA,CAAe,IAAA,KAAS,CAAA,EAAG,OAAO,gBAAgB,UAAU,CAAA;AAChE,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AACvD,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,iBAAiB,IAAA,EAAM;AACrB,MAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAU,QAAA,KAAa,IAAA,CAAK,IAAA;AAC5C,MAAA,IACE,QAAA,IACA,CAACD,UAAA,CAAE,YAAA,CAAa,QAAQ,EAAE,IAAA,EAAM,cAAA,CAAe,IAAA,EAAM,CAAA,IACrD,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,CAAA,EACxB;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,cAAA,CAAe,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA;AAChD,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,IAAA,CAAK,WAAA,CAAYA,UAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAS,CAAC,CAAA;AAChD,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AACzD;AAEA,SAAS,oBAAA,CACP,MACA,cAAA,EAC0C;AAC1C,EAAA,IAAI,cAAA,CAAe,IAAA,KAAS,CAAA,EAAG,OAAO,EAAE,MAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAE;AACtE,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,MAAA;AACJ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,UAAU,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACrD,MAAA,MAAM,OAAA,GAAU,cAAA,CAAe,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,MAAM,YAAY,IAAA,CAAK,UAAA;AACvB,MAAA,MAAM,YAAY,SAAA,CAAU,UAAA;AAC5B,MAAA,MAAM,YAAY,SAAA,EAAW,cAAA,EAAe,IAAK,gBAAA,CAAiB,UAAU,IAAI,CAAA;AAChF,MAAA,IACE,SAAA,CAAU,wBAAA,EAAyB,IACnC,SAAA,CAAU,IAAA,CAAK,UAAA,KAAe,IAAA,CAAK,IAAA,IACnC,SAAA,IACA,UAAA,CAAW,IAAA,CAAK,SAAS,CAAA,EACzB;AACA,QAAA,IAAA,CAAK,YAAYD,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAC,CAAA;AACjD,QAAA,IAAA,CAAK,IAAA,EAAK;AACV,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,IAAA,GACJ,UAAU,gBAAA,EAAiB,IAAK,UAAU,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,IAAA,GAAO,SAAA,GAAY,IAAA;AACpF,MAAA,MAAM,KAAA,GAAQ,IAAA,IAAQ,mBAAA,CAAoB,IAAI,CAAA;AAC9C,MAAA,MAAM,eAAA,GACJ,KAAA,EAAO,IAAA,CAAK,KAAA,IACZA,UAAA,CAAE,wBAAA,CAAyB,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,IAC3C,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,UAAA;AACnB,MAAA,MAAM,wBACJ,eAAA,KACCA,UAAA,CAAE,0BAA0B,eAAe,CAAA,IAAKA,WAAE,oBAAA,CAAqB,eAAe,CAAA,CAAA,IACvF,OAAA,CAAQ,MAAM,UAAA,CAAW,CAAC,WAAW,MAAA,CAAO,IAAA,KAAS,eAAe,CAAC,CAAA;AACvE,MAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,KAAA,IAAS,CAAC,qBAAA,EAAuB;AAC7C,QAAA,MAAA,GAAS,CAAA,cAAA,EAAiB,QAAQ,IAAI,CAAA,2EAAA,CAAA;AACtC,QAAA,IAAA,CAAK,IAAA,EAAK;AACV,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,YAAYA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAC,CAAA;AACjD,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO,MAAA,GACH,EAAE,MAAA,EAAO,GACT;AAAA,IACE,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B;AAAA,GACxD;AACN;AAEA,SAAS,kBAAA,CACP,YACA,WAAA,EACS;AACT,EAAA,IAAIA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,CAAA,EAAG;AACrC,IAAA,OAAO,WAAA,CAAY,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,IAAI,KAAK,iBAAA,CAAkB,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,IAAI,CAAA;AAAA,EAChG;AACA,EAAA,OACEA,UAAA,CAAE,kBAAA,CAAmB,UAAA,CAAW,MAAM,KACtC,CAAC,UAAA,CAAW,MAAA,CAAO,QAAA,IACnBA,WAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA,IACzD,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA,IACtBA,WAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,QAAQ,KACzC,eAAA,CAAgB,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,SAAS,IAAI,CAAA;AAEvD;AAEA,SAAS,yBAAA,CACP,UAAA,EACA,WAAA,EACA,kBAAA,EACoB;AACpB,EAAA,IAAI,WAAA;AACJ,EAAA,MAAM,MAAA,GAAS,CAAC,MAAA,EAAgB,IAAA,KAAmB;AACjD,IAAA,WAAA,GAAc,MAAA;AACd,IAAA,IAAA,CAAK,IAAA,EAAK;AAAA,EACZ,CAAA;AAEA,EAAAC,aAAA,CAAS,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAG;AAAA,IACpD,eAAA,EAAiB,CAAC,IAAA,KAAS,MAAA,CAAO,kBAAkB,IAAI,CAAA;AAAA,IACxD,oBAAA,EAAsB,CAAC,IAAA,KAAS,MAAA,CAAO,eAAe,IAAI,CAAA;AAAA,IAC1D,eAAA,EAAiB,CAAC,IAAA,KAAS,MAAA,CAAO,qBAAqB,IAAI,CAAA;AAAA,IAC3D,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,CAAC,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,WAAW,KAAK,CAAC,kBAAA,GAAqB,IAAA,CAAK,IAAI,CAAA,EAAG;AACnF,QAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA;AAAA,MAC/B;AAAA,IACF,CAAA;AAAA,IACA,eAAA,EAAiB,CAAC,IAAA,KAAS,MAAA,CAAO,qBAAqB,IAAI,CAAA;AAAA,IAC3D,QAAA,EAAU,CAAC,IAAA,KAAS,MAAA,CAAO,wBAAwB,IAAI,CAAA;AAAA,IACvD,UAAA,EAAY,CAAC,IAAA,KAAS,MAAA,CAAO,OAAO,IAAI,CAAA;AAAA,IACxC,WAAA,EAAa,CAAC,IAAA,KAAS,MAAA,CAAO,OAAO,IAAI,CAAA;AAAA,IACzC,aAAA,EAAe,CAAC,IAAA,KAAS,MAAA,CAAO,qBAAqB,IAAI,CAAA;AAAA,IACzD,gBAAA,EAAkB,CAAC,IAAA,KAAS,MAAA,CAAO,mBAAmB,IAAI,CAAA;AAAA,IAC1D,sBAAA,EAAwB,CAAC,IAAA,KAAS,MAAA,CAAO,kBAAkB,IAAI,CAAA;AAAA,IAC/D,wBAAA,EAA0B,CAAC,IAAA,KAAS,MAAA,CAAO,oBAAoB,IAAI,CAAA;AAAA,IACnE,cAAA,EAAgB,CAAC,IAAA,KAAS,MAAA,CAAO,oBAAoB,IAAI,CAAA;AAAA,IACzD,gBAAgB,IAAA,EAAM;AACpB,MAAA,IAAI,KAAK,IAAA,CAAK,QAAA,KAAa,QAAA,EAAU,MAAA,CAAO,sBAAsB,IAAI,CAAA;AAAA,IACxE,CAAA;AAAA,IACA,gBAAA,EAAkB,CAAC,IAAA,KAAS,MAAA,CAAO,sBAAsB,IAAI,CAAA;AAAA,IAC7D,eAAA,EAAiB,CAAC,IAAA,KAAS,MAAA,CAAO,qBAAqB,IAAI;AAAA,GAC5D,CAAA;AAED,EAAA,OAAO,WAAA;AACT;AAEA,SAAS,oBAAoB,IAAA,EAAiD;AAC5E,EAAA,MAAM,YAAY,IAAA,CAAK,UAAA,CAAW,CAAC,MAAA,KAAW,MAAA,CAAO,gBAAgB,CAAA;AACrE,EAAA,IAAI,CAAC,SAAA,EAAW,cAAA,EAAe,IAAK,CAACD,UAAA,CAAE,eAAA,CAAgB,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA,EAAG,OAAO,IAAA;AACpF,EAAA,OAAO,WAAW,IAAA,CAAK,SAAA,CAAU,KAAK,IAAA,CAAK,IAAI,IAAI,SAAA,GAAY,IAAA;AACjE;AAEA,SAAS,mBAAA,CACP,MACA,cAAA,EACoB;AACpB,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,MAAA;AACJ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,MAAA,EAAQ;AACZ,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AAC/C,MAAA,IAAI,CAAC,SAAS,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACrD,MAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,MAAA,IACE,CAAC,MAAA,CAAO,gBAAA,EAAiB,IACzB,MAAA,CAAO,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,IAAA,IAC5B,CAAC,mBAAA,CAAoB,MAAM,CAAA,EAC3B;AACA,QAAA,MAAA,GAAS,CAAA,EAAG,MAAM,UAAU,CAAA,0CAAA,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,kBAAA,CAAmB,YAA0B,IAAA,EAA6B;AACjF,EAAA,OAAOD,WAAE,YAAA,CAAa,UAAA,EAAY,EAAE,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AACvD;AAEA,SAAS,yBAAA,CACP,UAAA,EACA,IAAA,EACA,WAAA,EACS;AACT,EAAA,IAAI,CAACA,UAAA,CAAE,kBAAA,CAAmB,UAAU,GAAG,OAAO,KAAA;AAC9C,EAAA,IAAI,WAAA,GAAc,KAAA;AAClB,EAAA,KAAA,MAAW,QAAA,IAAY,WAAW,UAAA,EAAY;AAC5C,IAAA,IAAIA,UAAA,CAAE,eAAA,CAAgB,QAAQ,CAAA,EAAG;AAC/B,MAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,QAAA,EAAU,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,OAAO,KAAA;AACpE,MAAA,WAAA,GAAc,IAAA;AACd,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAAK,QAAA,CAAS,QAAA,IAAY,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAAG;AACzF,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,IAAI,yBAAA,CAA0B,QAAA,CAAS,KAAA,EAAO,WAAW,GAAG,OAAO,KAAA;AAAA,EACrE;AACA,EAAA,OAAO,WAAA;AACT;AAIA,SAAS,6BAAA,CACP,MACA,KAAA,EACyB;AACzB,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,KAAA,CAAM,WAAA;AAAA,IACvC,SAAA,EAAW,IAAA,CAAK,SAAA,IAAa,KAAA,CAAM;AAAA,GACrC;AACF;AAEA,SAAS,2BAAA,CACP,UAAA,EACA,IAAA,EACA,WAAA,EACqC;AACrC,EAAA,IAAI,kBAAA,CAAmB,YAAY,IAAI,CAAA,SAAU,EAAE,WAAA,EAAa,KAAA,EAAO,SAAA,EAAW,IAAA,EAAK;AACvF,EAAA,IAAI,yBAAA,CAA0B,UAAA,EAAY,IAAA,EAAM,WAAW,CAAA,EAAG;AAC5D,IAAA,OAAO,EAAE,WAAA,EAAa,IAAA,EAAM,SAAA,EAAW,KAAA,EAAM;AAAA,EAC/C;AACA,EAAA,IAAI,CAACA,UAAA,CAAE,uBAAA,CAAwB,UAAU,GAAG,OAAO,MAAA;AACnD,EAAA,IAAI,yBAAA,CAA0B,UAAA,CAAW,IAAA,EAAM,WAAW,GAAG,OAAO,MAAA;AACpE,EAAA,MAAM,UAAA,GAAa,2BAAA,CAA4B,UAAA,CAAW,UAAA,EAAY,MAAM,WAAW,CAAA;AACvF,EAAA,MAAM,SAAA,GAAY,2BAAA,CAA4B,UAAA,CAAW,SAAA,EAAW,MAAM,WAAW,CAAA;AACrF,EAAA,OAAO,UAAA,IAAc,SAAA,GAAY,6BAAA,CAA8B,UAAA,EAAY,SAAS,CAAA,GAAI,MAAA;AAC1F;AAEA,SAAS,0BAAA,CACP,SAAA,EACA,IAAA,EACA,WAAA,EACqC;AACrC,EAAA,OAAOA,UAAA,CAAE,gBAAA,CAAiB,SAAS,CAAA,GAC/B,4BAA4B,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,WAAW,IAC7D,2BAAA,CAA4B,CAAC,SAAS,CAAA,EAAG,MAAM,WAAW,CAAA;AAChE;AAEA,SAAS,8BAAA,CACP,SAAA,EACA,IAAA,EACA,WAAA,EACS;AACT,EAAA,OACE,SAAA,CAAU,SAAS,OAAA,IACnB,SAAA,CAAU,aAAa,MAAA,GAAS,CAAA,IAChC,UAAU,YAAA,CAAa,KAAA;AAAA,IACrB,CAAC,WAAA,KACCA,UAAA,CAAE,YAAA,CAAa,WAAA,CAAY,EAAE,CAAA,IAC7B,WAAA,CAAY,EAAA,CAAG,IAAA,KAAS,IAAA,CAAK,IAAA,IAC7B,CAAC,WAAA,CAAY,GAAA,CAAI,WAAA,CAAY,EAAA,CAAG,IAAI,CAAA,IACpC,WAAA,CAAY,IAAA,IAAQ,QACpBA,UAAA,CAAE,YAAA,CAAa,WAAA,CAAY,IAAI,CAAA,IAC/B,CAAC,yBAAA,CAA0B,WAAA,CAAY,MAAM,WAAW;AAAA,GAC5D;AAEJ;AAEA,SAAS,gCAAA,CACP,SAAA,EACA,IAAA,EACA,WAAA,EACqC;AACrC,EAAA,IACE,yBAAA,CAA0B,SAAA,CAAU,YAAA,EAAc,WAAW,KAC7D,SAAA,CAAU,KAAA,CAAM,MAAA,CAAO,CAAC,eAAe,UAAA,CAAW,IAAA,KAAS,IAAI,CAAA,CAAE,WAAW,CAAA,EAC5E;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA;AACJ,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,UAAU,KAAK,SAAA,CAAU,KAAA,CAAM,SAAQ,EAAG;AAC3D,IAAA,IAAI,WAAW,IAAA,IAAQ,yBAAA,CAA0B,UAAA,CAAW,IAAA,EAAM,WAAW,CAAA,EAAG;AAC9E,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,IAAI,UAAA,CAAW,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AACtC,MAAA,IAAI,KAAA,KAAU,SAAA,CAAU,KAAA,CAAM,MAAA,GAAS,GAAG,OAAO,MAAA;AACjD,MAAA;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GACJ,UAAA,CAAW,UAAA,CAAW,MAAA,KAAW,CAAA,IAAKA,WAAE,gBAAA,CAAiB,UAAA,CAAW,UAAA,CAAW,CAAC,CAAC,CAAA,GAC7E,2BAA2B,UAAA,CAAW,UAAA,CAAW,CAAC,CAAA,EAAG,IAAA,EAAM,WAAW,IACtE,2BAAA,CAA4B,UAAA,CAAW,UAAA,EAAY,IAAA,EAAM,WAAW,CAAA;AAC1E,IAAA,IAAI,CAAC,QAAQ,OAAO,MAAA;AACpB,IAAA,KAAA,GAAQ,KAAA,GAAQ,6BAAA,CAA8B,KAAA,EAAO,MAAM,CAAA,GAAI,MAAA;AAAA,EACjE;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,2BAAA,CACP,UAAA,EACA,IAAA,EACA,WAAA,EACqC;AACrC,EAAA,MAAM,CAAC,SAAA,EAAW,GAAG,SAAS,CAAA,GAAI,UAAA;AAClC,EAAA,IAAI,CAAC,WAAW,OAAO,MAAA;AACvB,EAAA,IAAIA,UAAA,CAAE,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAClC,IAAA,IAAI,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,CAAC,SAAA,CAAU,QAAA,IAAY,CAACA,UAAA,CAAE,YAAA,CAAa,SAAA,CAAU,QAAQ,CAAA,EAAG;AACtF,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO,2BAAA,CAA4B,SAAA,CAAU,QAAA,EAAU,IAAA,EAAM,WAAW,CAAA;AAAA,EAC1E;AACA,EAAA,IAAIA,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,EAAG;AACtC,IAAA,OAAO,8BAAA,CAA+B,WAAW,IAAA,EAAM,WAAW,IAC9D,2BAAA,CAA4B,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA,GACxD,MAAA;AAAA,EACN;AACA,EAAA,IAAIA,UAAA,CAAE,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAClC,IAAA,OAAO,UAAU,MAAA,KAAW,CAAA,GACxB,iCAAiC,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA,GAC7D,MAAA;AAAA,EACN;AACA,EAAA,IAAI,CAACA,WAAE,aAAA,CAAc,SAAS,KAAK,yBAAA,CAA0B,SAAA,CAAU,IAAA,EAAM,WAAW,CAAA,EAAG;AACzF,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,UAAA,GAAa,0BAAA,CAA2B,SAAA,CAAU,UAAA,EAAY,MAAM,WAAW,CAAA;AACrF,EAAA,MAAM,YAAY,SAAA,CAAU,SAAA,GACxB,SAAA,CAAU,MAAA,KAAW,IACnB,0BAAA,CAA2B,SAAA,CAAU,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA,GACjE,MAAA,GACF,2BAAA,CAA4B,SAAA,EAAW,MAAM,WAAW,CAAA;AAC5D,EAAA,OAAO,UAAA,IAAc,SAAA,GAAY,6BAAA,CAA8B,UAAA,EAAY,SAAS,CAAA,GAAI,MAAA;AAC1F;AAEA,SAAS,kBAAA,CACP,IAAA,EACA,IAAA,EACA,WAAA,EACS;AACT,EAAA,MAAM,KAAA,GAAQA,UAAA,CAAE,gBAAA,CAAiB,IAAI,IACjC,2BAAA,CAA4B,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,WAAW,CAAA,GACxD,2BAAA,CAA4B,IAAA,EAAM,MAAM,WAAW,CAAA;AACvD,EAAA,OAAO,OAAA,CAAQ,KAAA,EAAO,WAAA,IAAe,KAAA,CAAM,SAAS,CAAA;AACtD;AAEA,SAAS,sBAAA,CACP,UAAA,EACA,aAAA,EACA,WAAA,EACkD;AAClD,EAAA,MAAM,iBAA8C,EAAC;AACrD,EAAA,IAAI,OAAA,GAAU,UAAA;AACd,EAAA,OACEA,UAAA,CAAE,gBAAA,CAAiB,OAAO,CAAA,IAC1B,QAAQ,SAAA,CAAU,MAAA,KAAW,CAAA,IAC7BA,UAAA,CAAE,kBAAA,CAAmB,OAAA,CAAQ,MAAM,CAAA,IACnC,CAAC,OAAA,CAAQ,MAAA,CAAO,QAAA,IAChBA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA,IACvDA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EACpC;AACA,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,SAAA,CAAU,CAAC,CAAA;AACpC,IAAA,IACE,CAACA,UAAA,CAAE,yBAAA,CAA0B,QAAQ,CAAA,IACrC,SAAS,KAAA,IACT,QAAA,CAAS,SAAA,IACT,QAAA,CAAS,OAAO,MAAA,KAAW,CAAA,IAC3B,QAAA,CAAS,MAAA,CAAO,SAAS,CAAA,IACzB,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,KAAc,CAACA,UAAA,CAAE,YAAA,CAAa,SAAS,CAAC,CAAA,IAC9D,CAAC,kBAAA,CAAmB,SAAS,IAAA,EAAM,QAAA,CAAS,OAAO,CAAC,CAAA,EAAmB,WAAW,CAAA,EAClF;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,cAAA,CAAe,KAAK,QAAQ,CAAA;AAC5B,IAAA,OAAA,GAAU,QAAQ,MAAA,CAAO,MAAA;AAAA,EAC3B;AACA,EAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,OAAA,EAAS,EAAE,IAAA,EAAM,aAAA,EAAe,CAAA,IAAK,cAAA,CAAe,MAAA,KAAW,CAAA,EAAG;AACpF,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,eAAe,OAAA,EAAQ;AAChC;AAEA,SAAS,0BAAA,CACP,IAAA,EACA,kBAAA,EACA,cAAA,EACA,kBACA,WAAA,EACuC;AACvC,EAAA,IAAI,kBAAA,CAAmB,IAAA,KAAS,CAAA,EAAG,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE;AACpF,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,gBAAA,GAAmB,mBAAmB,OAAO,CAAA;AACnD,MAAA,IAAI,CAAC,gBAAA,EAAkB;AACvB,MAAA,MAAM,SAAA,GAAY,sBAAA;AAAA,QAChB,gBAAA;AAAA,QACA,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA;AAAA,QAClB;AAAA,OACF;AACA,MAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,cAAc,CAAA;AACrE,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,cAAc,CAAA;AAChE,MAAA,MAAM,aAA4B,EAAC;AACnC,MAAA,IAAI,OAAA,GAAwBA,UAAA,CAAE,SAAA,CAAU,aAAa,CAAA;AACrD,MAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,SAAA,CAAU,MAAA,EAAQ,SAAS,CAAA,EAAG;AACxD,QAAA,MAAM,SAAS,IAAA,CAAK,KAAA,CAAM,sBAAsB,CAAA,OAAA,EAAU,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAA;AACrE,QAAA,MAAM,YAAY,IAAA,CAAK,KAAA,CAAM,sBAAsB,CAAA,eAAA,EAAkB,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAA;AAChF,QAAA,UAAA,CAAW,IAAA;AAAA,UACTA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClBA,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,OAAO,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,KAAK,CAAC;AAAA;AAC9D,WACD,CAAA;AAAA,UACDA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,SAAS,CAAA;AAAA,cACrBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAA,EAAG;AAAA,gBACtCA,UAAA,CAAE,UAAU,OAAO,CAAA;AAAA,gBACnBA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,gBAClBA,UAAA,CAAE,SAAA,CAAU,SAAA,CAAU,KAAK,GAAG,IAAI;AAAA,eACnC;AAAA;AACH,WACD;AAAA,SACH;AACA,QAAA,OAAA,GAAU,SAAA;AAAA,MACZ;AACA,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,gBAAgB,CAAA,EAAG;AAAA,UAC9CA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,UACpBA,UAAA,CAAE,uBAAA;AAAA,YACA,CAACA,WAAE,SAAA,CAAU,aAAa,GAAGA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,YAClDA,UAAA,CAAE,cAAA,CAAe,CAAC,GAAG,UAAA,EAAYA,UAAA,CAAE,eAAA,CAAgBA,UAAA,CAAE,SAAA,CAAU,OAAO,CAAC,CAAC,CAAC;AAAA;AAC3E,SACD;AAAA,OACH;AACA,MAAA,KAAA,IAAS,SAAA,CAAU,MAAA;AACnB,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD;AAAA,GACF;AACF;AAEA,SAAS,4BAAA,CACP,IAAA,EACA,kBAAA,EACA,cAAA,EACA,kBACA,WAAA,EACuC;AACvC,EAAA,IAAI,kBAAA,CAAmB,IAAA,KAAS,CAAA,EAAG,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE;AACpF,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,gBAAA,GAAmB,mBAAmB,OAAO,CAAA;AACnD,MAAA,IACGA,WAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,CAAA,IAAK,OAAA,CAAQ,KAAK,UAAA,CAAW,MAAA,GAAS,KACtE,CAACA,UAAA,CAAE,kBAAkB,gBAAgB,CAAA,IACrC,iBAAiB,QAAA,CAAS,MAAA,GAAS,KACnC,gBAAA,CAAiB,QAAA,CAAS,IAAA,CAAK,CAAC,YAAY,OAAA,KAAY,IAAI,KAC5D,CAACA,UAAA,CAAE,gBAAgB,gBAAA,CAAiB,QAAA,CAAS,CAAC,CAAC,CAAA,IAC/C,CAACA,UAAA,CAAE,YAAA,CAAa,iBAAiB,QAAA,CAAS,CAAC,EAAE,QAAA,EAAU;AAAA,QACrD,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE;AAAA,OACzB,CAAA,EACD;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAiC;AACxD,QAAA,IAAIA,UAAA,CAAE,iBAAA,CAAkB,KAAK,CAAA,EAAG;AAC9B,UAAA,OAAO,MAAM,QAAA,CAAS,KAAA;AAAA,YACpB,CAAC,YACC,OAAA,KAAY,IAAA,IACZ,CAACA,UAAA,CAAE,mBAAA,CAAoB,OAAO,CAAA,IAC9B,CAACA,WAAE,qBAAA,CAAsB,OAAO,KAChC,eAAA,CAAgBA,UAAA,CAAE,gBAAgB,OAAO,CAAA,GAAI,OAAA,CAAQ,QAAA,GAAW,OAAO;AAAA,WAC3E;AAAA,QACF;AACA,QAAA,IAAIA,UAAA,CAAE,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC/B,UAAA,OAAO,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,CAAC,QAAA,KAAa;AAC1C,YAAA,IAAIA,WAAE,eAAA,CAAgB,QAAQ,GAAG,OAAO,eAAA,CAAgB,SAAS,QAAQ,CAAA;AACzE,YAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,KAAA;AAC7E,YAAA,OAAA,CACG,CAAC,QAAA,CAAS,QAAA,IACRA,UAAA,CAAE,aAAa,QAAA,CAAS,GAAG,CAAA,IAAK,eAAA,CAAgB,QAAA,CAAS,GAAG,CAAA,KAC/D,eAAA,CAAgB,SAAS,KAAK,CAAA;AAAA,UAElC,CAAC,CAAA;AAAA,QACH;AACA,QAAA,OAAO,yBAAA,CAA0B,KAAA,EAAO,WAAW,CAAA,KAAM,MAAA;AAAA,MAC3D,CAAA;AACA,MAAA,IACE,iBAAiB,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,OAAA,KAAY;AACnD,QAAA,IAAI,CAAC,WAAWA,UAAA,CAAE,mBAAA,CAAoB,OAAO,CAAA,IAAKA,UAAA,CAAE,qBAAA,CAAsB,OAAO,CAAA,EAAG;AAClF,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,OAAO,CAAC,gBAAgBA,UAAA,CAAE,eAAA,CAAgB,OAAO,CAAA,GAAI,OAAA,CAAQ,WAAW,OAAO,CAAA;AAAA,MACjF,CAAC,CAAA,EACD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,eAAe,CAAA;AAClE,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,WAAE,cAAA,CAAe;AAAA,UACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA,CAAmBA,UAAA,CAAE,SAAA,CAAU,SAAS,GAAGA,UAAA,CAAE,SAAA,CAAU,gBAAA,EAAkB,IAAI,CAAC;AAAA,WACjF,CAAA;AAAA,UACDA,UAAA,CAAE,eAAA;AAAA,YACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,gBAAgB,CAAA,EAAG;AAAA,cAC9CA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,SAAS;AAAA,aACtB;AAAA;AACH,SACD;AAAA,OACH;AACA,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD;AAAA,GACF;AACF;AAEA,SAAS,6BAAA,CACP,IAAA,EACA,kBAAA,EACA,cAAA,EACA,kBACA,WAAA,EAC0E;AAC1E,EAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,YAAA,kBAAc,IAAI,GAAA,EAAI,EAAE;AAAA,EAC5E;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,gBAAA,GAAmB,mBAAmB,OAAO,CAAA;AACnD,MAAA,IACGA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,CAAA,IAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,IACtE,CAACA,UAAA,CAAE,iBAAA,CAAkB,gBAAgB,CAAA,IACrC,gBAAA,CAAiB,QAAA,CAAS,MAAA,GAAS,CAAA,IACnC,gBAAA,CAAiB,QAAA,CAAS,IAAA,CAAK,CAAC,OAAA,KAAY,OAAA,KAAY,IAAI,CAAA,EAC5D;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,SAAS,gBAAA,CAAiB,QAAA,CAAS,gBAAA,CAAiB,QAAA,CAAS,SAAS,CAAC,CAAA;AAC7E,MAAA,IACE,CAACA,UAAA,CAAE,eAAA,CAAgB,MAAM,CAAA,IACzB,CAACA,WAAE,YAAA,CAAa,MAAA,CAAO,QAAA,EAAU,EAAE,MAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,EAAM,CAAA,EACjE;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAiC;AACzD,QAAA,IAAIA,UAAA,CAAE,iBAAA,CAAkB,KAAK,CAAA,EAAG;AAC9B,UAAA,OAAO,MAAM,QAAA,CAAS,KAAA;AAAA,YACpB,CAAC,YACC,OAAA,KAAY,IAAA,IACZ,CAACA,UAAA,CAAE,mBAAA,CAAoB,OAAO,CAAA,IAC9B,CAACA,WAAE,qBAAA,CAAsB,OAAO,KAChC,gBAAA,CAAiBA,UAAA,CAAE,gBAAgB,OAAO,CAAA,GAAI,OAAA,CAAQ,QAAA,GAAW,OAAO;AAAA,WAC5E;AAAA,QACF;AACA,QAAA,IAAIA,UAAA,CAAE,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC/B,UAAA,OAAO,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,CAAC,QAAA,KAAa;AAC1C,YAAA,IAAIA,WAAE,eAAA,CAAgB,QAAQ,GAAG,OAAO,gBAAA,CAAiB,SAAS,QAAQ,CAAA;AAC1E,YAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,KAAA;AAC7E,YAAA,OAAA,CACG,CAAC,QAAA,CAAS,QAAA,IACRA,UAAA,CAAE,aAAa,QAAA,CAAS,GAAG,CAAA,IAAK,gBAAA,CAAiB,QAAA,CAAS,GAAG,CAAA,KAChE,gBAAA,CAAiB,SAAS,KAAK,CAAA;AAAA,UAEnC,CAAC,CAAA;AAAA,QACH;AACA,QAAA,OAAO,yBAAA,CAA0B,KAAA,EAAO,WAAW,CAAA,KAAM,MAAA;AAAA,MAC3D,CAAA;AACA,MAAA,IACE,gBAAA,CAAiB,SAAS,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,IAAA,CAAK,CAAC,OAAA,KAAY;AACvD,QAAA,IAAI,CAAC,WAAWA,UAAA,CAAE,mBAAA,CAAoB,OAAO,CAAA,IAAKA,UAAA,CAAE,qBAAA,CAAsB,OAAO,CAAA,EAAG;AAClF,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,OAAO,CAAC,iBAAiBA,UAAA,CAAE,eAAA,CAAgB,OAAO,CAAA,GAAI,OAAA,CAAQ,WAAW,OAAO,CAAA;AAAA,MAClF,CAAC,CAAA,EACD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,eAAe,CAAA;AAClE,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,WAAE,cAAA,CAAe;AAAA,UACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA,CAAmBA,UAAA,CAAE,SAAA,CAAU,SAAS,GAAGA,UAAA,CAAE,SAAA,CAAU,gBAAA,EAAkB,IAAI,CAAC;AAAA,WACjF,CAAA;AAAA,UACDA,UAAA,CAAE,eAAA;AAAA,YACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,gBAAgB,CAAA,EAAG;AAAA,cAC9CA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,SAAS;AAAA,aACtB;AAAA;AACH,SACD;AAAA,OACH;AACA,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAC5B,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,KAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,oCACP,IAAA,EACA,kBAAA,EACA,cAAA,EACA,qBAAA,EACA,+BACA,WAAA,EAC0E;AAC1E,EAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,YAAA,kBAAc,IAAI,GAAA,EAAI,EAAE;AAAA,EAC5E;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,gBAAA,GAAmB,mBAAmB,OAAO,CAAA;AACnD,MAAA,IACGA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,CAAA,IAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,IACtE,CAACA,UAAA,CAAE,iBAAA,CAAkB,gBAAgB,CAAA,IACrC,gBAAA,CAAiB,QAAA,CAAS,MAAA,GAAS,CAAA,IACnC,gBAAA,CAAiB,QAAA,CAAS,IAAA,CAAK,CAAC,OAAA,KAAY,OAAA,KAAY,IAAI,CAAA,EAC5D;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,cAAA,GAAiB,gBAAA,CAAiB,QAAA,CAAS,CAAC,CAAA;AAClD,MAAA,IACE,CAACA,UAAA,CAAE,eAAA,CAAgB,cAAc,KACjC,CAACA,UAAA,CAAE,gBAAA,CAAiB,cAAA,CAAe,QAAQ,CAAA,IAC3C,cAAA,CAAe,QAAA,CAAS,UAAU,MAAA,KAAW,CAAA,IAC7C,CAACA,UAAA,CAAE,kBAAA,CAAmB,cAAA,CAAe,QAAA,CAAS,MAAM,KACpD,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,QAAA,IAC/B,CAACA,UAAA,CAAE,YAAA,CAAa,cAAA,CAAe,QAAA,CAAS,OAAO,MAAA,EAAQ;AAAA,QACrD,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE;AAAA,OACzB,KACD,CAACA,UAAA,CAAE,aAAa,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,SAAS,CAAA,IAC1E,CAACA,UAAA,CAAE,YAAA,CAAa,eAAe,QAAA,CAAS,SAAA,CAAU,CAAC,CAAC,CAAA,EACpD;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,aAAA,GAAgB,cAAA,CAAe,QAAA,CAAS,SAAA,CAAU,CAAC,CAAA;AACzD,MAAA,IACE,oCAAA,CAAqC,eAAe,WAAW,CAAA,KAAM,UACrE,gBAAA,CAAiB,aAAa,MAAM,CAAA,EACpC;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAiC;AAC1D,QAAA,IAAIA,UAAA,CAAE,iBAAA,CAAkB,KAAK,CAAA,EAAG;AAC9B,UAAA,OAAO,MAAM,QAAA,CAAS,KAAA;AAAA,YACpB,CAAC,YACC,OAAA,KAAY,IAAA,IACZ,CAACA,UAAA,CAAE,mBAAA,CAAoB,OAAO,CAAA,IAC9B,CAACA,WAAE,qBAAA,CAAsB,OAAO,KAChC,iBAAA,CAAkBA,UAAA,CAAE,gBAAgB,OAAO,CAAA,GAAI,OAAA,CAAQ,QAAA,GAAW,OAAO;AAAA,WAC7E;AAAA,QACF;AACA,QAAA,IAAIA,UAAA,CAAE,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC/B,UAAA,OAAO,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,CAAC,QAAA,KAAa;AAC1C,YAAA,IAAIA,WAAE,eAAA,CAAgB,QAAQ,GAAG,OAAO,iBAAA,CAAkB,SAAS,QAAQ,CAAA;AAC3E,YAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,KAAA;AAC7E,YAAA,OAAA,CACG,CAAC,QAAA,CAAS,QAAA,IACRA,UAAA,CAAE,aAAa,QAAA,CAAS,GAAG,CAAA,IAAK,iBAAA,CAAkB,QAAA,CAAS,GAAG,CAAA,KACjE,iBAAA,CAAkB,SAAS,KAAK,CAAA;AAAA,UAEpC,CAAC,CAAA;AAAA,QACH;AACA,QAAA,OAAO,yBAAA,CAA0B,KAAA,EAAO,WAAW,CAAA,KAAM,MAAA;AAAA,MAC3D,CAAA;AACA,MAAA,IACE,iBAAiB,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,OAAA,KAAY;AACnD,QAAA,IAAI,CAAC,WAAWA,UAAA,CAAE,mBAAA,CAAoB,OAAO,CAAA,IAAKA,UAAA,CAAE,qBAAA,CAAsB,OAAO,CAAA,EAAG;AAClF,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,OAAO,CAAC,kBAAkBA,UAAA,CAAE,eAAA,CAAgB,OAAO,CAAA,GAAI,OAAA,CAAQ,WAAW,OAAO,CAAA;AAAA,MACnF,CAAC,CAAA,EACD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,WAAW,CAAA;AAChE,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,mBAAmB,CAAA;AACrE,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,eAAe,CAAA;AAClE,MAAA,MAAM,YAAA,GAAeA,UAAA,CAAE,SAAA,CAAU,gBAAA,EAAkB,IAAI,CAAA,CAAE,QAAA;AACzD,MAAA,YAAA,CAAa,CAAC,CAAA,GAAIA,UAAA,CAAE,cAAcA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AACvD,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,WAAE,cAAA,CAAe;AAAA,UACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,WAAW,CAAA;AAAA,cACvBA,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,OAAO,CAAC;AAAA,aACjE;AAAA,YACAA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,qBAAqB,CAAA,EAAG;AAAA,gBACnDA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,gBACpBA,UAAA,CAAE,UAAU,WAAW,CAAA;AAAA,gBACvBA,UAAA,CAAE,SAAA,CAAU,aAAA,EAAe,IAAI;AAAA,eAChC;AAAA,aACH;AAAA,YACAA,UAAA,CAAE,mBAAmBA,UAAA,CAAE,SAAA,CAAU,SAAS,CAAA,EAAGA,UAAA,CAAE,eAAA,CAAgB,YAAY,CAAC;AAAA,WAC7E,CAAA;AAAA,UACDA,UAAA,CAAE,eAAA;AAAA,YACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,6BAA6B,CAAA,EAAG;AAAA,cAC3DA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,SAAS;AAAA,aACtB;AAAA;AACH,SACD;AAAA,OACH;AACA,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAC5B,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,KAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,iBAAiB,UAAA,EAAwC;AAChE,EAAA,IAAIA,UAAA,CAAE,iBAAiB,UAAU,CAAA,IAAK,OAAO,aAAA,CAAc,UAAA,CAAW,KAAK,CAAA,EAAG;AAC5E,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AACA,EAAA,IACEA,UAAA,CAAE,iBAAA,CAAkB,UAAU,CAAA,KAC7B,WAAW,QAAA,KAAa,GAAA,IAAO,UAAA,CAAW,QAAA,KAAa,GAAA,CAAA,IACxDA,UAAA,CAAE,gBAAA,CAAiB,UAAA,CAAW,QAAQ,CAAA,EACtC;AACA,IAAA,MAAM,KAAA,GACJ,WAAW,QAAA,KAAa,GAAA,GAAM,CAAC,UAAA,CAAW,QAAA,CAAS,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,KAAA;AACjF,IAAA,OAAO,MAAA,CAAO,aAAA,CAAc,KAAK,CAAA,GAAI,KAAA,GAAQ,MAAA;AAAA,EAC/C;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,oCAAA,CACP,YACA,WAAA,EACoB;AACpB,EAAA,MAAM,mBACJA,UAAA,CAAE,gBAAA,CAAiB,UAAU,CAAA,IAC5BA,UAAA,CAAE,kBAAkB,UAAU,CAAA,KAC5B,UAAA,CAAW,QAAA,KAAa,OAAO,UAAA,CAAW,QAAA,KAAa,QACxDA,UAAA,CAAE,gBAAA,CAAiB,WAAW,QAAQ,CAAA;AAC1C,EAAA,IAAI,gBAAA,IAAoB,gBAAA,CAAiB,UAAU,CAAA,KAAM,MAAA,EAAW;AAClE,IAAA,OAAO,oCAAA;AAAA,EACT;AACA,EAAA,OAAO,yBAAA,CAA0B,YAAY,WAAW,CAAA;AAC1D;AAEA,SAAS,+BACP,IAAA,EACA,kBAAA,EACA,gBACA,gBAAA,EACA,2BAAA,EACA,+BACA,WAAA,EAOA;AACA,EAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO;AAAA,MACL,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,MAC5B,KAAA,EAAO,CAAA;AAAA,MACP,gBAAA,EAAkB,CAAA;AAAA,MAClB,kBAAA,EAAoB,CAAA;AAAA,MACpB,YAAA,sBAAkB,GAAA;AAAI,KACxB;AAAA,EACF;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,IAAI,gBAAA,GAAmB,CAAA;AACvB,EAAA,IAAI,kBAAA,GAAqB,CAAA;AACzB,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,mBAAmB,OAAO,CAAA;AAC3C,MAAA,IACGA,UAAA,CAAE,iBAAiB,OAAA,CAAQ,IAAI,KAAK,OAAA,CAAQ,IAAA,CAAK,WAAW,MAAA,GAAS,CAAA,IACtE,CAAC,QAAA,IACD,CAACA,WAAE,gBAAA,CAAiB,QAAQ,KAC5B,CAACA,UAAA,CAAE,kBAAA,CAAmB,QAAA,CAAS,MAAM,CAAA,IACrC,SAAS,MAAA,CAAO,QAAA,IAChB,CAACA,UAAA,CAAE,YAAA,CAAa,SAAS,MAAA,CAAO,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,EAAM,CAAA,IACxE,CAACA,WAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA,EACxC;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,MAAA,CAAO,QAAA,CAAS,IAAA;AAC5C,MAAA,MAAM,OAAO,QAAA,CAAS,SAAA;AACtB,MAAA,MAAM,qBAAA,GACJ,UAAA,KAAe,WAAA,IAAe,IAAA,CAAK,UAAU,CAAA,IAAKA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,CAAC,CAAC,CAAA,GACpE,IAAA,CAAK,CAAC,CAAA,GACN,MAAA;AACN,MAAA,MAAM,oBAAA,GAAuB,qBAAA,GACzB,gBAAA,CAAiB,qBAAqB,CAAA,GACtC,MAAA;AACJ,MAAA,MAAM,qBAAA,GACJ,0BAA0B,MAAA,IAC1B,oBAAA,KAAyB,UACzB,oCAAA,CAAqC,qBAAA,EAAuB,WAAW,CAAA,KAAM,MAAA;AAC/E,MAAA,MAAM,aAAA,GACJ,eAAe,WAAA,IACf,IAAA,CAAK,UAAU,CAAA,IACfA,UAAA,CAAE,gBAAA,CAAiB,IAAA,CAAK,CAAC,CAAA,EAAG,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,KACvC,IAAA,CAAK,MAAA,GAAS,KAAKA,UAAA,CAAE,eAAA,CAAgB,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA;AAC/C,MAAA,MAAM,eAAA,GACJ,UAAA,KAAe,WAAA,KACb,IAAA,CAAK,MAAA,IAAU,KACf,oBAAA,KAAyB,MAAA,IACzB,MAAA,CAAO,aAAA,CAAc,oBAAoB,CAAA,IACzC,uBAAuB,CAAA,KACtB,oBAAA,KAAyB,CAAA,IAAK,IAAA,CAAK,MAAA,GAAS,CAAA,IAAKA,WAAE,eAAA,CAAgB,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,IAC3E,qBAAA,CAAA;AACJ,MAAA,MAAM,IAAA,GAAO,aAAA,GACT,cAAA,GACA,eAAA,GACE,gBAAA,GACA,eAAe,MAAA,IAAU,IAAA,CAAK,MAAA,KAAW,CAAA,GACvC,SAAA,GACA,UAAA,KAAe,eACb,IAAA,CAAK,MAAA,KAAW,CAAA,IAChBA,UAAA,CAAE,gBAAA,CAAiB,IAAA,CAAK,CAAC,CAAA,EAAG,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,GACxC,QAAA,GACA,eAAe,WAAA,IACb,IAAA,CAAK,MAAA,KAAW,CAAA,IAChBA,UAAA,CAAE,gBAAA,CAAiB,KAAK,CAAC,CAAA,EAAG,EAAE,KAAA,EAAO,CAAA,EAAG,IACxC,SAAA,GACA,IAAA,CAAK,MAAA,KAAW,CAAA,IACd,oBAAA,KAAyB,MAAA,IACzB,MAAA,CAAO,aAAA,CAAc,oBAAoB,CAAA,IACzC,oBAAA,GAAuB,CAAA,GACvB,QAAA,GACA,MAAA;AACd,MAAA,IAAI,CAAC,QAAQ,CAACA,UAAA,CAAE,aAAa,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG;AACvC,MAAA,MAAM,QAAA,GAAW,KAAK,CAAC,CAAA;AACvB,MAAA,MAAM,QAAA,GACJ,IAAA,KAAS,cAAA,IAAkB,IAAA,KAAS,gBAAA,GAAmB,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,GAAI,CAAC,IAAA,CAAK,EAAA,CAAG,EAAE,CAAC,CAAA;AACrF,MAAA,IACE,qCAAqC,QAAA,EAAU,WAAW,MAAM,MAAA,IAC/D,IAAA,KAAS,qBACP,CAAC,qBAAA,IACA,qCAAqC,qBAAA,EAAuB,WAAW,MACrE,MAAA,CAAA,IACL,IAAA,KAAS,YACR,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAS;AACtB,QAAA,MAAM,aAAaA,UAAA,CAAE,eAAA,CAAgB,IAAI,CAAA,GAAI,KAAK,QAAA,GAAW,IAAA;AAC7D,QAAA,OACE,CAAC,UAAA,IACD,CAACA,UAAA,CAAE,YAAA,CAAa,UAAU,CAAA,IAC1B,yBAAA,CAA0B,UAAA,EAAY,WAAW,CAAA,KAAM,MAAA;AAAA,MAE3D,CAAC,CAAA,EACH;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,MAAA,GAAS,KAAK,KAAA,CAAM,qBAAA;AAAA,QACxB,UAAA,KAAe,SAAS,UAAA,GAAa;AAAA,OACvC;AACA,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,WAAE,cAAA,CAAe;AAAA,UACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClBA,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,UAAU,CAAC;AAAA;AACpE,WACD,CAAA;AAAA,UACDA,UAAA,CAAE,eAAA;AAAA,YACA,SAAS,cAAA,GACLA,UAAA,CAAE,eAAeA,UAAA,CAAE,SAAA,CAAU,2BAA2B,CAAA,EAAG;AAAA,cACzDA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClBA,UAAA,CAAE,SAAA,CAAU,QAAA,EAAU,IAAI,CAAA;AAAA,cAC1B,GAAG,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,QAAA,KAAaA,UAAA,CAAE,SAAA,CAAU,QAAA,EAAU,IAAI,CAAC;AAAA,aAC/D,IACD,IAAA,KAAS,gBAAA,GACPA,WAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,6BAA6B,CAAA,EAAG;AAAA,cAC3DA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClBA,UAAA,CAAE,SAAA,CAAU,QAAA,EAAU,IAAI,CAAA;AAAA,cAC1BA,UAAA,CAAE,SAAA,CAAU,IAAA,CAAK,CAAC,GAAG,IAAI,CAAA;AAAA,cACzB,GAAG,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,QAAA,KAAaA,UAAA,CAAE,SAAA,CAAU,QAAA,EAAU,IAAI,CAAC;AAAA,aAC/D,CAAA,GACDA,UAAA,CAAE,eAAeA,UAAA,CAAE,SAAA,CAAU,gBAAgB,CAAA,EAAG;AAAA,cAC9CA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClBA,UAAA,CAAE,cAAc,IAAI,CAAA;AAAA,cACpB,GAAG,KAAK,GAAA,CAAI,CAAC,aAAaA,UAAA,CAAE,SAAA,CAAU,QAAA,EAAU,IAAI,CAAC;AAAA,aACtD;AAAA;AACT,SACD;AAAA,OACH;AACA,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,IAAI,IAAA,KAAS,gBAAgB,gBAAA,IAAoB,CAAA;AACjD,MAAA,IAAI,IAAA,KAAS,kBAAkB,kBAAA,IAAsB,CAAA;AACrD,MAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAC5B,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,KAAA;AAAA,IACA,gBAAA;AAAA,IACA,kBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,6BAAA,CACP,IAAA,EACA,kBAAA,EACA,cAAA,EACA,gBAAA,EAC0E;AAC1E,EAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,YAAA,kBAAc,IAAI,GAAA,EAAI,EAAE;AAAA,EAC5E;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,mBAAmB,OAAO,CAAA;AAC3C,MAAA,IACGA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,CAAA,IAAK,QAAQ,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,IACtE,CAAC,QAAA,IACD,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAC5B,QAAA,CAAS,SAAA,CAAU,MAAA,KAAW,CAAA,IAC9B,CAACA,UAAA,CAAE,kBAAA,CAAmB,QAAA,CAAS,MAAM,CAAA,IACrC,SAAS,MAAA,CAAO,QAAA,IAChB,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,MAAM,CAAA,IACxE,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,YAAA,EAAc,CAAA,EAChE;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,gBAAgB,CAAA;AAChE,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,WAAE,cAAA,CAAe;AAAA,UACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClBA,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,YAAY,CAAC;AAAA;AACtE,WACD,CAAA;AAAA,UACDA,UAAA,CAAE,eAAA;AAAA,YACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,gBAAgB,CAAA,EAAG;AAAA,cAC9CA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,MAAM;AAAA,aACnB;AAAA;AACH,SACD;AAAA,OACH;AACA,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAC5B,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,KAAA;AAAA,IACA;AAAA,GACF;AACF;AAqBA,SAAS,iCAAA,CACP,WACA,WAAA,EACuC;AACvC,EAAA,IACE,CAACA,UAAA,CAAE,yBAAA,CAA0B,SAAS,CAAA,IACtC,SAAA,CAAU,KAAA,IACV,SAAA,CAAU,SAAA,IACV,SAAA,CAAU,MAAA,CAAO,MAAA,KAAW,KAC5B,CAACA,UAAA,CAAE,YAAA,CAAa,SAAA,CAAU,MAAA,CAAO,CAAC,CAAC,CAAA,IAClCA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,IAAI,CAAA,IAAK,SAAA,CAAU,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,EAC1E;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,QAAA,GAAW,mBAAmB,SAAS,CAAA;AAC7C,EAAA,IAAI,CAAC,QAAA,IAAY,yBAAA,CAA0B,QAAA,EAAU,WAAW,MAAM,MAAA,EAAW;AAC/E,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,UAAA,GAAaA,UAAA,CAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAA;AAC9C,EAAA,UAAA,CAAW,IAAA,GAAOA,UAAA,CAAE,SAAA,CAAU,QAAA,EAAU,IAAI,CAAA;AAC5C,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,yBAAA,CACP,UAAA,EACA,aAAA,EACA,WAAA,EACsD;AACtD,EAAA,MAAM,aAA8C,EAAC;AACrD,EAAA,IAAI,OAAA,GAAU,UAAA;AACd,EAAA,OACEA,UAAA,CAAE,gBAAA,CAAiB,OAAO,CAAA,IAC1BA,UAAA,CAAE,mBAAmB,OAAA,CAAQ,MAAM,CAAA,IACnC,CAAC,OAAA,CAAQ,MAAA,CAAO,YAChBA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,IACtCA,WAAE,YAAA,CAAa,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EACpC;AACA,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,MAAA,CAAO,QAAA,CAAS,IAAA;AAC3C,IAAA,IAAI,eAAe,KAAA,EAAO;AACxB,MAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC3C,MAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,SAAA,CAAU,CAAC,CAAA;AACpC,MAAA,IACE,CAACA,UAAA,CAAE,yBAAA,CAA0B,QAAQ,CAAA,IACrC,SAAS,KAAA,IACT,QAAA,CAAS,SAAA,IACT,QAAA,CAAS,OAAO,MAAA,KAAW,CAAA,IAC3B,QAAA,CAAS,MAAA,CAAO,SAAS,CAAA,IACzB,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,KAAc,CAACA,UAAA,CAAE,YAAA,CAAa,SAAS,CAAC,CAAA,IAC9D,CAAC,kBAAA,CAAmB,SAAS,IAAA,EAAM,QAAA,CAAS,OAAO,CAAC,CAAA,EAAmB,WAAW,CAAA,EAClF;AACA,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,UAAA,CAAW,IAAA,CAAK,EAAE,QAAA,EAAU,IAAA,EAAM,OAAO,CAAA;AAAA,IAC3C,CAAA,MAAA,IAAW,eAAe,QAAA,EAAU;AAClC,MAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC3C,MAAA,MAAM,YAAY,iCAAA,CAAkC,OAAA,CAAQ,SAAA,CAAU,CAAC,GAAG,WAAW,CAAA;AACrF,MAAA,IAAI,CAAC,WAAW,OAAO,MAAA;AACvB,MAAA,UAAA,CAAW,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,WAAW,CAAA;AAAA,IAC/C,CAAA,MAAA,IAAW,eAAe,OAAA,EAAS;AACjC,MAAA,IAAI,OAAA,CAAQ,UAAU,MAAA,GAAS,CAAA,IAAK,QAAQ,SAAA,CAAU,MAAA,GAAS,GAAG,OAAO,MAAA;AACzE,MAAA,MAAM,SAAyB,EAAC;AAChC,MAAA,KAAA,MAAW,QAAA,IAAY,QAAQ,SAAA,EAAW;AACxC,QAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,GAAG,OAAO,MAAA;AACtC,QAAA,IAAI,oCAAA,CAAqC,QAAA,EAAU,WAAW,CAAA,KAAM,MAAA,EAAW;AAC7E,UAAA,OAAO,MAAA;AAAA,QACT;AACA,QAAA,MAAA,CAAO,KAAK,QAAQ,CAAA;AAAA,MACtB;AACA,MAAA,IAAI,MAAA,CAAO,WAAW,CAAA,IAAK,gBAAA,CAAiB,OAAO,CAAC,CAAC,CAAA,KAAM,CAAA,EAAG,OAAO,MAAA;AACrE,MAAA,UAAA,CAAW,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAS,CAAA;AAAA,IAC3C,CAAA,MAAA,IAAW,eAAe,YAAA,EAAc;AACtC,MAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC3C,MAAA,UAAA,CAAW,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACrC,CAAA,MAAA,IAAW,eAAe,UAAA,EAAY;AACpC,MAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,MAAA,GAAS,CAAA,EAAG,OAAO,MAAA;AACzC,MAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,SAAA,CAAU,CAAC,CAAA;AACtC,MAAA,IACE,UAAA,IACA,CAACA,UAAA,CAAE,yBAAA,CAA0B,UAAU,KACvC,CAACA,UAAA,CAAE,oBAAA,CAAqB,UAAU,CAAA,EAClC;AACA,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,IAAI,UAAA,IAAc,0BAAA,CAA2B,UAAA,EAAY,UAAA,EAAY,WAAW,CAAA,EAAG;AACjF,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,UAAA,CAAW,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAI,UAAA,GAAa,EAAE,UAAA,EAAW,GAAI,EAAC,EAAI,CAAA;AAAA,IACzE,CAAA,MAAO;AACL,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAA,GAAU,QAAQ,MAAA,CAAO,MAAA;AAAA,EAC3B;AACA,EAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,OAAA,EAAS,EAAE,IAAA,EAAM,aAAA,EAAe,CAAA,IAAK,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAC9E,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,KAAA,GAAQ,WAAW,OAAA,EAAQ;AACjC,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,IAAI,cAAA,GAAiB,KAAA;AACrB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,IAAA,CAAK,SAAS,KAAA,EAAO;AACvB,MAAA,IAAI,cAAA,IAAkB,eAAA,GAAkB,CAAA,EAAG,OAAO,MAAA;AAClD,MAAA,QAAA,IAAY,CAAA;AAAA,IACd,WAAW,IAAA,CAAK,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,SAAS,OAAA,EAAS;AAC1D,MAAA,IAAI,gBAAgB,OAAO,MAAA;AAC3B,MAAA,eAAA,IAAmB,CAAA;AAAA,IACrB,CAAA,MAAO;AACL,MAAA,cAAA,GAAiB,IAAA;AACjB,MAAA,YAAA,IAAgB,CAAA;AAAA,IAClB;AAAA,EACF;AACA,EAAA,IAAI,eAAe,CAAA,EAAG;AACpB,IAAA,OAAO,eAAA,GAAkB,CAAA,IAAK,QAAA,GAAW,CAAA,GAAI,KAAA,GAAQ,MAAA;AAAA,EACvD;AACA,EAAA,IAAI,QAAA,GAAW,CAAA,IAAK,YAAA,IAAgB,CAAA,EAAG,OAAO,KAAA;AAC9C,EAAA,IAAI,eAAA,GAAkB,CAAA,IAAK,YAAA,GAAe,CAAA,EAAG,OAAO,MAAA;AACpD,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,qCAAA,CACP,IAAA,EACA,kBAAA,EACA,cAAA,EACA,wBACA,mBAAA,EACA,0BAAA,EACA,gCAAA,EACA,uBAAA,EACA,iCAAA,EACA,qBAAA,EACA,oBAAA,EACA,8BAAA,EACA,aACA,iBAAA,EAcA;AACA,EAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO;AAAA,MACL,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,MAC5B,WAAA,EAAa,CAAA;AAAA,MACb,QAAA,EAAU,CAAA;AAAA,MACV,eAAA,EAAiB,CAAA;AAAA,MACjB,YAAA,EAAc,CAAA;AAAA,MACd,YAAA,EAAc,CAAA;AAAA,MACd,UAAA,EAAY,CAAA;AAAA,MACZ,SAAA,EAAW,CAAA;AAAA,MACX,sBAAA,EAAwB,CAAA;AAAA,MACxB,+BAAA,EAAiC,CAAA;AAAA,MACjC,mBAAA,EAAqB,CAAA;AAAA,MACrB,YAAA,sBAAkB,GAAA;AAAI,KACxB;AAAA,EACF;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,IAAI,WAAA,GAAc,CAAA;AAClB,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,IAAI,UAAA,GAAa,CAAA;AACjB,EAAA,IAAI,SAAA,GAAY,CAAA;AAChB,EAAA,IAAI,sBAAA,GAAyB,CAAA;AAC7B,EAAA,IAAI,+BAAA,GAAkC,CAAA;AACtC,EAAA,IAAI,mBAAA,GAAsB,CAAA;AAC1B,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,gBAAA,GAAmB,mBAAmB,OAAO,CAAA;AACnD,MAAA,IACGA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,CAAA,IAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,IACtE,CAAC,gBAAA,EACD;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,KAAA,GAAQ,yBAAA;AAAA,QACZ,gBAAA;AAAA,QACA,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA;AAAA,QAClB;AAAA,OACF;AACA,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,MAAM,qBAAqB,KAAA,CAAM,IAAA;AAAA,QAC/B,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,QAAA,IAAY,KAAK,IAAA,KAAS;AAAA,OACpD;AACA,MAAA,MAAM,cAAc,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,KAAK,CAAA;AAC5D,MAAA,IAAI,WAAA,IAAe,CAAC,iBAAA,EAAmB;AACvC,MAAA,MAAM,0BAAA,GACJ,WAAA,IACA,kBAAA,IACA,KAAA,CAAM,KAAA,CAAM,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,SAAA,IAAa,IAAA,CAAK,IAAA,KAAS,MAAM,CAAA;AAEvE,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,aAA4B,EAAC;AACnC,MAAA,IAAI,KAAA,GAAsBA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAA;AAC9C,MAAA,IAAI,gBAAA,GAAmB,KAAA;AACvB,MAAA,KAAA,IAAS,YAAY,CAAA,EAAG,SAAA,GAAY,KAAA,CAAM,MAAA,EAAQ,aAAa,CAAA,EAAG;AAChE,QAAA,MAAM,IAAA,GAAO,MAAM,SAAS,CAAA;AAC5B,QAAA,IAAI,IAAA,CAAK,SAAS,KAAA,EAAO;AACvB,UAAA,IAAI,SAAS,SAAA,GAAY,CAAA;AACzB,UAAA,OAAO,KAAA,CAAM,MAAM,CAAA,EAAG,IAAA,KAAS,OAAO,MAAA,IAAU,CAAA;AAChD,UAAA,IAAI,MAAA,GAAS,YAAY,CAAA,EAAG;AAC1B,YAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,cAAc,CAAA;AACrE,YAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,cAAc,CAAA;AAChE,YAAA,MAAM,qBAAoC,EAAC;AAC3C,YAAA,IAAI,OAAA,GAAwBA,UAAA,CAAE,SAAA,CAAU,aAAa,CAAA;AACrD,YAAA,KAAA,IAAS,QAAA,GAAW,SAAA,EAAW,QAAA,GAAW,MAAA,EAAQ,YAAY,CAAA,EAAG;AAC/D,cAAA,MAAM,OAAA,GAAU,MAAM,QAAQ,CAAA;AAC9B,cAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC5B,cAAA,MAAME,UAAS,IAAA,CAAK,KAAA,CAAM,sBAAsB,CAAA,OAAA,EAAU,QAAA,GAAW,CAAC,CAAA,CAAE,CAAA;AACxE,cAAA,MAAMC,UAAS,IAAA,CAAK,KAAA,CAAM,sBAAsB,CAAA,eAAA,EAAkB,QAAA,GAAW,CAAC,CAAA,CAAE,CAAA;AAChF,cAAA,kBAAA,CAAmB,IAAA;AAAA,gBACjBH,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,kBAC7BA,UAAA,CAAE,kBAAA;AAAA,oBACAA,UAAA,CAAE,UAAUE,OAAM,CAAA;AAAA,oBAClBF,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,OAAO,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,KAAK,CAAC;AAAA;AAC9D,iBACD,CAAA;AAAA,gBACDA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,kBAC7BA,UAAA,CAAE,kBAAA;AAAA,oBACAA,UAAA,CAAE,UAAUG,OAAM,CAAA;AAAA,oBAClBH,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAA,EAAG;AAAA,sBACtCA,UAAA,CAAE,UAAU,OAAO,CAAA;AAAA,sBACnBA,UAAA,CAAE,UAAUE,OAAM,CAAA;AAAA,sBAClBF,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,QAAA,EAAU,IAAI;AAAA,qBACnC;AAAA;AACH,iBACD;AAAA,eACH;AACA,cAAA,OAAA,GAAUA,UAAA,CAAE,UAAUG,OAAM,CAAA;AAAA,YAC9B;AACA,YAAA,MAAMA,OAAAA,GAAS,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,mBAAmB,CAAA;AACnE,YAAA,UAAA,CAAW,IAAA;AAAA,cACTH,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,gBAC7BA,UAAA,CAAE,kBAAA;AAAA,kBACAA,UAAA,CAAE,UAAUG,OAAM,CAAA;AAAA,kBAClBH,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,mBAAmB,CAAA,EAAG;AAAA,oBACjDA,UAAA,CAAE,UAAU,KAAK,CAAA;AAAA,oBACjBA,UAAA,CAAE,uBAAA;AAAA,sBACA,CAACA,WAAE,SAAA,CAAU,aAAa,GAAGA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,sBAClDA,WAAE,cAAA,CAAe;AAAA,wBACf,GAAG,kBAAA;AAAA,wBACHA,UAAA,CAAE,eAAA,CAAgBA,UAAA,CAAE,SAAA,CAAU,OAAO,CAAC;AAAA,uBACvC;AAAA;AACH,mBACD;AAAA;AACH,eACD;AAAA,aACH;AACA,YAAA,KAAA,GAAQA,UAAA,CAAE,UAAUG,OAAM,CAAA;AAC1B,YAAA,QAAA,IAAY,MAAA,GAAS,SAAA;AACrB,YAAA,gBAAA,GAAmB,IAAA;AACnB,YAAA,SAAA,GAAY,MAAA,GAAS,CAAA;AACrB,YAAA;AAAA,UACF;AAAA,QACF;AACA,QAAA,MAAM,aACJ,IAAA,CAAK,IAAA,KAAS,KAAA,GACV,KAAA,GACA,KAAK,IAAA,KAAS,QAAA,GACZ,QAAA,GACA,IAAA,CAAK,SAAS,OAAA,GACZ,OAAA,GACA,IAAA,CAAK,IAAA,KAAS,YACZ,YAAA,GACA,UAAA;AACZ,QAAA,MAAM,MAAA,GAAS,KAAK,KAAA,CAAM,qBAAA;AAAA,UACxB,IAAA,CAAK,IAAA,KAAS,QAAA,GACV,YAAA,GACA,KAAK,IAAA,KAAS,KAAA,GACZ,SAAA,GACA,IAAA,CAAK,SAAS,OAAA,GACZ,WAAA,GACA,IAAA,CAAK,IAAA,KAAS,YACZ,gBAAA,GACA;AAAA,SACZ;AACA,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,mBAAmB,CAAA;AACnE,QAAA,MAAM,MAAA,GACJ,IAAA,CAAK,IAAA,KAAS,KAAA,GACV,mBAAA,GACA,KAAK,IAAA,KAAS,QAAA,GACZ,sBAAA,GACA,IAAA,CAAK,IAAA,KAAS,OAAA,GACZ,wBACA,IAAA,CAAK,IAAA,KAAS,SAAA,GACZ,kBAAA,GACE,iCAAA,GACA,gBAAA,GACE,6BACA,uBAAA,GACJ,kBAAA,GACE,8BAAA,GACA,gBAAA,GACE,0BAAA,GACA,oBAAA;AAChB,QAAA,MAAM,IAAA,GACJ,KAAK,IAAA,KAAS,KAAA,GACV,CAACH,UAAA,CAAE,SAAA,CAAU,IAAA,CAAK,QAAA,EAAU,IAAI,CAAC,IACjC,IAAA,CAAK,IAAA,KAAS,QAAA,GACZ,CAACA,UAAA,CAAE,SAAA,CAAU,KAAK,SAAA,EAAW,IAAI,CAAC,CAAA,GAClC,IAAA,CAAK,IAAA,KAAS,UACZ,IAAA,CAAK,MAAA,CAAO,IAAI,CAAC,KAAA,KAAUA,WAAE,SAAA,CAAU,KAAA,EAAO,IAAI,CAAC,CAAA,GACnD,IAAA,CAAK,SAAS,MAAA,IAAU,IAAA,CAAK,UAAA,GAC3B,CAACA,UAAA,CAAE,SAAA,CAAU,KAAK,UAAA,EAAY,IAAI,CAAC,CAAA,GACnC,EAAC;AACb,QAAA,UAAA,CAAW,IAAA;AAAA,UACTA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClBA,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,UAAU,CAAC;AAAA;AACjE,WACD,CAAA;AAAA,UACDA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,MAAM,CAAA,EAAG;AAAA,gBACpCA,UAAA,CAAE,UAAU,KAAK,CAAA;AAAA,gBACjBA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,gBAClB,GAAG;AAAA,eACJ;AAAA;AACH,WACD;AAAA,SACH;AACA,QAAA,KAAA,GAAQA,UAAA,CAAE,UAAU,MAAM,CAAA;AAC1B,QAAA,IAAI,IAAA,CAAK,SAAS,KAAA,EAAO;AACvB,UAAA,QAAA,IAAY,CAAA;AACZ,UAAA,gBAAA,GAAmB,IAAA;AAAA,QACrB,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,QAAA,EAAU,WAAA,IAAe,CAAA;AAAA,aAAA,IACzC,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS,UAAA,IAAc,CAAA;AAAA,aAAA,IACrC,IAAA,CAAK,SAAS,SAAA,EAAW;AAChC,UAAA,YAAA,IAAgB,CAAA;AAChB,UAAA,IAAI,gBAAA,IAAoB,CAAC,kBAAA,EAAoB,eAAA,IAAmB,CAAA;AAChE,UAAA,IAAI,oBAAoB,sBAAA,IAA0B,CAAA;AAAA,QACpD,CAAA,MAAO;AACL,UAAA,SAAA,IAAa,CAAA;AACb,UAAA,IAAI,gBAAA,IAAoB,CAAC,kBAAA,EAAoB,YAAA,IAAgB,CAAA;AAC7D,UAAA,IAAI,oBAAoB,mBAAA,IAAuB,CAAA;AAAA,QACjD;AAAA,MACF;AACA,MAAA,UAAA,CAAW,IAAA;AAAA,QACTA,UAAA,CAAE,eAAA;AAAA,UACA,6BACIA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,gCAAgC,CAAA,EAAG,CAACA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAC,CAAC,CAAA,GACpFA,UAAA,CAAE,UAAU,KAAK;AAAA;AACvB,OACF;AACA,MAAA,IAAI,4BAA4B,+BAAA,IAAmC,CAAA;AACnE,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,UAAA,CAAE,eAAe,UAAU;AAAA,OAC7B;AACA,MAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAC5B,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,WAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,sBAAA;AAAA,IACA,+BAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,sCAAA,CACP,IAAA,EACA,cAAA,EACA,mBAAA,EACA,2BAAA,EACA,sBACA,iBAAA,EACA,cAAA,EACA,2BAAA,EACA,wBAAA,EACA,OAAA,EAC0C;AAC1C,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,QAAA,EAAU,CAAA,EAAE;AAClE,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,QAAA,GAAW,CAAA;AAEf,EAAA,MAAM,kBAAA,GAAqB,CACzB,OAAA,EACA,WAAA,KACY;AACZ,IAAA,IAAI,KAAA,GAAQ,KAAA;AACZ,IAAAA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,CAAC,IAAA,KAAS;AACrC,MAAA,IACE,CAAC,KAAA,IACDA,UAAA,CAAE,gBAAA,CAAiB,IAAI,KACvBA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAM,KAC1B,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA,EAChC;AACA,QAAA,KAAA,GAAQ,IAAA;AAAA,MACV;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,kBAAA,uBAAyB,GAAA,CAAI;AAAA,IACjC,oBAAA,CAAqB,IAAA;AAAA,IACrB,iBAAA,CAAkB,IAAA;AAAA,IAClB,cAAA,CAAe;AAAA,GAChB,CAAA;AACD,EAAA,MAAM,qBAAA,uBAA4B,GAAA,CAAI;AAAA,IACpC,2BAAA,CAA4B,IAAA;AAAA,IAC5B,wBAAA,CAAyB;AAAA,GAC1B,CAAA;AAED,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,kBAAA;AACJ,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAClC,MAAA,KAAA,MAAW,iBAAiB,UAAA,EAAY;AACtC,QAAA,MAAM,YAAY,aAAA,CAAc,IAAA;AAChC,QAAA,IAAI,CAACD,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,IAAK,CAACA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,UAAU,CAAA,EAAG;AACpF,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,aAAa,SAAA,CAAU,UAAA;AAC7B,QAAA,IACE,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,KACjC,aAAA,CAAc,KAAA,CAAM,UAAA,CAAW,UAAA,CAAW,OAAO,IAAI,CAAA,IACrD,UAAA,CAAW,SAAA,CAAU,WAAW,CAAA,EAChC;AACA,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,UAAA,CAAW,OAAO,IAAI,CAAA;AACvD,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AACtC,QAAA,IACE,CAAC,SACD,CAACA,UAAA,CAAE,0BAA0B,OAAO,CAAA,IACpC,OAAA,CAAQ,KAAA,IACR,OAAA,CAAQ,SAAA,IACR,QAAQ,MAAA,CAAO,MAAA,KAAW,KAC1B,CAACA,UAAA,CAAE,aAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA;AAAA,QACF;AAEA,QAAA,IACE,kBAAA,CAAmB,SAAS,kBAAkB,CAAA,IAC9C,CAAC,kBAAA,CAAmB,OAAA,EAAS,qBAAqB,CAAA,EAClD;AACA,UAAA,kBAAA,GAAqB,KAAA,CAAM,KAAA;AAC3B,UAAA;AAAA,QACF;AAEA,QAAA,IACE,kBAAA,KAAuB,KAAA,CAAM,KAAA,IAC7B,CAACA,UAAA,CAAE,iBAAiB,OAAA,CAAQ,IAAI,CAAA,IAChC,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,mBAAA,CAAoB,IAAA,EAAM,CAAA,IACvE,OAAA,CAAQ,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAClC;AACA,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACzC,QAAA,IACE,CAACA,UAAA,CAAE,yBAAA,CAA0B,QAAQ,CAAA,IACrC,SAAS,MAAA,CAAO,MAAA,KAAW,CAAA,IAC3B,CAACA,WAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,EAClC;AACA,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA;AAAA,QACF;AACA,QAAA,IAAI,gBAAA,GAAmB,CAAA;AACvB,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA;AACxC,QAAAA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,IAAA,EAAM,CAAC,IAAA,KAAS;AACtC,UAAA,IAAIA,UAAA,CAAE,gBAAA,CAAiB,IAAI,CAAA,IAAKA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,YAAA,EAAc,CAAA,EAAG;AACnF,YAAA,gBAAA,IAAoB,CAAA;AAAA,UACtB;AAAA,QACF,CAAC,CAAA;AACD,QAAA,IAAI,qBAAqB,CAAA,EAAG;AAC1B,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA;AAAA,QACF;AAEA,QAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,2BAA2B,CAAA;AAC7D,QAAA,QAAA,IAAY,gBAAA;AAAA,MACd;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD;AAAA,GACF;AACF;AAEA,SAAS,0BAAA,CACP,SACA,mBAAA,EACQ;AACR,EAAA,IACE,CAACA,WAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,CAAA,IAChC,CAACA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,QAAQ,EAAE,IAAA,EAAM,oBAAoB,IAAA,EAAM,KACvE,OAAA,CAAQ,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAClC;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACzC,EAAA,IACE,CAACA,UAAA,CAAE,yBAAA,CAA0B,QAAQ,CAAA,IACrC,SAAS,MAAA,CAAO,MAAA,KAAW,CAAA,IAC3B,CAACA,WAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,EAClC;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,MAAM,YAAA,GAAe,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA;AACxC,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,IAAA,EAAM,CAAC,IAAA,KAAS;AACtC,IAAA,IAAIA,UAAA,CAAE,gBAAA,CAAiB,IAAI,CAAA,IAAKA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,YAAA,EAAc,CAAA,EAAG;AACnF,MAAA,KAAA,IAAS,CAAA;AAAA,IACX;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,4CAAA,CACP,MACA,cAAA,EACA,mBAAA,EACA,6BACA,0BAAA,EACA,gBAAA,EACA,iBACA,OAAA,EAMA;AACA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO;AAAA,MACL,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,MAC5B,QAAA,EAAU,CAAA;AAAA,MACV,eAAA,EAAiB,CAAA;AAAA,MACjB,YAAA,sBAAkB,GAAA;AAAI,KACxB;AAAA,EACF;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AAErC,EAAA,MAAM,wBAAA,GAA2B,CAC/B,OAAA,KACkC;AAClC,IAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,GAAG,OAAO,MAAA;AAC9C,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,CAAA;AACzC,IAAA,IACE,CAACA,UAAA,CAAE,iBAAA,CAAkB,SAAS,KAC9B,CAAC,SAAA,CAAU,QAAA,IACX,CAACA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,QAAQ,KACtC,CAACA,UAAA,CAAE,YAAA,CAAa,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA,IACxC,SAAA,CAAU,SAAS,MAAA,CAAO,IAAA,KAAS,gBAAA,CAAiB,IAAA,IACnD,SAAA,CAAU,QAAA,CAAS,MAAA,CAAO,IAAA,KAAS,gBAAgB,IAAA,EACrD;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO,SAAA;AAAA,EACT,CAAA;AAEA,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,qBAAA;AACJ,MAAA,IAAI,cAIC,EAAC;AACN,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAClC,MAAA,KAAA,MAAW,iBAAiB,UAAA,EAAY;AACtC,QAAA,MAAM,YAAY,aAAA,CAAc,IAAA;AAChC,QAAA,IAAI,CAACD,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,IAAK,CAACA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,UAAU,CAAA,EAAG;AACpF,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AACA,QAAA,MAAM,aAAa,SAAA,CAAU,UAAA;AAC7B,QAAA,IACE,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,KACjC,aAAA,CAAc,KAAA,CAAM,UAAA,CAAW,UAAA,CAAW,OAAO,IAAI,CAAA,IACrD,UAAA,CAAW,SAAA,CAAU,WAAW,CAAA,EAChC;AACA,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,UAAA,CAAW,OAAO,IAAI,CAAA;AACvD,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AACtC,QAAA,IACE,CAAC,SACD,CAACA,UAAA,CAAE,0BAA0B,OAAO,CAAA,IACpC,OAAA,CAAQ,KAAA,IACR,OAAA,CAAQ,SAAA,IACR,QAAQ,MAAA,CAAO,MAAA,KAAW,KAC1B,CAACA,UAAA,CAAE,aAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,gBAAA,GAAmB,0BAAA,CAA2B,OAAA,EAAS,mBAAmB,CAAA;AAChF,QAAA,IAAI,mBAAmB,CAAA,EAAG;AAGxB,UAAA,IAAI,0BAA0B,MAAA,EAAW;AACvC,YAAA,qBAAA,GAAwB,MAAA;AACxB,YAAA,WAAA,GAAc,EAAC;AACf,YAAA;AAAA,UACF;AACA,UAAA,MAAM,SAAA,GAAY;AAAA,YAChB,KAAA,EAAO,gBAAA;AAAA,YACP,YAAY,KAAA,CAAM,KAAA;AAAA,YAClB;AAAA,WACF;AACA,UAAA,WAAA,GACE,WAAA,CAAY,CAAC,CAAA,EAAG,UAAA,KAAe,KAAA,CAAM,KAAA,GAAQ,CAAC,GAAG,WAAA,EAAa,SAAS,CAAA,GAAI,CAAC,SAAS,CAAA;AACvF,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,gBAAA,GAAmB,yBAAyB,OAAO,CAAA;AACzD,QAAA,MAAM,cAAA,GAAiB,YAAY,MAAA,GAAS,CAAA,IAAK,YAAY,CAAC,CAAA,CAAE,eAAe,KAAA,CAAM,KAAA;AACrF,QAAA,IAAI,CAAC,gBAAA,IAAqB,CAAC,cAAA,IAAkB,qBAAA,KAA0B,MAAM,KAAA,EAAQ;AACnF,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,cAAA,EAAgB;AAClB,UAAA,KAAA,MAAW,aAAa,WAAA,EAAa;AACnC,YAAA,SAAA,CAAU,OAAA,CAAQ,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,UAAU,2BAA2B,CAAA;AACvE,YAAA,QAAA,IAAY,SAAA,CAAU,KAAA;AAAA,UACxB;AAAA,QACF;AACA,QAAA,MAAM,kBAAkB,gBAAA,CAAiB,QAAA;AACzC,QAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,eAAe,CAAA,EAAG;AACpC,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AACA,QAAA,gBAAA,CAAiB,WAAWA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,0BAA0B,CAAA,EAAG;AAAA,UACpFA,UAAA,CAAE,UAAU,eAAe;AAAA,SAC5B,CAAA;AACD,QAAA,eAAA,IAAmB,CAAA;AACnB,QAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAC5B,QAAA,qBAAA,GAAwB,KAAA,CAAM,KAAA;AAC9B,QAAA,WAAA,GAAc,EAAC;AAAA,MACjB;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,QAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,yCAAA,CACP,IAAA,EACA,cAAA,EACA,mBAAA,EACA,qBAAA,EACA,gBAAA,EACA,gCAAA,EACA,qCAAA,EACA,gBAAA,EACA,eAAA,EACA,0BAAA,EACA,OAAA,EAOA;AACA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO;AAAA,MACL,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,MAC5B,QAAA,EAAU,CAAA;AAAA,MACV,2BAAA,EAA6B,CAAA;AAAA,MAC7B,wBAAA,EAA0B,CAAA;AAAA,MAC1B,YAAA,sBAAkB,GAAA;AAAI,KACxB;AAAA,EACF;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,2BAAA,GAA8B,CAAA;AAClC,EAAA,IAAI,wBAAA,GAA2B,CAAA;AAC/B,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AAErC,EAAA,MAAM,oBAAA,GAAuB,CAC3B,OAAA,KAC8D;AAC9D,IAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,GAAG,OAAO,MAAA;AAC9C,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,CAAA;AACzC,IAAA,IAAI,CAACA,WAAE,iBAAA,CAAkB,SAAS,KAAK,CAAC,SAAA,CAAU,UAAU,OAAO,MAAA;AACnE,IAAA,IAAI,KAAA;AACJ,IAAA,IAAI,MAAA,GAAS,KAAA;AACb,IAAAA,UAAA,CAAE,YAAA,CAAa,SAAA,CAAU,QAAA,EAAU,CAAC,IAAA,KAAS;AAC3C,MAAA,IAAI,CAAC,KAAA,IAASA,UAAA,CAAE,gBAAA,CAAiB,IAAI,KAAKA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAM,CAAA,EAAG;AACrE,QAAA,IAAI,IAAA,CAAK,MAAA,CAAO,IAAA,KAAS,gBAAA,CAAiB,MAAM,KAAA,GAAQ,QAAA;AACxD,QAAA,IAAI,IAAA,CAAK,MAAA,CAAO,IAAA,KAAS,eAAA,CAAgB,MAAM,KAAA,GAAQ,OAAA;AAAA,MACzD;AACA,MAAA,IACE,CAAC,MAAA,IACDA,UAAA,CAAE,gBAAA,CAAiB,IAAI,CAAA,IACvBA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,QAAQ,EAAE,IAAA,EAAM,0BAAA,CAA2B,IAAA,EAAM,CAAA,EACrE;AACA,QAAA,MAAA,GAAS,IAAA;AAAA,MACX;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,KAAA,GAAQ,EAAE,IAAA,EAAM,KAAA,EAAO,QAAO,GAAI,MAAA;AAAA,EAC3C,CAAA;AAEA,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,eAAA;AACJ,MAAA,IAAI,qBAAA;AACJ,MAAA,IAAI,kBAAA;AACJ,MAAA,IAAI,cAAA;AACJ,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAClC,MAAA,KAAA,MAAW,iBAAiB,UAAA,EAAY;AACtC,QAAA,MAAM,YAAY,aAAA,CAAc,IAAA;AAChC,QAAA,IAAI,CAACD,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,IAAK,CAACA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,UAAU,CAAA,EAAG;AACpF,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,cAAA,GAAiB,MAAA;AACjB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,aAAa,SAAA,CAAU,UAAA;AAC7B,QAAA,IACE,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,KACjC,aAAA,CAAc,KAAA,CAAM,UAAA,CAAW,UAAA,CAAW,OAAO,IAAI,CAAA,IACrD,UAAA,CAAW,SAAA,CAAU,WAAW,CAAA,EAChC;AACA,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,cAAA,GAAiB,MAAA;AACjB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,UAAA,CAAW,OAAO,IAAI,CAAA;AACvD,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AACtC,QAAA,IACE,CAAC,SACD,CAACA,UAAA,CAAE,0BAA0B,OAAO,CAAA,IACpC,OAAA,CAAQ,KAAA,IACR,OAAA,CAAQ,SAAA,IACR,QAAQ,MAAA,CAAO,MAAA,KAAW,KAC1B,CAACA,UAAA,CAAE,aAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,cAAA,GAAiB,MAAA;AACjB,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,kBAAA,GAAqB,qBAAqB,OAAO,CAAA;AACvD,QAAA,IAAI,kBAAA,EAAoB;AACtB,UAAA,eAAA,GAAkB,KAAA,CAAM,KAAA;AACxB,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,kBAAA,GAAqB,kBAAA,CAAmB,MAAA,GAAS,KAAA,CAAM,KAAA,GAAQ,MAAA;AAC/D,UAAA,cAAA,GAAiB,kBAAA,CAAmB,IAAA;AACpC,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,cAAkC,EAAC;AACzC,QAAAA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,CAAC,IAAA,KAAS;AACrC,UAAA,IACEA,UAAA,CAAE,gBAAA,CAAiB,IAAI,CAAA,IACvBA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,gBAAA,CAAiB,IAAA,EAAM,CAAA,EAC3D;AACA,YAAA,WAAA,CAAY,KAAK,IAAI,CAAA;AAAA,UACvB;AAAA,QACF,CAAC,CAAA;AACD,QAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,UAAA,IAAI,eAAA,KAAoB,KAAA,CAAM,KAAA,IAAS,cAAA,KAAmB,MAAA,EAAW;AACnE,YAAA,qBAAA,GAAwB,KAAA,CAAM,KAAA;AAC9B,YAAA,IAAI,kBAAA,KAAuB,MAAM,KAAA,EAAO;AACtC,cAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,gBAAA,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,gCAAgC,CAAA;AAAA,cAC5D;AACA,cAAA,2BAAA,IAA+B,WAAA,CAAY,MAAA;AAAA,YAC7C;AAAA,UACF,CAAA,MAAO;AACL,YAAA,eAAA,GAAkB,MAAA;AAClB,YAAA,qBAAA,GAAwB,MAAA;AACxB,YAAA,kBAAA,GAAqB,MAAA;AACrB,YAAA,cAAA,GAAiB,MAAA;AAAA,UACnB;AACA,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,gBAAA,GAAmB,0BAAA,CAA2B,OAAA,EAAS,mBAAmB,CAAA;AAChF,QAAA,IAAI,eAAA,KAAoB,KAAA,CAAM,KAAA,IAAS,gBAAA,KAAqB,CAAA,EAAG;AAC7D,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA,qBAAA,GAAwB,MAAA;AACxB,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,cAAA,GAAiB,MAAA;AACjB,UAAA;AAAA,QACF;AACA,QAAC,OAAA,CAAmE,IAAA,CAAK,MAAA,GACvEA,UAAA,CAAE,SAAA;AAAA,UACA,qBAAA,KAA0B,KAAA,CAAM,KAAA,GAC5B,qCAAA,GACA;AAAA,SACN;AACF,QAAA,QAAA,IAAY,gBAAA;AACZ,QAAA,IAAI,qBAAA,KAA0B,MAAM,KAAA,EAAO;AACzC,UAAA,wBAAA,IAA4B,gBAAA;AAAA,QAC9B;AACA,QAAA,kBAAA,GAAqB,KAAA,CAAM,KAAA;AAC3B,QAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,QAAA;AAAA,IACA,2BAAA;AAAA,IACA,wBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,gDAAA,CACP,IAAA,EACA,cAAA,EACA,mBAAA,EACA,qBAAA,EACA,iBAAA,EACA,iCAAA,EACA,sCAAA,EACA,gBAAA,EACA,eAAA,EACA,0BAAA,EACA,OAAA,EAOA;AACA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO;AAAA,MACL,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,MAC5B,QAAA,EAAU,CAAA;AAAA,MACV,4BAAA,EAA8B,CAAA;AAAA,MAC9B,yBAAA,EAA2B,CAAA;AAAA,MAC3B,YAAA,sBAAkB,GAAA;AAAI,KACxB;AAAA,EACF;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,4BAAA,GAA+B,CAAA;AACnC,EAAA,IAAI,yBAAA,GAA4B,CAAA;AAChC,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AAErC,EAAA,MAAM,oBAAA,GAAuB,CAC3B,OAAA,KAC8D;AAC9D,IAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,GAAG,OAAO,MAAA;AAC9C,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,CAAA;AACzC,IAAA,IAAI,CAACA,WAAE,iBAAA,CAAkB,SAAS,KAAK,CAAC,SAAA,CAAU,UAAU,OAAO,MAAA;AACnE,IAAA,IAAI,KAAA;AACJ,IAAA,IAAI,MAAA,GAAS,KAAA;AACb,IAAAA,UAAA,CAAE,YAAA,CAAa,SAAA,CAAU,QAAA,EAAU,CAAC,IAAA,KAAS;AAC3C,MAAA,IAAI,CAAC,KAAA,IAASA,UAAA,CAAE,gBAAA,CAAiB,IAAI,KAAKA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAM,CAAA,EAAG;AACrE,QAAA,IAAI,IAAA,CAAK,MAAA,CAAO,IAAA,KAAS,gBAAA,CAAiB,MAAM,KAAA,GAAQ,QAAA;AACxD,QAAA,IAAI,IAAA,CAAK,MAAA,CAAO,IAAA,KAAS,eAAA,CAAgB,MAAM,KAAA,GAAQ,OAAA;AAAA,MACzD;AACA,MAAA,IACE,CAAC,MAAA,IACDA,UAAA,CAAE,gBAAA,CAAiB,IAAI,CAAA,IACvBA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,QAAQ,EAAE,IAAA,EAAM,0BAAA,CAA2B,IAAA,EAAM,CAAA,EACrE;AACA,QAAA,MAAA,GAAS,IAAA;AAAA,MACX;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,KAAA,GAAQ,EAAE,IAAA,EAAM,KAAA,EAAO,QAAO,GAAI,MAAA;AAAA,EAC3C,CAAA;AAEA,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,eAAA;AACJ,MAAA,IAAI,sBAAA;AACJ,MAAA,IAAI,kBAAA;AACJ,MAAA,IAAI,cAAA;AACJ,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAClC,MAAA,KAAA,MAAW,iBAAiB,UAAA,EAAY;AACtC,QAAA,MAAM,YAAY,aAAA,CAAc,IAAA;AAChC,QAAA,IAAI,CAACD,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,IAAK,CAACA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,UAAU,CAAA,EAAG;AACpF,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA,sBAAA,GAAyB,MAAA;AACzB,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,cAAA,GAAiB,MAAA;AACjB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,aAAa,SAAA,CAAU,UAAA;AAC7B,QAAA,IACE,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,KACjC,aAAA,CAAc,KAAA,CAAM,UAAA,CAAW,UAAA,CAAW,OAAO,IAAI,CAAA,IACrD,UAAA,CAAW,SAAA,CAAU,WAAW,CAAA,EAChC;AACA,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA,sBAAA,GAAyB,MAAA;AACzB,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,cAAA,GAAiB,MAAA;AACjB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,UAAA,CAAW,OAAO,IAAI,CAAA;AACvD,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AACtC,QAAA,IACE,CAAC,SACD,CAACA,UAAA,CAAE,0BAA0B,OAAO,CAAA,IACpC,OAAA,CAAQ,KAAA,IACR,OAAA,CAAQ,SAAA,IACR,QAAQ,MAAA,CAAO,MAAA,KAAW,KAC1B,CAACA,UAAA,CAAE,aAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA,sBAAA,GAAyB,MAAA;AACzB,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,cAAA,GAAiB,MAAA;AACjB,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,kBAAA,GAAqB,qBAAqB,OAAO,CAAA;AACvD,QAAA,IAAI,kBAAA,EAAoB;AACtB,UAAA,eAAA,GAAkB,KAAA,CAAM,KAAA;AACxB,UAAA,sBAAA,GAAyB,MAAA;AACzB,UAAA,kBAAA,GAAqB,kBAAA,CAAmB,MAAA,GAAS,KAAA,CAAM,KAAA,GAAQ,MAAA;AAC/D,UAAA,cAAA,GAAiB,kBAAA,CAAmB,IAAA;AACpC,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,eAAmC,EAAC;AAC1C,QAAAA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,CAAC,IAAA,KAAS;AACrC,UAAA,IACEA,UAAA,CAAE,gBAAA,CAAiB,IAAI,CAAA,IACvBA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,iBAAA,CAAkB,IAAA,EAAM,CAAA,EAC5D;AACA,YAAA,YAAA,CAAa,KAAK,IAAI,CAAA;AAAA,UACxB;AAAA,QACF,CAAC,CAAA;AACD,QAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3B,UAAA,IAAI,eAAA,KAAoB,KAAA,CAAM,KAAA,IAAS,cAAA,KAAmB,MAAA,EAAW;AACnE,YAAA,sBAAA,GAAyB,KAAA,CAAM,KAAA;AAC/B,YAAA,IAAI,kBAAA,KAAuB,MAAM,KAAA,EAAO;AACtC,cAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC/B,gBAAA,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,iCAAiC,CAAA;AAAA,cAC7D;AACA,cAAA,4BAAA,IAAgC,YAAA,CAAa,MAAA;AAAA,YAC/C;AAAA,UACF,CAAA,MAAO;AACL,YAAA,eAAA,GAAkB,MAAA;AAClB,YAAA,sBAAA,GAAyB,MAAA;AACzB,YAAA,kBAAA,GAAqB,MAAA;AACrB,YAAA,cAAA,GAAiB,MAAA;AAAA,UACnB;AACA,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,mBACJ,0BAAA,CAA2B,OAAA,EAAS,mBAAmB,CAAA,IACvD,0BAAA,CAA2B,SAAS,qBAAqB,CAAA;AAC3D,QAAA,IAAI,eAAA,KAAoB,KAAA,CAAM,KAAA,IAAS,gBAAA,KAAqB,CAAA,EAAG;AAC7D,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA,sBAAA,GAAyB,MAAA;AACzB,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,cAAA,GAAiB,MAAA;AACjB,UAAA;AAAA,QACF;AACA,QAAC,OAAA,CAAmE,IAAA,CAAK,MAAA,GACvEA,UAAA,CAAE,SAAA;AAAA,UACA,sBAAA,KAA2B,KAAA,CAAM,KAAA,GAC7B,sCAAA,GACA;AAAA,SACN;AACF,QAAA,QAAA,IAAY,gBAAA;AACZ,QAAA,IAAI,sBAAA,KAA2B,MAAM,KAAA,EAAO;AAC1C,UAAA,yBAAA,IAA6B,gBAAA;AAAA,QAC/B;AACA,QAAA,kBAAA,GAAqB,KAAA,CAAM,KAAA;AAC3B,QAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,QAAA;AAAA,IACA,4BAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,4CAAA,CACP,IAAA,EACA,cAAA,EACA,mBAAA,EACA,qBAAA,EACA,2BAAA,EACA,kCAAA,EACA,6BAAA,EACA,uBAAA,EACA,0BAAA,EACA,gCAAA,EACA,qCAAA,EACA,4BACA,OAAA,EAUA;AACA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO;AAAA,MACL,eAAA,EAAiB,CAAA;AAAA,MACjB,yBAAA,EAA2B,CAAA;AAAA,MAC3B,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,MAC5B,eAAA,EAAiB,CAAA;AAAA,MACjB,wBAAA,EAA0B,CAAA;AAAA,MAC1B,kBAAA,EAAoB,CAAA;AAAA,MACpB,4BAAA,EAA8B,CAAA;AAAA,MAC9B,gBAAA,EAAkB;AAAA,KACpB;AAAA,EACF;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,IAAI,yBAAA,GAA4B,CAAA;AAChC,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,IAAI,wBAAA,GAA2B,CAAA;AAC/B,EAAA,IAAI,kBAAA,GAAqB,CAAA;AACzB,EAAA,IAAI,4BAAA,GAA+B,CAAA;AACnC,EAAA,IAAI,gBAAA,GAAmB,CAAA;AAWvB,EAAA,MAAM,OAAA,GAAU,CAAC,OAAA,KAA4D;AAC3E,IAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,GAAG,OAAO,MAAA;AAC9C,IAAA,MAAM,QACJ,0BAAA,CAA2B,OAAA,EAAS,mBAAmB,CAAA,IACvD,0BAAA,CAA2B,SAAS,qBAAqB,CAAA;AAC3D,IAAA,OAAO,QAAQ,CAAA,GACX;AAAA,MACE,KAAA;AAAA,MACA;AAAA,KACF,GACA,MAAA;AAAA,EACN,CAAA;AACA,EAAA,MAAM,WAAA,GAAc,CAAC,OAAA,KAAgE;AACnF,IAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,GAAG,OAAO,MAAA;AAC9C,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,CAAA;AACzC,IAAA,IACE,CAACA,WAAE,iBAAA,CAAkB,SAAS,KAC9B,CAAC,SAAA,CAAU,QAAA,IACX,CAACA,UAAA,CAAE,gBAAA,CAAiB,UAAU,QAAQ,CAAA,IACtC,CAACA,UAAA,CAAE,YAAA,CAAa,UAAU,QAAA,CAAS,MAAA,EAAQ,EAAE,IAAA,EAAM,uBAAA,CAAwB,IAAA,EAAM,CAAA,IACjF,SAAA,CAAU,SAAS,SAAA,CAAU,MAAA,KAAW,KACxC,CAACA,UAAA,CAAE,YAAA,CAAa,SAAA,CAAU,QAAA,CAAS,SAAA,CAAU,CAAC,CAAC,CAAA,IAC/C,CAACA,UAAA,CAAE,YAAA,CAAa,UAAU,QAAA,CAAS,SAAA,CAAU,CAAC,CAAC,CAAA,EAC/C;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,SAAA,CAAU,QAAA,EAAS;AAAA,EACpC,CAAA;AAEA,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,UAAyB,EAAC;AAC9B,MAAA,IAAI,YAAA;AACJ,MAAA,MAAM,eAAe,MAAY;AAC/B,QAAA,MAAM,iBAAiB,OAAA,CAAQ,OAAA;AAAA,UAAQ,CAAC,MAAM,KAAA,KAC5C,IAAA,CAAK,SAAS,SAAA,GAAY,CAAC,KAAK,CAAA,GAAI;AAAC,SACvC;AACA,QAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,IAAK,OAAA,CAAQ,SAAS,CAAA,EAAG;AACrD,UAAA,OAAA,GAAU,EAAC;AACX,UAAA,YAAA,GAAe,MAAA;AACf,UAAA;AAAA,QACF;AACA,QAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAC7B,UAAA,MAAM,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,KAAK,CAAA;AACzD,UAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,YAAA,GAAe,MAAA;AACf,YAAA;AAAA,UACF;AACA,UAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACvB,YAAA,IAAI,IAAA,CAAK,SAAS,KAAA,EAAO;AACzB,YAAA,IAAA,CAAK,MAAM,OAAA,CAAQ,IAAA,CAAK,MAAA,GAASD,UAAA,CAAE,UAAU,kCAAkC,CAAA;AAC/E,YAAA,eAAA,IAAmB,KAAK,KAAA,CAAM,KAAA;AAAA,UAChC;AACA,UAAA,KAAA,MAAW,SAAS,cAAA,EAAgB;AAClC,YAAA,MAAM,IAAA,GAAO,QAAQ,KAAK,CAAA;AAC1B,YAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,cAAA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,UAAU,6BAA6B,CAAA;AAAA,YACpE;AAAA,UACF;AACA,UAAA,yBAAA,IAA6B,cAAA,CAAe,MAAA;AAC5C,UAAA,kBAAA,IAAsB,cAAA,CAAe,MAAA;AACrC,UAAA,OAAA,GAAU,EAAC;AACX,UAAA,YAAA,GAAe,MAAA;AACf,UAAA;AAAA,QACF;AACA,QAAA,MAAM,YAAA,GAAe,eAAe,CAAC,CAAA;AACrC,QAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,YAAY,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,KAAK,CAAA;AACvF,QAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,KAAA,CAAM,YAAA,GAAe,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,KAAK,CAAA;AACzF,QAAA,IAAI,WAAA,CAAY,MAAA,KAAW,CAAA,IAAK,YAAA,CAAa,WAAW,CAAA,EAAG;AACzD,UAAA,OAAA,GAAU,EAAC;AACX,UAAA,YAAA,GAAe,MAAA;AACf,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,OAAA,GAAU,QAAQ,YAAY,CAAA;AACpC,QAAA,IAAI,OAAA,CAAQ,SAAS,SAAA,EAAW;AAChC,QAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA;AAC/C,QAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA;AAC5C,QAAA,IAAI,CAACA,WAAE,YAAA,CAAa,QAAQ,KAAK,CAACA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AACzD,QAAA,MAAM,cAAA,GAAiB,YAAY,MAAA,GAAS,CAAA;AAC5C,QAAA,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,SAAA;AAAA,UAC5B,iBAAiB,gCAAA,GAAmC;AAAA,SACtD;AACA,QAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,SAAA,GAAY;AAAA,UAC7B,iBACIA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,0BAA0B,CAAA,EAAG;AAAA,YACxDA,UAAA,CAAE,SAAA,CAAU,QAAA,EAAU,IAAI;AAAA,WAC3B,CAAA,GACDA,UAAA,CAAE,SAAA,CAAU,UAAU,IAAI,CAAA;AAAA,UAC9BA,UAAA,CAAE,SAAA,CAAU,KAAA,EAAO,IAAI;AAAA,SACzB;AACA,QAAA,kBAAA,IAAsB,CAAA;AACtB,QAAA,IAAI,cAAA,EAAgB;AAClB,UAAA,wBAAA,IAA4B,CAAA;AAC5B,UAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,YAAA,IAAI,IAAA,CAAK,SAAS,KAAA,EAAO;AACzB,YAAA,IAAA,CAAK,MAAM,OAAA,CAAQ,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,UAAU,2BAA2B,CAAA;AACxE,YAAA,eAAA,IAAmB,KAAK,KAAA,CAAM,KAAA;AAAA,UAChC;AAAA,QACF,CAAA,MAAO;AACL,UAAA,4BAAA,IAAgC,CAAA;AAAA,QAClC;AACA,QAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC/B,UAAA,IAAI,IAAA,CAAK,SAAS,KAAA,EAAO;AACzB,UAAA,IAAA,CAAK,MAAM,OAAA,CAAQ,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,UAAU,qCAAqC,CAAA;AAClF,UAAA,gBAAA,IAAoB,KAAK,KAAA,CAAM,KAAA;AAAA,QACjC;AACA,QAAA,OAAA,GAAU,EAAC;AACX,QAAA,YAAA,GAAe,MAAA;AAAA,MACjB,CAAA;AAEA,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAClC,MAAA,KAAA,MAAW,iBAAiB,UAAA,EAAY;AACtC,QAAA,MAAM,YAAY,aAAA,CAAc,IAAA;AAChC,QAAA,IAAI,CAACA,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,IAAK,CAACA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,UAAU,CAAA,EAAG;AACpF,UAAA,YAAA,EAAa;AACb,UAAA;AAAA,QACF;AACA,QAAA,MAAM,aAAa,SAAA,CAAU,UAAA;AAC7B,QAAA,IACE,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,KACjC,aAAA,CAAc,KAAA,CAAM,UAAA,CAAW,UAAA,CAAW,OAAO,IAAI,CAAA,IACrD,UAAA,CAAW,SAAA,CAAU,WAAW,CAAA,EAChC;AACA,UAAA,YAAA,EAAa;AACb,UAAA;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,UAAA,CAAW,OAAO,IAAI,CAAA;AACvD,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AACtC,QAAA,IACE,CAAC,SACD,CAACA,UAAA,CAAE,0BAA0B,OAAO,CAAA,IACpC,OAAA,CAAQ,KAAA,IACR,OAAA,CAAQ,SAAA,IACR,QAAQ,MAAA,CAAO,MAAA,KAAW,KAC1B,CAACA,UAAA,CAAE,aAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,UAAA,YAAA,EAAa;AACb,UAAA;AAAA,QACF;AACA,QAAA,IAAI,YAAA,KAAiB,MAAA,IAAa,YAAA,KAAiB,KAAA,CAAM,OAAO,YAAA,EAAa;AAC7E,QAAA,MAAM,OAAA,GAAU,QAAQ,OAAO,CAAA;AAC/B,QAAA,MAAM,WAAA,GAAc,YAAY,OAAO,CAAA;AACvC,QAAA,IAAI,CAAC,OAAA,IAAW,CAAC,WAAA,EAAa;AAC5B,UAAA,YAAA,EAAa;AACb,UAAA;AAAA,QACF;AACA,QAAA,YAAA,GAAe,KAAA,CAAM,KAAA;AACrB,QAAA,OAAA,CAAQ,IAAA;AAAA,UACN,OAAA,GAAU,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,OAAA,EAAQ,GAAI,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,WAAA;AAAa,SACrF;AAAA,MACF;AACA,MAAA,YAAA,EAAa;AAAA,IACf;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,eAAA;AAAA,IACA,yBAAA;AAAA,IACA,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,eAAA;AAAA,IACA,wBAAA;AAAA,IACA,kBAAA;AAAA,IACA,4BAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,6CAAA,CACP,IAAA,EACA,cAAA,EACA,gBAAA,EACA,eAAA,EACA,qBAAA,EACA,2BAAA,EACA,0BAAA,EACA,oBAAA,EACA,iBAAA,EACA,cAAA,EACA,2BAAA,EACA,0BACA,OAAA,EAQA;AACA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO;AAAA,MACL,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,MAC5B,YAAA,EAAc,CAAA;AAAA,MACd,SAAA,EAAW,CAAA;AAAA,MACX,uBAAA,EAAyB,CAAA;AAAA,MACzB,oBAAA,EAAsB,CAAA;AAAA,MACtB,sBAAA,EAAwB;AAAA,KAC1B;AAAA,EACF;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,IAAI,SAAA,GAAY,CAAA;AAChB,EAAA,IAAI,uBAAA,GAA0B,CAAA;AAC9B,EAAA,IAAI,oBAAA,GAAuB,CAAA;AAC3B,EAAA,IAAI,sBAAA,GAAyB,CAAA;AAE7B,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,eAAA;AACJ,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAClC,MAAA,KAAA,MAAW,iBAAiB,UAAA,EAAY;AACtC,QAAA,MAAM,YAAY,aAAA,CAAc,IAAA;AAChC,QAAA,IAAI,CAACD,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,IAAK,CAACA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,UAAU,CAAA,EAAG;AACpF,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,aAAa,SAAA,CAAU,UAAA;AAC7B,QAAA,IACE,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,KACjC,aAAA,CAAc,KAAA,CAAM,UAAA,CAAW,UAAA,CAAW,OAAO,IAAI,CAAA,IACrD,UAAA,CAAW,SAAA,CAAU,WAAW,CAAA,EAChC;AACA,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,UAAA,CAAW,OAAO,IAAI,CAAA;AACvD,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AACtC,QAAA,IACE,CAAC,SACD,CAACA,UAAA,CAAE,0BAA0B,OAAO,CAAA,IACpC,OAAA,CAAQ,KAAA,IACR,OAAA,CAAQ,SAAA,IACR,QAAQ,MAAA,CAAO,MAAA,KAAW,KAC1B,CAACA,UAAA,CAAE,aAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,WAAA,uBAAkB,GAAA,EAAgC;AACxD,QAAAA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,CAAC,IAAA,KAAS;AACrC,UAAA,IACE,CAACA,UAAA,CAAE,oBAAA,CAAqB,IAAI,CAAA,IAC5B,CAACA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,EAAE,CAAA,IACvB,CAACA,UAAA,CAAE,mBAAmB,IAAA,CAAK,IAAI,CAAA,IAC/B,IAAA,CAAK,IAAA,CAAK,QAAA,IACV,CAACA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,EAClC;AACA,YAAA;AAAA,UACF;AACA,UAAA,IAAI,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,IAAA,KAAS,YAAA,cAA0B,GAAA,CAAI,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,SAAS,CAAA;AACrF,UAAA,IAAI,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,IAAA,KAAS,UAAA,cAAwB,GAAA,CAAI,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,MAAM,CAAA;AAAA,QAClF,CAAC,CAAA;AAED,QAAA,IAAI,uBAAA,GAA0B,KAAA;AAC9B,QAAA,IAAI,0BAAA,GAA6B,KAAA;AACjC,QAAA,IAAI,WAAA,GAAc,KAAA;AAClB,QAAA,MAAM,aAAiC,EAAC;AACxC,QAAA,MAAM,eAID,EAAC;AACN,QAAAA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,CAAC,IAAA,KAAS;AACrC,UAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,IAAI,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAM,CAAA,EAAG;AAC/D,UAAA,MAAM,UAAA,GAAa,KAAK,MAAA,CAAO,IAAA;AAC/B,UAAA,IACE,UAAA,KAAe,iBAAiB,IAAA,IAChC,UAAA,KAAe,gBAAgB,IAAA,IAC/B,UAAA,KAAe,2BAA2B,IAAA,EAC1C;AACA,YAAA,uBAAA,GAA0B,IAAA;AAC1B,YAAA;AAAA,UACF;AACA,UAAA,IACE,UAAA,KAAe,2BAAA,CAA4B,IAAA,IAC3C,UAAA,KAAe,yBAAyB,IAAA,EACxC;AACA,YAAA,uBAAA,GAA0B,IAAA;AAC1B,YAAA;AAAA,UACF;AACA,UAAA,IAAI,UAAA,KAAe,sBAAsB,IAAA,EAAM;AAC7C,YAAA,0BAAA,GAA6B,IAAA;AAC7B,YAAA;AAAA,UACF;AACA,UAAA,IAAI,UAAA,KAAe,4BAA4B,IAAA,EAAM;AACnD,YAAA,0BAAA,GAA6B,IAAA;AAC7B,YAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AACpB,YAAA;AAAA,UACF;AACA,UAAA,IAAI,UAAA,KAAe,kBAAkB,IAAA,EAAM;AACzC,YAAA,0BAAA,GAA6B,IAAA;AAC7B,YAAA,YAAA,CAAa,IAAA,CAAK,EAAE,IAAA,EAAM,IAAA,EAAM,MAAM,SAAA,EAAW,MAAA,EAAQ,OAAO,CAAA;AAChE,YAAA;AAAA,UACF;AACA,UAAA,IAAI,UAAA,KAAe,eAAe,IAAA,EAAM;AACtC,YAAA,0BAAA,GAA6B,IAAA;AAC7B,YAAA,YAAA,CAAa,IAAA,CAAK,EAAE,IAAA,EAAM,IAAA,EAAM,MAAM,MAAA,EAAQ,MAAA,EAAQ,OAAO,CAAA;AAC7D,YAAA;AAAA,UACF;AACA,UAAA,IAAI,UAAA,KAAe,qBAAqB,IAAA,EAAM;AAC5C,YAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AAC/B,YAAA,MAAM,IAAA,GAAOA,WAAE,YAAA,CAAa,MAAM,IAAI,WAAA,CAAY,GAAA,CAAI,MAAA,CAAO,IAAI,CAAA,GAAI,MAAA;AACrE,YAAA,IAAI,CAAC,IAAA,EAAM;AACT,cAAA,WAAA,GAAc,IAAA;AACd,cAAA;AAAA,YACF;AACA,YAAA,0BAAA,GAA6B,IAAA;AAC7B,YAAA,YAAA,CAAa,KAAK,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,MAAA,EAAQ,MAAM,CAAA;AAAA,UACtD;AAAA,QACF,CAAC,CAAA;AAED,QAAA,MAAM,oBAAA,GAAuB,uBAAA,IAA2B,eAAA,KAAoB,KAAA,CAAM,KAAA;AAClF,QAAA,IAAI,WAAA,IAAgB,CAAC,uBAAA,IAA2B,CAAC,0BAAA,EAA6B;AAC5E,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA;AAAA,QACF;AACA,QAAA,IAAI,CAAC,oBAAA,EAAsB;AACzB,UAAA,eAAA,GAAkB,MAAA;AAClB,UAAA;AAAA,QACF;AAEA,QAAA,KAAA,MAAW,QAAQ,UAAA,EAAY;AAC7B,UAAA,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,qBAAqB,CAAA;AAC/C,UAAA,sBAAA,IAA0B,CAAA;AAAA,QAC5B;AACA,QAAA,KAAA,MAAW,EAAE,IAAA,EAAM,IAAA,EAAM,MAAA,MAAY,YAAA,EAAc;AACjD,UAAA,IAAA,CAAK,SAASA,UAAA,CAAE,SAAA;AAAA,YACd,IAAA,KAAS,YAAY,2BAAA,GAA8B;AAAA,WACrD;AACA,UAAA,IAAI,SAAS,SAAA,EAAW;AACtB,YAAA,YAAA,IAAgB,CAAA;AAChB,YAAA,IAAI,QAAQ,uBAAA,IAA2B,CAAA;AAAA,UACzC,CAAA,MAAO;AACL,YAAA,SAAA,IAAa,CAAA;AACb,YAAA,IAAI,QAAQ,oBAAA,IAAwB,CAAA;AAAA,UACtC;AAAA,QACF;AACA,QAAA,eAAA,GAAkB,KAAA,CAAM,KAAA;AAAA,MAC1B;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,YAAA;AAAA,IACA,SAAA;AAAA,IACA,uBAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,sCAAA,CACP,IAAA,EACA,cAAA,EACA,mBAAA,EACA,2BAAA,EACA,sBACA,iBAAA,EACA,cAAA,EACA,2BAAA,EACA,wBAAA,EACA,OAAA,EAMA;AACA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO;AAAA,MACL,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,MAC5B,QAAA,EAAU,CAAA;AAAA,MACV,eAAA,EAAiB,CAAA;AAAA,MACjB,YAAA,EAAc;AAAA,KAChB;AAAA,EACF;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,IAAI,YAAA,GAAe,CAAA;AAEnB,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,kBAAA;AACJ,MAAA,IAAI,cAIC,EAAC;AACN,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAClC,MAAA,KAAA,MAAW,iBAAiB,UAAA,EAAY;AACtC,QAAA,MAAM,YAAY,aAAA,CAAc,IAAA;AAChC,QAAA,IAAI,CAACD,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,IAAK,CAACA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,UAAU,CAAA,EAAG;AACpF,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AACA,QAAA,MAAM,aAAa,SAAA,CAAU,UAAA;AAC7B,QAAA,IACE,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAM,KACjC,aAAA,CAAc,KAAA,CAAM,UAAA,CAAW,UAAA,CAAW,OAAO,IAAI,CAAA,IACrD,UAAA,CAAW,SAAA,CAAU,WAAW,CAAA,EAChC;AACA,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,UAAA,CAAW,OAAO,IAAI,CAAA;AACvD,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AACtC,QAAA,IACE,CAAC,SACD,CAACA,UAAA,CAAE,0BAA0B,OAAO,CAAA,IACpC,OAAA,CAAQ,KAAA,IACR,OAAA,CAAQ,SAAA,IACR,QAAQ,MAAA,CAAO,MAAA,KAAW,KAC1B,CAACA,UAAA,CAAE,aAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AAEA,QAAA,IACEA,UAAA,CAAE,iBAAiB,OAAA,CAAQ,IAAI,KAC/BA,UAAA,CAAE,YAAA,CAAa,QAAQ,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,mBAAA,CAAoB,MAAM,CAAA,IACtE,QAAQ,IAAA,CAAK,SAAA,CAAU,WAAW,CAAA,EAClC;AACA,UAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACzC,UAAA,IAAI,gBAAA,GAAmB,CAAA;AACvB,UAAA,IACEA,UAAA,CAAE,yBAAA,CAA0B,QAAQ,CAAA,IACpC,SAAS,MAAA,CAAO,MAAA,KAAW,CAAA,IAC3BA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,YAAA,MAAM,YAAA,GAAe,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA;AACxC,YAAAA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,IAAA,EAAM,CAAC,IAAA,KAAS;AACtC,cAAA,IAAIA,UAAA,CAAE,gBAAA,CAAiB,IAAI,CAAA,IAAKA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,YAAA,EAAc,CAAA,EAAG;AACnF,gBAAA,gBAAA,IAAoB,CAAA;AAAA,cACtB;AAAA,YACF,CAAC,CAAA;AAAA,UACH;AACA,UAAA,IAAI,mBAAmB,CAAA,EAAG;AACxB,YAAA,MAAM,SAAA,GAAY;AAAA,cAChB,KAAA,EAAO,gBAAA;AAAA,cACP,YAAY,KAAA,CAAM,KAAA;AAAA,cAClB;AAAA,aACF;AACA,YAAA,WAAA,GACE,WAAA,CAAY,CAAC,CAAA,EAAG,UAAA,KAAe,KAAA,CAAM,KAAA,GACjC,CAAC,GAAG,WAAA,EAAa,SAAS,CAAA,GAC1B,CAAC,SAAS,CAAA;AAChB,YAAA,IAAI,kBAAA,KAAuB,KAAA,CAAM,KAAA,EAAO,kBAAA,GAAqB,MAAA;AAC7D,YAAA;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,qBAAA,GAAwB,KAAA;AAC5B,QAAA,MAAM,eAGD,EAAC;AACN,QAAA,IAAI,UAAA,GAAa,KAAA;AACjB,QAAAA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,CAAC,IAAA,KAAS;AACrC,UAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,IAAI,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,MAAM,CAAA,EAAG;AAC/D,UAAA,IACE,IAAA,CAAK,OAAO,IAAA,KAAS,2BAAA,CAA4B,QACjD,IAAA,CAAK,MAAA,CAAO,IAAA,KAAS,wBAAA,CAAyB,IAAA,EAC9C;AACA,YAAA,UAAA,GAAa,IAAA;AAAA,UACf,CAAA,MAAA,IAAW,IAAA,CAAK,MAAA,CAAO,IAAA,KAAS,qBAAqB,IAAA,EAAM;AACzD,YAAA,qBAAA,GAAwB,IAAA;AAAA,UAC1B,CAAA,MAAA,IAAW,IAAA,CAAK,MAAA,CAAO,IAAA,KAAS,kBAAkB,IAAA,EAAM;AACtD,YAAA,YAAA,CAAa,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAW,CAAA;AAAA,UACnD,CAAA,MAAA,IAAW,IAAA,CAAK,MAAA,CAAO,IAAA,KAAS,eAAe,IAAA,EAAM;AACnD,YAAA,YAAA,CAAa,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,UAChD;AAAA,QACF,CAAC,CAAA;AACD,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,cAAA,GAAiB,YAAY,MAAA,GAAS,CAAA,IAAK,YAAY,CAAC,CAAA,CAAE,eAAe,KAAA,CAAM,KAAA;AACrF,QAAA,IAAI,qBAAA,IAAyB,YAAA,CAAa,MAAA,KAAW,CAAA,EAAG;AAItD,UAAA,kBAAA,GAAqB,WAAA,CAAY,MAAA,KAAW,CAAA,GAAI,KAAA,CAAM,KAAA,GAAQ,MAAA;AAC9D,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AACA,QAAA,IACE,qBAAA,IACA,aAAa,MAAA,KAAW,CAAA,IACvB,CAAC,cAAA,IAAkB,kBAAA,KAAuB,MAAM,KAAA,EACjD;AACA,UAAA,kBAAA,GAAqB,MAAA;AACrB,UAAA,WAAA,GAAc,EAAC;AACf,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,cAAA,EAAgB;AAClB,UAAA,KAAA,MAAW,aAAa,WAAA,EAAa;AACnC,YAAA,SAAA,CAAU,OAAA,CAAQ,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,UAAU,2BAA2B,CAAA;AACvE,YAAA,QAAA,IAAY,SAAA,CAAU,KAAA;AAAA,UACxB;AAAA,QACF;AACA,QAAA,KAAA,MAAW,EAAE,IAAA,EAAM,IAAA,EAAK,IAAK,YAAA,EAAc;AACzC,UAAA,IAAA,CAAK,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,oBAAoB,CAAA;AAC9C,UAAA,IAAI,IAAA,KAAS,WAAW,eAAA,IAAmB,CAAA;AAAA,eACtC,YAAA,IAAgB,CAAA;AAAA,QACvB;AACA,QAAA,kBAAA,GAAqB,KAAA,CAAM,KAAA;AAC3B,QAAA,WAAA,GAAc,EAAC;AAAA,MACjB;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,QAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,0BAAA,CACP,IAAA,EACA,kBAAA,EACA,cAAA,EACA,kBACA,WAAA,EAC0E;AAC1E,EAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,YAAA,kBAAc,IAAI,GAAA,EAAI,EAAE;AAAA,EAC5E;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,mBAAmB,OAAO,CAAA;AAC3C,MAAA,IACGA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,CAAA,IAAK,QAAQ,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,IACtE,CAAC,QAAA,IACD,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAC5B,QAAA,CAAS,SAAA,CAAU,MAAA,GAAS,CAAA,IAC5B,CAACA,UAAA,CAAE,kBAAA,CAAmB,QAAA,CAAS,MAAM,CAAA,IACrC,SAAS,MAAA,CAAO,QAAA,IAChB,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,MAAM,CAAA,IACxE,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,UAAA,EAAY,CAAA,EAC9D;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,SAAA,CAAU,CAAC,CAAA;AACvC,MAAA,IACE,UAAA,IACA,CAACA,UAAA,CAAE,yBAAA,CAA0B,UAAU,KACvC,CAACA,UAAA,CAAE,oBAAA,CAAqB,UAAU,CAAA,EAClC;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAI,UAAA,IAAc,0BAAA,CAA2B,UAAA,EAAY,UAAA,EAAY,WAAW,CAAA,EAAG;AAEnF,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,cAAc,CAAA;AAC9D,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,WAAE,cAAA,CAAe;AAAA,UACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClBA,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,UAAU,CAAC;AAAA;AACpE,WACD,CAAA;AAAA,UACDA,UAAA,CAAE,eAAA;AAAA,YACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,gBAAgB,CAAA,EAAG;AAAA,cAC9CA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,MAAM,CAAA;AAAA,cAClB,GAAI,aAAa,CAACA,UAAA,CAAE,UAAU,UAAA,EAAY,IAAI,CAAC,CAAA,GAAI;AAAC,aACrD;AAAA;AACH,SACD;AAAA,OACH;AACA,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAC5B,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,KAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,2BAAA,CACP,IAAA,EACA,kBAAA,EACA,cAAA,EACA,kBACA,WAAA,EAC0E;AAC1E,EAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,YAAA,kBAAc,IAAI,GAAA,EAAI,EAAE;AAAA,EAC5E;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,gBAAA,GAAmB,mBAAmB,OAAO,CAAA;AACnD,MAAA,IACGA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,CAAA,IAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,IACtE,CAACA,UAAA,CAAE,gBAAA,CAAiB,gBAAgB,CAAA,IACpC,gBAAA,CAAiB,SAAA,CAAU,MAAA,GAAS,CAAA,IACpC,gBAAA,CAAiB,SAAA,CAAU,MAAA,GAAS,CAAA,IACpC,CAACA,UAAA,CAAE,kBAAA,CAAmB,gBAAA,CAAiB,MAAM,KAC7C,gBAAA,CAAiB,MAAA,CAAO,QAAA,IACxB,CAACA,UAAA,CAAE,YAAA,CAAa,gBAAA,CAAiB,MAAA,CAAO,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,EAAM,CAAA,IAChF,CAACA,UAAA,CAAE,YAAA,CAAa,gBAAA,CAAiB,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA,EACnE;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,SAAyB,EAAC;AAChC,MAAA,KAAA,MAAW,QAAA,IAAY,iBAAiB,SAAA,EAAW;AACjD,QAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,CAAA,EAAG;AAC/B,QAAA,IAAI,oCAAA,CAAqC,QAAA,EAAU,WAAW,CAAA,KAAM,MAAA,EAAW;AAC/E,QAAA,MAAA,CAAO,KAAK,QAAQ,CAAA;AAAA,MACtB;AACA,MAAA,IAAI,MAAA,CAAO,WAAW,CAAA,IAAK,gBAAA,CAAiB,OAAO,CAAC,CAAC,MAAM,CAAA,EAAG;AAE9D,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,WAAW,CAAA;AAChE,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,WAAE,cAAA,CAAe;AAAA,UACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,WAAW,CAAA;AAAA,cACvBA,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,OAAO,CAAC;AAAA;AACjE,WACD,CAAA;AAAA,UACDA,UAAA,CAAE,eAAA;AAAA,YACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,gBAAgB,CAAA,EAAG;AAAA,cAC9CA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,WAAW,CAAA;AAAA,cACvB,GAAG,OAAO,GAAA,CAAI,CAAC,UAAUA,UAAA,CAAE,SAAA,CAAU,KAAA,EAAO,IAAI,CAAC;AAAA,aAClD;AAAA;AACH,SACD;AAAA,OACH;AACA,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAC5B,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,KAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,4BAAA,CACP,IAAA,EACA,kBAAA,EACA,cAAA,EACA,kBACA,WAAA,EAC0E;AAC1E,EAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,YAAA,kBAAc,IAAI,GAAA,EAAI,EAAE;AAAA,EAC5E;AACA,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACtF,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,IACE,CAACD,WAAE,yBAAA,CAA0B,OAAO,KACpC,OAAA,CAAQ,KAAA,IACR,QAAQ,SAAA,IACR,OAAA,CAAQ,OAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,gBAAA,GAAmB,mBAAmB,OAAO,CAAA;AACnD,MAAA,IACGA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,KAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,IACtE,CAACA,UAAA,CAAE,gBAAA,CAAiB,gBAAgB,CAAA,IACpC,gBAAA,CAAiB,SAAA,CAAU,MAAA,KAAW,CAAA,IACtC,CAACA,UAAA,CAAE,kBAAA,CAAmB,iBAAiB,MAAM,CAAA,IAC7C,gBAAA,CAAiB,MAAA,CAAO,YACxB,CAACA,UAAA,CAAE,YAAA,CAAa,gBAAA,CAAiB,OAAO,MAAA,EAAQ;AAAA,QAC9C,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,CAAE;AAAA,OACzB,CAAA,IACD,CAACA,UAAA,CAAE,YAAA,CAAa,gBAAA,CAAiB,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA,EACpE;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,SAAA,GAAY,iCAAA;AAAA,QAChB,gBAAA,CAAiB,UAAU,CAAC,CAAA;AAAA,QAC5B;AAAA,OACF;AACA,MAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,MAAA,MAAM,WAAWA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,YAAY,CAAA;AAClE,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,GAAIA,UAAA,CAAE,uBAAA;AAAA,QACzB,CAACA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,QACtBA,WAAE,cAAA,CAAe;AAAA,UACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,YAC7BA,UAAA,CAAE,kBAAA;AAAA,cACAA,UAAA,CAAE,UAAU,YAAY,CAAA;AAAA,cACxBA,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,QAAQ,CAAC;AAAA;AAClE,WACD,CAAA;AAAA,UACDA,UAAA,CAAE,eAAA;AAAA,YACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,gBAAgB,CAAA,EAAG;AAAA,cAC9CA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,cACpBA,UAAA,CAAE,UAAU,YAAY,CAAA;AAAA,cACxBA,UAAA,CAAE,SAAA,CAAU,SAAA,EAAW,IAAI;AAAA,aAC5B;AAAA;AACH,SACD;AAAA,OACH;AACA,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,YAAA,CAAa,GAAA,CAAI,MAAM,KAAK,CAAA;AAC5B,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD,KAAA;AAAA,IACA;AAAA,GACF;AACF;AASA,SAAS,0BAA0B,IAAA,EAAgD;AACjF,EAAA,OAAO,IAAA,KAAS,QAAQ,KAAA,GAAQ,KAAA;AAClC;AAEA,SAAS,wBAAA,CACP,UAAA,EACA,IAAA,EACA,QAAA,EAC+B;AAC/B,EAAA,IACE,CAACA,WAAE,eAAA,CAAgB,UAAU,KAC7B,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAA,EAAQ;AAAA,IACjC,IAAA,EAAM,0BAA0B,IAAI;AAAA,GACrC,CAAA,EACD;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,OACE,UAAA,CAAW,SAAA,CAAU,MAAA,KAAW,CAAA,IAChCA,WAAE,YAAA,CAAa,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA,EAAG,EAAE,IAAA,EAAM,QAAA,CAAS,MAAM,CAAA;AAEnE;AAEA,SAAS,iCAAA,CACP,YAAA,EACA,IAAA,EACA,mBAAA,EACS;AACT,EAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,mBAAA,EAAqB,OAAO,KAAA;AAClD,EAAA,IAAI,wBAAA,CAAyB,YAAA,EAAc,IAAI,CAAA,EAAG,OAAO,IAAA;AACzD,EAAA,IAAI,CAACA,WAAE,yBAAA,CAA0B,YAAY,KAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,YAAY,CAAA,EAAG;AACvF,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAIA,UAAA,CAAE,gBAAA,CAAiB,YAAA,CAAa,IAAI,CAAA,IAAK,aAAa,IAAA,CAAK,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACzF,EAAA,MAAM,KAAA,GAAQ,mBAAmB,YAAY,CAAA;AAC7C,EAAA,OAAO,OAAA,CAAQ,KAAA,IAAS,wBAAA,CAAyB,KAAA,EAAO,IAAI,CAAC,CAAA;AAC/D;AAEA,SAAS,gCAAA,CACP,IAAA,EACA,KAAA,EACA,IAAA,EACS;AACT,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,EAAA,MAAM,WAAA,GAAc,IAAA,KAAS,KAAA,mBAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA,mBAAI,IAAI,GAAA,CAAI,CAAC,KAAA,EAAO,KAAK,CAAC,CAAA;AAC9E,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IACE,CAAC,KAAA,IACD,CAACD,WAAE,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA,IACzB,IAAA,CAAK,KAAK,IAAA,KAAS,KAAA,CAAM,aACzB,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EACpC;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,MAAA,IACE,OAAO,eAAA,EAAgB,IACvBA,WAAE,YAAA,CAAa,MAAA,CAAO,KAAK,MAAA,EAAQ;AAAA,QACjC,IAAA,EAAM,0BAA0B,IAAI;AAAA,OACrC,CAAA,IACD,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,IACjC,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,KAAM,KAAK,IAAA,EAClC;AACA,QAAA;AAAA,MACF;AACA,MAAA,IACE,CAAC,MAAA,CAAO,kBAAA,MACR,MAAA,CAAO,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,IAC5B,MAAA,CAAO,IAAA,CAAK,YACZ,CAACA,UAAA,CAAE,aAAa,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,EACpC;AACA,QAAA,KAAA,GAAQ,KAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AACV,QAAA;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS,IAAA;AACtC,MAAA,IAAI,aAAa,MAAA,EAAQ;AACzB,MAAA,MAAM,OAAO,MAAA,CAAO,UAAA;AACpB,MAAA,IACE,CAAC,WAAA,CAAY,GAAA,CAAI,QAAQ,CAAA,IACzB,CAAC,IAAA,EAAM,gBAAA,EAAiB,IACxB,IAAA,CAAK,IAAA,CAAK,MAAA,KAAW,OAAO,IAAA,EAC5B;AACA,QAAA,KAAA,GAAQ,KAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,2BAAA,CACP,MACA,MAAA,EACiE;AACjE,EAAA,IAAI,IAAA,KAAS,KAAA,IAAS,MAAA,KAAW,KAAA,EAAO,OAAO,SAAA;AAC/C,EAAA,IAAI,IAAA,KAAS,KAAA,IAAS,MAAA,KAAW,QAAA,EAAU,OAAO,YAAA;AAClD,EAAA,IAAI,IAAA,KAAS,KAAA,IAAS,MAAA,KAAW,KAAA,EAAO,OAAO,SAAA;AAC/C,EAAA,IAAI,IAAA,KAAS,KAAA,IAAS,MAAA,KAAW,QAAA,EAAU,OAAO,YAAA;AAClD,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mCAAA,CACP,WACA,IAAA,EACiC;AACjC,EAAA,IAAI,CAAC,SAAA,IAAa,IAAA,CAAK,IAAA,CAAK,CAAC,QAAA,KAAa,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,CAAC,CAAA,EAAG,OAAO,KAAA;AAC7E,EAAA,OAAO,cAAc,SAAA,GAAY,IAAA,CAAK,MAAA,KAAW,CAAA,GAAI,KAAK,MAAA,KAAW,CAAA;AACvE;AAEA,SAAS,6BAAA,CACP,OAAA,EACA,IAAA,EACA,YAAA,EACA,cAAA,EAC4C;AAC5C,EAAA,IACE,OAAA,CAAQ,KAAA,IACR,OAAA,CAAQ,SAAA,IACR,QAAQ,MAAA,CAAO,MAAA,KAAW,CAAA,IAC1B,CAACA,WAAE,YAAA,CAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EACjC;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA;AAEjC,EAAA,IAAIA,UAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA,EAAG;AAChC,IAAA,IACE,CAACA,UAAA,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,KAChC,CAACA,UAAA,CAAE,kBAAA,CAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,KACzC,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,QAAA,IACpB,CAACA,UAAA,CAAE,aAAa,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA,EAC5C;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,MAAM,YAAY,2BAAA,CAA4B,IAAA,EAAM,QAAQ,IAAA,CAAK,MAAA,CAAO,SAAS,IAAI,CAAA;AACrF,IAAA,IACG,cAAc,SAAA,IAAa,SAAA,KAAc,aAC1C,CAAC,mCAAA,CAAoC,WAAW,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA,IACtE,CAAC,yBAAyB,OAAA,CAAQ,IAAA,CAAK,OAAO,MAAA,EAAQ,IAAA,EAAM,QAAQ,CAAA,EACpE;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,MAAM,UAAA,GAAa,qBAAA,CAAsB,iBAAA,EAAmB,CAAC,OAAO,CAAC,CAAA;AACrE,IAAA,MAAM,IAAA,GAAOA,WAAE,cAAA,CAAe;AAAA,MAC5BA,UAAA,CAAE,oBAAoB,OAAA,EAAS;AAAA,QAC7BA,UAAA,CAAE,kBAAA;AAAA,UACAA,UAAA,CAAE,UAAU,UAAU,CAAA;AAAA,UACtBA,WAAE,SAAA,CAAU,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,QAAQ,IAAI;AAAA;AAC9C,OACD,CAAA;AAAA,MACDA,UAAA,CAAE,eAAA;AAAA,QACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,YAAY,CAAA,EAAG;AAAA,UAC1CA,UAAA,CAAE,UAAU,QAAQ,CAAA;AAAA,UACpBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAA,EAAG;AAAA,YAC5CA,UAAA,CAAE,UAAU,UAAU,CAAA;AAAA,YACtBA,UAAA,CAAE,gBAAA,CAAiBA,UAAA,CAAE,SAAA,CAAU,UAAU,CAAA,EAAGA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,YACrFA,UAAA,CAAE,cAAc,SAAS,CAAA;AAAA,YACzB,GAAG,OAAA,CAAQ,IAAA,CAAK,SAAA,CAAU,GAAA;AAAA,cACxB,CAAC,QAAA,KAAaA,UAAA,CAAE,SAAA,CAAU,UAAU,IAAI;AAAA;AAC1C,WACD,CAAA;AAAA,UACDA,UAAA,CAAE,cAAc,IAAI;AAAA,SACrB;AAAA;AACH,KACD,CAAA;AACD,IAAA,OAAO;AAAA,MACL,OAAA,EAASA,WAAE,uBAAA,CAAwB,CAACA,WAAE,SAAA,CAAU,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAA;AAAA,MAChE,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,OAAA,EAAS,IAAI,CAAA;AACxC,EAAA,MAAM,IAAA,GAAO,eAAe,MAAM,CAAA;AAClC,EAAA,IAAI,YAAA;AACJ,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,SAAS,IAAA,EAAM;AACb,MAAA,IAAI,YAAA,EAAc;AAClB,MAAA,IAAI,IAAA,CAAK,yBAAA,EAA0B,IAAK,IAAA,CAAK,sBAAqB,EAAG;AACnE,QAAA,YAAA,GAAe,IAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,IAAI,CAAC,gBAAgB,CAACD,UAAA,CAAE,iBAAiB,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA,EAAG,OAAO,MAAA;AACzE,EAAA,MAAM,cAAA,GAAiB,YAAA,CAAa,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AACjD,EAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,cAAc,GAAG,OAAO,MAAA;AAE5C,EAAA,IAAI,qBAAA;AACJ,EAAA,MAAM,WAAA,GAAc,YAAA,CAAa,GAAA,CAAI,MAAM,CAAA;AAC3C,EAAA,IAAI,CAAC,WAAA,CAAY,gBAAA,EAAiB,EAAG,OAAO,MAAA;AAC5C,EAAA,KAAA,MAAW,SAAA,IAAa,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA,EAAG;AAC/C,IAAA,IAAI,CAAC,SAAA,CAAU,qBAAA,CAAsB,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG;AACzD,IAAA,KAAA,MAAW,WAAA,IAAe,SAAA,CAAU,GAAA,CAAI,cAAc,CAAA,EAAG;AACvD,MAAA,IACE,WAAA,CAAY,sBAAqB,IACjCA,UAAA,CAAE,aAAa,WAAA,CAAY,IAAA,CAAK,EAAE,CAAA,IAClCA,UAAA,CAAE,aAAa,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA,IACpC,wBAAA,CAAyB,YAAY,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,cAAc,CAAA,EACpE;AACA,QAAA,IAAI,uBAAuB,OAAO,MAAA;AAClC,QAAA,qBAAA,GAAwB,WAAA;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAI,CAAC,yBAAyB,CAACA,UAAA,CAAE,aAAa,qBAAA,CAAsB,IAAA,CAAK,EAAE,CAAA,EAAG,OAAO,MAAA;AACrF,EAAA,IAAI,sBAAsB,KAAA,CAAM,UAAA,CAAW,0BAA0B,IAAI,CAAC,GAAG,OAAO,MAAA;AACpF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,IAAA,CAAK,EAAA,CAAG,IAAA;AACrD,EAAA,MAAM,iBAAA,GAAoB,qBAAA,CAAsB,KAAA,CAAM,UAAA,CAAW,cAAc,CAAA;AAC/E,EAAA,MAAM,eAAA,GAAkB,YAAA,CAAa,KAAA,CAAM,UAAA,CAAW,eAAe,IAAI,CAAA;AACzE,EAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,eAAA,EAAiB,OAAO,MAAA;AAEnD,EAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,EAAA,IAAI,SAAA,GAAY,CAAA;AAChB,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,KAAK,IAAI,CAAA;AACpD,MAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,iBAAA,EAAkB,EAAG,SAAS,YAAA,EAAc,IAAA;AAC1E,MAAA,IAAI,YAAY,iBAAA,EAAmB;AACjC,QAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,UAAA,KAAA,GAAQ,KAAA;AACR,UAAA,IAAA,CAAK,IAAA,EAAK;AACV,UAAA;AAAA,QACF;AACA,QAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,QAAA,IAAI,OAAO,iBAAA,EAAkB,IAAK,OAAO,IAAA,CAAK,QAAA,KAAa,KAAK,IAAA,EAAM;AACtE,QAAA,IACE,CAAC,MAAA,CAAO,kBAAA,MACR,MAAA,CAAO,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,IAC5B,MAAA,CAAO,IAAA,CAAK,YACZ,CAACD,UAAA,CAAE,aAAa,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,EACpC;AACA,UAAA,KAAA,GAAQ,KAAA;AACR,UAAA,IAAA,CAAK,IAAA,EAAK;AACV,UAAA;AAAA,QACF;AACA,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS,IAAA;AACpC,QAAA,IAAI,WAAW,MAAA,EAAQ;AACvB,QAAA,MAAM,OAAO,MAAA,CAAO,UAAA;AACpB,QAAA,IAAI,CAAC,MAAM,gBAAA,EAAiB,IAAK,KAAK,IAAA,CAAK,MAAA,KAAW,OAAO,IAAA,EAAM;AACjE,UAAA,KAAA,GAAQ,KAAA;AACR,UAAA,IAAA,CAAK,IAAA,EAAK;AACV,UAAA;AAAA,QACF;AACA,QAAA,MAAM,SAAA,GAAY,2BAAA,CAA4B,IAAA,EAAM,MAAM,CAAA;AAC1D,QAAA,MAAM,OAAO,IAAA,KAAS,KAAA,GAAQ,WAAW,KAAA,GAAQ,MAAA,KAAW,SAAS,MAAA,KAAW,KAAA;AAChF,QAAA,IAAI,IAAA,EAAM;AACV,QAAA,IACE,CAAC,mCAAA,CAAoC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,IAClE,IAAA,CAAK,UAAA,CAAW,kBAAA,MAAwB,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,MAAA,KAAW,KAAK,IAAA,EAC9E;AACA,UAAA,KAAA,GAAQ,KAAA;AACR,UAAA,IAAA,CAAK,IAAA,EAAK;AACV,UAAA;AAAA,QACF;AACA,QAAA,SAAA,IAAa,CAAA;AACb,QAAA;AAAA,MACF;AACA,MAAA,IAAI,YAAY,eAAA,EAAiB;AAC/B,QAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,UAAA,KAAA,GAAQ,KAAA;AACR,UAAA,IAAA,CAAK,IAAA,EAAK;AACV,UAAA;AAAA,QACF;AACA,QAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,QAAA,IAAI,OAAO,iBAAA,EAAkB,IAAK,OAAO,IAAA,CAAK,QAAA,KAAa,KAAK,IAAA,EAAM;AACtE,QAAA,IACE,OAAO,eAAA,EAAgB,IACvB,OAAO,IAAA,CAAK,SAAA,CAAU,WAAW,CAAA,IACjC,MAAA,CAAO,KAAK,SAAA,CAAU,CAAC,MAAM,IAAA,CAAK,IAAA,IAClCA,WAAE,YAAA,CAAa,MAAA,CAAO,KAAK,MAAA,EAAQ;AAAA,UACjC,IAAA,EAAM,0BAA0B,IAAI;AAAA,SACrC,CAAA,EACD;AACA,UAAA;AAAA,QACF;AACA,QAAA,IACE,OAAO,kBAAA,EAAmB,IAC1B,MAAA,CAAO,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,IAC5B,CAAC,MAAA,CAAO,KAAK,QAAA,IACbA,UAAA,CAAE,aAAa,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,EACnC;AACA,UAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS,IAAA;AACpC,UAAA,MAAM,OAAO,MAAA,CAAO,UAAA;AACpB,UAAA,IACE,WAAW,MAAA,IAAA,CACT,IAAA,KAAS,KAAA,GAAQ,MAAA,KAAW,QAAQ,MAAA,KAAW,KAAA,IAAS,MAAA,KAAW,KAAA,KACnE,MAAM,gBAAA,EAAiB,IACvB,KAAK,IAAA,CAAK,MAAA,KAAW,OAAO,IAAA,EAC9B;AACA,YAAA;AAAA,UACF;AAAA,QACF;AACA,QAAA,KAAA,GAAQ,KAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ;AAAA,IACF,CAAA;AAAA,IACA,gBAAgB,IAAA,EAAM;AACpB,MAAA,IAAI,CAAC,KAAA,IAAS,IAAA,CAAK,iBAAA,EAAkB,EAAG,IAAA,KAAS,YAAA,EAAc,IAAA,IAAQ,CAAC,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU;AAC1F,QAAA;AAAA,MACF;AACA,MAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,QAAA;AACxB,MAAA,MAAM,sBAAA,GACHA,WAAE,YAAA,CAAa,KAAK,MAClB,IAAA,CAAK,KAAA,CAAM,WAAW,KAAA,CAAM,IAAI,MAAM,iBAAA,IACrC,IAAA,CAAK,MAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA,KAAM,eAAA,CAAA,IAC1C,wBAAA,CAAyB,KAAA,EAAO,IAAI,CAAA;AACtC,MAAA,IAAI,CAAC,sBAAA,EAAwB;AAC3B,QAAA,KAAA,GAAQ,KAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,IAAI,CAAC,KAAA,IAAS,SAAA,KAAc,CAAA,EAAG,OAAO,MAAA;AAEtC,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,IAAA,CAAK,iBAAA,EAAkB,EAAG,IAAA,KAAS,cAAc,IAAA,EAAM;AAC3D,MAAA,MAAM,MAAA,GAAS,KAAK,IAAA,CAAK,MAAA;AACzB,MAAA,IACE,CAACD,UAAA,CAAE,kBAAA,CAAmB,MAAM,CAAA,IAC5B,MAAA,CAAO,QAAA,IACP,CAACA,UAAA,CAAE,YAAA,CAAa,MAAA,CAAO,MAAA,EAAQ,EAAE,IAAA,EAAM,cAAA,EAAgB,CAAA,IACvD,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,cAAc,CAAA,KAAM,iBAAA,IAC1C,CAACA,UAAA,CAAE,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA,EAC/B;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,SAAA,GAAY,2BAAA,CAA4B,IAAA,EAAM,MAAA,CAAO,SAAS,IAAI,CAAA;AACxE,MAAA,IAAI,CAAC,mCAAA,CAAoC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,EAAG;AAC1E,MAAA,IAAA,CAAK,WAAA;AAAA,QACHA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAA,EAAG;AAAA,UAC5CA,UAAA,CAAE,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA;AAAA,UACzBA,UAAA,CAAE,gBAAA,CAAiBA,UAAA,CAAE,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA,EAAGA,UAAA,CAAE,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,UAC3EA,UAAA,CAAE,cAAc,SAAU,CAAA;AAAA,UAC1B,GAAG,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,KAAaA,UAAA,CAAE,SAAA,CAAU,QAAA,EAAU,IAAI,CAAiB;AAAA,SACrF;AAAA,OACH;AACA,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,gBAAgB,IAAA,EAAM;AACpB,MAAA,IAAI,IAAA,CAAK,mBAAkB,EAAG,IAAA,KAAS,cAAc,IAAA,IAAQ,CAAC,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU;AAClF,MAAA,IAAA,CAAK,KAAK,QAAA,GAAWA,UAAA,CAAE,eAAeA,UAAA,CAAE,SAAA,CAAU,YAAY,CAAA,EAAG;AAAA,QAC/DA,UAAA,CAAE,UAAU,cAAc,CAAA;AAAA,QAC1BA,UAAA,CAAE,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,UAAU,IAAI,CAAA;AAAA,QACpCA,UAAA,CAAE,cAAc,IAAI;AAAA,OACrB,CAAA;AAAA,IACH;AAAA,GACD,CAAA;AACD,EAAA,MAAM,QAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AACjE,EAAA,OAAOA,UAAA,CAAE,yBAAA,CAA0B,QAAQ,CAAA,IAAKA,UAAA,CAAE,oBAAA,CAAqB,QAAQ,CAAA,GAC3E,EAAE,OAAA,EAAS,QAAA,EAAU,SAAA,EAAU,GAC/B,MAAA;AACN;AAEA,SAAS,kCACP,IAAA,EACA,WAAA,EACA,QACA,cAAA,EACA,YAAA,EACA,gBACA,iBAAA,EACuC;AACvC,EAAA,IAAI,WAAA,CAAY,IAAA,KAAS,CAAA,EAAG,OAAO,EAAE,IAAA,EAAMA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE;AAC7E,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,EAAA,KAAA,MAAW,CAAC,UAAA,EAAY,IAAI,CAAA,IAAK,WAAA,EAAa;AAC5C,IAAA,MAAM,KAAA,GAAQ,OAAO,UAAU,CAAA;AAC/B,IAAA,IACE,CAAC,SACD,CAAC,iCAAA;AAAA,MACC,KAAA,CAAM,YAAA;AAAA,MACN,IAAA;AAAA,MACA,iBAAA,CAAkB,GAAA,CAAI,yBAAA,CAA0B,IAAI,CAAC;AAAA,SAEvD,CAAC,gCAAA,CAAiC,IAAA,EAAM,KAAA,EAAO,IAAI,CAAA,EACnD;AACA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,YAAA,uBAAmB,GAAA,EAAsD;AAC/E,IAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,IAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,MACb,eAAe,IAAA,EAAM;AACnB,QAAA,IAAI,CAAC,KAAA,EAAO;AACZ,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,QAAA,IACE,CAAC,OAAO,YAAA,CAAa,EAAE,MAAM,KAAA,CAAM,UAAA,EAAY,CAAA,IAC/C,MAAA,CAAO,KAAA,CAAM,WAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,IACxC,cAAA,CAAe,GAAA,CAAI,OAAO,IAAA,CAAK,IAAI,CAAA,EAAG,KAAA,KAAU,UAAA,EAChD;AACA,UAAA;AAAA,QACF;AACA,QAAA,IAAI,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,IAAK,CAACD,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA,EAAG;AAC/E,UAAA,KAAA,GAAQ,KAAA;AACR,UAAA,IAAA,CAAK,IAAA,EAAK;AACV,UAAA;AAAA,QACF;AACA,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA;AACpC,QAAA,IAAI,KAAK,KAAA,CAAM,UAAA,CAAW,yBAAA,CAA0B,IAAI,CAAC,CAAA,EAAG;AAC1D,UAAA,KAAA,GAAQ,KAAA;AACR,UAAA,IAAA,CAAK,IAAA,EAAK;AACV,UAAA;AAAA,QACF;AACA,QAAA,IAAI,wBAAA,CAAyB,MAAA,EAAQ,IAAI,CAAA,EAAG;AAC5C,QAAA,IAAI,CAACA,WAAE,yBAAA,CAA0B,MAAM,KAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,MAAM,CAAA,EAAG;AAC3E,UAAA,KAAA,GAAQ,KAAA;AACR,UAAA,IAAA,CAAK,IAAA,EAAK;AACV,UAAA;AAAA,QACF;AACA,QAAA,MAAM,QAAA,GAAW,6BAAA,CAA8B,MAAA,EAAQ,IAAA,EAAM,cAAc,cAAc,CAAA;AACzF,QAAA,IAAI,CAAC,QAAA,EAAU;AACb,UAAA,KAAA,GAAQ,KAAA;AACR,UAAA,IAAA,CAAK,IAAA,EAAK;AACV,UAAA;AAAA,QACF;AACA,QAAA,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAA;AAAA,MACtC;AAAA,KACD,CAAA;AACD,IAAA,IAAI,CAAC,KAAA,IAAS,YAAA,CAAa,IAAA,KAAS,CAAA,EAAG;AAEvC,IAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,MACb,eAAe,IAAA,EAAM;AACnB,QAAA,MAAM,QAAA,GAAW,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAC3C,QAAA,IAAI,CAAC,QAAA,EAAU;AACf,QAAA,IAAA,CAAK,IAAA,CAAK,UAAU,CAAC,CAAA,GAAID,WAAE,SAAA,CAAU,QAAA,CAAS,SAAS,IAAI,CAAA;AAC3D,QAAA,KAAA,IAAS,QAAA,CAAS,SAAA;AAClB,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AAAA,IACtD;AAAA,GACF;AACF;AAEA,SAAS,kBAAA,CACP,UAAA,EACA,cAAA,EACA,aAAA,EACA,cAAA,EACc;AACd,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AACvD,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,YAAA,EAAa,IAAK,MAAA,CAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACzE,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAA,CAAO,KAAK,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,MAAA,CAAO,WAAA;AAAA,QACLD,UAAA,CAAE,gBAAA;AAAA,UACAA,UAAA,CAAE,gBAAA,CAAiBA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAA,EAAGA,UAAA,CAAE,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA,EAAG,IAAI,CAAA;AAAA,UACnFA,UAAA,CAAE,WAAW,KAAK;AAAA;AACpB,OACF;AAAA,IACF,CAAA;AAAA,IACA,qBAAqB,IAAA,EAAM;AACzB,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,KAAK,IAAI,CAAA;AAC9C,MAAA,IAAI,CAAC,SAAS,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACrD,MAAA,IAAA,CAAK,WAAA;AAAA,QACHA,UAAA,CAAE,cAAA;AAAA,UACAA,UAAA,CAAE,gBAAA;AAAA,YACAA,UAAA,CAAE,gBAAA,CAAiBA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAA,EAAGA,UAAA,CAAE,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA,EAAG,IAAI,CAAA;AAAA,YACnFA,UAAA,CAAE,WAAW,KAAK;AAAA,WACpB;AAAA,UACA;AAAC;AACH,OACF;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AACzD;AAEA,SAAS,aAAa,KAAA,EAAuB;AAC3C,EAAA,MAAM,QAAQ,KAAA,CAAM,OAAA,CAAQ,OAAO,EAAE,CAAA,CAAE,MAAM,IAAI,CAAA;AACjD,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,KAAA,CAAM,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAA,CAAM,CAACI,KAAAA,KAASA,KAAAA,CAAK,IAAA,EAAK,CAAE,WAAW,CAAC,CAAA;AACxF,IAAA,IAAI,IAAA,GAAO,KAAA,CAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,OAAO,GAAG,CAAA,CAAE,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAC9D,IAAA,IAAI,QAAQ,CAAA,EAAG,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,MAAM,EAAE,CAAA;AAC3C,IAAA,IAAI,CAAC,gBAAA,EAAkB,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,MAAM,EAAE,CAAA;AACnD,IAAA,IAAI,IAAA,EAAM,MAAA,IAAU,IAAA,IAAQ,CAAC,mBAAmB,GAAA,GAAM,EAAA,CAAA;AAAA,EACxD;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,gBAAA,CACP,UAAA,EACA,aAAA,EACA,WAAA,EACS;AACT,EAAA,IAAI,wBAAA,CAAyB,UAAA,EAAY,aAAa,CAAA,CAAE,SAAS,CAAA,EAAG;AAClE,IAAA,OAAO,yBAAA,CAA0B,UAAA,EAAY,WAAW,CAAA,KAAM,MAAA;AAAA,EAChE;AAEA,EAAA,IAAI,SAAA,GAAY,IAAA;AAChB,EAAAH,aAAA,CAAS,cAAA,CAAe,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAG;AAAA,IACpD,eAAe,IAAA,EAAM;AACnB,MAAA,IAAI,CAAC,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,WAAW,CAAA,EAAG;AAC/C,QAAA,SAAA,GAAY,KAAA;AACZ,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ;AAAA,IACF,CAAA;AAAA,IACA,uBAAuB,IAAA,EAAM;AAC3B,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,WAAW,IAAA,EAAM;AACf,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,YAAY,IAAA,EAAM;AAChB,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,iBAAiB,IAAA,EAAM;AACrB,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,SAAS,IAAA,EAAM;AACb,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,iBAAiB,SAAA,EAA+C;AACvE,EAAA,OAAOD,WAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,GAAI,SAAA,CAAU,KAAK,IAAA,GAAO,MAAA;AACnE;AAEA,SAAS,YAAA,CAAa,SAAuB,IAAA,EAA0C;AACrF,EAAA,OAAO,OAAA,CAAQ,eAAe,UAAA,CAAW,IAAA;AAAA,IACvC,CAAC,cACCA,UAAA,CAAE,cAAA,CAAe,SAAS,CAAA,IAAK,gBAAA,CAAiB,SAAS,CAAA,KAAM;AAAA,GACnE;AACF;AAEA,SAAS,yBAAyB,SAAA,EAA2D;AAC3F,EAAA,IAAI,CAAC,SAAA,EAAW,KAAA,EAAO,OAAO,YAAY,EAAA,GAAK,MAAA;AAC/C,EAAA,IAAIA,WAAE,eAAA,CAAgB,SAAA,CAAU,KAAK,CAAA,EAAG,OAAO,UAAU,KAAA,CAAM,KAAA;AAC/D,EAAA,IACEA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC1CA,WAAE,eAAA,CAAgB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EAC5C;AACA,IAAA,OAAO,SAAA,CAAU,MAAM,UAAA,CAAW,KAAA;AAAA,EACpC;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,kCAAkC,OAAA,EAAgC;AACzE,EAAA,IAAI,OAAA,GAAU,KAAA;AACd,EAAAA,UAAA,CAAE,YAAA,CAAa,OAAA,EAAS,CAAC,IAAA,KAAS;AAChC,IAAA,IAAI,OAAA,IAAW,CAACA,UAAA,CAAE,YAAA,CAAa,IAAI,CAAA,EAAG;AACtC,IAAA,MAAM,GAAA,GAAM,KAAK,cAAA,CAAe,IAAA;AAChC,IAAA,IAAI,CAACA,UAAA,CAAE,eAAA,CAAgB,GAAG,CAAA,IAAM,IAAI,IAAA,KAAS,QAAA,IAAY,GAAA,CAAI,IAAA,KAAS,UAAA,EAAa;AACnF,IAAA,OAAA,GAAU,IAAA,CAAK,eAAe,UAAA,CAAW,IAAA;AAAA,MACvC,CAAC,cACCA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,IAC/BA,UAAA,CAAE,eAAe,SAAS,CAAA,IACzBA,WAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC1C,CAACA,WAAE,oBAAA,CAAqB,SAAA,CAAU,MAAM,UAAU;AAAA,KACxD;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,OAAA;AACT;AAUA,SAAS,yBAAyB,UAAA,EAAmC;AACnE,EAAA,OAAOA,UAAA,CAAE,aAAA,CAAc,UAAU,CAAA,IAAKA,UAAA,CAAE,iBAAiB,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA;AACvF;AAEA,SAAS,sBAAsB,UAAA,EAAwD;AACrF,EAAA,IACEA,WAAE,mBAAA,CAAoB,UAAA,EAAY,EAAE,QAAA,EAAU,MAAM,CAAA,IACpDA,UAAA,CAAE,YAAA,CAAa,WAAW,IAAI,CAAA,IAC9BA,WAAE,YAAA,CAAa,UAAA,CAAW,KAAK,CAAA,EAC/B;AACA,IAAA,OAAO;AAAA,MACL,MAAM,UAAA,CAAW,IAAA;AAAA,MACjB,OAAA,EAAS,IAAA;AAAA,MACT,QAAQ,UAAA,CAAW,KAAA;AAAA,MACnB,QAAA,EAAU,CAAC,UAAA,CAAW,KAAK;AAAA,KAC7B;AAAA,EACF;AACA,EAAA,IAAI,CAACA,UAAA,CAAE,uBAAA,CAAwB,UAAU,GAAG,OAAO,IAAA;AACnD,EAAA,MAAM,QAAA,GAAW,CAAC,UAAA,CAAW,UAAA,EAAY,WAAW,SAAS,CAAA;AAC7D,EAAA,IACE,CAAC,SAAS,KAAA,CAAM,CAAC,WAAWA,UAAA,CAAE,YAAA,CAAa,MAAM,CAAA,IAAK,wBAAA,CAAyB,MAAM,CAAC,CAAA,IACtF,CAAC,SAAS,IAAA,CAAK,CAAC,WAAWA,UAAA,CAAE,YAAA,CAAa,MAAM,CAAC,CAAA,EACjD;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO;AAAA,IACL,MAAM,UAAA,CAAW,IAAA;AAAA,IACjB,OAAA,EAAS,KAAA;AAAA,IACT,QAAQA,UAAA,CAAE,YAAA,CAAa,WAAW,UAAU,CAAA,GAAI,WAAW,UAAA,GAAa,MAAA;AAAA,IACxE,OAAOA,UAAA,CAAE,YAAA,CAAa,WAAW,SAAS,CAAA,GAAI,WAAW,SAAA,GAAY,MAAA;AAAA,IACrE,QAAA,EAAU,SAAS,MAAA,CAAO,CAAC,WAAmCA,UAAA,CAAE,YAAA,CAAa,MAAM,CAAC;AAAA,GACtF;AACF;AAEA,SAAS,UAAU,UAAA,EAA0D;AAC3E,EAAA,OACEA,UAAA,CAAE,gBAAA,CAAiB,UAAU,CAAA,IAC7BA,UAAA,CAAE,kBAAA,CAAmB,UAAA,CAAW,MAAM,CAAA,IACtC,CAAC,UAAA,CAAW,MAAA,CAAO,QAAA,IACnBA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,MAAM,CAAA,IACvCA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,QAAA,EAAU,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAE9D;AAEA,SAAS,mBACP,QAAA,EAC0B;AAC1B,EAAA,IAAIA,WAAE,YAAA,CAAa,QAAA,CAAS,IAAI,CAAA,SAAU,QAAA,CAAS,IAAA;AACnD,EAAA,IAAI,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,MAAA,KAAW,CAAA,IAAK,CAACA,UAAA,CAAE,iBAAA,CAAkB,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG;AAClF,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,QAAA;AACpC,EAAA,OAAO,KAAA,IAASA,UAAA,CAAE,YAAA,CAAa,KAAK,IAAI,KAAA,GAAQ,MAAA;AAClD;AAEA,IAAM,gCAAA,uBAAuC,GAAA,CAAI,CAAC,UAAU,OAAA,EAAS,YAAA,EAAc,UAAU,CAAC,CAAA;AAE9F,SAAS,yBAAyB,UAAA,EAA8C;AAC9E,EAAA,IACE,CAACA,UAAA,CAAE,gBAAA,CAAiB,UAAU,CAAA,IAC9B,CAACA,UAAA,CAAE,kBAAA,CAAmB,UAAA,CAAW,MAAM,CAAA,IACvC,UAAA,CAAW,MAAA,CAAO,QAAA,IAClB,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,MAAM,CAAA,IACxC,CAACA,UAAA,CAAE,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,QAAQ,CAAA,EAC1C;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,gCAAA,CAAiC,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,QAAA,CAAS,IAAI,CAAA,GACvE,UAAA,CAAW,MAAA,CAAO,QAAA,CAAS,IAAA,GAC3B,MAAA;AACN;AAEA,SAAS,0BAAA,CACP,QAAA,EACA,MAAA,EACA,WAAA,EACoB;AACpB,EAAA,MAAM,kBAAA,GAAqB,MAAA,KAAW,QAAA,GAAW,gCAAA,GAAmC,WAAA;AACpF,EAAA,MAAM,mBAAA,GACJ,MAAA,KAAW,QAAA,GACP,QAAA,CAAS,MAAA,CAAO,MAAA,IAAU,CAAA,IAAK,QAAA,CAAS,MAAA,CAAO,MAAA,IAAU,CAAA,GACzD,QAAA,CAAS,OAAO,MAAA,KAAW,CAAA;AACjC,EAAA,IACE,SAAS,KAAA,IACT,QAAA,CAAS,SAAA,IACT,CAAC,uBACD,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,CAAC,cAAc,CAACA,UAAA,CAAE,YAAA,CAAa,SAAS,CAAC,CAAA,EAC9D;AACA,IAAA,OAAO,CAAA,EAAG,MAAM,CAAA,uCAAA,EAA0C,kBAAkB,CAAA,CAAA;AAAA,EAC9E;AACA,EAAA,IAAI,sBAAA,CAAuB,QAAQ,CAAA,EAAG;AACpC,IAAA,OAAO,mCAAmC,MAAM,CAAA,SAAA,CAAA;AAAA,EAClD;AACA,EAAA,MAAM,KAAA,GAAQ,mBAAmB,QAAQ,CAAA;AACzC,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,MAAM,CAAA,qCAAA,CAAA;AAC5B,EAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,KAAA,EAAO,WAAW,CAAA;AAChE,EAAA,OAAO,WAAA,GAAc,CAAA,EAAG,MAAM,CAAA,sBAAA,EAAyB,WAAW,CAAA,CAAA,GAAK,MAAA;AACzE;AAEA,SAAS,0BAAA,CACP,YACA,WAAA,EACoB;AACpB,EAAA,MAAM,MAAA,GAAS,yBAAyB,UAAU,CAAA;AAClD,EAAA,IAAI,CAAC,MAAA,IAAU,CAACA,UAAA,CAAE,gBAAA,CAAiB,UAAU,CAAA,EAAG;AAC9C,IAAA,OAAO,yBAAA,CAA0B,YAAY,WAAW,CAAA;AAAA,EAC1D;AAEA,EAAA,MAAM,MAAA,GAAU,WAAW,MAAA,CAA8B,MAAA;AACzD,EAAA,MAAM,iBAAA,GAAoB,wBAAA,CAAyB,MAAM,CAAA,GACrD,0BAAA,CAA2B,QAAQ,WAAW,CAAA,GAC9C,yBAAA,CAA0B,MAAA,EAAQ,WAAW,CAAA;AACjD,EAAA,IAAI,mBAAmB,OAAO,iBAAA;AAE9B,EAAA,IAAI,WAAW,QAAA,EAAU;AACvB,IAAA,IACE,WAAW,SAAA,CAAU,MAAA,KAAW,KAC/B,CAACA,UAAA,CAAE,0BAA0B,UAAA,CAAW,SAAA,CAAU,CAAC,CAAC,CAAA,IACnD,CAACA,UAAA,CAAE,oBAAA,CAAqB,WAAW,SAAA,CAAU,CAAC,CAAC,CAAA,EACjD;AACA,MAAA,OAAO,qCAAA;AAAA,IACT;AACA,IAAA,OAAO,2BAA2B,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA,EAAG,UAAU,WAAW,CAAA;AAAA,EAClF;AAEA,EAAA,IAAI,WAAW,UAAA,EAAY;AACzB,IAAA,IAAI,UAAA,CAAW,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC9C,IAAA,IACE,WAAW,SAAA,CAAU,MAAA,KAAW,KAC/B,CAACA,UAAA,CAAE,0BAA0B,UAAA,CAAW,SAAA,CAAU,CAAC,CAAC,CAAA,IACnD,CAACA,UAAA,CAAE,oBAAA,CAAqB,WAAW,SAAA,CAAU,CAAC,CAAC,CAAA,EACjD;AACA,MAAA,OAAO,iDAAA;AAAA,IACT;AACA,IAAA,OAAO,2BAA2B,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA,EAAG,YAAY,WAAW,CAAA;AAAA,EACpF;AAEA,EAAA,MAAM,gBAAA,GAAmB,MAAA,KAAW,OAAA,GAAU,CAAA,GAAI,CAAA;AAClD,EAAA,IAAI,UAAA,CAAW,SAAA,CAAU,MAAA,GAAS,gBAAA,EAAkB;AAClD,IAAA,OAAO,CAAA,EAAG,MAAM,CAAA,iBAAA,EAAoB,gBAAgB,CAAA,wBAAA,CAAA;AAAA,EACtD;AACA,EAAA,KAAA,MAAW,QAAA,IAAY,WAAW,SAAA,EAAW;AAC3C,IAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,QAAQ,CAAA,EAAG,OAAO,GAAG,MAAM,CAAA,kCAAA,CAAA;AAC/C,IAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,QAAA,EAAU,WAAW,CAAA;AACnE,IAAA,IAAI,WAAA,EAAa,OAAO,CAAA,EAAG,MAAM,yBAAyB,WAAW,CAAA,CAAA;AAAA,EACvE;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,uBACP,QAAA,EACS;AACT,EAAA,IAAI,KAAA,GAAQ,KAAA;AACZ,EAAAC,aAAA,CAAS,eAAeD,UAAA,CAAE,SAAA,CAAU,QAAA,EAAU,IAAI,CAAC,CAAA,EAAG;AAAA,IACpD,eAAe,IAAA,EAAM;AACnB,MAAA,MAAM,MAAA,GAAS,KAAK,IAAA,CAAK,MAAA;AACzB,MAAA,MAAM,IAAA,GAAOA,WAAE,YAAA,CAAa,MAAM,IAC9B,MAAA,CAAO,IAAA,GACPA,WAAE,kBAAA,CAAmB,MAAM,KAAK,CAAC,MAAA,CAAO,YAAYA,UAAA,CAAE,YAAA,CAAa,OAAO,QAAQ,CAAA,GAChF,MAAA,CAAO,QAAA,CAAS,IAAA,GAChB,EAAA;AACN,MAAA,IAAI,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA,EAAG;AAC7B,QAAA,KAAA,GAAQ,IAAA;AACR,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,iBAAiB,OAAA,EAAiD;AACzE,EAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,IAAA,IAAI,CAACA,UAAA,CAAE,cAAA,CAAe,SAAS,KAAK,CAACA,UAAA,CAAE,eAAA,CAAgB,SAAA,CAAU,IAAA,EAAM,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA,EAAG;AACvF,MAAA;AAAA,IACF;AACA,IAAA,IAAIA,UAAA,CAAE,eAAA,CAAgB,SAAA,CAAU,KAAK,CAAA,SAAUA,UAAA,CAAE,aAAA,CAAc,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA;AACpF,IAAA,IACEA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC1C,CAACA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA;AAElD,MAAA,OAAO,UAAU,KAAA,CAAM,UAAA;AAAA,EAC3B;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mBAAA,CACP,QAAA,EACA,aAAA,EACA,WAAA,EACoB;AACpB,EAAA,IACE,QAAA,CAAS,KAAA,IACT,QAAA,CAAS,SAAA,IACT,SAAS,MAAA,CAAO,MAAA,GAAS,CAAA,IACzB,QAAA,CAAS,MAAA,CAAO,MAAA,GAAS,CAAA,IACzB,CAACA,WAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,IACjC,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,MAAA,IAAa,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,EACvE;AACA,IAAA,OAAO,sFAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA;AAChC,EAAA,MAAM,KAAA,GAAQA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,GAAO,MAAA;AAC7E,EAAA,IAAI,KAAA,IAAS,oBAAA,CAAqB,aAAA,EAAe,KAAK,CAAA,EAAG;AACvD,IAAA,OAAO,kDAAA;AAAA,EACT;AACA,EAAA,IAAI,CAAC,oBAAA,CAAqB,aAAA,EAAe,IAAI,CAAA,EAAG;AAC9C,IAAA,OAAO,gDAAA;AAAA,EACT;AACA,EAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,aAAA,EAAe,WAAW,CAAA;AACxE,EAAA,OAAO,WAAA,GAAc,CAAA,2BAAA,EAA8B,WAAW,CAAA,CAAA,GAAK,MAAA;AACrE;AAEA,SAAS,mBAAA,CAAoB,SAAuB,SAAA,EAAyC;AAC3F,EAAA,MAAM,IAAA,GAAO,QAAQ,cAAA,CAAe,IAAA;AACpC,EAAA,OAAOA,WAAE,eAAA,CAAgB,IAAI,KAAK,SAAA,CAAU,GAAA,CAAI,KAAK,IAAI,CAAA;AAC3D;AAEA,SAAS,sBAAsB,OAAA,EAAiD;AAC9E,EAAA,OAAO,OAAA,CAAQ,QAAA,CAAS,MAAA,CAAO,CAAC,KAAA,KAAU;AACxC,IAAA,IAAIA,UAAA,CAAE,UAAU,KAAK,CAAA,SAAU,KAAA,CAAM,KAAA,CAAM,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA;AAC3D,IAAA,OAAO,EAAEA,WAAE,wBAAA,CAAyB,KAAK,KAAKA,UAAA,CAAE,oBAAA,CAAqB,MAAM,UAAU,CAAA,CAAA;AAAA,EACvF,CAAC,CAAA;AACH;AAEA,SAAS,cAAA,CACP,UAAA,EACA,aAAA,EACA,WAAA,EAC8C;AAC9C,EAAA,MAAM,SAAS,UAAA,CAAW,MAAA;AAC1B,EAAA,MAAM,aAAa,MAAA,CAAO,MAAA;AAC1B,EAAA,MAAM,qBAAA,GAAwB,0BAAA,CAA2B,UAAA,EAAY,WAAW,CAAA;AAChF,EAAA,IAAI,qBAAA,EAAuB;AACzB,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,oCAAoC,qBAAqB,CAAA;AAAA,KACnE;AAAA,EACF;AACA,EAAA,IACE,WAAW,SAAA,CAAU,MAAA,KAAW,KAC/B,CAACA,UAAA,CAAE,0BAA0B,UAAA,CAAW,SAAA,CAAU,CAAC,CAAC,CAAA,IACnD,CAACA,UAAA,CAAE,oBAAA,CAAqB,WAAW,SAAA,CAAU,CAAC,CAAC,CAAA,EACjD;AACA,IAAA,OAAO,EAAE,QAAQ,oDAAA,EAAqD;AAAA,EACxE;AACA,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AACvC,EAAA,IAAI,sBAAA,CAAuB,QAAQ,CAAA,EAAG;AACpC,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACA,EAAA,MAAM,GAAA,GAAM,mBAAmB,QAAQ,CAAA;AACvC,EAAA,IAAI,CAAC,GAAA,IAAO,CAACA,UAAA,CAAE,YAAA,CAAa,GAAG,CAAA,EAAG;AAChC,IAAA,OAAO,EAAE,QAAQ,wDAAA,EAAyD;AAAA,EAC5E;AACA,EAAA,MAAM,GAAA,GAAM,iBAAiB,GAAG,CAAA;AAChC,EAAA,IAAI,CAAC,GAAA;AACH,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ;AAAA,KACV;AACF,EAAA,MAAM,SAAA,GAAY,mBAAA,CAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA;AAChE,EAAA,IAAI,SAAA,EAAW,OAAO,EAAE,MAAA,EAAQ,SAAA,EAAU;AAC1C,EAAA,OAAO,EAAE,YAAA,EAAc,wBAAA,CAAyB,UAAA,EAAY,aAAa,CAAA,EAAE;AAC7E;AAEA,SAAS,uBAAA,CAAwB,SAAuB,IAAA,EAAwC;AAC9F,EAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,IAAA,IACEA,UAAA,CAAE,eAAe,SAAS,CAAA,IAC1BA,WAAE,eAAA,CAAgB,SAAA,CAAU,IAAA,EAAM,EAAE,IAAA,EAAM,KAC1CA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC1C,CAACA,WAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EAClD;AACA,MAAA,OAAO,UAAU,KAAA,CAAM,UAAA;AAAA,IACzB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,iBAAA,CACP,OAAA,EACA,aAAA,EACA,WAAA,EAC8C;AAC9C,EAAA,IAAI,OAAA,CAAQ,cAAA,CAAe,UAAA,CAAW,IAAA,CAAK,CAAC,cAAcA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAC,CAAA,EAAG;AAC5F,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACA,EAAA,MAAM,IAAA,GAAO,uBAAA,CAAwB,OAAA,EAAS,MAAM,CAAA;AACpD,EAAA,MAAM,EAAA,GAAK,uBAAA,CAAwB,OAAA,EAAS,IAAI,CAAA;AAChD,EAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,IAAI,OAAO,EAAE,QAAQ,+CAAA,EAAgD;AACnF,EAAA,MAAM,qBAAA,GAAwB,0BAAA,CAA2B,IAAA,EAAM,WAAW,CAAA;AAC1E,EAAA,IAAI,qBAAA,EAAuB;AACzB,IAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,qBAAA,EAAwB,qBAAqB,CAAA,CAAA,EAAG;AAAA,EACnE;AACA,EAAA,IAAI,CAACA,WAAE,yBAAA,CAA0B,EAAE,KAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,EAAE,CAAA,EAAG;AACnE,IAAA,OAAO,EAAE,QAAQ,kDAAA,EAAmD;AAAA,EACtE;AACA,EAAA,MAAM,GAAA,GAAM,mBAAmB,EAAE,CAAA;AACjC,EAAA,IAAI,CAAC,GAAA,EAAK,OAAO,EAAE,QAAQ,iDAAA,EAAkD;AAC7E,EAAA,MAAM,SAAA,GAAY,mBAAA,CAAoB,EAAA,EAAI,GAAA,EAAK,WAAW,CAAA;AAC1D,EAAA,IAAI,SAAA,EAAW,OAAO,EAAE,MAAA,EAAQ,SAAA,EAAU;AAE1C,EAAA,MAAM,QAAA,GAAW,sBAAsB,OAAO,CAAA;AAC9C,EAAA,IACE,QAAA,CAAS,MAAA,KAAW,CAAA,IACpB,CAACA,WAAE,wBAAA,CAAyB,QAAA,CAAS,CAAC,CAAC,CAAA,IACvCA,UAAA,CAAE,oBAAA,CAAqB,QAAA,CAAS,CAAC,CAAA,CAAE,UAAU,CAAA,IAC5C,CAACA,UAAA,CAAE,yBAAA,CAA0B,QAAA,CAAS,CAAC,EAAE,UAAU,CAAA,IAClD,CAACA,UAAA,CAAE,oBAAA,CAAqB,QAAA,CAAS,CAAC,CAAA,CAAE,UAAU,CAAA,EAChD;AACA,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACA,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,CAAC,CAAA,CAAE,UAAA;AAC3B,EAAA,IAAI,CAAC,kBAAA,CAAmB,MAAM,CAAA,EAAG;AAC/B,IAAA,OAAO,EAAE,QAAQ,sDAAA,EAAuD;AAAA,EAC1E;AACA,EAAA,IAAI,sBAAA,CAAuB,MAAM,CAAA,EAAG;AAClC,IAAA,OAAO,EAAE,QAAQ,sDAAA,EAAuD;AAAA,EAC1E;AACA,EAAA,OAAO,EAAE,YAAA,EAAc,wBAAA,CAAyB,OAAA,EAAS,aAAa,CAAA,EAAE;AAC1E;AAiBA,SAAS,6BACP,OAAA,EACoB;AACpB,EAAA,IAAI,MAAA;AACJ,EAAAC,aAAA,CAAS,eAAeD,UAAA,CAAE,SAAA,CAAU,OAAA,EAAS,IAAI,CAAC,CAAA,EAAG;AAAA,IACnD,aAAa,IAAA,EAAM;AACjB,MAAA,MAAA,GAAS,iBAAA;AACT,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,qBAAqB,IAAA,EAAM;AACzB,MAAA,IAAI,IAAA,CAAK,IAAA,CAAK,IAAA,KAAS,WAAA,EAAa;AACpC,MAAA,MAAA,GAAS,kBAAA;AACT,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,MAAM,IAAA,EAAM;AACV,MAAA,MAAA,GAAS,cAAA;AACT,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ,CAAA;AAAA,IACA,eAAe,IAAA,EAAM;AACnB,MAAA,MAAA,GAAS,aAAA;AACT,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mCAAA,CACP,SACA,eAAA,EACkD;AAClD,EAAA,MAAM,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,OAAA,EAAS,IAAI,CAAA;AACxC,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA;AACtC,EAAA,IAAI,CAACA,WAAE,YAAA,CAAa,cAAc,KAAK,eAAA,CAAgB,IAAA,KAAS,GAAG,OAAO,MAAA;AAC1E,EAAA,MAAM,IAAA,GAAO,eAAe,MAAM,CAAA;AAClC,EAAA,MAAM,UAAA,GAAc,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AACnE,EAAA,IAAI,CAACA,WAAE,yBAAA,CAA0B,UAAU,KAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,UAAU,CAAA,EAAG;AACnF,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,qBAAA,GAAwB,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA;AACjD,EAAA,MAAM,YAAsE,EAAC;AAC7E,EAAA,MAAM,mBAAA,uBAA0B,GAAA,EAA0B;AAC1D,EAAA,MAAM,oBAAA,GAAuB,CAC3B,IAAA,KACG;AACH,IAAA,MAAM,QAAA,GAAW,KAAK,IAAA,CAAK,QAAA;AAC3B,IAAA,MAAM,kBAAkB,IAAA,CAAK,IAAA,CAAK,WAC9BA,UAAA,CAAE,eAAA,CAAgB,UAAU,EAAE,KAAA,EAAO,eAAA,EAAiB,IACtDA,UAAA,CAAE,YAAA,CAAa,UAAU,EAAE,IAAA,EAAM,iBAAiB,CAAA;AACtD,IAAA,IAAI,CAAC,eAAA,IAAmB,CAACA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,cAAA,CAAe,IAAA,EAAM,CAAA;AACrF,MAAA;AACF,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,eAAe,IAAI,CAAA;AACzD,IAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,UAAA,KAAe,qBAAA,EAAuB;AAC9D,IAAA,MAAM,aAAa,IAAA,CAAK,UAAA;AAAA,MACtB,CAACK,OAAAA,KACCA,OAAAA,CAAO,gBAAA,EAAiB,IACxBL,WAAE,YAAA,CAAaK,OAAAA,CAAO,IAAA,CAAK,MAAM,KACjC,eAAA,CAAgB,GAAA,CAAIA,OAAAA,CAAO,IAAA,CAAK,OAAO,IAAI;AAAA,KAC/C;AACA,IAAA,IAAI,CAAC,UAAA,EAAY;AACjB,IAAA,MAAM,mBAAmB,IAAA,CAAK,UAAA;AAAA,MAC5B,CAACA,OAAAA,KAAWA,OAAAA,CAAO,UAAA,EAAW,IAAKA,QAAO,IAAA,KAAS;AAAA,KACrD;AACA,IAAA,IAAI,CAAC,oBAAoB,CAAC,gBAAA,CAAiB,WAAW,CAACA,OAAAA,KAAWA,YAAW,UAAU,CAAA;AACrF,MAAA;AAEF,IAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,IAAA,MAAM,YAAA,GAAA,CACH,MAAA,EAAQ,kBAAA,EAAmB,IAAK,MAAA,EAAQ,0BAAA,EAA2B,KACpE,MAAA,CAAO,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,IAAA,GACxB,MAAA,GACA,IAAA;AACN,IAAA,MAAM,gBAAA,GACJ,YAAA,KAAiB,IAAA,GACb,SAAA,GACA,aAAa,IAAA,CAAK,QAAA,GAChBL,UAAA,CAAE,eAAA,CAAgB,YAAA,CAAa,IAAA,CAAK,QAAQ,CAAA,GAC1C,aAAa,IAAA,CAAK,QAAA,CAAS,KAAA,GAC3B,CAAA,QAAA,EAAW,SAAA,CAAU,MAAM,CAAA,CAAA,GAC7BA,UAAA,CAAE,aAAa,YAAA,CAAa,IAAA,CAAK,QAAQ,CAAA,GACvC,aAAa,IAAA,CAAK,QAAA,CAAS,IAAA,GAC3B,CAAA,QAAA,EAAW,UAAU,MAAM,CAAA,CAAA;AACrC,IAAA,IAAI,QAAA,GAAW,mBAAA,CAAoB,GAAA,CAAI,gBAAgB,CAAA;AACvD,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,MAAM,MAAA,GAAS,gBAAA,CACZ,OAAA,CAAQ,iBAAA,EAAmB,GAAG,CAAA,CAC9B,OAAA;AAAA,QAAQ,2BAAA;AAAA,QAA6B,CAAC,MAAA,EAAQ,SAAA,KAC7C,SAAA,CAAU,WAAA;AAAY,OACxB,CACC,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACpB,MAAA,QAAA,GAAW,qBAAA,CAAsB,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAA,EAAI;AAAA,QAC9D,UAAA;AAAA,QACA,GAAG,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,KAAU,MAAM,UAAU;AAAA,OAC7C,CAAA;AACD,MAAA,mBAAA,CAAoB,GAAA,CAAI,kBAAkB,QAAQ,CAAA;AAClD,MAAA,SAAA,CAAU,IAAA,CAAK;AAAA,QACb,UAAA,EAAY,QAAA;AAAA,QACZ,KAAA,EAAOA,UAAA,CAAE,SAAA,CAAU,YAAA,CAAa,MAAM,IAAI;AAAA,OAC3C,CAAA;AAAA,IACH;AACA,IAAA,YAAA,CAAa,WAAA,CAAYA,UAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAK;AAAA,EACpB,CAAA;AACA,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,gBAAA,EAAkB,oBAAA;AAAA,IAClB,wBAAA,EAA0B;AAAA,GAC3B,CAAA;AACD,EAAA,IAAI,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG,OAAO,UAAA;AAEnC,EAAA,MAAM,eAAe,SAAA,CAAU,GAAA;AAAA,IAAI,CAAC,EAAE,UAAA,EAAY,KAAA,EAAM,KACtDD,WAAE,mBAAA,CAAoB,OAAA,EAAS,CAACA,UAAA,CAAE,mBAAmBA,UAAA,CAAE,SAAA,CAAU,UAAU,CAAA,EAAG,KAAK,CAAC,CAAC;AAAA,GACvF;AACA,EAAA,IAAIA,UAAA,CAAE,gBAAA,CAAiB,UAAA,CAAW,IAAI,CAAA,EAAG;AACvC,IAAA,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAG,YAAY,CAAA;AAAA,EAC9C,CAAA,MAAO;AACL,IAAA,UAAA,CAAW,IAAA,GAAOA,UAAA,CAAE,cAAA,CAAe,CAAC,GAAG,YAAA,EAAcA,UAAA,CAAE,eAAA,CAAgB,UAAA,CAAW,IAAI,CAAC,CAAC,CAAA;AAAA,EAC1F;AACA,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,oCAAA,CACP,MACA,eAAA,EACc;AACd,EAAA,MAAM,OAAO,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,EAAAC,aAAA,CAAS,IAAA,EAAM;AAAA,IACb,aAAa,IAAA,EAAM;AACjB,MAAA,IAAI,CAACD,UAAA,CAAE,eAAA,CAAgB,IAAA,CAAK,KAAK,IAAI,CAAA,IAAK,CAAC,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACjF,MAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,KAAA;AACxB,MAAA,IACE,CAACA,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAChC,CAACA,UAAA,CAAE,yBAAA,CAA0B,KAAA,CAAM,UAAU,KAC5C,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAC1C;AACA,QAAA;AAAA,MACF;AACA,MAAA,KAAA,CAAM,UAAA,GAAa,mCAAA,CAAoC,KAAA,CAAM,UAAA,EAAY,eAAe,CAAA;AAAA,IAC1F;AAAA,GACD,CAAA;AACD,EAAA,MAAM,UAAA,GAAc,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAA4B,UAAA;AACnE,EAAA,OAAOA,UAAA,CAAE,aAAa,UAAU,CAAA,GAAI,aAAaA,UAAA,CAAE,SAAA,CAAU,MAAM,IAAI,CAAA;AACzE;AAEA,SAAS,mBAAA,CACP,GAAA,EACA,cAAA,EACA,WAAA,EACA,iBACA,0BAAA,EAMA;AACA,EAAA,IACE,cAAA,CAAe,KAAA,IACf,cAAA,CAAe,SAAA,IACf,eAAe,MAAA,CAAO,MAAA,GAAS,CAAA,IAC/B,cAAA,CAAe,MAAA,CAAO,MAAA,GAAS,CAAA,IAC/B,CAACA,WAAE,YAAA,CAAa,cAAA,CAAe,MAAA,CAAO,CAAC,CAAC,CAAA,IACvC,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA,KAAM,MAAA,IAAa,CAACA,UAAA,CAAE,YAAA,CAAa,cAAA,CAAe,MAAA,CAAO,CAAC,CAAC,CAAA,EACnF;AACA,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AAEA,EAAA,MAAM,WAAqC,EAAC;AAC5C,EAAA,MAAM,SAAiC,EAAC;AACxC,EAAA,MAAM,eAA6C,EAAC;AACpD,EAAA,MAAM,yBAAA,GAA4B,CAAC,UAAA,KACjC,yBAAA;AAAA,IACE,UAAA;AAAA,IACA,WAAA;AAAA,IACA,0BAAA,GACI,CAAC,IAAA,KACC,8BAAA,CAA+B,IAAA,EAAM,0BAA0B,CAAA,IAC/D,6BAAA,CAA8B,IAAA,EAAM,0BAA0B,CAAA,GAChE;AAAA,GACN;AACF,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,EAAuB,IAAA,KAAuC;AAC3E,IAAA,MAAM,GAAA,GAAM,QAAQ,cAAA,CAAe,IAAA;AACnC,IAAA,IAAI,CAACA,UAAA,CAAE,eAAA,CAAgB,GAAG,CAAA,IAAK,CAAC,QAAA,CAAS,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AACvD,MAAA,OAAO,gDAAA;AAAA,IACT;AACA,IAAA,IAAI,GAAA,CAAI,IAAA,KAAS,KAAA,EAAO,OAAO,4CAAA;AAC/B,IAAA,MAAM,iBAAiB,IAAI,GAAA;AAAA,MACzB,QAAQ,cAAA,CAAe,UAAA,CACpB,OAAO,CAAC,SAAA,KAA2CA,WAAE,cAAA,CAAe,SAAS,CAAC,CAAA,CAC9E,IAAI,gBAAgB,CAAA,CACpB,OAAO,CAAC,IAAA,KAAyB,SAAS,MAAS;AAAA,KACxD;AACA,IAAA,MAAM,aAAa,cAAA,CAAe,GAAA,CAAI,OAAO,CAAA,IAAK,cAAA,CAAe,IAAI,SAAS,CAAA;AAC9E,IAAA,IAAI,cAAA,CAAe,GAAA,CAAI,iBAAiB,CAAA,EAAG;AACzC,MAAA,OAAO,qDAAA;AAAA,IACT;AACA,IAAA,IAAI,GAAA,CAAI,IAAA,KAAS,OAAA,IAAW,UAAA,EAAY;AACtC,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,OAAA,EAAS,MAAM,CAAA;AACzC,MAAA,MAAM,UAAA,GAAa,yBAAyB,IAAI,CAAA;AAChD,MAAA,IAAI,IAAA,IAAQ,eAAe,MAAA,EAAW;AACpC,QAAA,OAAO,mDAAA;AAAA,MACT;AACA,MAAA,IAAI,eAAe,GAAA,CAAI,OAAO,KAAK,UAAA,EAAY,WAAA,OAAkB,MAAA,EAAQ;AACvE,QAAA,OAAO,qCAAA;AAAA,MACT;AAAA,IACF;AACA,IAAA,IAAI,GAAA,CAAI,SAAS,UAAA,IAAc,UAAA,IAAc,sBAAsB,OAAO,CAAA,CAAE,SAAS,CAAA,EAAG;AACtF,MAAA,OAAO,yDAAA;AAAA,IACT;AACA,IAAA,IAAI,IAAI,IAAA,KAAS,QAAA,IAAY,UAAA,IAAc,iCAAA,CAAkC,OAAO,CAAA,EAAG;AACrF,MAAA,OAAO,qDAAA;AAAA,IACT;AAEA,IAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,MAAA,IAAIA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,EAAG;AACrC,QAAA,OAAO,0DAAA;AAAA,MACT;AACA,MAAA,MAAM,IAAA,GAAO,iBAAiB,SAAS,CAAA;AACvC,MAAA,IAAI,CAAC,MAAM,OAAO,8DAAA;AAClB,MAAA,IAAI,IAAA,KAAS,KAAA,IAAS,IAAA,KAAS,yBAAA,EAA2B;AACxD,QAAA,OAAO,sBAAsB,IAAI,CAAA,yBAAA,CAAA;AAAA,MACnC;AACA,MAAA,IAAI,SAAS,KAAA,EAAO;AACpB,MAAA,IAAI,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EAAG;AACzB,QAAA,IACE,CAACA,UAAA,CAAE,wBAAA,CAAyB,UAAU,KAAK,CAAA,IAC1C,CAACA,UAAA,CAAE,yBAAA,CAA0B,UAAU,KAAA,CAAM,UAAU,KACtD,CAACA,UAAA,CAAE,qBAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EACpD;AACA,UAAA,OAAO,2EAAA;AAAA,QACT;AACA,QAAA,MAAM,OAAA,GAAU,UAAU,KAAA,CAAM,UAAA;AAChC,QAAA,IAAI,OAAA,CAAQ,KAAA,IAAS,OAAA,CAAQ,SAAA,EAAW;AACtC,UAAA,OAAO,6DAAA;AAAA,QACT;AACA,QAAA,IAAI,sBAAA,CAAuB,OAAO,CAAA,EAAG;AACnC,UAAA,OAAO,2DAAA;AAAA,QACT;AACA,QAAA,MAAMM,YAAAA,GAAc,6BAA6B,OAAO,CAAA;AACxD,QAAA,IAAIA,YAAAA,EAAa;AACf,UAAA,OAAO,sDAAsDA,YAAW,CAAA,CAAA;AAAA,QAC1E;AACA,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,IAAI,MAAA,CAAO,MAAA;AAAA,UACX,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,UACd,IAAA;AAAA,UACA,KAAA,EAAO,mCAAA,CAAoC,OAAA,EAAS,eAAe;AAAA,SACpE,CAAA;AACD,QAAA;AAAA,MACF;AACA,MAAA,IACE,CAACN,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC3CA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EACjD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,GAAa,UAAU,KAAA,CAAM,UAAA;AACnC,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,IAAI,CAACA,UAAA,CAAE,kBAAA,CAAmB,UAAU,CAAA,EAAG;AACrC,UAAA,OAAO,8DAAA;AAAA,QACT;AACA,QAAA,KAAA,MAAW,QAAA,IAAY,WAAW,UAAA,EAAY;AAC5C,UAAA,IACE,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAC5B,QAAA,CAAS,QAAA,IACT,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAC9B;AACA,YAAA,OAAO,mFAAA;AAAA,UACT;AACA,UAAA,MAAM,eAAeA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,GAAG,IAC5C,QAAA,CAAS,GAAA,CAAI,IAAA,GACbA,UAAA,CAAE,gBAAgB,QAAA,CAAS,GAAG,CAAA,GAC5B,QAAA,CAAS,IAAI,KAAA,GACb,MAAA;AACN,UAAA,IAAI,CAAC,YAAA,IAAiB,YAAA,CAAa,QAAA,CAAS,GAAG,KAAK,CAAC,YAAA,CAAa,UAAA,CAAW,IAAI,CAAA,EAAI;AACnF,YAAA,OAAO,4EAAA;AAAA,UACT;AACA,UAAA,MAAMM,YAAAA,GAAc,yBAAA,CAA0B,QAAA,CAAS,KAAK,CAAA;AAC5D,UAAA,IAAIA,YAAAA,EAAa;AACf,YAAA,OAAO,CAAA,yBAAA,EAA4B,YAAY,CAAA,YAAA,EAAeA,YAAW,CAAA,CAAA;AAAA,UAC3E;AACA,UAAA,QAAA,CAAS,IAAA,CAAK;AAAA,YACZ,IAAA,EAAM,OAAA;AAAA,YACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,YACd,IAAA,EAAM,YAAA;AAAA,YACN,KAAA,EAAO,eAAA,CAAgB,QAAA,CAAS,KAAK;AAAA,WACtC,CAAA;AAAA,QACH;AACA,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,IAAA,KAAS,YAAY,OAAO,yDAAA;AAChC,MAAA,MAAM,WAAA,GAAc,0BAA0B,UAAU,CAAA;AACxD,MAAA,IAAI,WAAA,EAAa,OAAO,CAAA,mBAAA,EAAsB,IAAI,eAAe,WAAW,CAAA,CAAA;AAC5E,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,IAAA;AAAA,QACA,KAAA,EAAO,gBAAgB,UAAU;AAAA,OAClC,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,kBAAA,GAAqB,sBAAsB,OAAO,CAAA;AACxD,IAAA,MAAM,mBAAmB,kBAAA,CAAmB,IAAA;AAAA,MAC1C,CAAC,KAAA,KACCN,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAChC,CAACA,UAAA,CAAE,oBAAA,CAAqB,MAAM,UAAU,CAAA,IACxC,qBAAA,CAAsB,KAAA,CAAM,UAAU,CAAA,KAAM;AAAA,KAChD;AACA,IAAA,IAAI,oBAAoB,CAACA,UAAA,CAAE,oBAAA,CAAqB,gBAAA,CAAiB,UAAU,CAAA,EAAG;AAC5E,MAAA,IAAI,kBAAA,CAAmB,WAAW,CAAA,EAAG;AACnC,QAAA,OAAO,4EAAA;AAAA,MACT;AACA,MAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,gBAAA,CAAiB,UAAU,CAAA;AAC/D,MAAA,IAAI,CAAC,OAAO,OAAO,uDAAA;AACnB,MAAA,MAAM,eAAA,GAAkB,yBAAA,CAA0B,KAAA,CAAM,IAAA,EAAM,WAAW,CAAA;AACzE,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,OAAO,kDAAkD,eAAe,CAAA,CAAA;AAAA,MAC1E;AACA,MAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,MAAA,GACzB,0BAAA,CAA2B,KAAA,CAAM,MAAA,EAAQ,WAAW,CAAA,GACpD,EAAE,QAAA,EAAU,EAAC,EAA8B;AAC/C,MAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,KAAA,GACxB,0BAAA,CAA2B,KAAA,CAAM,KAAA,EAAO,WAAW,CAAA,GACnD,EAAE,QAAA,EAAU,EAAC,EAA8B;AAC/C,MAAA,IAAI,cAAA,CAAe,MAAA,IAAU,aAAA,CAAc,MAAA,EAAQ;AACjD,QAAA,OACE,cAAA,CAAe,MAAA,IACf,aAAA,CAAc,MAAA,IACd,wDAAA;AAAA,MAEJ;AACA,MAAA,YAAA,CAAa,IAAA,CAAK;AAAA,QAChB,IAAI,YAAA,CAAa,MAAA;AAAA,QACjB,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,IAAA,EAAM,eAAA,CAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,QAChC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,MAAA,EAAQ,MAAM,MAAA,GAASA,UAAA,CAAE,UAAU,KAAA,CAAM,MAAA,EAAQ,IAAI,CAAA,GAAI,MAAA;AAAA,QACzD,KAAA,EAAO,MAAM,KAAA,GAAQA,UAAA,CAAE,UAAU,KAAA,CAAM,KAAA,EAAO,IAAI,CAAA,GAAI,MAAA;AAAA,QACtD,cAAA,EAAgB,cAAA,CAAe,QAAA,IAAY,EAAC;AAAA,QAC5C,aAAA,EAAe,aAAA,CAAc,QAAA,IAAY;AAAC,OAC3C,CAAA;AACD,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,MAAM,cAAA,GAAiB,QAAQ,QAAA,CAAS,MAAA;AAAA,MAAO,CAAC,KAAA,KAC9CA,UAAA,CAAE,YAAA,CAAa,KAAK;AAAA,KACtB;AACA,IAAA,IAAI,OAAA,CAAQ,SAAS,IAAA,CAAK,CAAC,UAAUA,UAAA,CAAE,aAAA,CAAc,KAAK,CAAC,CAAA,EAAG;AAC5D,MAAA,OAAO,kDAAA;AAAA,IACT;AACA,IAAA,MAAM,WAAA,GAAc,QAAQ,QAAA,CAAS,MAAA;AAAA,MACnC,CAAC,KAAA,KACCA,UAAA,CAAE,wBAAA,CAAyB,KAAK,KAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU;AAAA,KACjF;AACA,IAAA,KAAA,MAAW,SAAS,WAAA,EAAa;AAC/B,MAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,KAAA,CAAM,UAA0B,CAAA;AAC9E,MAAA,IAAI,WAAA,EAAa,OAAO,CAAA,mCAAA,EAAsC,WAAW,CAAA,CAAA;AAAA,IAC3E;AACA,IAAA,IAAI,cAAA,CAAe,MAAA,GAAS,CAAA,IAAK,WAAA,CAAY,SAAS,CAAA,EAAG;AACvD,MAAA,OAAO,4EAAA;AAAA,IACT;AACA,IAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,IAAK,WAAA,CAAY,SAAS,CAAA,EAAG;AACzD,MAAA,MAAM,QAAwB,EAAC;AAC/B,MAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,QAAA,IAAIA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAA,EAAG;AACtB,UAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA;AACrC,UAAA,IAAI,MAAM,KAAA,CAAM,IAAA,CAAKA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,QAC5C,CAAA,MAAA,IAAWA,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AACzF,UAAA,KAAA,CAAM,IAAA,CAAK,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,QAC9C;AAAA,MACF;AACA,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,KAAA,EAAOA,UAAA,CAAE,eAAA,CAAgB,KAAK;AAAA,OAC/B,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,YAAA,GAAe,CAAA;AACnB,IAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,MAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AAC5B,MAAA,MAAMO,UAAS,KAAA,CAAM,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,YAAY,CAAC,CAAA;AACnD,MAAA,IAAIA,SAAQ,OAAOA,OAAAA;AACnB,MAAA,YAAA,IAAgB,CAAA;AAAA,IAClB;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,GAAA,EAAK,EAAE,CAAA;AAC5B,EAAA,OAAO,SAAS,EAAE,MAAA,KAAW,EAAE,QAAA,EAAU,QAAQ,YAAA,EAAa;AAChE;AAMA,SAAS,oBAAA,CACP,OACA,aAAA,EACA,WAAA,EACA,WACA,oBAAA,GAAuB,KAAA,EACvB,yBAAyB,KAAA,EACO;AAChC,EAAA,IAAI,UAAA;AACJ,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,YAAA;AACJ,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,MAAA;AAEJ,EAAA,IACEP,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAChC,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,IACxC,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EAC1B;AACA,IAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,CAAM,UAAA,EAAY,eAAe,WAAW,CAAA;AAC1E,IAAA,IAAI,MAAA,CAAO,QAAQ,OAAO,MAAA;AAC1B,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AAC7C,IAAA,IAAI,CAACA,WAAE,yBAAA,CAA0B,QAAQ,KAAK,CAACA,UAAA,CAAE,qBAAqB,QAAQ,CAAA;AAC5E,MAAA,OAAO,MAAA;AACT,IAAA,MAAM,QAAA,GAAW,mBAAmB,QAAQ,CAAA;AAC5C,IAAA,IAAI,CAAC,QAAA,IAAY,CAACA,WAAE,YAAA,CAAa,QAAQ,GAAG,OAAO,MAAA;AACnD,IAAA,MAAM,GAAA,GAAM,iBAAiB,QAAQ,CAAA;AACrC,IAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AACjB,IAAA,UAAA,GAAc,KAAA,CAAM,WAAW,MAAA,CAA8B,MAAA;AAC7D,IAAA,WAAA,GAAcA,UAAA,CAAE,uBAAA;AAAA,MACd,QAAA,CAAS,OAAO,GAAA,CAAI,CAAC,cAAcA,UAAA,CAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAC,CAAA;AAAA,MAC/D,gBAAgB,GAAG;AAAA,KACrB;AACA,IAAA,cAAA,GAAiB,QAAA;AACjB,IAAA,GAAA,GAAM,QAAA;AACN,IAAA,YAAA,GAAe,MAAA,CAAO,gBAAgB,EAAC;AACvC,IAAA,MAAA,GAAS,KAAA;AACT,IAAA,MAAA,GAAS,KAAA,CAAM,UAAA;AAAA,EACjB,CAAA,MAAA,IAAWA,WAAE,YAAA,CAAa,KAAK,KAAK,mBAAA,CAAoB,KAAA,EAAO,SAAS,CAAA,EAAG;AACzE,IAAA,MAAM,MAAA,GAAS,iBAAA,CAAkB,KAAA,EAAO,aAAA,EAAe,WAAW,CAAA;AAClE,IAAA,IAAI,MAAA,CAAO,QAAQ,OAAO,MAAA;AAC1B,IAAA,MAAM,IAAA,GAAO,uBAAA,CAAwB,KAAA,EAAO,MAAM,CAAA;AAClD,IAAA,MAAM,EAAA,GAAK,uBAAA,CAAwB,KAAA,EAAO,IAAI,CAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,qBAAA,CAAsB,KAAK,CAAA,CAAE,CAAC,CAAA;AAClD,IAAA,IACE,CAAC,IAAA,IACA,CAACA,UAAA,CAAE,0BAA0B,EAAE,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,EAAE,CAAA,IAC/D,CAACA,WAAE,wBAAA,CAAyB,WAAW,CAAA,IACvCA,UAAA,CAAE,oBAAA,CAAqB,WAAA,CAAY,UAAU,CAAA,IAC5C,CAACA,UAAA,CAAE,yBAAA,CAA0B,WAAA,CAAY,UAAU,KAClD,CAACA,UAAA,CAAE,oBAAA,CAAqB,WAAA,CAAY,UAAU,CAAA,EAChD;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,MAAM,QAAA,GAAW,kBAAA,CAAmB,WAAA,CAAY,UAAU,CAAA;AAC1D,IAAA,IAAI,CAAC,QAAA,IAAY,CAACA,WAAE,YAAA,CAAa,QAAQ,GAAG,OAAO,MAAA;AACnD,IAAA,UAAA,GAAa,IAAA;AACb,IAAA,WAAA,GAAc,EAAA;AACd,IAAA,cAAA,GAAiB,WAAA,CAAY,UAAA;AAC7B,IAAA,GAAA,GAAM,QAAA;AACN,IAAA,YAAA,GAAe,MAAA,CAAO,gBAAgB,EAAC;AACvC,IAAA,MAAA,GAAS,MAAA;AACT,IAAA,MAAA,GAAS,KAAA;AAAA,EACX,CAAA,MAAO;AACL,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,mBAAA;AAAA,IAClB,GAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAI,GAAA,CAAI,CAAC,GAAG,aAAA,CAAc,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,IACpE,yBAAyB,aAAA,GAAgB;AAAA,GAC3C;AACA,EAAA,IAAI,WAAA,CAAY,MAAA,IAAU,CAAC,oBAAA,EAAsB,OAAO,MAAA;AACxD,EAAA,MAAM,aAAA,GAAgB,mBAAmB,WAAW,CAAA;AACpD,EAAA,MAAM,wBAAwB,IAAI,GAAA,CAAI,wBAAA,CAAyB,UAAA,EAAY,aAAa,CAAC,CAAA;AACzF,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,aAAA,EAAe,aAAa,CAAA,EAAG;AAC/E,MAAA,qBAAA,CAAsB,IAAI,UAAU,CAAA;AAAA,IACtC;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,UAAA;AAAA,IACA,oBAAA,EAAsBA,UAAA,CAAE,YAAA,CAAa,UAAU,CAAA,GAC3C,cAAc,GAAA,CAAI,UAAA,CAAW,IAAI,CAAA,EAAG,KAAA,GACpC,MAAA;AAAA,IACJ,qBAAA,EAAuB,CAAC,GAAG,qBAAqB,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAAA,IACpF,WAAA;AAAA,IACA,cAAA;AAAA,IACA,GAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAW,WAAA,CAAY,QAAA,IAAY,EAAC,EAAG,GAAA,CAAI,CAAC,OAAA,MAAa;AAAA,MACvD,GAAG,OAAA;AAAA,MACH,YAAA,EAAc,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,aAAa;AAAA,KACrE,CAAE,CAAA;AAAA,IACF,MAAA,EAAQ,WAAA,CAAY,MAAA,IAAU,EAAC;AAAA,IAC/B,YAAA,EAAc,WAAA,CAAY,YAAA,IAAgB,EAAC;AAAA,IAC3C,WAAW,WAAA,CAAY,MAAA;AAAA,IACvB;AAAA,GACF;AACF;AAEA,SAAS,yBAAA,CACP,SAAA,EACA,aAAA,EACA,WAAA,EACA,SAAA,EAC4B;AAC5B,EAAA,IACE,SAAA,CAAU,eAAe,UAAA,CAAW,IAAA;AAAA,IAClC,CAAC,cACCA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,IAC/BA,UAAA,CAAE,eAAe,SAAS,CAAA,IACzBA,WAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,KAC/B,SAAA,CAAU,KAAK,IAAA,KAAS,KAAA,IAAS,SAAA,CAAU,IAAA,CAAK,IAAA,KAAS,yBAAA;AAAA,GAChE,EACA;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,KAAA,MAAW,SAAA,IAAa,SAAA,CAAU,cAAA,CAAe,UAAA,EAAY;AAC3D,IAAA,IACEA,UAAA,CAAE,cAAA,CAAe,SAAS,CAAA,IAC1BA,WAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,IAChCA,WAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC1C,CAACA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,IAClD,CAAC,UAAA,CAAW,IAAA,CAAK,UAAU,IAAA,CAAK,IAAI,CAAA,IACpC,wBAAA,CAAyB,UAAU,KAAA,CAAM,UAAA,EAAY,aAAa,CAAA,CAAE,SAAS,CAAA,EAC7E;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,sBAAsB,SAAS,CAAA;AAChD,EAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAClC,EAAA,MAAM,KAAA,GAAQ,oBAAA;AAAA,IACZ,SAAS,CAAC,CAAA;AAAA,IACV,aAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,SAAA,EAAW,OAAO,KAAA;AACtC,EAAA,MAAM,uBAAuB,CAAC,OAAA,KAC5B,oCAAA,CAAqC,OAAA,CAAQ,OAAO,aAAa,CAAA;AACnE,EAAA,MAAM,sBAAsB,CAAC,OAAA,KAC3B,mCAAA,CAAoC,OAAA,CAAQ,OAAO,aAAa,CAAA;AAClE,EAAA,IACE,KAAA,CAAM,aAAa,MAAA,GAAS,CAAA,IAC3B,MAAM,MAAA,CAAO,MAAA,GAAS,CAAA,IACrB,CAAC,yBAAA,CAA0B;AAAA,IACzB,cAAc,KAAA,CAAM,YAAA;AAAA,IACpB,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,MAAA,EAAQ;AAAA,GACT,CAAA,EACH;AACA,IAAA,OAAO,MAAM,QAAA,CAAS,IAAA;AAAA,MACpB,CAAC,OAAA,KAAY,oBAAA,CAAqB,OAAO,CAAA,IAAK,oBAAoB,OAAO;AAAA,KAC3E,GACI;AAAA,MACE,GAAG,KAAA;AAAA,MACH,SAAA,EACE;AAAA,KACJ,GACA,KAAA;AAAA,EACN;AACA,EAAA,MAAM,qBAAA,GAAwB,IAAI,GAAA,CAAI,KAAA,CAAM,qBAAqB,CAAA;AACjE,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,MAAa;AAAA,IAChD,GAAG,OAAA;AAAA,IACH,cAAA,EAAgB,mBAAA;AAAA,MACd,OAAA;AAAA,MACA,KAAA,CAAM,WAAA;AAAA,MACN,KAAA,CAAM,cAAA;AAAA,MACN,aAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,gBAAA,EAAkB,qBAAA;AAAA,MAChB,OAAA;AAAA,MACA,KAAA,CAAM,WAAA;AAAA,MACN,KAAA,CAAM,cAAA;AAAA,MACN,aAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,eAAA,EAAiB,oBAAA;AAAA,MACf,OAAA;AAAA,MACA,KAAA,CAAM,WAAA;AAAA,MACN,KAAA,CAAM,cAAA;AAAA,MACN,aAAA;AAAA,MACA;AAAA;AACF,GACF,CAAE,CAAA;AACF,EAAA,IACE,QAAA,CAAS,IAAA;AAAA,IACP,CAAC,OAAA,EAAS,KAAA,KAAU,oBAAA,CAAqB,KAAA,CAAM,SAAS,KAAK,CAAC,CAAA,IAAK,CAAC,OAAA,CAAQ;AAAA,GAC9E,EACA;AACA,IAAA,OAAO;AAAA,MACL,GAAG,KAAA;AAAA,MACH,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AACA,EAAA,IACE,QAAA,CAAS,IAAA;AAAA,IACP,CAAC,OAAA,EAAS,KAAA,KAAU,mBAAA,CAAoB,KAAA,CAAM,SAAS,KAAK,CAAC,CAAA,IAAK,CAAC,OAAA,CAAQ;AAAA,GAC7E,EACA;AACA,IAAA,OAAO;AAAA,MACL,GAAG,KAAA;AAAA,MACH,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH;AAAA,GACF;AACF;AAEA,SAAS,4BACP,SAAA,EACA,aAAA,EACA,WAAA,EACA,SAAA,EACA,mBAAmB,KAAA,EAQP;AACZ,EAAA,IACE,SAAA,CAAU,eAAe,UAAA,CAAW,IAAA;AAAA,IAClC,CAAC,cACCA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,IAC/BA,UAAA,CAAE,eAAe,SAAS,CAAA,IACzBA,WAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,KAC/B,SAAA,CAAU,KAAK,IAAA,KAAS,KAAA,IAAS,SAAA,CAAU,IAAA,CAAK,IAAA,KAAS,yBAAA;AAAA,GAChE,EACA;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,sBAAsB,SAAS,CAAA;AAChD,EAAA,IAAI,QAAA,CAAS,MAAA,IAAU,gBAAA,GAAmB,CAAA,GAAI,IAAI,OAAO,MAAA;AACzD,EAAA,MAAM,SAA2B,EAAC;AAClC,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,MAAM,iBAA8C,EAAC;AACrD,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,KAAA,GAAQ,oBAAA,CAAqB,KAAA,EAAO,aAAA,EAAe,aAAa,SAAS,CAAA;AAC/E,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAI,KAAA,CAAM,OAAO,MAAA,GAAS,CAAA,IAAK,MAAM,YAAA,CAAa,MAAA,GAAS,GAAG,OAAO,MAAA;AACrE,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,MAAA,EAAQ,YAAA;AAAA,QACR,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,aAAa,KAAA,CAAM,WAAA;AAAA,QACnB,gBAAgB,KAAA,CAAM,cAAA;AAAA,QACtB,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,QAAQ,KAAA,CAAM;AAAA,OACf,CAAA;AACD,MAAA,KAAA,MAAW,UAAA,IAAc,KAAA,CAAM,YAAA,EAAc,YAAA,CAAa,IAAI,UAAU,CAAA;AACxE,MAAA,YAAA,GAAe,CAAA;AACf,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAACA,WAAE,YAAA,CAAa,KAAK,KAAK,CAAC,aAAA,CAAc,KAAK,CAAA,EAAG,OAAO,MAAA;AAC5D,IAAA,MAAM,QAAA,GAAW,0BAAA,CAA2B,KAAA,EAAO,WAAA,EAAa,MAAM,aAAa,CAAA;AACnF,IAAA,IAAI,QAAA,CAAS,QAAQ,OAAO,MAAA;AAC5B,IAAA,KAAA,MAAW,OAAA,IAAW,QAAA,CAAS,QAAA,IAAY,EAAC,EAAG;AAC7C,MAAA,cAAA,CAAe,IAAA,CAAK;AAAA,QAClB,GAAG,OAAA;AAAA,QACH,SAAS,MAAA,CAAO,MAAA;AAAA,QAChB,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,aAAa,CAAA,EAAG;AAC/E,QAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,MAC7B;AAAA,IACF;AACA,IAAA,YAAA,IAAgB,CAAA;AAAA,EAClB;AACA,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAChC,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAA,EAAU,YAAA;AAAA,IACV,YAAA,EAAc,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAAA,IAClE;AAAA,GACF;AACF;AAEA,SAAS,0BAAA,CACP,MAAA,EACA,WAAA,EACA,iBAAA,GAAoB,OACpB,YAAA,EAC0D;AAC1D,EAAA,MAAM,WAAqC,EAAC;AAC5C,EAAA,MAAM,kBAAA,GAAqB,CAAC,UAAA,KAC1B,CAAC,gBAAgB,wBAAA,CAAyB,UAAA,EAAY,YAAY,CAAA,CAAE,MAAA,GAAS,CAAA;AAC/E,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,EAAuB,IAAA,KAAuC;AAC3E,IAAA,MAAM,GAAA,GAAM,QAAQ,cAAA,CAAe,IAAA;AACnC,IAAA,IAAI,CAACA,UAAA,CAAE,eAAA,CAAgB,GAAG,CAAA,IAAK,CAAC,QAAA,CAAS,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AACvD,MAAA,OAAO,wDAAA;AAAA,IACT;AACA,IAAA,IAAI,GAAA,CAAI,IAAA,KAAS,KAAA,EAAO,OAAO,oDAAA;AAE/B,IAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,MAAA,IAAIA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,EAAG;AACrC,QAAA,IAAI,YAAA,IAAgB,CAAC,kBAAA,CAAmB,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC7D,QAAA,OAAO,kEAAA;AAAA,MACT;AACA,MAAA,MAAM,IAAA,GAAO,iBAAiB,SAAS,CAAA;AACvC,MAAA,IAAI,CAAC,MAAM,OAAO,sEAAA;AAClB,MAAA,IAAI,IAAA,KAAS,KAAA,IAAS,IAAA,KAAS,yBAAA,IAA6B,SAAS,KAAA,EAAO;AAC1E,QAAA,IACE,iBACC,CAACA,UAAA,CAAE,yBAAyB,SAAA,CAAU,KAAK,KAC1CA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,IACjD,CAAC,mBAAmB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,CAAA,EAChD;AACA,UAAA;AAAA,QACF;AACA,QAAA,OAAO,8BAA8B,IAAI,CAAA,yBAAA,CAAA;AAAA,MAC3C;AACA,MAAA,IAAI,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EAAG;AACzB,QAAA,IAAI,iBAAA,EAAmB;AACvB,QAAA,OAAO,2DAAA;AAAA,MACT;AACA,MAAA,IACE,CAACA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC3CA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EACjD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,GAAa,UAAU,KAAA,CAAM,UAAA;AACnC,MAAA,IAAI,CAAC,kBAAA,CAAmB,UAAU,CAAA,EAAG;AACrC,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,IAAI,CAACA,UAAA,CAAE,kBAAA,CAAmB,UAAU,CAAA,EAAG;AACrC,UAAA,OAAO,sEAAA;AAAA,QACT;AACA,QAAA,KAAA,MAAW,QAAA,IAAY,WAAW,UAAA,EAAY;AAC5C,UAAA,IACE,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAC5B,QAAA,CAAS,QAAA,IACT,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAC9B;AACA,YAAA,OAAO,2FAAA;AAAA,UACT;AACA,UAAA,MAAM,eAAeA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,GAAG,IAC5C,QAAA,CAAS,GAAA,CAAI,IAAA,GACbA,UAAA,CAAE,gBAAgB,QAAA,CAAS,GAAG,CAAA,GAC5B,QAAA,CAAS,IAAI,KAAA,GACb,MAAA;AACN,UAAA,IAAI,CAAC,YAAA,IAAiB,YAAA,CAAa,QAAA,CAAS,GAAG,KAAK,CAAC,YAAA,CAAa,UAAA,CAAW,IAAI,CAAA,EAAI;AACnF,YAAA,OAAO,oFAAA;AAAA,UACT;AACA,UAAA,IAAI,CAAC,kBAAA,CAAmB,QAAA,CAAS,KAAK,CAAA,EAAG;AACzC,UAAA,MAAMM,YAAAA,GAAc,yBAAA,CAA0B,QAAA,CAAS,KAAA,EAAO,WAAW,CAAA;AACzE,UAAA,IAAIA,YAAAA,EAAa;AACf,YAAA,OAAO,CAAA,iCAAA,EAAoC,YAAY,CAAA,YAAA,EAAeA,YAAW,CAAA,CAAA;AAAA,UACnF;AACA,UAAA,QAAA,CAAS,IAAA,CAAK;AAAA,YACZ,IAAA,EAAM,OAAA;AAAA,YACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,YACd,IAAA,EAAM,YAAA;AAAA,YACN,KAAA,EAAO,eAAA,CAAgB,QAAA,CAAS,KAAK;AAAA,WACtC,CAAA;AAAA,QACH;AACA,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,SAAS,UAAA,EAAY;AACvB,QAAA,OAAO,iEAAA;AAAA,MACT;AACA,MAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,UAAA,EAAY,WAAW,CAAA;AACrE,MAAA,IAAI,WAAA,EAAa,OAAO,CAAA,2BAAA,EAA8B,IAAI,eAAe,WAAW,CAAA,CAAA;AACpF,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,IAAA;AAAA,QACA,KAAA,EAAO,gBAAgB,UAAU;AAAA,OAClC,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,cAAA,GAAiB,QAAQ,QAAA,CAAS,MAAA;AAAA,MAAO,CAAC,KAAA,KAC9CN,UAAA,CAAE,YAAA,CAAa,KAAK;AAAA,KACtB;AACA,IAAA,IAAI,OAAA,CAAQ,SAAS,IAAA,CAAK,CAAC,UAAUA,UAAA,CAAE,aAAA,CAAc,KAAK,CAAC,CAAA,EAAG;AAC5D,MAAA,OAAO,0DAAA;AAAA,IACT;AACA,IAAA,MAAM,WAAA,GAAc,QAAQ,QAAA,CAAS,MAAA;AAAA,MACnC,CAAC,KAAA,KACCA,UAAA,CAAE,wBAAA,CAAyB,KAAK,KAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU;AAAA,KACjF;AACA,IAAA,MAAM,gBAAA,GAAmB,YAAA,GACrB,WAAA,CAAY,MAAA,CAAO,CAAC,UAAU,kBAAA,CAAmB,KAAA,CAAM,UAA0B,CAAC,CAAA,GAClF,WAAA;AACJ,IAAA,IAAI,gBAAA,CAAiB,SAAS,CAAA,EAAG;AAC/B,MAAA,KAAA,MAAW,SAAS,WAAA,EAAa;AAC/B,QAAA,MAAM,WAAA,GAAc,yBAAA;AAAA,UAClB,KAAA,CAAM,UAAA;AAAA,UACN;AAAA,SACF;AACA,QAAA,IAAI,WAAA,EAAa,OAAO,CAAA,2CAAA,EAA8C,WAAW,CAAA,CAAA;AAAA,MACnF;AAAA,IACF;AACA,IAAA,IAAI,cAAA,CAAe,MAAA,GAAS,CAAA,IAAK,gBAAA,CAAiB,SAAS,CAAA,EAAG;AAC5D,MAAA,OAAO,oFAAA;AAAA,IACT;AACA,IAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,IAAK,gBAAA,CAAiB,SAAS,CAAA,EAAG;AAC9D,MAAA,MAAM,QAAwB,EAAC;AAC/B,MAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,QAAA,IAAIA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAA,EAAG;AACtB,UAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA;AACrC,UAAA,IAAI,MAAM,KAAA,CAAM,IAAA,CAAKA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,QAC5C,CAAA,MAAA,IAAWA,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AACzF,UAAA,KAAA,CAAM,IAAA,CAAK,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,QAC9C;AAAA,MACF;AACA,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,KAAA,EAAOA,UAAA,CAAE,eAAA,CAAgB,KAAK;AAAA,OAC/B,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,YAAA,GAAe,CAAA;AACnB,IAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,MAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AAC5B,MAAA,MAAMO,UAAS,KAAA,CAAM,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,YAAY,CAAC,CAAA;AACnD,MAAA,IAAIA,SAAQ,OAAOA,OAAAA;AACnB,MAAA,YAAA,IAAgB,CAAA;AAAA,IAClB;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,MAAA,EAAQ,EAAE,CAAA;AAC/B,EAAA,OAAO,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAE,QAAA,EAAS;AAC1C;AASA,SAAS,yBACP,MAAA,EACA,aAAA,EACA,WAAA,EACA,SAAA,EACA,QACA,UAAA,EAC2B;AAC3B,EAAA,MAAM,WAAqC,EAAC;AAC5C,EAAA,MAAM,QAAmC,EAAC;AAC1C,EAAA,MAAM,MAAA,uBAAa,GAAA,EAA2C;AAE9D,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,EAAuB,IAAA,EAAgB,KAAA,KAAsC;AAC1F,IAAA,MAAM,GAAA,GAAM,QAAQ,cAAA,CAAe,IAAA;AACnC,IAAA,IAAI,CAACP,UAAA,CAAE,eAAA,CAAgB,GAAG,CAAA,IAAK,CAAC,QAAA,CAAS,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AACvD,MAAA,OAAO,4DAAA;AAAA,IACT;AACA,IAAA,IAAI,GAAA,CAAI,IAAA,KAAS,KAAA,EAAO,OAAO,wDAAA;AAE/B,IAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,MAAA,IAAIA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,EAAG;AACrC,QAAA,OAAO,sEAAA;AAAA,MACT;AACA,MAAA,MAAM,IAAA,GAAO,iBAAiB,SAAS,CAAA;AACvC,MAAA,IAAI,CAAC,MAAM,OAAO,sEAAA;AAClB,MAAA,IAAI,IAAA,KAAS,KAAA,IAAS,IAAA,KAAS,yBAAA,IAA6B,SAAS,KAAA,EAAO;AAC1E,QAAA,OAAO,kCAAkC,IAAI,CAAA,yBAAA,CAAA;AAAA,MAC/C;AACA,MAAA,IAAI,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EAAG;AACzB,QAAA,OAAO,+DAAA;AAAA,MACT;AACA,MAAA,IACE,CAACA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC3CA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EACjD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,GAAa,UAAU,KAAA,CAAM,UAAA;AACnC,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,IAAI,CAACA,UAAA,CAAE,kBAAA,CAAmB,UAAU,CAAA,EAAG;AACrC,UAAA,OAAO,oEAAA;AAAA,QACT;AACA,QAAA,KAAA,MAAW,QAAA,IAAY,WAAW,UAAA,EAAY;AAC5C,UAAA,IACE,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAC5B,QAAA,CAAS,QAAA,IACT,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAC9B;AACA,YAAA,OAAO,yFAAA;AAAA,UACT;AACA,UAAA,MAAM,eAAeA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,GAAG,IAC5C,QAAA,CAAS,GAAA,CAAI,IAAA,GACbA,UAAA,CAAE,gBAAgB,QAAA,CAAS,GAAG,CAAA,GAC5B,QAAA,CAAS,IAAI,KAAA,GACb,MAAA;AACN,UAAA,IAAI,CAAC,YAAA,IAAiB,YAAA,CAAa,QAAA,CAAS,GAAG,KAAK,CAAC,YAAA,CAAa,UAAA,CAAW,IAAI,CAAA,EAAI;AACnF,YAAA,OAAO,kFAAA;AAAA,UACT;AACA,UAAA,MAAMM,YAAAA,GAAc,yBAAA,CAA0B,QAAA,CAAS,KAAA,EAAO,WAAW,CAAA;AACzE,UAAA,IAAIA,YAAAA,EAAa;AACf,YAAA,OAAO,CAAA,+BAAA,EAAkC,YAAY,CAAA,YAAA,EAAeA,YAAW,CAAA,CAAA;AAAA,UACjF;AACA,UAAA,QAAA,CAAS,IAAA,CAAK;AAAA,YACZ,IAAA,EAAM,OAAA;AAAA,YACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,YACd,IAAA,EAAM,YAAA;AAAA,YACN,KAAA,EAAO,eAAA,CAAgB,QAAA,CAAS,KAAK;AAAA,WACtC,CAAA;AAAA,QACH;AACA,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,SAAS,UAAA,EAAY;AACvB,QAAA,OAAO,+DAAA;AAAA,MACT;AACA,MAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,UAAA,EAAY,WAAW,CAAA;AACrE,MAAA,IAAI,WAAA,EAAa,OAAO,CAAA,yBAAA,EAA4B,IAAI,eAAe,WAAW,CAAA,CAAA;AAClF,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,IAAA;AAAA,QACA,KAAA,EAAO,gBAAgB,UAAU;AAAA,OAClC,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,QAAA,GAAW,sBAAsB,OAAO,CAAA;AAC9C,IAAA,MAAM,sBAAsB,QAAA,CAAS,IAAA;AAAA,MACnC,CAAC,KAAA,KACCN,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAChC,CAACA,UAAA,CAAE,oBAAA,CAAqB,MAAM,UAAU,CAAA,IACxC,qBAAA,CAAsB,KAAA,CAAM,UAAU,CAAA,KAAM;AAAA,KAChD;AACA,IAAA,MAAM,gBAAgB,QAAA,CAAS,IAAA;AAAA,MAC7B,CAAC,UACC,oBAAA,CAAqB,KAAA,EAAO,eAAe,WAAA,EAAa,SAAA,EAAW,IAAI,CAAA,KAAM;AAAA,KACjF;AACA,IAAA,IAAI,uBAAuB,aAAA,EAAe;AACxC,MAAA,MAAM,KAAK,UAAA,EAAW;AACtB,MAAA,MAAM,KAAA,GAAQ,2BAAA;AAAA,QACZ,OAAA;AAAA,QACA,aAAA;AAAA,QACA,WAAA;AAAA,QACA,SAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,KAAA,CAAM,IAAA,CAAK,GAAG,KAAA,CAAM,WAAW,CAAA;AAC/B,QAAA,KAAA,MAAW,CAAC,aAAA,EAAeQ,KAAI,CAAA,IAAK,MAAM,gBAAA,EAAkB;AAC1D,UAAA,MAAA,CAAO,GAAA,CAAI,eAAeA,KAAI,CAAA;AAAA,QAChC;AACA,QAAA,MAAM,IAAA,GAAkC;AAAA,UACtC,IAAA,EAAM,0BAAA;AAAA,UACN,EAAA;AAAA,UACA,MAAA,EAAQ,KAAA;AAAA,UACR,cAAc,KAAA,CAAM,YAAA;AAAA,UACpB,MAAA,EAAQ,OAAA;AAAA,UACR,QAAQ,KAAA,CAAM,MAAA;AAAA,UACd,UAAU,KAAA,CAAM,QAAA;AAAA,UAChB,gBAAgB,KAAA,CAAM;AAAA,SACxB;AACA,QAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,QAAA,MAAA,CAAO,GAAA,CAAI,SAAS,IAAI,CAAA;AACxB,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,MAAM,mBAAA,uBAA0B,GAAA,EAG9B;AACF,IAAA,IAAI,oBAAA,GAAuB,SAAS,MAAA,GAAS,CAAA;AAC7C,IAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,MAAA,IAAIR,WAAE,YAAA,CAAa,KAAK,CAAA,IAAK,aAAA,CAAc,KAAK,CAAA,EAAG;AACnD,MAAA,IAAIA,UAAA,CAAE,yBAAyB,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AAClF,QAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,KAAA,CAAM,UAAU,CAAA;AACpD,QAAA,IAAI,SAAS,CAAC,yBAAA,CAA0B,KAAA,CAAM,IAAA,EAAM,WAAW,CAAA,EAAG;AAChE,UAAA,mBAAA,CAAoB,GAAA,CAAI,KAAA,CAAM,UAAA,EAAY,KAAK,CAAA;AAC/C,UAAA;AAAA,QACF;AAAA,MACF;AACA,MAAA,oBAAA,GAAuB,KAAA;AACvB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,oBAAA,IAAwB,mBAAA,CAAoB,IAAA,GAAO,CAAA,EAAG;AACxD,MAAA,MAAM,KAAK,UAAA,EAAW;AACtB,MAAA,MAAM,SAAiC,EAAC;AACxC,MAAA,MAAM,iBAA8C,EAAC;AACrD,MAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,MAAA,IAAIS,aAAAA,GAAe,CAAA;AACnB,MAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,QAAA,IAAIT,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AACzB,UAAA,MAAM,MAAA,GAAS,wBAAA;AAAA,YACb,KAAA;AAAA,YACA,aAAA;AAAA,YACA,WAAA;AAAA,YACA,SAAA;AAAA,YACA,KAAA;AAAA,YACA;AAAA,WACF;AACA,UAAA,IAAI,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA,CAAO,MAAA;AACjC,UAAA,KAAA,CAAM,IAAA,CAAK,GAAG,MAAA,CAAO,KAAK,CAAA;AAC1B,UAAA,KAAA,MAAW,CAAC,eAAeQ,KAAI,CAAA,IAAK,OAAO,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,aAAA,EAAeA,KAAI,CAAA;AACjF,UAAA,KAAA,MAAW,OAAA,IAAW,OAAO,QAAA,EAAU;AACrC,YAAA,cAAA,CAAe,IAAA,CAAK;AAAA,cAClB,GAAG,OAAA;AAAA,cACH,SAAS,MAAA,CAAO,MAAA;AAAA,cAChB,OAAA,EAASC;AAAA,aACV,CAAA;AACD,YAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,aAAa,CAAA,EAAG;AAC/E,cAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,YAC7B;AAAA,UACF;AACA,UAAAA,aAAAA,IAAgB,CAAA;AAChB,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAACT,WAAE,wBAAA,CAAyB,KAAK,KAAKA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AAClF,UAAA,OAAO,2DAAA;AAAA,QACT;AACA,QAAA,MAAM,aAAa,KAAA,CAAM,UAAA;AACzB,QAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,GAAA,CAAI,UAAU,CAAA;AAChD,QAAA,MAAM,MAAA,GAAS,MAAM,MAAA,GACjB,wBAAA;AAAA,UACE,KAAA,CAAM,MAAA;AAAA,UACN,aAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA;AAAA,UACA,EAAA;AAAA,UACA;AAAA,SACF,GACA;AAAA,UACE,UAAU,EAAC;AAAA,UACX,OAAO,EAAC;AAAA,UACR,MAAA,sBAAY,GAAA;AAA2C,SACzD;AACJ,QAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,GAChB,wBAAA;AAAA,UACE,KAAA,CAAM,KAAA;AAAA,UACN,aAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA;AAAA,UACA,EAAA;AAAA,UACA;AAAA,SACF,GACA;AAAA,UACE,UAAU,EAAC;AAAA,UACX,OAAO,EAAC;AAAA,UACR,MAAA,sBAAY,GAAA;AAA2C,SACzD;AACJ,QAAA,IAAI,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA,CAAO,MAAA;AACjC,QAAA,IAAI,KAAA,CAAM,MAAA,EAAQ,OAAO,KAAA,CAAM,MAAA;AAC/B,QAAA,KAAA,CAAM,KAAK,GAAG,MAAA,CAAO,KAAA,EAAO,GAAG,MAAM,KAAK,CAAA;AAC1C,QAAA,KAAA,MAAW,CAAC,eAAeQ,KAAI,CAAA,IAAK,OAAO,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,aAAA,EAAeA,KAAI,CAAA;AACjF,QAAA,KAAA,MAAW,CAAC,eAAeA,KAAI,CAAA,IAAK,MAAM,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,aAAA,EAAeA,KAAI,CAAA;AAEhF,QAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,KAAA,CAAM,IAAA,EAAM,aAAa,CAAA,EAAG;AAC5E,UAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,QAC7B;AACA,QAAA,KAAA,MAAW,OAAA,IAAW,CAAC,GAAG,MAAA,CAAO,UAAU,GAAG,KAAA,CAAM,QAAQ,CAAA,EAAG;AAC7D,UAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,aAAa,CAAA,EAAG;AAC/E,YAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,UAC7B;AAAA,QACF;AACA,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,MAAA,EAAQC,aAAAA;AAAA,UACR,MAAA,EAAQ,UAAA;AAAA,UACR,IAAA,EAAM,eAAA,CAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,UAChC,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,QAAQ,KAAA,CAAM,MAAA;AAAA,UACd,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,gBAAgB,MAAA,CAAO,QAAA;AAAA,UACvB,eAAe,KAAA,CAAM;AAAA,SACtB,CAAA;AACD,QAAAA,aAAAA,GAAe,CAAA;AAAA,MACjB;AACA,MAAA,MAAM,IAAA,GAAwC;AAAA,QAC5C,IAAA,EAAM,gCAAA;AAAA,QACN,EAAA;AAAA,QACA,MAAA,EAAQ,KAAA;AAAA,QACR,YAAA,EAAc,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAAA,QAClE,MAAA,EAAQ,OAAA;AAAA,QACR,MAAA;AAAA,QACA,QAAA,EAAUA,aAAAA;AAAA,QACV;AAAA,OACF;AACA,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,MAAA,MAAA,CAAO,GAAA,CAAI,SAAS,IAAI,CAAA;AACxB,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,MAAM,YAAkE,EAAC;AACzE,IAAA,IAAI,cAAA,GAAiB,SAAS,MAAA,GAAS,CAAA;AACvC,IAAA,IAAI,YAAA,GAAe,CAAA;AACnB,IAAA,MAAM,iBAID,EAAC;AACN,IAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,MAAA,MAAM,QAAQ,oBAAA,CAAqB,KAAA,EAAO,aAAA,EAAe,WAAA,EAAa,WAAW,IAAI,CAAA;AACrF,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,SAAA,CAAU,IAAA,CAAK,EAAE,MAAA,EAAQ,YAAA,EAAc,OAAO,CAAA;AAC9C,QAAA,YAAA,GAAe,CAAA;AAAA,MACjB,WAAWT,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,IAAK,aAAA,CAAc,KAAK,CAAA,EAAG;AACxD,QAAA,cAAA,CAAe,IAAA,CAAK;AAAA,UAClB,OAAA,EAAS,KAAA;AAAA,UACT,SAAS,SAAA,CAAU,MAAA;AAAA,UACnB,OAAA,EAAS;AAAA,SACV,CAAA;AACD,QAAA,YAAA,IAAgB,CAAA;AAAA,MAClB,CAAA,MAAO;AACL,QAAA,cAAA,GAAiB,KAAA;AACjB,QAAA;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,cAAA,IAAkB,SAAA,CAAU,MAAA,GAAS,CAAA,EAAG;AAC1C,MAAA,MAAM,KAAK,UAAA,EAAW;AACtB,MAAA,MAAM,cAAgC,EAAC;AACvC,MAAA,MAAM,iBAA8C,EAAC;AACrD,MAAA,MAAM,iBAAA,uBAAwB,GAAA,EAAY;AAC1C,MAAA,KAAA,MAAW,EAAE,MAAA,EAAQ,KAAA,EAAM,IAAK,SAAA,EAAW;AACzC,QAAA,IAAI,KAAA,CAAM,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC3B,UAAA,OAAO,2DAAA;AAAA,QACT;AACA,QAAA,MAAM,GAAA,GAAMA,UAAA,CAAE,SAAA,CAAU,KAAA,CAAM,KAAK,IAAI,CAAA;AACvC,QAAA,GAAA,CAAI,cAAA,CAAe,UAAA,GAAa,GAAA,CAAI,cAAA,CAAe,UAAA,CAAW,MAAA;AAAA,UAC5D,CAAC,cAAc,CAACA,UAAA,CAAE,eAAe,SAAS,CAAA,IAAK,gBAAA,CAAiB,SAAS,CAAA,KAAM;AAAA,SACjF;AACA,QAAA,MAAM,WAAA,GAAc,wBAAA;AAAA,UAClB,GAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA;AAAA,UACA,EAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAI,WAAA,CAAY,MAAA,EAAQ,OAAO,WAAA,CAAY,MAAA;AAC3C,QAAA,KAAA,CAAM,IAAA,CAAK,GAAG,WAAA,CAAY,KAAK,CAAA;AAC/B,QAAA,KAAA,MAAW,CAAC,aAAA,EAAe,UAAU,CAAA,IAAK,YAAY,MAAA,EAAQ;AAC5D,UAAA,MAAA,CAAO,GAAA,CAAI,eAAe,UAAU,CAAA;AAAA,QACtC;AACA,QAAA,WAAA,CAAY,IAAA,CAAK;AAAA,UACf,MAAA;AAAA,UACA,QAAQ,KAAA,CAAM,MAAA;AAAA,UACd,YAAY,KAAA,CAAM,UAAA;AAAA,UAClB,aAAa,KAAA,CAAM,WAAA;AAAA,UACnB,gBAAgB,KAAA,CAAM,cAAA;AAAA,UACtB,GAAA;AAAA,UACA,UAAU,WAAA,CAAY,QAAA;AAAA,UACtB,QAAQ,KAAA,CAAM;AAAA,SACf,CAAA;AACD,QAAA,KAAA,MAAW,UAAA,IAAc,KAAA,CAAM,YAAA,EAAc,iBAAA,CAAkB,IAAI,UAAU,CAAA;AAAA,MAC/E;AACA,MAAA,KAAA,MAAW,EAAE,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,OAAA,MAAa,cAAA,EAAgB;AACjE,QAAA,MAAM,MAAA,GAAS,wBAAA;AAAA,UACb,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAI,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA,CAAO,MAAA;AACjC,QAAA,KAAA,CAAM,IAAA,CAAK,GAAG,MAAA,CAAO,KAAK,CAAA;AAC1B,QAAA,KAAA,MAAW,CAAC,eAAeQ,KAAI,CAAA,IAAK,OAAO,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,aAAA,EAAeA,KAAI,CAAA;AACjF,QAAA,KAAA,MAAW,OAAA,IAAW,OAAO,QAAA,EAAU;AACrC,UAAA,cAAA,CAAe,KAAK,EAAE,GAAG,OAAA,EAAS,OAAA,EAAS,SAAS,CAAA;AACpD,UAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,aAAa,CAAA,EAAG;AAC/E,YAAA,iBAAA,CAAkB,IAAI,UAAU,CAAA;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AACA,MAAA,MAAM,IAAA,GAAkC;AAAA,QACtC,IAAA,EAAM,0BAAA;AAAA,QACN,EAAA;AAAA,QACA,MAAA,EAAQ,KAAA;AAAA,QACR,YAAA,EAAc,CAAC,GAAG,iBAAiB,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAAA,QACvE,MAAA,EAAQ,OAAA;AAAA,QACR,MAAA,EAAQ,WAAA;AAAA,QACR,QAAA,EAAU,YAAA;AAAA,QACV;AAAA,OACF;AACA,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,MAAA,MAAA,CAAO,GAAA,CAAI,SAAS,IAAI,CAAA;AACxB,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,CAAQ,SAAS,IAAA,CAAK,CAAC,UAAUR,UAAA,CAAE,aAAA,CAAc,KAAK,CAAC,CAAA,EAAG;AAC5D,MAAA,OAAO,8DAAA;AAAA,IACT;AACA,IAAA,MAAM,cAAA,GAAiB,QAAQ,QAAA,CAAS,MAAA;AAAA,MAAO,CAAC,KAAA,KAC9CA,UAAA,CAAE,YAAA,CAAa,KAAK;AAAA,KACtB;AACA,IAAA,MAAM,WAAA,GAAc,QAAQ,QAAA,CAAS,MAAA;AAAA,MACnC,CAAC,KAAA,KACCA,UAAA,CAAE,wBAAA,CAAyB,KAAK,KAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU;AAAA,KACjF;AACA,IAAA,KAAA,MAAW,SAAS,WAAA,EAAa;AAC/B,MAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,KAAA,CAAM,UAAA,EAA4B,WAAW,CAAA;AAC3F,MAAA,IAAI,WAAA,EAAa,OAAO,CAAA,yCAAA,EAA4C,WAAW,CAAA,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,cAAA,CAAe,MAAA,GAAS,CAAA,IAAK,WAAA,CAAY,SAAS,CAAA,EAAG;AACvD,MAAA,OAAO,oFAAA;AAAA,IACT;AACA,IAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,IAAK,WAAA,CAAY,SAAS,CAAA,EAAG;AACzD,MAAA,MAAM,QAAwB,EAAC;AAC/B,MAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,QAAA,IAAIA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAA,EAAG;AACtB,UAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA;AACrC,UAAA,IAAI,MAAM,KAAA,CAAM,IAAA,CAAKA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,QAC5C,CAAA,MAAA,IAAWA,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AACzF,UAAA,KAAA,CAAM,IAAA,CAAK,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,QAC9C;AAAA,MACF;AACA,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,KAAA,EAAOA,UAAA,CAAE,eAAA,CAAgB,KAAK;AAAA,OAC/B,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,YAAA,GAAe,CAAA;AACnB,IAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,MAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AAC5B,MAAA,MAAMO,OAAAA,GAAS,MAAM,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,YAAY,GAAG,KAAK,CAAA;AAC1D,MAAA,IAAIA,SAAQ,OAAOA,OAAAA;AACnB,MAAA,YAAA,IAAgB,CAAA;AAAA,IAClB;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,MAAA,EAAQ,IAAI,MAAM,CAAA;AACvC,EAAA,OAAO,EAAE,QAAA,EAAU,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAO;AAC3C;AAEA,SAAS,uCACP,KAAA,EACA,aAAA,EACA,WAAA,EACA,SAAA,EACA,QACA,UAAA,EAQY;AACZ,EAAA,IAAI,KAAA,CAAM,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,OAAO,MAAA;AAEpC,EAAA,MAAM,GAAA,GAAMP,UAAA,CAAE,SAAA,CAAU,KAAA,CAAM,KAAK,IAAI,CAAA;AACvC,EAAA,GAAA,CAAI,cAAA,CAAe,UAAA,GAAa,GAAA,CAAI,cAAA,CAAe,UAAA,CAAW,MAAA;AAAA,IAC5D,CAAC,cAAc,CAACA,UAAA,CAAE,eAAe,SAAS,CAAA,IAAK,gBAAA,CAAiB,SAAS,CAAA,KAAM;AAAA,GACjF;AACA,EAAA,MAAM,QAAA,GAAW,wBAAA;AAAA,IACf,GAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,QAAA,CAAS,MAAA,IAAU,QAAA,CAAS,KAAA,CAAM,WAAW,CAAA,EAAG;AAClD,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO;AAAA,IACL,GAAA;AAAA,IACA,UAAU,QAAA,CAAS,QAAA;AAAA,IACnB,kBAAkB,QAAA,CAAS,MAAA;AAAA,IAC3B,aAAa,QAAA,CAAS;AAAA,GACxB;AACF;AAEA,SAAS,gCACP,SAAA,EACA,aAAA,EACA,WAAA,EACA,SAAA,EACA,QACA,UAAA,EAC4E;AAC5E,EAAA,MAAM,aAAA,GAAgB,UAAU,cAAA,CAAe,IAAA;AAC/C,EAAA,IACE,CAACA,UAAA,CAAE,eAAA,CAAgB,aAAa,CAAA,IAChC,CAAC,QAAA,CAAS,IAAA,CAAK,aAAA,CAAc,IAAI,CAAA,IACjC,aAAA,CAAc,SAAS,KAAA,EACvB;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,IACE,SAAA,CAAU,eAAe,UAAA,CAAW,IAAA;AAAA,IAClC,CAAC,cACCA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,IAC/BA,UAAA,CAAE,eAAe,SAAS,CAAA,IACzBA,WAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,KAC/B,SAAA,CAAU,KAAK,IAAA,KAAS,KAAA,IAAS,SAAA,CAAU,IAAA,CAAK,IAAA,KAAS,yBAAA;AAAA,GAChE,EACA;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,KAAA,MAAW,SAAA,IAAa,SAAA,CAAU,cAAA,CAAe,UAAA,EAAY;AAC3D,IAAA,IAAI,CAACA,UAAA,CAAE,cAAA,CAAe,SAAS,CAAA,IAAK,CAACA,UAAA,CAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,EAAG,OAAO,MAAA;AAC/E,IAAA,IAAI,UAAA,CAAW,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,IAAI,KAAK,SAAA,CAAU,IAAA,CAAK,IAAA,KAAS,KAAA,EAAO,OAAO,MAAA;AAGlF,IAAA,IACEA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC1C,CAACA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA;AAElD,MAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,MAAM,QAAA,GAAW,sBAAsB,SAAS,CAAA;AAChD,EAAA,IACE,SAAS,MAAA,KAAW,CAAA,IACpB,CAACA,UAAA,CAAE,yBAAyB,QAAA,CAAS,CAAC,CAAC,CAAA,IACvCA,WAAE,oBAAA,CAAqB,QAAA,CAAS,CAAC,CAAA,CAAE,UAAU,CAAA,EAC7C;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,QAAA,CAAS,CAAC,EAAE,UAAU,CAAA;AAC1D,EAAA,IAAI,CAAC,KAAA,IAAS,yBAAA,CAA0B,MAAM,IAAA,EAAM,WAAW,GAAG,OAAO,MAAA;AAEzE,EAAA,MAAM,cAAA,GAAiB,MAAM,MAAA,GACzB,wBAAA;AAAA,IACE,KAAA,CAAM,MAAA;AAAA,IACN,aAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GACA;AAAA,IACE,UAAU,EAAC;AAAA,IACX,OAAO,EAAC;AAAA,IACR,MAAA,sBAAY,GAAA;AAA2C,GACzD;AACJ,EAAA,MAAM,aAAA,GAAgB,MAAM,KAAA,GACxB,wBAAA;AAAA,IACE,KAAA,CAAM,KAAA;AAAA,IACN,aAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GACA;AAAA,IACE,UAAU,EAAC;AAAA,IACX,OAAO,EAAC;AAAA,IACR,MAAA,sBAAY,GAAA;AAA2C,GACzD;AACJ,EAAA,IAAI,cAAA,CAAe,MAAA,IAAU,aAAA,CAAc,MAAA,EAAQ,OAAO,MAAA;AAE1D,EAAA,MAAM,eAAe,IAAI,GAAA,CAAI,yBAAyB,KAAA,CAAM,IAAA,EAAM,aAAa,CAAC,CAAA;AAChF,EAAA,KAAA,MAAW,OAAA,IAAW,CAAC,GAAI,cAAA,CAAe,QAAA,IAAY,EAAC,EAAI,GAAI,aAAA,CAAc,QAAA,IAAY,EAAG,CAAA,EAAG;AAC7F,IAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,aAAa,CAAA,EAAG;AAC/E,MAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,IAC7B;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,YAAA,EAAc,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAAA,IAClE,IAAA,EAAM,eAAA,CAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,IAChC,SAAS,KAAA,CAAM,OAAA;AAAA,IACf,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,cAAA,EAAgB,cAAA,CAAe,QAAA,IAAY,EAAC;AAAA,IAC5C,aAAA,EAAe,aAAA,CAAc,QAAA,IAAY,EAAC;AAAA,IAC1C,gBAAA,EAAkB,IAAI,GAAA,CAAI,CAAC,GAAG,eAAe,MAAA,EAAQ,GAAG,aAAA,CAAc,MAAM,CAAC,CAAA;AAAA,IAC7E,aAAa,CAAC,GAAG,eAAe,KAAA,EAAO,GAAG,cAAc,KAAK;AAAA,GAC/D;AACF;AAEA,SAAS,kCACP,SAAA,EACA,aAAA,EACA,aACA,gBAAA,EACA,SAAA,EACA,QACA,UAAA,EAUY;AACZ,EAAA,MAAM,aAAA,GAAgB,UAAU,cAAA,CAAe,IAAA;AAC/C,EAAA,IACE,CAACA,UAAA,CAAE,eAAA,CAAgB,aAAa,CAAA,IAChC,CAAC,QAAA,CAAS,IAAA,CAAK,aAAA,CAAc,IAAI,KACjC,aAAA,CAAc,IAAA,KAAS,KAAA,IACvB,SAAA,CAAU,eAAe,UAAA,CAAW,IAAA;AAAA,IAClC,CAAC,cACCA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,IAC/BA,UAAA,CAAE,eAAe,SAAS,CAAA,IACzBA,WAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,KAC/B,SAAA,CAAU,KAAK,IAAA,KAAS,KAAA,IAAS,SAAA,CAAU,IAAA,CAAK,IAAA,KAAS,yBAAA;AAAA,GAChE,EACA;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,sBAAsB,SAAS,CAAA;AAChD,EAAA,IAAI,QAAA,CAAS,MAAA,IAAU,gBAAA,GAAmB,CAAA,GAAI,IAAI,OAAO,MAAA;AACzD,EAAA,MAAM,SAAiC,EAAC;AACxC,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,MAAM,gBAAA,uBAAuB,GAAA,EAA2C;AACxE,EAAA,MAAM,cAAyC,EAAC;AAChD,EAAA,MAAM,iBAA8C,EAAC;AACrD,EAAA,IAAI,YAAA,GAAe,CAAA;AAEnB,EAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,IAAA,IAAIA,UAAA,CAAE,yBAAyB,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AAClF,MAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,KAAA,CAAM,UAAU,CAAA;AACpD,MAAA,IAAI,SAAS,CAAC,yBAAA,CAA0B,KAAA,CAAM,IAAA,EAAM,WAAW,CAAA,EAAG;AAChE,QAAA,MAAM,cAAA,GAAiB,MAAM,MAAA,GACzB,wBAAA;AAAA,UACE,KAAA,CAAM,MAAA;AAAA,UACN,aAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACF,GACA;AAAA,UACE,UAAU,EAAC;AAAA,UACX,OAAO,EAAC;AAAA,UACR,MAAA,sBAAY,GAAA;AAA2C,SACzD;AACJ,QAAA,MAAM,aAAA,GAAgB,MAAM,KAAA,GACxB,wBAAA;AAAA,UACE,KAAA,CAAM,KAAA;AAAA,UACN,aAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACF,GACA;AAAA,UACE,UAAU,EAAC;AAAA,UACX,OAAO,EAAC;AAAA,UACR,MAAA,sBAAY,GAAA;AAA2C,SACzD;AACJ,QAAA,IAAI,cAAA,CAAe,MAAA,IAAU,aAAA,CAAc,MAAA,EAAQ,OAAO,MAAA;AAC1D,QAAA,WAAA,CAAY,KAAK,GAAG,cAAA,CAAe,KAAA,EAAO,GAAG,cAAc,KAAK,CAAA;AAChE,QAAA,KAAA,MAAW,CAAC,SAAS,IAAI,CAAA,IAAK,eAAe,MAAA,EAAQ,gBAAA,CAAiB,GAAA,CAAI,OAAA,EAAS,IAAI,CAAA;AACvF,QAAA,KAAA,MAAW,CAAC,SAAS,IAAI,CAAA,IAAK,cAAc,MAAA,EAAQ,gBAAA,CAAiB,GAAA,CAAI,OAAA,EAAS,IAAI,CAAA;AAEtF,QAAA,MAAM,oBAAoB,IAAI,GAAA,CAAI,yBAAyB,KAAA,CAAM,IAAA,EAAM,aAAa,CAAC,CAAA;AACrF,QAAA,KAAA,MAAW,OAAA,IAAW;AAAA,UACpB,GAAI,cAAA,CAAe,QAAA,IAAY,EAAC;AAAA,UAChC,GAAI,aAAA,CAAc,QAAA,IAAY;AAAC,SACjC,EAAG;AACD,UAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,aAAa,CAAA,EAAG;AAC/E,YAAA,iBAAA,CAAkB,IAAI,UAAU,CAAA;AAAA,UAClC;AAAA,QACF;AACA,QAAA,KAAA,MAAW,UAAA,IAAc,iBAAA,EAAmB,YAAA,CAAa,GAAA,CAAI,UAAU,CAAA;AACvE,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,MAAA,EAAQ,YAAA;AAAA,UACR,QAAQ,KAAA,CAAM,UAAA;AAAA,UACd,IAAA,EAAM,eAAA,CAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,UAChC,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,QAAQ,KAAA,CAAM,MAAA;AAAA,UACd,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,cAAA,EAAgB,cAAA,CAAe,QAAA,IAAY,EAAC;AAAA,UAC5C,aAAA,EAAe,aAAA,CAAc,QAAA,IAAY;AAAC,SAC3C,CAAA;AACD,QAAA,YAAA,GAAe,CAAA;AACf,QAAA;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,CAACA,WAAE,YAAA,CAAa,KAAK,KAAK,CAAC,aAAA,CAAc,KAAK,CAAA,EAAG,OAAO,MAAA;AAC5D,IAAA,MAAM,cAAA,GAAiB,0BAAA,CAA2B,KAAA,EAAO,WAAA,EAAa,MAAM,aAAa,CAAA;AACzF,IAAA,IAAI,cAAA,CAAe,QAAQ,OAAO,MAAA;AAClC,IAAA,KAAA,MAAW,OAAA,IAAW,cAAA,CAAe,QAAA,IAAY,EAAC,EAAG;AACnD,MAAA,cAAA,CAAe,IAAA,CAAK;AAAA,QAClB,GAAG,OAAA;AAAA,QACH,SAAS,MAAA,CAAO,MAAA;AAAA,QAChB,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,aAAa,CAAA,EAAG;AAC/E,QAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,MAC7B;AAAA,IACF;AACA,IAAA,YAAA,IAAgB,CAAA;AAAA,EAClB;AAEA,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAChC,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAA,EAAU,YAAA;AAAA,IACV,YAAA,EAAc,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAAA,IAClE,cAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,4BACP,SAAA,EACA,aAAA,EACA,WAAA,EACA,SAAA,EACA,QACA,UAAA,EAUY;AACZ,EAAA,MAAM,aAAA,GAAgB,UAAU,cAAA,CAAe,IAAA;AAC/C,EAAA,IACE,CAACA,UAAA,CAAE,eAAA,CAAgB,aAAa,CAAA,IAChC,CAAC,QAAA,CAAS,IAAA,CAAK,aAAA,CAAc,IAAI,KACjC,aAAA,CAAc,IAAA,KAAS,KAAA,IACvB,SAAA,CAAU,eAAe,UAAA,CAAW,IAAA;AAAA,IAClC,CAAC,cACCA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,IAC/BA,UAAA,CAAE,eAAe,SAAS,CAAA,IACzBA,WAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,KAC/B,SAAA,CAAU,KAAK,IAAA,KAAS,KAAA,IAAS,SAAA,CAAU,IAAA,CAAK,IAAA,KAAS,yBAAA;AAAA,GAChE,EACA;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,sBAAsB,SAAS,CAAA;AAChD,EAAA,IAAI,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG,OAAO,MAAA;AAChC,EAAA,MAAM,SAA2B,EAAC;AAClC,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,MAAM,gBAAA,uBAAuB,GAAA,EAA2C;AACxE,EAAA,MAAM,cAAyC,EAAC;AAChD,EAAA,MAAM,iBAA8C,EAAC;AACrD,EAAA,IAAI,gBAAA,GAAmB,CAAA;AACvB,EAAA,IAAI,UAAA,GAAa,CAAA;AACjB,EAAA,IAAI,YAAA,GAAe,CAAA;AAEnB,EAAA,MAAM,aAAA,GAAgB,CAAC,QAAA,KAAiD;AACtE,IAAA,IAAI,QAAA,CAAS,QAAQ,OAAO,KAAA;AAC5B,IAAA,WAAA,CAAY,IAAA,CAAK,GAAG,QAAA,CAAS,KAAK,CAAA;AAClC,IAAA,KAAA,MAAW,CAAC,SAAS,IAAI,CAAA,IAAK,SAAS,MAAA,EAAQ,gBAAA,CAAiB,GAAA,CAAI,OAAA,EAAS,IAAI,CAAA;AACjF,IAAA,KAAA,MAAW,OAAA,IAAW,SAAS,QAAA,EAAU;AACvC,MAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,aAAa,CAAA,EAAG;AAC/E,QAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,MAC7B;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,IAAA,IAAIA,UAAA,CAAE,yBAAyB,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AAClF,MAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,KAAA,CAAM,UAAU,CAAA;AACpD,MAAA,IAAI,SAAS,CAAC,yBAAA,CAA0B,KAAA,CAAM,IAAA,EAAM,WAAW,CAAA,EAAG;AAChE,QAAA,MAAM,cAAA,GAAiB,MAAM,MAAA,GACzB,wBAAA;AAAA,UACE,KAAA,CAAM,MAAA;AAAA,UACN,aAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACF,GACA;AAAA,UACE,UAAU,EAAC;AAAA,UACX,OAAO,EAAC;AAAA,UACR,MAAA,sBAAY,GAAA;AAA2C,SACzD;AACJ,QAAA,MAAM,aAAA,GAAgB,MAAM,KAAA,GACxB,wBAAA;AAAA,UACE,KAAA,CAAM,KAAA;AAAA,UACN,aAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACF,GACA;AAAA,UACE,UAAU,EAAC;AAAA,UACX,OAAO,EAAC;AAAA,UACR,MAAA,sBAAY,GAAA;AAA2C,SACzD;AACJ,QAAA,IAAI,CAAC,cAAc,cAAc,CAAA,IAAK,CAAC,aAAA,CAAc,aAAa,GAAG,OAAO,MAAA;AAC5E,QAAA,KAAA,MAAW,UAAA,IAAc,wBAAA,CAAyB,KAAA,CAAM,IAAA,EAAM,aAAa,CAAA,EAAG;AAC5E,UAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,QAC7B;AACA,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,SAAA,EAAW,aAAA;AAAA,UACX,MAAA,EAAQ,YAAA;AAAA,UACR,QAAQ,KAAA,CAAM,UAAA;AAAA,UACd,IAAA,EAAM,eAAA,CAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,UAChC,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,QAAQ,KAAA,CAAM,MAAA;AAAA,UACd,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,gBAAgB,cAAA,CAAe,QAAA;AAAA,UAC/B,eAAe,aAAA,CAAc;AAAA,SAC9B,CAAA;AACD,QAAA,gBAAA,IAAoB,CAAA;AACpB,QAAA,YAAA,GAAe,CAAA;AACf,QAAA;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,QAAQ,oBAAA,CAAqB,KAAA,EAAO,aAAA,EAAe,WAAA,EAAa,WAAW,IAAI,CAAA;AACrF,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAI,KAAA,CAAM,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,OAAO,MAAA;AACpC,MAAA,MAAM,GAAA,GAAMA,UAAA,CAAE,SAAA,CAAU,KAAA,CAAM,KAAK,IAAI,CAAA;AACvC,MAAA,GAAA,CAAI,cAAA,CAAe,UAAA,GAAa,GAAA,CAAI,cAAA,CAAe,UAAA,CAAW,MAAA;AAAA,QAC5D,CAAC,cAAc,CAACA,UAAA,CAAE,eAAe,SAAS,CAAA,IAAK,gBAAA,CAAiB,SAAS,CAAA,KAAM;AAAA,OACjF;AACA,MAAA,MAAM,WAAA,GAAc,wBAAA;AAAA,QAClB,GAAA;AAAA,QACA,aAAA;AAAA,QACA,WAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,CAAC,aAAA,CAAc,WAAW,CAAA,EAAG,OAAO,MAAA;AACxC,MAAA,KAAA,MAAW,UAAA,IAAc,KAAA,CAAM,YAAA,EAAc,YAAA,CAAa,IAAI,UAAU,CAAA;AACxE,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,SAAA,EAAW,OAAA;AAAA,QACX,MAAA,EAAQ,YAAA;AAAA,QACR,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,aAAa,KAAA,CAAM,WAAA;AAAA,QACnB,gBAAgB,KAAA,CAAM,cAAA;AAAA,QACtB,GAAA;AAAA,QACA,UAAU,WAAA,CAAY,QAAA;AAAA,QACtB,QAAQ,KAAA,CAAM;AAAA,OACf,CAAA;AACD,MAAA,UAAA,IAAc,CAAA;AACd,MAAA,YAAA,GAAe,CAAA;AACf,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAACA,WAAE,YAAA,CAAa,KAAK,KAAK,CAAC,aAAA,CAAc,KAAK,CAAA,EAAG,OAAO,MAAA;AAC5D,IAAA,MAAM,cAAA,GAAiB,wBAAA;AAAA,MACrB,KAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,IAAI,cAAA,CAAe,QAAQ,OAAO,MAAA;AAClC,IAAA,KAAA,MAAW,OAAA,IAAW,eAAe,QAAA,EAAU;AAC7C,MAAA,cAAA,CAAe,IAAA,CAAK;AAAA,QAClB,GAAG,OAAA;AAAA,QACH,SAAS,MAAA,CAAO,MAAA;AAAA,QAChB,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH;AACA,IAAA,IAAI,CAAC,aAAA,CAAc,cAAc,CAAA,EAAG,OAAO,MAAA;AAC3C,IAAA,YAAA,IAAgB,CAAA;AAAA,EAClB;AAEA,EAAA,IAAI,gBAAA,KAAqB,CAAA,IAAK,UAAA,KAAe,CAAA,EAAG,OAAO,MAAA;AACvD,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAA,EAAU,YAAA;AAAA,IACV,YAAA,EAAc,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAAA,IAClE,cAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,iBAAA,CACP,YAAA,EACA,IAAA,EACA,MAAA,EACc;AACd,EAAA,MAAM,OAAOA,UAAA,CAAE,mBAAA;AAAA,IACbA,UAAA,CAAE,aAAA,CAAc,YAAA,CAAa,IAAI,CAAA;AAAA,IACjCA,UAAA,CAAE,cAAc,WAAW;AAAA,GAC7B;AACA,EAAA,OAAOA,UAAA,CAAE,UAAA;AAAA,IACPA,UAAA,CAAE,iBAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,QACEA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAA,EAAGA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AAAA,QACzFA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,UACxBA,UAAA,CAAE,uBAAuBA,UAAA,CAAE,uBAAA,CAAwB,EAAC,EAAG,eAAA,CAAgB,MAAM,CAAC,CAAC;AAAA;AACjF,OACF;AAAA,MACA;AAAA,KACF;AAAA,IACA,IAAA;AAAA,IACA,EAAC;AAAA,IACD;AAAA,GACF;AACF;AAEA,SAAS,qBAAA,CACP,OAAA,EACA,gBAAA,mBAAuE,IAAI,KAAI,EAC3D;AACpB,EAAA,MAAM,GAAA,GAAM,QAAQ,cAAA,CAAe,IAAA;AACnC,EAAA,MAAM,aAAmC,EAAC;AAC1C,EAAA,MAAM,SAA+B,EAAC;AAEtC,EAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,IAAA,IAAI,CAACA,UAAA,CAAE,cAAA,CAAe,SAAS,CAAA,EAAG;AAClC,IAAA,MAAM,IAAA,GAAO,iBAAiB,SAAS,CAAA;AACvC,IAAA,IAAI,CAAC,QAAQ,IAAA,KAAS,KAAA,IAAS,SAAS,KAAA,IAAS,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EAAG;AACxE,IAAA,IAAI,SAAS,OAAA,EAAS;AACpB,MAAA,IACEA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC1CA,WAAE,kBAAA,CAAmB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EAC/C;AACA,QAAA,KAAA,MAAW,QAAA,IAAY,SAAA,CAAU,KAAA,CAAM,UAAA,CAAW,UAAA,EAAY;AAC5D,UAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAAG;AACtE,UAAA,MAAM,YAAA,GAAeA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,GAAG,IAC5C,QAAA,CAAS,GAAA,CAAI,IAAA,GACZ,QAAA,CAAS,GAAA,CAAwB,KAAA;AACtC,UAAA,MAAA,CAAO,IAAA;AAAA,YACLA,WAAE,gBAAA,CAAiB;AAAA,cACjBA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,YAAY,CAAC,CAAA;AAAA,cACpEA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,OAAO,CAAA,EAAG,eAAA,CAAgB,QAAA,CAAS,KAAK,CAAC;AAAA,aACxE;AAAA,WACH;AAAA,QACF;AAAA,MACF;AACA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAQ,SAAA,CAAU,KAAA,GACpBA,UAAA,CAAE,eAAA,CAAgB,UAAU,KAAK,CAAA,GAC/BA,UAAA,CAAE,aAAA,CAAc,UAAU,KAAA,CAAM,KAAK,CAAA,GACrCA,UAAA,CAAE,yBAAyB,SAAA,CAAU,KAAK,CAAA,IACxC,CAACA,WAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,IAClD,eAAA,CAAgB,SAAA,CAAU,KAAA,CAAM,UAAU,IAC1CA,UAAA,CAAE,UAAA,CAAW,WAAW,CAAA,GAC5BA,UAAA,CAAE,eAAe,IAAI,CAAA;AACzB,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,WAAE,gBAAA,CAAiB;AAAA,QACjBA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,QAC5DA,WAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,OAAO,GAAG,KAAK;AAAA,OAC9C;AAAA,KACH;AAAA,EACF;AAEA,EAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,GAAA,CAAI,OAAO,CAAA;AAC1C,EAAA,MAAM,mBAAA,uBAA0B,GAAA,EAAkC;AAClE,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAA4B;AACtD,EAAA,IAAI,KAAA,EAAO,SAAS,gCAAA,EAAkC;AACpD,IAAA,KAAA,MAAW,SAAS,KAAA,CAAM,MAAA,sBAA4B,GAAA,CAAI,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,EAC/E,CAAA,MAAA,IAAW,KAAA,EAAO,IAAA,KAAS,0BAAA,EAA4B;AACrD,IAAA,KAAA,MAAW,SAAS,KAAA,CAAM,MAAA,gBAAsB,GAAA,CAAI,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,EACzE,CAAA,MAAA,IAAW,KAAA,EAAO,IAAA,KAAS,0BAAA,EAA4B;AACrD,IAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAQ;AAChC,MAAA,IAAI,MAAM,SAAA,KAAc,aAAA,sBAAmC,GAAA,CAAI,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,WAC7E,aAAA,CAAc,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA;AAAA,IAC5C;AAAA,EACF;AAEA,EAAA,MAAM,WAA2B,EAAC;AAClC,EAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,IAAA,IAAIA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAA,EAAG;AACtB,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA;AACrC,MAAA,IAAI,MAAM,QAAA,CAAS,IAAA,CAAKA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,IAC/C,CAAA,MAAA,IAAWA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AAChC,MAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,CAAI,KAAK,CAAA;AAC1C,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,IAAI,KAAA,EAAO,SAAS,0BAAA,EAA4B;AAC9C,UAAA,QAAA,CAAS,IAAA,CAAK,4BAAA,CAA6B,UAAA,EAAY,gBAAgB,CAAC,CAAA;AAAA,QAC1E;AAAA,MACF,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,IAAA,CAAK,qBAAA,CAAsB,KAAA,EAAO,gBAAgB,CAAC,CAAA;AAAA,MAC9D;AAAA,IACF,CAAA,MAAA,IAAWA,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AACzF,MAAA,MAAM,gBAAA,GAAmB,mBAAA,CAAoB,GAAA,CAAI,KAAA,CAAM,UAAU,CAAA;AACjE,MAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,CAAI,KAAA,CAAM,UAAU,CAAA;AACrD,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,QAAA,CAAS,IAAA,CAAK,+BAAA,CAAgC,gBAAA,EAAkB,gBAAgB,CAAC,CAAA;AAAA,MACnF,WAAW,UAAA,EAAY;AACrB,QAAA,IAAI,KAAA,EAAO,SAAS,0BAAA,EAA4B;AAC9C,UAAA,QAAA,CAAS,IAAA,CAAK,4BAAA,CAA6B,UAAA,EAAY,gBAAgB,CAAC,CAAA;AAAA,QAC1E;AAAA,MACF,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,IAAA,CAAK,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,UAAA,GAAsC;AAAA,IAC1CA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,SAAS,CAAC,CAAA;AAAA,IACjEA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,KAAK,GAAGA,UAAA,CAAE,aAAA,CAAc,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA,IAC/DA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,YAAY,CAAA,EAAGA,UAAA,CAAE,eAAA,CAAgB,UAAU,CAAC,CAAA;AAAA,IAC1EA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,QAAQ,CAAA,EAAGA,UAAA,CAAE,eAAA,CAAgB,MAAM,CAAC,CAAA;AAAA,IAClEA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,UAAU,CAAA,EAAGA,UAAA,CAAE,eAAA,CAAgB,QAAQ,CAAC;AAAA,GACxE;AACA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,OAAO,CAAA,EAAG,qBAAA,CAAsB,KAAA,EAAO,gBAAgB,CAAC;AAAA,KACxF;AAAA,EACF;AACA,EAAA,OAAOA,UAAA,CAAE,iBAAiB,UAAU,CAAA;AACtC;AAEA,SAAS,+BAAA,CACP,OACA,gBAAA,EACc;AACd,EAAA,MAAM,MAAA,GAAS,MAAM,MAAA,GACjB,qBAAA,CAAsB,MAAM,MAAA,EAAQ,gBAAgB,CAAA,GACpDA,UAAA,CAAE,WAAA,EAAY;AAClB,EAAA,IAAI,MAAM,OAAA,EAAS;AACjB,IAAA,OAAOA,WAAE,iBAAA,CAAkB,IAAA,EAAM,gBAAgB,KAAA,CAAM,IAAI,GAAG,MAAM,CAAA;AAAA,EACtE;AACA,EAAA,OAAOA,UAAA,CAAE,qBAAA;AAAA,IACP,eAAA,CAAgB,MAAM,IAAI,CAAA;AAAA,IAC1B,MAAA;AAAA,IACA,KAAA,CAAM,QAAQ,qBAAA,CAAsB,KAAA,CAAM,OAAO,gBAAgB,CAAA,GAAIA,WAAE,WAAA;AAAY,GACrF;AACF;AAEA,SAAS,4BAAA,CACP,OACA,gBAAA,EACc;AACd,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,cAAA,CAAe,MAAA,CAAO,GAAA;AAAA,IAAI,CAAC,SAAA,KAClDA,UAAA,CAAE,SAAA,CAAU,WAAW,IAAI;AAAA,GAC7B;AACA,EAAA,MAAM,WAAWA,UAAA,CAAE,uBAAA;AAAA,IACjB,UAAA;AAAA,IACA,qBAAA,CAAsB,KAAA,CAAM,GAAA,EAAK,gBAAgB;AAAA,GACnD;AACA,EAAA,MAAM,UAAA,GAAa,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAA;AACnD,EAAA,IAAI,KAAA,CAAM,WAAW,KAAA,EAAO;AAC1B,IAAA,OAAOA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,gBAAA,CAAiB,UAAA,EAAYA,UAAA,CAAE,UAAA,CAAW,KAAK,CAAC,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAAA,EACzF;AACA,EAAA,OAAOA,UAAA,CAAE,cAAA;AAAA,IACPA,UAAA,CAAE,gBAAA;AAAA,MACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,gBAAA,CAAiBA,UAAA,CAAE,UAAA,CAAW,OAAO,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,MAAM,CAAC,CAAA,EAAG;AAAA,QAChFA,UAAA,CAAE,kBAAkB,IAAA,EAAM,UAAA,EAAYA,WAAE,eAAA,CAAgB,EAAE,CAAC;AAAA,OAC5D,CAAA;AAAA,MACDA,UAAA,CAAE,WAAW,KAAK;AAAA,KACpB;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AACF;AAEA,SAAS,qBAAA,CACP,SACA,UAAA,EACoB;AACpB,EAAA,MAAM,UAAA,GAAiC;AAAA,IACrCA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,GAAGA,UAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA,IACpEA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,UAAA,CAAE,eAAA,CAAgB,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAASA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC,CAAC;AAAA,KACtE;AAAA,IACAA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,cAAc,CAAA;AAAA,MAC3BA,UAAA,CAAE,eAAA;AAAA,QAAA,CACC,OAAA,CAAQ,YAAA,IAAgB,EAAC,EAAG,GAAA,CAAI,CAAC,UAAA,KAAeA,UAAA,CAAE,cAAA,CAAe,UAAU,CAAC;AAAA;AAC/E;AACF,GACF;AACA,EAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,IAAA,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,IAAI,CAAC,CAAC,CAAA;AAAA,EACvF;AACA,EAAA,IAAI,QAAQ,cAAA,EAAgB;AAC1B,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,gBAAgB,CAAA;AAAA,QAC7BA,WAAE,gBAAA,CAAiB;AAAA,UACjBA,UAAA,CAAE,cAAA;AAAA,YACAA,UAAA,CAAE,WAAW,YAAY,CAAA;AAAA,YACzBA,UAAA,CAAE,cAAA,CAAe,OAAA,CAAQ,cAAA,CAAe,UAAU;AAAA,WACpD;AAAA,UACAA,UAAA,CAAE,cAAA;AAAA,YACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,YACnBA,UAAA,CAAE,wBAAwB,EAAC,EAAG,gBAAgB,OAAA,CAAQ,cAAA,CAAe,KAAK,CAAC;AAAA;AAC7E,SACD;AAAA;AACH,KACF;AAAA,EACF;AACA,EAAA,IAAI,QAAQ,gBAAA,EAAkB;AAC5B,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,kBAAkB,CAAA;AAAA,QAC/BA,WAAE,gBAAA,CAAiB;AAAA,UACjBA,UAAA,CAAE,cAAA;AAAA,YACAA,UAAA,CAAE,WAAW,YAAY,CAAA;AAAA,YACzBA,UAAA,CAAE,cAAA,CAAe,OAAA,CAAQ,gBAAA,CAAiB,UAAU;AAAA,WACtD;AAAA,UACAA,UAAA,CAAE,cAAA;AAAA,YACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,YACnBA,UAAA,CAAE,wBAAwB,EAAC,EAAG,gBAAgB,OAAA,CAAQ,gBAAA,CAAiB,KAAK,CAAC;AAAA;AAC/E,SACD;AAAA;AACH,KACF;AAAA,EACF;AACA,EAAA,IAAI,QAAQ,eAAA,EAAiB;AAC3B,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,iBAAiB,CAAA;AAAA,QAC9BA,WAAE,gBAAA,CAAiB;AAAA,UACjBA,UAAA,CAAE,cAAA;AAAA,YACAA,UAAA,CAAE,WAAW,YAAY,CAAA;AAAA,YACzBA,UAAA,CAAE,cAAA,CAAe,OAAA,CAAQ,eAAA,CAAgB,UAAU;AAAA,WACrD;AAAA,UACAA,UAAA,CAAE,cAAA;AAAA,YACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,YACnBA,UAAA,CAAE,wBAAwB,EAAC,EAAG,gBAAgB,OAAA,CAAQ,eAAA,CAAgB,KAAK,CAAC;AAAA;AAC9E,SACD;AAAA;AACH,KACF;AAAA,EACF;AACA,EAAA,UAAA,CAAW,IAAA;AAAA,IACTA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,UAAA,CAAE,uBAAA;AAAA,QACA,UAAA,CAAW,IAAI,CAAC,SAAA,KAAcA,WAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAC,CAAA;AAAA,QAC1D,eAAA,CAAgB,QAAQ,KAAK;AAAA;AAC/B;AACF,GACF;AACA,EAAA,OAAOA,UAAA,CAAE,iBAAiB,UAAU,CAAA;AACtC;AAEA,SAAS,yBAAyB,OAAA,EAAwD;AACxF,EAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,OAAA,EAAS,EAAE,CAAA;AAC/C,EAAA,KAAA,CAAM,UAAA,CAAW,MAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAA;AAAA,IACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,SAAS,GAAGA,UAAA,CAAE,cAAA,CAAe,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,IAC3EA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,SAAS,GAAGA,UAAA,CAAE,cAAA,CAAe,OAAA,CAAQ,OAAO,CAAC;AAAA,GAC7E;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,qBAAA,CAAsB,MAAc,KAAA,EAAwC;AACnF,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAY;AAC9B,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAAA,UAAA,CAAE,YAAA,CAAa,IAAA,EAAM,CAAC,KAAA,KAAU;AAC9B,MAAA,IAAIA,WAAE,YAAA,CAAa,KAAK,GAAG,KAAA,CAAM,GAAA,CAAI,MAAM,IAAI,CAAA;AAAA,IACjD,CAAC,CAAA;AAAA,EACH;AACA,EAAA,IAAI,IAAA,GAAO,IAAA;AACX,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,OAAO,KAAA,CAAM,IAAI,IAAI,CAAA,SAAU,CAAA,EAAG,IAAI,GAAG,MAAA,EAAQ,CAAA,CAAA;AACjD,EAAA,OAAOA,UAAA,CAAE,WAAW,IAAI,CAAA;AAC1B;AAEA,SAAS,8BAAA,CACP,GAAA,EACA,MAAA,EACA,YAAA,EACA,MACA,KAAA,EACM;AACN,EAAA,MAAM,kBAAkB,IAAI,GAAA;AAAA,IAC1B,OAAO,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,GAAG,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,IAAI,CAAA,CAAA,EAAI,KAAK,CAAU;AAAA,GACjF;AACA,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,EAAuB,IAAA,KAAyB;AAC7D,IAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,MAAA,IAAI,CAACA,UAAA,CAAE,cAAA,CAAe,SAAS,CAAA,EAAG;AAClC,MAAA,MAAM,IAAA,GAAO,iBAAiB,SAAS,CAAA;AACvC,MAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EAAG;AACrC,MAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAK,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAA;AAC7D,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,SAAA,CAAU,QAAQA,UAAA,CAAE,sBAAA;AAAA,QAClBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,YAAY,CAAA,EAAG;AAAA,UAC1CA,UAAA,CAAE,UAAU,IAAI,CAAA;AAAA,UAChBA,UAAA,CAAE,UAAU,KAAK,CAAA;AAAA,UACjBA,UAAA,CAAE,cAAA,CAAe,KAAA,CAAM,EAAE;AAAA,SAC1B;AAAA,OACH;AAAA,IACF;AAEA,IAAA,IAAI,YAAA,GAAe,CAAA;AACnB,IAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,MAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AAC5B,MAAA,KAAA,CAAM,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,YAAY,CAAC,CAAA;AACpC,MAAA,YAAA,IAAgB,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AACA,EAAA,KAAA,CAAM,GAAA,EAAK,EAAE,CAAA;AACf;AAEA,SAAS,sCACP,GAAA,EACA,YAAA,EACA,kBAAA,EACA,IAAA,EACA,OACA,gBAAA,EACM;AACN,EAAA,MAAM,wBAAwB,IAAI,GAAA;AAAA,IAChC,YAAA,CAAa,GAAA,CAAI,CAAC,WAAA,KAAgB,CAAC,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,EAAG,WAAW,CAAU;AAAA,GACtF;AACA,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,EAAuB,IAAA,KAAyB;AAC7D,IAAA,MAAM,cAAc,qBAAA,CAAsB,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA;AAC5D,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,OAAA,CAAQ,QAAA,GAAW,OAAA,CAAQ,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,KAAU;AACjD,QAAA,IACE,CAACA,UAAA,CAAE,wBAAA,CAAyB,KAAK,KACjCA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,IACvC,CAAC,qBAAA,CAAsB,KAAA,CAAM,UAAU,CAAA,EACvC;AACA,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,OAAOA,UAAA,CAAE,sBAAA;AAAA,UACPA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,kBAAkB,CAAA,EAAG;AAAA,YAChDA,UAAA,CAAE,UAAU,IAAI,CAAA;AAAA,YAChBA,UAAA,CAAE,UAAU,KAAK,CAAA;AAAA,YACjBA,UAAA,CAAE,cAAA,CAAe,WAAA,CAAY,EAAE,CAAA;AAAA,YAC/BA,UAAA,CAAE,uBAAA;AAAA,cACA,gBAAA,CAAiB,IAAI,CAAC,SAAA,KAAcA,WAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAC,CAAA;AAAA,cAChE,eAAA,CAAgB,MAAM,UAAU;AAAA;AAClC,WACD;AAAA,SACH;AAAA,MACF,CAAC,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,YAAA,GAAe,CAAA;AACnB,IAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,MAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AAC5B,MAAA,KAAA,CAAM,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,YAAY,CAAC,CAAA;AACpC,MAAA,YAAA,IAAgB,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AACA,EAAA,KAAA,CAAM,GAAA,EAAK,EAAE,CAAA;AACf;AAEA,SAAS,qBAAA,CACP,IAAA,EACA,YAAA,EACA,kBAAA,EACc;AACd,EAAA,MAAM,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,IAAA,CAAK,QAAQ,IAAI,CAAA;AAC5C,EAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,MAAM,CAAA,CAAE,CAAC,CAAA;AAC7C,EAAA,IAAI,QAAA;AACJ,EAAA,IACE,KAAK,MAAA,KAAW,KAAA,IAChBA,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAChC,CAACA,UAAA,CAAE,oBAAA,CAAqB,MAAM,UAAU,CAAA,IACxC,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EAC1B;AACA,IAAA,MAAM,SAAA,GAAY,KAAA,CAAM,UAAA,CAAW,SAAA,CAAU,CAAC,CAAA;AAC9C,IAAA,IAAIA,WAAE,yBAAA,CAA0B,SAAS,KAAKA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,EAAG;AAC/E,MAAA,QAAA,GAAW,SAAA;AAAA,IACb;AAAA,EACF,WAAW,IAAA,CAAK,MAAA,KAAW,UAAUA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AAC1D,IAAA,MAAM,WAAA,GAAc,qBAAA,CAAsB,KAAK,CAAA,CAAE,CAAC,CAAA;AAClD,IAAA,IACEA,WAAE,wBAAA,CAAyB,WAAW,KACtC,CAACA,UAAA,CAAE,qBAAqB,WAAA,CAAY,UAAU,MAC7CA,UAAA,CAAE,yBAAA,CAA0B,YAAY,UAAU,CAAA,IACjDA,WAAE,oBAAA,CAAqB,WAAA,CAAY,UAAU,CAAA,CAAA,EAC/C;AACA,MAAA,QAAA,GAAW,WAAA,CAAY,UAAA;AAAA,IACzB;AAAA,EACF;AACA,EAAA,MAAM,GAAA,GAAM,QAAA,IAAY,kBAAA,CAAmB,QAAQ,CAAA;AACnD,EAAA,MAAM,IAAA,GAAO,QAAA,EAAU,MAAA,CAAO,CAAC,CAAA;AAC/B,EAAA,MAAM,KAAA,GAAQ,QAAA,EAAU,MAAA,CAAO,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,QAAA,IAAY,CAACA,UAAA,CAAE,YAAA,CAAa,GAAG,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,IAAI,CAAA,EAAG,OAAO,MAAA;AACvE,EAAA,MAAM,YAAA,GAAeA,WAAE,YAAA,CAAa,KAAK,IAAI,KAAA,GAAQA,UAAA,CAAE,eAAe,CAAC,CAAA;AACvE,EAAA,IAAI,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC1B,IAAA,8BAAA,CAA+B,GAAA,EAAK,IAAA,CAAK,MAAA,EAAQ,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,EACnF;AACA,EAAA,IAAI,IAAA,CAAK,YAAA,CAAa,MAAA,GAAS,CAAA,EAAG;AAChC,IAAA,qCAAA;AAAA,MACE,GAAA;AAAA,MACA,IAAA,CAAK,YAAA;AAAA,MACL,kBAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA,CAAS;AAAA,KACX;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mBAAA,CACP,OACA,gBAAA,EACoB;AACpB,EAAA,MAAM,KAAA,GAAQ,CAAC,KAAA,CAAM,KAAA,EAAO,GAAG,gBAAgB,CAAA;AAC/C,EAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,CAAC,CAAA,GAC5BA,UAAA,CAAE,SAAA,CAAU,gBAAA,CAAiB,CAAC,CAAA,EAAG,IAAI,CAAA,GACrC,qBAAA,CAAsB,iBAAiB,KAAK,CAAA;AAChD,EAAA,MAAM,iBAAiB,qBAAA,CAAsB,YAAA,EAAc,CAAC,GAAG,KAAA,EAAO,KAAK,CAAC,CAAA;AAC5E,EAAA,MAAM,UAAA,GAAa,CAACA,UAAA,CAAE,SAAA,CAAU,gBAAA,CAAiB,CAAC,CAAA,EAAG,IAAI,CAAA,EAAG,KAAA,EAAO,cAAc,CAAA;AACjF,EAAA,OAAOA,WAAE,gBAAA,CAAiB;AAAA,IACxBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,GAAGA,UAAA,CAAE,aAAA,CAAc,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA,IAClEA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,UAAA,CAAE,eAAA,CAAgB,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAASA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC,CAAC;AAAA,KACpE;AAAA,IACAA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,QAAQ,CAAA;AAAA,MACrBA,UAAA,CAAE,uBAAA;AAAA,QACA,UAAA;AAAA,QACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,uBAAA,CAAwBA,UAAA,CAAE,UAAU,KAAA,CAAM,KAAA,EAAO,IAAI,CAAC,CAAA,EAAG;AAAA,UAC1EA,UAAA,CAAE,UAAU,cAAc;AAAA,SAC3B;AAAA;AACH;AACF,GACD,CAAA;AACH;AAEA,SAAS,+BAAA,CACP,UACA,UAAA,EACoB;AACpB,EAAA,OAAOA,WAAE,gBAAA,CAAiB;AAAA,IACxBA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,UAAU,CAAA;AAAA,MACvBA,UAAA,CAAE,eAAA,CAAgB,QAAA,CAAS,GAAA,CAAI,CAAC,YAAY,qBAAA,CAAsB,OAAA,EAAS,UAAU,CAAC,CAAC;AAAA;AACzF,GACD,CAAA;AACH;AAEA,SAAS,yBAAA,CACP,aACA,UAAA,EACoB;AACpB,EAAA,MAAM,UAAA,GAAiC;AAAA,IACrCA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,IAAI,GAAGA,UAAA,CAAE,cAAA,CAAe,WAAA,CAAY,EAAE,CAAC,CAAA;AAAA,IACrEA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,UAAA,CAAE,eAAA,CAAgB,WAAA,CAAY,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAASA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC,CAAC;AAAA,KAC1E;AAAA,IACAA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,UAAA,CAAE,uBAAA;AAAA,QACA,UAAA,CAAW,IAAI,CAAC,SAAA,KAAcA,WAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAC,CAAA;AAAA,QAC1D,eAAA,CAAgB,YAAY,IAAI;AAAA;AAClC,KACF;AAAA,IACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,SAAS,GAAGA,UAAA,CAAE,cAAA,CAAe,WAAA,CAAY,OAAO,CAAC;AAAA,GACjF;AACA,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,QAAQ,CAAA;AAAA,QACrB,+BAAA,CAAgC,WAAA,CAAY,cAAA,EAAgB,UAAU;AAAA;AACxE,KACF;AAAA,EACF;AACA,EAAA,IAAI,YAAY,KAAA,EAAO;AACrB,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,OAAO,CAAA;AAAA,QACpB,+BAAA,CAAgC,WAAA,CAAY,aAAA,EAAe,UAAU;AAAA;AACvE,KACF;AAAA,EACF;AACA,EAAA,OAAOA,UAAA,CAAE,iBAAiB,UAAU,CAAA;AACtC;AAEA,SAAS,kBACP,YAAA,EACA,IAAA,EACA,qBACA,kCAAA,EACA,mCAAA,EACA,sCACA,mCAAA,EACc;AACd,EAAA,MAAM,OAAOA,UAAA,CAAE,mBAAA;AAAA,IACbA,UAAA,CAAE,aAAA,CAAc,YAAA,CAAa,IAAI,CAAA;AAAA,IACjCA,UAAA,CAAE,cAAc,WAAW;AAAA,GAC7B;AACA,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,cAAA,CAAe,MAAA,CAAO,GAAA;AAAA,IAAI,CAAC,SAAA,KACjDA,UAAA,CAAE,SAAA,CAAU,WAAW,IAAI;AAAA,GAC7B;AACA,EAAA,MAAM,YAAA,GAAe,sBAAsB,eAAA,EAAiB;AAAA,IAC1D,IAAA,CAAK,MAAA;AAAA,IACL,GAAG,IAAA,CAAK,MAAA,CAAO,IAAI,CAAC,KAAA,KAAU,MAAM,KAAK;AAAA,GAC1C,CAAA;AACD,EAAA,MAAM,kBAAA,GAAqB,sBAAsB,qBAAA,EAAuB;AAAA,IACtE,IAAA,CAAK,MAAA;AAAA,IACL,GAAG,IAAA,CAAK,YAAA,CAAa,IAAI,CAAC,WAAA,KAAgB,YAAY,IAAI;AAAA,GAC3D,CAAA;AACD,EAAA,MAAM,eAAA,GAAkB,0BAA0B,IAAI,CAAA;AACtD,EAAA,MAAM,YAAA,GAAe,qBAAA,CAAsB,IAAA,EAAM,YAAA,EAAc,kBAAkB,CAAA;AACjF,EAAA,MAAM,uBAAA,GACJ,IAAA,CAAK,YAAA,CAAa,MAAA,GAAS,CAAA,GACvB,CAACA,UAAA,CAAE,SAAA,CAAU,YAAY,CAAA,EAAGA,UAAA,CAAE,SAAA,CAAU,kBAAkB,CAAC,CAAA,GAC3D,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,CAAA,GACnB,CAACA,UAAA,CAAE,SAAA,CAAU,YAAY,CAAC,CAAA,GAC1B,EAAC;AACT,EAAA,OAAOA,UAAA,CAAE,UAAA;AAAA,IACPA,UAAA,CAAE,iBAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,QACEA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAA,EAAGA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AAAA,QACzFA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,UACxBA,UAAA,CAAE,sBAAA;AAAA,YACAA,UAAA,CAAE,uBAAA,CAAwB,uBAAA,EAAyB,YAAY;AAAA;AACjE,SACF;AAAA,QACAA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,OAAO,CAAA;AAAA,UACvBA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,uBAAA,CAAwB,IAAI,eAAA,CAAgB,IAAA,CAAK,UAAU,CAAC,CAAC;AAAA,SAC1F;AAAA,QACA,GAAI,mBAAA,GACA;AAAA,UACEA,UAAA,CAAE,YAAA;AAAA,YACAA,UAAA,CAAE,cAAc,cAAc,CAAA;AAAA,YAC9BA,UAAA,CAAE,sBAAA;AAAA,cACAA,UAAA,CAAE,eAAA;AAAA,gBACA,IAAA,CAAK,aAAa,GAAA,CAAI,CAAC,eAAeA,UAAA,CAAE,cAAA,CAAe,UAAU,CAAC;AAAA;AACpE;AACF;AACF,YAEF,EAAC;AAAA,QACLA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,uBAAuB,CAAA;AAAA,UACvCA,UAAA,CAAE,sBAAA;AAAA,YACAA,UAAA,CAAE,eAAA;AAAA,cACA,IAAA,CAAK,sBAAsB,GAAA,CAAI,CAAC,eAAeA,UAAA,CAAE,cAAA,CAAe,UAAU,CAAC;AAAA;AAC7E;AACF,SACF;AAAA,QACA,GAAI,CAAC,mBAAA,IAAuB,KAAK,oBAAA,KAAyB,MAAA,GACtD,EAAC,GACD;AAAA,UACEA,UAAA,CAAE,YAAA;AAAA,YACAA,UAAA,CAAE,cAAc,sBAAsB,CAAA;AAAA,YACtCA,WAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,oBAAoB,CAAC;AAAA;AACtE,SACF;AAAA,QACJ,GAAI,KAAK,oBAAA,KAAyB,MAAA,IAClC,mCAAmC,GAAA,CAAI,IAAA,CAAK,oBAAoB,CAAA,GAC5D;AAAA,UACEA,UAAA,CAAE,YAAA;AAAA,YACAA,UAAA,CAAE,cAAc,wBAAwB,CAAA;AAAA,YACxCA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC;AAAA;AACjD,YAEF,EAAC;AAAA,QACL,GAAI,KAAK,oBAAA,KAAyB,MAAA,IAClC,oCAAoC,GAAA,CAAI,IAAA,CAAK,oBAAoB,CAAA,GAC7D;AAAA,UACEA,UAAA,CAAE,YAAA;AAAA,YACAA,UAAA,CAAE,cAAc,yBAAyB,CAAA;AAAA,YACzCA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC;AAAA;AACjD,YAEF,EAAC;AAAA,QACL,GAAI,KAAK,oBAAA,KAAyB,MAAA,IAClC,qCAAqC,GAAA,CAAI,IAAA,CAAK,oBAAoB,CAAA,GAC9D;AAAA,UACEA,UAAA,CAAE,YAAA;AAAA,YACAA,UAAA,CAAE,cAAc,0BAA0B,CAAA;AAAA,YAC1CA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC;AAAA;AACjD,YAEF,EAAC;AAAA,QACL,GAAI,KAAK,oBAAA,KAAyB,MAAA,IAClC,oCAAoC,GAAA,CAAI,IAAA,CAAK,oBAAoB,CAAA,GAC7D;AAAA,UACEA,UAAA,CAAE,YAAA;AAAA,YACAA,UAAA,CAAE,cAAc,yBAAyB,CAAA;AAAA,YACzCA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC;AAAA;AACjD,YAEF,EAAC;AAAA,QACLA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,UACxBA,WAAE,sBAAA,CAAuBA,UAAA,CAAE,UAAU,IAAA,CAAK,WAAA,EAAa,IAAI,CAAC;AAAA,SAC9D;AAAA,QACAA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,UACxBA,UAAA,CAAE,sBAAA;AAAA,YACAA,UAAA,CAAE,uBAAA;AAAA,cACA,UAAA,CAAW,IAAI,CAAC,SAAA,KAAcA,WAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAC,CAAA;AAAA,cAC1D,qBAAA,CAAsB,IAAA,CAAK,GAAA,EAAK,IAAA,CAAK,gBAAgB;AAAA;AACvD;AACF,SACF;AAAA,QACAA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,UAAU,CAAA;AAAA,UAC1BA,UAAA,CAAE,sBAAA;AAAA,YACAA,UAAA,CAAE,eAAA;AAAA,cACA,IAAA,CAAK,SAAS,GAAA,CAAI,CAAC,YAAY,qBAAA,CAAsB,OAAA,EAAS,UAAU,CAAC;AAAA;AAC3E;AACF,SACF;AAAA,QACA,GAAI,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,CAAA,GACrB;AAAA,UACEA,UAAA,CAAE,YAAA;AAAA,YACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,YACxBA,UAAA,CAAE,sBAAA;AAAA,cACAA,UAAA,CAAE,eAAA;AAAA,gBACA,IAAA,CAAK,OAAO,GAAA,CAAI,CAAC,UAAU,mBAAA,CAAoB,KAAA,EAAO,UAAU,CAAC;AAAA;AACnE;AACF,WACF;AAAA,UACA,GAAI,eAAA,GACA;AAAA,YACEA,UAAA,CAAE,YAAA;AAAA,cACAA,UAAA,CAAE,cAAc,gBAAgB,CAAA;AAAA,cAChCA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC;AAAA;AACjD,cAEF;AAAC,YAEP,EAAC;AAAA,QACL,GAAI,IAAA,CAAK,YAAA,CAAa,MAAA,GAAS,CAAA,GAC3B;AAAA,UACEA,UAAA,CAAE,YAAA;AAAA,YACAA,UAAA,CAAE,cAAc,cAAc,CAAA;AAAA,YAC9BA,UAAA,CAAE,sBAAA;AAAA,cACAA,UAAA,CAAE,eAAA;AAAA,gBACA,KAAK,YAAA,CAAa,GAAA;AAAA,kBAAI,CAAC,WAAA,KACrB,yBAAA,CAA0B,WAAA,EAAa,UAAU;AAAA;AACnD;AACF;AACF;AACF,YAEF,EAAC;AAAA,QACL,GAAI,IAAA,CAAK,gBAAA,EAAkB,IAAA,GACvB;AAAA,UACEA,UAAA,CAAE,YAAA;AAAA,YACAA,UAAA,CAAE,cAAc,YAAY,CAAA;AAAA,YAC5BA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC;AAAA;AACjD,YAEF;AAAC,OACP;AAAA,MACA;AAAA,KACF;AAAA,IACA,IAAA;AAAA,IACA,EAAC;AAAA,IACD;AAAA,GACF;AACF;AAEA,SAAS,gBAAA,CACP,KAAA,EACA,gBAAA,mBAAuE,IAAI,KAAI,EAC3D;AACpB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,cAAA,CAAe,MAAA,CAAO,GAAA;AAAA,IAAI,CAAC,SAAA,KAClDA,UAAA,CAAE,SAAA,CAAU,WAAW,IAAI;AAAA,GAC7B;AACA,EAAA,OAAOA,WAAE,gBAAA,CAAiB;AAAA,IACxBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,QAAQ,GAAGA,UAAA,CAAE,cAAA,CAAe,KAAA,CAAM,MAAM,CAAC,CAAA;AAAA,IACvEA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,OAAO,CAAA;AAAA,MACpBA,WAAE,uBAAA,CAAwB,IAAI,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAC;AAAA,KACjE;AAAA,IACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,QAAQ,CAAA,EAAGA,UAAA,CAAE,SAAA,CAAU,KAAA,CAAM,WAAA,EAAa,IAAI,CAAC,CAAA;AAAA,IAC7EA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,QAAQ,CAAA;AAAA,MACrBA,UAAA,CAAE,uBAAA;AAAA,QACA,UAAA,CAAW,IAAI,CAAC,SAAA,KAAcA,WAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAC,CAAA;AAAA,QAC1D,qBAAA,CAAsB,KAAA,CAAM,GAAA,EAAK,gBAAgB;AAAA;AACnD,KACF;AAAA,IACAA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,UAAU,CAAA;AAAA,MACvBA,UAAA,CAAE,eAAA;AAAA,QACA,KAAA,CAAM,SAAS,GAAA,CAAI,CAAC,YAAY,qBAAA,CAAsB,OAAA,EAAS,UAAU,CAAC;AAAA;AAC5E;AACF,GACD,CAAA;AACH;AAEA,SAAS,mBAAA,CAAoB,cAA4B,IAAA,EAAqC;AAC5F,EAAA,MAAM,OAAOA,UAAA,CAAE,mBAAA;AAAA,IACbA,UAAA,CAAE,aAAA,CAAc,YAAA,CAAa,IAAI,CAAA;AAAA,IACjCA,UAAA,CAAE,cAAc,aAAa;AAAA,GAC/B;AACA,EAAA,MAAM,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,IAAA,CAAK,QAAQ,IAAI,CAAA;AAC5C,EAAA,IAAI,OAAA;AACJ,EAAA,MAAA,CAAO,eAAe,UAAA,GAAa,MAAA,CAAO,eAAe,UAAA,CAAW,MAAA,CAAO,CAAC,SAAA,KAAc;AACxF,IAAA,IACE,CAACA,WAAE,cAAA,CAAe,SAAS,KAC3B,gBAAA,CAAiB,SAAS,MAAM,KAAA,IAChC,CAACA,WAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC3CA,UAAA,CAAE,qBAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EACjD;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,OAAA,GAAU,eAAA,CAAgB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA;AACpD,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AACD,EAAA,OAAOA,UAAA,CAAE,UAAA;AAAA,IACPA,UAAA,CAAE,iBAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,QACEA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAA,EAAGA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AAAA,QACzFA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,UACxBA,WAAE,sBAAA,CAAuBA,UAAA,CAAE,wBAAwB,EAAC,EAAG,MAAM,CAAC;AAAA,SAChE;AAAA,QACA,GAAI,OAAA,GACA,CAACA,UAAA,CAAE,aAAaA,UAAA,CAAE,aAAA,CAAc,SAAS,CAAA,EAAGA,WAAE,sBAAA,CAAuB,OAAO,CAAC,CAAC,IAC9E,EAAC;AAAA,QACLA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,UACxBA,UAAA,CAAE,sBAAA;AAAA,YACAA,UAAA,CAAE,eAAA,CAAgB,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,gBAAA,CAAiB,KAAK,CAAC,CAAC;AAAA;AACvE,SACF;AAAA,QACAA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,UAAU,CAAA;AAAA,UAC1BA,WAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,QAAQ,CAAC;AAAA,SAC1D;AAAA,QACAA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,UAAU,CAAA;AAAA,UAC1BA,UAAA,CAAE,sBAAA;AAAA,YACAA,WAAE,eAAA,CAAgB,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,wBAAwB,CAAC;AAAA;AACrE;AACF,OACF;AAAA,MACA;AAAA,KACF;AAAA,IACA,IAAA;AAAA,IACA,EAAC;AAAA,IACD;AAAA,GACF;AACF;AAEA,SAAS,4BACP,MAAA,EACA,QAAA,EACA,gBAAA,mBAAuE,IAAI,KAAI,EAC3D;AACpB,EAAA,OAAOA,WAAE,gBAAA,CAAiB;AAAA,IACxBA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,QAAQ,CAAA;AAAA,MACrBA,WAAE,uBAAA,CAAwB,IAAI,qBAAA,CAAsB,MAAA,EAAQ,gBAAgB,CAAC;AAAA,KAC/E;AAAA,IACAA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,UAAU,CAAA;AAAA,MACvBA,UAAA,CAAE,eAAA,CAAgB,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,KAAY,qBAAA,CAAsB,OAAA,EAAS,EAAE,CAAC,CAAC;AAAA;AACjF,GACD,CAAA;AACH;AAEA,SAAS,uBAAA,CACP,cACA,IAAA,EACc;AACd,EAAA,MAAM,OAAOA,UAAA,CAAE,mBAAA;AAAA,IACbA,UAAA,CAAE,aAAA,CAAc,YAAA,CAAa,IAAI,CAAA;AAAA,IACjCA,UAAA,CAAE,cAAc,iBAAiB;AAAA,GACnC;AACA,EAAA,MAAM,UAAA,GAA+B;AAAA,IACnCA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAA,EAAGA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AAAA,IACzFA,UAAA,CAAE,YAAA;AAAA,MACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,MACxBA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,uBAAA,CAAwB,EAAC,EAAGA,UAAA,CAAE,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,IAAI,CAAC,CAAC;AAAA,KACxF;AAAA,IACAA,UAAA,CAAE,YAAA;AAAA,MACAA,UAAA,CAAE,cAAc,MAAM,CAAA;AAAA,MACtBA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,uBAAA,CAAwB,IAAI,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAC,CAAC;AAAA;AACpF,GACF;AACA,EAAA,IAAI,IAAA,CAAK,OAAA,EAAS,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,aAAaA,UAAA,CAAE,aAAA,CAAc,SAAS,CAAC,CAAC,CAAA;AAC5E,EAAA,IAAI,KAAK,MAAA,EAAQ;AACf,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,YAAA;AAAA,QACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,QACxBA,UAAA,CAAE,sBAAA;AAAA,UACA,4BAA4B,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,cAAA,EAAgB,KAAK,gBAAgB;AAAA;AACrF;AACF,KACF;AAAA,EACF;AACA,EAAA,IAAI,KAAK,KAAA,EAAO;AACd,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,YAAA;AAAA,QACAA,UAAA,CAAE,cAAc,OAAO,CAAA;AAAA,QACvBA,UAAA,CAAE,sBAAA;AAAA,UACA,4BAA4B,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,aAAA,EAAe,KAAK,gBAAgB;AAAA;AACnF;AACF,KACF;AAAA,EACF;AACA,EAAA,OAAOA,UAAA,CAAE,UAAA,CAAWA,UAAA,CAAE,iBAAA,CAAkB,IAAA,EAAM,UAAA,EAAY,IAAI,CAAA,EAAG,IAAA,EAAM,EAAC,EAAG,IAAI,CAAA;AACjF;AAEA,SAAS,sBAAA,CACP,KAAA,EACA,gBAAA,mBAAuE,IAAI,KAAI,EAC3D;AACpB,EAAA,MAAM,UAAA,GAAiC;AAAA,IACrCA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,QAAQ,GAAGA,UAAA,CAAE,cAAA,CAAe,KAAA,CAAM,MAAM,CAAC,CAAA;AAAA,IACvEA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,WAAE,uBAAA,CAAwB,IAAI,eAAA,CAAgB,KAAA,CAAM,IAAI,CAAC;AAAA;AAC3D,GACF;AACA,EAAA,IAAI,MAAM,OAAA,EAAS;AACjB,IAAA,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,SAAS,CAAA,EAAGA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC,CAAC,CAAA;AAAA,EACnF;AACA,EAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,QAAQ,CAAA;AAAA,QACrB,2BAAA,CAA4B,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,gBAAgB,gBAAgB;AAAA;AAClF,KACF;AAAA,EACF;AACA,EAAA,IAAI,MAAM,KAAA,EAAO;AACf,IAAA,UAAA,CAAW,IAAA;AAAA,MACTA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,OAAO,CAAA;AAAA,QACpB,2BAAA,CAA4B,KAAA,CAAM,KAAA,EAAO,KAAA,CAAM,eAAe,gBAAgB;AAAA;AAChF,KACF;AAAA,EACF;AACA,EAAA,OAAOA,UAAA,CAAE,iBAAiB,UAAU,CAAA;AACtC;AAEA,SAAS,qBAAA,CACP,MACA,gBAAA,EACoB;AACpB,EAAA,MAAM,IAAA,GACJ,KAAK,IAAA,KAAS,gCAAA,GACV,uBACA,IAAA,CAAK,IAAA,KAAS,6BACZ,cAAA,GACA,cAAA;AACR,EAAA,OAAOA,WAAE,gBAAA,CAAiB;AAAA,IACxBA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,IAC5DA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,IAAI,GAAGA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,IAC9DA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,QAAQ,CAAA;AAAA,MACrBA,UAAA,CAAE,eAAA;AAAA,QACA,IAAA,CAAK,IAAA,KAAS,gCAAA,GACV,IAAA,CAAK,OAAO,GAAA,CAAI,CAAC,KAAA,KAAU,sBAAA,CAAuB,OAAO,gBAAgB,CAAC,CAAA,GAC1E,IAAA,CAAK,SAAS,0BAAA,GACZ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,gBAAA,CAAiB,KAAA,EAAO,gBAAgB,CAAC,CAAA,GACpE,IAAA,CAAK,MAAA,CAAO,IAAI,CAAC,KAAA,KAAU,gBAAA,CAAiB,KAAA,EAAO,gBAAgB,CAAC;AAAA;AAC5E,KACF;AAAA,IACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,UAAU,GAAGA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,QAAQ,CAAC,CAAA;AAAA,IAC1EA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,UAAU,CAAA;AAAA,MACvBA,WAAE,eAAA,CAAgB,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,wBAAwB,CAAC;AAAA,KACrE;AAAA,IACA,GAAI,IAAA,CAAK,IAAA,KAAS,0BAAA,GACd,CAACA,WAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,oBAAoB,GAAGA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC,CAAC,IAC7E;AAAC,GACN,CAAA;AACH;AAEA,SAAS,gBAAA,CACP,OACA,gBAAA,EACoB;AACpB,EAAA,MAAM,KAAA,GACJ,KAAA,CAAM,SAAA,KAAc,aAAA,GAChB,sBAAA,CAAuB,OAAO,gBAAgB,CAAA,GAC9C,gBAAA,CAAiB,KAAA,EAAO,gBAAgB,CAAA;AAC9C,EAAA,KAAA,CAAM,UAAA,CAAW,OAAA;AAAA,IACfA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,GAAGA,UAAA,CAAE,aAAA,CAAc,KAAA,CAAM,SAAS,CAAC;AAAA,GACzE;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,mBAAA,CAAoB,cAA4B,IAAA,EAAqC;AAC5F,EAAA,MAAM,OAAOA,UAAA,CAAE,mBAAA;AAAA,IACbA,UAAA,CAAE,aAAA,CAAc,YAAA,CAAa,IAAI,CAAA;AAAA,IACjCA,UAAA,CAAE,cAAc,aAAa;AAAA,GAC/B;AACA,EAAA,MAAM,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,IAAA,CAAK,QAAQ,IAAI,CAAA;AAC5C,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,cAAA,CAAe,UAAA,CAAW,SAAA;AAAA,IACpD,CAAC,cAAcA,UAAA,CAAE,cAAA,CAAe,SAAS,CAAA,IAAK,gBAAA,CAAiB,SAAS,CAAA,KAAM;AAAA,GAChF;AACA,EAAA,MAAM,OAAA,GACJ,YAAA,IAAgB,CAAA,GACX,MAAA,CAAO,cAAA,CAAe,UAAA,CAAW,MAAA,CAAO,YAAA,EAAc,CAAC,CAAA,CAAE,CAAC,CAAA,GAC3D,MAAA;AACN,EAAA,MAAM,UAAA,GAAwC;AAAA,IAC5C,IAAA,EAAM,0BAAA;AAAA,IACN,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,gBAAgB,IAAA,CAAK;AAAA,GACvB;AACA,EAAA,MAAM,gBAAA,GAAmB,IAAI,GAAA,CAAI,IAAA,CAAK,gBAAgB,CAAA;AACtD,EAAA,gBAAA,CAAiB,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,UAAU,CAAA;AAC5C,EAAA,MAAM,UAAA,GAA+B;AAAA,IACnCA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAA,EAAGA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AAAA,IACzFA,UAAA,CAAE,YAAA;AAAA,MACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,MACxBA,WAAE,sBAAA,CAAuBA,UAAA,CAAE,wBAAwB,EAAC,EAAG,MAAM,CAAC;AAAA,KAChE;AAAA,IACAA,UAAA,CAAE,YAAA;AAAA,MACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,MACxBA,UAAA,CAAE,sBAAA;AAAA,QACAA,UAAA,CAAE,wBAAwB,EAAC,EAAG,sBAAsB,IAAA,CAAK,MAAA,EAAQ,gBAAgB,CAAC;AAAA;AACpF;AACF,GACF;AACA,EAAA,IAAI,SAAS,KAAA,EAAO;AAClB,IAAA,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,SAAS,CAAA,EAAGA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAC,CAAC,CAAA;AAAA,EAC9F;AACA,EAAA,OAAOA,UAAA,CAAE,UAAA,CAAWA,UAAA,CAAE,iBAAA,CAAkB,IAAA,EAAM,UAAA,EAAY,IAAI,CAAA,EAAG,IAAA,EAAM,EAAC,EAAG,IAAI,CAAA;AACjF;AAEA,SAAS,yBAAA,CACP,cACA,IAAA,EACc;AACd,EAAA,MAAM,OAAOA,UAAA,CAAE,mBAAA;AAAA,IACbA,UAAA,CAAE,aAAA,CAAc,YAAA,CAAa,IAAI,CAAA;AAAA,IACjCA,UAAA,CAAE,cAAc,mBAAmB;AAAA,GACrC;AACA,EAAA,MAAM,MAAA,GAASA,UAAA,CAAE,SAAA,CAAU,IAAA,CAAK,QAAQ,IAAI,CAAA;AAC5C,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,cAAA,CAAe,UAAA,CAAW,SAAA;AAAA,IACpD,CAAC,SAAA,KACCA,UAAA,CAAE,cAAA,CAAe,SAAS,CAAA,IAC1BA,UAAA,CAAE,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA,IAChC,SAAA,CAAU,KAAK,IAAA,KAAS;AAAA,GAC5B;AACA,EAAA,MAAM,OAAA,GACJ,YAAA,IAAgB,CAAA,GACX,MAAA,CAAO,cAAA,CAAe,UAAA,CAAW,MAAA,CAAO,YAAA,EAAc,CAAC,CAAA,CAAE,CAAC,CAAA,GAC3D,MAAA;AACN,EAAA,MAAM,UAAA,GAA+B;AAAA,IACnCA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAA,EAAGA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AAAA,IACzFA,UAAA,CAAE,YAAA;AAAA,MACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,MACxBA,WAAE,sBAAA,CAAuBA,UAAA,CAAE,wBAAwB,EAAC,EAAG,MAAM,CAAC;AAAA,KAChE;AAAA,IACAA,UAAA,CAAE,YAAA;AAAA,MACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,MACxBA,UAAA,CAAE,sBAAA;AAAA,QACAA,UAAA,CAAE,eAAA;AAAA,UACA,IAAA,CAAK,OAAO,GAAA,CAAI,CAAC,UAAU,sBAAA,CAAuB,KAAA,EAAO,IAAA,CAAK,gBAAgB,CAAC;AAAA;AACjF;AACF,KACF;AAAA,IACAA,UAAA,CAAE,YAAA;AAAA,MACAA,UAAA,CAAE,cAAc,UAAU,CAAA;AAAA,MAC1BA,WAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,QAAQ,CAAC;AAAA,KAC1D;AAAA,IACAA,UAAA,CAAE,YAAA;AAAA,MACAA,UAAA,CAAE,cAAc,UAAU,CAAA;AAAA,MAC1BA,UAAA,CAAE,sBAAA;AAAA,QACAA,WAAE,eAAA,CAAgB,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,wBAAwB,CAAC;AAAA;AACrE;AACF,GACF;AACA,EAAA,IAAI,SAAS,KAAA,EAAO;AAClB,IAAA,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,SAAS,CAAA,EAAGA,UAAA,CAAE,SAAA,CAAU,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAC,CAAC,CAAA;AAAA,EAC9F;AACA,EAAA,OAAOA,UAAA,CAAE,UAAA,CAAWA,UAAA,CAAE,iBAAA,CAAkB,IAAA,EAAM,UAAA,EAAY,IAAI,CAAA,EAAG,IAAA,EAAM,EAAC,EAAG,IAAI,CAAA;AACjF;AAEA,SAAS,6BAAA,CACP,OAAA,EACA,aAAA,EACA,WAAA,EACA,qBAAA,EAC8C;AAC9C,EAAA,MAAM,IAAA,GAAO,QAAQ,cAAA,CAAe,IAAA;AACpC,EAAA,IAAI,CAACA,WAAE,eAAA,CAAgB,IAAI,KAAK,CAAC,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,EAAG;AAC3D,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACA,EAAA,IAAI,CAAC,qBAAA,CAAsB,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG;AACzC,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,CAAA,iBAAA,EAAoB,IAAA,CAAK,IAAI,CAAA,+CAAA;AAAA,KACvC;AAAA,EACF;AACA,EAAA,IAAI,qBAAA,CAAsB,OAAO,CAAA,CAAE,MAAA,GAAS,CAAA,EAAG;AAC7C,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,CAAA,iBAAA,EAAoB,IAAA,CAAK,IAAI,CAAA,8BAAA;AAAA,KACvC;AAAA,EACF;AAEA,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,IAAA,IAAIA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,EAAG;AACrC,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA,iBAAA,EAAoB,IAAA,CAAK,IAAI,CAAA,uCAAA;AAAA,OACvC;AAAA,IACF;AACA,IAAA,MAAM,aAAA,GAAgB,iBAAiB,SAAS,CAAA;AAChD,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA,iBAAA,EAAoB,IAAA,CAAK,IAAI,CAAA,2CAAA;AAAA,OACvC;AAAA,IACF;AACA,IAAA,IAAI,aAAA,KAAkB,KAAA,IAAS,aAAA,KAAkB,KAAA,IAAS,kBAAkB,UAAA,EAAY;AACtF,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA,iBAAA,EAAoB,IAAA,CAAK,IAAI,qBAAqB,aAAa,CAAA,IAAA;AAAA,OACzE;AAAA,IACF;AACA,IAAA,IACE,CAACA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC3CA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EACjD;AACA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,UAAU,KAAA,CAAM,UAAA;AACnC,IAAA,MAAM,eAAA,GACJ,UAAA,CAAW,IAAA,CAAK,aAAa,CAAA,KAC5BA,UAAA,CAAE,yBAAA,CAA0B,UAAU,CAAA,IAAKA,UAAA,CAAE,oBAAA,CAAqB,UAAU,CAAA,CAAA;AAC/E,IAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,MAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,UAAA,EAAY,WAAW,CAAA;AACrE,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,OAAO;AAAA,UACL,QAAQ,CAAA,iBAAA,EAAoB,IAAA,CAAK,IAAI,CAAA,MAAA,EAAS,aAAa,eAAe,WAAW,CAAA;AAAA,SACvF;AAAA,MACF;AAAA,IACF;AACA,IAAA,wBAAA,CAAyB,UAAA,EAAY,aAAa,CAAA,CAAE,OAAA;AAAA,MAAQ,CAAC,UAAA,KAC3D,YAAA,CAAa,GAAA,CAAI,UAAU;AAAA,KAC7B;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,YAAA,EAAc,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK;AAAA,GACpE;AACF;AAEA,SAAS,uBAAA,CACP,YAAA,EACA,IAAA,EACA,MAAA,EACc;AACd,EAAA,MAAM,OAAOA,UAAA,CAAE,mBAAA;AAAA,IACbA,UAAA,CAAE,aAAA,CAAc,YAAA,CAAa,IAAI,CAAA;AAAA,IACjCA,UAAA,CAAE,cAAc,WAAW;AAAA,GAC7B;AACA,EAAA,OAAOA,UAAA,CAAE,UAAA;AAAA,IACPA,UAAA,CAAE,iBAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,QACEA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAA,EAAGA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AAAA,QACzFA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,UACxBA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,uBAAA,CAAwB,EAAC,EAAGA,UAAA,CAAE,SAAA,CAAU,MAAA,EAAQ,IAAI,CAAC,CAAC;AAAA;AACnF,OACF;AAAA,MACA;AAAA,KACF;AAAA,IACA,IAAA;AAAA,IACA,EAAC;AAAA,IACD;AAAA,GACF;AACF;AAWA,SAAS,uBAAA,CACP,IAAA,EACA,aAAA,EACA,WAAA,EACA,WACA,qBAAA,EACyB;AACzB,EAAA,MAAM,QAA+B,EAAC;AACtC,EAAA,MAAM,iBAAA,uBAAwB,GAAA,EAAkB;AAChD,EAAA,MAAM,sBAAA,uBAA6B,GAAA,EAAkB;AACrD,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAkB;AAC5C,EAAA,MAAM,gBAAA,uBAAuB,GAAA,EAAkB;AAC/C,EAAA,IAAI,MAAA,GAAS,CAAA;AAEb,EAAA,MAAM,iBAAA,GAAoB,CAAC,MAAA,EAAqB,YAAA,KAAmC;AACjF,IAAA,KAAA,MAAW,UAAA,IAAc,YAAA,EAAc,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA;AAAA,EAC9D,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAChB,OAAA,EACA,MAAA,EACA,iBAAA,KACmD;AACnD,IAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,IAAA,IAAI,CAAC,aAAA,CAAc,OAAO,CAAA,EAAG;AAC3B,MAAA,OAAO;AAAA,QACL,YAAA;AAAA,QACA,MAAA,EAAQ,oBACJ,yDAAA,GACA;AAAA,OACN;AAAA,IACF;AAEA,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,QAAA,IAAIA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,EAAG;AACrC,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,MAAA,EAAQ;AAAA,WACV;AAAA,QACF;AACA,QAAA,MAAM,IAAA,GAAO,iBAAiB,SAAS,CAAA;AACvC,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,MAAA,EAAQ;AAAA,WACV;AAAA,QACF;AACA,QAAA,IAAI,IAAA,KAAS,KAAA,IAAS,IAAA,KAAS,yBAAA,EAA2B;AACxD,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,MAAA,EAAQ,qBAAqB,IAAI,CAAA,yBAAA;AAAA,WACnC;AAAA,QACF;AACA,QAAA,IACE,CAACA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC3CA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,MAAM,UAAU,CAAA,IACjD,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EACpB;AACA,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,UAAA,GAAa,UAAU,KAAA,CAAM,UAAA;AACnC,QAAA,IAAI,SAAS,OAAA,EAAS;AACpB,UAAA,IAAI,CAACA,UAAA,CAAE,kBAAA,CAAmB,UAAU,CAAA,EAAG;AACrC,YAAA,OAAO;AAAA,cACL,YAAA;AAAA,cACA,MAAA,EAAQ;AAAA,aACV;AAAA,UACF;AACA,UAAA,KAAA,MAAW,QAAA,IAAY,WAAW,UAAA,EAAY;AAC5C,YAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAAK,SAAS,QAAA,EAAU;AACtD,cAAA,OAAO;AAAA,gBACL,YAAA;AAAA,gBACA,MAAA,EACE;AAAA,eACJ;AAAA,YACF;AACA,YAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAAG;AACnC,cAAA,OAAO;AAAA,gBACL,YAAA;AAAA,gBACA,MAAA,EAAQ;AAAA,eACV;AAAA,YACF;AACA,YAAA,MAAMM,YAAAA,GAAc,yBAAA,CAA0B,QAAA,CAAS,KAAA,EAAO,WAAW,CAAA;AACzE,YAAA,IAAIA,YAAAA,EAAa;AACf,cAAA,OAAO;AAAA,gBACL,YAAA;AAAA,gBACA,MAAA,EAAQ,sCAAsCA,YAAW,CAAA;AAAA,eAC3D;AAAA,YACF;AACA,YAAA,iBAAA;AAAA,cACE,YAAA;AAAA,cACA,wBAAA,CAAyB,QAAA,CAAS,KAAA,EAAO,aAAa;AAAA,aACxD;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,UAAA,EAAY,WAAW,CAAA;AACrE,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,MAAA,EAAQ,CAAA,4BAAA,EAA+B,IAAI,CAAA,YAAA,EAAe,WAAW,CAAA;AAAA,WACvE;AAAA,QACF;AACA,QAAA,iBAAA,CAAkB,YAAA,EAAc,wBAAA,CAAyB,UAAA,EAAY,aAAa,CAAC,CAAA;AAAA,MACrF;AAAA,IACF;AAEA,IAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,MAAA,IAAIN,UAAA,CAAE,aAAA,CAAc,KAAK,CAAA,EAAG;AAC1B,QAAA,IAAI,iBAAA,EAAmB;AACrB,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,MAAA,EAAQ;AAAA,WACV;AAAA,QACF;AACA,QAAA;AAAA,MACF;AAEA,MAAA,IAAIA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AACzB,QAAA,IAAI,aAAA,CAAc,KAAK,CAAA,EAAG;AACxB,UAAA,MAAM,eAAA,GAAkB,MAAA;AACxB,UAAA,MAAM,YAAA,GAAe,MAAA,EAAA;AACrB,UAAA,MAAM,WAAA,GAAc,oBAChB,MAAA,GACA,2BAAA;AAAA,YACE,KAAA;AAAA,YACA,aAAA;AAAA,YACA,WAAA;AAAA,YACA,SAAA;AAAA,YACA,YAAA;AAAA,YACA,MAAM,MAAA;AAAA,WACR;AACJ,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,KAAA,CAAM,IAAA,CAAK;AAAA,cACT,IAAA,EAAM,cAAA;AAAA,cACN,EAAA,EAAI,YAAA;AAAA,cACJ,MAAA;AAAA,cACA,cAAc,WAAA,CAAY,YAAA;AAAA,cAC1B,MAAA,EAAQ,KAAA;AAAA,cACR,QAAQ,WAAA,CAAY,MAAA;AAAA,cACpB,UAAU,WAAA,CAAY,QAAA;AAAA,cACtB,gBAAgB,WAAA,CAAY,cAAA;AAAA,cAC5B,kBAAkB,WAAA,CAAY;AAAA,aAC/B,CAAA;AACD,YAAA,KAAA,CAAM,IAAA,CAAK,GAAG,WAAA,CAAY,WAAW,CAAA;AACrC,YAAA,KAAA,MAAW,KAAA,IAAS,YAAY,MAAA,EAAQ;AACtC,cAAA,IAAI,KAAA,CAAM,cAAc,aAAA,EAAe;AACrC,gBAAA,sBAAA,CAAuB,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,cACzC,CAAA,MAAA,IAAWA,UAAA,CAAE,YAAA,CAAa,KAAA,CAAM,MAAM,CAAA,EAAG;AACvC,gBAAA,aAAA,CAAc,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,cAChC,CAAA,MAAO;AACL,gBAAA,gBAAA,CAAiB,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,cACnC;AAAA,YACF;AACA,YAAA;AAAA,UACF;AACA,UAAA,MAAA,GAAS,eAAA;AACT,UAAA,MAAM,cAAc,iBAAA,GAChB,MAAA,GACA,4BAA4B,KAAA,EAAO,aAAA,EAAe,aAAa,SAAS,CAAA;AAC5E,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,KAAA,CAAM,IAAA,CAAK;AAAA,cACT,IAAA,EAAM,cAAA;AAAA,cACN,EAAA,EAAI,MAAA,EAAA;AAAA,cACJ,MAAA;AAAA,cACA,cAAc,WAAA,CAAY,YAAA;AAAA,cAC1B,MAAA,EAAQ,KAAA;AAAA,cACR,QAAQ,WAAA,CAAY,MAAA;AAAA,cACpB,UAAU,WAAA,CAAY,QAAA;AAAA,cACtB,gBAAgB,WAAA,CAAY;AAAA,aAC7B,CAAA;AACD,YAAA,KAAA,MAAW,KAAA,IAAS,YAAY,MAAA,EAAQ;AACtC,cAAA,IAAIA,UAAA,CAAE,aAAa,KAAA,CAAM,MAAM,GAAG,aAAA,CAAc,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,mBAC3D,gBAAA,CAAiB,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA;AAAA,YACxC;AACA,YAAA;AAAA,UACF;AACA,UAAA,MAAM,qBAAA,GAAwB,MAAA;AAC9B,UAAA,MAAM,kBAAA,GAAqB,MAAA,EAAA;AAC3B,UAAA,MAAM,iBAAA,GAAoB,oBACtB,MAAA,GACA,iCAAA;AAAA,YACE,KAAA;AAAA,YACA,aAAA;AAAA,YACA,WAAA;AAAA,YACA,KAAA;AAAA,YACA,SAAA;AAAA,YACA,kBAAA;AAAA,YACA,MAAM,MAAA;AAAA,WACR;AACJ,UAAA,IAAI,iBAAA,EAAmB;AACrB,YAAA,KAAA,CAAM,IAAA,CAAK;AAAA,cACT,IAAA,EAAM,oBAAA;AAAA,cACN,EAAA,EAAI,kBAAA;AAAA,cACJ,MAAA;AAAA,cACA,cAAc,iBAAA,CAAkB,YAAA;AAAA,cAChC,MAAA,EAAQ,KAAA;AAAA,cACR,QAAQ,iBAAA,CAAkB,MAAA;AAAA,cAC1B,UAAU,iBAAA,CAAkB,QAAA;AAAA,cAC5B,gBAAgB,iBAAA,CAAkB,cAAA;AAAA,cAClC,kBAAkB,iBAAA,CAAkB;AAAA,aACrC,CAAA;AACD,YAAA,KAAA,CAAM,IAAA,CAAK,GAAI,iBAAA,CAAkB,WAAA,IAAe,EAAG,CAAA;AACnD,YAAA,KAAA,MAAW,KAAA,IAAS,kBAAkB,MAAA,EAAQ;AAC5C,cAAA,sBAAA,CAAuB,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,YACzC;AACA,YAAA;AAAA,UACF;AACA,UAAA,MAAA,GAAS,qBAAA;AACT,UAAA,MAAM,oBAAA,GAAuB,MAAA;AAC7B,UAAA,MAAM,iBAAA,GAAoB,MAAA,EAAA;AAC1B,UAAA,MAAM,eAAA,GAAkB,+BAAA;AAAA,YACtB,KAAA;AAAA,YACA,aAAA;AAAA,YACA,WAAA;AAAA,YACA,SAAA;AAAA,YACA,iBAAA;AAAA,YACA,MAAM,MAAA;AAAA,WACR;AACA,UAAA,IAAI,eAAA,EAAiB;AACnB,YAAA,KAAA,CAAM,IAAA,CAAK;AAAA,cACT,IAAA,EAAM,kBAAA;AAAA,cACN,EAAA,EAAI,iBAAA;AAAA,cACJ,MAAA;AAAA,cACA,MAAA,EAAQ,KAAA;AAAA,cACR,GAAG;AAAA,aACJ,CAAA;AACD,YAAA,KAAA,CAAM,IAAA,CAAK,GAAI,eAAA,CAAgB,WAAA,IAAe,EAAG,CAAA;AACjD,YAAA,aAAA,CAAc,IAAI,KAAK,CAAA;AACvB,YAAA;AAAA,UACF;AACA,UAAA,MAAA,GAAS,oBAAA;AACT,UAAA,MAAM,cAAA,GAAiB,MAAA;AACvB,UAAA,MAAM,WAAA,GAAc,MAAA,EAAA;AACpB,UAAA,MAAM,SAAA,GAAY,yBAAA,CAA0B,KAAA,EAAO,aAAA,EAAe,aAAa,SAAS,CAAA;AACxF,UAAA,IAAI,SAAA,EAAW;AACb,YAAA,MAAM,WAAA,GAAc,MAAA;AACpB,YAAA,MAAM,UAAA,GAAa,sCAAA;AAAA,cACjB,SAAA;AAAA,cACA,aAAA;AAAA,cACA,WAAA;AAAA,cACA,SAAA;AAAA,cACA,WAAA;AAAA,cACA,MAAM,MAAA;AAAA,aACR;AACA,YAAA,IAAI,CAAC,YAAY,MAAA,GAAS,WAAA;AAC1B,YAAA,IAAI,SAAA,CAAU,SAAA,IAAa,CAAC,UAAA,EAAY;AACtC,cAAA,MAAA,GAAS,cAAA;AACT,cAAA,MAAMU,OAAAA,GAAS,SAAA,CAAU,KAAA,EAAO,MAAA,EAAQ,iBAAiB,CAAA;AACzD,cAAA,IAAIA,QAAO,MAAA,EAAQ,OAAO,EAAE,YAAA,EAAc,MAAA,EAAQA,QAAO,MAAA,EAAO;AAChE,cAAA,iBAAA,CAAkB,YAAA,EAAcA,QAAO,YAAY,CAAA;AACnD,cAAA;AAAA,YACF;AACA,YAAA,KAAA,CAAM,IAAA,CAAK;AAAA,cACT,IAAA,EAAM,YAAA;AAAA,cACN,EAAA,EAAI,WAAA;AAAA,cACJ,MAAA;AAAA,cACA,cAAc,SAAA,CAAU,YAAA;AAAA,cACxB,MAAA,EAAQ,KAAA;AAAA,cACR,YAAY,SAAA,CAAU,UAAA;AAAA,cACtB,sBAAsB,SAAA,CAAU,oBAAA;AAAA,cAChC,uBAAuB,SAAA,CAAU,qBAAA;AAAA,cACjC,aAAa,SAAA,CAAU,WAAA;AAAA,cACvB,gBAAgB,SAAA,CAAU,cAAA;AAAA,cAC1B,GAAA,EAAK,UAAA,EAAY,GAAA,IAAO,SAAA,CAAU,GAAA;AAAA,cAClC,QAAA,EAAU,UAAA,EAAY,QAAA,IAAY,SAAA,CAAU,QAAA;AAAA,cAC5C,QAAQ,SAAA,CAAU,MAAA;AAAA,cAClB,YAAA,EAAc,UAAA,GAAa,EAAC,GAAI,SAAA,CAAU,YAAA;AAAA,cAC1C,kBAAkB,UAAA,EAAY,gBAAA;AAAA,cAC9B,QAAQ,SAAA,CAAU;AAAA,aACnB,CAAA;AACD,YAAA,KAAA,CAAM,IAAA,CAAK,GAAI,UAAA,EAAY,WAAA,IAAe,EAAG,CAAA;AAC7C,YAAA,aAAA,CAAc,IAAI,KAAK,CAAA;AACvB,YAAA;AAAA,UACF;AACA,UAAA,MAAA,GAAS,cAAA;AACT,UAAA,MAAM,MAAA,GAAS,SAAA,CAAU,KAAA,EAAO,MAAA,EAAQ,iBAAiB,CAAA;AACzD,UAAA,IAAI,OAAO,MAAA,EAAQ,OAAO,EAAE,YAAA,EAAc,MAAA,EAAQ,OAAO,MAAA,EAAO;AAChE,UAAA,iBAAA,CAAkB,YAAA,EAAc,OAAO,YAAY,CAAA;AACnD,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,mBAAA,CAAoB,KAAA,EAAO,SAAS,CAAA,EAAG;AACzC,UAAA,MAAMP,OAAAA,GAAS,iBAAA,CAAkB,KAAA,EAAO,aAAA,EAAe,WAAW,CAAA;AAClE,UAAA,IAAIA,QAAO,MAAA,EAAQ,OAAO,EAAE,YAAA,EAAc,MAAA,EAAQA,QAAO,MAAA,EAAO;AAChE,UAAA,MAAM,IAAA,GAAsB;AAAA,YAC1B,IAAA,EAAM,YAAA;AAAA,YACN,EAAA,EAAI,MAAA,EAAA;AAAA,YACJ,MAAA;AAAA,YACA,YAAA,EAAcA,OAAAA,CAAO,YAAA,IAAgB,EAAC;AAAA,YACtC,MAAA,EAAQ,KAAA;AAAA,YACR,MAAA,EAAQ;AAAA,WACV;AACA,UAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,UAAA,aAAA,CAAc,IAAI,KAAK,CAAA;AACvB,UAAA;AAAA,QACF;AAEA,QAAA,MAAMA,OAAAA,GAAS,6BAAA;AAAA,UACb,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAIA,QAAO,MAAA,EAAQ,OAAO,EAAE,YAAA,EAAc,MAAA,EAAQA,QAAO,MAAA,EAAO;AAChE,QAAA,iBAAA,CAAkB,IAAI,KAAK,CAAA;AAC3B,QAAA,IAAA,CAAKA,OAAAA,CAAO,YAAA,IAAgB,EAAC,EAAG,SAAS,CAAA,EAAG;AAC1C,UAAA,KAAA,CAAM,IAAA,CAAK;AAAA,YACT,IAAA,EAAM,WAAA;AAAA,YACN,EAAA,EAAI,MAAA,EAAA;AAAA,YACJ,MAAA;AAAA,YACA,YAAA,EAAcA,OAAAA,CAAO,YAAA,IAAgB,EAAC;AAAA,YACtC,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH;AACA,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,CAACH,WAAE,wBAAA,CAAyB,KAAK,KAAKA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AAClF,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,aAAa,KAAA,CAAM,UAAA;AACzB,MAAA,MAAM,KAAA,GAAQ,sBAAsB,UAAU,CAAA;AAC9C,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,KAAA,CAAM,IAAA,EAAM,WAAW,CAAA;AACrE,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,MAAA,EAAQ,qCAAqC,WAAW,CAAA;AAAA,WAC1D;AAAA,QACF;AACA,QAAA,MAAM,IAAA,GAA6B;AAAA,UACjC,IAAA,EAAM,aAAA;AAAA,UACN,EAAA,EAAI,MAAA,EAAA;AAAA,UACJ,MAAA;AAAA,UACA,YAAA,EAAc,wBAAA,CAAyB,KAAA,CAAM,IAAA,EAAM,aAAa,CAAA;AAAA,UAChE,MAAA,EAAQ;AAAA,SACV;AACA,QAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,QAAA,sBAAA,CAAuB,IAAI,UAAU,CAAA;AACrC,QAAA,MAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,IAAA,CAAK,YAAY,CAAA;AACnD,QAAA,KAAA,MAAW,MAAA,IAAU,MAAM,QAAA,EAAU;AACnC,UAAA,MAAM,MAAA,GAAS,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,IAAI,IAAI,CAAA;AAC9C,UAAA,IAAI,OAAO,MAAA,EAAQ,OAAO,EAAE,YAAA,EAAc,MAAA,EAAQ,OAAO,MAAA,EAAO;AAChE,UAAA,iBAAA,CAAkB,iBAAA,EAAmB,OAAO,YAAY,CAAA;AAAA,QAC1D;AACA,QAAA,IAAA,CAAK,YAAA,GAAe,CAAC,GAAG,iBAAiB,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAC7E,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,SAAA,CAAU,UAAU,CAAA,EAAG;AACzB,QAAA,MAAMG,OAAAA,GAAS,cAAA,CAAe,UAAA,EAAY,aAAA,EAAe,WAAW,CAAA;AACpE,QAAA,IAAIA,QAAO,MAAA,EAAQ,OAAO,EAAE,YAAA,EAAc,MAAA,EAAQA,QAAO,MAAA,EAAO;AAChE,QAAA,KAAA,CAAM,IAAA,CAAK;AAAA,UACT,IAAA,EAAM,YAAA;AAAA,UACN,EAAA,EAAI,MAAA,EAAA;AAAA,UACJ,MAAA;AAAA,UACA,YAAA,EAAcA,OAAAA,CAAO,YAAA,IAAgB,EAAC;AAAA,UACtC,MAAA,EAAQ,UAAA;AAAA,UACR,MAAA,EAAQ;AAAA,SACT,CAAA;AACD,QAAA,gBAAA,CAAiB,IAAI,UAAU,CAAA;AAC/B,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,IAAI,CAAC,gBAAA,CAAiB,UAAA,EAAY,aAAA,EAAe,WAAW,CAAA,EAAG;AAC7D,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,MAAA,EAAQ;AAAA,WACV;AAAA,QACF;AACA,QAAA,iBAAA,CAAkB,YAAA,EAAc,wBAAA,CAAyB,UAAA,EAAY,aAAa,CAAC,CAAA;AAAA,MACrF;AAAA,IACF;AAEA,IAAA,OAAO,EAAE,YAAA,EAAa;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,MAAA;AAC5B,EAAA,MAAM,gBAAA,GAAmB,MAAA,EAAA;AACzB,EAAA,MAAM,eAAA,GAAkB,2BAAA;AAAA,IACtB,IAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAM,MAAA;AAAA,GACR;AACA,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,IAAA,EAAM,cAAA;AAAA,MACN,EAAA,EAAI,gBAAA;AAAA,MACJ,cAAc,eAAA,CAAgB,YAAA;AAAA,MAC9B,MAAA,EAAQ,IAAA;AAAA,MACR,QAAQ,eAAA,CAAgB,MAAA;AAAA,MACxB,UAAU,eAAA,CAAgB,QAAA;AAAA,MAC1B,gBAAgB,eAAA,CAAgB,cAAA;AAAA,MAChC,kBAAkB,eAAA,CAAgB;AAAA,KACnC,CAAA;AACD,IAAA,KAAA,CAAM,IAAA,CAAK,GAAG,eAAA,CAAgB,WAAW,CAAA;AACzC,IAAA,KAAA,MAAW,KAAA,IAAS,gBAAgB,MAAA,EAAQ;AAC1C,MAAA,IAAI,KAAA,CAAM,cAAc,aAAA,EAAe;AACrC,QAAA,sBAAA,CAAuB,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,MACzC,CAAA,MAAA,IAAWH,UAAA,CAAE,YAAA,CAAa,KAAA,CAAM,MAAM,CAAA,EAAG;AACvC,QAAA,aAAA,CAAc,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,MAChC,CAAA,MAAO;AACL,QAAA,gBAAA,CAAiB,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,MACnC;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,iBAAA;AAAA,MACA,sBAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAA,GAAS,mBAAA;AAET,EAAA,MAAM,aAAa,2BAAA,CAA4B,IAAA,EAAM,aAAA,EAAe,WAAA,EAAa,WAAW,IAAI,CAAA;AAChG,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,IAAA,EAAM,cAAA;AAAA,MACN,EAAA,EAAI,MAAA,EAAA;AAAA,MACJ,cAAc,UAAA,CAAW,YAAA;AAAA,MACzB,MAAA,EAAQ,IAAA;AAAA,MACR,QAAQ,UAAA,CAAW,MAAA;AAAA,MACnB,UAAU,UAAA,CAAW,QAAA;AAAA,MACrB,gBAAgB,UAAA,CAAW;AAAA,KAC5B,CAAA;AACD,IAAA,KAAA,MAAW,KAAA,IAAS,WAAW,MAAA,EAAQ;AACrC,MAAA,IAAIA,UAAA,CAAE,aAAa,KAAA,CAAM,MAAM,GAAG,aAAA,CAAc,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,WAC3D,gBAAA,CAAiB,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA;AAAA,IACxC;AACA,IAAA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,iBAAA;AAAA,MACA,sBAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,yBAAA,GAA4B,MAAA;AAClC,EAAA,MAAM,sBAAA,GAAyB,MAAA,EAAA;AAC/B,EAAA,MAAM,qBAAA,GAAwB,iCAAA;AAAA,IAC5B,IAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA;AAAA,IACA,sBAAA;AAAA,IACA,MAAM,MAAA;AAAA,GACR;AACA,EAAA,IAAI,qBAAA,EAAuB;AACzB,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,IAAA,EAAM,oBAAA;AAAA,MACN,EAAA,EAAI,sBAAA;AAAA,MACJ,cAAc,qBAAA,CAAsB,YAAA;AAAA,MACpC,MAAA,EAAQ,IAAA;AAAA,MACR,QAAQ,qBAAA,CAAsB,MAAA;AAAA,MAC9B,UAAU,qBAAA,CAAsB,QAAA;AAAA,MAChC,gBAAgB,qBAAA,CAAsB,cAAA;AAAA,MACtC,kBAAkB,qBAAA,CAAsB;AAAA,KACzC,CAAA;AACD,IAAA,KAAA,CAAM,IAAA,CAAK,GAAI,qBAAA,CAAsB,WAAA,IAAe,EAAG,CAAA;AACvD,IAAA,KAAA,MAAW,KAAA,IAAS,sBAAsB,MAAA,EAAQ;AAChD,MAAA,sBAAA,CAAuB,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,IACzC;AACA,IAAA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,iBAAA;AAAA,MACA,sBAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAA,GAAS,yBAAA;AAET,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,IAAA,EAAM,MAAA,EAAW,KAAK,CAAA;AAC/C,EAAA,IAAI,OAAO,MAAA,EAAQ,OAAO,EAAE,MAAA,EAAQ,OAAO,MAAA,EAAO;AAClD,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,iBAAA;AAAA,IACA,sBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,wBAAA,CACP,YAAA,EACA,IAAA,EACA,MAAA,EACc;AACd,EAAA,MAAM,OAAOA,UAAA,CAAE,mBAAA;AAAA,IACbA,UAAA,CAAE,aAAA,CAAc,YAAA,CAAa,IAAI,CAAA;AAAA,IACjCA,UAAA,CAAE,cAAc,aAAa;AAAA,GAC/B;AACA,EAAA,OAAOA,UAAA,CAAE,UAAA;AAAA,IACPA,UAAA,CAAE,iBAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,QACEA,UAAA,CAAE,YAAA,CAAaA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAA,EAAGA,UAAA,CAAE,sBAAA,CAAuBA,UAAA,CAAE,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AAAA,QACzFA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,QAAQ,CAAA;AAAA,UACxBA,UAAA,CAAE,uBAAuBA,UAAA,CAAE,uBAAA,CAAwB,EAAC,EAAG,eAAA,CAAgB,MAAM,CAAC,CAAC;AAAA;AACjF,OACF;AAAA,MACA;AAAA,KACF;AAAA,IACA,IAAA;AAAA,IACA,EAAC;AAAA,IACD;AAAA,GACF;AACF;AAEA,SAAS,qBAAA,CACP,MACA,KAAA,EACA,YAAA,EACA,WACA,mBAAA,EACA,kCAAA,EACA,mCAAA,EACA,oCAAA,EACA,mCAAA,EACc;AACd,EAAA,MAAM,eAAe,IAAI,GAAA;AAAA,IACvB,KAAA,CAAM,IAAI,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAI,CAAC;AAAA,GACzC;AACA,EAAA,MAAM,QAAA,GAAW,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AACtC,EAAA,IAAI,QAAA,EAAU,SAAS,cAAA,EAAgB;AACrC,IAAA,OAAO,mBAAA,CAAoB,cAAc,QAAQ,CAAA;AAAA,EACnD;AACA,EAAA,IAAI,QAAA,EAAU,SAAS,cAAA,EAAgB;AACrC,IAAA,OAAO,mBAAA,CAAoB,cAAc,QAAQ,CAAA;AAAA,EACnD;AACA,EAAA,IAAI,QAAA,EAAU,SAAS,oBAAA,EAAsB;AAC3C,IAAA,OAAO,yBAAA,CAA0B,cAAc,QAAQ,CAAA;AAAA,EACzD;AAEA,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,KAAgC;AAC7C,IAAA,OAAA,CAAQ,QAAA,GAAW,OAAA,CAAQ,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,KAAU;AACjD,MAAA,IAAIA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,EAAG;AACzB,QAAA,MAAMQ,KAAAA,GAAO,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA;AACnC,QAAA,IAAIA,KAAAA,EAAM,SAAS,kBAAA,EAAoB;AACrC,UAAA,OAAO,uBAAA,CAAwB,cAAcA,KAAI,CAAA;AAAA,QACnD;AACA,QAAA,IAAIA,KAAAA,EAAM,SAAS,cAAA,EAAgB;AACjC,UAAA,OAAO,mBAAA,CAAoB,cAAcA,KAAI,CAAA;AAAA,QAC/C;AACA,QAAA,IAAIA,KAAAA,EAAM,SAAS,YAAA,EAAc;AAC/B,UAAA,OAAO,iBAAA;AAAA,YACL,YAAA;AAAA,YACAA,KAAAA;AAAA,YACA,mBAAA;AAAA,YACA,kCAAA;AAAA,YACA,mCAAA;AAAA,YACA,oCAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AACA,QAAA,IAAIA,KAAAA,EAAM,SAAS,cAAA,EAAgB;AACjC,UAAA,OAAO,mBAAA,CAAoB,cAAcA,KAAI,CAAA;AAAA,QAC/C;AACA,QAAA,IAAIA,KAAAA,EAAM,SAAS,oBAAA,EAAsB;AACvC,UAAA,OAAO,yBAAA,CAA0B,cAAcA,KAAI,CAAA;AAAA,QACrD;AACA,QAAA,IAAIA,KAAAA,EAAM,SAAS,WAAA,EAAa;AAC9B,UAAA,OAAO,uBAAA,CAAwB,YAAA,EAAcA,KAAAA,EAAM,KAAK,CAAA;AAAA,QAC1D;AACA,QAAA,IAAIA,OAAM,IAAA,KAAS,YAAA,IAAgB,mBAAA,CAAoB,KAAA,EAAO,SAAS,CAAA,EAAG;AACxE,UAAA,OAAO,iBAAA,CAAkB,YAAA,EAAcA,KAAAA,EAAM,KAAK,CAAA;AAAA,QACpD;AACA,QAAA,IAAI,aAAA,CAAc,KAAK,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA;AACrC,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI,CAACR,WAAE,wBAAA,CAAyB,KAAK,KAAKA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AAClF,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,GAAA,CAAI,KAAA,CAAM,UAAU,CAAA;AAC9C,MAAA,IAAI,IAAA,EAAM,SAAS,aAAA,EAAe;AAChC,QAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,KAAA,CAAM,UAAU,CAAA;AACpD,QAAA,KAAA,MAAW,UAAU,KAAA,EAAO,QAAA,IAAY,EAAC,QAAS,MAAM,CAAA;AACxD,QAAA,OAAO,wBAAA,CAAyB,YAAA,EAAc,IAAA,EAAM,KAAA,CAAM,UAAU,CAAA;AAAA,MACtE;AACA,MAAA,IAAI,IAAA,EAAM,SAAS,YAAA,EAAc;AAC/B,QAAA,OAAO,iBAAA,CAAkB,YAAA,EAAc,IAAA,EAAM,KAAA,CAAM,UAAU,CAAA;AAAA,MAC/D;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,KAAA,CAAM,IAAI,CAAA;AACV,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,2BAA2B,QAAA,EAA2C;AAC7E,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAoB;AAC7C,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,IAAI,OAAA,CAAQ,SAAS,OAAA,EAAS;AAC9B,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AACjC,IAAA,IAAI,MAAA,GAAS,YAAA,CAAa,GAAA,CAAI,GAAG,CAAA;AACjC,IAAA,IAAI,WAAW,MAAA,EAAW;AACxB,MAAA,MAAA,GAAS,YAAA,CAAa,IAAA;AACtB,MAAA,YAAA,CAAa,GAAA,CAAI,KAAK,MAAM,CAAA;AAAA,IAC9B;AACA,IAAA,OAAA,CAAQ,MAAA,GAAS,MAAA;AAAA,EACnB;AACF;AAEA,SAAS,yBAAyB,QAAA,EAA2C;AAC3E,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,IAAI,QAAQ,IAAA,KAAS,OAAA,IAAW,OAAA,CAAQ,YAAA,CAAa,SAAS,CAAA,EAAG;AACjE,IAAA,IAAI,aAAA,GAAgB,KAAA;AACpB,IAAAC,aAAA,CAAS,eAAeD,UAAA,CAAE,SAAA,CAAU,QAAQ,KAAA,EAAO,IAAI,CAAC,CAAA,EAAG;AAAA,MACzD,sBAAsB,IAAA,EAAM;AAC1B,QAAA,aAAA,GAAgB,IAAA;AAChB,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ,CAAA;AAAA,MACA,kBAAkB,IAAA,EAAM;AACtB,QAAA,aAAA,GAAgB,IAAA;AAChB,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ,CAAA;AAAA,MACA,uBAAuB,IAAA,EAAM;AAC3B,QAAA,aAAA,GAAgB,IAAA;AAChB,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ,CAAA;AAAA,MACA,yBAAyB,IAAA,EAAM;AAC7B,QAAA,aAAA,GAAgB,IAAA;AAChB,QAAA,IAAA,CAAK,IAAA,EAAK;AAAA,MACZ;AAAA,KACD,CAAA;AACD,IAAA,IAAI,aAAA,UAAuB,QAAA,GAAW,SAAA;AAAA,EACxC;AACF;AAEA,SAAS,yBAAA,CACP,IAAA,EACA,QAAA,EACA,YAAA,EACA,aAAA,EACc;AACd,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAoB;AAC7C,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,OAAA,IAAW,OAAA,CAAQ,WAAW,MAAA,EAAW;AAC5D,MAAA,YAAA,CAAa,IAAI,OAAA,CAAQ,IAAA,CAAK,KAAK,GAAG,CAAA,EAAG,QAAQ,MAAM,CAAA;AAAA,IACzD;AAAA,EACF;AAEA,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,EAAuB,IAAA,KAAyB;AAC7D,IAAA,MAAM,SAAS,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA;AAC9C,IAAA,IAAI,MAAA,KAAW,MAAA,IAAa,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC3C,MAAA,OAAA,CAAQ,eAAe,UAAA,CAAW,IAAA;AAAA,QAChCA,UAAA,CAAE,YAAA;AAAA,UACAA,UAAA,CAAE,cAAc,KAAK,CAAA;AAAA,UACrBA,UAAA,CAAE,sBAAA;AAAA,YACAA,UAAA,CAAE,cAAA;AAAA,cACAA,UAAA,CAAE,iBAAiBA,UAAA,CAAE,SAAA,CAAU,YAAY,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,cACpE,CAACA,UAAA,CAAE,cAAA,CAAe,MAAM,CAAC;AAAA;AAC3B;AACF;AACF,OACF;AAAA,IACF;AAEA,IAAA,IAAI,YAAA,GAAe,CAAA;AACnB,IAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,MAAA,IAAI,CAACA,WAAE,YAAA,CAAa,KAAK,KAAK,CAAC,aAAA,CAAc,KAAK,CAAA,EAAG;AACrD,MAAA,IAAI,aAAA,CAAc,GAAA,CAAI,KAAK,CAAA,EAAG;AAC9B,MAAA,KAAA,CAAM,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,YAAY,CAAC,CAAA;AACpC,MAAA,YAAA,IAAgB,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,KAAA,CAAM,IAAA,EAAM,EAAE,CAAA;AACd,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,gBACP,IAAA,EACA,aAAA,EACA,aACA,sBAAA,EACA,gBAAA,EACA,eACA,iBAAA,EACkD;AAClD,EAAA,MAAM,WAA6B,EAAC;AAEpC,EAAA,MAAM,YAAA,GAAe,CAAC,UAAA,EAA0B,IAAA,KAAuC;AACrF,IAAA,IAAI,CAACA,UAAA,CAAE,kBAAA,CAAmB,UAAU,CAAA,EAAG;AACrC,MAAA,OAAO,4DAAA;AAAA,IACT;AACA,IAAA,KAAA,MAAW,QAAA,IAAY,WAAW,UAAA,EAAY;AAC5C,MAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,QAAQ,CAAA,IAAK,SAAS,QAAA,EAAU;AACtD,QAAA,OAAO,iFAAA;AAAA,MACT;AACA,MAAA,MAAM,OAAOA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,GAAG,IACpC,QAAA,CAAS,GAAA,CAAI,IAAA,GACbA,UAAA,CAAE,gBAAgB,QAAA,CAAS,GAAG,CAAA,GAC5B,QAAA,CAAS,IAAI,KAAA,GACb,MAAA;AACN,MAAA,IAAI,CAAC,IAAA,IAAS,IAAA,CAAK,QAAA,CAAS,GAAG,KAAK,CAAC,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA,EAAI;AAC3D,QAAA,OAAO,2EAAA;AAAA,MACT;AACA,MAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAAG;AACnC,QAAA,OAAO,2BAA2B,IAAI,CAAA,6BAAA,CAAA;AAAA,MACxC;AACA,MAAA,MAAM,YAAA,GAAe,wBAAA,CAAyB,QAAA,CAAS,KAAA,EAAO,aAAa,CAAA;AAC3E,MAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC/B,MAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,QAAA,CAAS,KAAA,EAAO,WAAW,CAAA;AACzE,MAAA,IAAI,WAAA,EAAa,OAAO,CAAA,wBAAA,EAA2B,IAAI,eAAe,WAAW,CAAA,CAAA;AACjF,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,YAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA,EAAO,eAAA,CAAgB,QAAA,CAAS,KAAK;AAAA,OACtC,CAAA;AAAA,IACH;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,EAAuB,IAAA,KAAuC;AAC3E,IAAA,MAAM,GAAA,GAAM,QAAQ,cAAA,CAAe,IAAA;AACnC,IAAA,IAAI,CAACA,UAAA,CAAE,eAAA,CAAgB,GAAG,CAAA,IAAK,CAAC,QAAA,CAAS,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AACvD,MAAA,OAAO,qDAAA;AAAA,IACT;AAEA,IAAA,KAAA,MAAW,SAAA,IAAa,OAAA,CAAQ,cAAA,CAAe,UAAA,EAAY;AACzD,MAAA,IAAIA,UAAA,CAAE,oBAAA,CAAqB,SAAS,CAAA,EAAG,OAAO,6CAAA;AAC9C,MAAA,MAAM,IAAA,GAAO,iBAAiB,SAAS,CAAA;AACvC,MAAA,IAAI,CAAC,MAAM,OAAO,iDAAA;AAClB,MAAA,IAAI,IAAA,KAAS,KAAA,IAAS,IAAA,KAAS,yBAAA,EAA2B;AACxD,QAAA,OAAO,GAAG,IAAI,CAAA,yBAAA,CAAA;AAAA,MAChB;AACA,MAAA,IACE,CAACA,UAAA,CAAE,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA,IAC3CA,UAAA,CAAE,oBAAA,CAAqB,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA,EACjD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,GAAa,UAAU,KAAA,CAAM,UAAA;AACnC,MAAA,MAAM,YAAA,GAAe,wBAAA,CAAyB,UAAA,EAAY,aAAa,CAAA;AACvE,MAAA,IAAI,aAAa,MAAA,KAAW,CAAA,IAAK,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EAAG;AACxD,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,MAAMO,OAAAA,GAAS,YAAA,CAAa,UAAA,EAAY,IAAI,CAAA;AAC5C,QAAA,IAAIA,SAAQ,OAAOA,OAAAA;AACnB,QAAA;AAAA,MACF;AACA,MAAA,IAAI,IAAA,KAAS,UAAA,IAAc,IAAA,KAAS,KAAA,EAAO;AACzC,QAAA,OAAO,YAAY,IAAI,CAAA,+BAAA,CAAA;AAAA,MACzB;AACA,MAAA,MAAM,WAAA,GAAc,yBAAA,CAA0B,UAAA,EAAY,WAAW,CAAA;AACrE,MAAA,IAAI,WAAA,EAAa,OAAO,CAAA,SAAA,EAAY,IAAI,uBAAuB,WAAW,CAAA,CAAA;AAC1E,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,QACd,YAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA,EAAO,gBAAgB,UAAU;AAAA,OAClC,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,cAAA,GAAiB,QAAQ,QAAA,CAAS,MAAA;AAAA,MACtC,CAAC,KAAA,KACCP,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,IAAK,aAAA,CAAc,KAAK,CAAA,IAAK,CAAC,aAAA,CAAc,GAAA,CAAI,KAAK;AAAA,KAC7E;AACA,IAAA,MAAM,kBAAA,GAAqB,QAAQ,QAAA,CAAS,MAAA;AAAA,MAAO,CAAC,KAAA,KAClDA,UAAA,CAAE,wBAAA,CAAyB,KAAK;AAAA,KAClC;AACA,IAAA,KAAA,MAAW,SAAS,kBAAA,EAAoB;AACtC,MAAA,IAAIA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AAC9C,MAAA,IAAI,sBAAA,CAAuB,GAAA,CAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AAClD,MAAA,IAAI,gBAAA,CAAiB,GAAA,CAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AAC5C,MAAA,IAAI,CAAC,gBAAA,CAAiB,KAAA,CAAM,UAAA,EAAY,aAAA,EAAe,WAAW,CAAA,EAAG;AACnE,QAAA,OAAO,uDAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,MAAM,eAAA,GAAkB,QAAQ,QAAA,CAAS,IAAA;AAAA,MACvC,CAAC,UAAUA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,IAAK,aAAA,CAAc,IAAI,KAAK;AAAA,KAC7D;AACA,IAAA,MAAM,mBAAA,GAAsB,QAAQ,QAAA,CAAS,IAAA;AAAA,MAC3C,CAAC,UAAUA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,IAAK,iBAAA,CAAkB,IAAI,KAAK;AAAA,KACjE;AACA,IAAA,MAAM,gBAAA,GACJ,eAAA,IACA,mBAAA,IACA,kBAAA,CAAmB,IAAA;AAAA,MACjB,CAAC,KAAA,KACC,CAACA,UAAA,CAAE,oBAAA,CAAqB,MAAM,UAAU,CAAA,KACvC,sBAAA,CAAuB,GAAA,CAAI,MAAM,UAAU,CAAA,IAAK,gBAAA,CAAiB,GAAA,CAAI,MAAM,UAAU,CAAA;AAAA,KAC1F;AACF,IAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,IAAK,CAAC,gBAAA,EAAkB;AACpD,MAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,MAAA,MAAM,QAAwB,EAAC;AAC/B,MAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,QAAA,IAAIA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAA,EAAG;AACtB,UAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA;AACrC,UAAA,IAAI,MAAM,KAAA,CAAM,IAAA,CAAKA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,QAC5C,CAAA,MAAA,IAAWA,UAAA,CAAE,wBAAA,CAAyB,KAAK,CAAA,IAAK,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,CAAA,EAAG;AACzF,UAAA,wBAAA,CAAyB,KAAA,CAAM,UAAA,EAAY,aAAa,CAAA,CAAE,OAAA;AAAA,YAAQ,CAAC,UAAA,KACjE,YAAA,CAAa,GAAA,CAAI,UAAU;AAAA,WAC7B;AACA,UAAA,KAAA,CAAM,IAAA,CAAK,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,QAC9C;AAAA,MACF;AACA,MAAA,IAAI,YAAA,CAAa,OAAO,CAAA,EAAG;AACzB,QAAA,QAAA,CAAS,IAAA,CAAK;AAAA,UACZ,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAAA,UACd,YAAA,EAAc,CAAC,GAAG,YAAY,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,GAAO,KAAK,CAAA;AAAA,UAClE,KAAA,EAAOA,UAAA,CAAE,eAAA,CAAgB,KAAK;AAAA,SAC/B,CAAA;AAAA,MACH;AAAA,IACF,CAAA,MAAO;AACL,MAAA,KAAA,MAAW,SAAS,kBAAA,EAAoB;AACtC,QAAA,IACE,CAACA,UAAA,CAAE,oBAAA,CAAqB,KAAA,CAAM,UAAU,KACxC,CAAC,sBAAA,CAAuB,GAAA,CAAI,KAAA,CAAM,UAAU,CAAA,IAC5C,CAAC,gBAAA,CAAiB,GAAA,CAAI,KAAA,CAAM,UAAU,CAAA,IACtC,wBAAA,CAAyB,MAAM,UAAA,EAAY,aAAa,CAAA,CAAE,MAAA,GAAS,CAAA,EACnE;AACA,UAAA,OAAO,gEAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,IAAI,YAAA,GAAe,CAAA;AACnB,MAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,QAAA,EAAU;AACpC,QAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,KAAK,CAAA,IAAK,CAAC,aAAA,CAAc,KAAK,CAAA,IAAK,aAAA,CAAc,GAAA,CAAI,KAAK,CAAA,EAAG;AACjF,QAAA,MAAMO,UAAS,KAAA,CAAM,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,YAAY,CAAC,CAAA;AACnD,QAAA,IAAIA,SAAQ,OAAOA,OAAAA;AACnB,QAAA,YAAA,IAAgB,CAAA;AAAA,MAClB;AAAA,IACF;AAEA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,EAAM,EAAE,CAAA;AAC7B,EAAA,OAAO,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAE,QAAA,EAAS;AAC1C;AAEA,SAAS,iBAAiB,UAAA,EAAyC;AACjE,EAAA,MAAM,KAAA,GAAQP,UAAA,CAAE,UAAA,CAAW,UAAU,CAAA;AACrC,EAAA,MAAM,cAAc,UAAA,GAAa,eAAA,CAAgB,UAAU,CAAA,GAAIA,UAAA,CAAE,WAAW,WAAW,CAAA;AACvF,EAAA,OAAOA,UAAA,CAAE,cAAA;AAAA,IACPA,UAAA,CAAE,uBAAA;AAAA,MACA,EAAC;AAAA,MACDA,WAAE,cAAA,CAAe;AAAA,QACfA,UAAA,CAAE,oBAAoB,OAAA,EAAS,CAACA,WAAE,kBAAA,CAAmB,KAAA,EAAO,WAAW,CAAC,CAAC,CAAA;AAAA,QACzEA,UAAA,CAAE,eAAA;AAAA,UACAA,UAAA,CAAE,qBAAA;AAAA,YACAA,UAAA,CAAE,gBAAA;AAAA,cACA,KAAA;AAAA,cACAA,WAAE,eAAA,CAAgB,QAAA,EAAUA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,cAC9CA,UAAA,CAAE,cAAc,UAAU;AAAA,aAC5B;AAAA,YACAA,WAAE,cAAA,CAAeA,UAAA,CAAE,UAAU,KAAK,CAAA,EAAG,EAAE,CAAA;AAAA,YACvCA,UAAA,CAAE,UAAU,KAAK;AAAA;AACnB;AACF,OACD;AAAA,KACH;AAAA,IACA;AAAC,GACH;AACF;AAEA,SAAS,sBACP,IAAA,EACoB;AACpB,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AACpC,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO;AAAA,MACL,mBAAA,EAAqB,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,OAAO,CAAA;AAAA,MAC7D,iBAAA,sBAAuB,GAAA;AAAI,KAC7B;AAAA,EACF;AACA,EAAA,IAAIA,UAAA,CAAE,YAAA,CAAa,SAAS,CAAA,EAAG;AAC7B,IAAA,OAAO;AAAA,MACL,mBAAA,EAAqBA,UAAA,CAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAA;AAAA,MAChD,YAAA,EAAcA,UAAA,CAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAA;AAAA,MACzC,iBAAA,sBAAuB,GAAA;AAAI,KAC7B;AAAA,EACF;AACA,EAAA,IAAI,CAACA,UAAA,CAAE,eAAA,CAAgB,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO,+FAAA;AAAA,EACT;AAEA,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,EAAA,KAAA,MAAW,QAAA,IAAY,UAAU,UAAA,EAAY;AAC3C,IAAA,IAAIA,UAAA,CAAE,aAAA,CAAc,QAAQ,CAAA,EAAG;AAC7B,MAAA,OAAO,wEAAA;AAAA,IACT;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,OAAO,6DAAA;AAAA,IACT;AACA,IAAA,IAAI,KAAA;AACJ,IAAA,IAAIA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAAG;AAClC,MAAA,KAAA,GAAQ,QAAA,CAAS,KAAA;AAAA,IACnB,CAAA,MAAA,IAAWA,UAAA,CAAE,mBAAA,CAAoB,QAAA,CAAS,KAAK,CAAA,IAAKA,UAAA,CAAE,YAAA,CAAa,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,EAAG;AACvF,MAAA,KAAA,GAAQ,SAAS,KAAA,CAAM,IAAA;AAAA,IACzB;AACA,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,2DAAA;AAAA,IACT;AACA,IAAA,IAAI,UAAA,CAAW,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,EAAG;AAC9B,MAAA,OAAO,0DAAA;AAAA,IACT;AACA,IAAA,UAAA,CAAW,GAAA,CAAI,MAAM,IAAI,CAAA;AAAA,EAC3B;AAEA,EAAA,MAAM,mBAAA,GAAsB,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,OAAO,CAAA;AACpE,EAAA,OAAO;AAAA,IACL,mBAAA;AAAA,IACA,cAAcA,UAAA,CAAE,gBAAA;AAAA,MACd,CAAC,GAAG,UAAU,CAAA,CAAE,GAAA;AAAA,QAAI,CAAC,IAAA,KACnBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,IAAI,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,IAAI,CAAA,EAAG,OAAO,IAAI;AAAA;AACtE,KACF;AAAA,IACA,iBAAA,EAAmB;AAAA,GACrB;AACF;AAEA,SAAS,aAAA,CACP,OAAA,EACA,cAAA,EACA,cAAA,EACA,eACA,cAAA,EACoB;AACpB,EAAA,MAAM,UAAA,GAAiC;AAAA,IACrCA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,GAAGA,UAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA,IACpEA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,cAAc,CAAA;AAAA,MAC3BA,UAAA,CAAE,eAAA,CAAgB,OAAA,CAAQ,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,KAASA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC,CAAC;AAAA;AAC9E,GACF;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,OAAA,EAAS;AAC5B,IAAA,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,IAAI,CAAA,EAAGA,UAAA,CAAE,cAAA,CAAe,OAAA,CAAQ,EAAE,CAAC,CAAC,CAAA;AAClF,IAAA,IAAI,OAAA,CAAQ,WAAW,MAAA,EAAW;AAChC,MAAA,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,QAAQ,CAAA,EAAGA,UAAA,CAAE,cAAA,CAAe,OAAA,CAAQ,MAAM,CAAC,CAAC,CAAA;AAAA,IAC5F;AACA,IAAA,OAAOA,UAAA,CAAE,iBAAiB,UAAU,CAAA;AAAA,EACtC;AACA,EAAA,UAAA,CAAW,MAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAA;AAAA,IACAA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,UAAA,CAAE,eAAA,CAAgB,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAASA,UAAA,CAAE,cAAA,CAAe,IAAI,CAAC,CAAC;AAAA;AACtE,GACF;AACA,EAAA,IAAI,OAAA,CAAQ,WAAW,MAAA,EAAW;AAChC,IAAA,UAAA,CAAW,MAAA;AAAA,MACT,CAAA;AAAA,MACA,CAAA;AAAA,MACAA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,QAAQ,GAAGA,UAAA,CAAE,cAAA,CAAe,OAAA,CAAQ,MAAM,CAAC;AAAA,KAC3E;AAAA,EACF;AACA,EAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,IAAA,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,UAAU,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,QAAQ,CAAC,CAAC,CAAA;AAAA,EAC/F;AACA,EAAA,IAAI,OAAA,CAAQ,IAAA;AACV,IAAA,UAAA,CAAW,IAAA,CAAKA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,MAAM,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,IAAI,CAAC,CAAC,CAAA;AACvF,EAAA,UAAA,CAAW,IAAA;AAAA,IACTA,UAAA,CAAE,cAAA;AAAA,MACAA,UAAA,CAAE,WAAW,MAAM,CAAA;AAAA,MACnBA,UAAA,CAAE,uBAAA;AAAA,QACA,CAACA,WAAE,SAAA,CAAU,cAAc,GAAGA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAC,CAAA;AAAA,QACzD,kBAAA,CAAmB,OAAA,CAAQ,KAAA,EAAO,cAAA,EAAgB,eAAe,cAAc;AAAA;AACjF;AACF,GACF;AACA,EAAA,OAAOA,UAAA,CAAE,iBAAiB,UAAU,CAAA;AACtC;AAEA,SAAS,cAAA,CAAe,sBAAoC,KAAA,EAAoC;AAC9F,EAAA,MAAM,IAAA,GAAOA,UAAA,CAAE,aAAA,CAAc,oBAAA,CAAqB,IAAI,CAAA;AACtD,EAAA,MAAM,UAAA,GAAa,KAAA,GAAQ,CAACA,UAAA,CAAE,kBAAA,CAAmBA,UAAA,CAAE,SAAA,CAAU,KAAK,CAAC,CAAC,CAAA,GAAI,EAAC;AACzE,EAAA,OAAOA,UAAA,CAAE,UAAA,CAAWA,UAAA,CAAE,iBAAA,CAAkB,IAAA,EAAM,UAAA,EAAY,IAAI,CAAA,EAAG,IAAA,EAAM,EAAC,EAAG,IAAI,CAAA;AACjF;AAEA,SAAS,iBACP,SAAA,EACA,yBAAA,EACA,wBAAA,EACA,0BAAA,EACA,4BACA,+BAAA,EACA,0CAAA,EACA,+CAAA,EACA,2CAAA,EACA,kDACA,qCAAA,EACA,4CAAA,EACA,uCAAA,EACA,8BAAA,EACA,sCACA,2BAAA,EACA,4BAAA,EACA,+BAAA,EACA,iCAAA,EACA,6BACA,qCAAA,EACA,wBAAA,EACA,kCAAA,EACA,iCAAA,EACA,2BACA,+BAAA,EACA,iCAAA,EACA,yBAAA,EACA,mBAAA,EACA,oBAgBA,aAAA,EAkBA,aAAA,EACA,UAAA,EACA,SAAA,EACA,UACA,UAAA,EACoB;AACpB,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc,GAAI,SAAA;AACtC,EAAA,IAAI,IAAA,CAAK,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,IAAA,CAAK,SAAA;AAC/B,IAAA,OAAO,kDAAA;AACT,EAAA,IAAI,IAAA,CAAK,IAAA,CAAK,cAAA,EAAgB,OAAO,0CAAA;AACrC,EAAA,IAAI,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,GAAG,OAAO,iDAAA;AACxC,EAAA,MAAM,SAAA,GAAY,sBAAsB,IAAI,CAAA;AAC5C,EAAA,IAAI,OAAO,SAAA,KAAc,QAAA,EAAU,OAAO,SAAA;AAC1C,EAAA,IAAI,CAACA,UAAA,CAAE,gBAAA,CAAiB,KAAK,IAAA,CAAK,IAAI,GAAG,OAAO,kCAAA;AAChD,EAAA,MAAM,cAAc,IAAI,GAAA;AAAA,IACtB,CAAC,GAAG,iBAAA,EAAmB,MAAM,CAAA,CAAE,MAAA,CAAO,CAACW,KAAAA,KAAS,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAWA,KAAI,CAAC;AAAA,GAC9E;AACA,EAAA,MAAM,oBAAoB,IAAI,GAAA,CAAI,CAAC,KAAA,EAAO,KAAK,CAAA,CAAE,MAAA,CAAO,CAACA,KAAAA,KAAS,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAWA,KAAI,CAAC,CAAC,CAAA;AAE/F,EAAA,MAAM,SAAyB,EAAC;AAChC,EAAA,MAAM,SAAyB,EAAC;AAChC,EAAA,IAAI,QAAA;AACJ,EAAA,KAAA,MAAW,SAAA,IAAa,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM;AAC3C,IAAA,IAAIX,UAAA,CAAE,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAClC,MAAA,IAAI,UAAU,OAAO,+CAAA;AACrB,MAAA,QAAA,GAAW,SAAA;AACX,MAAA;AAAA,IACF;AACA,IAAA,IAAIA,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,EAAG;AACtC,MAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,mDAAA;AAC1B,MAAA,IAAI,SAAA,CAAU,KAAA,IAAS,SAAA,CAAU,SAAA,IAAa,UAAU,cAAA,EAAgB;AACtE,QAAA,OAAO,CAAA,cAAA,EAAiB,SAAA,CAAU,EAAA,CAAG,IAAI,CAAA,oCAAA,CAAA;AAAA,MAC3C;AACA,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,IAAA,EAAM,SAAA;AAAA,QACN,IAAA,EAAM,UAAU,EAAA,CAAG,IAAA;AAAA,QACnB,OAAOA,UAAA,CAAE,YAAA,CAAaA,WAAE,SAAA,CAAU,SAAA,EAAW,IAAI,CAAC;AAAA,OACnD,CAAA;AACD,MAAA;AAAA,IACF;AACA,IAAA,IACE,CAACA,UAAA,CAAE,qBAAA,CAAsB,SAAS,CAAA,IAClC,SAAA,CAAU,IAAA,KAAS,OAAA,IACnB,SAAA,CAAU,YAAA,CAAa,MAAA,KAAW,CAAA,EAClC;AACA,MAAA,OAAO,mJAAA;AAAA,IACT;AACA,IAAA,MAAM,WAAA,GAAc,SAAA,CAAU,YAAA,CAAa,CAAC,CAAA;AAC5C,IAAA,IAAIA,UAAA,CAAE,cAAA,CAAe,WAAA,CAAY,EAAE,CAAA,EAAG;AACpC,MAAA,IACE,WAAA,CAAY,GAAG,QAAA,CAAS,MAAA,KAAW,KACnC,CAACA,UAAA,CAAE,YAAA,CAAa,WAAA,CAAY,EAAA,CAAG,QAAA,CAAS,CAAC,CAAC,CAAA,IAC1C,CAACA,UAAA,CAAE,YAAA,CAAa,YAAY,EAAA,CAAG,QAAA,CAAS,CAAC,CAAC,CAAA,IAC1C,CAAC,eAAe,WAAA,CAAY,IAAA,EAAM,eAAe,UAAU,CAAA,IAC3D,YAAY,IAAA,CAAK,SAAA,CAAU,MAAA,GAAS,CAAA,IACnC,WAAA,CAAY,IAAA,CAAK,UAAU,CAAC,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,YAAY,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA,EAC/E;AACA,QAAA,OAAO,mFAAA;AAAA,MACT;AACA,MAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,QAAA,OAAO,kFAAA;AAAA,MACT;AACA,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,SAAA,EAAW,WAAA,CAAY,EAAA,CAAG,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA;AAAA,QACtC,UAAA,EAAY,WAAA,CAAY,EAAA,CAAG,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA;AAAA,QACvC,OAAO,MAAA,CAAO,MAAA;AAAA,QACd,YAAA,EAAc,WAAA,CAAY,IAAA,CAAK,SAAA,CAAU,CAAC;AAAA,OAC3C,CAAA;AACD,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAACA,UAAA,CAAE,YAAA,CAAa,WAAA,CAAY,EAAE,CAAA,IAAK,CAACA,UAAA,CAAE,YAAA,CAAa,WAAA,CAAY,IAAI,CAAA,EAAG;AACxE,MAAA,OAAO,oFAAA;AAAA,IACT;AACA,IAAA,IAAIA,UAAA,CAAE,0BAA0B,WAAA,CAAY,IAAI,KAAKA,UAAA,CAAE,oBAAA,CAAqB,WAAA,CAAY,IAAI,CAAA,EAAG;AAC7F,MAAA,IAAI,WAAA,CAAY,IAAA,CAAK,KAAA,IAAS,WAAA,CAAY,KAAK,SAAA,EAAW;AACxD,QAAA,OAAO,CAAA,cAAA,EAAiB,WAAA,CAAY,EAAA,CAAG,IAAI,CAAA,oBAAA,CAAA;AAAA,MAC7C;AACA,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,IAAA,EAAM,SAAA;AAAA,QACN,IAAA,EAAM,YAAY,EAAA,CAAG,IAAA;AAAA,QACrB,OAAO,WAAA,CAAY;AAAA,OACpB,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,IAAA,EAAM,SAAA;AAAA,QACN,IAAA,EAAM,YAAY,EAAA,CAAG,IAAA;AAAA,QACrB,OAAO,WAAA,CAAY;AAAA,OACpB,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,qCAAA;AAChC,EAAA,IAAI,CAAC,UAAU,QAAA,IAAY,CAACA,WAAE,YAAA,CAAa,QAAA,CAAS,QAAQ,CAAA,EAAG;AAC7D,IAAA,OAAO,gDAAA;AAAA,EACT;AAEA,EAAA,MAAM,aAAA,GAAgB,IAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,CAAM,SAAA,EAAW,KAAK,CAAC,CAAC,CAAA;AAC7E,EAAA,MAAM,cAAA,GAAiB,IAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,CAAM,UAAA,EAAY,KAAK,CAAC,CAAC,CAAA;AAC/E,EAAA,MAAM,UAAA,GAAa,IAAI,GAAA,CAAI,MAAA,CAAO,IAAI,CAAC,OAAA,KAAY,OAAA,CAAQ,IAAI,CAAC,CAAA;AAChE,EAAA,IAAI,UAAA,CAAW,IAAA,KAAS,MAAA,CAAO,MAAA,EAAQ,OAAO,oCAAA;AAC9C,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IACE,MAAM,YAAA,KACL,wBAAA,CAAyB,MAAM,YAAA,EAAc,aAAa,EAAE,MAAA,GAAS,CAAA,IACpE,wBAAwB,KAAA,CAAM,YAAA,EAAc,UAAU,CAAA,CAAE,MAAA,GAAS,KACjE,CAAC,GAAG,cAAc,CAAA,CAAE,IAAA;AAAA,MAAK,CAAC,CAAC,UAAU,MACnC,oBAAA,CAAqB,KAAA,CAAM,cAAe,UAAU;AAAA,KACtD,CAAA,EACF;AACA,MAAA,OAAO,8DAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAA0B;AACpD,EAAA,MAAM,cAAA,uBAAqB,GAAA,EAA4B;AACvD,EAAA,KAAA,MAAW,WAAW,MAAA,EAAQ;AAC5B,IAAA,MAAM,iBAAA,GAAoB,uBAAA,CAAwB,OAAA,CAAQ,KAAA,EAAO,UAAU,CAAA,CAAE,MAAA;AAAA,MAC3E,CAAC,SAAA,KAAc,CAAC,aAAA,CAAc,IAAI,SAAS;AAAA,KAC7C;AACA,IAAA,IAAI,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAChC,MAAA,OAAO,CAAA,EAAG,QAAQ,IAAA,KAAS,SAAA,GAAY,kBAAkB,eAAe,CAAA,CAAA,EAAI,QAAQ,IAAI,CAAA,gDAAA,CAAA;AAAA,IAC1F;AACA,IAAA,MAAM,QAAA,GAAW,oBAAA,CAAqB,OAAA,CAAQ,KAAA,EAAO,aAAa,CAAA;AAClE,IAAA,IAAI,OAAA,CAAQ,SAAS,SAAA,EAAW;AAC9B,MAAA,cAAA,CAAe,GAAA,CAAI,QAAQ,IAAA,EAAM;AAAA,QAC/B,MAAM,OAAA,CAAQ,IAAA;AAAA,QACd,KAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA;AAAA,IACF;AACA,IAAA,MAAM,WAAA,GAAc,wBAAA,CAAyB,QAAQ,CAAA,GACjD,0BAAA,CAA2B,UAAU,WAAW,CAAA,GAChD,yBAAA,CAA0B,QAAA,EAAU,WAAW,CAAA;AACnD,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,OAAO,CAAA,cAAA,EAAiB,OAAA,CAAQ,IAAI,CAAA,YAAA,EAAe,WAAW,CAAA,CAAA;AAAA,IAChE;AACA,IAAA,aAAA,CAAc,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA;AAAA,EAC1C;AACA,EAAA,MAAM,eAAA,GAAkB,oBAAA,CAAqB,QAAA,CAAS,QAAA,EAAU,aAAa,CAAA;AAC7E,EAAA,MAAM,cAAA,GAAiB,oBAAA,CAAqB,eAAA,EAAiB,cAAc,CAAA;AAC3E,EAAA,IAAI,cAAA,CAAe,MAAA,EAAQ,OAAO,cAAA,CAAe,MAAA;AACjD,EAAA,IAAI,CAAC,cAAA,CAAe,IAAA,EAAM,OAAO,6CAAA;AACjC,EAAA,MAAM,8BAAA,GAAiC,6BAAA;AAAA,IACrC,cAAA,CAAe,IAAA;AAAA,IACf,SAAA,CAAU,iBAAA;AAAA,IACV,SAAA,CAAU;AAAA,GACZ;AACA,EAAA,MAAM,YAAA,GAAe,oCAAA;AAAA,IACnB,8BAAA;AAAA,IACA,IAAI,IAAI,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,UAAU,CAAC;AAAA,GACjD;AACA,EAAA,MAAM,YAAA,GAAe,mBAAA,CAAoB,YAAA,EAAc,cAAc,CAAA;AACrE,EAAA,IAAI,cAAc,OAAO,YAAA;AACzB,EAAA,MAAM,mBAAA,GAAsB,4BAAA;AAAA,IAC1B,YAAA;AAAA,IACA,SAAA,CAAU,iBAAA;AAAA,IACV,SAAA,CAAU;AAAA,GACZ;AAIA,EAAA,IAAI,eAAe,mBAAA,CAAoB,GAAA,CAAI,UAAU,CAAA,GACjD,KACA,CAAC,GAAG,UAAU,iBAAiB,CAAA,CAC5B,OAAO,CAAC,QAAA,KAAa,oBAAoB,GAAA,CAAI,QAAQ,CAAC,CAAA,CACtD,GAAA;AAAA,IACC,CAAC,WAAW,SAAA,MAA4B;AAAA,MACtC,SAAA;AAAA,MACA,WAAW,IAAA,CAAK,KAAA,CAAM,sBAAsB,CAAA,QAAA,EAAW,SAAS,EAAE,CAAA,CAAE,IAAA;AAAA,MACpE,KAAA,EAAO,OAAO,MAAA,GAAS;AAAA,KACzB;AAAA,GACF;AACN,EAAA,MAAM,kBAAA,GAAqB,IAAI,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,CAAC,OAAA,KAAY,CAAC,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAC,CAAC,CAAA;AAC9F,EAAA,IAAI,eAAA,GAAkB,IAAI,GAAA,CAAI,aAAa,CAAA;AAC3C,EAAA,KAAA,MAAW,WAAW,YAAA,EAAc;AAClC,IAAA,eAAA,CAAgB,GAAA,CAAI,QAAQ,SAAA,EAAW;AAAA,MACrC,WAAW,OAAA,CAAQ,SAAA;AAAA,MACnB,UAAA,EAAY,EAAA;AAAA,MACZ,OAAO,OAAA,CAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AACA,EAAA,IAAI,oBAAA,GAAuB,wBAAA;AAAA,IACzB,YAAA;AAAA,IACA,SAAA,CAAU,mBAAA;AAAA,IACV;AAAA,GACF;AACA,EAAA,MAAM,wBAAA,uBAA+B,GAAA,EAAY;AACjD,EAAAC,aAAA,CAAS,eAAeD,UAAA,CAAE,SAAA,CAAU,oBAAA,EAAsB,IAAI,CAAC,CAAA,EAAG;AAAA,IAChE,kBAAkB,aAAA,EAAe;AAC/B,MAAA,MAAM,aAAA,GAAgB,cAAc,IAAA,CAAK,IAAA;AACzC,MAAA,IAAIA,WAAE,eAAA,CAAgB,aAAa,KAAK,eAAA,CAAgB,aAAA,CAAc,IAAI,CAAA,EAAG;AAC3E,QAAA,wBAAA,CAAyB,GAAA,CAAI,cAAc,IAAI,CAAA;AAAA,MACjD;AAAA,IACF;AAAA,GACD,CAAA;AACD,EAAA,MAAM,wBAAwB,IAAI,GAAA;AAAA,IAChC,CAAC,GAAG,wBAAwB,CAAA,CAAE,MAAA,CAAO,CAAC,aAAA,KAAkB;AACtD,MAAA,IAAI,SAAA,CAAU,GAAA,CAAI,aAAa,CAAA,EAAG,OAAO,KAAA;AACzC,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,aAAa,CAAA;AACnD,MAAA,OAAO,OAAA;AAAA,QACL,OAAA,EAAS,QAAA,IACT,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,SAAA,EAAU,IAC7B,OAAA,CAAQ,IAAA,KAAS,KAAA,IACjB,OAAA,CAAQ,IAAA,KAAS;AAAA,OACnB;AAAA,IACF,CAAC;AAAA,GACH;AACA,EAAA,IAAI,aAAA,GAAgB,uBAAA;AAAA,IAClB,oBAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,QAAA,GAAW,eAAA;AAAA,IACb,oBAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA,CAAc,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,IAC9D,aAAA,CAAc,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,IACxD,aAAA,CAAc,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,IACrD,aAAA,CAAc,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,GAC3D;AACA,EAAA,IAAI,aAAa,MAAA,GAAS,CAAA,KAAM,aAAA,CAAc,MAAA,IAAU,SAAS,MAAA,CAAA,EAAS;AAIxE,IAAA,YAAA,GAAe,EAAC;AAChB,IAAA,eAAA,GAAkB,IAAI,IAAI,aAAa,CAAA;AACvC,IAAA,oBAAA,GAAuBA,UAAA,CAAE,SAAA,CAAU,YAAA,EAAc,IAAI,CAAA;AACrD,IAAA,aAAA,GAAgB,uBAAA;AAAA,MACd,oBAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,QAAA,GAAW,eAAA;AAAA,MACT,oBAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA,CAAc,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MAC9D,aAAA,CAAc,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MACxD,aAAA,CAAc,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MACrD,aAAA,CAAc,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KAC3D;AAAA,EACF;AACA,EAAA,IAAI,aAAA,CAAc,MAAA,EAAQ,OAAO,aAAA,CAAc,MAAA;AAC/C,EAAA,IAAI,QAAA,CAAS,MAAA,EAAQ,OAAO,QAAA,CAAS,MAAA;AACrC,EAAA,MAAM,qBAAqB,IAAI,GAAA;AAAA,IAAA,CAC5B,aAAA,CAAc,KAAA,IAAS,EAAC,EACtB,MAAA;AAAA,MACC,CAAC,IAAA,KACC,IAAA,CAAK,IAAA,KAAS,YAAA,IAAgB,KAAK,oBAAA,KAAyB;AAAA,KAChE,CACC,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,oBAA8B;AAAA,GACtD;AACA,EAAA,MAAM,UAAA,GAAa,0BAAA;AAAA,IACjB,oBAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,wBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,0BAAA,GAA6B,CAAA;AACjC,EAAA,IAAI,UAAA,CAAW,QAAQ,CAAA,EAAG;AACxB,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,UAAA,CAAW,IAAA;AAAA,MACX,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,UAAA,CAAW,IAAA;AAAA,MACX,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,UAAA,CAAW,IAAA;AAClC,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,0BAAA,GAA6B,UAAA,CAAW,KAAA;AACxC,MAAA,kBAAA,CAAmB,uBAAuB,UAAA,CAAW,KAAA;AAAA,IACvD;AAAA,EACF;AACA,EAAA,MAAM,wBAAA,GAA2B,IAAI,GAAA,CAAI,kBAAkB,CAAA;AAC3D,EAAA,KAAA,MAAW,IAAA,IAAQ,aAAA,CAAc,KAAA,IAAS,EAAC,EAAG;AAC5C,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,YAAA,IAAgB,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3E,IAAA,MAAM,aAAA,GAAgB,kBAAA,CAAmB,IAAA,CAAK,WAAW,CAAA;AACzD,IAAA,IACE,CAAC,iBACD,wBAAA,CAAyB,aAAA,EAAe,eAAe,CAAA,CAAE,QAAA,CAAS,IAAA,CAAK,oBAAoB,CAAA,EAC3F;AAGA,MAAA,wBAAA,CAAyB,MAAA,CAAO,KAAK,oBAAoB,CAAA;AAAA,IAC3D;AAAA,EACF;AACA,EAAA,MAAM,gBAAA,GAAmB,4BAAA;AAAA,IACvB,oBAAA;AAAA,IACA,wBAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,4BAAA,GAA+B,CAAA;AACnC,EAAA,IAAI,gBAAA,CAAiB,QAAQ,CAAA,EAAG;AAC9B,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,gBAAA,CAAiB,IAAA;AAAA,MACjB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,gBAAA,CAAiB,IAAA;AAAA,MACjB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,gBAAA,CAAiB,IAAA;AACxC,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,4BAAA,GAA+B,gBAAA,CAAiB,KAAA;AAChD,MAAA,kBAAA,CAAmB,yBAAyB,gBAAA,CAAiB,KAAA;AAAA,IAC/D;AAAA,EACF;AACA,EAAA,MAAM,mCAAA,GAAsC,IAAI,GAAA,CAAI,kBAAkB,CAAA;AACtE,EAAA,KAAA,MAAW,IAAA,IAAQ,aAAA,CAAc,KAAA,IAAS,EAAC,EAAG;AAC5C,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,YAAA,IAAgB,IAAA,CAAK,yBAAyB,MAAA,EAAW;AAC3E,IAAA,MAAM,aAAA,GAAgB,kBAAA,CAAmB,IAAA,CAAK,WAAW,CAAA;AACzD,IAAA,IACE,IAAA,CAAK,cAAA,CAAe,MAAA,CAAO,MAAA,GAAS,KACpC,CAAC,aAAA,IACD,wBAAA,CAAyB,aAAA,EAAe,eAAe,CAAA,CAAE,QAAA,CAAS,IAAA,CAAK,oBAAoB,CAAA,EAC3F;AAIA,MAAA,mCAAA,CAAoC,MAAA,CAAO,KAAK,oBAAoB,CAAA;AAAA,IACtE;AAAA,EACF;AACA,EAAA,MAAM,iBAAA,GAAoB,6BAAA;AAAA,IACxB,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,cAAA;AAAA,IACA,2BAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,6BAAA,GAAgC,CAAA;AACpC,EAAA,IAAI,gCAAA,uBAA4D,GAAA,EAAI;AACpE,EAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,EAAG;AAC/B,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,iBAAA,CAAkB,IAAA;AAAA,MAClB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,iBAAA,CAAkB,IAAA;AAAA,MAClB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,iBAAA,CAAkB,IAAA;AACzC,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,6BAAA,GAAgC,iBAAA,CAAkB,KAAA;AAClD,MAAA,gCAAA,GAAmC,iBAAA,CAAkB,YAAA;AACrD,MAAA,kBAAA,CAAmB,0BAA0B,iBAAA,CAAkB,KAAA;AAAA,IACjE;AAAA,EACF;AACA,EAAA,MAAM,uBAAA,GAA0B,mCAAA;AAAA,IAC9B,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,cAAA;AAAA,IACA,yBAAA;AAAA,IACA,iCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,mCAAA,GAAsC,CAAA;AAC1C,EAAA,IAAI,sCAAA,uBAAkE,GAAA,EAAI;AAC1E,EAAA,IAAI,uBAAA,CAAwB,QAAQ,CAAA,EAAG;AACrC,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,uBAAA,CAAwB,IAAA;AAAA,MACxB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,uBAAA,CAAwB,IAAA;AAAA,MACxB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,uBAAA,CAAwB,IAAA;AAC/C,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,mCAAA,GAAsC,uBAAA,CAAwB,KAAA;AAC9D,MAAA,sCAAA,GAAyC,uBAAA,CAAwB,YAAA;AACjE,MAAA,kBAAA,CAAmB,gCAAgC,uBAAA,CAAwB,KAAA;AAAA,IAC7E;AAAA,EACF;AACA,EAAA,MAAM,kBAAA,GAAqB,8BAAA;AAAA,IACzB,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,cAAA;AAAA,IACA,4BAAA;AAAA,IACA,+BAAA;AAAA,IACA,iCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,8BAAA,GAAiC,CAAA;AACrC,EAAA,IAAI,iCAAA,GAAoC,CAAA;AACxC,EAAA,IAAI,mCAAA,GAAsC,CAAA;AAC1C,EAAA,IAAI,iCAAA,uBAA6D,GAAA,EAAI;AACrE,EAAA,IAAI,kBAAA,CAAmB,QAAQ,CAAA,EAAG;AAChC,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,kBAAA,CAAmB,IAAA;AAAA,MACnB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,kBAAA,CAAmB,IAAA;AAAA,MACnB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,kBAAA,CAAmB,IAAA;AAC1C,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,8BAAA,GAAiC,kBAAA,CAAmB,KAAA;AACpD,MAAA,iCAAA,GAAoC,kBAAA,CAAmB,gBAAA;AACvD,MAAA,mCAAA,GAAsC,kBAAA,CAAmB,kBAAA;AACzD,MAAA,iCAAA,GAAoC,kBAAA,CAAmB,YAAA;AACvD,MAAA,kBAAA,CAAmB,2BAA2B,kBAAA,CAAmB,KAAA;AACjE,MAAA,aAAA,CAAc,8BAA8B,kBAAA,CAAmB,gBAAA;AAC/D,MAAA,aAAA,CAAc,gCAAgC,kBAAA,CAAmB,kBAAA;AAAA,IACnE;AAAA,EACF;AACA,EAAA,MAAM,2BAAA,GAAA,CAA+B,aAAA,CAAc,KAAA,IAAS,EAAC,EAAG,KAAA;AAAA,IAC9D,CAAC,IAAA,KACC,IAAA,CAAK,IAAA,KAAS,YAAA,IACb,IAAA,CAAK,YAAA,CAAa,MAAA,KAAW,CAAA,IAAK,CAAC,IAAA,CAAK,gBAAA,EAAkB;AAAA,GAC/D;AACA,EAAA,MAAM,yBAAA,GAA4B,qCAAA;AAAA,IAChC,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,+BAAA;AAAA,IACA,8BAAA;AAAA,IACA,oCAAA;AAAA,IACA,2BAAA;AAAA,IACA,qCAAA;AAAA,IACA,yBAAA;AAAA,IACA,wBAAA;AAAA,IACA,kCAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,0BAAA,GAA6B,CAAA;AACjC,EAAA,IAAI,uBAAA,GAA0B,CAAA;AAC9B,EAAA,IAAI,2BAAA,GAA8B,CAAA;AAClC,EAAA,IAAI,yBAAA,GAA4B,CAAA;AAChC,EAAA,IAAI,wBAAA,GAA2B,CAAA;AAC/B,EAAA,IAAI,iCAAA,uBAA6D,GAAA,EAAI;AACrE,EAAA,IACE,yBAAA,CAA0B,WAAA,GAAc,CAAA,IACxC,yBAAA,CAA0B,YAAA,GAAe,CAAA,IACzC,yBAAA,CAA0B,UAAA,GAAa,CAAA,IACvC,yBAAA,CAA0B,SAAA,GAAY,CAAA,EACtC;AACA,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,yBAAA,CAA0B,IAAA;AAAA,MAC1B,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,yBAAA,CAA0B,IAAA;AAAA,MAC1B,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,yBAAA,CAA0B,IAAA;AACjD,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,0BAAA,GAA6B,yBAAA,CAA0B,WAAA;AACvD,MAAA,uBAAA,GAA0B,yBAAA,CAA0B,QAAA;AACpD,MAAA,0BAAA,IAA8B,yBAAA,CAA0B,QAAA;AACxD,MAAA,2BAAA,GACE,yBAAA,CAA0B,eAC1B,yBAAA,CAA0B,+BAAA;AAC5B,MAAA,yBAAA,GAA4B,yBAAA,CAA0B,UAAA;AACtD,MAAA,wBAAA,GAA2B,yBAAA,CAA0B,SAAA;AACrD,MAAA,iCAAA,GAAoC,yBAAA,CAA0B,YAAA;AAC9D,MAAA,kBAAA,CAAmB,yBAAyB,yBAAA,CAA0B,WAAA;AACtE,MAAA,kBAAA,CAAmB,uBAAuB,yBAAA,CAA0B,QAAA;AACpE,MAAA,kBAAA,CAAmB,0BAA0B,yBAAA,CAA0B,YAAA;AACvE,MAAA,kBAAA,CAAmB,wBAAwB,yBAAA,CAA0B,UAAA;AACrE,MAAA,kBAAA,CAAmB,uBAAuB,yBAAA,CAA0B,SAAA;AACpE,MAAA,aAAA,CAAc,oCACZ,yBAAA,CAA0B,sBAAA;AAC5B,MAAA,aAAA,CAAc,iCAAiC,yBAAA,CAA0B,mBAAA;AACzE,MAAA,aAAA,CAAc,4BAA4B,yBAAA,CAA0B,QAAA;AACpE,MAAA,aAAA,CAAc,6BAA6B,yBAAA,CAA0B,eAAA;AACrE,MAAA,aAAA,CAAc,0BAA0B,yBAAA,CAA0B,YAAA;AAClE,MAAA,aAAA,CAAc,mCACZ,yBAAA,CAA0B,+BAAA;AAAA,IAC9B;AAAA,EACF;AACA,EAAA,MAAM,iBAAA,GAAoB,6BAAA;AAAA,IACxB,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,6BAAA,GAAgC,2BAAA;AACpC,EAAA,IAAI,gCAAA,GAAwD,iCAAA;AAC5D,EAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,EAAG;AAC/B,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,iBAAA,CAAkB,IAAA;AAAA,MAClB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,iBAAA,CAAkB,IAAA;AAAA,MAClB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,iBAAA,CAAkB,IAAA;AACzC,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,6BAAA,IAAiC,iBAAA,CAAkB,KAAA;AACnD,MAAA,gCAAA,uBAAuC,GAAA,CAAI;AAAA,QACzC,GAAG,gCAAA;AAAA,QACH,GAAG,iBAAA,CAAkB;AAAA,OACtB,CAAA;AACD,MAAA,kBAAA,CAAmB,0BAA0B,iBAAA,CAAkB,KAAA;AAAA,IACjE;AAAA,EACF;AACA,EAAA,MAAM,cAAA,GAAiB,0BAAA;AAAA,IACrB,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,cAAA;AAAA,IACA,wBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,0BAAA,GAA6B,wBAAA;AACjC,EAAA,IAAI,6BAAA,GAAqD,iCAAA;AACzD,EAAA,IAAI,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC5B,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,cAAA,CAAe,IAAA;AAAA,MACf,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,cAAA,CAAe,IAAA;AAAA,MACf,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,cAAA,CAAe,IAAA;AACtC,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,0BAAA,IAA8B,cAAA,CAAe,KAAA;AAC7C,MAAA,6BAAA,uBAAoC,GAAA,CAAI;AAAA,QACtC,GAAG,6BAAA;AAAA,QACH,GAAG,cAAA,CAAe;AAAA,OACnB,CAAA;AACD,MAAA,kBAAA,CAAmB,uBAAuB,cAAA,CAAe,KAAA;AAAA,IAC3D;AAAA,EACF;AACA,EAAA,MAAM,eAAA,GAAkB,2BAAA;AAAA,IACtB,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,cAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,2BAAA,GAA8B,yBAAA;AAClC,EAAA,IAAI,8BAAA,GACF,yBAAA,GAA4B,CAAA,GAAI,iCAAA,uBAAwC,GAAA,EAAI;AAC9E,EAAA,IAAI,eAAA,CAAgB,QAAQ,CAAA,EAAG;AAC7B,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,eAAA,CAAgB,IAAA;AAAA,MAChB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,eAAA,CAAgB,IAAA;AAAA,MAChB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,eAAA,CAAgB,IAAA;AACvC,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,2BAAA,IAA+B,eAAA,CAAgB,KAAA;AAC/C,MAAA,8BAAA,uBAAqC,GAAA,CAAI;AAAA,QACvC,GAAG,8BAAA;AAAA,QACH,GAAG,eAAA,CAAgB;AAAA,OACpB,CAAA;AACD,MAAA,kBAAA,CAAmB,wBAAwB,eAAA,CAAgB,KAAA;AAAA,IAC7D;AAAA,EACF;AACA,EAAA,MAAM,gBAAA,GAAmB,4BAAA;AAAA,IACvB,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,4BAAA,GAA+B,0BAAA;AACnC,EAAA,IAAI,+BAAA,GACF,0BAAA,GAA6B,CAAA,GAAI,iCAAA,uBAAwC,GAAA,EAAI;AAC/E,EAAA,IAAI,gBAAA,CAAiB,QAAQ,CAAA,EAAG;AAC9B,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,gBAAA,CAAiB,IAAA;AAAA,MACjB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,gBAAA,CAAiB,IAAA;AAAA,MACjB,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,gBAAA,CAAiB,IAAA;AACxC,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,4BAAA,IAAgC,gBAAA,CAAiB,KAAA;AACjD,MAAA,+BAAA,uBAAsC,GAAA,CAAI;AAAA,QACxC,GAAG,+BAAA;AAAA,QACH,GAAG,gBAAA,CAAiB;AAAA,OACrB,CAAA;AACD,MAAA,kBAAA,CAAmB,yBAAyB,gBAAA,CAAiB,KAAA;AAAA,IAC/D;AAAA,EACF;AACA,EAAA,MAAM,gCAAA,GAAmC,4CAAA;AAAA,IACvC,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,qCAAA;AAAA,IACA,oCAAA;AAAA,IACA,0BAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,kCAAA,GAAqC,CAAA;AACzC,EAAA,IACE,gCAAA,CAAiC,QAAA,GAAW,CAAA,IAC5C,gCAAA,CAAiC,kBAAkB,CAAA,EACnD;AACA,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,gCAAA,CAAiC,IAAA;AAAA,MACjC,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,gCAAA,CAAiC,IAAA;AAAA,MACjC,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,gCAAA,CAAiC,IAAA;AACxD,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,kCAAA,GACE,gCAAA,CAAiC,WACjC,gCAAA,CAAiC,eAAA;AACnC,MAAA,6BAAA,IAAiC,gCAAA,CAAiC,eAAA;AAClE,MAAA,gCAAA,uBAAuC,GAAA,CAAI;AAAA,QACzC,GAAG,gCAAA;AAAA,QACH,GAAG,gCAAA,CAAiC;AAAA,OACrC,CAAA;AACD,MAAA,aAAA,CAAc,4BAA4B,gCAAA,CAAiC,QAAA;AAC3E,MAAA,aAAA,CAAc,kCAAkC,gCAAA,CAAiC,QAAA;AACjF,MAAA,aAAA,CAAc,mCACZ,gCAAA,CAAiC,eAAA;AAAA,IACrC;AAAA,EACF;AACA,EAAA,MAAM,6BAAA,GAAgC,yCAAA;AAAA,IACpC,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,+BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0CAAA;AAAA,IACA,+CAAA;AAAA,IACA,0BAAA;AAAA,IACA,yBAAA;AAAA,IACA,oCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,+BAAA,GAAkC,CAAA;AACtC,EAAA,IAAI,qCAAA,GAAwC,CAAA;AAC5C,EAAA,IACE,6BAAA,CAA8B,QAAA,GAAW,CAAA,IACzC,6BAAA,CAA8B,8BAA8B,CAAA,EAC5D;AACA,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,6BAAA,CAA8B,IAAA;AAAA,MAC9B,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,6BAAA,CAA8B,IAAA;AAAA,MAC9B,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,6BAAA,CAA8B,IAAA;AACrD,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,+BAAA,GAAkC,6BAAA,CAA8B,QAAA;AAChE,MAAA,qCAAA,GACE,6BAAA,CAA8B,2BAC9B,6BAAA,CAA8B,2BAAA;AAChC,MAAA,6BAAA,IAAiC,6BAAA,CAA8B,QAAA;AAC/D,MAAA,gCAAA,uBAAuC,GAAA,CAAI;AAAA,QACzC,GAAG,gCAAA;AAAA,QACH,GAAG,6BAAA,CAA8B;AAAA,OAClC,CAAA;AACD,MAAA,aAAA,CAAc,4BAA4B,6BAAA,CAA8B,QAAA;AACxE,MAAA,aAAA,CAAc,yCACZ,6BAAA,CAA8B,2BAAA;AAChC,MAAA,aAAA,CAAc,sCACZ,6BAAA,CAA8B,wBAAA;AAAA,IAClC;AAAA,EACF;AACA,EAAA,MAAM,oCAAA,GAAuC,gDAAA;AAAA,IAC3C,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,+BAAA;AAAA,IACA,2BAAA;AAAA,IACA,2CAAA;AAAA,IACA,gDAAA;AAAA,IACA,0BAAA;AAAA,IACA,yBAAA;AAAA,IACA,oCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,sCAAA,GAAyC,CAAA;AAC7C,EAAA,IACE,oCAAA,CAAqC,yBAAA,GAA4B,CAAA,IACjE,oCAAA,CAAqC,+BAA+B,CAAA,EACpE;AACA,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,oCAAA,CAAqC,IAAA;AAAA,MACrC,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,oCAAA,CAAqC,IAAA;AAAA,MACrC,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,oCAAA,CAAqC,IAAA;AAC5D,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,sCAAA,GACE,oCAAA,CAAqC,4BACrC,oCAAA,CAAqC,4BAAA;AACvC,MAAA,aAAA,CAAc,0CACZ,oCAAA,CAAqC,4BAAA;AACvC,MAAA,aAAA,CAAc,uCACZ,oCAAA,CAAqC,yBAAA;AAAA,IACzC;AAAA,EACF;AACA,EAAA,MAAM,gCAAA,GAAmC,4CAAA;AAAA,IACvC,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,+BAAA;AAAA,IACA,qCAAA;AAAA,IACA,4CAAA;AAAA,IACA,uCAAA;AAAA,IACA,iCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0CAAA;AAAA,IACA,+CAAA;AAAA,IACA,oCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,+BAAA,GAAkC,CAAA;AACtC,EAAA,IAAI,oCAAA,GAAuC,CAAA;AAC3C,EAAA,IAAI,gCAAA,CAAiC,qBAAqB,CAAA,EAAG;AAC3D,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,gCAAA,CAAiC,IAAA;AAAA,MACjC,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,gCAAA,CAAiC,IAAA;AAAA,MACjC,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,gCAAA,CAAiC,IAAA;AACxD,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,+BAAA,GACE,gCAAA,CAAiC,qBACjC,gCAAA,CAAiC,yBAAA;AACnC,MAAA,oCAAA,GACE,gCAAA,CAAiC,yBAAA;AACnC,MAAA,qCAAA,IACE,gCAAA,CAAiC,2BACjC,gCAAA,CAAiC,gBAAA;AACnC,MAAA,aAAA,CAAc,wBAAA,IACZ,gCAAA,CAAiC,eAAA,GACjC,gCAAA,CAAiC,mBACjC,gCAAA,CAAiC,eAAA;AACnC,MAAA,aAAA,CAAc,kCACZ,gCAAA,CAAiC,eAAA;AACnC,MAAA,aAAA,CAAc,sCACZ,gCAAA,CAAiC,gBAAA;AACnC,MAAA,aAAA,CAAc,kCAAA,IACZ,gCAAA,CAAiC,wBAAA,GACjC,gCAAA,CAAiC,yBAAA;AACnC,MAAA,aAAA,CAAc,2CACZ,gCAAA,CAAiC,yBAAA;AACnC,MAAA,kBAAA,CAAmB,2CACjB,gCAAA,CAAiC,yBAAA;AACnC,MAAA,aAAA,CAAc,mCACZ,gCAAA,CAAiC,wBAAA;AACnC,MAAA,aAAA,CAAc,0CACZ,gCAAA,CAAiC,4BAAA;AAAA,IACrC;AAAA,EACF;AACA,EAAA,MAAM,0BAAA,GAA6B,sCAAA;AAAA,IACjC,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,qCAAA;AAAA,IACA,8BAAA;AAAA,IACA,2BAAA;AAAA,IACA,wBAAA;AAAA,IACA,qCAAA;AAAA,IACA,kCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,0BAAA,GAA6B,sCAAA;AAAA,IACjC,0BAAA,CAA2B,IAAA;AAAA,IAC3B,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,qCAAA;AAAA,IACA,8BAAA;AAAA,IACA,2BAAA;AAAA,IACA,wBAAA;AAAA,IACA,qCAAA;AAAA,IACA,kCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,4BAAA,GAA+B,CAAA;AACnC,EAAA,MAAM,cAAA,GAAiB,0BAAA,CAA2B,QAAA,GAAW,0BAAA,CAA2B,QAAA;AACxF,EAAA,MAAM,qBAAA,GACJ,0BAAA,CAA2B,eAAA,GAAkB,0BAAA,CAA2B,YAAA;AAC1E,EAAA,IAAI,cAAA,GAAiB,CAAA,IAAK,qBAAA,GAAwB,CAAA,EAAG;AACnD,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,0BAAA,CAA2B,IAAA;AAAA,MAC3B,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,0BAAA,CAA2B,IAAA;AAAA,MAC3B,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,0BAAA,CAA2B,IAAA;AAClD,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,4BAAA,GAA+B,cAAA,GAAiB,qBAAA;AAChD,MAAA,aAAA,CAAc,wBAAA,IAA4B,cAAA;AAC1C,MAAA,aAAA,CAAc,8BAAA,IAAkC,cAAA;AAChD,MAAA,aAAA,CAAc,6BAA6B,0BAAA,CAA2B,eAAA;AACtE,MAAA,aAAA,CAAc,0BAA0B,0BAAA,CAA2B,YAAA;AAAA,IACrE;AAAA,EACF;AACA,EAAA,MAAM,iCAAA,GAAoC,6CAAA;AAAA,IACxC,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,yBAAA;AAAA,IACA,+BAAA;AAAA,IACA,qCAAA;AAAA,IACA,oCAAA;AAAA,IACA,8BAAA;AAAA,IACA,2BAAA;AAAA,IACA,wBAAA;AAAA,IACA,qCAAA;AAAA,IACA,kCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IACE,iCAAA,CAAkC,eAAe,CAAA,IACjD,iCAAA,CAAkC,YAAY,CAAA,IAC9C,iCAAA,CAAkC,yBAAyB,CAAA,EAC3D;AACA,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,iCAAA,CAAkC,IAAA;AAAA,MAClC,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,iCAAA,CAAkC,IAAA;AAAA,MAClC,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,iCAAA,CAAkC,IAAA;AACzD,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,aAAA,CAAc,kCACZ,iCAAA,CAAkC,sBAAA;AACpC,MAAA,aAAA,CAAc,6BACZ,iCAAA,CAAkC,uBAAA;AACpC,MAAA,aAAA,CAAc,0BACZ,iCAAA,CAAkC,oBAAA;AACpC,MAAA,aAAA,CAAc,oCACZ,iCAAA,CAAkC,YAAA;AACpC,MAAA,aAAA,CAAc,iCAAiC,iCAAA,CAAkC,SAAA;AAAA,IACnF;AAAA,EACF;AACA,EAAA,MAAM,0BAAA,uBAAiC,GAAA,EAAuC;AAC9E,EAAA,MAAM,iCAAA,uBAAwC,GAAA,EAAY;AAC1D,EAAA,KAAA,MAAW,IAAA,IAAQ,aAAA,CAAc,KAAA,IAAS,EAAC,EAAG;AAC5C,IAAA,IAAI,IAAA,CAAK,SAAS,YAAA,EAAc;AAChC,IAAA,KAAA,MAAW,OAAA,IAAW,KAAK,QAAA,EAAU;AACnC,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,gBAAA,IAAoB,OAAA,CAAQ,eAAA;AACnD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACb,MAAA,MAAM,IAAA,GAAkC,OAAA,CAAQ,gBAAA,GAAmB,KAAA,GAAQ,KAAA;AAC3E,MAAA,MAAM,YAAA,GAAe,0BAAA,CAA2B,GAAA,CAAI,MAAA,CAAO,UAAU,CAAA;AACrE,MAAA,IAAI,YAAA,IAAgB,iBAAiB,IAAA,EAAM;AACzC,QAAA,iCAAA,CAAkC,GAAA,CAAI,OAAO,UAAU,CAAA;AAAA,MACzD,CAAA,MAAO;AACL,QAAA,0BAAA,CAA2B,GAAA,CAAI,MAAA,CAAO,UAAA,EAAY,IAAI,CAAA;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AACA,EAAA,KAAA,MAAW,cAAc,iCAAA,EAAmC;AAC1D,IAAA,0BAAA,CAA2B,OAAO,UAAU,CAAA;AAAA,EAC9C;AACA,EAAA,MAAM,yBAAA,GAA4B,iCAAA;AAAA,IAChC,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,+BAAA;AAAA,IACA,iCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,yBAAA,CAA0B,QAAQ,CAAA,EAAG;AACvC,IAAA,MAAM,mBAAA,GAAsB,uBAAA;AAAA,MAC1B,yBAAA,CAA0B,IAAA;AAAA,MAC1B,eAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,MACrB,yBAAA,CAA0B,IAAA;AAAA,MAC1B,eAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA,CAAoB,sBAAA,oBAA0B,IAAI,GAAA,EAAkB;AAAA,MACpE,mBAAA,CAAoB,gBAAA,oBAAoB,IAAI,GAAA,EAAkB;AAAA,MAC9D,mBAAA,CAAoB,aAAA,oBAAiB,IAAI,GAAA,EAAkB;AAAA,MAC3D,mBAAA,CAAoB,iBAAA,oBAAqB,IAAI,GAAA;AAAkB,KACjE;AACA,IAAA,IAAI,CAAC,mBAAA,CAAoB,MAAA,IAAU,CAAC,eAAe,MAAA,EAAQ;AACzD,MAAA,oBAAA,GAAuB,yBAAA,CAA0B,IAAA;AACjD,MAAA,aAAA,GAAgB,mBAAA;AAChB,MAAA,QAAA,GAAW,cAAA;AACX,MAAA,kBAAA,CAAmB,8BAA8B,yBAAA,CAA0B,KAAA;AAAA,IAC7E;AAAA,EACF;AACA,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,KAAA,IAAS,EAAC;AAC3C,EAAA,kBAAA,CAAmB,wBAAwB,UAAA,CAAW,MAAA;AAAA,IACpD,CAAC,KAAA,EAAO,IAAA,KACN,KAAA,IACC,IAAA,CAAK,SAAS,YAAA,GACX,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,CAAC,OAAA,KAAY,OAAA,CAAQ,cAAA,KAAmB,MAAS,EAAE,MAAA,GACxE,CAAA,CAAA;AAAA,IACN;AAAA,GACF;AACA,EAAA,kBAAA,CAAmB,0BAA0B,UAAA,CAAW,MAAA;AAAA,IACtD,CAAC,KAAA,EAAO,IAAA,KACN,KAAA,IACC,IAAA,CAAK,SAAS,YAAA,GACX,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,CAAC,OAAA,KAAY,OAAA,CAAQ,gBAAA,KAAqB,MAAS,EAAE,MAAA,GAC1E,CAAA,CAAA;AAAA,IACN;AAAA,GACF;AACA,EAAA,kBAAA,CAAmB,yBAAyB,UAAA,CAAW,MAAA;AAAA,IACrD,CAAC,KAAA,EAAO,IAAA,KACN,KAAA,IACC,IAAA,CAAK,SAAS,YAAA,GACX,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,CAAC,OAAA,KAAY,OAAA,CAAQ,eAAA,KAAoB,MAAS,EAAE,MAAA,GACzE,CAAA,CAAA;AAAA,IACN;AAAA,GACF;AACA,EAAA,MAAM,sBACJ,0BAAA,GAA6B,CAAA,IAC7B,4BAAA,GAA+B,CAAA,IAC/B,+BAA+B,CAAA,IAC/B,6BAAA,GAAgC,CAAA,IAChC,8BAAA,GAAiC,KACjC,6BAAA,GAAgC,CAAA,IAChC,6BAA6B,CAAA,IAC7B,mCAAA,GAAsC,KACtC,2BAAA,GAA8B,CAAA;AAChC,EAAA,MAAM,yBAAA,GACJ,4BAAA,GAA+B,CAAA,IAC/B,mCAAA,GAAsC,KACtC,2BAAA,GAA8B,CAAA;AAChC,EAAA,MAAM,eAAA,GAAkB,uBAAA;AAAA,IACtB,UAAA;AAAA,IACA,mBAAA;AAAA,IACA,yBAAA;AAAA,IACC,+BAA+B,CAAA,KAC7B,4BAAA,GAA+B,KAAK,2BAAA,GAA8B,CAAA,CAAA,IACnE,cAAc,sCAAA,GAAyC,CAAA;AAAA,IACzD,qCAAA,GAAwC,CAAA;AAAA,IACxC,6BAAA,GAAgC,CAAA;AAAA,IAChC,gCAAgC,CAAA,IAAK,yBAAA;AAAA,IACrC,sCAAA,GAAyC,CAAA;AAAA,IACzC,8BAAA,GAAiC,CAAA;AAAA,IACjC,iCAAA,GAAoC,CAAA;AAAA,IACpC,mCAAA,GAAsC,CAAA;AAAA,IACtC,6BAAA,GAAgC,KAAK,0BAAA,GAA6B,CAAA;AAAA,IAClE,0BAA0B,CAAA,IACxB,4BAAA,GAA+B,CAAA,IAC/B,kCAAA,GAAqC,KACrC,+BAAA,GAAkC,CAAA;AAAA,IACpC,oCAAA,GAAuC,CAAA;AAAA,IACvC,mCAAA,GAAsC;AAAA,GACxC;AACA,EAAA,wBAAA,CAAyB,QAAA,CAAS,QAAA,IAAY,EAAE,CAAA;AAChD,EAAA,0BAAA,CAA2B,QAAA,CAAS,QAAA,IAAY,EAAE,CAAA;AAElD,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,WAAW,CAAA;AACnE,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,YAAY,CAAA;AACpE,EAAA,MAAM,uBAAuB,IAAA,CAAK,KAAA,CAAM,qBAAA,CAAsB,CAAA,EAAG,IAAI,CAAA,QAAA,CAAU,CAAA;AAC/E,EAAA,MAAM,iBAAiB,SAAA,CAAU,mBAAA;AACjC,EAAA,MAAM,eAAA,GAAkB,yBAAA;AAAA,IACtB,oBAAA;AAAA,IACA,QAAA,CAAS,YAAY,EAAC;AAAA,IACtB,cAAA;AAAA,IACA,aAAA,CAAc,aAAA,oBAAiB,IAAI,GAAA;AAAkB,GACvD;AACA,EAAA,MAAM,gCAAA,uBAAuC,GAAA,CAAI;AAAA,IAC/C,GAAG,+BAAA;AAAA,IACH,GAAG,sCAAA;AAAA,IACH,GAAG;AAAA,GACJ,CAAA;AACD,EAAA,MAAM,cAAA,GAAiB,qBAAA;AAAA,IACrB,eAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,mBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,iCAAA;AAAA,wBACI,GAAA,CAAI,CAAC,GAAG,gCAAA,EAAkC,GAAG,6BAA6B,CAAC;AAAA,GACjF;AACA,EAAA,MAAM,aAAA,GAAgB,kBAAA;AAAA,IACpB,cAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,aAAaA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,SAAA,CAAU,yBAAyB,CAAA,EAAG;AAAA,IAC1EA,WAAE,gBAAA,CAAiB;AAAA,MACjBA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,aAAa,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,MACnEA,UAAA,CAAE,eAAeA,UAAA,CAAE,UAAA,CAAW,YAAY,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,UAAU,CAAC,CAAA;AAAA,MACxEA,UAAA,CAAE,aAAA;AAAA,QACAA,UAAA,CAAE,qBAAA;AAAA,UACAA,UAAA,CAAE,gBAAA;AAAA,YACAA,UAAA,CAAE,aAAaA,UAAA,CAAE,UAAA,CAAW,QAAQ,CAAA,EAAGA,UAAA,CAAE,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,YAC3DA,UAAA,CAAE,WAAW,KAAK;AAAA,WACpB;AAAA,UACAA,WAAE,gBAAA,CAAiB;AAAA,YACjBA,UAAA,CAAE,cAAA,CAAeA,UAAA,CAAE,UAAA,CAAW,OAAO,CAAA,EAAGA,UAAA,CAAE,aAAA,CAAc,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,EAAE,CAAC,CAAA;AAAA,YAC9EA,UAAA,CAAE,cAAA;AAAA,cACAA,UAAA,CAAE,WAAW,gBAAgB,CAAA;AAAA,cAC7BA,UAAA,CAAE,aAAA;AAAA,gBACA,YAAA,CAAa,WAAW,CAAA,GACpB,MAAA,CAAO,OAAO,MAAM,CAAA,GACpB,GAAG,MAAA,CAAO,MAAM,IAAI,YAAA,CAAa,GAAA,CAAI,CAAC,OAAA,KAAY,OAAA,CAAQ,SAAS,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AACpF;AACF,WACD,CAAA;AAAA,UACDA,UAAA,CAAE,gBAAA,CAAiB,EAAE;AAAA;AACvB,OACF;AAAA,MACAA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,YAAY,CAAA;AAAA,QACzBA,UAAA,CAAE,uBAAA;AAAA,UACA,CAACA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAC,CAAA;AAAA,UAC5BA,UAAA,CAAE,eAAA;AAAA,YACA,MAAA,CAAO,GAAA;AAAA,cAAI,CAAC,KAAA,KACV,gBAAA;AAAA,gBACE,MAAM,YAAA,GACF,6BAAA;AAAA,kBACE,KAAA,CAAM,YAAA;AAAA,kBACN,SAAA,CAAU,iBAAA;AAAA,kBACV;AAAA,iBACF,GACA;AAAA;AACN;AACF;AACF;AACF,OACF;AAAA,MACA,GAAI,YAAA,CAAa,MAAA,GAAS,CAAA,GACtB;AAAA,QACEA,UAAA,CAAE,cAAA;AAAA,UACAA,UAAA,CAAE,WAAW,WAAW,CAAA;AAAA,UACxBA,UAAA,CAAE,uBAAA;AAAA,YACA,CAACA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAC,CAAA;AAAA,YAC5BA,UAAA,CAAE,eAAA;AAAA,cACA,YAAA,CAAa,GAAA;AAAA,gBAAI,CAAC,YAChBA,UAAA,CAAE,gBAAA;AAAA,kBACAA,UAAA,CAAE,UAAU,cAAc,CAAA;AAAA,kBAC1BA,UAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAS;AAAA;AAChC;AACF;AACF;AACF;AACF,UAEF,EAAC;AAAA,MACLA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,QAAQ,CAAA;AAAA,QACrBA,UAAA,CAAE,uBAAA;AAAA,UACA,CAACA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAA,EAAGA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAA,EAAGA,UAAA,CAAE,SAAA,CAAU,cAAc,CAAC,CAAA;AAAA,UACtF;AAAA;AACF,OACF;AAAA,MACAA,UAAA,CAAE,cAAA;AAAA,QACAA,UAAA,CAAE,WAAW,UAAU,CAAA;AAAA,QACvBA,UAAA,CAAE,eAAA;AAAA,UACA;AAAA,YACE,GAAI,QAAA,CAAS,QAAA,IAAY,EAAC;AAAA,YAC1B,GAAG,UAAA,CAAW,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,cAC5B,IAAA,EAAM,OAAA;AAAA,cACN,IAAI,KAAA,CAAM,EAAA;AAAA,cACV,QAAQ,KAAA,CAAM,MAAA;AAAA,cACd,cAAc,KAAA,CAAM;AAAA,aACtB,CAAE;AAAA,WACJ,CAAE,GAAA;AAAA,YAAI,CAAC,OAAA,KACL,aAAA,CAAc,SAAS,cAAA,EAAgB,cAAA,EAAgB,iBAAiB,cAAc;AAAA;AACxF;AACF;AACF,KACD,CAAA;AAAA,IACDA,UAAA,CAAE,eAAA;AAAA,MACA,eAAA,CAAgB,GAAA,CAAI,CAAC,OAAA,KAAYA,UAAA,CAAE,UAAU,yBAAA,CAA0B,GAAA,CAAI,OAAO,CAAE,CAAC;AAAA;AACvF,GACD,CAAA;AAED,EAAA,IAAA,CACG,GAAA,CAAI,MAAM,CAAA,CACV,WAAA;AAAA,IACCA,WAAE,cAAA,CAAe;AAAA,MACfA,WAAE,eAAA,CAAgB,cAAA,CAAe,oBAAA,EAAsB,SAAA,CAAU,YAAY,CAAC;AAAA,KAC/E;AAAA,GACH;AACF,EAAA,aAAA,CAAc,WAAA;AAAA,IACZA,UAAA,CAAE,oBAAoB,OAAA,EAAS,CAACA,WAAE,kBAAA,CAAmB,oBAAA,EAAsB,UAAU,CAAC,CAAC;AAAA,GACzF;AACA,EAAA,KAAA,MAAW,OAAA,IAAW,eAAA,EAAiB,mBAAA,CAAoB,GAAA,CAAI,OAAO,CAAA;AACtE,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,kBAAkB,WAAA,EAA+C;AACxE,EAAA,MAAM,aAA0B,EAAC;AACjC,EAAA,WAAA,CAAY,QAAA,CAAS;AAAA,IACnB,oBAAoB,IAAA,EAAM;AACxB,MAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,EAAA,IAAM,CAAC,gBAAgB,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,IAAI,CAAA,EAAG;AAC1D,MAAA,MAAM,SAAS,IAAA,CAAK,UAAA;AACpB,MAAA,IACE,CAAC,MAAA,CAAO,SAAA,EAAU,IAClB,CAAC,MAAA,CAAO,wBAAA,EAAyB,IACjC,CAAC,MAAA,CAAO,0BAAA,EAA2B,EACnC;AACA,QAAA;AAAA,MACF;AACA,MAAA,UAAA,CAAW,IAAA,CAAK;AAAA,QACd,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,IAAA;AAAA,QACnB,IAAA;AAAA,QACA,aAAA,EAAe,MAAA,CAAO,SAAA,EAAU,GAAI,IAAA,GAAO;AAAA,OAC5C,CAAA;AAAA,IACH,CAAA;AAAA,IACA,mBAAmB,IAAA,EAAM;AACvB,MAAA,IACE,CAACA,UAAA,CAAE,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,IAC5B,CAAC,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,IAAI,CAAA,IACjC,CAACA,UAAA,CAAE,oBAAA,CAAqB,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,IAAK,CAACA,UAAA,CAAE,yBAAA,CAA0B,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EACvF;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,cAAc,IAAA,CAAK,UAAA;AACzB,MAAA,MAAM,YAAY,WAAA,CAAY,UAAA;AAC9B,MAAA,IAAI,CAAC,SAAA,EAAW;AAChB,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,SAAA,EAAU,GACjC,WAAA,GACA,SAAA,CAAU,wBAAA,EAAyB,IAAK,SAAA,CAAU,UAAA,CAAW,SAAA,EAAU,GACrE,SAAA,GACA,IAAA;AACN,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,UAAA,CAAW,IAAA,CAAK;AAAA,QACd,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,IAAA;AAAA,QACnB,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAAA,QACrB,aAAA,EAAe;AAAA,OAChB,CAAA;AAAA,IACH;AAAA,GACD,CAAA;AACD,EAAA,OAAO,UAAA;AACT;AAEA,eAAsB,kBAAA,CACpB,IAAA,EACA,EAAA,EACA,OAAA,EACmC;AACnC,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,MAAM,cAAoC,EAAC;AAC3C,EAAA,MAAM,kBAAA,GAAqB;AAAA,IACzB,qBAAA,EAAuB,CAAA;AAAA,IACvB,qBAAA,EAAuB,CAAA;AAAA,IACvB,sBAAA,EAAwB,CAAA;AAAA,IACxB,uBAAA,EAAyB,CAAA;AAAA,IACzB,sBAAA,EAAwB,CAAA;AAAA,IACxB,mBAAA,EAAqB,CAAA;AAAA,IACrB,uCAAA,EAAyC,CAAA;AAAA,IACzC,4BAAA,EAA8B,CAAA;AAAA,IAC9B,oBAAA,EAAsB,CAAA;AAAA,IACtB,0BAAA,EAA4B,CAAA;AAAA,IAC5B,oBAAA,EAAsB,CAAA;AAAA,IACtB,qBAAA,EAAuB,CAAA;AAAA,IACvB,sBAAA,EAAwB,CAAA;AAAA,IACxB,mBAAA,EAAqB;AAAA,GACvB;AACA,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,0BAAA,EAA4B,CAAA;AAAA,IAC5B,yBAAA,EAA2B,CAAA;AAAA,IAC3B,sBAAA,EAAwB,CAAA;AAAA,IACxB,wBAAA,EAA0B,CAAA;AAAA,IAC1B,kCAAA,EAAoC,CAAA;AAAA,IACpC,uCAAA,EAAyC,CAAA;AAAA,IACzC,+BAAA,EAAiC,CAAA;AAAA,IACjC,qCAAA,EAAuC,CAAA;AAAA,IACvC,sCAAA,EAAwC,CAAA;AAAA,IACxC,8BAAA,EAAgC,CAAA;AAAA,IAChC,kCAAA,EAAoC,CAAA;AAAA,IACpC,sCAAA,EAAwC,CAAA;AAAA,IACxC,mCAAA,EAAqC,CAAA;AAAA,IACrC,gCAAA,EAAkC,CAAA;AAAA,IAClC,6BAAA,EAA+B,CAAA;AAAA,IAC/B,4BAAA,EAA8B;AAAA,GAChC;AACA,EAAA,MAAM,SAAS,OAAkB;AAAA,IAC/B,IAAA,EAAM,gBAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP,QAAQ,WAAA,EAAa;AACnB,QAAA,MAAM,mBAAmB,IAAI,GAAA,CAAI,eAAA,CAAgB,WAAA,CAAY,IAAI,CAAC,CAAA;AAClE,QAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,QAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,QAAA,MAAM,SAAA,uBAAgB,GAAA,EAAY;AAClC,QAAA,KAAA,MAAW,SAAA,IAAa,WAAA,CAAY,IAAA,CAAK,IAAA,EAAM;AAC7C,UAAA,IAAI,CAACA,UAAA,CAAE,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACvC,UAAA,IAAI,SAAA,CAAU,MAAA,CAAO,KAAA,KAAU,qBAAA,EAAuB;AACpD,YAAA,KAAA,MAAW,SAAA,IAAa,UAAU,UAAA,EAAY;AAC5C,cAAA,IACEA,UAAA,CAAE,iBAAA,CAAkB,SAAS,CAAA,IAC7BA,UAAA,CAAE,YAAA,CAAa,SAAA,CAAU,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA,EACnD;AACA,gBAAA,SAAA,CAAU,GAAA,CAAI,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAAA,cACpC;AAAA,YACF;AACA,YAAA;AAAA,UACF;AACA,UAAA,IAAI,SAAA,CAAU,MAAA,CAAO,KAAA,KAAU,OAAA,EAAS;AACxC,UAAA,KAAA,MAAW,SAAA,IAAa,UAAU,UAAA,EAAY;AAC5C,YAAA,IAAIA,WAAE,wBAAA,CAAyB,SAAS,KAAKA,UAAA,CAAE,0BAAA,CAA2B,SAAS,CAAA,EAAG;AACpF,cAAA,UAAA,CAAW,GAAA,CAAI,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAAA,YACrC,CAAA,MAAA,IACEA,UAAA,CAAE,iBAAA,CAAkB,SAAS,CAAA,IAC7BA,UAAA,CAAE,YAAA,CAAa,SAAA,CAAU,QAAA,EAAU,EAAE,IAAA,EAAM,UAAA,EAAY,CAAA,EACvD;AACA,cAAA,aAAA,CAAc,GAAA,CAAI,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAAA,YACxC;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAM,UAAA,GAAa,kBAAkB,WAAW,CAAA;AAChD,QAAA,MAAM,yBAAA,GACJ,WAAA,CAAY,KAAA,CAAM,qBAAA,CAAsB,yBAAyB,CAAA;AACnE,QAAA,MAAM,wBAAA,GAA2B,YAAY,KAAA,CAAM,qBAAA;AAAA,UACjD;AAAA,SACF;AACA,QAAA,MAAM,0BAAA,GAA6B,YAAY,KAAA,CAAM,qBAAA;AAAA,UACnD;AAAA,SACF;AACA,QAAA,MAAM,0BAAA,GAA6B,YAAY,KAAA,CAAM,qBAAA;AAAA,UACnD;AAAA,SACF;AACA,QAAA,MAAM,+BAAA,GAAkC,YAAY,KAAA,CAAM,qBAAA;AAAA,UACxD;AAAA,SACF;AACA,QAAA,MAAM,0CAAA,GAA6C,YAAY,KAAA,CAAM,qBAAA;AAAA,UACnE;AAAA,SACF;AACA,QAAA,MAAM,+CAAA,GACJ,YAAY,KAAA,CAAM,qBAAA;AAAA,UAChB;AAAA,SACF;AACF,QAAA,MAAM,2CAAA,GAA8C,YAAY,KAAA,CAAM,qBAAA;AAAA,UACpE;AAAA,SACF;AACA,QAAA,MAAM,gDAAA,GACJ,YAAY,KAAA,CAAM,qBAAA;AAAA,UAChB;AAAA,SACF;AACF,QAAA,MAAM,qCAAA,GAAwC,YAAY,KAAA,CAAM,qBAAA;AAAA,UAC9D;AAAA,SACF;AACA,QAAA,MAAM,4CAAA,GACJ,YAAY,KAAA,CAAM,qBAAA;AAAA,UAChB;AAAA,SACF;AACF,QAAA,MAAM,uCAAA,GAA0C,YAAY,KAAA,CAAM,qBAAA;AAAA,UAChE;AAAA,SACF;AACA,QAAA,MAAM,8BAAA,GAAiC,YAAY,KAAA,CAAM,qBAAA;AAAA,UACvD;AAAA,SACF;AACA,QAAA,MAAM,oCAAA,GAAuC,YAAY,KAAA,CAAM,qBAAA;AAAA,UAC7D;AAAA,SACF;AACA,QAAA,MAAM,2BAAA,GAA8B,YAAY,KAAA,CAAM,qBAAA;AAAA,UACpD;AAAA,SACF;AACA,QAAA,MAAM,4BAAA,GAA+B,YAAY,KAAA,CAAM,qBAAA;AAAA,UACrD;AAAA,SACF;AACA,QAAA,MAAM,+BAAA,GAAkC,YAAY,KAAA,CAAM,qBAAA;AAAA,UACxD;AAAA,SACF;AACA,QAAA,MAAM,iCAAA,GAAoC,YAAY,KAAA,CAAM,qBAAA;AAAA,UAC1D;AAAA,SACF;AACA,QAAA,MAAM,2BAAA,GAA8B,YAAY,KAAA,CAAM,qBAAA;AAAA,UACpD;AAAA,SACF;AACA,QAAA,MAAM,qCAAA,GAAwC,YAAY,KAAA,CAAM,qBAAA;AAAA,UAC9D;AAAA,SACF;AACA,QAAA,MAAM,wBAAA,GAA2B,YAAY,KAAA,CAAM,qBAAA;AAAA,UACjD;AAAA,SACF;AACA,QAAA,MAAM,kCAAA,GAAqC,YAAY,KAAA,CAAM,qBAAA;AAAA,UAC3D;AAAA,SACF;AACA,QAAA,MAAM,iCAAA,GAAoC,YAAY,KAAA,CAAM,qBAAA;AAAA,UAC1D;AAAA,SACF;AACA,QAAA,MAAM,yBAAA,GAA4B,YAAY,KAAA,CAAM,qBAAA;AAAA,UAClD;AAAA,SACF;AACA,QAAA,MAAM,+BAAA,GAAkC,YAAY,KAAA,CAAM,qBAAA;AAAA,UACxD;AAAA,SACF;AACA,QAAA,MAAM,iCAAA,GAAoC,YAAY,KAAA,CAAM,qBAAA;AAAA,UAC1D;AAAA,SACF;AACA,QAAA,MAAM,4BAA4B,IAAI,GAAA;AAAA,UACpC,MAAA,CAAO,QAAQ,gCAAgC,CAAA,CAAE,IAAI,CAAC,CAAC,OAAA,EAAS,UAAU,CAAA,KAAM;AAAA,YAC9E,OAAA;AAAA,YACA,WAAA,CAAY,KAAA,CAAM,qBAAA,CAAsB,UAAU;AAAA,WACnD;AAAA,SACH;AACA,QAAA,MAAM,mBAAA,uBAA0B,GAAA,EAAgC;AAChE,QAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,UAAA,MAAM,qBAAqB,IAAI,GAAA;AAAA,YAC7BA,UAAA,CAAE,gBAAA,CAAiB,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,GACvC,eAAA,CAAgB,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,IAAI,IACxC;AAAC,WACP;AACA,UAAA,MAAM,kBAAA,GACJ,iBAAiB,GAAA,CAAI,OAAA,CAAQ,SAAS,CAAA,IAAK,kBAAA,CAAmB,GAAA,CAAI,OAAA,CAAQ,SAAS,CAAA;AACrF,UAAA,IAAI,kBAAA,CAAmB,GAAA,CAAI,iBAAiB,CAAA,EAAG;AAC/C,UAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,YAAA,IAAgB,CAAC,kBAAA,EAAoB;AAE1D,UAAA,MAAM,MAAA,GAAS,gBAAA;AAAA,YACb,SAAA;AAAA,YACA,yBAAA;AAAA,YACA,wBAAA;AAAA,YACA,0BAAA;AAAA,YACA,0BAAA;AAAA,YACA,+BAAA;AAAA,YACA,0CAAA;AAAA,YACA,+CAAA;AAAA,YACA,2CAAA;AAAA,YACA,gDAAA;AAAA,YACA,qCAAA;AAAA,YACA,4CAAA;AAAA,YACA,uCAAA;AAAA,YACA,8BAAA;AAAA,YACA,oCAAA;AAAA,YACA,2BAAA;AAAA,YACA,4BAAA;AAAA,YACA,+BAAA;AAAA,YACA,iCAAA;AAAA,YACA,2BAAA;AAAA,YACA,qCAAA;AAAA,YACA,wBAAA;AAAA,YACA,kCAAA;AAAA,YACA,iCAAA;AAAA,YACA,yBAAA;AAAA,YACA,+BAAA;AAAA,YACA,iCAAA;AAAA,YACA,yBAAA;AAAA,YACA,mBAAA;AAAA,YACA,kBAAA;AAAA,YACA,aAAA;AAAA,YACA,aAAA;AAAA,YACA,UAAA;AAAA,YACA,SAAA;AAAA,YACA,EAAA;AAAA,YACA,OAAA,CAAQ;AAAA,WACV;AACA,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,WAAA,CAAY,IAAA,CAAK;AAAA,cACf,WAAW,SAAA,CAAU,IAAA;AAAA,cACrB,MAAA;AAAA,cACA,QAAA,EAAU;AAAA,aACX,CAAA;AAAA,UACH,CAAA,MAAO;AACL,YAAA,QAAA,CAAS,IAAA,CAAK,UAAU,IAAI,CAAA;AAAA,UAC9B;AAAA,QACF;AAEA,QAAA,MAAM,mCACJ,aAAA,CAAc,wBAAA,GACd,cAAc,8BAAA,GACZ,aAAA,CAAc,qCACd,aAAA,CAAc,mCAAA;AAClB,QAAA,MAAM,4BAAA,GACJ,aAAA,CAAc,yBAAA,GAA4B,aAAA,CAAc,sBAAA,GAAyB,CAAA;AACnF,QAAA,MAAM,kCAAA,GACH,kBAAA,CAAmB,qBAAA,GAAwB,CAAA,KACzC,kBAAA,CAAmB,qBAAA,GAAwB,CAAA,IAC1C,kBAAA,CAAmB,oBAAA,GAAuB,CAAA,CAAA,IAC9C,aAAA,CAAc,sCAAA,GAAyC,CAAA;AACzD,QAAA,MAAM,gCAAA,GACJ,kBAAA,CAAmB,qBAAA,GACnB,aAAA,CAAc,qCAAA;AAChB,QAAA,MAAM,mCAAA,GACJ,mBAAmB,sBAAA,GAAyB,CAAA,KAC3C,mBAAmB,qBAAA,GAAwB,CAAA,IAC1C,mBAAmB,oBAAA,GAAuB,CAAA,CAAA;AAC9C,QAAA,MAAM,iCAAA,GACJ,kBAAA,CAAmB,sBAAA,GACnB,aAAA,CAAc,sCAAA;AAChB,QAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,UAAA,WAAA,CAAY,gBAAA;AAAA,YACV,MAAA;AAAA,YACAA,UAAA,CAAE,iBAAA;AAAA,cACA;AAAA,gBACEA,UAAA,CAAE,eAAA;AAAA,kBACA,yBAAA;AAAA,kBACAA,UAAA,CAAE,WAAW,qCAAqC;AAAA,iBACpD;AAAA,gBACA,GAAI,kBAAA,CAAmB,mBAAA,GAAsB,aAAA,CAAc,wBAAA,GACvD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,wBAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,8BAA8B;AAAA;AAC7C,oBAEF,EAAC;AAAA,gBACL,GAAI,gCAAA,GACA;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,+BAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,qCAAqC;AAAA;AACpD,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,kCAAA,GAAqC,CAAA,GACnD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,+CAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,qDAAqD;AAAA;AACpE,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,mCAAA,GAAsC,CAAA,GACpD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,gDAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,sDAAsD;AAAA;AACrE,oBAEF,EAAC;AAAA,gBACL,GAAI,4BAAA,GACA;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,8BAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,oCAAoC;AAAA;AACnD,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,+BAAA,GAAkC,CAAA,GAChD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,oCAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,kDAAkD;AAAA;AACjE,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,qCAAA,GAAwC,KAC1D,aAAA,CAAc,kCAAA,GACZ,cAAc,uCAAA,GACZ;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,0CAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,gDAAgD;AAAA;AAC/D,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,sCAAA,GAAyC,CAAA,GACvD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,2CAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,iDAAiD;AAAA;AAChE,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,8BAAA,GAAiC,CAAA,GAC/C;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,qCAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,2CAA2C;AAAA;AAC1D,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,uCAAA,GAA0C,CAAA,GACxD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,4CAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,kDAAkD;AAAA;AACjE,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,uCAAA,GAA0C,CAAA,GACxD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,uCAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,6CAA6C;AAAA;AAC5D,oBAEF,EAAC;AAAA,gBACL,GAAI,gCAAA,IACJ,aAAA,CAAc,sCAAA,GAAyC,CAAA,GACnD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,0BAAA;AAAA,oBACAA,UAAA,CAAE,UAAA;AAAA,sBACA,qCACI,0CAAA,GACA;AAAA;AACN;AACF,oBAEF,EAAC;AAAA,gBACL,GAAI,kBAAA,CAAmB,qBAAA,GAAwB,CAAA,GAC3C;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,0BAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,gCAAgC;AAAA;AAC/C,oBAEF,EAAC;AAAA,gBACL,GAAI,iCAAA,GACA;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,2BAAA;AAAA,oBACAA,UAAA,CAAE,UAAA;AAAA,sBACA,sCACI,2CAAA,GACA;AAAA;AACN;AACF,oBAEF,EAAC;AAAA,gBACL,GAAI,kBAAA,CAAmB,uBAAA,GACvB,aAAA,CAAc,0BAAA,GACZ,cAAc,4BAAA,GACZ;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,4BAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,wCAAwC;AAAA;AACvD,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,0BAAA,GAA6B,CAAA,GAC3C;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,+BAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,qCAAqC;AAAA;AACpD,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,4BAAA,GAA+B,CAAA,GAC7C;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,iCAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,uCAAuC;AAAA;AACtD,oBAEF,EAAC;AAAA,gBACL,GAAI,kBAAA,CAAmB,sBAAA,GACvB,aAAA,CAAc,gCAAA,GACZ,cAAc,yBAAA,GACZ;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,2BAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,iCAAiC;AAAA;AAChD,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,gCAAA,GAAmC,CAAA,GACjD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,qCAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,2CAA2C;AAAA;AAC1D,oBAEF,EAAC;AAAA,gBACL,GAAI,kBAAA,CAAmB,mBAAA,GACvB,aAAA,CAAc,6BAAA,GAAgC,cAAc,sBAAA,GACxD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,wBAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,8BAA8B;AAAA;AAC7C,oBAEF,EAAC;AAAA,gBACL,GAAI,aAAA,CAAc,6BAAA,GAAgC,CAAA,GAC9C;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,kCAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,wCAAwC;AAAA;AACvD,oBAEF,EAAC;AAAA,gBACL,GAAI,kBAAA,CAAmB,4BAAA,GACvB,aAAA,CAAc,kCAAA,GACZ,cAAc,sCAAA,GACZ;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,iCAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,uCAAuC;AAAA;AACtD,oBAEF,EAAC;AAAA,gBACL,GAAI,kBAAA,CAAmB,oBAAA,GAAuB,CAAA,IAC9C,kBAAA,CAAmB,+BAA+B,CAAA,GAC9C;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,yBAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,+BAA+B;AAAA;AAC9C,oBAEF,EAAC;AAAA,gBACL,GAAI,kBAAA,CAAmB,0BAAA,GAA6B,CAAA,GAChD;AAAA,kBACEA,UAAA,CAAE,eAAA;AAAA,oBACA,+BAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,qCAAqC;AAAA,mBACpD;AAAA,kBACAA,UAAA,CAAE,eAAA;AAAA,oBACA,iCAAA;AAAA,oBACAA,UAAA,CAAE,WAAW,sCAAsC;AAAA;AACrD,oBAEF,EAAC;AAAA,gBACL,GAAG,CAAC,GAAG,mBAAmB,CAAA,CACvB,MAAK,CACL,GAAA;AAAA,kBAAI,CAAC,YACJA,UAAA,CAAE,eAAA;AAAA,oBACAA,UAAA,CAAE,SAAA,CAAU,yBAAA,CAA0B,GAAA,CAAI,OAAO,CAAE,CAAA;AAAA,oBACnDA,UAAA,CAAE,UAAA,CAAW,gCAAA,CAAiC,OAAO,CAAC;AAAA;AACxD;AACF,eACJ;AAAA,cACAA,UAAA,CAAE,cAAc,iCAAiC;AAAA;AACnD,WACF;AAAA,QACF;AAAA,MACF;AAAA;AACF,GACF,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,MAAMY,mBAAA,CAAe,IAAA,EAAM;AAAA,IACxC,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,IAAA;AAAA,IACN,UAAA,EAAY,IAAA;AAAA,IACZ,cAAA,EAAgB,EAAA;AAAA,IAChB,UAAA,EAAY,KAAA;AAAA,IACZ,OAAA,EAAS,KAAA;AAAA,IACT,UAAA,EAAY;AAAA,MACV,OAAA,EAAS,CAAC,KAAA,EAAO,YAAY;AAAA,KAC/B;AAAA,IACA,aAAA,EAAe;AAAA,MACb,QAAA,EAAU,IAAA;AAAA,MACV,OAAA,EAAS;AAAA,KACX;AAAA,IACA,OAAA,EAAS,CAAC,MAAM;AAAA,GACjB,CAAA;AAED,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAQ,IAAA,IAAQ,IAAA;AAAA,IACtB,GAAA,EAAK,QAAQ,GAAA,IAAO,IAAA;AAAA,IACpB,QAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA,EAAe;AAAA,GACjB;AACF;ACv1UA,SAAS,iBAAA,CAAkB,aAAqB,EAAA,EAAoB;AAClE,EAAA,OAAOC,cAAS,WAAA,EAAa,EAAE,CAAA,CAAE,OAAA,CAAQ,OAAO,GAAG,CAAA;AACrD;AAEO,SAAS,yBAAA,CACd,aACA,YAAA,EACqB;AACrB,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAoB;AAC7C,EAAA,IAAI,oBAAA,GAAuB,CAAA;AAC3B,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,qBAAA,GAAwB,CAAA;AAC5B,EAAA,IAAI,qBAAA,GAAwB,CAAA;AAC5B,EAAA,IAAI,sBAAA,GAAyB,CAAA;AAC7B,EAAA,IAAI,uBAAA,GAA0B,CAAA;AAC9B,EAAA,IAAI,sBAAA,GAAyB,CAAA;AAC7B,EAAA,IAAI,mBAAA,GAAsB,CAAA;AAC1B,EAAA,IAAI,uCAAA,GAA0C,CAAA;AAC9C,EAAA,IAAI,4BAAA,GAA+B,CAAA;AACnC,EAAA,IAAI,oBAAA,GAAuB,CAAA;AAC3B,EAAA,IAAI,0BAAA,GAA6B,CAAA;AACjC,EAAA,IAAI,oBAAA,GAAuB,CAAA;AAC3B,EAAA,IAAI,qBAAA,GAAwB,CAAA;AAC5B,EAAA,IAAI,sBAAA,GAAyB,CAAA;AAC7B,EAAA,IAAI,mBAAA,GAAsB,CAAA;AAE1B,EAAA,MAAM,OAAA,GAAU,CAAC,GAAG,YAAY,CAAA,CAC7B,IAAI,CAAC,EAAE,EAAA,EAAI,MAAA,EAAO,KAAM;AACvB,IAAA,oBAAA,IAAwB,MAAA,CAAO,QAAA,CAAS,MAAA,GAAS,MAAA,CAAO,WAAA,CAAY,MAAA;AACpE,IAAA,QAAA,IAAY,OAAO,QAAA,CAAS,MAAA;AAC5B,IAAA,QAAA,IAAY,OAAO,WAAA,CAAY,MAAA;AAC/B,IAAA,qBAAA,IAAyB,MAAA,CAAO,cAAc,qBAAA,IAAyB,CAAA;AACvE,IAAA,qBAAA,IAAyB,MAAA,CAAO,cAAc,qBAAA,IAAyB,CAAA;AACvE,IAAA,sBAAA,IAA0B,MAAA,CAAO,cAAc,sBAAA,IAA0B,CAAA;AACzE,IAAA,uBAAA,IAA2B,MAAA,CAAO,cAAc,uBAAA,IAA2B,CAAA;AAC3E,IAAA,sBAAA,IAA0B,MAAA,CAAO,cAAc,sBAAA,IAA0B,CAAA;AACzE,IAAA,mBAAA,IAAuB,MAAA,CAAO,cAAc,mBAAA,IAAuB,CAAA;AACnE,IAAA,uCAAA,IACE,MAAA,CAAO,cAAc,uCAAA,IAA2C,CAAA;AAClE,IAAA,4BAAA,IAAgC,MAAA,CAAO,cAAc,4BAAA,IAAgC,CAAA;AACrF,IAAA,oBAAA,IAAwB,MAAA,CAAO,cAAc,oBAAA,IAAwB,CAAA;AACrE,IAAA,0BAAA,IAA8B,MAAA,CAAO,cAAc,0BAAA,IAA8B,CAAA;AACjF,IAAA,oBAAA,IAAwB,MAAA,CAAO,cAAc,oBAAA,IAAwB,CAAA;AACrE,IAAA,qBAAA,IAAyB,MAAA,CAAO,cAAc,qBAAA,IAAyB,CAAA;AACvE,IAAA,sBAAA,IAA0B,MAAA,CAAO,cAAc,sBAAA,IAA0B,CAAA;AACzE,IAAA,mBAAA,IAAuB,OAAO,aAAA,CAAc,mBAAA;AAC5C,IAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,WAAA,EAAa,EAAE,CAAA;AAClD,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,KAAe;AACvD,MAAA,YAAA,CAAa,GAAA,CAAI,WAAW,MAAA,EAAA,CAAS,YAAA,CAAa,IAAI,UAAA,CAAW,MAAM,CAAA,IAAK,CAAA,IAAK,CAAC,CAAA;AAClF,MAAA,OAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,GAAG,UAAA,EAAW;AAAA,IAC3C,CAAC,CAAA;AACD,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,QAAA;AAAA,MACJ,UAAU,CAAC,GAAG,MAAA,CAAO,QAAQ,EAAE,IAAA,EAAK;AAAA,MACpC,eAAe,MAAA,CAAO,aAAA;AAAA,MACtB;AAAA,KACF;AAAA,EACF,CAAC,CAAA,CACA,IAAA,CAAK,CAAC,IAAA,EAAM,KAAA,KAAU,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,KAAA,CAAM,EAAE,CAAC,CAAA;AAExD,EAAA,MAAM,eAAA,GAAkB,CAAC,GAAG,YAAY,CAAA,CACrC,GAAA,CAAI,CAAC,CAAC,MAAA,EAAQ,KAAK,CAAA,MAAO,EAAE,KAAA,EAAO,MAAA,EAAO,CAAE,CAAA,CAC5C,IAAA,CAAK,CAAC,IAAA,EAAM,KAAA,KAAU,KAAA,CAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,MAAA,CAAO,aAAA,CAAc,KAAA,CAAM,MAAM,CAAC,CAAA;AAE5F,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,CAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,SAAS,OAAA,CAAQ,MAAA;AAAA,MACjB,oBAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,qBAAA;AAAA,MACA,qBAAA;AAAA,MACA,sBAAA;AAAA,MACA,uBAAA;AAAA,MACA,sBAAA;AAAA,MACA,mBAAA;AAAA,MACA,uCAAA;AAAA,MACA,4BAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,qBAAA;AAAA,MACA,sBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,eAAsB,wBAAA,CACpB,WAAA,EACA,UAAA,EACA,YAAA,EACiB;AACjB,EAAA,MAAM,UAAA,GAAaC,YAAA,CAAQ,WAAA,EAAa,UAAU,CAAA;AAClD,EAAA,MAAM,6BAAA,CAA8B,aAAa,UAAU,CAAA;AAC3D,EAAA,MAAM,MAAA,GAAS,yBAAA,CAA0B,WAAA,EAAa,YAAY,CAAA;AAClE,EAAA,MAAMC,eAAMC,YAAA,CAAQ,UAAU,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AACpD,EAAA,MAAMC,kBAAA,CAAU,YAAY,CAAA,EAAG,IAAA,CAAK,UAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAC;AAAA,CAAA,EAAM,MAAM,CAAA;AAC1E,EAAA,OAAO,UAAA;AACT;AAEA,eAAe,6BAAA,CACb,aACA,UAAA,EACe;AACf,EAAA,MAAM,eAAA,GAAkB,MAAMC,iBAAA,CAAS,WAAW,CAAA;AAClD,EAAA,IAAI,gBAAA,GAAmB,UAAA;AAEvB,EAAA,OAAO,IAAA,EAAM;AACX,IAAA,IAAI;AACF,MAAA,gBAAA,GAAmB,MAAMA,kBAAS,gBAAgB,CAAA;AAClD,MAAA;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IAAK,KAAA,CAAgC,IAAA,KAAS,QAAA,EAAU,MAAM,KAAA;AAC9D,MAAA,IAAI,aAAA,GAAgB,KAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAMC,eAAM,gBAAgB,CAAA;AAC5B,QAAA,aAAA,GAAgB,IAAA;AAAA,MAClB,SAAS,SAAA,EAAW;AAClB,QAAA,IAAK,SAAA,CAAoC,IAAA,KAAS,QAAA,EAAU,MAAM,SAAA;AAAA,MACpE;AACA,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,MAAA,GAASH,aAAQ,gBAAgB,CAAA;AACvC,MAAA,IAAI,MAAA,KAAW,kBAAkB,MAAM,KAAA;AACvC,MAAA,gBAAA,GAAmB,MAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,MAAM,YAAA,GAAeH,aAAA,CAAS,eAAA,EAAiB,gBAAgB,CAAA;AAC/D,EAAA,IAAI,YAAA,KAAiB,IAAA,IAAQ,YAAA,CAAa,UAAA,CAAW,CAAA,EAAA,EAAKO,QAAG,CAAA,CAAE,CAAA,IAAKC,eAAA,CAAW,YAAY,CAAA,EAAG;AAC5F,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACF;;;ACpKO,IAAM,0BAAA,GAA6B,cAAA;AACnC,IAAM,4BAAA,GAA+B,2BAAA;AAE5C,SAAS,4BAA4B,KAAA,EAAwB;AAC3D,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,4BAAA;AAChC,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,KAAA,CAAM,MAAK,EAAG;AAC9C,IAAA,MAAM,IAAI,UAAU,mEAAmE,CAAA;AAAA,EACzF;AACA,EAAA,MAAM,aAAa,KAAA,CAAM,IAAA,EAAK,CAAE,OAAA,CAAQ,OAAO,GAAG,CAAA;AAClD,EAAA,IACE,UAAA,CAAW,UAAA,CAAW,GAAG,CAAA,IACzB,eAAe,IAAA,CAAK,UAAU,CAAA,IAC9B,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,EACnC;AACA,IAAA,MAAM,IAAI,UAAU,mEAAmE,CAAA;AAAA,EACzF;AACA,EAAA,OAAO,UAAA;AACT;AAEO,SAAS,8BACd,KAAA,EACgC;AAChC,EAAA,MAAM,OAAA,GAAU,KAAA,KAAU,IAAA,GAAO,EAAC,GAAI,KAAA;AACtC,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,OAAA;AAE7B,EAAA,IAAI,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,YAAA,EAAc;AAC7C,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,6BAAA,EAAgC,MAAA,CAAO,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EACpE;AAEA,EAAA,IAAI,OAAA,CAAQ,SAAA,KAAc,MAAA,IAAa,IAAA,KAAS,YAAA,EAAc;AAC5D,IAAA,MAAM,IAAI,UAAU,yEAAyE,CAAA;AAAA,EAC/F;AAEA,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,SAAA,EAAW,IAAA,EAAK,IAAK,0BAAA;AAC/C,EAAA,MAAM,aAAA,GAAgB,QAAQ,aAAA,IAAiB,UAAA;AAC/C,EAAA,IAAI,CAAE,CAAC,UAAA,EAAY,MAAA,EAAQ,OAAO,CAAA,CAAY,QAAA,CAAS,aAAa,CAAA,EAAG;AACrE,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,wCAAA,EAA2C,MAAA,CAAO,aAAa,CAAC,CAAA,CAAE,CAAA;AAAA,EACxF;AAEA,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,QAAA;AACzC,EAAA,IAAI,UAAA,KAAe,QAAA,IAAY,UAAA,KAAe,QAAA,EAAU;AACtD,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,wCAAA,EAA2C,MAAA,CAAO,UAAU,CAAC,CAAA,CAAE,CAAA;AAAA,EACrF;AAEA,EAAA,IAAI,QAAQ,MAAA,KAAW,MAAA,IAAa,OAAO,OAAA,CAAQ,WAAW,SAAA,EAAW;AACvE,IAAA,MAAM,IAAI,UAAU,qDAAqD,CAAA;AAAA,EAC3E;AACA,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,KAAA,IAAS,OAAA,CAAQ,eAAe,MAAA,EAAW;AAChE,IAAA,MAAM,IAAI,SAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,UAAA,GAAa,2BAAA,CAA4B,OAAA,CAAQ,UAAU,CAAA;AACjE,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,KAAW,IAAA,IAAQ,QAAQ,UAAA,KAAe,MAAA;AAEjE,EAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,aAAA,EAAe,UAAA,EAAY,QAAQ,UAAA,EAAW;AAC1E;;;ACtFA,SAAS,oBACP,eAAA,EACwC;AACxC,EAAA,MAAM,eAAe,eAAA,EAAiB,YAAA;AACtC,EAAA,IAAI,CAAC,YAAA,IAAgB,OAAO,YAAA,KAAiB,UAAU,OAAO,KAAA;AAC9D,EAAA,MAAM,WAAY,YAAA,CAAwC,QAAA;AAC1D,EAAA,IAAI,CAAC,UAAU,OAAO,KAAA;AACtB,EAAA,IAAI,QAAA,KAAa,IAAA,EAAM,OAAO,6BAAA,CAA8B,IAAI,CAAA;AAChE,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,MAAM,IAAI,SAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,UAAA,GAAa,QAAA;AACnB,EAAA,IAAA,CACG,UAAA,CAAW,IAAA,KAAS,OAAA,IAAW,UAAA,CAAW,IAAA,KAAS,iBACpD,OAAO,UAAA,CAAW,SAAA,KAAc,QAAA,KAC/B,UAAA,CAAW,UAAA,KAAe,YAAY,UAAA,CAAW,UAAA,KAAe,QAAA,CAAA,KAChE,UAAA,CAAW,aAAA,KAAkB,UAAA,IAC5B,WAAW,aAAA,KAAkB,MAAA,IAC7B,UAAA,CAAW,aAAA,KAAkB,OAAA,CAAA,EAC/B;AACA,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,OAAO,8BAA8B,QAA0C,CAAA;AACjF;AAEO,SAAS,wBAAA,CAAyB,OAAA,GAAiC,EAAC,EAAa;AACtF,EAAA,MAAM,eAAA,GAAkB,mBAAA,CAAoB,OAAA,CAAQ,eAAe,CAAA;AACnE,EAAA,IAAI,CAAC,eAAA,EAAiB,OAAO,EAAC;AAE9B,EAAA,IAAI,WAAA,GAAc,EAAA;AAClB,EAAA,MAAM,aAAA,GAAgB,eAAA,CAAgB,MAAA,IAAU,OAAA,CAAQ,GAAA,KAAQ,IAAA;AAChE,EAAA,MAAM,kBAAA,uBAAyB,GAAA,EAA4C;AAE3E,EAAA,OAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,yBAAA;AAAA,MACN,OAAA,EAAS,KAAA;AAAA,MACT,eAAe,MAAA,EAAQ;AACrB,QAAA,WAAA,GAAcC,mBAAc,MAAA,CAAO,IAAI,CAAA,CAAE,OAAA,CAAQ,OAAO,EAAE,CAAA;AAAA,MAC5D,CAAA;AAAA,MACA,UAAA,GAAa;AACX,QAAA,kBAAA,CAAmB,KAAA,EAAM;AAAA,MAC3B,CAAA;AAAA,MACA,MAAM,SAAA,CAAU,IAAA,EAAM,EAAA,EAAI;AACxB,QAAA,MAAM,OAAA,GAAUA,mBAAc,EAAA,CAAG,KAAA,CAAM,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;AACjD,QAAA,IACE,CAAC,WAAA,CAAY,IAAA,CAAK,OAAO,KACzB,OAAA,CAAQ,QAAA,CAAS,gBAAgB,CAAA,IAChC,eAAe,CAAC,OAAA,CAAQ,UAAA,CAAW,CAAA,EAAG,WAAW,CAAA,CAAA,CAAG,CAAA;AAErD,UAAA,OAAO,IAAA;AAET,QAAA,MAAM,MAAA,GAAS,MAAM,kBAAA,CAAmB,IAAA,EAAM,SAAS,eAAe,CAAA;AACtE,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,IAAI,OAAO,QAAA,CAAS,MAAA,GAAS,KAAK,MAAA,CAAO,WAAA,CAAY,SAAS,CAAA,EAAG;AAC/D,YAAA,kBAAA,CAAmB,IAAI,OAAA,EAAS,EAAE,EAAA,EAAI,OAAA,EAAS,QAAQ,CAAA;AAAA,UACzD,CAAA,MAAO;AACL,YAAA,kBAAA,CAAmB,OAAO,OAAO,CAAA;AAAA,UACnC;AAAA,QACF;AACA,QAAA,KAAA,MAAW,UAAA,IAAc,OAAO,WAAA,EAAa;AAC3C,UAAA,MAAM,UAAU,CAAA,iBAAA,EAAoB,UAAA,CAAW,SAAS,CAAA,EAAA,EAAK,WAAW,MAAM,CAAA,cAAA,CAAA;AAC9E,UAAA,IAAI,eAAA,CAAgB,aAAA,KAAkB,OAAA,EAAS,IAAA,CAAK,MAAM,OAAO,CAAA;AACjE,UAAA,IAAI,gBAAgB,aAAA,KAAkB,MAAA,IAAU,WAAW,QAAA,EAAU,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA,QACxF;AACA,QAAA,IAAI,MAAA,CAAO,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AACzC,QAAA,OAAO,EAAE,IAAA,EAAM,MAAA,CAAO,IAAA,EAAM,GAAA,EAAK,OAAO,GAAA,EAAW;AAAA,MACrD,CAAA;AAAA,MACA,MAAM,SAAS,KAAA,EAAO;AACpB,QAAA,IAAI,KAAA,IAAS,CAAC,aAAA,IAAiB,CAAC,WAAA,EAAa;AAC7C,QAAA,MAAM,wBAAA;AAAA,UACJ,WAAA;AAAA,UACA,eAAA,CAAgB,UAAA;AAAA,UAChB,mBAAmB,MAAA;AAAO,SAC5B;AAAA,MACF;AAAA;AACF,GACF;AACF","file":"vite.cjs","sourcesContent":["import { transformAsync, traverse, types as t, type NodePath, type PluginObj } from \"@babel/core\";\nimport type { NormalizedReactCompilerOptions } from \"./index\";\n\nexport interface CompilerDiagnostic {\n component: string;\n reason: string;\n selected: boolean;\n}\n\nexport interface CompileReactModuleResult {\n code: string;\n map: unknown;\n compiled: readonly string[];\n diagnostics: readonly CompilerDiagnostic[];\n optimizations: {\n keyedArrayAppendHints: number;\n keyedArrayFilterHints: number;\n keyedArrayPrependHints: number;\n keyedArrayPositionHints: number;\n keyedArrayReorderHints: number;\n keyedArraySortHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayRollingWindowHints: number;\n keyedArraySliceHints: number;\n keyedCollectionUpdateHints: number;\n keyedIdentityTargets: number;\n keyedMapLookupTargets: number;\n keyedMembershipTargets: number;\n keyedMapUpdateHints: number;\n };\n}\n\ninterface StateBinding {\n valueName: string;\n setterName: string;\n index: number;\n initialValue?: t.Expression;\n}\n\ninterface HandlerBinding {\n name: string;\n value: t.ArrowFunctionExpression | t.FunctionExpression;\n}\n\ninterface LocalBinding {\n kind: \"derived\" | \"handler\";\n name: string;\n value: t.Expression;\n}\n\ninterface PropsPlan {\n definitionParameter: t.Identifier;\n wrapperProps?: t.Expression;\n destructuredNames: ReadonlySet<string>;\n}\n\ninterface PropBinding {\n localName: string;\n valueName: string;\n index: number;\n}\n\ninterface PendingDomBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n tracking?: \"dynamic\";\n path: number[];\n target?: number;\n dependencies: number[];\n name?: string;\n value: t.Expression;\n}\n\ninterface PendingConditionalBlockBinding {\n kind: \"block\";\n id: number;\n parent?: number;\n dependencies: number[];\n}\n\ntype PendingBinding = PendingDomBinding | PendingConditionalBlockBinding;\n\ninterface ConditionalBlockPlan {\n kind: \"conditional\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.Expression;\n}\n\ninterface KeyedListPlan {\n kind: \"keyed-list\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.Expression;\n syntax: \"map\" | \"list\";\n}\n\ninterface PendingKeyedRowBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n path: number[];\n name?: string;\n dependencies?: number[];\n identityTarget?: {\n dependency: number;\n value: t.Expression;\n };\n membershipTarget?: {\n dependency: number;\n value: t.Expression;\n };\n mapLookupTarget?: {\n dependency: number;\n value: t.Expression;\n };\n value: t.Expression;\n}\n\ninterface PendingStaticRangeBinding extends PendingKeyedRowBinding {\n /** Static segment before range N, or the trailing segment at ranges.length. */\n segment: number;\n /** Direct host sibling inside the static segment. */\n sibling: number;\n}\n\ninterface PendingKeyedRowEvent {\n id: number;\n path: number[];\n name: string;\n value: t.ArrowFunctionExpression | t.FunctionExpression;\n}\n\ninterface PendingKeyedRowConditional {\n id: number;\n path: number[];\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n truthyBindings: PendingKeyedRowBinding[];\n falsyBindings: PendingKeyedRowBinding[];\n}\n\ninterface HostConditionalPlan {\n kind: \"host-conditional\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n truthyBindings: PendingKeyedRowBinding[];\n falsyBindings: PendingKeyedRowBinding[];\n descriptorBlocks?: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n nestedPlans?: HostDescriptorBlockPlan[];\n}\n\ninterface ConditionalRangePlan {\n before: number;\n source: t.Expression;\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n truthyBindings: PendingKeyedRowBinding[];\n falsyBindings: PendingKeyedRowBinding[];\n}\n\ninterface ConditionalRangesPlan {\n kind: \"conditional-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: ConditionalRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n descriptorBlocks?: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n}\n\ninterface KeyedRowsPlan {\n kind: \"keyed-rows\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n collection: t.Expression;\n collectionDependency?: number;\n structureDependencies: number[];\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n row: t.JSXElement;\n bindings: PendingKeyedRowBinding[];\n events: PendingKeyedRowEvent[];\n conditionals: PendingKeyedRowConditional[];\n descriptorBlocks?: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n syntax: \"map\" | \"list\";\n}\n\nconst DELEGATABLE_KEYED_ROW_EVENTS = new Set([\n \"onBeforeInput\",\n \"onBlur\",\n \"onChange\",\n \"onClick\",\n \"onCompositionEnd\",\n \"onCompositionStart\",\n \"onCompositionUpdate\",\n \"onContextMenu\",\n \"onCopy\",\n \"onCut\",\n \"onDoubleClick\",\n \"onDrag\",\n \"onDragEnd\",\n \"onDragEnter\",\n \"onDragExit\",\n \"onDragLeave\",\n \"onDragOver\",\n \"onDragStart\",\n \"onDrop\",\n \"onFocus\",\n \"onInput\",\n \"onKeyDown\",\n \"onKeyPress\",\n \"onKeyUp\",\n \"onMouseDown\",\n \"onMouseMove\",\n \"onMouseOut\",\n \"onMouseOver\",\n \"onMouseUp\",\n \"onPaste\",\n \"onPointerCancel\",\n \"onPointerDown\",\n \"onPointerMove\",\n \"onPointerOut\",\n \"onPointerOver\",\n \"onPointerUp\",\n \"onReset\",\n \"onSubmit\",\n \"onTouchCancel\",\n \"onTouchEnd\",\n \"onTouchMove\",\n \"onTouchStart\",\n \"onWheel\",\n]);\n\nfunction canDelegateKeyedRowEvents(\n plan: Pick<KeyedRowsPlan, \"events\" | \"conditionals\" | \"source\">,\n): boolean {\n if (plan.events.length === 0 || plan.conditionals.length > 0) return false;\n if (\n plan.source.openingElement.attributes.some(\n (attribute) =>\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n /^on[A-Z]/.test(attribute.name.name),\n )\n ) {\n return false;\n }\n return plan.events.every((event) =>\n DELEGATABLE_KEYED_ROW_EVENTS.has(event.name.replace(/Capture$/, \"\")),\n );\n}\n\ninterface KeyedRangePlan {\n before: number;\n source: t.Expression | t.JSXElement;\n collection: t.Expression;\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n row: t.JSXElement;\n bindings: PendingKeyedRowBinding[];\n syntax: \"map\" | \"list\";\n}\n\ninterface KeyedRangesPlan {\n kind: \"keyed-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: KeyedRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n}\n\ntype MixedRangePlan =\n | ({ rangeKind: \"conditional\" } & ConditionalRangePlan)\n | ({ rangeKind: \"keyed\" } & KeyedRangePlan);\n\ninterface MixedRangesPlan {\n kind: \"mixed-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: MixedRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n}\n\ninterface NestedHostConditionalRangesPlan {\n kind: \"nested-host-conditional-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: ConditionalRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n}\n\ninterface NestedHostKeyedRangesPlan {\n kind: \"nested-host-keyed-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: KeyedRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n}\n\ninterface NestedHostMixedRangesPlan {\n kind: \"nested-host-mixed-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: MixedRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n}\n\ntype HostDescriptorBlockPlan =\n | NestedHostConditionalRangesPlan\n | NestedHostKeyedRangesPlan\n | NestedHostMixedRangesPlan;\n\ninterface ComponentIslandPlan {\n kind: \"component\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n}\n\ntype ComposableBlockPlan =\n | ConditionalBlockPlan\n | HostConditionalPlan\n | ConditionalRangesPlan\n | KeyedListPlan\n | KeyedRowsPlan\n | KeyedRangesPlan\n | MixedRangesPlan\n | NestedHostConditionalRangesPlan\n | NestedHostKeyedRangesPlan\n | NestedHostMixedRangesPlan\n | ComponentIslandPlan;\n\ntype CompilerRuntimeFeatureName =\n | \"conditional\"\n | \"host-conditional\"\n | \"conditional-ranges\"\n | \"keyed-list\"\n | \"keyed-rows\"\n | \"keyed-rows-hinted\"\n | \"keyed-rows-position-hinted\"\n | \"keyed-rows-batch-position-hinted\"\n | \"keyed-rows-window-position-hinted\"\n | \"keyed-rows-reorder-hinted\"\n | \"keyed-rows-map-reorder-hinted\"\n | \"keyed-rows-all-hinted\"\n | \"keyed-rows-mapped-rolling-window-hinted\"\n | \"keyed-rows-every-hinted\"\n | \"keyed-rows-batch-every-hinted\"\n | \"keyed-rows-window-every-hinted\"\n | \"keyed-rows-filter-hinted\"\n | \"keyed-rows-structural-append-hinted\"\n | \"keyed-rows-structural-append-map-hinted\"\n | \"keyed-rows-structural-prepend-hinted\"\n | \"keyed-rows-structural-prepend-map-hinted\"\n | \"keyed-rows-prepend-hinted\"\n | \"keyed-rows-filter-prepend-hinted\"\n | \"keyed-rows-conditional\"\n | \"keyed-rows-conditional-hinted\"\n | \"keyed-rows-conditional-position-hinted\"\n | \"keyed-rows-conditional-batch-position-hinted\"\n | \"keyed-rows-conditional-window-position-hinted\"\n | \"keyed-rows-conditional-reorder-hinted\"\n | \"keyed-rows-conditional-all-hinted\"\n | \"keyed-rows-conditional-mapped-rolling-window-hinted\"\n | \"keyed-rows-conditional-every-hinted\"\n | \"keyed-rows-conditional-batch-every-hinted\"\n | \"keyed-rows-conditional-window-every-hinted\"\n | \"keyed-rows-conditional-filter-hinted\"\n | \"keyed-rows-conditional-structural-append-hinted\"\n | \"keyed-rows-conditional-structural-append-map-hinted\"\n | \"keyed-rows-conditional-structural-prepend-hinted\"\n | \"keyed-rows-conditional-structural-prepend-map-hinted\"\n | \"keyed-rows-conditional-prepend-hinted\"\n | \"keyed-rows-conditional-filter-prepend-hinted\"\n | \"keyed-rows-host\"\n | \"keyed-rows-host-hinted\"\n | \"keyed-rows-host-position-hinted\"\n | \"keyed-rows-host-batch-position-hinted\"\n | \"keyed-rows-host-window-position-hinted\"\n | \"keyed-rows-host-reorder-hinted\"\n | \"keyed-rows-host-all-hinted\"\n | \"keyed-rows-host-mapped-rolling-window-hinted\"\n | \"keyed-rows-host-every-hinted\"\n | \"keyed-rows-host-batch-every-hinted\"\n | \"keyed-rows-host-window-every-hinted\"\n | \"keyed-rows-host-filter-hinted\"\n | \"keyed-rows-host-structural-append-hinted\"\n | \"keyed-rows-host-structural-append-map-hinted\"\n | \"keyed-rows-host-structural-prepend-hinted\"\n | \"keyed-rows-host-structural-prepend-map-hinted\"\n | \"keyed-rows-host-prepend-hinted\"\n | \"keyed-rows-host-filter-prepend-hinted\"\n | \"keyed-rows-complete\"\n | \"keyed-rows-complete-hinted\"\n | \"keyed-rows-complete-position-hinted\"\n | \"keyed-rows-complete-batch-position-hinted\"\n | \"keyed-rows-complete-window-position-hinted\"\n | \"keyed-rows-complete-reorder-hinted\"\n | \"keyed-rows-complete-all-hinted\"\n | \"keyed-rows-complete-mapped-rolling-window-hinted\"\n | \"keyed-rows-complete-every-hinted\"\n | \"keyed-rows-complete-batch-every-hinted\"\n | \"keyed-rows-complete-window-every-hinted\"\n | \"keyed-rows-complete-filter-hinted\"\n | \"keyed-rows-complete-structural-append-hinted\"\n | \"keyed-rows-complete-structural-append-map-hinted\"\n | \"keyed-rows-complete-structural-prepend-hinted\"\n | \"keyed-rows-complete-structural-prepend-map-hinted\"\n | \"keyed-rows-complete-prepend-hinted\"\n | \"keyed-rows-complete-filter-prepend-hinted\"\n | \"keyed-ranges\"\n | \"mixed-ranges\"\n | \"component\";\n\nconst COMPILER_RUNTIME_FEATURE_EXPORTS: Record<CompilerRuntimeFeatureName, string> = {\n conditional: \"conditionalRuntimeFeature\",\n \"host-conditional\": \"hostConditionalRuntimeFeature\",\n \"conditional-ranges\": \"conditionalRangesRuntimeFeature\",\n \"keyed-list\": \"keyedListRuntimeFeature\",\n \"keyed-rows\": \"keyedRowsRuntimeFeature\",\n \"keyed-rows-hinted\": \"keyedRowsHintedRuntimeFeature\",\n \"keyed-rows-position-hinted\": \"keyedRowsPositionHintedRuntimeFeature\",\n \"keyed-rows-batch-position-hinted\": \"keyedRowsBatchPositionHintedRuntimeFeature\",\n \"keyed-rows-window-position-hinted\": \"keyedRowsWindowPositionHintedRuntimeFeature\",\n \"keyed-rows-reorder-hinted\": \"keyedRowsReorderHintedRuntimeFeature\",\n \"keyed-rows-map-reorder-hinted\": \"keyedRowsMapReorderHintedRuntimeFeature\",\n \"keyed-rows-all-hinted\": \"keyedRowsAllHintedRuntimeFeature\",\n \"keyed-rows-mapped-rolling-window-hinted\": \"keyedRowsMappedRollingWindowHintedRuntimeFeature\",\n \"keyed-rows-every-hinted\": \"keyedRowsEveryHintedRuntimeFeature\",\n \"keyed-rows-batch-every-hinted\": \"keyedRowsBatchEveryHintedRuntimeFeature\",\n \"keyed-rows-window-every-hinted\": \"keyedRowsWindowEveryHintedRuntimeFeature\",\n \"keyed-rows-filter-hinted\": \"keyedRowsFilterHintedRuntimeFeature\",\n \"keyed-rows-structural-append-hinted\": \"keyedRowsStructuralAppendHintedRuntimeFeature\",\n \"keyed-rows-structural-append-map-hinted\": \"keyedRowsStructuralAppendMapHintedRuntimeFeature\",\n \"keyed-rows-structural-prepend-hinted\": \"keyedRowsStructuralPrependHintedRuntimeFeature\",\n \"keyed-rows-structural-prepend-map-hinted\": \"keyedRowsStructuralPrependMapHintedRuntimeFeature\",\n \"keyed-rows-prepend-hinted\": \"keyedRowsPrependHintedRuntimeFeature\",\n \"keyed-rows-filter-prepend-hinted\": \"keyedRowsFilterPrependHintedRuntimeFeature\",\n \"keyed-rows-conditional\": \"keyedRowsConditionalRuntimeFeature\",\n \"keyed-rows-conditional-hinted\": \"keyedRowsConditionalHintedRuntimeFeature\",\n \"keyed-rows-conditional-position-hinted\": \"keyedRowsConditionalPositionHintedRuntimeFeature\",\n \"keyed-rows-conditional-batch-position-hinted\":\n \"keyedRowsConditionalBatchPositionHintedRuntimeFeature\",\n \"keyed-rows-conditional-window-position-hinted\":\n \"keyedRowsConditionalWindowPositionHintedRuntimeFeature\",\n \"keyed-rows-conditional-reorder-hinted\": \"keyedRowsConditionalReorderHintedRuntimeFeature\",\n \"keyed-rows-conditional-all-hinted\": \"keyedRowsConditionalAllHintedRuntimeFeature\",\n \"keyed-rows-conditional-mapped-rolling-window-hinted\":\n \"keyedRowsConditionalMappedRollingWindowHintedRuntimeFeature\",\n \"keyed-rows-conditional-every-hinted\": \"keyedRowsConditionalEveryHintedRuntimeFeature\",\n \"keyed-rows-conditional-batch-every-hinted\": \"keyedRowsConditionalBatchEveryHintedRuntimeFeature\",\n \"keyed-rows-conditional-window-every-hinted\":\n \"keyedRowsConditionalWindowEveryHintedRuntimeFeature\",\n \"keyed-rows-conditional-filter-hinted\": \"keyedRowsConditionalFilterHintedRuntimeFeature\",\n \"keyed-rows-conditional-structural-append-hinted\":\n \"keyedRowsConditionalStructuralAppendHintedRuntimeFeature\",\n \"keyed-rows-conditional-structural-append-map-hinted\":\n \"keyedRowsConditionalStructuralAppendMapHintedRuntimeFeature\",\n \"keyed-rows-conditional-structural-prepend-hinted\":\n \"keyedRowsConditionalStructuralPrependHintedRuntimeFeature\",\n \"keyed-rows-conditional-structural-prepend-map-hinted\":\n \"keyedRowsConditionalStructuralPrependMapHintedRuntimeFeature\",\n \"keyed-rows-conditional-prepend-hinted\": \"keyedRowsConditionalPrependHintedRuntimeFeature\",\n \"keyed-rows-conditional-filter-prepend-hinted\":\n \"keyedRowsConditionalFilterPrependHintedRuntimeFeature\",\n \"keyed-rows-host\": \"keyedRowsHostRuntimeFeature\",\n \"keyed-rows-host-hinted\": \"keyedRowsHostHintedRuntimeFeature\",\n \"keyed-rows-host-position-hinted\": \"keyedRowsHostPositionHintedRuntimeFeature\",\n \"keyed-rows-host-batch-position-hinted\": \"keyedRowsHostBatchPositionHintedRuntimeFeature\",\n \"keyed-rows-host-window-position-hinted\": \"keyedRowsHostWindowPositionHintedRuntimeFeature\",\n \"keyed-rows-host-reorder-hinted\": \"keyedRowsHostReorderHintedRuntimeFeature\",\n \"keyed-rows-host-all-hinted\": \"keyedRowsHostAllHintedRuntimeFeature\",\n \"keyed-rows-host-mapped-rolling-window-hinted\":\n \"keyedRowsHostMappedRollingWindowHintedRuntimeFeature\",\n \"keyed-rows-host-every-hinted\": \"keyedRowsHostEveryHintedRuntimeFeature\",\n \"keyed-rows-host-batch-every-hinted\": \"keyedRowsHostBatchEveryHintedRuntimeFeature\",\n \"keyed-rows-host-window-every-hinted\": \"keyedRowsHostWindowEveryHintedRuntimeFeature\",\n \"keyed-rows-host-filter-hinted\": \"keyedRowsHostFilterHintedRuntimeFeature\",\n \"keyed-rows-host-structural-append-hinted\": \"keyedRowsHostStructuralAppendHintedRuntimeFeature\",\n \"keyed-rows-host-structural-append-map-hinted\":\n \"keyedRowsHostStructuralAppendMapHintedRuntimeFeature\",\n \"keyed-rows-host-structural-prepend-hinted\": \"keyedRowsHostStructuralPrependHintedRuntimeFeature\",\n \"keyed-rows-host-structural-prepend-map-hinted\":\n \"keyedRowsHostStructuralPrependMapHintedRuntimeFeature\",\n \"keyed-rows-host-prepend-hinted\": \"keyedRowsHostPrependHintedRuntimeFeature\",\n \"keyed-rows-host-filter-prepend-hinted\": \"keyedRowsHostFilterPrependHintedRuntimeFeature\",\n \"keyed-rows-complete\": \"keyedRowsCompleteRuntimeFeature\",\n \"keyed-rows-complete-hinted\": \"keyedRowsCompleteHintedRuntimeFeature\",\n \"keyed-rows-complete-position-hinted\": \"keyedRowsCompletePositionHintedRuntimeFeature\",\n \"keyed-rows-complete-batch-position-hinted\": \"keyedRowsCompleteBatchPositionHintedRuntimeFeature\",\n \"keyed-rows-complete-window-position-hinted\":\n \"keyedRowsCompleteWindowPositionHintedRuntimeFeature\",\n \"keyed-rows-complete-reorder-hinted\": \"keyedRowsCompleteReorderHintedRuntimeFeature\",\n \"keyed-rows-complete-all-hinted\": \"keyedRowsCompleteAllHintedRuntimeFeature\",\n \"keyed-rows-complete-mapped-rolling-window-hinted\":\n \"keyedRowsCompleteMappedRollingWindowHintedRuntimeFeature\",\n \"keyed-rows-complete-every-hinted\": \"keyedRowsCompleteEveryHintedRuntimeFeature\",\n \"keyed-rows-complete-batch-every-hinted\": \"keyedRowsCompleteBatchEveryHintedRuntimeFeature\",\n \"keyed-rows-complete-window-every-hinted\": \"keyedRowsCompleteWindowEveryHintedRuntimeFeature\",\n \"keyed-rows-complete-filter-hinted\": \"keyedRowsCompleteFilterHintedRuntimeFeature\",\n \"keyed-rows-complete-structural-append-hinted\":\n \"keyedRowsCompleteStructuralAppendHintedRuntimeFeature\",\n \"keyed-rows-complete-structural-append-map-hinted\":\n \"keyedRowsCompleteStructuralAppendMapHintedRuntimeFeature\",\n \"keyed-rows-complete-structural-prepend-hinted\":\n \"keyedRowsCompleteStructuralPrependHintedRuntimeFeature\",\n \"keyed-rows-complete-structural-prepend-map-hinted\":\n \"keyedRowsCompleteStructuralPrependMapHintedRuntimeFeature\",\n \"keyed-rows-complete-prepend-hinted\": \"keyedRowsCompletePrependHintedRuntimeFeature\",\n \"keyed-rows-complete-filter-prepend-hinted\": \"keyedRowsCompleteFilterPrependHintedRuntimeFeature\",\n \"keyed-ranges\": \"keyedRangesRuntimeFeature\",\n \"mixed-ranges\": \"mixedRangesRuntimeFeature\",\n component: \"componentRuntimeFeature\",\n};\n\nfunction runtimeFeaturesForPlans(\n plans: readonly ComposableBlockPlan[],\n keyedMapUpdateHints: boolean,\n keyedArrayFilterHints: boolean,\n keyedArrayStructuralAppendHints: boolean,\n keyedArrayStructuralAppendMapHints: boolean,\n keyedArrayPrependHints: boolean,\n keyedArrayStructuralPrependHints: boolean,\n keyedArrayStructuralPrependMapHints: boolean,\n keyedArrayPositionHints: boolean,\n keyedArrayBatchInsertHints: boolean,\n keyedArrayWindowReplaceHints: boolean,\n keyedArrayReorderHints: boolean,\n keyedArrayMapReorderHints: boolean,\n keyedArrayMappedRollingWindowChainHints: boolean,\n keyedArrayRollingWindowHints: boolean,\n): CompilerRuntimeFeatureName[] {\n const features = new Set<CompilerRuntimeFeatureName>();\n let keyedRowsHaveConditionals = false;\n let keyedRowsHaveHostBlocks = false;\n for (const plan of plans) {\n if (plan.kind === \"keyed-rows\") {\n keyedRowsHaveConditionals ||= plan.conditionals.length > 0;\n keyedRowsHaveHostBlocks ||= Boolean(plan.descriptorBlocks?.size);\n continue;\n }\n if (plan.kind in COMPILER_RUNTIME_FEATURE_EXPORTS) {\n features.add(plan.kind as CompilerRuntimeFeatureName);\n }\n }\n if (plans.some((plan) => plan.kind === \"keyed-rows\")) {\n const keyedRowsFeature =\n keyedRowsHaveConditionals && keyedRowsHaveHostBlocks\n ? \"keyed-rows-complete\"\n : keyedRowsHaveConditionals\n ? \"keyed-rows-conditional\"\n : keyedRowsHaveHostBlocks\n ? \"keyed-rows-host\"\n : \"keyed-rows\";\n const arrayRangeHints =\n keyedArrayRollingWindowHints || keyedArrayFilterHints || keyedArrayPrependHints;\n const needsCombinedStructuralPrependRuntime =\n keyedArrayStructuralPrependHints &&\n (keyedArrayStructuralAppendMapHints ||\n keyedArrayStructuralAppendHints ||\n keyedArrayWindowReplaceHints ||\n keyedArrayBatchInsertHints ||\n keyedArrayPositionHints ||\n keyedArrayReorderHints ||\n keyedArrayRollingWindowHints);\n const hintSuffix = keyedArrayMappedRollingWindowChainHints\n ? \"-mapped-rolling-window-hinted\"\n : keyedArrayStructuralPrependMapHints\n ? \"-structural-prepend-map-hinted\"\n : needsCombinedStructuralPrependRuntime\n ? \"-structural-prepend-hinted\"\n : keyedArrayStructuralAppendMapHints\n ? \"-structural-append-map-hinted\"\n : keyedArrayStructuralAppendHints\n ? \"-structural-append-hinted\"\n : keyedArrayWindowReplaceHints\n ? arrayRangeHints || keyedArrayReorderHints\n ? \"-window-every-hinted\"\n : \"-window-position-hinted\"\n : keyedArrayBatchInsertHints\n ? arrayRangeHints || keyedArrayReorderHints\n ? \"-batch-every-hinted\"\n : \"-batch-position-hinted\"\n : (keyedArrayPositionHints && (arrayRangeHints || keyedArrayReorderHints)) ||\n (keyedArrayReorderHints && arrayRangeHints)\n ? \"-every-hinted\"\n : keyedArrayRollingWindowHints\n ? \"-all-hinted\"\n : keyedArrayPositionHints\n ? \"-position-hinted\"\n : keyedArrayMapReorderHints && keyedRowsFeature === \"keyed-rows\"\n ? \"-map-reorder-hinted\"\n : keyedArrayReorderHints\n ? \"-reorder-hinted\"\n : keyedArrayFilterHints && keyedArrayPrependHints\n ? \"-filter-prepend-hinted\"\n : keyedArrayFilterHints\n ? \"-filter-hinted\"\n : keyedArrayPrependHints\n ? \"-prepend-hinted\"\n : keyedMapUpdateHints\n ? \"-hinted\"\n : \"\";\n features.add(`${keyedRowsFeature}${hintSuffix}` as CompilerRuntimeFeatureName);\n }\n return [...features].sort();\n}\n\ninterface Candidate {\n name: string;\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>;\n statementPath: NodePath;\n}\n\nconst SAFE_GLOBAL_CALLS = new Set([\"Boolean\", \"Number\", \"String\"]);\nconst SAFE_MATH_CALLS = new Set([\"abs\", \"ceil\", \"floor\", \"max\", \"min\", \"round\", \"sign\", \"trunc\"]);\n\nfunction isComponentName(name: string): boolean {\n return /^[A-Z]/.test(name);\n}\n\nfunction isHostElement(element: t.JSXElement): boolean {\n const name = element.openingElement.name;\n return t.isJSXIdentifier(name) && /^[a-z]/.test(name.name);\n}\n\nfunction directiveValues(node: { directives?: readonly t.Directive[] | null }): string[] {\n return (node.directives || []).map((directive) => directive.value.value);\n}\n\nfunction isUseStateCall(\n expression: t.Node | null | undefined,\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n): expression is t.CallExpression {\n if (!t.isCallExpression(expression)) return false;\n if (t.isIdentifier(expression.callee)) return useStateNames.has(expression.callee.name);\n return (\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isIdentifier(expression.callee.object) &&\n reactNames.has(expression.callee.object.name) &&\n t.isIdentifier(expression.callee.property, { name: \"useState\" })\n );\n}\n\nfunction cloneExpression<T extends t.Expression>(expression: T): T {\n return t.cloneNode(expression, true) as T;\n}\n\nfunction expressionFile(expression: t.Expression): t.File {\n return t.file(t.program([t.expressionStatement(expression)]));\n}\n\nfunction collectStateDependencies(\n expression: t.Expression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n): number[] {\n const dependencies = new Set<number>();\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (state && !path.scope.hasBinding(path.node.name)) dependencies.add(state.index);\n },\n });\n return [...dependencies].sort((left, right) => left - right);\n}\n\nfunction referencesIdentifier(expression: t.Expression, name: string): boolean {\n let referenced = false;\n traverse(expressionFile(cloneExpression(expression)), {\n ReferencedIdentifier(path) {\n if (path.node.name === name && !path.scope.hasBinding(name)) {\n referenced = true;\n }\n },\n });\n return referenced;\n}\n\nfunction rewriteFreeIdentifierNames<T extends t.Expression>(\n expression: T,\n replacements: ReadonlyMap<string, t.Identifier>,\n): T {\n if (replacements.size === 0) return cloneExpression(expression);\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n if (path.scope.hasBinding(path.node.name)) return;\n const replacement = replacements.get(path.node.name);\n if (!replacement) return;\n path.replaceWith(t.cloneNode(replacement));\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction keyedIdentityTarget(\n binding: PendingKeyedRowBinding,\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n structureDependencies: ReadonlySet<number>,\n): PendingKeyedRowBinding[\"identityTarget\"] {\n const dependencies = binding.dependencies || [];\n if (dependencies.length !== 1 || structureDependencies.has(dependencies[0])) return undefined;\n const keyExpression = returnedExpression(keyCallback);\n const keyItem = keyCallback.params[0];\n const rowItem = renderCallback.params[0];\n if (!keyExpression || !t.isIdentifier(keyItem) || !t.isIdentifier(rowItem)) return undefined;\n\n const replacements = new Map<string, t.Identifier>([[keyItem.name, rowItem]]);\n const keyIndex = keyCallback.params[1];\n const rowIndex = renderCallback.params[1];\n if (t.isIdentifier(keyIndex) && t.isIdentifier(rowIndex)) {\n replacements.set(keyIndex.name, rowIndex);\n }\n const rowKeyExpression = rewriteFreeIdentifierNames(keyExpression, replacements);\n const file = expressionFile(cloneExpression(binding.value));\n let target: StateBinding | undefined;\n let valid = true;\n let comparisons = 0;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!valid || path.scope.hasBinding(path.node.name)) return;\n const reactive = reactiveByValue.get(path.node.name);\n if (!reactive) return;\n if (reactive.index !== dependencies[0] || (target && target !== reactive)) {\n valid = false;\n path.stop();\n return;\n }\n const parent = path.parentPath;\n if (\n !parent.isBinaryExpression() ||\n (parent.node.operator !== \"===\" && parent.node.operator !== \"!==\")\n ) {\n valid = false;\n path.stop();\n return;\n }\n const other = parent.node.left === path.node ? parent.node.right : parent.node.left;\n if (!t.isExpression(other) || !t.isNodesEquivalent(other, rowKeyExpression)) {\n valid = false;\n path.stop();\n return;\n }\n target = reactive;\n comparisons += 1;\n },\n });\n return valid && target && comparisons > 0\n ? { dependency: target.index, value: t.identifier(target.valueName) }\n : undefined;\n}\n\nfunction isPotentialKeyedMembershipCall(\n expression: t.CallExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n): boolean {\n if (\n expression.arguments.length !== 1 ||\n !t.isExpression(expression.arguments[0]) ||\n !t.isMemberExpression(expression.callee) ||\n expression.callee.computed ||\n !t.isIdentifier(expression.callee.object) ||\n !t.isIdentifier(expression.callee.property, { name: \"has\" })\n ) {\n return false;\n }\n const reactive = reactiveByValue.get(expression.callee.object.name);\n return Boolean(reactive?.setterName);\n}\n\nfunction containsPotentialKeyedMembershipCall(\n expression: t.Expression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n): boolean {\n let found = false;\n traverse(expressionFile(cloneExpression(expression)), {\n CallExpression(path) {\n if (!isPotentialKeyedMembershipCall(path.node, reactiveByValue)) return;\n found = true;\n path.stop();\n },\n });\n return found;\n}\n\nfunction isPotentialKeyedMapLookupCall(\n expression: t.CallExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n): boolean {\n if (\n expression.arguments.length !== 1 ||\n !t.isExpression(expression.arguments[0]) ||\n !t.isMemberExpression(expression.callee) ||\n expression.callee.computed ||\n !t.isIdentifier(expression.callee.object) ||\n !t.isIdentifier(expression.callee.property, { name: \"get\" })\n ) {\n return false;\n }\n const reactive = reactiveByValue.get(expression.callee.object.name);\n return Boolean(reactive?.setterName);\n}\n\nfunction containsPotentialKeyedMapLookupCall(\n expression: t.Expression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n): boolean {\n let found = false;\n traverse(expressionFile(cloneExpression(expression)), {\n CallExpression(path) {\n if (!isPotentialKeyedMapLookupCall(path.node, reactiveByValue)) return;\n found = true;\n path.stop();\n },\n });\n return found;\n}\n\nfunction keyedMembershipTarget(\n binding: PendingKeyedRowBinding,\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n structureDependencies: ReadonlySet<number>,\n): PendingKeyedRowBinding[\"membershipTarget\"] {\n const dependencies = binding.dependencies || [];\n if (dependencies.length !== 1 || structureDependencies.has(dependencies[0])) return undefined;\n const keyExpression = returnedExpression(keyCallback);\n const keyItem = keyCallback.params[0];\n const rowItem = renderCallback.params[0];\n if (!keyExpression || !t.isIdentifier(keyItem) || !t.isIdentifier(rowItem)) return undefined;\n\n const replacements = new Map<string, t.Identifier>([[keyItem.name, rowItem]]);\n const keyIndex = keyCallback.params[1];\n const rowIndex = renderCallback.params[1];\n if (t.isIdentifier(keyIndex) && t.isIdentifier(rowIndex)) {\n replacements.set(keyIndex.name, rowIndex);\n }\n const rowKeyExpression = rewriteFreeIdentifierNames(keyExpression, replacements);\n const file = expressionFile(cloneExpression(binding.value));\n let target: StateBinding | undefined;\n let valid = true;\n let calls = 0;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!valid || path.scope.hasBinding(path.node.name)) return;\n const reactive = reactiveByValue.get(path.node.name);\n if (!reactive) return;\n const member = path.parentPath;\n const call = member.parentPath;\n if (\n !reactive.setterName ||\n reactive.index !== dependencies[0] ||\n (target && target !== reactive) ||\n !member.isMemberExpression() ||\n member.node.object !== path.node ||\n member.node.computed ||\n !t.isIdentifier(member.node.property, { name: \"has\" }) ||\n !call ||\n !call.isCallExpression() ||\n call.node.callee !== member.node ||\n call.node.arguments.length !== 1 ||\n !t.isExpression(call.node.arguments[0]) ||\n !t.isNodesEquivalent(call.node.arguments[0], rowKeyExpression)\n ) {\n valid = false;\n path.stop();\n return;\n }\n target = reactive;\n calls += 1;\n },\n });\n return valid && target && calls > 0\n ? { dependency: target.index, value: t.identifier(target.valueName) }\n : undefined;\n}\n\nfunction keyedMapLookupTarget(\n binding: PendingKeyedRowBinding,\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n structureDependencies: ReadonlySet<number>,\n): PendingKeyedRowBinding[\"mapLookupTarget\"] {\n const dependencies = binding.dependencies || [];\n if (dependencies.length !== 1 || structureDependencies.has(dependencies[0])) return undefined;\n const keyExpression = returnedExpression(keyCallback);\n const keyItem = keyCallback.params[0];\n const rowItem = renderCallback.params[0];\n if (!keyExpression || !t.isIdentifier(keyItem) || !t.isIdentifier(rowItem)) return undefined;\n\n const replacements = new Map<string, t.Identifier>([[keyItem.name, rowItem]]);\n const keyIndex = keyCallback.params[1];\n const rowIndex = renderCallback.params[1];\n if (t.isIdentifier(keyIndex) && t.isIdentifier(rowIndex)) {\n replacements.set(keyIndex.name, rowIndex);\n }\n const rowKeyExpression = rewriteFreeIdentifierNames(keyExpression, replacements);\n const file = expressionFile(cloneExpression(binding.value));\n let target: StateBinding | undefined;\n let valid = true;\n let calls = 0;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!valid || path.scope.hasBinding(path.node.name)) return;\n const reactive = reactiveByValue.get(path.node.name);\n if (!reactive) return;\n const member = path.parentPath;\n const call = member.parentPath;\n if (\n !reactive.setterName ||\n reactive.index !== dependencies[0] ||\n (target && target !== reactive) ||\n !member.isMemberExpression() ||\n member.node.object !== path.node ||\n member.node.computed ||\n !t.isIdentifier(member.node.property, { name: \"get\" }) ||\n !call ||\n !call.isCallExpression() ||\n call.node.callee !== member.node ||\n call.node.arguments.length !== 1 ||\n !t.isExpression(call.node.arguments[0]) ||\n !t.isNodesEquivalent(call.node.arguments[0], rowKeyExpression)\n ) {\n valid = false;\n path.stop();\n return;\n }\n target = reactive;\n calls += 1;\n },\n });\n return valid && target && calls > 0\n ? { dependency: target.index, value: t.identifier(target.valueName) }\n : undefined;\n}\n\nfunction collectReferencedLocals(expression: t.Expression, names: ReadonlySet<string>): string[] {\n const references = new Set<string>();\n traverse(expressionFile(cloneExpression(expression)), {\n ReferencedIdentifier(path) {\n if (names.has(path.node.name) && !path.scope.hasBinding(path.node.name)) {\n references.add(path.node.name);\n }\n },\n });\n return [...references];\n}\n\nfunction rewriteDerivedAccess<T extends t.Expression>(\n expression: T,\n derivedByName: ReadonlyMap<string, t.Expression>,\n): T {\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n if (path.scope.hasBinding(path.node.name)) return;\n const derived = derivedByName.get(path.node.name);\n if (!derived) return;\n path.replaceWith(cloneExpression(derived));\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction rewriteDestructuredPropAccess<T extends t.Expression>(\n expression: T,\n names: ReadonlySet<string>,\n propsParameter: t.Identifier,\n): T {\n if (names.size === 0) return cloneExpression(expression);\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!names.has(path.node.name) || path.scope.hasBinding(path.node.name)) return;\n if (path.parentPath.isJSXOpeningElement() || path.parentPath.isJSXClosingElement()) return;\n path.replaceWith(\n t.memberExpression(t.cloneNode(propsParameter), t.identifier(path.node.name)),\n );\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction collectDestructuredPropNames(\n expression: t.Expression,\n names: ReadonlySet<string>,\n propsParameter: t.Identifier,\n): Set<string> {\n const referenced = new Set<string>();\n if (names.size === 0) return referenced;\n traverse(expressionFile(cloneExpression(expression)), {\n MemberExpression(path) {\n const { object, property, computed } = path.node;\n if (\n computed ||\n !t.isIdentifier(object, { name: propsParameter.name }) ||\n !t.isIdentifier(property) ||\n !names.has(property.name)\n ) {\n return;\n }\n referenced.add(property.name);\n },\n });\n return referenced;\n}\n\nfunction rewriteTrackedPropAccess<T extends t.Expression>(\n expression: T,\n propsParameter: t.Identifier,\n bindingsByName: ReadonlyMap<string, PropBinding>,\n): T {\n if (bindingsByName.size === 0) return cloneExpression(expression);\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n MemberExpression(path) {\n const { object, property, computed } = path.node;\n if (\n computed ||\n !t.isIdentifier(object, { name: propsParameter.name }) ||\n !t.isIdentifier(property)\n ) {\n return;\n }\n const binding = bindingsByName.get(property.name);\n if (!binding) return;\n path.replaceWith(t.identifier(binding.valueName));\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction rewriteHandlerAccess(\n root: t.JSXElement,\n handlersByName: ReadonlyMap<string, HandlerBinding>,\n): { root?: t.JSXElement; reason?: string } {\n if (handlersByName.size === 0) return { root: t.cloneNode(root, true) };\n const file = expressionFile(t.cloneNode(root, true));\n let reason: string | undefined;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (reason || path.scope.hasBinding(path.node.name)) return;\n const handler = handlersByName.get(path.node.name);\n if (!handler) return;\n const container = path.parentPath;\n const attribute = container.parentPath;\n const eventName = attribute?.isJSXAttribute() && jsxAttributeName(attribute.node);\n if (\n container.isJSXExpressionContainer() &&\n container.node.expression === path.node &&\n eventName &&\n /^on[A-Z]/.test(eventName)\n ) {\n path.replaceWith(t.cloneNode(handler.value, true));\n path.skip();\n return;\n }\n\n const call =\n container.isCallExpression() && container.node.callee === path.node ? container : null;\n const event = call && findContainingEvent(call);\n const eventExpression =\n event?.node.value &&\n t.isJSXExpressionContainer(event.node.value) &&\n event.node.value.expression;\n const isInsideInlineHandler =\n eventExpression &&\n (t.isArrowFunctionExpression(eventExpression) || t.isFunctionExpression(eventExpression)) &&\n Boolean(call?.findParent((parent) => parent.node === eventExpression));\n if (!call || !event || !isInsideInlineHandler) {\n reason = `event handler ${handler.name} must be passed directly to a JSX event or called inside its inline handler`;\n path.stop();\n return;\n }\n path.replaceWith(t.cloneNode(handler.value, true));\n path.skip();\n },\n });\n return reason\n ? { reason }\n : {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n };\n}\n\nfunction isSafeCompilerCall(\n expression: t.CallExpression,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n if (t.isIdentifier(expression.callee)) {\n return safeGlobals.has(expression.callee.name) && SAFE_GLOBAL_CALLS.has(expression.callee.name);\n }\n return (\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isIdentifier(expression.callee.object, { name: \"Math\" }) &&\n safeGlobals.has(\"Math\") &&\n t.isIdentifier(expression.callee.property) &&\n SAFE_MATH_CALLS.has(expression.callee.property.name)\n );\n}\n\nfunction validateDerivedExpression(\n expression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n additionalSafeCall?: (expression: t.CallExpression) => boolean,\n): string | undefined {\n let unsupported: string | undefined;\n const reject = (reason: string, path: NodePath) => {\n unsupported = reason;\n path.stop();\n };\n\n traverse(expressionFile(cloneExpression(expression)), {\n ArrayExpression: (path) => reject(\"array literals\", path),\n AssignmentExpression: (path) => reject(\"assignments\", path),\n AwaitExpression: (path) => reject(\"await expressions\", path),\n CallExpression(path) {\n if (!isSafeCompilerCall(path.node, safeGlobals) && !additionalSafeCall?.(path.node)) {\n reject(\"function calls\", path);\n }\n },\n ClassExpression: (path) => reject(\"class expressions\", path),\n Function: (path) => reject(\"function expressions\", path),\n JSXElement: (path) => reject(\"JSX\", path),\n JSXFragment: (path) => reject(\"JSX\", path),\n NewExpression: (path) => reject(\"constructor calls\", path),\n ObjectExpression: (path) => reject(\"object literals\", path),\n OptionalCallExpression: (path) => reject(\"function calls\", path),\n TaggedTemplateExpression: (path) => reject(\"tagged templates\", path),\n ThisExpression: (path) => reject(\"this expressions\", path),\n UnaryExpression(path) {\n if (path.node.operator === \"delete\") reject(\"delete expressions\", path);\n },\n UpdateExpression: (path) => reject(\"update expressions\", path),\n YieldExpression: (path) => reject(\"yield expressions\", path),\n });\n\n return unsupported;\n}\n\nfunction findContainingEvent(path: NodePath): NodePath<t.JSXAttribute> | null {\n const attribute = path.findParent((parent) => parent.isJSXAttribute());\n if (!attribute?.isJSXAttribute() || !t.isJSXIdentifier(attribute.node.name)) return null;\n return /^on[A-Z]/.test(attribute.node.name.name) ? attribute : null;\n}\n\nfunction validateSetterUsage(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): string | undefined {\n const file = expressionFile(t.cloneNode(root, true));\n let reason: string | undefined;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (reason) return;\n const state = statesBySetter.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isCallExpression() ||\n parent.node.callee !== path.node ||\n !findContainingEvent(parent)\n ) {\n reason = `${state.setterName} must be called inside a JSX event handler`;\n }\n },\n });\n return reason;\n}\n\nfunction isUnchangedMapItem(expression: t.Expression, item: t.Identifier): boolean {\n return t.isIdentifier(expression, { name: item.name });\n}\n\nfunction isSafeKeyedMapReplacement(\n expression: t.Expression,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n if (!t.isObjectExpression(expression)) return false;\n let spreadsItem = false;\n for (const property of expression.properties) {\n if (t.isSpreadElement(property)) {\n if (!t.isIdentifier(property.argument, { name: item.name })) return false;\n spreadsItem = true;\n continue;\n }\n if (!t.isObjectProperty(property) || property.computed || !t.isExpression(property.value)) {\n return false;\n }\n if (validateDerivedExpression(property.value, safeGlobals)) return false;\n }\n return spreadsItem;\n}\n\ntype SafeKeyedMapBranchProof = { replacement: boolean; unchanged: boolean };\n\nfunction mergeSafeKeyedMapBranchProofs(\n left: SafeKeyedMapBranchProof,\n right: SafeKeyedMapBranchProof,\n): SafeKeyedMapBranchProof {\n return {\n replacement: left.replacement || right.replacement,\n unchanged: left.unchanged || right.unchanged,\n };\n}\n\nfunction proveSafeKeyedMapExpression(\n expression: t.Expression,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): SafeKeyedMapBranchProof | undefined {\n if (isUnchangedMapItem(expression, item)) return { replacement: false, unchanged: true };\n if (isSafeKeyedMapReplacement(expression, item, safeGlobals)) {\n return { replacement: true, unchanged: false };\n }\n if (!t.isConditionalExpression(expression)) return undefined;\n if (validateDerivedExpression(expression.test, safeGlobals)) return undefined;\n const consequent = proveSafeKeyedMapExpression(expression.consequent, item, safeGlobals);\n const alternate = proveSafeKeyedMapExpression(expression.alternate, item, safeGlobals);\n return consequent && alternate ? mergeSafeKeyedMapBranchProofs(consequent, alternate) : undefined;\n}\n\nfunction proveSafeKeyedMapStatement(\n statement: t.Statement,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): SafeKeyedMapBranchProof | undefined {\n return t.isBlockStatement(statement)\n ? proveSafeKeyedMapStatements(statement.body, item, safeGlobals)\n : proveSafeKeyedMapStatements([statement], item, safeGlobals);\n}\n\nfunction isSafeKeyedMapConstDeclaration(\n statement: t.VariableDeclaration,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n return (\n statement.kind === \"const\" &&\n statement.declarations.length > 0 &&\n statement.declarations.every(\n (declaration) =>\n t.isIdentifier(declaration.id) &&\n declaration.id.name !== item.name &&\n !safeGlobals.has(declaration.id.name) &&\n declaration.init != null &&\n t.isExpression(declaration.init) &&\n !validateDerivedExpression(declaration.init, safeGlobals),\n )\n );\n}\n\nfunction proveSafeKeyedMapSwitchStatement(\n statement: t.SwitchStatement,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): SafeKeyedMapBranchProof | undefined {\n if (\n validateDerivedExpression(statement.discriminant, safeGlobals) ||\n statement.cases.filter((switchCase) => switchCase.test === null).length !== 1\n ) {\n return undefined;\n }\n\n let proof: SafeKeyedMapBranchProof | undefined;\n for (const [index, switchCase] of statement.cases.entries()) {\n if (switchCase.test && validateDerivedExpression(switchCase.test, safeGlobals)) {\n return undefined;\n }\n if (switchCase.consequent.length === 0) {\n if (index === statement.cases.length - 1) return undefined;\n continue;\n }\n const branch =\n switchCase.consequent.length === 1 && t.isBlockStatement(switchCase.consequent[0])\n ? proveSafeKeyedMapStatement(switchCase.consequent[0], item, safeGlobals)\n : proveSafeKeyedMapStatements(switchCase.consequent, item, safeGlobals);\n if (!branch) return undefined;\n proof = proof ? mergeSafeKeyedMapBranchProofs(proof, branch) : branch;\n }\n return proof;\n}\n\nfunction proveSafeKeyedMapStatements(\n statements: readonly t.Statement[],\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): SafeKeyedMapBranchProof | undefined {\n const [statement, ...remaining] = statements;\n if (!statement) return undefined;\n if (t.isReturnStatement(statement)) {\n if (remaining.length > 0 || !statement.argument || !t.isExpression(statement.argument)) {\n return undefined;\n }\n return proveSafeKeyedMapExpression(statement.argument, item, safeGlobals);\n }\n if (t.isVariableDeclaration(statement)) {\n return isSafeKeyedMapConstDeclaration(statement, item, safeGlobals)\n ? proveSafeKeyedMapStatements(remaining, item, safeGlobals)\n : undefined;\n }\n if (t.isSwitchStatement(statement)) {\n return remaining.length === 0\n ? proveSafeKeyedMapSwitchStatement(statement, item, safeGlobals)\n : undefined;\n }\n if (!t.isIfStatement(statement) || validateDerivedExpression(statement.test, safeGlobals)) {\n return undefined;\n }\n\n const consequent = proveSafeKeyedMapStatement(statement.consequent, item, safeGlobals);\n const alternate = statement.alternate\n ? remaining.length === 0\n ? proveSafeKeyedMapStatement(statement.alternate, item, safeGlobals)\n : undefined\n : proveSafeKeyedMapStatements(remaining, item, safeGlobals);\n return consequent && alternate ? mergeSafeKeyedMapBranchProofs(consequent, alternate) : undefined;\n}\n\nfunction isSafeKeyedMapBody(\n body: t.BlockStatement | t.Expression,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n const proof = t.isBlockStatement(body)\n ? proveSafeKeyedMapStatements(body.body, item, safeGlobals)\n : proveSafeKeyedMapExpression(body, item, safeGlobals);\n return Boolean(proof?.replacement && proof.unchanged);\n}\n\nfunction keyedMapUpdatePipeline(\n expression: t.Expression,\n parameterName: string,\n safeGlobals: ReadonlySet<string>,\n): readonly t.ArrowFunctionExpression[] | undefined {\n const outerCallbacks: t.ArrowFunctionExpression[] = [];\n let current = expression;\n while (\n t.isCallExpression(current) &&\n current.arguments.length === 1 &&\n t.isMemberExpression(current.callee) &&\n !current.callee.computed &&\n t.isIdentifier(current.callee.property, { name: \"map\" }) &&\n t.isExpression(current.callee.object)\n ) {\n const callback = current.arguments[0];\n if (\n !t.isArrowFunctionExpression(callback) ||\n callback.async ||\n callback.generator ||\n callback.params.length === 0 ||\n callback.params.length > 3 ||\n callback.params.some((parameter) => !t.isIdentifier(parameter)) ||\n !isSafeKeyedMapBody(callback.body, callback.params[0] as t.Identifier, safeGlobals)\n ) {\n return undefined;\n }\n outerCallbacks.push(callback);\n current = current.callee.object;\n }\n if (!t.isIdentifier(current, { name: parameterName }) || outerCallbacks.length === 0) {\n return undefined;\n }\n return outerCallbacks.reverse();\n}\n\nfunction rewriteKeyedMapUpdateHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number } {\n if (hintedStateIndices.size === 0) return { root: t.cloneNode(root, true), count: 0 };\n const file = expressionFile(t.cloneNode(root, true));\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (!updateExpression) return;\n const callbacks = keyedMapUpdatePipeline(\n updateExpression,\n updater.params[0].name,\n safeGlobals,\n );\n if (!callbacks) return;\n\n const previous = t.cloneNode(updater.params[0]);\n const pipelineValue = path.scope.generateUidIdentifier(\"farmMapValue\");\n const applyMap = path.scope.generateUidIdentifier(\"farmApplyMap\");\n const statements: t.Statement[] = [];\n let current: t.Expression = t.cloneNode(pipelineValue);\n for (let index = 0; index < callbacks.length; index += 1) {\n const method = path.scope.generateUidIdentifier(`farmMap${index + 1}`);\n const nextValue = path.scope.generateUidIdentifier(`farmMappedItems${index + 1}`);\n statements.push(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(current), t.identifier(\"map\")),\n ),\n ]),\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(nextValue),\n t.callExpression(t.cloneNode(applyMap), [\n t.cloneNode(current),\n t.cloneNode(method),\n t.cloneNode(callbacks[index], true),\n ]),\n ),\n ]),\n );\n current = nextValue;\n }\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.arrowFunctionExpression(\n [t.cloneNode(pipelineValue), t.cloneNode(applyMap)],\n t.blockStatement([...statements, t.returnStatement(t.cloneNode(current))]),\n ),\n ]),\n );\n count += callbacks.length;\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n };\n}\n\nfunction rewriteKeyedArrayAppendHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number } {\n if (hintedStateIndices.size === 0) return { root: t.cloneNode(root, true), count: 0 };\n const file = expressionFile(t.cloneNode(root, true));\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isArrayExpression(updateExpression) ||\n updateExpression.elements.length < 2 ||\n updateExpression.elements.some((element) => element === null) ||\n !t.isSpreadElement(updateExpression.elements[0]) ||\n !t.isIdentifier(updateExpression.elements[0].argument, {\n name: updater.params[0].name,\n })\n ) {\n return;\n }\n const safeAppendValue = (value: t.Expression): boolean => {\n if (t.isArrayExpression(value)) {\n return value.elements.every(\n (element) =>\n element !== null &&\n !t.isJSXNamespacedName(element) &&\n !t.isArgumentPlaceholder(element) &&\n safeAppendValue(t.isSpreadElement(element) ? element.argument : element),\n );\n }\n if (t.isObjectExpression(value)) {\n return value.properties.every((property) => {\n if (t.isSpreadElement(property)) return safeAppendValue(property.argument);\n if (!t.isObjectProperty(property) || !t.isExpression(property.value)) return false;\n return (\n (!property.computed ||\n (t.isExpression(property.key) && safeAppendValue(property.key))) &&\n safeAppendValue(property.value)\n );\n });\n }\n return validateDerivedExpression(value, safeGlobals) === undefined;\n };\n if (\n updateExpression.elements.slice(1).some((element) => {\n if (!element || t.isJSXNamespacedName(element) || t.isArgumentPlaceholder(element)) {\n return true;\n }\n return !safeAppendValue(t.isSpreadElement(element) ? element.argument : element);\n })\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const nextValue = path.scope.generateUidIdentifier(\"farmNextItems\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(t.cloneNode(nextValue), t.cloneNode(updateExpression, true)),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(nextValue),\n ]),\n ),\n ]),\n );\n count += 1;\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n };\n}\n\nfunction rewriteKeyedArrayPrependHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isArrayExpression(updateExpression) ||\n updateExpression.elements.length < 2 ||\n updateExpression.elements.some((element) => element === null)\n ) {\n return;\n }\n const suffix = updateExpression.elements[updateExpression.elements.length - 1];\n if (\n !t.isSpreadElement(suffix) ||\n !t.isIdentifier(suffix.argument, { name: updater.params[0].name })\n ) {\n return;\n }\n const safePrependValue = (value: t.Expression): boolean => {\n if (t.isArrayExpression(value)) {\n return value.elements.every(\n (element) =>\n element !== null &&\n !t.isJSXNamespacedName(element) &&\n !t.isArgumentPlaceholder(element) &&\n safePrependValue(t.isSpreadElement(element) ? element.argument : element),\n );\n }\n if (t.isObjectExpression(value)) {\n return value.properties.every((property) => {\n if (t.isSpreadElement(property)) return safePrependValue(property.argument);\n if (!t.isObjectProperty(property) || !t.isExpression(property.value)) return false;\n return (\n (!property.computed ||\n (t.isExpression(property.key) && safePrependValue(property.key))) &&\n safePrependValue(property.value)\n );\n });\n }\n return validateDerivedExpression(value, safeGlobals) === undefined;\n };\n if (\n updateExpression.elements.slice(0, -1).some((element) => {\n if (!element || t.isJSXNamespacedName(element) || t.isArgumentPlaceholder(element)) {\n return true;\n }\n return !safePrependValue(t.isSpreadElement(element) ? element.argument : element);\n })\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const nextValue = path.scope.generateUidIdentifier(\"farmNextItems\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(t.cloneNode(nextValue), t.cloneNode(updateExpression, true)),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(nextValue),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\nfunction rewriteKeyedArrayRollingWindowHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n sliceHelperIdentifier: t.Identifier,\n rollingWindowHelperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isArrayExpression(updateExpression) ||\n updateExpression.elements.length < 2 ||\n updateExpression.elements.some((element) => element === null)\n ) {\n return;\n }\n const retainedSpread = updateExpression.elements[0];\n if (\n !t.isSpreadElement(retainedSpread) ||\n !t.isCallExpression(retainedSpread.argument) ||\n retainedSpread.argument.arguments.length !== 1 ||\n !t.isMemberExpression(retainedSpread.argument.callee) ||\n retainedSpread.argument.callee.computed ||\n !t.isIdentifier(retainedSpread.argument.callee.object, {\n name: updater.params[0].name,\n }) ||\n !t.isIdentifier(retainedSpread.argument.callee.property, { name: \"slice\" }) ||\n !t.isExpression(retainedSpread.argument.arguments[0])\n ) {\n return;\n }\n const retainedStart = retainedSpread.argument.arguments[0];\n if (\n validateKeyedArrayPositionExpression(retainedStart, safeGlobals) !== undefined ||\n staticSliceIndex(retainedStart) === 0\n ) {\n return;\n }\n\n const safeIncomingValue = (value: t.Expression): boolean => {\n if (t.isArrayExpression(value)) {\n return value.elements.every(\n (element) =>\n element !== null &&\n !t.isJSXNamespacedName(element) &&\n !t.isArgumentPlaceholder(element) &&\n safeIncomingValue(t.isSpreadElement(element) ? element.argument : element),\n );\n }\n if (t.isObjectExpression(value)) {\n return value.properties.every((property) => {\n if (t.isSpreadElement(property)) return safeIncomingValue(property.argument);\n if (!t.isObjectProperty(property) || !t.isExpression(property.value)) return false;\n return (\n (!property.computed ||\n (t.isExpression(property.key) && safeIncomingValue(property.key))) &&\n safeIncomingValue(property.value)\n );\n });\n }\n return validateDerivedExpression(value, safeGlobals) === undefined;\n };\n if (\n updateExpression.elements.slice(1).some((element) => {\n if (!element || t.isJSXNamespacedName(element) || t.isArgumentPlaceholder(element)) {\n return true;\n }\n return !safeIncomingValue(t.isSpreadElement(element) ? element.argument : element);\n })\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const sliceMethod = path.scope.generateUidIdentifier(\"farmSlice\");\n const retained = path.scope.generateUidIdentifier(\"farmRetainedItems\");\n const nextValue = path.scope.generateUidIdentifier(\"farmNextItems\");\n const nextElements = t.cloneNode(updateExpression, true).elements;\n nextElements[0] = t.spreadElement(t.cloneNode(retained));\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(sliceMethod),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"slice\")),\n ),\n t.variableDeclarator(\n t.cloneNode(retained),\n t.callExpression(t.cloneNode(sliceHelperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(sliceMethod),\n t.cloneNode(retainedStart, true),\n ]),\n ),\n t.variableDeclarator(t.cloneNode(nextValue), t.arrayExpression(nextElements)),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(rollingWindowHelperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(retained),\n t.cloneNode(nextValue),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\nfunction staticSliceIndex(expression: t.Node): number | undefined {\n if (t.isNumericLiteral(expression) && Number.isSafeInteger(expression.value)) {\n return expression.value;\n }\n if (\n t.isUnaryExpression(expression) &&\n (expression.operator === \"+\" || expression.operator === \"-\") &&\n t.isNumericLiteral(expression.argument)\n ) {\n const value =\n expression.operator === \"-\" ? -expression.argument.value : expression.argument.value;\n return Number.isSafeInteger(value) ? value : undefined;\n }\n return undefined;\n}\n\nfunction validateKeyedArrayPositionExpression(\n expression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n const isNumericLiteral =\n t.isNumericLiteral(expression) ||\n (t.isUnaryExpression(expression) &&\n (expression.operator === \"+\" || expression.operator === \"-\") &&\n t.isNumericLiteral(expression.argument));\n if (isNumericLiteral && staticSliceIndex(expression) === undefined) {\n return \"non-safe-integer position literals\";\n }\n return validateDerivedExpression(expression, safeGlobals);\n}\n\nfunction rewriteKeyedArrayPositionHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n batchInsertHelperIdentifier: t.Identifier,\n windowReplaceHelperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): {\n root: t.JSXElement;\n count: number;\n batchInsertCount: number;\n windowReplaceCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (hintedStateIndices.size === 0) {\n return {\n root: t.cloneNode(root, true),\n count: 0,\n batchInsertCount: 0,\n windowReplaceCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n let batchInsertCount = 0;\n let windowReplaceCount = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const returned = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !returned ||\n !t.isCallExpression(returned) ||\n !t.isMemberExpression(returned.callee) ||\n returned.callee.computed ||\n !t.isIdentifier(returned.callee.object, { name: updater.params[0].name }) ||\n !t.isIdentifier(returned.callee.property)\n ) {\n return;\n }\n\n const methodName = returned.callee.property.name;\n const args = returned.arguments;\n const deleteCountExpression =\n methodName === \"toSpliced\" && args.length >= 2 && t.isExpression(args[1])\n ? args[1]\n : undefined;\n const toSplicedDeleteCount = deleteCountExpression\n ? staticSliceIndex(deleteCountExpression)\n : undefined;\n const hasRuntimeDeleteCount =\n deleteCountExpression !== undefined &&\n toSplicedDeleteCount === undefined &&\n validateKeyedArrayPositionExpression(deleteCountExpression, safeGlobals) === undefined;\n const isBatchInsert =\n methodName === \"toSpliced\" &&\n args.length >= 3 &&\n t.isNumericLiteral(args[1], { value: 0 }) &&\n (args.length > 3 || t.isSpreadElement(args[2]));\n const isWindowReplace =\n methodName === \"toSpliced\" &&\n ((args.length >= 3 &&\n toSplicedDeleteCount !== undefined &&\n Number.isSafeInteger(toSplicedDeleteCount) &&\n toSplicedDeleteCount > 0 &&\n (toSplicedDeleteCount !== 1 || args.length > 3 || t.isSpreadElement(args[2]))) ||\n hasRuntimeDeleteCount);\n const kind = isBatchInsert\n ? \"batch-insert\"\n : isWindowReplace\n ? \"window-replace\"\n : methodName === \"with\" && args.length === 2\n ? \"replace\"\n : methodName === \"toSpliced\" &&\n args.length === 3 &&\n t.isNumericLiteral(args[1], { value: 0 })\n ? \"insert\"\n : methodName === \"toSpliced\" &&\n args.length === 3 &&\n t.isNumericLiteral(args[1], { value: 1 })\n ? \"replace\"\n : args.length === 2 &&\n toSplicedDeleteCount !== undefined &&\n Number.isSafeInteger(toSplicedDeleteCount) &&\n toSplicedDeleteCount > 0\n ? \"remove\"\n : undefined;\n if (!kind || !t.isExpression(args[0])) return;\n const position = args[0];\n const incoming =\n kind === \"batch-insert\" || kind === \"window-replace\" ? args.slice(2) : [args.at(-1)];\n if (\n validateKeyedArrayPositionExpression(position, safeGlobals) !== undefined ||\n (kind === \"window-replace\" &&\n (!deleteCountExpression ||\n validateKeyedArrayPositionExpression(deleteCountExpression, safeGlobals) !==\n undefined)) ||\n (kind !== \"remove\" &&\n incoming.some((item) => {\n const expression = t.isSpreadElement(item) ? item.argument : item;\n return (\n !expression ||\n !t.isExpression(expression) ||\n validateDerivedExpression(expression, safeGlobals) !== undefined\n );\n }))\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const method = path.scope.generateUidIdentifier(\n methodName === \"with\" ? \"farmWith\" : \"farmToSpliced\",\n );\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(previous), t.identifier(methodName)),\n ),\n ]),\n t.returnStatement(\n kind === \"batch-insert\"\n ? t.callExpression(t.cloneNode(batchInsertHelperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n t.cloneNode(position, true),\n ...args.slice(2).map((argument) => t.cloneNode(argument, true)),\n ])\n : kind === \"window-replace\"\n ? t.callExpression(t.cloneNode(windowReplaceHelperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n t.cloneNode(position, true),\n t.cloneNode(args[1], true),\n ...args.slice(2).map((argument) => t.cloneNode(argument, true)),\n ])\n : t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n t.stringLiteral(kind),\n ...args.map((argument) => t.cloneNode(argument, true)),\n ]),\n ),\n ]),\n );\n count += 1;\n if (kind === \"batch-insert\") batchInsertCount += 1;\n if (kind === \"window-replace\") windowReplaceCount += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n batchInsertCount,\n windowReplaceCount,\n stateIndices,\n };\n}\n\nfunction rewriteKeyedArrayReorderHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const returned = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !returned ||\n !t.isCallExpression(returned) ||\n returned.arguments.length !== 0 ||\n !t.isMemberExpression(returned.callee) ||\n returned.callee.computed ||\n !t.isIdentifier(returned.callee.object, { name: updater.params[0].name }) ||\n !t.isIdentifier(returned.callee.property, { name: \"toReversed\" })\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const method = path.scope.generateUidIdentifier(\"farmToReversed\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"toReversed\")),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\ntype KeyedArrayReorderPipelineStep =\n | {\n readonly kind: \"filter\";\n readonly predicate: t.ArrowFunctionExpression;\n }\n | {\n readonly callback: t.ArrowFunctionExpression;\n readonly kind: \"map\";\n }\n | {\n readonly bounds: readonly t.Expression[];\n readonly kind: \"slice\";\n }\n | { readonly kind: \"reverse\" }\n | {\n readonly comparator?: t.ArrowFunctionExpression | t.FunctionExpression;\n readonly kind: \"sort\";\n };\n\nfunction normalizeSafeKeyedFilterPredicate(\n predicate: t.Node | null | undefined,\n safeGlobals: ReadonlySet<string>,\n): t.ArrowFunctionExpression | undefined {\n if (\n !t.isArrowFunctionExpression(predicate) ||\n predicate.async ||\n predicate.generator ||\n predicate.params.length !== 1 ||\n !t.isIdentifier(predicate.params[0]) ||\n (t.isBlockStatement(predicate.body) && predicate.body.directives.length > 0)\n ) {\n return undefined;\n }\n const returned = returnedExpression(predicate);\n if (!returned || validateDerivedExpression(returned, safeGlobals) !== undefined) {\n return undefined;\n }\n const normalized = t.cloneNode(predicate, true);\n normalized.body = t.cloneNode(returned, true);\n return normalized;\n}\n\nfunction keyedArrayReorderPipeline(\n expression: t.Expression,\n parameterName: string,\n safeGlobals: ReadonlySet<string>,\n): readonly KeyedArrayReorderPipelineStep[] | undefined {\n const outerSteps: KeyedArrayReorderPipelineStep[] = [];\n let current = expression;\n while (\n t.isCallExpression(current) &&\n t.isMemberExpression(current.callee) &&\n !current.callee.computed &&\n t.isIdentifier(current.callee.property) &&\n t.isExpression(current.callee.object)\n ) {\n const methodName = current.callee.property.name;\n if (methodName === \"map\") {\n if (current.arguments.length !== 1) return undefined;\n const callback = current.arguments[0];\n if (\n !t.isArrowFunctionExpression(callback) ||\n callback.async ||\n callback.generator ||\n callback.params.length === 0 ||\n callback.params.length > 3 ||\n callback.params.some((parameter) => !t.isIdentifier(parameter)) ||\n !isSafeKeyedMapBody(callback.body, callback.params[0] as t.Identifier, safeGlobals)\n ) {\n return undefined;\n }\n outerSteps.push({ callback, kind: \"map\" });\n } else if (methodName === \"filter\") {\n if (current.arguments.length !== 1) return undefined;\n const predicate = normalizeSafeKeyedFilterPredicate(current.arguments[0], safeGlobals);\n if (!predicate) return undefined;\n outerSteps.push({ kind: \"filter\", predicate });\n } else if (methodName === \"slice\") {\n if (current.arguments.length < 1 || current.arguments.length > 2) return undefined;\n const bounds: t.Expression[] = [];\n for (const argument of current.arguments) {\n if (!t.isExpression(argument)) return undefined;\n if (validateKeyedArrayPositionExpression(argument, safeGlobals) !== undefined) {\n return undefined;\n }\n bounds.push(argument);\n }\n if (bounds.length === 1 && staticSliceIndex(bounds[0]) === 0) return undefined;\n outerSteps.push({ bounds, kind: \"slice\" });\n } else if (methodName === \"toReversed\") {\n if (current.arguments.length !== 0) return undefined;\n outerSteps.push({ kind: \"reverse\" });\n } else if (methodName === \"toSorted\") {\n if (current.arguments.length > 1) return undefined;\n const comparator = current.arguments[0];\n if (\n comparator &&\n !t.isArrowFunctionExpression(comparator) &&\n !t.isFunctionExpression(comparator)\n ) {\n return undefined;\n }\n if (comparator && validateCollectionCallback(comparator, \"toSorted\", safeGlobals)) {\n return undefined;\n }\n outerSteps.push({ kind: \"sort\", ...(comparator ? { comparator } : {}) });\n } else {\n return undefined;\n }\n current = current.callee.object;\n }\n if (!t.isIdentifier(current, { name: parameterName }) || outerSteps.length < 2) {\n return undefined;\n }\n const steps = outerSteps.reverse();\n let mapSteps = 0;\n let structuralSteps = 0;\n let reorderSteps = 0;\n let reachedReorder = false;\n for (const step of steps) {\n if (step.kind === \"map\") {\n if (reachedReorder && structuralSteps > 0) return undefined;\n mapSteps += 1;\n } else if (step.kind === \"filter\" || step.kind === \"slice\") {\n if (reachedReorder) return undefined;\n structuralSteps += 1;\n } else {\n reachedReorder = true;\n reorderSteps += 1;\n }\n }\n if (reorderSteps < 1) {\n return structuralSteps > 0 && mapSteps > 0 ? steps : undefined;\n }\n if (mapSteps > 0 && reorderSteps >= 1) return steps;\n if (structuralSteps < 1 && reorderSteps < 2) return undefined;\n return steps;\n}\n\nfunction rewriteKeyedArrayReorderPipelineHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n filterHelperIdentifier: t.Identifier,\n mapHelperIdentifier: t.Identifier,\n mapReorderHelperIdentifier: t.Identifier,\n mappedStructuralHelperIdentifier: t.Identifier,\n reorderHelperIdentifier: t.Identifier,\n structuralReorderHelperIdentifier: t.Identifier,\n sliceHelperIdentifier: t.Identifier,\n sortHelperIdentifier: t.Identifier,\n structuralSortHelperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n allowMapPipelines: boolean,\n): {\n filterCount: number;\n mapCount: number;\n mapReorderCount: number;\n mapSortCount: number;\n root: t.JSXElement;\n reorderCount: number;\n sliceCount: number;\n sortCount: number;\n structuralReorderCount: number;\n terminalStructuralPipelineCount: number;\n structuralSortCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (hintedStateIndices.size === 0) {\n return {\n root: t.cloneNode(root, true),\n filterCount: 0,\n mapCount: 0,\n mapReorderCount: 0,\n mapSortCount: 0,\n reorderCount: 0,\n sliceCount: 0,\n sortCount: 0,\n structuralReorderCount: 0,\n terminalStructuralPipelineCount: 0,\n structuralSortCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let filterCount = 0;\n let mapCount = 0;\n let mapReorderCount = 0;\n let mapSortCount = 0;\n let reorderCount = 0;\n let sliceCount = 0;\n let sortCount = 0;\n let structuralReorderCount = 0;\n let terminalStructuralPipelineCount = 0;\n let structuralSortCount = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !updateExpression\n ) {\n return;\n }\n const steps = keyedArrayReorderPipeline(\n updateExpression,\n updater.params[0].name,\n safeGlobals,\n );\n if (!steps) return;\n const structuralPipeline = steps.some(\n (step) => step.kind === \"filter\" || step.kind === \"slice\",\n );\n const mapPipeline = steps.some((step) => step.kind === \"map\");\n if (mapPipeline && !allowMapPipelines) return;\n const terminalStructuralPipeline =\n mapPipeline &&\n structuralPipeline &&\n steps.every((step) => step.kind !== \"reverse\" && step.kind !== \"sort\");\n\n const previous = t.cloneNode(updater.params[0]);\n const statements: t.Statement[] = [];\n let value: t.Expression = t.cloneNode(previous);\n let hasMappedLineage = false;\n for (let stepIndex = 0; stepIndex < steps.length; stepIndex += 1) {\n const step = steps[stepIndex];\n if (step.kind === \"map\") {\n let mapEnd = stepIndex + 1;\n while (steps[mapEnd]?.kind === \"map\") mapEnd += 1;\n if (mapEnd - stepIndex > 1) {\n const pipelineValue = path.scope.generateUidIdentifier(\"farmMapValue\");\n const applyMap = path.scope.generateUidIdentifier(\"farmApplyMap\");\n const pipelineStatements: t.Statement[] = [];\n let current: t.Expression = t.cloneNode(pipelineValue);\n for (let mapIndex = stepIndex; mapIndex < mapEnd; mapIndex += 1) {\n const mapStep = steps[mapIndex];\n if (mapStep.kind !== \"map\") break;\n const method = path.scope.generateUidIdentifier(`farmMap${mapIndex + 1}`);\n const result = path.scope.generateUidIdentifier(`farmMappedItems${mapIndex + 1}`);\n pipelineStatements.push(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(current), t.identifier(\"map\")),\n ),\n ]),\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(result),\n t.callExpression(t.cloneNode(applyMap), [\n t.cloneNode(current),\n t.cloneNode(method),\n t.cloneNode(mapStep.callback, true),\n ]),\n ),\n ]),\n );\n current = t.cloneNode(result);\n }\n const result = path.scope.generateUidIdentifier(\"farmPipelineValue\");\n statements.push(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(result),\n t.callExpression(t.cloneNode(mapHelperIdentifier), [\n t.cloneNode(value),\n t.arrowFunctionExpression(\n [t.cloneNode(pipelineValue), t.cloneNode(applyMap)],\n t.blockStatement([\n ...pipelineStatements,\n t.returnStatement(t.cloneNode(current)),\n ]),\n ),\n ]),\n ),\n ]),\n );\n value = t.cloneNode(result);\n mapCount += mapEnd - stepIndex;\n hasMappedLineage = true;\n stepIndex = mapEnd - 1;\n continue;\n }\n }\n const methodName =\n step.kind === \"map\"\n ? \"map\"\n : step.kind === \"filter\"\n ? \"filter\"\n : step.kind === \"slice\"\n ? \"slice\"\n : step.kind === \"reverse\"\n ? \"toReversed\"\n : \"toSorted\";\n const method = path.scope.generateUidIdentifier(\n step.kind === \"filter\"\n ? \"farmFilter\"\n : step.kind === \"map\"\n ? \"farmMap\"\n : step.kind === \"slice\"\n ? \"farmSlice\"\n : step.kind === \"reverse\"\n ? \"farmToReversed\"\n : \"farmToSorted\",\n );\n const result = path.scope.generateUidIdentifier(\"farmPipelineValue\");\n const helper =\n step.kind === \"map\"\n ? mapHelperIdentifier\n : step.kind === \"filter\"\n ? filterHelperIdentifier\n : step.kind === \"slice\"\n ? sliceHelperIdentifier\n : step.kind === \"reverse\"\n ? structuralPipeline\n ? structuralReorderHelperIdentifier\n : hasMappedLineage\n ? mapReorderHelperIdentifier\n : reorderHelperIdentifier\n : structuralPipeline\n ? structuralSortHelperIdentifier\n : hasMappedLineage\n ? mapReorderHelperIdentifier\n : sortHelperIdentifier;\n const args =\n step.kind === \"map\"\n ? [t.cloneNode(step.callback, true)]\n : step.kind === \"filter\"\n ? [t.cloneNode(step.predicate, true)]\n : step.kind === \"slice\"\n ? step.bounds.map((bound) => t.cloneNode(bound, true))\n : step.kind === \"sort\" && step.comparator\n ? [t.cloneNode(step.comparator, true)]\n : [];\n statements.push(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(value), t.identifier(methodName)),\n ),\n ]),\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(result),\n t.callExpression(t.cloneNode(helper), [\n t.cloneNode(value),\n t.cloneNode(method),\n ...args,\n ]),\n ),\n ]),\n );\n value = t.cloneNode(result);\n if (step.kind === \"map\") {\n mapCount += 1;\n hasMappedLineage = true;\n } else if (step.kind === \"filter\") filterCount += 1;\n else if (step.kind === \"slice\") sliceCount += 1;\n else if (step.kind === \"reverse\") {\n reorderCount += 1;\n if (hasMappedLineage && !structuralPipeline) mapReorderCount += 1;\n if (structuralPipeline) structuralReorderCount += 1;\n } else {\n sortCount += 1;\n if (hasMappedLineage && !structuralPipeline) mapSortCount += 1;\n if (structuralPipeline) structuralSortCount += 1;\n }\n }\n statements.push(\n t.returnStatement(\n terminalStructuralPipeline\n ? t.callExpression(t.cloneNode(mappedStructuralHelperIdentifier), [t.cloneNode(value)])\n : t.cloneNode(value),\n ),\n );\n if (terminalStructuralPipeline) terminalStructuralPipelineCount += 1;\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement(statements),\n );\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n filterCount,\n mapCount,\n mapReorderCount,\n mapSortCount,\n reorderCount,\n sliceCount,\n sortCount,\n structuralReorderCount,\n terminalStructuralPipelineCount,\n structuralSortCount,\n stateIndices,\n };\n}\n\nfunction rewriteQueuedKeyedArrayReorderMapHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n mapReorderIdentifier: t.Identifier,\n reorderIdentifier: t.Identifier,\n sortIdentifier: t.Identifier,\n structuralReorderIdentifier: t.Identifier,\n structuralSortIdentifier: t.Identifier,\n allowed: boolean,\n): { root: t.JSXElement; mapCount: number } {\n if (!allowed) return { root: t.cloneNode(root, true), mapCount: 0 };\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n\n const containsHelperCall = (\n updater: t.ArrowFunctionExpression,\n helperNames: ReadonlySet<string>,\n ): boolean => {\n let found = false;\n t.traverseFast(updater.body, (node) => {\n if (\n !found &&\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee) &&\n helperNames.has(node.callee.name)\n ) {\n found = true;\n }\n });\n return found;\n };\n const reorderHelperNames = new Set([\n mapReorderIdentifier.name,\n reorderIdentifier.name,\n sortIdentifier.name,\n ]);\n const structuralHelperNames = new Set([\n structuralReorderIdentifier.name,\n structuralSortIdentifier.name,\n ]);\n\n traverse(file, {\n BlockStatement(path) {\n let queuedReorderState: number | undefined;\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n queuedReorderState = undefined;\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n queuedReorderState = undefined;\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n queuedReorderState = undefined;\n continue;\n }\n\n if (\n containsHelperCall(updater, reorderHelperNames) &&\n !containsHelperCall(updater, structuralHelperNames)\n ) {\n queuedReorderState = state.index;\n continue;\n }\n\n if (\n queuedReorderState !== state.index ||\n !t.isCallExpression(updater.body) ||\n !t.isIdentifier(updater.body.callee, { name: mapUpdateIdentifier.name }) ||\n updater.body.arguments.length !== 2\n ) {\n queuedReorderState = undefined;\n continue;\n }\n const pipeline = updater.body.arguments[1];\n if (\n !t.isArrowFunctionExpression(pipeline) ||\n pipeline.params.length !== 2 ||\n !t.isIdentifier(pipeline.params[1])\n ) {\n queuedReorderState = undefined;\n continue;\n }\n let pipelineMapCount = 0;\n const applyMapName = pipeline.params[1].name;\n t.traverseFast(pipeline.body, (node) => {\n if (t.isCallExpression(node) && t.isIdentifier(node.callee, { name: applyMapName })) {\n pipelineMapCount += 1;\n }\n });\n if (pipelineMapCount === 0) {\n queuedReorderState = undefined;\n continue;\n }\n\n updater.body.callee = t.cloneNode(queuedMapPipelineIdentifier);\n mapCount += pipelineMapCount;\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n };\n}\n\nfunction countKeyedArrayMapPipeline(\n updater: t.ArrowFunctionExpression,\n mapUpdateIdentifier: t.Identifier,\n): number {\n if (\n !t.isCallExpression(updater.body) ||\n !t.isIdentifier(updater.body.callee, { name: mapUpdateIdentifier.name }) ||\n updater.body.arguments.length !== 2\n ) {\n return 0;\n }\n const pipeline = updater.body.arguments[1];\n if (\n !t.isArrowFunctionExpression(pipeline) ||\n pipeline.params.length !== 2 ||\n !t.isIdentifier(pipeline.params[1])\n ) {\n return 0;\n }\n const applyMapName = pipeline.params[1].name;\n let count = 0;\n t.traverseFast(pipeline.body, (node) => {\n if (t.isCallExpression(node) && t.isIdentifier(node.callee, { name: applyMapName })) {\n count += 1;\n }\n });\n return count;\n}\n\nfunction rewriteQueuedKeyedArrayMappedStructuralHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n filterIdentifier: t.Identifier,\n sliceIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n mapCount: number;\n structuralCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n mapCount: 0,\n structuralCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n let structuralCount = 0;\n const stateIndices = new Set<number>();\n\n const terminalStructuralReturn = (\n updater: t.ArrowFunctionExpression,\n ): t.ReturnStatement | undefined => {\n if (!t.isBlockStatement(updater.body)) return undefined;\n const statement = updater.body.body.at(-1);\n if (\n !t.isReturnStatement(statement) ||\n !statement.argument ||\n !t.isCallExpression(statement.argument) ||\n !t.isIdentifier(statement.argument.callee) ||\n (statement.argument.callee.name !== filterIdentifier.name &&\n statement.argument.callee.name !== sliceIdentifier.name)\n ) {\n return undefined;\n }\n return statement;\n };\n\n traverse(file, {\n BlockStatement(path) {\n let mappedStructuralState: number | undefined;\n let pendingMaps: Array<{\n count: number;\n stateIndex: number;\n updater: t.ArrowFunctionExpression & { body: t.CallExpression };\n }> = [];\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n\n const pipelineMapCount = countKeyedArrayMapPipeline(updater, mapUpdateIdentifier);\n if (pipelineMapCount > 0) {\n // A later pass handles maps after an already structural result. End this pass's\n // map-before-structural segment without rewriting that map here.\n if (mappedStructuralState !== undefined) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n const candidate = {\n count: pipelineMapCount,\n stateIndex: state.index,\n updater: updater as t.ArrowFunctionExpression & { body: t.CallExpression },\n };\n pendingMaps =\n pendingMaps[0]?.stateIndex === state.index ? [...pendingMaps, candidate] : [candidate];\n continue;\n }\n\n const structuralReturn = terminalStructuralReturn(updater);\n const hasPendingMaps = pendingMaps.length > 0 && pendingMaps[0].stateIndex === state.index;\n if (!structuralReturn || (!hasPendingMaps && mappedStructuralState !== state.index)) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n\n if (hasPendingMaps) {\n for (const candidate of pendingMaps) {\n candidate.updater.body.callee = t.cloneNode(queuedMapPipelineIdentifier);\n mapCount += candidate.count;\n }\n }\n const structuralValue = structuralReturn.argument;\n if (!t.isExpression(structuralValue)) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n structuralReturn.argument = t.callExpression(t.cloneNode(mappedStructuralIdentifier), [\n t.cloneNode(structuralValue),\n ]);\n structuralCount += 1;\n stateIndices.add(state.index);\n mappedStructuralState = state.index;\n pendingMaps = [];\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n structuralCount,\n stateIndices,\n };\n}\n\nfunction rewriteQueuedKeyedArrayStructuralMapHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n mapPipelineIdentifier: t.Identifier,\n appendIdentifier: t.Identifier,\n mappedStructuralAppendIdentifier: t.Identifier,\n structuralAppendMapPipelineIdentifier: t.Identifier,\n filterIdentifier: t.Identifier,\n sliceIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n mapCount: number;\n mappedStructuralAppendCount: number;\n structuralAppendMapCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n mapCount: 0,\n mappedStructuralAppendCount: 0,\n structuralAppendMapCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n let mappedStructuralAppendCount = 0;\n let structuralAppendMapCount = 0;\n const stateIndices = new Set<number>();\n\n const structuralUpdateKind = (\n updater: t.ArrowFunctionExpression,\n ): { kind: \"filter\" | \"slice\"; mapped: boolean } | undefined => {\n if (!t.isBlockStatement(updater.body)) return undefined;\n const statement = updater.body.body.at(-1);\n if (!t.isReturnStatement(statement) || !statement.argument) return undefined;\n let found: \"filter\" | \"slice\" | undefined;\n let mapped = false;\n t.traverseFast(statement.argument, (node) => {\n if (!found && t.isCallExpression(node) && t.isIdentifier(node.callee)) {\n if (node.callee.name === filterIdentifier.name) found = \"filter\";\n if (node.callee.name === sliceIdentifier.name) found = \"slice\";\n }\n if (\n !mapped &&\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee, { name: mappedStructuralIdentifier.name })\n ) {\n mapped = true;\n }\n });\n return found ? { kind: found, mapped } : undefined;\n };\n\n traverse(file, {\n BlockStatement(path) {\n let structuralState: number | undefined;\n let structuralAppendState: number | undefined;\n let structuralMapState: number | undefined;\n let structuralKind: \"filter\" | \"slice\" | undefined;\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n\n const nextStructuralKind = structuralUpdateKind(updater);\n if (nextStructuralKind) {\n structuralState = state.index;\n structuralAppendState = undefined;\n structuralMapState = nextStructuralKind.mapped ? state.index : undefined;\n structuralKind = nextStructuralKind.kind;\n continue;\n }\n\n const appendCalls: t.CallExpression[] = [];\n t.traverseFast(updater.body, (node) => {\n if (\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee, { name: appendIdentifier.name })\n ) {\n appendCalls.push(node);\n }\n });\n if (appendCalls.length > 0) {\n if (structuralState === state.index && structuralKind !== undefined) {\n structuralAppendState = state.index;\n if (structuralMapState === state.index) {\n for (const call of appendCalls) {\n call.callee = t.cloneNode(mappedStructuralAppendIdentifier);\n }\n mappedStructuralAppendCount += appendCalls.length;\n }\n } else {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n }\n continue;\n }\n\n const pipelineMapCount = countKeyedArrayMapPipeline(updater, mapUpdateIdentifier);\n if (structuralState !== state.index || pipelineMapCount === 0) {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n (updater as t.ArrowFunctionExpression & { body: t.CallExpression }).body.callee =\n t.cloneNode(\n structuralAppendState === state.index\n ? structuralAppendMapPipelineIdentifier\n : mapPipelineIdentifier,\n );\n mapCount += pipelineMapCount;\n if (structuralAppendState === state.index) {\n structuralAppendMapCount += pipelineMapCount;\n }\n structuralMapState = state.index;\n stateIndices.add(state.index);\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n mappedStructuralAppendCount,\n structuralAppendMapCount,\n stateIndices,\n };\n}\n\nfunction rewriteQueuedKeyedArrayStructuralPrependMapHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n mapPipelineIdentifier: t.Identifier,\n prependIdentifier: t.Identifier,\n mappedStructuralPrependIdentifier: t.Identifier,\n structuralPrependMapPipelineIdentifier: t.Identifier,\n filterIdentifier: t.Identifier,\n sliceIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n mapCount: number;\n mappedStructuralPrependCount: number;\n structuralPrependMapCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n mapCount: 0,\n mappedStructuralPrependCount: 0,\n structuralPrependMapCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n let mappedStructuralPrependCount = 0;\n let structuralPrependMapCount = 0;\n const stateIndices = new Set<number>();\n\n const structuralUpdateKind = (\n updater: t.ArrowFunctionExpression,\n ): { kind: \"filter\" | \"slice\"; mapped: boolean } | undefined => {\n if (!t.isBlockStatement(updater.body)) return undefined;\n const statement = updater.body.body.at(-1);\n if (!t.isReturnStatement(statement) || !statement.argument) return undefined;\n let found: \"filter\" | \"slice\" | undefined;\n let mapped = false;\n t.traverseFast(statement.argument, (node) => {\n if (!found && t.isCallExpression(node) && t.isIdentifier(node.callee)) {\n if (node.callee.name === filterIdentifier.name) found = \"filter\";\n if (node.callee.name === sliceIdentifier.name) found = \"slice\";\n }\n if (\n !mapped &&\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee, { name: mappedStructuralIdentifier.name })\n ) {\n mapped = true;\n }\n });\n return found ? { kind: found, mapped } : undefined;\n };\n\n traverse(file, {\n BlockStatement(path) {\n let structuralState: number | undefined;\n let structuralPrependState: number | undefined;\n let structuralMapState: number | undefined;\n let structuralKind: \"filter\" | \"slice\" | undefined;\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n\n const nextStructuralKind = structuralUpdateKind(updater);\n if (nextStructuralKind) {\n structuralState = state.index;\n structuralPrependState = undefined;\n structuralMapState = nextStructuralKind.mapped ? state.index : undefined;\n structuralKind = nextStructuralKind.kind;\n continue;\n }\n\n const prependCalls: t.CallExpression[] = [];\n t.traverseFast(updater.body, (node) => {\n if (\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee, { name: prependIdentifier.name })\n ) {\n prependCalls.push(node);\n }\n });\n if (prependCalls.length > 0) {\n if (structuralState === state.index && structuralKind !== undefined) {\n structuralPrependState = state.index;\n if (structuralMapState === state.index) {\n for (const call of prependCalls) {\n call.callee = t.cloneNode(mappedStructuralPrependIdentifier);\n }\n mappedStructuralPrependCount += prependCalls.length;\n }\n } else {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n }\n continue;\n }\n\n const pipelineMapCount =\n countKeyedArrayMapPipeline(updater, mapUpdateIdentifier) ||\n countKeyedArrayMapPipeline(updater, mapPipelineIdentifier);\n if (structuralState !== state.index || pipelineMapCount === 0) {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n (updater as t.ArrowFunctionExpression & { body: t.CallExpression }).body.callee =\n t.cloneNode(\n structuralPrependState === state.index\n ? structuralPrependMapPipelineIdentifier\n : mapPipelineIdentifier,\n );\n mapCount += pipelineMapCount;\n if (structuralPrependState === state.index) {\n structuralPrependMapCount += pipelineMapCount;\n }\n structuralMapState = state.index;\n stateIndices.add(state.index);\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n mappedStructuralPrependCount,\n structuralPrependMapCount,\n stateIndices,\n };\n}\n\nfunction rewriteQueuedKeyedArrayRollingWindowMapHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n mapPipelineIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n rollingWindowMapPipelineIdentifier: t.Identifier,\n mappedRollingWindowIdentifier: t.Identifier,\n rollingWindowIdentifier: t.Identifier,\n structuralAppendIdentifier: t.Identifier,\n mappedStructuralAppendIdentifier: t.Identifier,\n structuralAppendMapPipelineIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n allowed: boolean,\n): {\n chainedMapCount: number;\n chainedRollingWindowCount: number;\n root: t.JSXElement;\n leadingMapCount: number;\n mappedRollingWindowCount: number;\n rollingWindowCount: number;\n structuralRollingWindowCount: number;\n trailingMapCount: number;\n} {\n if (!allowed) {\n return {\n chainedMapCount: 0,\n chainedRollingWindowCount: 0,\n root: t.cloneNode(root, true),\n leadingMapCount: 0,\n mappedRollingWindowCount: 0,\n rollingWindowCount: 0,\n structuralRollingWindowCount: 0,\n trailingMapCount: 0,\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let chainedMapCount = 0;\n let chainedRollingWindowCount = 0;\n let leadingMapCount = 0;\n let mappedRollingWindowCount = 0;\n let rollingWindowCount = 0;\n let structuralRollingWindowCount = 0;\n let trailingMapCount = 0;\n\n type MapStep = {\n count: number;\n updater: t.ArrowFunctionExpression & { body: t.CallExpression };\n };\n type RollingStep = {\n call: t.CallExpression;\n };\n type SegmentStep = { kind: \"map\"; value: MapStep } | { kind: \"rolling\"; value: RollingStep };\n\n const mapStep = (updater: t.ArrowFunctionExpression): MapStep | undefined => {\n if (!t.isCallExpression(updater.body)) return undefined;\n const count =\n countKeyedArrayMapPipeline(updater, mapUpdateIdentifier) ||\n countKeyedArrayMapPipeline(updater, mapPipelineIdentifier);\n return count > 0\n ? {\n count,\n updater: updater as t.ArrowFunctionExpression & { body: t.CallExpression },\n }\n : undefined;\n };\n const rollingStep = (updater: t.ArrowFunctionExpression): RollingStep | undefined => {\n if (!t.isBlockStatement(updater.body)) return undefined;\n const statement = updater.body.body.at(-1);\n if (\n !t.isReturnStatement(statement) ||\n !statement.argument ||\n !t.isCallExpression(statement.argument) ||\n !t.isIdentifier(statement.argument.callee, { name: rollingWindowIdentifier.name }) ||\n statement.argument.arguments.length !== 3 ||\n !t.isExpression(statement.argument.arguments[1]) ||\n !t.isExpression(statement.argument.arguments[2])\n ) {\n return undefined;\n }\n return { call: statement.argument };\n };\n\n traverse(file, {\n BlockStatement(path) {\n let segment: SegmentStep[] = [];\n let segmentState: number | undefined;\n const flushSegment = (): void => {\n const rollingIndices = segment.flatMap((step, index) =>\n step.kind === \"rolling\" ? [index] : [],\n );\n if (rollingIndices.length === 0 || segment.length < 2) {\n segment = [];\n segmentState = undefined;\n return;\n }\n if (rollingIndices.length > 1) {\n const maps = segment.filter((step) => step.kind === \"map\");\n if (maps.length === 0) {\n segment = [];\n segmentState = undefined;\n return;\n }\n for (const step of maps) {\n if (step.kind !== \"map\") continue;\n step.value.updater.body.callee = t.cloneNode(rollingWindowMapPipelineIdentifier);\n chainedMapCount += step.value.count;\n }\n for (const index of rollingIndices) {\n const step = segment[index];\n if (step.kind === \"rolling\") {\n step.value.call.callee = t.cloneNode(mappedRollingWindowIdentifier);\n }\n }\n chainedRollingWindowCount += rollingIndices.length;\n rollingWindowCount += rollingIndices.length;\n segment = [];\n segmentState = undefined;\n return;\n }\n const rollingIndex = rollingIndices[0];\n const leadingMaps = segment.slice(0, rollingIndex).filter((step) => step.kind === \"map\");\n const trailingMaps = segment.slice(rollingIndex + 1).filter((step) => step.kind === \"map\");\n if (leadingMaps.length === 0 && trailingMaps.length === 0) {\n segment = [];\n segmentState = undefined;\n return;\n }\n\n const rolling = segment[rollingIndex];\n if (rolling.kind !== \"rolling\") return;\n const retained = rolling.value.call.arguments[1];\n const value = rolling.value.call.arguments[2];\n if (!t.isExpression(retained) || !t.isExpression(value)) return;\n const hasLeadingMaps = leadingMaps.length > 0;\n rolling.value.call.callee = t.cloneNode(\n hasLeadingMaps ? mappedStructuralAppendIdentifier : structuralAppendIdentifier,\n );\n rolling.value.call.arguments = [\n hasLeadingMaps\n ? t.callExpression(t.cloneNode(mappedStructuralIdentifier), [\n t.cloneNode(retained, true),\n ])\n : t.cloneNode(retained, true),\n t.cloneNode(value, true),\n ];\n rollingWindowCount += 1;\n if (hasLeadingMaps) {\n mappedRollingWindowCount += 1;\n for (const step of leadingMaps) {\n if (step.kind !== \"map\") continue;\n step.value.updater.body.callee = t.cloneNode(queuedMapPipelineIdentifier);\n leadingMapCount += step.value.count;\n }\n } else {\n structuralRollingWindowCount += 1;\n }\n for (const step of trailingMaps) {\n if (step.kind !== \"map\") continue;\n step.value.updater.body.callee = t.cloneNode(structuralAppendMapPipelineIdentifier);\n trailingMapCount += step.value.count;\n }\n segment = [];\n segmentState = undefined;\n };\n\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n flushSegment();\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n flushSegment();\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n flushSegment();\n continue;\n }\n if (segmentState !== undefined && segmentState !== state.index) flushSegment();\n const nextMap = mapStep(updater);\n const nextRolling = rollingStep(updater);\n if (!nextMap && !nextRolling) {\n flushSegment();\n continue;\n }\n segmentState = state.index;\n segment.push(\n nextMap ? { kind: \"map\", value: nextMap } : { kind: \"rolling\", value: nextRolling! },\n );\n }\n flushSegment();\n },\n });\n return {\n chainedMapCount,\n chainedRollingWindowCount,\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n leadingMapCount,\n mappedRollingWindowCount,\n rollingWindowCount,\n structuralRollingWindowCount,\n trailingMapCount,\n };\n}\n\nfunction rewriteQueuedKeyedArrayStructuralReorderHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n filterIdentifier: t.Identifier,\n sliceIdentifier: t.Identifier,\n mapPipelineIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n mapReorderIdentifier: t.Identifier,\n reorderIdentifier: t.Identifier,\n sortIdentifier: t.Identifier,\n structuralReorderIdentifier: t.Identifier,\n structuralSortIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n reorderCount: number;\n sortCount: number;\n replacedMapReorderCount: number;\n replacedMapSortCount: number;\n replacedQueuedMapCount: number;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n reorderCount: 0,\n sortCount: 0,\n replacedMapReorderCount: 0,\n replacedMapSortCount: 0,\n replacedQueuedMapCount: 0,\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let reorderCount = 0;\n let sortCount = 0;\n let replacedMapReorderCount = 0;\n let replacedMapSortCount = 0;\n let replacedQueuedMapCount = 0;\n\n traverse(file, {\n BlockStatement(path) {\n let structuralState: number | undefined;\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n structuralState = undefined;\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n structuralState = undefined;\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n structuralState = undefined;\n continue;\n }\n\n const methodKinds = new Map<string, \"reverse\" | \"sort\">();\n t.traverseFast(updater.body, (node) => {\n if (\n !t.isVariableDeclarator(node) ||\n !t.isIdentifier(node.id) ||\n !t.isMemberExpression(node.init) ||\n node.init.computed ||\n !t.isIdentifier(node.init.property)\n ) {\n return;\n }\n if (node.init.property.name === \"toReversed\") methodKinds.set(node.id.name, \"reverse\");\n if (node.init.property.name === \"toSorted\") methodKinds.set(node.id.name, \"sort\");\n });\n\n let startsStructuralLineage = false;\n let continuesStructuralLineage = false;\n let unsupported = false;\n const queuedMaps: t.CallExpression[] = [];\n const reorderCalls: Array<{\n call: t.CallExpression;\n kind: \"reverse\" | \"sort\";\n mapped: boolean;\n }> = [];\n t.traverseFast(updater.body, (node) => {\n if (!t.isCallExpression(node) || !t.isIdentifier(node.callee)) return;\n const helperName = node.callee.name;\n if (\n helperName === filterIdentifier.name ||\n helperName === sliceIdentifier.name ||\n helperName === mappedStructuralIdentifier.name\n ) {\n startsStructuralLineage = true;\n return;\n }\n if (\n helperName === structuralReorderIdentifier.name ||\n helperName === structuralSortIdentifier.name\n ) {\n startsStructuralLineage = true;\n return;\n }\n if (helperName === mapPipelineIdentifier.name) {\n continuesStructuralLineage = true;\n return;\n }\n if (helperName === queuedMapPipelineIdentifier.name) {\n continuesStructuralLineage = true;\n queuedMaps.push(node);\n return;\n }\n if (helperName === reorderIdentifier.name) {\n continuesStructuralLineage = true;\n reorderCalls.push({ call: node, kind: \"reverse\", mapped: false });\n return;\n }\n if (helperName === sortIdentifier.name) {\n continuesStructuralLineage = true;\n reorderCalls.push({ call: node, kind: \"sort\", mapped: false });\n return;\n }\n if (helperName === mapReorderIdentifier.name) {\n const method = node.arguments[1];\n const kind = t.isIdentifier(method) ? methodKinds.get(method.name) : undefined;\n if (!kind) {\n unsupported = true;\n return;\n }\n continuesStructuralLineage = true;\n reorderCalls.push({ call: node, kind, mapped: true });\n }\n });\n\n const hasStructuralLineage = startsStructuralLineage || structuralState === state.index;\n if (unsupported || (!startsStructuralLineage && !continuesStructuralLineage)) {\n structuralState = undefined;\n continue;\n }\n if (!hasStructuralLineage) {\n structuralState = undefined;\n continue;\n }\n\n for (const call of queuedMaps) {\n call.callee = t.cloneNode(mapPipelineIdentifier);\n replacedQueuedMapCount += 1;\n }\n for (const { call, kind, mapped } of reorderCalls) {\n call.callee = t.cloneNode(\n kind === \"reverse\" ? structuralReorderIdentifier : structuralSortIdentifier,\n );\n if (kind === \"reverse\") {\n reorderCount += 1;\n if (mapped) replacedMapReorderCount += 1;\n } else {\n sortCount += 1;\n if (mapped) replacedMapSortCount += 1;\n }\n }\n structuralState = state.index;\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n reorderCount,\n sortCount,\n replacedMapReorderCount,\n replacedMapSortCount,\n replacedQueuedMapCount,\n };\n}\n\nfunction rewriteQueuedKeyedArrayMapReorderHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n mapReorderIdentifier: t.Identifier,\n reorderIdentifier: t.Identifier,\n sortIdentifier: t.Identifier,\n structuralReorderIdentifier: t.Identifier,\n structuralSortIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n mapCount: number;\n mapReorderCount: number;\n mapSortCount: number;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n mapCount: 0,\n mapReorderCount: 0,\n mapSortCount: 0,\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n let mapReorderCount = 0;\n let mapSortCount = 0;\n\n traverse(file, {\n BlockStatement(path) {\n let mappedReorderState: number | undefined;\n let pendingMaps: Array<{\n count: number;\n stateIndex: number;\n updater: t.ArrowFunctionExpression & { body: t.CallExpression };\n }> = [];\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n\n if (\n t.isCallExpression(updater.body) &&\n t.isIdentifier(updater.body.callee, { name: mapUpdateIdentifier.name }) &&\n updater.body.arguments.length === 2\n ) {\n const pipeline = updater.body.arguments[1];\n let pipelineMapCount = 0;\n if (\n t.isArrowFunctionExpression(pipeline) &&\n pipeline.params.length === 2 &&\n t.isIdentifier(pipeline.params[1])\n ) {\n const applyMapName = pipeline.params[1].name;\n t.traverseFast(pipeline.body, (node) => {\n if (t.isCallExpression(node) && t.isIdentifier(node.callee, { name: applyMapName })) {\n pipelineMapCount += 1;\n }\n });\n }\n if (pipelineMapCount > 0) {\n const candidate = {\n count: pipelineMapCount,\n stateIndex: state.index,\n updater: updater as t.ArrowFunctionExpression & { body: t.CallExpression },\n };\n pendingMaps =\n pendingMaps[0]?.stateIndex === state.index\n ? [...pendingMaps, candidate]\n : [candidate];\n if (mappedReorderState !== state.index) mappedReorderState = undefined;\n continue;\n }\n }\n\n let containsMappedReorder = false;\n const reorderCalls: Array<{\n call: t.CallExpression;\n kind: \"reverse\" | \"sort\";\n }> = [];\n let structural = false;\n t.traverseFast(updater.body, (node) => {\n if (!t.isCallExpression(node) || !t.isIdentifier(node.callee)) return;\n if (\n node.callee.name === structuralReorderIdentifier.name ||\n node.callee.name === structuralSortIdentifier.name\n ) {\n structural = true;\n } else if (node.callee.name === mapReorderIdentifier.name) {\n containsMappedReorder = true;\n } else if (node.callee.name === reorderIdentifier.name) {\n reorderCalls.push({ call: node, kind: \"reverse\" });\n } else if (node.callee.name === sortIdentifier.name) {\n reorderCalls.push({ call: node, kind: \"sort\" });\n }\n });\n if (structural) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n\n const hasPendingMaps = pendingMaps.length > 0 && pendingMaps[0].stateIndex === state.index;\n if (containsMappedReorder && reorderCalls.length === 0) {\n // A mapped reorder can start the next adjacent segment only when no unlinked map setter\n // sits before it. The later reorder-to-map pass handles proven maps after an existing\n // mapped reorder; an earlier unproven map must not be skipped when establishing lineage.\n mappedReorderState = pendingMaps.length === 0 ? state.index : undefined;\n pendingMaps = [];\n continue;\n }\n if (\n containsMappedReorder ||\n reorderCalls.length === 0 ||\n (!hasPendingMaps && mappedReorderState !== state.index)\n ) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n\n if (hasPendingMaps) {\n for (const candidate of pendingMaps) {\n candidate.updater.body.callee = t.cloneNode(queuedMapPipelineIdentifier);\n mapCount += candidate.count;\n }\n }\n for (const { call, kind } of reorderCalls) {\n call.callee = t.cloneNode(mapReorderIdentifier);\n if (kind === \"reverse\") mapReorderCount += 1;\n else mapSortCount += 1;\n }\n mappedReorderState = state.index;\n pendingMaps = [];\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n mapReorderCount,\n mapSortCount,\n };\n}\n\nfunction rewriteKeyedArraySortHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const returned = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !returned ||\n !t.isCallExpression(returned) ||\n returned.arguments.length > 1 ||\n !t.isMemberExpression(returned.callee) ||\n returned.callee.computed ||\n !t.isIdentifier(returned.callee.object, { name: updater.params[0].name }) ||\n !t.isIdentifier(returned.callee.property, { name: \"toSorted\" })\n ) {\n return;\n }\n const comparator = returned.arguments[0];\n if (\n comparator &&\n !t.isArrowFunctionExpression(comparator) &&\n !t.isFunctionExpression(comparator)\n ) {\n return;\n }\n if (comparator && validateCollectionCallback(comparator, \"toSorted\", safeGlobals)) return;\n\n const previous = t.cloneNode(updater.params[0]);\n const method = path.scope.generateUidIdentifier(\"farmToSorted\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"toSorted\")),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n ...(comparator ? [t.cloneNode(comparator, true)] : []),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\nfunction rewriteKeyedArraySliceHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isCallExpression(updateExpression) ||\n updateExpression.arguments.length < 1 ||\n updateExpression.arguments.length > 2 ||\n !t.isMemberExpression(updateExpression.callee) ||\n updateExpression.callee.computed ||\n !t.isIdentifier(updateExpression.callee.object, { name: updater.params[0].name }) ||\n !t.isIdentifier(updateExpression.callee.property, { name: \"slice\" })\n ) {\n return;\n }\n const bounds: t.Expression[] = [];\n for (const argument of updateExpression.arguments) {\n if (!t.isExpression(argument)) return;\n if (validateKeyedArrayPositionExpression(argument, safeGlobals) !== undefined) return;\n bounds.push(argument);\n }\n if (bounds.length === 1 && staticSliceIndex(bounds[0]) === 0) return;\n\n const previous = t.cloneNode(updater.params[0]);\n const sliceMethod = path.scope.generateUidIdentifier(\"farmSlice\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(sliceMethod),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"slice\")),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(sliceMethod),\n ...bounds.map((bound) => t.cloneNode(bound, true)),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\nfunction rewriteKeyedArrayFilterHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isCallExpression(updateExpression) ||\n updateExpression.arguments.length !== 1 ||\n !t.isMemberExpression(updateExpression.callee) ||\n updateExpression.callee.computed ||\n !t.isIdentifier(updateExpression.callee.object, {\n name: updater.params[0].name,\n }) ||\n !t.isIdentifier(updateExpression.callee.property, { name: \"filter\" })\n ) {\n return;\n }\n const predicate = normalizeSafeKeyedFilterPredicate(\n updateExpression.arguments[0],\n safeGlobals,\n );\n if (!predicate) return;\n\n const previous = t.cloneNode(updater.params[0]);\n const filterMethod = path.scope.generateUidIdentifier(\"farmFilter\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(filterMethod),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"filter\")),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(filterMethod),\n t.cloneNode(predicate, true),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\ntype KeyedCollectionTargetKind = \"set\" | \"map\";\n\ninterface PreparedKeyedCollectionUpdater {\n updater: t.ArrowFunctionExpression | t.FunctionExpression;\n mutations: number;\n}\n\nfunction collectionConstructorName(kind: KeyedCollectionTargetKind): \"Set\" | \"Map\" {\n return kind === \"set\" ? \"Set\" : \"Map\";\n}\n\nfunction isCollectionConstruction(\n expression: t.Expression | null | undefined,\n kind: KeyedCollectionTargetKind,\n previous?: t.Identifier,\n): expression is t.NewExpression {\n if (\n !t.isNewExpression(expression) ||\n !t.isIdentifier(expression.callee, {\n name: collectionConstructorName(kind),\n })\n ) {\n return false;\n }\n if (!previous) return true;\n return (\n expression.arguments.length === 1 &&\n t.isIdentifier(expression.arguments[0], { name: previous.name })\n );\n}\n\nfunction collectionStateInitializerIsOwned(\n initialValue: t.Expression | undefined,\n kind: KeyedCollectionTargetKind,\n constructorIsGlobal: boolean,\n): boolean {\n if (!initialValue || !constructorIsGlobal) return false;\n if (isCollectionConstruction(initialValue, kind)) return true;\n if (!t.isArrowFunctionExpression(initialValue) && !t.isFunctionExpression(initialValue)) {\n return false;\n }\n if (t.isBlockStatement(initialValue.body) && initialValue.body.body.length !== 1) return false;\n const value = returnedExpression(initialValue);\n return Boolean(value && isCollectionConstruction(value, kind));\n}\n\nfunction collectionStateHasOnlyOwnedReads(\n root: t.JSXElement,\n state: StateBinding,\n kind: KeyedCollectionTargetKind,\n): boolean {\n const file = expressionFile(t.cloneNode(root, true));\n let valid = true;\n const readMethods = kind === \"set\" ? new Set([\"has\"]) : new Set([\"get\", \"has\"]);\n traverse(file, {\n ReferencedIdentifier(path) {\n if (\n !valid ||\n !t.isIdentifier(path.node) ||\n path.node.name !== state.valueName ||\n path.scope.hasBinding(path.node.name)\n ) {\n return;\n }\n const parent = path.parentPath;\n if (\n parent.isNewExpression() &&\n t.isIdentifier(parent.node.callee, {\n name: collectionConstructorName(kind),\n }) &&\n parent.node.arguments.length === 1 &&\n parent.node.arguments[0] === path.node\n ) {\n return;\n }\n if (\n !parent.isMemberExpression() ||\n parent.node.object !== path.node ||\n parent.node.computed ||\n !t.isIdentifier(parent.node.property)\n ) {\n valid = false;\n path.stop();\n return;\n }\n const property = parent.node.property.name;\n if (property === \"size\") return;\n const call = parent.parentPath;\n if (\n !readMethods.has(property) ||\n !call?.isCallExpression() ||\n call.node.callee !== parent.node\n ) {\n valid = false;\n path.stop();\n }\n },\n });\n return valid;\n}\n\nfunction collectionMutationOperation(\n kind: KeyedCollectionTargetKind,\n method: string,\n): \"set-add\" | \"set-delete\" | \"map-set\" | \"map-delete\" | undefined {\n if (kind === \"set\" && method === \"add\") return \"set-add\";\n if (kind === \"set\" && method === \"delete\") return \"set-delete\";\n if (kind === \"map\" && method === \"set\") return \"map-set\";\n if (kind === \"map\" && method === \"delete\") return \"map-delete\";\n return undefined;\n}\n\nfunction collectionMutationArgumentsAreValid(\n operation: ReturnType<typeof collectionMutationOperation>,\n args: readonly (t.Expression | t.JSXNamespacedName | t.ArgumentPlaceholder | t.SpreadElement)[],\n): args is readonly t.Expression[] {\n if (!operation || args.some((argument) => !t.isExpression(argument))) return false;\n return operation === \"map-set\" ? args.length === 2 : args.length === 1;\n}\n\nfunction prepareKeyedCollectionUpdater(\n updater: t.ArrowFunctionExpression | t.FunctionExpression,\n kind: KeyedCollectionTargetKind,\n updateHelper: t.Identifier,\n mutationHelper: t.Identifier,\n): PreparedKeyedCollectionUpdater | undefined {\n if (\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return undefined;\n }\n const previous = updater.params[0];\n\n if (t.isExpression(updater.body)) {\n if (\n !t.isCallExpression(updater.body) ||\n !t.isMemberExpression(updater.body.callee) ||\n updater.body.callee.computed ||\n !t.isIdentifier(updater.body.callee.property)\n ) {\n return undefined;\n }\n const operation = collectionMutationOperation(kind, updater.body.callee.property.name);\n if (\n (operation !== \"set-add\" && operation !== \"map-set\") ||\n !collectionMutationArgumentsAreValid(operation, updater.body.arguments) ||\n !isCollectionConstruction(updater.body.callee.object, kind, previous)\n ) {\n return undefined;\n }\n const collection = uniqueLocalIdentifier(\"_farmCollection\", [updater]);\n const body = t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(collection),\n t.cloneNode(updater.body.callee.object, true),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(updateHelper), [\n t.cloneNode(previous),\n t.callExpression(t.cloneNode(mutationHelper), [\n t.cloneNode(collection),\n t.memberExpression(t.cloneNode(collection), t.cloneNode(updater.body.callee.property)),\n t.stringLiteral(operation),\n ...updater.body.arguments.map(\n (argument) => t.cloneNode(argument, true) as t.Expression,\n ),\n ]),\n t.stringLiteral(kind),\n ]),\n ),\n ]);\n return {\n updater: t.arrowFunctionExpression([t.cloneNode(previous)], body),\n mutations: 1,\n };\n }\n\n const cloned = t.cloneNode(updater, true);\n const file = expressionFile(cloned);\n let functionPath: NodePath<t.ArrowFunctionExpression | t.FunctionExpression> | undefined;\n traverse(file, {\n Function(path) {\n if (functionPath) return;\n if (path.isArrowFunctionExpression() || path.isFunctionExpression()) {\n functionPath = path;\n }\n },\n });\n if (!functionPath || !t.isBlockStatement(functionPath.node.body)) return undefined;\n const clonedPrevious = functionPath.node.params[0];\n if (!t.isIdentifier(clonedPrevious)) return undefined;\n\n let collectionDeclaration: NodePath<t.VariableDeclarator> | undefined;\n const updaterBody = functionPath.get(\"body\");\n if (!updaterBody.isBlockStatement()) return undefined;\n for (const statement of updaterBody.get(\"body\")) {\n if (!statement.isVariableDeclaration({ kind: \"const\" })) continue;\n for (const declaration of statement.get(\"declarations\")) {\n if (\n declaration.isVariableDeclarator() &&\n t.isIdentifier(declaration.node.id) &&\n t.isExpression(declaration.node.init) &&\n isCollectionConstruction(declaration.node.init, kind, clonedPrevious)\n ) {\n if (collectionDeclaration) return undefined;\n collectionDeclaration = declaration;\n }\n }\n }\n if (!collectionDeclaration || !t.isIdentifier(collectionDeclaration.node.id)) return undefined;\n if (collectionDeclaration.scope.getBinding(collectionConstructorName(kind))) return undefined;\n const collectionName = collectionDeclaration.node.id.name;\n const collectionBinding = collectionDeclaration.scope.getBinding(collectionName);\n const previousBinding = functionPath.scope.getBinding(clonedPrevious.name);\n if (!collectionBinding || !previousBinding) return undefined;\n\n let valid = true;\n let mutations = 0;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!valid) return;\n const binding = path.scope.getBinding(path.node.name);\n const belongsToUpdater = path.getFunctionParent()?.node === functionPath?.node;\n if (binding === collectionBinding) {\n if (!belongsToUpdater) {\n valid = false;\n path.stop();\n return;\n }\n const parent = path.parentPath;\n if (parent.isReturnStatement() && parent.node.argument === path.node) return;\n if (\n !parent.isMemberExpression() ||\n parent.node.object !== path.node ||\n parent.node.computed ||\n !t.isIdentifier(parent.node.property)\n ) {\n valid = false;\n path.stop();\n return;\n }\n const method = parent.node.property.name;\n if (method === \"size\") return;\n const call = parent.parentPath;\n if (!call?.isCallExpression() || call.node.callee !== parent.node) {\n valid = false;\n path.stop();\n return;\n }\n const operation = collectionMutationOperation(kind, method);\n const read = kind === \"set\" ? method === \"has\" : method === \"get\" || method === \"has\";\n if (read) return;\n if (\n !collectionMutationArgumentsAreValid(operation, call.node.arguments) ||\n (call.parentPath.isMemberExpression() && call.parentPath.node.object === call.node)\n ) {\n valid = false;\n path.stop();\n return;\n }\n mutations += 1;\n return;\n }\n if (binding === previousBinding) {\n if (!belongsToUpdater) {\n valid = false;\n path.stop();\n return;\n }\n const parent = path.parentPath;\n if (parent.isReturnStatement() && parent.node.argument === path.node) return;\n if (\n parent.isNewExpression() &&\n parent.node.arguments.length === 1 &&\n parent.node.arguments[0] === path.node &&\n t.isIdentifier(parent.node.callee, {\n name: collectionConstructorName(kind),\n })\n ) {\n return;\n }\n if (\n parent.isMemberExpression() &&\n parent.node.object === path.node &&\n !parent.node.computed &&\n t.isIdentifier(parent.node.property)\n ) {\n const method = parent.node.property.name;\n const call = parent.parentPath;\n if (\n method === \"size\" ||\n ((kind === \"set\" ? method === \"has\" : method === \"get\" || method === \"has\") &&\n call?.isCallExpression() &&\n call.node.callee === parent.node)\n ) {\n return;\n }\n }\n valid = false;\n path.stop();\n }\n },\n ReturnStatement(path) {\n if (!valid || path.getFunctionParent()?.node !== functionPath?.node || !path.node.argument) {\n return;\n }\n const value = path.node.argument;\n const returnsOwnedCollection =\n (t.isIdentifier(value) &&\n (path.scope.getBinding(value.name) === collectionBinding ||\n path.scope.getBinding(value.name) === previousBinding)) ||\n isCollectionConstruction(value, kind);\n if (!returnsOwnedCollection) {\n valid = false;\n path.stop();\n }\n },\n });\n if (!valid || mutations === 0) return undefined;\n\n traverse(file, {\n CallExpression(path) {\n if (path.getFunctionParent()?.node !== functionPath?.node) return;\n const callee = path.node.callee;\n if (\n !t.isMemberExpression(callee) ||\n callee.computed ||\n !t.isIdentifier(callee.object, { name: collectionName }) ||\n path.scope.getBinding(collectionName) !== collectionBinding ||\n !t.isIdentifier(callee.property)\n ) {\n return;\n }\n const operation = collectionMutationOperation(kind, callee.property.name);\n if (!collectionMutationArgumentsAreValid(operation, path.node.arguments)) return;\n path.replaceWith(\n t.callExpression(t.cloneNode(mutationHelper), [\n t.cloneNode(callee.object),\n t.memberExpression(t.cloneNode(callee.object), t.cloneNode(callee.property)),\n t.stringLiteral(operation!),\n ...path.node.arguments.map((argument) => t.cloneNode(argument, true) as t.Expression),\n ]),\n );\n path.skip();\n },\n ReturnStatement(path) {\n if (path.getFunctionParent()?.node !== functionPath?.node || !path.node.argument) return;\n path.node.argument = t.callExpression(t.cloneNode(updateHelper), [\n t.cloneNode(clonedPrevious),\n t.cloneNode(path.node.argument, true),\n t.stringLiteral(kind),\n ]);\n },\n });\n const prepared = (file.program.body[0] as t.ExpressionStatement).expression;\n return t.isArrowFunctionExpression(prepared) || t.isFunctionExpression(prepared)\n ? { updater: prepared, mutations }\n : undefined;\n}\n\nfunction rewriteKeyedCollectionUpdateHints(\n root: t.JSXElement,\n targetKinds: ReadonlyMap<number, KeyedCollectionTargetKind>,\n states: readonly StateBinding[],\n statesBySetter: ReadonlyMap<string, StateBinding>,\n updateHelper: t.Identifier,\n mutationHelper: t.Identifier,\n globalCollections: ReadonlySet<string>,\n): { root: t.JSXElement; count: number } {\n if (targetKinds.size === 0) return { root: t.cloneNode(root, true), count: 0 };\n const file = expressionFile(t.cloneNode(root, true));\n let count = 0;\n\n for (const [stateIndex, kind] of targetKinds) {\n const state = states[stateIndex];\n if (\n !state ||\n !collectionStateInitializerIsOwned(\n state.initialValue,\n kind,\n globalCollections.has(collectionConstructorName(kind)),\n ) ||\n !collectionStateHasOnlyOwnedReads(root, state, kind)\n ) {\n continue;\n }\n\n const replacements = new Map<t.CallExpression, PreparedKeyedCollectionUpdater>();\n let valid = true;\n traverse(file, {\n CallExpression(path) {\n if (!valid) return;\n const callee = path.get(\"callee\");\n if (\n !callee.isIdentifier({ name: state.setterName }) ||\n callee.scope.hasBinding(callee.node.name) ||\n statesBySetter.get(callee.node.name)?.index !== stateIndex\n ) {\n return;\n }\n if (path.node.arguments.length !== 1 || !t.isExpression(path.node.arguments[0])) {\n valid = false;\n path.stop();\n return;\n }\n const update = path.node.arguments[0];\n if (path.scope.getBinding(collectionConstructorName(kind))) {\n valid = false;\n path.stop();\n return;\n }\n if (isCollectionConstruction(update, kind)) return;\n if (!t.isArrowFunctionExpression(update) && !t.isFunctionExpression(update)) {\n valid = false;\n path.stop();\n return;\n }\n const prepared = prepareKeyedCollectionUpdater(update, kind, updateHelper, mutationHelper);\n if (!prepared) {\n valid = false;\n path.stop();\n return;\n }\n replacements.set(path.node, prepared);\n },\n });\n if (!valid || replacements.size === 0) continue;\n\n traverse(file, {\n CallExpression(path) {\n const prepared = replacements.get(path.node);\n if (!prepared) return;\n path.node.arguments[0] = t.cloneNode(prepared.updater, true);\n count += prepared.mutations;\n path.skip();\n },\n });\n }\n\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n };\n}\n\nfunction rewriteStateAccess(\n expression: t.Expression,\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.Expression {\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state) return;\n callee.replaceWith(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"set\"),\n ),\n );\n },\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n path.replaceWith(\n t.callExpression(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"get\"),\n ),\n [],\n ),\n );\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression;\n}\n\nfunction cleanJsxText(value: string): string {\n const lines = value.replace(/\\r/g, \"\").split(\"\\n\");\n let result = \"\";\n for (let index = 0; index < lines.length; index += 1) {\n const lastNonEmptyLine = lines.slice(index + 1).every((line) => line.trim().length === 0);\n let line = lines[index].replace(/\\t/g, \" \").replace(/ +/g, \" \");\n if (index > 0) line = line.replace(/^ /, \"\");\n if (!lastNonEmptyLine) line = line.replace(/ $/, \"\");\n if (line) result += line + (!lastNonEmptyLine ? \" \" : \"\");\n }\n return result;\n}\n\nfunction isTextExpression(\n expression: t.Expression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n if (collectStateDependencies(expression, statesByValue).length > 0) {\n return validateDerivedExpression(expression, safeGlobals) === undefined;\n }\n\n let supported = true;\n traverse(expressionFile(cloneExpression(expression)), {\n CallExpression(path) {\n if (!isSafeCompilerCall(path.node, safeGlobals)) {\n supported = false;\n path.stop();\n }\n },\n OptionalCallExpression(path) {\n supported = false;\n path.stop();\n },\n JSXElement(path) {\n supported = false;\n path.stop();\n },\n JSXFragment(path) {\n supported = false;\n path.stop();\n },\n ObjectExpression(path) {\n supported = false;\n path.stop();\n },\n Function(path) {\n supported = false;\n path.stop();\n },\n });\n return supported;\n}\n\nfunction jsxAttributeName(attribute: t.JSXAttribute): string | undefined {\n return t.isJSXIdentifier(attribute.name) ? attribute.name.name : undefined;\n}\n\nfunction jsxAttribute(element: t.JSXElement, name: string): t.JSXAttribute | undefined {\n return element.openingElement.attributes.find(\n (attribute): attribute is t.JSXAttribute =>\n t.isJSXAttribute(attribute) && jsxAttributeName(attribute) === name,\n );\n}\n\nfunction staticJsxAttributeString(attribute: t.JSXAttribute | undefined): string | undefined {\n if (!attribute?.value) return attribute ? \"\" : undefined;\n if (t.isStringLiteral(attribute.value)) return attribute.value.value;\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n t.isStringLiteral(attribute.value.expression)\n ) {\n return attribute.value.expression.value;\n }\n return undefined;\n}\n\nfunction controlledSelectHasDynamicOptions(element: t.JSXElement): boolean {\n let dynamic = false;\n t.traverseFast(element, (node) => {\n if (dynamic || !t.isJSXElement(node)) return;\n const tag = node.openingElement.name;\n if (!t.isJSXIdentifier(tag) || (tag.name !== \"option\" && tag.name !== \"optgroup\")) return;\n dynamic = node.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)),\n );\n });\n return dynamic;\n}\n\ninterface ConditionalBlockShape {\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n branches: t.JSXElement[];\n}\n\nfunction isEmptyConditionalBranch(expression: t.Expression): boolean {\n return t.isNullLiteral(expression) || t.isBooleanLiteral(expression, { value: false });\n}\n\nfunction conditionalBlockShape(expression: t.Expression): ConditionalBlockShape | null {\n if (\n t.isLogicalExpression(expression, { operator: \"&&\" }) &&\n t.isExpression(expression.left) &&\n t.isJSXElement(expression.right)\n ) {\n return {\n test: expression.left,\n logical: true,\n truthy: expression.right,\n branches: [expression.right],\n };\n }\n if (!t.isConditionalExpression(expression)) return null;\n const branches = [expression.consequent, expression.alternate];\n if (\n !branches.every((branch) => t.isJSXElement(branch) || isEmptyConditionalBranch(branch)) ||\n !branches.some((branch) => t.isJSXElement(branch))\n ) {\n return null;\n }\n return {\n test: expression.test,\n logical: false,\n truthy: t.isJSXElement(expression.consequent) ? expression.consequent : undefined,\n falsy: t.isJSXElement(expression.alternate) ? expression.alternate : undefined,\n branches: branches.filter((branch): branch is t.JSXElement => t.isJSXElement(branch)),\n };\n}\n\nfunction isMapCall(expression: t.Expression): expression is t.CallExpression {\n return (\n t.isCallExpression(expression) &&\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isExpression(expression.callee.object) &&\n t.isIdentifier(expression.callee.property, { name: \"map\" })\n );\n}\n\nfunction returnedExpression(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n): t.Expression | undefined {\n if (t.isExpression(callback.body)) return callback.body;\n if (callback.body.body.length !== 1 || !t.isReturnStatement(callback.body.body[0])) {\n return undefined;\n }\n const value = callback.body.body[0].argument;\n return value && t.isExpression(value) ? value : undefined;\n}\n\nconst SAFE_COLLECTION_PIPELINE_METHODS = new Set([\"filter\", \"slice\", \"toReversed\", \"toSorted\"]);\n\nfunction collectionPipelineMethod(expression: t.Expression): string | undefined {\n if (\n !t.isCallExpression(expression) ||\n !t.isMemberExpression(expression.callee) ||\n expression.callee.computed ||\n !t.isExpression(expression.callee.object) ||\n !t.isIdentifier(expression.callee.property)\n ) {\n return undefined;\n }\n return SAFE_COLLECTION_PIPELINE_METHODS.has(expression.callee.property.name)\n ? expression.callee.property.name\n : undefined;\n}\n\nfunction validateCollectionCallback(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n method: \"filter\" | \"toSorted\",\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n const expectedParameters = method === \"filter\" ? \"one item and an optional index\" : \"two items\";\n const validParameterCount =\n method === \"filter\"\n ? callback.params.length >= 1 && callback.params.length <= 2\n : callback.params.length === 2;\n if (\n callback.async ||\n callback.generator ||\n !validParameterCount ||\n callback.params.some((parameter) => !t.isIdentifier(parameter))\n ) {\n return `${method} callbacks must be synchronous and use ${expectedParameters}`;\n }\n if (containsDirectHookCall(callback)) {\n return `Hooks cannot be called inside a ${method} callback`;\n }\n const value = returnedExpression(callback);\n if (!value) return `${method} callbacks must return one expression`;\n const unsupported = validateDerivedExpression(value, safeGlobals);\n return unsupported ? `${method} callbacks cannot use ${unsupported}` : undefined;\n}\n\nfunction validateCollectionPipeline(\n expression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n const method = collectionPipelineMethod(expression);\n if (!method || !t.isCallExpression(expression)) {\n return validateDerivedExpression(expression, safeGlobals);\n }\n\n const source = (expression.callee as t.MemberExpression).object as t.Expression;\n const sourceUnsupported = collectionPipelineMethod(source)\n ? validateCollectionPipeline(source, safeGlobals)\n : validateDerivedExpression(source, safeGlobals);\n if (sourceUnsupported) return sourceUnsupported;\n\n if (method === \"filter\") {\n if (\n expression.arguments.length !== 1 ||\n (!t.isArrowFunctionExpression(expression.arguments[0]) &&\n !t.isFunctionExpression(expression.arguments[0]))\n ) {\n return \"filter requires one inline callback\";\n }\n return validateCollectionCallback(expression.arguments[0], \"filter\", safeGlobals);\n }\n\n if (method === \"toSorted\") {\n if (expression.arguments.length === 0) return undefined;\n if (\n expression.arguments.length !== 1 ||\n (!t.isArrowFunctionExpression(expression.arguments[0]) &&\n !t.isFunctionExpression(expression.arguments[0]))\n ) {\n return \"toSorted requires an optional inline comparator\";\n }\n return validateCollectionCallback(expression.arguments[0], \"toSorted\", safeGlobals);\n }\n\n const maximumArguments = method === \"slice\" ? 2 : 0;\n if (expression.arguments.length > maximumArguments) {\n return `${method} accepts at most ${maximumArguments} compiler-safe arguments`;\n }\n for (const argument of expression.arguments) {\n if (!t.isExpression(argument)) return `${method} does not support spread arguments`;\n const unsupported = validateDerivedExpression(argument, safeGlobals);\n if (unsupported) return `${method} arguments cannot use ${unsupported}`;\n }\n return undefined;\n}\n\nfunction containsDirectHookCall(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n): boolean {\n let found = false;\n traverse(expressionFile(t.cloneNode(callback, true)), {\n CallExpression(path) {\n const callee = path.node.callee;\n const name = t.isIdentifier(callee)\n ? callee.name\n : t.isMemberExpression(callee) && !callee.computed && t.isIdentifier(callee.property)\n ? callee.property.name\n : \"\";\n if (/^use[A-Z0-9]/.test(name)) {\n found = true;\n path.stop();\n }\n },\n });\n return found;\n}\n\nfunction jsxKeyExpression(element: t.JSXElement): t.Expression | undefined {\n for (const attribute of element.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name, { name: \"key\" })) {\n continue;\n }\n if (t.isStringLiteral(attribute.value)) return t.stringLiteral(attribute.value.value);\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n )\n return attribute.value.expression;\n }\n return undefined;\n}\n\nfunction validateKeyFunction(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n keyExpression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n if (\n callback.async ||\n callback.generator ||\n callback.params.length < 1 ||\n callback.params.length > 2 ||\n !t.isIdentifier(callback.params[0]) ||\n (callback.params[1] !== undefined && !t.isIdentifier(callback.params[1]))\n ) {\n return \"keyed list callbacks must be synchronous and use item and optional index identifiers\";\n }\n const item = callback.params[0].name;\n const index = t.isIdentifier(callback.params[1]) ? callback.params[1].name : undefined;\n if (index && referencesIdentifier(keyExpression, index)) {\n return \"keyed list keys cannot depend on the array index\";\n }\n if (!referencesIdentifier(keyExpression, item)) {\n return \"keyed list keys must depend on the mapped item\";\n }\n const unsupported = validateDerivedExpression(keyExpression, safeGlobals);\n return unsupported ? `keyed list keys cannot use ${unsupported}` : undefined;\n}\n\nfunction isPublicListElement(element: t.JSXElement, listNames: ReadonlySet<string>): boolean {\n const name = element.openingElement.name;\n return t.isJSXIdentifier(name) && listNames.has(name.name);\n}\n\nfunction meaningfulJsxChildren(element: t.JSXElement): t.JSXElement[\"children\"] {\n return element.children.filter((child) => {\n if (t.isJSXText(child)) return child.value.trim().length > 0;\n return !(t.isJSXExpressionContainer(child) && t.isJSXEmptyExpression(child.expression));\n });\n}\n\nfunction analyzeMapList(\n expression: t.CallExpression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): { dependencies?: number[]; reason?: string } {\n const callee = expression.callee as t.MemberExpression;\n const collection = callee.object as t.Expression;\n const collectionUnsupported = validateCollectionPipeline(collection, safeGlobals);\n if (collectionUnsupported) {\n return {\n reason: `keyed list collection cannot use ${collectionUnsupported}`,\n };\n }\n if (\n expression.arguments.length !== 1 ||\n (!t.isArrowFunctionExpression(expression.arguments[0]) &&\n !t.isFunctionExpression(expression.arguments[0]))\n ) {\n return { reason: \"keyed list map must use one inline render callback\" };\n }\n const callback = expression.arguments[0];\n if (containsDirectHookCall(callback)) {\n return {\n reason: \"Hooks cannot be called directly inside a keyed list callback\",\n };\n }\n const row = returnedExpression(callback);\n if (!row || !t.isJSXElement(row)) {\n return { reason: \"keyed list map callbacks must return one React element\" };\n }\n const key = jsxKeyExpression(row);\n if (!key)\n return {\n reason: \"automatically compiled lists require an explicit item key\",\n };\n const keyReason = validateKeyFunction(callback, key, safeGlobals);\n if (keyReason) return { reason: keyReason };\n return { dependencies: collectStateDependencies(expression, statesByValue) };\n}\n\nfunction listAttributeExpression(element: t.JSXElement, name: string): t.Expression | undefined {\n for (const attribute of element.openingElement.attributes) {\n if (\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name, { name }) &&\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n return attribute.value.expression;\n }\n }\n return undefined;\n}\n\nfunction analyzePublicList(\n element: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): { dependencies?: number[]; reason?: string } {\n if (element.openingElement.attributes.some((attribute) => t.isJSXSpreadAttribute(attribute))) {\n return {\n reason: \"compiled List boundaries do not support JSX attribute spreads\",\n };\n }\n const each = listAttributeExpression(element, \"each\");\n const by = listAttributeExpression(element, \"by\");\n if (!each || !by) return { reason: \"List requires explicit each and by properties\" };\n const collectionUnsupported = validateCollectionPipeline(each, safeGlobals);\n if (collectionUnsupported) {\n return { reason: `List each cannot use ${collectionUnsupported}` };\n }\n if (!t.isArrowFunctionExpression(by) && !t.isFunctionExpression(by)) {\n return { reason: \"compiled List by must use an inline key function\" };\n }\n const key = returnedExpression(by);\n if (!key) return { reason: \"compiled List by must return one key expression\" };\n const keyReason = validateKeyFunction(by, key, safeGlobals);\n if (keyReason) return { reason: keyReason };\n\n const children = meaningfulJsxChildren(element);\n if (\n children.length !== 1 ||\n !t.isJSXExpressionContainer(children[0]) ||\n t.isJSXEmptyExpression(children[0].expression) ||\n (!t.isArrowFunctionExpression(children[0].expression) &&\n !t.isFunctionExpression(children[0].expression))\n ) {\n return {\n reason: \"compiled List children must use one inline render function\",\n };\n }\n const render = children[0].expression;\n if (!returnedExpression(render)) {\n return { reason: \"compiled List children must return one React element\" };\n }\n if (containsDirectHookCall(render)) {\n return { reason: \"Hooks cannot be called directly inside List children\" };\n }\n return { dependencies: collectStateDependencies(element, statesByValue) };\n}\n\ninterface KeyedRowsShape {\n collection: t.Expression;\n collectionDependency?: number;\n structureDependencies: number[];\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n row: t.JSXElement;\n dependencies: number[];\n bindings: PendingKeyedRowBinding[];\n events: PendingKeyedRowEvent[];\n conditionals: PendingKeyedRowConditional[];\n rowReason?: string;\n syntax: \"map\" | \"list\";\n}\n\nfunction validateKeyedRowEventHandler(\n handler: t.ArrowFunctionExpression | t.FunctionExpression,\n): string | undefined {\n let reason: string | undefined;\n traverse(expressionFile(t.cloneNode(handler, true)), {\n MetaProperty(path) {\n reason = \"meta properties\";\n path.stop();\n },\n ReferencedIdentifier(path) {\n if (path.node.name !== \"arguments\") return;\n reason = \"arguments access\";\n path.stop();\n },\n Super(path) {\n reason = \"super access\";\n path.stop();\n },\n ThisExpression(path) {\n reason = \"this access\";\n path.stop();\n },\n });\n return reason;\n}\n\nfunction stabilizeDeferredEventCurrentTarget(\n handler: t.ArrowFunctionExpression | t.FunctionExpression,\n compilerSetters: ReadonlySet<string>,\n): t.ArrowFunctionExpression | t.FunctionExpression {\n const cloned = t.cloneNode(handler, true);\n const eventParameter = cloned.params[0];\n if (!t.isIdentifier(eventParameter) || compilerSetters.size === 0) return cloned;\n const file = expressionFile(cloned);\n const expression = (file.program.body[0] as t.ExpressionStatement).expression;\n if (!t.isArrowFunctionExpression(expression) && !t.isFunctionExpression(expression)) {\n return cloned;\n }\n const rootBindingIdentifier = expression.params[0];\n const snapshots: Array<{ identifier: t.Identifier; value: t.Expression }> = [];\n const snapshotsByProperty = new Map<string, t.Identifier>();\n const replaceCurrentTarget = (\n path: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n ) => {\n const property = path.node.property;\n const isCurrentTarget = path.node.computed\n ? t.isStringLiteral(property, { value: \"currentTarget\" })\n : t.isIdentifier(property, { name: \"currentTarget\" });\n if (!isCurrentTarget || !t.isIdentifier(path.node.object, { name: eventParameter.name }))\n return;\n const binding = path.scope.getBinding(eventParameter.name);\n if (!binding || binding.identifier !== rootBindingIdentifier) return;\n const setterCall = path.findParent(\n (parent) =>\n parent.isCallExpression() &&\n t.isIdentifier(parent.node.callee) &&\n compilerSetters.has(parent.node.callee.name),\n );\n if (!setterCall) return;\n const deferredFunction = path.findParent(\n (parent) => parent.isFunction() && parent.node !== expression,\n );\n if (!deferredFunction || !deferredFunction.findParent((parent) => parent === setterCall))\n return;\n\n const parent = path.parentPath;\n const propertyRead =\n (parent?.isMemberExpression() || parent?.isOptionalMemberExpression()) &&\n parent.node.object === path.node\n ? parent\n : path;\n const snapshotProperty =\n propertyRead === path\n ? \"element\"\n : propertyRead.node.computed\n ? t.isStringLiteral(propertyRead.node.property)\n ? propertyRead.node.property.value\n : `computed${snapshots.length}`\n : t.isIdentifier(propertyRead.node.property)\n ? propertyRead.node.property.name\n : `property${snapshots.length}`;\n let snapshot = snapshotsByProperty.get(snapshotProperty);\n if (!snapshot) {\n const suffix = snapshotProperty\n .replace(/[^A-Za-z0-9_$]/g, \" \")\n .replace(/(?:^|\\s+)([A-Za-z0-9_$])/g, (_match, character: string) =>\n character.toUpperCase(),\n )\n .replace(/\\s/g, \"\");\n snapshot = uniqueLocalIdentifier(`_farmCurrentTarget${suffix}`, [\n expression,\n ...snapshots.map((entry) => entry.identifier),\n ]);\n snapshotsByProperty.set(snapshotProperty, snapshot);\n snapshots.push({\n identifier: snapshot,\n value: t.cloneNode(propertyRead.node, true) as t.Expression,\n });\n }\n propertyRead.replaceWith(t.cloneNode(snapshot));\n propertyRead.skip();\n };\n traverse(file, {\n MemberExpression: replaceCurrentTarget,\n OptionalMemberExpression: replaceCurrentTarget,\n });\n if (snapshots.length === 0) return expression;\n\n const declarations = snapshots.map(({ identifier, value }) =>\n t.variableDeclaration(\"const\", [t.variableDeclarator(t.cloneNode(identifier), value)]),\n );\n if (t.isBlockStatement(expression.body)) {\n expression.body.body.unshift(...declarations);\n } else {\n expression.body = t.blockStatement([...declarations, t.returnStatement(expression.body)]);\n }\n return expression;\n}\n\nfunction stabilizeDeferredEventCurrentTargets(\n root: t.JSXElement,\n compilerSetters: ReadonlySet<string>,\n): t.JSXElement {\n const file = expressionFile(t.cloneNode(root, true));\n traverse(file, {\n JSXAttribute(path) {\n if (!t.isJSXIdentifier(path.node.name) || !/^on[A-Z]/.test(path.node.name.name)) return;\n const value = path.node.value;\n if (\n !t.isJSXExpressionContainer(value) ||\n (!t.isArrowFunctionExpression(value.expression) &&\n !t.isFunctionExpression(value.expression))\n ) {\n return;\n }\n value.expression = stabilizeDeferredEventCurrentTarget(value.expression, compilerSetters);\n },\n });\n const expression = (file.program.body[0] as t.ExpressionStatement).expression;\n return t.isJSXElement(expression) ? expression : t.cloneNode(root, true);\n}\n\nfunction analyzeKeyedRowTree(\n row: t.JSXElement,\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n safeGlobals: ReadonlySet<string>,\n compilerSetters: ReadonlySet<string>,\n keyedTargetReactiveByValue?: ReadonlyMap<string, StateBinding>,\n): {\n bindings?: PendingKeyedRowBinding[];\n events?: PendingKeyedRowEvent[];\n conditionals?: PendingKeyedRowConditional[];\n reason?: string;\n} {\n if (\n renderCallback.async ||\n renderCallback.generator ||\n renderCallback.params.length < 1 ||\n renderCallback.params.length > 2 ||\n !t.isIdentifier(renderCallback.params[0]) ||\n (renderCallback.params[1] !== undefined && !t.isIdentifier(renderCallback.params[1]))\n ) {\n return {\n reason: \"compiled keyed rows require item and optional index identifiers\",\n };\n }\n\n const bindings: PendingKeyedRowBinding[] = [];\n const events: PendingKeyedRowEvent[] = [];\n const conditionals: PendingKeyedRowConditional[] = [];\n const validateBindingExpression = (expression: t.Expression) =>\n validateDerivedExpression(\n expression,\n safeGlobals,\n keyedTargetReactiveByValue\n ? (call) =>\n isPotentialKeyedMembershipCall(call, keyedTargetReactiveByValue) ||\n isPotentialKeyedMapLookupCall(call, keyedTargetReactiveByValue)\n : undefined,\n );\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiled keyed rows support host elements only\";\n }\n if (tag.name === \"svg\") return \"compiled keyed rows do not support SVG yet\";\n const attributeNames = new Set(\n element.openingElement.attributes\n .filter((attribute): attribute is t.JSXAttribute => t.isJSXAttribute(attribute))\n .map(jsxAttributeName)\n .filter((name): name is string => name !== undefined),\n );\n const controlled = attributeNames.has(\"value\") || attributeNames.has(\"checked\");\n if (attributeNames.has(\"contentEditable\")) {\n return \"content-editable keyed rows require React ownership\";\n }\n if (tag.name === \"input\" && controlled) {\n const type = jsxAttribute(element, \"type\");\n const staticType = staticJsxAttributeString(type);\n if (type && staticType === undefined) {\n return \"controlled keyed row inputs require a static type\";\n }\n if (attributeNames.has(\"value\") && staticType?.toLowerCase() === \"file\") {\n return \"file inputs require React ownership\";\n }\n }\n if (tag.name === \"textarea\" && controlled && meaningfulJsxChildren(element).length > 0) {\n return \"controlled keyed row textareas cannot also use children\";\n }\n if (tag.name === \"select\" && controlled && controlledSelectHasDynamicOptions(element)) {\n return \"controlled keyed row selects require static options\";\n }\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return \"compiled keyed rows do not support JSX attribute spreads\";\n }\n const name = jsxAttributeName(attribute);\n if (!name) return \"compiled keyed rows do not support namespaced JSX attributes\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return `compiled keyed row ${name} requires React ownership`;\n }\n if (name === \"key\") continue;\n if (/^on[A-Z]/.test(name)) {\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n (!t.isArrowFunctionExpression(attribute.value.expression) &&\n !t.isFunctionExpression(attribute.value.expression))\n ) {\n return \"interactive compiled keyed rows require inline synchronous event handlers\";\n }\n const handler = attribute.value.expression;\n if (handler.async || handler.generator) {\n return \"interactive compiled keyed row handlers must be synchronous\";\n }\n if (containsDirectHookCall(handler)) {\n return \"Hooks cannot be called inside compiled keyed row handlers\";\n }\n const unsupported = validateKeyedRowEventHandler(handler);\n if (unsupported) {\n return `interactive compiled keyed row handlers cannot use ${unsupported}`;\n }\n events.push({\n id: events.length,\n path: [...path],\n name,\n value: stabilizeDeferredEventCurrentTarget(handler, compilerSetters),\n });\n continue;\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return \"compiled keyed row styles must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (\n !t.isObjectProperty(property) ||\n property.computed ||\n !t.isExpression(property.value)\n ) {\n return \"compiled keyed row styles do not support spreads, methods, or computed properties\";\n }\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!propertyName || (propertyName.includes(\"-\") && !propertyName.startsWith(\"--\"))) {\n return \"compiled keyed row style names must use camelCase or a CSS custom property\";\n }\n const unsupported = validateBindingExpression(property.value);\n if (unsupported) {\n return `compiled keyed row style ${propertyName} cannot use ${unsupported}`;\n }\n bindings.push({\n kind: \"style\",\n path: [...path],\n name: propertyName,\n value: cloneExpression(property.value),\n });\n }\n continue;\n }\n\n if (name === \"children\") return \"compiled keyed row children props are not supported yet\";\n const unsupported = validateBindingExpression(expression);\n if (unsupported) return `compiled keyed row ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n name,\n value: cloneExpression(expression),\n });\n }\n\n const meaningfulChildren = meaningfulJsxChildren(element);\n const conditionalChild = meaningfulChildren.find(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n conditionalBlockShape(child.expression) !== null,\n );\n if (conditionalChild && !t.isJSXEmptyExpression(conditionalChild.expression)) {\n if (meaningfulChildren.length !== 1) {\n return \"compiled keyed row conditionals must be the only child of a host container\";\n }\n const shape = conditionalBlockShape(conditionalChild.expression);\n if (!shape) return \"compiled keyed row conditional shape is not supported\";\n const testUnsupported = validateDerivedExpression(shape.test, safeGlobals);\n if (testUnsupported) {\n return `compiled keyed row conditional test cannot use ${testUnsupported}`;\n }\n const truthyAnalysis = shape.truthy\n ? analyzeHostConditionalTree(shape.truthy, safeGlobals)\n : { bindings: [] as PendingKeyedRowBinding[] };\n const falsyAnalysis = shape.falsy\n ? analyzeHostConditionalTree(shape.falsy, safeGlobals)\n : { bindings: [] as PendingKeyedRowBinding[] };\n if (truthyAnalysis.reason || falsyAnalysis.reason) {\n return (\n truthyAnalysis.reason ||\n falsyAnalysis.reason ||\n \"compiled keyed row conditional branch is not supported\"\n );\n }\n conditionals.push({\n id: conditionals.length,\n path: [...path],\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy ? t.cloneNode(shape.truthy, true) : undefined,\n falsy: shape.falsy ? t.cloneNode(shape.falsy, true) : undefined,\n truthyBindings: truthyAnalysis.bindings || [],\n falsyBindings: falsyAnalysis.bindings || [],\n });\n return undefined;\n }\n\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n if (element.children.some((child) => t.isJSXFragment(child))) {\n return \"compiled keyed rows do not support fragments yet\";\n }\n const expressions = element.children.filter(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression),\n );\n for (const child of expressions) {\n const unsupported = validateBindingExpression(child.expression as t.Expression);\n if (unsupported) return `compiled keyed row text cannot use ${unsupported}`;\n }\n if (nestedElements.length > 0 && expressions.length > 0) {\n return \"compiled keyed rows do not support dynamic text beside nested elements yet\";\n }\n if (nestedElements.length === 0 && expressions.length > 0) {\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n parts.push(cloneExpression(child.expression));\n }\n }\n bindings.push({\n kind: \"text\",\n path: [...path],\n value: t.arrayExpression(parts),\n });\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n return undefined;\n };\n\n const reason = visit(row, []);\n return reason ? { reason } : { bindings, events, conditionals };\n}\n\ninterface KeyedRowChildShape extends KeyedRowsShape {\n source: t.Expression | t.JSXElement;\n}\n\nfunction analyzeKeyedRowChild(\n child: t.JSXElement[\"children\"][number],\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n acceptUnsupportedRow = false,\n allowMembershipTargets = false,\n): KeyedRowChildShape | undefined {\n let collection: t.Expression;\n let keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n let renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n let row: t.JSXElement;\n let dependencies: number[];\n let syntax: \"map\" | \"list\";\n let source: t.Expression | t.JSXElement;\n\n if (\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n isMapCall(child.expression)\n ) {\n const result = analyzeMapList(child.expression, statesByValue, safeGlobals);\n if (result.reason) return undefined;\n const callback = child.expression.arguments[0];\n if (!t.isArrowFunctionExpression(callback) && !t.isFunctionExpression(callback))\n return undefined;\n const returned = returnedExpression(callback);\n if (!returned || !t.isJSXElement(returned)) return undefined;\n const key = jsxKeyExpression(returned);\n if (!key) return undefined;\n collection = (child.expression.callee as t.MemberExpression).object as t.Expression;\n keyCallback = t.arrowFunctionExpression(\n callback.params.map((parameter) => t.cloneNode(parameter, true)) as t.Identifier[],\n cloneExpression(key),\n );\n renderCallback = callback;\n row = returned;\n dependencies = result.dependencies || [];\n syntax = \"map\";\n source = child.expression;\n } else if (t.isJSXElement(child) && isPublicListElement(child, listNames)) {\n const result = analyzePublicList(child, statesByValue, safeGlobals);\n if (result.reason) return undefined;\n const each = listAttributeExpression(child, \"each\");\n const by = listAttributeExpression(child, \"by\");\n const renderChild = meaningfulJsxChildren(child)[0];\n if (\n !each ||\n (!t.isArrowFunctionExpression(by) && !t.isFunctionExpression(by)) ||\n !t.isJSXExpressionContainer(renderChild) ||\n t.isJSXEmptyExpression(renderChild.expression) ||\n (!t.isArrowFunctionExpression(renderChild.expression) &&\n !t.isFunctionExpression(renderChild.expression))\n ) {\n return undefined;\n }\n const returned = returnedExpression(renderChild.expression);\n if (!returned || !t.isJSXElement(returned)) return undefined;\n collection = each;\n keyCallback = by;\n renderCallback = renderChild.expression;\n row = returned;\n dependencies = result.dependencies || [];\n syntax = \"list\";\n source = child;\n } else {\n return undefined;\n }\n\n const rowAnalysis = analyzeKeyedRowTree(\n row,\n renderCallback,\n safeGlobals,\n new Set([...statesByValue.values()].map((state) => state.setterName)),\n allowMembershipTargets ? statesByValue : undefined,\n );\n if (rowAnalysis.reason && !acceptUnsupportedRow) return undefined;\n const keyExpression = returnedExpression(keyCallback);\n const structureDependencies = new Set(collectStateDependencies(collection, statesByValue));\n if (keyExpression) {\n for (const dependency of collectStateDependencies(keyExpression, statesByValue)) {\n structureDependencies.add(dependency);\n }\n }\n return {\n source,\n collection,\n collectionDependency: t.isIdentifier(collection)\n ? statesByValue.get(collection.name)?.index\n : undefined,\n structureDependencies: [...structureDependencies].sort((left, right) => left - right),\n keyCallback,\n renderCallback,\n row,\n dependencies,\n bindings: (rowAnalysis.bindings || []).map((binding) => ({\n ...binding,\n dependencies: collectStateDependencies(binding.value, statesByValue),\n })),\n events: rowAnalysis.events || [],\n conditionals: rowAnalysis.conditionals || [],\n rowReason: rowAnalysis.reason,\n syntax,\n };\n}\n\nfunction analyzeKeyedRowsContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n): KeyedRowsShape | undefined {\n if (\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n for (const attribute of container.openingElement.attributes) {\n if (\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression) &&\n !/^on[A-Z]/.test(attribute.name.name) &&\n collectStateDependencies(attribute.value.expression, statesByValue).length > 0\n ) {\n return undefined;\n }\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length !== 1) return undefined;\n const shape = analyzeKeyedRowChild(\n children[0],\n statesByValue,\n safeGlobals,\n listNames,\n true,\n true,\n );\n if (!shape || shape.rowReason) return shape;\n const needsMembershipProof = (binding: PendingKeyedRowBinding) =>\n containsPotentialKeyedMembershipCall(binding.value, statesByValue);\n const needsMapLookupProof = (binding: PendingKeyedRowBinding) =>\n containsPotentialKeyedMapLookupCall(binding.value, statesByValue);\n if (\n shape.conditionals.length > 0 ||\n (shape.events.length > 0 &&\n !canDelegateKeyedRowEvents({\n conditionals: shape.conditionals,\n events: shape.events,\n source: container,\n }))\n ) {\n return shape.bindings.some(\n (binding) => needsMembershipProof(binding) || needsMapLookupProof(binding),\n )\n ? {\n ...shape,\n rowReason:\n \"keyed collection targets require compiler-owned rows without React-owned branches or events\",\n }\n : shape;\n }\n const structureDependencies = new Set(shape.structureDependencies);\n const bindings = shape.bindings.map((binding) => ({\n ...binding,\n identityTarget: keyedIdentityTarget(\n binding,\n shape.keyCallback,\n shape.renderCallback,\n statesByValue,\n structureDependencies,\n ),\n membershipTarget: keyedMembershipTarget(\n binding,\n shape.keyCallback,\n shape.renderCallback,\n statesByValue,\n structureDependencies,\n ),\n mapLookupTarget: keyedMapLookupTarget(\n binding,\n shape.keyCallback,\n shape.renderCallback,\n statesByValue,\n structureDependencies,\n ),\n }));\n if (\n bindings.some(\n (binding, index) => needsMembershipProof(shape.bindings[index]) && !binding.membershipTarget,\n )\n ) {\n return {\n ...shape,\n rowReason: \"keyed membership targets must call one local Set state with the exact row key\",\n };\n }\n if (\n bindings.some(\n (binding, index) => needsMapLookupProof(shape.bindings[index]) && !binding.mapLookupTarget,\n )\n ) {\n return {\n ...shape,\n rowReason: \"keyed Map lookup targets must call one local Map state with the exact row key\",\n };\n }\n return {\n ...shape,\n bindings,\n };\n}\n\nfunction analyzeKeyedRangesContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n allowSingleRange = false,\n):\n | {\n ranges: KeyedRangePlan[];\n trailing: number;\n dependencies: number[];\n staticBindings: PendingStaticRangeBinding[];\n }\n | undefined {\n if (\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length < (allowSingleRange ? 1 : 2)) return undefined;\n const ranges: KeyedRangePlan[] = [];\n const dependencies = new Set<number>();\n const staticBindings: PendingStaticRangeBinding[] = [];\n let staticBefore = 0;\n for (const child of children) {\n const range = analyzeKeyedRowChild(child, statesByValue, safeGlobals, listNames);\n if (range) {\n if (range.events.length > 0 || range.conditionals.length > 0) return undefined;\n ranges.push({\n before: staticBefore,\n source: range.source,\n collection: range.collection,\n keyCallback: range.keyCallback,\n renderCallback: range.renderCallback,\n row: range.row,\n bindings: range.bindings,\n syntax: range.syntax,\n });\n for (const dependency of range.dependencies) dependencies.add(dependency);\n staticBefore = 0;\n continue;\n }\n if (!t.isJSXElement(child) || !isHostElement(child)) return undefined;\n const analysis = analyzeHostConditionalTree(child, safeGlobals, true, statesByValue);\n if (analysis.reason) return undefined;\n for (const binding of analysis.bindings || []) {\n staticBindings.push({\n ...binding,\n segment: ranges.length,\n sibling: staticBefore,\n });\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n staticBefore += 1;\n }\n if (ranges.length === 0) return undefined;\n return {\n ranges,\n trailing: staticBefore,\n dependencies: [...dependencies].sort((left, right) => left - right),\n staticBindings,\n };\n}\n\nfunction analyzeHostConditionalTree(\n branch: t.JSXElement,\n safeGlobals: ReadonlySet<string>,\n allowStaticEvents = false,\n statefulOnly?: ReadonlyMap<string, StateBinding>,\n): { bindings?: PendingKeyedRowBinding[]; reason?: string } {\n const bindings: PendingKeyedRowBinding[] = [];\n const needsStaticBinding = (expression: t.Expression): boolean =>\n !statefulOnly || collectStateDependencies(expression, statefulOnly).length > 0;\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiler-owned conditionals support host elements only\";\n }\n if (tag.name === \"svg\") return \"compiler-owned conditionals do not support SVG yet\";\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n if (statefulOnly && !needsStaticBinding(attribute.argument)) continue;\n return \"compiler-owned conditionals do not support JSX attribute spreads\";\n }\n const name = jsxAttributeName(attribute);\n if (!name) return \"compiler-owned conditionals do not support namespaced JSX attributes\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\" || name === \"key\") {\n if (\n statefulOnly &&\n (!t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression) ||\n !needsStaticBinding(attribute.value.expression))\n ) {\n continue;\n }\n return `compiler-owned conditional ${name} requires React ownership`;\n }\n if (/^on[A-Z]/.test(name)) {\n if (allowStaticEvents) continue;\n return \"compiler-owned conditional events require React ownership\";\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (!needsStaticBinding(expression)) continue;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return \"compiler-owned conditional styles must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (\n !t.isObjectProperty(property) ||\n property.computed ||\n !t.isExpression(property.value)\n ) {\n return \"compiler-owned conditional styles do not support spreads, methods, or computed properties\";\n }\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!propertyName || (propertyName.includes(\"-\") && !propertyName.startsWith(\"--\"))) {\n return \"compiler-owned conditional style names must use camelCase or a CSS custom property\";\n }\n if (!needsStaticBinding(property.value)) continue;\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) {\n return `compiler-owned conditional style ${propertyName} cannot use ${unsupported}`;\n }\n bindings.push({\n kind: \"style\",\n path: [...path],\n name: propertyName,\n value: cloneExpression(property.value),\n });\n }\n continue;\n }\n\n if (name === \"children\") {\n return \"compiler-owned conditional children props are not supported yet\";\n }\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) return `compiler-owned conditional ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n name,\n value: cloneExpression(expression),\n });\n }\n\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n if (element.children.some((child) => t.isJSXFragment(child))) {\n return \"compiler-owned conditionals do not support fragments yet\";\n }\n const expressions = element.children.filter(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression),\n );\n const boundExpressions = statefulOnly\n ? expressions.filter((child) => needsStaticBinding(child.expression as t.Expression))\n : expressions;\n if (boundExpressions.length > 0) {\n for (const child of expressions) {\n const unsupported = validateDerivedExpression(\n child.expression as t.Expression,\n safeGlobals,\n );\n if (unsupported) return `compiler-owned conditional text cannot use ${unsupported}`;\n }\n }\n if (nestedElements.length > 0 && boundExpressions.length > 0) {\n return \"compiler-owned conditionals do not support dynamic text beside nested elements yet\";\n }\n if (nestedElements.length === 0 && boundExpressions.length > 0) {\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n parts.push(cloneExpression(child.expression));\n }\n }\n bindings.push({\n kind: \"text\",\n path: [...path],\n value: t.arrayExpression(parts),\n });\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n return undefined;\n };\n\n const reason = visit(branch, []);\n return reason ? { reason } : { bindings };\n}\n\ninterface RecursiveHostTreeAnalysis {\n bindings: PendingKeyedRowBinding[];\n plans: HostDescriptorBlockPlan[];\n blocks: Map<t.JSXElement, HostDescriptorBlockPlan>;\n reason?: string;\n}\n\nfunction analyzeRecursiveHostTree(\n branch: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n): RecursiveHostTreeAnalysis {\n const bindings: PendingKeyedRowBinding[] = [];\n const plans: HostDescriptorBlockPlan[] = [];\n const blocks = new Map<t.JSXElement, HostDescriptorBlockPlan>();\n\n const visit = (element: t.JSXElement, path: number[], owner: number): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"recursive compiler-owned blocks support host elements only\";\n }\n if (tag.name === \"svg\") return \"recursive compiler-owned blocks do not support SVG yet\";\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return \"recursive compiler-owned blocks do not support JSX attribute spreads\";\n }\n const name = jsxAttributeName(attribute);\n if (!name) return \"recursive compiler-owned blocks do not support namespaced attributes\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\" || name === \"key\") {\n return `recursive compiler-owned block ${name} requires React ownership`;\n }\n if (/^on[A-Z]/.test(name)) {\n return \"recursive compiler-owned block events require React ownership\";\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return \"recursive compiler-owned styles must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (\n !t.isObjectProperty(property) ||\n property.computed ||\n !t.isExpression(property.value)\n ) {\n return \"recursive compiler-owned styles do not support spreads, methods, or computed properties\";\n }\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!propertyName || (propertyName.includes(\"-\") && !propertyName.startsWith(\"--\"))) {\n return \"recursive compiler-owned style names must use camelCase or a CSS custom property\";\n }\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) {\n return `recursive compiler-owned style ${propertyName} cannot use ${unsupported}`;\n }\n bindings.push({\n kind: \"style\",\n path: [...path],\n name: propertyName,\n value: cloneExpression(property.value),\n });\n }\n continue;\n }\n\n if (name === \"children\") {\n return \"recursive compiler-owned children props are not supported yet\";\n }\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) return `recursive compiler-owned ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n name,\n value: cloneExpression(expression),\n });\n }\n\n const children = meaningfulJsxChildren(element);\n const hasConditionalRange = children.some(\n (child) =>\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n conditionalBlockShape(child.expression) !== null,\n );\n const hasKeyedRange = children.some(\n (child) =>\n analyzeKeyedRowChild(child, statesByValue, safeGlobals, listNames, true) !== undefined,\n );\n if (hasConditionalRange && hasKeyedRange) {\n const id = allocateId();\n const mixed = analyzeMixedRangesContainer(\n element,\n statesByValue,\n safeGlobals,\n listNames,\n id,\n allocateId,\n );\n if (mixed) {\n plans.push(...mixed.nestedPlans);\n for (const [nestedElement, plan] of mixed.descriptorBlocks) {\n blocks.set(nestedElement, plan);\n }\n const plan: NestedHostMixedRangesPlan = {\n kind: \"nested-host-mixed-ranges\",\n id,\n parent: owner,\n dependencies: mixed.dependencies,\n source: element,\n ranges: mixed.ranges,\n trailing: mixed.trailing,\n staticBindings: mixed.staticBindings,\n };\n plans.push(plan);\n blocks.set(element, plan);\n return undefined;\n }\n }\n\n const conditionalChildren = new Map<\n t.Expression,\n NonNullable<ReturnType<typeof conditionalBlockShape>>\n >();\n let conditionalContainer = children.length > 0;\n for (const child of children) {\n if (t.isJSXElement(child) && isHostElement(child)) continue;\n if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n const shape = conditionalBlockShape(child.expression);\n if (shape && !validateDerivedExpression(shape.test, safeGlobals)) {\n conditionalChildren.set(child.expression, shape);\n continue;\n }\n }\n conditionalContainer = false;\n break;\n }\n\n if (conditionalContainer && conditionalChildren.size > 0) {\n const id = allocateId();\n const ranges: ConditionalRangePlan[] = [];\n const staticBindings: PendingStaticRangeBinding[] = [];\n const dependencies = new Set<number>();\n let staticBefore = 0;\n for (const child of children) {\n if (t.isJSXElement(child)) {\n const nested = analyzeRecursiveHostTree(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n owner,\n allocateId,\n );\n if (nested.reason) return nested.reason;\n plans.push(...nested.plans);\n for (const [nestedElement, plan] of nested.blocks) blocks.set(nestedElement, plan);\n for (const binding of nested.bindings) {\n staticBindings.push({\n ...binding,\n segment: ranges.length,\n sibling: staticBefore,\n });\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n staticBefore += 1;\n continue;\n }\n\n if (!t.isJSXExpressionContainer(child) || t.isJSXEmptyExpression(child.expression)) {\n return \"recursive conditional ranges contain an unsupported child\";\n }\n const expression = child.expression;\n const shape = conditionalChildren.get(expression)!;\n const truthy = shape.truthy\n ? analyzeRecursiveHostTree(\n shape.truthy,\n statesByValue,\n safeGlobals,\n listNames,\n id,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n const falsy = shape.falsy\n ? analyzeRecursiveHostTree(\n shape.falsy,\n statesByValue,\n safeGlobals,\n listNames,\n id,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n if (truthy.reason) return truthy.reason;\n if (falsy.reason) return falsy.reason;\n plans.push(...truthy.plans, ...falsy.plans);\n for (const [nestedElement, plan] of truthy.blocks) blocks.set(nestedElement, plan);\n for (const [nestedElement, plan] of falsy.blocks) blocks.set(nestedElement, plan);\n\n for (const dependency of collectStateDependencies(shape.test, statesByValue)) {\n dependencies.add(dependency);\n }\n for (const binding of [...truthy.bindings, ...falsy.bindings]) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n ranges.push({\n before: staticBefore,\n source: expression,\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy,\n falsy: shape.falsy,\n truthyBindings: truthy.bindings,\n falsyBindings: falsy.bindings,\n });\n staticBefore = 0;\n }\n const plan: NestedHostConditionalRangesPlan = {\n kind: \"nested-host-conditional-ranges\",\n id,\n parent: owner,\n dependencies: [...dependencies].sort((left, right) => left - right),\n source: element,\n ranges,\n trailing: staticBefore,\n staticBindings,\n };\n plans.push(plan);\n blocks.set(element, plan);\n return undefined;\n }\n\n const keyedRows: Array<{ before: number; range: KeyedRowChildShape }> = [];\n let keyedContainer = children.length > 0;\n let staticBefore = 0;\n const staticChildren: Array<{\n element: t.JSXElement;\n segment: number;\n sibling: number;\n }> = [];\n for (const child of children) {\n const range = analyzeKeyedRowChild(child, statesByValue, safeGlobals, listNames, true);\n if (range) {\n keyedRows.push({ before: staticBefore, range });\n staticBefore = 0;\n } else if (t.isJSXElement(child) && isHostElement(child)) {\n staticChildren.push({\n element: child,\n segment: keyedRows.length,\n sibling: staticBefore,\n });\n staticBefore += 1;\n } else {\n keyedContainer = false;\n break;\n }\n }\n\n if (keyedContainer && keyedRows.length > 0) {\n const id = allocateId();\n const keyedRanges: KeyedRangePlan[] = [];\n const staticBindings: PendingStaticRangeBinding[] = [];\n const keyedDependencies = new Set<number>();\n for (const { before, range } of keyedRows) {\n if (range.events.length > 0) {\n return \"recursive compiler-owned keyed rows cannot contain events\";\n }\n const row = t.cloneNode(range.row, true);\n row.openingElement.attributes = row.openingElement.attributes.filter(\n (attribute) => !t.isJSXAttribute(attribute) || jsxAttributeName(attribute) !== \"key\",\n );\n const rowAnalysis = analyzeRecursiveHostTree(\n row,\n statesByValue,\n safeGlobals,\n listNames,\n id,\n allocateId,\n );\n if (rowAnalysis.reason) return rowAnalysis.reason;\n plans.push(...rowAnalysis.plans);\n for (const [nestedElement, nestedPlan] of rowAnalysis.blocks) {\n blocks.set(nestedElement, nestedPlan);\n }\n keyedRanges.push({\n before,\n source: range.source,\n collection: range.collection,\n keyCallback: range.keyCallback,\n renderCallback: range.renderCallback,\n row,\n bindings: rowAnalysis.bindings,\n syntax: range.syntax,\n });\n for (const dependency of range.dependencies) keyedDependencies.add(dependency);\n }\n for (const { element: child, segment, sibling } of staticChildren) {\n const nested = analyzeRecursiveHostTree(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n owner,\n allocateId,\n );\n if (nested.reason) return nested.reason;\n plans.push(...nested.plans);\n for (const [nestedElement, plan] of nested.blocks) blocks.set(nestedElement, plan);\n for (const binding of nested.bindings) {\n staticBindings.push({ ...binding, segment, sibling });\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n keyedDependencies.add(dependency);\n }\n }\n }\n const plan: NestedHostKeyedRangesPlan = {\n kind: \"nested-host-keyed-ranges\",\n id,\n parent: owner,\n dependencies: [...keyedDependencies].sort((left, right) => left - right),\n source: element,\n ranges: keyedRanges,\n trailing: staticBefore,\n staticBindings,\n };\n plans.push(plan);\n blocks.set(element, plan);\n return undefined;\n }\n\n if (element.children.some((child) => t.isJSXFragment(child))) {\n return \"recursive compiler-owned blocks do not support fragments yet\";\n }\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n const expressions = element.children.filter(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression),\n );\n for (const child of expressions) {\n const unsupported = validateDerivedExpression(child.expression as t.Expression, safeGlobals);\n if (unsupported) return `recursive compiler-owned text cannot use ${unsupported}`;\n }\n if (nestedElements.length > 0 && expressions.length > 0) {\n return \"recursive compiler-owned blocks do not support dynamic text beside nested elements\";\n }\n if (nestedElements.length === 0 && expressions.length > 0) {\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n parts.push(cloneExpression(child.expression));\n }\n }\n bindings.push({\n kind: \"text\",\n path: [...path],\n value: t.arrayExpression(parts),\n });\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex], owner);\n if (reason) return reason;\n elementIndex += 1;\n }\n return undefined;\n };\n\n const reason = visit(branch, [], parent);\n return { bindings, plans, blocks, reason };\n}\n\nfunction analyzeCompilerOwnedKeyedRowHostBlocks(\n shape: KeyedRowsShape,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n):\n | {\n row: t.JSXElement;\n bindings: PendingKeyedRowBinding[];\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n nestedPlans: HostDescriptorBlockPlan[];\n }\n | undefined {\n if (shape.events.length > 0) return undefined;\n\n const row = t.cloneNode(shape.row, true);\n row.openingElement.attributes = row.openingElement.attributes.filter(\n (attribute) => !t.isJSXAttribute(attribute) || jsxAttributeName(attribute) !== \"key\",\n );\n const analysis = analyzeRecursiveHostTree(\n row,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n );\n if (analysis.reason || analysis.plans.length === 0) {\n return undefined;\n }\n return {\n row,\n bindings: analysis.bindings,\n descriptorBlocks: analysis.blocks,\n nestedPlans: analysis.plans,\n };\n}\n\nfunction analyzeHostConditionalContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n): Omit<HostConditionalPlan, \"kind\" | \"id\" | \"parent\" | \"source\"> | undefined {\n const containerName = container.openingElement.name;\n if (\n !t.isJSXIdentifier(containerName) ||\n !/^[a-z]/.test(containerName.name) ||\n containerName.name === \"svg\"\n ) {\n return undefined;\n }\n if (\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n for (const attribute of container.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) return undefined;\n if (/^on[A-Z]/.test(attribute.name.name) || attribute.name.name === \"key\") return undefined;\n // React does not revisit the adopted container on compiler-cell or parent-prop updates.\n // Keep every container property static; dynamic work belongs to the owned branch bindings.\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n )\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (\n children.length !== 1 ||\n !t.isJSXExpressionContainer(children[0]) ||\n t.isJSXEmptyExpression(children[0].expression)\n ) {\n return undefined;\n }\n const shape = conditionalBlockShape(children[0].expression);\n if (!shape || validateDerivedExpression(shape.test, safeGlobals)) return undefined;\n\n const truthyAnalysis = shape.truthy\n ? analyzeRecursiveHostTree(\n shape.truthy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n const falsyAnalysis = shape.falsy\n ? analyzeRecursiveHostTree(\n shape.falsy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n if (truthyAnalysis.reason || falsyAnalysis.reason) return undefined;\n\n const dependencies = new Set(collectStateDependencies(shape.test, statesByValue));\n for (const binding of [...(truthyAnalysis.bindings || []), ...(falsyAnalysis.bindings || [])]) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n return {\n dependencies: [...dependencies].sort((left, right) => left - right),\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy,\n falsy: shape.falsy,\n truthyBindings: truthyAnalysis.bindings || [],\n falsyBindings: falsyAnalysis.bindings || [],\n descriptorBlocks: new Map([...truthyAnalysis.blocks, ...falsyAnalysis.blocks]),\n nestedPlans: [...truthyAnalysis.plans, ...falsyAnalysis.plans],\n };\n}\n\nfunction analyzeConditionalRangesContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n allowSingleRange: boolean,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n):\n | {\n ranges: ConditionalRangePlan[];\n trailing: number;\n dependencies: number[];\n staticBindings: PendingStaticRangeBinding[];\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n nestedPlans: HostDescriptorBlockPlan[];\n }\n | undefined {\n const containerName = container.openingElement.name;\n if (\n !t.isJSXIdentifier(containerName) ||\n !/^[a-z]/.test(containerName.name) ||\n containerName.name === \"svg\" ||\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length < (allowSingleRange ? 1 : 2)) return undefined;\n const ranges: ConditionalRangePlan[] = [];\n const dependencies = new Set<number>();\n const descriptorBlocks = new Map<t.JSXElement, HostDescriptorBlockPlan>();\n const nestedPlans: HostDescriptorBlockPlan[] = [];\n const staticBindings: PendingStaticRangeBinding[] = [];\n let staticBefore = 0;\n\n for (const child of children) {\n if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n const shape = conditionalBlockShape(child.expression);\n if (shape && !validateDerivedExpression(shape.test, safeGlobals)) {\n const truthyAnalysis = shape.truthy\n ? analyzeRecursiveHostTree(\n shape.truthy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n const falsyAnalysis = shape.falsy\n ? analyzeRecursiveHostTree(\n shape.falsy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n if (truthyAnalysis.reason || falsyAnalysis.reason) return undefined;\n nestedPlans.push(...truthyAnalysis.plans, ...falsyAnalysis.plans);\n for (const [element, plan] of truthyAnalysis.blocks) descriptorBlocks.set(element, plan);\n for (const [element, plan] of falsyAnalysis.blocks) descriptorBlocks.set(element, plan);\n\n const rangeDependencies = new Set(collectStateDependencies(shape.test, statesByValue));\n for (const binding of [\n ...(truthyAnalysis.bindings || []),\n ...(falsyAnalysis.bindings || []),\n ]) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n rangeDependencies.add(dependency);\n }\n }\n for (const dependency of rangeDependencies) dependencies.add(dependency);\n ranges.push({\n before: staticBefore,\n source: child.expression,\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy,\n falsy: shape.falsy,\n truthyBindings: truthyAnalysis.bindings || [],\n falsyBindings: falsyAnalysis.bindings || [],\n });\n staticBefore = 0;\n continue;\n }\n }\n\n if (!t.isJSXElement(child) || !isHostElement(child)) return undefined;\n const staticAnalysis = analyzeHostConditionalTree(child, safeGlobals, true, statesByValue);\n if (staticAnalysis.reason) return undefined;\n for (const binding of staticAnalysis.bindings || []) {\n staticBindings.push({\n ...binding,\n segment: ranges.length,\n sibling: staticBefore,\n });\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n staticBefore += 1;\n }\n\n if (ranges.length === 0) return undefined;\n return {\n ranges,\n trailing: staticBefore,\n dependencies: [...dependencies].sort((left, right) => left - right),\n staticBindings,\n descriptorBlocks,\n nestedPlans,\n };\n}\n\nfunction analyzeMixedRangesContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n):\n | {\n ranges: MixedRangePlan[];\n trailing: number;\n dependencies: number[];\n staticBindings: PendingStaticRangeBinding[];\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n nestedPlans: HostDescriptorBlockPlan[];\n }\n | undefined {\n const containerName = container.openingElement.name;\n if (\n !t.isJSXIdentifier(containerName) ||\n !/^[a-z]/.test(containerName.name) ||\n containerName.name === \"svg\" ||\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length < 2) return undefined;\n const ranges: MixedRangePlan[] = [];\n const dependencies = new Set<number>();\n const descriptorBlocks = new Map<t.JSXElement, HostDescriptorBlockPlan>();\n const nestedPlans: HostDescriptorBlockPlan[] = [];\n const staticBindings: PendingStaticRangeBinding[] = [];\n let conditionalCount = 0;\n let keyedCount = 0;\n let staticBefore = 0;\n\n const mergeAnalysis = (analysis: RecursiveHostTreeAnalysis): boolean => {\n if (analysis.reason) return false;\n nestedPlans.push(...analysis.plans);\n for (const [element, plan] of analysis.blocks) descriptorBlocks.set(element, plan);\n for (const binding of analysis.bindings) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n return true;\n };\n\n for (const child of children) {\n if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n const shape = conditionalBlockShape(child.expression);\n if (shape && !validateDerivedExpression(shape.test, safeGlobals)) {\n const truthyAnalysis = shape.truthy\n ? analyzeRecursiveHostTree(\n shape.truthy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n const falsyAnalysis = shape.falsy\n ? analyzeRecursiveHostTree(\n shape.falsy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n if (!mergeAnalysis(truthyAnalysis) || !mergeAnalysis(falsyAnalysis)) return undefined;\n for (const dependency of collectStateDependencies(shape.test, statesByValue)) {\n dependencies.add(dependency);\n }\n ranges.push({\n rangeKind: \"conditional\",\n before: staticBefore,\n source: child.expression,\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy,\n falsy: shape.falsy,\n truthyBindings: truthyAnalysis.bindings,\n falsyBindings: falsyAnalysis.bindings,\n });\n conditionalCount += 1;\n staticBefore = 0;\n continue;\n }\n }\n\n const keyed = analyzeKeyedRowChild(child, statesByValue, safeGlobals, listNames, true);\n if (keyed) {\n if (keyed.events.length > 0) return undefined;\n const row = t.cloneNode(keyed.row, true);\n row.openingElement.attributes = row.openingElement.attributes.filter(\n (attribute) => !t.isJSXAttribute(attribute) || jsxAttributeName(attribute) !== \"key\",\n );\n const rowAnalysis = analyzeRecursiveHostTree(\n row,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n );\n if (!mergeAnalysis(rowAnalysis)) return undefined;\n for (const dependency of keyed.dependencies) dependencies.add(dependency);\n ranges.push({\n rangeKind: \"keyed\",\n before: staticBefore,\n source: keyed.source,\n collection: keyed.collection,\n keyCallback: keyed.keyCallback,\n renderCallback: keyed.renderCallback,\n row,\n bindings: rowAnalysis.bindings,\n syntax: keyed.syntax,\n });\n keyedCount += 1;\n staticBefore = 0;\n continue;\n }\n\n if (!t.isJSXElement(child) || !isHostElement(child)) return undefined;\n const staticAnalysis = analyzeRecursiveHostTree(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n );\n if (staticAnalysis.reason) return undefined;\n for (const binding of staticAnalysis.bindings) {\n staticBindings.push({\n ...binding,\n segment: ranges.length,\n sibling: staticBefore,\n });\n }\n if (!mergeAnalysis(staticAnalysis)) return undefined;\n staticBefore += 1;\n }\n\n if (conditionalCount === 0 || keyedCount === 0) return undefined;\n return {\n ranges,\n trailing: staticBefore,\n dependencies: [...dependencies].sort((left, right) => left - right),\n staticBindings,\n descriptorBlocks,\n nestedPlans,\n };\n}\n\nfunction keyedListBoundary(\n blockRuntime: t.Identifier,\n plan: KeyedListPlan,\n source: t.Expression,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"KeyedList\"),\n );\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(source))),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction hostElementDescriptor(\n element: t.JSXElement,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan> = new Map(),\n): t.ObjectExpression {\n const tag = element.openingElement.name as t.JSXIdentifier;\n const attributes: t.ObjectExpression[] = [];\n const styles: t.ObjectExpression[] = [];\n\n for (const attribute of element.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute)) continue;\n const name = jsxAttributeName(attribute);\n if (!name || name === \"key\" || name === \"ref\" || /^on[A-Z]/.test(name)) continue;\n if (name === \"style\") {\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n t.isObjectExpression(attribute.value.expression)\n ) {\n for (const property of attribute.value.expression.properties) {\n if (!t.isObjectProperty(property) || !t.isExpression(property.value)) continue;\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : (property.key as t.StringLiteral).value;\n styles.push(\n t.objectExpression([\n t.objectProperty(t.identifier(\"name\"), t.stringLiteral(propertyName)),\n t.objectProperty(t.identifier(\"value\"), cloneExpression(property.value)),\n ]),\n );\n }\n }\n continue;\n }\n\n const value = attribute.value\n ? t.isStringLiteral(attribute.value)\n ? t.stringLiteral(attribute.value.value)\n : t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n ? cloneExpression(attribute.value.expression)\n : t.identifier(\"undefined\")\n : t.booleanLiteral(true);\n attributes.push(\n t.objectExpression([\n t.objectProperty(t.identifier(\"name\"), t.stringLiteral(name)),\n t.objectProperty(t.identifier(\"value\"), value),\n ]),\n );\n }\n\n const block = descriptorBlocks.get(element);\n const conditionalBySource = new Map<t.Node, ConditionalRangePlan>();\n const keyedBySource = new Map<t.Node, KeyedRangePlan>();\n if (block?.kind === \"nested-host-conditional-ranges\") {\n for (const range of block.ranges) conditionalBySource.set(range.source, range);\n } else if (block?.kind === \"nested-host-keyed-ranges\") {\n for (const range of block.ranges) keyedBySource.set(range.source, range);\n } else if (block?.kind === \"nested-host-mixed-ranges\") {\n for (const range of block.ranges) {\n if (range.rangeKind === \"conditional\") conditionalBySource.set(range.source, range);\n else keyedBySource.set(range.source, range);\n }\n }\n\n const children: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) children.push(t.stringLiteral(text));\n } else if (t.isJSXElement(child)) {\n const keyedRange = keyedBySource.get(child);\n if (keyedRange) {\n if (block?.kind !== \"nested-host-keyed-ranges\") {\n children.push(keyedRangeDescriptorChildren(keyedRange, descriptorBlocks));\n }\n } else {\n children.push(hostElementDescriptor(child, descriptorBlocks));\n }\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n const conditionalRange = conditionalBySource.get(child.expression);\n const keyedRange = keyedBySource.get(child.expression);\n if (conditionalRange) {\n children.push(conditionalRangeDescriptorChild(conditionalRange, descriptorBlocks));\n } else if (keyedRange) {\n if (block?.kind !== \"nested-host-keyed-ranges\") {\n children.push(keyedRangeDescriptorChildren(keyedRange, descriptorBlocks));\n }\n } else {\n children.push(cloneExpression(child.expression));\n }\n }\n }\n\n const properties: Array<t.ObjectProperty> = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(\"element\")),\n t.objectProperty(t.identifier(\"tag\"), t.stringLiteral(tag.name)),\n t.objectProperty(t.identifier(\"attributes\"), t.arrayExpression(attributes)),\n t.objectProperty(t.identifier(\"styles\"), t.arrayExpression(styles)),\n t.objectProperty(t.identifier(\"children\"), t.arrayExpression(children)),\n ];\n if (block) {\n properties.push(\n t.objectProperty(t.identifier(\"block\"), nestedHostBlockObject(block, descriptorBlocks)),\n );\n }\n return t.objectExpression(properties);\n}\n\nfunction conditionalRangeDescriptorChild(\n range: ConditionalRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>,\n): t.Expression {\n const truthy = range.truthy\n ? hostElementDescriptor(range.truthy, descriptorBlocks)\n : t.nullLiteral();\n if (range.logical) {\n return t.logicalExpression(\"&&\", cloneExpression(range.test), truthy);\n }\n return t.conditionalExpression(\n cloneExpression(range.test),\n truthy,\n range.falsy ? hostElementDescriptor(range.falsy, descriptorBlocks) : t.nullLiteral(),\n );\n}\n\nfunction keyedRangeDescriptorChildren(\n range: KeyedRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>,\n): t.Expression {\n const parameters = range.renderCallback.params.map((parameter) =>\n t.cloneNode(parameter, true),\n ) as t.Identifier[];\n const callback = t.arrowFunctionExpression(\n parameters,\n hostElementDescriptor(range.row, descriptorBlocks),\n );\n const collection = cloneExpression(range.collection);\n if (range.syntax === \"map\") {\n return t.callExpression(t.memberExpression(collection, t.identifier(\"map\")), [callback]);\n }\n return t.callExpression(\n t.memberExpression(\n t.callExpression(t.memberExpression(t.identifier(\"Array\"), t.identifier(\"from\")), [\n t.logicalExpression(\"||\", collection, t.arrayExpression([])),\n ]),\n t.identifier(\"map\"),\n ),\n [callback],\n );\n}\n\nfunction keyedRowBindingObject(\n binding: PendingKeyedRowBinding,\n parameters: readonly t.Identifier[],\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(binding.kind)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(binding.path.map((part) => t.numericLiteral(part))),\n ),\n t.objectProperty(\n t.identifier(\"dependencies\"),\n t.arrayExpression(\n (binding.dependencies || []).map((dependency) => t.numericLiteral(dependency)),\n ),\n ),\n ];\n if (binding.name) {\n properties.push(t.objectProperty(t.identifier(\"name\"), t.stringLiteral(binding.name)));\n }\n if (binding.identityTarget) {\n properties.push(\n t.objectProperty(\n t.identifier(\"identityTarget\"),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"dependency\"),\n t.numericLiteral(binding.identityTarget.dependency),\n ),\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression([], cloneExpression(binding.identityTarget.value)),\n ),\n ]),\n ),\n );\n }\n if (binding.membershipTarget) {\n properties.push(\n t.objectProperty(\n t.identifier(\"membershipTarget\"),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"dependency\"),\n t.numericLiteral(binding.membershipTarget.dependency),\n ),\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression([], cloneExpression(binding.membershipTarget.value)),\n ),\n ]),\n ),\n );\n }\n if (binding.mapLookupTarget) {\n properties.push(\n t.objectProperty(\n t.identifier(\"mapLookupTarget\"),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"dependency\"),\n t.numericLiteral(binding.mapLookupTarget.dependency),\n ),\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression([], cloneExpression(binding.mapLookupTarget.value)),\n ),\n ]),\n ),\n );\n }\n properties.push(\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n cloneExpression(binding.value),\n ),\n ),\n );\n return t.objectExpression(properties);\n}\n\nfunction staticRangeBindingObject(binding: PendingStaticRangeBinding): t.ObjectExpression {\n const value = keyedRowBindingObject(binding, []);\n value.properties.splice(\n 1,\n 0,\n t.objectProperty(t.identifier(\"segment\"), t.numericLiteral(binding.segment)),\n t.objectProperty(t.identifier(\"sibling\"), t.numericLiteral(binding.sibling)),\n );\n return value;\n}\n\nfunction uniqueLocalIdentifier(base: string, nodes: readonly t.Node[]): t.Identifier {\n const names = new Set<string>();\n for (const node of nodes) {\n t.traverseFast(node, (child) => {\n if (t.isIdentifier(child)) names.add(child.name);\n });\n }\n let name = base;\n let suffix = 2;\n while (names.has(name)) name = `${base}${suffix++}`;\n return t.identifier(name);\n}\n\nfunction rewriteKeyedRowEventAttributes(\n row: t.JSXElement,\n events: readonly PendingKeyedRowEvent[],\n eventFactory: t.Identifier,\n item: t.Identifier,\n index: t.Expression,\n): void {\n const eventByLocation = new Map(\n events.map((event) => [`${event.path.join(\".\")}:${event.name}`, event] as const),\n );\n const visit = (element: t.JSXElement, path: number[]): void => {\n for (const attribute of element.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute)) continue;\n const name = jsxAttributeName(attribute);\n if (!name || !/^on[A-Z]/.test(name)) continue;\n const event = eventByLocation.get(`${path.join(\".\")}:${name}`);\n if (!event) continue;\n attribute.value = t.jsxExpressionContainer(\n t.callExpression(t.cloneNode(eventFactory), [\n t.cloneNode(item),\n t.cloneNode(index),\n t.numericLiteral(event.id),\n ]),\n );\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n visit(child, [...path, elementIndex]);\n elementIndex += 1;\n }\n };\n visit(row, []);\n}\n\nfunction rewriteKeyedRowConditionalExpressions(\n row: t.JSXElement,\n conditionals: readonly PendingKeyedRowConditional[],\n conditionalFactory: t.Identifier,\n item: t.Identifier,\n index: t.Expression,\n renderParameters: readonly t.Identifier[],\n): void {\n const conditionalByLocation = new Map(\n conditionals.map((conditional) => [conditional.path.join(\".\"), conditional] as const),\n );\n const visit = (element: t.JSXElement, path: number[]): void => {\n const conditional = conditionalByLocation.get(path.join(\".\"));\n if (conditional) {\n element.children = element.children.map((child) => {\n if (\n !t.isJSXExpressionContainer(child) ||\n t.isJSXEmptyExpression(child.expression) ||\n !conditionalBlockShape(child.expression)\n ) {\n return child;\n }\n return t.jsxExpressionContainer(\n t.callExpression(t.cloneNode(conditionalFactory), [\n t.cloneNode(item),\n t.cloneNode(index),\n t.numericLiteral(conditional.id),\n t.arrowFunctionExpression(\n renderParameters.map((parameter) => t.cloneNode(parameter, true)),\n cloneExpression(child.expression),\n ),\n ]),\n );\n });\n return;\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n visit(child, [...path, elementIndex]);\n elementIndex += 1;\n }\n };\n visit(row, []);\n}\n\nfunction keyedRowsRenderSource(\n plan: KeyedRowsPlan,\n eventFactory: t.Identifier,\n conditionalFactory: t.Identifier,\n): t.JSXElement {\n const source = t.cloneNode(plan.source, true);\n const child = meaningfulJsxChildren(source)[0];\n let callback: t.ArrowFunctionExpression | t.FunctionExpression | undefined;\n if (\n plan.syntax === \"map\" &&\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n isMapCall(child.expression)\n ) {\n const candidate = child.expression.arguments[0];\n if (t.isArrowFunctionExpression(candidate) || t.isFunctionExpression(candidate)) {\n callback = candidate;\n }\n } else if (plan.syntax === \"list\" && t.isJSXElement(child)) {\n const renderChild = meaningfulJsxChildren(child)[0];\n if (\n t.isJSXExpressionContainer(renderChild) &&\n !t.isJSXEmptyExpression(renderChild.expression) &&\n (t.isArrowFunctionExpression(renderChild.expression) ||\n t.isFunctionExpression(renderChild.expression))\n ) {\n callback = renderChild.expression;\n }\n }\n const row = callback && returnedExpression(callback);\n const item = callback?.params[0];\n const index = callback?.params[1];\n if (!callback || !t.isJSXElement(row) || !t.isIdentifier(item)) return source;\n const runtimeIndex = t.isIdentifier(index) ? index : t.numericLiteral(0);\n if (plan.events.length > 0) {\n rewriteKeyedRowEventAttributes(row, plan.events, eventFactory, item, runtimeIndex);\n }\n if (plan.conditionals.length > 0) {\n rewriteKeyedRowConditionalExpressions(\n row,\n plan.conditionals,\n conditionalFactory,\n item,\n runtimeIndex,\n callback.params as t.Identifier[],\n );\n }\n return source;\n}\n\nfunction keyedRowEventObject(\n event: PendingKeyedRowEvent,\n renderParameters: readonly t.Identifier[],\n): t.ObjectExpression {\n const nodes = [event.value, ...renderParameters];\n const index = renderParameters[1]\n ? t.cloneNode(renderParameters[1], true)\n : uniqueLocalIdentifier(\"_farmRowIndex\", nodes);\n const syntheticEvent = uniqueLocalIdentifier(\"_farmEvent\", [...nodes, index]);\n const parameters = [t.cloneNode(renderParameters[0], true), index, syntheticEvent];\n return t.objectExpression([\n t.objectProperty(t.identifier(\"name\"), t.stringLiteral(event.name)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(event.path.map((part) => t.numericLiteral(part))),\n ),\n t.objectProperty(\n t.identifier(\"invoke\"),\n t.arrowFunctionExpression(\n parameters,\n t.callExpression(t.parenthesizedExpression(t.cloneNode(event.value, true)), [\n t.cloneNode(syntheticEvent),\n ]),\n ),\n ),\n ]);\n}\n\nfunction keyedRowConditionalBranchObject(\n bindings: readonly PendingKeyedRowBinding[],\n parameters: readonly t.Identifier[],\n): t.ObjectExpression {\n return t.objectExpression([\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(bindings.map((binding) => keyedRowBindingObject(binding, parameters))),\n ),\n ]);\n}\n\nfunction keyedRowConditionalObject(\n conditional: PendingKeyedRowConditional,\n parameters: readonly t.Identifier[],\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"id\"), t.numericLiteral(conditional.id)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(conditional.path.map((part) => t.numericLiteral(part))),\n ),\n t.objectProperty(\n t.identifier(\"test\"),\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n cloneExpression(conditional.test),\n ),\n ),\n t.objectProperty(t.identifier(\"logical\"), t.booleanLiteral(conditional.logical)),\n ];\n if (conditional.truthy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"truthy\"),\n keyedRowConditionalBranchObject(conditional.truthyBindings, parameters),\n ),\n );\n }\n if (conditional.falsy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"falsy\"),\n keyedRowConditionalBranchObject(conditional.falsyBindings, parameters),\n ),\n );\n }\n return t.objectExpression(properties);\n}\n\nfunction keyedRowsBoundary(\n blockRuntime: t.Identifier,\n plan: KeyedRowsPlan,\n keyedMapUpdateHints: boolean,\n keyedArrayFilterHintedStateIndices: ReadonlySet<number>,\n keyedArrayPrependHintedStateIndices: ReadonlySet<number>,\n keyedArrayPositionHintedStateIndices: ReadonlySet<number>,\n keyedArrayReorderHintedStateIndices: ReadonlySet<number>,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"KeyedRows\"),\n );\n const parameters = plan.renderCallback.params.map((parameter) =>\n t.cloneNode(parameter, true),\n ) as t.Identifier[];\n const eventFactory = uniqueLocalIdentifier(\"_farmRowEvent\", [\n plan.source,\n ...plan.events.map((event) => event.value),\n ]);\n const conditionalFactory = uniqueLocalIdentifier(\"_farmRowConditional\", [\n plan.source,\n ...plan.conditionals.map((conditional) => conditional.test),\n ]);\n const delegatedEvents = canDelegateKeyedRowEvents(plan);\n const renderSource = keyedRowsRenderSource(plan, eventFactory, conditionalFactory);\n const renderFactoryParameters =\n plan.conditionals.length > 0\n ? [t.cloneNode(eventFactory), t.cloneNode(conditionalFactory)]\n : plan.events.length > 0\n ? [t.cloneNode(eventFactory)]\n : [];\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(\n t.arrowFunctionExpression(renderFactoryParameters, renderSource),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"items\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(plan.collection))),\n ),\n ...(keyedMapUpdateHints\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"dependencies\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.dependencies.map((dependency) => t.numericLiteral(dependency)),\n ),\n ),\n ),\n ]\n : []),\n t.jsxAttribute(\n t.jsxIdentifier(\"structureDependencies\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.structureDependencies.map((dependency) => t.numericLiteral(dependency)),\n ),\n ),\n ),\n ...(!keyedMapUpdateHints || plan.collectionDependency === undefined\n ? []\n : [\n t.jsxAttribute(\n t.jsxIdentifier(\"collectionDependency\"),\n t.jsxExpressionContainer(t.numericLiteral(plan.collectionDependency)),\n ),\n ]),\n ...(plan.collectionDependency !== undefined &&\n keyedArrayFilterHintedStateIndices.has(plan.collectionDependency)\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"filterIndexIndependent\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ...(plan.collectionDependency !== undefined &&\n keyedArrayPrependHintedStateIndices.has(plan.collectionDependency)\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"prependIndexIndependent\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ...(plan.collectionDependency !== undefined &&\n keyedArrayPositionHintedStateIndices.has(plan.collectionDependency)\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"positionIndexIndependent\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ...(plan.collectionDependency !== undefined &&\n keyedArrayReorderHintedStateIndices.has(plan.collectionDependency)\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"reorderIndexIndependent\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n t.jsxAttribute(\n t.jsxIdentifier(\"rowKey\"),\n t.jsxExpressionContainer(t.cloneNode(plan.keyCallback, true)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"create\"),\n t.jsxExpressionContainer(\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n hostElementDescriptor(plan.row, plan.descriptorBlocks),\n ),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"bindings\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.bindings.map((binding) => keyedRowBindingObject(binding, parameters)),\n ),\n ),\n ),\n ...(plan.events.length > 0\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"events\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.events.map((event) => keyedRowEventObject(event, parameters)),\n ),\n ),\n ),\n ...(delegatedEvents\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"delegateEvents\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ]\n : []),\n ...(plan.conditionals.length > 0\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"conditionals\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.conditionals.map((conditional) =>\n keyedRowConditionalObject(conditional, parameters),\n ),\n ),\n ),\n ),\n ]\n : []),\n ...(plan.descriptorBlocks?.size\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"hostBlocks\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction keyedRangeObject(\n range: KeyedRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan> = new Map(),\n): t.ObjectExpression {\n const parameters = range.renderCallback.params.map((parameter) =>\n t.cloneNode(parameter, true),\n ) as t.Identifier[];\n return t.objectExpression([\n t.objectProperty(t.identifier(\"before\"), t.numericLiteral(range.before)),\n t.objectProperty(\n t.identifier(\"items\"),\n t.arrowFunctionExpression([], cloneExpression(range.collection)),\n ),\n t.objectProperty(t.identifier(\"rowKey\"), t.cloneNode(range.keyCallback, true)),\n t.objectProperty(\n t.identifier(\"create\"),\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n hostElementDescriptor(range.row, descriptorBlocks),\n ),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(\n range.bindings.map((binding) => keyedRowBindingObject(binding, parameters)),\n ),\n ),\n ]);\n}\n\nfunction keyedRangesBoundary(blockRuntime: t.Identifier, plan: KeyedRangesPlan): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"KeyedRanges\"),\n );\n const source = t.cloneNode(plan.source, true);\n let rootRef: t.Expression | undefined;\n source.openingElement.attributes = source.openingElement.attributes.filter((attribute) => {\n if (\n !t.isJSXAttribute(attribute) ||\n jsxAttributeName(attribute) !== \"ref\" ||\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n return true;\n }\n rootRef = cloneExpression(attribute.value.expression);\n return false;\n });\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], source)),\n ),\n ...(rootRef\n ? [t.jsxAttribute(t.jsxIdentifier(\"rootRef\"), t.jsxExpressionContainer(rootRef))]\n : []),\n t.jsxAttribute(\n t.jsxIdentifier(\"ranges\"),\n t.jsxExpressionContainer(\n t.arrayExpression(plan.ranges.map((range) => keyedRangeObject(range))),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"trailing\"),\n t.jsxExpressionContainer(t.numericLiteral(plan.trailing)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"bindings\"),\n t.jsxExpressionContainer(\n t.arrayExpression(plan.staticBindings.map(staticRangeBindingObject)),\n ),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction hostConditionalBranchObject(\n branch: t.JSXElement,\n bindings: readonly PendingKeyedRowBinding[],\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan> = new Map(),\n): t.ObjectExpression {\n return t.objectExpression([\n t.objectProperty(\n t.identifier(\"create\"),\n t.arrowFunctionExpression([], hostElementDescriptor(branch, descriptorBlocks)),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(bindings.map((binding) => keyedRowBindingObject(binding, []))),\n ),\n ]);\n}\n\nfunction hostConditionalBoundary(\n blockRuntime: t.Identifier,\n plan: HostConditionalPlan,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"HostConditional\"),\n );\n const attributes: t.JSXAttribute[] = [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], t.cloneNode(plan.source, true))),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"test\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(plan.test))),\n ),\n ];\n if (plan.logical) attributes.push(t.jsxAttribute(t.jsxIdentifier(\"logical\")));\n if (plan.truthy) {\n attributes.push(\n t.jsxAttribute(\n t.jsxIdentifier(\"truthy\"),\n t.jsxExpressionContainer(\n hostConditionalBranchObject(plan.truthy, plan.truthyBindings, plan.descriptorBlocks),\n ),\n ),\n );\n }\n if (plan.falsy) {\n attributes.push(\n t.jsxAttribute(\n t.jsxIdentifier(\"falsy\"),\n t.jsxExpressionContainer(\n hostConditionalBranchObject(plan.falsy, plan.falsyBindings, plan.descriptorBlocks),\n ),\n ),\n );\n }\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction conditionalRangeObject(\n range: ConditionalRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan> = new Map(),\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"before\"), t.numericLiteral(range.before)),\n t.objectProperty(\n t.identifier(\"test\"),\n t.arrowFunctionExpression([], cloneExpression(range.test)),\n ),\n ];\n if (range.logical) {\n properties.push(t.objectProperty(t.identifier(\"logical\"), t.booleanLiteral(true)));\n }\n if (range.truthy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"truthy\"),\n hostConditionalBranchObject(range.truthy, range.truthyBindings, descriptorBlocks),\n ),\n );\n }\n if (range.falsy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"falsy\"),\n hostConditionalBranchObject(range.falsy, range.falsyBindings, descriptorBlocks),\n ),\n );\n }\n return t.objectExpression(properties);\n}\n\nfunction nestedHostBlockObject(\n plan: HostDescriptorBlockPlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>,\n): t.ObjectExpression {\n const kind =\n plan.kind === \"nested-host-conditional-ranges\"\n ? \"conditional-ranges\"\n : plan.kind === \"nested-host-keyed-ranges\"\n ? \"keyed-ranges\"\n : \"mixed-ranges\";\n return t.objectExpression([\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(kind)),\n t.objectProperty(t.identifier(\"id\"), t.numericLiteral(plan.id)),\n t.objectProperty(\n t.identifier(\"ranges\"),\n t.arrayExpression(\n plan.kind === \"nested-host-conditional-ranges\"\n ? plan.ranges.map((range) => conditionalRangeObject(range, descriptorBlocks))\n : plan.kind === \"nested-host-keyed-ranges\"\n ? plan.ranges.map((range) => keyedRangeObject(range, descriptorBlocks))\n : plan.ranges.map((range) => mixedRangeObject(range, descriptorBlocks)),\n ),\n ),\n t.objectProperty(t.identifier(\"trailing\"), t.numericLiteral(plan.trailing)),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(plan.staticBindings.map(staticRangeBindingObject)),\n ),\n ...(plan.kind === \"nested-host-keyed-ranges\"\n ? [t.objectProperty(t.identifier(\"staticChildrenOnly\"), t.booleanLiteral(true))]\n : []),\n ]);\n}\n\nfunction mixedRangeObject(\n range: MixedRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>,\n): t.ObjectExpression {\n const value =\n range.rangeKind === \"conditional\"\n ? conditionalRangeObject(range, descriptorBlocks)\n : keyedRangeObject(range, descriptorBlocks);\n value.properties.unshift(\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(range.rangeKind)),\n );\n return value;\n}\n\nfunction mixedRangesBoundary(blockRuntime: t.Identifier, plan: MixedRangesPlan): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"MixedRanges\"),\n );\n const source = t.cloneNode(plan.source, true);\n const rootRefIndex = source.openingElement.attributes.findIndex(\n (attribute) => t.isJSXAttribute(attribute) && jsxAttributeName(attribute) === \"ref\",\n );\n const rootRef =\n rootRefIndex >= 0\n ? (source.openingElement.attributes.splice(rootRefIndex, 1)[0] as t.JSXAttribute)\n : undefined;\n const nestedPlan: NestedHostMixedRangesPlan = {\n kind: \"nested-host-mixed-ranges\",\n id: plan.id,\n parent: plan.parent,\n dependencies: plan.dependencies,\n source: plan.source,\n ranges: plan.ranges,\n trailing: plan.trailing,\n staticBindings: plan.staticBindings,\n };\n const descriptorBlocks = new Map(plan.descriptorBlocks);\n descriptorBlocks.set(plan.source, nestedPlan);\n const attributes: t.JSXAttribute[] = [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], source)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"create\"),\n t.jsxExpressionContainer(\n t.arrowFunctionExpression([], hostElementDescriptor(plan.source, descriptorBlocks)),\n ),\n ),\n ];\n if (rootRef?.value) {\n attributes.push(t.jsxAttribute(t.jsxIdentifier(\"rootRef\"), t.cloneNode(rootRef.value, true)));\n }\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction conditionalRangesBoundary(\n blockRuntime: t.Identifier,\n plan: ConditionalRangesPlan,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"ConditionalRanges\"),\n );\n const source = t.cloneNode(plan.source, true);\n const rootRefIndex = source.openingElement.attributes.findIndex(\n (attribute) =>\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n attribute.name.name === \"ref\",\n );\n const rootRef =\n rootRefIndex >= 0\n ? (source.openingElement.attributes.splice(rootRefIndex, 1)[0] as t.JSXAttribute)\n : undefined;\n const attributes: t.JSXAttribute[] = [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], source)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"ranges\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.ranges.map((range) => conditionalRangeObject(range, plan.descriptorBlocks)),\n ),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"trailing\"),\n t.jsxExpressionContainer(t.numericLiteral(plan.trailing)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"bindings\"),\n t.jsxExpressionContainer(\n t.arrayExpression(plan.staticBindings.map(staticRangeBindingObject)),\n ),\n ),\n ];\n if (rootRef?.value) {\n attributes.push(t.jsxAttribute(t.jsxIdentifier(\"rootRef\"), t.cloneNode(rootRef.value, true)));\n }\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction analyzeComponentIslandElement(\n element: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n allowedComponentNames: ReadonlySet<string>,\n): { dependencies?: number[]; reason?: string } {\n const name = element.openingElement.name;\n if (!t.isJSXIdentifier(name) || !isComponentName(name.name)) {\n return {\n reason: \"component islands require a direct component identifier\",\n };\n }\n if (!allowedComponentNames.has(name.name)) {\n return {\n reason: `component island ${name.name} must reference a stable module-level component`,\n };\n }\n if (meaningfulJsxChildren(element).length > 0) {\n return {\n reason: `component island ${name.name} does not support children yet`,\n };\n }\n\n const dependencies = new Set<number>();\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return {\n reason: `component island ${name.name} does not support JSX attribute spreads`,\n };\n }\n const attributeName = jsxAttributeName(attribute);\n if (!attributeName) {\n return {\n reason: `component island ${name.name} does not support namespaced JSX attributes`,\n };\n }\n if (attributeName === \"ref\" || attributeName === \"key\" || attributeName === \"children\") {\n return {\n reason: `component island ${name.name} does not support ${attributeName} yet`,\n };\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n const isEventFunction =\n /^on[A-Z]/.test(attributeName) &&\n (t.isArrowFunctionExpression(expression) || t.isFunctionExpression(expression));\n if (!isEventFunction) {\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) {\n return {\n reason: `component island ${name.name} prop ${attributeName} cannot use ${unsupported}`,\n };\n }\n }\n collectStateDependencies(expression, statesByValue).forEach((dependency) =>\n dependencies.add(dependency),\n );\n }\n\n return {\n dependencies: [...dependencies].sort((left, right) => left - right),\n };\n}\n\nfunction componentIslandBoundary(\n blockRuntime: t.Identifier,\n plan: ComponentIslandPlan,\n source: t.JSXElement,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"Component\"),\n );\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], t.cloneNode(source, true))),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\ninterface ComposableBlockAnalysis {\n plans?: ComposableBlockPlan[];\n componentElements?: Set<t.JSXElement>;\n conditionalExpressions?: Set<t.Expression>;\n ownedElements?: Set<t.JSXElement>;\n keyedExpressions?: Set<t.Expression>;\n reason?: string;\n}\n\nfunction analyzeComposableBlocks(\n root: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n allowedComponentNames: ReadonlySet<string>,\n): ComposableBlockAnalysis {\n const plans: ComposableBlockPlan[] = [];\n const componentElements = new Set<t.JSXElement>();\n const conditionalExpressions = new Set<t.Expression>();\n const ownedElements = new Set<t.JSXElement>();\n const keyedExpressions = new Set<t.Expression>();\n let nextId = 0;\n\n const mergeDependencies = (target: Set<number>, dependencies: Iterable<number>) => {\n for (const dependency of dependencies) target.add(dependency);\n };\n\n const visitHost = (\n element: t.JSXElement,\n parent: number | undefined,\n insideConditional: boolean,\n ): { dependencies: Set<number>; reason?: string } => {\n const dependencies = new Set<number>();\n if (!isHostElement(element)) {\n return {\n dependencies,\n reason: insideConditional\n ? \"conditional blocks currently support host elements only\"\n : \"compiled trees currently support host elements only\",\n };\n }\n\n if (insideConditional) {\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return {\n dependencies,\n reason: \"conditional blocks do not support JSX attribute spreads\",\n };\n }\n const name = jsxAttributeName(attribute);\n if (!name) {\n return {\n dependencies,\n reason: \"conditional blocks do not support namespaced JSX attributes\",\n };\n }\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return {\n dependencies,\n reason: `conditional block ${name} requires React ownership`,\n };\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression) ||\n /^on[A-Z]/.test(name)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return {\n dependencies,\n reason: \"conditional block styles must use one inline object literal\",\n };\n }\n for (const property of expression.properties) {\n if (!t.isObjectProperty(property) || property.computed) {\n return {\n dependencies,\n reason:\n \"conditional block styles do not support spreads, methods, or computed properties\",\n };\n }\n if (!t.isExpression(property.value)) {\n return {\n dependencies,\n reason: \"conditional block style properties must use expression values\",\n };\n }\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) {\n return {\n dependencies,\n reason: `conditional block style cannot use ${unsupported}`,\n };\n }\n mergeDependencies(\n dependencies,\n collectStateDependencies(property.value, statesByValue),\n );\n }\n continue;\n }\n\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) {\n return {\n dependencies,\n reason: `conditional block attribute ${name} cannot use ${unsupported}`,\n };\n }\n mergeDependencies(dependencies, collectStateDependencies(expression, statesByValue));\n }\n }\n\n for (const child of element.children) {\n if (t.isJSXFragment(child)) {\n if (insideConditional) {\n return {\n dependencies,\n reason: \"conditional blocks do not support fragments yet\",\n };\n }\n continue;\n }\n\n if (t.isJSXElement(child)) {\n if (isHostElement(child)) {\n const mixedRangeStart = nextId;\n const mixedRangeId = nextId++;\n const mixedRanges = insideConditional\n ? undefined\n : analyzeMixedRangesContainer(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n mixedRangeId,\n () => nextId++,\n );\n if (mixedRanges) {\n plans.push({\n kind: \"mixed-ranges\",\n id: mixedRangeId,\n parent,\n dependencies: mixedRanges.dependencies,\n source: child,\n ranges: mixedRanges.ranges,\n trailing: mixedRanges.trailing,\n staticBindings: mixedRanges.staticBindings,\n descriptorBlocks: mixedRanges.descriptorBlocks,\n });\n plans.push(...mixedRanges.nestedPlans);\n for (const range of mixedRanges.ranges) {\n if (range.rangeKind === \"conditional\") {\n conditionalExpressions.add(range.source);\n } else if (t.isJSXElement(range.source)) {\n ownedElements.add(range.source);\n } else {\n keyedExpressions.add(range.source);\n }\n }\n continue;\n }\n nextId = mixedRangeStart;\n const keyedRanges = insideConditional\n ? undefined\n : analyzeKeyedRangesContainer(child, statesByValue, safeGlobals, listNames);\n if (keyedRanges) {\n plans.push({\n kind: \"keyed-ranges\",\n id: nextId++,\n parent,\n dependencies: keyedRanges.dependencies,\n source: child,\n ranges: keyedRanges.ranges,\n trailing: keyedRanges.trailing,\n staticBindings: keyedRanges.staticBindings,\n });\n for (const range of keyedRanges.ranges) {\n if (t.isJSXElement(range.source)) ownedElements.add(range.source);\n else keyedExpressions.add(range.source);\n }\n continue;\n }\n const conditionalRangeStart = nextId;\n const conditionalRangeId = nextId++;\n const conditionalRanges = insideConditional\n ? undefined\n : analyzeConditionalRangesContainer(\n child,\n statesByValue,\n safeGlobals,\n false,\n listNames,\n conditionalRangeId,\n () => nextId++,\n );\n if (conditionalRanges) {\n plans.push({\n kind: \"conditional-ranges\",\n id: conditionalRangeId,\n parent,\n dependencies: conditionalRanges.dependencies,\n source: child,\n ranges: conditionalRanges.ranges,\n trailing: conditionalRanges.trailing,\n staticBindings: conditionalRanges.staticBindings,\n descriptorBlocks: conditionalRanges.descriptorBlocks,\n });\n plans.push(...(conditionalRanges.nestedPlans || []));\n for (const range of conditionalRanges.ranges) {\n conditionalExpressions.add(range.source);\n }\n continue;\n }\n nextId = conditionalRangeStart;\n const hostConditionalStart = nextId;\n const hostConditionalId = nextId++;\n const hostConditional = analyzeHostConditionalContainer(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n hostConditionalId,\n () => nextId++,\n );\n if (hostConditional) {\n plans.push({\n kind: \"host-conditional\",\n id: hostConditionalId,\n parent,\n source: child,\n ...hostConditional,\n });\n plans.push(...(hostConditional.nestedPlans || []));\n ownedElements.add(child);\n continue;\n }\n nextId = hostConditionalStart;\n const keyedRowsStart = nextId;\n const keyedRowsId = nextId++;\n const keyedRows = analyzeKeyedRowsContainer(child, statesByValue, safeGlobals, listNames);\n if (keyedRows) {\n const nestedStart = nextId;\n const hostBlocks = analyzeCompilerOwnedKeyedRowHostBlocks(\n keyedRows,\n statesByValue,\n safeGlobals,\n listNames,\n keyedRowsId,\n () => nextId++,\n );\n if (!hostBlocks) nextId = nestedStart;\n if (keyedRows.rowReason && !hostBlocks) {\n nextId = keyedRowsStart;\n const nested = visitHost(child, parent, insideConditional);\n if (nested.reason) return { dependencies, reason: nested.reason };\n mergeDependencies(dependencies, nested.dependencies);\n continue;\n }\n plans.push({\n kind: \"keyed-rows\",\n id: keyedRowsId,\n parent,\n dependencies: keyedRows.dependencies,\n source: child,\n collection: keyedRows.collection,\n collectionDependency: keyedRows.collectionDependency,\n structureDependencies: keyedRows.structureDependencies,\n keyCallback: keyedRows.keyCallback,\n renderCallback: keyedRows.renderCallback,\n row: hostBlocks?.row || keyedRows.row,\n bindings: hostBlocks?.bindings || keyedRows.bindings,\n events: keyedRows.events,\n conditionals: hostBlocks ? [] : keyedRows.conditionals,\n descriptorBlocks: hostBlocks?.descriptorBlocks,\n syntax: keyedRows.syntax,\n });\n plans.push(...(hostBlocks?.nestedPlans || []));\n ownedElements.add(child);\n continue;\n }\n nextId = keyedRowsStart;\n const nested = visitHost(child, parent, insideConditional);\n if (nested.reason) return { dependencies, reason: nested.reason };\n mergeDependencies(dependencies, nested.dependencies);\n continue;\n }\n\n if (isPublicListElement(child, listNames)) {\n const result = analyzePublicList(child, statesByValue, safeGlobals);\n if (result.reason) return { dependencies, reason: result.reason };\n const plan: KeyedListPlan = {\n kind: \"keyed-list\",\n id: nextId++,\n parent,\n dependencies: result.dependencies || [],\n source: child,\n syntax: \"list\",\n };\n plans.push(plan);\n ownedElements.add(child);\n continue;\n }\n\n const result = analyzeComponentIslandElement(\n child,\n statesByValue,\n safeGlobals,\n allowedComponentNames,\n );\n if (result.reason) return { dependencies, reason: result.reason };\n componentElements.add(child);\n if ((result.dependencies || []).length > 0) {\n plans.push({\n kind: \"component\",\n id: nextId++,\n parent,\n dependencies: result.dependencies || [],\n source: child,\n });\n }\n continue;\n }\n\n if (!t.isJSXExpressionContainer(child) || t.isJSXEmptyExpression(child.expression)) {\n continue;\n }\n\n const expression = child.expression;\n const shape = conditionalBlockShape(expression);\n if (shape) {\n const unsupported = validateDerivedExpression(shape.test, safeGlobals);\n if (unsupported) {\n return {\n dependencies,\n reason: `conditional block test cannot use ${unsupported}`,\n };\n }\n const plan: ConditionalBlockPlan = {\n kind: \"conditional\",\n id: nextId++,\n parent,\n dependencies: collectStateDependencies(shape.test, statesByValue),\n source: expression,\n };\n plans.push(plan);\n conditionalExpressions.add(expression);\n const ownedDependencies = new Set(plan.dependencies);\n for (const branch of shape.branches) {\n const nested = visitHost(branch, plan.id, true);\n if (nested.reason) return { dependencies, reason: nested.reason };\n mergeDependencies(ownedDependencies, nested.dependencies);\n }\n plan.dependencies = [...ownedDependencies].sort((left, right) => left - right);\n continue;\n }\n\n if (isMapCall(expression)) {\n const result = analyzeMapList(expression, statesByValue, safeGlobals);\n if (result.reason) return { dependencies, reason: result.reason };\n plans.push({\n kind: \"keyed-list\",\n id: nextId++,\n parent,\n dependencies: result.dependencies || [],\n source: expression,\n syntax: \"map\",\n });\n keyedExpressions.add(expression);\n continue;\n }\n\n if (insideConditional) {\n if (!isTextExpression(expression, statesByValue, safeGlobals)) {\n return {\n dependencies,\n reason: \"conditional block children must keep one supported block or static host tree\",\n };\n }\n mergeDependencies(dependencies, collectStateDependencies(expression, statesByValue));\n }\n }\n\n return { dependencies };\n };\n\n const rootMixedRangeStart = nextId;\n const rootMixedRangeId = nextId++;\n const rootMixedRanges = analyzeMixedRangesContainer(\n root,\n statesByValue,\n safeGlobals,\n listNames,\n rootMixedRangeId,\n () => nextId++,\n );\n if (rootMixedRanges) {\n plans.push({\n kind: \"mixed-ranges\",\n id: rootMixedRangeId,\n dependencies: rootMixedRanges.dependencies,\n source: root,\n ranges: rootMixedRanges.ranges,\n trailing: rootMixedRanges.trailing,\n staticBindings: rootMixedRanges.staticBindings,\n descriptorBlocks: rootMixedRanges.descriptorBlocks,\n });\n plans.push(...rootMixedRanges.nestedPlans);\n for (const range of rootMixedRanges.ranges) {\n if (range.rangeKind === \"conditional\") {\n conditionalExpressions.add(range.source);\n } else if (t.isJSXElement(range.source)) {\n ownedElements.add(range.source);\n } else {\n keyedExpressions.add(range.source);\n }\n }\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n }\n nextId = rootMixedRangeStart;\n\n const rootRanges = analyzeKeyedRangesContainer(root, statesByValue, safeGlobals, listNames, true);\n if (rootRanges) {\n plans.push({\n kind: \"keyed-ranges\",\n id: nextId++,\n dependencies: rootRanges.dependencies,\n source: root,\n ranges: rootRanges.ranges,\n trailing: rootRanges.trailing,\n staticBindings: rootRanges.staticBindings,\n });\n for (const range of rootRanges.ranges) {\n if (t.isJSXElement(range.source)) ownedElements.add(range.source);\n else keyedExpressions.add(range.source);\n }\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n }\n\n const rootConditionalRangeStart = nextId;\n const rootConditionalRangeId = nextId++;\n const rootConditionalRanges = analyzeConditionalRangesContainer(\n root,\n statesByValue,\n safeGlobals,\n true,\n listNames,\n rootConditionalRangeId,\n () => nextId++,\n );\n if (rootConditionalRanges) {\n plans.push({\n kind: \"conditional-ranges\",\n id: rootConditionalRangeId,\n dependencies: rootConditionalRanges.dependencies,\n source: root,\n ranges: rootConditionalRanges.ranges,\n trailing: rootConditionalRanges.trailing,\n staticBindings: rootConditionalRanges.staticBindings,\n descriptorBlocks: rootConditionalRanges.descriptorBlocks,\n });\n plans.push(...(rootConditionalRanges.nestedPlans || []));\n for (const range of rootConditionalRanges.ranges) {\n conditionalExpressions.add(range.source);\n }\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n }\n nextId = rootConditionalRangeStart;\n\n const result = visitHost(root, undefined, false);\n if (result.reason) return { reason: result.reason };\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n}\n\nfunction conditionalBlockBoundary(\n blockRuntime: t.Identifier,\n plan: ConditionalBlockPlan,\n source: t.Expression,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"Conditional\"),\n );\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(source))),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction lowerComposableBlocks(\n root: t.JSXElement,\n plans: readonly ComposableBlockPlan[],\n blockRuntime: t.Identifier,\n listNames: ReadonlySet<string>,\n keyedMapUpdateHints: boolean,\n keyedArrayFilterHintedStateIndices: ReadonlySet<number>,\n keyedArrayPrependHintedStateIndices: ReadonlySet<number>,\n keyedArrayPositionHintedStateIndices: ReadonlySet<number>,\n keyedArrayReorderHintedStateIndices: ReadonlySet<number>,\n): t.JSXElement {\n const planBySource = new Map<t.Node, ComposableBlockPlan>(\n plans.map((plan) => [plan.source, plan]),\n );\n const rootPlan = planBySource.get(root);\n if (rootPlan?.kind === \"mixed-ranges\") {\n return mixedRangesBoundary(blockRuntime, rootPlan);\n }\n if (rootPlan?.kind === \"keyed-ranges\") {\n return keyedRangesBoundary(blockRuntime, rootPlan);\n }\n if (rootPlan?.kind === \"conditional-ranges\") {\n return conditionalRangesBoundary(blockRuntime, rootPlan);\n }\n\n const visit = (element: t.JSXElement): void => {\n element.children = element.children.map((child) => {\n if (t.isJSXElement(child)) {\n const plan = planBySource.get(child);\n if (plan?.kind === \"host-conditional\") {\n return hostConditionalBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"mixed-ranges\") {\n return mixedRangesBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"keyed-rows\") {\n return keyedRowsBoundary(\n blockRuntime,\n plan,\n keyedMapUpdateHints,\n keyedArrayFilterHintedStateIndices,\n keyedArrayPrependHintedStateIndices,\n keyedArrayPositionHintedStateIndices,\n keyedArrayReorderHintedStateIndices,\n );\n }\n if (plan?.kind === \"keyed-ranges\") {\n return keyedRangesBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"conditional-ranges\") {\n return conditionalRangesBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"component\") {\n return componentIslandBoundary(blockRuntime, plan, child);\n }\n if (plan?.kind === \"keyed-list\" && isPublicListElement(child, listNames)) {\n return keyedListBoundary(blockRuntime, plan, child);\n }\n if (isHostElement(child)) visit(child);\n return child;\n }\n if (!t.isJSXExpressionContainer(child) || t.isJSXEmptyExpression(child.expression)) {\n return child;\n }\n\n const plan = planBySource.get(child.expression);\n if (plan?.kind === \"conditional\") {\n const shape = conditionalBlockShape(child.expression);\n for (const branch of shape?.branches || []) visit(branch);\n return conditionalBlockBoundary(blockRuntime, plan, child.expression);\n }\n if (plan?.kind === \"keyed-list\") {\n return keyedListBoundary(blockRuntime, plan, child.expression);\n }\n return child;\n });\n };\n\n visit(root);\n return root;\n}\n\nfunction assignStableBindingTargets(bindings: readonly PendingBinding[]): void {\n const targetByPath = new Map<string, number>();\n for (const binding of bindings) {\n if (binding.kind === \"block\") continue;\n const key = binding.path.join(\".\");\n let target = targetByPath.get(key);\n if (target === undefined) {\n target = targetByPath.size;\n targetByPath.set(key, target);\n }\n binding.target = target;\n }\n}\n\nfunction markShortCircuitBindings(bindings: readonly PendingBinding[]): void {\n for (const binding of bindings) {\n if (binding.kind === \"block\" || binding.dependencies.length < 2) continue;\n let shortCircuits = false;\n traverse(expressionFile(t.cloneNode(binding.value, true)), {\n ConditionalExpression(path) {\n shortCircuits = true;\n path.stop();\n },\n LogicalExpression(path) {\n shortCircuits = true;\n path.stop();\n },\n OptionalCallExpression(path) {\n shortCircuits = true;\n path.stop();\n },\n OptionalMemberExpression(path) {\n shortCircuits = true;\n path.stop();\n },\n });\n if (shortCircuits) binding.tracking = \"dynamic\";\n }\n}\n\nfunction lowerStableBindingTargets(\n root: t.JSXElement,\n bindings: readonly PendingBinding[],\n blockRuntime: t.Identifier,\n ownedElements: ReadonlySet<t.JSXElement>,\n): t.JSXElement {\n const targetByPath = new Map<string, number>();\n for (const binding of bindings) {\n if (binding.kind !== \"block\" && binding.target !== undefined) {\n targetByPath.set(binding.path.join(\".\"), binding.target);\n }\n }\n\n const visit = (element: t.JSXElement, path: number[]): void => {\n const target = targetByPath.get(path.join(\".\"));\n if (target !== undefined && path.length > 0) {\n element.openingElement.attributes.push(\n t.jsxAttribute(\n t.jsxIdentifier(\"ref\"),\n t.jsxExpressionContainer(\n t.callExpression(\n t.memberExpression(t.cloneNode(blockRuntime), t.identifier(\"target\")),\n [t.numericLiteral(target)],\n ),\n ),\n ),\n );\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child) || !isHostElement(child)) continue;\n if (ownedElements.has(child)) continue;\n visit(child, [...path, elementIndex]);\n elementIndex += 1;\n }\n };\n\n visit(root, []);\n return root;\n}\n\nfunction analyzeHostTree(\n root: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n conditionalExpressions: ReadonlySet<t.Expression>,\n keyedExpressions: ReadonlySet<t.Expression>,\n ownedElements: ReadonlySet<t.JSXElement>,\n componentElements: ReadonlySet<t.JSXElement>,\n): { bindings?: PendingBinding[]; reason?: string } {\n const bindings: PendingBinding[] = [];\n\n const analyzeStyle = (expression: t.Expression, path: number[]): string | undefined => {\n if (!t.isObjectExpression(expression)) {\n return \"stateful style bindings must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (!t.isObjectProperty(property) || property.computed) {\n return \"stateful style bindings do not support spreads, methods, or computed properties\";\n }\n const name = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!name || (name.includes(\"-\") && !name.startsWith(\"--\"))) {\n return \"stateful style property names must use camelCase or a CSS custom property\";\n }\n if (!t.isExpression(property.value)) {\n return `stateful style property ${name} must use an expression value`;\n }\n const dependencies = collectStateDependencies(property.value, statesByValue);\n if (dependencies.length === 0) continue;\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) return `stateful style property ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"style\",\n path: [...path],\n dependencies,\n name,\n value: cloneExpression(property.value),\n });\n }\n return undefined;\n };\n\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiled trees currently support host elements only\";\n }\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) return \"JSX attribute spreads are not supported yet\";\n const name = jsxAttributeName(attribute);\n if (!name) return \"namespaced JSX attributes are not supported yet\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return `${name} requires React ownership`;\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n const dependencies = collectStateDependencies(expression, statesByValue);\n if (dependencies.length === 0 || /^on[A-Z]/.test(name)) continue;\n if (name === \"style\") {\n const reason = analyzeStyle(expression, path);\n if (reason) return reason;\n continue;\n }\n if (name === \"children\" || name === \"key\") {\n return `stateful ${name} bindings are not supported yet`;\n }\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) return `stateful ${name} binding cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n dependencies,\n name,\n value: cloneExpression(expression),\n });\n }\n\n const nestedElements = element.children.filter(\n (child): child is t.JSXElement =>\n t.isJSXElement(child) && isHostElement(child) && !ownedElements.has(child),\n );\n const expressionChildren = element.children.filter((child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child),\n );\n for (const child of expressionChildren) {\n if (t.isJSXEmptyExpression(child.expression)) continue;\n if (conditionalExpressions.has(child.expression)) continue;\n if (keyedExpressions.has(child.expression)) continue;\n if (!isTextExpression(child.expression, statesByValue, safeGlobals)) {\n return \"dynamic child structures require React reconciliation\";\n }\n }\n\n const hasOwnedElement = element.children.some(\n (child) => t.isJSXElement(child) && ownedElements.has(child),\n );\n const hasComponentElement = element.children.some(\n (child) => t.isJSXElement(child) && componentElements.has(child),\n );\n const hasDynamicBlocks =\n hasOwnedElement ||\n hasComponentElement ||\n expressionChildren.some(\n (child) =>\n !t.isJSXEmptyExpression(child.expression) &&\n (conditionalExpressions.has(child.expression) || keyedExpressions.has(child.expression)),\n );\n if (nestedElements.length === 0 && !hasDynamicBlocks) {\n const dependencies = new Set<number>();\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n collectStateDependencies(child.expression, statesByValue).forEach((dependency) =>\n dependencies.add(dependency),\n );\n parts.push(cloneExpression(child.expression));\n }\n }\n if (dependencies.size > 0) {\n bindings.push({\n kind: \"text\",\n path: [...path],\n dependencies: [...dependencies].sort((left, right) => left - right),\n value: t.arrayExpression(parts),\n });\n }\n } else {\n for (const child of expressionChildren) {\n if (\n !t.isJSXEmptyExpression(child.expression) &&\n !conditionalExpressions.has(child.expression) &&\n !keyedExpressions.has(child.expression) &&\n collectStateDependencies(child.expression, statesByValue).length > 0\n ) {\n return \"mixed element and stateful text children are not supported yet\";\n }\n }\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child) || !isHostElement(child) || ownedElements.has(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n }\n\n return undefined;\n };\n\n const reason = visit(root, []);\n return reason ? { reason } : { bindings };\n}\n\nfunction lazyInitialValue(expression?: t.Expression): t.Expression {\n const value = t.identifier(\"_initial\");\n const initializer = expression ? cloneExpression(expression) : t.identifier(\"undefined\");\n return t.callExpression(\n t.arrowFunctionExpression(\n [],\n t.blockStatement([\n t.variableDeclaration(\"const\", [t.variableDeclarator(value, initializer)]),\n t.returnStatement(\n t.conditionalExpression(\n t.binaryExpression(\n \"===\",\n t.unaryExpression(\"typeof\", t.cloneNode(value)),\n t.stringLiteral(\"function\"),\n ),\n t.callExpression(t.cloneNode(value), []),\n t.cloneNode(value),\n ),\n ),\n ]),\n ),\n [],\n );\n}\n\nfunction analyzePropsParameter(\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>,\n): PropsPlan | string {\n const parameter = path.node.params[0];\n if (!parameter) {\n return {\n definitionParameter: path.scope.generateUidIdentifier(\"props\"),\n destructuredNames: new Set(),\n };\n }\n if (t.isIdentifier(parameter)) {\n return {\n definitionParameter: t.cloneNode(parameter, true) as t.Identifier,\n wrapperProps: t.cloneNode(parameter, true) as t.Identifier,\n destructuredNames: new Set(),\n };\n }\n if (!t.isObjectPattern(parameter)) {\n return \"components must use zero parameters, one props identifier, or flat object props destructuring\";\n }\n\n const localNames = new Set<string>();\n for (const property of parameter.properties) {\n if (t.isRestElement(property)) {\n return \"rest properties in component props destructuring are not supported yet\";\n }\n if (property.computed) {\n return \"computed component props destructuring is not supported yet\";\n }\n let local: t.Identifier | undefined;\n if (t.isIdentifier(property.value)) {\n local = property.value;\n } else if (t.isAssignmentPattern(property.value) && t.isIdentifier(property.value.left)) {\n local = property.value.left;\n }\n if (!local) {\n return \"nested component props destructuring is not supported yet\";\n }\n if (localNames.has(local.name)) {\n return \"component props destructuring local names must be unique\";\n }\n localNames.add(local.name);\n }\n\n const definitionParameter = path.scope.generateUidIdentifier(\"props\");\n return {\n definitionParameter,\n wrapperProps: t.objectExpression(\n [...localNames].map((name) =>\n t.objectProperty(t.identifier(name), t.identifier(name), false, true),\n ),\n ),\n destructuredNames: localNames,\n };\n}\n\nfunction bindingObject(\n binding: PendingBinding,\n propsParameter: t.Identifier,\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(binding.kind)),\n t.objectProperty(\n t.identifier(\"dependencies\"),\n t.arrayExpression(binding.dependencies.map((part) => t.numericLiteral(part))),\n ),\n ];\n if (binding.kind === \"block\") {\n properties.push(t.objectProperty(t.identifier(\"id\"), t.numericLiteral(binding.id)));\n if (binding.parent !== undefined) {\n properties.push(t.objectProperty(t.identifier(\"parent\"), t.numericLiteral(binding.parent)));\n }\n return t.objectExpression(properties);\n }\n properties.splice(\n 1,\n 0,\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(binding.path.map((part) => t.numericLiteral(part))),\n ),\n );\n if (binding.target !== undefined) {\n properties.splice(\n 2,\n 0,\n t.objectProperty(t.identifier(\"target\"), t.numericLiteral(binding.target)),\n );\n }\n if (binding.tracking) {\n properties.push(t.objectProperty(t.identifier(\"tracking\"), t.stringLiteral(binding.tracking)));\n }\n if (binding.name)\n properties.push(t.objectProperty(t.identifier(\"name\"), t.stringLiteral(binding.name)));\n properties.push(\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter), t.cloneNode(stateParameter)],\n rewriteStateAccess(binding.value, stateParameter, statesByValue, statesBySetter),\n ),\n ),\n );\n return t.objectExpression(properties);\n}\n\nfunction wrapperElement(definitionIdentifier: t.Identifier, props?: t.Expression): t.JSXElement {\n const name = t.jsxIdentifier(definitionIdentifier.name);\n const attributes = props ? [t.jsxSpreadAttribute(t.cloneNode(props))] : [];\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction compileCandidate(\n candidate: Candidate,\n createComponentIdentifier: t.Identifier,\n keyedMapUpdateIdentifier: t.Identifier,\n keyedArrayAppendIdentifier: t.Identifier,\n keyedArrayFilterIdentifier: t.Identifier,\n keyedArrayMapPipelineIdentifier: t.Identifier,\n keyedArrayMappedStructuralAppendIdentifier: t.Identifier,\n keyedArrayStructuralAppendMapPipelineIdentifier: t.Identifier,\n keyedArrayMappedStructuralPrependIdentifier: t.Identifier,\n keyedArrayStructuralPrependMapPipelineIdentifier: t.Identifier,\n keyedArrayQueuedMapPipelineIdentifier: t.Identifier,\n keyedArrayRollingWindowMapPipelineIdentifier: t.Identifier,\n keyedArrayMappedRollingWindowIdentifier: t.Identifier,\n keyedArrayMapReorderIdentifier: t.Identifier,\n keyedArrayMappedStructuralIdentifier: t.Identifier,\n keyedArrayPrependIdentifier: t.Identifier,\n keyedArrayPositionIdentifier: t.Identifier,\n keyedArrayBatchInsertIdentifier: t.Identifier,\n keyedArrayWindowReplaceIdentifier: t.Identifier,\n keyedArrayReorderIdentifier: t.Identifier,\n keyedArrayStructuralReorderIdentifier: t.Identifier,\n keyedArraySortIdentifier: t.Identifier,\n keyedArrayStructuralSortIdentifier: t.Identifier,\n keyedArrayRollingWindowIdentifier: t.Identifier,\n keyedArraySliceIdentifier: t.Identifier,\n keyedCollectionUpdateIdentifier: t.Identifier,\n keyedCollectionMutationIdentifier: t.Identifier,\n runtimeFeatureIdentifiers: ReadonlyMap<CompilerRuntimeFeatureName, t.Identifier>,\n usedRuntimeFeatures: Set<CompilerRuntimeFeatureName>,\n optimizationCounts: {\n keyedArrayAppendHints: number;\n keyedArrayFilterHints: number;\n keyedArrayPrependHints: number;\n keyedArrayPositionHints: number;\n keyedArrayReorderHints: number;\n keyedArraySortHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayRollingWindowHints: number;\n keyedArraySliceHints: number;\n keyedCollectionUpdateHints: number;\n keyedIdentityTargets: number;\n keyedMapLookupTargets: number;\n keyedMembershipTargets: number;\n keyedMapUpdateHints: number;\n },\n compilerUsage: {\n keyedArrayBatchInsertHints: number;\n keyedArrayMapReorderHints: number;\n keyedArrayMapSortHints: number;\n keyedArrayMapUpdateHints: number;\n keyedArrayMappedRollingWindowHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayMappedStructuralHints: number;\n keyedArrayMappedStructuralAppendHints: number;\n keyedArrayMappedStructuralPrependHints: number;\n keyedArrayQueuedMapUpdateHints: number;\n keyedArrayStructuralAppendMapHints: number;\n keyedArrayStructuralRollingWindowHints: number;\n keyedArrayStructuralPrependMapHints: number;\n keyedArrayStructuralReorderHints: number;\n keyedArrayStructuralSortHints: number;\n keyedArrayWindowReplaceHints: number;\n },\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n moduleId: string,\n reactivity: NormalizedReactCompilerOptions[\"reactivity\"],\n): string | undefined {\n const { path, name, statementPath } = candidate;\n if (path.node.async || path.node.generator)\n return \"async and generator components are not supported\";\n if (path.node.typeParameters) return \"generic components are not supported yet\";\n if (path.node.params.length > 1) return \"components must use at most one props parameter\";\n const propsPlan = analyzePropsParameter(path);\n if (typeof propsPlan === \"string\") return propsPlan;\n if (!t.isBlockStatement(path.node.body)) return \"components must use a block body\";\n const safeGlobals = new Set(\n [...SAFE_GLOBAL_CALLS, \"Math\"].filter((name) => !path.scope.getBinding(name)),\n );\n const globalCollections = new Set([\"Set\", \"Map\"].filter((name) => !path.scope.getBinding(name)));\n\n const states: StateBinding[] = [];\n const locals: LocalBinding[] = [];\n let returned: t.ReturnStatement | undefined;\n for (const statement of path.node.body.body) {\n if (t.isReturnStatement(statement)) {\n if (returned) return \"components must have one unconditional return\";\n returned = statement;\n continue;\n }\n if (t.isFunctionDeclaration(statement)) {\n if (!statement.id) return \"named event handler declarations must have a name\";\n if (statement.async || statement.generator || statement.typeParameters) {\n return `event handler ${statement.id.name} must be synchronous and non-generic`;\n }\n locals.push({\n kind: \"handler\",\n name: statement.id.name,\n value: t.toExpression(t.cloneNode(statement, true)) as t.FunctionExpression,\n });\n continue;\n }\n if (\n !t.isVariableDeclaration(statement) ||\n statement.kind !== \"const\" ||\n statement.declarations.length !== 1\n ) {\n return \"only top-level useState declarations, pure derived const values, named synchronous handlers, and one return are supported by the current compiler\";\n }\n const declaration = statement.declarations[0];\n if (t.isArrayPattern(declaration.id)) {\n if (\n declaration.id.elements.length !== 2 ||\n !t.isIdentifier(declaration.id.elements[0]) ||\n !t.isIdentifier(declaration.id.elements[1]) ||\n !isUseStateCall(declaration.init, useStateNames, reactNames) ||\n declaration.init.arguments.length > 1 ||\n (declaration.init.arguments[0] && !t.isExpression(declaration.init.arguments[0]))\n ) {\n return \"only const [value, setValue] = useState(initial) state declarations are supported\";\n }\n if (locals.length > 0) {\n return \"useState declarations must appear before derived local values and event handlers\";\n }\n states.push({\n valueName: declaration.id.elements[0].name,\n setterName: declaration.id.elements[1].name,\n index: states.length,\n initialValue: declaration.init.arguments[0] as t.Expression | undefined,\n });\n continue;\n }\n if (!t.isIdentifier(declaration.id) || !t.isExpression(declaration.init)) {\n return \"derived const values and event handlers must use one identifier and one expression\";\n }\n if (t.isArrowFunctionExpression(declaration.init) || t.isFunctionExpression(declaration.init)) {\n if (declaration.init.async || declaration.init.generator) {\n return `event handler ${declaration.id.name} must be synchronous`;\n }\n locals.push({\n kind: \"handler\",\n name: declaration.id.name,\n value: declaration.init,\n });\n } else {\n locals.push({\n kind: \"derived\",\n name: declaration.id.name,\n value: declaration.init,\n });\n }\n }\n\n if (states.length === 0) return \"no local useState binding was found\";\n if (!returned?.argument || !t.isJSXElement(returned.argument)) {\n return \"the component must return one host JSX element\";\n }\n\n const statesByValue = new Map(states.map((state) => [state.valueName, state]));\n const statesBySetter = new Map(states.map((state) => [state.setterName, state]));\n const localNames = new Set(locals.map((binding) => binding.name));\n if (localNames.size !== locals.length) return \"local binding names must be unique\";\n for (const state of states) {\n if (\n state.initialValue &&\n (collectStateDependencies(state.initialValue, statesByValue).length > 0 ||\n collectReferencedLocals(state.initialValue, localNames).length > 0 ||\n [...statesBySetter].some(([setterName]) =>\n referencesIdentifier(state.initialValue!, setterName),\n ))\n ) {\n return \"useState initializers cannot reference another local binding\";\n }\n }\n const derivedByName = new Map<string, t.Expression>();\n const handlersByName = new Map<string, HandlerBinding>();\n for (const binding of locals) {\n const forwardReferences = collectReferencedLocals(binding.value, localNames).filter(\n (reference) => !derivedByName.has(reference),\n );\n if (forwardReferences.length > 0) {\n return `${binding.kind === \"handler\" ? \"event handler\" : \"derived local\"} ${binding.name} can only reference earlier derived local values`;\n }\n const expanded = rewriteDerivedAccess(binding.value, derivedByName);\n if (binding.kind === \"handler\") {\n handlersByName.set(binding.name, {\n name: binding.name,\n value: expanded as t.ArrowFunctionExpression | t.FunctionExpression,\n });\n continue;\n }\n const unsupported = collectionPipelineMethod(expanded)\n ? validateCollectionPipeline(expanded, safeGlobals)\n : validateDerivedExpression(expanded, safeGlobals);\n if (unsupported) {\n return `derived local ${binding.name} cannot use ${unsupported}`;\n }\n derivedByName.set(binding.name, expanded);\n }\n const rootWithDerived = rewriteDerivedAccess(returned.argument, derivedByName) as t.JSXElement;\n const handlerRewrite = rewriteHandlerAccess(rootWithDerived, handlersByName);\n if (handlerRewrite.reason) return handlerRewrite.reason;\n if (!handlerRewrite.root) return \"event handlers could not be prepared safely\";\n const expandedRootWithDeferredEvents = rewriteDestructuredPropAccess(\n handlerRewrite.root,\n propsPlan.destructuredNames,\n propsPlan.definitionParameter,\n );\n const expandedRoot = stabilizeDeferredEventCurrentTargets(\n expandedRootWithDeferredEvents,\n new Set(states.map((state) => state.setterName)),\n );\n const setterReason = validateSetterUsage(expandedRoot, statesBySetter);\n if (setterReason) return setterReason;\n const referencedPropNames = collectDestructuredPropNames(\n expandedRoot,\n propsPlan.destructuredNames,\n propsPlan.definitionParameter,\n );\n // React children and identity-bearing values remain on React's normal prop\n // reconciliation path. Other flat destructured props get runtime-validated\n // primitive cells so the compiled render plan can stay mounted.\n let propBindings = referencedPropNames.has(\"children\")\n ? []\n : [...propsPlan.destructuredNames]\n .filter((propName) => referencedPropNames.has(propName))\n .map(\n (localName, propIndex): PropBinding => ({\n localName,\n valueName: path.scope.generateUidIdentifier(`farmProp${propIndex}`).name,\n index: states.length + propIndex,\n }),\n );\n const propBindingsByName = new Map(propBindings.map((binding) => [binding.localName, binding]));\n let reactiveByValue = new Map(statesByValue);\n for (const binding of propBindings) {\n reactiveByValue.set(binding.valueName, {\n valueName: binding.valueName,\n setterName: \"\",\n index: binding.index,\n });\n }\n let expandedReactiveRoot = rewriteTrackedPropAccess(\n expandedRoot,\n propsPlan.definitionParameter,\n propBindingsByName,\n ) as t.JSXElement;\n const referencedComponentNames = new Set<string>();\n traverse(expressionFile(t.cloneNode(expandedReactiveRoot, true)), {\n JSXOpeningElement(componentPath) {\n const componentName = componentPath.node.name;\n if (t.isJSXIdentifier(componentName) && isComponentName(componentName.name)) {\n referencedComponentNames.add(componentName.name);\n }\n },\n });\n const allowedComponentNames = new Set(\n [...referencedComponentNames].filter((componentName) => {\n if (listNames.has(componentName)) return false;\n const binding = path.scope.getBinding(componentName);\n return Boolean(\n binding?.constant &&\n binding.scope.path.isProgram() &&\n binding.kind !== \"let\" &&\n binding.kind !== \"var\",\n );\n }),\n );\n let blockAnalysis = analyzeComposableBlocks(\n expandedReactiveRoot,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n let analysis = analyzeHostTree(\n expandedReactiveRoot,\n reactiveByValue,\n safeGlobals,\n blockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n blockAnalysis.keyedExpressions || new Set<t.Expression>(),\n blockAnalysis.ownedElements || new Set<t.JSXElement>(),\n blockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (propBindings.length > 0 && (blockAnalysis.reason || analysis.reason)) {\n // Prop reactivity is optional inside an already eligible local-state\n // component. Preserve the established React prop path when the added prop\n // dependency makes a shape exceed the narrower prop-cell proof.\n propBindings = [];\n reactiveByValue = new Map(statesByValue);\n expandedReactiveRoot = t.cloneNode(expandedRoot, true);\n blockAnalysis = analyzeComposableBlocks(\n expandedReactiveRoot,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n analysis = analyzeHostTree(\n expandedReactiveRoot,\n reactiveByValue,\n safeGlobals,\n blockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n blockAnalysis.keyedExpressions || new Set<t.Expression>(),\n blockAnalysis.ownedElements || new Set<t.JSXElement>(),\n blockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n }\n if (blockAnalysis.reason) return blockAnalysis.reason;\n if (analysis.reason) return analysis.reason;\n const hintedStateIndices = new Set(\n (blockAnalysis.plans || [])\n .filter(\n (plan): plan is KeyedRowsPlan =>\n plan.kind === \"keyed-rows\" && plan.collectionDependency !== undefined,\n )\n .map((plan) => plan.collectionDependency as number),\n );\n const hintedRoot = rewriteKeyedMapUpdateHints(\n expandedReactiveRoot,\n hintedStateIndices,\n statesBySetter,\n keyedMapUpdateIdentifier,\n safeGlobals,\n );\n let appliedKeyedMapUpdateHints = 0;\n if (hintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n hintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n hintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = hintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedMapUpdateHints = hintedRoot.count;\n optimizationCounts.keyedMapUpdateHints += hintedRoot.count;\n }\n }\n const appendHintedStateIndices = new Set(hintedStateIndices);\n for (const plan of blockAnalysis.plans || []) {\n if (plan.kind !== \"keyed-rows\" || plan.collectionDependency === undefined) continue;\n const keyExpression = returnedExpression(plan.keyCallback);\n if (\n !keyExpression ||\n collectStateDependencies(keyExpression, reactiveByValue).includes(plan.collectionDependency)\n ) {\n // Appending changes collection-derived keys on every existing row. Do not\n // emit a suffix-only hint for any boundary that consumes this state.\n appendHintedStateIndices.delete(plan.collectionDependency);\n }\n }\n const appendHintedRoot = rewriteKeyedArrayAppendHints(\n expandedReactiveRoot,\n appendHintedStateIndices,\n statesBySetter,\n keyedArrayAppendIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayAppendHints = 0;\n if (appendHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n appendHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n appendHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = appendHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayAppendHints = appendHintedRoot.count;\n optimizationCounts.keyedArrayAppendHints += appendHintedRoot.count;\n }\n }\n const shiftedIndexIndependentStateIndices = new Set(hintedStateIndices);\n for (const plan of blockAnalysis.plans || []) {\n if (plan.kind !== \"keyed-rows\" || plan.collectionDependency === undefined) continue;\n const keyExpression = returnedExpression(plan.keyCallback);\n if (\n plan.renderCallback.params.length > 1 ||\n !keyExpression ||\n collectStateDependencies(keyExpression, reactiveByValue).includes(plan.collectionDependency)\n ) {\n // Removing or prepending rows shifts existing indexes. A row callback\n // that accepts the index, or a key that reads the whole collection,\n // must take the full reconciliation path so row state cannot go stale.\n shiftedIndexIndependentStateIndices.delete(plan.collectionDependency);\n }\n }\n const prependHintedRoot = rewriteKeyedArrayPrependHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayPrependIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayPrependHints = 0;\n let appliedPrependHintedStateIndices: ReadonlySet<number> = new Set();\n if (prependHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n prependHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n prependHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = prependHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayPrependHints = prependHintedRoot.count;\n appliedPrependHintedStateIndices = prependHintedRoot.stateIndices;\n optimizationCounts.keyedArrayPrependHints += prependHintedRoot.count;\n }\n }\n const rollingWindowHintedRoot = rewriteKeyedArrayRollingWindowHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArraySliceIdentifier,\n keyedArrayRollingWindowIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayRollingWindowHints = 0;\n let appliedRollingWindowHintedStateIndices: ReadonlySet<number> = new Set();\n if (rollingWindowHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n rollingWindowHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n rollingWindowHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = rollingWindowHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayRollingWindowHints = rollingWindowHintedRoot.count;\n appliedRollingWindowHintedStateIndices = rollingWindowHintedRoot.stateIndices;\n optimizationCounts.keyedArrayRollingWindowHints += rollingWindowHintedRoot.count;\n }\n }\n const positionHintedRoot = rewriteKeyedArrayPositionHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayPositionIdentifier,\n keyedArrayBatchInsertIdentifier,\n keyedArrayWindowReplaceIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayPositionHints = 0;\n let appliedKeyedArrayBatchInsertHints = 0;\n let appliedKeyedArrayWindowReplaceHints = 0;\n let appliedPositionHintedStateIndices: ReadonlySet<number> = new Set();\n if (positionHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n positionHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n positionHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = positionHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayPositionHints = positionHintedRoot.count;\n appliedKeyedArrayBatchInsertHints = positionHintedRoot.batchInsertCount;\n appliedKeyedArrayWindowReplaceHints = positionHintedRoot.windowReplaceCount;\n appliedPositionHintedStateIndices = positionHintedRoot.stateIndices;\n optimizationCounts.keyedArrayPositionHints += positionHintedRoot.count;\n compilerUsage.keyedArrayBatchInsertHints += positionHintedRoot.batchInsertCount;\n compilerUsage.keyedArrayWindowReplaceHints += positionHintedRoot.windowReplaceCount;\n }\n }\n const allowKeyedArrayMapPipelines = (blockAnalysis.plans || []).every(\n (plan) =>\n plan.kind !== \"keyed-rows\" ||\n (plan.conditionals.length === 0 && !plan.descriptorBlocks?.size),\n );\n const reorderPipelineHintedRoot = rewriteKeyedArrayReorderPipelineHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayFilterIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayMappedStructuralIdentifier,\n keyedArrayReorderIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArraySliceIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralSortIdentifier,\n safeGlobals,\n allowKeyedArrayMapPipelines,\n );\n let appliedPipelineFilterHints = 0;\n let appliedPipelineMapHints = 0;\n let appliedPipelineReorderHints = 0;\n let appliedPipelineSliceHints = 0;\n let appliedPipelineSortHints = 0;\n let appliedPipelineHintedStateIndices: ReadonlySet<number> = new Set();\n if (\n reorderPipelineHintedRoot.filterCount > 0 ||\n reorderPipelineHintedRoot.reorderCount > 0 ||\n reorderPipelineHintedRoot.sliceCount > 0 ||\n reorderPipelineHintedRoot.sortCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n reorderPipelineHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n reorderPipelineHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = reorderPipelineHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedPipelineFilterHints = reorderPipelineHintedRoot.filterCount;\n appliedPipelineMapHints = reorderPipelineHintedRoot.mapCount;\n appliedKeyedMapUpdateHints += reorderPipelineHintedRoot.mapCount;\n appliedPipelineReorderHints =\n reorderPipelineHintedRoot.reorderCount +\n reorderPipelineHintedRoot.terminalStructuralPipelineCount;\n appliedPipelineSliceHints = reorderPipelineHintedRoot.sliceCount;\n appliedPipelineSortHints = reorderPipelineHintedRoot.sortCount;\n appliedPipelineHintedStateIndices = reorderPipelineHintedRoot.stateIndices;\n optimizationCounts.keyedArrayFilterHints += reorderPipelineHintedRoot.filterCount;\n optimizationCounts.keyedMapUpdateHints += reorderPipelineHintedRoot.mapCount;\n optimizationCounts.keyedArrayReorderHints += reorderPipelineHintedRoot.reorderCount;\n optimizationCounts.keyedArraySliceHints += reorderPipelineHintedRoot.sliceCount;\n optimizationCounts.keyedArraySortHints += reorderPipelineHintedRoot.sortCount;\n compilerUsage.keyedArrayStructuralReorderHints +=\n reorderPipelineHintedRoot.structuralReorderCount;\n compilerUsage.keyedArrayStructuralSortHints += reorderPipelineHintedRoot.structuralSortCount;\n compilerUsage.keyedArrayMapUpdateHints += reorderPipelineHintedRoot.mapCount;\n compilerUsage.keyedArrayMapReorderHints += reorderPipelineHintedRoot.mapReorderCount;\n compilerUsage.keyedArrayMapSortHints += reorderPipelineHintedRoot.mapSortCount;\n compilerUsage.keyedArrayMappedStructuralHints +=\n reorderPipelineHintedRoot.terminalStructuralPipelineCount;\n }\n }\n const reorderHintedRoot = rewriteKeyedArrayReorderHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayReorderIdentifier,\n );\n let appliedKeyedArrayReorderHints = appliedPipelineReorderHints;\n let appliedReorderHintedStateIndices: ReadonlySet<number> = appliedPipelineHintedStateIndices;\n if (reorderHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n reorderHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n reorderHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = reorderHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayReorderHints += reorderHintedRoot.count;\n appliedReorderHintedStateIndices = new Set([\n ...appliedReorderHintedStateIndices,\n ...reorderHintedRoot.stateIndices,\n ]);\n optimizationCounts.keyedArrayReorderHints += reorderHintedRoot.count;\n }\n }\n const sortHintedRoot = rewriteKeyedArraySortHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArraySortIdentifier,\n safeGlobals,\n );\n let appliedKeyedArraySortHints = appliedPipelineSortHints;\n let appliedSortHintedStateIndices: ReadonlySet<number> = appliedPipelineHintedStateIndices;\n if (sortHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n sortHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n sortHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = sortHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArraySortHints += sortHintedRoot.count;\n appliedSortHintedStateIndices = new Set([\n ...appliedSortHintedStateIndices,\n ...sortHintedRoot.stateIndices,\n ]);\n optimizationCounts.keyedArraySortHints += sortHintedRoot.count;\n }\n }\n const sliceHintedRoot = rewriteKeyedArraySliceHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArraySliceIdentifier,\n safeGlobals,\n );\n let appliedKeyedArraySliceHints = appliedPipelineSliceHints;\n let appliedSliceHintedStateIndices: ReadonlySet<number> =\n appliedPipelineSliceHints > 0 ? appliedPipelineHintedStateIndices : new Set();\n if (sliceHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n sliceHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n sliceHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = sliceHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArraySliceHints += sliceHintedRoot.count;\n appliedSliceHintedStateIndices = new Set([\n ...appliedSliceHintedStateIndices,\n ...sliceHintedRoot.stateIndices,\n ]);\n optimizationCounts.keyedArraySliceHints += sliceHintedRoot.count;\n }\n }\n const filterHintedRoot = rewriteKeyedArrayFilterHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayFilterIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayFilterHints = appliedPipelineFilterHints;\n let appliedFilterHintedStateIndices: ReadonlySet<number> =\n appliedPipelineFilterHints > 0 ? appliedPipelineHintedStateIndices : new Set();\n if (filterHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n filterHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n filterHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = filterHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayFilterHints += filterHintedRoot.count;\n appliedFilterHintedStateIndices = new Set([\n ...appliedFilterHintedStateIndices,\n ...filterHintedRoot.stateIndices,\n ]);\n optimizationCounts.keyedArrayFilterHints += filterHintedRoot.count;\n }\n }\n const queuedMappedStructuralHintedRoot = rewriteQueuedKeyedArrayMappedStructuralHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayMappedStructuralIdentifier,\n keyedArrayFilterIdentifier,\n keyedArraySliceIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedQueuedMappedStructuralHints = 0;\n if (\n queuedMappedStructuralHintedRoot.mapCount > 0 &&\n queuedMappedStructuralHintedRoot.structuralCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedMappedStructuralHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedMappedStructuralHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedMappedStructuralHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedQueuedMappedStructuralHints =\n queuedMappedStructuralHintedRoot.mapCount +\n queuedMappedStructuralHintedRoot.structuralCount;\n appliedKeyedArrayReorderHints += queuedMappedStructuralHintedRoot.structuralCount;\n appliedReorderHintedStateIndices = new Set([\n ...appliedReorderHintedStateIndices,\n ...queuedMappedStructuralHintedRoot.stateIndices,\n ]);\n compilerUsage.keyedArrayMapUpdateHints += queuedMappedStructuralHintedRoot.mapCount;\n compilerUsage.keyedArrayQueuedMapUpdateHints += queuedMappedStructuralHintedRoot.mapCount;\n compilerUsage.keyedArrayMappedStructuralHints +=\n queuedMappedStructuralHintedRoot.structuralCount;\n }\n }\n const queuedStructuralMapHintedRoot = rewriteQueuedKeyedArrayStructuralMapHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayAppendIdentifier,\n keyedArrayMappedStructuralAppendIdentifier,\n keyedArrayStructuralAppendMapPipelineIdentifier,\n keyedArrayFilterIdentifier,\n keyedArraySliceIdentifier,\n keyedArrayMappedStructuralIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedQueuedStructuralMapHints = 0;\n let appliedQueuedStructuralAppendMapHints = 0;\n if (\n queuedStructuralMapHintedRoot.mapCount > 0 ||\n queuedStructuralMapHintedRoot.mappedStructuralAppendCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedStructuralMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedStructuralMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedStructuralMapHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedQueuedStructuralMapHints = queuedStructuralMapHintedRoot.mapCount;\n appliedQueuedStructuralAppendMapHints =\n queuedStructuralMapHintedRoot.structuralAppendMapCount +\n queuedStructuralMapHintedRoot.mappedStructuralAppendCount;\n appliedKeyedArrayReorderHints += queuedStructuralMapHintedRoot.mapCount;\n appliedReorderHintedStateIndices = new Set([\n ...appliedReorderHintedStateIndices,\n ...queuedStructuralMapHintedRoot.stateIndices,\n ]);\n compilerUsage.keyedArrayMapUpdateHints += queuedStructuralMapHintedRoot.mapCount;\n compilerUsage.keyedArrayMappedStructuralAppendHints +=\n queuedStructuralMapHintedRoot.mappedStructuralAppendCount;\n compilerUsage.keyedArrayStructuralAppendMapHints +=\n queuedStructuralMapHintedRoot.structuralAppendMapCount;\n }\n }\n const queuedStructuralPrependMapHintedRoot = rewriteQueuedKeyedArrayStructuralPrependMapHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayPrependIdentifier,\n keyedArrayMappedStructuralPrependIdentifier,\n keyedArrayStructuralPrependMapPipelineIdentifier,\n keyedArrayFilterIdentifier,\n keyedArraySliceIdentifier,\n keyedArrayMappedStructuralIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedQueuedStructuralPrependMapHints = 0;\n if (\n queuedStructuralPrependMapHintedRoot.structuralPrependMapCount > 0 ||\n queuedStructuralPrependMapHintedRoot.mappedStructuralPrependCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedStructuralPrependMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedStructuralPrependMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedStructuralPrependMapHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedQueuedStructuralPrependMapHints =\n queuedStructuralPrependMapHintedRoot.structuralPrependMapCount +\n queuedStructuralPrependMapHintedRoot.mappedStructuralPrependCount;\n compilerUsage.keyedArrayMappedStructuralPrependHints +=\n queuedStructuralPrependMapHintedRoot.mappedStructuralPrependCount;\n compilerUsage.keyedArrayStructuralPrependMapHints +=\n queuedStructuralPrependMapHintedRoot.structuralPrependMapCount;\n }\n }\n const queuedRollingWindowMapHintedRoot = rewriteQueuedKeyedArrayRollingWindowMapHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayRollingWindowMapPipelineIdentifier,\n keyedArrayMappedRollingWindowIdentifier,\n keyedArrayRollingWindowIdentifier,\n keyedArrayAppendIdentifier,\n keyedArrayMappedStructuralAppendIdentifier,\n keyedArrayStructuralAppendMapPipelineIdentifier,\n keyedArrayMappedStructuralIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedMappedRollingWindowHints = 0;\n let appliedMappedRollingWindowChainHints = 0;\n if (queuedRollingWindowMapHintedRoot.rollingWindowCount > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedRollingWindowMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedRollingWindowMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedRollingWindowMapHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedMappedRollingWindowHints =\n queuedRollingWindowMapHintedRoot.rollingWindowCount -\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n appliedMappedRollingWindowChainHints =\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n appliedQueuedStructuralAppendMapHints +=\n queuedRollingWindowMapHintedRoot.mappedRollingWindowCount +\n queuedRollingWindowMapHintedRoot.trailingMapCount;\n compilerUsage.keyedArrayMapUpdateHints +=\n queuedRollingWindowMapHintedRoot.leadingMapCount +\n queuedRollingWindowMapHintedRoot.trailingMapCount +\n queuedRollingWindowMapHintedRoot.chainedMapCount;\n compilerUsage.keyedArrayQueuedMapUpdateHints +=\n queuedRollingWindowMapHintedRoot.leadingMapCount;\n compilerUsage.keyedArrayStructuralAppendMapHints +=\n queuedRollingWindowMapHintedRoot.trailingMapCount;\n compilerUsage.keyedArrayMappedRollingWindowHints +=\n queuedRollingWindowMapHintedRoot.mappedRollingWindowCount +\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n compilerUsage.keyedArrayMappedRollingWindowChainHints +=\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n optimizationCounts.keyedArrayMappedRollingWindowChainHints +=\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n compilerUsage.keyedArrayMappedStructuralHints +=\n queuedRollingWindowMapHintedRoot.mappedRollingWindowCount;\n compilerUsage.keyedArrayStructuralRollingWindowHints +=\n queuedRollingWindowMapHintedRoot.structuralRollingWindowCount;\n }\n }\n const queuedMapReorderHintedRoot = rewriteQueuedKeyedArrayMapReorderHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayReorderIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArrayStructuralSortIdentifier,\n allowKeyedArrayMapPipelines,\n );\n const queuedReorderMapHintedRoot = rewriteQueuedKeyedArrayReorderMapHints(\n queuedMapReorderHintedRoot.root,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayReorderIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArrayStructuralSortIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedQueuedReorderMapHints = 0;\n const queuedMapCount = queuedMapReorderHintedRoot.mapCount + queuedReorderMapHintedRoot.mapCount;\n const queuedMapReorderCount =\n queuedMapReorderHintedRoot.mapReorderCount + queuedMapReorderHintedRoot.mapSortCount;\n if (queuedMapCount > 0 || queuedMapReorderCount > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedReorderMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedReorderMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedReorderMapHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedQueuedReorderMapHints = queuedMapCount + queuedMapReorderCount;\n compilerUsage.keyedArrayMapUpdateHints += queuedMapCount;\n compilerUsage.keyedArrayQueuedMapUpdateHints += queuedMapCount;\n compilerUsage.keyedArrayMapReorderHints += queuedMapReorderHintedRoot.mapReorderCount;\n compilerUsage.keyedArrayMapSortHints += queuedMapReorderHintedRoot.mapSortCount;\n }\n }\n const queuedStructuralReorderHintedRoot = rewriteQueuedKeyedArrayStructuralReorderHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedArrayFilterIdentifier,\n keyedArraySliceIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayMappedStructuralIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayReorderIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArrayStructuralSortIdentifier,\n allowKeyedArrayMapPipelines,\n );\n if (\n queuedStructuralReorderHintedRoot.reorderCount > 0 ||\n queuedStructuralReorderHintedRoot.sortCount > 0 ||\n queuedStructuralReorderHintedRoot.replacedQueuedMapCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedStructuralReorderHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedStructuralReorderHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedStructuralReorderHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n compilerUsage.keyedArrayQueuedMapUpdateHints -=\n queuedStructuralReorderHintedRoot.replacedQueuedMapCount;\n compilerUsage.keyedArrayMapReorderHints -=\n queuedStructuralReorderHintedRoot.replacedMapReorderCount;\n compilerUsage.keyedArrayMapSortHints -=\n queuedStructuralReorderHintedRoot.replacedMapSortCount;\n compilerUsage.keyedArrayStructuralReorderHints +=\n queuedStructuralReorderHintedRoot.reorderCount;\n compilerUsage.keyedArrayStructuralSortHints += queuedStructuralReorderHintedRoot.sortCount;\n }\n }\n const keyedCollectionTargetKinds = new Map<number, KeyedCollectionTargetKind>();\n const conflictingKeyedCollectionTargets = new Set<number>();\n for (const plan of blockAnalysis.plans || []) {\n if (plan.kind !== \"keyed-rows\") continue;\n for (const binding of plan.bindings) {\n const target = binding.membershipTarget || binding.mapLookupTarget;\n if (!target) continue;\n const kind: KeyedCollectionTargetKind = binding.membershipTarget ? \"set\" : \"map\";\n const previousKind = keyedCollectionTargetKinds.get(target.dependency);\n if (previousKind && previousKind !== kind) {\n conflictingKeyedCollectionTargets.add(target.dependency);\n } else {\n keyedCollectionTargetKinds.set(target.dependency, kind);\n }\n }\n }\n for (const dependency of conflictingKeyedCollectionTargets) {\n keyedCollectionTargetKinds.delete(dependency);\n }\n const keyedCollectionHintedRoot = rewriteKeyedCollectionUpdateHints(\n expandedReactiveRoot,\n keyedCollectionTargetKinds,\n states,\n statesBySetter,\n keyedCollectionUpdateIdentifier,\n keyedCollectionMutationIdentifier,\n globalCollections,\n );\n if (keyedCollectionHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n keyedCollectionHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n keyedCollectionHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = keyedCollectionHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n optimizationCounts.keyedCollectionUpdateHints += keyedCollectionHintedRoot.count;\n }\n }\n const blockPlans = blockAnalysis.plans || [];\n optimizationCounts.keyedIdentityTargets += blockPlans.reduce(\n (count, plan) =>\n count +\n (plan.kind === \"keyed-rows\"\n ? plan.bindings.filter((binding) => binding.identityTarget !== undefined).length\n : 0),\n 0,\n );\n optimizationCounts.keyedMembershipTargets += blockPlans.reduce(\n (count, plan) =>\n count +\n (plan.kind === \"keyed-rows\"\n ? plan.bindings.filter((binding) => binding.membershipTarget !== undefined).length\n : 0),\n 0,\n );\n optimizationCounts.keyedMapLookupTargets += blockPlans.reduce(\n (count, plan) =>\n count +\n (plan.kind === \"keyed-rows\"\n ? plan.bindings.filter((binding) => binding.mapLookupTarget !== undefined).length\n : 0),\n 0,\n );\n const hasKeyedUpdateHints =\n appliedKeyedMapUpdateHints > 0 ||\n appliedKeyedArrayAppendHints > 0 ||\n appliedKeyedArrayFilterHints > 0 ||\n appliedKeyedArrayPrependHints > 0 ||\n appliedKeyedArrayPositionHints > 0 ||\n appliedKeyedArrayReorderHints > 0 ||\n appliedKeyedArraySortHints > 0 ||\n appliedKeyedArrayRollingWindowHints > 0 ||\n appliedKeyedArraySliceHints > 0;\n const hasKeyedArrayRemovalHints =\n appliedKeyedArrayFilterHints > 0 ||\n appliedKeyedArrayRollingWindowHints > 0 ||\n appliedKeyedArraySliceHints > 0;\n const runtimeFeatures = runtimeFeaturesForPlans(\n blockPlans,\n hasKeyedUpdateHints,\n hasKeyedArrayRemovalHints,\n (appliedKeyedArrayAppendHints > 0 &&\n (appliedKeyedArrayFilterHints > 0 || appliedKeyedArraySliceHints > 0)) ||\n compilerUsage.keyedArrayStructuralRollingWindowHints > 0,\n appliedQueuedStructuralAppendMapHints > 0,\n appliedKeyedArrayPrependHints > 0,\n appliedKeyedArrayPrependHints > 0 && hasKeyedArrayRemovalHints,\n appliedQueuedStructuralPrependMapHints > 0,\n appliedKeyedArrayPositionHints > 0,\n appliedKeyedArrayBatchInsertHints > 0,\n appliedKeyedArrayWindowReplaceHints > 0,\n appliedKeyedArrayReorderHints > 0 || appliedKeyedArraySortHints > 0,\n appliedPipelineMapHints > 0 ||\n appliedQueuedReorderMapHints > 0 ||\n appliedQueuedMappedStructuralHints > 0 ||\n appliedQueuedStructuralMapHints > 0,\n appliedMappedRollingWindowChainHints > 0,\n appliedKeyedArrayRollingWindowHints > appliedMappedRollingWindowHints,\n );\n markShortCircuitBindings(analysis.bindings || []);\n assignStableBindingTargets(analysis.bindings || []);\n\n const stateParameter = path.scope.generateUidIdentifier(\"farmState\");\n const blockParameter = path.scope.generateUidIdentifier(\"farmBlocks\");\n const definitionIdentifier = path.scope.generateUidIdentifier(`${name}Compiled`);\n const propsParameter = propsPlan.definitionParameter;\n const rootWithTargets = lowerStableBindingTargets(\n expandedReactiveRoot,\n analysis.bindings || [],\n blockParameter,\n blockAnalysis.ownedElements || new Set<t.JSXElement>(),\n );\n const appliedRemovalHintedStateIndices = new Set([\n ...appliedFilterHintedStateIndices,\n ...appliedRollingWindowHintedStateIndices,\n ...appliedSliceHintedStateIndices,\n ]);\n const rootWithBlocks = lowerComposableBlocks(\n rootWithTargets,\n blockPlans,\n blockParameter,\n listNames,\n hasKeyedUpdateHints,\n appliedRemovalHintedStateIndices,\n appliedPrependHintedStateIndices,\n appliedPositionHintedStateIndices,\n new Set([...appliedReorderHintedStateIndices, ...appliedSortHintedStateIndices]),\n );\n const rewrittenRoot = rewriteStateAccess(\n rootWithBlocks,\n stateParameter,\n reactiveByValue,\n statesBySetter,\n ) as t.JSXElement;\n const definition = t.callExpression(t.cloneNode(createComponentIdentifier), [\n t.objectExpression([\n t.objectProperty(t.identifier(\"displayName\"), t.stringLiteral(name)),\n t.objectProperty(t.identifier(\"reactivity\"), t.stringLiteral(reactivity)),\n t.spreadElement(\n t.conditionalExpression(\n t.memberExpression(\n t.metaProperty(t.identifier(\"import\"), t.identifier(\"meta\")),\n t.identifier(\"hot\"),\n ),\n t.objectExpression([\n t.objectProperty(t.identifier(\"hmrId\"), t.stringLiteral(`${moduleId}#${name}`)),\n t.objectProperty(\n t.identifier(\"stateSignature\"),\n t.stringLiteral(\n propBindings.length === 0\n ? String(states.length)\n : `${states.length}:${propBindings.map((binding) => binding.localName).join(\",\")}`,\n ),\n ),\n ]),\n t.objectExpression([]),\n ),\n ),\n t.objectProperty(\n t.identifier(\"initialize\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter)],\n t.arrayExpression(\n states.map((state) =>\n lazyInitialValue(\n state.initialValue\n ? rewriteDestructuredPropAccess(\n state.initialValue,\n propsPlan.destructuredNames,\n propsParameter,\n )\n : undefined,\n ),\n ),\n ),\n ),\n ),\n ...(propBindings.length > 0\n ? [\n t.objectProperty(\n t.identifier(\"readProps\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter)],\n t.arrayExpression(\n propBindings.map((binding) =>\n t.memberExpression(\n t.cloneNode(propsParameter),\n t.identifier(binding.localName),\n ),\n ),\n ),\n ),\n ),\n ]\n : []),\n t.objectProperty(\n t.identifier(\"render\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter), t.cloneNode(stateParameter), t.cloneNode(blockParameter)],\n rewrittenRoot,\n ),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(\n [\n ...(analysis.bindings || []),\n ...blockPlans.map((block) => ({\n kind: \"block\" as const,\n id: block.id,\n parent: block.parent,\n dependencies: block.dependencies,\n })),\n ].map((binding) =>\n bindingObject(binding, propsParameter, stateParameter, reactiveByValue, statesBySetter),\n ),\n ),\n ),\n ]),\n t.arrayExpression(\n runtimeFeatures.map((feature) => t.cloneNode(runtimeFeatureIdentifiers.get(feature)!)),\n ),\n ]);\n\n path\n .get(\"body\")\n .replaceWith(\n t.blockStatement([\n t.returnStatement(wrapperElement(definitionIdentifier, propsPlan.wrapperProps)),\n ]),\n );\n statementPath.insertAfter(\n t.variableDeclaration(\"const\", [t.variableDeclarator(definitionIdentifier, definition)]),\n );\n for (const feature of runtimeFeatures) usedRuntimeFeatures.add(feature);\n return undefined;\n}\n\nfunction collectCandidates(programPath: NodePath<t.Program>): Candidate[] {\n const candidates: Candidate[] = [];\n programPath.traverse({\n FunctionDeclaration(path) {\n if (!path.node.id || !isComponentName(path.node.id.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isProgram() &&\n !parent.isExportNamedDeclaration() &&\n !parent.isExportDefaultDeclaration()\n ) {\n return;\n }\n candidates.push({\n name: path.node.id.name,\n path,\n statementPath: parent.isProgram() ? path : parent,\n });\n },\n VariableDeclarator(path) {\n if (\n !t.isIdentifier(path.node.id) ||\n !isComponentName(path.node.id.name) ||\n (!t.isFunctionExpression(path.node.init) && !t.isArrowFunctionExpression(path.node.init))\n ) {\n return;\n }\n const declaration = path.parentPath;\n const statement = declaration.parentPath;\n if (!statement) return;\n const topLevel = statement.isProgram()\n ? declaration\n : statement.isExportNamedDeclaration() && statement.parentPath.isProgram()\n ? statement\n : null;\n if (!topLevel) return;\n candidates.push({\n name: path.node.id.name,\n path: path.get(\"init\") as Candidate[\"path\"],\n statementPath: topLevel,\n });\n },\n });\n return candidates;\n}\n\nexport async function compileReactModule(\n code: string,\n id: string,\n options: NormalizedReactCompilerOptions,\n): Promise<CompileReactModuleResult> {\n const compiled: string[] = [];\n const diagnostics: CompilerDiagnostic[] = [];\n const optimizationCounts = {\n keyedArrayAppendHints: 0,\n keyedArrayFilterHints: 0,\n keyedArrayPrependHints: 0,\n keyedArrayPositionHints: 0,\n keyedArrayReorderHints: 0,\n keyedArraySortHints: 0,\n keyedArrayMappedRollingWindowChainHints: 0,\n keyedArrayRollingWindowHints: 0,\n keyedArraySliceHints: 0,\n keyedCollectionUpdateHints: 0,\n keyedIdentityTargets: 0,\n keyedMapLookupTargets: 0,\n keyedMembershipTargets: 0,\n keyedMapUpdateHints: 0,\n };\n const compilerUsage = {\n keyedArrayBatchInsertHints: 0,\n keyedArrayMapReorderHints: 0,\n keyedArrayMapSortHints: 0,\n keyedArrayMapUpdateHints: 0,\n keyedArrayMappedRollingWindowHints: 0,\n keyedArrayMappedRollingWindowChainHints: 0,\n keyedArrayMappedStructuralHints: 0,\n keyedArrayMappedStructuralAppendHints: 0,\n keyedArrayMappedStructuralPrependHints: 0,\n keyedArrayQueuedMapUpdateHints: 0,\n keyedArrayStructuralAppendMapHints: 0,\n keyedArrayStructuralRollingWindowHints: 0,\n keyedArrayStructuralPrependMapHints: 0,\n keyedArrayStructuralReorderHints: 0,\n keyedArrayStructuralSortHints: 0,\n keyedArrayWindowReplaceHints: 0,\n };\n const plugin = (): PluginObj => ({\n name: \"farm-react-aot\",\n visitor: {\n Program(programPath) {\n const moduleDirectives = new Set(directiveValues(programPath.node));\n const useStateNames = new Set<string>();\n const reactNames = new Set<string>();\n const listNames = new Set<string>();\n for (const statement of programPath.node.body) {\n if (!t.isImportDeclaration(statement)) continue;\n if (statement.source.value === \"@farm.js/react/list\") {\n for (const specifier of statement.specifiers) {\n if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: \"List\" })\n ) {\n listNames.add(specifier.local.name);\n }\n }\n continue;\n }\n if (statement.source.value !== \"react\") continue;\n for (const specifier of statement.specifiers) {\n if (t.isImportDefaultSpecifier(specifier) || t.isImportNamespaceSpecifier(specifier)) {\n reactNames.add(specifier.local.name);\n } else if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: \"useState\" })\n ) {\n useStateNames.add(specifier.local.name);\n }\n }\n }\n\n const candidates = collectCandidates(programPath);\n const createComponentIdentifier =\n programPath.scope.generateUidIdentifier(\"createCompiledComponent\");\n const keyedMapUpdateIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedMapUpdate\",\n );\n const keyedArrayAppendIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayAppend\",\n );\n const keyedArrayFilterIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayFilter\",\n );\n const keyedArrayMapPipelineIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMapPipeline\",\n );\n const keyedArrayMappedStructuralAppendIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMappedStructuralAppend\",\n );\n const keyedArrayStructuralAppendMapPipelineIdentifier =\n programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayStructuralAppendMapPipeline\",\n );\n const keyedArrayMappedStructuralPrependIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMappedStructuralPrepend\",\n );\n const keyedArrayStructuralPrependMapPipelineIdentifier =\n programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayStructuralPrependMapPipeline\",\n );\n const keyedArrayQueuedMapPipelineIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayQueuedMapPipeline\",\n );\n const keyedArrayRollingWindowMapPipelineIdentifier =\n programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayRollingWindowMapPipeline\",\n );\n const keyedArrayMappedRollingWindowIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMappedRollingWindow\",\n );\n const keyedArrayMapReorderIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMapReorder\",\n );\n const keyedArrayMappedStructuralIdentifier = programPath.scope.generateUidIdentifier(\n \"finalizeCompilerKeyedArrayMappedStructuralUpdate\",\n );\n const keyedArrayPrependIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayPrepend\",\n );\n const keyedArrayPositionIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayPositionUpdate\",\n );\n const keyedArrayBatchInsertIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayBatchInsert\",\n );\n const keyedArrayWindowReplaceIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayWindowReplace\",\n );\n const keyedArrayReorderIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayReorder\",\n );\n const keyedArrayStructuralReorderIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayStructuralReorder\",\n );\n const keyedArraySortIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArraySort\",\n );\n const keyedArrayStructuralSortIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayStructuralSort\",\n );\n const keyedArrayRollingWindowIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayRollingWindow\",\n );\n const keyedArraySliceIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArraySlice\",\n );\n const keyedCollectionUpdateIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedCollectionUpdate\",\n );\n const keyedCollectionMutationIdentifier = programPath.scope.generateUidIdentifier(\n \"applyCompilerKeyedCollectionMutation\",\n );\n const runtimeFeatureIdentifiers = new Map<CompilerRuntimeFeatureName, t.Identifier>(\n Object.entries(COMPILER_RUNTIME_FEATURE_EXPORTS).map(([feature, exportName]) => [\n feature as CompilerRuntimeFeatureName,\n programPath.scope.generateUidIdentifier(exportName),\n ]),\n );\n const usedRuntimeFeatures = new Set<CompilerRuntimeFeatureName>();\n for (const candidate of candidates) {\n const functionDirectives = new Set(\n t.isBlockStatement(candidate.path.node.body)\n ? directiveValues(candidate.path.node.body)\n : [],\n );\n const explicitlySelected =\n moduleDirectives.has(options.directive) || functionDirectives.has(options.directive);\n if (functionDirectives.has(\"use no compiler\")) continue;\n if (options.mode === \"annotation\" && !explicitlySelected) continue;\n\n const reason = compileCandidate(\n candidate,\n createComponentIdentifier,\n keyedMapUpdateIdentifier,\n keyedArrayAppendIdentifier,\n keyedArrayFilterIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayMappedStructuralAppendIdentifier,\n keyedArrayStructuralAppendMapPipelineIdentifier,\n keyedArrayMappedStructuralPrependIdentifier,\n keyedArrayStructuralPrependMapPipelineIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayRollingWindowMapPipelineIdentifier,\n keyedArrayMappedRollingWindowIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayMappedStructuralIdentifier,\n keyedArrayPrependIdentifier,\n keyedArrayPositionIdentifier,\n keyedArrayBatchInsertIdentifier,\n keyedArrayWindowReplaceIdentifier,\n keyedArrayReorderIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralSortIdentifier,\n keyedArrayRollingWindowIdentifier,\n keyedArraySliceIdentifier,\n keyedCollectionUpdateIdentifier,\n keyedCollectionMutationIdentifier,\n runtimeFeatureIdentifiers,\n usedRuntimeFeatures,\n optimizationCounts,\n compilerUsage,\n useStateNames,\n reactNames,\n listNames,\n id,\n options.reactivity,\n );\n if (reason) {\n diagnostics.push({\n component: candidate.name,\n reason,\n selected: explicitlySelected,\n });\n } else {\n compiled.push(candidate.name);\n }\n }\n\n const hasEagerKeyedArrayMapUpdateHints =\n compilerUsage.keyedArrayMapUpdateHints >\n compilerUsage.keyedArrayQueuedMapUpdateHints +\n compilerUsage.keyedArrayStructuralAppendMapHints +\n compilerUsage.keyedArrayStructuralPrependMapHints;\n const hasKeyedArrayMapReorderHints =\n compilerUsage.keyedArrayMapReorderHints + compilerUsage.keyedArrayMapSortHints > 0;\n const hasKeyedArrayStructuralAppendHints =\n (optimizationCounts.keyedArrayAppendHints > 0 &&\n (optimizationCounts.keyedArrayFilterHints > 0 ||\n optimizationCounts.keyedArraySliceHints > 0)) ||\n compilerUsage.keyedArrayStructuralRollingWindowHints > 0;\n const hasUnmappedKeyedArrayAppendHints =\n optimizationCounts.keyedArrayAppendHints >\n compilerUsage.keyedArrayMappedStructuralAppendHints;\n const hasKeyedArrayStructuralPrependHints =\n optimizationCounts.keyedArrayPrependHints > 0 &&\n (optimizationCounts.keyedArrayFilterHints > 0 ||\n optimizationCounts.keyedArraySliceHints > 0);\n const hasUnmappedKeyedArrayPrependHints =\n optimizationCounts.keyedArrayPrependHints >\n compilerUsage.keyedArrayMappedStructuralPrependHints;\n if (compiled.length > 0) {\n programPath.unshiftContainer(\n \"body\",\n t.importDeclaration(\n [\n t.importSpecifier(\n createComponentIdentifier,\n t.identifier(\"createCompiledComponentWithFeatures\"),\n ),\n ...(optimizationCounts.keyedMapUpdateHints > compilerUsage.keyedArrayMapUpdateHints\n ? [\n t.importSpecifier(\n keyedMapUpdateIdentifier,\n t.identifier(\"createCompilerKeyedMapUpdate\"),\n ),\n ]\n : []),\n ...(hasEagerKeyedArrayMapUpdateHints\n ? [\n t.importSpecifier(\n keyedArrayMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayMapPipeline\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayStructuralAppendMapHints > 0\n ? [\n t.importSpecifier(\n keyedArrayStructuralAppendMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayStructuralAppendMapPipeline\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayStructuralPrependMapHints > 0\n ? [\n t.importSpecifier(\n keyedArrayStructuralPrependMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayStructuralPrependMapPipeline\"),\n ),\n ]\n : []),\n ...(hasKeyedArrayMapReorderHints\n ? [\n t.importSpecifier(\n keyedArrayMapReorderIdentifier,\n t.identifier(\"createCompilerKeyedArrayMapReorder\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedStructuralHints > 0\n ? [\n t.importSpecifier(\n keyedArrayMappedStructuralIdentifier,\n t.identifier(\"finalizeCompilerKeyedArrayMappedStructuralUpdate\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedStructuralAppendHints > 0 ||\n compilerUsage.keyedArrayMappedRollingWindowHints >\n compilerUsage.keyedArrayMappedRollingWindowChainHints\n ? [\n t.importSpecifier(\n keyedArrayMappedStructuralAppendIdentifier,\n t.identifier(\"createCompilerKeyedArrayMappedStructuralAppend\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedStructuralPrependHints > 0\n ? [\n t.importSpecifier(\n keyedArrayMappedStructuralPrependIdentifier,\n t.identifier(\"createCompilerKeyedArrayMappedStructuralPrepend\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayQueuedMapUpdateHints > 0\n ? [\n t.importSpecifier(\n keyedArrayQueuedMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayQueuedMapPipeline\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedRollingWindowChainHints > 0\n ? [\n t.importSpecifier(\n keyedArrayRollingWindowMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayRollingWindowMapPipeline\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedRollingWindowChainHints > 0\n ? [\n t.importSpecifier(\n keyedArrayMappedRollingWindowIdentifier,\n t.identifier(\"createCompilerKeyedArrayMappedRollingWindow\"),\n ),\n ]\n : []),\n ...(hasUnmappedKeyedArrayAppendHints ||\n compilerUsage.keyedArrayStructuralRollingWindowHints > 0\n ? [\n t.importSpecifier(\n keyedArrayAppendIdentifier,\n t.identifier(\n hasKeyedArrayStructuralAppendHints\n ? \"createCompilerKeyedArrayStructuralAppend\"\n : \"createCompilerKeyedArrayAppend\",\n ),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArrayFilterHints > 0\n ? [\n t.importSpecifier(\n keyedArrayFilterIdentifier,\n t.identifier(\"createCompilerKeyedArrayFilter\"),\n ),\n ]\n : []),\n ...(hasUnmappedKeyedArrayPrependHints\n ? [\n t.importSpecifier(\n keyedArrayPrependIdentifier,\n t.identifier(\n hasKeyedArrayStructuralPrependHints\n ? \"createCompilerKeyedArrayStructuralPrepend\"\n : \"createCompilerKeyedArrayPrepend\",\n ),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArrayPositionHints >\n compilerUsage.keyedArrayBatchInsertHints +\n compilerUsage.keyedArrayWindowReplaceHints\n ? [\n t.importSpecifier(\n keyedArrayPositionIdentifier,\n t.identifier(\"createCompilerKeyedArrayPositionUpdate\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayBatchInsertHints > 0\n ? [\n t.importSpecifier(\n keyedArrayBatchInsertIdentifier,\n t.identifier(\"createCompilerKeyedArrayBatchInsert\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayWindowReplaceHints > 0\n ? [\n t.importSpecifier(\n keyedArrayWindowReplaceIdentifier,\n t.identifier(\"createCompilerKeyedArrayWindowReplace\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArrayReorderHints >\n compilerUsage.keyedArrayStructuralReorderHints +\n compilerUsage.keyedArrayMapReorderHints\n ? [\n t.importSpecifier(\n keyedArrayReorderIdentifier,\n t.identifier(\"createCompilerKeyedArrayReorder\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayStructuralReorderHints > 0\n ? [\n t.importSpecifier(\n keyedArrayStructuralReorderIdentifier,\n t.identifier(\"createCompilerKeyedArrayStructuralReorder\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArraySortHints >\n compilerUsage.keyedArrayStructuralSortHints + compilerUsage.keyedArrayMapSortHints\n ? [\n t.importSpecifier(\n keyedArraySortIdentifier,\n t.identifier(\"createCompilerKeyedArraySort\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayStructuralSortHints > 0\n ? [\n t.importSpecifier(\n keyedArrayStructuralSortIdentifier,\n t.identifier(\"createCompilerKeyedArrayStructuralSort\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArrayRollingWindowHints >\n compilerUsage.keyedArrayMappedRollingWindowHints +\n compilerUsage.keyedArrayStructuralRollingWindowHints\n ? [\n t.importSpecifier(\n keyedArrayRollingWindowIdentifier,\n t.identifier(\"createCompilerKeyedArrayRollingWindow\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArraySliceHints > 0 ||\n optimizationCounts.keyedArrayRollingWindowHints > 0\n ? [\n t.importSpecifier(\n keyedArraySliceIdentifier,\n t.identifier(\"createCompilerKeyedArraySlice\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedCollectionUpdateHints > 0\n ? [\n t.importSpecifier(\n keyedCollectionUpdateIdentifier,\n t.identifier(\"createCompilerKeyedCollectionUpdate\"),\n ),\n t.importSpecifier(\n keyedCollectionMutationIdentifier,\n t.identifier(\"applyCompilerKeyedCollectionMutation\"),\n ),\n ]\n : []),\n ...[...usedRuntimeFeatures]\n .sort()\n .map((feature) =>\n t.importSpecifier(\n t.cloneNode(runtimeFeatureIdentifiers.get(feature)!),\n t.identifier(COMPILER_RUNTIME_FEATURE_EXPORTS[feature]),\n ),\n ),\n ],\n t.stringLiteral(\"@farm.js/react/compiler-runtime\"),\n ),\n );\n }\n },\n },\n });\n\n const result = await transformAsync(code, {\n filename: id,\n sourceType: \"module\",\n ast: false,\n code: true,\n sourceMaps: true,\n sourceFileName: id,\n configFile: false,\n babelrc: false,\n parserOpts: {\n plugins: [\"jsx\", \"typescript\"],\n },\n generatorOpts: {\n comments: true,\n compact: false,\n },\n plugins: [plugin],\n });\n\n return {\n code: result?.code || code,\n map: result?.map || null,\n compiled,\n diagnostics,\n optimizations: optimizationCounts,\n };\n}\n","import { lstat, mkdir, realpath, writeFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, relative, resolve, sep } from \"node:path\";\nimport type { CompileReactModuleResult, CompilerDiagnostic } from \"./compiler\";\n\nexport interface ReactCompilerModuleObservation {\n id: string;\n result: Pick<CompileReactModuleResult, \"compiled\" | \"diagnostics\" | \"optimizations\">;\n}\n\nexport interface ReactCompilerReportFallback extends CompilerDiagnostic {\n module: string;\n}\n\nexport interface ReactCompilerReport {\n version: 1;\n summary: {\n modules: number;\n componentsConsidered: number;\n compiled: number;\n fallback: number;\n keyedArrayAppendHints: number;\n keyedArrayFilterHints: number;\n keyedArrayPrependHints: number;\n keyedArrayPositionHints: number;\n keyedArrayReorderHints: number;\n keyedArraySortHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayRollingWindowHints: number;\n keyedArraySliceHints: number;\n keyedCollectionUpdateHints: number;\n keyedIdentityTargets: number;\n keyedMapLookupTargets: number;\n keyedMembershipTargets: number;\n keyedMapUpdateHints: number;\n };\n fallbackReasons: Array<{\n count: number;\n reason: string;\n }>;\n modules: Array<{\n id: string;\n compiled: readonly string[];\n optimizations: {\n keyedArrayAppendHints: number;\n keyedArrayFilterHints: number;\n keyedArrayPrependHints: number;\n keyedArrayPositionHints: number;\n keyedArrayReorderHints: number;\n keyedArraySortHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayRollingWindowHints: number;\n keyedArraySliceHints: number;\n keyedCollectionUpdateHints: number;\n keyedIdentityTargets: number;\n keyedMapLookupTargets: number;\n keyedMembershipTargets: number;\n keyedMapUpdateHints: number;\n };\n fallbacks: ReactCompilerReportFallback[];\n }>;\n}\n\nfunction projectRelativeId(projectRoot: string, id: string): string {\n return relative(projectRoot, id).replace(/\\\\/g, \"/\");\n}\n\nexport function createReactCompilerReport(\n projectRoot: string,\n observations: Iterable<ReactCompilerModuleObservation>,\n): ReactCompilerReport {\n const reasonCounts = new Map<string, number>();\n let componentsConsidered = 0;\n let compiled = 0;\n let fallback = 0;\n let keyedArrayAppendHints = 0;\n let keyedArrayFilterHints = 0;\n let keyedArrayPrependHints = 0;\n let keyedArrayPositionHints = 0;\n let keyedArrayReorderHints = 0;\n let keyedArraySortHints = 0;\n let keyedArrayMappedRollingWindowChainHints = 0;\n let keyedArrayRollingWindowHints = 0;\n let keyedArraySliceHints = 0;\n let keyedCollectionUpdateHints = 0;\n let keyedIdentityTargets = 0;\n let keyedMapLookupTargets = 0;\n let keyedMembershipTargets = 0;\n let keyedMapUpdateHints = 0;\n\n const modules = [...observations]\n .map(({ id, result }) => {\n componentsConsidered += result.compiled.length + result.diagnostics.length;\n compiled += result.compiled.length;\n fallback += result.diagnostics.length;\n keyedArrayAppendHints += result.optimizations.keyedArrayAppendHints || 0;\n keyedArrayFilterHints += result.optimizations.keyedArrayFilterHints || 0;\n keyedArrayPrependHints += result.optimizations.keyedArrayPrependHints || 0;\n keyedArrayPositionHints += result.optimizations.keyedArrayPositionHints || 0;\n keyedArrayReorderHints += result.optimizations.keyedArrayReorderHints || 0;\n keyedArraySortHints += result.optimizations.keyedArraySortHints || 0;\n keyedArrayMappedRollingWindowChainHints +=\n result.optimizations.keyedArrayMappedRollingWindowChainHints || 0;\n keyedArrayRollingWindowHints += result.optimizations.keyedArrayRollingWindowHints || 0;\n keyedArraySliceHints += result.optimizations.keyedArraySliceHints || 0;\n keyedCollectionUpdateHints += result.optimizations.keyedCollectionUpdateHints || 0;\n keyedIdentityTargets += result.optimizations.keyedIdentityTargets || 0;\n keyedMapLookupTargets += result.optimizations.keyedMapLookupTargets || 0;\n keyedMembershipTargets += result.optimizations.keyedMembershipTargets || 0;\n keyedMapUpdateHints += result.optimizations.keyedMapUpdateHints;\n const moduleId = projectRelativeId(projectRoot, id);\n const fallbacks = result.diagnostics.map((diagnostic) => {\n reasonCounts.set(diagnostic.reason, (reasonCounts.get(diagnostic.reason) || 0) + 1);\n return { module: moduleId, ...diagnostic };\n });\n return {\n id: moduleId,\n compiled: [...result.compiled].sort(),\n optimizations: result.optimizations,\n fallbacks,\n };\n })\n .sort((left, right) => left.id.localeCompare(right.id));\n\n const fallbackReasons = [...reasonCounts]\n .map(([reason, count]) => ({ count, reason }))\n .sort((left, right) => right.count - left.count || left.reason.localeCompare(right.reason));\n\n return {\n version: 1,\n summary: {\n modules: modules.length,\n componentsConsidered,\n compiled,\n fallback,\n keyedArrayAppendHints,\n keyedArrayFilterHints,\n keyedArrayPrependHints,\n keyedArrayPositionHints,\n keyedArrayReorderHints,\n keyedArraySortHints,\n keyedArrayMappedRollingWindowChainHints,\n keyedArrayRollingWindowHints,\n keyedArraySliceHints,\n keyedCollectionUpdateHints,\n keyedIdentityTargets,\n keyedMapLookupTargets,\n keyedMembershipTargets,\n keyedMapUpdateHints,\n },\n fallbackReasons,\n modules,\n };\n}\n\nexport async function writeReactCompilerReport(\n projectRoot: string,\n reportFile: string,\n observations: Iterable<ReactCompilerModuleObservation>,\n): Promise<string> {\n const outputPath = resolve(projectRoot, reportFile);\n await assertReportPathInsideProject(projectRoot, outputPath);\n const report = createReactCompilerReport(projectRoot, observations);\n await mkdir(dirname(outputPath), { recursive: true });\n await writeFile(outputPath, `${JSON.stringify(report, null, 2)}\\n`, \"utf8\");\n return outputPath;\n}\n\nasync function assertReportPathInsideProject(\n projectRoot: string,\n outputPath: string,\n): Promise<void> {\n const realProjectRoot = await realpath(projectRoot);\n let existingAncestor = outputPath;\n\n while (true) {\n try {\n existingAncestor = await realpath(existingAncestor);\n break;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n let existingEntry = false;\n try {\n await lstat(existingAncestor);\n existingEntry = true;\n } catch (statError) {\n if ((statError as NodeJS.ErrnoException).code !== \"ENOENT\") throw statError;\n }\n if (existingEntry) {\n throw new Error(\n \"The React compiler report file must stay inside the project root, including through symlinks.\",\n );\n }\n const parent = dirname(existingAncestor);\n if (parent === existingAncestor) throw error;\n existingAncestor = parent;\n }\n }\n\n const relativePath = relative(realProjectRoot, existingAncestor);\n if (relativePath === \"..\" || relativePath.startsWith(`..${sep}`) || isAbsolute(relativePath)) {\n throw new Error(\n \"The React compiler report file must stay inside the project root, including through symlinks.\",\n );\n }\n}\n","import type { FarmRenderer } from \"@farm.js/core/renderer\";\n\nexport type ReactCompilerMode = \"infer\" | \"annotation\";\nexport type ReactCompilerReactivity = \"static\" | \"hybrid\";\nexport type UnsupportedCompilerBehavior = \"fallback\" | \"warn\" | \"error\";\n\nexport interface ReactCompilerOptions {\n /** Compile every component that the safe subset can prove eligible. */\n mode?: ReactCompilerMode;\n /** Function or module directive used only by annotation mode. */\n directive?: string;\n /** What to do when a selected component is outside the safe subset. */\n onUnsupported?: UnsupportedCompilerBehavior;\n /**\n * How compiled bindings subscribe to state. `hybrid` keeps compiler-proven\n * dependencies and narrows short-circuited reads at runtime.\n */\n reactivity?: ReactCompilerReactivity;\n /** Write a machine-readable compiler coverage report after a production build. */\n report?: boolean;\n /** Project-relative report location. Providing it also enables reporting. */\n reportFile?: string;\n}\n\nexport interface ReactRendererOptions {\n experimental?: {\n /** `true` enables automatic inference; an object customizes selection. */\n compiler?: boolean | ReactCompilerOptions;\n };\n}\n\nexport interface NormalizedReactCompilerOptions {\n mode: ReactCompilerMode;\n directive: string;\n onUnsupported: UnsupportedCompilerBehavior;\n reactivity: ReactCompilerReactivity;\n report: boolean;\n reportFile: string;\n}\n\nexport const DEFAULT_COMPILER_DIRECTIVE = \"use compiler\";\nexport const DEFAULT_COMPILER_REPORT_FILE = \".farm/react-compiler.json\";\n\nfunction normalizeCompilerReportFile(value: unknown): string {\n if (value === undefined) return DEFAULT_COMPILER_REPORT_FILE;\n if (typeof value !== \"string\" || !value.trim()) {\n throw new TypeError(\"The React compiler report file must be a non-empty relative path.\");\n }\n const normalized = value.trim().replace(/\\\\/g, \"/\");\n if (\n normalized.startsWith(\"/\") ||\n /^[A-Za-z]:\\//.test(normalized) ||\n normalized.split(\"/\").includes(\"..\")\n ) {\n throw new TypeError(\"The React compiler report file must stay inside the project root.\");\n }\n return normalized;\n}\n\nexport function normalizeReactCompilerOptions(\n value: true | ReactCompilerOptions,\n): NormalizedReactCompilerOptions {\n const options = value === true ? {} : value;\n const mode = options.mode || \"infer\";\n\n if (mode !== \"infer\" && mode !== \"annotation\") {\n throw new TypeError(`Unknown React compiler mode: ${String(mode)}`);\n }\n\n if (options.directive !== undefined && mode !== \"annotation\") {\n throw new TypeError(\"The React compiler directive can only be configured in annotation mode.\");\n }\n\n const directive = options.directive?.trim() || DEFAULT_COMPILER_DIRECTIVE;\n const onUnsupported = options.onUnsupported || \"fallback\";\n if (!([\"fallback\", \"warn\", \"error\"] as const).includes(onUnsupported)) {\n throw new TypeError(`Unknown unsupported-component behavior: ${String(onUnsupported)}`);\n }\n\n const reactivity = options.reactivity || \"hybrid\";\n if (reactivity !== \"static\" && reactivity !== \"hybrid\") {\n throw new TypeError(`Unknown React compiler reactivity mode: ${String(reactivity)}`);\n }\n\n if (options.report !== undefined && typeof options.report !== \"boolean\") {\n throw new TypeError(\"The React compiler report option must be a boolean.\");\n }\n if (options.report === false && options.reportFile !== undefined) {\n throw new TypeError(\n \"A React compiler report file cannot be configured when reporting is false.\",\n );\n }\n const reportFile = normalizeCompilerReportFile(options.reportFile);\n const report = options.report === true || options.reportFile !== undefined;\n\n return { mode, directive, onUnsupported, reactivity, report, reportFile };\n}\n\nconst REACT_RENDERER: Readonly<FarmRenderer> = Object.freeze({\n name: \"react\",\n vite: \"@farm.js/react/vite\",\n server: \"@farm.js/react/server\",\n client: \"@farm.js/react/client\",\n jsxImportSource: \"react\",\n dedupe: [\"react\", \"react-dom\", \"react/jsx-runtime\", \"react/jsx-dev-runtime\"],\n optimizeDeps: [\n \"react\",\n \"react-dom\",\n \"react-dom/client\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"@farm.js/react/compiler-runtime\",\n ],\n capabilities: {\n reconcilesRerenders: true,\n streaming: { node: true, web: false },\n functionComponents: true,\n },\n});\n\n/** Select React and optionally enable Farm's experimental AOT compiler. */\nexport function react(options: ReactRendererOptions = {}): FarmRenderer {\n const compiler = options.experimental?.compiler;\n const normalizedCompiler = compiler ? normalizeReactCompilerOptions(compiler) : false;\n\n return {\n ...REACT_RENDERER,\n dedupe: [...(REACT_RENDERER.dedupe || [])],\n optimizeDeps: [...(REACT_RENDERER.optimizeDeps || [])],\n capabilities: {\n reconcilesRerenders: true,\n streaming: { ...REACT_RENDERER.capabilities?.streaming },\n functionComponents: true,\n },\n options: {\n experimental: { compiler: normalizedCompiler },\n },\n };\n}\n\nexport { REACT_RENDERER };\nexport type { FarmRenderer } from \"@farm.js/core/renderer\";\n","import { normalizePath, type Plugin } from \"vite\";\nimport { compileReactModule } from \"./compiler\";\nimport { writeReactCompilerReport, type ReactCompilerModuleObservation } from \"./compiler-report\";\nimport { normalizeReactCompilerOptions, type NormalizedReactCompilerOptions } from \"./index\";\n\ninterface RendererPluginOptions {\n ssr?: boolean;\n rendererOptions?: Readonly<Record<string, unknown>>;\n}\n\nfunction readCompilerOptions(\n rendererOptions: Readonly<Record<string, unknown>> | undefined,\n): NormalizedReactCompilerOptions | false {\n const experimental = rendererOptions?.experimental;\n if (!experimental || typeof experimental !== \"object\") return false;\n const compiler = (experimental as { compiler?: unknown }).compiler;\n if (!compiler) return false;\n if (compiler === true) return normalizeReactCompilerOptions(true);\n if (typeof compiler !== \"object\") {\n throw new TypeError(\n \"React experimental.compiler must be a boolean or compiler options object.\",\n );\n }\n const normalized = compiler as Partial<NormalizedReactCompilerOptions>;\n if (\n (normalized.mode === \"infer\" || normalized.mode === \"annotation\") &&\n typeof normalized.directive === \"string\" &&\n (normalized.reactivity === \"static\" || normalized.reactivity === \"hybrid\") &&\n (normalized.onUnsupported === \"fallback\" ||\n normalized.onUnsupported === \"warn\" ||\n normalized.onUnsupported === \"error\")\n ) {\n return normalized as NormalizedReactCompilerOptions;\n }\n return normalizeReactCompilerOptions(compiler as NormalizedReactCompilerOptions);\n}\n\nexport function createFarmRendererPlugin(options: RendererPluginOptions = {}): Plugin[] {\n const compilerOptions = readCompilerOptions(options.rendererOptions);\n if (!compilerOptions) return [];\n\n let projectRoot = \"\";\n const reportEnabled = compilerOptions.report && options.ssr !== true;\n const reportObservations = new Map<string, ReactCompilerModuleObservation>();\n\n return [\n {\n name: \"farm:react-aot-compiler\",\n enforce: \"pre\",\n configResolved(config) {\n projectRoot = normalizePath(config.root).replace(/\\/$/, \"\");\n },\n buildStart() {\n reportObservations.clear();\n },\n async transform(code, id) {\n const cleanId = normalizePath(id.split(\"?\", 1)[0]);\n if (\n !/\\.[jt]sx$/.test(cleanId) ||\n cleanId.includes(\"/node_modules/\") ||\n (projectRoot && !cleanId.startsWith(`${projectRoot}/`))\n )\n return null;\n\n const result = await compileReactModule(code, cleanId, compilerOptions);\n if (reportEnabled) {\n if (result.compiled.length > 0 || result.diagnostics.length > 0) {\n reportObservations.set(cleanId, { id: cleanId, result });\n } else {\n reportObservations.delete(cleanId);\n }\n }\n for (const diagnostic of result.diagnostics) {\n const message = `[react-compiler] ${diagnostic.component}: ${diagnostic.reason}; using React.`;\n if (compilerOptions.onUnsupported === \"error\") this.error(message);\n if (compilerOptions.onUnsupported === \"warn\" || diagnostic.selected) this.warn(message);\n }\n if (result.compiled.length === 0) return null;\n return { code: result.code, map: result.map as any };\n },\n async buildEnd(error) {\n if (error || !reportEnabled || !projectRoot) return;\n await writeReactCompilerReport(\n projectRoot,\n compilerOptions.reportFile,\n reportObservations.values(),\n );\n },\n },\n ];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/compiler.ts","../src/compiler-report.ts","../src/index.ts","../src/vite.ts"],"names":["t","traverse","method","result","line","parent","unsupported","reason","plan","staticBefore","nested","name","transformAsync","relative","resolve","mkdir","dirname","writeFile","realpath","lstat","sep","isAbsolute","normalizePath"],"mappings":"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","file":"vite.cjs","sourcesContent":["import { transformAsync, traverse, types as t, type NodePath, type PluginObj } from \"@babel/core\";\nimport type { NormalizedReactCompilerOptions } from \"./index\";\n\nexport interface CompilerDiagnostic {\n component: string;\n reason: string;\n selected: boolean;\n}\n\nexport interface CompileReactModuleResult {\n code: string;\n map: unknown;\n compiled: readonly string[];\n diagnostics: readonly CompilerDiagnostic[];\n optimizations: {\n keyedArrayAppendHints: number;\n keyedArrayFilterHints: number;\n keyedArrayPrependHints: number;\n keyedArrayPositionHints: number;\n keyedArrayReorderHints: number;\n keyedArraySortHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayRollingWindowHints: number;\n keyedArraySliceHints: number;\n keyedCollectionUpdateHints: number;\n keyedIdentityTargets: number;\n keyedMapLookupTargets: number;\n keyedMembershipTargets: number;\n keyedMapUpdateHints: number;\n };\n}\n\ninterface StateBinding {\n valueName: string;\n setterName: string;\n index: number;\n initialValue?: t.Expression;\n}\n\ninterface HandlerBinding {\n name: string;\n value: t.ArrowFunctionExpression | t.FunctionExpression;\n}\n\ninterface LocalBinding {\n kind: \"derived\" | \"handler\";\n name: string;\n value: t.Expression;\n}\n\ninterface PropsPlan {\n definitionParameter: t.Identifier;\n wrapperProps?: t.Expression;\n destructuredNames: ReadonlySet<string>;\n}\n\ninterface PropBinding {\n localName: string;\n valueName: string;\n index: number;\n}\n\ninterface PendingDomBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n tracking?: \"dynamic\";\n path: number[];\n target?: number;\n dependencies: number[];\n name?: string;\n value: t.Expression;\n}\n\ninterface PendingConditionalBlockBinding {\n kind: \"block\";\n id: number;\n parent?: number;\n dependencies: number[];\n}\n\ntype PendingBinding = PendingDomBinding | PendingConditionalBlockBinding;\n\ninterface ConditionalBlockPlan {\n kind: \"conditional\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.Expression;\n}\n\ninterface KeyedListPlan {\n kind: \"keyed-list\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.Expression;\n syntax: \"map\" | \"list\";\n}\n\ninterface PendingKeyedRowBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n path: number[];\n name?: string;\n dependencies?: number[];\n identityTarget?: {\n dependency: number;\n value: t.Expression;\n };\n membershipTarget?: {\n dependency: number;\n value: t.Expression;\n };\n mapLookupTarget?: {\n dependency: number;\n value: t.Expression;\n };\n value: t.Expression;\n}\n\ninterface PendingStaticRangeBinding extends PendingKeyedRowBinding {\n /** Static segment before range N, or the trailing segment at ranges.length. */\n segment: number;\n /** Direct host sibling inside the static segment. */\n sibling: number;\n}\n\ninterface PendingKeyedRowEvent {\n id: number;\n path: number[];\n name: string;\n value: t.ArrowFunctionExpression | t.FunctionExpression;\n}\n\ninterface PendingKeyedRowConditional {\n id: number;\n path: number[];\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n truthyBindings: PendingKeyedRowBinding[];\n falsyBindings: PendingKeyedRowBinding[];\n}\n\ninterface HostConditionalPlan {\n kind: \"host-conditional\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n truthyBindings: PendingKeyedRowBinding[];\n falsyBindings: PendingKeyedRowBinding[];\n descriptorBlocks?: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n nestedPlans?: HostDescriptorBlockPlan[];\n}\n\ninterface ConditionalRangePlan {\n before: number;\n source: t.Expression;\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n truthyBindings: PendingKeyedRowBinding[];\n falsyBindings: PendingKeyedRowBinding[];\n}\n\ninterface ConditionalRangesPlan {\n kind: \"conditional-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: ConditionalRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n descriptorBlocks?: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n}\n\ninterface KeyedRowsPlan {\n kind: \"keyed-rows\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n collection: t.Expression;\n collectionDependency?: number;\n structureDependencies: number[];\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n row: t.JSXElement;\n bindings: PendingKeyedRowBinding[];\n events: PendingKeyedRowEvent[];\n conditionals: PendingKeyedRowConditional[];\n descriptorBlocks?: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n syntax: \"map\" | \"list\";\n}\n\nconst DELEGATABLE_KEYED_ROW_EVENTS = new Set([\n \"onBeforeInput\",\n \"onBlur\",\n \"onChange\",\n \"onClick\",\n \"onCompositionEnd\",\n \"onCompositionStart\",\n \"onCompositionUpdate\",\n \"onContextMenu\",\n \"onCopy\",\n \"onCut\",\n \"onDoubleClick\",\n \"onDrag\",\n \"onDragEnd\",\n \"onDragEnter\",\n \"onDragExit\",\n \"onDragLeave\",\n \"onDragOver\",\n \"onDragStart\",\n \"onDrop\",\n \"onFocus\",\n \"onInput\",\n \"onKeyDown\",\n \"onKeyPress\",\n \"onKeyUp\",\n \"onMouseDown\",\n \"onMouseMove\",\n \"onMouseOut\",\n \"onMouseOver\",\n \"onMouseUp\",\n \"onPaste\",\n \"onPointerCancel\",\n \"onPointerDown\",\n \"onPointerMove\",\n \"onPointerOut\",\n \"onPointerOver\",\n \"onPointerUp\",\n \"onReset\",\n \"onSubmit\",\n \"onTouchCancel\",\n \"onTouchEnd\",\n \"onTouchMove\",\n \"onTouchStart\",\n \"onWheel\",\n]);\n\nfunction canDelegateKeyedRowEvents(\n plan: Pick<KeyedRowsPlan, \"events\" | \"conditionals\" | \"source\">,\n): boolean {\n if (plan.events.length === 0 || plan.conditionals.length > 0) return false;\n if (\n plan.source.openingElement.attributes.some(\n (attribute) =>\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n /^on[A-Z]/.test(attribute.name.name),\n )\n ) {\n return false;\n }\n return plan.events.every((event) =>\n DELEGATABLE_KEYED_ROW_EVENTS.has(event.name.replace(/Capture$/, \"\")),\n );\n}\n\ninterface KeyedRangePlan {\n before: number;\n source: t.Expression | t.JSXElement;\n collection: t.Expression;\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n row: t.JSXElement;\n bindings: PendingKeyedRowBinding[];\n syntax: \"map\" | \"list\";\n}\n\ninterface KeyedRangesPlan {\n kind: \"keyed-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: KeyedRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n}\n\ntype MixedRangePlan =\n | ({ rangeKind: \"conditional\" } & ConditionalRangePlan)\n | ({ rangeKind: \"keyed\" } & KeyedRangePlan);\n\ninterface MixedRangesPlan {\n kind: \"mixed-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: MixedRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n}\n\ninterface NestedHostConditionalRangesPlan {\n kind: \"nested-host-conditional-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: ConditionalRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n}\n\ninterface NestedHostKeyedRangesPlan {\n kind: \"nested-host-keyed-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: KeyedRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n}\n\ninterface NestedHostMixedRangesPlan {\n kind: \"nested-host-mixed-ranges\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n ranges: MixedRangePlan[];\n trailing: number;\n staticBindings: PendingStaticRangeBinding[];\n}\n\ntype HostDescriptorBlockPlan =\n | NestedHostConditionalRangesPlan\n | NestedHostKeyedRangesPlan\n | NestedHostMixedRangesPlan;\n\ninterface ComponentIslandPlan {\n kind: \"component\";\n id: number;\n parent?: number;\n dependencies: number[];\n source: t.JSXElement;\n}\n\ntype ComposableBlockPlan =\n | ConditionalBlockPlan\n | HostConditionalPlan\n | ConditionalRangesPlan\n | KeyedListPlan\n | KeyedRowsPlan\n | KeyedRangesPlan\n | MixedRangesPlan\n | NestedHostConditionalRangesPlan\n | NestedHostKeyedRangesPlan\n | NestedHostMixedRangesPlan\n | ComponentIslandPlan;\n\ntype CompilerRuntimeFeatureName =\n | \"conditional\"\n | \"host-conditional\"\n | \"conditional-ranges\"\n | \"keyed-list\"\n | \"keyed-rows\"\n | \"keyed-rows-hinted\"\n | \"keyed-rows-position-hinted\"\n | \"keyed-rows-batch-position-hinted\"\n | \"keyed-rows-window-position-hinted\"\n | \"keyed-rows-reorder-hinted\"\n | \"keyed-rows-map-reorder-hinted\"\n | \"keyed-rows-all-hinted\"\n | \"keyed-rows-mapped-rolling-window-hinted\"\n | \"keyed-rows-every-hinted\"\n | \"keyed-rows-batch-every-hinted\"\n | \"keyed-rows-window-every-hinted\"\n | \"keyed-rows-filter-hinted\"\n | \"keyed-rows-structural-append-hinted\"\n | \"keyed-rows-structural-append-map-hinted\"\n | \"keyed-rows-structural-prepend-hinted\"\n | \"keyed-rows-structural-prepend-map-hinted\"\n | \"keyed-rows-prepend-hinted\"\n | \"keyed-rows-filter-prepend-hinted\"\n | \"keyed-rows-conditional\"\n | \"keyed-rows-conditional-hinted\"\n | \"keyed-rows-conditional-position-hinted\"\n | \"keyed-rows-conditional-batch-position-hinted\"\n | \"keyed-rows-conditional-window-position-hinted\"\n | \"keyed-rows-conditional-reorder-hinted\"\n | \"keyed-rows-conditional-all-hinted\"\n | \"keyed-rows-conditional-mapped-rolling-window-hinted\"\n | \"keyed-rows-conditional-every-hinted\"\n | \"keyed-rows-conditional-batch-every-hinted\"\n | \"keyed-rows-conditional-window-every-hinted\"\n | \"keyed-rows-conditional-filter-hinted\"\n | \"keyed-rows-conditional-structural-append-hinted\"\n | \"keyed-rows-conditional-structural-append-map-hinted\"\n | \"keyed-rows-conditional-structural-prepend-hinted\"\n | \"keyed-rows-conditional-structural-prepend-map-hinted\"\n | \"keyed-rows-conditional-prepend-hinted\"\n | \"keyed-rows-conditional-filter-prepend-hinted\"\n | \"keyed-rows-host\"\n | \"keyed-rows-host-hinted\"\n | \"keyed-rows-host-position-hinted\"\n | \"keyed-rows-host-batch-position-hinted\"\n | \"keyed-rows-host-window-position-hinted\"\n | \"keyed-rows-host-reorder-hinted\"\n | \"keyed-rows-host-all-hinted\"\n | \"keyed-rows-host-mapped-rolling-window-hinted\"\n | \"keyed-rows-host-every-hinted\"\n | \"keyed-rows-host-batch-every-hinted\"\n | \"keyed-rows-host-window-every-hinted\"\n | \"keyed-rows-host-filter-hinted\"\n | \"keyed-rows-host-structural-append-hinted\"\n | \"keyed-rows-host-structural-append-map-hinted\"\n | \"keyed-rows-host-structural-prepend-hinted\"\n | \"keyed-rows-host-structural-prepend-map-hinted\"\n | \"keyed-rows-host-prepend-hinted\"\n | \"keyed-rows-host-filter-prepend-hinted\"\n | \"keyed-rows-complete\"\n | \"keyed-rows-complete-hinted\"\n | \"keyed-rows-complete-position-hinted\"\n | \"keyed-rows-complete-batch-position-hinted\"\n | \"keyed-rows-complete-window-position-hinted\"\n | \"keyed-rows-complete-reorder-hinted\"\n | \"keyed-rows-complete-all-hinted\"\n | \"keyed-rows-complete-mapped-rolling-window-hinted\"\n | \"keyed-rows-complete-every-hinted\"\n | \"keyed-rows-complete-batch-every-hinted\"\n | \"keyed-rows-complete-window-every-hinted\"\n | \"keyed-rows-complete-filter-hinted\"\n | \"keyed-rows-complete-structural-append-hinted\"\n | \"keyed-rows-complete-structural-append-map-hinted\"\n | \"keyed-rows-complete-structural-prepend-hinted\"\n | \"keyed-rows-complete-structural-prepend-map-hinted\"\n | \"keyed-rows-complete-prepend-hinted\"\n | \"keyed-rows-complete-filter-prepend-hinted\"\n | \"keyed-ranges\"\n | \"mixed-ranges\"\n | \"component\";\n\nconst COMPILER_RUNTIME_FEATURE_EXPORTS: Record<CompilerRuntimeFeatureName, string> = {\n conditional: \"conditionalRuntimeFeature\",\n \"host-conditional\": \"hostConditionalRuntimeFeature\",\n \"conditional-ranges\": \"conditionalRangesRuntimeFeature\",\n \"keyed-list\": \"keyedListRuntimeFeature\",\n \"keyed-rows\": \"keyedRowsRuntimeFeature\",\n \"keyed-rows-hinted\": \"keyedRowsHintedRuntimeFeature\",\n \"keyed-rows-position-hinted\": \"keyedRowsPositionHintedRuntimeFeature\",\n \"keyed-rows-batch-position-hinted\": \"keyedRowsBatchPositionHintedRuntimeFeature\",\n \"keyed-rows-window-position-hinted\": \"keyedRowsWindowPositionHintedRuntimeFeature\",\n \"keyed-rows-reorder-hinted\": \"keyedRowsReorderHintedRuntimeFeature\",\n \"keyed-rows-map-reorder-hinted\": \"keyedRowsMapReorderHintedRuntimeFeature\",\n \"keyed-rows-all-hinted\": \"keyedRowsAllHintedRuntimeFeature\",\n \"keyed-rows-mapped-rolling-window-hinted\": \"keyedRowsMappedRollingWindowHintedRuntimeFeature\",\n \"keyed-rows-every-hinted\": \"keyedRowsEveryHintedRuntimeFeature\",\n \"keyed-rows-batch-every-hinted\": \"keyedRowsBatchEveryHintedRuntimeFeature\",\n \"keyed-rows-window-every-hinted\": \"keyedRowsWindowEveryHintedRuntimeFeature\",\n \"keyed-rows-filter-hinted\": \"keyedRowsFilterHintedRuntimeFeature\",\n \"keyed-rows-structural-append-hinted\": \"keyedRowsStructuralAppendHintedRuntimeFeature\",\n \"keyed-rows-structural-append-map-hinted\": \"keyedRowsStructuralAppendMapHintedRuntimeFeature\",\n \"keyed-rows-structural-prepend-hinted\": \"keyedRowsStructuralPrependHintedRuntimeFeature\",\n \"keyed-rows-structural-prepend-map-hinted\": \"keyedRowsStructuralPrependMapHintedRuntimeFeature\",\n \"keyed-rows-prepend-hinted\": \"keyedRowsPrependHintedRuntimeFeature\",\n \"keyed-rows-filter-prepend-hinted\": \"keyedRowsFilterPrependHintedRuntimeFeature\",\n \"keyed-rows-conditional\": \"keyedRowsConditionalRuntimeFeature\",\n \"keyed-rows-conditional-hinted\": \"keyedRowsConditionalHintedRuntimeFeature\",\n \"keyed-rows-conditional-position-hinted\": \"keyedRowsConditionalPositionHintedRuntimeFeature\",\n \"keyed-rows-conditional-batch-position-hinted\":\n \"keyedRowsConditionalBatchPositionHintedRuntimeFeature\",\n \"keyed-rows-conditional-window-position-hinted\":\n \"keyedRowsConditionalWindowPositionHintedRuntimeFeature\",\n \"keyed-rows-conditional-reorder-hinted\": \"keyedRowsConditionalReorderHintedRuntimeFeature\",\n \"keyed-rows-conditional-all-hinted\": \"keyedRowsConditionalAllHintedRuntimeFeature\",\n \"keyed-rows-conditional-mapped-rolling-window-hinted\":\n \"keyedRowsConditionalMappedRollingWindowHintedRuntimeFeature\",\n \"keyed-rows-conditional-every-hinted\": \"keyedRowsConditionalEveryHintedRuntimeFeature\",\n \"keyed-rows-conditional-batch-every-hinted\": \"keyedRowsConditionalBatchEveryHintedRuntimeFeature\",\n \"keyed-rows-conditional-window-every-hinted\":\n \"keyedRowsConditionalWindowEveryHintedRuntimeFeature\",\n \"keyed-rows-conditional-filter-hinted\": \"keyedRowsConditionalFilterHintedRuntimeFeature\",\n \"keyed-rows-conditional-structural-append-hinted\":\n \"keyedRowsConditionalStructuralAppendHintedRuntimeFeature\",\n \"keyed-rows-conditional-structural-append-map-hinted\":\n \"keyedRowsConditionalStructuralAppendMapHintedRuntimeFeature\",\n \"keyed-rows-conditional-structural-prepend-hinted\":\n \"keyedRowsConditionalStructuralPrependHintedRuntimeFeature\",\n \"keyed-rows-conditional-structural-prepend-map-hinted\":\n \"keyedRowsConditionalStructuralPrependMapHintedRuntimeFeature\",\n \"keyed-rows-conditional-prepend-hinted\": \"keyedRowsConditionalPrependHintedRuntimeFeature\",\n \"keyed-rows-conditional-filter-prepend-hinted\":\n \"keyedRowsConditionalFilterPrependHintedRuntimeFeature\",\n \"keyed-rows-host\": \"keyedRowsHostRuntimeFeature\",\n \"keyed-rows-host-hinted\": \"keyedRowsHostHintedRuntimeFeature\",\n \"keyed-rows-host-position-hinted\": \"keyedRowsHostPositionHintedRuntimeFeature\",\n \"keyed-rows-host-batch-position-hinted\": \"keyedRowsHostBatchPositionHintedRuntimeFeature\",\n \"keyed-rows-host-window-position-hinted\": \"keyedRowsHostWindowPositionHintedRuntimeFeature\",\n \"keyed-rows-host-reorder-hinted\": \"keyedRowsHostReorderHintedRuntimeFeature\",\n \"keyed-rows-host-all-hinted\": \"keyedRowsHostAllHintedRuntimeFeature\",\n \"keyed-rows-host-mapped-rolling-window-hinted\":\n \"keyedRowsHostMappedRollingWindowHintedRuntimeFeature\",\n \"keyed-rows-host-every-hinted\": \"keyedRowsHostEveryHintedRuntimeFeature\",\n \"keyed-rows-host-batch-every-hinted\": \"keyedRowsHostBatchEveryHintedRuntimeFeature\",\n \"keyed-rows-host-window-every-hinted\": \"keyedRowsHostWindowEveryHintedRuntimeFeature\",\n \"keyed-rows-host-filter-hinted\": \"keyedRowsHostFilterHintedRuntimeFeature\",\n \"keyed-rows-host-structural-append-hinted\": \"keyedRowsHostStructuralAppendHintedRuntimeFeature\",\n \"keyed-rows-host-structural-append-map-hinted\":\n \"keyedRowsHostStructuralAppendMapHintedRuntimeFeature\",\n \"keyed-rows-host-structural-prepend-hinted\": \"keyedRowsHostStructuralPrependHintedRuntimeFeature\",\n \"keyed-rows-host-structural-prepend-map-hinted\":\n \"keyedRowsHostStructuralPrependMapHintedRuntimeFeature\",\n \"keyed-rows-host-prepend-hinted\": \"keyedRowsHostPrependHintedRuntimeFeature\",\n \"keyed-rows-host-filter-prepend-hinted\": \"keyedRowsHostFilterPrependHintedRuntimeFeature\",\n \"keyed-rows-complete\": \"keyedRowsCompleteRuntimeFeature\",\n \"keyed-rows-complete-hinted\": \"keyedRowsCompleteHintedRuntimeFeature\",\n \"keyed-rows-complete-position-hinted\": \"keyedRowsCompletePositionHintedRuntimeFeature\",\n \"keyed-rows-complete-batch-position-hinted\": \"keyedRowsCompleteBatchPositionHintedRuntimeFeature\",\n \"keyed-rows-complete-window-position-hinted\":\n \"keyedRowsCompleteWindowPositionHintedRuntimeFeature\",\n \"keyed-rows-complete-reorder-hinted\": \"keyedRowsCompleteReorderHintedRuntimeFeature\",\n \"keyed-rows-complete-all-hinted\": \"keyedRowsCompleteAllHintedRuntimeFeature\",\n \"keyed-rows-complete-mapped-rolling-window-hinted\":\n \"keyedRowsCompleteMappedRollingWindowHintedRuntimeFeature\",\n \"keyed-rows-complete-every-hinted\": \"keyedRowsCompleteEveryHintedRuntimeFeature\",\n \"keyed-rows-complete-batch-every-hinted\": \"keyedRowsCompleteBatchEveryHintedRuntimeFeature\",\n \"keyed-rows-complete-window-every-hinted\": \"keyedRowsCompleteWindowEveryHintedRuntimeFeature\",\n \"keyed-rows-complete-filter-hinted\": \"keyedRowsCompleteFilterHintedRuntimeFeature\",\n \"keyed-rows-complete-structural-append-hinted\":\n \"keyedRowsCompleteStructuralAppendHintedRuntimeFeature\",\n \"keyed-rows-complete-structural-append-map-hinted\":\n \"keyedRowsCompleteStructuralAppendMapHintedRuntimeFeature\",\n \"keyed-rows-complete-structural-prepend-hinted\":\n \"keyedRowsCompleteStructuralPrependHintedRuntimeFeature\",\n \"keyed-rows-complete-structural-prepend-map-hinted\":\n \"keyedRowsCompleteStructuralPrependMapHintedRuntimeFeature\",\n \"keyed-rows-complete-prepend-hinted\": \"keyedRowsCompletePrependHintedRuntimeFeature\",\n \"keyed-rows-complete-filter-prepend-hinted\": \"keyedRowsCompleteFilterPrependHintedRuntimeFeature\",\n \"keyed-ranges\": \"keyedRangesRuntimeFeature\",\n \"mixed-ranges\": \"mixedRangesRuntimeFeature\",\n component: \"componentRuntimeFeature\",\n};\n\nfunction runtimeFeaturesForPlans(\n plans: readonly ComposableBlockPlan[],\n keyedMapUpdateHints: boolean,\n keyedArrayFilterHints: boolean,\n keyedArrayStructuralAppendHints: boolean,\n keyedArrayStructuralAppendMapHints: boolean,\n keyedArrayPrependHints: boolean,\n keyedArrayStructuralPrependHints: boolean,\n keyedArrayStructuralPrependMapHints: boolean,\n keyedArrayPositionHints: boolean,\n keyedArrayBatchInsertHints: boolean,\n keyedArrayWindowReplaceHints: boolean,\n keyedArrayReorderHints: boolean,\n keyedArrayMapReorderHints: boolean,\n keyedArrayMappedRollingWindowChainHints: boolean,\n keyedArrayRollingWindowHints: boolean,\n): CompilerRuntimeFeatureName[] {\n const features = new Set<CompilerRuntimeFeatureName>();\n let keyedRowsHaveConditionals = false;\n let keyedRowsHaveHostBlocks = false;\n for (const plan of plans) {\n if (plan.kind === \"keyed-rows\") {\n keyedRowsHaveConditionals ||= plan.conditionals.length > 0;\n keyedRowsHaveHostBlocks ||= Boolean(plan.descriptorBlocks?.size);\n continue;\n }\n if (plan.kind in COMPILER_RUNTIME_FEATURE_EXPORTS) {\n features.add(plan.kind as CompilerRuntimeFeatureName);\n }\n }\n if (plans.some((plan) => plan.kind === \"keyed-rows\")) {\n const keyedRowsFeature =\n keyedRowsHaveConditionals && keyedRowsHaveHostBlocks\n ? \"keyed-rows-complete\"\n : keyedRowsHaveConditionals\n ? \"keyed-rows-conditional\"\n : keyedRowsHaveHostBlocks\n ? \"keyed-rows-host\"\n : \"keyed-rows\";\n const arrayRangeHints =\n keyedArrayRollingWindowHints || keyedArrayFilterHints || keyedArrayPrependHints;\n const needsCombinedStructuralPrependRuntime =\n keyedArrayStructuralPrependHints &&\n (keyedArrayStructuralAppendMapHints ||\n keyedArrayStructuralAppendHints ||\n keyedArrayWindowReplaceHints ||\n keyedArrayBatchInsertHints ||\n keyedArrayPositionHints ||\n keyedArrayReorderHints ||\n keyedArrayRollingWindowHints);\n const hintSuffix = keyedArrayMappedRollingWindowChainHints\n ? \"-mapped-rolling-window-hinted\"\n : keyedArrayStructuralPrependMapHints\n ? \"-structural-prepend-map-hinted\"\n : needsCombinedStructuralPrependRuntime\n ? \"-structural-prepend-hinted\"\n : keyedArrayStructuralAppendMapHints\n ? \"-structural-append-map-hinted\"\n : keyedArrayStructuralAppendHints\n ? \"-structural-append-hinted\"\n : keyedArrayWindowReplaceHints\n ? arrayRangeHints || keyedArrayReorderHints\n ? \"-window-every-hinted\"\n : \"-window-position-hinted\"\n : keyedArrayBatchInsertHints\n ? arrayRangeHints || keyedArrayReorderHints\n ? \"-batch-every-hinted\"\n : \"-batch-position-hinted\"\n : (keyedArrayPositionHints && (arrayRangeHints || keyedArrayReorderHints)) ||\n (keyedArrayReorderHints && arrayRangeHints)\n ? \"-every-hinted\"\n : keyedArrayRollingWindowHints\n ? \"-all-hinted\"\n : keyedArrayPositionHints\n ? \"-position-hinted\"\n : keyedArrayMapReorderHints && keyedRowsFeature === \"keyed-rows\"\n ? \"-map-reorder-hinted\"\n : keyedArrayReorderHints\n ? \"-reorder-hinted\"\n : keyedArrayFilterHints && keyedArrayPrependHints\n ? \"-filter-prepend-hinted\"\n : keyedArrayFilterHints\n ? \"-filter-hinted\"\n : keyedArrayPrependHints\n ? \"-prepend-hinted\"\n : keyedMapUpdateHints\n ? \"-hinted\"\n : \"\";\n features.add(`${keyedRowsFeature}${hintSuffix}` as CompilerRuntimeFeatureName);\n }\n return [...features].sort();\n}\n\ninterface Candidate {\n name: string;\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>;\n statementPath: NodePath;\n}\n\nconst SAFE_GLOBAL_CALLS = new Set([\"Boolean\", \"Number\", \"String\"]);\nconst SAFE_MATH_CALLS = new Set([\"abs\", \"ceil\", \"floor\", \"max\", \"min\", \"round\", \"sign\", \"trunc\"]);\n\nfunction isComponentName(name: string): boolean {\n return /^[A-Z]/.test(name);\n}\n\nfunction isHostElement(element: t.JSXElement): boolean {\n const name = element.openingElement.name;\n return t.isJSXIdentifier(name) && /^[a-z]/.test(name.name);\n}\n\nfunction directiveValues(node: { directives?: readonly t.Directive[] | null }): string[] {\n return (node.directives || []).map((directive) => directive.value.value);\n}\n\nfunction isUseStateCall(\n expression: t.Node | null | undefined,\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n): expression is t.CallExpression {\n if (!t.isCallExpression(expression)) return false;\n if (t.isIdentifier(expression.callee)) return useStateNames.has(expression.callee.name);\n return (\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isIdentifier(expression.callee.object) &&\n reactNames.has(expression.callee.object.name) &&\n t.isIdentifier(expression.callee.property, { name: \"useState\" })\n );\n}\n\nfunction cloneExpression<T extends t.Expression>(expression: T): T {\n return t.cloneNode(expression, true) as T;\n}\n\nfunction expressionFile(expression: t.Expression): t.File {\n return t.file(t.program([t.expressionStatement(expression)]));\n}\n\nfunction collectStateDependencies(\n expression: t.Expression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n): number[] {\n const dependencies = new Set<number>();\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (state && !path.scope.hasBinding(path.node.name)) dependencies.add(state.index);\n },\n });\n return [...dependencies].sort((left, right) => left - right);\n}\n\nfunction referencesIdentifier(expression: t.Expression, name: string): boolean {\n let referenced = false;\n traverse(expressionFile(cloneExpression(expression)), {\n ReferencedIdentifier(path) {\n if (path.node.name === name && !path.scope.hasBinding(name)) {\n referenced = true;\n }\n },\n });\n return referenced;\n}\n\nfunction rewriteFreeIdentifierNames<T extends t.Expression>(\n expression: T,\n replacements: ReadonlyMap<string, t.Identifier>,\n): T {\n if (replacements.size === 0) return cloneExpression(expression);\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n if (path.scope.hasBinding(path.node.name)) return;\n const replacement = replacements.get(path.node.name);\n if (!replacement) return;\n path.replaceWith(t.cloneNode(replacement));\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction keyedIdentityTarget(\n binding: PendingKeyedRowBinding,\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n structureDependencies: ReadonlySet<number>,\n): PendingKeyedRowBinding[\"identityTarget\"] {\n const dependencies = binding.dependencies || [];\n if (dependencies.length !== 1 || structureDependencies.has(dependencies[0])) return undefined;\n const keyExpression = returnedExpression(keyCallback);\n const keyItem = keyCallback.params[0];\n const rowItem = renderCallback.params[0];\n if (!keyExpression || !t.isIdentifier(keyItem) || !t.isIdentifier(rowItem)) return undefined;\n\n const replacements = new Map<string, t.Identifier>([[keyItem.name, rowItem]]);\n const keyIndex = keyCallback.params[1];\n const rowIndex = renderCallback.params[1];\n if (t.isIdentifier(keyIndex) && t.isIdentifier(rowIndex)) {\n replacements.set(keyIndex.name, rowIndex);\n }\n const rowKeyExpression = rewriteFreeIdentifierNames(keyExpression, replacements);\n const file = expressionFile(cloneExpression(binding.value));\n let target: StateBinding | undefined;\n let valid = true;\n let comparisons = 0;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!valid || path.scope.hasBinding(path.node.name)) return;\n const reactive = reactiveByValue.get(path.node.name);\n if (!reactive) return;\n if (reactive.index !== dependencies[0] || (target && target !== reactive)) {\n valid = false;\n path.stop();\n return;\n }\n const parent = path.parentPath;\n if (\n !parent.isBinaryExpression() ||\n (parent.node.operator !== \"===\" && parent.node.operator !== \"!==\")\n ) {\n valid = false;\n path.stop();\n return;\n }\n const other = parent.node.left === path.node ? parent.node.right : parent.node.left;\n if (!t.isExpression(other) || !t.isNodesEquivalent(other, rowKeyExpression)) {\n valid = false;\n path.stop();\n return;\n }\n target = reactive;\n comparisons += 1;\n },\n });\n return valid && target && comparisons > 0\n ? { dependency: target.index, value: t.identifier(target.valueName) }\n : undefined;\n}\n\nfunction isPotentialKeyedMembershipCall(\n expression: t.CallExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n): boolean {\n if (\n expression.arguments.length !== 1 ||\n !t.isExpression(expression.arguments[0]) ||\n !t.isMemberExpression(expression.callee) ||\n expression.callee.computed ||\n !t.isIdentifier(expression.callee.object) ||\n !t.isIdentifier(expression.callee.property, { name: \"has\" })\n ) {\n return false;\n }\n const reactive = reactiveByValue.get(expression.callee.object.name);\n return Boolean(reactive?.setterName);\n}\n\nfunction containsPotentialKeyedMembershipCall(\n expression: t.Expression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n): boolean {\n let found = false;\n traverse(expressionFile(cloneExpression(expression)), {\n CallExpression(path) {\n if (!isPotentialKeyedMembershipCall(path.node, reactiveByValue)) return;\n found = true;\n path.stop();\n },\n });\n return found;\n}\n\nfunction isPotentialKeyedMapLookupCall(\n expression: t.CallExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n): boolean {\n if (\n expression.arguments.length !== 1 ||\n !t.isExpression(expression.arguments[0]) ||\n !t.isMemberExpression(expression.callee) ||\n expression.callee.computed ||\n !t.isIdentifier(expression.callee.object) ||\n !t.isIdentifier(expression.callee.property, { name: \"get\" })\n ) {\n return false;\n }\n const reactive = reactiveByValue.get(expression.callee.object.name);\n return Boolean(reactive?.setterName);\n}\n\nfunction containsPotentialKeyedMapLookupCall(\n expression: t.Expression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n): boolean {\n let found = false;\n traverse(expressionFile(cloneExpression(expression)), {\n CallExpression(path) {\n if (!isPotentialKeyedMapLookupCall(path.node, reactiveByValue)) return;\n found = true;\n path.stop();\n },\n });\n return found;\n}\n\nfunction keyedMembershipTarget(\n binding: PendingKeyedRowBinding,\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n structureDependencies: ReadonlySet<number>,\n): PendingKeyedRowBinding[\"membershipTarget\"] {\n const dependencies = binding.dependencies || [];\n if (dependencies.length !== 1 || structureDependencies.has(dependencies[0])) return undefined;\n const keyExpression = returnedExpression(keyCallback);\n const keyItem = keyCallback.params[0];\n const rowItem = renderCallback.params[0];\n if (!keyExpression || !t.isIdentifier(keyItem) || !t.isIdentifier(rowItem)) return undefined;\n\n const replacements = new Map<string, t.Identifier>([[keyItem.name, rowItem]]);\n const keyIndex = keyCallback.params[1];\n const rowIndex = renderCallback.params[1];\n if (t.isIdentifier(keyIndex) && t.isIdentifier(rowIndex)) {\n replacements.set(keyIndex.name, rowIndex);\n }\n const rowKeyExpression = rewriteFreeIdentifierNames(keyExpression, replacements);\n const file = expressionFile(cloneExpression(binding.value));\n let target: StateBinding | undefined;\n let valid = true;\n let calls = 0;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!valid || path.scope.hasBinding(path.node.name)) return;\n const reactive = reactiveByValue.get(path.node.name);\n if (!reactive) return;\n const member = path.parentPath;\n const call = member.parentPath;\n if (\n !reactive.setterName ||\n reactive.index !== dependencies[0] ||\n (target && target !== reactive) ||\n !member.isMemberExpression() ||\n member.node.object !== path.node ||\n member.node.computed ||\n !t.isIdentifier(member.node.property, { name: \"has\" }) ||\n !call ||\n !call.isCallExpression() ||\n call.node.callee !== member.node ||\n call.node.arguments.length !== 1 ||\n !t.isExpression(call.node.arguments[0]) ||\n !t.isNodesEquivalent(call.node.arguments[0], rowKeyExpression)\n ) {\n valid = false;\n path.stop();\n return;\n }\n target = reactive;\n calls += 1;\n },\n });\n return valid && target && calls > 0\n ? { dependency: target.index, value: t.identifier(target.valueName) }\n : undefined;\n}\n\nfunction keyedMapLookupTarget(\n binding: PendingKeyedRowBinding,\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n reactiveByValue: ReadonlyMap<string, StateBinding>,\n structureDependencies: ReadonlySet<number>,\n): PendingKeyedRowBinding[\"mapLookupTarget\"] {\n const dependencies = binding.dependencies || [];\n if (dependencies.length !== 1 || structureDependencies.has(dependencies[0])) return undefined;\n const keyExpression = returnedExpression(keyCallback);\n const keyItem = keyCallback.params[0];\n const rowItem = renderCallback.params[0];\n if (!keyExpression || !t.isIdentifier(keyItem) || !t.isIdentifier(rowItem)) return undefined;\n\n const replacements = new Map<string, t.Identifier>([[keyItem.name, rowItem]]);\n const keyIndex = keyCallback.params[1];\n const rowIndex = renderCallback.params[1];\n if (t.isIdentifier(keyIndex) && t.isIdentifier(rowIndex)) {\n replacements.set(keyIndex.name, rowIndex);\n }\n const rowKeyExpression = rewriteFreeIdentifierNames(keyExpression, replacements);\n const file = expressionFile(cloneExpression(binding.value));\n let target: StateBinding | undefined;\n let valid = true;\n let calls = 0;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!valid || path.scope.hasBinding(path.node.name)) return;\n const reactive = reactiveByValue.get(path.node.name);\n if (!reactive) return;\n const member = path.parentPath;\n const call = member.parentPath;\n if (\n !reactive.setterName ||\n reactive.index !== dependencies[0] ||\n (target && target !== reactive) ||\n !member.isMemberExpression() ||\n member.node.object !== path.node ||\n member.node.computed ||\n !t.isIdentifier(member.node.property, { name: \"get\" }) ||\n !call ||\n !call.isCallExpression() ||\n call.node.callee !== member.node ||\n call.node.arguments.length !== 1 ||\n !t.isExpression(call.node.arguments[0]) ||\n !t.isNodesEquivalent(call.node.arguments[0], rowKeyExpression)\n ) {\n valid = false;\n path.stop();\n return;\n }\n target = reactive;\n calls += 1;\n },\n });\n return valid && target && calls > 0\n ? { dependency: target.index, value: t.identifier(target.valueName) }\n : undefined;\n}\n\nfunction collectReferencedLocals(expression: t.Expression, names: ReadonlySet<string>): string[] {\n const references = new Set<string>();\n traverse(expressionFile(cloneExpression(expression)), {\n ReferencedIdentifier(path) {\n if (names.has(path.node.name) && !path.scope.hasBinding(path.node.name)) {\n references.add(path.node.name);\n }\n },\n });\n return [...references];\n}\n\nfunction rewriteDerivedAccess<T extends t.Expression>(\n expression: T,\n derivedByName: ReadonlyMap<string, t.Expression>,\n): T {\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n if (path.scope.hasBinding(path.node.name)) return;\n const derived = derivedByName.get(path.node.name);\n if (!derived) return;\n path.replaceWith(cloneExpression(derived));\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction rewriteDestructuredPropAccess<T extends t.Expression>(\n expression: T,\n names: ReadonlySet<string>,\n propsParameter: t.Identifier,\n): T {\n if (names.size === 0) return cloneExpression(expression);\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!names.has(path.node.name) || path.scope.hasBinding(path.node.name)) return;\n if (path.parentPath.isJSXOpeningElement() || path.parentPath.isJSXClosingElement()) return;\n path.replaceWith(\n t.memberExpression(t.cloneNode(propsParameter), t.identifier(path.node.name)),\n );\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction collectDestructuredPropNames(\n expression: t.Expression,\n names: ReadonlySet<string>,\n propsParameter: t.Identifier,\n): Set<string> {\n const referenced = new Set<string>();\n if (names.size === 0) return referenced;\n traverse(expressionFile(cloneExpression(expression)), {\n MemberExpression(path) {\n const { object, property, computed } = path.node;\n if (\n computed ||\n !t.isIdentifier(object, { name: propsParameter.name }) ||\n !t.isIdentifier(property) ||\n !names.has(property.name)\n ) {\n return;\n }\n referenced.add(property.name);\n },\n });\n return referenced;\n}\n\nfunction rewriteTrackedPropAccess<T extends t.Expression>(\n expression: T,\n propsParameter: t.Identifier,\n bindingsByName: ReadonlyMap<string, PropBinding>,\n): T {\n if (bindingsByName.size === 0) return cloneExpression(expression);\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n MemberExpression(path) {\n const { object, property, computed } = path.node;\n if (\n computed ||\n !t.isIdentifier(object, { name: propsParameter.name }) ||\n !t.isIdentifier(property)\n ) {\n return;\n }\n const binding = bindingsByName.get(property.name);\n if (!binding) return;\n path.replaceWith(t.identifier(binding.valueName));\n path.skip();\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression as T;\n}\n\nfunction rewriteHandlerAccess(\n root: t.JSXElement,\n handlersByName: ReadonlyMap<string, HandlerBinding>,\n): { root?: t.JSXElement; reason?: string } {\n if (handlersByName.size === 0) return { root: t.cloneNode(root, true) };\n const file = expressionFile(t.cloneNode(root, true));\n let reason: string | undefined;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (reason || path.scope.hasBinding(path.node.name)) return;\n const handler = handlersByName.get(path.node.name);\n if (!handler) return;\n const container = path.parentPath;\n const attribute = container.parentPath;\n const eventName = attribute?.isJSXAttribute() && jsxAttributeName(attribute.node);\n if (\n container.isJSXExpressionContainer() &&\n container.node.expression === path.node &&\n eventName &&\n /^on[A-Z]/.test(eventName)\n ) {\n path.replaceWith(t.cloneNode(handler.value, true));\n path.skip();\n return;\n }\n\n const call =\n container.isCallExpression() && container.node.callee === path.node ? container : null;\n const event = call && findContainingEvent(call);\n const eventExpression =\n event?.node.value &&\n t.isJSXExpressionContainer(event.node.value) &&\n event.node.value.expression;\n const isInsideInlineHandler =\n eventExpression &&\n (t.isArrowFunctionExpression(eventExpression) || t.isFunctionExpression(eventExpression)) &&\n Boolean(call?.findParent((parent) => parent.node === eventExpression));\n if (!call || !event || !isInsideInlineHandler) {\n reason = `event handler ${handler.name} must be passed directly to a JSX event or called inside its inline handler`;\n path.stop();\n return;\n }\n path.replaceWith(t.cloneNode(handler.value, true));\n path.skip();\n },\n });\n return reason\n ? { reason }\n : {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n };\n}\n\nfunction isSafeCompilerCall(\n expression: t.CallExpression,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n if (t.isIdentifier(expression.callee)) {\n return safeGlobals.has(expression.callee.name) && SAFE_GLOBAL_CALLS.has(expression.callee.name);\n }\n return (\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isIdentifier(expression.callee.object, { name: \"Math\" }) &&\n safeGlobals.has(\"Math\") &&\n t.isIdentifier(expression.callee.property) &&\n SAFE_MATH_CALLS.has(expression.callee.property.name)\n );\n}\n\nfunction validateDerivedExpression(\n expression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n additionalSafeCall?: (expression: t.CallExpression) => boolean,\n): string | undefined {\n let unsupported: string | undefined;\n const reject = (reason: string, path: NodePath) => {\n unsupported = reason;\n path.stop();\n };\n\n traverse(expressionFile(cloneExpression(expression)), {\n ArrayExpression: (path) => reject(\"array literals\", path),\n AssignmentExpression: (path) => reject(\"assignments\", path),\n AwaitExpression: (path) => reject(\"await expressions\", path),\n CallExpression(path) {\n if (!isSafeCompilerCall(path.node, safeGlobals) && !additionalSafeCall?.(path.node)) {\n reject(\"function calls\", path);\n }\n },\n ClassExpression: (path) => reject(\"class expressions\", path),\n Function: (path) => reject(\"function expressions\", path),\n JSXElement: (path) => reject(\"JSX\", path),\n JSXFragment: (path) => reject(\"JSX\", path),\n NewExpression: (path) => reject(\"constructor calls\", path),\n ObjectExpression: (path) => reject(\"object literals\", path),\n OptionalCallExpression: (path) => reject(\"function calls\", path),\n TaggedTemplateExpression: (path) => reject(\"tagged templates\", path),\n ThisExpression: (path) => reject(\"this expressions\", path),\n UnaryExpression(path) {\n if (path.node.operator === \"delete\") reject(\"delete expressions\", path);\n },\n UpdateExpression: (path) => reject(\"update expressions\", path),\n YieldExpression: (path) => reject(\"yield expressions\", path),\n });\n\n return unsupported;\n}\n\nfunction findContainingEvent(path: NodePath): NodePath<t.JSXAttribute> | null {\n const attribute = path.findParent((parent) => parent.isJSXAttribute());\n if (!attribute?.isJSXAttribute() || !t.isJSXIdentifier(attribute.node.name)) return null;\n return /^on[A-Z]/.test(attribute.node.name.name) ? attribute : null;\n}\n\nfunction validateSetterUsage(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): string | undefined {\n const file = expressionFile(t.cloneNode(root, true));\n let reason: string | undefined;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (reason) return;\n const state = statesBySetter.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isCallExpression() ||\n parent.node.callee !== path.node ||\n !findContainingEvent(parent)\n ) {\n reason = `${state.setterName} must be called inside a JSX event handler`;\n }\n },\n });\n return reason;\n}\n\nfunction isUnchangedMapItem(expression: t.Expression, item: t.Identifier): boolean {\n return t.isIdentifier(expression, { name: item.name });\n}\n\nfunction isSafeKeyedMapReplacement(\n expression: t.Expression,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n if (!t.isObjectExpression(expression)) return false;\n let spreadsItem = false;\n for (const property of expression.properties) {\n if (t.isSpreadElement(property)) {\n if (!t.isIdentifier(property.argument, { name: item.name })) return false;\n spreadsItem = true;\n continue;\n }\n if (!t.isObjectProperty(property) || property.computed || !t.isExpression(property.value)) {\n return false;\n }\n if (validateDerivedExpression(property.value, safeGlobals)) return false;\n }\n return spreadsItem;\n}\n\ntype SafeKeyedMapBranchProof = { replacement: boolean; unchanged: boolean };\n\nfunction mergeSafeKeyedMapBranchProofs(\n left: SafeKeyedMapBranchProof,\n right: SafeKeyedMapBranchProof,\n): SafeKeyedMapBranchProof {\n return {\n replacement: left.replacement || right.replacement,\n unchanged: left.unchanged || right.unchanged,\n };\n}\n\nfunction proveSafeKeyedMapExpression(\n expression: t.Expression,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): SafeKeyedMapBranchProof | undefined {\n if (isUnchangedMapItem(expression, item)) return { replacement: false, unchanged: true };\n if (isSafeKeyedMapReplacement(expression, item, safeGlobals)) {\n return { replacement: true, unchanged: false };\n }\n if (!t.isConditionalExpression(expression)) return undefined;\n if (validateDerivedExpression(expression.test, safeGlobals)) return undefined;\n const consequent = proveSafeKeyedMapExpression(expression.consequent, item, safeGlobals);\n const alternate = proveSafeKeyedMapExpression(expression.alternate, item, safeGlobals);\n return consequent && alternate ? mergeSafeKeyedMapBranchProofs(consequent, alternate) : undefined;\n}\n\nfunction proveSafeKeyedMapStatement(\n statement: t.Statement,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): SafeKeyedMapBranchProof | undefined {\n return t.isBlockStatement(statement)\n ? proveSafeKeyedMapStatements(statement.body, item, safeGlobals)\n : proveSafeKeyedMapStatements([statement], item, safeGlobals);\n}\n\nfunction isSafeKeyedMapConstDeclaration(\n statement: t.VariableDeclaration,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n return (\n statement.kind === \"const\" &&\n statement.declarations.length > 0 &&\n statement.declarations.every(\n (declaration) =>\n t.isIdentifier(declaration.id) &&\n declaration.id.name !== item.name &&\n !safeGlobals.has(declaration.id.name) &&\n declaration.init != null &&\n t.isExpression(declaration.init) &&\n !validateDerivedExpression(declaration.init, safeGlobals),\n )\n );\n}\n\nfunction proveSafeKeyedMapSwitchStatement(\n statement: t.SwitchStatement,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): SafeKeyedMapBranchProof | undefined {\n if (\n validateDerivedExpression(statement.discriminant, safeGlobals) ||\n statement.cases.filter((switchCase) => switchCase.test === null).length !== 1\n ) {\n return undefined;\n }\n\n let proof: SafeKeyedMapBranchProof | undefined;\n for (const [index, switchCase] of statement.cases.entries()) {\n if (switchCase.test && validateDerivedExpression(switchCase.test, safeGlobals)) {\n return undefined;\n }\n if (switchCase.consequent.length === 0) {\n if (index === statement.cases.length - 1) return undefined;\n continue;\n }\n const branch =\n switchCase.consequent.length === 1 && t.isBlockStatement(switchCase.consequent[0])\n ? proveSafeKeyedMapStatement(switchCase.consequent[0], item, safeGlobals)\n : proveSafeKeyedMapStatements(switchCase.consequent, item, safeGlobals);\n if (!branch) return undefined;\n proof = proof ? mergeSafeKeyedMapBranchProofs(proof, branch) : branch;\n }\n return proof;\n}\n\nfunction proveSafeKeyedMapStatements(\n statements: readonly t.Statement[],\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): SafeKeyedMapBranchProof | undefined {\n const [statement, ...remaining] = statements;\n if (!statement) return undefined;\n if (t.isReturnStatement(statement)) {\n if (remaining.length > 0 || !statement.argument || !t.isExpression(statement.argument)) {\n return undefined;\n }\n return proveSafeKeyedMapExpression(statement.argument, item, safeGlobals);\n }\n if (t.isVariableDeclaration(statement)) {\n return isSafeKeyedMapConstDeclaration(statement, item, safeGlobals)\n ? proveSafeKeyedMapStatements(remaining, item, safeGlobals)\n : undefined;\n }\n if (t.isSwitchStatement(statement)) {\n return remaining.length === 0\n ? proveSafeKeyedMapSwitchStatement(statement, item, safeGlobals)\n : undefined;\n }\n if (!t.isIfStatement(statement) || validateDerivedExpression(statement.test, safeGlobals)) {\n return undefined;\n }\n\n const consequent = proveSafeKeyedMapStatement(statement.consequent, item, safeGlobals);\n const alternate = statement.alternate\n ? remaining.length === 0\n ? proveSafeKeyedMapStatement(statement.alternate, item, safeGlobals)\n : undefined\n : proveSafeKeyedMapStatements(remaining, item, safeGlobals);\n return consequent && alternate ? mergeSafeKeyedMapBranchProofs(consequent, alternate) : undefined;\n}\n\nfunction isSafeKeyedMapBody(\n body: t.BlockStatement | t.Expression,\n item: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n const proof = t.isBlockStatement(body)\n ? proveSafeKeyedMapStatements(body.body, item, safeGlobals)\n : proveSafeKeyedMapExpression(body, item, safeGlobals);\n return Boolean(proof?.replacement && proof.unchanged);\n}\n\nfunction keyedMapUpdatePipeline(\n expression: t.Expression,\n parameterName: string,\n safeGlobals: ReadonlySet<string>,\n): readonly t.ArrowFunctionExpression[] | undefined {\n const outerCallbacks: t.ArrowFunctionExpression[] = [];\n let current = expression;\n while (\n t.isCallExpression(current) &&\n current.arguments.length === 1 &&\n t.isMemberExpression(current.callee) &&\n !current.callee.computed &&\n t.isIdentifier(current.callee.property, { name: \"map\" }) &&\n t.isExpression(current.callee.object)\n ) {\n const callback = current.arguments[0];\n if (\n !t.isArrowFunctionExpression(callback) ||\n callback.async ||\n callback.generator ||\n callback.params.length === 0 ||\n callback.params.length > 3 ||\n callback.params.some((parameter) => !t.isIdentifier(parameter)) ||\n !isSafeKeyedMapBody(callback.body, callback.params[0] as t.Identifier, safeGlobals)\n ) {\n return undefined;\n }\n outerCallbacks.push(callback);\n current = current.callee.object;\n }\n if (!t.isIdentifier(current, { name: parameterName }) || outerCallbacks.length === 0) {\n return undefined;\n }\n return outerCallbacks.reverse();\n}\n\nfunction rewriteKeyedMapUpdateHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number } {\n if (hintedStateIndices.size === 0) return { root: t.cloneNode(root, true), count: 0 };\n const file = expressionFile(t.cloneNode(root, true));\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (!updateExpression) return;\n const callbacks = keyedMapUpdatePipeline(\n updateExpression,\n updater.params[0].name,\n safeGlobals,\n );\n if (!callbacks) return;\n\n const previous = t.cloneNode(updater.params[0]);\n const pipelineValue = path.scope.generateUidIdentifier(\"farmMapValue\");\n const applyMap = path.scope.generateUidIdentifier(\"farmApplyMap\");\n const statements: t.Statement[] = [];\n let current: t.Expression = t.cloneNode(pipelineValue);\n for (let index = 0; index < callbacks.length; index += 1) {\n const method = path.scope.generateUidIdentifier(`farmMap${index + 1}`);\n const nextValue = path.scope.generateUidIdentifier(`farmMappedItems${index + 1}`);\n statements.push(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(current), t.identifier(\"map\")),\n ),\n ]),\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(nextValue),\n t.callExpression(t.cloneNode(applyMap), [\n t.cloneNode(current),\n t.cloneNode(method),\n t.cloneNode(callbacks[index], true),\n ]),\n ),\n ]),\n );\n current = nextValue;\n }\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.arrowFunctionExpression(\n [t.cloneNode(pipelineValue), t.cloneNode(applyMap)],\n t.blockStatement([...statements, t.returnStatement(t.cloneNode(current))]),\n ),\n ]),\n );\n count += callbacks.length;\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n };\n}\n\nfunction rewriteKeyedArrayAppendHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number } {\n if (hintedStateIndices.size === 0) return { root: t.cloneNode(root, true), count: 0 };\n const file = expressionFile(t.cloneNode(root, true));\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isArrayExpression(updateExpression) ||\n updateExpression.elements.length < 2 ||\n updateExpression.elements.some((element) => element === null) ||\n !t.isSpreadElement(updateExpression.elements[0]) ||\n !t.isIdentifier(updateExpression.elements[0].argument, {\n name: updater.params[0].name,\n })\n ) {\n return;\n }\n const safeAppendValue = (value: t.Expression): boolean => {\n if (t.isArrayExpression(value)) {\n return value.elements.every(\n (element) =>\n element !== null &&\n !t.isJSXNamespacedName(element) &&\n !t.isArgumentPlaceholder(element) &&\n safeAppendValue(t.isSpreadElement(element) ? element.argument : element),\n );\n }\n if (t.isObjectExpression(value)) {\n return value.properties.every((property) => {\n if (t.isSpreadElement(property)) return safeAppendValue(property.argument);\n if (!t.isObjectProperty(property) || !t.isExpression(property.value)) return false;\n return (\n (!property.computed ||\n (t.isExpression(property.key) && safeAppendValue(property.key))) &&\n safeAppendValue(property.value)\n );\n });\n }\n return validateDerivedExpression(value, safeGlobals) === undefined;\n };\n if (\n updateExpression.elements.slice(1).some((element) => {\n if (!element || t.isJSXNamespacedName(element) || t.isArgumentPlaceholder(element)) {\n return true;\n }\n return !safeAppendValue(t.isSpreadElement(element) ? element.argument : element);\n })\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const nextValue = path.scope.generateUidIdentifier(\"farmNextItems\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(t.cloneNode(nextValue), t.cloneNode(updateExpression, true)),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(nextValue),\n ]),\n ),\n ]),\n );\n count += 1;\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n };\n}\n\nfunction rewriteKeyedArrayPrependHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isArrayExpression(updateExpression) ||\n updateExpression.elements.length < 2 ||\n updateExpression.elements.some((element) => element === null)\n ) {\n return;\n }\n const suffix = updateExpression.elements[updateExpression.elements.length - 1];\n if (\n !t.isSpreadElement(suffix) ||\n !t.isIdentifier(suffix.argument, { name: updater.params[0].name })\n ) {\n return;\n }\n const safePrependValue = (value: t.Expression): boolean => {\n if (t.isArrayExpression(value)) {\n return value.elements.every(\n (element) =>\n element !== null &&\n !t.isJSXNamespacedName(element) &&\n !t.isArgumentPlaceholder(element) &&\n safePrependValue(t.isSpreadElement(element) ? element.argument : element),\n );\n }\n if (t.isObjectExpression(value)) {\n return value.properties.every((property) => {\n if (t.isSpreadElement(property)) return safePrependValue(property.argument);\n if (!t.isObjectProperty(property) || !t.isExpression(property.value)) return false;\n return (\n (!property.computed ||\n (t.isExpression(property.key) && safePrependValue(property.key))) &&\n safePrependValue(property.value)\n );\n });\n }\n return validateDerivedExpression(value, safeGlobals) === undefined;\n };\n if (\n updateExpression.elements.slice(0, -1).some((element) => {\n if (!element || t.isJSXNamespacedName(element) || t.isArgumentPlaceholder(element)) {\n return true;\n }\n return !safePrependValue(t.isSpreadElement(element) ? element.argument : element);\n })\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const nextValue = path.scope.generateUidIdentifier(\"farmNextItems\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(t.cloneNode(nextValue), t.cloneNode(updateExpression, true)),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(nextValue),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\nfunction rewriteKeyedArrayRollingWindowHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n sliceHelperIdentifier: t.Identifier,\n rollingWindowHelperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isArrayExpression(updateExpression) ||\n updateExpression.elements.length < 2 ||\n updateExpression.elements.some((element) => element === null)\n ) {\n return;\n }\n const retainedSpread = updateExpression.elements[0];\n if (\n !t.isSpreadElement(retainedSpread) ||\n !t.isCallExpression(retainedSpread.argument) ||\n retainedSpread.argument.arguments.length !== 1 ||\n !t.isMemberExpression(retainedSpread.argument.callee) ||\n retainedSpread.argument.callee.computed ||\n !t.isIdentifier(retainedSpread.argument.callee.object, {\n name: updater.params[0].name,\n }) ||\n !t.isIdentifier(retainedSpread.argument.callee.property, { name: \"slice\" }) ||\n !t.isExpression(retainedSpread.argument.arguments[0])\n ) {\n return;\n }\n const retainedStart = retainedSpread.argument.arguments[0];\n if (\n validateKeyedArrayPositionExpression(retainedStart, safeGlobals) !== undefined ||\n staticSliceIndex(retainedStart) === 0\n ) {\n return;\n }\n\n const safeIncomingValue = (value: t.Expression): boolean => {\n if (t.isArrayExpression(value)) {\n return value.elements.every(\n (element) =>\n element !== null &&\n !t.isJSXNamespacedName(element) &&\n !t.isArgumentPlaceholder(element) &&\n safeIncomingValue(t.isSpreadElement(element) ? element.argument : element),\n );\n }\n if (t.isObjectExpression(value)) {\n return value.properties.every((property) => {\n if (t.isSpreadElement(property)) return safeIncomingValue(property.argument);\n if (!t.isObjectProperty(property) || !t.isExpression(property.value)) return false;\n return (\n (!property.computed ||\n (t.isExpression(property.key) && safeIncomingValue(property.key))) &&\n safeIncomingValue(property.value)\n );\n });\n }\n return validateDerivedExpression(value, safeGlobals) === undefined;\n };\n if (\n updateExpression.elements.slice(1).some((element) => {\n if (!element || t.isJSXNamespacedName(element) || t.isArgumentPlaceholder(element)) {\n return true;\n }\n return !safeIncomingValue(t.isSpreadElement(element) ? element.argument : element);\n })\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const sliceMethod = path.scope.generateUidIdentifier(\"farmSlice\");\n const retained = path.scope.generateUidIdentifier(\"farmRetainedItems\");\n const nextValue = path.scope.generateUidIdentifier(\"farmNextItems\");\n const nextElements = t.cloneNode(updateExpression, true).elements;\n nextElements[0] = t.spreadElement(t.cloneNode(retained));\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(sliceMethod),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"slice\")),\n ),\n t.variableDeclarator(\n t.cloneNode(retained),\n t.callExpression(t.cloneNode(sliceHelperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(sliceMethod),\n t.cloneNode(retainedStart, true),\n ]),\n ),\n t.variableDeclarator(t.cloneNode(nextValue), t.arrayExpression(nextElements)),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(rollingWindowHelperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(retained),\n t.cloneNode(nextValue),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\nfunction staticSliceIndex(expression: t.Node): number | undefined {\n if (t.isNumericLiteral(expression) && Number.isSafeInteger(expression.value)) {\n return expression.value;\n }\n if (\n t.isUnaryExpression(expression) &&\n (expression.operator === \"+\" || expression.operator === \"-\") &&\n t.isNumericLiteral(expression.argument)\n ) {\n const value =\n expression.operator === \"-\" ? -expression.argument.value : expression.argument.value;\n return Number.isSafeInteger(value) ? value : undefined;\n }\n return undefined;\n}\n\nfunction validateKeyedArrayPositionExpression(\n expression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n const isNumericLiteral =\n t.isNumericLiteral(expression) ||\n (t.isUnaryExpression(expression) &&\n (expression.operator === \"+\" || expression.operator === \"-\") &&\n t.isNumericLiteral(expression.argument));\n if (isNumericLiteral && staticSliceIndex(expression) === undefined) {\n return \"non-safe-integer position literals\";\n }\n return validateDerivedExpression(expression, safeGlobals);\n}\n\nfunction rewriteKeyedArrayPositionHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n batchInsertHelperIdentifier: t.Identifier,\n windowReplaceHelperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): {\n root: t.JSXElement;\n count: number;\n batchInsertCount: number;\n windowReplaceCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (hintedStateIndices.size === 0) {\n return {\n root: t.cloneNode(root, true),\n count: 0,\n batchInsertCount: 0,\n windowReplaceCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n let batchInsertCount = 0;\n let windowReplaceCount = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const returned = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !returned ||\n !t.isCallExpression(returned) ||\n !t.isMemberExpression(returned.callee) ||\n returned.callee.computed ||\n !t.isIdentifier(returned.callee.object, { name: updater.params[0].name }) ||\n !t.isIdentifier(returned.callee.property)\n ) {\n return;\n }\n\n const methodName = returned.callee.property.name;\n const args = returned.arguments;\n const deleteCountExpression =\n methodName === \"toSpliced\" && args.length >= 2 && t.isExpression(args[1])\n ? args[1]\n : undefined;\n const toSplicedDeleteCount = deleteCountExpression\n ? staticSliceIndex(deleteCountExpression)\n : undefined;\n const hasRuntimeDeleteCount =\n deleteCountExpression !== undefined &&\n toSplicedDeleteCount === undefined &&\n validateKeyedArrayPositionExpression(deleteCountExpression, safeGlobals) === undefined;\n const isBatchInsert =\n methodName === \"toSpliced\" &&\n args.length >= 3 &&\n t.isNumericLiteral(args[1], { value: 0 }) &&\n (args.length > 3 || t.isSpreadElement(args[2]));\n const isWindowReplace =\n methodName === \"toSpliced\" &&\n ((args.length >= 3 &&\n toSplicedDeleteCount !== undefined &&\n Number.isSafeInteger(toSplicedDeleteCount) &&\n toSplicedDeleteCount > 0 &&\n (toSplicedDeleteCount !== 1 || args.length > 3 || t.isSpreadElement(args[2]))) ||\n hasRuntimeDeleteCount);\n const kind = isBatchInsert\n ? \"batch-insert\"\n : isWindowReplace\n ? \"window-replace\"\n : methodName === \"with\" && args.length === 2\n ? \"replace\"\n : methodName === \"toSpliced\" &&\n args.length === 3 &&\n t.isNumericLiteral(args[1], { value: 0 })\n ? \"insert\"\n : methodName === \"toSpliced\" &&\n args.length === 3 &&\n t.isNumericLiteral(args[1], { value: 1 })\n ? \"replace\"\n : args.length === 2 &&\n toSplicedDeleteCount !== undefined &&\n Number.isSafeInteger(toSplicedDeleteCount) &&\n toSplicedDeleteCount > 0\n ? \"remove\"\n : undefined;\n if (!kind || !t.isExpression(args[0])) return;\n const position = args[0];\n const incoming =\n kind === \"batch-insert\" || kind === \"window-replace\" ? args.slice(2) : [args.at(-1)];\n if (\n validateKeyedArrayPositionExpression(position, safeGlobals) !== undefined ||\n (kind === \"window-replace\" &&\n (!deleteCountExpression ||\n validateKeyedArrayPositionExpression(deleteCountExpression, safeGlobals) !==\n undefined)) ||\n (kind !== \"remove\" &&\n incoming.some((item) => {\n const expression = t.isSpreadElement(item) ? item.argument : item;\n return (\n !expression ||\n !t.isExpression(expression) ||\n validateDerivedExpression(expression, safeGlobals) !== undefined\n );\n }))\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const method = path.scope.generateUidIdentifier(\n methodName === \"with\" ? \"farmWith\" : \"farmToSpliced\",\n );\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(previous), t.identifier(methodName)),\n ),\n ]),\n t.returnStatement(\n kind === \"batch-insert\"\n ? t.callExpression(t.cloneNode(batchInsertHelperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n t.cloneNode(position, true),\n ...args.slice(2).map((argument) => t.cloneNode(argument, true)),\n ])\n : kind === \"window-replace\"\n ? t.callExpression(t.cloneNode(windowReplaceHelperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n t.cloneNode(position, true),\n t.cloneNode(args[1], true),\n ...args.slice(2).map((argument) => t.cloneNode(argument, true)),\n ])\n : t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n t.stringLiteral(kind),\n ...args.map((argument) => t.cloneNode(argument, true)),\n ]),\n ),\n ]),\n );\n count += 1;\n if (kind === \"batch-insert\") batchInsertCount += 1;\n if (kind === \"window-replace\") windowReplaceCount += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n batchInsertCount,\n windowReplaceCount,\n stateIndices,\n };\n}\n\nfunction rewriteKeyedArrayReorderHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const returned = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !returned ||\n !t.isCallExpression(returned) ||\n returned.arguments.length !== 0 ||\n !t.isMemberExpression(returned.callee) ||\n returned.callee.computed ||\n !t.isIdentifier(returned.callee.object, { name: updater.params[0].name }) ||\n !t.isIdentifier(returned.callee.property, { name: \"toReversed\" })\n ) {\n return;\n }\n\n const previous = t.cloneNode(updater.params[0]);\n const method = path.scope.generateUidIdentifier(\"farmToReversed\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"toReversed\")),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\ntype KeyedArrayReorderPipelineStep =\n | {\n readonly kind: \"filter\";\n readonly predicate: t.ArrowFunctionExpression;\n }\n | {\n readonly callback: t.ArrowFunctionExpression;\n readonly kind: \"map\";\n }\n | {\n readonly bounds: readonly t.Expression[];\n readonly kind: \"slice\";\n }\n | { readonly kind: \"reverse\" }\n | {\n readonly comparator?: t.ArrowFunctionExpression | t.FunctionExpression;\n readonly kind: \"sort\";\n };\n\nfunction normalizeSafeKeyedFilterPredicate(\n predicate: t.Node | null | undefined,\n safeGlobals: ReadonlySet<string>,\n): t.ArrowFunctionExpression | undefined {\n if (\n !t.isArrowFunctionExpression(predicate) ||\n predicate.async ||\n predicate.generator ||\n predicate.params.length !== 1 ||\n !t.isIdentifier(predicate.params[0]) ||\n (t.isBlockStatement(predicate.body) && predicate.body.directives.length > 0)\n ) {\n return undefined;\n }\n const returned = returnedExpression(predicate);\n if (!returned || validateDerivedExpression(returned, safeGlobals) !== undefined) {\n return undefined;\n }\n const normalized = t.cloneNode(predicate, true);\n normalized.body = t.cloneNode(returned, true);\n return normalized;\n}\n\nfunction keyedArrayReorderPipeline(\n expression: t.Expression,\n parameterName: string,\n safeGlobals: ReadonlySet<string>,\n): readonly KeyedArrayReorderPipelineStep[] | undefined {\n const outerSteps: KeyedArrayReorderPipelineStep[] = [];\n let current = expression;\n while (\n t.isCallExpression(current) &&\n t.isMemberExpression(current.callee) &&\n !current.callee.computed &&\n t.isIdentifier(current.callee.property) &&\n t.isExpression(current.callee.object)\n ) {\n const methodName = current.callee.property.name;\n if (methodName === \"map\") {\n if (current.arguments.length !== 1) return undefined;\n const callback = current.arguments[0];\n if (\n !t.isArrowFunctionExpression(callback) ||\n callback.async ||\n callback.generator ||\n callback.params.length === 0 ||\n callback.params.length > 3 ||\n callback.params.some((parameter) => !t.isIdentifier(parameter)) ||\n !isSafeKeyedMapBody(callback.body, callback.params[0] as t.Identifier, safeGlobals)\n ) {\n return undefined;\n }\n outerSteps.push({ callback, kind: \"map\" });\n } else if (methodName === \"filter\") {\n if (current.arguments.length !== 1) return undefined;\n const predicate = normalizeSafeKeyedFilterPredicate(current.arguments[0], safeGlobals);\n if (!predicate) return undefined;\n outerSteps.push({ kind: \"filter\", predicate });\n } else if (methodName === \"slice\") {\n if (current.arguments.length < 1 || current.arguments.length > 2) return undefined;\n const bounds: t.Expression[] = [];\n for (const argument of current.arguments) {\n if (!t.isExpression(argument)) return undefined;\n if (validateKeyedArrayPositionExpression(argument, safeGlobals) !== undefined) {\n return undefined;\n }\n bounds.push(argument);\n }\n if (bounds.length === 1 && staticSliceIndex(bounds[0]) === 0) return undefined;\n outerSteps.push({ bounds, kind: \"slice\" });\n } else if (methodName === \"toReversed\") {\n if (current.arguments.length !== 0) return undefined;\n outerSteps.push({ kind: \"reverse\" });\n } else if (methodName === \"toSorted\") {\n if (current.arguments.length > 1) return undefined;\n const comparator = current.arguments[0];\n if (\n comparator &&\n !t.isArrowFunctionExpression(comparator) &&\n !t.isFunctionExpression(comparator)\n ) {\n return undefined;\n }\n if (comparator && validateCollectionCallback(comparator, \"toSorted\", safeGlobals)) {\n return undefined;\n }\n outerSteps.push({ kind: \"sort\", ...(comparator ? { comparator } : {}) });\n } else {\n return undefined;\n }\n current = current.callee.object;\n }\n if (!t.isIdentifier(current, { name: parameterName }) || outerSteps.length < 2) {\n return undefined;\n }\n const steps = outerSteps.reverse();\n let mapSteps = 0;\n let structuralSteps = 0;\n let reorderSteps = 0;\n let reachedReorder = false;\n for (const step of steps) {\n if (step.kind === \"map\") {\n if (reachedReorder && structuralSteps > 0) return undefined;\n mapSteps += 1;\n } else if (step.kind === \"filter\" || step.kind === \"slice\") {\n if (reachedReorder) return undefined;\n structuralSteps += 1;\n } else {\n reachedReorder = true;\n reorderSteps += 1;\n }\n }\n if (reorderSteps < 1) {\n return structuralSteps > 0 && mapSteps > 0 ? steps : undefined;\n }\n if (mapSteps > 0 && reorderSteps >= 1) return steps;\n if (structuralSteps < 1 && reorderSteps < 2) return undefined;\n return steps;\n}\n\nfunction rewriteKeyedArrayReorderPipelineHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n filterHelperIdentifier: t.Identifier,\n mapHelperIdentifier: t.Identifier,\n mapReorderHelperIdentifier: t.Identifier,\n mappedStructuralHelperIdentifier: t.Identifier,\n reorderHelperIdentifier: t.Identifier,\n structuralReorderHelperIdentifier: t.Identifier,\n sliceHelperIdentifier: t.Identifier,\n sortHelperIdentifier: t.Identifier,\n structuralSortHelperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n allowMapPipelines: boolean,\n): {\n filterCount: number;\n mapCount: number;\n mapReorderCount: number;\n mapSortCount: number;\n root: t.JSXElement;\n reorderCount: number;\n sliceCount: number;\n sortCount: number;\n structuralReorderCount: number;\n terminalStructuralPipelineCount: number;\n structuralSortCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (hintedStateIndices.size === 0) {\n return {\n root: t.cloneNode(root, true),\n filterCount: 0,\n mapCount: 0,\n mapReorderCount: 0,\n mapSortCount: 0,\n reorderCount: 0,\n sliceCount: 0,\n sortCount: 0,\n structuralReorderCount: 0,\n terminalStructuralPipelineCount: 0,\n structuralSortCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let filterCount = 0;\n let mapCount = 0;\n let mapReorderCount = 0;\n let mapSortCount = 0;\n let reorderCount = 0;\n let sliceCount = 0;\n let sortCount = 0;\n let structuralReorderCount = 0;\n let terminalStructuralPipelineCount = 0;\n let structuralSortCount = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !updateExpression\n ) {\n return;\n }\n const steps = keyedArrayReorderPipeline(\n updateExpression,\n updater.params[0].name,\n safeGlobals,\n );\n if (!steps) return;\n const structuralPipeline = steps.some(\n (step) => step.kind === \"filter\" || step.kind === \"slice\",\n );\n const mapPipeline = steps.some((step) => step.kind === \"map\");\n if (mapPipeline && !allowMapPipelines) return;\n const terminalStructuralPipeline =\n mapPipeline &&\n structuralPipeline &&\n steps.every((step) => step.kind !== \"reverse\" && step.kind !== \"sort\");\n\n const previous = t.cloneNode(updater.params[0]);\n const statements: t.Statement[] = [];\n let value: t.Expression = t.cloneNode(previous);\n let hasMappedLineage = false;\n for (let stepIndex = 0; stepIndex < steps.length; stepIndex += 1) {\n const step = steps[stepIndex];\n if (step.kind === \"map\") {\n let mapEnd = stepIndex + 1;\n while (steps[mapEnd]?.kind === \"map\") mapEnd += 1;\n if (mapEnd - stepIndex > 1) {\n const pipelineValue = path.scope.generateUidIdentifier(\"farmMapValue\");\n const applyMap = path.scope.generateUidIdentifier(\"farmApplyMap\");\n const pipelineStatements: t.Statement[] = [];\n let current: t.Expression = t.cloneNode(pipelineValue);\n for (let mapIndex = stepIndex; mapIndex < mapEnd; mapIndex += 1) {\n const mapStep = steps[mapIndex];\n if (mapStep.kind !== \"map\") break;\n const method = path.scope.generateUidIdentifier(`farmMap${mapIndex + 1}`);\n const result = path.scope.generateUidIdentifier(`farmMappedItems${mapIndex + 1}`);\n pipelineStatements.push(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(current), t.identifier(\"map\")),\n ),\n ]),\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(result),\n t.callExpression(t.cloneNode(applyMap), [\n t.cloneNode(current),\n t.cloneNode(method),\n t.cloneNode(mapStep.callback, true),\n ]),\n ),\n ]),\n );\n current = t.cloneNode(result);\n }\n const result = path.scope.generateUidIdentifier(\"farmPipelineValue\");\n statements.push(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(result),\n t.callExpression(t.cloneNode(mapHelperIdentifier), [\n t.cloneNode(value),\n t.arrowFunctionExpression(\n [t.cloneNode(pipelineValue), t.cloneNode(applyMap)],\n t.blockStatement([\n ...pipelineStatements,\n t.returnStatement(t.cloneNode(current)),\n ]),\n ),\n ]),\n ),\n ]),\n );\n value = t.cloneNode(result);\n mapCount += mapEnd - stepIndex;\n hasMappedLineage = true;\n stepIndex = mapEnd - 1;\n continue;\n }\n }\n const methodName =\n step.kind === \"map\"\n ? \"map\"\n : step.kind === \"filter\"\n ? \"filter\"\n : step.kind === \"slice\"\n ? \"slice\"\n : step.kind === \"reverse\"\n ? \"toReversed\"\n : \"toSorted\";\n const method = path.scope.generateUidIdentifier(\n step.kind === \"filter\"\n ? \"farmFilter\"\n : step.kind === \"map\"\n ? \"farmMap\"\n : step.kind === \"slice\"\n ? \"farmSlice\"\n : step.kind === \"reverse\"\n ? \"farmToReversed\"\n : \"farmToSorted\",\n );\n const result = path.scope.generateUidIdentifier(\"farmPipelineValue\");\n const helper =\n step.kind === \"map\"\n ? mapHelperIdentifier\n : step.kind === \"filter\"\n ? filterHelperIdentifier\n : step.kind === \"slice\"\n ? sliceHelperIdentifier\n : step.kind === \"reverse\"\n ? structuralPipeline\n ? structuralReorderHelperIdentifier\n : hasMappedLineage\n ? mapReorderHelperIdentifier\n : reorderHelperIdentifier\n : structuralPipeline\n ? structuralSortHelperIdentifier\n : hasMappedLineage\n ? mapReorderHelperIdentifier\n : sortHelperIdentifier;\n const args =\n step.kind === \"map\"\n ? [t.cloneNode(step.callback, true)]\n : step.kind === \"filter\"\n ? [t.cloneNode(step.predicate, true)]\n : step.kind === \"slice\"\n ? step.bounds.map((bound) => t.cloneNode(bound, true))\n : step.kind === \"sort\" && step.comparator\n ? [t.cloneNode(step.comparator, true)]\n : [];\n statements.push(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(value), t.identifier(methodName)),\n ),\n ]),\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(result),\n t.callExpression(t.cloneNode(helper), [\n t.cloneNode(value),\n t.cloneNode(method),\n ...args,\n ]),\n ),\n ]),\n );\n value = t.cloneNode(result);\n if (step.kind === \"map\") {\n mapCount += 1;\n hasMappedLineage = true;\n } else if (step.kind === \"filter\") filterCount += 1;\n else if (step.kind === \"slice\") sliceCount += 1;\n else if (step.kind === \"reverse\") {\n reorderCount += 1;\n if (hasMappedLineage && !structuralPipeline) mapReorderCount += 1;\n if (structuralPipeline) structuralReorderCount += 1;\n } else {\n sortCount += 1;\n if (hasMappedLineage && !structuralPipeline) mapSortCount += 1;\n if (structuralPipeline) structuralSortCount += 1;\n }\n }\n statements.push(\n t.returnStatement(\n terminalStructuralPipeline\n ? t.callExpression(t.cloneNode(mappedStructuralHelperIdentifier), [t.cloneNode(value)])\n : t.cloneNode(value),\n ),\n );\n if (terminalStructuralPipeline) terminalStructuralPipelineCount += 1;\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement(statements),\n );\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n filterCount,\n mapCount,\n mapReorderCount,\n mapSortCount,\n reorderCount,\n sliceCount,\n sortCount,\n structuralReorderCount,\n terminalStructuralPipelineCount,\n structuralSortCount,\n stateIndices,\n };\n}\n\nfunction rewriteQueuedKeyedArrayReorderMapHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n mapReorderIdentifier: t.Identifier,\n reorderIdentifier: t.Identifier,\n sortIdentifier: t.Identifier,\n structuralReorderIdentifier: t.Identifier,\n structuralSortIdentifier: t.Identifier,\n allowed: boolean,\n): { root: t.JSXElement; mapCount: number } {\n if (!allowed) return { root: t.cloneNode(root, true), mapCount: 0 };\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n\n const containsHelperCall = (\n updater: t.ArrowFunctionExpression,\n helperNames: ReadonlySet<string>,\n ): boolean => {\n let found = false;\n t.traverseFast(updater.body, (node) => {\n if (\n !found &&\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee) &&\n helperNames.has(node.callee.name)\n ) {\n found = true;\n }\n });\n return found;\n };\n const reorderHelperNames = new Set([\n mapReorderIdentifier.name,\n reorderIdentifier.name,\n sortIdentifier.name,\n ]);\n const structuralHelperNames = new Set([\n structuralReorderIdentifier.name,\n structuralSortIdentifier.name,\n ]);\n\n traverse(file, {\n BlockStatement(path) {\n let queuedReorderState: number | undefined;\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n queuedReorderState = undefined;\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n queuedReorderState = undefined;\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n queuedReorderState = undefined;\n continue;\n }\n\n if (\n containsHelperCall(updater, reorderHelperNames) &&\n !containsHelperCall(updater, structuralHelperNames)\n ) {\n queuedReorderState = state.index;\n continue;\n }\n\n if (\n queuedReorderState !== state.index ||\n !t.isCallExpression(updater.body) ||\n !t.isIdentifier(updater.body.callee, { name: mapUpdateIdentifier.name }) ||\n updater.body.arguments.length !== 2\n ) {\n queuedReorderState = undefined;\n continue;\n }\n const pipeline = updater.body.arguments[1];\n if (\n !t.isArrowFunctionExpression(pipeline) ||\n pipeline.params.length !== 2 ||\n !t.isIdentifier(pipeline.params[1])\n ) {\n queuedReorderState = undefined;\n continue;\n }\n let pipelineMapCount = 0;\n const applyMapName = pipeline.params[1].name;\n t.traverseFast(pipeline.body, (node) => {\n if (t.isCallExpression(node) && t.isIdentifier(node.callee, { name: applyMapName })) {\n pipelineMapCount += 1;\n }\n });\n if (pipelineMapCount === 0) {\n queuedReorderState = undefined;\n continue;\n }\n\n updater.body.callee = t.cloneNode(queuedMapPipelineIdentifier);\n mapCount += pipelineMapCount;\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n };\n}\n\nfunction countKeyedArrayMapPipeline(\n updater: t.ArrowFunctionExpression,\n mapUpdateIdentifier: t.Identifier,\n): number {\n if (\n !t.isCallExpression(updater.body) ||\n !t.isIdentifier(updater.body.callee, { name: mapUpdateIdentifier.name }) ||\n updater.body.arguments.length !== 2\n ) {\n return 0;\n }\n const pipeline = updater.body.arguments[1];\n if (\n !t.isArrowFunctionExpression(pipeline) ||\n pipeline.params.length !== 2 ||\n !t.isIdentifier(pipeline.params[1])\n ) {\n return 0;\n }\n const applyMapName = pipeline.params[1].name;\n let count = 0;\n t.traverseFast(pipeline.body, (node) => {\n if (t.isCallExpression(node) && t.isIdentifier(node.callee, { name: applyMapName })) {\n count += 1;\n }\n });\n return count;\n}\n\nfunction rewriteQueuedKeyedArrayMappedStructuralHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n filterIdentifier: t.Identifier,\n sliceIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n mapCount: number;\n structuralCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n mapCount: 0,\n structuralCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n let structuralCount = 0;\n const stateIndices = new Set<number>();\n\n const terminalStructuralReturn = (\n updater: t.ArrowFunctionExpression,\n ): t.ReturnStatement | undefined => {\n if (!t.isBlockStatement(updater.body)) return undefined;\n const statement = updater.body.body.at(-1);\n if (\n !t.isReturnStatement(statement) ||\n !statement.argument ||\n !t.isCallExpression(statement.argument) ||\n !t.isIdentifier(statement.argument.callee) ||\n (statement.argument.callee.name !== filterIdentifier.name &&\n statement.argument.callee.name !== sliceIdentifier.name)\n ) {\n return undefined;\n }\n return statement;\n };\n\n traverse(file, {\n BlockStatement(path) {\n let mappedStructuralState: number | undefined;\n let pendingMaps: Array<{\n count: number;\n stateIndex: number;\n updater: t.ArrowFunctionExpression & { body: t.CallExpression };\n }> = [];\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n\n const pipelineMapCount = countKeyedArrayMapPipeline(updater, mapUpdateIdentifier);\n if (pipelineMapCount > 0) {\n // A later pass handles maps after an already structural result. End this pass's\n // map-before-structural segment without rewriting that map here.\n if (mappedStructuralState !== undefined) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n const candidate = {\n count: pipelineMapCount,\n stateIndex: state.index,\n updater: updater as t.ArrowFunctionExpression & { body: t.CallExpression },\n };\n pendingMaps =\n pendingMaps[0]?.stateIndex === state.index ? [...pendingMaps, candidate] : [candidate];\n continue;\n }\n\n const structuralReturn = terminalStructuralReturn(updater);\n const hasPendingMaps = pendingMaps.length > 0 && pendingMaps[0].stateIndex === state.index;\n if (!structuralReturn || (!hasPendingMaps && mappedStructuralState !== state.index)) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n\n if (hasPendingMaps) {\n for (const candidate of pendingMaps) {\n candidate.updater.body.callee = t.cloneNode(queuedMapPipelineIdentifier);\n mapCount += candidate.count;\n }\n }\n const structuralValue = structuralReturn.argument;\n if (!t.isExpression(structuralValue)) {\n mappedStructuralState = undefined;\n pendingMaps = [];\n continue;\n }\n structuralReturn.argument = t.callExpression(t.cloneNode(mappedStructuralIdentifier), [\n t.cloneNode(structuralValue),\n ]);\n structuralCount += 1;\n stateIndices.add(state.index);\n mappedStructuralState = state.index;\n pendingMaps = [];\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n structuralCount,\n stateIndices,\n };\n}\n\nfunction rewriteQueuedKeyedArrayStructuralMapHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n mapPipelineIdentifier: t.Identifier,\n appendIdentifier: t.Identifier,\n mappedStructuralAppendIdentifier: t.Identifier,\n structuralAppendMapPipelineIdentifier: t.Identifier,\n filterIdentifier: t.Identifier,\n sliceIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n mapCount: number;\n mappedStructuralAppendCount: number;\n structuralAppendMapCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n mapCount: 0,\n mappedStructuralAppendCount: 0,\n structuralAppendMapCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n let mappedStructuralAppendCount = 0;\n let structuralAppendMapCount = 0;\n const stateIndices = new Set<number>();\n\n const structuralUpdateKind = (\n updater: t.ArrowFunctionExpression,\n ): { kind: \"filter\" | \"slice\"; mapped: boolean } | undefined => {\n if (!t.isBlockStatement(updater.body)) return undefined;\n const statement = updater.body.body.at(-1);\n if (!t.isReturnStatement(statement) || !statement.argument) return undefined;\n let found: \"filter\" | \"slice\" | undefined;\n let mapped = false;\n t.traverseFast(statement.argument, (node) => {\n if (!found && t.isCallExpression(node) && t.isIdentifier(node.callee)) {\n if (node.callee.name === filterIdentifier.name) found = \"filter\";\n if (node.callee.name === sliceIdentifier.name) found = \"slice\";\n }\n if (\n !mapped &&\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee, { name: mappedStructuralIdentifier.name })\n ) {\n mapped = true;\n }\n });\n return found ? { kind: found, mapped } : undefined;\n };\n\n traverse(file, {\n BlockStatement(path) {\n let structuralState: number | undefined;\n let structuralAppendState: number | undefined;\n let structuralMapState: number | undefined;\n let structuralKind: \"filter\" | \"slice\" | undefined;\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n\n const nextStructuralKind = structuralUpdateKind(updater);\n if (nextStructuralKind) {\n structuralState = state.index;\n structuralAppendState = undefined;\n structuralMapState = nextStructuralKind.mapped ? state.index : undefined;\n structuralKind = nextStructuralKind.kind;\n continue;\n }\n\n const appendCalls: t.CallExpression[] = [];\n t.traverseFast(updater.body, (node) => {\n if (\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee, { name: appendIdentifier.name })\n ) {\n appendCalls.push(node);\n }\n });\n if (appendCalls.length > 0) {\n if (structuralState === state.index && structuralKind !== undefined) {\n structuralAppendState = state.index;\n if (structuralMapState === state.index) {\n for (const call of appendCalls) {\n call.callee = t.cloneNode(mappedStructuralAppendIdentifier);\n }\n mappedStructuralAppendCount += appendCalls.length;\n }\n } else {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n }\n continue;\n }\n\n const pipelineMapCount = countKeyedArrayMapPipeline(updater, mapUpdateIdentifier);\n if (structuralState !== state.index || pipelineMapCount === 0) {\n structuralState = undefined;\n structuralAppendState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n (updater as t.ArrowFunctionExpression & { body: t.CallExpression }).body.callee =\n t.cloneNode(\n structuralAppendState === state.index\n ? structuralAppendMapPipelineIdentifier\n : mapPipelineIdentifier,\n );\n mapCount += pipelineMapCount;\n if (structuralAppendState === state.index) {\n structuralAppendMapCount += pipelineMapCount;\n }\n structuralMapState = state.index;\n stateIndices.add(state.index);\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n mappedStructuralAppendCount,\n structuralAppendMapCount,\n stateIndices,\n };\n}\n\nfunction rewriteQueuedKeyedArrayStructuralPrependMapHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n mapPipelineIdentifier: t.Identifier,\n prependIdentifier: t.Identifier,\n mappedStructuralPrependIdentifier: t.Identifier,\n structuralPrependMapPipelineIdentifier: t.Identifier,\n filterIdentifier: t.Identifier,\n sliceIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n mapCount: number;\n mappedStructuralPrependCount: number;\n structuralPrependMapCount: number;\n stateIndices: ReadonlySet<number>;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n mapCount: 0,\n mappedStructuralPrependCount: 0,\n structuralPrependMapCount: 0,\n stateIndices: new Set(),\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n let mappedStructuralPrependCount = 0;\n let structuralPrependMapCount = 0;\n const stateIndices = new Set<number>();\n\n const structuralUpdateKind = (\n updater: t.ArrowFunctionExpression,\n ): { kind: \"filter\" | \"slice\"; mapped: boolean } | undefined => {\n if (!t.isBlockStatement(updater.body)) return undefined;\n const statement = updater.body.body.at(-1);\n if (!t.isReturnStatement(statement) || !statement.argument) return undefined;\n let found: \"filter\" | \"slice\" | undefined;\n let mapped = false;\n t.traverseFast(statement.argument, (node) => {\n if (!found && t.isCallExpression(node) && t.isIdentifier(node.callee)) {\n if (node.callee.name === filterIdentifier.name) found = \"filter\";\n if (node.callee.name === sliceIdentifier.name) found = \"slice\";\n }\n if (\n !mapped &&\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee, { name: mappedStructuralIdentifier.name })\n ) {\n mapped = true;\n }\n });\n return found ? { kind: found, mapped } : undefined;\n };\n\n traverse(file, {\n BlockStatement(path) {\n let structuralState: number | undefined;\n let structuralPrependState: number | undefined;\n let structuralMapState: number | undefined;\n let structuralKind: \"filter\" | \"slice\" | undefined;\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n\n const nextStructuralKind = structuralUpdateKind(updater);\n if (nextStructuralKind) {\n structuralState = state.index;\n structuralPrependState = undefined;\n structuralMapState = nextStructuralKind.mapped ? state.index : undefined;\n structuralKind = nextStructuralKind.kind;\n continue;\n }\n\n const prependCalls: t.CallExpression[] = [];\n t.traverseFast(updater.body, (node) => {\n if (\n t.isCallExpression(node) &&\n t.isIdentifier(node.callee, { name: prependIdentifier.name })\n ) {\n prependCalls.push(node);\n }\n });\n if (prependCalls.length > 0) {\n if (structuralState === state.index && structuralKind !== undefined) {\n structuralPrependState = state.index;\n if (structuralMapState === state.index) {\n for (const call of prependCalls) {\n call.callee = t.cloneNode(mappedStructuralPrependIdentifier);\n }\n mappedStructuralPrependCount += prependCalls.length;\n }\n } else {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n }\n continue;\n }\n\n const pipelineMapCount =\n countKeyedArrayMapPipeline(updater, mapUpdateIdentifier) ||\n countKeyedArrayMapPipeline(updater, mapPipelineIdentifier);\n if (structuralState !== state.index || pipelineMapCount === 0) {\n structuralState = undefined;\n structuralPrependState = undefined;\n structuralMapState = undefined;\n structuralKind = undefined;\n continue;\n }\n (updater as t.ArrowFunctionExpression & { body: t.CallExpression }).body.callee =\n t.cloneNode(\n structuralPrependState === state.index\n ? structuralPrependMapPipelineIdentifier\n : mapPipelineIdentifier,\n );\n mapCount += pipelineMapCount;\n if (structuralPrependState === state.index) {\n structuralPrependMapCount += pipelineMapCount;\n }\n structuralMapState = state.index;\n stateIndices.add(state.index);\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n mappedStructuralPrependCount,\n structuralPrependMapCount,\n stateIndices,\n };\n}\n\nfunction rewriteQueuedKeyedArrayRollingWindowMapHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n mapPipelineIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n rollingWindowMapPipelineIdentifier: t.Identifier,\n mappedRollingWindowIdentifier: t.Identifier,\n rollingWindowIdentifier: t.Identifier,\n structuralAppendIdentifier: t.Identifier,\n mappedStructuralAppendIdentifier: t.Identifier,\n structuralAppendMapPipelineIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n allowed: boolean,\n): {\n chainedMapCount: number;\n chainedRollingWindowCount: number;\n root: t.JSXElement;\n leadingMapCount: number;\n mappedRollingWindowCount: number;\n rollingWindowCount: number;\n structuralRollingWindowCount: number;\n trailingMapCount: number;\n} {\n if (!allowed) {\n return {\n chainedMapCount: 0,\n chainedRollingWindowCount: 0,\n root: t.cloneNode(root, true),\n leadingMapCount: 0,\n mappedRollingWindowCount: 0,\n rollingWindowCount: 0,\n structuralRollingWindowCount: 0,\n trailingMapCount: 0,\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let chainedMapCount = 0;\n let chainedRollingWindowCount = 0;\n let leadingMapCount = 0;\n let mappedRollingWindowCount = 0;\n let rollingWindowCount = 0;\n let structuralRollingWindowCount = 0;\n let trailingMapCount = 0;\n\n type MapStep = {\n count: number;\n updater: t.ArrowFunctionExpression & { body: t.CallExpression };\n };\n type RollingStep = {\n call: t.CallExpression;\n };\n type SegmentStep = { kind: \"map\"; value: MapStep } | { kind: \"rolling\"; value: RollingStep };\n\n const mapStep = (updater: t.ArrowFunctionExpression): MapStep | undefined => {\n if (!t.isCallExpression(updater.body)) return undefined;\n const count =\n countKeyedArrayMapPipeline(updater, mapUpdateIdentifier) ||\n countKeyedArrayMapPipeline(updater, mapPipelineIdentifier);\n return count > 0\n ? {\n count,\n updater: updater as t.ArrowFunctionExpression & { body: t.CallExpression },\n }\n : undefined;\n };\n const rollingStep = (updater: t.ArrowFunctionExpression): RollingStep | undefined => {\n if (!t.isBlockStatement(updater.body)) return undefined;\n const statement = updater.body.body.at(-1);\n if (\n !t.isReturnStatement(statement) ||\n !statement.argument ||\n !t.isCallExpression(statement.argument) ||\n !t.isIdentifier(statement.argument.callee, { name: rollingWindowIdentifier.name }) ||\n statement.argument.arguments.length !== 3 ||\n !t.isExpression(statement.argument.arguments[1]) ||\n !t.isExpression(statement.argument.arguments[2])\n ) {\n return undefined;\n }\n return { call: statement.argument };\n };\n\n traverse(file, {\n BlockStatement(path) {\n let segment: SegmentStep[] = [];\n let segmentState: number | undefined;\n const flushSegment = (): void => {\n const rollingIndices = segment.flatMap((step, index) =>\n step.kind === \"rolling\" ? [index] : [],\n );\n if (rollingIndices.length === 0 || segment.length < 2) {\n segment = [];\n segmentState = undefined;\n return;\n }\n if (rollingIndices.length > 1) {\n const maps = segment.filter((step) => step.kind === \"map\");\n if (maps.length === 0) {\n segment = [];\n segmentState = undefined;\n return;\n }\n for (const step of maps) {\n if (step.kind !== \"map\") continue;\n step.value.updater.body.callee = t.cloneNode(rollingWindowMapPipelineIdentifier);\n chainedMapCount += step.value.count;\n }\n for (const index of rollingIndices) {\n const step = segment[index];\n if (step.kind === \"rolling\") {\n step.value.call.callee = t.cloneNode(mappedRollingWindowIdentifier);\n }\n }\n chainedRollingWindowCount += rollingIndices.length;\n rollingWindowCount += rollingIndices.length;\n segment = [];\n segmentState = undefined;\n return;\n }\n const rollingIndex = rollingIndices[0];\n const leadingMaps = segment.slice(0, rollingIndex).filter((step) => step.kind === \"map\");\n const trailingMaps = segment.slice(rollingIndex + 1).filter((step) => step.kind === \"map\");\n if (leadingMaps.length === 0 && trailingMaps.length === 0) {\n segment = [];\n segmentState = undefined;\n return;\n }\n\n const rolling = segment[rollingIndex];\n if (rolling.kind !== \"rolling\") return;\n const retained = rolling.value.call.arguments[1];\n const value = rolling.value.call.arguments[2];\n if (!t.isExpression(retained) || !t.isExpression(value)) return;\n const hasLeadingMaps = leadingMaps.length > 0;\n rolling.value.call.callee = t.cloneNode(\n hasLeadingMaps ? mappedStructuralAppendIdentifier : structuralAppendIdentifier,\n );\n rolling.value.call.arguments = [\n hasLeadingMaps\n ? t.callExpression(t.cloneNode(mappedStructuralIdentifier), [\n t.cloneNode(retained, true),\n ])\n : t.cloneNode(retained, true),\n t.cloneNode(value, true),\n ];\n rollingWindowCount += 1;\n if (hasLeadingMaps) {\n mappedRollingWindowCount += 1;\n for (const step of leadingMaps) {\n if (step.kind !== \"map\") continue;\n step.value.updater.body.callee = t.cloneNode(queuedMapPipelineIdentifier);\n leadingMapCount += step.value.count;\n }\n } else {\n structuralRollingWindowCount += 1;\n }\n for (const step of trailingMaps) {\n if (step.kind !== \"map\") continue;\n step.value.updater.body.callee = t.cloneNode(structuralAppendMapPipelineIdentifier);\n trailingMapCount += step.value.count;\n }\n segment = [];\n segmentState = undefined;\n };\n\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n flushSegment();\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n flushSegment();\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n flushSegment();\n continue;\n }\n if (segmentState !== undefined && segmentState !== state.index) flushSegment();\n const nextMap = mapStep(updater);\n const nextRolling = rollingStep(updater);\n if (!nextMap && !nextRolling) {\n flushSegment();\n continue;\n }\n segmentState = state.index;\n segment.push(\n nextMap ? { kind: \"map\", value: nextMap } : { kind: \"rolling\", value: nextRolling! },\n );\n }\n flushSegment();\n },\n });\n return {\n chainedMapCount,\n chainedRollingWindowCount,\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n leadingMapCount,\n mappedRollingWindowCount,\n rollingWindowCount,\n structuralRollingWindowCount,\n trailingMapCount,\n };\n}\n\nfunction rewriteQueuedKeyedArrayStructuralReorderHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n filterIdentifier: t.Identifier,\n sliceIdentifier: t.Identifier,\n mapPipelineIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n mappedStructuralIdentifier: t.Identifier,\n mapReorderIdentifier: t.Identifier,\n reorderIdentifier: t.Identifier,\n sortIdentifier: t.Identifier,\n structuralReorderIdentifier: t.Identifier,\n structuralSortIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n reorderCount: number;\n sortCount: number;\n replacedMapReorderCount: number;\n replacedMapSortCount: number;\n replacedQueuedMapCount: number;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n reorderCount: 0,\n sortCount: 0,\n replacedMapReorderCount: 0,\n replacedMapSortCount: 0,\n replacedQueuedMapCount: 0,\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let reorderCount = 0;\n let sortCount = 0;\n let replacedMapReorderCount = 0;\n let replacedMapSortCount = 0;\n let replacedQueuedMapCount = 0;\n\n traverse(file, {\n BlockStatement(path) {\n let structuralState: number | undefined;\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n structuralState = undefined;\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n structuralState = undefined;\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n structuralState = undefined;\n continue;\n }\n\n const methodKinds = new Map<string, \"reverse\" | \"sort\">();\n t.traverseFast(updater.body, (node) => {\n if (\n !t.isVariableDeclarator(node) ||\n !t.isIdentifier(node.id) ||\n !t.isMemberExpression(node.init) ||\n node.init.computed ||\n !t.isIdentifier(node.init.property)\n ) {\n return;\n }\n if (node.init.property.name === \"toReversed\") methodKinds.set(node.id.name, \"reverse\");\n if (node.init.property.name === \"toSorted\") methodKinds.set(node.id.name, \"sort\");\n });\n\n let startsStructuralLineage = false;\n let continuesStructuralLineage = false;\n let unsupported = false;\n const queuedMaps: t.CallExpression[] = [];\n const reorderCalls: Array<{\n call: t.CallExpression;\n kind: \"reverse\" | \"sort\";\n mapped: boolean;\n }> = [];\n t.traverseFast(updater.body, (node) => {\n if (!t.isCallExpression(node) || !t.isIdentifier(node.callee)) return;\n const helperName = node.callee.name;\n if (\n helperName === filterIdentifier.name ||\n helperName === sliceIdentifier.name ||\n helperName === mappedStructuralIdentifier.name\n ) {\n startsStructuralLineage = true;\n return;\n }\n if (\n helperName === structuralReorderIdentifier.name ||\n helperName === structuralSortIdentifier.name\n ) {\n startsStructuralLineage = true;\n return;\n }\n if (helperName === mapPipelineIdentifier.name) {\n continuesStructuralLineage = true;\n return;\n }\n if (helperName === queuedMapPipelineIdentifier.name) {\n continuesStructuralLineage = true;\n queuedMaps.push(node);\n return;\n }\n if (helperName === reorderIdentifier.name) {\n continuesStructuralLineage = true;\n reorderCalls.push({ call: node, kind: \"reverse\", mapped: false });\n return;\n }\n if (helperName === sortIdentifier.name) {\n continuesStructuralLineage = true;\n reorderCalls.push({ call: node, kind: \"sort\", mapped: false });\n return;\n }\n if (helperName === mapReorderIdentifier.name) {\n const method = node.arguments[1];\n const kind = t.isIdentifier(method) ? methodKinds.get(method.name) : undefined;\n if (!kind) {\n unsupported = true;\n return;\n }\n continuesStructuralLineage = true;\n reorderCalls.push({ call: node, kind, mapped: true });\n }\n });\n\n const hasStructuralLineage = startsStructuralLineage || structuralState === state.index;\n if (unsupported || (!startsStructuralLineage && !continuesStructuralLineage)) {\n structuralState = undefined;\n continue;\n }\n if (!hasStructuralLineage) {\n structuralState = undefined;\n continue;\n }\n\n for (const call of queuedMaps) {\n call.callee = t.cloneNode(mapPipelineIdentifier);\n replacedQueuedMapCount += 1;\n }\n for (const { call, kind, mapped } of reorderCalls) {\n call.callee = t.cloneNode(\n kind === \"reverse\" ? structuralReorderIdentifier : structuralSortIdentifier,\n );\n if (kind === \"reverse\") {\n reorderCount += 1;\n if (mapped) replacedMapReorderCount += 1;\n } else {\n sortCount += 1;\n if (mapped) replacedMapSortCount += 1;\n }\n }\n structuralState = state.index;\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n reorderCount,\n sortCount,\n replacedMapReorderCount,\n replacedMapSortCount,\n replacedQueuedMapCount,\n };\n}\n\nfunction rewriteQueuedKeyedArrayMapReorderHints(\n root: t.JSXElement,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n mapUpdateIdentifier: t.Identifier,\n queuedMapPipelineIdentifier: t.Identifier,\n mapReorderIdentifier: t.Identifier,\n reorderIdentifier: t.Identifier,\n sortIdentifier: t.Identifier,\n structuralReorderIdentifier: t.Identifier,\n structuralSortIdentifier: t.Identifier,\n allowed: boolean,\n): {\n root: t.JSXElement;\n mapCount: number;\n mapReorderCount: number;\n mapSortCount: number;\n} {\n if (!allowed) {\n return {\n root: t.cloneNode(root, true),\n mapCount: 0,\n mapReorderCount: 0,\n mapSortCount: 0,\n };\n }\n const file = expressionFile(t.cloneNode(root, true));\n let mapCount = 0;\n let mapReorderCount = 0;\n let mapSortCount = 0;\n\n traverse(file, {\n BlockStatement(path) {\n let mappedReorderState: number | undefined;\n let pendingMaps: Array<{\n count: number;\n stateIndex: number;\n updater: t.ArrowFunctionExpression & { body: t.CallExpression };\n }> = [];\n const statements = path.get(\"body\") as NodePath<t.Statement>[];\n for (const statementPath of statements) {\n const statement = statementPath.node;\n if (!t.isExpressionStatement(statement) || !t.isCallExpression(statement.expression)) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n const setterCall = statement.expression;\n if (\n !t.isIdentifier(setterCall.callee) ||\n statementPath.scope.hasBinding(setterCall.callee.name) ||\n setterCall.arguments.length !== 1\n ) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n const state = statesBySetter.get(setterCall.callee.name);\n const updater = setterCall.arguments[0];\n if (\n !state ||\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n\n if (\n t.isCallExpression(updater.body) &&\n t.isIdentifier(updater.body.callee, { name: mapUpdateIdentifier.name }) &&\n updater.body.arguments.length === 2\n ) {\n const pipeline = updater.body.arguments[1];\n let pipelineMapCount = 0;\n if (\n t.isArrowFunctionExpression(pipeline) &&\n pipeline.params.length === 2 &&\n t.isIdentifier(pipeline.params[1])\n ) {\n const applyMapName = pipeline.params[1].name;\n t.traverseFast(pipeline.body, (node) => {\n if (t.isCallExpression(node) && t.isIdentifier(node.callee, { name: applyMapName })) {\n pipelineMapCount += 1;\n }\n });\n }\n if (pipelineMapCount > 0) {\n const candidate = {\n count: pipelineMapCount,\n stateIndex: state.index,\n updater: updater as t.ArrowFunctionExpression & { body: t.CallExpression },\n };\n pendingMaps =\n pendingMaps[0]?.stateIndex === state.index\n ? [...pendingMaps, candidate]\n : [candidate];\n if (mappedReorderState !== state.index) mappedReorderState = undefined;\n continue;\n }\n }\n\n let containsMappedReorder = false;\n const reorderCalls: Array<{\n call: t.CallExpression;\n kind: \"reverse\" | \"sort\";\n }> = [];\n let structural = false;\n t.traverseFast(updater.body, (node) => {\n if (!t.isCallExpression(node) || !t.isIdentifier(node.callee)) return;\n if (\n node.callee.name === structuralReorderIdentifier.name ||\n node.callee.name === structuralSortIdentifier.name\n ) {\n structural = true;\n } else if (node.callee.name === mapReorderIdentifier.name) {\n containsMappedReorder = true;\n } else if (node.callee.name === reorderIdentifier.name) {\n reorderCalls.push({ call: node, kind: \"reverse\" });\n } else if (node.callee.name === sortIdentifier.name) {\n reorderCalls.push({ call: node, kind: \"sort\" });\n }\n });\n if (structural) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n\n const hasPendingMaps = pendingMaps.length > 0 && pendingMaps[0].stateIndex === state.index;\n if (containsMappedReorder && reorderCalls.length === 0) {\n // A mapped reorder can start the next adjacent segment only when no unlinked map setter\n // sits before it. The later reorder-to-map pass handles proven maps after an existing\n // mapped reorder; an earlier unproven map must not be skipped when establishing lineage.\n mappedReorderState = pendingMaps.length === 0 ? state.index : undefined;\n pendingMaps = [];\n continue;\n }\n if (\n containsMappedReorder ||\n reorderCalls.length === 0 ||\n (!hasPendingMaps && mappedReorderState !== state.index)\n ) {\n mappedReorderState = undefined;\n pendingMaps = [];\n continue;\n }\n\n if (hasPendingMaps) {\n for (const candidate of pendingMaps) {\n candidate.updater.body.callee = t.cloneNode(queuedMapPipelineIdentifier);\n mapCount += candidate.count;\n }\n }\n for (const { call, kind } of reorderCalls) {\n call.callee = t.cloneNode(mapReorderIdentifier);\n if (kind === \"reverse\") mapReorderCount += 1;\n else mapSortCount += 1;\n }\n mappedReorderState = state.index;\n pendingMaps = [];\n }\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n mapCount,\n mapReorderCount,\n mapSortCount,\n };\n}\n\nfunction rewriteKeyedArraySortHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const returned = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !returned ||\n !t.isCallExpression(returned) ||\n returned.arguments.length > 1 ||\n !t.isMemberExpression(returned.callee) ||\n returned.callee.computed ||\n !t.isIdentifier(returned.callee.object, { name: updater.params[0].name }) ||\n !t.isIdentifier(returned.callee.property, { name: \"toSorted\" })\n ) {\n return;\n }\n const comparator = returned.arguments[0];\n if (\n comparator &&\n !t.isArrowFunctionExpression(comparator) &&\n !t.isFunctionExpression(comparator)\n ) {\n return;\n }\n if (comparator && validateCollectionCallback(comparator, \"toSorted\", safeGlobals)) return;\n\n const previous = t.cloneNode(updater.params[0]);\n const method = path.scope.generateUidIdentifier(\"farmToSorted\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(method),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"toSorted\")),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(method),\n ...(comparator ? [t.cloneNode(comparator, true)] : []),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\nfunction rewriteKeyedArraySliceHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isCallExpression(updateExpression) ||\n updateExpression.arguments.length < 1 ||\n updateExpression.arguments.length > 2 ||\n !t.isMemberExpression(updateExpression.callee) ||\n updateExpression.callee.computed ||\n !t.isIdentifier(updateExpression.callee.object, { name: updater.params[0].name }) ||\n !t.isIdentifier(updateExpression.callee.property, { name: \"slice\" })\n ) {\n return;\n }\n const bounds: t.Expression[] = [];\n for (const argument of updateExpression.arguments) {\n if (!t.isExpression(argument)) return;\n if (validateKeyedArrayPositionExpression(argument, safeGlobals) !== undefined) return;\n bounds.push(argument);\n }\n if (bounds.length === 1 && staticSliceIndex(bounds[0]) === 0) return;\n\n const previous = t.cloneNode(updater.params[0]);\n const sliceMethod = path.scope.generateUidIdentifier(\"farmSlice\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(sliceMethod),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"slice\")),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(sliceMethod),\n ...bounds.map((bound) => t.cloneNode(bound, true)),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\nfunction rewriteKeyedArrayFilterHints(\n root: t.JSXElement,\n hintedStateIndices: ReadonlySet<number>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n helperIdentifier: t.Identifier,\n safeGlobals: ReadonlySet<string>,\n): { root: t.JSXElement; count: number; stateIndices: ReadonlySet<number> } {\n if (hintedStateIndices.size === 0) {\n return { root: t.cloneNode(root, true), count: 0, stateIndices: new Set() };\n }\n const file = expressionFile(t.cloneNode(root, true));\n const stateIndices = new Set<number>();\n let count = 0;\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state || !hintedStateIndices.has(state.index) || path.node.arguments.length !== 1) {\n return;\n }\n const updater = path.node.arguments[0];\n if (\n !t.isArrowFunctionExpression(updater) ||\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return;\n }\n const updateExpression = returnedExpression(updater);\n if (\n (t.isBlockStatement(updater.body) && updater.body.directives.length > 0) ||\n !t.isCallExpression(updateExpression) ||\n updateExpression.arguments.length !== 1 ||\n !t.isMemberExpression(updateExpression.callee) ||\n updateExpression.callee.computed ||\n !t.isIdentifier(updateExpression.callee.object, {\n name: updater.params[0].name,\n }) ||\n !t.isIdentifier(updateExpression.callee.property, { name: \"filter\" })\n ) {\n return;\n }\n const predicate = normalizeSafeKeyedFilterPredicate(\n updateExpression.arguments[0],\n safeGlobals,\n );\n if (!predicate) return;\n\n const previous = t.cloneNode(updater.params[0]);\n const filterMethod = path.scope.generateUidIdentifier(\"farmFilter\");\n path.node.arguments[0] = t.arrowFunctionExpression(\n [t.cloneNode(previous)],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(filterMethod),\n t.memberExpression(t.cloneNode(previous), t.identifier(\"filter\")),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(helperIdentifier), [\n t.cloneNode(previous),\n t.cloneNode(filterMethod),\n t.cloneNode(predicate, true),\n ]),\n ),\n ]),\n );\n count += 1;\n stateIndices.add(state.index);\n path.skip();\n },\n });\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n stateIndices,\n };\n}\n\ntype KeyedCollectionTargetKind = \"set\" | \"map\";\n\ninterface PreparedKeyedCollectionUpdater {\n updater: t.ArrowFunctionExpression | t.FunctionExpression;\n mutations: number;\n}\n\nfunction collectionConstructorName(kind: KeyedCollectionTargetKind): \"Set\" | \"Map\" {\n return kind === \"set\" ? \"Set\" : \"Map\";\n}\n\nfunction isCollectionConstruction(\n expression: t.Expression | null | undefined,\n kind: KeyedCollectionTargetKind,\n previous?: t.Identifier,\n): expression is t.NewExpression {\n if (\n !t.isNewExpression(expression) ||\n !t.isIdentifier(expression.callee, {\n name: collectionConstructorName(kind),\n })\n ) {\n return false;\n }\n if (!previous) return true;\n return (\n expression.arguments.length === 1 &&\n t.isIdentifier(expression.arguments[0], { name: previous.name })\n );\n}\n\nfunction collectionStateInitializerIsOwned(\n initialValue: t.Expression | undefined,\n kind: KeyedCollectionTargetKind,\n constructorIsGlobal: boolean,\n): boolean {\n if (!initialValue || !constructorIsGlobal) return false;\n if (isCollectionConstruction(initialValue, kind)) return true;\n if (!t.isArrowFunctionExpression(initialValue) && !t.isFunctionExpression(initialValue)) {\n return false;\n }\n if (t.isBlockStatement(initialValue.body) && initialValue.body.body.length !== 1) return false;\n const value = returnedExpression(initialValue);\n return Boolean(value && isCollectionConstruction(value, kind));\n}\n\nfunction collectionStateHasOnlyOwnedReads(\n root: t.JSXElement,\n state: StateBinding,\n kind: KeyedCollectionTargetKind,\n): boolean {\n const file = expressionFile(t.cloneNode(root, true));\n let valid = true;\n const readMethods = kind === \"set\" ? new Set([\"has\"]) : new Set([\"get\", \"has\"]);\n traverse(file, {\n ReferencedIdentifier(path) {\n if (\n !valid ||\n !t.isIdentifier(path.node) ||\n path.node.name !== state.valueName ||\n path.scope.hasBinding(path.node.name)\n ) {\n return;\n }\n const parent = path.parentPath;\n if (\n parent.isNewExpression() &&\n t.isIdentifier(parent.node.callee, {\n name: collectionConstructorName(kind),\n }) &&\n parent.node.arguments.length === 1 &&\n parent.node.arguments[0] === path.node\n ) {\n return;\n }\n if (\n !parent.isMemberExpression() ||\n parent.node.object !== path.node ||\n parent.node.computed ||\n !t.isIdentifier(parent.node.property)\n ) {\n valid = false;\n path.stop();\n return;\n }\n const property = parent.node.property.name;\n if (property === \"size\") return;\n const call = parent.parentPath;\n if (\n !readMethods.has(property) ||\n !call?.isCallExpression() ||\n call.node.callee !== parent.node\n ) {\n valid = false;\n path.stop();\n }\n },\n });\n return valid;\n}\n\nfunction collectionMutationOperation(\n kind: KeyedCollectionTargetKind,\n method: string,\n): \"set-add\" | \"set-delete\" | \"map-set\" | \"map-delete\" | undefined {\n if (kind === \"set\" && method === \"add\") return \"set-add\";\n if (kind === \"set\" && method === \"delete\") return \"set-delete\";\n if (kind === \"map\" && method === \"set\") return \"map-set\";\n if (kind === \"map\" && method === \"delete\") return \"map-delete\";\n return undefined;\n}\n\nfunction collectionMutationArgumentsAreValid(\n operation: ReturnType<typeof collectionMutationOperation>,\n args: readonly (t.Expression | t.JSXNamespacedName | t.ArgumentPlaceholder | t.SpreadElement)[],\n): args is readonly t.Expression[] {\n if (!operation || args.some((argument) => !t.isExpression(argument))) return false;\n return operation === \"map-set\" ? args.length === 2 : args.length === 1;\n}\n\nfunction prepareKeyedCollectionUpdater(\n updater: t.ArrowFunctionExpression | t.FunctionExpression,\n kind: KeyedCollectionTargetKind,\n updateHelper: t.Identifier,\n mutationHelper: t.Identifier,\n): PreparedKeyedCollectionUpdater | undefined {\n if (\n updater.async ||\n updater.generator ||\n updater.params.length !== 1 ||\n !t.isIdentifier(updater.params[0])\n ) {\n return undefined;\n }\n const previous = updater.params[0];\n\n if (t.isExpression(updater.body)) {\n if (\n !t.isCallExpression(updater.body) ||\n !t.isMemberExpression(updater.body.callee) ||\n updater.body.callee.computed ||\n !t.isIdentifier(updater.body.callee.property)\n ) {\n return undefined;\n }\n const operation = collectionMutationOperation(kind, updater.body.callee.property.name);\n if (\n (operation !== \"set-add\" && operation !== \"map-set\") ||\n !collectionMutationArgumentsAreValid(operation, updater.body.arguments) ||\n !isCollectionConstruction(updater.body.callee.object, kind, previous)\n ) {\n return undefined;\n }\n const collection = uniqueLocalIdentifier(\"_farmCollection\", [updater]);\n const body = t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.cloneNode(collection),\n t.cloneNode(updater.body.callee.object, true),\n ),\n ]),\n t.returnStatement(\n t.callExpression(t.cloneNode(updateHelper), [\n t.cloneNode(previous),\n t.callExpression(t.cloneNode(mutationHelper), [\n t.cloneNode(collection),\n t.memberExpression(t.cloneNode(collection), t.cloneNode(updater.body.callee.property)),\n t.stringLiteral(operation),\n ...updater.body.arguments.map(\n (argument) => t.cloneNode(argument, true) as t.Expression,\n ),\n ]),\n t.stringLiteral(kind),\n ]),\n ),\n ]);\n return {\n updater: t.arrowFunctionExpression([t.cloneNode(previous)], body),\n mutations: 1,\n };\n }\n\n const cloned = t.cloneNode(updater, true);\n const file = expressionFile(cloned);\n let functionPath: NodePath<t.ArrowFunctionExpression | t.FunctionExpression> | undefined;\n traverse(file, {\n Function(path) {\n if (functionPath) return;\n if (path.isArrowFunctionExpression() || path.isFunctionExpression()) {\n functionPath = path;\n }\n },\n });\n if (!functionPath || !t.isBlockStatement(functionPath.node.body)) return undefined;\n const clonedPrevious = functionPath.node.params[0];\n if (!t.isIdentifier(clonedPrevious)) return undefined;\n\n let collectionDeclaration: NodePath<t.VariableDeclarator> | undefined;\n const updaterBody = functionPath.get(\"body\");\n if (!updaterBody.isBlockStatement()) return undefined;\n for (const statement of updaterBody.get(\"body\")) {\n if (!statement.isVariableDeclaration({ kind: \"const\" })) continue;\n for (const declaration of statement.get(\"declarations\")) {\n if (\n declaration.isVariableDeclarator() &&\n t.isIdentifier(declaration.node.id) &&\n t.isExpression(declaration.node.init) &&\n isCollectionConstruction(declaration.node.init, kind, clonedPrevious)\n ) {\n if (collectionDeclaration) return undefined;\n collectionDeclaration = declaration;\n }\n }\n }\n if (!collectionDeclaration || !t.isIdentifier(collectionDeclaration.node.id)) return undefined;\n if (collectionDeclaration.scope.getBinding(collectionConstructorName(kind))) return undefined;\n const collectionName = collectionDeclaration.node.id.name;\n const collectionBinding = collectionDeclaration.scope.getBinding(collectionName);\n const previousBinding = functionPath.scope.getBinding(clonedPrevious.name);\n if (!collectionBinding || !previousBinding) return undefined;\n\n let valid = true;\n let mutations = 0;\n traverse(file, {\n ReferencedIdentifier(path) {\n if (!valid) return;\n const binding = path.scope.getBinding(path.node.name);\n const belongsToUpdater = path.getFunctionParent()?.node === functionPath?.node;\n if (binding === collectionBinding) {\n if (!belongsToUpdater) {\n valid = false;\n path.stop();\n return;\n }\n const parent = path.parentPath;\n if (parent.isReturnStatement() && parent.node.argument === path.node) return;\n if (\n !parent.isMemberExpression() ||\n parent.node.object !== path.node ||\n parent.node.computed ||\n !t.isIdentifier(parent.node.property)\n ) {\n valid = false;\n path.stop();\n return;\n }\n const method = parent.node.property.name;\n if (method === \"size\") return;\n const call = parent.parentPath;\n if (!call?.isCallExpression() || call.node.callee !== parent.node) {\n valid = false;\n path.stop();\n return;\n }\n const operation = collectionMutationOperation(kind, method);\n const read = kind === \"set\" ? method === \"has\" : method === \"get\" || method === \"has\";\n if (read) return;\n if (\n !collectionMutationArgumentsAreValid(operation, call.node.arguments) ||\n (call.parentPath.isMemberExpression() && call.parentPath.node.object === call.node)\n ) {\n valid = false;\n path.stop();\n return;\n }\n mutations += 1;\n return;\n }\n if (binding === previousBinding) {\n if (!belongsToUpdater) {\n valid = false;\n path.stop();\n return;\n }\n const parent = path.parentPath;\n if (parent.isReturnStatement() && parent.node.argument === path.node) return;\n if (\n parent.isNewExpression() &&\n parent.node.arguments.length === 1 &&\n parent.node.arguments[0] === path.node &&\n t.isIdentifier(parent.node.callee, {\n name: collectionConstructorName(kind),\n })\n ) {\n return;\n }\n if (\n parent.isMemberExpression() &&\n parent.node.object === path.node &&\n !parent.node.computed &&\n t.isIdentifier(parent.node.property)\n ) {\n const method = parent.node.property.name;\n const call = parent.parentPath;\n if (\n method === \"size\" ||\n ((kind === \"set\" ? method === \"has\" : method === \"get\" || method === \"has\") &&\n call?.isCallExpression() &&\n call.node.callee === parent.node)\n ) {\n return;\n }\n }\n valid = false;\n path.stop();\n }\n },\n ReturnStatement(path) {\n if (!valid || path.getFunctionParent()?.node !== functionPath?.node || !path.node.argument) {\n return;\n }\n const value = path.node.argument;\n const returnsOwnedCollection =\n (t.isIdentifier(value) &&\n (path.scope.getBinding(value.name) === collectionBinding ||\n path.scope.getBinding(value.name) === previousBinding)) ||\n isCollectionConstruction(value, kind);\n if (!returnsOwnedCollection) {\n valid = false;\n path.stop();\n }\n },\n });\n if (!valid || mutations === 0) return undefined;\n\n traverse(file, {\n CallExpression(path) {\n if (path.getFunctionParent()?.node !== functionPath?.node) return;\n const callee = path.node.callee;\n if (\n !t.isMemberExpression(callee) ||\n callee.computed ||\n !t.isIdentifier(callee.object, { name: collectionName }) ||\n path.scope.getBinding(collectionName) !== collectionBinding ||\n !t.isIdentifier(callee.property)\n ) {\n return;\n }\n const operation = collectionMutationOperation(kind, callee.property.name);\n if (!collectionMutationArgumentsAreValid(operation, path.node.arguments)) return;\n path.replaceWith(\n t.callExpression(t.cloneNode(mutationHelper), [\n t.cloneNode(callee.object),\n t.memberExpression(t.cloneNode(callee.object), t.cloneNode(callee.property)),\n t.stringLiteral(operation!),\n ...path.node.arguments.map((argument) => t.cloneNode(argument, true) as t.Expression),\n ]),\n );\n path.skip();\n },\n ReturnStatement(path) {\n if (path.getFunctionParent()?.node !== functionPath?.node || !path.node.argument) return;\n path.node.argument = t.callExpression(t.cloneNode(updateHelper), [\n t.cloneNode(clonedPrevious),\n t.cloneNode(path.node.argument, true),\n t.stringLiteral(kind),\n ]);\n },\n });\n const prepared = (file.program.body[0] as t.ExpressionStatement).expression;\n return t.isArrowFunctionExpression(prepared) || t.isFunctionExpression(prepared)\n ? { updater: prepared, mutations }\n : undefined;\n}\n\nfunction rewriteKeyedCollectionUpdateHints(\n root: t.JSXElement,\n targetKinds: ReadonlyMap<number, KeyedCollectionTargetKind>,\n states: readonly StateBinding[],\n statesBySetter: ReadonlyMap<string, StateBinding>,\n updateHelper: t.Identifier,\n mutationHelper: t.Identifier,\n globalCollections: ReadonlySet<string>,\n): { root: t.JSXElement; count: number } {\n if (targetKinds.size === 0) return { root: t.cloneNode(root, true), count: 0 };\n const file = expressionFile(t.cloneNode(root, true));\n let count = 0;\n\n for (const [stateIndex, kind] of targetKinds) {\n const state = states[stateIndex];\n if (\n !state ||\n !collectionStateInitializerIsOwned(\n state.initialValue,\n kind,\n globalCollections.has(collectionConstructorName(kind)),\n ) ||\n !collectionStateHasOnlyOwnedReads(root, state, kind)\n ) {\n continue;\n }\n\n const replacements = new Map<t.CallExpression, PreparedKeyedCollectionUpdater>();\n let valid = true;\n traverse(file, {\n CallExpression(path) {\n if (!valid) return;\n const callee = path.get(\"callee\");\n if (\n !callee.isIdentifier({ name: state.setterName }) ||\n callee.scope.hasBinding(callee.node.name) ||\n statesBySetter.get(callee.node.name)?.index !== stateIndex\n ) {\n return;\n }\n if (path.node.arguments.length !== 1 || !t.isExpression(path.node.arguments[0])) {\n valid = false;\n path.stop();\n return;\n }\n const update = path.node.arguments[0];\n if (path.scope.getBinding(collectionConstructorName(kind))) {\n valid = false;\n path.stop();\n return;\n }\n if (isCollectionConstruction(update, kind)) return;\n if (!t.isArrowFunctionExpression(update) && !t.isFunctionExpression(update)) {\n valid = false;\n path.stop();\n return;\n }\n const prepared = prepareKeyedCollectionUpdater(update, kind, updateHelper, mutationHelper);\n if (!prepared) {\n valid = false;\n path.stop();\n return;\n }\n replacements.set(path.node, prepared);\n },\n });\n if (!valid || replacements.size === 0) continue;\n\n traverse(file, {\n CallExpression(path) {\n const prepared = replacements.get(path.node);\n if (!prepared) return;\n path.node.arguments[0] = t.cloneNode(prepared.updater, true);\n count += prepared.mutations;\n path.skip();\n },\n });\n }\n\n return {\n root: (file.program.body[0] as t.ExpressionStatement).expression as t.JSXElement,\n count,\n };\n}\n\nfunction rewriteStateAccess(\n expression: t.Expression,\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.Expression {\n const file = expressionFile(cloneExpression(expression));\n traverse(file, {\n CallExpression(path) {\n const callee = path.get(\"callee\");\n if (!callee.isIdentifier() || callee.scope.hasBinding(callee.node.name)) return;\n const state = statesBySetter.get(callee.node.name);\n if (!state) return;\n callee.replaceWith(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"set\"),\n ),\n );\n },\n ReferencedIdentifier(path) {\n const state = statesByValue.get(path.node.name);\n if (!state || path.scope.hasBinding(path.node.name)) return;\n path.replaceWith(\n t.callExpression(\n t.memberExpression(\n t.memberExpression(t.cloneNode(stateParameter), t.numericLiteral(state.index), true),\n t.identifier(\"get\"),\n ),\n [],\n ),\n );\n },\n });\n return (file.program.body[0] as t.ExpressionStatement).expression;\n}\n\nfunction cleanJsxText(value: string): string {\n const lines = value.replace(/\\r/g, \"\").split(\"\\n\");\n let result = \"\";\n for (let index = 0; index < lines.length; index += 1) {\n const lastNonEmptyLine = lines.slice(index + 1).every((line) => line.trim().length === 0);\n let line = lines[index].replace(/\\t/g, \" \").replace(/ +/g, \" \");\n if (index > 0) line = line.replace(/^ /, \"\");\n if (!lastNonEmptyLine) line = line.replace(/ $/, \"\");\n if (line) result += line + (!lastNonEmptyLine ? \" \" : \"\");\n }\n return result;\n}\n\nfunction isTextExpression(\n expression: t.Expression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): boolean {\n if (collectStateDependencies(expression, statesByValue).length > 0) {\n return validateDerivedExpression(expression, safeGlobals) === undefined;\n }\n\n let supported = true;\n traverse(expressionFile(cloneExpression(expression)), {\n CallExpression(path) {\n if (!isSafeCompilerCall(path.node, safeGlobals)) {\n supported = false;\n path.stop();\n }\n },\n OptionalCallExpression(path) {\n supported = false;\n path.stop();\n },\n JSXElement(path) {\n supported = false;\n path.stop();\n },\n JSXFragment(path) {\n supported = false;\n path.stop();\n },\n ObjectExpression(path) {\n supported = false;\n path.stop();\n },\n Function(path) {\n supported = false;\n path.stop();\n },\n });\n return supported;\n}\n\nfunction jsxAttributeName(attribute: t.JSXAttribute): string | undefined {\n return t.isJSXIdentifier(attribute.name) ? attribute.name.name : undefined;\n}\n\nfunction jsxAttribute(element: t.JSXElement, name: string): t.JSXAttribute | undefined {\n return element.openingElement.attributes.find(\n (attribute): attribute is t.JSXAttribute =>\n t.isJSXAttribute(attribute) && jsxAttributeName(attribute) === name,\n );\n}\n\nfunction staticJsxAttributeString(attribute: t.JSXAttribute | undefined): string | undefined {\n if (!attribute?.value) return attribute ? \"\" : undefined;\n if (t.isStringLiteral(attribute.value)) return attribute.value.value;\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n t.isStringLiteral(attribute.value.expression)\n ) {\n return attribute.value.expression.value;\n }\n return undefined;\n}\n\nfunction controlledSelectHasDynamicOptions(element: t.JSXElement): boolean {\n let dynamic = false;\n t.traverseFast(element, (node) => {\n if (dynamic || !t.isJSXElement(node)) return;\n const tag = node.openingElement.name;\n if (!t.isJSXIdentifier(tag) || (tag.name !== \"option\" && tag.name !== \"optgroup\")) return;\n dynamic = node.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)),\n );\n });\n return dynamic;\n}\n\ninterface ConditionalBlockShape {\n test: t.Expression;\n logical: boolean;\n truthy?: t.JSXElement;\n falsy?: t.JSXElement;\n branches: t.JSXElement[];\n}\n\nfunction isEmptyConditionalBranch(expression: t.Expression): boolean {\n return t.isNullLiteral(expression) || t.isBooleanLiteral(expression, { value: false });\n}\n\nfunction conditionalBlockShape(expression: t.Expression): ConditionalBlockShape | null {\n if (\n t.isLogicalExpression(expression, { operator: \"&&\" }) &&\n t.isExpression(expression.left) &&\n t.isJSXElement(expression.right)\n ) {\n return {\n test: expression.left,\n logical: true,\n truthy: expression.right,\n branches: [expression.right],\n };\n }\n if (!t.isConditionalExpression(expression)) return null;\n const branches = [expression.consequent, expression.alternate];\n if (\n !branches.every((branch) => t.isJSXElement(branch) || isEmptyConditionalBranch(branch)) ||\n !branches.some((branch) => t.isJSXElement(branch))\n ) {\n return null;\n }\n return {\n test: expression.test,\n logical: false,\n truthy: t.isJSXElement(expression.consequent) ? expression.consequent : undefined,\n falsy: t.isJSXElement(expression.alternate) ? expression.alternate : undefined,\n branches: branches.filter((branch): branch is t.JSXElement => t.isJSXElement(branch)),\n };\n}\n\nfunction isMapCall(expression: t.Expression): expression is t.CallExpression {\n return (\n t.isCallExpression(expression) &&\n t.isMemberExpression(expression.callee) &&\n !expression.callee.computed &&\n t.isExpression(expression.callee.object) &&\n t.isIdentifier(expression.callee.property, { name: \"map\" })\n );\n}\n\nfunction returnedExpression(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n): t.Expression | undefined {\n if (t.isExpression(callback.body)) return callback.body;\n if (callback.body.body.length !== 1 || !t.isReturnStatement(callback.body.body[0])) {\n return undefined;\n }\n const value = callback.body.body[0].argument;\n return value && t.isExpression(value) ? value : undefined;\n}\n\nconst SAFE_COLLECTION_PIPELINE_METHODS = new Set([\"filter\", \"slice\", \"toReversed\", \"toSorted\"]);\n\nfunction collectionPipelineMethod(expression: t.Expression): string | undefined {\n if (\n !t.isCallExpression(expression) ||\n !t.isMemberExpression(expression.callee) ||\n expression.callee.computed ||\n !t.isExpression(expression.callee.object) ||\n !t.isIdentifier(expression.callee.property)\n ) {\n return undefined;\n }\n return SAFE_COLLECTION_PIPELINE_METHODS.has(expression.callee.property.name)\n ? expression.callee.property.name\n : undefined;\n}\n\nfunction validateCollectionCallback(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n method: \"filter\" | \"toSorted\",\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n const expectedParameters = method === \"filter\" ? \"one item and an optional index\" : \"two items\";\n const validParameterCount =\n method === \"filter\"\n ? callback.params.length >= 1 && callback.params.length <= 2\n : callback.params.length === 2;\n if (\n callback.async ||\n callback.generator ||\n !validParameterCount ||\n callback.params.some((parameter) => !t.isIdentifier(parameter))\n ) {\n return `${method} callbacks must be synchronous and use ${expectedParameters}`;\n }\n if (containsDirectHookCall(callback)) {\n return `Hooks cannot be called inside a ${method} callback`;\n }\n const value = returnedExpression(callback);\n if (!value) return `${method} callbacks must return one expression`;\n const unsupported = validateDerivedExpression(value, safeGlobals);\n return unsupported ? `${method} callbacks cannot use ${unsupported}` : undefined;\n}\n\nfunction validateCollectionPipeline(\n expression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n const method = collectionPipelineMethod(expression);\n if (!method || !t.isCallExpression(expression)) {\n return validateDerivedExpression(expression, safeGlobals);\n }\n\n const source = (expression.callee as t.MemberExpression).object as t.Expression;\n const sourceUnsupported = collectionPipelineMethod(source)\n ? validateCollectionPipeline(source, safeGlobals)\n : validateDerivedExpression(source, safeGlobals);\n if (sourceUnsupported) return sourceUnsupported;\n\n if (method === \"filter\") {\n if (\n expression.arguments.length !== 1 ||\n (!t.isArrowFunctionExpression(expression.arguments[0]) &&\n !t.isFunctionExpression(expression.arguments[0]))\n ) {\n return \"filter requires one inline callback\";\n }\n return validateCollectionCallback(expression.arguments[0], \"filter\", safeGlobals);\n }\n\n if (method === \"toSorted\") {\n if (expression.arguments.length === 0) return undefined;\n if (\n expression.arguments.length !== 1 ||\n (!t.isArrowFunctionExpression(expression.arguments[0]) &&\n !t.isFunctionExpression(expression.arguments[0]))\n ) {\n return \"toSorted requires an optional inline comparator\";\n }\n return validateCollectionCallback(expression.arguments[0], \"toSorted\", safeGlobals);\n }\n\n const maximumArguments = method === \"slice\" ? 2 : 0;\n if (expression.arguments.length > maximumArguments) {\n return `${method} accepts at most ${maximumArguments} compiler-safe arguments`;\n }\n for (const argument of expression.arguments) {\n if (!t.isExpression(argument)) return `${method} does not support spread arguments`;\n const unsupported = validateDerivedExpression(argument, safeGlobals);\n if (unsupported) return `${method} arguments cannot use ${unsupported}`;\n }\n return undefined;\n}\n\nfunction containsDirectHookCall(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n): boolean {\n let found = false;\n traverse(expressionFile(t.cloneNode(callback, true)), {\n CallExpression(path) {\n const callee = path.node.callee;\n const name = t.isIdentifier(callee)\n ? callee.name\n : t.isMemberExpression(callee) && !callee.computed && t.isIdentifier(callee.property)\n ? callee.property.name\n : \"\";\n if (/^use[A-Z0-9]/.test(name)) {\n found = true;\n path.stop();\n }\n },\n });\n return found;\n}\n\nfunction jsxKeyExpression(element: t.JSXElement): t.Expression | undefined {\n for (const attribute of element.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name, { name: \"key\" })) {\n continue;\n }\n if (t.isStringLiteral(attribute.value)) return t.stringLiteral(attribute.value.value);\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n )\n return attribute.value.expression;\n }\n return undefined;\n}\n\nfunction validateKeyFunction(\n callback: t.ArrowFunctionExpression | t.FunctionExpression,\n keyExpression: t.Expression,\n safeGlobals: ReadonlySet<string>,\n): string | undefined {\n if (\n callback.async ||\n callback.generator ||\n callback.params.length < 1 ||\n callback.params.length > 2 ||\n !t.isIdentifier(callback.params[0]) ||\n (callback.params[1] !== undefined && !t.isIdentifier(callback.params[1]))\n ) {\n return \"keyed list callbacks must be synchronous and use item and optional index identifiers\";\n }\n const item = callback.params[0].name;\n const index = t.isIdentifier(callback.params[1]) ? callback.params[1].name : undefined;\n if (index && referencesIdentifier(keyExpression, index)) {\n return \"keyed list keys cannot depend on the array index\";\n }\n if (!referencesIdentifier(keyExpression, item)) {\n return \"keyed list keys must depend on the mapped item\";\n }\n const unsupported = validateDerivedExpression(keyExpression, safeGlobals);\n return unsupported ? `keyed list keys cannot use ${unsupported}` : undefined;\n}\n\nfunction isPublicListElement(element: t.JSXElement, listNames: ReadonlySet<string>): boolean {\n const name = element.openingElement.name;\n return t.isJSXIdentifier(name) && listNames.has(name.name);\n}\n\nfunction meaningfulJsxChildren(element: t.JSXElement): t.JSXElement[\"children\"] {\n return element.children.filter((child) => {\n if (t.isJSXText(child)) return child.value.trim().length > 0;\n return !(t.isJSXExpressionContainer(child) && t.isJSXEmptyExpression(child.expression));\n });\n}\n\nfunction analyzeMapList(\n expression: t.CallExpression,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): { dependencies?: number[]; reason?: string } {\n const callee = expression.callee as t.MemberExpression;\n const collection = callee.object as t.Expression;\n const collectionUnsupported = validateCollectionPipeline(collection, safeGlobals);\n if (collectionUnsupported) {\n return {\n reason: `keyed list collection cannot use ${collectionUnsupported}`,\n };\n }\n if (\n expression.arguments.length !== 1 ||\n (!t.isArrowFunctionExpression(expression.arguments[0]) &&\n !t.isFunctionExpression(expression.arguments[0]))\n ) {\n return { reason: \"keyed list map must use one inline render callback\" };\n }\n const callback = expression.arguments[0];\n if (containsDirectHookCall(callback)) {\n return {\n reason: \"Hooks cannot be called directly inside a keyed list callback\",\n };\n }\n const row = returnedExpression(callback);\n if (!row || !t.isJSXElement(row)) {\n return { reason: \"keyed list map callbacks must return one React element\" };\n }\n const key = jsxKeyExpression(row);\n if (!key)\n return {\n reason: \"automatically compiled lists require an explicit item key\",\n };\n const keyReason = validateKeyFunction(callback, key, safeGlobals);\n if (keyReason) return { reason: keyReason };\n return { dependencies: collectStateDependencies(expression, statesByValue) };\n}\n\nfunction listAttributeExpression(element: t.JSXElement, name: string): t.Expression | undefined {\n for (const attribute of element.openingElement.attributes) {\n if (\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name, { name }) &&\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n return attribute.value.expression;\n }\n }\n return undefined;\n}\n\nfunction analyzePublicList(\n element: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n): { dependencies?: number[]; reason?: string } {\n if (element.openingElement.attributes.some((attribute) => t.isJSXSpreadAttribute(attribute))) {\n return {\n reason: \"compiled List boundaries do not support JSX attribute spreads\",\n };\n }\n const each = listAttributeExpression(element, \"each\");\n const by = listAttributeExpression(element, \"by\");\n if (!each || !by) return { reason: \"List requires explicit each and by properties\" };\n const collectionUnsupported = validateCollectionPipeline(each, safeGlobals);\n if (collectionUnsupported) {\n return { reason: `List each cannot use ${collectionUnsupported}` };\n }\n if (!t.isArrowFunctionExpression(by) && !t.isFunctionExpression(by)) {\n return { reason: \"compiled List by must use an inline key function\" };\n }\n const key = returnedExpression(by);\n if (!key) return { reason: \"compiled List by must return one key expression\" };\n const keyReason = validateKeyFunction(by, key, safeGlobals);\n if (keyReason) return { reason: keyReason };\n\n const children = meaningfulJsxChildren(element);\n if (\n children.length !== 1 ||\n !t.isJSXExpressionContainer(children[0]) ||\n t.isJSXEmptyExpression(children[0].expression) ||\n (!t.isArrowFunctionExpression(children[0].expression) &&\n !t.isFunctionExpression(children[0].expression))\n ) {\n return {\n reason: \"compiled List children must use one inline render function\",\n };\n }\n const render = children[0].expression;\n if (!returnedExpression(render)) {\n return { reason: \"compiled List children must return one React element\" };\n }\n if (containsDirectHookCall(render)) {\n return { reason: \"Hooks cannot be called directly inside List children\" };\n }\n return { dependencies: collectStateDependencies(element, statesByValue) };\n}\n\ninterface KeyedRowsShape {\n collection: t.Expression;\n collectionDependency?: number;\n structureDependencies: number[];\n keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n row: t.JSXElement;\n dependencies: number[];\n bindings: PendingKeyedRowBinding[];\n events: PendingKeyedRowEvent[];\n conditionals: PendingKeyedRowConditional[];\n rowReason?: string;\n syntax: \"map\" | \"list\";\n}\n\nfunction validateKeyedRowEventHandler(\n handler: t.ArrowFunctionExpression | t.FunctionExpression,\n): string | undefined {\n let reason: string | undefined;\n traverse(expressionFile(t.cloneNode(handler, true)), {\n MetaProperty(path) {\n reason = \"meta properties\";\n path.stop();\n },\n ReferencedIdentifier(path) {\n if (path.node.name !== \"arguments\") return;\n reason = \"arguments access\";\n path.stop();\n },\n Super(path) {\n reason = \"super access\";\n path.stop();\n },\n ThisExpression(path) {\n reason = \"this access\";\n path.stop();\n },\n });\n return reason;\n}\n\nfunction stabilizeDeferredEventCurrentTarget(\n handler: t.ArrowFunctionExpression | t.FunctionExpression,\n compilerSetters: ReadonlySet<string>,\n): t.ArrowFunctionExpression | t.FunctionExpression {\n const cloned = t.cloneNode(handler, true);\n const eventParameter = cloned.params[0];\n if (!t.isIdentifier(eventParameter) || compilerSetters.size === 0) return cloned;\n const file = expressionFile(cloned);\n const expression = (file.program.body[0] as t.ExpressionStatement).expression;\n if (!t.isArrowFunctionExpression(expression) && !t.isFunctionExpression(expression)) {\n return cloned;\n }\n const rootBindingIdentifier = expression.params[0];\n const snapshots: Array<{ identifier: t.Identifier; value: t.Expression }> = [];\n const snapshotsByProperty = new Map<string, t.Identifier>();\n const replaceCurrentTarget = (\n path: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n ) => {\n const property = path.node.property;\n const isCurrentTarget = path.node.computed\n ? t.isStringLiteral(property, { value: \"currentTarget\" })\n : t.isIdentifier(property, { name: \"currentTarget\" });\n if (!isCurrentTarget || !t.isIdentifier(path.node.object, { name: eventParameter.name }))\n return;\n const binding = path.scope.getBinding(eventParameter.name);\n if (!binding || binding.identifier !== rootBindingIdentifier) return;\n const setterCall = path.findParent(\n (parent) =>\n parent.isCallExpression() &&\n t.isIdentifier(parent.node.callee) &&\n compilerSetters.has(parent.node.callee.name),\n );\n if (!setterCall) return;\n const deferredFunction = path.findParent(\n (parent) => parent.isFunction() && parent.node !== expression,\n );\n if (!deferredFunction || !deferredFunction.findParent((parent) => parent === setterCall))\n return;\n\n const parent = path.parentPath;\n const propertyRead =\n (parent?.isMemberExpression() || parent?.isOptionalMemberExpression()) &&\n parent.node.object === path.node\n ? parent\n : path;\n const snapshotProperty =\n propertyRead === path\n ? \"element\"\n : propertyRead.node.computed\n ? t.isStringLiteral(propertyRead.node.property)\n ? propertyRead.node.property.value\n : `computed${snapshots.length}`\n : t.isIdentifier(propertyRead.node.property)\n ? propertyRead.node.property.name\n : `property${snapshots.length}`;\n let snapshot = snapshotsByProperty.get(snapshotProperty);\n if (!snapshot) {\n const suffix = snapshotProperty\n .replace(/[^A-Za-z0-9_$]/g, \" \")\n .replace(/(?:^|\\s+)([A-Za-z0-9_$])/g, (_match, character: string) =>\n character.toUpperCase(),\n )\n .replace(/\\s/g, \"\");\n snapshot = uniqueLocalIdentifier(`_farmCurrentTarget${suffix}`, [\n expression,\n ...snapshots.map((entry) => entry.identifier),\n ]);\n snapshotsByProperty.set(snapshotProperty, snapshot);\n snapshots.push({\n identifier: snapshot,\n value: t.cloneNode(propertyRead.node, true) as t.Expression,\n });\n }\n propertyRead.replaceWith(t.cloneNode(snapshot));\n propertyRead.skip();\n };\n traverse(file, {\n MemberExpression: replaceCurrentTarget,\n OptionalMemberExpression: replaceCurrentTarget,\n });\n if (snapshots.length === 0) return expression;\n\n const declarations = snapshots.map(({ identifier, value }) =>\n t.variableDeclaration(\"const\", [t.variableDeclarator(t.cloneNode(identifier), value)]),\n );\n if (t.isBlockStatement(expression.body)) {\n expression.body.body.unshift(...declarations);\n } else {\n expression.body = t.blockStatement([...declarations, t.returnStatement(expression.body)]);\n }\n return expression;\n}\n\nfunction stabilizeDeferredEventCurrentTargets(\n root: t.JSXElement,\n compilerSetters: ReadonlySet<string>,\n): t.JSXElement {\n const file = expressionFile(t.cloneNode(root, true));\n traverse(file, {\n JSXAttribute(path) {\n if (!t.isJSXIdentifier(path.node.name) || !/^on[A-Z]/.test(path.node.name.name)) return;\n const value = path.node.value;\n if (\n !t.isJSXExpressionContainer(value) ||\n (!t.isArrowFunctionExpression(value.expression) &&\n !t.isFunctionExpression(value.expression))\n ) {\n return;\n }\n value.expression = stabilizeDeferredEventCurrentTarget(value.expression, compilerSetters);\n },\n });\n const expression = (file.program.body[0] as t.ExpressionStatement).expression;\n return t.isJSXElement(expression) ? expression : t.cloneNode(root, true);\n}\n\nfunction analyzeKeyedRowTree(\n row: t.JSXElement,\n renderCallback: t.ArrowFunctionExpression | t.FunctionExpression,\n safeGlobals: ReadonlySet<string>,\n compilerSetters: ReadonlySet<string>,\n keyedTargetReactiveByValue?: ReadonlyMap<string, StateBinding>,\n): {\n bindings?: PendingKeyedRowBinding[];\n events?: PendingKeyedRowEvent[];\n conditionals?: PendingKeyedRowConditional[];\n reason?: string;\n} {\n if (\n renderCallback.async ||\n renderCallback.generator ||\n renderCallback.params.length < 1 ||\n renderCallback.params.length > 2 ||\n !t.isIdentifier(renderCallback.params[0]) ||\n (renderCallback.params[1] !== undefined && !t.isIdentifier(renderCallback.params[1]))\n ) {\n return {\n reason: \"compiled keyed rows require item and optional index identifiers\",\n };\n }\n\n const bindings: PendingKeyedRowBinding[] = [];\n const events: PendingKeyedRowEvent[] = [];\n const conditionals: PendingKeyedRowConditional[] = [];\n const validateBindingExpression = (expression: t.Expression) =>\n validateDerivedExpression(\n expression,\n safeGlobals,\n keyedTargetReactiveByValue\n ? (call) =>\n isPotentialKeyedMembershipCall(call, keyedTargetReactiveByValue) ||\n isPotentialKeyedMapLookupCall(call, keyedTargetReactiveByValue)\n : undefined,\n );\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiled keyed rows support host elements only\";\n }\n if (tag.name === \"svg\") return \"compiled keyed rows do not support SVG yet\";\n const attributeNames = new Set(\n element.openingElement.attributes\n .filter((attribute): attribute is t.JSXAttribute => t.isJSXAttribute(attribute))\n .map(jsxAttributeName)\n .filter((name): name is string => name !== undefined),\n );\n const controlled = attributeNames.has(\"value\") || attributeNames.has(\"checked\");\n if (attributeNames.has(\"contentEditable\")) {\n return \"content-editable keyed rows require React ownership\";\n }\n if (tag.name === \"input\" && controlled) {\n const type = jsxAttribute(element, \"type\");\n const staticType = staticJsxAttributeString(type);\n if (type && staticType === undefined) {\n return \"controlled keyed row inputs require a static type\";\n }\n if (attributeNames.has(\"value\") && staticType?.toLowerCase() === \"file\") {\n return \"file inputs require React ownership\";\n }\n }\n if (tag.name === \"textarea\" && controlled && meaningfulJsxChildren(element).length > 0) {\n return \"controlled keyed row textareas cannot also use children\";\n }\n if (tag.name === \"select\" && controlled && controlledSelectHasDynamicOptions(element)) {\n return \"controlled keyed row selects require static options\";\n }\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return \"compiled keyed rows do not support JSX attribute spreads\";\n }\n const name = jsxAttributeName(attribute);\n if (!name) return \"compiled keyed rows do not support namespaced JSX attributes\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return `compiled keyed row ${name} requires React ownership`;\n }\n if (name === \"key\") continue;\n if (/^on[A-Z]/.test(name)) {\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n (!t.isArrowFunctionExpression(attribute.value.expression) &&\n !t.isFunctionExpression(attribute.value.expression))\n ) {\n return \"interactive compiled keyed rows require inline synchronous event handlers\";\n }\n const handler = attribute.value.expression;\n if (handler.async || handler.generator) {\n return \"interactive compiled keyed row handlers must be synchronous\";\n }\n if (containsDirectHookCall(handler)) {\n return \"Hooks cannot be called inside compiled keyed row handlers\";\n }\n const unsupported = validateKeyedRowEventHandler(handler);\n if (unsupported) {\n return `interactive compiled keyed row handlers cannot use ${unsupported}`;\n }\n events.push({\n id: events.length,\n path: [...path],\n name,\n value: stabilizeDeferredEventCurrentTarget(handler, compilerSetters),\n });\n continue;\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return \"compiled keyed row styles must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (\n !t.isObjectProperty(property) ||\n property.computed ||\n !t.isExpression(property.value)\n ) {\n return \"compiled keyed row styles do not support spreads, methods, or computed properties\";\n }\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!propertyName || (propertyName.includes(\"-\") && !propertyName.startsWith(\"--\"))) {\n return \"compiled keyed row style names must use camelCase or a CSS custom property\";\n }\n const unsupported = validateBindingExpression(property.value);\n if (unsupported) {\n return `compiled keyed row style ${propertyName} cannot use ${unsupported}`;\n }\n bindings.push({\n kind: \"style\",\n path: [...path],\n name: propertyName,\n value: cloneExpression(property.value),\n });\n }\n continue;\n }\n\n if (name === \"children\") return \"compiled keyed row children props are not supported yet\";\n const unsupported = validateBindingExpression(expression);\n if (unsupported) return `compiled keyed row ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n name,\n value: cloneExpression(expression),\n });\n }\n\n const meaningfulChildren = meaningfulJsxChildren(element);\n const conditionalChild = meaningfulChildren.find(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n conditionalBlockShape(child.expression) !== null,\n );\n if (conditionalChild && !t.isJSXEmptyExpression(conditionalChild.expression)) {\n if (meaningfulChildren.length !== 1) {\n return \"compiled keyed row conditionals must be the only child of a host container\";\n }\n const shape = conditionalBlockShape(conditionalChild.expression);\n if (!shape) return \"compiled keyed row conditional shape is not supported\";\n const testUnsupported = validateDerivedExpression(shape.test, safeGlobals);\n if (testUnsupported) {\n return `compiled keyed row conditional test cannot use ${testUnsupported}`;\n }\n const truthyAnalysis = shape.truthy\n ? analyzeHostConditionalTree(shape.truthy, safeGlobals)\n : { bindings: [] as PendingKeyedRowBinding[] };\n const falsyAnalysis = shape.falsy\n ? analyzeHostConditionalTree(shape.falsy, safeGlobals)\n : { bindings: [] as PendingKeyedRowBinding[] };\n if (truthyAnalysis.reason || falsyAnalysis.reason) {\n return (\n truthyAnalysis.reason ||\n falsyAnalysis.reason ||\n \"compiled keyed row conditional branch is not supported\"\n );\n }\n conditionals.push({\n id: conditionals.length,\n path: [...path],\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy ? t.cloneNode(shape.truthy, true) : undefined,\n falsy: shape.falsy ? t.cloneNode(shape.falsy, true) : undefined,\n truthyBindings: truthyAnalysis.bindings || [],\n falsyBindings: falsyAnalysis.bindings || [],\n });\n return undefined;\n }\n\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n if (element.children.some((child) => t.isJSXFragment(child))) {\n return \"compiled keyed rows do not support fragments yet\";\n }\n const expressions = element.children.filter(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression),\n );\n for (const child of expressions) {\n const unsupported = validateBindingExpression(child.expression as t.Expression);\n if (unsupported) return `compiled keyed row text cannot use ${unsupported}`;\n }\n if (nestedElements.length > 0 && expressions.length > 0) {\n return \"compiled keyed rows do not support dynamic text beside nested elements yet\";\n }\n if (nestedElements.length === 0 && expressions.length > 0) {\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n parts.push(cloneExpression(child.expression));\n }\n }\n bindings.push({\n kind: \"text\",\n path: [...path],\n value: t.arrayExpression(parts),\n });\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n return undefined;\n };\n\n const reason = visit(row, []);\n return reason ? { reason } : { bindings, events, conditionals };\n}\n\ninterface KeyedRowChildShape extends KeyedRowsShape {\n source: t.Expression | t.JSXElement;\n}\n\nfunction analyzeKeyedRowChild(\n child: t.JSXElement[\"children\"][number],\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n acceptUnsupportedRow = false,\n allowMembershipTargets = false,\n): KeyedRowChildShape | undefined {\n let collection: t.Expression;\n let keyCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n let renderCallback: t.ArrowFunctionExpression | t.FunctionExpression;\n let row: t.JSXElement;\n let dependencies: number[];\n let syntax: \"map\" | \"list\";\n let source: t.Expression | t.JSXElement;\n\n if (\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n isMapCall(child.expression)\n ) {\n const result = analyzeMapList(child.expression, statesByValue, safeGlobals);\n if (result.reason) return undefined;\n const callback = child.expression.arguments[0];\n if (!t.isArrowFunctionExpression(callback) && !t.isFunctionExpression(callback))\n return undefined;\n const returned = returnedExpression(callback);\n if (!returned || !t.isJSXElement(returned)) return undefined;\n const key = jsxKeyExpression(returned);\n if (!key) return undefined;\n collection = (child.expression.callee as t.MemberExpression).object as t.Expression;\n keyCallback = t.arrowFunctionExpression(\n callback.params.map((parameter) => t.cloneNode(parameter, true)) as t.Identifier[],\n cloneExpression(key),\n );\n renderCallback = callback;\n row = returned;\n dependencies = result.dependencies || [];\n syntax = \"map\";\n source = child.expression;\n } else if (t.isJSXElement(child) && isPublicListElement(child, listNames)) {\n const result = analyzePublicList(child, statesByValue, safeGlobals);\n if (result.reason) return undefined;\n const each = listAttributeExpression(child, \"each\");\n const by = listAttributeExpression(child, \"by\");\n const renderChild = meaningfulJsxChildren(child)[0];\n if (\n !each ||\n (!t.isArrowFunctionExpression(by) && !t.isFunctionExpression(by)) ||\n !t.isJSXExpressionContainer(renderChild) ||\n t.isJSXEmptyExpression(renderChild.expression) ||\n (!t.isArrowFunctionExpression(renderChild.expression) &&\n !t.isFunctionExpression(renderChild.expression))\n ) {\n return undefined;\n }\n const returned = returnedExpression(renderChild.expression);\n if (!returned || !t.isJSXElement(returned)) return undefined;\n collection = each;\n keyCallback = by;\n renderCallback = renderChild.expression;\n row = returned;\n dependencies = result.dependencies || [];\n syntax = \"list\";\n source = child;\n } else {\n return undefined;\n }\n\n const rowAnalysis = analyzeKeyedRowTree(\n row,\n renderCallback,\n safeGlobals,\n new Set([...statesByValue.values()].map((state) => state.setterName)),\n allowMembershipTargets ? statesByValue : undefined,\n );\n if (rowAnalysis.reason && !acceptUnsupportedRow) return undefined;\n const keyExpression = returnedExpression(keyCallback);\n const structureDependencies = new Set(collectStateDependencies(collection, statesByValue));\n if (keyExpression) {\n for (const dependency of collectStateDependencies(keyExpression, statesByValue)) {\n structureDependencies.add(dependency);\n }\n }\n return {\n source,\n collection,\n collectionDependency: t.isIdentifier(collection)\n ? statesByValue.get(collection.name)?.index\n : undefined,\n structureDependencies: [...structureDependencies].sort((left, right) => left - right),\n keyCallback,\n renderCallback,\n row,\n dependencies,\n bindings: (rowAnalysis.bindings || []).map((binding) => ({\n ...binding,\n dependencies: collectStateDependencies(binding.value, statesByValue),\n })),\n events: rowAnalysis.events || [],\n conditionals: rowAnalysis.conditionals || [],\n rowReason: rowAnalysis.reason,\n syntax,\n };\n}\n\nfunction analyzeKeyedRowsContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n): KeyedRowsShape | undefined {\n if (\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n for (const attribute of container.openingElement.attributes) {\n if (\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression) &&\n !/^on[A-Z]/.test(attribute.name.name) &&\n collectStateDependencies(attribute.value.expression, statesByValue).length > 0\n ) {\n return undefined;\n }\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length !== 1) return undefined;\n const shape = analyzeKeyedRowChild(\n children[0],\n statesByValue,\n safeGlobals,\n listNames,\n true,\n true,\n );\n if (!shape || shape.rowReason) return shape;\n const needsMembershipProof = (binding: PendingKeyedRowBinding) =>\n containsPotentialKeyedMembershipCall(binding.value, statesByValue);\n const needsMapLookupProof = (binding: PendingKeyedRowBinding) =>\n containsPotentialKeyedMapLookupCall(binding.value, statesByValue);\n if (\n shape.conditionals.length > 0 ||\n (shape.events.length > 0 &&\n !canDelegateKeyedRowEvents({\n conditionals: shape.conditionals,\n events: shape.events,\n source: container,\n }))\n ) {\n return shape.bindings.some(\n (binding) => needsMembershipProof(binding) || needsMapLookupProof(binding),\n )\n ? {\n ...shape,\n rowReason:\n \"keyed collection targets require compiler-owned rows without React-owned branches or events\",\n }\n : shape;\n }\n const structureDependencies = new Set(shape.structureDependencies);\n const bindings = shape.bindings.map((binding) => ({\n ...binding,\n identityTarget: keyedIdentityTarget(\n binding,\n shape.keyCallback,\n shape.renderCallback,\n statesByValue,\n structureDependencies,\n ),\n membershipTarget: keyedMembershipTarget(\n binding,\n shape.keyCallback,\n shape.renderCallback,\n statesByValue,\n structureDependencies,\n ),\n mapLookupTarget: keyedMapLookupTarget(\n binding,\n shape.keyCallback,\n shape.renderCallback,\n statesByValue,\n structureDependencies,\n ),\n }));\n if (\n bindings.some(\n (binding, index) => needsMembershipProof(shape.bindings[index]) && !binding.membershipTarget,\n )\n ) {\n return {\n ...shape,\n rowReason: \"keyed membership targets must call one local Set state with the exact row key\",\n };\n }\n if (\n bindings.some(\n (binding, index) => needsMapLookupProof(shape.bindings[index]) && !binding.mapLookupTarget,\n )\n ) {\n return {\n ...shape,\n rowReason: \"keyed Map lookup targets must call one local Map state with the exact row key\",\n };\n }\n return {\n ...shape,\n bindings,\n };\n}\n\nfunction analyzeKeyedRangesContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n allowSingleRange = false,\n):\n | {\n ranges: KeyedRangePlan[];\n trailing: number;\n dependencies: number[];\n staticBindings: PendingStaticRangeBinding[];\n }\n | undefined {\n if (\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length < (allowSingleRange ? 1 : 2)) return undefined;\n const ranges: KeyedRangePlan[] = [];\n const dependencies = new Set<number>();\n const staticBindings: PendingStaticRangeBinding[] = [];\n let staticBefore = 0;\n for (const child of children) {\n const range = analyzeKeyedRowChild(child, statesByValue, safeGlobals, listNames);\n if (range) {\n if (range.events.length > 0 || range.conditionals.length > 0) return undefined;\n ranges.push({\n before: staticBefore,\n source: range.source,\n collection: range.collection,\n keyCallback: range.keyCallback,\n renderCallback: range.renderCallback,\n row: range.row,\n bindings: range.bindings,\n syntax: range.syntax,\n });\n for (const dependency of range.dependencies) dependencies.add(dependency);\n staticBefore = 0;\n continue;\n }\n if (!t.isJSXElement(child) || !isHostElement(child)) return undefined;\n const analysis = analyzeHostConditionalTree(child, safeGlobals, true, statesByValue);\n if (analysis.reason) return undefined;\n for (const binding of analysis.bindings || []) {\n staticBindings.push({\n ...binding,\n segment: ranges.length,\n sibling: staticBefore,\n });\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n staticBefore += 1;\n }\n if (ranges.length === 0) return undefined;\n return {\n ranges,\n trailing: staticBefore,\n dependencies: [...dependencies].sort((left, right) => left - right),\n staticBindings,\n };\n}\n\nfunction analyzeHostConditionalTree(\n branch: t.JSXElement,\n safeGlobals: ReadonlySet<string>,\n allowStaticEvents = false,\n statefulOnly?: ReadonlyMap<string, StateBinding>,\n): { bindings?: PendingKeyedRowBinding[]; reason?: string } {\n const bindings: PendingKeyedRowBinding[] = [];\n const needsStaticBinding = (expression: t.Expression): boolean =>\n !statefulOnly || collectStateDependencies(expression, statefulOnly).length > 0;\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiler-owned conditionals support host elements only\";\n }\n if (tag.name === \"svg\") return \"compiler-owned conditionals do not support SVG yet\";\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n if (statefulOnly && !needsStaticBinding(attribute.argument)) continue;\n return \"compiler-owned conditionals do not support JSX attribute spreads\";\n }\n const name = jsxAttributeName(attribute);\n if (!name) return \"compiler-owned conditionals do not support namespaced JSX attributes\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\" || name === \"key\") {\n if (\n statefulOnly &&\n (!t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression) ||\n !needsStaticBinding(attribute.value.expression))\n ) {\n continue;\n }\n return `compiler-owned conditional ${name} requires React ownership`;\n }\n if (/^on[A-Z]/.test(name)) {\n if (allowStaticEvents) continue;\n return \"compiler-owned conditional events require React ownership\";\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (!needsStaticBinding(expression)) continue;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return \"compiler-owned conditional styles must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (\n !t.isObjectProperty(property) ||\n property.computed ||\n !t.isExpression(property.value)\n ) {\n return \"compiler-owned conditional styles do not support spreads, methods, or computed properties\";\n }\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!propertyName || (propertyName.includes(\"-\") && !propertyName.startsWith(\"--\"))) {\n return \"compiler-owned conditional style names must use camelCase or a CSS custom property\";\n }\n if (!needsStaticBinding(property.value)) continue;\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) {\n return `compiler-owned conditional style ${propertyName} cannot use ${unsupported}`;\n }\n bindings.push({\n kind: \"style\",\n path: [...path],\n name: propertyName,\n value: cloneExpression(property.value),\n });\n }\n continue;\n }\n\n if (name === \"children\") {\n return \"compiler-owned conditional children props are not supported yet\";\n }\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) return `compiler-owned conditional ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n name,\n value: cloneExpression(expression),\n });\n }\n\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n if (element.children.some((child) => t.isJSXFragment(child))) {\n return \"compiler-owned conditionals do not support fragments yet\";\n }\n const expressions = element.children.filter(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression),\n );\n const boundExpressions = statefulOnly\n ? expressions.filter((child) => needsStaticBinding(child.expression as t.Expression))\n : expressions;\n if (boundExpressions.length > 0) {\n for (const child of expressions) {\n const unsupported = validateDerivedExpression(\n child.expression as t.Expression,\n safeGlobals,\n );\n if (unsupported) return `compiler-owned conditional text cannot use ${unsupported}`;\n }\n }\n if (nestedElements.length > 0 && boundExpressions.length > 0) {\n return \"compiler-owned conditionals do not support dynamic text beside nested elements yet\";\n }\n if (nestedElements.length === 0 && boundExpressions.length > 0) {\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n parts.push(cloneExpression(child.expression));\n }\n }\n bindings.push({\n kind: \"text\",\n path: [...path],\n value: t.arrayExpression(parts),\n });\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n return undefined;\n };\n\n const reason = visit(branch, []);\n return reason ? { reason } : { bindings };\n}\n\ninterface RecursiveHostTreeAnalysis {\n bindings: PendingKeyedRowBinding[];\n plans: HostDescriptorBlockPlan[];\n blocks: Map<t.JSXElement, HostDescriptorBlockPlan>;\n reason?: string;\n}\n\nfunction analyzeRecursiveHostTree(\n branch: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n): RecursiveHostTreeAnalysis {\n const bindings: PendingKeyedRowBinding[] = [];\n const plans: HostDescriptorBlockPlan[] = [];\n const blocks = new Map<t.JSXElement, HostDescriptorBlockPlan>();\n\n const visit = (element: t.JSXElement, path: number[], owner: number): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"recursive compiler-owned blocks support host elements only\";\n }\n if (tag.name === \"svg\") return \"recursive compiler-owned blocks do not support SVG yet\";\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return \"recursive compiler-owned blocks do not support JSX attribute spreads\";\n }\n const name = jsxAttributeName(attribute);\n if (!name) return \"recursive compiler-owned blocks do not support namespaced attributes\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\" || name === \"key\") {\n return `recursive compiler-owned block ${name} requires React ownership`;\n }\n if (/^on[A-Z]/.test(name)) {\n return \"recursive compiler-owned block events require React ownership\";\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return \"recursive compiler-owned styles must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (\n !t.isObjectProperty(property) ||\n property.computed ||\n !t.isExpression(property.value)\n ) {\n return \"recursive compiler-owned styles do not support spreads, methods, or computed properties\";\n }\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!propertyName || (propertyName.includes(\"-\") && !propertyName.startsWith(\"--\"))) {\n return \"recursive compiler-owned style names must use camelCase or a CSS custom property\";\n }\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) {\n return `recursive compiler-owned style ${propertyName} cannot use ${unsupported}`;\n }\n bindings.push({\n kind: \"style\",\n path: [...path],\n name: propertyName,\n value: cloneExpression(property.value),\n });\n }\n continue;\n }\n\n if (name === \"children\") {\n return \"recursive compiler-owned children props are not supported yet\";\n }\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) return `recursive compiler-owned ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n name,\n value: cloneExpression(expression),\n });\n }\n\n const children = meaningfulJsxChildren(element);\n const hasConditionalRange = children.some(\n (child) =>\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n conditionalBlockShape(child.expression) !== null,\n );\n const hasKeyedRange = children.some(\n (child) =>\n analyzeKeyedRowChild(child, statesByValue, safeGlobals, listNames, true) !== undefined,\n );\n if (hasConditionalRange && hasKeyedRange) {\n const id = allocateId();\n const mixed = analyzeMixedRangesContainer(\n element,\n statesByValue,\n safeGlobals,\n listNames,\n id,\n allocateId,\n );\n if (mixed) {\n plans.push(...mixed.nestedPlans);\n for (const [nestedElement, plan] of mixed.descriptorBlocks) {\n blocks.set(nestedElement, plan);\n }\n const plan: NestedHostMixedRangesPlan = {\n kind: \"nested-host-mixed-ranges\",\n id,\n parent: owner,\n dependencies: mixed.dependencies,\n source: element,\n ranges: mixed.ranges,\n trailing: mixed.trailing,\n staticBindings: mixed.staticBindings,\n };\n plans.push(plan);\n blocks.set(element, plan);\n return undefined;\n }\n }\n\n const conditionalChildren = new Map<\n t.Expression,\n NonNullable<ReturnType<typeof conditionalBlockShape>>\n >();\n let conditionalContainer = children.length > 0;\n for (const child of children) {\n if (t.isJSXElement(child) && isHostElement(child)) continue;\n if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n const shape = conditionalBlockShape(child.expression);\n if (shape && !validateDerivedExpression(shape.test, safeGlobals)) {\n conditionalChildren.set(child.expression, shape);\n continue;\n }\n }\n conditionalContainer = false;\n break;\n }\n\n if (conditionalContainer && conditionalChildren.size > 0) {\n const id = allocateId();\n const ranges: ConditionalRangePlan[] = [];\n const staticBindings: PendingStaticRangeBinding[] = [];\n const dependencies = new Set<number>();\n let staticBefore = 0;\n for (const child of children) {\n if (t.isJSXElement(child)) {\n const nested = analyzeRecursiveHostTree(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n owner,\n allocateId,\n );\n if (nested.reason) return nested.reason;\n plans.push(...nested.plans);\n for (const [nestedElement, plan] of nested.blocks) blocks.set(nestedElement, plan);\n for (const binding of nested.bindings) {\n staticBindings.push({\n ...binding,\n segment: ranges.length,\n sibling: staticBefore,\n });\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n staticBefore += 1;\n continue;\n }\n\n if (!t.isJSXExpressionContainer(child) || t.isJSXEmptyExpression(child.expression)) {\n return \"recursive conditional ranges contain an unsupported child\";\n }\n const expression = child.expression;\n const shape = conditionalChildren.get(expression)!;\n const truthy = shape.truthy\n ? analyzeRecursiveHostTree(\n shape.truthy,\n statesByValue,\n safeGlobals,\n listNames,\n id,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n const falsy = shape.falsy\n ? analyzeRecursiveHostTree(\n shape.falsy,\n statesByValue,\n safeGlobals,\n listNames,\n id,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n if (truthy.reason) return truthy.reason;\n if (falsy.reason) return falsy.reason;\n plans.push(...truthy.plans, ...falsy.plans);\n for (const [nestedElement, plan] of truthy.blocks) blocks.set(nestedElement, plan);\n for (const [nestedElement, plan] of falsy.blocks) blocks.set(nestedElement, plan);\n\n for (const dependency of collectStateDependencies(shape.test, statesByValue)) {\n dependencies.add(dependency);\n }\n for (const binding of [...truthy.bindings, ...falsy.bindings]) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n ranges.push({\n before: staticBefore,\n source: expression,\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy,\n falsy: shape.falsy,\n truthyBindings: truthy.bindings,\n falsyBindings: falsy.bindings,\n });\n staticBefore = 0;\n }\n const plan: NestedHostConditionalRangesPlan = {\n kind: \"nested-host-conditional-ranges\",\n id,\n parent: owner,\n dependencies: [...dependencies].sort((left, right) => left - right),\n source: element,\n ranges,\n trailing: staticBefore,\n staticBindings,\n };\n plans.push(plan);\n blocks.set(element, plan);\n return undefined;\n }\n\n const keyedRows: Array<{ before: number; range: KeyedRowChildShape }> = [];\n let keyedContainer = children.length > 0;\n let staticBefore = 0;\n const staticChildren: Array<{\n element: t.JSXElement;\n segment: number;\n sibling: number;\n }> = [];\n for (const child of children) {\n const range = analyzeKeyedRowChild(child, statesByValue, safeGlobals, listNames, true);\n if (range) {\n keyedRows.push({ before: staticBefore, range });\n staticBefore = 0;\n } else if (t.isJSXElement(child) && isHostElement(child)) {\n staticChildren.push({\n element: child,\n segment: keyedRows.length,\n sibling: staticBefore,\n });\n staticBefore += 1;\n } else {\n keyedContainer = false;\n break;\n }\n }\n\n if (keyedContainer && keyedRows.length > 0) {\n const id = allocateId();\n const keyedRanges: KeyedRangePlan[] = [];\n const staticBindings: PendingStaticRangeBinding[] = [];\n const keyedDependencies = new Set<number>();\n for (const { before, range } of keyedRows) {\n if (range.events.length > 0) {\n return \"recursive compiler-owned keyed rows cannot contain events\";\n }\n const row = t.cloneNode(range.row, true);\n row.openingElement.attributes = row.openingElement.attributes.filter(\n (attribute) => !t.isJSXAttribute(attribute) || jsxAttributeName(attribute) !== \"key\",\n );\n const rowAnalysis = analyzeRecursiveHostTree(\n row,\n statesByValue,\n safeGlobals,\n listNames,\n id,\n allocateId,\n );\n if (rowAnalysis.reason) return rowAnalysis.reason;\n plans.push(...rowAnalysis.plans);\n for (const [nestedElement, nestedPlan] of rowAnalysis.blocks) {\n blocks.set(nestedElement, nestedPlan);\n }\n keyedRanges.push({\n before,\n source: range.source,\n collection: range.collection,\n keyCallback: range.keyCallback,\n renderCallback: range.renderCallback,\n row,\n bindings: rowAnalysis.bindings,\n syntax: range.syntax,\n });\n for (const dependency of range.dependencies) keyedDependencies.add(dependency);\n }\n for (const { element: child, segment, sibling } of staticChildren) {\n const nested = analyzeRecursiveHostTree(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n owner,\n allocateId,\n );\n if (nested.reason) return nested.reason;\n plans.push(...nested.plans);\n for (const [nestedElement, plan] of nested.blocks) blocks.set(nestedElement, plan);\n for (const binding of nested.bindings) {\n staticBindings.push({ ...binding, segment, sibling });\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n keyedDependencies.add(dependency);\n }\n }\n }\n const plan: NestedHostKeyedRangesPlan = {\n kind: \"nested-host-keyed-ranges\",\n id,\n parent: owner,\n dependencies: [...keyedDependencies].sort((left, right) => left - right),\n source: element,\n ranges: keyedRanges,\n trailing: staticBefore,\n staticBindings,\n };\n plans.push(plan);\n blocks.set(element, plan);\n return undefined;\n }\n\n if (element.children.some((child) => t.isJSXFragment(child))) {\n return \"recursive compiler-owned blocks do not support fragments yet\";\n }\n const nestedElements = element.children.filter((child): child is t.JSXElement =>\n t.isJSXElement(child),\n );\n const expressions = element.children.filter(\n (child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression),\n );\n for (const child of expressions) {\n const unsupported = validateDerivedExpression(child.expression as t.Expression, safeGlobals);\n if (unsupported) return `recursive compiler-owned text cannot use ${unsupported}`;\n }\n if (nestedElements.length > 0 && expressions.length > 0) {\n return \"recursive compiler-owned blocks do not support dynamic text beside nested elements\";\n }\n if (nestedElements.length === 0 && expressions.length > 0) {\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n parts.push(cloneExpression(child.expression));\n }\n }\n bindings.push({\n kind: \"text\",\n path: [...path],\n value: t.arrayExpression(parts),\n });\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n const reason = visit(child, [...path, elementIndex], owner);\n if (reason) return reason;\n elementIndex += 1;\n }\n return undefined;\n };\n\n const reason = visit(branch, [], parent);\n return { bindings, plans, blocks, reason };\n}\n\nfunction analyzeCompilerOwnedKeyedRowHostBlocks(\n shape: KeyedRowsShape,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n):\n | {\n row: t.JSXElement;\n bindings: PendingKeyedRowBinding[];\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n nestedPlans: HostDescriptorBlockPlan[];\n }\n | undefined {\n if (shape.events.length > 0) return undefined;\n\n const row = t.cloneNode(shape.row, true);\n row.openingElement.attributes = row.openingElement.attributes.filter(\n (attribute) => !t.isJSXAttribute(attribute) || jsxAttributeName(attribute) !== \"key\",\n );\n const analysis = analyzeRecursiveHostTree(\n row,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n );\n if (analysis.reason || analysis.plans.length === 0) {\n return undefined;\n }\n return {\n row,\n bindings: analysis.bindings,\n descriptorBlocks: analysis.blocks,\n nestedPlans: analysis.plans,\n };\n}\n\nfunction analyzeHostConditionalContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n): Omit<HostConditionalPlan, \"kind\" | \"id\" | \"parent\" | \"source\"> | undefined {\n const containerName = container.openingElement.name;\n if (\n !t.isJSXIdentifier(containerName) ||\n !/^[a-z]/.test(containerName.name) ||\n containerName.name === \"svg\"\n ) {\n return undefined;\n }\n if (\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n for (const attribute of container.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) return undefined;\n if (/^on[A-Z]/.test(attribute.name.name) || attribute.name.name === \"key\") return undefined;\n // React does not revisit the adopted container on compiler-cell or parent-prop updates.\n // Keep every container property static; dynamic work belongs to the owned branch bindings.\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n )\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (\n children.length !== 1 ||\n !t.isJSXExpressionContainer(children[0]) ||\n t.isJSXEmptyExpression(children[0].expression)\n ) {\n return undefined;\n }\n const shape = conditionalBlockShape(children[0].expression);\n if (!shape || validateDerivedExpression(shape.test, safeGlobals)) return undefined;\n\n const truthyAnalysis = shape.truthy\n ? analyzeRecursiveHostTree(\n shape.truthy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n const falsyAnalysis = shape.falsy\n ? analyzeRecursiveHostTree(\n shape.falsy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n if (truthyAnalysis.reason || falsyAnalysis.reason) return undefined;\n\n const dependencies = new Set(collectStateDependencies(shape.test, statesByValue));\n for (const binding of [...(truthyAnalysis.bindings || []), ...(falsyAnalysis.bindings || [])]) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n return {\n dependencies: [...dependencies].sort((left, right) => left - right),\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy,\n falsy: shape.falsy,\n truthyBindings: truthyAnalysis.bindings || [],\n falsyBindings: falsyAnalysis.bindings || [],\n descriptorBlocks: new Map([...truthyAnalysis.blocks, ...falsyAnalysis.blocks]),\n nestedPlans: [...truthyAnalysis.plans, ...falsyAnalysis.plans],\n };\n}\n\nfunction analyzeConditionalRangesContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n allowSingleRange: boolean,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n):\n | {\n ranges: ConditionalRangePlan[];\n trailing: number;\n dependencies: number[];\n staticBindings: PendingStaticRangeBinding[];\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n nestedPlans: HostDescriptorBlockPlan[];\n }\n | undefined {\n const containerName = container.openingElement.name;\n if (\n !t.isJSXIdentifier(containerName) ||\n !/^[a-z]/.test(containerName.name) ||\n containerName.name === \"svg\" ||\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length < (allowSingleRange ? 1 : 2)) return undefined;\n const ranges: ConditionalRangePlan[] = [];\n const dependencies = new Set<number>();\n const descriptorBlocks = new Map<t.JSXElement, HostDescriptorBlockPlan>();\n const nestedPlans: HostDescriptorBlockPlan[] = [];\n const staticBindings: PendingStaticRangeBinding[] = [];\n let staticBefore = 0;\n\n for (const child of children) {\n if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n const shape = conditionalBlockShape(child.expression);\n if (shape && !validateDerivedExpression(shape.test, safeGlobals)) {\n const truthyAnalysis = shape.truthy\n ? analyzeRecursiveHostTree(\n shape.truthy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n const falsyAnalysis = shape.falsy\n ? analyzeRecursiveHostTree(\n shape.falsy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n if (truthyAnalysis.reason || falsyAnalysis.reason) return undefined;\n nestedPlans.push(...truthyAnalysis.plans, ...falsyAnalysis.plans);\n for (const [element, plan] of truthyAnalysis.blocks) descriptorBlocks.set(element, plan);\n for (const [element, plan] of falsyAnalysis.blocks) descriptorBlocks.set(element, plan);\n\n const rangeDependencies = new Set(collectStateDependencies(shape.test, statesByValue));\n for (const binding of [\n ...(truthyAnalysis.bindings || []),\n ...(falsyAnalysis.bindings || []),\n ]) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n rangeDependencies.add(dependency);\n }\n }\n for (const dependency of rangeDependencies) dependencies.add(dependency);\n ranges.push({\n before: staticBefore,\n source: child.expression,\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy,\n falsy: shape.falsy,\n truthyBindings: truthyAnalysis.bindings || [],\n falsyBindings: falsyAnalysis.bindings || [],\n });\n staticBefore = 0;\n continue;\n }\n }\n\n if (!t.isJSXElement(child) || !isHostElement(child)) return undefined;\n const staticAnalysis = analyzeHostConditionalTree(child, safeGlobals, true, statesByValue);\n if (staticAnalysis.reason) return undefined;\n for (const binding of staticAnalysis.bindings || []) {\n staticBindings.push({\n ...binding,\n segment: ranges.length,\n sibling: staticBefore,\n });\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n staticBefore += 1;\n }\n\n if (ranges.length === 0) return undefined;\n return {\n ranges,\n trailing: staticBefore,\n dependencies: [...dependencies].sort((left, right) => left - right),\n staticBindings,\n descriptorBlocks,\n nestedPlans,\n };\n}\n\nfunction analyzeMixedRangesContainer(\n container: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n parent: number,\n allocateId: () => number,\n):\n | {\n ranges: MixedRangePlan[];\n trailing: number;\n dependencies: number[];\n staticBindings: PendingStaticRangeBinding[];\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>;\n nestedPlans: HostDescriptorBlockPlan[];\n }\n | undefined {\n const containerName = container.openingElement.name;\n if (\n !t.isJSXIdentifier(containerName) ||\n !/^[a-z]/.test(containerName.name) ||\n containerName.name === \"svg\" ||\n container.openingElement.attributes.some(\n (attribute) =>\n t.isJSXSpreadAttribute(attribute) ||\n (t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n (attribute.name.name === \"ref\" || attribute.name.name === \"dangerouslySetInnerHTML\")),\n )\n ) {\n return undefined;\n }\n\n const children = meaningfulJsxChildren(container);\n if (children.length < 2) return undefined;\n const ranges: MixedRangePlan[] = [];\n const dependencies = new Set<number>();\n const descriptorBlocks = new Map<t.JSXElement, HostDescriptorBlockPlan>();\n const nestedPlans: HostDescriptorBlockPlan[] = [];\n const staticBindings: PendingStaticRangeBinding[] = [];\n let conditionalCount = 0;\n let keyedCount = 0;\n let staticBefore = 0;\n\n const mergeAnalysis = (analysis: RecursiveHostTreeAnalysis): boolean => {\n if (analysis.reason) return false;\n nestedPlans.push(...analysis.plans);\n for (const [element, plan] of analysis.blocks) descriptorBlocks.set(element, plan);\n for (const binding of analysis.bindings) {\n for (const dependency of collectStateDependencies(binding.value, statesByValue)) {\n dependencies.add(dependency);\n }\n }\n return true;\n };\n\n for (const child of children) {\n if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n const shape = conditionalBlockShape(child.expression);\n if (shape && !validateDerivedExpression(shape.test, safeGlobals)) {\n const truthyAnalysis = shape.truthy\n ? analyzeRecursiveHostTree(\n shape.truthy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n const falsyAnalysis = shape.falsy\n ? analyzeRecursiveHostTree(\n shape.falsy,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n )\n : {\n bindings: [],\n plans: [],\n blocks: new Map<t.JSXElement, HostDescriptorBlockPlan>(),\n };\n if (!mergeAnalysis(truthyAnalysis) || !mergeAnalysis(falsyAnalysis)) return undefined;\n for (const dependency of collectStateDependencies(shape.test, statesByValue)) {\n dependencies.add(dependency);\n }\n ranges.push({\n rangeKind: \"conditional\",\n before: staticBefore,\n source: child.expression,\n test: cloneExpression(shape.test),\n logical: shape.logical,\n truthy: shape.truthy,\n falsy: shape.falsy,\n truthyBindings: truthyAnalysis.bindings,\n falsyBindings: falsyAnalysis.bindings,\n });\n conditionalCount += 1;\n staticBefore = 0;\n continue;\n }\n }\n\n const keyed = analyzeKeyedRowChild(child, statesByValue, safeGlobals, listNames, true);\n if (keyed) {\n if (keyed.events.length > 0) return undefined;\n const row = t.cloneNode(keyed.row, true);\n row.openingElement.attributes = row.openingElement.attributes.filter(\n (attribute) => !t.isJSXAttribute(attribute) || jsxAttributeName(attribute) !== \"key\",\n );\n const rowAnalysis = analyzeRecursiveHostTree(\n row,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n );\n if (!mergeAnalysis(rowAnalysis)) return undefined;\n for (const dependency of keyed.dependencies) dependencies.add(dependency);\n ranges.push({\n rangeKind: \"keyed\",\n before: staticBefore,\n source: keyed.source,\n collection: keyed.collection,\n keyCallback: keyed.keyCallback,\n renderCallback: keyed.renderCallback,\n row,\n bindings: rowAnalysis.bindings,\n syntax: keyed.syntax,\n });\n keyedCount += 1;\n staticBefore = 0;\n continue;\n }\n\n if (!t.isJSXElement(child) || !isHostElement(child)) return undefined;\n const staticAnalysis = analyzeRecursiveHostTree(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n parent,\n allocateId,\n );\n if (staticAnalysis.reason) return undefined;\n for (const binding of staticAnalysis.bindings) {\n staticBindings.push({\n ...binding,\n segment: ranges.length,\n sibling: staticBefore,\n });\n }\n if (!mergeAnalysis(staticAnalysis)) return undefined;\n staticBefore += 1;\n }\n\n if (conditionalCount === 0 || keyedCount === 0) return undefined;\n return {\n ranges,\n trailing: staticBefore,\n dependencies: [...dependencies].sort((left, right) => left - right),\n staticBindings,\n descriptorBlocks,\n nestedPlans,\n };\n}\n\nfunction keyedListBoundary(\n blockRuntime: t.Identifier,\n plan: KeyedListPlan,\n source: t.Expression,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"KeyedList\"),\n );\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(source))),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction hostElementDescriptor(\n element: t.JSXElement,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan> = new Map(),\n): t.ObjectExpression {\n const tag = element.openingElement.name as t.JSXIdentifier;\n const attributes: t.ObjectExpression[] = [];\n const styles: t.ObjectExpression[] = [];\n\n for (const attribute of element.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute)) continue;\n const name = jsxAttributeName(attribute);\n if (!name || name === \"key\" || name === \"ref\" || /^on[A-Z]/.test(name)) continue;\n if (name === \"style\") {\n if (\n t.isJSXExpressionContainer(attribute.value) &&\n t.isObjectExpression(attribute.value.expression)\n ) {\n for (const property of attribute.value.expression.properties) {\n if (!t.isObjectProperty(property) || !t.isExpression(property.value)) continue;\n const propertyName = t.isIdentifier(property.key)\n ? property.key.name\n : (property.key as t.StringLiteral).value;\n styles.push(\n t.objectExpression([\n t.objectProperty(t.identifier(\"name\"), t.stringLiteral(propertyName)),\n t.objectProperty(t.identifier(\"value\"), cloneExpression(property.value)),\n ]),\n );\n }\n }\n continue;\n }\n\n const value = attribute.value\n ? t.isStringLiteral(attribute.value)\n ? t.stringLiteral(attribute.value.value)\n : t.isJSXExpressionContainer(attribute.value) &&\n !t.isJSXEmptyExpression(attribute.value.expression)\n ? cloneExpression(attribute.value.expression)\n : t.identifier(\"undefined\")\n : t.booleanLiteral(true);\n attributes.push(\n t.objectExpression([\n t.objectProperty(t.identifier(\"name\"), t.stringLiteral(name)),\n t.objectProperty(t.identifier(\"value\"), value),\n ]),\n );\n }\n\n const block = descriptorBlocks.get(element);\n const conditionalBySource = new Map<t.Node, ConditionalRangePlan>();\n const keyedBySource = new Map<t.Node, KeyedRangePlan>();\n if (block?.kind === \"nested-host-conditional-ranges\") {\n for (const range of block.ranges) conditionalBySource.set(range.source, range);\n } else if (block?.kind === \"nested-host-keyed-ranges\") {\n for (const range of block.ranges) keyedBySource.set(range.source, range);\n } else if (block?.kind === \"nested-host-mixed-ranges\") {\n for (const range of block.ranges) {\n if (range.rangeKind === \"conditional\") conditionalBySource.set(range.source, range);\n else keyedBySource.set(range.source, range);\n }\n }\n\n const children: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) children.push(t.stringLiteral(text));\n } else if (t.isJSXElement(child)) {\n const keyedRange = keyedBySource.get(child);\n if (keyedRange) {\n if (block?.kind !== \"nested-host-keyed-ranges\") {\n children.push(keyedRangeDescriptorChildren(keyedRange, descriptorBlocks));\n }\n } else {\n children.push(hostElementDescriptor(child, descriptorBlocks));\n }\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n const conditionalRange = conditionalBySource.get(child.expression);\n const keyedRange = keyedBySource.get(child.expression);\n if (conditionalRange) {\n children.push(conditionalRangeDescriptorChild(conditionalRange, descriptorBlocks));\n } else if (keyedRange) {\n if (block?.kind !== \"nested-host-keyed-ranges\") {\n children.push(keyedRangeDescriptorChildren(keyedRange, descriptorBlocks));\n }\n } else {\n children.push(cloneExpression(child.expression));\n }\n }\n }\n\n const properties: Array<t.ObjectProperty> = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(\"element\")),\n t.objectProperty(t.identifier(\"tag\"), t.stringLiteral(tag.name)),\n t.objectProperty(t.identifier(\"attributes\"), t.arrayExpression(attributes)),\n t.objectProperty(t.identifier(\"styles\"), t.arrayExpression(styles)),\n t.objectProperty(t.identifier(\"children\"), t.arrayExpression(children)),\n ];\n if (block) {\n properties.push(\n t.objectProperty(t.identifier(\"block\"), nestedHostBlockObject(block, descriptorBlocks)),\n );\n }\n return t.objectExpression(properties);\n}\n\nfunction conditionalRangeDescriptorChild(\n range: ConditionalRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>,\n): t.Expression {\n const truthy = range.truthy\n ? hostElementDescriptor(range.truthy, descriptorBlocks)\n : t.nullLiteral();\n if (range.logical) {\n return t.logicalExpression(\"&&\", cloneExpression(range.test), truthy);\n }\n return t.conditionalExpression(\n cloneExpression(range.test),\n truthy,\n range.falsy ? hostElementDescriptor(range.falsy, descriptorBlocks) : t.nullLiteral(),\n );\n}\n\nfunction keyedRangeDescriptorChildren(\n range: KeyedRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>,\n): t.Expression {\n const parameters = range.renderCallback.params.map((parameter) =>\n t.cloneNode(parameter, true),\n ) as t.Identifier[];\n const callback = t.arrowFunctionExpression(\n parameters,\n hostElementDescriptor(range.row, descriptorBlocks),\n );\n const collection = cloneExpression(range.collection);\n if (range.syntax === \"map\") {\n return t.callExpression(t.memberExpression(collection, t.identifier(\"map\")), [callback]);\n }\n return t.callExpression(\n t.memberExpression(\n t.callExpression(t.memberExpression(t.identifier(\"Array\"), t.identifier(\"from\")), [\n t.logicalExpression(\"||\", collection, t.arrayExpression([])),\n ]),\n t.identifier(\"map\"),\n ),\n [callback],\n );\n}\n\nfunction keyedRowBindingObject(\n binding: PendingKeyedRowBinding,\n parameters: readonly t.Identifier[],\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(binding.kind)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(binding.path.map((part) => t.numericLiteral(part))),\n ),\n t.objectProperty(\n t.identifier(\"dependencies\"),\n t.arrayExpression(\n (binding.dependencies || []).map((dependency) => t.numericLiteral(dependency)),\n ),\n ),\n ];\n if (binding.name) {\n properties.push(t.objectProperty(t.identifier(\"name\"), t.stringLiteral(binding.name)));\n }\n if (binding.identityTarget) {\n properties.push(\n t.objectProperty(\n t.identifier(\"identityTarget\"),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"dependency\"),\n t.numericLiteral(binding.identityTarget.dependency),\n ),\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression([], cloneExpression(binding.identityTarget.value)),\n ),\n ]),\n ),\n );\n }\n if (binding.membershipTarget) {\n properties.push(\n t.objectProperty(\n t.identifier(\"membershipTarget\"),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"dependency\"),\n t.numericLiteral(binding.membershipTarget.dependency),\n ),\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression([], cloneExpression(binding.membershipTarget.value)),\n ),\n ]),\n ),\n );\n }\n if (binding.mapLookupTarget) {\n properties.push(\n t.objectProperty(\n t.identifier(\"mapLookupTarget\"),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"dependency\"),\n t.numericLiteral(binding.mapLookupTarget.dependency),\n ),\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression([], cloneExpression(binding.mapLookupTarget.value)),\n ),\n ]),\n ),\n );\n }\n properties.push(\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n cloneExpression(binding.value),\n ),\n ),\n );\n return t.objectExpression(properties);\n}\n\nfunction staticRangeBindingObject(binding: PendingStaticRangeBinding): t.ObjectExpression {\n const value = keyedRowBindingObject(binding, []);\n value.properties.splice(\n 1,\n 0,\n t.objectProperty(t.identifier(\"segment\"), t.numericLiteral(binding.segment)),\n t.objectProperty(t.identifier(\"sibling\"), t.numericLiteral(binding.sibling)),\n );\n return value;\n}\n\nfunction uniqueLocalIdentifier(base: string, nodes: readonly t.Node[]): t.Identifier {\n const names = new Set<string>();\n for (const node of nodes) {\n t.traverseFast(node, (child) => {\n if (t.isIdentifier(child)) names.add(child.name);\n });\n }\n let name = base;\n let suffix = 2;\n while (names.has(name)) name = `${base}${suffix++}`;\n return t.identifier(name);\n}\n\nfunction rewriteKeyedRowEventAttributes(\n row: t.JSXElement,\n events: readonly PendingKeyedRowEvent[],\n eventFactory: t.Identifier,\n item: t.Identifier,\n index: t.Expression,\n): void {\n const eventByLocation = new Map(\n events.map((event) => [`${event.path.join(\".\")}:${event.name}`, event] as const),\n );\n const visit = (element: t.JSXElement, path: number[]): void => {\n for (const attribute of element.openingElement.attributes) {\n if (!t.isJSXAttribute(attribute)) continue;\n const name = jsxAttributeName(attribute);\n if (!name || !/^on[A-Z]/.test(name)) continue;\n const event = eventByLocation.get(`${path.join(\".\")}:${name}`);\n if (!event) continue;\n attribute.value = t.jsxExpressionContainer(\n t.callExpression(t.cloneNode(eventFactory), [\n t.cloneNode(item),\n t.cloneNode(index),\n t.numericLiteral(event.id),\n ]),\n );\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n visit(child, [...path, elementIndex]);\n elementIndex += 1;\n }\n };\n visit(row, []);\n}\n\nfunction rewriteKeyedRowConditionalExpressions(\n row: t.JSXElement,\n conditionals: readonly PendingKeyedRowConditional[],\n conditionalFactory: t.Identifier,\n item: t.Identifier,\n index: t.Expression,\n renderParameters: readonly t.Identifier[],\n): void {\n const conditionalByLocation = new Map(\n conditionals.map((conditional) => [conditional.path.join(\".\"), conditional] as const),\n );\n const visit = (element: t.JSXElement, path: number[]): void => {\n const conditional = conditionalByLocation.get(path.join(\".\"));\n if (conditional) {\n element.children = element.children.map((child) => {\n if (\n !t.isJSXExpressionContainer(child) ||\n t.isJSXEmptyExpression(child.expression) ||\n !conditionalBlockShape(child.expression)\n ) {\n return child;\n }\n return t.jsxExpressionContainer(\n t.callExpression(t.cloneNode(conditionalFactory), [\n t.cloneNode(item),\n t.cloneNode(index),\n t.numericLiteral(conditional.id),\n t.arrowFunctionExpression(\n renderParameters.map((parameter) => t.cloneNode(parameter, true)),\n cloneExpression(child.expression),\n ),\n ]),\n );\n });\n return;\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child)) continue;\n visit(child, [...path, elementIndex]);\n elementIndex += 1;\n }\n };\n visit(row, []);\n}\n\nfunction keyedRowsRenderSource(\n plan: KeyedRowsPlan,\n eventFactory: t.Identifier,\n conditionalFactory: t.Identifier,\n): t.JSXElement {\n const source = t.cloneNode(plan.source, true);\n const child = meaningfulJsxChildren(source)[0];\n let callback: t.ArrowFunctionExpression | t.FunctionExpression | undefined;\n if (\n plan.syntax === \"map\" &&\n t.isJSXExpressionContainer(child) &&\n !t.isJSXEmptyExpression(child.expression) &&\n isMapCall(child.expression)\n ) {\n const candidate = child.expression.arguments[0];\n if (t.isArrowFunctionExpression(candidate) || t.isFunctionExpression(candidate)) {\n callback = candidate;\n }\n } else if (plan.syntax === \"list\" && t.isJSXElement(child)) {\n const renderChild = meaningfulJsxChildren(child)[0];\n if (\n t.isJSXExpressionContainer(renderChild) &&\n !t.isJSXEmptyExpression(renderChild.expression) &&\n (t.isArrowFunctionExpression(renderChild.expression) ||\n t.isFunctionExpression(renderChild.expression))\n ) {\n callback = renderChild.expression;\n }\n }\n const row = callback && returnedExpression(callback);\n const item = callback?.params[0];\n const index = callback?.params[1];\n if (!callback || !t.isJSXElement(row) || !t.isIdentifier(item)) return source;\n const runtimeIndex = t.isIdentifier(index) ? index : t.numericLiteral(0);\n if (plan.events.length > 0) {\n rewriteKeyedRowEventAttributes(row, plan.events, eventFactory, item, runtimeIndex);\n }\n if (plan.conditionals.length > 0) {\n rewriteKeyedRowConditionalExpressions(\n row,\n plan.conditionals,\n conditionalFactory,\n item,\n runtimeIndex,\n callback.params as t.Identifier[],\n );\n }\n return source;\n}\n\nfunction keyedRowEventObject(\n event: PendingKeyedRowEvent,\n renderParameters: readonly t.Identifier[],\n): t.ObjectExpression {\n const nodes = [event.value, ...renderParameters];\n const index = renderParameters[1]\n ? t.cloneNode(renderParameters[1], true)\n : uniqueLocalIdentifier(\"_farmRowIndex\", nodes);\n const syntheticEvent = uniqueLocalIdentifier(\"_farmEvent\", [...nodes, index]);\n const parameters = [t.cloneNode(renderParameters[0], true), index, syntheticEvent];\n return t.objectExpression([\n t.objectProperty(t.identifier(\"name\"), t.stringLiteral(event.name)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(event.path.map((part) => t.numericLiteral(part))),\n ),\n t.objectProperty(\n t.identifier(\"invoke\"),\n t.arrowFunctionExpression(\n parameters,\n t.callExpression(t.parenthesizedExpression(t.cloneNode(event.value, true)), [\n t.cloneNode(syntheticEvent),\n ]),\n ),\n ),\n ]);\n}\n\nfunction keyedRowConditionalBranchObject(\n bindings: readonly PendingKeyedRowBinding[],\n parameters: readonly t.Identifier[],\n): t.ObjectExpression {\n return t.objectExpression([\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(bindings.map((binding) => keyedRowBindingObject(binding, parameters))),\n ),\n ]);\n}\n\nfunction keyedRowConditionalObject(\n conditional: PendingKeyedRowConditional,\n parameters: readonly t.Identifier[],\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"id\"), t.numericLiteral(conditional.id)),\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(conditional.path.map((part) => t.numericLiteral(part))),\n ),\n t.objectProperty(\n t.identifier(\"test\"),\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n cloneExpression(conditional.test),\n ),\n ),\n t.objectProperty(t.identifier(\"logical\"), t.booleanLiteral(conditional.logical)),\n ];\n if (conditional.truthy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"truthy\"),\n keyedRowConditionalBranchObject(conditional.truthyBindings, parameters),\n ),\n );\n }\n if (conditional.falsy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"falsy\"),\n keyedRowConditionalBranchObject(conditional.falsyBindings, parameters),\n ),\n );\n }\n return t.objectExpression(properties);\n}\n\nfunction keyedRowsBoundary(\n blockRuntime: t.Identifier,\n plan: KeyedRowsPlan,\n keyedMapUpdateHints: boolean,\n keyedArrayFilterHintedStateIndices: ReadonlySet<number>,\n keyedArrayPrependHintedStateIndices: ReadonlySet<number>,\n keyedArrayPositionHintedStateIndices: ReadonlySet<number>,\n keyedArrayReorderHintedStateIndices: ReadonlySet<number>,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"KeyedRows\"),\n );\n const parameters = plan.renderCallback.params.map((parameter) =>\n t.cloneNode(parameter, true),\n ) as t.Identifier[];\n const eventFactory = uniqueLocalIdentifier(\"_farmRowEvent\", [\n plan.source,\n ...plan.events.map((event) => event.value),\n ]);\n const conditionalFactory = uniqueLocalIdentifier(\"_farmRowConditional\", [\n plan.source,\n ...plan.conditionals.map((conditional) => conditional.test),\n ]);\n const delegatedEvents = canDelegateKeyedRowEvents(plan);\n const renderSource = keyedRowsRenderSource(plan, eventFactory, conditionalFactory);\n const renderFactoryParameters =\n plan.conditionals.length > 0\n ? [t.cloneNode(eventFactory), t.cloneNode(conditionalFactory)]\n : plan.events.length > 0\n ? [t.cloneNode(eventFactory)]\n : [];\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(\n t.arrowFunctionExpression(renderFactoryParameters, renderSource),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"items\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(plan.collection))),\n ),\n ...(keyedMapUpdateHints\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"dependencies\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.dependencies.map((dependency) => t.numericLiteral(dependency)),\n ),\n ),\n ),\n ]\n : []),\n t.jsxAttribute(\n t.jsxIdentifier(\"structureDependencies\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.structureDependencies.map((dependency) => t.numericLiteral(dependency)),\n ),\n ),\n ),\n ...(!keyedMapUpdateHints || plan.collectionDependency === undefined\n ? []\n : [\n t.jsxAttribute(\n t.jsxIdentifier(\"collectionDependency\"),\n t.jsxExpressionContainer(t.numericLiteral(plan.collectionDependency)),\n ),\n ]),\n ...(plan.collectionDependency !== undefined &&\n keyedArrayFilterHintedStateIndices.has(plan.collectionDependency)\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"filterIndexIndependent\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ...(plan.collectionDependency !== undefined &&\n keyedArrayPrependHintedStateIndices.has(plan.collectionDependency)\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"prependIndexIndependent\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ...(plan.collectionDependency !== undefined &&\n keyedArrayPositionHintedStateIndices.has(plan.collectionDependency)\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"positionIndexIndependent\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ...(plan.collectionDependency !== undefined &&\n keyedArrayReorderHintedStateIndices.has(plan.collectionDependency)\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"reorderIndexIndependent\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n t.jsxAttribute(\n t.jsxIdentifier(\"rowKey\"),\n t.jsxExpressionContainer(t.cloneNode(plan.keyCallback, true)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"create\"),\n t.jsxExpressionContainer(\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n hostElementDescriptor(plan.row, plan.descriptorBlocks),\n ),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"bindings\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.bindings.map((binding) => keyedRowBindingObject(binding, parameters)),\n ),\n ),\n ),\n ...(plan.events.length > 0\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"events\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.events.map((event) => keyedRowEventObject(event, parameters)),\n ),\n ),\n ),\n ...(delegatedEvents\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"delegateEvents\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ]\n : []),\n ...(plan.conditionals.length > 0\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"conditionals\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.conditionals.map((conditional) =>\n keyedRowConditionalObject(conditional, parameters),\n ),\n ),\n ),\n ),\n ]\n : []),\n ...(plan.descriptorBlocks?.size\n ? [\n t.jsxAttribute(\n t.jsxIdentifier(\"hostBlocks\"),\n t.jsxExpressionContainer(t.booleanLiteral(true)),\n ),\n ]\n : []),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction keyedRangeObject(\n range: KeyedRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan> = new Map(),\n): t.ObjectExpression {\n const parameters = range.renderCallback.params.map((parameter) =>\n t.cloneNode(parameter, true),\n ) as t.Identifier[];\n return t.objectExpression([\n t.objectProperty(t.identifier(\"before\"), t.numericLiteral(range.before)),\n t.objectProperty(\n t.identifier(\"items\"),\n t.arrowFunctionExpression([], cloneExpression(range.collection)),\n ),\n t.objectProperty(t.identifier(\"rowKey\"), t.cloneNode(range.keyCallback, true)),\n t.objectProperty(\n t.identifier(\"create\"),\n t.arrowFunctionExpression(\n parameters.map((parameter) => t.cloneNode(parameter, true)),\n hostElementDescriptor(range.row, descriptorBlocks),\n ),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(\n range.bindings.map((binding) => keyedRowBindingObject(binding, parameters)),\n ),\n ),\n ]);\n}\n\nfunction keyedRangesBoundary(blockRuntime: t.Identifier, plan: KeyedRangesPlan): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"KeyedRanges\"),\n );\n const source = t.cloneNode(plan.source, true);\n let rootRef: t.Expression | undefined;\n source.openingElement.attributes = source.openingElement.attributes.filter((attribute) => {\n if (\n !t.isJSXAttribute(attribute) ||\n jsxAttributeName(attribute) !== \"ref\" ||\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n return true;\n }\n rootRef = cloneExpression(attribute.value.expression);\n return false;\n });\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], source)),\n ),\n ...(rootRef\n ? [t.jsxAttribute(t.jsxIdentifier(\"rootRef\"), t.jsxExpressionContainer(rootRef))]\n : []),\n t.jsxAttribute(\n t.jsxIdentifier(\"ranges\"),\n t.jsxExpressionContainer(\n t.arrayExpression(plan.ranges.map((range) => keyedRangeObject(range))),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"trailing\"),\n t.jsxExpressionContainer(t.numericLiteral(plan.trailing)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"bindings\"),\n t.jsxExpressionContainer(\n t.arrayExpression(plan.staticBindings.map(staticRangeBindingObject)),\n ),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction hostConditionalBranchObject(\n branch: t.JSXElement,\n bindings: readonly PendingKeyedRowBinding[],\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan> = new Map(),\n): t.ObjectExpression {\n return t.objectExpression([\n t.objectProperty(\n t.identifier(\"create\"),\n t.arrowFunctionExpression([], hostElementDescriptor(branch, descriptorBlocks)),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(bindings.map((binding) => keyedRowBindingObject(binding, []))),\n ),\n ]);\n}\n\nfunction hostConditionalBoundary(\n blockRuntime: t.Identifier,\n plan: HostConditionalPlan,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"HostConditional\"),\n );\n const attributes: t.JSXAttribute[] = [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], t.cloneNode(plan.source, true))),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"test\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(plan.test))),\n ),\n ];\n if (plan.logical) attributes.push(t.jsxAttribute(t.jsxIdentifier(\"logical\")));\n if (plan.truthy) {\n attributes.push(\n t.jsxAttribute(\n t.jsxIdentifier(\"truthy\"),\n t.jsxExpressionContainer(\n hostConditionalBranchObject(plan.truthy, plan.truthyBindings, plan.descriptorBlocks),\n ),\n ),\n );\n }\n if (plan.falsy) {\n attributes.push(\n t.jsxAttribute(\n t.jsxIdentifier(\"falsy\"),\n t.jsxExpressionContainer(\n hostConditionalBranchObject(plan.falsy, plan.falsyBindings, plan.descriptorBlocks),\n ),\n ),\n );\n }\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction conditionalRangeObject(\n range: ConditionalRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan> = new Map(),\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"before\"), t.numericLiteral(range.before)),\n t.objectProperty(\n t.identifier(\"test\"),\n t.arrowFunctionExpression([], cloneExpression(range.test)),\n ),\n ];\n if (range.logical) {\n properties.push(t.objectProperty(t.identifier(\"logical\"), t.booleanLiteral(true)));\n }\n if (range.truthy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"truthy\"),\n hostConditionalBranchObject(range.truthy, range.truthyBindings, descriptorBlocks),\n ),\n );\n }\n if (range.falsy) {\n properties.push(\n t.objectProperty(\n t.identifier(\"falsy\"),\n hostConditionalBranchObject(range.falsy, range.falsyBindings, descriptorBlocks),\n ),\n );\n }\n return t.objectExpression(properties);\n}\n\nfunction nestedHostBlockObject(\n plan: HostDescriptorBlockPlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>,\n): t.ObjectExpression {\n const kind =\n plan.kind === \"nested-host-conditional-ranges\"\n ? \"conditional-ranges\"\n : plan.kind === \"nested-host-keyed-ranges\"\n ? \"keyed-ranges\"\n : \"mixed-ranges\";\n return t.objectExpression([\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(kind)),\n t.objectProperty(t.identifier(\"id\"), t.numericLiteral(plan.id)),\n t.objectProperty(\n t.identifier(\"ranges\"),\n t.arrayExpression(\n plan.kind === \"nested-host-conditional-ranges\"\n ? plan.ranges.map((range) => conditionalRangeObject(range, descriptorBlocks))\n : plan.kind === \"nested-host-keyed-ranges\"\n ? plan.ranges.map((range) => keyedRangeObject(range, descriptorBlocks))\n : plan.ranges.map((range) => mixedRangeObject(range, descriptorBlocks)),\n ),\n ),\n t.objectProperty(t.identifier(\"trailing\"), t.numericLiteral(plan.trailing)),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(plan.staticBindings.map(staticRangeBindingObject)),\n ),\n ...(plan.kind === \"nested-host-keyed-ranges\"\n ? [t.objectProperty(t.identifier(\"staticChildrenOnly\"), t.booleanLiteral(true))]\n : []),\n ]);\n}\n\nfunction mixedRangeObject(\n range: MixedRangePlan,\n descriptorBlocks: ReadonlyMap<t.JSXElement, HostDescriptorBlockPlan>,\n): t.ObjectExpression {\n const value =\n range.rangeKind === \"conditional\"\n ? conditionalRangeObject(range, descriptorBlocks)\n : keyedRangeObject(range, descriptorBlocks);\n value.properties.unshift(\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(range.rangeKind)),\n );\n return value;\n}\n\nfunction mixedRangesBoundary(blockRuntime: t.Identifier, plan: MixedRangesPlan): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"MixedRanges\"),\n );\n const source = t.cloneNode(plan.source, true);\n const rootRefIndex = source.openingElement.attributes.findIndex(\n (attribute) => t.isJSXAttribute(attribute) && jsxAttributeName(attribute) === \"ref\",\n );\n const rootRef =\n rootRefIndex >= 0\n ? (source.openingElement.attributes.splice(rootRefIndex, 1)[0] as t.JSXAttribute)\n : undefined;\n const nestedPlan: NestedHostMixedRangesPlan = {\n kind: \"nested-host-mixed-ranges\",\n id: plan.id,\n parent: plan.parent,\n dependencies: plan.dependencies,\n source: plan.source,\n ranges: plan.ranges,\n trailing: plan.trailing,\n staticBindings: plan.staticBindings,\n };\n const descriptorBlocks = new Map(plan.descriptorBlocks);\n descriptorBlocks.set(plan.source, nestedPlan);\n const attributes: t.JSXAttribute[] = [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], source)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"create\"),\n t.jsxExpressionContainer(\n t.arrowFunctionExpression([], hostElementDescriptor(plan.source, descriptorBlocks)),\n ),\n ),\n ];\n if (rootRef?.value) {\n attributes.push(t.jsxAttribute(t.jsxIdentifier(\"rootRef\"), t.cloneNode(rootRef.value, true)));\n }\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction conditionalRangesBoundary(\n blockRuntime: t.Identifier,\n plan: ConditionalRangesPlan,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"ConditionalRanges\"),\n );\n const source = t.cloneNode(plan.source, true);\n const rootRefIndex = source.openingElement.attributes.findIndex(\n (attribute) =>\n t.isJSXAttribute(attribute) &&\n t.isJSXIdentifier(attribute.name) &&\n attribute.name.name === \"ref\",\n );\n const rootRef =\n rootRefIndex >= 0\n ? (source.openingElement.attributes.splice(rootRefIndex, 1)[0] as t.JSXAttribute)\n : undefined;\n const attributes: t.JSXAttribute[] = [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], source)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"ranges\"),\n t.jsxExpressionContainer(\n t.arrayExpression(\n plan.ranges.map((range) => conditionalRangeObject(range, plan.descriptorBlocks)),\n ),\n ),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"trailing\"),\n t.jsxExpressionContainer(t.numericLiteral(plan.trailing)),\n ),\n t.jsxAttribute(\n t.jsxIdentifier(\"bindings\"),\n t.jsxExpressionContainer(\n t.arrayExpression(plan.staticBindings.map(staticRangeBindingObject)),\n ),\n ),\n ];\n if (rootRef?.value) {\n attributes.push(t.jsxAttribute(t.jsxIdentifier(\"rootRef\"), t.cloneNode(rootRef.value, true)));\n }\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction analyzeComponentIslandElement(\n element: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n allowedComponentNames: ReadonlySet<string>,\n): { dependencies?: number[]; reason?: string } {\n const name = element.openingElement.name;\n if (!t.isJSXIdentifier(name) || !isComponentName(name.name)) {\n return {\n reason: \"component islands require a direct component identifier\",\n };\n }\n if (!allowedComponentNames.has(name.name)) {\n return {\n reason: `component island ${name.name} must reference a stable module-level component`,\n };\n }\n if (meaningfulJsxChildren(element).length > 0) {\n return {\n reason: `component island ${name.name} does not support children yet`,\n };\n }\n\n const dependencies = new Set<number>();\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return {\n reason: `component island ${name.name} does not support JSX attribute spreads`,\n };\n }\n const attributeName = jsxAttributeName(attribute);\n if (!attributeName) {\n return {\n reason: `component island ${name.name} does not support namespaced JSX attributes`,\n };\n }\n if (attributeName === \"ref\" || attributeName === \"key\" || attributeName === \"children\") {\n return {\n reason: `component island ${name.name} does not support ${attributeName} yet`,\n };\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n const isEventFunction =\n /^on[A-Z]/.test(attributeName) &&\n (t.isArrowFunctionExpression(expression) || t.isFunctionExpression(expression));\n if (!isEventFunction) {\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) {\n return {\n reason: `component island ${name.name} prop ${attributeName} cannot use ${unsupported}`,\n };\n }\n }\n collectStateDependencies(expression, statesByValue).forEach((dependency) =>\n dependencies.add(dependency),\n );\n }\n\n return {\n dependencies: [...dependencies].sort((left, right) => left - right),\n };\n}\n\nfunction componentIslandBoundary(\n blockRuntime: t.Identifier,\n plan: ComponentIslandPlan,\n source: t.JSXElement,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"Component\"),\n );\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], t.cloneNode(source, true))),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\ninterface ComposableBlockAnalysis {\n plans?: ComposableBlockPlan[];\n componentElements?: Set<t.JSXElement>;\n conditionalExpressions?: Set<t.Expression>;\n ownedElements?: Set<t.JSXElement>;\n keyedExpressions?: Set<t.Expression>;\n reason?: string;\n}\n\nfunction analyzeComposableBlocks(\n root: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n allowedComponentNames: ReadonlySet<string>,\n): ComposableBlockAnalysis {\n const plans: ComposableBlockPlan[] = [];\n const componentElements = new Set<t.JSXElement>();\n const conditionalExpressions = new Set<t.Expression>();\n const ownedElements = new Set<t.JSXElement>();\n const keyedExpressions = new Set<t.Expression>();\n let nextId = 0;\n\n const mergeDependencies = (target: Set<number>, dependencies: Iterable<number>) => {\n for (const dependency of dependencies) target.add(dependency);\n };\n\n const visitHost = (\n element: t.JSXElement,\n parent: number | undefined,\n insideConditional: boolean,\n ): { dependencies: Set<number>; reason?: string } => {\n const dependencies = new Set<number>();\n if (!isHostElement(element)) {\n return {\n dependencies,\n reason: insideConditional\n ? \"conditional blocks currently support host elements only\"\n : \"compiled trees currently support host elements only\",\n };\n }\n\n if (insideConditional) {\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) {\n return {\n dependencies,\n reason: \"conditional blocks do not support JSX attribute spreads\",\n };\n }\n const name = jsxAttributeName(attribute);\n if (!name) {\n return {\n dependencies,\n reason: \"conditional blocks do not support namespaced JSX attributes\",\n };\n }\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return {\n dependencies,\n reason: `conditional block ${name} requires React ownership`,\n };\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression) ||\n /^on[A-Z]/.test(name)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n if (name === \"style\") {\n if (!t.isObjectExpression(expression)) {\n return {\n dependencies,\n reason: \"conditional block styles must use one inline object literal\",\n };\n }\n for (const property of expression.properties) {\n if (!t.isObjectProperty(property) || property.computed) {\n return {\n dependencies,\n reason:\n \"conditional block styles do not support spreads, methods, or computed properties\",\n };\n }\n if (!t.isExpression(property.value)) {\n return {\n dependencies,\n reason: \"conditional block style properties must use expression values\",\n };\n }\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) {\n return {\n dependencies,\n reason: `conditional block style cannot use ${unsupported}`,\n };\n }\n mergeDependencies(\n dependencies,\n collectStateDependencies(property.value, statesByValue),\n );\n }\n continue;\n }\n\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) {\n return {\n dependencies,\n reason: `conditional block attribute ${name} cannot use ${unsupported}`,\n };\n }\n mergeDependencies(dependencies, collectStateDependencies(expression, statesByValue));\n }\n }\n\n for (const child of element.children) {\n if (t.isJSXFragment(child)) {\n if (insideConditional) {\n return {\n dependencies,\n reason: \"conditional blocks do not support fragments yet\",\n };\n }\n continue;\n }\n\n if (t.isJSXElement(child)) {\n if (isHostElement(child)) {\n const mixedRangeStart = nextId;\n const mixedRangeId = nextId++;\n const mixedRanges = insideConditional\n ? undefined\n : analyzeMixedRangesContainer(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n mixedRangeId,\n () => nextId++,\n );\n if (mixedRanges) {\n plans.push({\n kind: \"mixed-ranges\",\n id: mixedRangeId,\n parent,\n dependencies: mixedRanges.dependencies,\n source: child,\n ranges: mixedRanges.ranges,\n trailing: mixedRanges.trailing,\n staticBindings: mixedRanges.staticBindings,\n descriptorBlocks: mixedRanges.descriptorBlocks,\n });\n plans.push(...mixedRanges.nestedPlans);\n for (const range of mixedRanges.ranges) {\n if (range.rangeKind === \"conditional\") {\n conditionalExpressions.add(range.source);\n } else if (t.isJSXElement(range.source)) {\n ownedElements.add(range.source);\n } else {\n keyedExpressions.add(range.source);\n }\n }\n continue;\n }\n nextId = mixedRangeStart;\n const keyedRanges = insideConditional\n ? undefined\n : analyzeKeyedRangesContainer(child, statesByValue, safeGlobals, listNames);\n if (keyedRanges) {\n plans.push({\n kind: \"keyed-ranges\",\n id: nextId++,\n parent,\n dependencies: keyedRanges.dependencies,\n source: child,\n ranges: keyedRanges.ranges,\n trailing: keyedRanges.trailing,\n staticBindings: keyedRanges.staticBindings,\n });\n for (const range of keyedRanges.ranges) {\n if (t.isJSXElement(range.source)) ownedElements.add(range.source);\n else keyedExpressions.add(range.source);\n }\n continue;\n }\n const conditionalRangeStart = nextId;\n const conditionalRangeId = nextId++;\n const conditionalRanges = insideConditional\n ? undefined\n : analyzeConditionalRangesContainer(\n child,\n statesByValue,\n safeGlobals,\n false,\n listNames,\n conditionalRangeId,\n () => nextId++,\n );\n if (conditionalRanges) {\n plans.push({\n kind: \"conditional-ranges\",\n id: conditionalRangeId,\n parent,\n dependencies: conditionalRanges.dependencies,\n source: child,\n ranges: conditionalRanges.ranges,\n trailing: conditionalRanges.trailing,\n staticBindings: conditionalRanges.staticBindings,\n descriptorBlocks: conditionalRanges.descriptorBlocks,\n });\n plans.push(...(conditionalRanges.nestedPlans || []));\n for (const range of conditionalRanges.ranges) {\n conditionalExpressions.add(range.source);\n }\n continue;\n }\n nextId = conditionalRangeStart;\n const hostConditionalStart = nextId;\n const hostConditionalId = nextId++;\n const hostConditional = analyzeHostConditionalContainer(\n child,\n statesByValue,\n safeGlobals,\n listNames,\n hostConditionalId,\n () => nextId++,\n );\n if (hostConditional) {\n plans.push({\n kind: \"host-conditional\",\n id: hostConditionalId,\n parent,\n source: child,\n ...hostConditional,\n });\n plans.push(...(hostConditional.nestedPlans || []));\n ownedElements.add(child);\n continue;\n }\n nextId = hostConditionalStart;\n const keyedRowsStart = nextId;\n const keyedRowsId = nextId++;\n const keyedRows = analyzeKeyedRowsContainer(child, statesByValue, safeGlobals, listNames);\n if (keyedRows) {\n const nestedStart = nextId;\n const hostBlocks = analyzeCompilerOwnedKeyedRowHostBlocks(\n keyedRows,\n statesByValue,\n safeGlobals,\n listNames,\n keyedRowsId,\n () => nextId++,\n );\n if (!hostBlocks) nextId = nestedStart;\n if (keyedRows.rowReason && !hostBlocks) {\n nextId = keyedRowsStart;\n const nested = visitHost(child, parent, insideConditional);\n if (nested.reason) return { dependencies, reason: nested.reason };\n mergeDependencies(dependencies, nested.dependencies);\n continue;\n }\n plans.push({\n kind: \"keyed-rows\",\n id: keyedRowsId,\n parent,\n dependencies: keyedRows.dependencies,\n source: child,\n collection: keyedRows.collection,\n collectionDependency: keyedRows.collectionDependency,\n structureDependencies: keyedRows.structureDependencies,\n keyCallback: keyedRows.keyCallback,\n renderCallback: keyedRows.renderCallback,\n row: hostBlocks?.row || keyedRows.row,\n bindings: hostBlocks?.bindings || keyedRows.bindings,\n events: keyedRows.events,\n conditionals: hostBlocks ? [] : keyedRows.conditionals,\n descriptorBlocks: hostBlocks?.descriptorBlocks,\n syntax: keyedRows.syntax,\n });\n plans.push(...(hostBlocks?.nestedPlans || []));\n ownedElements.add(child);\n continue;\n }\n nextId = keyedRowsStart;\n const nested = visitHost(child, parent, insideConditional);\n if (nested.reason) return { dependencies, reason: nested.reason };\n mergeDependencies(dependencies, nested.dependencies);\n continue;\n }\n\n if (isPublicListElement(child, listNames)) {\n const result = analyzePublicList(child, statesByValue, safeGlobals);\n if (result.reason) return { dependencies, reason: result.reason };\n const plan: KeyedListPlan = {\n kind: \"keyed-list\",\n id: nextId++,\n parent,\n dependencies: result.dependencies || [],\n source: child,\n syntax: \"list\",\n };\n plans.push(plan);\n ownedElements.add(child);\n continue;\n }\n\n const result = analyzeComponentIslandElement(\n child,\n statesByValue,\n safeGlobals,\n allowedComponentNames,\n );\n if (result.reason) return { dependencies, reason: result.reason };\n componentElements.add(child);\n if ((result.dependencies || []).length > 0) {\n plans.push({\n kind: \"component\",\n id: nextId++,\n parent,\n dependencies: result.dependencies || [],\n source: child,\n });\n }\n continue;\n }\n\n if (!t.isJSXExpressionContainer(child) || t.isJSXEmptyExpression(child.expression)) {\n continue;\n }\n\n const expression = child.expression;\n const shape = conditionalBlockShape(expression);\n if (shape) {\n const unsupported = validateDerivedExpression(shape.test, safeGlobals);\n if (unsupported) {\n return {\n dependencies,\n reason: `conditional block test cannot use ${unsupported}`,\n };\n }\n const plan: ConditionalBlockPlan = {\n kind: \"conditional\",\n id: nextId++,\n parent,\n dependencies: collectStateDependencies(shape.test, statesByValue),\n source: expression,\n };\n plans.push(plan);\n conditionalExpressions.add(expression);\n const ownedDependencies = new Set(plan.dependencies);\n for (const branch of shape.branches) {\n const nested = visitHost(branch, plan.id, true);\n if (nested.reason) return { dependencies, reason: nested.reason };\n mergeDependencies(ownedDependencies, nested.dependencies);\n }\n plan.dependencies = [...ownedDependencies].sort((left, right) => left - right);\n continue;\n }\n\n if (isMapCall(expression)) {\n const result = analyzeMapList(expression, statesByValue, safeGlobals);\n if (result.reason) return { dependencies, reason: result.reason };\n plans.push({\n kind: \"keyed-list\",\n id: nextId++,\n parent,\n dependencies: result.dependencies || [],\n source: expression,\n syntax: \"map\",\n });\n keyedExpressions.add(expression);\n continue;\n }\n\n if (insideConditional) {\n if (!isTextExpression(expression, statesByValue, safeGlobals)) {\n return {\n dependencies,\n reason: \"conditional block children must keep one supported block or static host tree\",\n };\n }\n mergeDependencies(dependencies, collectStateDependencies(expression, statesByValue));\n }\n }\n\n return { dependencies };\n };\n\n const rootMixedRangeStart = nextId;\n const rootMixedRangeId = nextId++;\n const rootMixedRanges = analyzeMixedRangesContainer(\n root,\n statesByValue,\n safeGlobals,\n listNames,\n rootMixedRangeId,\n () => nextId++,\n );\n if (rootMixedRanges) {\n plans.push({\n kind: \"mixed-ranges\",\n id: rootMixedRangeId,\n dependencies: rootMixedRanges.dependencies,\n source: root,\n ranges: rootMixedRanges.ranges,\n trailing: rootMixedRanges.trailing,\n staticBindings: rootMixedRanges.staticBindings,\n descriptorBlocks: rootMixedRanges.descriptorBlocks,\n });\n plans.push(...rootMixedRanges.nestedPlans);\n for (const range of rootMixedRanges.ranges) {\n if (range.rangeKind === \"conditional\") {\n conditionalExpressions.add(range.source);\n } else if (t.isJSXElement(range.source)) {\n ownedElements.add(range.source);\n } else {\n keyedExpressions.add(range.source);\n }\n }\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n }\n nextId = rootMixedRangeStart;\n\n const rootRanges = analyzeKeyedRangesContainer(root, statesByValue, safeGlobals, listNames, true);\n if (rootRanges) {\n plans.push({\n kind: \"keyed-ranges\",\n id: nextId++,\n dependencies: rootRanges.dependencies,\n source: root,\n ranges: rootRanges.ranges,\n trailing: rootRanges.trailing,\n staticBindings: rootRanges.staticBindings,\n });\n for (const range of rootRanges.ranges) {\n if (t.isJSXElement(range.source)) ownedElements.add(range.source);\n else keyedExpressions.add(range.source);\n }\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n }\n\n const rootConditionalRangeStart = nextId;\n const rootConditionalRangeId = nextId++;\n const rootConditionalRanges = analyzeConditionalRangesContainer(\n root,\n statesByValue,\n safeGlobals,\n true,\n listNames,\n rootConditionalRangeId,\n () => nextId++,\n );\n if (rootConditionalRanges) {\n plans.push({\n kind: \"conditional-ranges\",\n id: rootConditionalRangeId,\n dependencies: rootConditionalRanges.dependencies,\n source: root,\n ranges: rootConditionalRanges.ranges,\n trailing: rootConditionalRanges.trailing,\n staticBindings: rootConditionalRanges.staticBindings,\n descriptorBlocks: rootConditionalRanges.descriptorBlocks,\n });\n plans.push(...(rootConditionalRanges.nestedPlans || []));\n for (const range of rootConditionalRanges.ranges) {\n conditionalExpressions.add(range.source);\n }\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n }\n nextId = rootConditionalRangeStart;\n\n const result = visitHost(root, undefined, false);\n if (result.reason) return { reason: result.reason };\n return {\n plans,\n componentElements,\n conditionalExpressions,\n ownedElements,\n keyedExpressions,\n };\n}\n\nfunction conditionalBlockBoundary(\n blockRuntime: t.Identifier,\n plan: ConditionalBlockPlan,\n source: t.Expression,\n): t.JSXElement {\n const name = t.jsxMemberExpression(\n t.jsxIdentifier(blockRuntime.name),\n t.jsxIdentifier(\"Conditional\"),\n );\n return t.jsxElement(\n t.jsxOpeningElement(\n name,\n [\n t.jsxAttribute(t.jsxIdentifier(\"id\"), t.jsxExpressionContainer(t.numericLiteral(plan.id))),\n t.jsxAttribute(\n t.jsxIdentifier(\"render\"),\n t.jsxExpressionContainer(t.arrowFunctionExpression([], cloneExpression(source))),\n ),\n ],\n true,\n ),\n null,\n [],\n true,\n );\n}\n\nfunction lowerComposableBlocks(\n root: t.JSXElement,\n plans: readonly ComposableBlockPlan[],\n blockRuntime: t.Identifier,\n listNames: ReadonlySet<string>,\n keyedMapUpdateHints: boolean,\n keyedArrayFilterHintedStateIndices: ReadonlySet<number>,\n keyedArrayPrependHintedStateIndices: ReadonlySet<number>,\n keyedArrayPositionHintedStateIndices: ReadonlySet<number>,\n keyedArrayReorderHintedStateIndices: ReadonlySet<number>,\n): t.JSXElement {\n const planBySource = new Map<t.Node, ComposableBlockPlan>(\n plans.map((plan) => [plan.source, plan]),\n );\n const rootPlan = planBySource.get(root);\n if (rootPlan?.kind === \"mixed-ranges\") {\n return mixedRangesBoundary(blockRuntime, rootPlan);\n }\n if (rootPlan?.kind === \"keyed-ranges\") {\n return keyedRangesBoundary(blockRuntime, rootPlan);\n }\n if (rootPlan?.kind === \"conditional-ranges\") {\n return conditionalRangesBoundary(blockRuntime, rootPlan);\n }\n\n const visit = (element: t.JSXElement): void => {\n element.children = element.children.map((child) => {\n if (t.isJSXElement(child)) {\n const plan = planBySource.get(child);\n if (plan?.kind === \"host-conditional\") {\n return hostConditionalBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"mixed-ranges\") {\n return mixedRangesBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"keyed-rows\") {\n return keyedRowsBoundary(\n blockRuntime,\n plan,\n keyedMapUpdateHints,\n keyedArrayFilterHintedStateIndices,\n keyedArrayPrependHintedStateIndices,\n keyedArrayPositionHintedStateIndices,\n keyedArrayReorderHintedStateIndices,\n );\n }\n if (plan?.kind === \"keyed-ranges\") {\n return keyedRangesBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"conditional-ranges\") {\n return conditionalRangesBoundary(blockRuntime, plan);\n }\n if (plan?.kind === \"component\") {\n return componentIslandBoundary(blockRuntime, plan, child);\n }\n if (plan?.kind === \"keyed-list\" && isPublicListElement(child, listNames)) {\n return keyedListBoundary(blockRuntime, plan, child);\n }\n if (isHostElement(child)) visit(child);\n return child;\n }\n if (!t.isJSXExpressionContainer(child) || t.isJSXEmptyExpression(child.expression)) {\n return child;\n }\n\n const plan = planBySource.get(child.expression);\n if (plan?.kind === \"conditional\") {\n const shape = conditionalBlockShape(child.expression);\n for (const branch of shape?.branches || []) visit(branch);\n return conditionalBlockBoundary(blockRuntime, plan, child.expression);\n }\n if (plan?.kind === \"keyed-list\") {\n return keyedListBoundary(blockRuntime, plan, child.expression);\n }\n return child;\n });\n };\n\n visit(root);\n return root;\n}\n\nfunction assignStableBindingTargets(bindings: readonly PendingBinding[]): void {\n const targetByPath = new Map<string, number>();\n for (const binding of bindings) {\n if (binding.kind === \"block\") continue;\n const key = binding.path.join(\".\");\n let target = targetByPath.get(key);\n if (target === undefined) {\n target = targetByPath.size;\n targetByPath.set(key, target);\n }\n binding.target = target;\n }\n}\n\nfunction markShortCircuitBindings(bindings: readonly PendingBinding[]): void {\n for (const binding of bindings) {\n if (binding.kind === \"block\" || binding.dependencies.length < 2) continue;\n let shortCircuits = false;\n traverse(expressionFile(t.cloneNode(binding.value, true)), {\n ConditionalExpression(path) {\n shortCircuits = true;\n path.stop();\n },\n LogicalExpression(path) {\n shortCircuits = true;\n path.stop();\n },\n OptionalCallExpression(path) {\n shortCircuits = true;\n path.stop();\n },\n OptionalMemberExpression(path) {\n shortCircuits = true;\n path.stop();\n },\n });\n if (shortCircuits) binding.tracking = \"dynamic\";\n }\n}\n\nfunction lowerStableBindingTargets(\n root: t.JSXElement,\n bindings: readonly PendingBinding[],\n blockRuntime: t.Identifier,\n ownedElements: ReadonlySet<t.JSXElement>,\n): t.JSXElement {\n const targetByPath = new Map<string, number>();\n for (const binding of bindings) {\n if (binding.kind !== \"block\" && binding.target !== undefined) {\n targetByPath.set(binding.path.join(\".\"), binding.target);\n }\n }\n\n const visit = (element: t.JSXElement, path: number[]): void => {\n const target = targetByPath.get(path.join(\".\"));\n if (target !== undefined && path.length > 0) {\n element.openingElement.attributes.push(\n t.jsxAttribute(\n t.jsxIdentifier(\"ref\"),\n t.jsxExpressionContainer(\n t.callExpression(\n t.memberExpression(t.cloneNode(blockRuntime), t.identifier(\"target\")),\n [t.numericLiteral(target)],\n ),\n ),\n ),\n );\n }\n\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child) || !isHostElement(child)) continue;\n if (ownedElements.has(child)) continue;\n visit(child, [...path, elementIndex]);\n elementIndex += 1;\n }\n };\n\n visit(root, []);\n return root;\n}\n\nfunction analyzeHostTree(\n root: t.JSXElement,\n statesByValue: ReadonlyMap<string, StateBinding>,\n safeGlobals: ReadonlySet<string>,\n conditionalExpressions: ReadonlySet<t.Expression>,\n keyedExpressions: ReadonlySet<t.Expression>,\n ownedElements: ReadonlySet<t.JSXElement>,\n componentElements: ReadonlySet<t.JSXElement>,\n): { bindings?: PendingBinding[]; reason?: string } {\n const bindings: PendingBinding[] = [];\n\n const analyzeStyle = (expression: t.Expression, path: number[]): string | undefined => {\n if (!t.isObjectExpression(expression)) {\n return \"stateful style bindings must use one inline object literal\";\n }\n for (const property of expression.properties) {\n if (!t.isObjectProperty(property) || property.computed) {\n return \"stateful style bindings do not support spreads, methods, or computed properties\";\n }\n const name = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : undefined;\n if (!name || (name.includes(\"-\") && !name.startsWith(\"--\"))) {\n return \"stateful style property names must use camelCase or a CSS custom property\";\n }\n if (!t.isExpression(property.value)) {\n return `stateful style property ${name} must use an expression value`;\n }\n const dependencies = collectStateDependencies(property.value, statesByValue);\n if (dependencies.length === 0) continue;\n const unsupported = validateDerivedExpression(property.value, safeGlobals);\n if (unsupported) return `stateful style property ${name} cannot use ${unsupported}`;\n bindings.push({\n kind: \"style\",\n path: [...path],\n dependencies,\n name,\n value: cloneExpression(property.value),\n });\n }\n return undefined;\n };\n\n const visit = (element: t.JSXElement, path: number[]): string | undefined => {\n const tag = element.openingElement.name;\n if (!t.isJSXIdentifier(tag) || !/^[a-z]/.test(tag.name)) {\n return \"compiled trees currently support host elements only\";\n }\n\n for (const attribute of element.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attribute)) return \"JSX attribute spreads are not supported yet\";\n const name = jsxAttributeName(attribute);\n if (!name) return \"namespaced JSX attributes are not supported yet\";\n if (name === \"ref\" || name === \"dangerouslySetInnerHTML\") {\n return `${name} requires React ownership`;\n }\n if (\n !t.isJSXExpressionContainer(attribute.value) ||\n t.isJSXEmptyExpression(attribute.value.expression)\n ) {\n continue;\n }\n\n const expression = attribute.value.expression;\n const dependencies = collectStateDependencies(expression, statesByValue);\n if (dependencies.length === 0 || /^on[A-Z]/.test(name)) continue;\n if (name === \"style\") {\n const reason = analyzeStyle(expression, path);\n if (reason) return reason;\n continue;\n }\n if (name === \"children\" || name === \"key\") {\n return `stateful ${name} bindings are not supported yet`;\n }\n const unsupported = validateDerivedExpression(expression, safeGlobals);\n if (unsupported) return `stateful ${name} binding cannot use ${unsupported}`;\n bindings.push({\n kind: \"attribute\",\n path: [...path],\n dependencies,\n name,\n value: cloneExpression(expression),\n });\n }\n\n const nestedElements = element.children.filter(\n (child): child is t.JSXElement =>\n t.isJSXElement(child) && isHostElement(child) && !ownedElements.has(child),\n );\n const expressionChildren = element.children.filter((child): child is t.JSXExpressionContainer =>\n t.isJSXExpressionContainer(child),\n );\n for (const child of expressionChildren) {\n if (t.isJSXEmptyExpression(child.expression)) continue;\n if (conditionalExpressions.has(child.expression)) continue;\n if (keyedExpressions.has(child.expression)) continue;\n if (!isTextExpression(child.expression, statesByValue, safeGlobals)) {\n return \"dynamic child structures require React reconciliation\";\n }\n }\n\n const hasOwnedElement = element.children.some(\n (child) => t.isJSXElement(child) && ownedElements.has(child),\n );\n const hasComponentElement = element.children.some(\n (child) => t.isJSXElement(child) && componentElements.has(child),\n );\n const hasDynamicBlocks =\n hasOwnedElement ||\n hasComponentElement ||\n expressionChildren.some(\n (child) =>\n !t.isJSXEmptyExpression(child.expression) &&\n (conditionalExpressions.has(child.expression) || keyedExpressions.has(child.expression)),\n );\n if (nestedElements.length === 0 && !hasDynamicBlocks) {\n const dependencies = new Set<number>();\n const parts: t.Expression[] = [];\n for (const child of element.children) {\n if (t.isJSXText(child)) {\n const text = cleanJsxText(child.value);\n if (text) parts.push(t.stringLiteral(text));\n } else if (t.isJSXExpressionContainer(child) && !t.isJSXEmptyExpression(child.expression)) {\n collectStateDependencies(child.expression, statesByValue).forEach((dependency) =>\n dependencies.add(dependency),\n );\n parts.push(cloneExpression(child.expression));\n }\n }\n if (dependencies.size > 0) {\n bindings.push({\n kind: \"text\",\n path: [...path],\n dependencies: [...dependencies].sort((left, right) => left - right),\n value: t.arrayExpression(parts),\n });\n }\n } else {\n for (const child of expressionChildren) {\n if (\n !t.isJSXEmptyExpression(child.expression) &&\n !conditionalExpressions.has(child.expression) &&\n !keyedExpressions.has(child.expression) &&\n collectStateDependencies(child.expression, statesByValue).length > 0\n ) {\n return \"mixed element and stateful text children are not supported yet\";\n }\n }\n let elementIndex = 0;\n for (const child of element.children) {\n if (!t.isJSXElement(child) || !isHostElement(child) || ownedElements.has(child)) continue;\n const reason = visit(child, [...path, elementIndex]);\n if (reason) return reason;\n elementIndex += 1;\n }\n }\n\n return undefined;\n };\n\n const reason = visit(root, []);\n return reason ? { reason } : { bindings };\n}\n\nfunction lazyInitialValue(expression?: t.Expression): t.Expression {\n const value = t.identifier(\"_initial\");\n const initializer = expression ? cloneExpression(expression) : t.identifier(\"undefined\");\n return t.callExpression(\n t.arrowFunctionExpression(\n [],\n t.blockStatement([\n t.variableDeclaration(\"const\", [t.variableDeclarator(value, initializer)]),\n t.returnStatement(\n t.conditionalExpression(\n t.binaryExpression(\n \"===\",\n t.unaryExpression(\"typeof\", t.cloneNode(value)),\n t.stringLiteral(\"function\"),\n ),\n t.callExpression(t.cloneNode(value), []),\n t.cloneNode(value),\n ),\n ),\n ]),\n ),\n [],\n );\n}\n\nfunction analyzePropsParameter(\n path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>,\n): PropsPlan | string {\n const parameter = path.node.params[0];\n if (!parameter) {\n return {\n definitionParameter: path.scope.generateUidIdentifier(\"props\"),\n destructuredNames: new Set(),\n };\n }\n if (t.isIdentifier(parameter)) {\n return {\n definitionParameter: t.cloneNode(parameter, true) as t.Identifier,\n wrapperProps: t.cloneNode(parameter, true) as t.Identifier,\n destructuredNames: new Set(),\n };\n }\n if (!t.isObjectPattern(parameter)) {\n return \"components must use zero parameters, one props identifier, or flat object props destructuring\";\n }\n\n const localNames = new Set<string>();\n for (const property of parameter.properties) {\n if (t.isRestElement(property)) {\n return \"rest properties in component props destructuring are not supported yet\";\n }\n if (property.computed) {\n return \"computed component props destructuring is not supported yet\";\n }\n let local: t.Identifier | undefined;\n if (t.isIdentifier(property.value)) {\n local = property.value;\n } else if (t.isAssignmentPattern(property.value) && t.isIdentifier(property.value.left)) {\n local = property.value.left;\n }\n if (!local) {\n return \"nested component props destructuring is not supported yet\";\n }\n if (localNames.has(local.name)) {\n return \"component props destructuring local names must be unique\";\n }\n localNames.add(local.name);\n }\n\n const definitionParameter = path.scope.generateUidIdentifier(\"props\");\n return {\n definitionParameter,\n wrapperProps: t.objectExpression(\n [...localNames].map((name) =>\n t.objectProperty(t.identifier(name), t.identifier(name), false, true),\n ),\n ),\n destructuredNames: localNames,\n };\n}\n\nfunction bindingObject(\n binding: PendingBinding,\n propsParameter: t.Identifier,\n stateParameter: t.Identifier,\n statesByValue: ReadonlyMap<string, StateBinding>,\n statesBySetter: ReadonlyMap<string, StateBinding>,\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [\n t.objectProperty(t.identifier(\"kind\"), t.stringLiteral(binding.kind)),\n t.objectProperty(\n t.identifier(\"dependencies\"),\n t.arrayExpression(binding.dependencies.map((part) => t.numericLiteral(part))),\n ),\n ];\n if (binding.kind === \"block\") {\n properties.push(t.objectProperty(t.identifier(\"id\"), t.numericLiteral(binding.id)));\n if (binding.parent !== undefined) {\n properties.push(t.objectProperty(t.identifier(\"parent\"), t.numericLiteral(binding.parent)));\n }\n return t.objectExpression(properties);\n }\n properties.splice(\n 1,\n 0,\n t.objectProperty(\n t.identifier(\"path\"),\n t.arrayExpression(binding.path.map((part) => t.numericLiteral(part))),\n ),\n );\n if (binding.target !== undefined) {\n properties.splice(\n 2,\n 0,\n t.objectProperty(t.identifier(\"target\"), t.numericLiteral(binding.target)),\n );\n }\n if (binding.tracking) {\n properties.push(t.objectProperty(t.identifier(\"tracking\"), t.stringLiteral(binding.tracking)));\n }\n if (binding.name)\n properties.push(t.objectProperty(t.identifier(\"name\"), t.stringLiteral(binding.name)));\n properties.push(\n t.objectProperty(\n t.identifier(\"read\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter), t.cloneNode(stateParameter)],\n rewriteStateAccess(binding.value, stateParameter, statesByValue, statesBySetter),\n ),\n ),\n );\n return t.objectExpression(properties);\n}\n\nfunction wrapperElement(definitionIdentifier: t.Identifier, props?: t.Expression): t.JSXElement {\n const name = t.jsxIdentifier(definitionIdentifier.name);\n const attributes = props ? [t.jsxSpreadAttribute(t.cloneNode(props))] : [];\n return t.jsxElement(t.jsxOpeningElement(name, attributes, true), null, [], true);\n}\n\nfunction compileCandidate(\n candidate: Candidate,\n createComponentIdentifier: t.Identifier,\n keyedMapUpdateIdentifier: t.Identifier,\n keyedArrayAppendIdentifier: t.Identifier,\n keyedArrayFilterIdentifier: t.Identifier,\n keyedArrayMapPipelineIdentifier: t.Identifier,\n keyedArrayMappedStructuralAppendIdentifier: t.Identifier,\n keyedArrayStructuralAppendMapPipelineIdentifier: t.Identifier,\n keyedArrayMappedStructuralPrependIdentifier: t.Identifier,\n keyedArrayStructuralPrependMapPipelineIdentifier: t.Identifier,\n keyedArrayQueuedMapPipelineIdentifier: t.Identifier,\n keyedArrayRollingWindowMapPipelineIdentifier: t.Identifier,\n keyedArrayMappedRollingWindowIdentifier: t.Identifier,\n keyedArrayMapReorderIdentifier: t.Identifier,\n keyedArrayMappedStructuralIdentifier: t.Identifier,\n keyedArrayPrependIdentifier: t.Identifier,\n keyedArrayPositionIdentifier: t.Identifier,\n keyedArrayBatchInsertIdentifier: t.Identifier,\n keyedArrayWindowReplaceIdentifier: t.Identifier,\n keyedArrayReorderIdentifier: t.Identifier,\n keyedArrayStructuralReorderIdentifier: t.Identifier,\n keyedArraySortIdentifier: t.Identifier,\n keyedArrayStructuralSortIdentifier: t.Identifier,\n keyedArrayRollingWindowIdentifier: t.Identifier,\n keyedArraySliceIdentifier: t.Identifier,\n keyedCollectionUpdateIdentifier: t.Identifier,\n keyedCollectionMutationIdentifier: t.Identifier,\n runtimeFeatureIdentifiers: ReadonlyMap<CompilerRuntimeFeatureName, t.Identifier>,\n usedRuntimeFeatures: Set<CompilerRuntimeFeatureName>,\n optimizationCounts: {\n keyedArrayAppendHints: number;\n keyedArrayFilterHints: number;\n keyedArrayPrependHints: number;\n keyedArrayPositionHints: number;\n keyedArrayReorderHints: number;\n keyedArraySortHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayRollingWindowHints: number;\n keyedArraySliceHints: number;\n keyedCollectionUpdateHints: number;\n keyedIdentityTargets: number;\n keyedMapLookupTargets: number;\n keyedMembershipTargets: number;\n keyedMapUpdateHints: number;\n },\n compilerUsage: {\n keyedArrayBatchInsertHints: number;\n keyedArrayMapReorderHints: number;\n keyedArrayMapSortHints: number;\n keyedArrayMapUpdateHints: number;\n keyedArrayMappedRollingWindowHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayMappedStructuralHints: number;\n keyedArrayMappedStructuralAppendHints: number;\n keyedArrayMappedStructuralPrependHints: number;\n keyedArrayQueuedMapUpdateHints: number;\n keyedArrayStructuralAppendMapHints: number;\n keyedArrayStructuralRollingWindowHints: number;\n keyedArrayStructuralPrependMapHints: number;\n keyedArrayStructuralReorderHints: number;\n keyedArrayStructuralSortHints: number;\n keyedArrayWindowReplaceHints: number;\n },\n useStateNames: ReadonlySet<string>,\n reactNames: ReadonlySet<string>,\n listNames: ReadonlySet<string>,\n moduleId: string,\n reactivity: NormalizedReactCompilerOptions[\"reactivity\"],\n): string | undefined {\n const { path, name, statementPath } = candidate;\n if (path.node.async || path.node.generator)\n return \"async and generator components are not supported\";\n if (path.node.typeParameters) return \"generic components are not supported yet\";\n if (path.node.params.length > 1) return \"components must use at most one props parameter\";\n const propsPlan = analyzePropsParameter(path);\n if (typeof propsPlan === \"string\") return propsPlan;\n if (!t.isBlockStatement(path.node.body)) return \"components must use a block body\";\n const safeGlobals = new Set(\n [...SAFE_GLOBAL_CALLS, \"Math\"].filter((name) => !path.scope.getBinding(name)),\n );\n const globalCollections = new Set([\"Set\", \"Map\"].filter((name) => !path.scope.getBinding(name)));\n\n const states: StateBinding[] = [];\n const locals: LocalBinding[] = [];\n let returned: t.ReturnStatement | undefined;\n for (const statement of path.node.body.body) {\n if (t.isReturnStatement(statement)) {\n if (returned) return \"components must have one unconditional return\";\n returned = statement;\n continue;\n }\n if (t.isFunctionDeclaration(statement)) {\n if (!statement.id) return \"named event handler declarations must have a name\";\n if (statement.async || statement.generator || statement.typeParameters) {\n return `event handler ${statement.id.name} must be synchronous and non-generic`;\n }\n locals.push({\n kind: \"handler\",\n name: statement.id.name,\n value: t.toExpression(t.cloneNode(statement, true)) as t.FunctionExpression,\n });\n continue;\n }\n if (\n !t.isVariableDeclaration(statement) ||\n statement.kind !== \"const\" ||\n statement.declarations.length !== 1\n ) {\n return \"only top-level useState declarations, pure derived const values, named synchronous handlers, and one return are supported by the current compiler\";\n }\n const declaration = statement.declarations[0];\n if (t.isArrayPattern(declaration.id)) {\n if (\n declaration.id.elements.length !== 2 ||\n !t.isIdentifier(declaration.id.elements[0]) ||\n !t.isIdentifier(declaration.id.elements[1]) ||\n !isUseStateCall(declaration.init, useStateNames, reactNames) ||\n declaration.init.arguments.length > 1 ||\n (declaration.init.arguments[0] && !t.isExpression(declaration.init.arguments[0]))\n ) {\n return \"only const [value, setValue] = useState(initial) state declarations are supported\";\n }\n if (locals.length > 0) {\n return \"useState declarations must appear before derived local values and event handlers\";\n }\n states.push({\n valueName: declaration.id.elements[0].name,\n setterName: declaration.id.elements[1].name,\n index: states.length,\n initialValue: declaration.init.arguments[0] as t.Expression | undefined,\n });\n continue;\n }\n if (!t.isIdentifier(declaration.id) || !t.isExpression(declaration.init)) {\n return \"derived const values and event handlers must use one identifier and one expression\";\n }\n if (t.isArrowFunctionExpression(declaration.init) || t.isFunctionExpression(declaration.init)) {\n if (declaration.init.async || declaration.init.generator) {\n return `event handler ${declaration.id.name} must be synchronous`;\n }\n locals.push({\n kind: \"handler\",\n name: declaration.id.name,\n value: declaration.init,\n });\n } else {\n locals.push({\n kind: \"derived\",\n name: declaration.id.name,\n value: declaration.init,\n });\n }\n }\n\n if (states.length === 0) return \"no local useState binding was found\";\n if (!returned?.argument || !t.isJSXElement(returned.argument)) {\n return \"the component must return one host JSX element\";\n }\n\n const statesByValue = new Map(states.map((state) => [state.valueName, state]));\n const statesBySetter = new Map(states.map((state) => [state.setterName, state]));\n const localNames = new Set(locals.map((binding) => binding.name));\n if (localNames.size !== locals.length) return \"local binding names must be unique\";\n for (const state of states) {\n if (\n state.initialValue &&\n (collectStateDependencies(state.initialValue, statesByValue).length > 0 ||\n collectReferencedLocals(state.initialValue, localNames).length > 0 ||\n [...statesBySetter].some(([setterName]) =>\n referencesIdentifier(state.initialValue!, setterName),\n ))\n ) {\n return \"useState initializers cannot reference another local binding\";\n }\n }\n const derivedByName = new Map<string, t.Expression>();\n const handlersByName = new Map<string, HandlerBinding>();\n for (const binding of locals) {\n const forwardReferences = collectReferencedLocals(binding.value, localNames).filter(\n (reference) => !derivedByName.has(reference),\n );\n if (forwardReferences.length > 0) {\n return `${binding.kind === \"handler\" ? \"event handler\" : \"derived local\"} ${binding.name} can only reference earlier derived local values`;\n }\n const expanded = rewriteDerivedAccess(binding.value, derivedByName);\n if (binding.kind === \"handler\") {\n handlersByName.set(binding.name, {\n name: binding.name,\n value: expanded as t.ArrowFunctionExpression | t.FunctionExpression,\n });\n continue;\n }\n const unsupported = collectionPipelineMethod(expanded)\n ? validateCollectionPipeline(expanded, safeGlobals)\n : validateDerivedExpression(expanded, safeGlobals);\n if (unsupported) {\n return `derived local ${binding.name} cannot use ${unsupported}`;\n }\n derivedByName.set(binding.name, expanded);\n }\n const rootWithDerived = rewriteDerivedAccess(returned.argument, derivedByName) as t.JSXElement;\n const handlerRewrite = rewriteHandlerAccess(rootWithDerived, handlersByName);\n if (handlerRewrite.reason) return handlerRewrite.reason;\n if (!handlerRewrite.root) return \"event handlers could not be prepared safely\";\n const expandedRootWithDeferredEvents = rewriteDestructuredPropAccess(\n handlerRewrite.root,\n propsPlan.destructuredNames,\n propsPlan.definitionParameter,\n );\n const expandedRoot = stabilizeDeferredEventCurrentTargets(\n expandedRootWithDeferredEvents,\n new Set(states.map((state) => state.setterName)),\n );\n const setterReason = validateSetterUsage(expandedRoot, statesBySetter);\n if (setterReason) return setterReason;\n const referencedPropNames = collectDestructuredPropNames(\n expandedRoot,\n propsPlan.destructuredNames,\n propsPlan.definitionParameter,\n );\n // React children and identity-bearing values remain on React's normal prop\n // reconciliation path. Other flat destructured props get runtime-validated\n // primitive cells so the compiled render plan can stay mounted.\n let propBindings = referencedPropNames.has(\"children\")\n ? []\n : [...propsPlan.destructuredNames]\n .filter((propName) => referencedPropNames.has(propName))\n .map(\n (localName, propIndex): PropBinding => ({\n localName,\n valueName: path.scope.generateUidIdentifier(`farmProp${propIndex}`).name,\n index: states.length + propIndex,\n }),\n );\n const propBindingsByName = new Map(propBindings.map((binding) => [binding.localName, binding]));\n let reactiveByValue = new Map(statesByValue);\n for (const binding of propBindings) {\n reactiveByValue.set(binding.valueName, {\n valueName: binding.valueName,\n setterName: \"\",\n index: binding.index,\n });\n }\n let expandedReactiveRoot = rewriteTrackedPropAccess(\n expandedRoot,\n propsPlan.definitionParameter,\n propBindingsByName,\n ) as t.JSXElement;\n const referencedComponentNames = new Set<string>();\n traverse(expressionFile(t.cloneNode(expandedReactiveRoot, true)), {\n JSXOpeningElement(componentPath) {\n const componentName = componentPath.node.name;\n if (t.isJSXIdentifier(componentName) && isComponentName(componentName.name)) {\n referencedComponentNames.add(componentName.name);\n }\n },\n });\n const allowedComponentNames = new Set(\n [...referencedComponentNames].filter((componentName) => {\n if (listNames.has(componentName)) return false;\n const binding = path.scope.getBinding(componentName);\n return Boolean(\n binding?.constant &&\n binding.scope.path.isProgram() &&\n binding.kind !== \"let\" &&\n binding.kind !== \"var\",\n );\n }),\n );\n let blockAnalysis = analyzeComposableBlocks(\n expandedReactiveRoot,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n let analysis = analyzeHostTree(\n expandedReactiveRoot,\n reactiveByValue,\n safeGlobals,\n blockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n blockAnalysis.keyedExpressions || new Set<t.Expression>(),\n blockAnalysis.ownedElements || new Set<t.JSXElement>(),\n blockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (propBindings.length > 0 && (blockAnalysis.reason || analysis.reason)) {\n // Prop reactivity is optional inside an already eligible local-state\n // component. Preserve the established React prop path when the added prop\n // dependency makes a shape exceed the narrower prop-cell proof.\n propBindings = [];\n reactiveByValue = new Map(statesByValue);\n expandedReactiveRoot = t.cloneNode(expandedRoot, true);\n blockAnalysis = analyzeComposableBlocks(\n expandedReactiveRoot,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n analysis = analyzeHostTree(\n expandedReactiveRoot,\n reactiveByValue,\n safeGlobals,\n blockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n blockAnalysis.keyedExpressions || new Set<t.Expression>(),\n blockAnalysis.ownedElements || new Set<t.JSXElement>(),\n blockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n }\n if (blockAnalysis.reason) return blockAnalysis.reason;\n if (analysis.reason) return analysis.reason;\n const hintedStateIndices = new Set(\n (blockAnalysis.plans || [])\n .filter(\n (plan): plan is KeyedRowsPlan =>\n plan.kind === \"keyed-rows\" && plan.collectionDependency !== undefined,\n )\n .map((plan) => plan.collectionDependency as number),\n );\n const hintedRoot = rewriteKeyedMapUpdateHints(\n expandedReactiveRoot,\n hintedStateIndices,\n statesBySetter,\n keyedMapUpdateIdentifier,\n safeGlobals,\n );\n let appliedKeyedMapUpdateHints = 0;\n if (hintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n hintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n hintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = hintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedMapUpdateHints = hintedRoot.count;\n optimizationCounts.keyedMapUpdateHints += hintedRoot.count;\n }\n }\n const appendHintedStateIndices = new Set(hintedStateIndices);\n for (const plan of blockAnalysis.plans || []) {\n if (plan.kind !== \"keyed-rows\" || plan.collectionDependency === undefined) continue;\n const keyExpression = returnedExpression(plan.keyCallback);\n if (\n !keyExpression ||\n collectStateDependencies(keyExpression, reactiveByValue).includes(plan.collectionDependency)\n ) {\n // Appending changes collection-derived keys on every existing row. Do not\n // emit a suffix-only hint for any boundary that consumes this state.\n appendHintedStateIndices.delete(plan.collectionDependency);\n }\n }\n const appendHintedRoot = rewriteKeyedArrayAppendHints(\n expandedReactiveRoot,\n appendHintedStateIndices,\n statesBySetter,\n keyedArrayAppendIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayAppendHints = 0;\n if (appendHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n appendHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n appendHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = appendHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayAppendHints = appendHintedRoot.count;\n optimizationCounts.keyedArrayAppendHints += appendHintedRoot.count;\n }\n }\n const shiftedIndexIndependentStateIndices = new Set(hintedStateIndices);\n for (const plan of blockAnalysis.plans || []) {\n if (plan.kind !== \"keyed-rows\" || plan.collectionDependency === undefined) continue;\n const keyExpression = returnedExpression(plan.keyCallback);\n if (\n plan.renderCallback.params.length > 1 ||\n !keyExpression ||\n collectStateDependencies(keyExpression, reactiveByValue).includes(plan.collectionDependency)\n ) {\n // Removing or prepending rows shifts existing indexes. A row callback\n // that accepts the index, or a key that reads the whole collection,\n // must take the full reconciliation path so row state cannot go stale.\n shiftedIndexIndependentStateIndices.delete(plan.collectionDependency);\n }\n }\n const prependHintedRoot = rewriteKeyedArrayPrependHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayPrependIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayPrependHints = 0;\n let appliedPrependHintedStateIndices: ReadonlySet<number> = new Set();\n if (prependHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n prependHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n prependHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = prependHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayPrependHints = prependHintedRoot.count;\n appliedPrependHintedStateIndices = prependHintedRoot.stateIndices;\n optimizationCounts.keyedArrayPrependHints += prependHintedRoot.count;\n }\n }\n const rollingWindowHintedRoot = rewriteKeyedArrayRollingWindowHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArraySliceIdentifier,\n keyedArrayRollingWindowIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayRollingWindowHints = 0;\n let appliedRollingWindowHintedStateIndices: ReadonlySet<number> = new Set();\n if (rollingWindowHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n rollingWindowHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n rollingWindowHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = rollingWindowHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayRollingWindowHints = rollingWindowHintedRoot.count;\n appliedRollingWindowHintedStateIndices = rollingWindowHintedRoot.stateIndices;\n optimizationCounts.keyedArrayRollingWindowHints += rollingWindowHintedRoot.count;\n }\n }\n const positionHintedRoot = rewriteKeyedArrayPositionHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayPositionIdentifier,\n keyedArrayBatchInsertIdentifier,\n keyedArrayWindowReplaceIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayPositionHints = 0;\n let appliedKeyedArrayBatchInsertHints = 0;\n let appliedKeyedArrayWindowReplaceHints = 0;\n let appliedPositionHintedStateIndices: ReadonlySet<number> = new Set();\n if (positionHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n positionHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n positionHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = positionHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayPositionHints = positionHintedRoot.count;\n appliedKeyedArrayBatchInsertHints = positionHintedRoot.batchInsertCount;\n appliedKeyedArrayWindowReplaceHints = positionHintedRoot.windowReplaceCount;\n appliedPositionHintedStateIndices = positionHintedRoot.stateIndices;\n optimizationCounts.keyedArrayPositionHints += positionHintedRoot.count;\n compilerUsage.keyedArrayBatchInsertHints += positionHintedRoot.batchInsertCount;\n compilerUsage.keyedArrayWindowReplaceHints += positionHintedRoot.windowReplaceCount;\n }\n }\n const allowKeyedArrayMapPipelines = (blockAnalysis.plans || []).every(\n (plan) =>\n plan.kind !== \"keyed-rows\" ||\n (plan.conditionals.length === 0 && !plan.descriptorBlocks?.size),\n );\n const reorderPipelineHintedRoot = rewriteKeyedArrayReorderPipelineHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayFilterIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayMappedStructuralIdentifier,\n keyedArrayReorderIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArraySliceIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralSortIdentifier,\n safeGlobals,\n allowKeyedArrayMapPipelines,\n );\n let appliedPipelineFilterHints = 0;\n let appliedPipelineMapHints = 0;\n let appliedPipelineReorderHints = 0;\n let appliedPipelineSliceHints = 0;\n let appliedPipelineSortHints = 0;\n let appliedPipelineHintedStateIndices: ReadonlySet<number> = new Set();\n if (\n reorderPipelineHintedRoot.filterCount > 0 ||\n reorderPipelineHintedRoot.reorderCount > 0 ||\n reorderPipelineHintedRoot.sliceCount > 0 ||\n reorderPipelineHintedRoot.sortCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n reorderPipelineHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n reorderPipelineHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = reorderPipelineHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedPipelineFilterHints = reorderPipelineHintedRoot.filterCount;\n appliedPipelineMapHints = reorderPipelineHintedRoot.mapCount;\n appliedKeyedMapUpdateHints += reorderPipelineHintedRoot.mapCount;\n appliedPipelineReorderHints =\n reorderPipelineHintedRoot.reorderCount +\n reorderPipelineHintedRoot.terminalStructuralPipelineCount;\n appliedPipelineSliceHints = reorderPipelineHintedRoot.sliceCount;\n appliedPipelineSortHints = reorderPipelineHintedRoot.sortCount;\n appliedPipelineHintedStateIndices = reorderPipelineHintedRoot.stateIndices;\n optimizationCounts.keyedArrayFilterHints += reorderPipelineHintedRoot.filterCount;\n optimizationCounts.keyedMapUpdateHints += reorderPipelineHintedRoot.mapCount;\n optimizationCounts.keyedArrayReorderHints += reorderPipelineHintedRoot.reorderCount;\n optimizationCounts.keyedArraySliceHints += reorderPipelineHintedRoot.sliceCount;\n optimizationCounts.keyedArraySortHints += reorderPipelineHintedRoot.sortCount;\n compilerUsage.keyedArrayStructuralReorderHints +=\n reorderPipelineHintedRoot.structuralReorderCount;\n compilerUsage.keyedArrayStructuralSortHints += reorderPipelineHintedRoot.structuralSortCount;\n compilerUsage.keyedArrayMapUpdateHints += reorderPipelineHintedRoot.mapCount;\n compilerUsage.keyedArrayMapReorderHints += reorderPipelineHintedRoot.mapReorderCount;\n compilerUsage.keyedArrayMapSortHints += reorderPipelineHintedRoot.mapSortCount;\n compilerUsage.keyedArrayMappedStructuralHints +=\n reorderPipelineHintedRoot.terminalStructuralPipelineCount;\n }\n }\n const reorderHintedRoot = rewriteKeyedArrayReorderHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayReorderIdentifier,\n );\n let appliedKeyedArrayReorderHints = appliedPipelineReorderHints;\n let appliedReorderHintedStateIndices: ReadonlySet<number> = appliedPipelineHintedStateIndices;\n if (reorderHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n reorderHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n reorderHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = reorderHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayReorderHints += reorderHintedRoot.count;\n appliedReorderHintedStateIndices = new Set([\n ...appliedReorderHintedStateIndices,\n ...reorderHintedRoot.stateIndices,\n ]);\n optimizationCounts.keyedArrayReorderHints += reorderHintedRoot.count;\n }\n }\n const sortHintedRoot = rewriteKeyedArraySortHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArraySortIdentifier,\n safeGlobals,\n );\n let appliedKeyedArraySortHints = appliedPipelineSortHints;\n let appliedSortHintedStateIndices: ReadonlySet<number> = appliedPipelineHintedStateIndices;\n if (sortHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n sortHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n sortHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = sortHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArraySortHints += sortHintedRoot.count;\n appliedSortHintedStateIndices = new Set([\n ...appliedSortHintedStateIndices,\n ...sortHintedRoot.stateIndices,\n ]);\n optimizationCounts.keyedArraySortHints += sortHintedRoot.count;\n }\n }\n const sliceHintedRoot = rewriteKeyedArraySliceHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArraySliceIdentifier,\n safeGlobals,\n );\n let appliedKeyedArraySliceHints = appliedPipelineSliceHints;\n let appliedSliceHintedStateIndices: ReadonlySet<number> =\n appliedPipelineSliceHints > 0 ? appliedPipelineHintedStateIndices : new Set();\n if (sliceHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n sliceHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n sliceHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = sliceHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArraySliceHints += sliceHintedRoot.count;\n appliedSliceHintedStateIndices = new Set([\n ...appliedSliceHintedStateIndices,\n ...sliceHintedRoot.stateIndices,\n ]);\n optimizationCounts.keyedArraySliceHints += sliceHintedRoot.count;\n }\n }\n const filterHintedRoot = rewriteKeyedArrayFilterHints(\n expandedReactiveRoot,\n shiftedIndexIndependentStateIndices,\n statesBySetter,\n keyedArrayFilterIdentifier,\n safeGlobals,\n );\n let appliedKeyedArrayFilterHints = appliedPipelineFilterHints;\n let appliedFilterHintedStateIndices: ReadonlySet<number> =\n appliedPipelineFilterHints > 0 ? appliedPipelineHintedStateIndices : new Set();\n if (filterHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n filterHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n filterHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = filterHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedKeyedArrayFilterHints += filterHintedRoot.count;\n appliedFilterHintedStateIndices = new Set([\n ...appliedFilterHintedStateIndices,\n ...filterHintedRoot.stateIndices,\n ]);\n optimizationCounts.keyedArrayFilterHints += filterHintedRoot.count;\n }\n }\n const queuedMappedStructuralHintedRoot = rewriteQueuedKeyedArrayMappedStructuralHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayMappedStructuralIdentifier,\n keyedArrayFilterIdentifier,\n keyedArraySliceIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedQueuedMappedStructuralHints = 0;\n if (\n queuedMappedStructuralHintedRoot.mapCount > 0 &&\n queuedMappedStructuralHintedRoot.structuralCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedMappedStructuralHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedMappedStructuralHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedMappedStructuralHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedQueuedMappedStructuralHints =\n queuedMappedStructuralHintedRoot.mapCount +\n queuedMappedStructuralHintedRoot.structuralCount;\n appliedKeyedArrayReorderHints += queuedMappedStructuralHintedRoot.structuralCount;\n appliedReorderHintedStateIndices = new Set([\n ...appliedReorderHintedStateIndices,\n ...queuedMappedStructuralHintedRoot.stateIndices,\n ]);\n compilerUsage.keyedArrayMapUpdateHints += queuedMappedStructuralHintedRoot.mapCount;\n compilerUsage.keyedArrayQueuedMapUpdateHints += queuedMappedStructuralHintedRoot.mapCount;\n compilerUsage.keyedArrayMappedStructuralHints +=\n queuedMappedStructuralHintedRoot.structuralCount;\n }\n }\n const queuedStructuralMapHintedRoot = rewriteQueuedKeyedArrayStructuralMapHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayAppendIdentifier,\n keyedArrayMappedStructuralAppendIdentifier,\n keyedArrayStructuralAppendMapPipelineIdentifier,\n keyedArrayFilterIdentifier,\n keyedArraySliceIdentifier,\n keyedArrayMappedStructuralIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedQueuedStructuralMapHints = 0;\n let appliedQueuedStructuralAppendMapHints = 0;\n if (\n queuedStructuralMapHintedRoot.mapCount > 0 ||\n queuedStructuralMapHintedRoot.mappedStructuralAppendCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedStructuralMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedStructuralMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedStructuralMapHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedQueuedStructuralMapHints = queuedStructuralMapHintedRoot.mapCount;\n appliedQueuedStructuralAppendMapHints =\n queuedStructuralMapHintedRoot.structuralAppendMapCount +\n queuedStructuralMapHintedRoot.mappedStructuralAppendCount;\n appliedKeyedArrayReorderHints += queuedStructuralMapHintedRoot.mapCount;\n appliedReorderHintedStateIndices = new Set([\n ...appliedReorderHintedStateIndices,\n ...queuedStructuralMapHintedRoot.stateIndices,\n ]);\n compilerUsage.keyedArrayMapUpdateHints += queuedStructuralMapHintedRoot.mapCount;\n compilerUsage.keyedArrayMappedStructuralAppendHints +=\n queuedStructuralMapHintedRoot.mappedStructuralAppendCount;\n compilerUsage.keyedArrayStructuralAppendMapHints +=\n queuedStructuralMapHintedRoot.structuralAppendMapCount;\n }\n }\n const queuedStructuralPrependMapHintedRoot = rewriteQueuedKeyedArrayStructuralPrependMapHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayPrependIdentifier,\n keyedArrayMappedStructuralPrependIdentifier,\n keyedArrayStructuralPrependMapPipelineIdentifier,\n keyedArrayFilterIdentifier,\n keyedArraySliceIdentifier,\n keyedArrayMappedStructuralIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedQueuedStructuralPrependMapHints = 0;\n if (\n queuedStructuralPrependMapHintedRoot.structuralPrependMapCount > 0 ||\n queuedStructuralPrependMapHintedRoot.mappedStructuralPrependCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedStructuralPrependMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedStructuralPrependMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedStructuralPrependMapHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedQueuedStructuralPrependMapHints =\n queuedStructuralPrependMapHintedRoot.structuralPrependMapCount +\n queuedStructuralPrependMapHintedRoot.mappedStructuralPrependCount;\n compilerUsage.keyedArrayMappedStructuralPrependHints +=\n queuedStructuralPrependMapHintedRoot.mappedStructuralPrependCount;\n compilerUsage.keyedArrayStructuralPrependMapHints +=\n queuedStructuralPrependMapHintedRoot.structuralPrependMapCount;\n }\n }\n const queuedRollingWindowMapHintedRoot = rewriteQueuedKeyedArrayRollingWindowMapHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayRollingWindowMapPipelineIdentifier,\n keyedArrayMappedRollingWindowIdentifier,\n keyedArrayRollingWindowIdentifier,\n keyedArrayAppendIdentifier,\n keyedArrayMappedStructuralAppendIdentifier,\n keyedArrayStructuralAppendMapPipelineIdentifier,\n keyedArrayMappedStructuralIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedMappedRollingWindowHints = 0;\n let appliedMappedRollingWindowChainHints = 0;\n if (queuedRollingWindowMapHintedRoot.rollingWindowCount > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedRollingWindowMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedRollingWindowMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedRollingWindowMapHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedMappedRollingWindowHints =\n queuedRollingWindowMapHintedRoot.rollingWindowCount -\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n appliedMappedRollingWindowChainHints =\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n appliedQueuedStructuralAppendMapHints +=\n queuedRollingWindowMapHintedRoot.mappedRollingWindowCount +\n queuedRollingWindowMapHintedRoot.trailingMapCount;\n compilerUsage.keyedArrayMapUpdateHints +=\n queuedRollingWindowMapHintedRoot.leadingMapCount +\n queuedRollingWindowMapHintedRoot.trailingMapCount +\n queuedRollingWindowMapHintedRoot.chainedMapCount;\n compilerUsage.keyedArrayQueuedMapUpdateHints +=\n queuedRollingWindowMapHintedRoot.leadingMapCount;\n compilerUsage.keyedArrayStructuralAppendMapHints +=\n queuedRollingWindowMapHintedRoot.trailingMapCount;\n compilerUsage.keyedArrayMappedRollingWindowHints +=\n queuedRollingWindowMapHintedRoot.mappedRollingWindowCount +\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n compilerUsage.keyedArrayMappedRollingWindowChainHints +=\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n optimizationCounts.keyedArrayMappedRollingWindowChainHints +=\n queuedRollingWindowMapHintedRoot.chainedRollingWindowCount;\n compilerUsage.keyedArrayMappedStructuralHints +=\n queuedRollingWindowMapHintedRoot.mappedRollingWindowCount;\n compilerUsage.keyedArrayStructuralRollingWindowHints +=\n queuedRollingWindowMapHintedRoot.structuralRollingWindowCount;\n }\n }\n const queuedMapReorderHintedRoot = rewriteQueuedKeyedArrayMapReorderHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayReorderIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArrayStructuralSortIdentifier,\n allowKeyedArrayMapPipelines,\n );\n const queuedReorderMapHintedRoot = rewriteQueuedKeyedArrayReorderMapHints(\n queuedMapReorderHintedRoot.root,\n statesBySetter,\n keyedMapUpdateIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayReorderIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArrayStructuralSortIdentifier,\n allowKeyedArrayMapPipelines,\n );\n let appliedQueuedReorderMapHints = 0;\n const queuedMapCount = queuedMapReorderHintedRoot.mapCount + queuedReorderMapHintedRoot.mapCount;\n const queuedMapReorderCount =\n queuedMapReorderHintedRoot.mapReorderCount + queuedMapReorderHintedRoot.mapSortCount;\n if (queuedMapCount > 0 || queuedMapReorderCount > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedReorderMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedReorderMapHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedReorderMapHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n appliedQueuedReorderMapHints = queuedMapCount + queuedMapReorderCount;\n compilerUsage.keyedArrayMapUpdateHints += queuedMapCount;\n compilerUsage.keyedArrayQueuedMapUpdateHints += queuedMapCount;\n compilerUsage.keyedArrayMapReorderHints += queuedMapReorderHintedRoot.mapReorderCount;\n compilerUsage.keyedArrayMapSortHints += queuedMapReorderHintedRoot.mapSortCount;\n }\n }\n const queuedStructuralReorderHintedRoot = rewriteQueuedKeyedArrayStructuralReorderHints(\n expandedReactiveRoot,\n statesBySetter,\n keyedArrayFilterIdentifier,\n keyedArraySliceIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayMappedStructuralIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayReorderIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArrayStructuralSortIdentifier,\n allowKeyedArrayMapPipelines,\n );\n if (\n queuedStructuralReorderHintedRoot.reorderCount > 0 ||\n queuedStructuralReorderHintedRoot.sortCount > 0 ||\n queuedStructuralReorderHintedRoot.replacedQueuedMapCount > 0\n ) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n queuedStructuralReorderHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n queuedStructuralReorderHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = queuedStructuralReorderHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n compilerUsage.keyedArrayQueuedMapUpdateHints -=\n queuedStructuralReorderHintedRoot.replacedQueuedMapCount;\n compilerUsage.keyedArrayMapReorderHints -=\n queuedStructuralReorderHintedRoot.replacedMapReorderCount;\n compilerUsage.keyedArrayMapSortHints -=\n queuedStructuralReorderHintedRoot.replacedMapSortCount;\n compilerUsage.keyedArrayStructuralReorderHints +=\n queuedStructuralReorderHintedRoot.reorderCount;\n compilerUsage.keyedArrayStructuralSortHints += queuedStructuralReorderHintedRoot.sortCount;\n }\n }\n const keyedCollectionTargetKinds = new Map<number, KeyedCollectionTargetKind>();\n const conflictingKeyedCollectionTargets = new Set<number>();\n for (const plan of blockAnalysis.plans || []) {\n if (plan.kind !== \"keyed-rows\") continue;\n for (const binding of plan.bindings) {\n const target = binding.membershipTarget || binding.mapLookupTarget;\n if (!target) continue;\n const kind: KeyedCollectionTargetKind = binding.membershipTarget ? \"set\" : \"map\";\n const previousKind = keyedCollectionTargetKinds.get(target.dependency);\n if (previousKind && previousKind !== kind) {\n conflictingKeyedCollectionTargets.add(target.dependency);\n } else {\n keyedCollectionTargetKinds.set(target.dependency, kind);\n }\n }\n }\n for (const dependency of conflictingKeyedCollectionTargets) {\n keyedCollectionTargetKinds.delete(dependency);\n }\n const keyedCollectionHintedRoot = rewriteKeyedCollectionUpdateHints(\n expandedReactiveRoot,\n keyedCollectionTargetKinds,\n states,\n statesBySetter,\n keyedCollectionUpdateIdentifier,\n keyedCollectionMutationIdentifier,\n globalCollections,\n );\n if (keyedCollectionHintedRoot.count > 0) {\n const hintedBlockAnalysis = analyzeComposableBlocks(\n keyedCollectionHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n listNames,\n allowedComponentNames,\n );\n const hintedAnalysis = analyzeHostTree(\n keyedCollectionHintedRoot.root,\n reactiveByValue,\n safeGlobals,\n hintedBlockAnalysis.conditionalExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.keyedExpressions || new Set<t.Expression>(),\n hintedBlockAnalysis.ownedElements || new Set<t.JSXElement>(),\n hintedBlockAnalysis.componentElements || new Set<t.JSXElement>(),\n );\n if (!hintedBlockAnalysis.reason && !hintedAnalysis.reason) {\n expandedReactiveRoot = keyedCollectionHintedRoot.root;\n blockAnalysis = hintedBlockAnalysis;\n analysis = hintedAnalysis;\n optimizationCounts.keyedCollectionUpdateHints += keyedCollectionHintedRoot.count;\n }\n }\n const blockPlans = blockAnalysis.plans || [];\n optimizationCounts.keyedIdentityTargets += blockPlans.reduce(\n (count, plan) =>\n count +\n (plan.kind === \"keyed-rows\"\n ? plan.bindings.filter((binding) => binding.identityTarget !== undefined).length\n : 0),\n 0,\n );\n optimizationCounts.keyedMembershipTargets += blockPlans.reduce(\n (count, plan) =>\n count +\n (plan.kind === \"keyed-rows\"\n ? plan.bindings.filter((binding) => binding.membershipTarget !== undefined).length\n : 0),\n 0,\n );\n optimizationCounts.keyedMapLookupTargets += blockPlans.reduce(\n (count, plan) =>\n count +\n (plan.kind === \"keyed-rows\"\n ? plan.bindings.filter((binding) => binding.mapLookupTarget !== undefined).length\n : 0),\n 0,\n );\n const hasKeyedUpdateHints =\n appliedKeyedMapUpdateHints > 0 ||\n appliedKeyedArrayAppendHints > 0 ||\n appliedKeyedArrayFilterHints > 0 ||\n appliedKeyedArrayPrependHints > 0 ||\n appliedKeyedArrayPositionHints > 0 ||\n appliedKeyedArrayReorderHints > 0 ||\n appliedKeyedArraySortHints > 0 ||\n appliedKeyedArrayRollingWindowHints > 0 ||\n appliedKeyedArraySliceHints > 0;\n const hasKeyedArrayRemovalHints =\n appliedKeyedArrayFilterHints > 0 ||\n appliedKeyedArrayRollingWindowHints > 0 ||\n appliedKeyedArraySliceHints > 0;\n const runtimeFeatures = runtimeFeaturesForPlans(\n blockPlans,\n hasKeyedUpdateHints,\n hasKeyedArrayRemovalHints,\n (appliedKeyedArrayAppendHints > 0 &&\n (appliedKeyedArrayFilterHints > 0 || appliedKeyedArraySliceHints > 0)) ||\n compilerUsage.keyedArrayStructuralRollingWindowHints > 0,\n appliedQueuedStructuralAppendMapHints > 0,\n appliedKeyedArrayPrependHints > 0,\n appliedKeyedArrayPrependHints > 0 && hasKeyedArrayRemovalHints,\n appliedQueuedStructuralPrependMapHints > 0,\n appliedKeyedArrayPositionHints > 0,\n appliedKeyedArrayBatchInsertHints > 0,\n appliedKeyedArrayWindowReplaceHints > 0,\n appliedKeyedArrayReorderHints > 0 || appliedKeyedArraySortHints > 0,\n appliedPipelineMapHints > 0 ||\n appliedQueuedReorderMapHints > 0 ||\n appliedQueuedMappedStructuralHints > 0 ||\n appliedQueuedStructuralMapHints > 0,\n appliedMappedRollingWindowChainHints > 0,\n appliedKeyedArrayRollingWindowHints > appliedMappedRollingWindowHints,\n );\n markShortCircuitBindings(analysis.bindings || []);\n assignStableBindingTargets(analysis.bindings || []);\n\n const stateParameter = path.scope.generateUidIdentifier(\"farmState\");\n const blockParameter = path.scope.generateUidIdentifier(\"farmBlocks\");\n const definitionIdentifier = path.scope.generateUidIdentifier(`${name}Compiled`);\n const propsParameter = propsPlan.definitionParameter;\n const rootWithTargets = lowerStableBindingTargets(\n expandedReactiveRoot,\n analysis.bindings || [],\n blockParameter,\n blockAnalysis.ownedElements || new Set<t.JSXElement>(),\n );\n const appliedRemovalHintedStateIndices = new Set([\n ...appliedFilterHintedStateIndices,\n ...appliedRollingWindowHintedStateIndices,\n ...appliedSliceHintedStateIndices,\n ]);\n const rootWithBlocks = lowerComposableBlocks(\n rootWithTargets,\n blockPlans,\n blockParameter,\n listNames,\n hasKeyedUpdateHints,\n appliedRemovalHintedStateIndices,\n appliedPrependHintedStateIndices,\n appliedPositionHintedStateIndices,\n new Set([...appliedReorderHintedStateIndices, ...appliedSortHintedStateIndices]),\n );\n const rewrittenRoot = rewriteStateAccess(\n rootWithBlocks,\n stateParameter,\n reactiveByValue,\n statesBySetter,\n ) as t.JSXElement;\n const definition = t.callExpression(t.cloneNode(createComponentIdentifier), [\n t.objectExpression([\n t.objectProperty(t.identifier(\"displayName\"), t.stringLiteral(name)),\n t.objectProperty(t.identifier(\"reactivity\"), t.stringLiteral(reactivity)),\n t.spreadElement(\n t.conditionalExpression(\n t.memberExpression(\n t.metaProperty(t.identifier(\"import\"), t.identifier(\"meta\")),\n t.identifier(\"hot\"),\n ),\n t.objectExpression([\n t.objectProperty(t.identifier(\"hmrId\"), t.stringLiteral(`${moduleId}#${name}`)),\n t.objectProperty(\n t.identifier(\"stateSignature\"),\n t.stringLiteral(\n propBindings.length === 0\n ? String(states.length)\n : `${states.length}:${propBindings.map((binding) => binding.localName).join(\",\")}`,\n ),\n ),\n ]),\n t.objectExpression([]),\n ),\n ),\n t.objectProperty(\n t.identifier(\"initialize\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter)],\n t.arrayExpression(\n states.map((state) =>\n lazyInitialValue(\n state.initialValue\n ? rewriteDestructuredPropAccess(\n state.initialValue,\n propsPlan.destructuredNames,\n propsParameter,\n )\n : undefined,\n ),\n ),\n ),\n ),\n ),\n ...(propBindings.length > 0\n ? [\n t.objectProperty(\n t.identifier(\"readProps\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter)],\n t.arrayExpression(\n propBindings.map((binding) =>\n t.memberExpression(\n t.cloneNode(propsParameter),\n t.identifier(binding.localName),\n ),\n ),\n ),\n ),\n ),\n ]\n : []),\n t.objectProperty(\n t.identifier(\"render\"),\n t.arrowFunctionExpression(\n [t.cloneNode(propsParameter), t.cloneNode(stateParameter), t.cloneNode(blockParameter)],\n rewrittenRoot,\n ),\n ),\n t.objectProperty(\n t.identifier(\"bindings\"),\n t.arrayExpression(\n [\n ...(analysis.bindings || []),\n ...blockPlans.map((block) => ({\n kind: \"block\" as const,\n id: block.id,\n parent: block.parent,\n dependencies: block.dependencies,\n })),\n ].map((binding) =>\n bindingObject(binding, propsParameter, stateParameter, reactiveByValue, statesBySetter),\n ),\n ),\n ),\n ]),\n t.arrayExpression(\n runtimeFeatures.map((feature) => t.cloneNode(runtimeFeatureIdentifiers.get(feature)!)),\n ),\n ]);\n\n path\n .get(\"body\")\n .replaceWith(\n t.blockStatement([\n t.returnStatement(wrapperElement(definitionIdentifier, propsPlan.wrapperProps)),\n ]),\n );\n statementPath.insertAfter(\n t.variableDeclaration(\"const\", [t.variableDeclarator(definitionIdentifier, definition)]),\n );\n for (const feature of runtimeFeatures) usedRuntimeFeatures.add(feature);\n return undefined;\n}\n\nfunction collectCandidates(programPath: NodePath<t.Program>): Candidate[] {\n const candidates: Candidate[] = [];\n programPath.traverse({\n FunctionDeclaration(path) {\n if (!path.node.id || !isComponentName(path.node.id.name)) return;\n const parent = path.parentPath;\n if (\n !parent.isProgram() &&\n !parent.isExportNamedDeclaration() &&\n !parent.isExportDefaultDeclaration()\n ) {\n return;\n }\n candidates.push({\n name: path.node.id.name,\n path,\n statementPath: parent.isProgram() ? path : parent,\n });\n },\n VariableDeclarator(path) {\n if (\n !t.isIdentifier(path.node.id) ||\n !isComponentName(path.node.id.name) ||\n (!t.isFunctionExpression(path.node.init) && !t.isArrowFunctionExpression(path.node.init))\n ) {\n return;\n }\n const declaration = path.parentPath;\n const statement = declaration.parentPath;\n if (!statement) return;\n const topLevel = statement.isProgram()\n ? declaration\n : statement.isExportNamedDeclaration() && statement.parentPath.isProgram()\n ? statement\n : null;\n if (!topLevel) return;\n candidates.push({\n name: path.node.id.name,\n path: path.get(\"init\") as Candidate[\"path\"],\n statementPath: topLevel,\n });\n },\n });\n return candidates;\n}\n\nexport async function compileReactModule(\n code: string,\n id: string,\n options: NormalizedReactCompilerOptions,\n): Promise<CompileReactModuleResult> {\n const compiled: string[] = [];\n const diagnostics: CompilerDiagnostic[] = [];\n const optimizationCounts = {\n keyedArrayAppendHints: 0,\n keyedArrayFilterHints: 0,\n keyedArrayPrependHints: 0,\n keyedArrayPositionHints: 0,\n keyedArrayReorderHints: 0,\n keyedArraySortHints: 0,\n keyedArrayMappedRollingWindowChainHints: 0,\n keyedArrayRollingWindowHints: 0,\n keyedArraySliceHints: 0,\n keyedCollectionUpdateHints: 0,\n keyedIdentityTargets: 0,\n keyedMapLookupTargets: 0,\n keyedMembershipTargets: 0,\n keyedMapUpdateHints: 0,\n };\n const compilerUsage = {\n keyedArrayBatchInsertHints: 0,\n keyedArrayMapReorderHints: 0,\n keyedArrayMapSortHints: 0,\n keyedArrayMapUpdateHints: 0,\n keyedArrayMappedRollingWindowHints: 0,\n keyedArrayMappedRollingWindowChainHints: 0,\n keyedArrayMappedStructuralHints: 0,\n keyedArrayMappedStructuralAppendHints: 0,\n keyedArrayMappedStructuralPrependHints: 0,\n keyedArrayQueuedMapUpdateHints: 0,\n keyedArrayStructuralAppendMapHints: 0,\n keyedArrayStructuralRollingWindowHints: 0,\n keyedArrayStructuralPrependMapHints: 0,\n keyedArrayStructuralReorderHints: 0,\n keyedArrayStructuralSortHints: 0,\n keyedArrayWindowReplaceHints: 0,\n };\n const plugin = (): PluginObj => ({\n name: \"farm-react-aot\",\n visitor: {\n Program(programPath) {\n const moduleDirectives = new Set(directiveValues(programPath.node));\n const useStateNames = new Set<string>();\n const reactNames = new Set<string>();\n const listNames = new Set<string>();\n for (const statement of programPath.node.body) {\n if (!t.isImportDeclaration(statement)) continue;\n if (statement.source.value === \"@farm.js/react/list\") {\n for (const specifier of statement.specifiers) {\n if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: \"List\" })\n ) {\n listNames.add(specifier.local.name);\n }\n }\n continue;\n }\n if (statement.source.value !== \"react\") continue;\n for (const specifier of statement.specifiers) {\n if (t.isImportDefaultSpecifier(specifier) || t.isImportNamespaceSpecifier(specifier)) {\n reactNames.add(specifier.local.name);\n } else if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: \"useState\" })\n ) {\n useStateNames.add(specifier.local.name);\n }\n }\n }\n\n const candidates = collectCandidates(programPath);\n const createComponentIdentifier =\n programPath.scope.generateUidIdentifier(\"createCompiledComponent\");\n const keyedMapUpdateIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedMapUpdate\",\n );\n const keyedArrayAppendIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayAppend\",\n );\n const keyedArrayFilterIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayFilter\",\n );\n const keyedArrayMapPipelineIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMapPipeline\",\n );\n const keyedArrayMappedStructuralAppendIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMappedStructuralAppend\",\n );\n const keyedArrayStructuralAppendMapPipelineIdentifier =\n programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayStructuralAppendMapPipeline\",\n );\n const keyedArrayMappedStructuralPrependIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMappedStructuralPrepend\",\n );\n const keyedArrayStructuralPrependMapPipelineIdentifier =\n programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayStructuralPrependMapPipeline\",\n );\n const keyedArrayQueuedMapPipelineIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayQueuedMapPipeline\",\n );\n const keyedArrayRollingWindowMapPipelineIdentifier =\n programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayRollingWindowMapPipeline\",\n );\n const keyedArrayMappedRollingWindowIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMappedRollingWindow\",\n );\n const keyedArrayMapReorderIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayMapReorder\",\n );\n const keyedArrayMappedStructuralIdentifier = programPath.scope.generateUidIdentifier(\n \"finalizeCompilerKeyedArrayMappedStructuralUpdate\",\n );\n const keyedArrayPrependIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayPrepend\",\n );\n const keyedArrayPositionIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayPositionUpdate\",\n );\n const keyedArrayBatchInsertIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayBatchInsert\",\n );\n const keyedArrayWindowReplaceIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayWindowReplace\",\n );\n const keyedArrayReorderIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayReorder\",\n );\n const keyedArrayStructuralReorderIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayStructuralReorder\",\n );\n const keyedArraySortIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArraySort\",\n );\n const keyedArrayStructuralSortIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayStructuralSort\",\n );\n const keyedArrayRollingWindowIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArrayRollingWindow\",\n );\n const keyedArraySliceIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedArraySlice\",\n );\n const keyedCollectionUpdateIdentifier = programPath.scope.generateUidIdentifier(\n \"createCompilerKeyedCollectionUpdate\",\n );\n const keyedCollectionMutationIdentifier = programPath.scope.generateUidIdentifier(\n \"applyCompilerKeyedCollectionMutation\",\n );\n const runtimeFeatureIdentifiers = new Map<CompilerRuntimeFeatureName, t.Identifier>(\n Object.entries(COMPILER_RUNTIME_FEATURE_EXPORTS).map(([feature, exportName]) => [\n feature as CompilerRuntimeFeatureName,\n programPath.scope.generateUidIdentifier(exportName),\n ]),\n );\n const usedRuntimeFeatures = new Set<CompilerRuntimeFeatureName>();\n for (const candidate of candidates) {\n const functionDirectives = new Set(\n t.isBlockStatement(candidate.path.node.body)\n ? directiveValues(candidate.path.node.body)\n : [],\n );\n const explicitlySelected =\n moduleDirectives.has(options.directive) || functionDirectives.has(options.directive);\n if (functionDirectives.has(\"use no compiler\")) continue;\n if (options.mode === \"annotation\" && !explicitlySelected) continue;\n\n const reason = compileCandidate(\n candidate,\n createComponentIdentifier,\n keyedMapUpdateIdentifier,\n keyedArrayAppendIdentifier,\n keyedArrayFilterIdentifier,\n keyedArrayMapPipelineIdentifier,\n keyedArrayMappedStructuralAppendIdentifier,\n keyedArrayStructuralAppendMapPipelineIdentifier,\n keyedArrayMappedStructuralPrependIdentifier,\n keyedArrayStructuralPrependMapPipelineIdentifier,\n keyedArrayQueuedMapPipelineIdentifier,\n keyedArrayRollingWindowMapPipelineIdentifier,\n keyedArrayMappedRollingWindowIdentifier,\n keyedArrayMapReorderIdentifier,\n keyedArrayMappedStructuralIdentifier,\n keyedArrayPrependIdentifier,\n keyedArrayPositionIdentifier,\n keyedArrayBatchInsertIdentifier,\n keyedArrayWindowReplaceIdentifier,\n keyedArrayReorderIdentifier,\n keyedArrayStructuralReorderIdentifier,\n keyedArraySortIdentifier,\n keyedArrayStructuralSortIdentifier,\n keyedArrayRollingWindowIdentifier,\n keyedArraySliceIdentifier,\n keyedCollectionUpdateIdentifier,\n keyedCollectionMutationIdentifier,\n runtimeFeatureIdentifiers,\n usedRuntimeFeatures,\n optimizationCounts,\n compilerUsage,\n useStateNames,\n reactNames,\n listNames,\n id,\n options.reactivity,\n );\n if (reason) {\n diagnostics.push({\n component: candidate.name,\n reason,\n selected: explicitlySelected,\n });\n } else {\n compiled.push(candidate.name);\n }\n }\n\n const hasEagerKeyedArrayMapUpdateHints =\n compilerUsage.keyedArrayMapUpdateHints >\n compilerUsage.keyedArrayQueuedMapUpdateHints +\n compilerUsage.keyedArrayStructuralAppendMapHints +\n compilerUsage.keyedArrayStructuralPrependMapHints;\n const hasKeyedArrayMapReorderHints =\n compilerUsage.keyedArrayMapReorderHints + compilerUsage.keyedArrayMapSortHints > 0;\n const hasKeyedArrayStructuralAppendHints =\n (optimizationCounts.keyedArrayAppendHints > 0 &&\n (optimizationCounts.keyedArrayFilterHints > 0 ||\n optimizationCounts.keyedArraySliceHints > 0)) ||\n compilerUsage.keyedArrayStructuralRollingWindowHints > 0;\n const hasUnmappedKeyedArrayAppendHints =\n optimizationCounts.keyedArrayAppendHints >\n compilerUsage.keyedArrayMappedStructuralAppendHints;\n const hasKeyedArrayStructuralPrependHints =\n optimizationCounts.keyedArrayPrependHints > 0 &&\n (optimizationCounts.keyedArrayFilterHints > 0 ||\n optimizationCounts.keyedArraySliceHints > 0);\n const hasUnmappedKeyedArrayPrependHints =\n optimizationCounts.keyedArrayPrependHints >\n compilerUsage.keyedArrayMappedStructuralPrependHints;\n if (compiled.length > 0) {\n programPath.unshiftContainer(\n \"body\",\n t.importDeclaration(\n [\n t.importSpecifier(\n createComponentIdentifier,\n t.identifier(\"createCompiledComponentWithFeatures\"),\n ),\n ...(optimizationCounts.keyedMapUpdateHints > compilerUsage.keyedArrayMapUpdateHints\n ? [\n t.importSpecifier(\n keyedMapUpdateIdentifier,\n t.identifier(\"createCompilerKeyedMapUpdate\"),\n ),\n ]\n : []),\n ...(hasEagerKeyedArrayMapUpdateHints\n ? [\n t.importSpecifier(\n keyedArrayMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayMapPipeline\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayStructuralAppendMapHints > 0\n ? [\n t.importSpecifier(\n keyedArrayStructuralAppendMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayStructuralAppendMapPipeline\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayStructuralPrependMapHints > 0\n ? [\n t.importSpecifier(\n keyedArrayStructuralPrependMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayStructuralPrependMapPipeline\"),\n ),\n ]\n : []),\n ...(hasKeyedArrayMapReorderHints\n ? [\n t.importSpecifier(\n keyedArrayMapReorderIdentifier,\n t.identifier(\"createCompilerKeyedArrayMapReorder\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedStructuralHints > 0\n ? [\n t.importSpecifier(\n keyedArrayMappedStructuralIdentifier,\n t.identifier(\"finalizeCompilerKeyedArrayMappedStructuralUpdate\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedStructuralAppendHints > 0 ||\n compilerUsage.keyedArrayMappedRollingWindowHints >\n compilerUsage.keyedArrayMappedRollingWindowChainHints\n ? [\n t.importSpecifier(\n keyedArrayMappedStructuralAppendIdentifier,\n t.identifier(\"createCompilerKeyedArrayMappedStructuralAppend\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedStructuralPrependHints > 0\n ? [\n t.importSpecifier(\n keyedArrayMappedStructuralPrependIdentifier,\n t.identifier(\"createCompilerKeyedArrayMappedStructuralPrepend\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayQueuedMapUpdateHints > 0\n ? [\n t.importSpecifier(\n keyedArrayQueuedMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayQueuedMapPipeline\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedRollingWindowChainHints > 0\n ? [\n t.importSpecifier(\n keyedArrayRollingWindowMapPipelineIdentifier,\n t.identifier(\"createCompilerKeyedArrayRollingWindowMapPipeline\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayMappedRollingWindowChainHints > 0\n ? [\n t.importSpecifier(\n keyedArrayMappedRollingWindowIdentifier,\n t.identifier(\"createCompilerKeyedArrayMappedRollingWindow\"),\n ),\n ]\n : []),\n ...(hasUnmappedKeyedArrayAppendHints ||\n compilerUsage.keyedArrayStructuralRollingWindowHints > 0\n ? [\n t.importSpecifier(\n keyedArrayAppendIdentifier,\n t.identifier(\n hasKeyedArrayStructuralAppendHints\n ? \"createCompilerKeyedArrayStructuralAppend\"\n : \"createCompilerKeyedArrayAppend\",\n ),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArrayFilterHints > 0\n ? [\n t.importSpecifier(\n keyedArrayFilterIdentifier,\n t.identifier(\"createCompilerKeyedArrayFilter\"),\n ),\n ]\n : []),\n ...(hasUnmappedKeyedArrayPrependHints\n ? [\n t.importSpecifier(\n keyedArrayPrependIdentifier,\n t.identifier(\n hasKeyedArrayStructuralPrependHints\n ? \"createCompilerKeyedArrayStructuralPrepend\"\n : \"createCompilerKeyedArrayPrepend\",\n ),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArrayPositionHints >\n compilerUsage.keyedArrayBatchInsertHints +\n compilerUsage.keyedArrayWindowReplaceHints\n ? [\n t.importSpecifier(\n keyedArrayPositionIdentifier,\n t.identifier(\"createCompilerKeyedArrayPositionUpdate\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayBatchInsertHints > 0\n ? [\n t.importSpecifier(\n keyedArrayBatchInsertIdentifier,\n t.identifier(\"createCompilerKeyedArrayBatchInsert\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayWindowReplaceHints > 0\n ? [\n t.importSpecifier(\n keyedArrayWindowReplaceIdentifier,\n t.identifier(\"createCompilerKeyedArrayWindowReplace\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArrayReorderHints >\n compilerUsage.keyedArrayStructuralReorderHints +\n compilerUsage.keyedArrayMapReorderHints\n ? [\n t.importSpecifier(\n keyedArrayReorderIdentifier,\n t.identifier(\"createCompilerKeyedArrayReorder\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayStructuralReorderHints > 0\n ? [\n t.importSpecifier(\n keyedArrayStructuralReorderIdentifier,\n t.identifier(\"createCompilerKeyedArrayStructuralReorder\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArraySortHints >\n compilerUsage.keyedArrayStructuralSortHints + compilerUsage.keyedArrayMapSortHints\n ? [\n t.importSpecifier(\n keyedArraySortIdentifier,\n t.identifier(\"createCompilerKeyedArraySort\"),\n ),\n ]\n : []),\n ...(compilerUsage.keyedArrayStructuralSortHints > 0\n ? [\n t.importSpecifier(\n keyedArrayStructuralSortIdentifier,\n t.identifier(\"createCompilerKeyedArrayStructuralSort\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArrayRollingWindowHints >\n compilerUsage.keyedArrayMappedRollingWindowHints +\n compilerUsage.keyedArrayStructuralRollingWindowHints\n ? [\n t.importSpecifier(\n keyedArrayRollingWindowIdentifier,\n t.identifier(\"createCompilerKeyedArrayRollingWindow\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedArraySliceHints > 0 ||\n optimizationCounts.keyedArrayRollingWindowHints > 0\n ? [\n t.importSpecifier(\n keyedArraySliceIdentifier,\n t.identifier(\"createCompilerKeyedArraySlice\"),\n ),\n ]\n : []),\n ...(optimizationCounts.keyedCollectionUpdateHints > 0\n ? [\n t.importSpecifier(\n keyedCollectionUpdateIdentifier,\n t.identifier(\"createCompilerKeyedCollectionUpdate\"),\n ),\n t.importSpecifier(\n keyedCollectionMutationIdentifier,\n t.identifier(\"applyCompilerKeyedCollectionMutation\"),\n ),\n ]\n : []),\n ...[...usedRuntimeFeatures]\n .sort()\n .map((feature) =>\n t.importSpecifier(\n t.cloneNode(runtimeFeatureIdentifiers.get(feature)!),\n t.identifier(COMPILER_RUNTIME_FEATURE_EXPORTS[feature]),\n ),\n ),\n ],\n t.stringLiteral(\"@farm.js/react/compiler-runtime\"),\n ),\n );\n }\n },\n },\n });\n\n const result = await transformAsync(code, {\n filename: id,\n sourceType: \"module\",\n ast: false,\n code: true,\n sourceMaps: true,\n sourceFileName: id,\n configFile: false,\n babelrc: false,\n parserOpts: {\n plugins: [\"jsx\", \"typescript\"],\n },\n generatorOpts: {\n comments: true,\n compact: false,\n },\n plugins: [plugin],\n });\n\n return {\n code: result?.code || code,\n map: result?.map || null,\n compiled,\n diagnostics,\n optimizations: optimizationCounts,\n };\n}\n","import { lstat, mkdir, realpath, writeFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, relative, resolve, sep } from \"node:path\";\nimport type { CompileReactModuleResult, CompilerDiagnostic } from \"./compiler\";\n\nexport interface ReactCompilerModuleObservation {\n id: string;\n result: Pick<CompileReactModuleResult, \"compiled\" | \"diagnostics\" | \"optimizations\">;\n}\n\nexport interface ReactCompilerReportFallback extends CompilerDiagnostic {\n module: string;\n}\n\nexport interface ReactCompilerReport {\n version: 1;\n summary: {\n modules: number;\n componentsConsidered: number;\n compiled: number;\n fallback: number;\n keyedArrayAppendHints: number;\n keyedArrayFilterHints: number;\n keyedArrayPrependHints: number;\n keyedArrayPositionHints: number;\n keyedArrayReorderHints: number;\n keyedArraySortHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayRollingWindowHints: number;\n keyedArraySliceHints: number;\n keyedCollectionUpdateHints: number;\n keyedIdentityTargets: number;\n keyedMapLookupTargets: number;\n keyedMembershipTargets: number;\n keyedMapUpdateHints: number;\n };\n fallbackReasons: Array<{\n count: number;\n reason: string;\n }>;\n modules: Array<{\n id: string;\n compiled: readonly string[];\n optimizations: {\n keyedArrayAppendHints: number;\n keyedArrayFilterHints: number;\n keyedArrayPrependHints: number;\n keyedArrayPositionHints: number;\n keyedArrayReorderHints: number;\n keyedArraySortHints: number;\n keyedArrayMappedRollingWindowChainHints: number;\n keyedArrayRollingWindowHints: number;\n keyedArraySliceHints: number;\n keyedCollectionUpdateHints: number;\n keyedIdentityTargets: number;\n keyedMapLookupTargets: number;\n keyedMembershipTargets: number;\n keyedMapUpdateHints: number;\n };\n fallbacks: ReactCompilerReportFallback[];\n }>;\n}\n\nfunction projectRelativeId(projectRoot: string, id: string): string {\n return relative(projectRoot, id).replace(/\\\\/g, \"/\");\n}\n\nexport function createReactCompilerReport(\n projectRoot: string,\n observations: Iterable<ReactCompilerModuleObservation>,\n): ReactCompilerReport {\n const reasonCounts = new Map<string, number>();\n let componentsConsidered = 0;\n let compiled = 0;\n let fallback = 0;\n let keyedArrayAppendHints = 0;\n let keyedArrayFilterHints = 0;\n let keyedArrayPrependHints = 0;\n let keyedArrayPositionHints = 0;\n let keyedArrayReorderHints = 0;\n let keyedArraySortHints = 0;\n let keyedArrayMappedRollingWindowChainHints = 0;\n let keyedArrayRollingWindowHints = 0;\n let keyedArraySliceHints = 0;\n let keyedCollectionUpdateHints = 0;\n let keyedIdentityTargets = 0;\n let keyedMapLookupTargets = 0;\n let keyedMembershipTargets = 0;\n let keyedMapUpdateHints = 0;\n\n const modules = [...observations]\n .map(({ id, result }) => {\n componentsConsidered += result.compiled.length + result.diagnostics.length;\n compiled += result.compiled.length;\n fallback += result.diagnostics.length;\n keyedArrayAppendHints += result.optimizations.keyedArrayAppendHints || 0;\n keyedArrayFilterHints += result.optimizations.keyedArrayFilterHints || 0;\n keyedArrayPrependHints += result.optimizations.keyedArrayPrependHints || 0;\n keyedArrayPositionHints += result.optimizations.keyedArrayPositionHints || 0;\n keyedArrayReorderHints += result.optimizations.keyedArrayReorderHints || 0;\n keyedArraySortHints += result.optimizations.keyedArraySortHints || 0;\n keyedArrayMappedRollingWindowChainHints +=\n result.optimizations.keyedArrayMappedRollingWindowChainHints || 0;\n keyedArrayRollingWindowHints += result.optimizations.keyedArrayRollingWindowHints || 0;\n keyedArraySliceHints += result.optimizations.keyedArraySliceHints || 0;\n keyedCollectionUpdateHints += result.optimizations.keyedCollectionUpdateHints || 0;\n keyedIdentityTargets += result.optimizations.keyedIdentityTargets || 0;\n keyedMapLookupTargets += result.optimizations.keyedMapLookupTargets || 0;\n keyedMembershipTargets += result.optimizations.keyedMembershipTargets || 0;\n keyedMapUpdateHints += result.optimizations.keyedMapUpdateHints;\n const moduleId = projectRelativeId(projectRoot, id);\n const fallbacks = result.diagnostics.map((diagnostic) => {\n reasonCounts.set(diagnostic.reason, (reasonCounts.get(diagnostic.reason) || 0) + 1);\n return { module: moduleId, ...diagnostic };\n });\n return {\n id: moduleId,\n compiled: [...result.compiled].sort(),\n optimizations: result.optimizations,\n fallbacks,\n };\n })\n .sort((left, right) => left.id.localeCompare(right.id));\n\n const fallbackReasons = [...reasonCounts]\n .map(([reason, count]) => ({ count, reason }))\n .sort((left, right) => right.count - left.count || left.reason.localeCompare(right.reason));\n\n return {\n version: 1,\n summary: {\n modules: modules.length,\n componentsConsidered,\n compiled,\n fallback,\n keyedArrayAppendHints,\n keyedArrayFilterHints,\n keyedArrayPrependHints,\n keyedArrayPositionHints,\n keyedArrayReorderHints,\n keyedArraySortHints,\n keyedArrayMappedRollingWindowChainHints,\n keyedArrayRollingWindowHints,\n keyedArraySliceHints,\n keyedCollectionUpdateHints,\n keyedIdentityTargets,\n keyedMapLookupTargets,\n keyedMembershipTargets,\n keyedMapUpdateHints,\n },\n fallbackReasons,\n modules,\n };\n}\n\nexport async function writeReactCompilerReport(\n projectRoot: string,\n reportFile: string,\n observations: Iterable<ReactCompilerModuleObservation>,\n): Promise<string> {\n const outputPath = resolve(projectRoot, reportFile);\n await assertReportPathInsideProject(projectRoot, outputPath);\n const report = createReactCompilerReport(projectRoot, observations);\n await mkdir(dirname(outputPath), { recursive: true });\n await writeFile(outputPath, `${JSON.stringify(report, null, 2)}\\n`, \"utf8\");\n return outputPath;\n}\n\nasync function assertReportPathInsideProject(\n projectRoot: string,\n outputPath: string,\n): Promise<void> {\n const realProjectRoot = await realpath(projectRoot);\n let existingAncestor = outputPath;\n\n while (true) {\n try {\n existingAncestor = await realpath(existingAncestor);\n break;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n let existingEntry = false;\n try {\n await lstat(existingAncestor);\n existingEntry = true;\n } catch (statError) {\n if ((statError as NodeJS.ErrnoException).code !== \"ENOENT\") throw statError;\n }\n if (existingEntry) {\n throw new Error(\n \"The React compiler report file must stay inside the project root, including through symlinks.\",\n );\n }\n const parent = dirname(existingAncestor);\n if (parent === existingAncestor) throw error;\n existingAncestor = parent;\n }\n }\n\n const relativePath = relative(realProjectRoot, existingAncestor);\n if (relativePath === \"..\" || relativePath.startsWith(`..${sep}`) || isAbsolute(relativePath)) {\n throw new Error(\n \"The React compiler report file must stay inside the project root, including through symlinks.\",\n );\n }\n}\n","import type { FarmRenderer } from \"@farm.js/core/renderer\";\n\nexport type ReactCompilerMode = \"infer\" | \"annotation\";\nexport type ReactCompilerReactivity = \"static\" | \"hybrid\";\nexport type UnsupportedCompilerBehavior = \"fallback\" | \"warn\" | \"error\";\n\nexport interface ReactCompilerOptions {\n /** Compile every component that the safe subset can prove eligible. */\n mode?: ReactCompilerMode;\n /** Function or module directive used only by annotation mode. */\n directive?: string;\n /** What to do when a selected component is outside the safe subset. */\n onUnsupported?: UnsupportedCompilerBehavior;\n /**\n * How compiled bindings subscribe to state. `hybrid` keeps compiler-proven\n * dependencies and narrows short-circuited reads at runtime.\n */\n reactivity?: ReactCompilerReactivity;\n /** Write a machine-readable compiler coverage report after a production build. */\n report?: boolean;\n /** Project-relative report location. Providing it also enables reporting. */\n reportFile?: string;\n}\n\nexport interface ReactRendererOptions {\n experimental?: {\n /** `true` enables automatic inference; an object customizes selection. */\n compiler?: boolean | ReactCompilerOptions;\n };\n}\n\nexport interface NormalizedReactCompilerOptions {\n mode: ReactCompilerMode;\n directive: string;\n onUnsupported: UnsupportedCompilerBehavior;\n reactivity: ReactCompilerReactivity;\n report: boolean;\n reportFile: string;\n}\n\nexport const DEFAULT_COMPILER_DIRECTIVE = \"use compiler\";\nexport const DEFAULT_COMPILER_REPORT_FILE = \".farm/react-compiler.json\";\n\nfunction normalizeCompilerReportFile(value: unknown): string {\n if (value === undefined) return DEFAULT_COMPILER_REPORT_FILE;\n if (typeof value !== \"string\" || !value.trim()) {\n throw new TypeError(\"The React compiler report file must be a non-empty relative path.\");\n }\n const normalized = value.trim().replace(/\\\\/g, \"/\");\n if (\n normalized.startsWith(\"/\") ||\n /^[A-Za-z]:\\//.test(normalized) ||\n normalized.split(\"/\").includes(\"..\")\n ) {\n throw new TypeError(\"The React compiler report file must stay inside the project root.\");\n }\n return normalized;\n}\n\nexport function normalizeReactCompilerOptions(\n value: true | ReactCompilerOptions,\n): NormalizedReactCompilerOptions {\n const options = value === true ? {} : value;\n const mode = options.mode || \"infer\";\n\n if (mode !== \"infer\" && mode !== \"annotation\") {\n throw new TypeError(`Unknown React compiler mode: ${String(mode)}`);\n }\n\n if (options.directive !== undefined && mode !== \"annotation\") {\n throw new TypeError(\"The React compiler directive can only be configured in annotation mode.\");\n }\n\n const directive = options.directive?.trim() || DEFAULT_COMPILER_DIRECTIVE;\n const onUnsupported = options.onUnsupported || \"fallback\";\n if (!([\"fallback\", \"warn\", \"error\"] as const).includes(onUnsupported)) {\n throw new TypeError(`Unknown unsupported-component behavior: ${String(onUnsupported)}`);\n }\n\n const reactivity = options.reactivity || \"hybrid\";\n if (reactivity !== \"static\" && reactivity !== \"hybrid\") {\n throw new TypeError(`Unknown React compiler reactivity mode: ${String(reactivity)}`);\n }\n\n if (options.report !== undefined && typeof options.report !== \"boolean\") {\n throw new TypeError(\"The React compiler report option must be a boolean.\");\n }\n if (options.report === false && options.reportFile !== undefined) {\n throw new TypeError(\n \"A React compiler report file cannot be configured when reporting is false.\",\n );\n }\n const reportFile = normalizeCompilerReportFile(options.reportFile);\n const report = options.report === true || options.reportFile !== undefined;\n\n return { mode, directive, onUnsupported, reactivity, report, reportFile };\n}\n\nconst REACT_RENDERER: Readonly<FarmRenderer> = Object.freeze({\n name: \"react\",\n vite: \"@farm.js/react/vite\",\n server: \"@farm.js/react/server\",\n client: \"@farm.js/react/client\",\n jsxImportSource: \"react\",\n dedupe: [\"react\", \"react-dom\", \"react/jsx-runtime\", \"react/jsx-dev-runtime\"],\n optimizeDeps: [\n \"react\",\n \"react-dom\",\n \"react-dom/client\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"@farm.js/react/compiler-runtime\",\n ],\n capabilities: {\n reconcilesRerenders: true,\n streaming: {\n node: true,\n web: false,\n runtimes: { edge: { node: false, web: true } },\n },\n functionComponents: true,\n },\n});\n\n/** Select React and optionally enable Farm's experimental AOT compiler. */\nexport function react(options: ReactRendererOptions = {}): FarmRenderer {\n const compiler = options.experimental?.compiler;\n const normalizedCompiler = compiler ? normalizeReactCompilerOptions(compiler) : false;\n\n return {\n ...REACT_RENDERER,\n dedupe: [...(REACT_RENDERER.dedupe || [])],\n optimizeDeps: [...(REACT_RENDERER.optimizeDeps || [])],\n capabilities: {\n reconcilesRerenders: true,\n streaming: {\n ...REACT_RENDERER.capabilities?.streaming,\n runtimes: {\n edge: { ...REACT_RENDERER.capabilities?.streaming?.runtimes?.edge },\n },\n },\n functionComponents: true,\n },\n options: {\n experimental: { compiler: normalizedCompiler },\n },\n };\n}\n\nexport { REACT_RENDERER };\nexport type { FarmRenderer } from \"@farm.js/core/renderer\";\n","import { normalizePath, type Plugin } from \"vite\";\nimport { compileReactModule } from \"./compiler\";\nimport { writeReactCompilerReport, type ReactCompilerModuleObservation } from \"./compiler-report\";\nimport { normalizeReactCompilerOptions, type NormalizedReactCompilerOptions } from \"./index\";\n\ninterface RendererPluginOptions {\n ssr?: boolean;\n rendererOptions?: Readonly<Record<string, unknown>>;\n}\n\nfunction readCompilerOptions(\n rendererOptions: Readonly<Record<string, unknown>> | undefined,\n): NormalizedReactCompilerOptions | false {\n const experimental = rendererOptions?.experimental;\n if (!experimental || typeof experimental !== \"object\") return false;\n const compiler = (experimental as { compiler?: unknown }).compiler;\n if (!compiler) return false;\n if (compiler === true) return normalizeReactCompilerOptions(true);\n if (typeof compiler !== \"object\") {\n throw new TypeError(\n \"React experimental.compiler must be a boolean or compiler options object.\",\n );\n }\n const normalized = compiler as Partial<NormalizedReactCompilerOptions>;\n if (\n (normalized.mode === \"infer\" || normalized.mode === \"annotation\") &&\n typeof normalized.directive === \"string\" &&\n (normalized.reactivity === \"static\" || normalized.reactivity === \"hybrid\") &&\n (normalized.onUnsupported === \"fallback\" ||\n normalized.onUnsupported === \"warn\" ||\n normalized.onUnsupported === \"error\")\n ) {\n return normalized as NormalizedReactCompilerOptions;\n }\n return normalizeReactCompilerOptions(compiler as NormalizedReactCompilerOptions);\n}\n\nexport function createFarmRendererPlugin(options: RendererPluginOptions = {}): Plugin[] {\n const compilerOptions = readCompilerOptions(options.rendererOptions);\n if (!compilerOptions) return [];\n\n let projectRoot = \"\";\n const reportEnabled = compilerOptions.report && options.ssr !== true;\n const reportObservations = new Map<string, ReactCompilerModuleObservation>();\n\n return [\n {\n name: \"farm:react-aot-compiler\",\n enforce: \"pre\",\n configResolved(config) {\n projectRoot = normalizePath(config.root).replace(/\\/$/, \"\");\n },\n buildStart() {\n reportObservations.clear();\n },\n async transform(code, id) {\n const cleanId = normalizePath(id.split(\"?\", 1)[0]);\n if (\n !/\\.[jt]sx$/.test(cleanId) ||\n cleanId.includes(\"/node_modules/\") ||\n (projectRoot && !cleanId.startsWith(`${projectRoot}/`))\n )\n return null;\n\n const result = await compileReactModule(code, cleanId, compilerOptions);\n if (reportEnabled) {\n if (result.compiled.length > 0 || result.diagnostics.length > 0) {\n reportObservations.set(cleanId, { id: cleanId, result });\n } else {\n reportObservations.delete(cleanId);\n }\n }\n for (const diagnostic of result.diagnostics) {\n const message = `[react-compiler] ${diagnostic.component}: ${diagnostic.reason}; using React.`;\n if (compilerOptions.onUnsupported === \"error\") this.error(message);\n if (compilerOptions.onUnsupported === \"warn\" || diagnostic.selected) this.warn(message);\n }\n if (result.compiled.length === 0) return null;\n return { code: result.code, map: result.map as any };\n },\n async buildEnd(error) {\n if (error || !reportEnabled || !projectRoot) return;\n await writeReactCompilerReport(\n projectRoot,\n compilerOptions.reportFile,\n reportObservations.values(),\n );\n },\n },\n ];\n}\n"]}
|