{"version":3,"sources":["jsdelivr-header.js","/npm/preact@10.29.7/src/constants.js","/npm/preact@10.29.7/src/util.js","/npm/preact@10.29.7/src/options.js","/npm/preact@10.29.7/src/create-element.js","/npm/preact@10.29.7/src/component.js","/npm/preact@10.29.7/src/diff/props.js","/npm/preact@10.29.7/src/create-context.js","/npm/preact@10.29.7/src/diff/children.js","/npm/preact@10.29.7/src/diff/index.js","/npm/preact@10.29.7/src/render.js","/npm/preact@10.29.7/src/clone-element.js","/npm/preact@10.29.7/src/diff/catch-error.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACLO,IC0BM,EChBP,ECPF,EA2FS,ECiFT,EAWA,GAEE,GA0BA,GC7MF,EACH,EACA,EAcK,GAaF,EA+IE,EACA,ECpLK,GNeE,EAAgC,CAAA,EAChC,EAAY,CAAA,EACZ,GACZ,oECnBY,EAAU,MAAM,QAStB,SAAS,EAAO,EAAK,EAAA,CAE3B,QAAS,KAAK,EAAO,EAAI,CAAA,EAAK,EAAM,CAAA,EACpC,OAA6B,CAC9B,CAQgB,SAAA,EAAW,EAAA,CACtB,GAAQ,EAAK,YAAY,EAAK,WAAW,YAAY,CAAA,CAC1D,CEVgB,SAAA,EAAc,EAAM,EAAO,EAAA,CAC1C,IACC,EACA,EACA,EAHG,EAAkB,CAAA,EAItB,IAAK,KAAK,EACL,GAAK,MAAO,EAAM,EAAM,CAAA,EACnB,GAAK,MAAO,EAAM,EAAM,CAAA,EAC5B,EAAgB,CAAA,EAAK,EAAM,CAAA,EAUjC,GAPI,UAAU,OAAS,IACtB,EAAgB,SACf,UAAU,OAAS,EAAI,EAAM,KAAK,UAAW,CAAA,EAAK,GAKjC,OAAR,GAAQ,YAAc,EAAK,cHjBnB,KGkBlB,IAAK,KAAK,EAAK,aACV,EAAgB,CAAA,IADN,SAEb,EAAgB,CAAA,EAAK,EAAK,aAAa,CAAA,GAK1C,OAAO,EAAY,EAAM,EAAiB,EAAK,EHzB5B,IAAA,CG0BpB,CAcgB,SAAA,EAAY,EAAM,EAAO,EAAK,EAAK,EAAA,CAIlD,IAAM,EAAQ,CACb,KAAA,EACA,MAAA,EACA,IAAA,EACA,IAAA,EACA,IHjDkB,KGkDlB,GHlDkB,KGmDlB,IAAQ,EACR,IHpDkB,KGqDlB,IHrDkB,KGsDlB,YAAA,OACA,IAAW,GAAA,EAAqB,EAChC,IAAA,GACA,IAAQ,CAAA,EAMT,OAFI,GH7De,MG6DK,EAAQ,OH7Db,MG6D4B,EAAQ,MAAM,CAAA,EAEtD,CACR,CAAA,SAEgB,IAAA,CACf,MAAO,CAAE,QHnEU,IAAA,CGoEpB,CAEgB,SAAA,EAAS,EAAA,CACxB,OAAO,EAAM,QACd,CC3EO,SAAS,EAAc,EAAO,EAAA,CACpC,KAAK,MAAQ,EACb,KAAK,QAAU,CAChB,CA0EgB,SAAA,EAAc,EAAO,EAAA,CACpC,GAAI,GJ3Ee,KI6ElB,OAAO,EAAK,GACT,EAAc,EAAK,GAAU,EAAK,IAAU,CAAA,EJ9E7B,KImFnB,QADI,EACG,EAAa,EAAK,IAAW,OAAQ,IAG3C,IAFA,EAAU,EAAK,IAAW,CAAA,IJpFR,MIsFK,EAAO,KJtFZ,KI0FjB,OAAO,EAAO,IAShB,OAA4B,OAAd,EAAM,MAAQ,WAAa,EAAc,CAAA,EJnGpC,IIoGpB,CAMA,SAAS,GAAgB,EAAA,CACxB,GAAI,EAAS,KAAe,EAAS,IAAS,CAC7C,IAAI,EAAW,EAAS,IACvB,EAAS,EAAQ,IACjB,EAAc,CAAA,EACd,EAAW,CAAA,EACX,EAAW,EAAO,CAAA,EAAI,CAAA,EACvB,EAAQ,IAAa,EAAQ,IAAa,EACtC,EAAQ,OAAO,EAAQ,MAAM,CAAA,EAEjC,EACC,EAAS,IACT,EACA,EACA,EAAS,IACT,EAAS,IAAY,aJxII,GIyIzB,EAAQ,IAAyB,CAAC,CAAA,EJ1HjB,KI2HjB,EACA,GAAiB,EAAc,CAAA,EAAY,CAAA,EJ3IlB,GI4ItB,EAAQ,KACX,CAAA,EAGD,EAAQ,IAAa,EAAQ,IAC7B,EAAQ,GAAA,IAAmB,EAAQ,GAAA,EAAW,EAC9C,GAAW,EAAa,EAAU,CAAA,EAClC,EAAQ,IAAQ,EAAQ,GAAW,KAE/B,EAAQ,KAAS,GACpB,GAAwB,CAAA,CAE1B,CACD,CAKA,SAAS,GAAwB,EAAA,CAChC,IAAK,EAAQ,EAAK,KJhJC,MIgJoB,EAAK,KJhJzB,KIwJlB,OAPA,EAAK,IAAQ,EAAK,IAAY,KJjJZ,KIkJlB,EAAK,IAAW,KAAK,SAAA,EAAA,CACpB,GAAI,GJnJa,MImJI,EAAK,KJnJT,KIoJhB,OAAQ,EAAK,IAAQ,EAAK,IAAY,KAAO,EAAK,GAEpD,CAAA,EAEO,GAAwB,CAAA,CAEjC,CA4BO,SAAS,EAAc,EAAA,EAAA,CAE1B,EAAC,MACD,EAAC,IAAA,KACF,EAAc,KAAK,CAAA,GAAA,CAClB,EAAO,OACT,IAAgB,EAAQ,sBAExB,GAAe,EAAQ,oBACN,IAAO,CAAA,CAE1B,CASA,SAAS,GAAA,CACR,GAAA,CAMC,QALI,EACH,EAAI,EAIE,EAAc,QAOhB,EAAc,OAAS,GAC1B,EAAc,KAAK,EAAA,EAGpB,EAAI,EAAc,MAAA,EAClB,EAAI,EAAc,OAElB,GAAgB,CAAA,CAIlB,QAFC,CACA,EAAc,OAAS,EAAO,IAAkB,CACjD,CACD,CG1MgB,SAAA,GACf,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAAA,CAXe,IAaX,EAEH,EAEA,EAEA,EAEA,EA8BI,EA8BA,EAvDD,EAAe,GAAkB,EAAc,KAAe,EAE9D,EAAoB,EAAa,OAUrC,IARA,EAAS,GACR,EACA,EACA,EACA,EACA,CAAA,EAGI,EAAI,EAAG,EAAI,EAAmB,KAClC,EAAa,EAAc,IAAW,CAAA,IPjEpB,OOsElB,EACE,EAAU,KADZ,IAC6B,EAAY,EAAU,GAAA,GAAa,EAGhE,EAAU,IAAU,EAGhB,EAAS,EACZ,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CAAA,EAID,EAAS,EAAU,IACf,EAAW,KAAO,EAAS,KAAO,EAAW,MAC5C,EAAS,KACZ,EAAS,EAAS,IP9FF,KO8Fa,CAAA,EAE9B,EAAS,KACR,EAAW,IACX,EAAU,KAAe,EACzB,CAAA,GAIE,GPvGc,MOuGW,GPvGX,OOwGjB,EAAgB,IAGb,EAAA,CAAA,EPtHsB,EOsHL,EAAU,OACZ,EAAQ,MAAe,EAAU,KACnD,EAAS,GAAO,EAAY,EAAQ,EAAW,CAAA,EAM3C,GAAe,EAAQ,MAC1B,EAAQ,IPpHQ,OOsHmB,OAAnB,EAAW,MAAQ,YAAc,IAAtB,OAC5B,EAAS,EACC,IACV,EAAS,EAAO,aAIjB,EAAU,KAAA,IAKX,OAFA,EAAc,IAAQ,EAEf,CACR,CAOA,SAAS,GACR,EACA,EACA,EACA,EACA,EAAA,CALD,IAQK,EAEA,EAEA,EA8DG,EAOA,EAnEH,EAAoB,EAAY,OACnC,EAAuB,EAEpB,EAAO,EAGX,IADA,EAAc,IAAa,IAAI,MAAM,CAAA,EAChC,EAAI,EAAG,EAAI,EAAmB,KAGlC,EAAa,EAAa,CAAA,IPjKR,MOqKI,OAAd,GAAc,WACA,OAAd,GAAc,YASA,OAAd,GAAc,UACA,OAAd,GAAc,UAEA,OAAd,GAAc,UACrB,EAAW,aAAe,OAE1B,EAAa,EAAc,IAAW,CAAA,EAAK,EPrL1B,KOuLhB,EPvLgB,KAAA,KAAA,IAAA,EO4LP,EAAQ,CAAA,EAClB,EAAa,EAAc,IAAW,CAAA,EAAK,EAC1C,EACA,CAAE,SAAU,CAAA,EP/LI,KAAA,KAAA,IAAA,EOoMP,EAAW,cPpMJ,QOoMiC,EAAU,IAAU,EAKtE,EAAa,EAAc,IAAW,CAAA,EAAK,EAC1C,EAAW,KACX,EAAW,MACX,EAAW,IACX,EAAW,IAAM,EAAW,IP7MZ,KO8MhB,EAAU,GAAA,EAGX,EAAc,IAAW,CAAA,EAAK,EAGzB,EAAc,EAAI,EACxB,EAAU,GAAW,EACrB,EAAU,IAAU,EAAc,IAAU,EAY5C,EPlOkB,MO2NZ,EAAiB,EAAU,IAAU,GAC1C,EACA,EACA,EACA,CAAA,IP/NiB,KOqOjB,KADA,EAAW,EAAY,CAAA,KAGtB,EAAQ,KPhPW,IOuPF,GP9OD,MO8OqB,EAAQ,KP9O7B,MOiPb,GAH0C,KAkBzC,EAAoB,EACvB,IACU,EAAoB,GAC9B,KAK4B,OAAnB,EAAW,MAAQ,aAC7B,EAAU,KPpRc,IOsRf,GAAiB,IAiBvB,GAAiB,EAAc,EAClC,IACU,GAAiB,EAAc,EACzC,KAEI,EAAgB,EACnB,IAEA,IAMD,EAAU,KPrTc,KOmLzB,EAAc,IAAW,CAAA,EPxKR,KOmTnB,GAAI,EACH,IAAK,EAAI,EAAG,EAAI,EAAmB,KAClC,EAAW,EAAY,CAAA,IPrTN,OATG,EO+TK,EAAQ,MAAsB,IAClD,EAAQ,KAAS,IACpB,EAAS,EAAc,CAAA,GAGxB,GAAQ,EAAU,CAAA,GAKrB,OAAO,CACR,CASA,SAAS,GAAO,EAAa,EAAQ,EAAW,EAAA,CAAhD,IAIM,EACK,EAFV,GAA+B,OAApB,EAAY,MAAQ,WAAY,CAE1C,IADI,EAAW,EAAW,IACjB,EAAI,EAAG,GAAY,EAAI,EAAS,OAAQ,IAC5C,EAAS,CAAA,IAKZ,EAAS,CAAA,EAAE,GAAW,EACtB,EAAS,GAAO,EAAS,CAAA,EAAI,EAAQ,EAAW,CAAA,GAIlD,OAAO,CACR,CAAW,EAAW,KAAS,IAC1B,IACC,GAAU,EAAY,MAAA,CAAS,EAAO,aACzC,EAAS,EAAc,CAAA,GAExB,EAAU,aAAa,EAAW,IAAO,GPhWxB,IAAA,GOkWlB,EAAS,EAAW,KAGrB,GACC,EAAS,GAAU,EAAO,kBAClB,GPvWU,MOuWQ,EAAO,UAAY,GAE9C,OAAO,CACR,CAQO,SAAS,GAAa,EAAU,EAAA,CAUtC,OATA,EAAM,GAAO,CAAA,EACT,GPpXe,MOoXwB,OAAZ,GAAY,YAChC,EAAQ,CAAA,EAClB,EAAS,KAAK,SAAA,EAAA,CACb,GAAa,EAAO,CAAA,CACrB,CAAA,EAEA,EAAI,KAAK,CAAA,GAEH,CACR,CASA,SAAS,GACR,EACA,EACA,EACA,EAAA,CAJD,IAgCM,EACA,EAEG,EA7BF,EAAM,EAAW,IACjB,EAAO,EAAW,KACpB,EAAW,EAAY,CAAA,EACrB,EAAU,GP/YG,OATG,EOwZe,EAAQ,MAAsB,EAiBnE,GACE,IPjaiB,MOiaI,GAAO,MAC5B,GAAW,GAAO,EAAS,KAAO,GAAQ,EAAS,KAEpD,OAAO,EAAA,GANP,GAAwB,EAAU,EAAI,IAUtC,IAFI,EAAI,EAAc,EAClB,EAAI,EAAc,EACf,GAAK,GAAK,EAAI,EAAY,QAGhC,IADA,EAAW,EADL,EAAa,GAAK,EAAI,IAAM,GAAA,IPzajB,OATG,EOsblB,EAAQ,MAAsB,GAC/B,GAAO,EAAS,KAChB,GAAQ,EAAS,KAEjB,OAAO,EAKV,MAAA,EACD,CFzbA,SAAS,GAAS,EAAO,EAAK,EAAA,CACzB,EAAI,CAAA,GAAM,IACb,EAAM,YAAY,EAAK,GAAgB,EAAK,EAE5C,EAAM,CAAA,EADI,GLDQ,KKEL,GACa,OAAT,GAAS,UAAY,GAAmB,KAAK,CAAA,EACjD,EAEA,EAAQ,IAEvB,CAAA,SAyBgB,EAAY,EAAK,EAAM,EAAO,EAAU,EAAA,CAAA,IACnD,EA8BG,EA5BP,EAAG,GAAI,GAAQ,QACd,GAAoB,OAAT,GAAS,SACnB,EAAI,MAAM,QAAU,MACd,CAKN,GAJuB,OAAZ,GAAY,WACtB,EAAI,MAAM,QAAU,EAAW,IAG5B,EACH,IAAK,KAAQ,EACN,GAAS,KAAQ,GACtB,GAAS,EAAI,MAAO,EAAM,EAAA,EAK7B,GAAI,EACH,IAAK,KAAQ,EACP,GAAY,EAAM,CAAA,GAAS,EAAS,CAAA,GACxC,GAAS,EAAI,MAAO,EAAM,EAAM,CAAA,CAAA,CAIpC,SAGQ,EAAK,CAAA,GAAM,KAAO,EAAK,CAAA,GAAM,IACrC,EAAa,IAAS,EAAO,EAAK,QAAQ,GAAe,IAAA,GACnD,EAAgB,EAAK,YAAA,EAI1B,EADG,KAAiB,GAAO,GAAQ,cAAgB,GAAQ,YACpD,EAAc,MAAM,CAAA,EAChB,EAAK,MAAM,CAAA,EAElB,EAAG,IAAa,EAAG,EAAc,CAAA,GACtC,EAAG,EAAY,EAAO,CAAA,EAAc,EAEhC,EACE,EAQJ,EAAM,CAAA,EAAkB,EAAS,CAAA,GAPjC,EAAM,CAAA,EAAkB,EACxB,EAAI,iBACH,EACA,EAAa,EAAoB,EACjC,CAAA,GAMF,EAAI,oBACH,EACA,EAAa,EAAoB,EACjC,CAAA,MAGI,CACN,GAAI,GLjGuB,6BKqG1B,EAAO,EAAK,QAAQ,cAAe,GAAA,EAAK,QAAQ,SAAU,GAAA,UAE1D,GAAQ,SACR,GAAQ,UACR,GAAQ,QACR,GAAQ,QACR,GAAQ,QAGR,GAAQ,YACR,GAAQ,YACR,GAAQ,WACR,GAAQ,WACR,GAAQ,QACR,GAAQ,WACR,KAAQ,EAER,GAAA,CACC,EAAI,CAAA,EAAQ,GAAgB,GAE5B,MAAM,CACK,MAAH,CAAG,CAUO,OAAT,GAAS,aAET,GLlIO,MKkIW,IAAlB,IAAqC,EAAK,CAAA,GAAM,IAG1D,EAAI,gBAAgB,CAAA,EAFpB,EAAI,aAAa,EAAM,GAAQ,WAAa,GAAS,EAAO,GAAK,CAAA,EAInE,CACD,CAOA,SAAS,GAAiB,EAAA,CAMzB,OAAA,SAAiB,EAAA,CAChB,GAAI,KAAI,EAAa,CACpB,IAAM,EAAe,KAAI,EAAY,EAAE,KAAO,CAAA,EAC9C,GAAI,EAAE,CAAA,GLxJW,KKyJhB,EAAE,CAAA,EAAoB,YAKZ,EAAE,CAAA,EAAoB,EAAa,CAAA,EAC7C,OAED,OAAO,EAAa,EAAQ,MAAQ,EAAQ,MAAM,CAAA,EAAK,CAAA,CACxD,CACD,CACD,CGnIgB,SAAA,EACf,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAAA,CAVe,IAaX,EAiBC,EAEC,EAAG,EAAO,EAAU,EAAU,EAAU,EACxC,EACE,EAKF,EACA,EAiIA,EACH,EAkCG,EAqDO,EAnPZ,EAAU,EAAS,KAIpB,GAAI,EAAS,cAAb,OAAwC,ORnDrB,KAbU,IQmEzB,EAAQ,MACX,EAAA,CAAA,ERtE0B,GQsET,EAAQ,KAEzB,EAAoB,CADpB,EAAS,EAAQ,IAAQ,EAAQ,GAAA,IAI7B,EAAM,EAAO,MAAS,EAAI,CAAA,EAE/B,EAAO,GAAsB,OAAX,GAAW,WAAY,CACpC,EAAuB,EAAY,OACvC,GAAA,CA+DC,GA7DI,EAAW,EAAS,MAClB,EAAmB,EAAQ,WAAa,EAAQ,UAAU,OAK5D,GADJ,EAAM,EAAQ,cACQ,EAAc,EAAG,GAAA,EACnC,EAAmB,EACpB,EACC,EAAS,MAAM,MACf,EAAG,GACJ,EAGC,EAAQ,IAEX,GADA,EAAI,EAAQ,IAAc,EAAQ,KACN,GAAwB,EAAC,KAGjD,EAEH,EAAQ,IAAc,EAAI,IAAI,EAAQ,EAAU,CAAA,GAGhD,EAAQ,IAAc,EAAI,IAAI,EAC7B,EACA,CAAA,EAED,EAAE,YAAc,EAChB,EAAE,OAAS,IAER,GAAU,EAAS,IAAI,CAAA,EAEtB,EAAE,QAAO,EAAE,MAAQ,CAAA,GACxB,EAAC,IAAkB,EACnB,EAAQ,EAAC,IAAA,GACT,EAAC,IAAoB,CAAA,EACrB,EAAC,IAAmB,CAAA,GAIjB,GAAoB,EAAC,KR3GR,OQ4GhB,EAAC,IAAc,EAAE,OAGd,GAAoB,EAAQ,0BR/Gf,OQgHZ,EAAC,KAAe,EAAE,QACrB,EAAC,IAAc,EAAO,CAAA,EAAI,EAAC,GAAA,GAG5B,EACC,EAAC,IACD,EAAQ,yBAAyB,EAAU,EAAC,GAAA,CAAA,GAI9C,EAAW,EAAE,MACb,EAAW,EAAE,MACb,EAAC,IAAU,EAGP,EAEF,GACA,EAAQ,0BRlIO,MQmIf,EAAE,oBRnIa,MQqIf,EAAE,mBAAA,EAGC,GAAoB,EAAE,mBRxIV,MQyIf,EAAC,IAAkB,KAAK,EAAE,iBAAA,MAErB,CAUN,GARC,GACA,EAAQ,0BR9IO,MQ+If,IAAa,GACb,EAAE,2BRhJa,MQkJf,EAAE,0BAA0B,EAAU,CAAA,EAItC,EAAQ,KAAc,EAAQ,KAAA,CAC5B,EAAC,KACF,EAAE,uBRxJY,MQyJd,EAAE,sBACD,EACA,EAAC,IACD,CAAA,IAJC,GAMF,CAEG,EAAQ,KAAc,EAAQ,MAKjC,EAAE,MAAQ,EACV,EAAE,MAAQ,EAAC,IACX,EAAC,IAAA,IAGF,EAAQ,IAAQ,EAAQ,IACxB,EAAQ,IAAa,EAAQ,IAC7B,EAAQ,IAAW,KAAK,SAAA,EAAA,CACnB,IAAO,EAAK,GAAW,EAC5B,CAAA,EAEA,EAAU,KAAK,MAAM,EAAC,IAAmB,EAAC,GAAA,EAC1C,EAAC,IAAmB,CAAA,EAEhB,EAAC,IAAkB,QACtB,EAAY,KAAK,CAAA,EAGlB,MAAM,CACP,CAEI,EAAE,qBR1LU,MQ2Lf,EAAE,oBAAoB,EAAU,EAAC,IAAa,CAAA,EAG3C,GAAoB,EAAE,oBR9LV,MQ+Lf,EAAC,IAAkB,KAAK,UAAA,CACvB,EAAE,mBAAmB,EAAU,EAAU,CAAA,CAC1C,CAAA,CAEF,CASA,GAPA,EAAE,QAAU,EACZ,EAAE,MAAQ,EACV,EAAC,IAAc,EACf,EAAC,IAAA,GAEG,EAAa,EAAO,IACvB,EAAQ,EACL,EACH,EAAE,MAAQ,EAAC,IACX,EAAC,IAAA,GAEG,GAAY,EAAW,CAAA,EAE3B,EAAM,EAAE,OAAO,EAAE,MAAO,EAAE,MAAO,EAAE,OAAA,EAEnC,EAAU,KAAK,MAAM,EAAC,IAAmB,EAAC,GAAA,EAC1C,EAAC,IAAmB,CAAA,MAEpB,IACC,EAAC,IAAA,GACG,GAAY,EAAW,CAAA,EAE3B,EAAM,EAAE,OAAO,EAAE,MAAO,EAAE,MAAO,EAAE,OAAA,EAGnC,EAAE,MAAQ,EAAC,UACH,EAAC,KAAA,EAAa,EAAQ,IAIhC,EAAE,MAAQ,EAAC,IAEP,EAAE,iBRrOW,OQsOhB,EAAgB,EAAO,EAAO,CAAA,EAAI,CAAA,EAAgB,EAAE,gBAAA,CAAA,GAGjD,GAAA,CAAqB,GAAS,EAAE,yBRzOnB,OQ0OhB,EAAW,EAAE,wBAAwB,EAAU,CAAA,GAG5C,EACH,GR9OgB,MQ8OD,EAAI,OAAS,GAAY,EAAI,KR9O5B,KQ+Ob,GAAU,EAAI,MAAM,QAAA,EACpB,EAEJ,EAAS,GACR,EACA,EAAQ,CAAA,EAAgB,EAAe,CAAC,CAAA,EACxC,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CAAA,EAGD,EAAE,KAAO,EAAQ,IAGjB,EAAQ,KAAA,KAEJ,EAAC,IAAkB,QACtB,EAAY,KAAK,CAAA,EAGd,IACH,EAAC,IAAiB,EAAC,GR1QH,KQgTlB,OApCS,EAAA,CAOR,GAHA,EAAY,OAAS,EACrB,EAAQ,IRjRS,KQmRb,GAAe,GRnRF,MQoRhB,GAAI,EAAE,KAAM,CAKX,IAJA,EAAQ,KAAW,EAChB,IRnSsB,IQsSlB,GAAU,EAAO,UAAY,GAAK,EAAO,aAC/C,EAAS,EAAO,YAGb,GR7RW,OQ8Rd,EAAkB,EAAkB,QAAQ,CAAA,CAAA,ER9R9B,MQgSf,EAAQ,IAAQ,CACjB,SAAW,GRjSK,KQkSf,IAAS,EAAI,EAAkB,OAAQ,KACtC,EAAW,EAAkB,CAAA,CAAA,OAI/B,EAAQ,IAAQ,EAAQ,IAGrB,EAAQ,KR1SK,OQ2ShB,EAAQ,IAAa,EAAQ,KAAc,CAAA,GAGvC,EAAE,MAAM,GAAY,CAAA,EACzB,EAAO,IAAa,EAAG,EAAU,CAAA,CAClC,CACD,MACC,GRlTkB,MQmTlB,EAAQ,KAAc,EAAQ,KAE9B,EAAQ,IAAa,EAAQ,IAC7B,EAAQ,IAAQ,EAAQ,KAExB,EAAS,EAAQ,IAAQ,GACxB,EAAQ,IACR,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CAAA,EAMF,OAFK,EAAM,EAAQ,SAAS,EAAI,CAAA,ERlVH,IQoVtB,EAAQ,IAAA,OAAuC,CACvD,CAEA,SAAS,GAAY,EAAA,CAChB,IACC,EAAK,MAAa,EAAK,IAAA,IAAA,IACvB,EAAK,KAAY,EAAK,IAAW,KAAK,EAAA,EAE5C,CAAA,SAOgB,GAAW,EAAa,EAAM,EAAA,CAC7C,QAAS,EAAI,EAAG,EAAI,EAAS,OAAQ,IACpC,EAAS,EAAS,CAAA,EAAI,EAAA,EAAW,CAAA,EAAI,EAAA,EAAW,CAAA,CAAA,EAG7C,EAAO,KAAU,EAAO,IAAS,EAAM,CAAA,EAE3C,EAAY,KAAK,SAAA,EAAA,CAChB,GAAA,CAEC,EAAc,EAAC,IACf,EAAC,IAAoB,CAAA,EACrB,EAAY,KAAK,SAAA,EAAA,CAEhB,EAAG,KAAK,CAAA,CACT,CAAA,CAGD,OAFS,EAAA,CACR,EAAO,IAAa,EAAG,EAAC,GAAA,CACzB,CACD,CAAA,CACD,CAEA,SAAS,GAAU,EAAA,CAClB,OAAmB,OAAR,GAAQ,UAAY,GR7WZ,MQ6W4B,EAAI,IAAU,EACrD,EAGJ,EAAQ,CAAA,EACJ,EAAK,IAAI,EAAA,EAGb,EAAK,cAHQ,OAG8B,KAExC,EAAO,CAAA,EAAI,CAAA,CACnB,CAiBA,SAAS,GACR,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAAA,CATD,IAeK,EAEA,EAEA,EAEA,EACA,EACA,EACA,EAbA,EAAW,EAAS,OAAS,EAC7B,EAAW,EAAS,MACpB,EAAkC,EAAS,KAkB/C,GAJI,GAAY,MAAO,ERxaK,6BQyanB,GAAY,OAAQ,ERvaA,qCQwanB,IAAW,ERzaS,gCQ2a1B,GRxae,MQyalB,IAAK,EAAI,EAAG,EAAI,EAAkB,OAAQ,IAMzC,IALA,EAAQ,EAAkB,CAAA,IAOzB,iBAAkB,GAAA,CAAA,CAAW,IAC5B,EAAW,EAAM,WAAa,EAAW,EAAM,UAAY,GAC3D,CACD,EAAM,EACN,EAAkB,CAAA,ERrbF,KQsbhB,KACD,EAIF,GAAI,GR3be,KQ2bF,CAChB,GAAI,GR5bc,KQ6bjB,OAAO,SAAS,eAAe,CAAA,EAGhC,EAAM,SAAS,gBACd,EACA,EACA,EAAS,IAAM,CAAA,EAKZ,IACC,EAAO,KACV,EAAO,IAAoB,EAAU,CAAA,EACtC,EAAA,IAGD,ER9ckB,IQ+cnB,CAEA,GAAI,GRjde,KQmdd,IAAa,GAAc,GAAe,EAAI,MAAQ,IACzD,EAAI,KAAO,OAEN,CAUN,GARA,EACC,GAAY,YAAc,EAAS,cRzdlB,KAAA,KQ2dd,GAAqB,EAAM,KAAK,EAAI,UAAA,EAAA,CAKnC,GAAe,GRheF,KQkejB,IADA,EAAW,CAAA,EACN,EAAI,EAAG,EAAI,EAAI,WAAW,OAAQ,IAEtC,GADA,EAAQ,EAAI,WAAW,CAAA,GACR,IAAA,EAAQ,EAAM,MAI/B,IAAK,KAAK,EACT,EAAQ,EAAS,CAAA,EACb,GAAK,0BACR,EAAU,EAEV,GAAK,YACH,KAAK,GACL,GAAK,SAAW,iBAAkB,GAClC,GAAK,WAAa,mBAAoB,GAExC,EAAY,EAAK,ERlfD,KQkfU,EAAO,CAAA,EAMnC,IAAK,KAAK,EACT,EAAQ,EAAS,CAAA,EACb,GAAK,WACR,EAAc,EACJ,GAAK,0BACf,EAAU,EACA,GAAK,QACf,EAAa,EACH,GAAK,UACf,EAAU,EAER,GAA+B,OAAT,GAAS,YACjC,EAAS,CAAA,IAAO,GAEhB,EAAY,EAAK,EAAG,EAAO,EAAS,CAAA,EAAI,CAAA,EAK1C,GAAI,EAGD,GACC,IACA,EAAO,QAAW,EAAO,QAAW,EAAO,QAAW,EAAI,aAE5D,EAAI,UAAY,EAAO,QAGxB,EAAQ,IAAa,CAAA,UAEjB,IAAS,EAAI,UAAY,IAE7B,GAEC,EAAS,MAAQ,WAAa,EAAI,QAAU,EAC5C,EAAQ,CAAA,EAAe,EAAc,CAAC,CAAA,EACtC,EACA,EACA,EACA,GAAY,gBRniBe,+BQmiBqB,EAChD,EACA,EACA,EACG,EAAkB,CAAA,EAClB,EAAQ,KAAc,EAAc,EAAU,CAAA,EACjD,EACA,CAAA,EAIG,GR3iBa,KQ4iBhB,IAAK,EAAI,EAAkB,OAAQ,KAClC,EAAW,EAAkB,CAAA,CAAA,EAM3B,GAAe,GAAY,aAC/B,EAAI,QACA,GAAY,YAAc,GRrjBb,KQsjBhB,EAAI,gBAAgB,OAAA,EAEpB,GRvjBqB,OQ4jBpB,IAAe,EAAI,CAAA,GAClB,GAAY,YAAZ,CAA2B,GAI3B,GAAY,UAAY,GAAc,EAAS,CAAA,IAEjD,EAAY,EAAK,EAAG,EAAY,EAAS,CAAA,EAAI,CAAA,EAG9C,EAAI,UACA,GRvkBkB,MQukBM,GAAW,EAAI,CAAA,GAC1C,EAAY,EAAK,EAAG,EAAS,EAAS,CAAA,EAAI,CAAA,EAG7C,CAEA,OAAO,CACR,CAQgB,SAAA,EAAS,EAAK,EAAO,EAAA,CACpC,GAAA,CACC,GAAkB,OAAP,GAAO,WAAY,CAC7B,IAAI,EAAuC,OAAhB,EAAG,KAAa,WACvC,GAEH,EAAG,IAAA,EAGC,GAAiB,GRhmBL,OQomBhB,EAAG,IAAY,EAAI,CAAA,EAErB,MAAO,EAAI,QAAU,CAGtB,OAFS,EAAA,CACR,EAAO,IAAa,EAAG,CAAA,CACxB,CACD,CASgB,SAAA,GAAQ,EAAO,EAAa,EAAA,CAA5B,IACX,EAsBM,EAbV,GARI,EAAQ,SAAS,EAAQ,QAAQ,CAAA,GAEhC,EAAI,EAAM,OACT,EAAE,SAAW,EAAE,SAAW,EAAK,KACnC,EAAS,ERznBQ,KQynBC,CAAA,IAIf,EAAI,EAAK,MR7nBK,KQ6nBiB,CACnC,GAAI,EAAE,qBACL,GAAA,CACC,EAAE,qBAAA,CAGH,OAFS,EAAA,CACR,EAAO,IAAa,EAAG,CAAA,CACxB,CAGD,EAAE,KAAO,EAAC,IAAc,EAAC,IRtoBP,IQuoBnB,CAEA,GAAK,EAAI,EAAK,IACb,IAAS,EAAI,EAAG,EAAI,EAAE,OAAQ,IACzB,EAAE,CAAA,GACL,GACC,EAAE,CAAA,EACF,EACA,GAAmC,OAAd,EAAM,MAAQ,UAAR,EAM1B,GACJ,EAAW,EAAK,GAAA,EAGjB,EAAK,IAAc,EAAK,GAAW,EAAK,IAAA,MACzC,CAGA,SAAS,GAAS,EAAO,EAAO,EAAA,CAC/B,OAAA,KAAY,YAAY,EAAO,CAAA,CAChC,CClqBgB,SAAA,GAAO,EAAO,EAAW,EAAA,CAAzB,IAWX,EAOA,EAQA,EACH,EAzBG,GAAa,WAChB,EAAY,SAAS,iBAGlB,EAAO,IAAQ,EAAO,GAAO,EAAO,CAAA,EAYpC,GAPA,EAAoC,OAAf,GAAe,YTRrB,KSiBf,GAAe,EAAW,KAAe,EAAS,IAMlD,EAAc,CAAA,EACjB,EAAW,CAAA,EACZ,EACC,EAPD,GAAA,CAAW,GAAe,GAAgB,GAAS,IAClD,EAAc,ETpBI,KSoBY,CAAC,CAAA,CAAA,EAU/B,GAAY,EACZ,EACA,EAAU,aAAA,CACT,GAAe,EACb,CAAC,CAAA,EACD,ETnCe,KSqCd,EAAU,WACT,EAAM,KAAK,EAAU,UAAA,ETtCR,KSwClB,EAAA,CACC,GAAe,EACb,EACA,EACC,EAAQ,IACR,EAAU,WACd,EACA,CAAA,EAID,GAAW,EAAa,EAAO,CAAA,EAG/B,EAAM,MAAM,STtDO,ISuDpB,CAOO,SAAS,GAAQ,EAAO,EAAA,CAC9B,GAAO,EAAO,EAAW,EAAA,CAC1B,CAAA,SCnEgB,GAAa,EAAO,EAAO,EAAA,CAAA,IAEzC,EACA,EACA,EAEG,EALA,EAAkB,EAAO,CAAA,EAAI,EAAM,KAAA,EAWvC,IAAK,KAJD,EAAM,MAAQ,EAAM,KAAK,eAC5B,EAAe,EAAM,KAAK,cAGjB,EACL,GAAK,MAAO,EAAM,EAAM,CAAA,EACnB,GAAK,MAAO,EAAM,EAAM,CAAA,EAEhC,EAAgB,CAAA,EADR,EAAM,CAAA,IACE,QADkB,GVXZ,KUYD,EAAa,CAAA,EAEb,EAAM,CAAA,EAS7B,OALI,UAAU,OAAS,IACtB,EAAgB,SACf,UAAU,OAAS,EAAI,EAAM,KAAK,UAAW,CAAA,EAAK,GAG7C,EACN,EAAM,KACN,EACA,GAAO,EAAM,IACb,GAAO,EAAM,IV5BK,IAAA,CU+BpB,CJ1CgB,SAAA,GAAc,EAAA,CAC7B,SAAS,EAAQ,EAAA,CAAjB,IAGM,EACA,EA+BL,OAlCK,KAAK,kBAEL,EAAO,IAAI,KACX,EAAM,CAAA,GACN,EAAO,GAAA,EAAQ,KAEnB,KAAK,gBAAkB,UAAA,CAAM,OAAA,CAAG,EAEhC,KAAK,qBAAuB,UAAA,CAC3B,ENAgB,IMCjB,EAEA,KAAK,sBAAwB,SAAU,EAAA,CAElC,KAAK,MAAM,OAAS,EAAO,OAC9B,EAAK,QAAQ,SAAA,EAAA,CACZ,EAAC,IAAA,GACD,EAAc,CAAA,CACf,CAAA,CAEF,EAEA,KAAK,IAAM,SAAA,EAAA,CACV,EAAK,IAAI,CAAA,EACT,IAAI,EAAM,EAAE,qBACZ,EAAE,qBAAuB,UAAA,CACpB,GACH,EAAK,OAAO,CAAA,EAET,GAAK,EAAI,KAAK,CAAA,CACnB,CACD,GAGM,EAAM,QACd,CAgBA,OAdA,EAAO,IAAO,OAAS,KACvB,EAAO,GAAiB,EAQxB,EAAQ,SACP,EAAO,KANR,EAAQ,SAAW,SAAC,EAAO,EAAA,CAC1B,OAAO,EAAM,SAAS,CAAA,CACvB,GAKkB,YAChB,EAEK,CACR,CLhCa,EAAQ,EAAU,MChBzB,EAAU,CACf,ISDM,SAAqB,EAAO,EAAO,EAAU,EAAA,CAQnD,QANI,EAEH,EAEA,EAEO,EAAQ,EAAK,IACpB,IAAK,EAAY,EAAK,MAAA,CAAiB,EAAS,GAC/C,GAAA,CAcC,IAbA,EAAO,EAAU,cAEL,EAAK,0BXRD,OWSf,EAAU,SAAS,EAAK,yBAAyB,CAAA,CAAA,EACjD,EAAU,EAAS,KAGhB,EAAU,mBXbE,OWcf,EAAU,kBAAkB,EAAO,GAAa,CAAA,CAAA,EAChD,EAAU,EAAS,KAIhB,EACH,OAAQ,EAAS,IAAiB,CAIpC,OAFS,EAAA,CACR,EAAQ,CACT,CAIF,MAAM,CACP,CAAA,ERzCI,EAAU,EA2FD,EAAiB,SAAA,EAAA,CAAK,OAClC,GHhFmB,MGgFF,EAAM,cAAvB,MAAgD,ECrEjD,EAAc,UAAU,SAAW,SAAU,EAAQ,EAAA,CAEpD,IAAI,EAEH,EADG,KAAI,KJdW,MIcY,KAAI,KAAe,KAAK,MAClD,KAAI,IAEJ,KAAI,IAAc,EAAO,CAAA,EAAI,KAAK,KAAA,EAGlB,OAAV,GAAU,aAGpB,EAAS,EAAO,EAAO,CAAA,EAAI,CAAA,EAAI,KAAK,KAAA,GAGjC,GACH,EAAO,EAAG,CAAA,EAIP,GJ/Be,MIiCf,KAAI,MACH,GACH,KAAI,IAAiB,KAAK,CAAA,EAE3B,EAAc,IAAA,EAEhB,EAQA,EAAc,UAAU,YAAc,SAAU,EAAA,CAC3C,KAAI,MAIP,KAAI,IAAA,GACA,GAAU,KAAI,IAAkB,KAAK,CAAA,EACzC,EAAc,IAAA,EAEhB,EAYA,EAAc,UAAU,OAAS,EA4F7B,EAAgB,CAAA,EAad,GACa,OAAX,SAAW,WACf,QAAQ,UAAU,KAAK,KAAK,QAAQ,QAAA,CAAA,EACpC,WAuBE,GAAY,SAAC,EAAG,EAAA,CAAA,OAAM,EAAC,IAAA,IAAiB,EAAC,IAAA,GAAc,EA+B7D,EAAO,IAAkB,EC5OrB,EAAM,KAAK,OAAA,EAAS,SAAS,CAAA,EAChC,EAAmB,MAAQ,EAC3B,EAAiB,MAAQ,EAcpB,GAAgB,8BAalB,EAAa,EA+IX,EAAa,GAAA,EAAA,EACb,EAAoB,GAAA,EAAA,ECpLf,GAAI","file":"/npm/preact@10.29.7/dist/preact.module.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/preact@10.29.7/dist/preact.module.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {import('./index').ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\nimport { NULL, UNDEFINED } from './constants';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != NULL) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, NULL);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {import('./internal').VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: NULL,\n\t\t_parent: NULL,\n\t\t_depth: 0,\n\t\t_dom: NULL,\n\t\t_component: NULL,\n\t\tconstructor: UNDEFINED,\n\t\t_original: original == NULL ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == NULL && options.vnode != NULL) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: NULL };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != NULL && vnode.constructor === UNDEFINED;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport {\n\tEMPTY_OBJ,\n\tEMPTY_ARR,\n\tINSERT_VNODE,\n\tMATCHED,\n\tUNDEFINED,\n\tNULL\n} from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\toldDom = constructNewChildrenArray(\n\t\tnewParentVNode,\n\t\trenderResult,\n\t\toldChildren,\n\t\toldDom,\n\t\tnewChildrenLength\n\t);\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == NULL) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\toldVNode =\n\t\t\t(childVNode._index != -1 && oldChildren[childVNode._index]) || EMPTY_OBJ;\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tlet result = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, NULL, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == NULL && newDom != NULL) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tlet shouldPlace = !!(childVNode._flags & INSERT_VNODE);\n\t\tif (shouldPlace || oldVNode._children === childVNode._children) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom, shouldPlace);\n\n\t\t\t// When a matched VNode is physically moved via INSERT_VNODE, its old\n\t\t\t// _dom pointer becomes a stale positional reference. Clear it so that\n\t\t\t// getDomSibling (called from nested diffs) won't return this stale\n\t\t\t// reference and mis-place subsequent DOM nodes. See #5065.\n\t\t\tif (shouldPlace && oldVNode._dom) {\n\t\t\t\toldVNode._dom = NULL;\n\t\t\t}\n\t\t} else if (typeof childVNode.type == 'function' && result !== UNDEFINED) {\n\t\t\toldDom = result;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(\n\tnewParentVNode,\n\trenderResult,\n\toldChildren,\n\toldDom,\n\tnewChildrenLength\n) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = new Array(newChildrenLength);\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == NULL ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tnewParentVNode._children[i] = NULL;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tNULL,\n\t\t\t\tchildVNode,\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (childVNode.constructor === UNDEFINED && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : NULL,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tnewParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = NULL;\n\t\tif (matchingIndex != -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original == null\n\t\tconst isMounting = oldVNode == NULL || oldVNode._original == NULL;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\t// When the array of children is growing we need to decrease the skew\n\t\t\t\t// as we are adding a new element to the array.\n\t\t\t\t// Example:\n\t\t\t\t// [1, 2, 3] --> [0, 1, 2, 3]\n\t\t\t\t// oldChildren   newChildren\n\t\t\t\t//\n\t\t\t\t// The new element is at index 0, so our skew is 0,\n\t\t\t\t// we need to decrease the skew as we are adding a new element.\n\t\t\t\t// The decrease will cause us to compare the element at position 1\n\t\t\t\t// with value 1 with the element at position 0 with value 0.\n\t\t\t\t//\n\t\t\t\t// A linear concept is applied when the array is shrinking,\n\t\t\t\t// if the length is unchanged we can assume that no skew\n\t\t\t\t// changes are needed.\n\t\t\t\tif (newChildrenLength > oldChildrenLength) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else if (newChildrenLength < oldChildrenLength) {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex != skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t//     we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t//     this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != NULL && (oldVNode._flags & MATCHED) == 0) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @param {boolean} shouldPlace\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom, shouldPlace) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom, shouldPlace);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (shouldPlace) {\n\t\t\tif (oldDom && parentVNode.type && !oldDom.parentNode) {\n\t\t\t\toldDom = getDomSibling(parentVNode);\n\t\t\t}\n\t\t\tparentDom.insertBefore(parentVNode._dom, oldDom || NULL);\n\t\t}\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != NULL && oldDom.nodeType == 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == NULL || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet oldVNode = oldChildren[skewedIndex];\n\tconst matched = oldVNode != NULL && (oldVNode._flags & MATCHED) == 0;\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\t//\n\t// If there is an unkeyed functional VNode, that isn't a built-in like our Fragment,\n\t// we should not search as we risk re-using state of an unrelated VNode. (reverted for now)\n\tlet shouldSearch =\n\t\t// (typeof type != 'function' || type === Fragment || key) &&\n\t\tremainingOldChildren > (matched ? 1 : 0);\n\n\tif (\n\t\t(oldVNode === NULL && key == null) ||\n\t\t(matched && key == oldVNode.key && type == oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\tlet x = skewedIndex - 1;\n\t\tlet y = skewedIndex + 1;\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tconst childIndex = x >= 0 ? x-- : y++;\n\t\t\toldVNode = oldChildren[childIndex];\n\t\t\tif (\n\t\t\t\toldVNode != NULL &&\n\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\tkey == oldVNode.key &&\n\t\t\t\ttype == oldVNode.type\n\t\t\t) {\n\t\t\t\treturn childIndex;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n","import {\n\tEMPTY_ARR,\n\tEMPTY_OBJ,\n\tMATH_NAMESPACE,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tNULL,\n\tRESET_MODE,\n\tSVG_NAMESPACE,\n\tUNDEFINED,\n\tXHTML_NAMESPACE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * @template {any} T\n * @typedef {import('../internal').Ref<T>} Ref<T>\n */\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== UNDEFINED) return NULL;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\tlet oldCommitQueueLength = commitQueue.length;\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent = newType.prototype && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == NULL) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != NULL) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tc.componentWillMount != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnewVNode._original == oldVNode._original ||\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != NULL &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original != oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tEMPTY_ARR.push.apply(c._renderCallbacks, c._stateCallbacks);\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != NULL) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tEMPTY_ARR.push.apply(c._renderCallbacks, c._stateCallbacks);\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != NULL) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != NULL) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet renderResult =\n\t\t\t\ttmp != NULL && tmp.type === Fragment && tmp.key == NULL\n\t\t\t\t\t? cloneNode(tmp.props.children)\n\t\t\t\t\t: tmp;\n\n\t\t\toldDom = diffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = NULL;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// We remove any componentDidMount, ...\n\t\t\t// that have been invalidated by us\n\t\t\t// intercepting the error.\n\t\t\tcommitQueue.length = oldCommitQueueLength;\n\t\t\tnewVNode._original = NULL;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != NULL) {\n\t\t\t\tif (e.then) {\n\t\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\t\twhile (oldDom && oldDom.nodeType == 8 && oldDom.nextSibling) {\n\t\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (excessDomChildren != NULL) {\n\t\t\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = NULL;\n\t\t\t\t\t}\n\t\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\t} else if (excessDomChildren != NULL) {\n\t\t\t\t\tfor (let i = excessDomChildren.length; i--; ) {\n\t\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t}\n\n\t\t\tif (newVNode._children == NULL) {\n\t\t\t\tnewVNode._children = oldVNode._children || [];\n\t\t\t}\n\n\t\t\tif (!e.then) markAsForce(newVNode);\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == NULL &&\n\t\tnewVNode._original == oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\toldDom = newVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n\n\treturn newVNode._flags & MODE_SUSPENDED ? undefined : oldDom;\n}\n\nfunction markAsForce(vnode) {\n\tif (vnode) {\n\t\tif (vnode._component) vnode._component._force = true;\n\t\tif (vnode._children) vnode._children.some(markAsForce);\n\t}\n}\n\n/**\n * @param {Array<Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\nfunction cloneNode(node) {\n\tif (typeof node != 'object' || node == NULL || node._depth > 0) {\n\t\treturn node;\n\t}\n\n\tif (isArray(node)) {\n\t\treturn node.map(cloneNode);\n\t}\n\n\tif (node.constructor !== UNDEFINED) return null;\n\n\treturn assign({}, node);\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props || EMPTY_OBJ;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType == 'svg') namespace = SVG_NAMESPACE;\n\telse if (nodeType == 'math') namespace = MATH_NAMESPACE;\n\telse if (!namespace) namespace = XHTML_NAMESPACE;\n\n\tif (excessDomChildren != NULL) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value == !!nodeType &&\n\t\t\t\t(nodeType ? value.localName == nodeType : value.nodeType == 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = NULL;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == NULL) {\n\t\tif (nodeType == NULL) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = NULL;\n\t}\n\n\tif (nodeType == NULL) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data != newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren =\n\t\t\tnodeType == 'textarea' && newProps.defaultValue != NULL\n\t\t\t\t? NULL\n\t\t\t\t: excessDomChildren && slice.call(dom.childNodes);\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != NULL) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (\n\t\t\t\ti != 'children' &&\n\t\t\t\t!(i in newProps) &&\n\t\t\t\t!(i == 'value' && 'defaultValue' in newProps) &&\n\t\t\t\t!(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, NULL, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html != oldHtml.__html && newHtml.__html != dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\t// @ts-expect-error\n\t\t\t\tnewVNode.type == 'template' ? dom.content : dom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType == 'foreignObject' ? XHTML_NAMESPACE : namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != NULL) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating || nodeType == 'textarea') {\n\t\t\ti = 'value';\n\t\t\tif (nodeType == 'progress' && inputValue == NULL) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue != UNDEFINED &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType == 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType == 'option' && inputValue != oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], namespace);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked != UNDEFINED && checked != dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {Ref<any> & { _unmount?: unknown }} ref\n * @param {any} value\n * @param {VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') {\n\t\t\tlet hasRefUnmount = typeof ref._unmount == 'function';\n\t\t\tif (hasRefUnmount) {\n\t\t\t\t// @ts-ignore TS doesn't like moving narrowing checks into variables\n\t\t\t\tref._unmount();\n\t\t\t}\n\n\t\t\tif (!hasRefUnmount || value != NULL) {\n\t\t\t\t// Store the cleanup function on the function\n\t\t\t\t// instance object itself to avoid shape\n\t\t\t\t// transitioning vnode\n\t\t\t\tref._unmount = ref(value);\n\t\t\t}\n\t\t} else ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current == vnode._dom) {\n\t\t\tapplyRef(r, NULL, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != NULL) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = r._globalContext = NULL;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type != 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\tvnode._component = vnode._parent = vnode._dom = UNDEFINED;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, NULL } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\t// https://github.com/preactjs/preact/issues/3794\n\tif (parentDom == document) {\n\t\tparentDom = document.documentElement;\n\t}\n\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? NULL\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, NULL, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.namespaceURI,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? NULL\n\t\t\t\t: parentDom.firstChild\n\t\t\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t\t\t: NULL,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t\t? oldVNode._dom\n\t\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n\n\t// The live children are tracked on _children after diffing.\n\tvnode.props.children = NULL;\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n","import { assign, slice } from './util';\nimport { createVNode } from './create-element';\nimport { NULL, UNDEFINED } from './constants';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used\n * as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === UNDEFINED && defaultProps != UNDEFINED) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tNULL\n\t);\n}\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n"]}