{"version":3,"file":"static/js/main.a4a794bc.js","mappings":";i2FAEMA,EAAY,SAACC,EAAOC,GACtB,IAAQC,EAKIF,EALJE,cAAeC,EAKXH,EALWG,KAAMC,EAKjBJ,EALiBI,SAAUC,EAK3BL,EAL2BK,eAAgBC,EAK3CN,EAL2CM,WAAYC,EAKvDP,EALuDO,eAAgBC,EAKvER,EALuEQ,aAAcC,EAKrFT,EALqFS,eAAgBC,EAKrGV,EALqGU,cAAeC,EAKpHX,EALoHW,YAAaC,EAKjIZ,EALiIY,aAAcC,EAK/Ib,EAL+Ia,eAAgBC,EAK/Jd,EAL+Jc,YAAaC,EAK5Kf,EAL4Ke,UAK5Kf,EAHZgB,UAGYhB,EAHDiB,SAGCjB,EAHSkB,KAGTlB,EAHemB,WAGfnB,EAH2BoB,iBAGpC,IAAAC,EAAIC,EAAKtB,EAAKuB,GAC4CC,EAAAC,EAAfC,EAAAC,UAAS,GAAM,GAAtDC,EAAeJ,EAAA,GAAEK,EAAkBL,EAAA,GACpCM,EAAuBJ,EAAAK,SACvBC,EAAqBN,EAAAK,OAAO,MAS5BE,EAAO,WACT,IAAIC,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGD,QAK1EG,EAAO,WACT,IAAIF,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGE,QAK1EC,EAAQ,WACV,IAAIH,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGG,SAM1EC,EAAW,SAACC,GACd,IAAIL,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGI,SAASC,IAOnFC,EAAc,SAACC,EAAOC,GACxB,IAAIR,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGM,YAAYC,EAAOC,IAO7FC,EAAc,SAACF,EAAOC,GACxB,IAAIR,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGS,YAAYF,EAAOC,IAM7FE,EAAe,SAACC,GAClB,IAAIX,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGU,aAAaC,IAOvFC,EAAe,SAACC,EAAUC,GAC5B,IAAId,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGY,aAAaC,EAAUC,IAMjGC,EAAc,SAACC,GACjB,IAAIhB,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGe,YAAYC,IAMtFC,EAAc,SAACC,GAAe,IAAIlB,EAAI,OAA+C,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,OAAgB,EAASA,EAAGiB,YAAYC,IAIrIC,EAAU,WACZ,IAAInB,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGmB,UAG5EvB,EAAqBK,aAAUmB,GAW7BC,EAAgB,WAAwB,IACtCrB,EADesB,EAAgBC,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,GAAAA,UAAA,MAGnC,GAAKzB,EAAmBG,QAAxB,CAIwC,QAAvCD,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGmB,UAE5E,IAAMM,EAAMC,EAAAA,EAAAA,EAAA,GACL5D,GACAwD,GAAa,IAChBK,UAAW7B,EAAmBG,UAMlC,OAHAL,EAAqBK,QAAU2B,EAAA,QAAOP,cAAcI,GACpD9B,IAAqBC,EAAqBK,SAEnC,WACH,IAAID,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAGmB,UAC5EvB,EAAqBK,aAAUmB,EAhBnC,GAsHJ,OAhGA5B,EAAAqC,WAAU,WACN,IAAMC,EAAYT,IAElB,OAAO,kBAAoB,OAAdS,QAAoC,IAAdA,OAAuB,EAASA,GAAW,CAElF,GAAG,CAAC9D,EAAeC,IAEnBuB,EAAAqC,WAAU,WACDjC,EAAqBK,UAG1BL,EAAqBK,QAAQ/B,WAAaA,EAC9C,GAAG,CAACA,IAEJsB,EAAAqC,WAAU,WACDjC,EAAqBK,UAIrB9B,EAKA4D,MAAMC,QAAQ7D,IAAoBA,EAAeqD,UAKlD5B,EAAqBK,QAAQgC,gBAAkB9D,EAAe,IAC9DyB,EAAqBK,QAAQgC,gBAAkB9D,EAAe,MAC9DyB,EAAqBK,QAAQgC,gBAAkB9D,EAAe,IAGlEyB,EAAqBK,QAAQiC,WAAW/D,EAAe,GAAIA,EAAe,KAdtEyB,EAAqBK,QAAQkC,eAAc,GAenD,GAAG,CAAChE,IASJqB,EAAAqC,WAAU,WACN,IAYMO,EAZmB,CACrB,CAAEpD,KAAM,WAAYqD,QAASjE,GAC7B,CAAEY,KAAM,eAAgBqD,QAAShE,GACjC,CAAEW,KAAM,aAAcqD,QAAS/D,GAC/B,CAAEU,KAAM,eAAgBqD,QAAS9D,GACjC,CAAES,KAAM,eAAgBqD,QAAS7D,GACjC,CAAEQ,KAAM,aAAcqD,QAAS5D,GAC/B,CAAEO,KAAM,cAAeqD,QAAS3D,GAChC,CAAEM,KAAM,gBAAiBqD,QAAS1D,GAClC,CAAEK,KAAM,YAAaqD,QAASzD,GAC9B,CAAEI,KAAM,UAAWqD,QAASxD,IAEGyD,QAAO,SAACC,GAAQ,OAAyB,MAApBA,EAASF,WACjE,GAAKD,EAAUZ,OAAf,CAGA,IAAMgB,EAAiBJ,EAAUK,KAMjC,SAACF,GACG,IAAIvC,EAGJ,OAFwC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAG0C,iBAAiBH,EAASvD,KAAMuD,EAASF,SAE9G,WACH,IAAIrC,EACoC,QAAvCA,EAAKJ,EAAqBK,eAA4B,IAAPD,GAAyBA,EAAG2C,oBAAoBJ,EAASvD,KAAMuD,EAASF,SAEhI,IAEA,OAAO,WACHG,EAAeI,SAAQ,SAACC,GAAU,OAAKA,OAlB3C,IAoBD,CACCzE,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IAMG,CACHiE,KAFSC,EAAA,QAAMC,cAAc,MAAKtB,EAAA,CAAI3D,MAAOA,EAAOkF,IAAKnD,GAAuBX,IAGhFY,KAAAA,EACAG,KAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAK,YAAAA,EACAH,YAAAA,EACAI,aAAAA,EACAE,aAAAA,EACAG,YAAAA,EACAE,YAAAA,EACAE,QAAAA,EACA+B,sBAAuBpD,EACvBJ,gBAAAA,EACAyD,cAAevD,EAAqBK,QAE5C,EC3PO,SAASmD,EAAuBzB,GACnC,IAAwB0B,EAAA1B,EAAU2B,wBAA1BC,EAAGF,EAAHE,IAAKC,EAAMH,EAANG,OAGb,OAFgBC,OAAOC,YAAcH,IACzBE,OAAOC,YAAcF,EAErC,CACO,SAASG,EAA2BhC,EAAWiC,EAASC,GAC3D,IAAqCC,EAAAnC,EAAU2B,wBAAvCC,EAAGO,EAAHP,IAGR,MAAO,CAAEQ,GAFEH,EADME,EAAJE,MAAWF,EAALG,MAGPC,GADDL,EAAUN,GAFWO,EAANN,OAI9B,CACO,IAAMW,EAAuB,SAAmDC,GAAA,IAAhDC,EAAUD,EAAVC,WAAYlB,EAAaiB,EAAbjB,cAAemB,EAAIF,EAAJE,KAAMC,EAAOH,EAAPG,QACpE/E,EAAAqC,WAAU,WACN,IAAM2C,EAAUH,EAAWpE,QAC3B,GAAKuE,GAAYrB,GAAkBoB,EAAQ/C,OAA3C,CAGA2B,EAAcjD,OACd,IAAMuE,EAAoB,WACtB,IAAIC,EAAkB,KAChBC,EAAgB,WAClB,IAAMC,EAAiBxB,EAAuBoB,GAExCK,EAASN,EAAQO,MAAK,SAAAC,GAAA,IAAGC,EAAUD,EAAVC,WAAU,OAAOA,GAC5CJ,GAAkBI,EAAW,IAC7BJ,GAAkBI,EAAW,MAEjC,GAAKH,EAAL,CAGA,GAAoB,SAAhBA,EAAOI,MACPJ,EAAOG,YACkB,IAAzBH,EAAOK,OAAO1D,OAAc,CAE5B,IAAM2D,EAAYN,EAAOK,OAAO,GAC5BE,KAAKC,MAAOT,EAAiBC,EAAOG,WAAW,KAC1CH,EAAOG,WAAW,GAAKH,EAAOG,WAAW,IAC1CH,EAAOK,OAAO,IAEtB/B,EAAc1C,YAAY0E,EAAYhC,EAAcmC,WAAa,GAAG,EACxE,CACoB,SAAhBT,EAAOI,OAEiB,OAApBP,GAQIA,IAAoBG,EAAOK,QAKtB/B,EAAcoC,YAXvBpC,EAAcvC,aAAaiE,EAAOK,QAAQ,GAC1CR,EAAkBG,EAAOK,QAiBb,SAAhBL,EAAOI,MAAmB9B,EAAcoC,WAExCpC,EAAchB,eAAc,GAC5BgB,EAAcpD,QAEE,SAAhB8E,EAAOI,MAEP9B,EAAc1C,YAAYoE,EAAOK,OAAO,GAAK/B,EAAcmC,WAAa,GAAG,EAzC/E,GA6CJ,OADAE,SAAS9C,iBAAiB,SAAUiC,GAC7B,WACHa,SAAS7C,oBAAoB,SAAUgC,KAGzCc,EAAoB,WACtB,IAAMC,EAAe,SAACC,EAAIC,GACtB,IAAI7B,EAAI4B,EACJzB,EAAI0B,EAER,IAAW,IAAP7B,IAAmB,IAAPG,EAAU,CAEtB,IAAM2B,EAAMlC,EAA2Ba,EAAST,EAAGG,GAEnDH,EAAI8B,EAAI9B,EACRG,EAAI2B,EAAI3B,CACZ,CAEA,IAAMW,EAASN,EAAQO,MAAK,SAAkBgB,GAAA,IAAfC,EAAQD,EAARC,SAC3B,OAAIA,GACAhE,MAAMC,QAAQ+D,EAAShC,IACvBhC,MAAMC,QAAQ+D,EAAS7B,GACfH,GAAKgC,EAAShC,EAAE,IACpBA,GAAKgC,EAAShC,EAAE,IAChBG,GAAK6B,EAAS7B,EAAE,IAChBA,GAAK6B,EAAS7B,EAAE,MAEpB6B,GACCC,OAAOC,MAAMF,EAAShC,IACtBiC,OAAOC,MAAMF,EAAS7B,KAChBH,IAAMgC,EAAShC,GAAKG,IAAM6B,EAAS7B,CAGlD,IAEA,GAAKW,EAAL,CAIA,GAAoB,SAAhBA,EAAOI,MACPJ,EAAOkB,UACPhE,MAAMC,QAAQ6C,EAAOkB,SAAShC,IAC9BhC,MAAMC,QAAQ6C,EAAOkB,SAAS7B,IACL,IAAzBW,EAAOK,OAAO1D,OAAc,CAE5B,IAAM0E,GAAYnC,EAAIc,EAAOkB,SAAShC,EAAE,KACnCc,EAAOkB,SAAShC,EAAE,GAAKc,EAAOkB,SAAShC,EAAE,IACxCoC,GAAYjC,EAAIW,EAAOkB,SAAS7B,EAAE,KACnCW,EAAOkB,SAAS7B,EAAE,GAAKW,EAAOkB,SAAS7B,EAAE,IAC9Cf,EAAcvC,aAAaiE,EAAOK,QAAQ,GAC1C/B,EAAc1C,YAAY2E,KAAKC,MAAOa,EAAWC,GAAY,GACxDtB,EAAOK,OAAO,GAAKL,EAAOK,OAAO,MAAM,EAChD,CACoB,SAAhBL,EAAOI,MACP9B,EAAcvC,aAAaiE,EAAOK,QAAQ,GAE1B,SAAhBL,EAAOI,OAEH9B,EAAcoC,UACdpC,EAAchB,eAAc,GAEhCgB,EAAcvC,aAAaiE,EAAOK,SAElB,SAAhBL,EAAOI,MACP9B,EAAc1C,YAAYoE,EAAOK,OAAO,IAAI,EA3BhD,GA8BEkB,EAAmB,SAACC,GACtBX,EAAaW,EAAGC,QAASD,EAAGE,UAE1BC,EAAkB,WACpBd,GAAc,GAAI,IAItB,OAFAlB,EAAQ9B,iBAAiB,YAAa0D,GACtC5B,EAAQ9B,iBAAiB,WAAY8D,GAC9B,WACHhC,EAAQ7B,oBAAoB,YAAayD,GACzC5B,EAAQ7B,oBAAoB,WAAY6D,KAGhD,OAAQlC,GACJ,IAAK,SACD,OAAOG,IACX,IAAK,SACD,OAAOgB,IA7If,CAgJJ,GAAG,CAACnB,EAAMnB,GACd,EACMsD,EAAyB,SAAmCC,GAAA,IAAhCnC,EAAOmC,EAAPnC,QAASD,EAAIoC,EAAJpC,KAAMqC,EAASD,EAATC,UACrCxD,EAA+CwD,EAA/CxD,cAAeL,EAAgC6D,EAAhC7D,KAAMI,EAA0ByD,EAA1BzD,sBAO7B,OANAiB,EAAqB,CACjBI,QAAAA,EACApB,cAAAA,EACAmB,KAAAA,EACAD,WAAYnB,IAETJ,CACX,8BC3KM8D,EAAS,SAAC9I,GACZ,IAAIkC,EAAI6G,EAAIC,EACJ/I,EAAyCD,EAAzCC,MAAOgJ,EAAkCjJ,EAAlCiJ,cAAkBC,EAAW5H,EAAKtB,EAAKmJ,GAItDC,EAA+LrJ,EAAUmJ,EAAajJ,GAA9M+E,EAAIoE,EAAJpE,KAAM/C,EAAImH,EAAJnH,KAAMG,EAAIgH,EAAJhH,KAAMC,EAAK+G,EAAL/G,MAAOC,EAAQ8G,EAAR9G,SAAUK,EAAWyG,EAAXzG,YAAaH,EAAW4G,EAAX5G,YAAaI,EAAYwG,EAAZxG,aAAcE,EAAYsG,EAAZtG,aAAcG,EAAWmG,EAAXnG,YAAaE,EAAWiG,EAAXjG,YAAaE,EAAO+F,EAAP/F,QAAS+B,EAAqBgE,EAArBhE,sBAAuBxD,EAAewH,EAAfxH,gBAAiByD,EAAa+D,EAAb/D,cAyB5K,OArBA3D,EAAAqC,WAAU,WACF/D,EAAMgB,YACNhB,EAAMgB,UAAUmB,QAAU,CACtBF,KAAAA,EACAG,KAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAE,YAAAA,EACAG,YAAAA,EACAC,aAAAA,EACAE,aAAAA,EACAG,YAAAA,EACAE,YAAAA,EACAE,QAAAA,EACA+B,sBAAAA,EACAxD,gBAAAA,EACAyD,cAAAA,MAIT,CAA4B,QAA1BnD,EAAKlC,EAAMgB,iBAA8B,IAAPkB,OAAgB,EAASA,EAAGC,UAC5DwG,EAAuB,CAC1BE,UAAW,CACP7D,KAAAA,EACA/C,KAAAA,EACAG,KAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAK,YAAAA,EACAH,YAAAA,EACAI,aAAAA,EACAE,aAAAA,EACAG,YAAAA,EACAE,YAAAA,EACAE,QAAAA,EACA+B,sBAAAA,EACAxD,gBAAAA,EACAyD,cAAAA,GAEJoB,QAAwG,QAA9FsC,EAAuB,OAAlBE,QAA4C,IAAlBA,OAA2B,EAASA,EAAcxC,eAA4B,IAAPsC,EAAgBA,EAAK,GACrIvC,KAAkG,QAA3FwC,EAAuB,OAAlBC,QAA4C,IAAlBA,OAA2B,EAASA,EAAczC,YAAyB,IAAPwC,EAAgBA,EAAK,UAEvI,oQCvDuC,IAAkBK,QAAnC,qBAAdC,YAAiDD,QAI/C,WAAc,aAEtB,IAAIE,MAAQ,6BACRC,aAAe,GACfC,eAAgB,EAChBC,qBAAuB,OAEvBC,aAAe,SAAsBC,GACvCH,gBAAkBG,CACpB,EAEIC,aAAe,WACjB,OAAOJ,aACT,EAEIK,gBAAkB,SAAyBrH,GAC7C+G,aAAe/G,CACjB,EAEIsH,gBAAkB,WACpB,OAAOP,YACT,EAEA,SAASQ,UAAU7C,GAEjB,OAAOO,SAASxC,cAAciC,EAChC,CAEA,SAAS8C,gBAAgBC,EAASC,GAChC,IAAIC,EAEAC,EADAC,EAAMJ,EAAQxG,OAGlB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAGxB,IAAK,IAAIG,KAFTF,EAAkBH,EAAQE,GAAGI,UAGvBC,OAAOD,UAAUE,eAAeC,KAAKN,EAAiBE,KAAOJ,EAAYK,UAAUD,GAAQF,EAAgBE,GAGrH,CAEA,SAASK,cAAcC,EAAQC,GAC7B,OAAOL,OAAOM,yBAAyBF,EAAQC,EACjD,CAEA,SAASE,oBAAoBR,GAC3B,SAASS,IAAiB,CAG1B,OADAA,EAAcT,UAAYA,EACnBS,CACT,CAGA,IAAIC,uBAAyB,WAC3B,SAASC,EAAgBC,GACvBC,KAAKC,OAAS,GACdD,KAAKD,aAAeA,EACpBC,KAAKE,QAAU,EACfF,KAAKG,UAAW,CAClB,CAoFA,OAlFAL,EAAgBX,UAAY,CAC1BiB,SAAU,SAAkBC,GAC1BL,KAAKC,OAAOK,KAAKD,EACnB,EACArJ,MAAO,WACL,IAAI+H,EACAE,EAAMe,KAAKC,OAAO5H,OAEtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKC,OAAOlB,GAAG/H,OAEnB,EACAuJ,OAAQ,WACN,IAAIxB,EACAE,EAAMe,KAAKC,OAAO5H,OAEtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKC,OAAOlB,GAAGwB,QAEnB,EACAC,QAAS,SAAiBC,GACxB,IAAI1B,EACAE,EAAMe,KAAKC,OAAO5H,OAEtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKC,OAAOlB,GAAGyB,QAAQC,EAE3B,EACAC,YAAa,SAAqBC,GAChC,OAAIX,KAAKD,aACAC,KAAKD,aAAaY,GAGvBrG,OAAOsG,KACF,IAAItG,OAAOsG,KAAK,CACrBC,IAAK,CAACF,KAIH,CACLG,WAAW,EACXlK,KAAM,WACJoJ,KAAKc,WAAY,CACnB,EACAC,KAAM,WACJf,KAAKc,WAAY,CACnB,EACAE,QAAS,WAAoB,EAC7BC,KAAM,WAAiB,EACvBC,UAAW,WAAsB,EAErC,EACAC,gBAAiB,SAAyBpB,GACxCC,KAAKD,aAAeA,CACtB,EACAmB,UAAW,SAAmB9J,GAC5B4I,KAAKE,QAAU9I,EAEf4I,KAAKoB,eACP,EACAC,KAAM,WACJrB,KAAKG,UAAW,EAEhBH,KAAKoB,eACP,EACAE,OAAQ,WACNtB,KAAKG,UAAW,EAEhBH,KAAKoB,eACP,EACAG,UAAW,WACT,OAAOvB,KAAKE,OACd,EACAkB,cAAe,WACb,IAAIrC,EACAE,EAAMe,KAAKC,OAAO5H,OAEtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKC,OAAOlB,GAAGyC,OAAOxB,KAAKE,SAAWF,KAAKG,SAAW,EAAI,GAE9D,GAEK,WACL,OAAO,IAAIL,CACb,CACF,CA7F6B,GA+FzB2B,iBAAmB,WACrB,SAASC,EAAmB5F,EAAMmD,GAChC,IAEI7H,EAFA2H,EAAI,EACJ4C,EAAM,GAGV,OAAQ7F,GACN,IAAK,QACL,IAAK,SACH1E,EAAQ,EACR,MAEF,QACEA,EAAQ,IAIZ,IAAK2H,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4C,EAAIrB,KAAKlJ,GAGX,OAAOuK,CACT,CAkBA,MAAiC,oBAAtBC,mBAA4D,oBAAjBC,aAhBtD,SAAiC/F,EAAMmD,GACrC,MAAa,YAATnD,EACK,IAAI+F,aAAa5C,GAGb,UAATnD,EACK,IAAIgG,WAAW7C,GAGX,WAATnD,EACK,IAAI8F,kBAAkB3C,GAGxByC,EAAmB5F,EAAMmD,EAClC,EAMOyC,CACT,CA7CuB,GA+CvB,SAASK,iBAAiB9C,GACxB,OAAOrG,MAAMoJ,MAAM,KAAM,CACvB3J,OAAQ4G,GAEZ,CAEA,SAASgD,UAAUC,GAAuV,OAA1OD,UAArD,oBAAXE,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBF,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOhD,UAAY,gBAAkB+C,CAAK,EAAYD,UAAUC,EAAM,CACjY,IAAII,iBAAkB,EAClBC,kBAAoB,KACpBC,sBAAwB,KACxBC,WAAa,GACbC,SAAW,iCAAiCC,KAAK1E,UAAU2E,WAC3DC,oBAAqB,EACrBC,MAAQ7G,KAAK8G,IACbC,OAAS/G,KAAKgH,KACdC,QAAUjH,KAAKkH,MACfC,MAAQnH,KAAKoH,IACbC,MAAQrH,KAAKsH,IACbC,OAAS,CAAC,EAYd,SAASC,qBACP,MAAO,CAAC,CACV,EAZA,WACE,IACI1E,EADA2E,EAAgB,CAAC,MAAO,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,QAAS,QAAS,MAAO,OAAQ,MAAO,QAAS,SAAU,QAAS,OAAQ,MAAO,QAAS,OAAQ,QAAS,MAAO,MAAO,MAAO,SAAU,QAAS,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAAS,IAAK,OAAQ,MAAO,SAAU,QAAS,KAAM,UAAW,SAExWzE,EAAMyE,EAAcrL,OAExB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxByE,OAAOE,EAAc3E,IAAM9C,KAAKyH,EAAc3E,GAEjD,CARD,GAcAyE,OAAOG,OAAS1H,KAAK0H,OAErBH,OAAOI,IAAM,SAAUC,GAGrB,GAAe,WAFF5B,UAAU4B,IAEIA,EAAIxL,OAAQ,CACrC,IACI0G,EADA+E,EAAS/B,iBAAiB8B,EAAIxL,QAE9B4G,EAAM4E,EAAIxL,OAEd,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB+E,EAAO/E,GAAK9C,KAAK2H,IAAIC,EAAI9E,IAG3B,OAAO+E,CACT,CAEA,OAAO7H,KAAK2H,IAAIC,EAClB,EAEA,IAAIE,qBAAuB,IACvBC,UAAY/H,KAAKgI,GAAK,IACtBC,YAAc,MAElB,SAASC,YAAY5F,GACnBsE,qBAAuBtE,CACzB,CAEA,SAAS6F,MAAMhN,GACb,OAAIyL,mBACK5G,KAAKoI,MAAMjN,GAGbA,CACT,CAEA,SAASkN,SAASC,GAChBA,EAAQ3P,MAAMgI,SAAW,WACzB2H,EAAQ3P,MAAMwF,IAAM,EACpBmK,EAAQ3P,MAAMiG,KAAO,EACrB0J,EAAQ3P,MAAM4P,QAAU,QACxBD,EAAQ3P,MAAM6P,gBAAkB,MAChCF,EAAQ3P,MAAM8P,sBAAwB,MACtCH,EAAQ3P,MAAM+P,mBAAqB,UACnCJ,EAAQ3P,MAAMgQ,yBAA2B,UACzCL,EAAQ3P,MAAMiQ,eAAiB,cAC/BN,EAAQ3P,MAAMkQ,qBAAuB,cACrCP,EAAQ3P,MAAMmQ,kBAAoB,aACpC,CAEA,SAASC,kBAAkBlJ,EAAMmJ,EAAaC,EAAWC,GACvDnF,KAAKlE,KAAOA,EACZkE,KAAKiF,YAAcA,EACnBjF,KAAKkF,UAAYA,EACjBlF,KAAKxI,UAAY2N,EAAkB,GAAK,EAAI,CAC9C,CAEA,SAASC,gBAAgBtJ,EAAMqJ,GAC7BnF,KAAKlE,KAAOA,EACZkE,KAAKxI,UAAY2N,EAAkB,GAAK,EAAI,CAC9C,CAEA,SAASE,oBAAoBvJ,EAAMwJ,EAAYC,EAAaJ,GAC1DnF,KAAKlE,KAAOA,EACZkE,KAAKuF,YAAcA,EACnBvF,KAAKsF,WAAaA,EAClBtF,KAAKxI,UAAY2N,EAAkB,GAAK,EAAI,CAC9C,CAEA,SAASK,oBAAoB1J,EAAMK,EAAYsJ,GAC7CzF,KAAKlE,KAAOA,EACZkE,KAAK7D,WAAaA,EAClB6D,KAAKyF,YAAcA,CACrB,CAEA,SAASC,eAAe5J,EAAM6J,GAC5B3F,KAAKlE,KAAOA,EACZkE,KAAK2F,OAASA,CAChB,CAEA,SAASC,wBAAwBC,EAAaZ,GAC5CjF,KAAKlE,KAAO,mBACZkE,KAAK6F,YAAcA,EACnB7F,KAAKiF,YAAcA,CACrB,CAEA,SAASa,mBAAmBD,GAC1B7F,KAAKlE,KAAO,cACZkE,KAAK6F,YAAcA,CACrB,CAEA,SAASE,4BAA4BjK,EAAM+J,GACzC7F,KAAKlE,KAAOA,EACZkE,KAAK6F,YAAcA,CACrB,CAEA,IAAIG,gBAAkB,WACpB,IAAIC,EAAS,EACb,OAAO,WAEL,OAAOxD,WAAa,qBADpBwD,GAAU,EAEZ,CACF,CANsB,GAQtB,SAASC,SAASC,EAAGC,EAAGC,GACtB,IAAIC,EACAC,EACAC,EACAzH,EACA0H,EACAC,EACAC,EACAC,EAOJ,OAJAF,EAAIL,GAAK,EAAID,GACbO,EAAIN,GAAK,GAFTI,EAAQ,EAAJN,GADJpH,EAAI9C,KAAKkH,MAAU,EAAJgD,KAGEC,GACjBQ,EAAIP,GAAK,GAAK,EAAII,GAAKL,GAEfrH,EAAI,GACV,KAAK,EACHuH,EAAID,EACJE,EAAIK,EACJJ,EAAIE,EACJ,MAEF,KAAK,EACHJ,EAAIK,EACJJ,EAAIF,EACJG,EAAIE,EACJ,MAEF,KAAK,EACHJ,EAAII,EACJH,EAAIF,EACJG,EAAII,EACJ,MAEF,KAAK,EACHN,EAAII,EACJH,EAAII,EACJH,EAAIH,EACJ,MAEF,KAAK,EACHC,EAAIM,EACJL,EAAIG,EACJF,EAAIH,EACJ,MAEF,KAAK,EACHC,EAAID,EACJE,EAAIG,EACJF,EAAIG,EAOR,MAAO,CAACL,EAAGC,EAAGC,EAChB,CAEA,SAASK,SAASP,EAAGC,EAAGC,GACtB,IAGIL,EAHA9C,EAAMpH,KAAKoH,IAAIiD,EAAGC,EAAGC,GACrBjD,EAAMtH,KAAKsH,IAAI+C,EAAGC,EAAGC,GACrBM,EAAIzD,EAAME,EAEV6C,EAAY,IAAR/C,EAAY,EAAIyD,EAAIzD,EACxBgD,EAAIhD,EAAM,IAEd,OAAQA,GACN,KAAKE,EACH4C,EAAI,EACJ,MAEF,KAAKG,EACHH,EAAII,EAAIC,EAAIM,GAAKP,EAAIC,EAAI,EAAI,GAC7BL,GAAK,EAAIW,EACT,MAEF,KAAKP,EACHJ,EAAIK,EAAIF,EAAQ,EAAJQ,EACZX,GAAK,EAAIW,EACT,MAEF,KAAKN,EACHL,EAAIG,EAAIC,EAAQ,EAAJO,EACZX,GAAK,EAAIW,EAOb,MAAO,CAACX,EAAGC,EAAGC,EAChB,CAEA,SAASU,mBAAmBC,EAAOC,GACjC,IAAIC,EAAML,SAAoB,IAAXG,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAE,EAAI,IAAMD,EAENC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,IAAM,IACnBA,EAAI,GAAK,GAGJhB,SAASgB,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACtC,CAEA,SAASC,mBAAmBH,EAAOC,GACjC,IAAIC,EAAML,SAAoB,IAAXG,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAE,EAAI,IAAMD,EAENC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,GAAK,IAClBA,EAAI,GAAK,GAGJhB,SAASgB,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACtC,CAEA,SAASE,YAAYJ,EAAOC,GAC1B,IAAIC,EAAML,SAAoB,IAAXG,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAE,EAAI,IAAMD,EAAS,IAEfC,EAAI,GAAK,EACXA,EAAI,IAAM,EACDA,EAAI,GAAK,IAClBA,EAAI,IAAM,GAGLhB,SAASgB,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACtC,CAEA,IAAIG,SAAW,WACb,IACItI,EACAuI,EAFAC,EAAW,GAIf,IAAKxI,EAAI,EAAGA,EAAI,IAAKA,GAAK,EACxBuI,EAAMvI,EAAEyI,SAAS,IACjBD,EAASxI,GAAoB,IAAfuI,EAAIjP,OAAe,IAAMiP,EAAMA,EAG/C,OAAO,SAAUhB,EAAGC,EAAGC,GAarB,OAZIF,EAAI,IACNA,EAAI,GAGFC,EAAI,IACNA,EAAI,GAGFC,EAAI,IACNA,EAAI,GAGC,IAAMe,EAASjB,GAAKiB,EAAShB,GAAKgB,EAASf,EACpD,CACF,CAzBe,GA2BXiB,mBAAqB,SAA4BlJ,GACnD+D,kBAAoB/D,CACtB,EAEImJ,mBAAqB,WACvB,OAAOpF,eACT,EAEIqF,qBAAuB,SAA8BvQ,GACvDmL,kBAAoBnL,CACtB,EAEIwQ,qBAAuB,WACzB,OAAOrF,iBACT,EAEIsF,wBAA0B,SAAiCzQ,GAC7DoL,sBAAwBpL,CAC1B,EAEI0Q,wBAA0B,WAC5B,OAAOtF,qBACT,EAEIuF,wBAA0B,SAAiC3Q,GAC7D2M,qBAAuB3M,CACzB,EAEI4Q,wBAA0B,WAC5B,OAAOjE,oBACT,EAEIkE,YAAc,SAAqB7Q,GACrCqL,WAAarL,CACf,EAEI8Q,YAAc,WAChB,OAAOzF,UACT,EAEA,SAAS0F,SAASrM,GAEhB,OAAOO,SAAS+L,gBAAgBlK,MAAOpC,EACzC,CAEA,SAASuM,UAAUnG,GAAuV,OAA1OmG,UAArD,oBAAXlG,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBF,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOhD,UAAY,gBAAkB+C,CAAK,EAAYmG,UAAUnG,EAAM,CAEjY,IAAIoG,YAAc,WAChB,IAEIC,EACAC,EAHAC,EAAa,EACbC,EAAY,GAGZC,EAAc,CAChBC,UAAW,WAAsB,EACjCC,YAAa,SAAqBC,GAChCP,EAAS,CACPQ,KAAMD,GAEV,GAEEE,EAAc,CAChBH,YAAa,SAAqBE,GAChCJ,EAAYC,UAAU,CACpBG,KAAMA,GAEV,GAiBF,SAASE,IACFT,IACHA,EAhBJ,SAAsBU,GACpB,GAAI5O,OAAO6O,QAAU7O,OAAO8O,MAAQ5K,eAAgB,CAClD,IAAI6K,EAAO,IAAID,KAAK,CAAC,4CAA6CF,EAAG1B,YAAa,CAChF1L,KAAM,oBAGJwN,EAAMC,IAAIC,gBAAgBH,GAC9B,OAAO,IAAIF,OAAOG,EACpB,CAGA,OADAf,EAAWW,EACJP,CACT,CAIqBc,EAAa,SAAqBC,GAknBjD,GA3EKV,EAAYV,cACfU,EAAYV,YAviBd,WACE,SAASqB,EAAeC,EAAQC,GAC9B,IAAIC,EACA/K,EAEAgL,EACAC,EACAC,EACAC,EAJAjL,EAAM2K,EAAOvR,OAMjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAGxB,GAAI,OAFJ+K,EAAYF,EAAO7K,MAEO+K,EAAUK,UAAW,CAG7C,GAFAL,EAAUK,WAAY,EAElBL,EAAUM,QAAS,CACrB,IAAIC,EAAYP,EAAUQ,gBAG1B,IAFAN,EAAOK,EAAUhS,OAEZ0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,GAAIM,EAAUN,GAAGQ,GAAGN,EAAElL,EACpByL,EAA6BH,EAAUN,GAAGQ,GAAGN,QAI7C,IAFAC,EAAOG,EAAUN,GAAGQ,GAAGN,EAAE5R,OAEpB4R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrBI,EAAUN,GAAGQ,GAAGN,EAAEA,GAAG7D,GACvBoE,EAA6BH,EAAUN,GAAGQ,GAAGN,EAAEA,GAAG7D,EAAE,IAGlDiE,EAAUN,GAAGQ,GAAGN,EAAEA,GAAGP,GACvBc,EAA6BH,EAAUN,GAAGQ,GAAGN,EAAEA,GAAGP,EAAE,GAK9D,CAEqB,IAAjBI,EAAUW,IACZX,EAAUF,OAASc,EAAeZ,EAAUa,MAAOd,GACnDF,EAAeG,EAAUF,OAAQC,IACP,IAAjBC,EAAUW,GACnBG,EAAed,EAAUe,QACC,IAAjBf,EAAUW,IACnBK,EAAahB,EAEjB,CAEJ,CA4CA,SAASY,EAAeK,EAAIlB,GAC1B,IAAImB,EAhBN,SAAkBD,EAAIlB,GAIpB,IAHA,IAAI9K,EAAI,EACJE,EAAM4K,EAAMxR,OAET0G,EAAIE,GAAK,CACd,GAAI4K,EAAM9K,GAAGgM,KAAOA,EAClB,OAAOlB,EAAM9K,GAGfA,GAAK,CACP,CAEA,OAAO,IACT,CAGakM,CAASF,EAAIlB,GAExB,OAAImB,EACGA,EAAKpB,OAAOsB,OAKVC,KAAKC,MAAMD,KAAKE,UAAUL,EAAKpB,UAJpCoB,EAAKpB,OAAOsB,QAAS,EACdF,EAAKpB,QAMT,IACT,CAEA,SAASgB,EAAejJ,GACtB,IAAI5C,EAEAgL,EACAC,EAEJ,IAAKjL,EAJK4C,EAAItJ,OAIC,EAAG0G,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd4C,EAAI5C,GAAG0L,GACT,GAAI9I,EAAI5C,GAAGuM,GAAGrB,EAAElL,EACdyL,EAA6B7I,EAAI5C,GAAGuM,GAAGrB,QAIvC,IAFAD,EAAOrI,EAAI5C,GAAGuM,GAAGrB,EAAE5R,OAEd0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrBpI,EAAI5C,GAAGuM,GAAGrB,EAAEF,GAAG3D,GACjBoE,EAA6B7I,EAAI5C,GAAGuM,GAAGrB,EAAEF,GAAG3D,EAAE,IAG5CzE,EAAI5C,GAAGuM,GAAGrB,EAAEF,GAAGL,GACjBc,EAA6B7I,EAAI5C,GAAGuM,GAAGrB,EAAEF,GAAGL,EAAE,QAI7B,OAAd/H,EAAI5C,GAAG0L,IAChBG,EAAejJ,EAAI5C,GAAGwM,GAG5B,CAEA,SAASf,EAA6B1B,GACpC,IAAI/J,EACAE,EAAM6J,EAAK/J,EAAE1G,OAEjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB+J,EAAK/J,EAAEA,GAAG,IAAM+J,EAAKzC,EAAEtH,GAAG,GAC1B+J,EAAK/J,EAAEA,GAAG,IAAM+J,EAAKzC,EAAEtH,GAAG,GAC1B+J,EAAK0C,EAAEzM,GAAG,IAAM+J,EAAKzC,EAAEtH,GAAG,GAC1B+J,EAAK0C,EAAEzM,GAAG,IAAM+J,EAAKzC,EAAEtH,GAAG,EAE9B,CAEA,SAAS0M,EAAaC,EAASC,GAC7B,IAAIC,EAAcD,EAAoBA,EAAkBE,MAAM,KAAO,CAAC,IAAK,IAAK,KAEhF,OAAIH,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,MAIzBA,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,MAIzBA,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,KAItB,MACT,CAEA,IAAII,EAAY,WACd,IAAIC,EAAiB,CAAC,EAAG,EAAG,IAE5B,SAASC,EAAgBC,GACvB,IAAIC,EAAeD,EAAUrF,EAAEE,EAC/BmF,EAAUrF,EAAEE,EAAI,CACdmD,EAAG,CAAC,CACF7D,EAAG8F,EACHtF,EAAG,IAGT,CAEA,SAASuF,EAAcvC,GACrB,IAAI7K,EACAE,EAAM2K,EAAOvR,OAEjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACH,IAAjB6K,EAAO7K,GAAG0L,IACZuB,EAAgBpC,EAAO7K,GAG7B,CAEA,OAAO,SAAUlK,GACf,GAAI4W,EAAaM,EAAgBlX,EAAcwR,KAC7C8F,EAActX,EAAc+U,QAExB/U,EAAcuX,QAAQ,CACxB,IAAIrN,EACAE,EAAMpK,EAAcuX,OAAO/T,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBlK,EAAcuX,OAAOrN,GAAG6K,QAC1BuC,EAActX,EAAcuX,OAAOrN,GAAG6K,OAG5C,CAEJ,CACF,CAxCgB,GA0CZyC,EAAa,WACf,IAAIN,EAAiB,CAAC,EAAG,EAAG,IAC5B,OAAO,SAAUlX,GACf,GAAIA,EAAcyX,QAAUb,EAAaM,EAAgBlX,EAAcwR,GAAI,CACzE,IAAItH,EACAE,EAAMpK,EAAcyX,MAAMjU,OAE9B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAC3B,IAAIwN,EAAW1X,EAAcyX,MAAMvN,GAE/BwN,EAASxD,MAAQwD,EAASxD,KAAK8B,SACjCD,EAAe2B,EAASxD,KAAK8B,QAC7B0B,EAASxD,KAAKyD,GAAK,EACnBD,EAASxD,KAAK0D,GAAK,MACnBF,EAASxD,KAAK2D,GAAK,EACnBH,EAASxD,KAAK4D,GAAK,EACnBJ,EAASxD,KAAKuC,GAAK,CACjB5E,EAAG,CACDuD,EAAG,CAAC,EAAG,GACP2C,EAAG,GAELxG,EAAG,CACD6D,EAAG,CAAC,IAAK,KACT2C,EAAG,GAELA,EAAG,CACD3C,EAAG,CAAC,EAAG,GACP2C,EAAG,GAELtG,EAAG,CACD2D,EAAG,EACH2C,EAAG,GAELpB,EAAG,CACDvB,EAAG,IACH2C,EAAG,IAIF/X,EAAcyX,MAAMvN,GAAG6H,IAC1B2F,EAASxD,KAAK8B,OAAOvK,KAAK,CACxBmK,GAAI,OAEN8B,EAASxD,KAAK8B,OAAO,GAAGU,GAAGjL,KAAK,CAC9BoG,EAAG,CACDuD,EAAG,CAAC,EAAG,GACP2C,EAAG,GAELxG,EAAG,CACD6D,EAAG,CAAC,IAAK,KACT2C,EAAG,GAELA,EAAG,CACD3C,EAAG,CAAC,EAAG,GACP2C,EAAG,GAELtG,EAAG,CACD2D,EAAG,EACH2C,EAAG,GAELpB,EAAG,CACDvB,EAAG,IACH2C,EAAG,GAELC,GAAI,CACF5C,EAAG,EACH2C,EAAG,GAELE,GAAI,CACF7C,EAAG,EACH2C,EAAG,GAELnC,GAAI,QAIZ,CACF,CACF,CACF,CA/EiB,GAiFbsC,EAAsB,WACxB,IAAIhB,EAAiB,CAAC,EAAG,EAAG,IAE5B,SAASC,EAAgBC,GACvB,IAAIe,EAAWf,EAAUrF,EAAEF,EAED,kBAAfsG,EAASJ,IAClBI,EAASJ,EAAI,CACXA,EAAG,EACH3C,EAAG+C,EAASJ,IAIU,kBAAfI,EAAStG,IAClBsG,EAAStG,EAAI,CACXkG,EAAG,EACH3C,EAAG+C,EAAStG,IAIU,kBAAfsG,EAAS1G,IAClB0G,EAAS1G,EAAI,CACXsG,EAAG,EACH3C,EAAG+C,EAAS1G,GAGlB,CAEA,SAAS6F,EAAcvC,GACrB,IAAI7K,EACAE,EAAM2K,EAAOvR,OAEjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACH,IAAjB6K,EAAO7K,GAAG0L,IACZuB,EAAgBpC,EAAO7K,GAG7B,CAEA,OAAO,SAAUlK,GACf,GAAI4W,EAAaM,EAAgBlX,EAAcwR,KAC7C8F,EAActX,EAAc+U,QAExB/U,EAAcuX,QAAQ,CACxB,IAAIrN,EACAE,EAAMpK,EAAcuX,OAAO/T,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBlK,EAAcuX,OAAOrN,GAAG6K,QAC1BuC,EAActX,EAAcuX,OAAOrN,GAAG6K,OAG5C,CAEJ,CACF,CAvD0B,GAyDtBqD,EAAc,WAChB,IAAIlB,EAAiB,CAAC,EAAG,EAAG,GAE5B,SAASmB,EAAcrC,GACrB,IAAI9L,EAEAgL,EACAC,EAFA/K,EAAM4L,EAAOxS,OAIjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,GAAqB,OAAjB8L,EAAO9L,GAAG0L,GACZyC,EAAcrC,EAAO9L,GAAGwM,SACnB,GAAqB,OAAjBV,EAAO9L,GAAG0L,IAAgC,OAAjBI,EAAO9L,GAAG0L,GAC5C,GAAII,EAAO9L,GAAGoO,EAAElD,GAAKY,EAAO9L,GAAGoO,EAAElD,EAAE,GAAGlL,EAGpC,IAFAiL,EAAOa,EAAO9L,GAAGoO,EAAElD,EAAE5R,OAEhB0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrBc,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAG3D,IACnByE,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAG3D,EAAE,IAAM,IACzByE,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAG3D,EAAE,IAAM,IACzByE,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAG3D,EAAE,IAAM,IACzByE,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAG3D,EAAE,IAAM,KAGvByE,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAGL,IACnBmB,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAGL,EAAE,IAAM,IACzBmB,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAGL,EAAE,IAAM,IACzBmB,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAGL,EAAE,IAAM,IACzBmB,EAAO9L,GAAGoO,EAAElD,EAAEF,GAAGL,EAAE,IAAM,UAI7BmB,EAAO9L,GAAGoO,EAAElD,EAAE,IAAM,IACpBY,EAAO9L,GAAGoO,EAAElD,EAAE,IAAM,IACpBY,EAAO9L,GAAGoO,EAAElD,EAAE,IAAM,IACpBY,EAAO9L,GAAGoO,EAAElD,EAAE,IAAM,GAI5B,CAEA,SAASkC,EAAcvC,GACrB,IAAI7K,EACAE,EAAM2K,EAAOvR,OAEjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACH,IAAjB6K,EAAO7K,GAAG0L,IACZyC,EAActD,EAAO7K,GAAG8L,OAG9B,CAEA,OAAO,SAAUhW,GACf,GAAI4W,EAAaM,EAAgBlX,EAAcwR,KAC7C8F,EAActX,EAAc+U,QAExB/U,EAAcuX,QAAQ,CACxB,IAAIrN,EACAE,EAAMpK,EAAcuX,OAAO/T,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBlK,EAAcuX,OAAOrN,GAAG6K,QAC1BuC,EAActX,EAAcuX,OAAOrN,GAAG6K,OAG5C,CAEJ,CACF,CApEkB,GAsEdwD,EAAc,WAChB,IAAIrB,EAAiB,CAAC,EAAG,EAAG,IAE5B,SAASsB,EAAsB1L,GAC7B,IAAI5C,EAEAgL,EACAC,EAEJ,IAAKjL,EAJK4C,EAAItJ,OAIC,EAAG0G,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd4C,EAAI5C,GAAG0L,GACT,GAAI9I,EAAI5C,GAAGuM,GAAGrB,EAAElL,EACd4C,EAAI5C,GAAGuM,GAAGrB,EAAEkD,EAAIxL,EAAI5C,GAAGuO,YAIvB,IAFAtD,EAAOrI,EAAI5C,GAAGuM,GAAGrB,EAAE5R,OAEd0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrBpI,EAAI5C,GAAGuM,GAAGrB,EAAEF,GAAG3D,IACjBzE,EAAI5C,GAAGuM,GAAGrB,EAAEF,GAAG3D,EAAE,GAAG+G,EAAIxL,EAAI5C,GAAGuO,QAG7B3L,EAAI5C,GAAGuM,GAAGrB,EAAEF,GAAGL,IACjB/H,EAAI5C,GAAGuM,GAAGrB,EAAEF,GAAGL,EAAE,GAAGyD,EAAIxL,EAAI5C,GAAGuO,YAId,OAAd3L,EAAI5C,GAAG0L,IAChB4C,EAAsB1L,EAAI5C,GAAGwM,GAGnC,CAEA,SAASY,EAAcvC,GACrB,IAAIE,EACA/K,EAEAgL,EACAC,EACAC,EACAC,EAJAjL,EAAM2K,EAAOvR,OAMjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAG3B,IAFA+K,EAAYF,EAAO7K,IAELqL,QAAS,CACrB,IAAIC,EAAYP,EAAUQ,gBAG1B,IAFAN,EAAOK,EAAUhS,OAEZ0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,GAAIM,EAAUN,GAAGQ,GAAGN,EAAElL,EACpBsL,EAAUN,GAAGQ,GAAGN,EAAEkD,EAAI9C,EAAUN,GAAGwD,QAInC,IAFArD,EAAOG,EAAUN,GAAGQ,GAAGN,EAAE5R,OAEpB4R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrBI,EAAUN,GAAGQ,GAAGN,EAAEA,GAAG7D,IACvBiE,EAAUN,GAAGQ,GAAGN,EAAEA,GAAG7D,EAAE,GAAG+G,EAAI9C,EAAUN,GAAGwD,IAGzClD,EAAUN,GAAGQ,GAAGN,EAAEA,GAAGP,IACvBW,EAAUN,GAAGQ,GAAGN,EAAEA,GAAGP,EAAE,GAAGyD,EAAI9C,EAAUN,GAAGwD,GAKrD,CAEqB,IAAjBzD,EAAUW,IACZ4C,EAAsBvD,EAAUe,OAEpC,CACF,CAEA,OAAO,SAAUhW,GACf,GAAI4W,EAAaM,EAAgBlX,EAAcwR,KAC7C8F,EAActX,EAAc+U,QAExB/U,EAAcuX,QAAQ,CACxB,IAAIrN,EACAE,EAAMpK,EAAcuX,OAAO/T,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBlK,EAAcuX,OAAOrN,GAAG6K,QAC1BuC,EAActX,EAAcuX,OAAOrN,GAAG6K,OAG5C,CAEJ,CACF,CAzFkB,GA0GlB,SAASkB,EAAa/B,GACI,IAApBA,EAAKnC,EAAEgG,EAAEvU,QAAyB0Q,EAAKnC,EAAEF,CAE/C,CAEA,IAAI8G,EAAW,CACfA,aArBA,SAAsB3Y,GAChBA,EAAc4Y,aAIlBR,EAAYpY,GACZiX,EAAUjX,GACVwX,EAAWxX,GACXkY,EAAoBlY,GACpBuY,EAAYvY,GACZ8U,EAAe9U,EAAc+U,OAAQ/U,EAAcuX,QA/drD,SAAuBE,EAAOF,GAC5B,GAAIE,EAAO,CACT,IAAIvN,EAAI,EACJE,EAAMqN,EAAMjU,OAEhB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACL,IAAfuN,EAAMvN,GAAG6H,IAEX0F,EAAMvN,GAAGgK,KAAKa,OAASc,EAAe4B,EAAMvN,GAAGgK,KAAK4B,MAAOyB,GAa3DzC,EAAe2C,EAAMvN,GAAGgK,KAAKa,OAAQwC,GAG3C,CACF,CAucEsB,CAAc7Y,EAAcyX,MAAOzX,EAAcuX,QACjDvX,EAAc4Y,YAAa,EAC7B,GAcA,OALAD,EAASP,YAAcA,EACvBO,EAASnB,WAAaA,EACtBmB,EAAST,oBAAsBA,EAC/BS,EAASJ,YAAcA,EACvBI,EAAS7D,eAAiBA,EACnB6D,CACT,CAG4BG,IAGvB3E,EAAY4E,cACf5E,EAAY4E,YAAc,WACxB,SAASC,EAAeC,GAGtB,IAAIC,EAAoBD,EAAIE,kBAAkB,gBAE9C,OAAID,GAA0C,SAArBD,EAAIG,eAAkE,IAAvCF,EAAkBG,QAAQ,SAI9EJ,EAAIK,UAAwC,WAA5B9F,UAAUyF,EAAIK,UAHzBL,EAAIK,SAOTL,EAAIK,UAAoC,kBAAjBL,EAAIK,SACtBhD,KAAKC,MAAM0C,EAAIK,UAGpBL,EAAIM,aACCjD,KAAKC,MAAM0C,EAAIM,cAGjB,IACT,CAyCA,MAAO,CACLC,KAxCF,SAAmBvF,EAAMwF,EAAUC,EAAUC,GAC3C,IAAIL,EACAL,EAAM,IAAIW,eAEd,IAEEX,EAAIG,aAAe,MACrB,CAAE,MAAOS,GAAM,CAGfZ,EAAIa,mBAAqB,WACvB,GAAuB,IAAnBb,EAAIc,WACN,GAAmB,MAAfd,EAAIe,OACNV,EAAWN,EAAeC,GAC1BS,EAASJ,QAET,IACEA,EAAWN,EAAeC,GAC1BS,EAASJ,EACX,CAAE,MAAOO,GACHF,GACFA,EAAcE,EAElB,CAGN,EAEA,IAEEZ,EAAIgB,KAAK,CAAC,IAAK,IAAK,KAAKC,KAAK,IAAKjG,GAAM,EAC3C,CAAE,MAAOkG,GAEPlB,EAAIgB,KAAK,CAAC,IAAK,IAAK,KAAKC,KAAK,IAAKT,EAAW,IAAMxF,GAAM,EAC5D,CAEAgF,EAAImB,MACN,EAKF,CAnE0B,IAsER,kBAAhBvF,EAAEX,KAAKjN,KACTkN,EAAY4E,YAAYS,KAAK3E,EAAEX,KAAKD,KAAMY,EAAEX,KAAKuF,UAAU,SAAUvF,GACnEC,EAAYV,YAAY4G,aAAanG,GAErCC,EAAYH,YAAY,CACtBkC,GAAIrB,EAAEX,KAAKgC,GACXoE,QAASpG,EACT8F,OAAQ,WAEZ,IAAG,WACD7F,EAAYH,YAAY,CACtBkC,GAAIrB,EAAEX,KAAKgC,GACX8D,OAAQ,SAEZ,SACK,GAAoB,aAAhBnF,EAAEX,KAAKjN,KAAqB,CACrC,IAAIsT,EAAY1F,EAAEX,KAAKqG,UAEvBpG,EAAYV,YAAY4G,aAAaE,GAErCpG,EAAYH,YAAY,CACtBkC,GAAIrB,EAAEX,KAAKgC,GACXoE,QAASC,EACTP,OAAQ,WAEZ,KAA2B,aAAhBnF,EAAEX,KAAKjN,MAChBkN,EAAY4E,YAAYS,KAAK3E,EAAEX,KAAKD,KAAMY,EAAEX,KAAKuF,UAAU,SAAUvF,GACnEC,EAAYH,YAAY,CACtBkC,GAAIrB,EAAEX,KAAKgC,GACXoE,QAASpG,EACT8F,OAAQ,WAEZ,IAAG,WACD7F,EAAYH,YAAY,CACtBkC,GAAIrB,EAAEX,KAAKgC,GACX8D,OAAQ,SAEZ,GAEJ,IAEArG,EAAeI,UAAY,SAAUyG,GACnC,IAAItG,EAAOsG,EAAMtG,KACbgC,EAAKhC,EAAKgC,GACVuE,EAAU5G,EAAUqC,GACxBrC,EAAUqC,GAAM,KAEI,YAAhBhC,EAAK8F,OACPS,EAAQra,WAAW8T,EAAKoG,SACfG,EAAQC,SACjBD,EAAQC,SAEZ,EAEJ,CAEA,SAASC,EAAcva,EAAYsa,GAEjC,IAAIxE,EAAK,cADTtC,GAAc,GAMd,OAJAC,EAAUqC,GAAM,CACd9V,WAAYA,EACZsa,QAASA,GAEJxE,CACT,CAkCA,MAAO,CACL7S,cAjCF,SAAuB4Q,EAAM7T,EAAYsa,GACvCtG,IACA,IAAIwG,EAAYD,EAAcva,EAAYsa,GAC1C/G,EAAeK,YAAY,CACzB/M,KAAM,gBACNgN,KAAMA,EACNwF,SAAUhU,OAAOoV,SAASC,OAASrV,OAAOoV,SAASE,SACnD7E,GAAI0E,GAER,EAyBEI,SAvBF,SAAkB/G,EAAM7T,EAAYsa,GAClCtG,IACA,IAAIwG,EAAYD,EAAcva,EAAYsa,GAC1C/G,EAAeK,YAAY,CACzB/M,KAAM,WACNgN,KAAMA,EACNwF,SAAUhU,OAAOoV,SAASC,OAASrV,OAAOoV,SAASE,SACnD7E,GAAI0E,GAER,EAeEK,kBAbF,SAA2BC,EAAM9a,EAAYsa,GAC3CtG,IACA,IAAIwG,EAAYD,EAAcva,EAAYsa,GAC1C/G,EAAeK,YAAY,CACzB/M,KAAM,WACNsT,UAAWW,EACXhF,GAAI0E,GAER,EAOF,CA9vBkB,GAgwBdO,eAAiB,WACnB,IAAIC,EAAa,WACf,IAAIC,EAASvR,UAAU,UACvBuR,EAAOpV,MAAQ,EACfoV,EAAO7V,OAAS,EAChB,IAAI8V,EAAMD,EAAOE,WAAW,MAG5B,OAFAD,EAAIE,UAAY,gBAChBF,EAAIG,SAAS,EAAG,EAAG,EAAG,GACfJ,CACT,CARiB,GAUjB,SAASK,IACPvQ,KAAKwQ,cAAgB,EAEjBxQ,KAAKwQ,eAAiBxQ,KAAKyQ,aAAezQ,KAAK0Q,sBAAwB1Q,KAAK2Q,eAC1E3Q,KAAK4Q,gBACP5Q,KAAK4Q,eAAe,KAG1B,CAEA,SAASC,IACP7Q,KAAK0Q,qBAAuB,EAExB1Q,KAAKwQ,eAAiBxQ,KAAKyQ,aAAezQ,KAAK0Q,sBAAwB1Q,KAAK2Q,eAC1E3Q,KAAK4Q,gBACP5Q,KAAK4Q,eAAe,KAG1B,CAEA,SAASE,EAAcC,EAAWjb,EAAYkb,GAC5C,IAAIlI,EAAO,GAEX,GAAIiI,EAAUrH,EACZZ,EAAOiI,EAAUrK,OACZ,GAAI5Q,EAAY,CACrB,IAAImb,EAAYF,EAAUrK,GAEY,IAAlCuK,EAAU/C,QAAQ,aACpB+C,EAAYA,EAAUpF,MAAM,KAAK,IAGnC/C,EAAOhT,EAAamb,CACtB,MACEnI,EAAOkI,EACPlI,GAAQiI,EAAUG,EAAIH,EAAUG,EAAI,GACpCpI,GAAQiI,EAAUrK,EAGpB,OAAOoC,CACT,CAEA,SAASqI,EAAgBC,GACvB,IAAInL,EAAS,EACToL,EAAaC,YAAY,YACjBF,EAAIG,UAENzW,OAASmL,EAAS,OACxBjG,KAAKwR,eAELC,cAAcJ,IAGhBpL,GAAU,CACZ,EAAEyL,KAAK1R,MAAO,GAChB,CAkDA,SAAS2R,EAAkB5I,GACzB,IAAI6I,EAAK,CACPb,UAAWhI,GAETD,EAAOgI,EAAc/H,EAAM/I,KAAKlK,WAAYkK,KAAK8I,MAUrD,OATAR,YAAYuH,SAAS/G,EAAM,SAAU+I,GACnCD,EAAGR,IAAMS,EAET7R,KAAK8R,gBACP,EAAEJ,KAAK1R,MAAO,WACZ4R,EAAGR,IAAM,CAAC,EAEVpR,KAAK8R,gBACP,EAAEJ,KAAK1R,OACA4R,CACT,CAiEA,SAASG,IACP/R,KAAKwR,aAAejB,EAAYmB,KAAK1R,MACrCA,KAAK8R,eAAiBjB,EAAca,KAAK1R,MACzCA,KAAKmR,gBAAkBA,EAAgBO,KAAK1R,MAC5CA,KAAK2R,kBAAoBA,EAAkBD,KAAK1R,MAChDA,KAAKlK,WAAa,GAClBkK,KAAK8I,KAAO,GACZ9I,KAAKyQ,YAAc,EACnBzQ,KAAK2Q,cAAgB,EACrB3Q,KAAKwQ,aAAe,EACpBxQ,KAAK0Q,oBAAsB,EAC3B1Q,KAAK4Q,eAAiB,KACtB5Q,KAAKgS,OAAS,EAChB,CAgBA,OAdAD,EAAsB5S,UAAY,CAChC8S,WA/EF,SAAoB7F,EAAQ8F,GAE1B,IAAInT,EADJiB,KAAK4Q,eAAiBsB,EAEtB,IAAIjT,EAAMmN,EAAO/T,OAEjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACnBqN,EAAOrN,GAAG6K,SACRwC,EAAOrN,GAAG6H,GAAqB,QAAhBwF,EAAOrN,GAAG6H,EAGH,IAAhBwF,EAAOrN,GAAG6H,IACnB5G,KAAK2Q,eAAiB,EACtB3Q,KAAKgS,OAAO1R,KAAKN,KAAK2R,kBAAkBvF,EAAOrN,OAJ/CiB,KAAKyQ,aAAe,EACpBzQ,KAAKgS,OAAO1R,KAAKN,KAAKmS,iBAAiB/F,EAAOrN,MAOtD,EAgEEqT,cA1DF,SAAuBtJ,GACrB9I,KAAKlK,WAAagT,GAAQ,EAC5B,EAyDEuJ,QA/DF,SAAiBvJ,GACf9I,KAAK8I,KAAOA,GAAQ,EACtB,EA8DEwJ,aApCF,WACE,OAAOtS,KAAKyQ,cAAgBzQ,KAAKwQ,YACnC,EAmCE+B,eAjCF,WACE,OAAOvS,KAAK2Q,gBAAkB3Q,KAAK0Q,mBACrC,EAgCE1Y,QA3CF,WACEgI,KAAK4Q,eAAiB,KACtB5Q,KAAKgS,OAAO3Z,OAAS,CACvB,EAyCEma,SA3DF,SAAkBzB,GAIhB,IAHA,IAAIhS,EAAI,EACJE,EAAMe,KAAKgS,OAAO3Z,OAEf0G,EAAIE,GAAK,CACd,GAAIe,KAAKgS,OAAOjT,GAAGgS,YAAcA,EAC/B,OAAO/Q,KAAKgS,OAAOjT,GAAGqS,IAGxBrS,GAAK,CACP,CAEA,OAAO,IACT,EA+CE0T,cAzHF,SAAuB1B,GACrB,IAAIjI,EAAOgI,EAAcC,EAAW/Q,KAAKlK,WAAYkK,KAAK8I,MACtDsI,EAAMzS,UAAU,OACpByS,EAAIsB,YAAc,YAClBtB,EAAI7X,iBAAiB,OAAQyG,KAAKwR,cAAc,GAChDJ,EAAI7X,iBAAiB,QAAS,WAC5BqY,EAAGR,IAAMnB,EAETjQ,KAAKwR,cACP,EAAEE,KAAK1R,OAAO,GACdoR,EAAIvQ,IAAMiI,EACV,IAAI8I,EAAK,CACPR,IAAKA,EACLL,UAAWA,GAEb,OAAOa,CACT,EA0GEe,gBAxJF,SAAyB5B,GACvB,IAAIjI,EAAOgI,EAAcC,EAAW/Q,KAAKlK,WAAYkK,KAAK8I,MACtDsI,EAAMjJ,SAAS,SAEfzF,SACF1C,KAAKmR,gBAAgBC,GAErBA,EAAI7X,iBAAiB,OAAQyG,KAAKwR,cAAc,GAGlDJ,EAAI7X,iBAAiB,QAAS,WAC5BqY,EAAGR,IAAMnB,EAETjQ,KAAKwR,cACP,EAAEE,KAAK1R,OAAO,GACdoR,EAAIwB,eAAe,+BAAgC,OAAQ9J,GAEvD9I,KAAK6S,eAAeC,OACtB9S,KAAK6S,eAAeC,OAAO1B,GAE3BpR,KAAK6S,eAAeE,YAAY3B,GAGlC,IAAIQ,EAAK,CACPR,IAAKA,EACLL,UAAWA,GAEb,OAAOa,CACT,EA6HErB,YAAaA,EACbM,cAAeA,EACfmC,aApCF,SAAsBlX,EAAMmX,GACb,QAATnX,GACFkE,KAAK6S,eAAiBI,EACtBjT,KAAKmS,iBAAmBnS,KAAK2S,gBAAgBjB,KAAK1R,OAElDA,KAAKmS,iBAAmBnS,KAAKyS,cAAcf,KAAK1R,KAEpD,GA+BO+R,CACT,CAlOqB,GAoOrB,SAASmB,YAAa,CAEtBA,UAAU/T,UAAY,CACpBgU,aAAc,SAAsBC,EAAWC,GAC7C,GAAIrT,KAAKsT,KAAKF,GAGZ,IAFA,IAAIG,EAAYvT,KAAKsT,KAAKF,GAEjBrU,EAAI,EAAGA,EAAIwU,EAAUlb,OAAQ0G,GAAK,EACzCwU,EAAUxU,GAAGsU,EAGnB,EACA9Z,iBAAkB,SAA0B6Z,EAAW7E,GAOrD,OANKvO,KAAKsT,KAAKF,KACbpT,KAAKsT,KAAKF,GAAa,IAGzBpT,KAAKsT,KAAKF,GAAW9S,KAAKiO,GAEnB,WACLvO,KAAKxG,oBAAoB4Z,EAAW7E,EACtC,EAAEmD,KAAK1R,KACT,EACAxG,oBAAqB,SAA6B4Z,EAAW7E,GAC3D,GAAKA,GAEE,GAAIvO,KAAKsT,KAAKF,GAAY,CAI/B,IAHA,IAAIrU,EAAI,EACJE,EAAMe,KAAKsT,KAAKF,GAAW/a,OAExB0G,EAAIE,GACLe,KAAKsT,KAAKF,GAAWrU,KAAOwP,IAC9BvO,KAAKsT,KAAKF,GAAWI,OAAOzU,EAAG,GAE/BA,GAAK,EACLE,GAAO,GAGTF,GAAK,EAGFiB,KAAKsT,KAAKF,GAAW/a,SACxB2H,KAAKsT,KAAKF,GAAa,KAE3B,OAnBEpT,KAAKsT,KAAKF,GAAa,IAoB3B,GAGF,IAAIK,aAAe,WACjB,SAASC,EAAkBvE,GAMzB,IALA,IAEIwE,EAFAC,EAAQzE,EAAQtD,MAAM,QACtBgI,EAAO,CAAC,EAERC,EAAY,EAEP/U,EAAI,EAAGA,EAAI6U,EAAMvb,OAAQ0G,GAAK,EAGjB,KAFpB4U,EAAOC,EAAM7U,GAAG8M,MAAM,MAEbxT,SACPwb,EAAKF,EAAK,IAAMA,EAAK,GAAGI,OACxBD,GAAa,GAIjB,GAAkB,IAAdA,EACF,MAAM,IAAIE,MAGZ,OAAOH,CACT,CAEA,OAAO,SAAUI,GAGf,IAFA,IAAIC,EAAU,GAELnV,EAAI,EAAGA,EAAIkV,EAAS5b,OAAQ0G,GAAK,EAAG,CAC3C,IAAIoV,EAAUF,EAASlV,GACnBqV,EAAa,CACfC,KAAMF,EAAQG,GACdC,SAAUJ,EAAQK,IAGpB,IACEJ,EAAWjF,QAAUhE,KAAKC,MAAM6I,EAASlV,GAAG0V,GAC9C,CAAE,MAAOC,GACP,IACEN,EAAWjF,QAAUuE,EAAkBO,EAASlV,GAAG0V,GACrD,CAAE,MAAOE,GACPP,EAAWjF,QAAU,CACnBtZ,KAAMoe,EAASlV,GAAG0V,GAEtB,CACF,CAEAP,EAAQ5T,KAAK8T,EACf,CAEA,OAAOF,CACT,CACF,CAlDmB,GAoDfU,iBAAmB,WACrB,SAASC,EAAoB7J,GAC3BhL,KAAK8U,aAAaxU,KAAK0K,EACzB,CAEA,OAAO,WACL,SAAS+J,EAAqBlf,GAI5B,IAHA,IAAIkJ,EAAI,EACJE,EAAMe,KAAK8U,aAAazc,OAErB0G,EAAIE,GAAK,CACd,GAAIe,KAAK8U,aAAa/V,GAAGgK,MAAQ/I,KAAK8U,aAAa/V,GAAGgK,KAAKiM,KAAOnf,EAKhE,OAJImK,KAAK8U,aAAa/V,GAAGkW,cAAgBjV,KAAK8U,aAAa/V,GAAGgK,KAAKmM,IACjElV,KAAK8U,aAAa/V,GAAGkW,aAAajV,KAAKmV,cAGlCnV,KAAK8U,aAAa/V,GAAGqW,cAG9BrW,GAAK,CACP,CAEA,OAAO,IACT,CAKA,OAHAgW,EAAqBD,aAAe,GACpCC,EAAqBI,aAAe,EACpCJ,EAAqBF,oBAAsBA,EACpCE,CACT,CACF,CA9BuB,GAgCnBM,UAAY,CAAC,EAEbC,iBAAmB,SAA0BC,EAAKne,GACpDie,UAAUE,GAAOne,CACnB,EAEA,SAASoe,YAAYD,GACnB,OAAOF,UAAUE,EACnB,CAEA,SAASE,wBAEP,GAAIJ,UAAUnF,OACZ,MAAO,SAIT,IAAK,IAAIqF,KAAOF,UACd,GAAIA,UAAUE,GACZ,OAAOA,EAIX,MAAO,EACT,CAEA,SAASG,UAAUxT,GAAuV,OAA1OwT,UAArD,oBAAXvT,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBF,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOhD,UAAY,gBAAkB+C,CAAK,EAAYwT,UAAUxT,EAAM,CAEjY,IAAIyT,cAAgB,WAClB3V,KAAKsT,KAAO,GACZtT,KAAKnK,KAAO,GACZmK,KAAK8I,KAAO,GACZ9I,KAAK4V,UAAW,EAChB5V,KAAKmV,aAAe,EACpBnV,KAAKlH,gBAAkB,EACvBkH,KAAK7D,WAAa,EAClB6D,KAAKyF,YAAc,EACnBzF,KAAK6V,UAAY,EACjB7V,KAAK8V,UAAY,EACjB9V,KAAK+V,UAAY,EACjB/V,KAAKgW,cAAgB,EACrBhW,KAAKiW,UAAY,EACjBjW,KAAKnL,cAAgB,CAAC,EACtBmL,KAAKoM,OAAS,GACdpM,KAAK5D,UAAW,EAChB4D,KAAKjL,UAAW,EAChBiL,KAAKlL,MAAO,EACZkL,KAAKpK,SAAW,KAChBoK,KAAKkW,YAAclQ,kBACnBhG,KAAKlK,WAAa,GAClBkK,KAAKmW,cAAgB,EACrBnW,KAAKoW,WAAa,EAClBpW,KAAKqW,kBAAoB3O,qBACzB1H,KAAKtI,SAAW,GAChBsI,KAAKsW,OAAQ,EACbtW,KAAKuW,gBAAiB,EACtBvW,KAAKwW,iBAAmB5B,mBACxB5U,KAAKyW,eAAiB,IAAIzG,eAC1BhQ,KAAK0W,gBAAkB7W,yBACvBG,KAAKkU,QAAU,GACflU,KAAK2W,gBAAkB3W,KAAK2W,gBAAgBjF,KAAK1R,MACjDA,KAAK4W,aAAe5W,KAAK4W,aAAalF,KAAK1R,MAC3CA,KAAK6W,kBAAoB7W,KAAK6W,kBAAkBnF,KAAK1R,MACrDA,KAAK8W,gBAAkB,IAAI9R,kBAAkB,aAAc,EAAG,EAAG,GACjEhF,KAAKuC,kBAAoBqF,sBAC3B,EAEAhJ,gBAAgB,CAACsU,WAAYyC,eAE7BA,cAAcxW,UAAU4X,UAAY,SAAUC,IACxCA,EAAO3b,SAAW2b,EAAOxe,aAC3BwH,KAAK3E,QAAU2b,EAAO3b,SAAW2b,EAAOxe,WAG1C,IAAIye,EAAW,MAEXD,EAAOC,SACTA,EAAWD,EAAOC,SACTD,EAAOphB,WAChBqhB,EAAWD,EAAOphB,UAGpB,IAAIshB,EAAgB1B,YAAYyB,GAChCjX,KAAKpK,SAAW,IAAIshB,EAAclX,KAAMgX,EAAOjhB,kBAC/CiK,KAAKyW,eAAezD,aAAaiE,EAAUjX,KAAKpK,SAASuhB,WAAWC,MACpEpX,KAAKpK,SAASyhB,oBAAoBrX,KAAKwW,kBACvCxW,KAAKiX,SAAWA,EAEI,KAAhBD,EAAOliB,MAA+B,OAAhBkiB,EAAOliB,WAAiCmD,IAAhB+e,EAAOliB,OAAsC,IAAhBkiB,EAAOliB,KACpFkL,KAAKlL,MAAO,GACa,IAAhBkiB,EAAOliB,KAChBkL,KAAKlL,MAAO,EAEZkL,KAAKlL,KAAOwiB,SAASN,EAAOliB,KAAM,IAGpCkL,KAAKjL,WAAW,aAAciiB,IAASA,EAAOjiB,SAC9CiL,KAAKnK,KAAOmhB,EAAOnhB,KAAOmhB,EAAOnhB,KAAO,GACxCmK,KAAKuX,kBAAmBnY,OAAOD,UAAUE,eAAeC,KAAK0X,EAAQ,qBAAsBA,EAAOO,iBAClGvX,KAAKlK,WAAakhB,EAAOlhB,WACzBkK,KAAKhL,eAAiBgiB,EAAOhiB,eAEzBgiB,EAAOjX,cACTC,KAAK0W,gBAAgBvV,gBAAgB6V,EAAOjX,cAG1CiX,EAAOniB,cACTmL,KAAKwX,eAAeR,EAAOniB,eAClBmiB,EAAOlO,QACuB,IAAnCkO,EAAOlO,KAAK2O,YAAY,MAC1BzX,KAAK8I,KAAOkO,EAAOlO,KAAK4O,OAAO,EAAGV,EAAOlO,KAAK2O,YAAY,MAAQ,GAElEzX,KAAK8I,KAAOkO,EAAOlO,KAAK4O,OAAO,EAAGV,EAAOlO,KAAK2O,YAAY,KAAO,GAGnEzX,KAAK2X,SAAWX,EAAOlO,KAAK4O,OAAOV,EAAOlO,KAAK2O,YAAY,KAAO,GAClEzX,KAAK2X,SAAW3X,KAAK2X,SAASD,OAAO,EAAG1X,KAAK2X,SAASF,YAAY,UAClEnP,YAAYpQ,cAAc8e,EAAOlO,KAAM9I,KAAK2W,gBAAiB3W,KAAK4W,cAEtE,EAEAjB,cAAcxW,UAAUyX,aAAe,WACrC5W,KAAK4X,QAAQ,cACf,EAEAjC,cAAcxW,UAAUqY,eAAiB,SAAUzO,GACjDT,YAAYwH,kBAAkB/G,EAAM/I,KAAK2W,gBAC3C,EAEAhB,cAAcxW,UAAU0Y,QAAU,SAAUxc,EAASxG,GAC/CA,GAC+B,WAA7B6gB,UAAU7gB,KACZA,EAAgBsW,KAAKC,MAAMvW,IAI/B,IAAImiB,EAAS,CACX3b,QAASA,EACTxG,cAAeA,GAEbijB,EAAoBzc,EAAQ0c,WAChCf,EAAOlO,KAAOgP,EAAkBE,aAAa,uBAC3CF,EAAkBE,aAAa,uBAAuB5gB,MAAQ0gB,EAAkBE,aAAa,gBAC7FF,EAAkBE,aAAa,gBAAgB5gB,MAAQ0gB,EAAkBE,aAAa,WAAaF,EAAkBE,aAAa,WAAW5gB,MAAQ,GACvJ4f,EAAOC,SAAWa,EAAkBE,aAAa,kBAC/CF,EAAkBE,aAAa,kBAAkB5gB,MAAQ0gB,EAAkBE,aAAa,gBACxFF,EAAkBE,aAAa,gBAAgB5gB,MAAQ0gB,EAAkBE,aAAa,WACtFF,EAAkBE,aAAa,WAAW5gB,MAAQ0gB,EAAkBE,aAAa,oBACjFF,EAAkBE,aAAa,oBAAoB5gB,MAAQ0gB,EAAkBE,aAAa,eAAiBF,EAAkBE,aAAa,eAAe5gB,MAAQqe,yBAA2B,SAC9L,IAAI3gB,EAAOgjB,EAAkBE,aAAa,kBACxCF,EAAkBE,aAAa,kBAAkB5gB,MAAQ0gB,EAAkBE,aAAa,gBACxFF,EAAkBE,aAAa,gBAAgB5gB,MAAQ0gB,EAAkBE,aAAa,WAAaF,EAAkBE,aAAa,WAAW5gB,MAAQ,GAE1I,UAATtC,EACFkiB,EAAOliB,MAAO,EACI,SAATA,EACTkiB,EAAOliB,MAAO,EACI,KAATA,IACTkiB,EAAOliB,KAAOwiB,SAASxiB,EAAM,KAG/B,IAAIC,EAAW+iB,EAAkBE,aAAa,sBAC5CF,EAAkBE,aAAa,sBAAsB5gB,MAAQ0gB,EAAkBE,aAAa,oBAC5FF,EAAkBE,aAAa,oBAAoB5gB,OAAQ0gB,EAAkBE,aAAa,gBAAiBF,EAAkBE,aAAa,eAAe5gB,MAC3J4f,EAAOjiB,SAAwB,UAAbA,EAClBiiB,EAAOnhB,KAAOiiB,EAAkBE,aAAa,aAC3CF,EAAkBE,aAAa,aAAa5gB,MAAQ0gB,EAAkBE,aAAa,gBACnFF,EAAkBE,aAAa,gBAAgB5gB,MAAQ0gB,EAAkBE,aAAa,WAAaF,EAAkBE,aAAa,WAAW5gB,MAAQ,GAKrI,WAJF0gB,EAAkBE,aAAa,uBAC7CF,EAAkBE,aAAa,uBAAuB5gB,MAAQ0gB,EAAkBE,aAAa,qBAC7FF,EAAkBE,aAAa,qBAAqB5gB,MAAQ0gB,EAAkBE,aAAa,gBAAkBF,EAAkBE,aAAa,gBAAgB5gB,MAAQ,MAGpK4f,EAAOiB,WAAY,GAGhBjB,EAAOlO,KAGV9I,KAAK+W,UAAUC,GAFfhX,KAAK4X,QAAQ,UAIjB,EAEAjC,cAAcxW,UAAU+Y,cAAgB,SAAUnP,GAC5CA,EAAK0D,GAAKzM,KAAKnL,cAAc4X,KAC/BzM,KAAKnL,cAAc4X,GAAK1D,EAAK0D,GAC7BzM,KAAKyF,YAAcxJ,KAAKkH,MAAM4F,EAAK0D,GAAKzM,KAAKnL,cAAc2X,KAG7D,IACIzN,EAGAgL,EAJAH,EAAS5J,KAAKnL,cAAc+U,OAE5B3K,EAAM2K,EAAOvR,OACb8f,EAAYpP,EAAKa,OAEjBI,EAAOmO,EAAU9f,OAErB,IAAK0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAGzB,IAFAhL,EAAI,EAEGA,EAAIE,GAAK,CACd,GAAI2K,EAAO7K,GAAGgM,KAAOoN,EAAUpO,GAAGgB,GAAI,CACpCnB,EAAO7K,GAAKoZ,EAAUpO,GACtB,KACF,CAEAhL,GAAK,CACP,CAQF,IALIgK,EAAKuD,OAASvD,EAAKqP,SACrBpY,KAAKpK,SAASuhB,WAAWkB,YAAYC,SAASvP,EAAKuD,OACnDtM,KAAKpK,SAASuhB,WAAWkB,YAAYE,SAASxP,EAAKqP,MAAOpY,KAAKpK,SAASuhB,WAAWC,OAGjFrO,EAAKqD,OAGP,IAFAnN,EAAM8J,EAAKqD,OAAO/T,OAEb0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKnL,cAAcuX,OAAO9L,KAAKyI,EAAKqD,OAAOrN,IAI/CiB,KAAKnL,cAAc4Y,YAAa,EAChCnF,YAAYwH,kBAAkB9P,KAAKnL,cAAemL,KAAK6W,kBACzD,EAEAlB,cAAcxW,UAAU0X,kBAAoB,SAAU9N,GACpD/I,KAAKnL,cAAgBkU,EACrB,IAAIxG,EAAoBqF,uBAEpBrF,GACFA,EAAkBiW,gBAAgBxY,MAGpCA,KAAKyY,iBACP,EAEA9C,cAAcxW,UAAUsZ,gBAAkB,WACxC,IAAI/gB,EAAWsI,KAAKnL,cAAc6C,SAElC,IAAKA,GAAgC,IAApBA,EAASW,SAAiB2H,KAAKuX,iBAG9C,OAFAvX,KAAK4X,QAAQ,mBACb5X,KAAKmW,cAAgBnW,KAAKyF,aAI5B,IAAIiT,EAAUhhB,EAASihB,QACvB3Y,KAAKmW,cAAgBuC,EAAQrE,KAAOrU,KAAK6V,UACzC,IAAI+C,EAAc5Y,KAAK8I,KAAO9I,KAAK2X,SAAW,IAAM3X,KAAKoW,WAAa,QACtEpW,KAAKoW,YAAc,EACnB9N,YAAYuH,SAAS+I,EAAa5Y,KAAKkY,cAAcxG,KAAK1R,MAAO,WAC/DA,KAAK4X,QAAQ,cACf,EAAElG,KAAK1R,MACT,EAEA2V,cAAcxW,UAAU0Z,aAAe,WACtB7Y,KAAKnL,cAAc6C,WAGhCsI,KAAKmW,cAAgBnW,KAAKyF,aAG5BzF,KAAKyY,iBACP,EAEA9C,cAAcxW,UAAU2Z,aAAe,WACrC9Y,KAAK4X,QAAQ,iBACb5X,KAAK+Y,aACP,EAEApD,cAAcxW,UAAU6Z,cAAgB,WACtChZ,KAAKyW,eAAerE,cAAcpS,KAAKlK,YACvCkK,KAAKyW,eAAepE,QAAQrS,KAAK8I,MACjC9I,KAAKyW,eAAexE,WAAWjS,KAAKnL,cAAcuX,OAAQpM,KAAK8Y,aAAapH,KAAK1R,MACnF,EAEA2V,cAAcxW,UAAUwX,gBAAkB,SAAUsC,GAClD,GAAKjZ,KAAKpK,SAIV,IACEoK,KAAKnL,cAAgBokB,EAEjBjZ,KAAKhL,gBACPgL,KAAKyF,YAAcxJ,KAAKkH,MAAMnD,KAAKhL,eAAe,GAAKgL,KAAKhL,eAAe,IAC3EgL,KAAK7D,WAAaF,KAAKoI,MAAMrE,KAAKhL,eAAe,MAEjDgL,KAAKyF,YAAcxJ,KAAKkH,MAAMnD,KAAKnL,cAAc4X,GAAKzM,KAAKnL,cAAc2X,IACzExM,KAAK7D,WAAaF,KAAKoI,MAAMrE,KAAKnL,cAAc2X,KAGlDxM,KAAKpK,SAAS+gB,gBAAgBsC,GAEzBA,EAAS7M,SACZ6M,EAAS7M,OAAS,IAGpBpM,KAAKoM,OAASpM,KAAKnL,cAAcuX,OACjCpM,KAAK6V,UAAY7V,KAAKnL,cAAcqkB,GACpClZ,KAAK8V,UAAY9V,KAAKnL,cAAcqkB,GAAK,IACzClZ,KAAKpK,SAASujB,wBAAwBF,EAAS7M,QAC/CpM,KAAKkU,QAAUT,aAAawF,EAAS/E,SAAW,IAChDlU,KAAK4X,QAAQ,gBACb5X,KAAKgZ,gBACLhZ,KAAK6Y,eACL7Y,KAAKoZ,oBACLpZ,KAAKqZ,qBAEDrZ,KAAK5D,UACP4D,KAAK0W,gBAAgB1f,OAEzB,CAAE,MAAOgY,GACPhP,KAAKsZ,mBAAmBtK,EAC1B,CACF,EAEA2G,cAAcxW,UAAUka,mBAAqB,WACtCrZ,KAAKpK,WAINoK,KAAKpK,SAASuhB,WAAWkB,YAAYzC,SACvC5V,KAAK+Y,cAELQ,WAAWvZ,KAAKqZ,mBAAmB3H,KAAK1R,MAAO,IAEnD,EAEA2V,cAAcxW,UAAU4Z,YAAc,WACpC,IAAK/Y,KAAK4V,UAAY5V,KAAKpK,SAASuhB,WAAWkB,YAAYzC,WAAa5V,KAAKyW,eAAenE,gBAAiD,WAA/BtS,KAAKpK,SAAS4jB,eAA8BxZ,KAAKyW,eAAelE,iBAAkB,CAC9LvS,KAAK4V,UAAW,EAChB,IAAIrT,EAAoBqF,uBAEpBrF,GACFA,EAAkBiW,gBAAgBxY,MAGpCA,KAAKpK,SAAS6jB,YACdF,WAAW,WACTvZ,KAAK4X,QAAQ,YACf,EAAElG,KAAK1R,MAAO,GACdA,KAAK0Z,YAED1Z,KAAKjL,UACPiL,KAAKpJ,MAET,CACF,EAEA+e,cAAcxW,UAAUwa,OAAS,SAAU7e,EAAOT,GAEhD,IAAIuf,EAA0B,kBAAV9e,EAAqBA,OAAQ7C,EAE7C4hB,EAA4B,kBAAXxf,EAAsBA,OAASpC,EAEpD+H,KAAKpK,SAASkkB,oBAAoBF,EAAQC,EAC5C,EAEAlE,cAAcxW,UAAUvH,YAAc,SAAU2G,GAC9CyB,KAAKqW,oBAAsB9X,CAC7B,EAEAoX,cAAcxW,UAAUua,UAAY,WAClC1Z,KAAKmV,aAAenV,KAAKqW,kBAAoBrW,KAAKlH,kBAAoBkH,KAAKlH,gBAEvEkH,KAAKmW,gBAAkBnW,KAAKyF,aAAezF,KAAKmV,aAAenV,KAAKmW,gBACtEnW,KAAKmV,aAAenV,KAAKmW,eAG3BnW,KAAK4X,QAAQ,cACb5X,KAAK+Z,cACL/Z,KAAK4X,QAAQ,aACf,EAEAjC,cAAcxW,UAAU4a,YAAc,WACpC,IAAsB,IAAlB/Z,KAAK4V,UAAuB5V,KAAKpK,SAIrC,IACMoK,KAAKuC,mBACPvC,KAAKuC,kBAAkByX,aAGzBha,KAAKpK,SAASmkB,YAAY/Z,KAAKmV,aAAenV,KAAK7D,WACrD,CAAE,MAAO6S,GACPhP,KAAKia,wBAAwBjL,EAC/B,CACF,EAEA2G,cAAcxW,UAAUvI,KAAO,SAAUf,GACnCA,GAAQmK,KAAKnK,OAASA,IAIJ,IAAlBmK,KAAK5D,WACP4D,KAAK5D,UAAW,EAChB4D,KAAK4X,QAAQ,SACb5X,KAAK0W,gBAAgBnW,SAEjBP,KAAKsW,QACPtW,KAAKsW,OAAQ,EACbtW,KAAK4X,QAAQ,YAGnB,EAEAjC,cAAcxW,UAAUnI,MAAQ,SAAUnB,GACpCA,GAAQmK,KAAKnK,OAASA,IAIJ,IAAlBmK,KAAK5D,WACP4D,KAAK5D,UAAW,EAChB4D,KAAK4X,QAAQ,UACb5X,KAAKsW,OAAQ,EACbtW,KAAK4X,QAAQ,SACb5X,KAAK0W,gBAAgB1f,QAEzB,EAEA2e,cAAcxW,UAAU+a,YAAc,SAAUrkB,GAC1CA,GAAQmK,KAAKnK,OAASA,KAIJ,IAAlBmK,KAAK5D,SACP4D,KAAKpJ,OAELoJ,KAAKhJ,QAET,EAEA2e,cAAcxW,UAAUpI,KAAO,SAAUlB,GACnCA,GAAQmK,KAAKnK,OAASA,IAI1BmK,KAAKhJ,QACLgJ,KAAKiW,UAAY,EACjBjW,KAAKuW,gBAAiB,EACtBvW,KAAKma,wBAAwB,GAC/B,EAEAxE,cAAcxW,UAAUib,cAAgB,SAAUC,GAGhD,IAFA,IAAIC,EAEKvb,EAAI,EAAGA,EAAIiB,KAAKkU,QAAQ7b,OAAQ0G,GAAK,EAG5C,IAFAub,EAASta,KAAKkU,QAAQnV,IAEXoQ,SAAWmL,EAAOnL,QAAQtZ,OAASwkB,EAC5C,OAAOC,EAIX,OAAO,IACT,EAEA3E,cAAcxW,UAAU7H,YAAc,SAAUF,EAAOC,EAASxB,GAC9D,IAAIA,GAAQmK,KAAKnK,OAASA,EAA1B,CAIA,IAAI0kB,EAAW1d,OAAOzF,GAEtB,GAAI0F,MAAMyd,GAAW,CACnB,IAAID,EAASta,KAAKoa,cAAchjB,GAE5BkjB,GACFta,KAAK1I,YAAYgjB,EAAOjG,MAAM,EAElC,MAAWhd,EACT2I,KAAKma,wBAAwB/iB,GAE7B4I,KAAKma,wBAAwB/iB,EAAQ4I,KAAKwa,eAG5Cxa,KAAKhJ,OAhBL,CAiBF,EAEA2e,cAAcxW,UAAUhI,YAAc,SAAUC,EAAOC,EAASxB,GAC9D,IAAIA,GAAQmK,KAAKnK,OAASA,EAA1B,CAIA,IAAI0kB,EAAW1d,OAAOzF,GAEtB,GAAI0F,MAAMyd,GAAW,CACnB,IAAID,EAASta,KAAKoa,cAAchjB,GAE5BkjB,IACGA,EAAO/F,SAGVvU,KAAKvI,aAAa,CAAC6iB,EAAOjG,KAAMiG,EAAOjG,KAAOiG,EAAO/F,WAAW,GAFhEvU,KAAK1I,YAAYgjB,EAAOjG,MAAM,GAKpC,MACErU,KAAK1I,YAAYijB,EAAUljB,EAASxB,GAGtCmK,KAAKpJ,MAlBL,CAmBF,EAEA+e,cAAcxW,UAAUsb,YAAc,SAAUrjB,GAC9C,IAAsB,IAAlB4I,KAAK5D,WAAuC,IAAlB4D,KAAK4V,SAAnC,CAIA,IAAI8E,EAAY1a,KAAKlH,gBAAkB1B,EAAQ4I,KAAKwa,cAChDG,GAAc,EAGdD,GAAa1a,KAAKyF,YAAc,GAAKzF,KAAKwa,cAAgB,EACvDxa,KAAKlL,MAAQkL,KAAKiW,YAAcjW,KAAKlL,KAK/B4lB,GAAa1a,KAAKyF,aAC3BzF,KAAKiW,WAAa,EAEbjW,KAAK4a,cAAcF,EAAY1a,KAAKyF,eACvCzF,KAAKma,wBAAwBO,EAAY1a,KAAKyF,aAC9CzF,KAAKuW,gBAAiB,EACtBvW,KAAK4X,QAAQ,kBAGf5X,KAAKma,wBAAwBO,GAbxB1a,KAAK4a,cAAcF,EAAY1a,KAAKyF,YAAciV,EAAY1a,KAAKyF,YAAc,KACpFkV,GAAc,EACdD,EAAY1a,KAAKyF,YAAc,GAa1BiV,EAAY,EAChB1a,KAAK4a,cAAcF,EAAY1a,KAAKyF,gBACnCzF,KAAKlL,MAAUkL,KAAKiW,aAAe,IAAmB,IAAdjW,KAAKlL,MAU/C6lB,GAAc,EACdD,EAAY,IATZ1a,KAAKma,wBAAwBna,KAAKyF,YAAciV,EAAY1a,KAAKyF,aAE5DzF,KAAKuW,eAGRvW,KAAK4X,QAAQ,gBAFb5X,KAAKuW,gBAAiB,IAU5BvW,KAAKma,wBAAwBO,GAG3BC,IACF3a,KAAKma,wBAAwBO,GAC7B1a,KAAKhJ,QACLgJ,KAAK4X,QAAQ,YA9Cf,CAgDF,EAEAjC,cAAcxW,UAAU0b,cAAgB,SAAUlZ,EAAKsF,GACrDjH,KAAKiW,UAAY,EAEbtU,EAAI,GAAKA,EAAI,IACX3B,KAAKwa,cAAgB,IACnBxa,KAAK+V,UAAY,EACnB/V,KAAK/I,UAAU+I,KAAK+V,WAEpB/V,KAAKzI,cAAc,IAIvByI,KAAKyF,YAAc9D,EAAI,GAAKA,EAAI,GAChC3B,KAAKmW,cAAgBnW,KAAKyF,YAC1BzF,KAAK7D,WAAawF,EAAI,GACtB3B,KAAKma,wBAAwBna,KAAKyF,YAAc,KAAQwB,IAC/CtF,EAAI,GAAKA,EAAI,KAClB3B,KAAKwa,cAAgB,IACnBxa,KAAK+V,UAAY,EACnB/V,KAAK/I,UAAU+I,KAAK+V,WAEpB/V,KAAKzI,aAAa,IAItByI,KAAKyF,YAAc9D,EAAI,GAAKA,EAAI,GAChC3B,KAAKmW,cAAgBnW,KAAKyF,YAC1BzF,KAAK7D,WAAawF,EAAI,GACtB3B,KAAKma,wBAAwB,KAAQlT,IAGvCjH,KAAK4X,QAAQ,eACf,EAEAjC,cAAcxW,UAAUpG,WAAa,SAAU+hB,EAAMC,GACnD,IAAIC,GAAgB,EAEhBhb,KAAK5D,WACH4D,KAAKlH,gBAAkBkH,KAAK7D,WAAa2e,EAC3CE,EAAeF,EACN9a,KAAKlH,gBAAkBkH,KAAK7D,WAAa4e,IAClDC,EAAeD,EAAMD,IAIzB9a,KAAK7D,WAAa2e,EAClB9a,KAAKyF,YAAcsV,EAAMD,EACzB9a,KAAKmW,cAAgBnW,KAAKyF,aAEJ,IAAlBuV,GACFhb,KAAK1I,YAAY0jB,GAAc,EAEnC,EAEArF,cAAcxW,UAAU1H,aAAe,SAAUkK,EAAKhK,GAKpD,GAJIA,IACFqI,KAAKtI,SAASW,OAAS,GAGC,WAAtBqd,UAAU/T,EAAI,IAAkB,CAClC,IAAI5C,EACAE,EAAM0C,EAAItJ,OAEd,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKtI,SAAS4I,KAAKqB,EAAI5C,GAE3B,MACEiB,KAAKtI,SAAS4I,KAAKqB,GAGjB3B,KAAKtI,SAASW,QAAUV,GAC1BqI,KAAK6a,cAAc7a,KAAKtI,SAASihB,QAAS,GAGxC3Y,KAAK5D,UACP4D,KAAKpJ,MAET,EAEA+e,cAAcxW,UAAUnG,cAAgB,SAAUrB,GAChDqI,KAAKtI,SAASW,OAAS,EACvB2H,KAAKtI,SAAS4I,KAAK,CAACN,KAAKnL,cAAc2X,GAAIxM,KAAKnL,cAAc4X,KAE1D9U,GACFqI,KAAK4a,cAAc,EAEvB,EAEAjF,cAAcxW,UAAUyb,cAAgB,SAAU3T,GAChD,QAAIjH,KAAKtI,SAASW,SAChB2H,KAAK6a,cAAc7a,KAAKtI,SAASihB,QAAS1R,IACnC,EAIX,EAEA0O,cAAcxW,UAAUnH,QAAU,SAAUnC,GACtCA,GAAQmK,KAAKnK,OAASA,IAASmK,KAAKpK,WAIxCoK,KAAKpK,SAASoC,UACdgI,KAAKyW,eAAeze,UACpBgI,KAAK4X,QAAQ,WACb5X,KAAKsT,KAAO,KACZtT,KAAK7K,aAAe,KACpB6K,KAAK9K,eAAiB,KACtB8K,KAAK/K,WAAa,KAClB+K,KAAK5K,eAAiB,KACtB4K,KAAKtK,UAAY,KACjBsK,KAAKpK,SAAW,KAChBoK,KAAKuC,kBAAoB,KACzBvC,KAAKyW,eAAiB,KACtBzW,KAAKwW,iBAAmB,KAC1B,EAEAb,cAAcxW,UAAUgb,wBAA0B,SAAU/iB,GAC1D4I,KAAKlH,gBAAkB1B,EACvB4I,KAAK0Z,WACP,EAEA/D,cAAcxW,UAAUlI,SAAW,SAAU4M,GAC3C7D,KAAK+V,UAAYlS,EACjB7D,KAAKoZ,mBACP,EAEAzD,cAAcxW,UAAU5H,aAAe,SAAUsM,GAC/C7D,KAAKgW,cAAgBnS,EAAM,GAAK,EAAI,EACpC7D,KAAKoZ,mBACP,EAEAzD,cAAcxW,UAAU8b,QAAU,SAAUC,GAC1Clb,KAAKlL,KAAOomB,CACd,EAEAvF,cAAcxW,UAAU+B,UAAY,SAAU2C,EAAKhO,GAC7CA,GAAQmK,KAAKnK,OAASA,GAI1BmK,KAAK0W,gBAAgBxV,UAAU2C,EACjC,EAEA8R,cAAcxW,UAAUoC,UAAY,WAClC,OAAOvB,KAAK0W,gBAAgBnV,WAC9B,EAEAoU,cAAcxW,UAAUkC,KAAO,SAAUxL,GACnCA,GAAQmK,KAAKnK,OAASA,GAI1BmK,KAAK0W,gBAAgBrV,MACvB,EAEAsU,cAAcxW,UAAUmC,OAAS,SAAUzL,GACrCA,GAAQmK,KAAKnK,OAASA,GAI1BmK,KAAK0W,gBAAgBpV,QACvB,EAEAqU,cAAcxW,UAAUia,kBAAoB,WAC1CpZ,KAAKwa,cAAgBxa,KAAK8V,UAAY9V,KAAK+V,UAAY/V,KAAKgW,cAC5DhW,KAAK0W,gBAAgBlW,QAAQR,KAAK+V,UAAY/V,KAAKgW,cACrD,EAEAL,cAAcxW,UAAUgc,QAAU,WAChC,OAAOnb,KAAK8I,IACd,EAEA6M,cAAcxW,UAAU2R,cAAgB,SAAUC,GAChD,IAAIjI,EAAO,GAEX,GAAIiI,EAAUrH,EACZZ,EAAOiI,EAAUrK,OACZ,GAAI1G,KAAKlK,WAAY,CAC1B,IAAImb,EAAYF,EAAUrK,GAEY,IAAlCuK,EAAU/C,QAAQ,aACpB+C,EAAYA,EAAUpF,MAAM,KAAK,IAGnC/C,EAAO9I,KAAKlK,WAAamb,CAC3B,MACEnI,EAAO9I,KAAK8I,KACZA,GAAQiI,EAAUG,EAAIH,EAAUG,EAAI,GACpCpI,GAAQiI,EAAUrK,EAGpB,OAAOoC,CACT,EAEA6M,cAAcxW,UAAUic,aAAe,SAAUrQ,GAI/C,IAHA,IAAIhM,EAAI,EACJE,EAAMe,KAAKoM,OAAO/T,OAEf0G,EAAIE,GAAK,CACd,GAAI8L,IAAO/K,KAAKoM,OAAOrN,GAAGgM,GACxB,OAAO/K,KAAKoM,OAAOrN,GAGrBA,GAAK,CACP,CAEA,OAAO,IACT,EAEA4W,cAAcxW,UAAUkc,KAAO,WAC7Brb,KAAKpK,SAASylB,MAChB,EAEA1F,cAAcxW,UAAUmc,KAAO,WAC7Btb,KAAKpK,SAAS0lB,MAChB,EAEA3F,cAAcxW,UAAUrH,YAAc,SAAUT,GAC9C,OAAOA,EAAU2I,KAAKyF,YAAczF,KAAKyF,YAAczF,KAAK6V,SAC9D,EAEAF,cAAcxW,UAAUoc,mBAAqB,SAAUzS,EAAMoD,EAAcsP,GACzE,IACgBxb,KAAKpK,SAAS6lB,iBAAiB3S,GACrCyS,mBAAmBrP,EAAcsP,EAC3C,CAAE,MAAOxM,GAAQ,CAEnB,EAEA2G,cAAcxW,UAAUyY,QAAU,SAAU/hB,GAC1C,GAAImK,KAAKsT,MAAQtT,KAAKsT,KAAKzd,GACzB,OAAQA,GACN,IAAK,aACHmK,KAAKmT,aAAatd,EAAM,IAAImP,kBAAkBnP,EAAMmK,KAAKmV,aAAcnV,KAAKyF,YAAazF,KAAKwa,gBAC9F,MAEF,IAAK,aACHxa,KAAK8W,gBAAgB7R,YAAcjF,KAAKmV,aACxCnV,KAAK8W,gBAAgB5R,UAAYlF,KAAKyF,YACtCzF,KAAK8W,gBAAgBtf,UAAYwI,KAAKwa,cACtCxa,KAAKmT,aAAatd,EAAMmK,KAAK8W,iBAC7B,MAEF,IAAK,eACH9W,KAAKmT,aAAatd,EAAM,IAAIwP,oBAAoBxP,EAAMmK,KAAKlL,KAAMkL,KAAKiW,UAAWjW,KAAK8V,YACtF,MAEF,IAAK,WACH9V,KAAKmT,aAAatd,EAAM,IAAIuP,gBAAgBvP,EAAMmK,KAAK8V,YACvD,MAEF,IAAK,eACH9V,KAAKmT,aAAatd,EAAM,IAAI2P,oBAAoB3P,EAAMmK,KAAK7D,WAAY6D,KAAKyF,cAC5E,MAEF,IAAK,UACHzF,KAAKmT,aAAatd,EAAM,IAAI6P,eAAe7P,EAAMmK,OACjD,MAEF,QACEA,KAAKmT,aAAatd,GAIX,eAATA,GAAyBmK,KAAK7K,cAChC6K,KAAK7K,aAAamK,KAAKU,KAAM,IAAIgF,kBAAkBnP,EAAMmK,KAAKmV,aAAcnV,KAAKyF,YAAazF,KAAK8V,YAGxF,iBAATjgB,GAA2BmK,KAAK9K,gBAClC8K,KAAK9K,eAAeoK,KAAKU,KAAM,IAAIqF,oBAAoBxP,EAAMmK,KAAKlL,KAAMkL,KAAKiW,UAAWjW,KAAK8V,YAGlF,aAATjgB,GAAuBmK,KAAK/K,YAC9B+K,KAAK/K,WAAWqK,KAAKU,KAAM,IAAIoF,gBAAgBvP,EAAMmK,KAAK8V,YAG/C,iBAATjgB,GAA2BmK,KAAK5K,gBAClC4K,KAAK5K,eAAekK,KAAKU,KAAM,IAAIwF,oBAAoB3P,EAAMmK,KAAK7D,WAAY6D,KAAKyF,cAGxE,YAAT5P,GAAsBmK,KAAKtK,WAC7BsK,KAAKtK,UAAU4J,KAAKU,KAAM,IAAI0F,eAAe7P,EAAMmK,MAEvD,EAEA2V,cAAcxW,UAAU8a,wBAA0B,SAAUpU,GAC1D,IAAImJ,EAAQ,IAAIpJ,wBAAwBC,EAAa7F,KAAKmV,cAC1DnV,KAAKmT,aAAa,QAASnE,GAEvBhP,KAAKuP,SACPvP,KAAKuP,QAAQjQ,KAAKU,KAAMgP,EAE5B,EAEA2G,cAAcxW,UAAUma,mBAAqB,SAAUzT,GACrD,IAAImJ,EAAQ,IAAIlJ,mBAAmBD,EAAa7F,KAAKmV,cACrDnV,KAAKmT,aAAa,QAASnE,GAEvBhP,KAAKuP,SACPvP,KAAKuP,QAAQjQ,KAAKU,KAAMgP,EAE5B,EAEA,IAAI0M,iBAAmB,WACrB,IAAIlO,EAAW,CAAC,EACZmO,EAAuB,GACvBC,EAAW,EACX3c,EAAM,EACN4c,EAAuB,EACvBC,GAAW,EACXC,GAAY,EAEhB,SAASC,EAAc9e,GAIrB,IAHA,IAAI6B,EAAI,EACJkd,EAAW/e,EAAGyI,OAEX5G,EAAIE,GACL0c,EAAqB5c,GAAGqQ,YAAc6M,IACxCN,EAAqBnI,OAAOzU,EAAG,GAC/BA,GAAK,EACLE,GAAO,EAEFgd,EAAS7f,UACZ8f,KAIJnd,GAAK,CAET,CAEA,SAASod,EAAkB5X,EAAS1P,GAClC,IAAK0P,EACH,OAAO,KAKT,IAFA,IAAIxF,EAAI,EAEDA,EAAIE,GAAK,CACd,GAAI0c,EAAqB5c,GAAGqd,OAAS7X,GAA4C,OAAjCoX,EAAqB5c,GAAGqd,KACtE,OAAOT,EAAqB5c,GAAGqQ,UAGjCrQ,GAAK,CACP,CAEA,IAAIkd,EAAW,IAAItG,cAGnB,OAFA6B,EAAeyE,EAAU1X,GACzB0X,EAASpE,QAAQtT,EAAS1P,GACnBonB,CACT,CAcA,SAASI,IACPR,GAAwB,EACxBS,GACF,CAEA,SAASJ,IACPL,GAAwB,CAC1B,CAEA,SAASrE,EAAeyE,EAAU1X,GAChC0X,EAAS1iB,iBAAiB,UAAWyiB,GACrCC,EAAS1iB,iBAAiB,UAAW8iB,GACrCJ,EAAS1iB,iBAAiB,QAAS2iB,GACnCP,EAAqBrb,KAAK,CACxB8b,KAAM7X,EACN6K,UAAW6M,IAEbhd,GAAO,CACT,CAiCA,SAASsB,EAAOgc,GACd,IACIxd,EADAyd,EAAcD,EAAUX,EAG5B,IAAK7c,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAUqL,YAAY+B,GAGhDZ,EAAWW,EAEPV,IAAyBE,EAC3BzhB,OAAOmiB,sBAAsBlc,GAE7Bub,GAAW,CAEf,CAEA,SAASY,EAAMH,GACbX,EAAWW,EACXjiB,OAAOmiB,sBAAsBlc,EAC/B,CA+EA,SAAS+b,KACFP,GAAaF,GACZC,IACFxhB,OAAOmiB,sBAAsBC,GAC7BZ,GAAW,EAGjB,CAsDA,OAnBAtO,EAAS2O,kBAAoBA,EAC7B3O,EAAStV,cA7KT,SAAuB8e,GACrB,IAAIiF,EAAW,IAAItG,cAGnB,OAFA6B,EAAeyE,EAAU,MACzBA,EAASlF,UAAUC,GACZiF,CACT,EAyKAzO,EAASvW,SAvKT,SAAkB4M,EAAKuL,GACrB,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAUnY,SAAS4M,EAAKuL,EAEpD,EAkKA5B,EAASjW,aAhKT,SAAsBsM,EAAKuL,GACzB,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAU7X,aAAasM,EAAKuL,EAExD,EA2JA5B,EAAS5W,KAzJT,SAAcwY,GACZ,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAUxY,KAAKwY,EAE3C,EAoJA5B,EAASxW,MA5HT,SAAeoY,GACb,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAUpY,MAAMoY,EAE5C,EAuHA5B,EAASzW,KA7GT,SAAcqY,GACZ,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAUrY,KAAKqY,EAE3C,EAwGA5B,EAAS0M,YAtGT,SAAqB9K,GACnB,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAU8K,YAAY9K,EAElD,EAiGA5B,EAASmP,iBAvFT,SAA0B9nB,EAAe+nB,EAAYhnB,GACnD,IACImJ,EADA8d,EAAe,GAAGC,OAAO,GAAGC,MAAMzd,KAAKjD,SAAS2gB,uBAAuB,WAAY,GAAGD,MAAMzd,KAAKjD,SAAS2gB,uBAAuB,eAEjIC,EAAWJ,EAAaxkB,OAE5B,IAAK0G,EAAI,EAAGA,EAAIke,EAAUle,GAAK,EACzBnJ,GACFinB,EAAa9d,GAAGme,aAAa,eAAgBtnB,GAG/CumB,EAAkBU,EAAa9d,GAAIlK,GAGrC,GAAI+nB,GAA2B,IAAbK,EAAgB,CAC3BrnB,IACHA,EAAW,OAGb,IAAIunB,EAAO9gB,SAAS+gB,qBAAqB,QAAQ,GACjDD,EAAKE,UAAY,GACjB,IAAIC,EAAM3e,UAAU,OACpB2e,EAAI1oB,MAAMkG,MAAQ,OAClBwiB,EAAI1oB,MAAMyF,OAAS,OACnBijB,EAAIJ,aAAa,eAAgBtnB,GACjCunB,EAAKpK,YAAYuK,GACjBnB,EAAkBmB,EAAKzoB,EACzB,CACF,EA6DA2Y,EAASmM,OA3DT,WACE,IAAI5a,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAUuK,QAEtC,EAuDAnM,EAASlW,YA1HT,SAAqBF,EAAOC,EAAS+X,GACnC,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAU9X,YAAYF,EAAOC,EAAS+X,EAElE,EAqHA5B,EAASxV,QAnGT,SAAiBoX,GACf,IAAIrQ,EAEJ,IAAKA,EAAIE,EAAM,EAAGF,GAAK,EAAGA,GAAK,EAC7B4c,EAAqB5c,GAAGqQ,UAAUpX,QAAQoX,EAE9C,EA8FA5B,EAAS+P,OA9CT,WACExB,GAAY,CACd,EA6CAvO,EAASgQ,SA3CT,WACEzB,GAAY,EACZO,GACF,EAyCA9O,EAAStM,UAvCT,SAAmB2C,EAAKuL,GACtB,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAUlO,UAAU2C,EAAKuL,EAErD,EAkCA5B,EAASnM,KAhCT,SAAc+N,GACZ,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAU/N,KAAK+N,EAE3C,EA2BA5B,EAASlM,OAzBT,SAAgB8N,GACd,IAAIrQ,EAEJ,IAAKA,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4c,EAAqB5c,GAAGqQ,UAAU9N,OAAO8N,EAE7C,EAoBA5B,EAASiQ,wBA9NT,WACE,IAAI1e,EACAke,EAAWtB,EAAqBtjB,OAChCqlB,EAAa,GAEjB,IAAK3e,EAAI,EAAGA,EAAIke,EAAUle,GAAK,EAC7B2e,EAAWpd,KAAKqb,EAAqB5c,GAAGqQ,WAG1C,OAAOsO,CACT,EAqNOlQ,CACT,CAjRuB,GAoRnBmQ,cAAgB,WAWlB,IAAI/L,EAAK,CACTA,gBAGA,SAAyBhF,EAAGpG,EAAG2G,EAAGrG,EAAGkO,GACnC,IAAI4I,EAAM5I,IAAO,OAASpI,EAAI,IAAMpG,EAAI,IAAM2G,EAAI,IAAMrG,GAAG+W,QAAQ,MAAO,KAE1E,GAAIC,EAAQF,GACV,OAAOE,EAAQF,GAGjB,IAAIG,EAAY,IAAIC,EAAa,CAACpR,EAAGpG,EAAG2G,EAAGrG,IAE3C,OADAgX,EAAQF,GAAOG,EACRA,CACT,GAZID,EAAU,CAAC,EAmBXG,EAAmB,GACnBC,EAAkB,GAAOD,EAAmB,GAC5CE,EAAgD,oBAAjBtc,aAEnC,SAASuc,EAAEC,EAAKC,GACd,OAAO,EAAM,EAAMA,EAAM,EAAMD,CACjC,CAEA,SAASE,EAAEF,EAAKC,GACd,OAAO,EAAMA,EAAM,EAAMD,CAC3B,CAEA,SAASG,EAAEH,GACT,OAAO,EAAMA,CACf,CAGA,SAASI,EAAWC,EAAIL,EAAKC,GAC3B,QAASF,EAAEC,EAAKC,GAAOI,EAAKH,EAAEF,EAAKC,IAAQI,EAAKF,EAAEH,IAAQK,CAC5D,CAGA,SAASC,EAASD,EAAIL,EAAKC,GACzB,OAAO,EAAMF,EAAEC,EAAKC,GAAOI,EAAKA,EAAK,EAAMH,EAAEF,EAAKC,GAAOI,EAAKF,EAAEH,EAClE,CAoCA,SAASL,EAAaY,GACpB5e,KAAK6e,GAAKD,EACV5e,KAAK8e,eAAiBX,EAAwB,IAAItc,aAAaoc,GAAoB,IAAIrlB,MAAMqlB,GAC7Fje,KAAK+e,cAAe,EACpB/e,KAAKgf,IAAMhf,KAAKgf,IAAItN,KAAK1R,KAC3B,CAqEA,OAnEAge,EAAa7e,UAAY,CACvB6f,IAAK,SAAapkB,GAChB,IAAIqkB,EAAMjf,KAAK6e,GAAG,GACdK,EAAMlf,KAAK6e,GAAG,GACdM,EAAMnf,KAAK6e,GAAG,GACdO,EAAMpf,KAAK6e,GAAG,GAElB,OADK7e,KAAK+e,cAAc/e,KAAKqf,cACzBJ,IAAQC,GAAOC,IAAQC,EAAYxkB,EAG7B,IAANA,EAAgB,EACV,IAANA,EAAgB,EACb6jB,EAAWze,KAAKsf,UAAU1kB,GAAIskB,EAAKE,EAC5C,EAEAC,YAAa,WACX,IAAIJ,EAAMjf,KAAK6e,GAAG,GACdK,EAAMlf,KAAK6e,GAAG,GACdM,EAAMnf,KAAK6e,GAAG,GACdO,EAAMpf,KAAK6e,GAAG,GAClB7e,KAAK+e,cAAe,EAEhBE,IAAQC,GAAOC,IAAQC,GACzBpf,KAAKuf,mBAET,EACAA,kBAAmB,WAIjB,IAHA,IAAIN,EAAMjf,KAAK6e,GAAG,GACdM,EAAMnf,KAAK6e,GAAG,GAET9f,EAAI,EAAGA,EAAIkf,IAAoBlf,EACtCiB,KAAK8e,eAAe/f,GAAK0f,EAAW1f,EAAImf,EAAiBe,EAAKE,EAElE,EAKAG,UAAW,SAAmBE,GAQ5B,IAPA,IAAIP,EAAMjf,KAAK6e,GAAG,GACdM,EAAMnf,KAAK6e,GAAG,GACdY,EAAgBzf,KAAK8e,eACrBY,EAAgB,EAChBC,EAAgB,EAChBC,EAAa3B,EAAmB,EAE7B0B,IAAkBC,GAAcH,EAAcE,IAAkBH,IAAMG,EAC3ED,GAAiBxB,EAKnB,IACI2B,EAAYH,GADJF,EAAKC,IAFfE,KAEgDF,EAAcE,EAAgB,GAAKF,EAAcE,IAC5DzB,EACnC4B,EAAenB,EAASkB,EAAWZ,EAAKE,GAE5C,OAAIW,GA9He,KAgDvB,SAA8BN,EAAIO,EAASd,EAAKE,GAC9C,IAAK,IAAIpgB,EAAI,EAAGA,EAlDM,IAkDmBA,EAAG,CAC1C,IAAIihB,EAAerB,EAASoB,EAASd,EAAKE,GAC1C,GAAqB,IAAjBa,EAAsB,OAAOD,EAEjCA,IADetB,EAAWsB,EAASd,EAAKE,GAAOK,GACzBQ,CACxB,CAEA,OAAOD,CACT,CAsEaE,CAAqBT,EAAIK,EAAWZ,EAAKE,GAG7B,IAAjBW,EACKD,EAtGb,SAAyBL,EAAIU,EAAIC,EAAIlB,EAAKE,GACxC,IAAIiB,EACAC,EACAthB,EAAI,EAER,IAEEqhB,EAAW3B,EADX4B,EAAWH,GAAMC,EAAKD,GAAM,EACIjB,EAAKE,GAAOK,GAE7B,EACbW,EAAKE,EAELH,EAAKG,QAEApkB,KAAK2H,IAAIwc,GA1CQ,QA0C+BrhB,EAzC1B,IA2C/B,OAAOshB,CACT,CAwFWC,CAAgBd,EAAIE,EAAeA,EAAgBxB,EAAiBe,EAAKE,EAClF,GAEKvN,CACT,CAvKoB,GAyKhB2O,QAKK,CACL,OALF,SAAiB5e,GACf,OAAOA,EAAImb,OAAO/a,iBAAiBJ,EAAItJ,QACzC,GAOEmoB,YACK,SAAUC,EAAeC,EAASC,GACvC,IAAIC,EAAU,EACVC,EAAaJ,EACbK,EAAO/e,iBAAiB8e,GAiC5B,MAhCS,CACPE,WAIF,WAUE,OAPIH,EAEQE,EADVF,GAAW,GAGDF,GAId,EAdEM,QAgBF,SAAiBzc,GACXqc,IAAYC,IACdC,EAAOP,QAAgB,OAAEO,GACzBD,GAAc,GAGZF,GACFA,EAASpc,GAGXuc,EAAKF,GAAWrc,EAChBqc,GAAW,CACb,EAGF,EAGEK,iBASKT,YAAY,GARnB,WACE,MAAO,CACLU,YAAa,EACbC,SAAU1f,iBAAiB,UAAWuG,2BACtCoZ,QAAS3f,iBAAiB,UAAWuG,2BAEzC,IAKEqZ,mBAmBKb,YAAY,GAlBnB,WACE,MAAO,CACLY,QAAS,GACTE,YAAa,EAEjB,IAEA,SAAiB/c,GACf,IAAIxF,EACAE,EAAMsF,EAAQ6c,QAAQ/oB,OAE1B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBkiB,iBAAiBD,QAAQzc,EAAQ6c,QAAQriB,IAG3CwF,EAAQ6c,QAAQ/oB,OAAS,CAC3B,IAKF,SAASkpB,cACP,IAAIC,EAAOvlB,KAEX,SAASwlB,EAAcC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACzC,IAAIC,EAAON,EAAKG,EAAKF,EAAKG,EAAKF,EAAKG,EAAKD,EAAKD,EAAKE,EAAKL,EAAKE,EAAKD,EAClE,OAAOK,GAAQ,MAASA,EAAO,IACjC,CA2BA,IAAIC,EACK,SAAUC,EAAKC,EAAKC,EAAKC,GAC9B,IACIpY,EACAlL,EACAE,EACAqjB,EACAC,EAEAC,EAPAC,EAAgBza,0BAMhBkZ,EAAc,EAEdwB,EAAQ,GACRC,EAAY,GACZC,EAAa3B,iBAAiBF,aAGlC,IAFA9hB,EAAMmjB,EAAI/pB,OAEL4R,EAAI,EAAGA,EAAIwY,EAAexY,GAAK,EAAG,CAIrC,IAHAsY,EAAOtY,GAAKwY,EAAgB,GAC5BD,EAAa,EAERzjB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBujB,EAAUxf,MAAM,EAAIyf,EAAM,GAAKL,EAAInjB,GAAK,EAAI+D,MAAM,EAAIyf,EAAM,GAAKA,EAAOH,EAAIrjB,GAAK,GAAK,EAAIwjB,GAAQzf,MAAMyf,EAAM,GAAKF,EAAItjB,GAAK+D,MAAMyf,EAAM,GAAKJ,EAAIpjB,GACjJ2jB,EAAM3jB,GAAKujB,EAEU,OAAjBK,EAAU5jB,KACZyjB,GAAc1f,MAAM4f,EAAM3jB,GAAK4jB,EAAU5jB,GAAI,IAG/C4jB,EAAU5jB,GAAK2jB,EAAM3jB,GAGnByjB,IAEFtB,GADAsB,EAAaxf,OAAOwf,IAItBI,EAAWzB,SAASlX,GAAKsY,EACzBK,EAAWxB,QAAQnX,GAAKiX,CAC1B,CAGA,OADA0B,EAAW1B,YAAcA,EAClB0B,CACT,EA4BF,SAASC,EAAWxqB,GAClB2H,KAAK8iB,cAAgB,EACrB9iB,KAAK4e,OAAS,IAAIhmB,MAAMP,EAC1B,CAEA,SAAS0qB,EAAUC,EAASN,GAC1B1iB,KAAKijB,cAAgBD,EACrBhjB,KAAK0iB,MAAQA,CACf,CAEA,IAAIQ,EAAkB,WACpB,IAAIC,EAAa,CAAC,EAClB,OAAO,SAAUjB,EAAKC,EAAKC,EAAKC,GAC9B,IAAIe,GAAclB,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,IAAIxE,QAAQ,MAAO,KAElJ,IAAKsF,EAAWC,GAAa,CAC3B,IACInZ,EACAlL,EACAE,EACAqjB,EACAC,EAEAC,EACAE,EARAD,EAAgBza,0BAMhBkZ,EAAc,EAGdyB,EAAY,KAEG,IAAfT,EAAI7pB,SAAiB6pB,EAAI,KAAOC,EAAI,IAAMD,EAAI,KAAOC,EAAI,KAAOV,EAAcS,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAID,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,KAAOX,EAAcS,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,MACjOI,EAAgB,GAGlB,IAAIY,EAAa,IAAIR,EAAWJ,GAGhC,IAFAxjB,EAAMmjB,EAAI/pB,OAEL4R,EAAI,EAAGA,EAAIwY,EAAexY,GAAK,EAAG,CAKrC,IAJAyY,EAAQ3gB,iBAAiB9C,GACzBsjB,EAAOtY,GAAKwY,EAAgB,GAC5BD,EAAa,EAERzjB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBujB,EAAUxf,MAAM,EAAIyf,EAAM,GAAKL,EAAInjB,GAAK,EAAI+D,MAAM,EAAIyf,EAAM,GAAKA,GAAQL,EAAInjB,GAAKqjB,EAAIrjB,IAAM,GAAK,EAAIwjB,GAAQzf,MAAMyf,EAAM,IAAMJ,EAAIpjB,GAAKsjB,EAAItjB,IAAM+D,MAAMyf,EAAM,GAAKJ,EAAIpjB,GACvK2jB,EAAM3jB,GAAKujB,EAEO,OAAdK,IACFH,GAAc1f,MAAM4f,EAAM3jB,GAAK4jB,EAAU5jB,GAAI,IAKjDmiB,GADAsB,EAAaxf,OAAOwf,GAEpBa,EAAWzE,OAAO3U,GAAK,IAAI8Y,EAAUP,EAAYE,GACjDC,EAAYD,CACd,CAEAW,EAAWP,cAAgB5B,EAC3BiC,EAAWC,GAAcC,CAC3B,CAEA,OAAOF,EAAWC,EACpB,CACF,CAlDsB,GAoDtB,SAASE,EAAgBf,EAAMc,GAC7B,IAAIlC,EAAWkC,EAAWlC,SACtBC,EAAUiC,EAAWjC,QACrBniB,EAAMkiB,EAAS9oB,OACfkrB,EAAUrgB,SAASjE,EAAM,GAAKsjB,GAC9BiB,EAAYjB,EAAOc,EAAWnC,YAC9BuC,EAAQ,EAEZ,GAAIF,IAAYtkB,EAAM,GAAiB,IAAZskB,GAAiBC,IAAcpC,EAAQmC,GAChE,OAAOpC,EAASoC,GAMlB,IAHA,IAAIG,EAAMtC,EAAQmC,GAAWC,GAAa,EAAI,EAC1CjlB,GAAO,EAEJA,GAQL,GAPI6iB,EAAQmC,IAAYC,GAAapC,EAAQmC,EAAU,GAAKC,GAC1DC,GAASD,EAAYpC,EAAQmC,KAAanC,EAAQmC,EAAU,GAAKnC,EAAQmC,IACzEhlB,GAAO,GAEPglB,GAAWG,EAGTH,EAAU,GAAKA,GAAWtkB,EAAM,EAAG,CAErC,GAAIskB,IAAYtkB,EAAM,EACpB,OAAOkiB,EAASoC,GAGlBhlB,GAAO,CACT,CAGF,OAAO4iB,EAASoC,IAAYpC,EAASoC,EAAU,GAAKpC,EAASoC,IAAYE,CAC3E,CAUA,IAAIE,EAAsBliB,iBAAiB,UAAW,GAyDtD,MAAO,CACLmiB,kBA7LF,SAA2BC,GACzB,IAKI9kB,EALA+kB,EAAiBzC,mBAAmBN,aACpCzT,EAASuW,EAAU1W,EACnB4W,EAAQF,EAAUxd,EAClB2d,EAAQH,EAAUrY,EAClByY,EAAQJ,EAAU9kB,EAElBE,EAAM4kB,EAAUjD,QAChBQ,EAAU0C,EAAe1C,QACzBE,EAAc,EAElB,IAAKviB,EAAI,EAAGA,EAAIE,EAAM,EAAGF,GAAK,EAC5BqiB,EAAQriB,GAAKkjB,EAAgB8B,EAAMhlB,GAAIglB,EAAMhlB,EAAI,GAAIilB,EAAMjlB,GAAIklB,EAAMllB,EAAI,IACzEuiB,GAAeF,EAAQriB,GAAGmiB,YAS5B,OANI5T,GAAUrO,IACZmiB,EAAQriB,GAAKkjB,EAAgB8B,EAAMhlB,GAAIglB,EAAM,GAAIC,EAAMjlB,GAAIklB,EAAM,IACjE3C,GAAeF,EAAQriB,GAAGmiB,aAG5B4C,EAAexC,YAAcA,EACtBwC,CACT,EAuKEI,cAzDF,SAAuBhC,EAAKC,EAAKC,EAAKC,EAAK8B,EAAWC,EAASf,GACzDc,EAAY,EACdA,EAAY,EACHA,EAAY,IACrBA,EAAY,GAGd,IAGIplB,EAHAslB,EAAKf,EAAgBa,EAAWd,GAEhCiB,EAAKhB,EADTc,EAAUA,EAAU,EAAI,EAAIA,EACMf,GAE9BpkB,EAAMijB,EAAI7pB,OACVksB,EAAK,EAAIF,EACTG,EAAK,EAAIF,EACTG,EAASF,EAAKA,EAAKA,EACnBG,EAAWL,EAAKE,EAAKA,EAAK,EAE1BI,EAAWN,EAAKA,EAAKE,EAAK,EAE1BK,EAASP,EAAKA,EAAKA,EAEnBQ,EAASN,EAAKA,EAAKC,EACnBM,EAAWT,EAAKE,EAAKC,EAAKD,EAAKF,EAAKG,EAAKD,EAAKA,EAAKD,EAEnDS,EAAWV,EAAKA,EAAKG,EAAKD,EAAKF,EAAKC,EAAKD,EAAKE,EAAKD,EAEnDU,EAASX,EAAKA,EAAKC,EAEnBW,EAASV,EAAKC,EAAKA,EACnBU,EAAWb,EAAKG,EAAKA,EAAKD,EAAKD,EAAKE,EAAKD,EAAKC,EAAKF,EAEnDa,EAAWd,EAAKC,EAAKE,EAAKD,EAAKD,EAAKA,EAAKD,EAAKG,EAAKF,EAEnDc,EAASf,EAAKC,EAAKA,EAEnBe,EAASb,EAAKA,EAAKA,EACnBc,EAAWhB,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,EAEnDiB,EAAWjB,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,EAEnDkB,EAASlB,EAAKA,EAAKA,EAEvB,IAAKvlB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4kB,EAAwB,EAAJ5kB,GAASyiB,EAAKnd,MAAoF,KAA7EogB,EAASvC,EAAInjB,GAAK2lB,EAAWtC,EAAIrjB,GAAK4lB,EAAWtC,EAAItjB,GAAK6lB,EAASzC,EAAIpjB,KAAc,IAE9H4kB,EAAwB,EAAJ5kB,EAAQ,GAAKyiB,EAAKnd,MAAoF,KAA7EwgB,EAAS3C,EAAInjB,GAAK+lB,EAAW1C,EAAIrjB,GAAKgmB,EAAW1C,EAAItjB,GAAKimB,EAAS7C,EAAIpjB,KAAc,IAElI4kB,EAAwB,EAAJ5kB,EAAQ,GAAKyiB,EAAKnd,MAAoF,KAA7E4gB,EAAS/C,EAAInjB,GAAKmmB,EAAW9C,EAAIrjB,GAAKomB,EAAW9C,EAAItjB,GAAKqmB,EAASjD,EAAIpjB,KAAc,IAElI4kB,EAAwB,EAAJ5kB,EAAQ,GAAKyiB,EAAKnd,MAAoF,KAA7EghB,EAASnD,EAAInjB,GAAKumB,EAAWlD,EAAIrjB,GAAKwmB,EAAWlD,EAAItjB,GAAKymB,EAASrD,EAAIpjB,KAAc,IAGpI,OAAO4kB,CACT,EAKE8B,kBApEF,SAA2BvD,EAAKC,EAAKC,EAAKC,EAAKqD,EAASrC,GACtD,IAAIiB,EAAKhB,EAAgBoC,EAASrC,GAC9BmB,EAAK,EAAIF,EAGb,MAAO,CAFG9C,EAAKnd,MAAwK,KAAjKmgB,EAAKA,EAAKA,EAAKtC,EAAI,IAAMoC,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,GAAMlC,EAAI,IAAMkC,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,GAAMjC,EAAI,GAAKiC,EAAKA,EAAKA,EAAKnC,EAAI,KAAc,IACrLX,EAAKnd,MAAwK,KAAjKmgB,EAAKA,EAAKA,EAAKtC,EAAI,IAAMoC,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,GAAMlC,EAAI,IAAMkC,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,GAAMjC,EAAI,GAAKiC,EAAKA,EAAKA,EAAKnC,EAAI,KAAc,IAEjM,EA+DEe,gBAAiBA,EACjBzB,cAAeA,EACfkE,cAvQF,SAAuBjE,EAAIC,EAAIiE,EAAIhE,EAAIC,EAAIgE,EAAI/D,EAAIC,EAAI+D,GACrD,GAAW,IAAPF,GAAmB,IAAPC,GAAmB,IAAPC,EAC1B,OAAOrE,EAAcC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAG3C,IAGIgE,EAHAC,EAAQxE,EAAKve,KAAKue,EAAKze,IAAI6e,EAAKF,EAAI,GAAKF,EAAKze,IAAI8e,EAAKF,EAAI,GAAKH,EAAKze,IAAI8iB,EAAKD,EAAI,IAClFK,EAAQzE,EAAKve,KAAKue,EAAKze,IAAI+e,EAAKJ,EAAI,GAAKF,EAAKze,IAAIgf,EAAKJ,EAAI,GAAKH,EAAKze,IAAI+iB,EAAKF,EAAI,IAClFM,EAAQ1E,EAAKve,KAAKue,EAAKze,IAAI+e,EAAKF,EAAI,GAAKJ,EAAKze,IAAIgf,EAAKF,EAAI,GAAKL,EAAKze,IAAI+iB,EAAKD,EAAI,IAetF,OAVIE,EAFAC,EAAQC,EACND,EAAQE,EACCF,EAAQC,EAAQC,EAEhBA,EAAQD,EAAQD,EAEpBE,EAAQD,EACNC,EAAQD,EAAQD,EAEhBC,EAAQD,EAAQE,IAGV,MAAUH,EAAW,IAC1C,EAkPF,CAEA,IAAII,IAAM5E,cAEN6E,UAAY/nB,oBACZgoB,QAAUpqB,KAAK2H,IAEnB,SAAS0iB,iBAAiBC,EAAUC,GAClC,IACIC,EADAC,EAAa1mB,KAAK0mB,WAGA,qBAAlB1mB,KAAK2mB,WACPF,EAAWhlB,iBAAiB,UAAWzB,KAAK4mB,GAAGvuB,SAWjD,IARA,IAIIwuB,EACAC,EACAC,EA6BA9c,EACAC,EACAqY,EACAvY,EACAD,EACAid,EAxCAC,EAAiBT,EAAQU,UACzBnoB,EAAIkoB,EACJhoB,EAAMe,KAAKmnB,UAAU9uB,OAAS,EAC9BkG,GAAO,EAKJA,GAAM,CAIX,GAHAsoB,EAAU7mB,KAAKmnB,UAAUpoB,GACzB+nB,EAAc9mB,KAAKmnB,UAAUpoB,EAAI,GAE7BA,IAAME,EAAM,GAAKsnB,GAAYO,EAAYlgB,EAAI8f,EAAY,CACvDG,EAAQ1gB,IACV0gB,EAAUC,GAGZG,EAAiB,EACjB,KACF,CAEA,GAAIH,EAAYlgB,EAAI8f,EAAaH,EAAU,CACzCU,EAAiBloB,EACjB,KACF,CAEIA,EAAIE,EAAM,EACZF,GAAK,GAELkoB,EAAiB,EACjB1oB,GAAO,EAEX,CAEAwoB,EAAmB/mB,KAAKonB,kBAAkBroB,IAAM,CAAC,EAOjD,IAEIsoB,EAFAC,EAAcR,EAAYlgB,EAAI8f,EAC9Ba,EAAUV,EAAQjgB,EAAI8f,EAG1B,GAAIG,EAAQW,GAAI,CACTT,EAAiB1D,aACpB0D,EAAiB1D,WAAa8C,IAAIjD,gBAAgB2D,EAAQzgB,EAAG0gB,EAAY1gB,GAAKygB,EAAQnd,EAAGmd,EAAQW,GAAIX,EAAQY,KAG/G,IAAIpE,EAAa0D,EAAiB1D,WAElC,GAAIkD,GAAYe,GAAef,EAAWgB,EAAS,CACjD,IAAIG,EAAMnB,GAAYe,EAAcjE,EAAWzE,OAAOvmB,OAAS,EAAI,EAGnE,IAFA6R,EAAOmZ,EAAWzE,OAAO8I,GAAKhF,MAAMrqB,OAE/B4R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBwc,EAASxc,GAAKoZ,EAAWzE,OAAO8I,GAAKhF,MAAMzY,EAG/C,KAAO,CACD8c,EAAiBY,OACnBX,EAAMD,EAAiBY,QAEvBX,EAAMrJ,cAAciK,gBAAgBf,EAAQrb,EAAE5Q,EAAGisB,EAAQrb,EAAEzQ,EAAG8rB,EAAQ9nB,EAAEnE,EAAGisB,EAAQ9nB,EAAEhE,EAAG8rB,EAAQgB,GAAG7I,IACnG+H,EAAiBY,OAASX,GAG5BzE,EAAOyE,GAAKT,EAAWgB,IAAYD,EAAcC,IACjD,IACIO,EADAC,EAAiB1E,EAAWP,cAAgBP,EAE5CrB,EAAcsF,EAAQwB,UAAYzB,GAAYC,EAAQyB,qBAAuBlpB,EAAIynB,EAAQ0B,iBAAmB,EAKhH,IAJAne,EAAIyc,EAAQwB,UAAYzB,GAAYC,EAAQyB,qBAAuBlpB,EAAIynB,EAAQ2B,WAAa,EAC5F5pB,GAAO,EACPyL,EAAOqZ,EAAWzE,OAAOvmB,OAElBkG,GAAM,CAGX,GAFA2iB,GAAemC,EAAWzE,OAAO7U,GAAGkZ,cAEb,IAAnB8E,GAAiC,IAATxF,GAAcxY,IAAMsZ,EAAWzE,OAAOvmB,OAAS,EAAG,CAG5E,IAFA6R,EAAOmZ,EAAWzE,OAAO7U,GAAG2Y,MAAMrqB,OAE7B4R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBwc,EAASxc,GAAKoZ,EAAWzE,OAAO7U,GAAG2Y,MAAMzY,GAG3C,KACF,CAAO,GAAI8d,GAAkB7G,GAAe6G,EAAiB7G,EAAcmC,EAAWzE,OAAO7U,EAAI,GAAGkZ,cAAe,CAIjH,IAHA6E,GAAeC,EAAiB7G,GAAemC,EAAWzE,OAAO7U,EAAI,GAAGkZ,cACxE/Y,EAAOmZ,EAAWzE,OAAO7U,GAAG2Y,MAAMrqB,OAE7B4R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBwc,EAASxc,GAAKoZ,EAAWzE,OAAO7U,GAAG2Y,MAAMzY,IAAMoZ,EAAWzE,OAAO7U,EAAI,GAAG2Y,MAAMzY,GAAKoZ,EAAWzE,OAAO7U,GAAG2Y,MAAMzY,IAAM6d,EAGtH,KACF,CAEI/d,EAAIC,EAAO,EACbD,GAAK,EAELxL,GAAO,CAEX,CAEAioB,EAAQ2B,WAAape,EACrByc,EAAQ0B,iBAAmBhH,EAAcmC,EAAWzE,OAAO7U,GAAGkZ,cAC9DuD,EAAQyB,mBAAqBlpB,CAC/B,CACF,KAAO,CACL,IAAIqpB,EACAC,EACAC,EACAC,EACAC,EAIJ,GAHAvpB,EAAM4nB,EAAQzgB,EAAE/N,OAChBgvB,EAAWP,EAAY1gB,GAAKygB,EAAQnd,EAEhC1J,KAAKyoB,IAAoB,IAAd5B,EAAQ1gB,EACjBogB,GAAYe,GACdb,EAAS,GAAKY,EAAS,GACvBZ,EAAS,GAAKY,EAAS,GACvBZ,EAAS,GAAKY,EAAS,IACdd,GAAYgB,GACrBd,EAAS,GAAKI,EAAQzgB,EAAE,GACxBqgB,EAAS,GAAKI,EAAQzgB,EAAE,GACxBqgB,EAAS,GAAKI,EAAQzgB,EAAE,IAKxBsiB,kBAAkBjC,EAAUkC,MAHZC,iBAAiB/B,EAAQzgB,GAC3BwiB,iBAAiBvB,IACnBd,EAAWgB,IAAYD,EAAcC,UAInD,IAAKxoB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACN,IAAd8nB,EAAQ1gB,IACNogB,GAAYe,EACd/E,EAAO,EACEgE,EAAWgB,EACpBhF,EAAO,GAEHsE,EAAQrb,EAAE5Q,EAAEyH,cAAgBzJ,OACzBmuB,EAAiBY,SACpBZ,EAAiBY,OAAS,IAGvBZ,EAAiBY,OAAO5oB,GAQ3BioB,EAAMD,EAAiBY,OAAO5oB,IAP9BqpB,OAA0BnwB,IAAnB4uB,EAAQrb,EAAE5Q,EAAEmE,GAAmB8nB,EAAQrb,EAAE5Q,EAAE,GAAKisB,EAAQrb,EAAE5Q,EAAEmE,GACnEspB,OAA0BpwB,IAAnB4uB,EAAQrb,EAAEzQ,EAAEgE,GAAmB8nB,EAAQrb,EAAEzQ,EAAE,GAAK8rB,EAAQrb,EAAEzQ,EAAEgE,GACnEupB,OAAyBrwB,IAAnB4uB,EAAQ9nB,EAAEnE,EAAEmE,GAAmB8nB,EAAQ9nB,EAAEnE,EAAE,GAAKisB,EAAQ9nB,EAAEnE,EAAEmE,GAClEwpB,OAAyBtwB,IAAnB4uB,EAAQ9nB,EAAEhE,EAAEgE,GAAmB8nB,EAAQ9nB,EAAEhE,EAAE,GAAK8rB,EAAQ9nB,EAAEhE,EAAEgE,GAClEioB,EAAMrJ,cAAciK,gBAAgBQ,EAAMC,EAAMC,EAAKC,GAAKvJ,IAC1D+H,EAAiBY,OAAO5oB,GAAKioB,IAIrBD,EAAiBY,OAQ3BX,EAAMD,EAAiBY,QAPvBS,EAAOvB,EAAQrb,EAAE5Q,EACjBytB,EAAOxB,EAAQrb,EAAEzQ,EACjButB,EAAMzB,EAAQ9nB,EAAEnE,EAChB2tB,EAAM1B,EAAQ9nB,EAAEhE,EAChBisB,EAAMrJ,cAAciK,gBAAgBQ,EAAMC,EAAMC,EAAKC,GAAKvJ,IAC1D6H,EAAQE,iBAAmBC,GAK7BzE,EAAOyE,GAAKT,EAAWgB,IAAYD,EAAcC,MAIrDF,EAAWP,EAAY1gB,GAAKygB,EAAQnd,EACpC8e,EAAyB,IAAd3B,EAAQ1gB,EAAU0gB,EAAQzgB,EAAErH,GAAK8nB,EAAQzgB,EAAErH,IAAMsoB,EAAStoB,GAAK8nB,EAAQzgB,EAAErH,IAAMwjB,EAEpE,qBAAlBviB,KAAK2mB,SACPF,EAAS1nB,GAAKypB,EAEd/B,EAAW+B,CAInB,CAGA,OADAhC,EAAQU,UAAYD,EACbR,CACT,CAGA,SAASkC,MAAM/b,EAAGpG,EAAGI,GACnB,IASIiiB,EACAC,EACAC,EACAC,EACAC,EAbAC,EAAM,GACNC,EAAKvc,EAAE,GACPwc,EAAKxc,EAAE,GACPyc,EAAKzc,EAAE,GACP0c,EAAK1c,EAAE,GACP2c,EAAK/iB,EAAE,GACPgjB,EAAKhjB,EAAE,GACPijB,EAAKjjB,EAAE,GACPkjB,EAAKljB,EAAE,GA8BX,OAxBAsiB,EAAQK,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,GAE/B,IACVZ,GAASA,EACTS,GAAMA,EACNC,GAAMA,EACNC,GAAMA,EACNC,GAAMA,GAGJ,EAAMZ,EAAQ,MAChBD,EAAQ5sB,KAAK0tB,KAAKb,GAClBC,EAAQ9sB,KAAK2tB,IAAIf,GACjBG,EAAS/sB,KAAK2tB,KAAK,EAAMhjB,GAAKiiB,GAASE,EACvCE,EAAShtB,KAAK2tB,IAAIhjB,EAAIiiB,GAASE,IAE/BC,EAAS,EAAMpiB,EACfqiB,EAASriB,GAGXsiB,EAAI,GAAKF,EAASG,EAAKF,EAASM,EAChCL,EAAI,GAAKF,EAASI,EAAKH,EAASO,EAChCN,EAAI,GAAKF,EAASK,EAAKJ,EAASQ,EAChCP,EAAI,GAAKF,EAASM,EAAKL,EAASS,EACzBR,CACT,CAEA,SAASR,kBAAkBQ,EAAKW,GAC9B,IAAIC,EAAKD,EAAK,GACVE,EAAKF,EAAK,GACVG,EAAKH,EAAK,GACVI,EAAKJ,EAAK,GACVK,EAAUjuB,KAAKkuB,MAAM,EAAIJ,EAAKE,EAAK,EAAIH,EAAKE,EAAI,EAAI,EAAID,EAAKA,EAAK,EAAIC,EAAKA,GAC3EI,EAAWnuB,KAAKouB,KAAK,EAAIP,EAAKC,EAAK,EAAIC,EAAKC,GAC5CK,EAAOruB,KAAKkuB,MAAM,EAAIL,EAAKG,EAAK,EAAIF,EAAKC,EAAI,EAAI,EAAIF,EAAKA,EAAK,EAAIE,EAAKA,GAC5Ed,EAAI,GAAKgB,EAAUlmB,UACnBklB,EAAI,GAAKkB,EAAWpmB,UACpBklB,EAAI,GAAKoB,EAAOtmB,SAClB,CAEA,SAAS4kB,iBAAiB2B,GACxB,IAAIL,EAAUK,EAAO,GAAKvmB,UACtBomB,EAAWG,EAAO,GAAKvmB,UACvBsmB,EAAOC,EAAO,GAAKvmB,UACnBwmB,EAAKvuB,KAAKwuB,IAAIP,EAAU,GACxBQ,EAAKzuB,KAAKwuB,IAAIL,EAAW,GACzBO,EAAK1uB,KAAKwuB,IAAIH,EAAO,GACrBM,EAAK3uB,KAAK2tB,IAAIM,EAAU,GACxBW,EAAK5uB,KAAK2tB,IAAIQ,EAAW,GACzBU,EAAK7uB,KAAK2tB,IAAIU,EAAO,GAKzB,MAAO,CAHCM,EAAKC,EAAKF,EAAKH,EAAKE,EAAKI,EACzBF,EAAKF,EAAKC,EAAKH,EAAKK,EAAKC,EACzBN,EAAKK,EAAKF,EAAKC,EAAKF,EAAKI,EAHzBN,EAAKE,EAAKC,EAAKC,EAAKC,EAAKC,EAKnC,CAEA,SAASC,wBACP,IAAIxE,EAAWvmB,KAAKgL,KAAKggB,cAAgBhrB,KAAK0mB,WAC1C9K,EAAW5b,KAAKmnB,UAAU,GAAGvgB,EAAI5G,KAAK0mB,WACtCuE,EAAUjrB,KAAKmnB,UAAUnnB,KAAKmnB,UAAU9uB,OAAS,GAAGuO,EAAI5G,KAAK0mB,WAEjE,KAAMH,IAAavmB,KAAKkrB,SAASlD,WAAahoB,KAAKkrB,SAASlD,YAAc5B,YAAcpmB,KAAKkrB,SAASlD,WAAaiD,GAAW1E,GAAY0E,GAAWjrB,KAAKkrB,SAASlD,UAAYpM,GAAY2K,EAAW3K,IAAY,CAC5M5b,KAAKkrB,SAASlD,WAAazB,IAC7BvmB,KAAKkrB,SAASjD,oBAAsB,EACpCjoB,KAAKkrB,SAAShE,UAAY,GAG5B,IAAIiE,EAAenrB,KAAKsmB,iBAAiBC,EAAUvmB,KAAKkrB,UACxDlrB,KAAK4mB,GAAKuE,CACZ,CAGA,OADAnrB,KAAKkrB,SAASlD,UAAYzB,EACnBvmB,KAAK4mB,EACd,CAEA,SAASwE,UAAUvnB,GACjB,IAAIwnB,EAEJ,GAAsB,mBAAlBrrB,KAAK2mB,SACP0E,EAAkBxnB,EAAM7D,KAAKsrB,KAEzBjF,QAAQrmB,KAAKqG,EAAIglB,GAAmB,OACtCrrB,KAAKqG,EAAIglB,EACTrrB,KAAKurB,MAAO,QAMd,IAHA,IAAIxsB,EAAI,EACJE,EAAMe,KAAKqG,EAAEhO,OAEV0G,EAAIE,GACTosB,EAAkBxnB,EAAI9E,GAAKiB,KAAKsrB,KAE5BjF,QAAQrmB,KAAKqG,EAAEtH,GAAKssB,GAAmB,OACzCrrB,KAAKqG,EAAEtH,GAAKssB,EACZrrB,KAAKurB,MAAO,GAGdxsB,GAAK,CAGX,CAEA,SAASysB,yBACP,GAAIxrB,KAAKoc,KAAKjF,WAAWsU,UAAYzrB,KAAKyrB,SAAYzrB,KAAK0rB,gBAAgBrzB,OAI3E,GAAI2H,KAAK2rB,KACP3rB,KAAKorB,UAAUprB,KAAK4mB,QADtB,CAOA,IAAI7nB,EAFJiB,KAAK2rB,MAAO,EACZ3rB,KAAKurB,KAAOvrB,KAAK4rB,cAEjB,IAAI3sB,EAAMe,KAAK0rB,gBAAgBrzB,OAC3BwzB,EAAa7rB,KAAK8rB,GAAK9rB,KAAK4mB,GAAK5mB,KAAK+I,KAAKkB,EAE/C,IAAKlL,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB8sB,EAAa7rB,KAAK0rB,gBAAgB3sB,GAAG8sB,GAGvC7rB,KAAKorB,UAAUS,GACf7rB,KAAK4rB,eAAgB,EACrB5rB,KAAK2rB,MAAO,EACZ3rB,KAAKyrB,QAAUzrB,KAAKoc,KAAKjF,WAAWsU,OAfpC,CAgBF,CAEA,SAASM,UAAUC,GACjBhsB,KAAK0rB,gBAAgBprB,KAAK0rB,GAC1BhsB,KAAKxH,UAAUyzB,mBAAmBjsB,KACpC,CAEA,SAASksB,cAAc9P,EAAMrT,EAAMuiB,EAAM9yB,GACvCwH,KAAK2mB,SAAW,iBAChB3mB,KAAKsrB,KAAOA,GAAQ,EACpBtrB,KAAK+I,KAAOA,EACZ/I,KAAKqG,EAAIilB,EAAOviB,EAAKkB,EAAIqhB,EAAOviB,EAAKkB,EACrCjK,KAAK4mB,GAAK7d,EAAKkB,EACfjK,KAAKurB,MAAO,EACZvrB,KAAKoc,KAAOA,EACZpc,KAAKxH,UAAYA,EACjBwH,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAKiK,GAAI,EACTjK,KAAK8rB,IAAK,EACV9rB,KAAKmsB,IAAM,EACXnsB,KAAK0rB,gBAAkB,GACvB1rB,KAAK4rB,eAAgB,EACrB5rB,KAAKosB,SAAWZ,uBAChBxrB,KAAKorB,UAAYA,UACjBprB,KAAK+rB,UAAYA,SACnB,CAEA,SAASM,yBAAyBjQ,EAAMrT,EAAMuiB,EAAM9yB,GAWlD,IAAIuG,EAVJiB,KAAK2mB,SAAW,mBAChB3mB,KAAKsrB,KAAOA,GAAQ,EACpBtrB,KAAK+I,KAAOA,EACZ/I,KAAKurB,MAAO,EACZvrB,KAAKoc,KAAOA,EACZpc,KAAKxH,UAAYA,EACjBwH,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAKiK,GAAI,EACTjK,KAAK8rB,IAAK,EACV9rB,KAAKyrB,SAAW,EAEhB,IAAIxsB,EAAM8J,EAAKkB,EAAE5R,OAKjB,IAJA2H,KAAKqG,EAAI5E,iBAAiB,UAAWxC,GACrCe,KAAK4mB,GAAKnlB,iBAAiB,UAAWxC,GACtCe,KAAKmsB,IAAM1qB,iBAAiB,UAAWxC,GAElCF,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKqG,EAAEtH,GAAKgK,EAAKkB,EAAElL,GAAKiB,KAAKsrB,KAC7BtrB,KAAK4mB,GAAG7nB,GAAKgK,EAAKkB,EAAElL,GAGtBiB,KAAK4rB,eAAgB,EACrB5rB,KAAK0rB,gBAAkB,GACvB1rB,KAAKosB,SAAWZ,uBAChBxrB,KAAKorB,UAAYA,UACjBprB,KAAK+rB,UAAYA,SACnB,CAEA,SAASO,uBAAuBlQ,EAAMrT,EAAMuiB,EAAM9yB,GAChDwH,KAAK2mB,SAAW,iBAChB3mB,KAAKmnB,UAAYpe,EAAKkB,EACtBjK,KAAKonB,kBAAoB,GACzBpnB,KAAK0mB,WAAatK,EAAKrT,KAAK2D,GAC5B1M,KAAKyrB,SAAW,EAChBzrB,KAAKkrB,SAAW,CACdlD,UAAW5B,UACXc,UAAW,EACX9vB,MAAO,EACP6wB,oBAAqB,GAEvBjoB,KAAKiK,GAAI,EACTjK,KAAK8rB,IAAK,EACV9rB,KAAK+I,KAAOA,EACZ/I,KAAKsrB,KAAOA,GAAQ,EACpBtrB,KAAKoc,KAAOA,EACZpc,KAAKxH,UAAYA,EACjBwH,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAKqG,EAAI+f,UACTpmB,KAAK4mB,GAAKR,UACVpmB,KAAK4rB,eAAgB,EACrB5rB,KAAKosB,SAAWZ,uBAChBxrB,KAAKorB,UAAYA,UACjBprB,KAAKsmB,iBAAmBA,iBACxBtmB,KAAK0rB,gBAAkB,CAACX,sBAAsBrZ,KAAK1R,OACnDA,KAAK+rB,UAAYA,SACnB,CAEA,SAASQ,kCAAkCnQ,EAAMrT,EAAMuiB,EAAM9yB,GAE3D,IAAIuG,EADJiB,KAAK2mB,SAAW,mBAEhB,IACIvgB,EACAsD,EACA8d,EACAC,EAJAxoB,EAAM8J,EAAKkB,EAAE5R,OAMjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAM,EAAGF,GAAK,EACxBgK,EAAKkB,EAAElL,GAAGyoB,IAAMze,EAAKkB,EAAElL,GAAGqH,GAAK2C,EAAKkB,EAAElL,EAAI,IAAMgK,EAAKkB,EAAElL,EAAI,GAAGqH,IAChEA,EAAI2C,EAAKkB,EAAElL,GAAGqH,EACdsD,EAAIX,EAAKkB,EAAElL,EAAI,GAAGqH,EAClBohB,EAAKze,EAAKkB,EAAElL,GAAGyoB,GACfC,EAAK1e,EAAKkB,EAAElL,GAAG0oB,IAEE,IAAbrhB,EAAE/N,SAAkB+N,EAAE,KAAOsD,EAAE,IAAMtD,EAAE,KAAOsD,EAAE,KAAOyc,IAAI1E,cAAcrb,EAAE,GAAIA,EAAE,GAAIsD,EAAE,GAAIA,EAAE,GAAItD,EAAE,GAAKohB,EAAG,GAAIphB,EAAE,GAAKohB,EAAG,KAAOrB,IAAI1E,cAAcrb,EAAE,GAAIA,EAAE,GAAIsD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAK+d,EAAG,GAAI/d,EAAE,GAAK+d,EAAG,KAAoB,IAAbrhB,EAAE/N,SAAkB+N,EAAE,KAAOsD,EAAE,IAAMtD,EAAE,KAAOsD,EAAE,IAAMtD,EAAE,KAAOsD,EAAE,KAAOyc,IAAIR,cAAcvf,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIsD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAItD,EAAE,GAAKohB,EAAG,GAAIphB,EAAE,GAAKohB,EAAG,GAAIphB,EAAE,GAAKohB,EAAG,KAAOrB,IAAIR,cAAcvf,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIsD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAK+d,EAAG,GAAI/d,EAAE,GAAK+d,EAAG,GAAI/d,EAAE,GAAK+d,EAAG,OACld1e,EAAKkB,EAAElL,GAAGyoB,GAAK,KACfze,EAAKkB,EAAElL,GAAG0oB,GAAK,MAGbrhB,EAAE,KAAOsD,EAAE,IAAMtD,EAAE,KAAOsD,EAAE,IAAgB,IAAV8d,EAAG,IAAsB,IAAVA,EAAG,IAAsB,IAAVC,EAAG,IAAsB,IAAVA,EAAG,KACnE,IAAbrhB,EAAE/N,QAAgB+N,EAAE,KAAOsD,EAAE,IAAgB,IAAV8d,EAAG,IAAsB,IAAVC,EAAG,MACvD1e,EAAKkB,EAAElL,GAAGyoB,GAAK,KACfze,EAAKkB,EAAElL,GAAG0oB,GAAK,OAMvBznB,KAAK0rB,gBAAkB,CAACX,sBAAsBrZ,KAAK1R,OACnDA,KAAK+I,KAAOA,EACZ/I,KAAKmnB,UAAYpe,EAAKkB,EACtBjK,KAAKonB,kBAAoB,GACzBpnB,KAAK0mB,WAAatK,EAAKrT,KAAK2D,GAC5B1M,KAAKiK,GAAI,EACTjK,KAAK8rB,IAAK,EACV9rB,KAAK4rB,eAAgB,EACrB5rB,KAAKsrB,KAAOA,GAAQ,EACpBtrB,KAAKoc,KAAOA,EACZpc,KAAKxH,UAAYA,EACjBwH,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAKosB,SAAWZ,uBAChBxrB,KAAKorB,UAAYA,UACjBprB,KAAKsmB,iBAAmBA,iBACxBtmB,KAAKyrB,SAAW,EAChB,IAAIe,EAASzjB,EAAKkB,EAAE,GAAG7D,EAAE/N,OAIzB,IAHA2H,KAAKqG,EAAI5E,iBAAiB,UAAW+qB,GACrCxsB,KAAK4mB,GAAKnlB,iBAAiB,UAAW+qB,GAEjCztB,EAAI,EAAGA,EAAIytB,EAAQztB,GAAK,EAC3BiB,KAAKqG,EAAEtH,GAAKqnB,UACZpmB,KAAK4mB,GAAG7nB,GAAKqnB,UAGfpmB,KAAKkrB,SAAW,CACdlD,UAAW5B,UACXc,UAAW,EACX9vB,MAAOqK,iBAAiB,UAAW+qB,IAErCxsB,KAAK+rB,UAAYA,SACnB,CAEA,IAAIU,gBAkCO,CACPC,QAlCF,SAAiBtQ,EAAMrT,EAAMjN,EAAMwvB,EAAM9yB,GAKvC,IAAIkO,EAEJ,GANIqC,EAAK4jB,MACP5jB,EAAOqT,EAAKjF,WAAWyV,YAAYF,QAAQ3jB,IAKxCA,EAAKkB,EAAE5R,OAEL,GAAyB,kBAAd0Q,EAAKkB,EAAE,GACvBvD,EAAI,IAAI2lB,yBAAyBjQ,EAAMrT,EAAMuiB,EAAM9yB,QAEnD,OAAQsD,GACN,KAAK,EACH4K,EAAI,IAAI4lB,uBAAuBlQ,EAAMrT,EAAMuiB,EAAM9yB,GACjD,MAEF,KAAK,EACHkO,EAAI,IAAI6lB,kCAAkCnQ,EAAMrT,EAAMuiB,EAAM9yB,QAVhEkO,EAAI,IAAIwlB,cAAc9P,EAAMrT,EAAMuiB,EAAM9yB,GAsB1C,OAJIkO,EAAEglB,gBAAgBrzB,QACpBG,EAAUyzB,mBAAmBvlB,GAGxBA,CACT,GAQF,SAASmmB,2BAA4B,CAErCA,yBAAyB1tB,UAAY,CACnC8sB,mBAAoB,SAA4BxsB,IACA,IAA1CO,KAAK8sB,kBAAkB5e,QAAQzO,KACjCO,KAAK8sB,kBAAkBxsB,KAAKb,GAC5BO,KAAKxH,UAAUyzB,mBAAmBjsB,MAClCA,KAAK+sB,aAAc,EAEvB,EACAC,yBAA0B,WAExB,IAAIjuB,EADJiB,KAAKurB,MAAO,EAEZ,IAAItsB,EAAMe,KAAK8sB,kBAAkBz0B,OAEjC,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK8sB,kBAAkB/tB,GAAGqtB,WAEtBpsB,KAAK8sB,kBAAkB/tB,GAAGwsB,OAC5BvrB,KAAKurB,MAAO,EAGlB,EACA0B,6BAA8B,SAAsCz0B,GAClEwH,KAAKxH,UAAYA,EACjBwH,KAAK8sB,kBAAoB,GACzB9sB,KAAKurB,MAAO,EACZvrB,KAAK+sB,aAAc,CACrB,GAGF,IAAIG,UAKK1M,YAAY,GAJnB,WACE,OAAO/e,iBAAiB,UAAW,EACrC,IAKF,SAAS0rB,YACPntB,KAAKmN,GAAI,EACTnN,KAAK4gB,QAAU,EACf5gB,KAAK6gB,WAAa,EAClB7gB,KAAKqG,EAAItE,iBAAiB/B,KAAK6gB,YAC/B7gB,KAAKwL,EAAIzJ,iBAAiB/B,KAAK6gB,YAC/B7gB,KAAKjB,EAAIgD,iBAAiB/B,KAAK6gB,WACjC,CAEAsM,UAAUhuB,UAAUiuB,YAAc,SAAU9f,EAAQrO,GAClDe,KAAKmN,EAAIG,EACTtN,KAAKqtB,UAAUpuB,GAGf,IAFA,IAAIF,EAAI,EAEDA,EAAIE,GACTe,KAAKqG,EAAEtH,GAAKmuB,UAAUnM,aACtB/gB,KAAKwL,EAAEzM,GAAKmuB,UAAUnM,aACtB/gB,KAAKjB,EAAEA,GAAKmuB,UAAUnM,aACtBhiB,GAAK,CAET,EAEAouB,UAAUhuB,UAAUkuB,UAAY,SAAUpuB,GACxC,KAAOe,KAAK6gB,WAAa5hB,GACvBe,KAAKstB,oBAGPttB,KAAK4gB,QAAU3hB,CACjB,EAEAkuB,UAAUhuB,UAAUmuB,kBAAoB,WACtCttB,KAAKqG,EAAIrG,KAAKqG,EAAEyW,OAAO/a,iBAAiB/B,KAAK6gB,aAC7C7gB,KAAKjB,EAAIiB,KAAKjB,EAAE+d,OAAO/a,iBAAiB/B,KAAK6gB,aAC7C7gB,KAAKwL,EAAIxL,KAAKwL,EAAEsR,OAAO/a,iBAAiB/B,KAAK6gB,aAC7C7gB,KAAK6gB,YAAc,CACrB,EAEAsM,UAAUhuB,UAAUouB,QAAU,SAAU3yB,EAAGG,EAAGe,EAAMY,EAAKmhB,GACvD,IAAIlc,EAOJ,OANA3B,KAAK4gB,QAAU3kB,KAAKoH,IAAIrD,KAAK4gB,QAASlkB,EAAM,GAExCsD,KAAK4gB,SAAW5gB,KAAK6gB,YACvB7gB,KAAKstB,oBAGCxxB,GACN,IAAK,IACH6F,EAAM3B,KAAKqG,EACX,MAEF,IAAK,IACH1E,EAAM3B,KAAKjB,EACX,MAEF,IAAK,IACH4C,EAAM3B,KAAKwL,EACX,MAEF,QACE7J,EAAM,KAILA,EAAIjF,IAAQiF,EAAIjF,KAASmhB,KAC5Blc,EAAIjF,GAAOwwB,UAAUnM,cAGvBpf,EAAIjF,GAAK,GAAK9B,EACd+G,EAAIjF,GAAK,GAAK3B,CAChB,EAEAoyB,UAAUhuB,UAAUquB,YAAc,SAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIpxB,EAAKmhB,GACvE7d,KAAKutB,QAAQE,EAAIC,EAAI,IAAKhxB,EAAKmhB,GAC/B7d,KAAKutB,QAAQI,EAAIC,EAAI,IAAKlxB,EAAKmhB,GAC/B7d,KAAKutB,QAAQM,EAAIC,EAAI,IAAKpxB,EAAKmhB,EACjC,EAEAsP,UAAUhuB,UAAU4uB,QAAU,WAC5B,IAAIC,EAAU,IAAIb,UAClBa,EAAQZ,YAAYptB,KAAKmN,EAAGnN,KAAK4gB,SACjC,IAAIqN,EAAWjuB,KAAKqG,EAChB6nB,EAAYluB,KAAKwL,EACjB2iB,EAAWnuB,KAAKjB,EAChB+b,EAAO,EAEP9a,KAAKmN,IACP6gB,EAAQR,YAAYS,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAIE,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAID,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAI,GAAG,GACzHpT,EAAO,GAGT,IAEI/b,EAFAqvB,EAAMpuB,KAAK4gB,QAAU,EACrB3hB,EAAMe,KAAK4gB,QAGf,IAAK7hB,EAAI+b,EAAM/b,EAAIE,EAAKF,GAAK,EAC3BivB,EAAQR,YAAYS,EAASG,GAAK,GAAIH,EAASG,GAAK,GAAID,EAASC,GAAK,GAAID,EAASC,GAAK,GAAIF,EAAUE,GAAK,GAAIF,EAAUE,GAAK,GAAIrvB,GAAG,GACrIqvB,GAAO,EAGT,OAAOJ,CACT,EAEAb,UAAUhuB,UAAU9G,OAAS,WAC3B,OAAO2H,KAAK4gB,OACd,EAEA,IAAIyN,UAAY,WAoCd,IAAIrwB,EAAUwiB,YAAY,GAnC1B,WACE,OAAO,IAAI2M,SACb,IAEA,SAAiBmB,GACf,IACIvvB,EADAE,EAAMqvB,EAAU1N,QAGpB,IAAK7hB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBmuB,UAAUlM,QAAQsN,EAAUjoB,EAAEtH,IAC9BmuB,UAAUlM,QAAQsN,EAAUvvB,EAAEA,IAC9BmuB,UAAUlM,QAAQsN,EAAU9iB,EAAEzM,IAC9BuvB,EAAUjoB,EAAEtH,GAAK,KACjBuvB,EAAUvvB,EAAEA,GAAK,KACjBuvB,EAAU9iB,EAAEzM,GAAK,KAGnBuvB,EAAU1N,QAAU,EACpB0N,EAAUnhB,GAAI,CAChB,IAkBA,OADAnP,EAAQuwB,MAfR,SAAeC,GACb,IACIzvB,EADA0vB,EAASzwB,EAAQ+iB,aAEjB9hB,OAAwBhH,IAAlBu2B,EAAM5N,QAAwB4N,EAAMnoB,EAAEhO,OAASm2B,EAAM5N,QAI/D,IAHA6N,EAAOpB,UAAUpuB,GACjBwvB,EAAOthB,EAAIqhB,EAAMrhB,EAEZpO,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB0vB,EAAOjB,YAAYgB,EAAMnoB,EAAEtH,GAAG,GAAIyvB,EAAMnoB,EAAEtH,GAAG,GAAIyvB,EAAMhjB,EAAEzM,GAAG,GAAIyvB,EAAMhjB,EAAEzM,GAAG,GAAIyvB,EAAMzvB,EAAEA,GAAG,GAAIyvB,EAAMzvB,EAAEA,GAAG,GAAIA,GAG/G,OAAO0vB,CACT,EAIOzwB,CACT,CAvCgB,GAyChB,SAAS0wB,kBACP1uB,KAAK4gB,QAAU,EACf5gB,KAAK6gB,WAAa,EAClB7gB,KAAK6K,OAAS9I,iBAAiB/B,KAAK6gB,WACtC,CAEA6N,gBAAgBvvB,UAAUwvB,SAAW,SAAU9K,GACzC7jB,KAAK4gB,UAAY5gB,KAAK6gB,aACxB7gB,KAAK6K,OAAS7K,KAAK6K,OAAOiS,OAAO/a,iBAAiB/B,KAAK6gB,aACvD7gB,KAAK6gB,YAAc,GAGrB7gB,KAAK6K,OAAO7K,KAAK4gB,SAAWiD,EAC5B7jB,KAAK4gB,SAAW,CAClB,EAEA8N,gBAAgBvvB,UAAUyvB,cAAgB,WACxC,IAAI7vB,EAEJ,IAAKA,EAAI,EAAGA,EAAIiB,KAAK4gB,QAAS7hB,GAAK,EACjCsvB,UAAUrN,QAAQhhB,KAAK6K,OAAO9L,IAGhCiB,KAAK4gB,QAAU,CACjB,EAEA,IAAIiO,oBAAsB,WACxB,IAAIjd,EAAK,CACPkd,mBAOF,WAUE,OAPIlO,EAEgBE,EADlBF,GAAW,GAGO,IAAI8N,eAI1B,EAjBE1N,QAmBF,SAAiB+N,GACf,IAAIhwB,EACAE,EAAM8vB,EAAgBnO,QAE1B,IAAK7hB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBsvB,UAAUrN,QAAQ+N,EAAgBlkB,OAAO9L,IAG3CgwB,EAAgBnO,QAAU,EAEtBA,IAAYC,IACdC,EAAOP,QAAgB,OAAEO,GACzBD,GAAc,GAGhBC,EAAKF,GAAWmO,EAChBnO,GAAW,CACb,GAlCIA,EAAU,EACVC,EAAa,EACbC,EAAO/e,iBAAiB8e,GAkC5B,OAAOjP,CACT,CA1C0B,GA4CtBod,qBAAuB,WACzB,IAAI5I,GAAa,OAEjB,SAAS6I,EAAiB1I,EAAU2I,EAAe1I,GACjD,IACI2I,EACAC,EACAC,EACAtlB,EACAE,EACAD,EACAE,EACAqY,EACA+M,EATArI,EAAiBT,EAAQU,UAUzB4E,EAAK9rB,KAAKmnB,UAEd,GAAIZ,EAAWuF,EAAG,GAAGllB,EAAI5G,KAAK0mB,WAC5ByI,EAAWrD,EAAG,GAAG1lB,EAAE,GACnBipB,GAAS,EACTpI,EAAiB,OACZ,GAAIV,GAAYuF,EAAGA,EAAGzzB,OAAS,GAAGuO,EAAI5G,KAAK0mB,WAChDyI,EAAWrD,EAAGA,EAAGzzB,OAAS,GAAG+N,EAAI0lB,EAAGA,EAAGzzB,OAAS,GAAG+N,EAAE,GAAK0lB,EAAGA,EAAGzzB,OAAS,GAAGqR,EAAE,GAO9E2lB,GAAS,MACJ,CAQL,IAPA,IAGIxI,EACAC,EACAC,EALAhoB,EAAIkoB,EACJhoB,EAAM6sB,EAAGzzB,OAAS,EAClBkG,GAAO,EAKJA,IACLsoB,EAAUiF,EAAG/sB,MACb+nB,EAAcgF,EAAG/sB,EAAI,IAEL6H,EAAI5G,KAAK0mB,WAAaH,KAIlCxnB,EAAIE,EAAM,EACZF,GAAK,EAELR,GAAO,EAQX,GAJAwoB,EAAmB/mB,KAAKonB,kBAAkBroB,IAAM,CAAC,EAEjDkoB,EAAiBloB,IADjBswB,EAAuB,IAAdxI,EAAQ1gB,GAGJ,CACX,GAAIogB,GAAYO,EAAYlgB,EAAI5G,KAAK0mB,WACnCnE,EAAO,OACF,GAAIgE,EAAWM,EAAQjgB,EAAI5G,KAAK0mB,WACrCnE,EAAO,MACF,CACL,IAAIyE,EAEAD,EAAiBY,OACnBX,EAAMD,EAAiBY,QAEvBX,EAAMrJ,cAAciK,gBAAgBf,EAAQrb,EAAE5Q,EAAGisB,EAAQrb,EAAEzQ,EAAG8rB,EAAQ9nB,EAAEnE,EAAGisB,EAAQ9nB,EAAEhE,GAAGikB,IACxF+H,EAAiBY,OAASX,GAG5BzE,EAAOyE,GAAKT,GAAYM,EAAQjgB,EAAI5G,KAAK0mB,cAAgBI,EAAYlgB,EAAI5G,KAAK0mB,YAAcG,EAAQjgB,EAAI5G,KAAK0mB,aAC/G,CAEA0I,EAAWtI,EAAY1gB,EAAI0gB,EAAY1gB,EAAE,GAAKygB,EAAQnd,EAAE,EAC1D,CAEAylB,EAAWtI,EAAQzgB,EAAE,EACvB,CAMA,IAJA4D,EAAOklB,EAActO,QACrB1W,EAAOilB,EAASpwB,EAAE,GAAG1G,OACrBmuB,EAAQU,UAAYD,EAEfld,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,IAAKE,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBqlB,EAAcD,EAASF,EAASpwB,EAAEgL,GAAGE,GAAKklB,EAASpwB,EAAEgL,GAAGE,IAAMmlB,EAASrwB,EAAEgL,GAAGE,GAAKklB,EAASpwB,EAAEgL,GAAGE,IAAMsY,EACrG2M,EAAcnwB,EAAEgL,GAAGE,GAAKqlB,EACxBA,EAAcD,EAASF,EAAS3jB,EAAEzB,GAAGE,GAAKklB,EAAS3jB,EAAEzB,GAAGE,IAAMmlB,EAAS5jB,EAAEzB,GAAGE,GAAKklB,EAAS3jB,EAAEzB,GAAGE,IAAMsY,EACrG2M,EAAc1jB,EAAEzB,GAAGE,GAAKqlB,EACxBA,EAAcD,EAASF,EAAS9oB,EAAE0D,GAAGE,GAAKklB,EAAS9oB,EAAE0D,GAAGE,IAAMmlB,EAAS/oB,EAAE0D,GAAGE,GAAKklB,EAAS9oB,EAAE0D,GAAGE,IAAMsY,EACrG2M,EAAc7oB,EAAE0D,GAAGE,GAAKqlB,CAG9B,CAEA,SAASC,IACP,IAAIhJ,EAAWvmB,KAAKgL,KAAKggB,cAAgBhrB,KAAK0mB,WAC1C9K,EAAW5b,KAAKmnB,UAAU,GAAGvgB,EAAI5G,KAAK0mB,WACtCuE,EAAUjrB,KAAKmnB,UAAUnnB,KAAKmnB,UAAU9uB,OAAS,GAAGuO,EAAI5G,KAAK0mB,WAC7DsB,EAAYhoB,KAAKkrB,SAASlD,UAS9B,OAPMA,IAAc5B,IAAc4B,EAAYpM,GAAY2K,EAAW3K,GAAYoM,EAAYiD,GAAW1E,EAAW0E,KAEjHjrB,KAAKkrB,SAAShE,UAAYc,EAAYzB,EAAWvmB,KAAKkrB,SAAShE,UAAY,EAC3ElnB,KAAKivB,iBAAiB1I,EAAUvmB,KAAK4mB,GAAI5mB,KAAKkrB,WAGhDlrB,KAAKkrB,SAASlD,UAAYzB,EACnBvmB,KAAK4mB,EACd,CAEA,SAAS4I,IACPxvB,KAAKyvB,MAAQzvB,KAAK0vB,oBACpB,CAmBA,SAAStE,EAAU4C,IAjBnB,SAAqB2B,EAAQC,GAC3B,GAAID,EAAO/O,UAAYgP,EAAOhP,SAAW+O,EAAOxiB,IAAMyiB,EAAOziB,EAC3D,OAAO,EAGT,IAAIpO,EACAE,EAAM0wB,EAAO/O,QAEjB,IAAK7hB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,GAAI4wB,EAAOtpB,EAAEtH,GAAG,KAAO6wB,EAAOvpB,EAAEtH,GAAG,IAAM4wB,EAAOtpB,EAAEtH,GAAG,KAAO6wB,EAAOvpB,EAAEtH,GAAG,IAAM4wB,EAAOnkB,EAAEzM,GAAG,KAAO6wB,EAAOpkB,EAAEzM,GAAG,IAAM4wB,EAAOnkB,EAAEzM,GAAG,KAAO6wB,EAAOpkB,EAAEzM,GAAG,IAAM4wB,EAAO5wB,EAAEA,GAAG,KAAO6wB,EAAO7wB,EAAEA,GAAG,IAAM4wB,EAAO5wB,EAAEA,GAAG,KAAO6wB,EAAO7wB,EAAEA,GAAG,GAC1N,OAAO,EAIX,OAAO,CACT,EAGO8wB,CAAY7vB,KAAKqG,EAAG2nB,KACvBhuB,KAAKqG,EAAIgoB,UAAUE,MAAMP,GACzBhuB,KAAK0vB,qBAAqBd,gBAC1B5uB,KAAK0vB,qBAAqBf,SAAS3uB,KAAKqG,GACxCrG,KAAKurB,MAAO,EACZvrB,KAAKyvB,MAAQzvB,KAAK0vB,qBAEtB,CAEA,SAASlE,IACP,GAAIxrB,KAAKoc,KAAKjF,WAAWsU,UAAYzrB,KAAKyrB,QAI1C,GAAKzrB,KAAK0rB,gBAAgBrzB,OAK1B,GAAI2H,KAAK2rB,KACP3rB,KAAKorB,UAAUprB,KAAK4mB,QADtB,CAOA,IAAIiF,EAUA9sB,EAZJiB,KAAK2rB,MAAO,EACZ3rB,KAAKurB,MAAO,EAIVM,EADE7rB,KAAK8rB,GACM9rB,KAAK4mB,GACT5mB,KAAK+I,KAAKuC,GACNtL,KAAK+I,KAAKuC,GAAGrB,EAEbjK,KAAK+I,KAAKwB,GAAGN,EAI5B,IAAIhL,EAAMe,KAAK0rB,gBAAgBrzB,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB8sB,EAAa7rB,KAAK0rB,gBAAgB3sB,GAAG8sB,GAGvC7rB,KAAKorB,UAAUS,GACf7rB,KAAK2rB,MAAO,EACZ3rB,KAAKyrB,QAAUzrB,KAAKoc,KAAKjF,WAAWsU,OAvBpC,MAPEzrB,KAAKurB,MAAO,CA+BhB,CAEA,SAASuE,EAAc1T,EAAMrT,EAAMjN,GACjCkE,KAAK2mB,SAAW,QAChB3mB,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAKxH,UAAY4jB,EACjBpc,KAAKoc,KAAOA,EACZpc,KAAK+I,KAAOA,EACZ/I,KAAKiK,GAAI,EACTjK,KAAK8rB,IAAK,EACV9rB,KAAKurB,MAAO,EACZ,IAAIve,EAAoB,IAATlR,EAAaiN,EAAKwB,GAAGN,EAAIlB,EAAKuC,GAAGrB,EAChDjK,KAAKqG,EAAIgoB,UAAUE,MAAMvhB,GACzBhN,KAAK4mB,GAAKyH,UAAUE,MAAMvuB,KAAKqG,GAC/BrG,KAAK0vB,qBAAuBb,oBAAoBC,qBAChD9uB,KAAKyvB,MAAQzvB,KAAK0vB,qBAClB1vB,KAAKyvB,MAAMd,SAAS3uB,KAAKqG,GACzBrG,KAAK+vB,MAAQP,EACbxvB,KAAK0rB,gBAAkB,EACzB,CAEA,SAASK,EAAUC,GACjBhsB,KAAK0rB,gBAAgBprB,KAAK0rB,GAC1BhsB,KAAKxH,UAAUyzB,mBAAmBjsB,KACpC,CAOA,SAASgwB,EAAuB5T,EAAMrT,EAAMjN,GAC1CkE,KAAK2mB,SAAW,QAChB3mB,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAKoc,KAAOA,EACZpc,KAAKxH,UAAY4jB,EACjBpc,KAAK0mB,WAAatK,EAAKrT,KAAK2D,GAC5B1M,KAAKmnB,UAAqB,IAATrrB,EAAaiN,EAAKwB,GAAGN,EAAIlB,EAAKuC,GAAGrB,EAClDjK,KAAKonB,kBAAoB,GACzBpnB,KAAKiK,GAAI,EACTjK,KAAK8rB,IAAK,EACV,IAAI7sB,EAAMe,KAAKmnB,UAAU,GAAG/gB,EAAE,GAAGrH,EAAE1G,OACnC2H,KAAKqG,EAAIgoB,UAAUtN,aACnB/gB,KAAKqG,EAAE+mB,YAAYptB,KAAKmnB,UAAU,GAAG/gB,EAAE,GAAG+G,EAAGlO,GAC7Ce,KAAK4mB,GAAKyH,UAAUE,MAAMvuB,KAAKqG,GAC/BrG,KAAK0vB,qBAAuBb,oBAAoBC,qBAChD9uB,KAAKyvB,MAAQzvB,KAAK0vB,qBAClB1vB,KAAKyvB,MAAMd,SAAS3uB,KAAKqG,GACzBrG,KAAKgoB,UAAY5B,EACjBpmB,KAAK+vB,MAAQP,EACbxvB,KAAKkrB,SAAW,CACdlD,UAAW5B,EACXc,UAAW,GAEblnB,KAAK0rB,gBAAkB,CAAC6D,EAA4B7d,KAAK1R,MAC3D,CA7BA8vB,EAAc3wB,UAAU8vB,iBAAmBA,EAC3Ca,EAAc3wB,UAAUitB,SAAWZ,EACnCsE,EAAc3wB,UAAUisB,UAAYA,EACpC0E,EAAc3wB,UAAU4sB,UAAYA,EA4BpCiE,EAAuB7wB,UAAUitB,SAAWZ,EAC5CwE,EAAuB7wB,UAAU8vB,iBAAmBA,EACpDe,EAAuB7wB,UAAUisB,UAAYA,EAC7C4E,EAAuB7wB,UAAU4sB,UAAYA,EAE7C,IAAIkE,EAAmB,WACrB,IAAIC,EAAShsB,YAEb,SAASisB,EAAwB/T,EAAMrT,GACrC/I,KAAKqG,EAAIgoB,UAAUtN,aACnB/gB,KAAKqG,EAAE+mB,aAAY,EAAM,GACzBptB,KAAK0vB,qBAAuBb,oBAAoBC,qBAChD9uB,KAAKyvB,MAAQzvB,KAAK0vB,qBAClB1vB,KAAK0vB,qBAAqBf,SAAS3uB,KAAKqG,GACxCrG,KAAK8G,EAAIiC,EAAKjC,EACd9G,KAAKoc,KAAOA,EACZpc,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAKyrB,SAAW,EAChBzrB,KAAKitB,6BAA6B7Q,GAClCpc,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAKrC,EAAG,EAAG,EAAG1G,MACrDA,KAAKoG,EAAIqmB,gBAAgBC,QAAQtQ,EAAMrT,EAAK3C,EAAG,EAAG,EAAGpG,MAEjDA,KAAK8sB,kBAAkBz0B,OACzB2H,KAAKiK,GAAI,GAETjK,KAAKiK,GAAI,EACTjK,KAAKowB,mBAET,CAoDA,OAlDAD,EAAwBhxB,UAAY,CAClC4wB,MAAOP,EACPpD,SAAU,WACJpsB,KAAKoc,KAAKjF,WAAWsU,UAAYzrB,KAAKyrB,UAI1CzrB,KAAKyrB,QAAUzrB,KAAKoc,KAAKjF,WAAWsU,QACpCzrB,KAAKgtB,2BAEDhtB,KAAKurB,MACPvrB,KAAKowB,mBAET,EACAA,iBAAkB,WAChB,IAAIC,EAAKrwB,KAAK0G,EAAEL,EAAE,GACdiqB,EAAKtwB,KAAK0G,EAAEL,EAAE,GACdkqB,EAAKvwB,KAAKoG,EAAEC,EAAE,GAAK,EACnBukB,EAAK5qB,KAAKoG,EAAEC,EAAE,GAAK,EAEnBmqB,EAAiB,IAAXxwB,KAAK8G,EAEX2pB,EAAKzwB,KAAKqG,EACdoqB,EAAGpqB,EAAE,GAAG,GAAKgqB,EACbI,EAAGpqB,EAAE,GAAG,GAAKiqB,EAAK1F,EAClB6F,EAAGpqB,EAAE,GAAG,GAAKmqB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGpqB,EAAE,GAAG,GAAKiqB,EACbG,EAAGpqB,EAAE,GAAG,GAAKgqB,EACbI,EAAGpqB,EAAE,GAAG,GAAKiqB,EAAK1F,EAClB6F,EAAGpqB,EAAE,GAAG,GAAKmqB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGpqB,EAAE,GAAG,GAAKiqB,EACbG,EAAG1xB,EAAE,GAAG,GAAKyxB,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAG1xB,EAAE,GAAG,GAAKuxB,EAAK1F,EAClB6F,EAAG1xB,EAAE,GAAG,GAAKyxB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAG1xB,EAAE,GAAG,GAAKuxB,EAAK1F,EAAKsF,EACvBO,EAAG1xB,EAAE,GAAG,GAAKyxB,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAG1xB,EAAE,GAAG,GAAKuxB,EAAK1F,EAClB6F,EAAG1xB,EAAE,GAAG,GAAKyxB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAG1xB,EAAE,GAAG,GAAKuxB,EAAK1F,EAAKsF,EACvBO,EAAGjlB,EAAE,GAAG,GAAKglB,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGjlB,EAAE,GAAG,GAAK8kB,EAAK1F,EAClB6F,EAAGjlB,EAAE,GAAG,GAAKglB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGjlB,EAAE,GAAG,GAAK8kB,EAAK1F,EAAKsF,EACvBO,EAAGjlB,EAAE,GAAG,GAAKglB,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGjlB,EAAE,GAAG,GAAK8kB,EAAK1F,EAClB6F,EAAGjlB,EAAE,GAAG,GAAKglB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGjlB,EAAE,GAAG,GAAK8kB,EAAK1F,EAAKsF,CACzB,GAEFtxB,gBAAgB,CAACiuB,0BAA2BsD,GACrCA,CACT,CA5EuB,GA8EnBO,EAAoB,WACtB,SAASC,EAAyBvU,EAAMrT,GACtC/I,KAAKqG,EAAIgoB,UAAUtN,aACnB/gB,KAAKqG,EAAE+mB,aAAY,EAAM,GACzBptB,KAAKoc,KAAOA,EACZpc,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAK+I,KAAOA,EACZ/I,KAAKyrB,SAAW,EAChBzrB,KAAK8G,EAAIiC,EAAKjC,EACd9G,KAAKitB,6BAA6B7Q,GAElB,IAAZrT,EAAK6nB,IACP5wB,KAAK6wB,GAAKpE,gBAAgBC,QAAQtQ,EAAMrT,EAAK8nB,GAAI,EAAG,EAAG7wB,MACvDA,KAAK8wB,GAAKrE,gBAAgBC,QAAQtQ,EAAMrT,EAAK+nB,GAAI,EAAG,IAAM9wB,MAC1DA,KAAK+wB,cAAgB/wB,KAAKgxB,mBAE1BhxB,KAAK+wB,cAAgB/wB,KAAKixB,qBAG5BjxB,KAAKuK,GAAKkiB,gBAAgBC,QAAQtQ,EAAMrT,EAAKwB,GAAI,EAAG,EAAGvK,MACvDA,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAKrC,EAAG,EAAG,EAAG1G,MACrDA,KAAKsG,EAAImmB,gBAAgBC,QAAQtQ,EAAMrT,EAAKzC,EAAG,EAAGtC,UAAWhE,MAC7DA,KAAKkxB,GAAKzE,gBAAgBC,QAAQtQ,EAAMrT,EAAKmoB,GAAI,EAAG,EAAGlxB,MACvDA,KAAKmxB,GAAK1E,gBAAgBC,QAAQtQ,EAAMrT,EAAKooB,GAAI,EAAG,IAAMnxB,MAC1DA,KAAK0vB,qBAAuBb,oBAAoBC,qBAChD9uB,KAAK0vB,qBAAqBf,SAAS3uB,KAAKqG,GACxCrG,KAAKyvB,MAAQzvB,KAAK0vB,qBAEd1vB,KAAK8sB,kBAAkBz0B,OACzB2H,KAAKiK,GAAI,GAETjK,KAAKiK,GAAI,EACTjK,KAAK+wB,gBAET,CAuFA,OArFAJ,EAAyBxxB,UAAY,CACnC4wB,MAAOP,EACPpD,SAAU,WACJpsB,KAAKoc,KAAKjF,WAAWsU,UAAYzrB,KAAKyrB,UAI1CzrB,KAAKyrB,QAAUzrB,KAAKoc,KAAKjF,WAAWsU,QACpCzrB,KAAKgtB,2BAEDhtB,KAAKurB,MACPvrB,KAAK+wB,gBAET,EACAC,kBAAmB,WACjB,IAaIjyB,EACAqyB,EACAC,EACAC,EAhBAC,EAAiC,EAAxBt1B,KAAKkH,MAAMnD,KAAKuK,GAAGlE,GAC5BmrB,EAAkB,EAAVv1B,KAAKgI,GAASstB,EAKtBE,GAAW,EACXC,EAAU1xB,KAAKkxB,GAAG7qB,EAClBsrB,EAAW3xB,KAAK6wB,GAAGxqB,EACnBurB,EAAY5xB,KAAKmxB,GAAG9qB,EACpBwrB,EAAa7xB,KAAK8wB,GAAGzqB,EACrByrB,EAAmB,EAAI71B,KAAKgI,GAAKytB,GAAoB,EAATH,GAC5CQ,EAAoB,EAAI91B,KAAKgI,GAAK0tB,GAAqB,EAATJ,GAK9CS,GAAc/1B,KAAKgI,GAAK,EAC5B+tB,GAAchyB,KAAKsG,EAAED,EACrB,IAAIqd,EAAsB,IAAhB1jB,KAAK+I,KAAKjC,GAAW,EAAI,EAGnC,IAFA9G,KAAKqG,EAAEua,QAAU,EAEZ7hB,EAAI,EAAGA,EAAIwyB,EAAQxyB,GAAK,EAAG,CAE9BsyB,EAAYI,EAAWG,EAAYC,EACnCP,EAAeG,EAAWK,EAAmBC,EAC7C,IAAIn3B,GAHJw2B,EAAMK,EAAWC,EAAUC,GAGb11B,KAAKwuB,IAAIuH,GACnBj3B,EAAIq2B,EAAMn1B,KAAK2tB,IAAIoI,GACnBC,EAAW,IAANr3B,GAAiB,IAANG,EAAU,EAAIA,EAAIkB,KAAKgH,KAAKrI,EAAIA,EAAIG,EAAIA,GACxDm3B,EAAW,IAANt3B,GAAiB,IAANG,EAAU,GAAKH,EAAIqB,KAAKgH,KAAKrI,EAAIA,EAAIG,EAAIA,GAC7DH,IAAMoF,KAAK0G,EAAEL,EAAE,GACftL,IAAMiF,KAAK0G,EAAEL,EAAE,GACfrG,KAAKqG,EAAEmnB,YAAY5yB,EAAGG,EAAGH,EAAIq3B,EAAKX,EAAeD,EAAY3N,EAAK3oB,EAAIm3B,EAAKZ,EAAeD,EAAY3N,EAAK9oB,EAAIq3B,EAAKX,EAAeD,EAAY3N,EAAK3oB,EAAIm3B,EAAKZ,EAAeD,EAAY3N,EAAK3kB,GAAG,GAMhM0yB,GAAYA,EACZO,GAAcR,EAAQ9N,CACxB,CACF,EACAuN,qBAAsB,WACpB,IAKIlyB,EALAwyB,EAASt1B,KAAKkH,MAAMnD,KAAKuK,GAAGlE,GAC5BmrB,EAAkB,EAAVv1B,KAAKgI,GAASstB,EACtBH,EAAMpxB,KAAKkxB,GAAG7qB,EACdgrB,EAAYrxB,KAAKmxB,GAAG9qB,EACpBirB,EAAe,EAAIr1B,KAAKgI,GAAKmtB,GAAgB,EAATG,GAEpCS,EAAwB,IAAV/1B,KAAKgI,GACnByf,EAAsB,IAAhB1jB,KAAK+I,KAAKjC,GAAW,EAAI,EAInC,IAHAkrB,GAAchyB,KAAKsG,EAAED,EACrBrG,KAAKqG,EAAEua,QAAU,EAEZ7hB,EAAI,EAAGA,EAAIwyB,EAAQxyB,GAAK,EAAG,CAC9B,IAAInE,EAAIw2B,EAAMn1B,KAAKwuB,IAAIuH,GACnBj3B,EAAIq2B,EAAMn1B,KAAK2tB,IAAIoI,GACnBC,EAAW,IAANr3B,GAAiB,IAANG,EAAU,EAAIA,EAAIkB,KAAKgH,KAAKrI,EAAIA,EAAIG,EAAIA,GACxDm3B,EAAW,IAANt3B,GAAiB,IAANG,EAAU,GAAKH,EAAIqB,KAAKgH,KAAKrI,EAAIA,EAAIG,EAAIA,GAC7DH,IAAMoF,KAAK0G,EAAEL,EAAE,GACftL,IAAMiF,KAAK0G,EAAEL,EAAE,GACfrG,KAAKqG,EAAEmnB,YAAY5yB,EAAGG,EAAGH,EAAIq3B,EAAKX,EAAeD,EAAY3N,EAAK3oB,EAAIm3B,EAAKZ,EAAeD,EAAY3N,EAAK9oB,EAAIq3B,EAAKX,EAAeD,EAAY3N,EAAK3oB,EAAIm3B,EAAKZ,EAAeD,EAAY3N,EAAK3kB,GAAG,GAChMizB,GAAcR,EAAQ9N,CACxB,CAEA1jB,KAAKyvB,MAAMp3B,OAAS,EACpB2H,KAAKyvB,MAAM,GAAKzvB,KAAKqG,CACvB,GAEFzH,gBAAgB,CAACiuB,0BAA2B8D,GACrCA,CACT,CA1HwB,GA4HpBwB,EAAoB,WACtB,SAASC,EAAyBhW,EAAMrT,GACtC/I,KAAKqG,EAAIgoB,UAAUtN,aACnB/gB,KAAKqG,EAAE8G,GAAI,EACXnN,KAAK0vB,qBAAuBb,oBAAoBC,qBAChD9uB,KAAK0vB,qBAAqBf,SAAS3uB,KAAKqG,GACxCrG,KAAKyvB,MAAQzvB,KAAK0vB,qBAClB1vB,KAAKoc,KAAOA,EACZpc,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAKyrB,SAAW,EAChBzrB,KAAK8G,EAAIiC,EAAKjC,EACd9G,KAAKitB,6BAA6B7Q,GAClCpc,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAKrC,EAAG,EAAG,EAAG1G,MACrDA,KAAKoG,EAAIqmB,gBAAgBC,QAAQtQ,EAAMrT,EAAK3C,EAAG,EAAG,EAAGpG,MACrDA,KAAKsG,EAAImmB,gBAAgBC,QAAQtQ,EAAMrT,EAAKzC,EAAG,EAAG,EAAGtG,MAEjDA,KAAK8sB,kBAAkBz0B,OACzB2H,KAAKiK,GAAI,GAETjK,KAAKiK,GAAI,EACTjK,KAAKqyB,oBAET,CA4DA,OA1DAD,EAAyBjzB,UAAY,CACnCkzB,kBAAmB,WACjB,IAAIhC,EAAKrwB,KAAK0G,EAAEL,EAAE,GACdiqB,EAAKtwB,KAAK0G,EAAEL,EAAE,GACdisB,EAAKtyB,KAAKoG,EAAEC,EAAE,GAAK,EACnBksB,EAAKvyB,KAAKoG,EAAEC,EAAE,GAAK,EACnBhC,EAAQf,MAAMgvB,EAAIC,EAAIvyB,KAAKsG,EAAED,GAC7B6pB,EAAS7rB,GAAS,EAAIH,aAC1BlE,KAAKqG,EAAEua,QAAU,EAEF,IAAX5gB,KAAK8G,GAAsB,IAAX9G,KAAK8G,GACvB9G,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,GACrGlwB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAO,GAAG,GAEvF,IAAVA,GACFrE,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAI,GAAG,GACrGvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,GACrGlwB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAO,GAAG,GACrGrE,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAI,GAAG,KAErGvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAI,GAClFvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAI,MAGpFvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAO,GAAG,GAEvF,IAAVA,GACFrE,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAI,GAAG,GACrGvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,GACrGlwB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAO,GAAG,GACrGrE,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKjuB,EAAOisB,EAAKiC,EAAI,GAAG,GACrGvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKluB,EAAOgsB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,KAErGlwB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAI,GAAG,GACrFvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAI,GAAG,GACrFvyB,KAAKqG,EAAEmnB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAI,GAAG,IAG3F,EACAnG,SAAU,WACJpsB,KAAKoc,KAAKjF,WAAWsU,UAAYzrB,KAAKyrB,UAI1CzrB,KAAKyrB,QAAUzrB,KAAKoc,KAAKjF,WAAWsU,QACpCzrB,KAAKgtB,2BAEDhtB,KAAKurB,MACPvrB,KAAKqyB,oBAET,EACAtC,MAAOP,GAET5wB,gBAAgB,CAACiuB,0BAA2BuF,GACrCA,CACT,CAnFwB,GAwHpBxgB,EAAK,CACTA,aApCA,SAAsBwK,EAAMrT,EAAMjN,GAChC,IAAI2D,EAuBJ,OArBa,IAAT3D,GAAuB,IAATA,EAKd2D,GAJsB,IAAT3D,EAAaiN,EAAKwB,GAAKxB,EAAKuC,IACvBrB,EAEX5R,OACA,IAAI23B,EAAuB5T,EAAMrT,EAAMjN,GAEvC,IAAIg0B,EAAc1T,EAAMrT,EAAMjN,GAErB,IAATA,EACT2D,EAAO,IAAI0yB,EAAkB/V,EAAMrT,GACjB,IAATjN,EACT2D,EAAO,IAAIwwB,EAAiB7T,EAAMrT,GAChB,IAATjN,IACT2D,EAAO,IAAIixB,EAAkBtU,EAAMrT,IAGjCtJ,EAAKwK,GACPmS,EAAK6P,mBAAmBxsB,GAGnBA,CACT,EAYAmS,uBAVA,WACE,OAAOke,CACT,EASAle,gCAPA,WACE,OAAOoe,CACT,GAMA,OAAOpe,CACT,CAzjB2B,GAwlBvB4gB,OAAS,WACX,IAAIC,EAAOx2B,KAAKwuB,IACZiI,EAAOz2B,KAAK2tB,IACZ+I,EAAO12B,KAAK22B,IACZC,EAAO52B,KAAKoI,MAEhB,SAAS0rB,IAiBP,OAhBA/vB,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,GAAK,EAChBqL,KAAKrL,MAAM,IAAM,EACjBqL,KAAKrL,MAAM,IAAM,EACjBqL,KAAKrL,MAAM,IAAM,EACjBqL,KAAKrL,MAAM,IAAM,EACjBqL,KAAKrL,MAAM,IAAM,EACjBqL,KAAKrL,MAAM,IAAM,EACVqL,IACT,CAEA,SAAS8yB,EAAOtB,GACd,GAAc,IAAVA,EACF,OAAOxxB,KAGT,IAAI+yB,EAAON,EAAKjB,GAEZwB,EAAON,EAAKlB,GAEhB,OAAOxxB,KAAKizB,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,CAEA,SAASG,EAAQ1B,GACf,GAAc,IAAVA,EACF,OAAOxxB,KAGT,IAAI+yB,EAAON,EAAKjB,GAEZwB,EAAON,EAAKlB,GAEhB,OAAOxxB,KAAKizB,GAAG,EAAG,EAAG,EAAG,EAAG,EAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAC3E,CAEA,SAASI,EAAQ3B,GACf,GAAc,IAAVA,EACF,OAAOxxB,KAGT,IAAI+yB,EAAON,EAAKjB,GAEZwB,EAAON,EAAKlB,GAEhB,OAAOxxB,KAAKizB,GAAGF,EAAM,EAAGC,EAAM,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAM,EAAGD,EAAM,EAAG,EAAG,EAAG,EAAG,EAC3E,CAEA,SAASK,EAAQ5B,GACf,GAAc,IAAVA,EACF,OAAOxxB,KAGT,IAAI+yB,EAAON,EAAKjB,GAEZwB,EAAON,EAAKlB,GAEhB,OAAOxxB,KAAKizB,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,CAEA,SAASM,EAAMC,EAAI1C,GACjB,OAAO5wB,KAAKizB,GAAG,EAAGrC,EAAI0C,EAAI,EAAG,EAAG,EAClC,CAEA,SAASC,EAAKpK,EAAIC,GAChB,OAAOppB,KAAKqzB,MAAMV,EAAKxJ,GAAKwJ,EAAKvJ,GACnC,CAEA,SAASoK,EAAarK,EAAIqI,GACxB,IAAIuB,EAAON,EAAKjB,GAEZwB,EAAON,EAAKlB,GAEhB,OAAOxxB,KAAKizB,GAAGF,EAAMC,EAAM,EAAG,GAAIA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGE,GAAG,EAAG,EAAG,EAAG,EAAGN,EAAKxJ,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG8J,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACrM,CAEA,SAASU,EAAMH,EAAI1C,EAAI8C,GAKrB,OAJKA,GAAa,IAAPA,IACTA,EAAK,GAGI,IAAPJ,GAAmB,IAAP1C,GAAmB,IAAP8C,EACnB1zB,KAGFA,KAAKizB,GAAGK,EAAI,EAAG,EAAG,EAAG,EAAG1C,EAAI,EAAG,EAAG,EAAG,EAAG8C,EAAI,EAAG,EAAG,EAAG,EAAG,EACjE,CAEA,SAASC,EAAa/mB,EAAGpG,EAAG2G,EAAGrG,EAAG4C,EAAGjD,EAAGF,EAAGJ,EAAGpH,EAAGgL,EAAGE,EAAG2pB,EAAGC,EAAGhM,EAAGrc,EAAG9E,GAiBjE,OAhBA1G,KAAKrL,MAAM,GAAKiY,EAChB5M,KAAKrL,MAAM,GAAK6R,EAChBxG,KAAKrL,MAAM,GAAKwY,EAChBnN,KAAKrL,MAAM,GAAKmS,EAChB9G,KAAKrL,MAAM,GAAK+U,EAChB1J,KAAKrL,MAAM,GAAK8R,EAChBzG,KAAKrL,MAAM,GAAK4R,EAChBvG,KAAKrL,MAAM,GAAKwR,EAChBnG,KAAKrL,MAAM,GAAKoK,EAChBiB,KAAKrL,MAAM,GAAKoV,EAChB/J,KAAKrL,MAAM,IAAMsV,EACjBjK,KAAKrL,MAAM,IAAMi/B,EACjB5zB,KAAKrL,MAAM,IAAMk/B,EACjB7zB,KAAKrL,MAAM,IAAMkzB,EACjB7nB,KAAKrL,MAAM,IAAM6W,EACjBxL,KAAKrL,MAAM,IAAM+R,EACV1G,IACT,CAEA,SAAS8zB,EAAUC,EAAItpB,EAAIupB,GAGzB,OAFAA,EAAKA,GAAM,EAEA,IAAPD,GAAmB,IAAPtpB,GAAmB,IAAPupB,EACnBh0B,KAAKizB,GAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGc,EAAItpB,EAAIupB,EAAI,GAG1Dh0B,IACT,CAEA,SAASi0B,EAAUC,EAAIC,EAAIzJ,EAAI0J,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC7E,IAAInW,EAAK7e,KAAKrL,MAEd,GAAW,IAAPu/B,GAAmB,IAAPC,GAAmB,IAAPzJ,GAAmB,IAAP0J,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,EAStI,OANA/V,EAAG,IAAMA,EAAG,IAAMqV,EAAKrV,EAAG,IAAMgW,EAChChW,EAAG,IAAMA,EAAG,IAAMyV,EAAKzV,EAAG,IAAMiW,EAChCjW,EAAG,IAAMA,EAAG,IAAM8V,EAAK9V,EAAG,IAAMkW,EAChClW,EAAG,KAAOmW,EAEVh1B,KAAKi1B,qBAAsB,EACpBj1B,KAGT,IAAIk1B,EAAKrW,EAAG,GACRsW,EAAKtW,EAAG,GACR2L,EAAK3L,EAAG,GACRuW,EAAKvW,EAAG,GACRwW,EAAKxW,EAAG,GACRyW,EAAKzW,EAAG,GACR0W,EAAK1W,EAAG,GACR2W,EAAK3W,EAAG,GACR4W,EAAK5W,EAAG,GACR6W,EAAK7W,EAAG,GACR8W,EAAK9W,EAAG,IACR+W,EAAK/W,EAAG,IACRgX,EAAKhX,EAAG,IACRiX,EAAKjX,EAAG,IACRkX,EAAKlX,EAAG,IACRyR,EAAKzR,EAAG,IAwBZ,OAjBAA,EAAG,GAAKqW,EAAKhB,EAAKiB,EAAKd,EAAK7J,EAAKiK,EAAKW,EAAKP,EAC3ChW,EAAG,GAAKqW,EAAKf,EAAKgB,EAAKb,EAAK9J,EAAKkK,EAAKU,EAAKN,EAC3CjW,EAAG,GAAKqW,EAAKxK,EAAKyK,EAAKZ,EAAK/J,EAAKmK,EAAKS,EAAKL,EAC3ClW,EAAG,GAAKqW,EAAKd,EAAKe,EAAKX,EAAKhK,EAAKoK,EAAKQ,EAAKJ,EAC3CnW,EAAG,GAAKwW,EAAKnB,EAAKoB,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAC3ChW,EAAG,GAAKwW,EAAKlB,EAAKmB,EAAKhB,EAAKiB,EAAKb,EAAKc,EAAKV,EAC3CjW,EAAG,GAAKwW,EAAK3K,EAAK4K,EAAKf,EAAKgB,EAAKZ,EAAKa,EAAKT,EAC3ClW,EAAG,GAAKwW,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAAKY,EAAKR,EAC3CnW,EAAG,GAAK4W,EAAKvB,EAAKwB,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAC3ChW,EAAG,GAAK4W,EAAKtB,EAAKuB,EAAKpB,EAAKqB,EAAKjB,EAAKkB,EAAKd,EAC3CjW,EAAG,IAAM4W,EAAK/K,EAAKgL,EAAKnB,EAAKoB,EAAKhB,EAAKiB,EAAKb,EAC5ClW,EAAG,IAAM4W,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAAKgB,EAAKZ,EAC5CnW,EAAG,IAAMgX,EAAK3B,EAAK4B,EAAKzB,EAAK0B,EAAKtB,EAAKnE,EAAKuE,EAC5ChW,EAAG,IAAMgX,EAAK1B,EAAK2B,EAAKxB,EAAKyB,EAAKrB,EAAKpE,EAAKwE,EAC5CjW,EAAG,IAAMgX,EAAKnL,EAAKoL,EAAKvB,EAAKwB,EAAKpB,EAAKrE,EAAKyE,EAC5ClW,EAAG,IAAMgX,EAAKzB,EAAK0B,EAAKtB,EAAKuB,EAAKnB,EAAKtE,EAAK0E,EAC5Ch1B,KAAKi1B,qBAAsB,EACpBj1B,IACT,CAEA,SAASg2B,EAASC,GAChB,IAAIC,EAAcD,EAAOthC,MACzB,OAAOqL,KAAKi0B,UAAUiC,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IACzR,CAEA,SAASC,IAMP,OALKn2B,KAAKi1B,sBACRj1B,KAAKo2B,YAAgC,IAAlBp2B,KAAKrL,MAAM,IAA8B,IAAlBqL,KAAKrL,MAAM,IAA8B,IAAlBqL,KAAKrL,MAAM,IAA8B,IAAlBqL,KAAKrL,MAAM,IAA8B,IAAlBqL,KAAKrL,MAAM,IAA8B,IAAlBqL,KAAKrL,MAAM,IAA8B,IAAlBqL,KAAKrL,MAAM,IAA8B,IAAlBqL,KAAKrL,MAAM,IAA8B,IAAlBqL,KAAKrL,MAAM,IAA8B,IAAlBqL,KAAKrL,MAAM,IAA+B,IAAnBqL,KAAKrL,MAAM,KAAgC,IAAnBqL,KAAKrL,MAAM,KAAgC,IAAnBqL,KAAKrL,MAAM,KAAgC,IAAnBqL,KAAKrL,MAAM,KAAgC,IAAnBqL,KAAKrL,MAAM,KAAgC,IAAnBqL,KAAKrL,MAAM,KAC5XqL,KAAKi1B,qBAAsB,GAGtBj1B,KAAKo2B,SACd,CAEA,SAASC,EAAOC,GAGd,IAFA,IAAIv3B,EAAI,EAEDA,EAAI,IAAI,CACb,GAAIu3B,EAAK3hC,MAAMoK,KAAOiB,KAAKrL,MAAMoK,GAC/B,OAAO,EAGTA,GAAK,CACP,CAEA,OAAO,CACT,CAEA,SAASwvB,EAAM+H,GACb,IAAIv3B,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBu3B,EAAK3hC,MAAMoK,GAAKiB,KAAKrL,MAAMoK,GAG7B,OAAOu3B,CACT,CAEA,SAASC,EAAe5hC,GACtB,IAAIoK,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBiB,KAAKrL,MAAMoK,GAAKpK,EAAMoK,EAE1B,CAEA,SAASy3B,EAAa57B,EAAGG,EAAG07B,GAC1B,MAAO,CACL77B,EAAGA,EAAIoF,KAAKrL,MAAM,GAAKoG,EAAIiF,KAAKrL,MAAM,GAAK8hC,EAAIz2B,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,IAC1EoG,EAAGH,EAAIoF,KAAKrL,MAAM,GAAKoG,EAAIiF,KAAKrL,MAAM,GAAK8hC,EAAIz2B,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,IAC1E8hC,EAAG77B,EAAIoF,KAAKrL,MAAM,GAAKoG,EAAIiF,KAAKrL,MAAM,GAAK8hC,EAAIz2B,KAAKrL,MAAM,IAAMqL,KAAKrL,MAAM,IAM/E,CAEA,SAAS+hC,EAAS97B,EAAGG,EAAG07B,GACtB,OAAO77B,EAAIoF,KAAKrL,MAAM,GAAKoG,EAAIiF,KAAKrL,MAAM,GAAK8hC,EAAIz2B,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,GAChF,CAEA,SAASgiC,EAAS/7B,EAAGG,EAAG07B,GACtB,OAAO77B,EAAIoF,KAAKrL,MAAM,GAAKoG,EAAIiF,KAAKrL,MAAM,GAAK8hC,EAAIz2B,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,GAChF,CAEA,SAASiiC,EAASh8B,EAAGG,EAAG07B,GACtB,OAAO77B,EAAIoF,KAAKrL,MAAM,GAAKoG,EAAIiF,KAAKrL,MAAM,GAAK8hC,EAAIz2B,KAAKrL,MAAM,IAAMqL,KAAKrL,MAAM,GACjF,CAEA,SAASkiC,IACP,IAAIC,EAAc92B,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,GACzEiY,EAAI5M,KAAKrL,MAAM,GAAKmiC,EACpBtwB,GAAKxG,KAAKrL,MAAM,GAAKmiC,EACrB3pB,GAAKnN,KAAKrL,MAAM,GAAKmiC,EACrBhwB,EAAI9G,KAAKrL,MAAM,GAAKmiC,EACpBptB,GAAK1J,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,IAAMqL,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,KAAOmiC,EACxErwB,IAAMzG,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,IAAMqL,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,KAAOmiC,EACzEC,EAAgB,IAAIvE,OAOxB,OANAuE,EAAcpiC,MAAM,GAAKiY,EACzBmqB,EAAcpiC,MAAM,GAAK6R,EACzBuwB,EAAcpiC,MAAM,GAAKwY,EACzB4pB,EAAcpiC,MAAM,GAAKmS,EACzBiwB,EAAcpiC,MAAM,IAAM+U,EAC1BqtB,EAAcpiC,MAAM,IAAM8R,EACnBswB,CACT,CAEA,SAASC,EAAazsB,GAEpB,OADoBvK,KAAK62B,mBACJI,kBAAkB1sB,EAAG,GAAIA,EAAG,GAAIA,EAAG,IAAM,EAChE,CAEA,SAAS2sB,EAAcC,GACrB,IAAIp4B,EACAE,EAAMk4B,EAAI9+B,OACV++B,EAAS,GAEb,IAAKr4B,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBq4B,EAAOr4B,GAAKi4B,EAAaG,EAAIp4B,IAG/B,OAAOq4B,CACT,CAEA,SAASC,EAAoBnV,EAAKC,EAAKC,GACrC,IAAIzgB,EAAMF,iBAAiB,UAAW,GAEtC,GAAIzB,KAAKm2B,aACPx0B,EAAI,GAAKugB,EAAI,GACbvgB,EAAI,GAAKugB,EAAI,GACbvgB,EAAI,GAAKwgB,EAAI,GACbxgB,EAAI,GAAKwgB,EAAI,GACbxgB,EAAI,GAAKygB,EAAI,GACbzgB,EAAI,GAAKygB,EAAI,OACR,CACL,IAAIiO,EAAKrwB,KAAKrL,MAAM,GAChB27B,EAAKtwB,KAAKrL,MAAM,GAChB2iC,EAAKt3B,KAAKrL,MAAM,GAChB4iC,EAAKv3B,KAAKrL,MAAM,GAChB6iC,EAAMx3B,KAAKrL,MAAM,IACjB8iC,EAAMz3B,KAAKrL,MAAM,IACrBgN,EAAI,GAAKugB,EAAI,GAAKmO,EAAKnO,EAAI,GAAKoV,EAAKE,EACrC71B,EAAI,GAAKugB,EAAI,GAAKoO,EAAKpO,EAAI,GAAKqV,EAAKE,EACrC91B,EAAI,GAAKwgB,EAAI,GAAKkO,EAAKlO,EAAI,GAAKmV,EAAKE,EACrC71B,EAAI,GAAKwgB,EAAI,GAAKmO,EAAKnO,EAAI,GAAKoV,EAAKE,EACrC91B,EAAI,GAAKygB,EAAI,GAAKiO,EAAKjO,EAAI,GAAKkV,EAAKE,EACrC71B,EAAI,GAAKygB,EAAI,GAAKkO,EAAKlO,EAAI,GAAKmV,EAAKE,CACvC,CAEA,OAAO91B,CACT,CAEA,SAASs1B,EAAkBr8B,EAAGG,EAAG07B,GAS/B,OANIz2B,KAAKm2B,aACD,CAACv7B,EAAGG,EAAG07B,GAEP,CAAC77B,EAAIoF,KAAKrL,MAAM,GAAKoG,EAAIiF,KAAKrL,MAAM,GAAK8hC,EAAIz2B,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,IAAKiG,EAAIoF,KAAKrL,MAAM,GAAKoG,EAAIiF,KAAKrL,MAAM,GAAK8hC,EAAIz2B,KAAKrL,MAAM,GAAKqL,KAAKrL,MAAM,IAAKiG,EAAIoF,KAAKrL,MAAM,GAAKoG,EAAIiF,KAAKrL,MAAM,GAAK8hC,EAAIz2B,KAAKrL,MAAM,IAAMqL,KAAKrL,MAAM,IAI3O,CAEA,SAAS+iC,EAAwB98B,EAAGG,GAClC,GAAIiF,KAAKm2B,aACP,OAAOv7B,EAAI,IAAMG,EAGnB,IAAI8jB,EAAK7e,KAAKrL,MACd,OAAOsH,KAAKoI,MAAyC,KAAlCzJ,EAAIikB,EAAG,GAAK9jB,EAAI8jB,EAAG,GAAKA,EAAG,MAAc,IAAM,IAAM5iB,KAAKoI,MAAyC,KAAlCzJ,EAAIikB,EAAG,GAAK9jB,EAAI8jB,EAAG,GAAKA,EAAG,MAAc,GAC/H,CAEA,SAAS8Y,IAWP,IALA,IAAI54B,EAAI,EACJpK,EAAQqL,KAAKrL,MACbijC,EAAW,YAGR74B,EAAI,IACT64B,GAAY/E,EAHN,IAGWl+B,EAAMoK,IAHjB,IAIN64B,GAAkB,KAAN74B,EAAW,IAAM,IAC7BA,GAAK,EAGP,OAAO64B,CACT,CAEA,SAASC,EAAoBh0B,GAG3B,OAAIA,EAAM,MAAYA,EAAM,GAAKA,GAAO,MAAYA,EAAM,EACjDgvB,EAHD,IAGMhvB,GAHN,IAMDA,CACT,CAEA,SAASi0B,IAMP,IAAInjC,EAAQqL,KAAKrL,MAcjB,MAAO,UAZEkjC,EAAoBljC,EAAM,IAYX,IAVfkjC,EAAoBljC,EAAM,IAUA,IAR1BkjC,EAAoBljC,EAAM,IAQW,IANrCkjC,EAAoBljC,EAAM,IAMsB,IAJhDkjC,EAAoBljC,EAAM,KAIiC,IAF3DkjC,EAAoBljC,EAAM,KAE4C,GACjF,CAEA,OAAO,WACLqL,KAAK+vB,MAAQA,EACb/vB,KAAK8yB,OAASA,EACd9yB,KAAKkzB,QAAUA,EACflzB,KAAKmzB,QAAUA,EACfnzB,KAAKozB,QAAUA,EACfpzB,KAAKuzB,KAAOA,EACZvzB,KAAKwzB,aAAeA,EACpBxzB,KAAKqzB,MAAQA,EACbrzB,KAAKyzB,MAAQA,EACbzzB,KAAK2zB,aAAeA,EACpB3zB,KAAK8zB,UAAYA,EACjB9zB,KAAKi0B,UAAYA,EACjBj0B,KAAKg2B,SAAWA,EAChBh2B,KAAKw2B,aAAeA,EACpBx2B,KAAK02B,SAAWA,EAChB12B,KAAK22B,SAAWA,EAChB32B,KAAK42B,SAAWA,EAChB52B,KAAKi3B,kBAAoBA,EACzBj3B,KAAKq3B,oBAAsBA,EAC3Br3B,KAAK03B,wBAA0BA,EAC/B13B,KAAK23B,MAAQA,EACb33B,KAAK83B,QAAUA,EACf93B,KAAKuuB,MAAQA,EACbvuB,KAAKu2B,eAAiBA,EACtBv2B,KAAKq2B,OAASA,EACdr2B,KAAKk3B,cAAgBA,EACrBl3B,KAAKg3B,aAAeA,EACpBh3B,KAAK62B,iBAAmBA,EACxB72B,KAAKizB,GAAKjzB,KAAKi0B,UACfj0B,KAAKm2B,WAAaA,EAClBn2B,KAAKo2B,WAAY,EACjBp2B,KAAKi1B,qBAAsB,EAC3Bj1B,KAAKrL,MAAQ8M,iBAAiB,UAAW,IACzCzB,KAAK+vB,OACP,CACF,CAhba,GAkbb,SAASgI,UAAU71B,GAAuV,OAA1O61B,UAArD,oBAAX51B,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBF,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOhD,UAAY,gBAAkB+C,CAAK,EAAY61B,UAAU71B,EAAM,CACjY,IAAI81B,OAAS,CAAC,EACVpb,WAAa,mBACb/nB,cAAgB,sBAChBe,SAAW,GAEf,SAASqiC,YAAYC,GACnBz5B,gBAAgBy5B,EAClB,CAEA,SAASvb,oBACY,IAAfC,WACFlB,iBAAiBiB,iBAAiB9nB,cAAe+nB,WAAYhnB,UAE7D8lB,iBAAiBiB,kBAErB,CAEA,SAASwb,qBAAqB55B,GAC5BkJ,mBAAmBlJ,EACrB,CAEA,SAAS65B,UAAUC,GACjBpwB,YAAYowB,EACd,CAEA,SAASngC,cAAc8e,GAKrB,OAJmB,IAAf4F,aACF5F,EAAOniB,cAAgBsW,KAAKC,MAAMvW,gBAG7B6mB,iBAAiBxjB,cAAc8e,EACxC,CAEA,SAASshB,WAAWlhC,GAClB,GAAqB,kBAAVA,EACT,OAAQA,GACN,IAAK,OACH2Q,wBAAwB,KACxB,MAEF,QACA,IAAK,SACHA,wBAAwB,IACxB,MAEF,IAAK,MACHA,wBAAwB,SAGlBjL,MAAM1F,IAAUA,EAAQ,GAClC2Q,wBAAwB3Q,GAGtB4Q,2BAA6B,GAC/B7D,aAAY,GAEZA,aAAY,EAEhB,CAEA,SAASo0B,YACP,MAA4B,qBAAdt6B,SAChB,CAEA,SAASu6B,cAAc18B,EAAM28B,GACd,gBAAT38B,GACF6L,qBAAqB8wB,EAEzB,CAEA,SAASC,WAAW7iC,GAClB,OAAQA,GACN,IAAK,kBACH,OAAO42B,gBAET,IAAK,uBACH,OAAOuC,qBAET,IAAK,SACH,OAAOwD,OAET,QACE,OAAO,KAEb,CA+BA,SAASmG,aACqB,aAAxBt8B,SAASuS,aACX6C,cAAcmnB,yBACdjc,mBAEJ,CAEA,SAASkc,iBAAiBC,GAGxB,IAFA,IAAIC,EAAOC,YAAYntB,MAAM,KAEpB9M,EAAI,EAAGA,EAAIg6B,EAAK1gC,OAAQ0G,GAAK,EAAG,CACvC,IAAIk6B,EAAOF,EAAKh6B,GAAG8M,MAAM,KAEzB,GAAIqtB,mBAAmBD,EAAK,KAAOH,EAEjC,OAAOI,mBAAmBD,EAAK,GAEnC,CAEA,OAAO,IACT,CAjDAjB,OAAOphC,KAAO8kB,iBAAiB9kB,KAC/BohC,OAAOhhC,MAAQ0kB,iBAAiB1kB,MAChCghC,OAAOv5B,gBAAkBw5B,YACzBD,OAAO9d,YAAcwB,iBAAiBxB,YACtC8d,OAAO/gC,SAAWykB,iBAAiBzkB,SACnC+gC,OAAOzgC,aAAemkB,iBAAiBnkB,aACvCygC,OAAOjhC,KAAO2kB,iBAAiB3kB,KAC/BihC,OAAOrb,iBAAmBA,iBAC1Bqb,OAAO7b,kBAAoBT,iBAAiBS,kBAC5C6b,OAAO9/B,cAAgBA,cACvB8/B,OAAOG,qBAAuBA,qBAC9BH,OAAOre,OAAS+B,iBAAiB/B,OAEjCqe,OAAO1gC,YAAcokB,iBAAiBpkB,YACtC0gC,OAAOhgC,QAAU0jB,iBAAiB1jB,QAClCggC,OAAOM,WAAaA,WACpBN,OAAOO,UAAYA,UACnBP,OAAOQ,cAAgBA,cACvBR,OAAOza,OAAS7B,iBAAiB6B,OACjCya,OAAOxa,SAAW9B,iBAAiB8B,SACnCwa,OAAO92B,UAAYwa,iBAAiBxa,UACpC82B,OAAO32B,KAAOqa,iBAAiBra,KAC/B22B,OAAO12B,OAASoa,iBAAiBpa,OACjC02B,OAAOva,wBAA0B/B,iBAAiB+B,wBAClDua,OAAOmB,aAAe76B,aACtB05B,OAAOoB,YAAchB,UACrBJ,OAAOqB,aAAeX,WACtBV,OAAOsB,QAAU,SAwBjB,IAAIN,YAAc,GAElB,GAAIpc,WAAY,CACd,IAAI2c,QAAUl9B,SAAS+gB,qBAAqB,UACxC5B,MAAQ+d,QAAQlhC,OAAS,EACzBmhC,SAAWD,QAAQ/d,QAAU,CAC/B3a,IAAK,IAEPm4B,YAAcQ,SAAS34B,IAAM24B,SAAS34B,IAAIgd,QAAQ,aAAc,IAAM,GAEtEjoB,SAAWijC,iBAAiB,WAC9B,CAEA,IAAID,wBAA0BtnB,YAAYqnB,WAAY,KAEtD,IACgF,WAAxBZ,UAAU0B,UAA8FC,oBAAAA,IAIhK,CAAE,MAAOhrB,KAAM,CAGf,IAAIirB,eAAiB,WACnB,IAAI/nB,EAAK,CAAC,EACNgoB,EAAY,CAAC,EAcjB,OAbAhoB,EAAGioB,iBAGH,SAA0B7kB,EAAIhX,GACvB47B,EAAU5kB,KACb4kB,EAAU5kB,GAAMhX,EAEpB,EANA4T,EAAGkoB,YAQH,SAAqB9kB,EAAIoH,EAAMrT,GAC7B,OAAO,IAAI6wB,EAAU5kB,GAAIoH,EAAMrT,EACjC,EAEO6I,CACT,CAjBqB,GAmBrB,SAASmoB,gBAAiB,CAmD1B,SAASC,eAAgB,CAgZzB,SAASC,yBAA0B,CAjcnCF,cAAc56B,UAAU+6B,uBAAyB,WAAa,EAE9DH,cAAc56B,UAAUg7B,mBAAqB,WAAa,EAE1DJ,cAAc56B,UAAUwvB,SAAW,SAAU5lB,GAC3C,IAAK/I,KAAKsN,OAAQ,CAEhBvE,EAAK0f,GAAGjwB,UAAUyzB,mBAAmBljB,EAAK0f,IAC1C,IAAI5E,EAAY,CACd2K,MAAOzlB,EAAK0f,GACZ1f,KAAMA,EACN2mB,qBAAsBb,oBAAoBC,sBAE5C9uB,KAAK6K,OAAOvK,KAAKujB,GACjB7jB,KAAKm6B,mBAAmBtW,GAEpB7jB,KAAK+sB,aACPhkB,EAAKqxB,eAET,CACF,EAEAL,cAAc56B,UAAU2b,KAAO,SAAUsB,EAAMrT,GAC7C/I,KAAK6K,OAAS,GACd7K,KAAKoc,KAAOA,EACZpc,KAAKitB,6BAA6B7Q,GAClCpc,KAAKk6B,uBAAuB9d,EAAMrT,GAClC/I,KAAKyrB,QAAUptB,oBACf2B,KAAKsN,QAAS,EACdtN,KAAKiK,GAAI,EAELjK,KAAK8sB,kBAAkBz0B,OACzB2H,KAAKiK,GAAI,EAETjK,KAAKosB,UAAS,EAElB,EAEA2N,cAAc56B,UAAUk7B,YAAc,WAChCr6B,KAAKoc,KAAKjF,WAAWsU,UAAYzrB,KAAKyrB,UAI1CzrB,KAAKyrB,QAAUzrB,KAAKoc,KAAKjF,WAAWsU,QACpCzrB,KAAKgtB,2BACP,EAEApuB,gBAAgB,CAACiuB,0BAA2BkN,eAI5Cn7B,gBAAgB,CAACm7B,eAAgBC,cAEjCA,aAAa76B,UAAU+6B,uBAAyB,SAAU9d,EAAMrT,GAC9D/I,KAAKoG,EAAIqmB,gBAAgBC,QAAQtQ,EAAMrT,EAAK3C,EAAG,EAAG,IAAMpG,MACxDA,KAAK0J,EAAI+iB,gBAAgBC,QAAQtQ,EAAMrT,EAAKW,EAAG,EAAG,IAAM1J,MACxDA,KAAKwL,EAAIihB,gBAAgBC,QAAQtQ,EAAMrT,EAAKyC,EAAG,EAAG,EAAGxL,MACrDA,KAAKs6B,OAAS,EACdt6B,KAAKu6B,OAAS,EACdv6B,KAAKosB,SAAWpsB,KAAKq6B,YACrBr6B,KAAK6zB,EAAI9qB,EAAK8qB,EACd7zB,KAAK+sB,cAAgB/sB,KAAKoG,EAAEslB,gBAAgBrzB,UAAY2H,KAAK0J,EAAEgiB,gBAAgBrzB,UAAY2H,KAAKwL,EAAEkgB,gBAAgBrzB,MACpH,EAEA2hC,aAAa76B,UAAUg7B,mBAAqB,SAAUtW,GACpDA,EAAU2W,UAAY,EACxB,EAEAR,aAAa76B,UAAUs7B,oBAAsB,SAAUr0B,EAAGsD,EAAGgxB,EAAaxZ,EAAayZ,GACrF,IAAIjjC,EAAW,GAEXgS,GAAK,EACPhS,EAAS4I,KAAK,CACZ8F,EAAGA,EACHsD,EAAGA,IAEItD,GAAK,EACd1O,EAAS4I,KAAK,CACZ8F,EAAGA,EAAI,EACPsD,EAAGA,EAAI,KAGThS,EAAS4I,KAAK,CACZ8F,EAAGA,EACHsD,EAAG,IAELhS,EAAS4I,KAAK,CACZ8F,EAAG,EACHsD,EAAGA,EAAI,KAIX,IACI3K,EAEA67B,EAHAC,EAAgB,GAEhB57B,EAAMvH,EAASW,OAGnB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAIzB,IAAI+7B,EACAC,GAJNH,EAAYljC,EAASqH,IAEL2K,EAAIixB,EAAsBzZ,GAAe0Z,EAAUx0B,EAAIu0B,EAAsBzZ,EAAcwZ,IAKvGI,EADEF,EAAUx0B,EAAIu0B,GAAuBzZ,EAC9B,GAEC0Z,EAAUx0B,EAAIu0B,EAAsBzZ,GAAewZ,EAI7DK,EADEH,EAAUlxB,EAAIixB,GAAuBzZ,EAAcwZ,EAC5C,GAECE,EAAUlxB,EAAIixB,EAAsBzZ,GAAewZ,EAG/DG,EAAcv6B,KAAK,CAACw6B,EAAQC,IAEhC,CAMA,OAJKF,EAAcxiC,QACjBwiC,EAAcv6B,KAAK,CAAC,EAAG,IAGlBu6B,CACT,EAEAb,aAAa76B,UAAU67B,iBAAmB,SAAUR,GAClD,IAAIz7B,EACAE,EAAMu7B,EAAUniC,OAEpB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBsiB,mBAAmBL,QAAQwZ,EAAUz7B,IAIvC,OADAy7B,EAAUniC,OAAS,EACZmiC,CACT,EAEAR,aAAa76B,UAAU87B,cAAgB,SAAUrP,GAC/C,IAAIxlB,EACAsD,EAwCAwxB,EACAn8B,EAvCJ,GAAIiB,KAAKurB,MAAQK,EAAe,CAC9B,IAAIpgB,EAAIxL,KAAKwL,EAAEnF,EAAI,IAAM,IAsBzB,GApBImF,EAAI,IACNA,GAAK,IAILpF,EADEpG,KAAKoG,EAAEC,EAAI,EACT,EAAImF,EACCxL,KAAKoG,EAAEC,EAAI,EAChB,EAAImF,EAEJxL,KAAKoG,EAAEC,EAAImF,IAIf9B,EADE1J,KAAK0J,EAAErD,EAAI,EACT,EAAImF,EACCxL,KAAK0J,EAAErD,EAAI,EAChB,EAAImF,EAEJxL,KAAK0J,EAAErD,EAAImF,GAGN,CACT,IAAI2vB,EAAK/0B,EACTA,EAAIsD,EACJA,EAAIyxB,CACN,CAEA/0B,EAA4B,KAAxBnK,KAAKoI,MAAU,IAAJ+B,GACfsD,EAA4B,KAAxBzN,KAAKoI,MAAU,IAAJqF,GACf1J,KAAKs6B,OAASl0B,EACdpG,KAAKu6B,OAAS7wB,CAChB,MACEtD,EAAIpG,KAAKs6B,OACT5wB,EAAI1J,KAAKu6B,OAKX,IACIxwB,EACAC,EACAwwB,EACAxtB,EACAouB,EALAn8B,EAAMe,KAAK6K,OAAOxS,OAMlBsiC,EAAsB,EAE1B,GAAIjxB,IAAMtD,EACR,IAAKrH,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK6K,OAAO9L,GAAG2wB,qBAAqBd,gBACpC5uB,KAAK6K,OAAO9L,GAAGyvB,MAAMjD,MAAO,EAC5BvrB,KAAK6K,OAAO9L,GAAGyvB,MAAMiB,MAAQzvB,KAAK6K,OAAO9L,GAAG2wB,qBAExC1vB,KAAKurB,OACPvrB,KAAK6K,OAAO9L,GAAGy7B,UAAUniC,OAAS,QAGjC,GAAY,IAANqR,GAAiB,IAANtD,GAAiB,IAANsD,GAAiB,IAANtD,GAyGvC,GAAIpG,KAAKurB,KACd,IAAKxsB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAGxBiB,KAAK6K,OAAO9L,GAAGy7B,UAAUniC,OAAS,EAClC2H,KAAK6K,OAAO9L,GAAGyvB,MAAMjD,MAAO,MA9GwB,CACtD,IACI1H,EACA6L,EAFAh4B,EAAW,GAIf,IAAKqH,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAGxB,IAFA8kB,EAAY7jB,KAAK6K,OAAO9L,IAETyvB,MAAMjD,MAASvrB,KAAKurB,MAASK,GAA4B,IAAX5rB,KAAK6zB,EAE3D,CAKL,GAHA7pB,GADAkxB,EAAarX,EAAU2K,MAAMiB,OACX7O,QAClBwa,EAAmB,GAEdvX,EAAU2K,MAAMjD,MAAQ1H,EAAU2W,UAAUniC,OAC/C+iC,EAAmBvX,EAAUuX,qBACxB,CAGL,IAFAZ,EAAYx6B,KAAKg7B,iBAAiBnX,EAAU2W,WAEvCzwB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBiD,EAAWmZ,IAAIvC,kBAAkBsX,EAAWrwB,OAAOd,IACnDywB,EAAUl6B,KAAK0M,GACfouB,GAAoBpuB,EAASsU,YAG/BuC,EAAUuX,iBAAmBA,EAC7BvX,EAAU2W,UAAYA,CACxB,CAEAG,GAAuBS,EACvBvX,EAAU2K,MAAMjD,MAAO,CACzB,MAvBE1H,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,qBA0BtC,IAGI2L,EAHAP,EAAS10B,EACT20B,EAASrxB,EACTwX,EAAc,EAGlB,IAAKniB,EAAIE,EAAM,EAAGF,GAAK,EAAGA,GAAK,EAG7B,IAFA8kB,EAAY7jB,KAAK6K,OAAO9L,IAEVyvB,MAAMjD,KAAM,CAaxB,KAZAmE,EAAuB7L,EAAU6L,sBACZd,gBAEN,IAAX5uB,KAAK6zB,GAAW50B,EAAM,GACxBo8B,EAAQr7B,KAAKy6B,oBAAoBr0B,EAAGsD,EAAGma,EAAUuX,iBAAkBla,EAAayZ,GAChFzZ,GAAe2C,EAAUuX,kBAEzBC,EAAQ,CAAC,CAACP,EAAQC,IAGpB/wB,EAAOqxB,EAAMhjC,OAER0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAC5B+wB,EAASO,EAAMtxB,GAAG,GAClBgxB,EAASM,EAAMtxB,GAAG,GAClBrS,EAASW,OAAS,EAEd0iC,GAAU,EACZrjC,EAAS4I,KAAK,CACZ8F,EAAGyd,EAAUuX,iBAAmBN,EAChCpxB,EAAGma,EAAUuX,iBAAmBL,IAEzBD,GAAU,EACnBpjC,EAAS4I,KAAK,CACZ8F,EAAGyd,EAAUuX,kBAAoBN,EAAS,GAC1CpxB,EAAGma,EAAUuX,kBAAoBL,EAAS,MAG5CrjC,EAAS4I,KAAK,CACZ8F,EAAGyd,EAAUuX,iBAAmBN,EAChCpxB,EAAGma,EAAUuX,mBAEf1jC,EAAS4I,KAAK,CACZ8F,EAAG,EACHsD,EAAGma,EAAUuX,kBAAoBL,EAAS,MAI9C,IAAIO,EAAgBt7B,KAAKu7B,UAAU1X,EAAWnsB,EAAS,IAEvD,GAAIA,EAAS,GAAG0O,IAAM1O,EAAS,GAAGgS,EAAG,CACnC,GAAIhS,EAASW,OAAS,EAGpB,GAF4BwrB,EAAU2K,MAAMiB,MAAM5kB,OAAOgZ,EAAU2K,MAAMiB,MAAM7O,QAAU,GAE/DzT,EAAG,CAC3B,IAAIquB,EAAYF,EAAcG,MAC9Bz7B,KAAK07B,SAASJ,EAAe5L,GAC7B4L,EAAgBt7B,KAAKu7B,UAAU1X,EAAWnsB,EAAS,GAAI8jC,EACzD,MACEx7B,KAAK07B,SAASJ,EAAe5L,GAC7B4L,EAAgBt7B,KAAKu7B,UAAU1X,EAAWnsB,EAAS,IAIvDsI,KAAK07B,SAASJ,EAAe5L,EAC/B,CACF,CAEA7L,EAAU2K,MAAMiB,MAAQC,CAC1B,CAEJ,CAQF,EAEAsK,aAAa76B,UAAUu8B,SAAW,SAAUC,EAAUjM,GACpD,IAAI3wB,EACAE,EAAM08B,EAAStjC,OAEnB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB2wB,EAAqBf,SAASgN,EAAS58B,GAE3C,EAEAi7B,aAAa76B,UAAUy8B,WAAa,SAAU1Z,EAAKC,EAAKC,EAAKC,EAAKiM,EAAW5xB,EAAKm/B,GAChFvN,EAAUf,QAAQpL,EAAI,GAAIA,EAAI,GAAI,IAAKzlB,GACvC4xB,EAAUf,QAAQnL,EAAI,GAAIA,EAAI,GAAI,IAAK1lB,EAAM,GAEzCm/B,GACFvN,EAAUf,QAAQrL,EAAI,GAAIA,EAAI,GAAI,IAAKxlB,GAGzC4xB,EAAUf,QAAQlL,EAAI,GAAIA,EAAI,GAAI,IAAK3lB,EAAM,EAC/C,EAEAs9B,aAAa76B,UAAU28B,oBAAsB,SAAUld,EAAQ0P,EAAW5xB,EAAKm/B,GAC7EvN,EAAUf,QAAQ3O,EAAO,GAAIA,EAAO,GAAI,IAAKliB,GAC7C4xB,EAAUf,QAAQ3O,EAAO,GAAIA,EAAO,GAAI,IAAKliB,EAAM,GAE/Cm/B,GACFvN,EAAUf,QAAQ3O,EAAO,GAAIA,EAAO,GAAI,IAAKliB,GAG/C4xB,EAAUf,QAAQ3O,EAAO,GAAIA,EAAO,GAAI,IAAKliB,EAAM,EACrD,EAEAs9B,aAAa76B,UAAUo8B,UAAY,SAAU1X,EAAWkY,EAAczN,GACpE,IAEIvvB,EAEAgL,EACAC,EAEAgyB,EACAC,EACA7a,EACA1I,EAEA6K,EAZAiX,EAAY3W,EAAU2W,UACtBU,EAAarX,EAAU2K,MAAMiB,MAAM5kB,OAEnC5L,EAAM4kB,EAAU2K,MAAMiB,MAAM7O,QAG5BM,EAAc,EAKdrW,EAAS,GAETgxB,GAAW,EAaf,IAXKvN,GAKH2N,EAAe3N,EAAU1N,QACzB2C,EAAU+K,EAAU1N,UALpB0N,EAAYD,UAAUtN,aACtBkb,EAAe,EACf1Y,EAAU,GAMZ1Y,EAAOvK,KAAKguB,GAEPvvB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAK3B,IAJAqiB,EAAUoZ,EAAUz7B,GAAGqiB,QACvBkN,EAAUnhB,EAAI+tB,EAAWn8B,GAAGoO,EAC5BnD,EAAOkxB,EAAWn8B,GAAGoO,EAAIiU,EAAQ/oB,OAAS+oB,EAAQ/oB,OAAS,EAEtD0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAGzB,GAAImX,GAFJ8a,EAAoB5a,EAAQrX,EAAI,IAEImX,YAAc6a,EAAa31B,EAC7D8a,GAAe8a,EAAkB9a,YACjCoN,EAAUnhB,GAAI,MACT,IAAI+T,EAAc6a,EAAaryB,EAAG,CACvC4kB,EAAUnhB,GAAI,EACd,KACF,CACM4uB,EAAa31B,GAAK8a,GAAe6a,EAAaryB,GAAKwX,EAAc8a,EAAkB9a,aACrFlhB,KAAK47B,WAAWV,EAAWn8B,GAAGsH,EAAE0D,EAAI,GAAImxB,EAAWn8B,GAAGyM,EAAEzB,EAAI,GAAImxB,EAAWn8B,GAAGA,EAAEgL,GAAImxB,EAAWn8B,GAAGsH,EAAE0D,GAAIukB,EAAW2N,EAAcJ,GACjIA,GAAW,IAEXnjB,EAAUyN,IAAIjC,cAAcgX,EAAWn8B,GAAGsH,EAAE0D,EAAI,GAAImxB,EAAWn8B,GAAGsH,EAAE0D,GAAImxB,EAAWn8B,GAAGyM,EAAEzB,EAAI,GAAImxB,EAAWn8B,GAAGA,EAAEgL,IAAKgyB,EAAa31B,EAAI8a,GAAe8a,EAAkB9a,aAAc6a,EAAaryB,EAAIwX,GAAe8a,EAAkB9a,YAAaE,EAAQrX,EAAI,IAChQ/J,KAAK87B,oBAAoBpjB,EAAS4V,EAAW2N,EAAcJ,GAE3DA,GAAW,EACXvN,EAAUnhB,GAAI,GAGhB+T,GAAe8a,EAAkB9a,YACjC+a,GAAgB,CAClB,CAGF,GAAIf,EAAWn8B,GAAGoO,GAAKiU,EAAQ/oB,OAAQ,CAGrC,GAFA2jC,EAAoB5a,EAAQrX,EAAI,GAE5BmX,GAAe6a,EAAaryB,EAAG,CACjC,IAAIoZ,EAAgB1B,EAAQrX,EAAI,GAAGmX,YAE/B6a,EAAa31B,GAAK8a,GAAe6a,EAAaryB,GAAKwX,EAAc4B,GACnE9iB,KAAK47B,WAAWV,EAAWn8B,GAAGsH,EAAE0D,EAAI,GAAImxB,EAAWn8B,GAAGyM,EAAEzB,EAAI,GAAImxB,EAAWn8B,GAAGA,EAAE,GAAIm8B,EAAWn8B,GAAGsH,EAAE,GAAIioB,EAAW2N,EAAcJ,GACjIA,GAAW,IAEXnjB,EAAUyN,IAAIjC,cAAcgX,EAAWn8B,GAAGsH,EAAE0D,EAAI,GAAImxB,EAAWn8B,GAAGsH,EAAE,GAAI60B,EAAWn8B,GAAGyM,EAAEzB,EAAI,GAAImxB,EAAWn8B,GAAGA,EAAE,IAAKg9B,EAAa31B,EAAI8a,GAAe4B,GAAgBiZ,EAAaryB,EAAIwX,GAAe4B,EAAe1B,EAAQrX,EAAI,IAChO/J,KAAK87B,oBAAoBpjB,EAAS4V,EAAW2N,EAAcJ,GAE3DA,GAAW,EACXvN,EAAUnhB,GAAI,EAElB,MACEmhB,EAAUnhB,GAAI,EAGhB+T,GAAe8a,EAAkB9a,YACjC+a,GAAgB,CAClB,CAOA,GALI3N,EAAU1N,UACZ0N,EAAUf,QAAQe,EAAUjoB,EAAEkd,GAAS,GAAI+K,EAAUjoB,EAAEkd,GAAS,GAAI,IAAKA,GACzE+K,EAAUf,QAAQe,EAAUjoB,EAAEioB,EAAU1N,QAAU,GAAG,GAAI0N,EAAUjoB,EAAEioB,EAAU1N,QAAU,GAAG,GAAI,IAAK0N,EAAU1N,QAAU,IAGvHM,EAAc6a,EAAaryB,EAC7B,MAGE3K,EAAIE,EAAM,IACZqvB,EAAYD,UAAUtN,aACtB8a,GAAW,EACXhxB,EAAOvK,KAAKguB,GACZ2N,EAAe,EAEnB,CAEA,OAAOpxB,CACT,EAIAjM,gBAAgB,CAACm7B,eAAgBE,wBAEjCA,uBAAuB96B,UAAU+6B,uBAAyB,SAAU9d,EAAMrT,GACxE/I,KAAKosB,SAAWpsB,KAAKq6B,YACrBr6B,KAAKk8B,OAASzP,gBAAgBC,QAAQtQ,EAAMrT,EAAK6D,EAAG,EAAG,KAAM5M,MAC7DA,KAAK+sB,cAAgB/sB,KAAKk8B,OAAOxQ,gBAAgBrzB,MACnD,EAEA4hC,uBAAuB96B,UAAUg9B,YAAc,SAAUrzB,EAAMozB,GAC7D,IAAIxW,EAAUwW,EAAS,IACnBE,EAAc,CAAC,EAAG,GAClBC,EAAavzB,EAAK8X,QAClB7hB,EAAI,EAER,IAAKA,EAAI,EAAGA,EAAIs9B,EAAYt9B,GAAK,EAC/Bq9B,EAAY,IAAMtzB,EAAKzC,EAAEtH,GAAG,GAC5Bq9B,EAAY,IAAMtzB,EAAKzC,EAAEtH,GAAG,GAG9Bq9B,EAAY,IAAMC,EAClBD,EAAY,IAAMC,EAClB,IAEI5O,EACAC,EACAC,EACAC,EACAC,EACAC,EAPAwO,EAAajO,UAAUtN,aAS3B,IARAub,EAAWnvB,EAAIrE,EAAKqE,EAQfpO,EAAI,EAAGA,EAAIs9B,EAAYt9B,GAAK,EAC/B0uB,EAAK3kB,EAAKzC,EAAEtH,GAAG,IAAMq9B,EAAY,GAAKtzB,EAAKzC,EAAEtH,GAAG,IAAM2mB,EACtDgI,EAAK5kB,EAAKzC,EAAEtH,GAAG,IAAMq9B,EAAY,GAAKtzB,EAAKzC,EAAEtH,GAAG,IAAM2mB,EACtDiI,EAAK7kB,EAAK0C,EAAEzM,GAAG,IAAMq9B,EAAY,GAAKtzB,EAAK0C,EAAEzM,GAAG,KAAO2mB,EACvDkI,EAAK9kB,EAAK0C,EAAEzM,GAAG,IAAMq9B,EAAY,GAAKtzB,EAAK0C,EAAEzM,GAAG,KAAO2mB,EACvDmI,EAAK/kB,EAAK/J,EAAEA,GAAG,IAAMq9B,EAAY,GAAKtzB,EAAK/J,EAAEA,GAAG,KAAO2mB,EACvDoI,EAAKhlB,EAAK/J,EAAEA,GAAG,IAAMq9B,EAAY,GAAKtzB,EAAK/J,EAAEA,GAAG,KAAO2mB,EACvD4W,EAAW9O,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI/uB,GAGjD,OAAOu9B,CACT,EAEArC,uBAAuB96B,UAAU87B,cAAgB,SAAUrP,GACzD,IAAIsP,EACAn8B,EAEAgL,EACAC,EAIE6Z,EACA6L,EAPFzwB,EAAMe,KAAK6K,OAAOxS,OAGlB6jC,EAASl8B,KAAKk8B,OAAO71B,EAEzB,GAAe,IAAX61B,EAIF,IAAKn9B,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAI3B,GAFA2wB,GADA7L,EAAY7jB,KAAK6K,OAAO9L,IACS2wB,qBAE1B7L,EAAU2K,MAAMjD,MAASvrB,KAAKurB,MAASK,EAM5C,IALA8D,EAAqBd,gBACrB/K,EAAU2K,MAAMjD,MAAO,EACvB2P,EAAarX,EAAU2K,MAAMiB,MAAM5kB,OACnCb,EAAO6Z,EAAU2K,MAAMiB,MAAM7O,QAExB7W,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB2lB,EAAqBf,SAAS3uB,KAAKm8B,YAAYjB,EAAWnxB,GAAImyB,IAIlErY,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,oBACpC,CAGG1vB,KAAK8sB,kBAAkBz0B,SAC1B2H,KAAKurB,MAAO,EAEhB,EAEA,IAAIgR,yBAA2B,WAC7B,IAAIC,EAAgB,CAAC,EAAG,GAkLxB,SAASC,EAAkBrgB,EAAMrT,EAAMvQ,GAwBrC,GAvBAwH,KAAKoc,KAAOA,EACZpc,KAAKyrB,SAAW,EAChBzrB,KAAK2mB,SAAW,YAChB3mB,KAAK+I,KAAOA,EACZ/I,KAAKqG,EAAI,IAAImsB,OAEbxyB,KAAK08B,IAAM,IAAIlK,OACfxyB,KAAK28B,uBAAyB,EAC9B38B,KAAKitB,6BAA6Bz0B,GAAa4jB,GAE3CrT,EAAKrC,GAAKqC,EAAKrC,EAAEN,GACnBpG,KAAK48B,GAAKnQ,gBAAgBC,QAAQtQ,EAAMrT,EAAKrC,EAAE9L,EAAG,EAAG,EAAGoF,MACxDA,KAAK68B,GAAKpQ,gBAAgBC,QAAQtQ,EAAMrT,EAAKrC,EAAE3L,EAAG,EAAG,EAAGiF,MAEpD+I,EAAKrC,EAAE+vB,IACTz2B,KAAK88B,GAAKrQ,gBAAgBC,QAAQtQ,EAAMrT,EAAKrC,EAAE+vB,EAAG,EAAG,EAAGz2B,QAG1DA,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAKrC,GAAK,CAC/CuD,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAGjK,MAGP+I,EAAKg0B,GAAI,CAKX,GAJA/8B,KAAK+8B,GAAKtQ,gBAAgBC,QAAQtQ,EAAMrT,EAAKg0B,GAAI,EAAG/4B,UAAWhE,MAC/DA,KAAKg9B,GAAKvQ,gBAAgBC,QAAQtQ,EAAMrT,EAAKi0B,GAAI,EAAGh5B,UAAWhE,MAC/DA,KAAKi9B,GAAKxQ,gBAAgBC,QAAQtQ,EAAMrT,EAAKk0B,GAAI,EAAGj5B,UAAWhE,MAE3D+I,EAAKmoB,GAAGjnB,EAAE,GAAGwd,GAAI,CACnB,IAAI1oB,EACAE,EAAM8J,EAAKmoB,GAAGjnB,EAAE5R,OAEpB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBgK,EAAKmoB,GAAGjnB,EAAElL,GAAGyoB,GAAK,KAClBze,EAAKmoB,GAAGjnB,EAAElL,GAAG0oB,GAAK,IAEtB,CAEAznB,KAAKkxB,GAAKzE,gBAAgBC,QAAQtQ,EAAMrT,EAAKmoB,GAAI,EAAGltB,UAAWhE,MAE/DA,KAAKkxB,GAAGzI,IAAK,CACf,MACEzoB,KAAKsG,EAAImmB,gBAAgBC,QAAQtQ,EAAMrT,EAAKzC,GAAK,CAC/C2D,EAAG,GACF,EAAGjG,UAAWhE,MAGf+I,EAAK8D,KACP7M,KAAK6M,GAAK4f,gBAAgBC,QAAQtQ,EAAMrT,EAAK8D,GAAI,EAAG7I,UAAWhE,MAC/DA,KAAK8M,GAAK2f,gBAAgBC,QAAQtQ,EAAMrT,EAAK+D,GAAI,EAAG9I,UAAWhE,OAGjEA,KAAK4M,EAAI6f,gBAAgBC,QAAQtQ,EAAMrT,EAAK6D,GAAK,CAC/C3C,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAGjK,MACTA,KAAKoG,EAAIqmB,gBAAgBC,QAAQtQ,EAAMrT,EAAK3C,GAAK,CAC/C6D,EAAG,CAAC,IAAK,IAAK,MACb,EAAG,IAAMjK,MAER+I,EAAKyC,EACPxL,KAAKwL,EAAIihB,gBAAgBC,QAAQtQ,EAAMrT,EAAKyC,EAAG,EAAG,IAAM4Q,GAExDpc,KAAKwL,EAAI,CACP+f,MAAM,EACNllB,EAAG,GAIPrG,KAAKk9B,UAAW,EAEXl9B,KAAK8sB,kBAAkBz0B,QAC1B2H,KAAKosB,UAAS,EAElB,CAgBA,OAdAqQ,EAAkBt9B,UAAY,CAC5Bg+B,cA7PF,SAAuBC,GACrB,IAAI7R,EAAOvrB,KAAKurB,KAChBvrB,KAAKgtB,2BACLhtB,KAAKurB,KAAOvrB,KAAKurB,MAAQA,EAErBvrB,KAAK4M,GACPwwB,EAAItJ,WAAW9zB,KAAK4M,EAAEvG,EAAE,IAAKrG,KAAK4M,EAAEvG,EAAE,GAAIrG,KAAK4M,EAAEvG,EAAE,IAGjDrG,KAAKoG,GACPg3B,EAAI3J,MAAMzzB,KAAKoG,EAAEC,EAAE,GAAIrG,KAAKoG,EAAEC,EAAE,GAAIrG,KAAKoG,EAAEC,EAAE,IAG3CrG,KAAK6M,IACPuwB,EAAI5J,cAAcxzB,KAAK6M,GAAGxG,EAAGrG,KAAK8M,GAAGzG,GAGnCrG,KAAKsG,EACP82B,EAAItK,QAAQ9yB,KAAKsG,EAAED,GAEnB+2B,EAAIhK,SAASpzB,KAAKi9B,GAAG52B,GAAG8sB,QAAQnzB,KAAKg9B,GAAG32B,GAAG6sB,QAAQlzB,KAAK+8B,GAAG12B,GAAG+sB,SAASpzB,KAAKkxB,GAAG7qB,EAAE,IAAI8sB,QAAQnzB,KAAKkxB,GAAG7qB,EAAE,IAAI6sB,QAAQlzB,KAAKkxB,GAAG7qB,EAAE,IAG3HrG,KAAK+I,KAAKrC,EAAEN,EACVpG,KAAK+I,KAAKrC,EAAE+vB,EACd2G,EAAItJ,UAAU9zB,KAAK48B,GAAGv2B,EAAGrG,KAAK68B,GAAGx2B,GAAIrG,KAAK88B,GAAGz2B,GAE7C+2B,EAAItJ,UAAU9zB,KAAK48B,GAAGv2B,EAAGrG,KAAK68B,GAAGx2B,EAAG,GAGtC+2B,EAAItJ,UAAU9zB,KAAK0G,EAAEL,EAAE,GAAIrG,KAAK0G,EAAEL,EAAE,IAAKrG,KAAK0G,EAAEL,EAAE,GAEtD,EA8NE+lB,SA5NF,SAAqBiR,GACnB,GAAIr9B,KAAKoc,KAAKjF,WAAWsU,UAAYzrB,KAAKyrB,QAA1C,CAWA,GAPIzrB,KAAKk9B,WACPl9B,KAAKs9B,qBACLt9B,KAAKk9B,UAAW,GAGlBl9B,KAAKgtB,2BAEDhtB,KAAKurB,MAAQ8R,EAAa,CAC5B,IAAIxnB,EAqBJ,GApBA7V,KAAKqG,EAAEkwB,eAAev2B,KAAK08B,IAAI/nC,OAE3BqL,KAAK28B,uBAAyB,GAChC38B,KAAKqG,EAAEytB,WAAW9zB,KAAK4M,EAAEvG,EAAE,IAAKrG,KAAK4M,EAAEvG,EAAE,GAAIrG,KAAK4M,EAAEvG,EAAE,IAGpDrG,KAAK28B,uBAAyB,GAChC38B,KAAKqG,EAAEotB,MAAMzzB,KAAKoG,EAAEC,EAAE,GAAIrG,KAAKoG,EAAEC,EAAE,GAAIrG,KAAKoG,EAAEC,EAAE,IAG9CrG,KAAK6M,IAAM7M,KAAK28B,uBAAyB,GAC3C38B,KAAKqG,EAAEmtB,cAAcxzB,KAAK6M,GAAGxG,EAAGrG,KAAK8M,GAAGzG,GAGtCrG,KAAKsG,GAAKtG,KAAK28B,uBAAyB,EAC1C38B,KAAKqG,EAAEysB,QAAQ9yB,KAAKsG,EAAED,IACZrG,KAAKsG,GAAKtG,KAAK28B,uBAAyB,GAClD38B,KAAKqG,EAAE+sB,SAASpzB,KAAKi9B,GAAG52B,GAAG8sB,QAAQnzB,KAAKg9B,GAAG32B,GAAG6sB,QAAQlzB,KAAK+8B,GAAG12B,GAAG+sB,SAASpzB,KAAKkxB,GAAG7qB,EAAE,IAAI8sB,QAAQnzB,KAAKkxB,GAAG7qB,EAAE,IAAI6sB,QAAQlzB,KAAKkxB,GAAG7qB,EAAE,IAG9HrG,KAAKu9B,aAAc,CACrB,IAAIhL,EACAiL,EAGJ,GAFA3nB,EAAY7V,KAAKoc,KAAKjF,WAAWtB,UAE7B7V,KAAK0G,GAAK1G,KAAK0G,EAAEygB,WAAannB,KAAK0G,EAAE+2B,eACnCz9B,KAAK0G,EAAEwkB,SAASlD,UAAYhoB,KAAK0G,EAAEggB,YAAc1mB,KAAK0G,EAAEygB,UAAU,GAAGvgB,GACvE2rB,EAAKvyB,KAAK0G,EAAE+2B,gBAAgBz9B,KAAK0G,EAAEygB,UAAU,GAAGvgB,EAAI,KAAQiP,EAAW,GACvE2nB,EAAKx9B,KAAK0G,EAAE+2B,eAAez9B,KAAK0G,EAAEygB,UAAU,GAAGvgB,EAAIiP,EAAW,IACrD7V,KAAK0G,EAAEwkB,SAASlD,UAAYhoB,KAAK0G,EAAEggB,YAAc1mB,KAAK0G,EAAEygB,UAAUnnB,KAAK0G,EAAEygB,UAAU9uB,OAAS,GAAGuO,GACxG2rB,EAAKvyB,KAAK0G,EAAE+2B,eAAez9B,KAAK0G,EAAEygB,UAAUnnB,KAAK0G,EAAEygB,UAAU9uB,OAAS,GAAGuO,EAAIiP,EAAW,GACxF2nB,EAAKx9B,KAAK0G,EAAE+2B,gBAAgBz9B,KAAK0G,EAAEygB,UAAUnnB,KAAK0G,EAAEygB,UAAU9uB,OAAS,GAAGuO,EAAI,KAAQiP,EAAW,KAEjG0c,EAAKvyB,KAAK0G,EAAEkgB,GACZ4W,EAAKx9B,KAAK0G,EAAE+2B,gBAAgBz9B,KAAK0G,EAAEwkB,SAASlD,UAAYhoB,KAAK0G,EAAEggB,WAAa,KAAQ7Q,EAAW7V,KAAK0G,EAAEggB,kBAEnG,GAAI1mB,KAAK48B,IAAM58B,KAAK48B,GAAGzV,WAAannB,KAAK68B,GAAG1V,WAAannB,KAAK48B,GAAGa,gBAAkBz9B,KAAK68B,GAAGY,eAAgB,CAChHlL,EAAK,GACLiL,EAAK,GACL,IAAIZ,EAAK58B,KAAK48B,GACVC,EAAK78B,KAAK68B,GAEVD,EAAG1R,SAASlD,UAAY4U,EAAGlW,YAAckW,EAAGzV,UAAU,GAAGvgB,GAC3D2rB,EAAG,GAAKqK,EAAGa,gBAAgBb,EAAGzV,UAAU,GAAGvgB,EAAI,KAAQiP,EAAW,GAClE0c,EAAG,GAAKsK,EAAGY,gBAAgBZ,EAAG1V,UAAU,GAAGvgB,EAAI,KAAQiP,EAAW,GAClE2nB,EAAG,GAAKZ,EAAGa,eAAeb,EAAGzV,UAAU,GAAGvgB,EAAIiP,EAAW,GACzD2nB,EAAG,GAAKX,EAAGY,eAAeZ,EAAG1V,UAAU,GAAGvgB,EAAIiP,EAAW,IAChD+mB,EAAG1R,SAASlD,UAAY4U,EAAGlW,YAAckW,EAAGzV,UAAUyV,EAAGzV,UAAU9uB,OAAS,GAAGuO,GACxF2rB,EAAG,GAAKqK,EAAGa,eAAeb,EAAGzV,UAAUyV,EAAGzV,UAAU9uB,OAAS,GAAGuO,EAAIiP,EAAW,GAC/E0c,EAAG,GAAKsK,EAAGY,eAAeZ,EAAG1V,UAAU0V,EAAG1V,UAAU9uB,OAAS,GAAGuO,EAAIiP,EAAW,GAC/E2nB,EAAG,GAAKZ,EAAGa,gBAAgBb,EAAGzV,UAAUyV,EAAGzV,UAAU9uB,OAAS,GAAGuO,EAAI,KAAQiP,EAAW,GACxF2nB,EAAG,GAAKX,EAAGY,gBAAgBZ,EAAG1V,UAAU0V,EAAG1V,UAAU9uB,OAAS,GAAGuO,EAAI,KAAQiP,EAAW,KAExF0c,EAAK,CAACqK,EAAGhW,GAAIiW,EAAGjW,IAChB4W,EAAG,GAAKZ,EAAGa,gBAAgBb,EAAG1R,SAASlD,UAAY4U,EAAGlW,WAAa,KAAQ7Q,EAAW+mB,EAAGlW,YACzF8W,EAAG,GAAKX,EAAGY,gBAAgBZ,EAAG3R,SAASlD,UAAY6U,EAAGnW,WAAa,KAAQ7Q,EAAWgnB,EAAGnW,YAE7F,MAEE6L,EADAiL,EAAKhB,EAIPx8B,KAAKqG,EAAEysB,QAAQ72B,KAAKkuB,MAAMoI,EAAG,GAAKiL,EAAG,GAAIjL,EAAG,GAAKiL,EAAG,IACtD,CAEIx9B,KAAK+I,KAAKrC,GAAK1G,KAAK+I,KAAKrC,EAAEN,EACzBpG,KAAK+I,KAAKrC,EAAE+vB,EACdz2B,KAAKqG,EAAEytB,UAAU9zB,KAAK48B,GAAGv2B,EAAGrG,KAAK68B,GAAGx2B,GAAIrG,KAAK88B,GAAGz2B,GAEhDrG,KAAKqG,EAAEytB,UAAU9zB,KAAK48B,GAAGv2B,EAAGrG,KAAK68B,GAAGx2B,EAAG,GAGzCrG,KAAKqG,EAAEytB,UAAU9zB,KAAK0G,EAAEL,EAAE,GAAIrG,KAAK0G,EAAEL,EAAE,IAAKrG,KAAK0G,EAAEL,EAAE,GAEzD,CAEArG,KAAKyrB,QAAUzrB,KAAKoc,KAAKjF,WAAWsU,OAvFpC,CAwFF,EAkIE6R,mBAhIF,WAIE,GAHAt9B,KAAK28B,uBAAyB,EAC9B38B,KAAK08B,IAAI3M,SAEJ/vB,KAAK4M,EAAE8e,gBAAgBrzB,SAC1B2H,KAAK08B,IAAI5I,WAAW9zB,KAAK4M,EAAEvG,EAAE,IAAKrG,KAAK4M,EAAEvG,EAAE,GAAIrG,KAAK4M,EAAEvG,EAAE,IACxDrG,KAAK28B,uBAAyB,GAK3B38B,KAAKoG,EAAEslB,gBAAgBrzB,QAA5B,CAOA,GANE2H,KAAK08B,IAAIjJ,MAAMzzB,KAAKoG,EAAEC,EAAE,GAAIrG,KAAKoG,EAAEC,EAAE,GAAIrG,KAAKoG,EAAEC,EAAE,IAClDrG,KAAK28B,uBAAyB,EAK5B38B,KAAK6M,GAAI,CACX,GAAK7M,KAAK6M,GAAG6e,gBAAgBrzB,QAAW2H,KAAK8M,GAAG4e,gBAAgBrzB,OAI9D,OAHA2H,KAAK08B,IAAIlJ,cAAcxzB,KAAK6M,GAAGxG,EAAGrG,KAAK8M,GAAGzG,GAC1CrG,KAAK28B,uBAAyB,CAIlC,CAEI38B,KAAKsG,EACFtG,KAAKsG,EAAEolB,gBAAgBrzB,SAC1B2H,KAAK08B,IAAI5J,QAAQ9yB,KAAKsG,EAAED,GACxBrG,KAAK28B,uBAAyB,GAEtB38B,KAAKi9B,GAAGvR,gBAAgBrzB,QAAW2H,KAAKg9B,GAAGtR,gBAAgBrzB,QAAW2H,KAAK+8B,GAAGrR,gBAAgBrzB,QAAW2H,KAAKkxB,GAAGxF,gBAAgBrzB,SAC3I2H,KAAK08B,IAAItJ,SAASpzB,KAAKi9B,GAAG52B,GAAG8sB,QAAQnzB,KAAKg9B,GAAG32B,GAAG6sB,QAAQlzB,KAAK+8B,GAAG12B,GAAG+sB,SAASpzB,KAAKkxB,GAAG7qB,EAAE,IAAI8sB,QAAQnzB,KAAKkxB,GAAG7qB,EAAE,IAAI6sB,QAAQlzB,KAAKkxB,GAAG7qB,EAAE,IAClIrG,KAAK28B,uBAAyB,EAlBhC,CAoBF,EA6FEe,WA3FF,WACE,GA4FF9+B,gBAAgB,CAACiuB,0BAA2B4P,GAC5CA,EAAkBt9B,UAAU8sB,mBA1F5B,SAA4BxsB,GAC1BO,KAAK29B,oBAAoBl+B,GAEzBO,KAAKoc,KAAK6P,mBAAmBxsB,GAC7BO,KAAKk9B,UAAW,CAClB,EAsFAT,EAAkBt9B,UAAUw+B,oBAAsB9Q,yBAAyB1tB,UAAU8sB,mBAM9E,CACL2R,qBALF,SAA8BxhB,EAAMrT,EAAMvQ,GACxC,OAAO,IAAIikC,EAAkBrgB,EAAMrT,EAAMvQ,EAC3C,EAKF,CAhR+B,GAkR/B,SAASqlC,mBAAoB,CAkS7B,SAASC,uBAAwB,CA0HjC,SAASC,WAAWnxB,EAAGpG,GACrB,OAAyB,IAAlBvK,KAAK2H,IAAIgJ,EAAIpG,IAAevK,KAAKsH,IAAItH,KAAK2H,IAAIgJ,GAAI3Q,KAAK2H,IAAI4C,GACpE,CAEA,SAASw3B,UAAUv3B,GACjB,OAAOxK,KAAK2H,IAAI6C,IAAM,IACxB,CAEA,SAASw3B,KAAK5N,EAAIC,EAAI4L,GACpB,OAAO7L,GAAM,EAAI6L,GAAU5L,EAAK4L,CAClC,CAEA,SAASgC,UAAU7N,EAAIC,EAAI4L,GACzB,MAAO,CAAC+B,KAAK5N,EAAG,GAAIC,EAAG,GAAI4L,GAAS+B,KAAK5N,EAAG,GAAIC,EAAG,GAAI4L,GACzD,CAEA,SAASiC,UAAUvxB,EAAGpG,EAAG2G,GAEvB,GAAU,IAANP,EAAS,MAAO,GACpB,IAAIxG,EAAII,EAAIA,EAAI,EAAIoG,EAAIO,EAExB,GAAI/G,EAAI,EAAG,MAAO,GAClB,IAAIg4B,GAAc53B,GAAK,EAAIoG,GAE3B,GAAU,IAANxG,EAAS,MAAO,CAACg4B,GACrB,IAAIC,EAAQpiC,KAAKgH,KAAKmD,IAAM,EAAIwG,GAEhC,MAAO,CAACwxB,EAAaC,EAAOD,EAAaC,EAC3C,CAEA,SAASC,uBAAuBjO,EAAIC,EAAI0E,EAAIuJ,GAC1C,MAAO,CAAO,EAAIjO,EAATD,EAAc,EAAI2E,EAAKuJ,EAAI,EAAIlO,EAAK,EAAIC,EAAK,EAAI0E,GAAK,EAAI3E,EAAK,EAAIC,EAAID,EAClF,CAEA,SAASmO,YAAY93B,GACnB,OAAO,IAAI+3B,iBAAiB/3B,EAAGA,EAAGA,EAAGA,GAAG,EAC1C,CAEA,SAAS+3B,iBAAiBpO,EAAIC,EAAI0E,EAAIuJ,EAAIG,GACpCA,GAAaC,WAAWtO,EAAIC,KAC9BA,EAAK4N,UAAU7N,EAAIkO,EAAI,EAAI,IAGzBG,GAAaC,WAAW3J,EAAIuJ,KAC9BvJ,EAAKkJ,UAAU7N,EAAIkO,EAAI,EAAI,IAG7B,IAAIK,EAASN,uBAAuBjO,EAAG,GAAIC,EAAG,GAAI0E,EAAG,GAAIuJ,EAAG,IACxDM,EAASP,uBAAuBjO,EAAG,GAAIC,EAAG,GAAI0E,EAAG,GAAIuJ,EAAG,IAC5Dv+B,KAAK4M,EAAI,CAACgyB,EAAO,GAAIC,EAAO,IAC5B7+B,KAAKwG,EAAI,CAACo4B,EAAO,GAAIC,EAAO,IAC5B7+B,KAAKmN,EAAI,CAACyxB,EAAO,GAAIC,EAAO,IAC5B7+B,KAAK8G,EAAI,CAAC83B,EAAO,GAAIC,EAAO,IAC5B7+B,KAAK4e,OAAS,CAACyR,EAAIC,EAAI0E,EAAIuJ,EAC7B,CAkDA,SAASO,QAAQ3Y,EAAKnb,GACpB,IAAIzH,EAAM4iB,EAAIvH,OAAO,GAAG5T,GACpB3H,EAAM8iB,EAAIvH,OAAOuH,EAAIvH,OAAOvmB,OAAS,GAAG2S,GAE5C,GAAIzH,EAAMF,EAAK,CACb,IAAIqG,EAAIrG,EACRA,EAAME,EACNA,EAAMmG,CACR,CAKA,IAFA,IAAIjD,EAAI03B,UAAU,EAAIhY,EAAIvZ,EAAE5B,GAAO,EAAImb,EAAI3f,EAAEwE,GAAOmb,EAAIhZ,EAAEnC,IAEjDjM,EAAI,EAAGA,EAAI0H,EAAEpO,OAAQ0G,GAAK,EACjC,GAAI0H,EAAE1H,GAAK,GAAK0H,EAAE1H,GAAK,EAAG,CACxB,IAAI8E,EAAMsiB,EAAIzD,MAAMjc,EAAE1H,IAAIiM,GACtBnH,EAAMN,EAAKA,EAAMM,EAAaA,EAAMR,IAAKA,EAAMQ,EACrD,CAGF,MAAO,CACLN,IAAKA,EACLF,IAAKA,EAET,CAuBA,SAAS07B,cAAc5Y,EAAK7B,EAAI0a,GAC9B,IAAIC,EAAM9Y,EAAI+Y,cACd,MAAO,CACLC,GAAIF,EAAIE,GACRC,GAAIH,EAAIG,GACRtkC,MAAOmkC,EAAInkC,MACXT,OAAQ4kC,EAAI5kC,OACZ8rB,IAAKA,EACLvf,GAAI0d,EAAK0a,GAAM,EACf1a,GAAIA,EACJ0a,GAAIA,EAER,CAEA,SAASK,UAAUt2B,GACjB,IAAI8C,EAAQ9C,EAAKod,IAAIta,MAAM,IAC3B,MAAO,CAACkzB,cAAclzB,EAAM,GAAI9C,EAAKub,GAAIvb,EAAKnC,GAAIm4B,cAAclzB,EAAM,GAAI9C,EAAKnC,EAAGmC,EAAKi2B,IACzF,CAEA,SAASM,aAAanK,EAAIhB,GACxB,OAAiC,EAA1Bl4B,KAAK2H,IAAIuxB,EAAGgK,GAAKhL,EAAGgL,IAAUhK,EAAGr6B,MAAQq5B,EAAGr5B,OAAmC,EAA1BmB,KAAK2H,IAAIuxB,EAAGiK,GAAKjL,EAAGiL,IAAUjK,EAAG96B,OAAS85B,EAAG95B,MAC3G,CAEA,SAASklC,eAAenK,EAAIhB,EAAIoL,EAAOC,EAAWC,EAAeC,GAC/D,GAAKL,aAAalK,EAAIhB,GAEtB,GAAIoL,GAASG,GAAgBvK,EAAGt6B,OAAS2kC,GAAarK,EAAG/6B,QAAUolC,GAAarL,EAAGt5B,OAAS2kC,GAAarL,EAAG/5B,QAAUolC,EACpHC,EAAcp/B,KAAK,CAAC80B,EAAGxuB,EAAGwtB,EAAGxtB,QAD/B,CAKA,IAAIg5B,EAAMP,UAAUjK,GAChByK,EAAMR,UAAUjL,GACpBmL,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,EAPpE,CAQF,CAoBA,SAASG,aAAalzB,EAAGpG,GACvB,MAAO,CAACoG,EAAE,GAAKpG,EAAE,GAAKoG,EAAE,GAAKpG,EAAE,GAAIoG,EAAE,GAAKpG,EAAE,GAAKoG,EAAE,GAAKpG,EAAE,GAAIoG,EAAE,GAAKpG,EAAE,GAAKoG,EAAE,GAAKpG,EAAE,GACvF,CAEA,SAASu5B,iBAAiBC,EAAQC,EAAMC,EAAQC,GAC9C,IAAI5N,EAAK,CAACyN,EAAO,GAAIA,EAAO,GAAI,GAC5BxC,EAAK,CAACyC,EAAK,GAAIA,EAAK,GAAI,GACxBG,EAAK,CAACF,EAAO,GAAIA,EAAO,GAAI,GAC5BG,EAAK,CAACF,EAAK,GAAIA,EAAK,GAAI,GACxB75B,EAAIw5B,aAAaA,aAAavN,EAAIiL,GAAKsC,aAAaM,EAAIC,IAC5D,OAAIrC,UAAU13B,EAAE,IAAY,KACrB,CAACA,EAAE,GAAKA,EAAE,GAAIA,EAAE,GAAKA,EAAE,GAChC,CAEA,SAASg6B,YAAY55B,EAAG8qB,EAAOn5B,GAC7B,MAAO,CAACqO,EAAE,GAAKzK,KAAKwuB,IAAI+G,GAASn5B,EAAQqO,EAAE,GAAKzK,KAAK2tB,IAAI4H,GAASn5B,EACpE,CAEA,SAASkoC,cAAcjQ,EAAI0E,GACzB,OAAO/4B,KAAKukC,MAAMlQ,EAAG,GAAK0E,EAAG,GAAI1E,EAAG,GAAK0E,EAAG,GAC9C,CAEA,SAAS2J,WAAWrO,EAAI0E,GACtB,OAAO+I,WAAWzN,EAAG,GAAI0E,EAAG,KAAO+I,WAAWzN,EAAG,GAAI0E,EAAG,GAC1D,CAEA,SAASyL,iBAAkB,CAY3B,SAASC,SAASC,EAAcje,EAAO8O,EAAOh6B,EAAWopC,EAAWC,EAAcC,GAChF,IAAIC,EAAOvP,EAAQv1B,KAAKgI,GAAK,EACzB+8B,EAAOxP,EAAQv1B,KAAKgI,GAAK,EACzB24B,EAAKla,EAAM,GAAKzmB,KAAKwuB,IAAI+G,GAASh6B,EAAYopC,EAC9C/D,EAAKna,EAAM,GAAKzmB,KAAK2tB,IAAI4H,GAASh6B,EAAYopC,EAClDD,EAAanT,YAAYoP,EAAIC,EAAID,EAAK3gC,KAAKwuB,IAAIsW,GAAQF,EAAchE,EAAK5gC,KAAK2tB,IAAImX,GAAQF,EAAcjE,EAAK3gC,KAAKwuB,IAAIuW,GAAQF,EAAajE,EAAK5gC,KAAK2tB,IAAIoX,GAAQF,EAAaH,EAAatoC,SAC9L,CAEA,SAAS4oC,uBAAuB/e,EAAKC,GACnC,IAAI+e,EAAS,CAAC/e,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IACxCif,EAAiB,IAAVllC,KAAKgI,GAEhB,MADoB,CAAChI,KAAKwuB,IAAI0W,GAAOD,EAAO,GAAKjlC,KAAK2tB,IAAIuX,GAAOD,EAAO,GAAIjlC,KAAK2tB,IAAIuX,GAAOD,EAAO,GAAKjlC,KAAKwuB,IAAI0W,GAAOD,EAAO,GAEjI,CAEA,SAASE,mBAAmBt4B,EAAMu4B,GAChC,IAAIC,EAAoB,IAARD,EAAYv4B,EAAKzQ,SAAW,EAAIgpC,EAAM,EAClDE,GAAaF,EAAM,GAAKv4B,EAAKzQ,SAG7BmpC,EAAUP,uBAFEn4B,EAAKzC,EAAEi7B,GACPx4B,EAAKzC,EAAEk7B,IAEvB,OAAOtlC,KAAKkuB,MAAM,EAAG,GAAKluB,KAAKkuB,MAAMqX,EAAQ,GAAIA,EAAQ,GAC3D,CAEA,SAASC,aAAad,EAAc73B,EAAMu4B,EAAKT,EAAWc,EAAWC,EAAWnqC,GAC9E,IAAIg6B,EAAQ4P,mBAAmBt4B,EAAMu4B,GACjC3e,EAAQ5Z,EAAKzC,EAAEg7B,EAAMv4B,EAAK8X,SAC1BghB,EAAY94B,EAAKzC,EAAU,IAARg7B,EAAYv4B,EAAK8X,QAAU,EAAIygB,EAAM,GACxDQ,EAAY/4B,EAAKzC,GAAGg7B,EAAM,GAAKv4B,EAAK8X,SACpCkhB,EAAyB,IAAdH,EAAkB1lC,KAAKgH,KAAKhH,KAAK8G,IAAI2f,EAAM,GAAKkf,EAAU,GAAI,GAAK3lC,KAAK8G,IAAI2f,EAAM,GAAKkf,EAAU,GAAI,IAAM,EACtHG,EAAyB,IAAdJ,EAAkB1lC,KAAKgH,KAAKhH,KAAK8G,IAAI2f,EAAM,GAAKmf,EAAU,GAAI,GAAK5lC,KAAK8G,IAAI2f,EAAM,GAAKmf,EAAU,GAAI,IAAM,EAC1HnB,SAASC,EAAc73B,EAAKzC,EAAEg7B,EAAMv4B,EAAK8X,SAAU4Q,EAAOh6B,EAAWopC,EAAWmB,GAA8B,GAAjBL,EAAY,IAASI,GAA8B,GAAjBJ,EAAY,IAASC,EACtJ,CAEA,SAASK,cAAcrB,EAAcjoB,EAASkoB,EAAWc,EAAWC,EAAWnqC,GAC7E,IAAK,IAAIuH,EAAI,EAAGA,EAAI2iC,EAAW3iC,GAAK,EAAG,CACrC,IAAI6H,GAAK7H,EAAI,IAAM2iC,EAAY,GAC3BO,EAAqB,IAAdN,EAAkB1lC,KAAKgH,KAAKhH,KAAK8G,IAAI2V,EAAQkG,OAAO,GAAG,GAAKlG,EAAQkG,OAAO,GAAG,GAAI,GAAK3iB,KAAK8G,IAAI2V,EAAQkG,OAAO,GAAG,GAAKlG,EAAQkG,OAAO,GAAG,GAAI,IAAM,EAC1J4S,EAAQ9Y,EAAQwpB,YAAYt7B,GAEhC85B,SAASC,EADGjoB,EAAQgK,MAAM9b,GACI4qB,EAAOh6B,EAAWopC,EAAWqB,GAA0B,GAAjBP,EAAY,IAASO,GAA0B,GAAjBP,EAAY,IAASC,GACvHnqC,GAAaA,CACf,CAEA,OAAOA,CACT,CAqEA,SAAS2qC,aAAa7R,EAAI0E,EAAIkH,GAC5B,IAAI1K,EAAQv1B,KAAKkuB,MAAM6K,EAAG,GAAK1E,EAAG,GAAI0E,EAAG,GAAK1E,EAAG,IACjD,MAAO,CAACgQ,YAAYhQ,EAAIkB,EAAO0K,GAASoE,YAAYtL,EAAIxD,EAAO0K,GACjE,CAEA,SAASkG,cAAc1pB,EAASwjB,GAC9B,IAAI7L,EACAgS,EACAC,EACAC,EACAC,EACAjE,EACA70B,EAEJ2mB,GADA3mB,EAAIy4B,aAAazpB,EAAQkG,OAAO,GAAIlG,EAAQkG,OAAO,GAAIsd,IAChD,GACPmG,EAAM34B,EAAE,GAER44B,GADA54B,EAAIy4B,aAAazpB,EAAQkG,OAAO,GAAIlG,EAAQkG,OAAO,GAAIsd,IAC/C,GACRqG,EAAM74B,EAAE,GAER84B,GADA94B,EAAIy4B,aAAazpB,EAAQkG,OAAO,GAAIlG,EAAQkG,OAAO,GAAIsd,IAC/C,GACRqC,EAAK70B,EAAE,GACP,IAAI4mB,EAAKyP,iBAAiB1P,EAAIgS,EAAKC,EAAKC,GAC7B,OAAPjS,IAAaA,EAAK+R,GACtB,IAAIrN,EAAK+K,iBAAiByC,EAAKjE,EAAI+D,EAAKC,GAExC,OADW,OAAPvN,IAAaA,EAAKwN,GACf,IAAI/D,iBAAiBpO,EAAIC,EAAI0E,EAAIuJ,EAC1C,CAEA,SAASkE,UAAU9B,EAAc+B,EAAMC,EAAMC,EAAUC,GACrD,IAAIxS,EAAKqS,EAAK9jB,OAAO,GACjB0R,EAAKqS,EAAK/jB,OAAO,GAErB,GAAiB,IAAbgkB,EAAgB,OAAOvS,EAE3B,GAAIsO,WAAWtO,EAAIC,GAAK,OAAOD,EAE/B,GAAiB,IAAbuS,EAAgB,CAClB,IAAIE,GAAYJ,EAAKK,aAAa,GAC9BC,GAAWL,EAAKI,aAAa,GAAK9mC,KAAKgI,GACvCg/B,EAASlD,iBAAiB1P,EAAIiQ,YAAYjQ,EAAIyS,EAAW7mC,KAAKgI,GAAK,EAAG,KAAMqsB,EAAIgQ,YAAYhQ,EAAIwS,EAAW7mC,KAAKgI,GAAK,EAAG,MACxHi/B,EAASD,EAAS1C,cAAc0C,EAAQ5S,GAAMkQ,cAAclQ,EAAIC,GAAM,EACtEsC,EAAM0N,YAAYjQ,EAAIyS,EAAU,EAAII,EAASh/B,aAIjD,OAHAy8B,EAAapT,QAAQqF,EAAI,GAAIA,EAAI,GAAI,IAAK+N,EAAatoC,SAAW,GAClEu6B,EAAM0N,YAAYhQ,EAAI0S,EAAS,EAAIE,EAASh/B,aAC5Cy8B,EAAanT,YAAY8C,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIsC,EAAI,GAAIA,EAAI,GAAI+N,EAAatoC,UAC3Ei4B,CACT,CAGA,IAEI6S,EAAepD,iBAFVpB,WAAWtO,EAAIqS,EAAK9jB,OAAO,IAAM8jB,EAAK9jB,OAAO,GAAK8jB,EAAK9jB,OAAO,GAE/ByR,EAAIC,EADnCqO,WAAWrO,EAAIqS,EAAK/jB,OAAO,IAAM+jB,EAAK/jB,OAAO,GAAK+jB,EAAK/jB,OAAO,IAGvE,OAAIukB,GAAgB5C,cAAc4C,EAAc9S,GAAMwS,GACpDlC,EAAanT,YAAY2V,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIxC,EAAatoC,UACrI8qC,GAGF9S,CACT,CAEA,SAAS+S,gBAAgBx2B,EAAGpG,GAC1B,IAAI68B,EAAYz2B,EAAE8yB,cAAcl5B,GAEhC,OADI68B,EAAUhrC,QAAU0lC,WAAWsF,EAAU,GAAG,GAAI,IAAIA,EAAU1qB,QAC9D0qB,EAAUhrC,OAAegrC,EAAU,GAChC,IACT,CAEA,SAASC,yBAAyB12B,EAAGpG,GACnC,IAAI+8B,EAAO32B,EAAEmQ,QACTymB,EAAOh9B,EAAEuW,QACTsmB,EAAYD,gBAAgBx2B,EAAEA,EAAEvU,OAAS,GAAImO,EAAE,IAOnD,OALI68B,IACFE,EAAK32B,EAAEvU,OAAS,GAAKuU,EAAEA,EAAEvU,OAAS,GAAGwT,MAAMw3B,EAAU,IAAI,GACzDG,EAAK,GAAKh9B,EAAE,GAAGqF,MAAMw3B,EAAU,IAAI,IAGjCz2B,EAAEvU,OAAS,GAAKmO,EAAEnO,OAAS,IAC7BgrC,EAAYD,gBAAgBx2B,EAAE,GAAIpG,EAAEA,EAAEnO,OAAS,KAGtC,CAAC,CAACuU,EAAE,GAAGf,MAAMw3B,EAAU,IAAI,IAAK,CAAC78B,EAAEA,EAAEnO,OAAS,GAAGwT,MAAMw3B,EAAU,IAAI,KAIzE,CAACE,EAAMC,EAChB,CAEA,SAASC,mBAAmB/rC,GAG1B,IAFA,IAAIgS,EAEK3K,EAAI,EAAGA,EAAIrH,EAASW,OAAQ0G,GAAK,EACxC2K,EAAI45B,yBAAyB5rC,EAASqH,EAAI,GAAIrH,EAASqH,IACvDrH,EAASqH,EAAI,GAAK2K,EAAE,GACpBhS,EAASqH,GAAK2K,EAAE,GASlB,OANIhS,EAASW,OAAS,IACpBqR,EAAI45B,yBAAyB5rC,EAASA,EAASW,OAAS,GAAIX,EAAS,IACrEA,EAASA,EAASW,OAAS,GAAKqR,EAAE,GAClChS,EAAS,GAAKgS,EAAE,IAGXhS,CACT,CAEA,SAASgsC,mBAAmBhrB,EAASwjB,GAOnC,IACIrhC,EACA8oC,EACA93B,EACA+3B,EAJAC,EAAOnrB,EAAQorB,mBAMnB,GAAoB,IAAhBD,EAAKxrC,OACP,MAAO,CAAC+pC,cAAc1pB,EAASwjB,IAGjC,GAAoB,IAAhB2H,EAAKxrC,QAAgB0lC,WAAW8F,EAAK,GAAI,GAI3C,OAFAhpC,GADAgR,EAAQ6M,EAAQ7M,MAAMg4B,EAAK,KACd,GACbF,EAAQ93B,EAAM,GACP,CAACu2B,cAAcvnC,EAAMqhC,GAASkG,cAAcuB,EAAOzH,IAI5DrhC,GADAgR,EAAQ6M,EAAQ7M,MAAMg4B,EAAK,KACd,GACb,IAAIj9B,GAAKi9B,EAAK,GAAKA,EAAK,KAAO,EAAIA,EAAK,IAIxC,OAFAD,GADA/3B,EAAQA,EAAM,GAAGA,MAAMjF,IACX,GACZ+8B,EAAQ93B,EAAM,GACP,CAACu2B,cAAcvnC,EAAMqhC,GAASkG,cAAcwB,EAAK1H,GAASkG,cAAcuB,EAAOzH,GACxF,CAEA,SAAS6H,qBAAsB,CAwG/B,SAASC,kBAAkBC,GAOzB,IANA,IAAIC,EAASD,EAASE,OAASF,EAASE,OAAOt4B,MAAM,KAAO,GACxDu4B,EAAU,SACVD,EAAS,SACTllC,EAAMilC,EAAO7rC,OAGR0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAG5B,OAFYmlC,EAAOnlC,GAAGslC,eAGpB,IAAK,SACHF,EAAS,SACT,MAEF,IAAK,OACHC,EAAU,MACV,MAEF,IAAK,QACHA,EAAU,MACV,MAEF,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,UACL,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,QACL,IAAK,OACHA,EAAU,MAQhB,MAAO,CACLxvC,MAAOuvC,EACPG,OAAQL,EAASG,SAAWA,EAEhC,CAriCAxlC,gBAAgB,CAACm7B,eAAgB8D,kBAEjCA,iBAAiB1+B,UAAU+6B,uBAAyB,SAAU9d,EAAMrT,GAClE/I,KAAKosB,SAAWpsB,KAAKq6B,YACrBr6B,KAAKmN,EAAIsf,gBAAgBC,QAAQtQ,EAAMrT,EAAKoE,EAAG,EAAG,KAAMnN,MACxDA,KAAKwL,EAAIihB,gBAAgBC,QAAQtQ,EAAMrT,EAAKyC,EAAG,EAAG,KAAMxL,MACxDA,KAAKukC,GAAKhI,yBAAyBqB,qBAAqBxhB,EAAMrT,EAAKw7B,GAAIvkC,MACvEA,KAAKwkC,GAAK/X,gBAAgBC,QAAQtQ,EAAMrT,EAAKw7B,GAAGC,GAAI,EAAG,IAAMxkC,MAC7DA,KAAKykC,GAAKhY,gBAAgBC,QAAQtQ,EAAMrT,EAAKw7B,GAAGE,GAAI,EAAG,IAAMzkC,MAC7DA,KAAK+I,KAAOA,EAEP/I,KAAK8sB,kBAAkBz0B,QAC1B2H,KAAKosB,UAAS,GAGhBpsB,KAAK+sB,cAAgB/sB,KAAK8sB,kBAAkBz0B,OAC5C2H,KAAK0kC,QAAU,IAAIlS,OACnBxyB,KAAK2kC,QAAU,IAAInS,OACnBxyB,KAAK4kC,QAAU,IAAIpS,OACnBxyB,KAAK6kC,QAAU,IAAIrS,OACnBxyB,KAAKi2B,OAAS,IAAIzD,MACpB,EAEAqL,iBAAiB1+B,UAAU2lC,gBAAkB,SAAUJ,EAASC,EAASC,EAAS3Q,EAAW1R,EAAMwiB,GACjG,IAAIrhB,EAAMqhB,GAAO,EAAI,EACjBC,EAAS/Q,EAAU7tB,EAAEC,EAAE,IAAM,EAAI4tB,EAAU7tB,EAAEC,EAAE,KAAO,EAAIkc,GAC1D0iB,EAAShR,EAAU7tB,EAAEC,EAAE,IAAM,EAAI4tB,EAAU7tB,EAAEC,EAAE,KAAO,EAAIkc,GAC9DmiB,EAAQ5Q,UAAUG,EAAUvtB,EAAEL,EAAE,GAAKqd,EAAMnB,EAAM0R,EAAUvtB,EAAEL,EAAE,GAAKqd,EAAMnB,EAAM0R,EAAUvtB,EAAEL,EAAE,IAC9Fs+B,EAAQ7Q,WAAWG,EAAUrnB,EAAEvG,EAAE,IAAK4tB,EAAUrnB,EAAEvG,EAAE,GAAI4tB,EAAUrnB,EAAEvG,EAAE,IACtEs+B,EAAQ7R,QAAQmB,EAAU3tB,EAAED,EAAIqd,EAAMnB,GACtCoiB,EAAQ7Q,UAAUG,EAAUrnB,EAAEvG,EAAE,GAAI4tB,EAAUrnB,EAAEvG,EAAE,GAAI4tB,EAAUrnB,EAAEvG,EAAE,IACpEu+B,EAAQ9Q,WAAWG,EAAUrnB,EAAEvG,EAAE,IAAK4tB,EAAUrnB,EAAEvG,EAAE,GAAI4tB,EAAUrnB,EAAEvG,EAAE,IACtEu+B,EAAQnR,MAAMsR,EAAM,EAAIC,EAASA,EAAQD,EAAM,EAAIE,EAASA,GAC5DL,EAAQ9Q,UAAUG,EAAUrnB,EAAEvG,EAAE,GAAI4tB,EAAUrnB,EAAEvG,EAAE,GAAI4tB,EAAUrnB,EAAEvG,EAAE,GACtE,EAEAw3B,iBAAiB1+B,UAAU2b,KAAO,SAAUsB,EAAMza,EAAKjF,EAAKwoC,GAY1D,IAXAllC,KAAKoc,KAAOA,EACZpc,KAAK2B,IAAMA,EACX3B,KAAKtD,IAAMA,EACXsD,KAAKklC,UAAYA,EACjBllC,KAAKmlC,eAAiB,EACtBnlC,KAAKolC,UAAY,GACjBplC,KAAKqlC,QAAU,GACfrlC,KAAKyrB,SAAW,EAChBzrB,KAAKitB,6BAA6B7Q,GAClCpc,KAAKk6B,uBAAuB9d,EAAMza,EAAIjF,IAE/BA,EAAM,GACXA,GAAO,EAEPsD,KAAKolC,UAAUE,QAAQ3jC,EAAIjF,IAGzBsD,KAAK8sB,kBAAkBz0B,OACzB2H,KAAKiK,GAAI,EAETjK,KAAKosB,UAAS,EAElB,EAEAyR,iBAAiB1+B,UAAUomC,cAAgB,SAAUC,GACnD,IAAIzmC,EACAE,EAAMumC,EAASntC,OAEnB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBymC,EAASzmC,GAAG0mC,YAAa,EAEF,OAAnBD,EAASzmC,GAAG0L,IACdzK,KAAKulC,cAAcC,EAASzmC,GAAGwM,GAGrC,EAEAsyB,iBAAiB1+B,UAAUumC,cAAgB,SAAUF,GACnD,IAAIG,EAAcx6B,KAAKC,MAAMD,KAAKE,UAAUm6B,IAE5C,OADAxlC,KAAKulC,cAAcI,GACZA,CACT,EAEA9H,iBAAiB1+B,UAAUymC,kBAAoB,SAAUJ,EAAUK,GACjE,IAAI9mC,EACAE,EAAMumC,EAASntC,OAEnB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBymC,EAASzmC,GAAG+mC,QAAUD,EAEC,OAAnBL,EAASzmC,GAAG0L,IACdzK,KAAK4lC,kBAAkBJ,EAASzmC,GAAGwM,GAAIs6B,EAG7C,EAEAhI,iBAAiB1+B,UAAU87B,cAAgB,SAAUrP,GACnD,IAAIma,EACAC,EACAjnC,EACA2kB,EACAuiB,EACAC,GAAc,EAElB,GAAIlmC,KAAKurB,MAAQK,EAAe,CAC9B,IAmEIia,EAnEAM,EAASlqC,KAAKC,KAAK8D,KAAKmN,EAAE9G,GAE9B,GAAIrG,KAAKqlC,QAAQhtC,OAAS8tC,EAAQ,CAChC,KAAOnmC,KAAKqlC,QAAQhtC,OAAS8tC,GAAQ,CACnC,IAAIC,EAAQ,CACV76B,GAAIvL,KAAK0lC,cAAc1lC,KAAKolC,WAC5B36B,GAAI,MAEN27B,EAAM76B,GAAGjL,KAAK,CACZsM,EAAG,CACDA,EAAG,EACHy5B,GAAI,EACJp8B,EAAG,CAAC,EAAG,IAET+K,GAAI,YACJxJ,EAAG,CACDoB,EAAG,EACHy5B,GAAI,EACJp8B,EAAG,KAELvD,EAAG,CACDkG,EAAG,EACHy5B,GAAI,EACJp8B,EAAG,CAAC,EAAG,IAET3D,EAAG,CACDsG,EAAG,EACHy5B,GAAI,EACJp8B,EAAG,CAAC,CACF7D,EAAG,EACHsD,EAAG,EACH9C,EAAG,GACF,CACDR,EAAG,EACHsD,EAAG,EACH9C,EAAG,KAGPR,EAAG,CACDwG,EAAG,EACHy5B,GAAI,EACJp8B,EAAG,CAAC,IAAK,MAEX6C,GAAI,CACFF,EAAG,EACHy5B,GAAI,EACJp8B,EAAG,GAEL4C,GAAI,CACFD,EAAG,EACHy5B,GAAI,EACJp8B,EAAG,GAELQ,GAAI,OAENzK,KAAK2B,IAAI6R,OAAO,EAAG,EAAG4yB,GAEtBpmC,KAAKqlC,QAAQ7xB,OAAO,EAAG,EAAG4yB,GAE1BpmC,KAAKmlC,gBAAkB,CACzB,CAEAnlC,KAAKoc,KAAKkqB,eACVJ,GAAc,CAChB,CAKA,IAHAD,EAAO,EAGFlnC,EAAI,EAAGA,GAAKiB,KAAKqlC,QAAQhtC,OAAS,EAAG0G,GAAK,EAAG,CAKhD,GAJA8mC,EAAaI,EAAOE,EACpBnmC,KAAKqlC,QAAQtmC,GAAG+mC,QAAUD,EAC1B7lC,KAAK4lC,kBAAkB5lC,KAAKqlC,QAAQtmC,GAAGwM,GAAIs6B,IAEtCA,EAAY,CACf,IAAIU,EAAQvmC,KAAKklC,UAAUnmC,GAAGwM,GAC1Bi7B,EAAgBD,EAAMA,EAAMluC,OAAS,GAEJ,IAAjCmuC,EAAcvS,UAAUxnB,GAAGpG,GAC7BmgC,EAAcvS,UAAUxnB,GAAG8e,MAAO,EAClCib,EAAcvS,UAAUxnB,GAAGpG,EAAI,GAE/BmgC,EAAcvS,UAAUxnB,GAAG8e,MAAO,CAEtC,CAEA0a,GAAQ,CACV,CAEAjmC,KAAKmlC,eAAiBgB,EAEtB,IAAIl/B,EAASjH,KAAKwL,EAAEnF,EAChBogC,EAAex/B,EAAS,EACxBy/B,EAAcz/B,EAAS,EAAIhL,KAAKkH,MAAM8D,GAAUhL,KAAKC,KAAK+K,GAC1D0/B,EAAS3mC,KAAK0kC,QAAQ/vC,MACtBiyC,EAAS5mC,KAAK2kC,QAAQhwC,MACtBkyC,EAAS7mC,KAAK4kC,QAAQjwC,MAC1BqL,KAAK0kC,QAAQ3U,QACb/vB,KAAK2kC,QAAQ5U,QACb/vB,KAAK4kC,QAAQ7U,QACb/vB,KAAK6kC,QAAQ9U,QACb/vB,KAAKi2B,OAAOlG,QACZ,IA2BIhmB,EACAC,EA5BA88B,EAAY,EAEhB,GAAI7/B,EAAS,EAAG,CACd,KAAO6/B,EAAYJ,GACjB1mC,KAAK8kC,gBAAgB9kC,KAAK0kC,QAAS1kC,KAAK2kC,QAAS3kC,KAAK4kC,QAAS5kC,KAAKukC,GAAI,GAAG,GAC3EuC,GAAa,EAGXL,IACFzmC,KAAK8kC,gBAAgB9kC,KAAK0kC,QAAS1kC,KAAK2kC,QAAS3kC,KAAK4kC,QAAS5kC,KAAKukC,GAAIkC,GAAc,GACtFK,GAAaL,EAEjB,MAAO,GAAIx/B,EAAS,EAAG,CACrB,KAAO6/B,EAAYJ,GACjB1mC,KAAK8kC,gBAAgB9kC,KAAK0kC,QAAS1kC,KAAK2kC,QAAS3kC,KAAK4kC,QAAS5kC,KAAKukC,GAAI,GAAG,GAC3EuC,GAAa,EAGXL,IACFzmC,KAAK8kC,gBAAgB9kC,KAAK0kC,QAAS1kC,KAAK2kC,QAAS3kC,KAAK4kC,QAAS5kC,KAAKukC,IAAKkC,GAAc,GACvFK,GAAaL,EAEjB,CAQA,IANA1nC,EAAoB,IAAhBiB,KAAK+I,KAAK8qB,EAAU,EAAI7zB,KAAKmlC,eAAiB,EAClDzhB,EAAsB,IAAhB1jB,KAAK+I,KAAK8qB,EAAU,GAAK,EAC/BoS,EAAOjmC,KAAKmlC,eAILc,GAAM,CAQX,GALAj8B,GADAg8B,GADAD,EAAQ/lC,KAAKklC,UAAUnmC,GAAGwM,IACHw6B,EAAM1tC,OAAS,GAAG47B,UAAU8S,OAAO1gC,EAAE1R,OACtC0D,OACtB0tC,EAAMA,EAAM1tC,OAAS,GAAG47B,UAAU8S,OAAOxb,MAAO,EAChDwa,EAAMA,EAAM1tC,OAAS,GAAG47B,UAAUxnB,GAAG8e,MAAO,EAC5Cwa,EAAMA,EAAM1tC,OAAS,GAAG47B,UAAUxnB,GAAGpG,EAA4B,IAAxBrG,KAAKmlC,eAAuBnlC,KAAKwkC,GAAGn+B,EAAIrG,KAAKwkC,GAAGn+B,GAAKrG,KAAKykC,GAAGp+B,EAAIrG,KAAKwkC,GAAGn+B,IAAMtH,GAAKiB,KAAKmlC,eAAiB,IAEjI,IAAd2B,EAAiB,CASnB,KARU,IAAN/nC,GAAmB,IAAR2kB,GAAa3kB,IAAMiB,KAAKmlC,eAAiB,IAAc,IAATzhB,IAC3D1jB,KAAK8kC,gBAAgB9kC,KAAK0kC,QAAS1kC,KAAK2kC,QAAS3kC,KAAK4kC,QAAS5kC,KAAKukC,GAAI,GAAG,GAG7EvkC,KAAKi2B,OAAOhC,UAAU2S,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvM5mC,KAAKi2B,OAAOhC,UAAU4S,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvM7mC,KAAKi2B,OAAOhC,UAAU0S,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KAElM58B,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBi8B,EAAej8B,GAAK/J,KAAKi2B,OAAOthC,MAAMoV,GAGxC/J,KAAKi2B,OAAOlG,OACd,MAGE,IAFA/vB,KAAKi2B,OAAOlG,QAEPhmB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBi8B,EAAej8B,GAAK/J,KAAKi2B,OAAOthC,MAAMoV,GAI1C+8B,GAAa,EACbb,GAAQ,EACRlnC,GAAK2kB,CACP,CACF,MAKE,IAJAuiB,EAAOjmC,KAAKmlC,eACZpmC,EAAI,EACJ2kB,EAAM,EAECuiB,GAELD,GADAD,EAAQ/lC,KAAKklC,UAAUnmC,GAAGwM,IACHw6B,EAAM1tC,OAAS,GAAG47B,UAAU8S,OAAO1gC,EAAE1R,MAC5DoxC,EAAMA,EAAM1tC,OAAS,GAAG47B,UAAU8S,OAAOxb,MAAO,EAChDwa,EAAMA,EAAM1tC,OAAS,GAAG47B,UAAUxnB,GAAG8e,MAAO,EAC5C0a,GAAQ,EACRlnC,GAAK2kB,EAIT,OAAOwiB,CACT,EAEArI,iBAAiB1+B,UAAUwvB,SAAW,WAAa,EAInD/vB,gBAAgB,CAACm7B,eAAgB+D,sBAEjCA,qBAAqB3+B,UAAU+6B,uBAAyB,SAAU9d,EAAMrT,GACtE/I,KAAKosB,SAAWpsB,KAAKq6B,YACrBr6B,KAAKgnC,GAAKva,gBAAgBC,QAAQtQ,EAAMrT,EAAKzC,EAAG,EAAG,KAAMtG,MACzDA,KAAK+sB,cAAgB/sB,KAAKgnC,GAAGtb,gBAAgBrzB,MAC/C,EAEAylC,qBAAqB3+B,UAAUg9B,YAAc,SAAUrzB,EAAMzE,GAC3D,IAEItF,EAFAu9B,EAAajO,UAAUtN,aAC3Bub,EAAWnvB,EAAIrE,EAAKqE,EAEpB,IACI85B,EACAC,EACAC,EACAC,EACAC,EACAC,EAEA7Z,EACAC,EACAC,EACAC,EACAC,EACAC,EAbA7uB,EAAM6J,EAAK8X,QAOXpF,EAAQ,EAQZ,IAAKzc,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBkoC,EAAWn+B,EAAKzC,EAAEtH,GAClBooC,EAAWr+B,EAAK0C,EAAEzM,GAClBmoC,EAAWp+B,EAAK/J,EAAEA,GAEdkoC,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOC,EAAS,IAAMD,EAAS,KAAOC,EAAS,GAC7G,IAANnoC,GAAWA,IAAME,EAAM,GAAO6J,EAAKqE,GASpCi6B,EADQ,IAANroC,EACQ+J,EAAKzC,EAAEpH,EAAM,GAEb6J,EAAKzC,EAAEtH,EAAI,GAIvBuoC,GADAD,EAAWprC,KAAKgH,KAAKhH,KAAK8G,IAAIkkC,EAAS,GAAKG,EAAQ,GAAI,GAAKnrC,KAAK8G,IAAIkkC,EAAS,GAAKG,EAAQ,GAAI,KACxEnrC,KAAKsH,IAAI8jC,EAAW,EAAGhjC,GAASgjC,EAAW,EAEnE5Z,EADAI,EAAKoZ,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAGhD5Z,EADAI,EAAKmZ,EAAS,IAAMA,EAAS,GAAKG,EAAQ,IAAME,EAEhD3Z,EAAKF,GAAMA,EAAKwZ,EAAS,IAAM/iC,YAC/B0pB,EAAKF,GAAMA,EAAKuZ,EAAS,IAAM/iC,YAC/Bo4B,EAAW9O,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAItS,GAC/CA,GAAS,EAGP4rB,EADEroC,IAAME,EAAM,EACJ6J,EAAKzC,EAAE,GAEPyC,EAAKzC,EAAEtH,EAAI,GAIvBuoC,GADAD,EAAWprC,KAAKgH,KAAKhH,KAAK8G,IAAIkkC,EAAS,GAAKG,EAAQ,GAAI,GAAKnrC,KAAK8G,IAAIkkC,EAAS,GAAKG,EAAQ,GAAI,KACxEnrC,KAAKsH,IAAI8jC,EAAW,EAAGhjC,GAASgjC,EAAW,EAEnE5Z,EADAE,EAAKsZ,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAGhD5Z,EADAE,EAAKqZ,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAEhDzZ,EAAKJ,GAAMA,EAAKwZ,EAAS,IAAM/iC,YAC/B4pB,EAAKJ,GAAMA,EAAKuZ,EAAS,IAAM/iC,YAC/Bo4B,EAAW9O,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAItS,GAC/CA,GAAS,IAvCT8gB,EAAW9O,YAAYyZ,EAAS,GAAIA,EAAS,GAAIE,EAAS,GAAIA,EAAS,GAAID,EAAS,GAAIA,EAAS,GAAI1rB,GAKrGA,GAAS,IAqCX8gB,EAAW9O,YAAY1kB,EAAKzC,EAAEtH,GAAG,GAAI+J,EAAKzC,EAAEtH,GAAG,GAAI+J,EAAK0C,EAAEzM,GAAG,GAAI+J,EAAK0C,EAAEzM,GAAG,GAAI+J,EAAK/J,EAAEA,GAAG,GAAI+J,EAAK/J,EAAEA,GAAG,GAAIyc,GAC3GA,GAAS,GAIb,OAAO8gB,CACT,EAEAwB,qBAAqB3+B,UAAU87B,cAAgB,SAAUrP,GACvD,IAAIsP,EACAn8B,EAEAgL,EACAC,EAIE6Z,EACA6L,EAPFzwB,EAAMe,KAAK6K,OAAOxS,OAGlB2uC,EAAKhnC,KAAKgnC,GAAG3gC,EAEjB,GAAW,IAAP2gC,EAIF,IAAKjoC,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAI3B,GAFA2wB,GADA7L,EAAY7jB,KAAK6K,OAAO9L,IACS2wB,qBAE1B7L,EAAU2K,MAAMjD,MAASvrB,KAAKurB,MAASK,EAM5C,IALA8D,EAAqBd,gBACrB/K,EAAU2K,MAAMjD,MAAO,EACvB2P,EAAarX,EAAU2K,MAAMiB,MAAM5kB,OACnCb,EAAO6Z,EAAU2K,MAAMiB,MAAM7O,QAExB7W,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB2lB,EAAqBf,SAAS3uB,KAAKm8B,YAAYjB,EAAWnxB,GAAIi9B,IAIlEnjB,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,oBACpC,CAGG1vB,KAAK8sB,kBAAkBz0B,SAC1B2H,KAAKurB,MAAO,EAEhB,EA0DAkT,iBAAiBt/B,UAAUujB,MAAQ,SAAU9b,GAC3C,MAAO,GAAG5G,KAAK4M,EAAE,GAAKhG,EAAI5G,KAAKwG,EAAE,IAAMI,EAAI5G,KAAKmN,EAAE,IAAMvG,EAAI5G,KAAK8G,EAAE,KAAM9G,KAAK4M,EAAE,GAAKhG,EAAI5G,KAAKwG,EAAE,IAAMI,EAAI5G,KAAKmN,EAAE,IAAMvG,EAAI5G,KAAK8G,EAAE,GACpI,EAEA23B,iBAAiBt/B,UAAUooC,WAAa,SAAU3gC,GAChD,MAAO,EAAE,EAAIA,EAAI5G,KAAK4M,EAAE,GAAK,EAAI5M,KAAKwG,EAAE,IAAMI,EAAI5G,KAAKmN,EAAE,IAAK,EAAIvG,EAAI5G,KAAK4M,EAAE,GAAK,EAAI5M,KAAKwG,EAAE,IAAMI,EAAI5G,KAAKmN,EAAE,GAChH,EAEAsxB,iBAAiBt/B,UAAU4jC,aAAe,SAAUn8B,GAClD,IAAIF,EAAI1G,KAAKunC,WAAW3gC,GACxB,OAAO3K,KAAKkuB,MAAMzjB,EAAE,GAAIA,EAAE,GAC5B,EAEA+3B,iBAAiBt/B,UAAU+iC,YAAc,SAAUt7B,GACjD,IAAIF,EAAI1G,KAAKunC,WAAW3gC,GACxB,OAAO3K,KAAKkuB,MAAMzjB,EAAE,GAAIA,EAAE,GAC5B,EAEA+3B,iBAAiBt/B,UAAU2kC,iBAAmB,WAC5C,IAAI0D,EAAQxnC,KAAK4M,EAAE,GAAK5M,KAAKwG,EAAE,GAAKxG,KAAK4M,EAAE,GAAK5M,KAAKwG,EAAE,GACvD,GAAIw3B,UAAUwJ,GAAQ,MAAO,GAC7B,IAAIC,GAAS,IAAOznC,KAAK4M,EAAE,GAAK5M,KAAKmN,EAAE,GAAKnN,KAAK4M,EAAE,GAAK5M,KAAKmN,EAAE,IAAMq6B,EACjEE,EAASD,EAAQA,EAAQ,EAAI,GAAKznC,KAAKwG,EAAE,GAAKxG,KAAKmN,EAAE,GAAKnN,KAAKwG,EAAE,GAAKxG,KAAKmN,EAAE,IAAMq6B,EACvF,GAAIE,EAAS,EAAG,MAAO,GACvB,IAAIC,EAAO1rC,KAAKgH,KAAKykC,GAErB,OAAI1J,UAAU2J,GACRA,EAAO,GAAKA,EAAO,EAAU,CAACF,GAC3B,GAGF,CAACA,EAAQE,EAAMF,EAAQE,GAAMxuC,QAAO,SAAUmN,GACnD,OAAOA,EAAI,GAAKA,EAAI,CACtB,GACF,EAEAm4B,iBAAiBt/B,UAAU0M,MAAQ,SAAUjF,GAC3C,GAAIA,GAAK,EAAG,MAAO,CAAC43B,YAAYx+B,KAAK4e,OAAO,IAAK5e,MACjD,GAAI4G,GAAK,EAAG,MAAO,CAAC5G,KAAMw+B,YAAYx+B,KAAK4e,OAAO5e,KAAK4e,OAAOvmB,OAAS,KACvE,IAAIuvC,EAAM1J,UAAUl+B,KAAK4e,OAAO,GAAI5e,KAAK4e,OAAO,GAAIhY,GAChDihC,EAAM3J,UAAUl+B,KAAK4e,OAAO,GAAI5e,KAAK4e,OAAO,GAAIhY,GAChD4wB,EAAM0G,UAAUl+B,KAAK4e,OAAO,GAAI5e,KAAK4e,OAAO,GAAIhY,GAChDkhC,EAAM5J,UAAU0J,EAAKC,EAAKjhC,GAC1BmhC,EAAM7J,UAAU2J,EAAKrQ,EAAK5wB,GAC1B23B,EAAKL,UAAU4J,EAAKC,EAAKnhC,GAC7B,MAAO,CAAC,IAAI63B,iBAAiBz+B,KAAK4e,OAAO,GAAIgpB,EAAKE,EAAKvJ,GAAI,GAAO,IAAIE,iBAAiBF,EAAIwJ,EAAKvQ,EAAKx3B,KAAK4e,OAAO,IAAI,GACvH,EA4BA6f,iBAAiBt/B,UAAU6oC,OAAS,WAClC,MAAO,CACLptC,EAAGkkC,QAAQ9+B,KAAM,GACjBjF,EAAG+jC,QAAQ9+B,KAAM,GAErB,EAEAy+B,iBAAiBt/B,UAAU+/B,YAAc,WACvC,IAAI8I,EAAShoC,KAAKgoC,SAClB,MAAO,CACLntC,KAAMmtC,EAAOptC,EAAE2I,IACfogC,MAAOqE,EAAOptC,EAAEyI,IAChBjJ,IAAK4tC,EAAOjtC,EAAEwI,IACd0kC,OAAQD,EAAOjtC,EAAEsI,IACjBvI,MAAOktC,EAAOptC,EAAEyI,IAAM2kC,EAAOptC,EAAE2I,IAC/BlJ,OAAQ2tC,EAAOjtC,EAAEsI,IAAM2kC,EAAOjtC,EAAEwI,IAChC47B,IAAK6I,EAAOptC,EAAEyI,IAAM2kC,EAAOptC,EAAE2I,KAAO,EACpC67B,IAAK4I,EAAOjtC,EAAEsI,IAAM2kC,EAAOjtC,EAAEwI,KAAO,EAExC,EAyCAk7B,iBAAiBt/B,UAAUugC,cAAgB,SAAUwI,EAAOzI,EAAWE,QACnD1nC,IAAdwnC,IAAyBA,EAAY,QACpBxnC,IAAjB0nC,IAA4BA,EAAe,GAC/C,IAAID,EAAgB,GAEpB,OADAH,eAAeR,cAAc/+B,KAAM,EAAG,GAAI++B,cAAcmJ,EAAO,EAAG,GAAI,EAAGzI,EAAWC,EAAeC,GAC5FD,CACT,EAEAjB,iBAAiB1C,aAAe,SAAUzN,EAAW9S,GACnD,IAAI+lB,GAAa/lB,EAAQ,GAAK8S,EAAUj2B,SACxC,OAAO,IAAIomC,iBAAiBnQ,EAAUjoB,EAAEmV,GAAQ8S,EAAU9iB,EAAEgQ,GAAQ8S,EAAUvvB,EAAEwiC,GAAYjT,EAAUjoB,EAAEk7B,IAAY,EACtH,EAEA9C,iBAAiB0J,qBAAuB,SAAU7Z,EAAW9S,GAC3D,IAAI+lB,GAAa/lB,EAAQ,GAAK8S,EAAUj2B,SACxC,OAAO,IAAIomC,iBAAiBnQ,EAAUjoB,EAAEk7B,GAAYjT,EAAUvvB,EAAEwiC,GAAYjT,EAAU9iB,EAAEgQ,GAAQ8S,EAAUjoB,EAAEmV,IAAQ,EACtH,EA8BA5c,gBAAgB,CAACm7B,eAAgB0G,gBAEjCA,eAAethC,UAAU+6B,uBAAyB,SAAU9d,EAAMrT,GAChE/I,KAAKosB,SAAWpsB,KAAKq6B,YACrBr6B,KAAK4gC,UAAYnU,gBAAgBC,QAAQtQ,EAAMrT,EAAK3C,EAAG,EAAG,KAAMpG,MAChEA,KAAK0hC,UAAYjV,gBAAgBC,QAAQtQ,EAAMrT,EAAKzC,EAAG,EAAG,KAAMtG,MAChEA,KAAKooC,WAAa3b,gBAAgBC,QAAQtQ,EAAMrT,EAAKwB,GAAI,EAAG,KAAMvK,MAClEA,KAAK+sB,YAAwD,IAA1C/sB,KAAK4gC,UAAUlV,gBAAgBrzB,QAA0D,IAA1C2H,KAAK0hC,UAAUhW,gBAAgBrzB,QAA2D,IAA3C2H,KAAKooC,WAAW1c,gBAAgBrzB,MACnJ,EAiDAooC,eAAethC,UAAUg9B,YAAc,SAAUrzB,EAAM83B,EAAWc,EAAWC,GAC3E,IAAI0G,EAAQv/B,EAAK8X,QACb0b,EAAajO,UAAUtN,aAO3B,GANAub,EAAWnvB,EAAIrE,EAAKqE,EAEfrE,EAAKqE,IACRk7B,GAAS,GAGG,IAAVA,EAAa,OAAO/L,EACxB,IAAI9kC,GAAa,EACbkhB,EAAU+lB,iBAAiB1C,aAAajzB,EAAM,GAClD24B,aAAanF,EAAYxzB,EAAM,EAAG83B,EAAWc,EAAWC,EAAWnqC,GAEnE,IAAK,IAAIuH,EAAI,EAAGA,EAAIspC,EAAOtpC,GAAK,EAC9BvH,EAAYwqC,cAAc1F,EAAY5jB,EAASkoB,EAAWc,EAAWC,GAAYnqC,GAK/EkhB,EAHE3Z,IAAMspC,EAAQ,GAAMv/B,EAAKqE,EAGjBsxB,iBAAiB1C,aAAajzB,GAAO/J,EAAI,GAAKspC,GAF9C,KAKZ5G,aAAanF,EAAYxzB,EAAM/J,EAAI,EAAG6hC,EAAWc,EAAWC,EAAWnqC,GAGzE,OAAO8kC,CACT,EAEAmE,eAAethC,UAAU87B,cAAgB,SAAUrP,GACjD,IAAIsP,EACAn8B,EAEAgL,EACAC,EAME6Z,EACA6L,EATFzwB,EAAMe,KAAK6K,OAAOxS,OAGlBuoC,EAAY5gC,KAAK4gC,UAAUv6B,EAC3Bq7B,EAAYzlC,KAAKoH,IAAI,EAAGpH,KAAKoI,MAAMrE,KAAK0hC,UAAUr7B,IAClDs7B,EAAY3hC,KAAKooC,WAAW/hC,EAEhC,GAAkB,IAAdu6B,EAIF,IAAK7hC,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAI3B,GAFA2wB,GADA7L,EAAY7jB,KAAK6K,OAAO9L,IACS2wB,qBAE1B7L,EAAU2K,MAAMjD,MAASvrB,KAAKurB,MAASK,EAM5C,IALA8D,EAAqBd,gBACrB/K,EAAU2K,MAAMjD,MAAO,EACvB2P,EAAarX,EAAU2K,MAAMiB,MAAM5kB,OACnCb,EAAO6Z,EAAU2K,MAAMiB,MAAM7O,QAExB7W,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB2lB,EAAqBf,SAAS3uB,KAAKm8B,YAAYjB,EAAWnxB,GAAI62B,EAAWc,EAAWC,IAIxF9d,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,oBACpC,CAGG1vB,KAAK8sB,kBAAkBz0B,SAC1B2H,KAAKurB,MAAO,EAEhB,EAiJA3sB,gBAAgB,CAACm7B,eAAgBgK,oBAEjCA,mBAAmB5kC,UAAU+6B,uBAAyB,SAAU9d,EAAMrT,GACpE/I,KAAKosB,SAAWpsB,KAAKq6B,YACrBr6B,KAAKk8B,OAASzP,gBAAgBC,QAAQtQ,EAAMrT,EAAK6D,EAAG,EAAG,KAAM5M,MAC7DA,KAAK6iC,WAAapW,gBAAgBC,QAAQtQ,EAAMrT,EAAKu/B,GAAI,EAAG,KAAMtoC,MAClEA,KAAK4iC,SAAW75B,EAAKw/B,GACrBvoC,KAAK+sB,YAAqD,IAAvC/sB,KAAKk8B,OAAOxQ,gBAAgBrzB,MACjD,EAEA0rC,mBAAmB5kC,UAAUg9B,YAAc,SAAUqM,EAAatM,EAAQ0G,EAAUC,GAClF,IAAIlC,EAAetS,UAAUtN,aAC7B4f,EAAaxzB,EAAIq7B,EAAYr7B,EAC7B,IAMIpO,EACAgL,EACA2O,EARA2vB,EAAQG,EAAYnwC,SAEnBmwC,EAAYr7B,IACfk7B,GAAS,GAMX,IAAII,EAAgB,GAEpB,IAAK1pC,EAAI,EAAGA,EAAIspC,EAAOtpC,GAAK,EAC1B2Z,EAAU+lB,iBAAiB1C,aAAayM,EAAazpC,GACrD0pC,EAAcnoC,KAAKojC,mBAAmBhrB,EAASwjB,IAGjD,IAAKsM,EAAYr7B,EACf,IAAKpO,EAAIspC,EAAQ,EAAGtpC,GAAK,EAAGA,GAAK,EAC/B2Z,EAAU+lB,iBAAiB0J,qBAAqBK,EAAazpC,GAC7D0pC,EAAcnoC,KAAKojC,mBAAmBhrB,EAASwjB,IAInDuM,EAAgBhF,mBAAmBgF,GAEnC,IAAI9lB,EAAY,KACZ+lB,EAAU,KAEd,IAAK3pC,EAAI,EAAGA,EAAI0pC,EAAcpwC,OAAQ0G,GAAK,EAAG,CAC5C,IAAI4pC,EAAeF,EAAc1pC,GAIjC,IAHI2pC,IAAS/lB,EAAY8f,UAAU9B,EAAc+H,EAASC,EAAa,GAAI/F,EAAUC,IACrF6F,EAAUC,EAAaA,EAAatwC,OAAS,GAExC0R,EAAI,EAAGA,EAAI4+B,EAAatwC,OAAQ0R,GAAK,EACxC2O,EAAUiwB,EAAa5+B,GAEnB4Y,GAAagc,WAAWjmB,EAAQkG,OAAO,GAAI+D,GAC7Cge,EAAapT,QAAQ7U,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAI,IAAK+hB,EAAatoC,SAAW,GAE9FsoC,EAAanT,YAAY9U,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAI+hB,EAAatoC,UAG5KsoC,EAAanT,YAAY9U,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAIlG,EAAQkG,OAAO,GAAG,GAAI+hB,EAAatoC,UAC1KsqB,EAAYjK,EAAQkG,OAAO,EAE/B,CAGA,OADI6pB,EAAcpwC,QAAQoqC,UAAU9B,EAAc+H,EAASD,EAAc,GAAG,GAAI7F,EAAUC,GACnFlC,CACT,EAEAoD,mBAAmB5kC,UAAU87B,cAAgB,SAAUrP,GACrD,IAAIsP,EACAn8B,EAEAgL,EACAC,EAME6Z,EACA6L,EATFzwB,EAAMe,KAAK6K,OAAOxS,OAGlB6jC,EAASl8B,KAAKk8B,OAAO71B,EACrBw8B,EAAa7iC,KAAK6iC,WAAWx8B,EAC7Bu8B,EAAW5iC,KAAK4iC,SAEpB,GAAe,IAAX1G,EAIF,IAAKn9B,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAI3B,GAFA2wB,GADA7L,EAAY7jB,KAAK6K,OAAO9L,IACS2wB,qBAE1B7L,EAAU2K,MAAMjD,MAASvrB,KAAKurB,MAASK,EAM5C,IALA8D,EAAqBd,gBACrB/K,EAAU2K,MAAMjD,MAAO,EACvB2P,EAAarX,EAAU2K,MAAMiB,MAAM5kB,OACnCb,EAAO6Z,EAAU2K,MAAMiB,MAAM7O,QAExB7W,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB2lB,EAAqBf,SAAS3uB,KAAKm8B,YAAYjB,EAAWnxB,GAAImyB,EAAQ0G,EAAUC,IAIpFhf,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,oBACpC,CAGG1vB,KAAK8sB,kBAAkBz0B,SAC1B2H,KAAKurB,MAAO,EAEhB,EAkDA,IAAIqd,YAAc,WAChB,IACIC,EAAY,CACdC,EAAG,EACHC,KAAM,EACNl+B,OAAQ,GACR9B,KAAM,CACJ8B,OAAQ,KAGRm+B,EAAqB,GAEzBA,EAAqBA,EAAmBlsB,OAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAChP,IAAImsB,EAAwB,OAMxBC,EAAkC,OAClCC,EAAkC,OAClCC,EAAqB,CAAC,WAAY,WAAY,WAAY,WAAY,YAiB1E,SAASC,EAAUC,EAAMC,GACvB,IAAIC,EAAa7qC,UAAU,QAE3B6qC,EAAWtsB,aAAa,eAAe,GACvCssB,EAAW50C,MAAM60C,WAAaF,EAC9B,IAAIG,EAAO/qC,UAAU,QAErB+qC,EAAKrsB,UAAY,iBAEjBmsB,EAAW50C,MAAMgI,SAAW,WAC5B4sC,EAAW50C,MAAMiG,KAAO,WACxB2uC,EAAW50C,MAAMwF,IAAM,WAEvBovC,EAAW50C,MAAM+0C,SAAW,QAE5BH,EAAW50C,MAAMg1C,YAAc,SAC/BJ,EAAW50C,MAAMi1C,UAAY,SAC7BL,EAAW50C,MAAMk1C,WAAa,SAC9BN,EAAW50C,MAAMm1C,cAAgB,IACjCP,EAAWz2B,YAAY22B,GACvBrtC,SAAS8gB,KAAKpK,YAAYy2B,GAE1B,IAAI1uC,EAAQ4uC,EAAKM,YAEjB,OADAN,EAAK90C,MAAM60C,WAtCb,SAAyBH,GACvB,IACIvqC,EADAkrC,EAAcX,EAAKz9B,MAAM,KAEzB5M,EAAMgrC,EAAY5xC,OAClB6xC,EAAkB,GAEtB,IAAKnrC,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACD,eAAnBkrC,EAAYlrC,IAA0C,cAAnBkrC,EAAYlrC,IACjDmrC,EAAgB5pC,KAAK2pC,EAAYlrC,IAIrC,OAAOmrC,EAAgBn7B,KAAK,IAC9B,CAyB0Bo7B,CAAgBb,GAAQ,KAAOC,EAChD,CACLG,KAAMA,EACNZ,EAAGhuC,EACHsvC,OAAQZ,EAEZ,CA6CA,SAASa,EAAapG,EAAUqG,GAC9B,IACIC,EADAC,EAASnuC,SAAS8gB,MAAQmtB,EAAM,MAAQ,SAExCG,EAAYzG,kBAAkBC,GAElC,GAAe,QAAXuG,EAAkB,CACpB,IAAIE,EAAUviC,SAAS,QACvBuiC,EAAQ91C,MAAM+0C,SAAW,QAEzBe,EAAQxtB,aAAa,cAAe+mB,EAAS0G,SAC7CD,EAAQxtB,aAAa,aAAcutB,EAAU71C,OAC7C81C,EAAQxtB,aAAa,cAAeutB,EAAUnG,QAC9CoG,EAAQE,YAAc,IAElB3G,EAAS4G,QACXH,EAAQ91C,MAAM60C,WAAa,UAC3BiB,EAAQxtB,aAAa,QAAS+mB,EAAS4G,SAEvCH,EAAQ91C,MAAM60C,WAAaxF,EAAS0G,QAGtCL,EAAIv3B,YAAY23B,GAChBH,EAASG,CACX,KAAO,CACL,IAAII,EAAgB,IAAIC,gBAAgB,IAAK,KAAK36B,WAAW,MAC7D06B,EAAcxB,KAAOmB,EAAU71C,MAAQ,IAAM61C,EAAUnG,OAAS,UAAYL,EAAS0G,QACrFJ,EAASO,CACX,CAWA,MAAO,CACLE,YAVF,SAAiBC,GACf,MAAe,QAAXT,GACFD,EAAOK,YAAcK,EACdV,EAAOW,yBAGTX,EAAOS,YAAYC,GAAMnwC,KAClC,EAKF,CAwMA,SAASqwC,EAAaC,GACpB,IAAIC,EAAY,EACZ3uB,EAAQ0uB,EAAOE,WAAW,GAE9B,GAAI5uB,GAAS,OAAUA,GAAS,MAAQ,CACtC,IAAI6uB,EAASH,EAAOE,WAAW,GAE3BC,GAAU,OAAUA,GAAU,QAChCF,EAA+B,MAAlB3uB,EAAQ,OAAkB6uB,EAAS,MAAS,MAE7D,CAEA,OAAOF,CACT,CAsBA,SAASG,EAAeJ,GACtB,IAAIC,EAAYF,EAAaC,GAE7B,OAAIC,GAAanC,GAAmCmC,GAAalC,CAKnE,CA2CA,IAAIsC,EAAO,WACTzrC,KAAKoY,MAAQ,GACbpY,KAAKsM,MAAQ,KACbtM,KAAK0rC,cAAgB,EACrB1rC,KAAK4V,UAAW,EAChB5V,KAAK2rC,SAAU,EACf3rC,KAAK4b,SAAWgwB,KAAKC,MACrB7rC,KAAK8rC,kBAAoB9rC,KAAK+rC,YAAYr6B,KAAK1R,MAC/CA,KAAKgsC,uBAAyBhsC,KAAKisC,iBAAiBv6B,KAAK1R,KAC3D,EAEAyrC,EAAKS,WAjFL,SAAoBC,EAAeC,GACjC,IAAIC,EAAMF,EAAc3kC,SAAS,IAAM4kC,EAAe5kC,SAAS,IAC/D,OAA4C,IAArC4hC,EAAmBl7B,QAAQm+B,EACpC,EA+EAZ,EAAKa,kBA7EL,SAA2BC,GACzB,OArWiC,OAqW1BA,CACT,EA4EAd,EAAKe,YApDL,SAAqBpB,GACnB,OAAOI,EAAeJ,EAAO1zB,OAAO,EAAG,KAAO8zB,EAAeJ,EAAO1zB,OAAO,EAAG,GAChF,EAmDA+zB,EAAKD,eAAiBA,EACtBC,EAAKgB,oBAlDL,SAA6BC,GAC3B,OAA+C,IAAxC1D,EAAmB96B,QAAQw+B,EACpC,EAiDAjB,EAAKkB,eA5CL,SAAwB1B,EAAMzvB,GAC5B,IAAI6vB,EAAYF,EAAaF,EAAKvzB,OAAO8D,EAAO,IAEhD,GAAI6vB,IAAcpC,EAChB,OAAO,EAGT,IAAIZ,EAAQ,EAGZ,IAFA7sB,GAAS,EAEF6sB,EAAQ,GAAG,CAGhB,IAFAgD,EAAYF,EAAaF,EAAKvzB,OAAO8D,EAAO,KAvZzB,QAyZiB6vB,EAxZjB,OAyZjB,OAAO,EAGThD,GAAS,EACT7sB,GAAS,CACX,CAEA,OAla0B,SAkanB2vB,EAAaF,EAAKvzB,OAAO8D,EAAO,GACzC,EAuBAiwB,EAAKmB,oBA3EL,SAA6BL,GAC3B,OA7WqC,QA6W9BA,CACT,EA0EAd,EAAKxC,sBAAwBA,EAC7B,IAAI4D,EAAgB,CAClBv0B,SArMF,SAAkBhM,GAChB,GAAKA,EAAL,CAQA,IAAIvN,EAJCiB,KAAKsM,QACRtM,KAAKsM,MAAQ,IAIf,IACIvC,EAEA+iC,EAHA7tC,EAAMqN,EAAMjU,OAEZ2R,EAAOhK,KAAKsM,MAAMjU,OAGtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAI3B,IAHAgL,EAAI,EACJ+iC,GAAQ,EAED/iC,EAAIC,GACLhK,KAAKsM,MAAMvC,GAAGnV,QAAU0X,EAAMvN,GAAGnK,OAASoL,KAAKsM,MAAMvC,GAAG4gC,UAAYr+B,EAAMvN,GAAG4rC,SAAW3qC,KAAKsM,MAAMvC,GAAGgjC,KAAOzgC,EAAMvN,GAAGguC,KACxHD,GAAQ,GAGV/iC,GAAK,EAGF+iC,IACH9sC,KAAKsM,MAAMhM,KAAKgM,EAAMvN,IACtBiL,GAAQ,EAEZ,CA5BA,CA6BF,EAsKEuO,SAjTF,SAAkB0rB,EAAU7sB,GAC1B,GAAK6sB,EAAL,CAKA,GAAIjkC,KAAKsM,MAGP,OAFAtM,KAAK4V,UAAW,OAChB5V,KAAKoY,MAAQ6rB,EAAS+I,MAIxB,IAAK3wC,SAAS8gB,KAOZ,OANAnd,KAAK4V,UAAW,EAChBquB,EAAS+I,KAAKvzC,SAAQ,SAAUsP,GAC9BA,EAAKwhC,OAASF,EAAathC,GAC3BA,EAAKkkC,MAAQ,CAAC,CAChB,SACAjtC,KAAKoY,MAAQ6rB,EAAS+I,MAIxB,IACIjuC,EADAmuC,EAAUjJ,EAAS+I,KAEnB/tC,EAAMiuC,EAAQ70C,OACd80C,EAAgBluC,EAEpB,IAAKF,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAC3B,IACIquC,EACArjC,EAFAsjC,GAAiB,EAOrB,GAJAH,EAAQnuC,GAAGuuC,QAAS,EACpBJ,EAAQnuC,GAAGwuC,SAAWlE,EAAU6D,EAAQnuC,GAAG4rC,QAAS,aACpDuC,EAAQnuC,GAAGyuC,SAAWnE,EAAU6D,EAAQnuC,GAAG4rC,QAAS,cAE/CuC,EAAQnuC,GAAG0uC,OAGT,GAA2B,MAAvBP,EAAQnuC,GAAG2uC,SAAyC,IAAtBR,EAAQnuC,GAAG4Q,QAOlD,IANAy9B,EAAiB/wC,SAASsxC,iBAAiB,kCAAoCT,EAAQnuC,GAAG4rC,QAAU,qCAAuCuC,EAAQnuC,GAAG4rC,QAAU,OAE7ItyC,OAAS,IAC1Bg1C,GAAiB,GAGfA,EAAgB,CAClB,IAAIjnC,EAAIzH,UAAU,SAClByH,EAAE8W,aAAa,YAAagwB,EAAQnuC,GAAG2uC,SACvCtnC,EAAE8W,aAAa,WAAYgwB,EAAQnuC,GAAG4Q,QACtCvJ,EAAE8W,aAAa,WAAYgwB,EAAQnuC,GAAG4rC,SACtCvkC,EAAEtK,KAAO,WACTsK,EAAEiX,UAAY,4BAA8B6vB,EAAQnuC,GAAG4rC,QAAU,mCAAqCuC,EAAQnuC,GAAG0uC,MAAQ,OACzHr2B,EAAKrE,YAAY3M,EACnB,OACK,GAA2B,MAAvB8mC,EAAQnuC,GAAG2uC,SAAyC,IAAtBR,EAAQnuC,GAAG4Q,OAAc,CAGhE,IAFAy9B,EAAiB/wC,SAASsxC,iBAAiB,2CAEtC5jC,EAAI,EAAGA,EAAIqjC,EAAe/0C,OAAQ0R,GAAK,GACgB,IAAtDqjC,EAAerjC,GAAGmuB,KAAKhqB,QAAQg/B,EAAQnuC,GAAG0uC,SAE5CJ,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAIzZ,EAAIj1B,UAAU,QAClBi1B,EAAE1W,aAAa,YAAagwB,EAAQnuC,GAAG2uC,SACvC9Z,EAAE1W,aAAa,WAAYgwB,EAAQnuC,GAAG4Q,QACtCikB,EAAE93B,KAAO,WACT83B,EAAEga,IAAM,aACRha,EAAEsE,KAAOgV,EAAQnuC,GAAG0uC,MACpBpxC,SAAS8gB,KAAKpK,YAAY6gB,EAC5B,CACF,MAAO,GAA2B,MAAvBsZ,EAAQnuC,GAAG2uC,SAAyC,IAAtBR,EAAQnuC,GAAG4Q,OAAc,CAGhE,IAFAy9B,EAAiB/wC,SAASsxC,iBAAiB,+CAEtC5jC,EAAI,EAAGA,EAAIqjC,EAAe/0C,OAAQ0R,GAAK,EACtCmjC,EAAQnuC,GAAG0uC,QAAUL,EAAerjC,GAAGlJ,MAEzCwsC,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAIQ,EAAKlvC,UAAU,QACnBkvC,EAAG3wB,aAAa,YAAagwB,EAAQnuC,GAAG2uC,SACxCG,EAAG3wB,aAAa,WAAYgwB,EAAQnuC,GAAG4Q,QACvCk+B,EAAG3wB,aAAa,MAAO,cACvB2wB,EAAG3wB,aAAa,OAAQgwB,EAAQnuC,GAAG0uC,OACnCr2B,EAAKrE,YAAY86B,EACnB,CACF,OAvDEX,EAAQnuC,GAAGuuC,QAAS,EACpBH,GAAiB,EAwDnBD,EAAQnuC,GAAGwrC,OAASF,EAAa6C,EAAQnuC,GAAIqY,GAC7C81B,EAAQnuC,GAAGkuC,MAAQ,CAAC,EACpBjtC,KAAKoY,MAAM9X,KAAK4sC,EAAQnuC,GAC1B,CAEsB,IAAlBouC,EACFntC,KAAK4V,UAAW,EAIhB2D,WAAWvZ,KAAKisC,iBAAiBv6B,KAAK1R,MAAO,IAnG/C,MAFEA,KAAK4V,UAAW,CAuGpB,EAyMEk4B,YArKF,SAAqBC,EAAOn5C,EAAO00C,GAIjC,IAHA,IAAIvqC,EAAI,EACJE,EAAMe,KAAKsM,MAAMjU,OAEd0G,EAAIE,GAAK,CACd,GAAIe,KAAKsM,MAAMvN,GAAGguC,KAAOgB,GAAS/tC,KAAKsM,MAAMvN,GAAGnK,QAAUA,GAASoL,KAAKsM,MAAMvN,GAAG4rC,UAAYrB,EAC3F,OAAOtpC,KAAKsM,MAAMvN,GAGpBA,GAAK,CACP,CAQA,OANsB,kBAAVgvC,GAA8C,KAAxBA,EAAMzC,WAAW,KAAcyC,IAAUC,SAAWA,QAAQC,OAC1FjuC,KAAK2rC,UACP3rC,KAAK2rC,SAAU,EACfqC,QAAQC,KAAK,oDAAqDF,EAAOn5C,EAAO00C,IAG3ET,CACT,EAmJEqF,cA5HF,SAAuBr4C,GAIrB,IAHA,IAAIkJ,EAAI,EACJE,EAAMe,KAAKoY,MAAM/f,OAEd0G,EAAIE,GAAK,CACd,GAAIe,KAAKoY,MAAMrZ,GAAGovC,QAAUt4C,EAC1B,OAAOmK,KAAKoY,MAAMrZ,GAGpBA,GAAK,CACP,CAEA,OAAOiB,KAAKoY,MAAM,EACpB,EAgHE4yB,YAlJF,SAAqBoD,EAAQC,EAAUtF,GACrC,IAAI9E,EAAWjkC,KAAKkuC,cAAcG,GAG9B7yB,EAAQ4yB,EAEZ,IAAKnK,EAASgJ,MAAMzxB,GAAQ,CAC1B,IAAIkvB,EAAUzG,EAASsG,OAEvB,GAAe,MAAX6D,EAAgB,CAClB,IAAIE,EAAa5D,EAAQM,YAAY,IAAMoD,EAAS,KAChDG,EAAa7D,EAAQM,YAAY,MACrC/G,EAASgJ,MAAMzxB,IAAU8yB,EAAaC,GAAc,GACtD,MACEtK,EAASgJ,MAAMzxB,GAASkvB,EAAQM,YAAYoD,GAAU,GAE1D,CAEA,OAAOnK,EAASgJ,MAAMzxB,GAASutB,CACjC,EAgIEkD,iBA3YF,WACE,IAAIltC,EAEA2qC,EACAZ,EAFA7pC,EAAMe,KAAKoY,MAAM/f,OAGjBm2C,EAAcvvC,EAElB,IAAKF,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBiB,KAAKoY,MAAMrZ,GAAGuuC,OAChBkB,GAAe,EACoB,MAA1BxuC,KAAKoY,MAAMrZ,GAAG2uC,SAA4C,IAAzB1tC,KAAKoY,MAAMrZ,GAAG4Q,OACxD3P,KAAKoY,MAAMrZ,GAAGuuC,QAAS,GAEvB5D,EAAO1pC,KAAKoY,MAAMrZ,GAAGwuC,SAAS7D,KAC9BZ,EAAI9oC,KAAKoY,MAAMrZ,GAAGwuC,SAASzE,EAEvBY,EAAKM,cAAgBlB,GACvB0F,GAAe,EACfxuC,KAAKoY,MAAMrZ,GAAGuuC,QAAS,IAEvB5D,EAAO1pC,KAAKoY,MAAMrZ,GAAGyuC,SAAS9D,KAC9BZ,EAAI9oC,KAAKoY,MAAMrZ,GAAGyuC,SAAS1E,EAEvBY,EAAKM,cAAgBlB,IACvB0F,GAAe,EACfxuC,KAAKoY,MAAMrZ,GAAGuuC,QAAS,IAIvBttC,KAAKoY,MAAMrZ,GAAGuuC,SAChBttC,KAAKoY,MAAMrZ,GAAGyuC,SAASpD,OAAOZ,WAAWiF,YAAYzuC,KAAKoY,MAAMrZ,GAAGyuC,SAASpD,QAC5EpqC,KAAKoY,MAAMrZ,GAAGwuC,SAASnD,OAAOZ,WAAWiF,YAAYzuC,KAAKoY,MAAMrZ,GAAGwuC,SAASnD,UAK9D,IAAhBoE,GAAqB5C,KAAKC,MAAQ7rC,KAAK4b,SAxGxB,IAyGjBrC,WAAWvZ,KAAKgsC,uBAAwB,IAExCzyB,WAAWvZ,KAAK8rC,kBAAmB,GAEvC,EAmWEC,YA9BF,WACE/rC,KAAK4V,UAAW,CAClB,GA+BA,OADA61B,EAAKtsC,UAAY0tC,EACVpB,CACT,CArdkB,GAudlB,SAASiD,YAAY75C,GACnBmL,KAAKnL,cAAgBA,CACvB,CAUA,SAAS85C,YAAY95C,GACnB,OAAO,IAAI65C,YAAY75C,EACzB,CAEA,SAAS+5C,oBAAqB,CAZ9BF,YAAYvvC,UAAUutB,QAAU,SAAU3jB,GACxC,OAAI/I,KAAKnL,cAAcg6C,OAAS7uC,KAAKnL,cAAcg6C,MAAM9lC,EAAK4jB,KACrDvtB,OAAO0vC,OAAO/lC,EAAM/I,KAAKnL,cAAcg6C,MAAM9lC,EAAK4jB,KAAKjmB,GAGzDqC,CACT,EAQA6lC,kBAAkBzvC,UAAY,CAC5B4vC,eAAgB,WAEd/uC,KAAKgvC,WAAY,EAEjBhvC,KAAKivC,QAAS,EAEdjvC,KAAKkvC,eAAgB,EAErBlvC,KAAKmvC,qBAAuB,EAC9B,EACAC,uBAAwB,SAAgCC,IACA,IAAlDrvC,KAAKmvC,qBAAqBjhC,QAAQmhC,IACpCrvC,KAAKmvC,qBAAqB7uC,KAAK+uC,EAEnC,EACAC,0BAA2B,SAAmCD,IACN,IAAlDrvC,KAAKmvC,qBAAqBjhC,QAAQmhC,IACpCrvC,KAAKmvC,qBAAqB37B,OAAOxT,KAAKmvC,qBAAqBjhC,QAAQmhC,GAAY,EAEnF,EACAE,uBAAwB,SAAgCC,GACtDxvC,KAAKyvC,iBAAiBD,EACxB,EACAE,kBAAmB,WACb1vC,KAAK2vC,eAAeC,MAAMpkC,EAAEnF,GAAK,GAC9BrG,KAAKkvC,eAAiBlvC,KAAKmX,WAAW04B,aAAaC,oBACtD9vC,KAAKkvC,eAAgB,EACrBlvC,KAAKqb,QAEErb,KAAKkvC,gBACdlvC,KAAKkvC,eAAgB,EACrBlvC,KAAKsb,OAET,EAUAm0B,iBAAkB,SAA0BD,GACtCxvC,KAAK+I,KAAKyD,GAAKxM,KAAK+I,KAAK2D,IAAM8iC,GAAOxvC,KAAK+I,KAAK0D,GAAKzM,KAAK+I,KAAK2D,GAAK8iC,GAC/C,IAAnBxvC,KAAKgvC,YACPhvC,KAAKmX,WAAWoU,MAAO,EACvBvrB,KAAKurB,MAAO,EACZvrB,KAAKgvC,WAAY,EACjBhvC,KAAKsb,SAEqB,IAAnBtb,KAAKgvC,YACdhvC,KAAKmX,WAAWoU,MAAO,EACvBvrB,KAAKgvC,WAAY,EACjBhvC,KAAKqb,OAET,EACA00B,iBAAkB,WAChB,IAAIhxC,EACAE,EAAMe,KAAKmvC,qBAAqB92C,OAEpC,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKmvC,qBAAqBpwC,GAAGgb,YAAY/Z,KAAK4rB,cAKlD,EACAokB,iBAAkB,WAChB,MAAO,CACL51C,IAAK,EACLS,KAAM,EACNC,MAAO,IACPT,OAAQ,IAEZ,EACA41C,aAAc,WACZ,OAAqB,IAAjBjwC,KAAK+I,KAAK0B,GACL,CACLq+B,EAAG9oC,KAAK+I,KAAKmnC,SAASp1C,MACtBqL,EAAGnG,KAAK+I,KAAKmnC,SAAS71C,QAInB,CACLyuC,EAAG9oC,KAAK+I,KAAKjO,MACbqL,EAAGnG,KAAK+I,KAAK1O,OAEjB,GAGF,IAAI81C,aAAe,WACjB,IAAIC,EAAiB,CACnB,EAAG,cACH,EAAG,WACH,EAAG,SACH,EAAG,UACH,EAAG,SACH,EAAG,UACH,EAAG,cACH,EAAG,aACH,EAAG,aACH,EAAG,aACH,GAAI,aACJ,GAAI,YACJ,GAAI,MACJ,GAAI,aACJ,GAAI,QACJ,GAAI,cAEN,OAAO,SAAUj1C,GACf,OAAOi1C,EAAej1C,IAAS,EACjC,CACF,CAtBmB,GAwBnB,SAASk1C,aAAatnC,EAAMqT,EAAM5jB,GAChCwH,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAK1C,EAAG,EAAG,EAAG7N,EACvD,CAEA,SAAS83C,YAAYvnC,EAAMqT,EAAM5jB,GAC/BwH,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAK1C,EAAG,EAAG,EAAG7N,EACvD,CAEA,SAAS+3C,YAAYxnC,EAAMqT,EAAM5jB,GAC/BwH,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAK1C,EAAG,EAAG,EAAG7N,EACvD,CAEA,SAASg4C,YAAYznC,EAAMqT,EAAM5jB,GAC/BwH,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAK1C,EAAG,EAAG,EAAG7N,EACvD,CAEA,SAASi4C,iBAAiB1nC,EAAMqT,EAAM5jB,GACpCwH,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAK1C,EAAG,EAAG,EAAG7N,EACvD,CAEA,SAASk4C,gBAAgB3nC,EAAMqT,EAAM5jB,GACnCwH,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAK1C,EAAG,EAAG,EAAG7N,EACvD,CAEA,SAASm4C,eAAe5nC,EAAMqT,EAAM5jB,GAClCwH,KAAK0G,EAAI+lB,gBAAgBC,QAAQtQ,EAAMrT,EAAK1C,EAAG,EAAG,EAAG7N,EACvD,CAEA,SAASo4C,gBACP5wC,KAAK0G,EAAI,CAAC,CACZ,CAEA,SAASmqC,eAAe9nC,EAAMxE,GAC5B,IAEIxF,EAFA+xC,EAAU/nC,EAAKgoC,IAAM,GACzB/wC,KAAKgxC,eAAiB,GAEtB,IACIC,EADAhyC,EAAM6xC,EAAQz4C,OAGlB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBkyC,EAAa,IAAIC,YAAYJ,EAAQ/xC,GAAIwF,GACzCvE,KAAKgxC,eAAe1wC,KAAK2wC,EAE7B,CAEA,SAASC,YAAYnoC,EAAMxE,GACzBvE,KAAK8a,KAAK/R,EAAMxE,EAClB,CA+DA,SAAS4sC,cAAe,CAkFxB,SAASC,eAAgB,CAiDzB,SAASC,eAAetoC,EAAMoO,EAAYnM,GACxChL,KAAKomB,YACLpmB,KAAK+uC,iBACL/uC,KAAK+Q,UAAYoG,EAAWiE,aAAarS,EAAK4B,OAC9C3K,KAAK6R,YAAcsF,EAAWm6B,YAAY9+B,SAASxS,KAAK+Q,WACxD/Q,KAAKuxC,aAAaxoC,EAAMoO,EAAYnM,EACtC,CA6BA,SAASwmC,aAAazoC,EAAMoO,EAAYnM,GACtChL,KAAKomB,YACLpmB,KAAK+uC,iBACL/uC,KAAK+Q,UAAYoG,EAAWiE,aAAarS,EAAK4B,OAC9C3K,KAAKuxC,aAAaxoC,EAAMoO,EAAYnM,GACpChL,KAAKyxC,YAAa,EAClBzxC,KAAK0xC,UAAW,EAChB,IAAI/wC,EAAYX,KAAKmX,WAAWrG,cAAc9Q,KAAK+Q,WACnD/Q,KAAKK,MAAQL,KAAKmX,WAAWT,gBAAgBhW,YAAYC,GACzDX,KAAK2xC,aAAe,EACpB3xC,KAAKmX,WAAWT,gBAAgBtW,SAASJ,MACzCA,KAAK4xC,kBAAoB,EACzB5xC,KAAKE,QAAU,EACfF,KAAK6xC,gBAAkB,KACvB7xC,KAAKsU,GAAKvL,EAAKuL,GAAKmY,gBAAgBC,QAAQ1sB,KAAM+I,EAAKuL,GAAI,EAAG6C,EAAWtB,UAAW7V,MAAQ,CAC1F8xC,cAAc,GAEhB9xC,KAAK+xC,GAAKtlB,gBAAgBC,QAAQ1sB,KAAM+I,EAAKipC,IAAMjpC,EAAKipC,GAAGD,GAAKhpC,EAAKipC,GAAGD,GAAK,CAC3E9nC,EAAG,CAAC,MACH,EAAG,IAAMjK,KACd,CA0EA,SAASiyC,eAAgB,CAjUzBrzC,gBAAgB,CAACiuB,0BAA2BqkB,aAC5CA,YAAY/xC,UAAUitB,SAAW8kB,YAAY/xC,UAAU6tB,yBAEvDkkB,YAAY/xC,UAAU2b,KAAO,SAAU/R,EAAMxE,GAI3C,IAAIxF,EAHJiB,KAAK+I,KAAOA,EACZ/I,KAAKgxC,eAAiB,GACtBhxC,KAAKitB,6BAA6B1oB,GAElC,IACI2tC,EADAjzC,EAAMe,KAAK+I,KAAKgoC,GAAG14C,OAEnBy4C,EAAU9wC,KAAK+I,KAAKgoC,GAExB,IAAKhyC,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAG3B,OAFAmzC,EAAM,KAEEpB,EAAQ/xC,GAAG0L,IACjB,KAAK,EACHynC,EAAM,IAAI7B,aAAaS,EAAQ/xC,GAAIwF,EAASvE,MAC5C,MAEF,KAAK,EACHkyC,EAAM,IAAI5B,YAAYQ,EAAQ/xC,GAAIwF,EAASvE,MAC3C,MAEF,KAAK,EACHkyC,EAAM,IAAI3B,YAAYO,EAAQ/xC,GAAIwF,EAASvE,MAC3C,MAEF,KAAK,EACHkyC,EAAM,IAAI1B,YAAYM,EAAQ/xC,GAAIwF,EAASvE,MAC3C,MAEF,KAAK,EACL,KAAK,EACHkyC,EAAM,IAAIvB,eAAeG,EAAQ/xC,GAAIwF,EAASvE,MAC9C,MAEF,KAAK,GACHkyC,EAAM,IAAIzB,iBAAiBK,EAAQ/xC,GAAIwF,EAASvE,MAChD,MAEF,KAAK,GACHkyC,EAAM,IAAIxB,gBAAgBI,EAAQ/xC,GAAIwF,EAASvE,MAC/C,MAEF,KAAK,EACHkyC,EAAM,IAAIrB,eAAeC,EAAQ/xC,GAAIwF,EAASvE,MAC9C,MAGF,QACEkyC,EAAM,IAAItB,cAAcE,EAAQ/xC,GAAIwF,EAASvE,MAI7CkyC,GACFlyC,KAAKgxC,eAAe1wC,KAAK4xC,EAE7B,CACF,EAIAf,YAAYhyC,UAAY,CACtBgzC,WAAY,WACV,IAAKnyC,KAAK+I,KAAKqB,QACb,OAAO,EAMT,IAHA,IAAIrL,EAAI,EACJE,EAAMe,KAAK+I,KAAKuB,gBAAgBjS,OAE7B0G,EAAIE,GAAK,CACd,GAA0C,MAAtCe,KAAK+I,KAAKuB,gBAAgBvL,GAAG5D,OAAoD,IAApC6E,KAAK+I,KAAKuB,gBAAgBvL,GAAGwO,GAC5E,OAAO,EAGTxO,GAAK,CACP,CAEA,OAAO,CACT,EACAyZ,gBAAiB,WACf,IAAIhW,EAAwBsF,0BAE5B,GAAKtF,EAAL,CAIA,IAAI4vC,EAA2B5vC,EAAsB,SACjD6vC,EAA6B7vC,EAAsB,WACnD8vC,EAA2B9vC,EAAsB,SACjD+vC,EAA0B/vC,EAAsB,QAChDgwC,EAA0BhwC,EAAsB,QACpDxC,KAAKyyC,eAAiBL,EAAyBpyC,MAE3CA,KAAK+I,KAAKqB,SAAWpK,KAAK0yC,aAC5B1yC,KAAKyyC,eAAeE,sBAAsB3yC,KAAK0yC,aAGjD,IAAIE,EAAmBP,EAA2BQ,uBAAuB7yC,KAAMA,KAAKyyC,gBACpFzyC,KAAKyyC,eAAeK,yBAAyBF,GAExB,IAAjB5yC,KAAK+I,KAAK0B,IAAYzK,KAAK+I,KAAKmM,GAClClV,KAAKoV,cAAgBo9B,EAAwBxyC,MACnB,IAAjBA,KAAK+I,KAAK0B,IACnBzK,KAAKyyC,eAAeM,eAAiBT,EAAyBtyC,KAAKgzC,WAAYhzC,KAAKizC,UAAWjzC,KAAKyyC,gBACpGzyC,KAAKyyC,eAAeS,QAAUlzC,KAAKyyC,eAAeM,gBACxB,IAAjB/yC,KAAK+I,KAAK0B,KACnBzK,KAAKyyC,eAAeU,cAAgBZ,EAAwBvyC,MAC5DA,KAAKyyC,eAAexH,KAAOjrC,KAAKyyC,eAAeU,cAvBjD,CAyBF,EACAC,aAAc,WACZ,IAAIC,EAAiBlD,aAAanwC,KAAK+I,KAAKuqC,KACjCtzC,KAAKuzC,aAAevzC,KAAKwzC,cAC/B5+C,MAAM,kBAAoBy+C,CACjC,EACA9B,aAAc,SAAsBxoC,EAAMoO,EAAYnM,GACpDhL,KAAKmX,WAAaA,EAClBnX,KAAKgL,KAAOA,EACZhL,KAAK+I,KAAOA,EACZ/I,KAAKyzC,QAAUztC,kBAEVhG,KAAK+I,KAAK4D,KACb3M,KAAK+I,KAAK4D,GAAK,GAIjB3M,KAAK0zC,eAAiB,IAAI7C,eAAe7wC,KAAK+I,KAAM/I,KAAMA,KAAK8sB,kBACjE,EACA6mB,QAAS,WACP,OAAO3zC,KAAKlE,IACd,EACAk0C,iBAAkB,WAA6B,GAWjDoB,aAAajyC,UAAY,CAMvBinB,UAAW,WAETpmB,KAAK4rB,eAAgB,EAErB5rB,KAAK8sB,kBAAoB,GAEzB9sB,KAAKurB,MAAO,CACd,EAYAqoB,kBAAmB,SAA2BpE,EAAKqE,GACjD,IAAI90C,EACAE,EAAMe,KAAK8sB,kBAAkBz0B,OAEjC,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,GACpB80C,GAAa7zC,KAAK8zC,WAAoD,cAAvC9zC,KAAK8sB,kBAAkB/tB,GAAG4nB,YAC3D3mB,KAAK8sB,kBAAkB/tB,GAAGqtB,WAEtBpsB,KAAK8sB,kBAAkB/tB,GAAGwsB,OAC5BvrB,KAAKmX,WAAWoU,MAAO,EACvBvrB,KAAKurB,MAAO,GAIpB,EACAU,mBAAoB,SAA4BxsB,IACA,IAA1CO,KAAK8sB,kBAAkB5e,QAAQzO,IACjCO,KAAK8sB,kBAAkBxsB,KAAKb,EAEhC,GAWF4xC,eAAelyC,UAAU8V,aAAe,WAAa,EAErDrW,gBAAgB,CAACgwC,kBAAmBuC,YAAaC,cAAeC,gBAEhEA,eAAelyC,UAAU40C,eAAiB,WACxC,OAAO,IACT,EAEA1C,eAAelyC,UAAU4a,YAAc,WAAa,EAEpDs3B,eAAelyC,UAAUnH,QAAU,WAAa,EAEhDq5C,eAAelyC,UAAUqZ,gBAAkB,WACzC,IAAIhW,EAAwBsF,0BAE5B,GAAKtF,EAAL,CAIA,IAAIwxC,EAAmBxxC,EAAsB,WAC7CxC,KAAKyyC,eAAiBuB,EAAiBh0C,KAHvC,CAIF,EAEAqxC,eAAelyC,UAAU80C,eAAiB,WACxC,OAAOj0C,KAAK6R,WACd,EAwBA2/B,aAAaryC,UAAU8V,aAAe,SAAUu6B,GAI9C,GAHAxvC,KAAKuvC,uBAAuBC,GAAK,GACjCxvC,KAAK4zC,kBAAkBpE,GAAK,GAEvBxvC,KAAKsU,GAAGw9B,aAIX9xC,KAAK2xC,aAAenC,EAAMxvC,KAAK+I,KAAK4D,OAJX,CACzB,IAAIunC,EAAel0C,KAAKsU,GAAGjO,EAC3BrG,KAAK2xC,aAAeuC,CACtB,CAIAl0C,KAAKE,QAAUF,KAAK+xC,GAAG1rC,EAAE,GACzB,IAAI8tC,EAAcn0C,KAAKE,QAAUF,KAAK4xC,kBAElC5xC,KAAK6xC,kBAAoBsC,IAC3Bn0C,KAAK6xC,gBAAkBsC,EACvBn0C,KAAKK,MAAMmB,OAAO2yC,GAEtB,EAEAv1C,gBAAgB,CAACgwC,kBAAmBuC,YAAaC,cAAeI,cAEhEA,aAAaryC,UAAU4a,YAAc,WAC/B/Z,KAAKgvC,WAAahvC,KAAK0xC,WACpB1xC,KAAKyxC,aAIEzxC,KAAKK,MAAMW,WAAa/E,KAAK2H,IAAI5D,KAAK2xC,aAAe3xC,KAAKmX,WAAWtB,UAAY7V,KAAKK,MAAMU,QAAU,KAChHf,KAAKK,MAAMU,KAAKf,KAAK2xC,aAAe3xC,KAAKmX,WAAWtB,YAJpD7V,KAAKK,MAAMzJ,OACXoJ,KAAKK,MAAMU,KAAKf,KAAK2xC,aAAe3xC,KAAKmX,WAAWtB,WACpD7V,KAAKyxC,YAAa,GAKxB,EAEAD,aAAaryC,UAAUmc,KAAO,WAAa,EAG3Ck2B,aAAaryC,UAAUkc,KAAO,WAC5Brb,KAAKK,MAAMrJ,QACXgJ,KAAKyxC,YAAa,CACpB,EAEAD,aAAaryC,UAAUnI,MAAQ,WAC7BgJ,KAAKK,MAAMrJ,QACXgJ,KAAKyxC,YAAa,EAClBzxC,KAAK0xC,UAAW,CAClB,EAEAF,aAAaryC,UAAUoB,OAAS,WAC9BP,KAAK0xC,UAAW,CAClB,EAEAF,aAAaryC,UAAUqB,QAAU,SAAUC,GACzCT,KAAKK,MAAMY,KAAKR,EAClB,EAEA+wC,aAAaryC,UAAUqC,OAAS,SAAU4yC,GACxCp0C,KAAK4xC,kBAAoBwC,EACzBp0C,KAAK6xC,gBAAkBuC,EAAcp0C,KAAKE,QAC1CF,KAAKK,MAAMmB,OAAOxB,KAAK6xC,gBACzB,EAEAL,aAAaryC,UAAU40C,eAAiB,WACtC,OAAO,IACT,EAEAvC,aAAaryC,UAAUnH,QAAU,WAAa,EAE9Cw5C,aAAaryC,UAAU6wC,iBAAmB,WAAa,EAEvDwB,aAAaryC,UAAUqZ,gBAAkB,WAAa,EAItDy5B,aAAa9yC,UAAUk1C,YAAc,SAAU7E,GAC7C,IAAIzwC,EAEAgK,EADA9J,EAAMe,KAAK4J,OAAOvR,OAItB,IAFA2H,KAAK2J,gBAAiB,EAEjB5K,EAAIE,EAAM,EAAGF,GAAK,EAAGA,GAAK,EACxBiB,KAAKwlC,SAASzmC,KACjBgK,EAAO/I,KAAK4J,OAAO7K,IAEVyN,GAAKzD,EAAK2D,IAAM8iC,EAAMxvC,KAAK4J,OAAO7K,GAAG2N,IAAM3D,EAAK0D,GAAK1D,EAAK2D,GAAK8iC,EAAMxvC,KAAK4J,OAAO7K,GAAG2N,IAC3F1M,KAAKs0C,UAAUv1C,GAInBiB,KAAK2J,iBAAiB3J,KAAKwlC,SAASzmC,IAAKiB,KAAK2J,eAGhD3J,KAAKu0C,sBACP,EAEAtC,aAAa9yC,UAAUq1C,WAAa,SAAUC,GAC5C,OAAQA,EAAMhqC,IACZ,KAAK,EACH,OAAOzK,KAAK00C,YAAYD,GAE1B,KAAK,EACH,OAAOz0C,KAAK20C,WAAWF,GAEzB,KAAK,EACH,OAAOz0C,KAAK40C,YAAYH,GAE1B,KAAK,EAkBL,QACE,OAAOz0C,KAAK60C,WAAWJ,GAhBzB,KAAK,EACH,OAAOz0C,KAAK80C,YAAYL,GAE1B,KAAK,EACH,OAAOz0C,KAAK+0C,WAAWN,GAEzB,KAAK,EACH,OAAOz0C,KAAKU,YAAY+zC,GAE1B,KAAK,GACH,OAAOz0C,KAAKg1C,aAAaP,GAE3B,KAAK,GACH,OAAOz0C,KAAKi1C,cAAcR,GAKhC,EAEAxC,aAAa9yC,UAAU61C,aAAe,WACpC,MAAM,IAAIhhC,MAAM,mDAClB,EAEAi+B,aAAa9yC,UAAUuB,YAAc,SAAUqI,GAC7C,OAAO,IAAIyoC,aAAazoC,EAAM/I,KAAKmX,WAAYnX,KACjD,EAEAiyC,aAAa9yC,UAAU81C,cAAgB,SAAUlsC,GAC/C,OAAO,IAAIsoC,eAAetoC,EAAM/I,KAAKmX,WAAYnX,KACnD,EAEAiyC,aAAa9yC,UAAU+1C,cAAgB,WACrC,IAAIn2C,EACAE,EAAMe,KAAK4J,OAAOvR,OAEtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKs0C,UAAUv1C,GAGjBiB,KAAKu0C,sBACP,EAEAtC,aAAa9yC,UAAU+Y,cAAgB,SAAUC,GAE/C,IAAIpZ,EADJiB,KAAK2J,gBAAiB,EAEtB,IACII,EADA9K,EAAMkZ,EAAU9f,OAEhB2R,EAAOhK,KAAK4J,OAAOvR,OAEvB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAGxB,IAFAgL,EAAI,EAEGA,EAAIC,GAAM,CACf,GAAIhK,KAAK4J,OAAOG,GAAGgB,KAAOoN,EAAUpZ,GAAGgM,GAAI,CACzC/K,KAAK4J,OAAOG,GAAKoO,EAAUpZ,GAC3B,KACF,CAEAgL,GAAK,CACP,CAEJ,EAEAkoC,aAAa9yC,UAAUkY,oBAAsB,SAAU89B,GACrDn1C,KAAKmX,WAAWX,iBAAmB2+B,CACrC,EAEAlD,aAAa9yC,UAAUsa,UAAY,WAC5BzZ,KAAKmX,WAAWi+B,iBACnBp1C,KAAKk1C,eAET,EAEAjD,aAAa9yC,UAAUk2C,sBAAwB,SAAU9wC,EAAS+wC,EAAYC,GAM5E,IALA,IAAI/P,EAAWxlC,KAAKwlC,SAChB57B,EAAS5J,KAAK4J,OACd7K,EAAI,EACJE,EAAM2K,EAAOvR,OAEV0G,EAAIE,GACL2K,EAAO7K,GAAG2oB,KAAO4tB,IAEd9P,EAASzmC,KAAsB,IAAhBymC,EAASzmC,IAI3Bw2C,EAAUj1C,KAAKklC,EAASzmC,IACxBymC,EAASzmC,GAAGy2C,mBAEav9C,IAArB2R,EAAO7K,GAAGqrC,OACZpqC,KAAKq1C,sBAAsB9wC,EAASqF,EAAO7K,GAAGqrC,OAAQmL,GAEtDhxC,EAAQkxC,aAAaF,KATvBv1C,KAAKs0C,UAAUv1C,GACfiB,KAAK01C,kBAAkBnxC,KAa3BxF,GAAK,CAET,EAEAkzC,aAAa9yC,UAAUu2C,kBAAoB,SAAUnxC,GACnDvE,KAAK21C,gBAAgBr1C,KAAKiE,EAC5B,EAEA0tC,aAAa9yC,UAAUga,wBAA0B,SAAU/M,GACzD,IAAIrN,EACAE,EAAMmN,EAAO/T,OAEjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,GAAIqN,EAAOrN,GAAGmW,GAAI,CAChB,IAAIlK,EAAOhL,KAAK20C,WAAWvoC,EAAOrN,IAClCiM,EAAKwN,kBACLxY,KAAKmX,WAAWX,iBAAiB3B,oBAAoB7J,EACvD,CAEJ,EAEAinC,aAAa9yC,UAAUy2C,eAAiB,SAAUluB,GAChD,IAAI3oB,EACAE,EAAMe,KAAKwlC,SAASntC,OAExB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,GAAIiB,KAAKwlC,SAASzmC,GAAGgK,KAAK2e,MAAQA,EAChC,OAAO1nB,KAAKwlC,SAASzmC,GAIzB,OAAO,IACT,EAEAkzC,aAAa9yC,UAAUsc,iBAAmB,SAAU3S,GAClD,IACIvE,EADAsxC,EAAY/sC,EAAK6P,QAGrB,GAAyB,kBAAdk9B,EACTtxC,EAAUvE,KAAKwlC,SAASqQ,OACnB,CACL,IAAI92C,EACAE,EAAMe,KAAKwlC,SAASntC,OAExB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,GAAIiB,KAAKwlC,SAASzmC,GAAGgK,KAAKiM,KAAO6gC,EAAW,CAC1CtxC,EAAUvE,KAAKwlC,SAASzmC,GACxB,KACF,CAEJ,CAEA,OAAoB,IAAhB+J,EAAKzQ,OACAkM,EAGFA,EAAQkX,iBAAiB3S,EAClC,EAEAmpC,aAAa9yC,UAAU22C,gBAAkB,SAAU78B,EAAU88B,GAC3D/1C,KAAKmX,WAAWkB,YAAc,IAAIuwB,YAClC5oC,KAAKmX,WAAWyV,YAAc+hB,YAAY11B,GAC1CjZ,KAAKmX,WAAWkB,YAAYC,SAASW,EAAS3M,OAC9CtM,KAAKmX,WAAWkB,YAAYE,SAASU,EAASb,MAAO29B,GACrD/1C,KAAKmX,WAAWiE,aAAepb,KAAKhG,cAAcohB,aAAa1J,KAAK1R,KAAKhG,eACzEgG,KAAKmX,WAAWrG,cAAgB9Q,KAAKhG,cAAc8W,cAAcY,KAAK1R,KAAKhG,eAC3EgG,KAAKmX,WAAWm6B,YAActxC,KAAKhG,cAAcyc,eACjDzW,KAAKmX,WAAWT,gBAAkB1W,KAAKhG,cAAc0c,gBACrD1W,KAAKmX,WAAWsU,QAAU,EAC1BzrB,KAAKmX,WAAWtB,UAAYoD,EAASC,GACrClZ,KAAKmX,WAAWnC,GAAKiE,EAASjE,GAC9BhV,KAAKmX,WAAW6+B,SAAW,CACzBlN,EAAG7vB,EAAS6vB,EACZ3iC,EAAG8S,EAAS9S,EAEhB,EAEA,IAAI8vC,YAAc,CAChBC,iBAAkB,mBAGpB,SAASC,mBAAoB,CA6J7B,SAASC,YAAYrtC,EAAMxE,EAAS4S,GAClCnX,KAAK+I,KAAOA,EACZ/I,KAAKuE,QAAUA,EACfvE,KAAKmX,WAAaA,EAClBnX,KAAKmjB,WAAa,GAClBnjB,KAAKsK,gBAAkBtK,KAAK+I,KAAKuB,iBAAmB,GACpDtK,KAAKq2C,YAAc,KACnB,IACIt3C,EAIA+J,EALAsO,EAAOpX,KAAKmX,WAAWC,KAEvBnY,EAAMe,KAAKsK,gBAAkBtK,KAAKsK,gBAAgBjS,OAAS,EAC/D2H,KAAKs2C,SAAWv0C,iBAAiB9C,GACjCe,KAAKu2C,UAAY,GAEjB,IAGIxsC,EACAC,EAEAwsC,EACAC,EACAC,EACA97C,EATA+7C,EAAa32C,KAAKsK,gBAClB+9B,EAAQ,EACRuO,EAAe,GAGfnD,EAAUztC,kBAKV6wC,EAAW,WACXC,EAAU,YAEd,IAAK/3C,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAkBxB,IAjB2B,MAAvB43C,EAAW53C,GAAG5D,MAAuC,MAAvBw7C,EAAW53C,GAAG5D,MAAgBw7C,EAAW53C,GAAGgmC,KAA6B,MAAtB4R,EAAW53C,GAAGyM,EAAEvB,GAAa0sC,EAAW53C,GAAGyM,EAAE5Q,KAChIi8C,EAAW,OACXC,EAAU,QAGgB,MAAvBH,EAAW53C,GAAG5D,MAAuC,MAAvBw7C,EAAW53C,GAAG5D,MAA2B,IAAVktC,EAOhEmO,EAAO,OANPA,EAAOruC,SAAS,SACX+U,aAAa,OAAQ,WAC1Bs5B,EAAKt5B,aAAa,QAASld,KAAKuE,QAAQyG,KAAKjC,KAAK+/B,GAAK,GACvD0N,EAAKt5B,aAAa,SAAUld,KAAKuE,QAAQyG,KAAKjC,KAAK5C,GAAK,GACxDywC,EAAat2C,KAAKk2C,IAKpB1tC,EAAOX,SAAS,QAEW,MAAvBwuC,EAAW53C,GAAG5D,KAEhB6E,KAAKs2C,SAASv3C,GAAK,CACjB0N,GAAIggB,gBAAgBC,QAAQ1sB,KAAKuE,QAASoyC,EAAW53C,GAAGyM,EAAG,EAAG,IAAMxL,KAAKuE,SACzE9E,KAAMuvB,qBAAqB+nB,aAAa/2C,KAAKuE,QAASoyC,EAAW53C,GAAI,GACrEqd,KAAMtT,EACNkuC,SAAU,IAEZ5/B,EAAKrE,YAAYjK,OACZ,CAIL,IAAImuC,EAgCJ,GAnCA5O,GAAS,EACTv/B,EAAKoU,aAAa,OAA+B,MAAvBy5B,EAAW53C,GAAG5D,KAAe,UAAY,WACnE2N,EAAKoU,aAAa,YAAa,WAGL,IAAtBy5B,EAAW53C,GAAGnE,EAAEqP,GAClB4sC,EAAW,OACXC,EAAU,OACVl8C,EAAI6xB,gBAAgBC,QAAQ1sB,KAAKuE,QAASoyC,EAAW53C,GAAGnE,EAAG,EAAG,KAAMoF,KAAKuE,SACzE0yC,EAAWjxC,mBACXywC,EAAWtuC,SAAS,WACX+U,aAAa,KAAM+5B,IAC5BP,EAAUvuC,SAAS,iBACX+U,aAAa,WAAY,SACjCw5B,EAAQx5B,aAAa,KAAM,iBAC3Bw5B,EAAQx5B,aAAa,SAAU,KAC/Bu5B,EAAS1jC,YAAY2jC,GACrBt/B,EAAKrE,YAAY0jC,GACjB3tC,EAAKoU,aAAa,SAAiC,MAAvBy5B,EAAW53C,GAAG5D,KAAe,UAAY,aAErEu7C,EAAU,KACV97C,EAAI,MAINoF,KAAKmjB,WAAWpkB,GAAK,CACnBqd,KAAMtT,EACNlO,EAAGA,EACHs8C,MAAOR,EACPM,SAAU,GACVG,aAAc,GACdC,SAAUH,EACVI,WAAY,GAGa,MAAvBV,EAAW53C,GAAG5D,KAAc,CAC9B6O,EAAO4sC,EAAav+C,OACpB,IAAIkO,EAAI4B,SAAS,KAEjB,IAAK4B,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBxD,EAAEwM,YAAY6jC,EAAa7sC,IAG7B,IAAIutC,EAAOnvC,SAAS,QACpBmvC,EAAKp6B,aAAa,YAAa,SAC/Bo6B,EAAKp6B,aAAa,KAAMu2B,EAAU,IAAMpL,GACxCiP,EAAKvkC,YAAYjK,GACjBsO,EAAKrE,YAAYukC,GACjB/wC,EAAE2W,aAAa,OAAQ,OAASxe,kBAAoB,IAAM+0C,EAAU,IAAMpL,EAAQ,KAClFuO,EAAav+C,OAAS,EACtBu+C,EAAat2C,KAAKiG,EACpB,MACEqwC,EAAat2C,KAAKwI,GAGhB6tC,EAAW53C,GAAGgmC,MAAQ/kC,KAAKu2C,YAC7Bv2C,KAAKu2C,UAAYv2C,KAAKu3C,wBAIxBv3C,KAAKs2C,SAASv3C,GAAK,CACjBqd,KAAMtT,EACNkuC,SAAU,GACVvqC,GAAIggB,gBAAgBC,QAAQ1sB,KAAKuE,QAASoyC,EAAW53C,GAAGyM,EAAG,EAAG,IAAMxL,KAAKuE,SACzE9E,KAAMuvB,qBAAqB+nB,aAAa/2C,KAAKuE,QAASoyC,EAAW53C,GAAI,GACrEy4C,QAAShB,GAGNx2C,KAAKs2C,SAASv3C,GAAGU,KAAKwK,GACzBjK,KAAKy3C,SAASd,EAAW53C,GAAIiB,KAAKs2C,SAASv3C,GAAGU,KAAK4G,EAAGrG,KAAKs2C,SAASv3C,GAExE,CAMF,IAHAiB,KAAKq2C,YAAcluC,SAAS0uC,GAC5B53C,EAAM23C,EAAav+C,OAEd0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKq2C,YAAYtjC,YAAY6jC,EAAa73C,IAGxCspC,EAAQ,IACVroC,KAAKq2C,YAAYn5B,aAAa,KAAMu2B,GACpCzzC,KAAKuE,QAAQmzC,cAAcx6B,aAAa45B,EAAS,OAASp4C,kBAAoB,IAAM+0C,EAAU,KAC9Fr8B,EAAKrE,YAAY/S,KAAKq2C,cAGpBr2C,KAAKs2C,SAASj+C,QAChB2H,KAAKuE,QAAQ6qC,uBAAuBpvC,KAExC,CA3SAm2C,iBAAiBh3C,UAAY,CAC3Bw4C,cAAe,WACb,IAAIva,EAAM,IAAI5K,OACdxyB,KAAK2vC,eAAiB,CACpBC,MAAO5vC,KAAK+I,KAAKuC,GAAKixB,yBAAyBqB,qBAAqB59B,KAAMA,KAAK+I,KAAKuC,GAAItL,MAAQ,CAC9FwL,EAAG,GAELosC,SAAS,EACTC,cAAc,EACdC,QAAQ,EACR1a,IAAKA,EACL2a,SAAU3a,EACV4a,aAAc,GAGZh4C,KAAK+I,KAAKkvC,KACZj4C,KAAK2vC,eAAeC,MAAMrS,cAAe,GAIvCv9B,KAAK+I,KAAK0B,EAEhB,EACAytC,gBAAiB,WAIf,GAHAl4C,KAAK2vC,eAAemI,OAAS93C,KAAK2vC,eAAeC,MAAMpkC,EAAE+f,MAAQvrB,KAAK4rB,cACtE5rB,KAAK2vC,eAAeiI,QAAU53C,KAAK2vC,eAAeC,MAAMrkB,MAAQvrB,KAAK4rB,cAEjE5rB,KAAKu1C,UAAW,CAClB,IAAInY,EACA+a,EAAWn4C,KAAK2vC,eAAevS,IAC/Br+B,EAAI,EACJE,EAAMe,KAAKu1C,UAAUl9C,OAEzB,IAAK2H,KAAK2vC,eAAeiI,QACvB,KAAO74C,EAAIE,GAAK,CACd,GAAIe,KAAKu1C,UAAUx2C,GAAG4wC,eAAeC,MAAMrkB,KAAM,CAC/CvrB,KAAK2vC,eAAeiI,SAAU,EAC9B,KACF,CAEA74C,GAAK,CACP,CAGF,GAAIiB,KAAK2vC,eAAeiI,QAItB,IAHAxa,EAAMp9B,KAAK2vC,eAAeC,MAAMvpC,EAAE1R,MAClCwjD,EAAS5hB,eAAe6G,GAEnBr+B,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBo5C,EAASniB,SAASh2B,KAAKu1C,UAAUx2C,GAAG4wC,eAAeC,MAAMvpC,EAG/D,CAEIrG,KAAK2vC,eAAeiI,UACtB53C,KAAK2vC,eAAekI,aAAe73C,KAAK2vC,eAAeiI,SAGrD53C,KAAK2vC,eAAemI,SACtB93C,KAAK2vC,eAAeqI,aAAeh4C,KAAK2vC,eAAeC,MAAMpkC,EAAEnF,EAEnE,EACA+xC,qBAAsB,WACpB,GAAIp4C,KAAKq4C,gBAAiB,CACxB,IAAIt5C,EAAI,EACJE,EAAMe,KAAKq4C,gBAAgBhgD,OAG/B,GAFA2H,KAAK2vC,eAAekI,aAAe73C,KAAK2vC,eAAeiI,SAElD53C,KAAK2vC,eAAekI,eAAiB73C,KAAK2vC,eAAemI,OAC5D,KAAO/4C,EAAIE,GACLe,KAAKq4C,gBAAgBt5C,GAAGwsB,OAC1BvrB,KAAK2vC,eAAekI,cAAe,GAGjC73C,KAAKq4C,gBAAgBt5C,GAAG+4C,SAAW93C,KAAK2vC,eAAemI,SACzD93C,KAAK2vC,eAAeqI,aAAeh4C,KAAK2vC,eAAeC,MAAMpkC,EAAEnF,EAC/DrG,KAAK2vC,eAAemI,QAAS,GAG/B/4C,GAAK,EAIT,GAAIiB,KAAK2vC,eAAekI,aAAc,CACpC,IAAIE,EAAW/3C,KAAK2vC,eAAeoI,SAGnC,IAFA/3C,KAAKq4C,gBAAgB,GAAGpiB,OAAO1H,MAAMwpB,GAEhCh5C,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAC3B,IAAIu5C,EAAOt4C,KAAKq4C,gBAAgBt5C,GAAGk3B,OACnC8hB,EAAS/hB,SAASsiB,EACpB,CAEAP,EAAS/hB,SAASh2B,KAAK2vC,eAAevS,IACxC,CAEA,GAAIp9B,KAAK2vC,eAAemI,OAAQ,CAC9B,IAAIS,EAAUv4C,KAAK2vC,eAAeqI,aAElC,IAAKj5C,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBw5C,GAA6C,IAAlCv4C,KAAKq4C,gBAAgBt5C,GAAGy5C,QAGrCx4C,KAAK2vC,eAAeqI,aAAeO,CACrC,CACF,CACF,EACAE,uBAAwB,WACtB,GAAIz4C,KAAK04C,yBAA0B,CACjC,IAAIC,EAAmB34C,KAAK04C,yBAAyBE,WAAW3C,YAAYC,kBAE5E,GAAIyC,EAAiBtgD,OAAQ,CAC3B2H,KAAKq4C,gBAAkB,GACvBr4C,KAAK2vC,eAAeoI,SAAW,IAAIvlB,OACnC,IAAIzzB,EAAI,EACJE,EAAM05C,EAAiBtgD,OAE3B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKq4C,gBAAgB/3C,KAAKq4C,EAAiB55C,GAE/C,CACF,CACF,EACA85C,cAAe,SAAuBtuC,GACpC,IAAIuuC,EAAa,GACjBA,EAAWx4C,KAAKN,KAAK2vC,gBAIrB,IAHA,IAeI5wC,EAfAR,GAAO,EACPyM,EAAOhL,KAAKgL,KAETzM,GACDyM,EAAK2kC,gBACH3kC,EAAKjC,KAAKqB,SACZ0uC,EAAWtlC,OAAO,EAAG,EAAGxI,EAAK2kC,gBAG/B3kC,EAAOA,EAAKA,MAEZzM,GAAO,EAKX,IACIw6C,EADA95C,EAAM65C,EAAWzgD,OAGrB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBg6C,EAAQD,EAAW/5C,GAAGq+B,IAAInG,kBAAkB,EAAG,EAAG,GAElD1sB,EAAK,CAACA,EAAG,GAAKwuC,EAAM,GAAIxuC,EAAG,GAAKwuC,EAAM,GAAI,GAG5C,OAAOxuC,CACT,EACAyuC,QAAS,IAAIxmB,QAqJf4jB,YAAYj3C,UAAU85C,gBAAkB,SAAUv8C,GAChD,OAAOsD,KAAKs2C,SAAS55C,GAAK+C,IAC5B,EAEA22C,YAAYj3C,UAAU4a,YAAc,SAAUm/B,GAC5C,IACIn6C,EADAo5C,EAAWn4C,KAAKuE,QAAQorC,eAAevS,IAEvCn+B,EAAMe,KAAKsK,gBAAgBjS,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EASxB,IARIiB,KAAKs2C,SAASv3C,GAAGU,KAAK8rB,MAAQ2tB,IAChCl5C,KAAKy3C,SAASz3C,KAAKsK,gBAAgBvL,GAAIiB,KAAKs2C,SAASv3C,GAAGU,KAAK4G,EAAGrG,KAAKs2C,SAASv3C,KAG5EiB,KAAKs2C,SAASv3C,GAAG0N,GAAG8e,MAAQ2tB,IAC9Bl5C,KAAKs2C,SAASv3C,GAAGqd,KAAKc,aAAa,eAAgBld,KAAKs2C,SAASv3C,GAAG0N,GAAGpG,GAGpC,MAAjCrG,KAAKsK,gBAAgBvL,GAAG5D,OACtB6E,KAAKs2C,SAASv3C,GAAGy4C,UAAYx3C,KAAKuE,QAAQorC,eAAeC,MAAMrkB,MAAQ2tB,IACzEl5C,KAAKs2C,SAASv3C,GAAGy4C,QAAQt6B,aAAa,YAAai7B,EAASthB,mBAAmBiB,WAG7E93B,KAAKmjB,WAAWpkB,GAAGnE,IAAMoF,KAAKmjB,WAAWpkB,GAAGnE,EAAE2wB,MAAQ2tB,IAAe,CACvE,IAAIxC,EAAU12C,KAAKmjB,WAAWpkB,GAAGm4C,MAE7Bl3C,KAAKmjB,WAAWpkB,GAAGnE,EAAEyL,EAAI,GACa,UAApCrG,KAAKmjB,WAAWpkB,GAAGo4C,eACrBn3C,KAAKmjB,WAAWpkB,GAAGo4C,aAAe,QAClCn3C,KAAKmjB,WAAWpkB,GAAGqd,KAAKc,aAAa,SAAU,OAASxe,kBAAoB,IAAMsB,KAAKmjB,WAAWpkB,GAAGq4C,SAAW,MAGlHV,EAAQx5B,aAAa,UAAWld,KAAKmjB,WAAWpkB,GAAGnE,EAAEyL,KAEb,WAApCrG,KAAKmjB,WAAWpkB,GAAGo4C,eACrBn3C,KAAKmjB,WAAWpkB,GAAGo4C,aAAe,SAClCn3C,KAAKmjB,WAAWpkB,GAAGqd,KAAKc,aAAa,SAAU,OAGjDld,KAAKmjB,WAAWpkB,GAAGqd,KAAKc,aAAa,eAAyC,EAAzBld,KAAKmjB,WAAWpkB,GAAGnE,EAAEyL,GAE9E,CAGN,EAEA+vC,YAAYj3C,UAAUg6C,eAAiB,WACrC,OAAOn5C,KAAKq2C,WACd,EAEAD,YAAYj3C,UAAUo4C,qBAAuB,WAC3C,IAAIzuC,EAAO,QAKX,OAJAA,GAAQ,KAAO9I,KAAKmX,WAAW6+B,SAASlN,EACxChgC,GAAQ,KAAO9I,KAAKmX,WAAW6+B,SAAS7vC,EACxC2C,GAAQ,MAAQ9I,KAAKmX,WAAW6+B,SAASlN,EACzChgC,GAAQ,MAAQ9I,KAAKmX,WAAW6+B,SAAS7vC,EAAI,GAE/C,EAEAiwC,YAAYj3C,UAAUs4C,SAAW,SAAUzqC,EAAUosC,EAAW9C,GAC9D,IACIv3C,EACAE,EAFAo6C,EAAa,KAAOD,EAAU/yC,EAAE,GAAG,GAAK,IAAM+yC,EAAU/yC,EAAE,GAAG,GAKjE,IAFApH,EAAMm6C,EAAUx4B,QAEX7hB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAExBs6C,GAAc,KAAOD,EAAU5tC,EAAEzM,EAAI,GAAG,GAAK,IAAMq6C,EAAU5tC,EAAEzM,EAAI,GAAG,GAAK,IAAMq6C,EAAUr6C,EAAEA,GAAG,GAAK,IAAMq6C,EAAUr6C,EAAEA,GAAG,GAAK,IAAMq6C,EAAU/yC,EAAEtH,GAAG,GAAK,IAAMq6C,EAAU/yC,EAAEtH,GAAG,GAShL,GALIq6C,EAAUjsC,GAAKlO,EAAM,IACvBo6C,GAAc,KAAOD,EAAU5tC,EAAEzM,EAAI,GAAG,GAAK,IAAMq6C,EAAU5tC,EAAEzM,EAAI,GAAG,GAAK,IAAMq6C,EAAUr6C,EAAE,GAAG,GAAK,IAAMq6C,EAAUr6C,EAAE,GAAG,GAAK,IAAMq6C,EAAU/yC,EAAE,GAAG,GAAK,IAAM+yC,EAAU/yC,EAAE,GAAG,IAI5KiwC,EAASU,WAAaqC,EAAY,CACpC,IAAIC,EAAiB,GAEjBhD,EAASl6B,OACPg9B,EAAUjsC,IACZmsC,EAAiBtsC,EAAS+3B,IAAM/kC,KAAKu2C,UAAY8C,EAAaA,GAGhE/C,EAASl6B,KAAKc,aAAa,IAAKo8B,IAGlChD,EAASU,SAAWqC,CACtB,CACF,EAEAjD,YAAYj3C,UAAUnH,QAAU,WAC9BgI,KAAKuE,QAAU,KACfvE,KAAKmX,WAAa,KAClBnX,KAAKq2C,YAAc,KACnBr2C,KAAK+I,KAAO,KACZ/I,KAAKsK,gBAAkB,IACzB,EAEA,IAAIivC,eAAiB,WACnB,IAAI3nC,EAAK,CACTA,aAGA,SAAsB4nC,EAAOC,GAC3B,IAAIC,EAAMvxC,SAAS,UAWnB,OAVAuxC,EAAIx8B,aAAa,KAAMs8B,IAEC,IAApBC,IACFC,EAAIx8B,aAAa,cAAe,qBAChCw8B,EAAIx8B,aAAa,IAAK,MACtBw8B,EAAIx8B,aAAa,IAAK,MACtBw8B,EAAIx8B,aAAa,QAAS,QAC1Bw8B,EAAIx8B,aAAa,SAAU,SAGtBw8B,CACT,EAfA9nC,6BAiBA,WACE,IAAI+nC,EAAgBxxC,SAAS,iBAI7B,OAHAwxC,EAAcz8B,aAAa,OAAQ,UACnCy8B,EAAcz8B,aAAa,8BAA+B,QAC1Dy8B,EAAcz8B,aAAa,SAAU,8CAC9By8B,CACT,GAEA,OAAO/nC,CACT,CA7BqB,GA+BjBgoC,eAAiB,WACnB,IAAIhoC,EAAK,CACPilC,UAAU,EACVgD,eAAe,EACfC,gBAA4C,qBAApB/O,iBAW1B,OARI,WAAWpoC,KAAK1E,UAAU2E,YAAc,UAAUD,KAAK1E,UAAU2E,YAAc,WAAWD,KAAK1E,UAAU2E,YAAc,aAAaD,KAAK1E,UAAU2E,cACrJgP,EAAGilC,UAAW,GAGZ,WAAWl0C,KAAK1E,UAAU2E,aAC5BgP,EAAGioC,eAAgB,GAGdjoC,CACT,CAhBqB,GAkBjBmoC,oBAAsB,CAAC,EACvBC,SAAW,iBAEf,SAASC,WAAW79B,GAClB,IAAIrd,EAOAm7C,EANAC,EAAS,gBACTl7C,EAAMmd,EAAKrT,KAAKgoC,GAAK30B,EAAKrT,KAAKgoC,GAAG14C,OAAS,EAC3CmhD,EAAQxzC,kBACR0zC,EAAMH,eAAea,aAAaZ,GAAO,GACzCnR,EAAQ,EAIZ,IAHAroC,KAAKq6C,QAAU,GAGVt7C,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAC3Bm7C,EAAgB,KAChB,IAAIp+C,EAAOsgB,EAAKrT,KAAKgoC,GAAGhyC,GAAG0L,GAEvBsvC,oBAAoBj+C,KAEtBo+C,EAAgB,IAAII,EADPP,oBAAoBj+C,GAAMy+C,QACZb,EAAKt9B,EAAKs3B,eAAe1C,eAAejyC,GAAIqd,EAAM49B,SAAW3R,EAAO8R,GAC/FA,EAASH,SAAW3R,EAEhB0R,oBAAoBj+C,GAAM0+C,iBAC5BnS,GAAS,IAIT6R,GACFl6C,KAAKq6C,QAAQ/5C,KAAK45C,EAEtB,CAEI7R,IACFjsB,EAAKjF,WAAWC,KAAKrE,YAAY2mC,GACjCt9B,EAAKo3B,aAAat2B,aAAa,SAAU,OAASxe,kBAAoB,IAAM86C,EAAQ,MAGlFx5C,KAAKq6C,QAAQhiD,QACf+jB,EAAKgzB,uBAAuBpvC,KAEhC,CAyBA,SAASy6C,iBAAiB1vC,EAAIwvC,EAAQC,GACpCT,oBAAoBhvC,GAAM,CACxBwvC,OAAQA,EACRC,eAAgBA,EAEpB,CAEA,SAASE,iBAAkB,CA6L3B,SAASC,mBAAoB,CAgD7B,SAASC,uBAAwB,CAoEjC,SAASC,cAAc9xC,EAAMoO,EAAYnM,GACvChL,KAAK+Q,UAAYoG,EAAWiE,aAAarS,EAAK4B,OAE1C3K,KAAK+Q,WAAa/Q,KAAK+Q,UAAU4b,MACnC3sB,KAAK+Q,UAAYoG,EAAWyV,YAAYF,QAAQ1sB,KAAK+Q,YAGvD/Q,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,GACnChL,KAAK+6C,WAAa,CAChB3gD,IAAK,EACLS,KAAM,EACNC,MAAOkF,KAAK+Q,UAAU+3B,EACtBzuC,OAAQ2F,KAAK+Q,UAAU5K,EAE3B,CAkBA,SAAS60C,iBAAiBz2C,EAAS3H,GACjCoD,KAAKoc,KAAO7X,EACZvE,KAAKtD,IAAME,CACb,CAEA,SAASq+C,gBAAiB,CApX1BhB,WAAW96C,UAAU4a,YAAc,SAAU6R,GAC3C,IAAI7sB,EACAE,EAAMe,KAAKq6C,QAAQhiD,OAEvB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKq6C,QAAQt7C,GAAGgb,YAAY6R,EAEhC,EAEAquB,WAAW96C,UAAUy5C,WAAa,SAAU98C,GAC1C,IAAIiD,EACAE,EAAMe,KAAKq6C,QAAQhiD,OACnBy4C,EAAU,GAEd,IAAK/xC,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBiB,KAAKq6C,QAAQt7C,GAAGjD,OAASA,GAC3Bg1C,EAAQxwC,KAAKN,KAAKq6C,QAAQt7C,IAI9B,OAAO+xC,CACT,EAWA4J,eAAev7C,UAAY,CACzB+7C,oBAAqB,WACnBl7C,KAAKwzC,aAAerrC,SAAS,IAC/B,EACAgzC,wBAAyB,WACvBn7C,KAAKo7C,aAAejzC,SAAS,KAC7BnI,KAAKq7C,mBAAqBr7C,KAAKwzC,aAC/BxzC,KAAK03C,cAAgB13C,KAAKwzC,aAC1BxzC,KAAKs7C,cAAe,EACpB,IAAIC,EAAqB,KAEzB,GAAIv7C,KAAK+I,KAAKyyC,GAAI,CAChBx7C,KAAKy7C,WAAa,CAAC,EACnB,IAAIC,EAAKvzC,SAAS,KAClBuzC,EAAGx+B,aAAa,KAAMld,KAAKyzC,SAC3BiI,EAAG3oC,YAAY/S,KAAKwzC,cACpB+H,EAAqBG,EACrB17C,KAAKmX,WAAWC,KAAKrE,YAAY2oC,EACnC,MAAW17C,KAAK+I,KAAK4yC,IACnB37C,KAAKo7C,aAAaroC,YAAY/S,KAAKwzC,cACnC+H,EAAqBv7C,KAAKo7C,aAC1Bp7C,KAAKuzC,YAAcvzC,KAAKo7C,cAExBp7C,KAAKuzC,YAAcvzC,KAAKwzC,aAY1B,GATIxzC,KAAK+I,KAAK6yC,IACZ57C,KAAKwzC,aAAat2B,aAAa,KAAMld,KAAK+I,KAAK6yC,IAG7C57C,KAAK+I,KAAKwE,IACZvN,KAAKwzC,aAAat2B,aAAa,QAASld,KAAK+I,KAAKwE,IAI/B,IAAjBvN,KAAK+I,KAAK0B,KAAazK,KAAK+I,KAAK8yC,GAAI,CACvC,IAAIC,EAAK3zC,SAAS,YACdoC,EAAKpC,SAAS,QAClBoC,EAAG2S,aAAa,IAAK,SAAWld,KAAK+I,KAAK+/B,EAAI,OAAS9oC,KAAK+I,KAAK+/B,EAAI,IAAM9oC,KAAK+I,KAAK5C,EAAI,OAASnG,KAAK+I,KAAK5C,EAAI,KAChH,IAAI41C,EAAS/1C,kBAKb,GAJA81C,EAAG5+B,aAAa,KAAM6+B,GACtBD,EAAG/oC,YAAYxI,GACfvK,KAAKmX,WAAWC,KAAKrE,YAAY+oC,GAE7B97C,KAAKmyC,aAAc,CACrB,IAAI6J,EAAU7zC,SAAS,KACvB6zC,EAAQ9+B,aAAa,YAAa,OAASxe,kBAAoB,IAAMq9C,EAAS,KAC9EC,EAAQjpC,YAAY/S,KAAKwzC,cACzBxzC,KAAKq7C,mBAAqBW,EAEtBT,EACFA,EAAmBxoC,YAAY/S,KAAKq7C,oBAEpCr7C,KAAKuzC,YAAcvzC,KAAKq7C,kBAE5B,MACEr7C,KAAKwzC,aAAat2B,aAAa,YAAa,OAASxe,kBAAoB,IAAMq9C,EAAS,IAE5F,CAEqB,IAAjB/7C,KAAK+I,KAAKuqC,IACZtzC,KAAKozC,cAET,EACA6I,cAAe,WACTj8C,KAAK2vC,eAAekI,cACtB73C,KAAKq7C,mBAAmBn+B,aAAa,YAAald,KAAK2vC,eAAeoI,SAASjgB,WAG7E93B,KAAK2vC,eAAemI,QACtB93C,KAAKq7C,mBAAmBn+B,aAAa,UAAWld,KAAK2vC,eAAeqI,aAExE,EACAkE,mBAAoB,WAClBl8C,KAAKwzC,aAAe,KACpBxzC,KAAKo7C,aAAe,KACpBp7C,KAAK0yC,YAAY16C,SACnB,EACA+7C,eAAgB,WACd,OAAI/zC,KAAK+I,KAAK8yC,GACL,KAGF77C,KAAKuzC,WACd,EACA4I,2BAA4B,WAC1Bn8C,KAAK0yC,YAAc,IAAI0D,YAAYp2C,KAAK+I,KAAM/I,KAAMA,KAAKmX,YACzDnX,KAAK04C,yBAA2B,IAAIuB,WAAWj6C,MAC/CA,KAAKy4C,wBACP,EACA2D,SAAU,SAAkBC,GAQ1B,GAJKr8C,KAAKy7C,aACRz7C,KAAKy7C,WAAa,CAAC,IAGhBz7C,KAAKy7C,WAAWY,GAAY,CAC/B,IACI7C,EACAE,EACA4C,EACAZ,EAJA3wC,EAAK/K,KAAKyzC,QAAU,IAAM4I,EAM9B,GAAkB,IAAdA,GAAiC,IAAdA,EAAiB,CACtC,IAAIE,EAASp0C,SAAS,QACtBo0C,EAAOr/B,aAAa,KAAMnS,GAC1BwxC,EAAOr/B,aAAa,YAA2B,IAAdm/B,EAAkB,YAAc,UACjEC,EAAan0C,SAAS,QACXyK,eAAe,+BAAgC,OAAQ,IAAM5S,KAAKyzC,SAC7E8I,EAAOxpC,YAAYupC,GACnBt8C,KAAKmX,WAAWC,KAAKrE,YAAYwpC,GAE5B3C,eAAe/C,UAA0B,IAAdwF,IAC9BE,EAAOr/B,aAAa,YAAa,aACjCs8B,EAAQxzC,kBACR0zC,EAAMH,eAAea,aAAaZ,GAClCx5C,KAAKmX,WAAWC,KAAKrE,YAAY2mC,GACjCA,EAAI3mC,YAAYwmC,eAAeiD,iCAC/Bd,EAAKvzC,SAAS,MACX4K,YAAYupC,GACfC,EAAOxpC,YAAY2oC,GACnBA,EAAGx+B,aAAa,SAAU,OAASxe,kBAAoB,IAAM86C,EAAQ,KAEzE,MAAO,GAAkB,IAAd6C,EAAiB,CAC1B,IAAII,EAAYt0C,SAAS,QACzBs0C,EAAUv/B,aAAa,KAAMnS,GAC7B0xC,EAAUv/B,aAAa,YAAa,SACpC,IAAIw/B,EAAcv0C,SAAS,KAC3Bs0C,EAAU1pC,YAAY2pC,GACtBlD,EAAQxzC,kBACR0zC,EAAMH,eAAea,aAAaZ,GAElC,IAAImD,EAAQx0C,SAAS,uBACrBw0C,EAAMz/B,aAAa,KAAM,iBACzBw8B,EAAI3mC,YAAY4pC,GAChB,IAAIC,EAASz0C,SAAS,WACtBy0C,EAAO1/B,aAAa,OAAQ,SAC5B0/B,EAAO1/B,aAAa,cAAe,WACnCy/B,EAAM5pC,YAAY6pC,GAElB58C,KAAKmX,WAAWC,KAAKrE,YAAY2mC,GACjC,IAAImD,EAAY10C,SAAS,QACzB00C,EAAU3/B,aAAa,QAASld,KAAKgL,KAAKjC,KAAK+/B,GAC/C+T,EAAU3/B,aAAa,SAAUld,KAAKgL,KAAKjC,KAAK5C,GAChD02C,EAAU3/B,aAAa,IAAK,KAC5B2/B,EAAU3/B,aAAa,IAAK,KAC5B2/B,EAAU3/B,aAAa,OAAQ,WAC/B2/B,EAAU3/B,aAAa,UAAW,KAClCw/B,EAAYx/B,aAAa,SAAU,OAASxe,kBAAoB,IAAM86C,EAAQ,KAC9EkD,EAAY3pC,YAAY8pC,IACxBP,EAAan0C,SAAS,QACXyK,eAAe,+BAAgC,OAAQ,IAAM5S,KAAKyzC,SAC7EiJ,EAAY3pC,YAAYupC,GAEnB1C,eAAe/C,WAClB4F,EAAUv/B,aAAa,YAAa,aACpCw8B,EAAI3mC,YAAYwmC,eAAeiD,gCAC/Bd,EAAKvzC,SAAS,KACdu0C,EAAY3pC,YAAY8pC,GACxBnB,EAAG3oC,YAAY/S,KAAKwzC,cACpBkJ,EAAY3pC,YAAY2oC,IAG1B17C,KAAKmX,WAAWC,KAAKrE,YAAY0pC,EACnC,CAEAz8C,KAAKy7C,WAAWY,GAAatxC,CAC/B,CAEA,OAAO/K,KAAKy7C,WAAWY,EACzB,EACAS,SAAU,SAAkB/xC,GACrB/K,KAAKo7C,cAIVp7C,KAAKo7C,aAAal+B,aAAa,OAAQ,OAASxe,kBAAoB,IAAMqM,EAAK,IACjF,GAUF4vC,iBAAiBx7C,UAAY,CAM3B49C,cAAe,WAEb/8C,KAAKu1C,UAAY,GAEjBv1C,KAAK8zC,WAAY,EACjB9zC,KAAKg9C,gBACP,EASAvH,aAAc,SAAsBF,GAClCv1C,KAAKu1C,UAAYA,CACnB,EAOAC,YAAa,WACXx1C,KAAK8zC,WAAY,CACnB,EAOAkJ,eAAgB,gBACW/kD,IAArB+H,KAAK+I,KAAKqhC,QACZpqC,KAAKgL,KAAKqqC,sBAAsBr1C,KAAMA,KAAK+I,KAAKqhC,OAAQ,GAE5D,GAoEAxrC,gBAAgB,CAACgwC,kBAAmBjvC,oBA9DnB,CACfm7C,YAAa,SAAqB/xC,EAAMoO,EAAYnM,GAClDhL,KAAKomB,YACLpmB,KAAKuxC,aAAaxoC,EAAMoO,EAAYnM,GACpChL,KAAK23C,cAAc5uC,EAAMoO,EAAYnM,GACrChL,KAAK+8C,gBACL/8C,KAAK+uC,iBACL/uC,KAAKk7C,sBACLl7C,KAAKm7C,0BACLn7C,KAAKm8C,6BACLn8C,KAAKi9C,gBACLj9C,KAAKqb,MACP,EACAA,KAAM,WAECrb,KAAKivC,QAAYjvC,KAAKgvC,YAAahvC,KAAKkvC,iBAChClvC,KAAKuzC,aAAevzC,KAAKwzC,cAC/B5+C,MAAM4P,QAAU,OACrBxE,KAAKivC,QAAS,EAElB,EACA3zB,KAAM,WAEAtb,KAAKgvC,YAAchvC,KAAKkvC,gBACrBlvC,KAAK+I,KAAK8yC,MACF77C,KAAKuzC,aAAevzC,KAAKwzC,cAC/B5+C,MAAM4P,QAAU,SAGvBxE,KAAKivC,QAAS,EACdjvC,KAAK4rB,eAAgB,EAEzB,EACA7R,YAAa,WAGP/Z,KAAK+I,KAAK8yC,IAAM77C,KAAKivC,SAIzBjvC,KAAKk4C,kBACLl4C,KAAK+vC,mBACL/vC,KAAKo4C,uBACLp4C,KAAKi8C,gBACLj8C,KAAKk9C,qBAEDl9C,KAAK4rB,gBACP5rB,KAAK4rB,eAAgB,GAEzB,EACAsxB,mBAAoB,WAA+B,EACnDjoC,aAAc,SAAsBu6B,GAClCxvC,KAAKurB,MAAO,EACZvrB,KAAKuvC,uBAAuBC,GAC5BxvC,KAAK4zC,kBAAkBpE,EAAKxvC,KAAKgvC,WACjChvC,KAAK0vC,mBACP,EACA13C,QAAS,WACPgI,KAAKm9C,UAAY,KACjBn9C,KAAKk8C,oBACP,KAEoEtB,sBAmBxEh8C,gBAAgB,CAACuyC,YAAagF,iBAAkBuE,eAAgBC,iBAAkBvJ,aAAcwJ,sBAAuBC,eAEvHA,cAAc17C,UAAU89C,cAAgB,WACtC,IAAIt8C,EAAYX,KAAKmX,WAAWrG,cAAc9Q,KAAK+Q,WACnD/Q,KAAKm9C,UAAYh1C,SAAS,SAC1BnI,KAAKm9C,UAAUjgC,aAAa,QAASld,KAAK+Q,UAAU+3B,EAAI,MACxD9oC,KAAKm9C,UAAUjgC,aAAa,SAAUld,KAAK+Q,UAAU5K,EAAI,MACzDnG,KAAKm9C,UAAUjgC,aAAa,sBAAuBld,KAAK+Q,UAAUqsC,IAAMp9C,KAAKmX,WAAW04B,aAAawN,0BACrGr9C,KAAKm9C,UAAUvqC,eAAe,+BAAgC,OAAQjS,GACtEX,KAAKwzC,aAAazgC,YAAY/S,KAAKm9C,UACrC,EAEAtC,cAAc17C,UAAU6wC,iBAAmB,WACzC,OAAOhwC,KAAK+6C,UACd,EASAE,cAAc97C,UAAY,CACxBm+C,oBAAqB,SAA6Bv0C,GAChD,IAAIhK,EACAE,EAAMe,KAAKu9C,eAAellD,OAE9B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKu9C,eAAex+C,GAAG4vB,SAAS5lB,EAEpC,EACAy0C,2BAA4B,SAAoCz0C,GAI9D,IAHA,IACI9J,EAAMe,KAAKu9C,eAAellD,OADtB,EAGG4G,GACT,GAAIe,KAAKu9C,eAJH,GAIqBE,oBAAoB10C,GAC7C,OAAO,EAIX,OAAO,CACT,EACA20C,gBAAiB,WACf,GAAK19C,KAAKu9C,eAAellD,OAAzB,CAIA,IAAI0G,EACAE,EAAMe,KAAK6K,OAAOxS,OAEtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK6K,OAAO9L,GAAG0pB,GAAGsH,QAMpB,IAAKhxB,GAHLE,EAAMe,KAAKu9C,eAAellD,QAGX,EAAG0G,GAAK,IACAiB,KAAKu9C,eAAex+C,GAAGk8B,cAAcj7B,KAAK4rB,eADvC7sB,GAAK,GAZ/B,CAoBF,EACA4+C,uBAAwB,SAAgCvhC,GAKtD,IAJA,IAAIopB,EAAWxlC,KAAK49C,kBAChB7+C,EAAI,EACJE,EAAMumC,EAASntC,OAEZ0G,EAAIE,GAAK,CACd,GAAIumC,EAASzmC,GAAGqd,OAASA,EACvB,OAAOopB,EAASzmC,GAAGrC,IAGrBqC,GAAK,CACP,CAEA,OAAO,CACT,EACA8+C,oBAAqB,SAA6BzhC,EAAM1f,GAItD,IAHA,IAAI8oC,EAAWxlC,KAAK49C,kBAChB7+C,EAAIymC,EAASntC,OAEV0G,GAGL,GAAIymC,EAFJzmC,GAAK,GAEWqd,OAASA,EAEvB,YADAopB,EAASzmC,GAAGrC,IAAMA,GAKtB8oC,EAASllC,KAAK,IAAI06C,iBAAiB5+B,EAAM1f,GAC3C,EACAuY,aAAc,SAAsBu6B,GAClCxvC,KAAKuvC,uBAAuBC,GAC5BxvC,KAAK4zC,kBAAkBpE,EAAKxvC,KAAKgvC,UACnC,GAGF,IAAI8O,YAAc,CAChB,EAAG,OACH,EAAG,QACH,EAAG,UAEDC,aAAe,CACjB,EAAG,QACH,EAAG,QACH,EAAG,SAGL,SAASC,aAAaC,EAAcC,EAAO1vB,GACzCxuB,KAAKm+C,OAAS,GACdn+C,KAAKkkC,OAAS,GACdlkC,KAAKi+C,aAAeA,EACpBj+C,KAAKo+C,KAAO,GACZp+C,KAAKyoB,GAAK+F,EACVxuB,KAAKq+C,IAAMH,EAIXl+C,KAAK+sB,cAAgByB,EAAMvkB,EAK3B,IAHA,IAAIlL,EAAI,EACJE,EAAMg/C,EAAa5lD,OAEhB0G,EAAIE,GAAK,CACd,GAAIg/C,EAAal/C,GAAGgoC,OAAOja,kBAAkBz0B,OAAQ,CACnD2H,KAAK+sB,aAAc,EACnB,KACF,CAEAhuB,GAAK,CACP,CACF,CAMA,SAASu/C,aAAav1C,EAAMm1C,GAC1Bl+C,KAAK+I,KAAOA,EACZ/I,KAAKlE,KAAOiN,EAAK0B,GACjBzK,KAAK8G,EAAI,GACT9G,KAAKq+C,IAAMH,EACXl+C,KAAKurB,MAAO,EACZvrB,KAAKsN,QAAqB,IAAZvE,EAAK8yC,GACnB77C,KAAKu+C,MAAQp2C,SAAS,QACtBnI,KAAKw+C,OAAS,IAChB,CAOA,SAASC,aAAariC,EAAMrT,EAAMnT,EAAU4C,GAU1C,IAAIuG,EATJiB,KAAKoc,KAAOA,EACZpc,KAAKyrB,SAAW,EAChBzrB,KAAK0+C,UAAY38C,iBAAiBgH,EAAK1Q,QACvC2H,KAAKpK,SAAWA,EAChBoK,KAAKiK,GAAI,EACTjK,KAAK2+C,QAAU,GACf3+C,KAAK4+C,UAAYn9C,iBAAiB,UAAWsH,EAAK1Q,OAAS0Q,EAAK1Q,OAAS,EAAI,GAC7E2H,KAAK6+C,WAAap9C,iBAAiB,UAAW,GAC9CzB,KAAKitB,6BAA6Bz0B,GAElC,IACIiH,EADAR,EAAM8J,EAAK1Q,QAAU,EAGzB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBU,EAAOgtB,gBAAgBC,QAAQtQ,EAAMrT,EAAKhK,GAAGsH,EAAG,EAAG,EAAGrG,MACtDA,KAAKiK,EAAIxK,EAAKwK,GAAKjK,KAAKiK,EACxBjK,KAAK0+C,UAAU3/C,GAAK,CAClB8oB,EAAG9e,EAAKhK,GAAG8oB,EACXnhB,EAAGjH,GAIFO,KAAKiK,GACRjK,KAAKosB,UAAS,GAGhBpsB,KAAK+sB,YAAc/sB,KAAKiK,CAC1B,CAmCA,SAAS60C,mBAAmB1iC,EAAMrT,EAAMg2C,GACtC/+C,KAAKitB,6BAA6B7Q,GAClCpc,KAAKosB,SAAWpsB,KAAKgtB,yBACrBhtB,KAAKwL,EAAIihB,gBAAgBC,QAAQtQ,EAAMrT,EAAKyC,EAAG,EAAG,IAAMxL,MACxDA,KAAK8oC,EAAIrc,gBAAgBC,QAAQtQ,EAAMrT,EAAK+/B,EAAG,EAAG,KAAM9oC,MACxDA,KAAK8G,EAAI,IAAI23C,aAAariC,EAAMrT,EAAKjC,GAAK,CAAC,EAAG,MAAO9G,MACrDA,KAAKmN,EAAIsf,gBAAgBC,QAAQtQ,EAAMrT,EAAKoE,EAAG,EAAG,IAAKnN,MACvDA,KAAKpL,MAAQmqD,EACb/+C,KAAK+sB,cAAgB/sB,KAAK+sB,WAC5B,CAIA,SAASiyB,iBAAiB5iC,EAAMrT,EAAMg2C,GACpC/+C,KAAKitB,6BAA6B7Q,GAClCpc,KAAKosB,SAAWpsB,KAAKgtB,yBACrBhtB,KAAKwL,EAAIihB,gBAAgBC,QAAQtQ,EAAMrT,EAAKyC,EAAG,EAAG,IAAMxL,MACxDA,KAAKmN,EAAIsf,gBAAgBC,QAAQtQ,EAAMrT,EAAKoE,EAAG,EAAG,IAAKnN,MACvDA,KAAKpL,MAAQmqD,CACf,CAIA,SAASE,eAAe7iC,EAAMrT,EAAMg2C,GAClC/+C,KAAKitB,6BAA6B7Q,GAClCpc,KAAKosB,SAAWpsB,KAAKgtB,yBACrBhtB,KAAKpL,MAAQmqD,CACf,CAIA,SAASG,iBAAiB9iC,EAAMrT,EAAMvQ,GACpCwH,KAAK+I,KAAOA,EACZ/I,KAAKmN,EAAI1L,iBAAiB,SAAmB,EAATsH,EAAKrC,GACzC,IAAIy4C,EAAUp2C,EAAKkB,EAAEA,EAAE,GAAG7D,EAAI2C,EAAKkB,EAAEA,EAAE,GAAG7D,EAAE/N,OAAkB,EAAT0Q,EAAKrC,EAAQqC,EAAKkB,EAAEA,EAAE5R,OAAkB,EAAT0Q,EAAKrC,EACzF1G,KAAKwL,EAAI/J,iBAAiB,UAAW09C,GACrCn/C,KAAKo/C,OAAQ,EACbp/C,KAAKq/C,OAAQ,EACbr/C,KAAKs/C,aAAet/C,KAAKu/C,mBACzBv/C,KAAKw/C,YAAcL,EACnBn/C,KAAKitB,6BAA6Bz0B,GAClCwH,KAAKP,KAAOgtB,gBAAgBC,QAAQtQ,EAAMrT,EAAKkB,EAAG,EAAG,KAAMjK,MAC3DA,KAAKiK,EAAIjK,KAAKP,KAAKwK,EACnBjK,KAAKosB,UAAS,EAChB,CAqFA,SAASqzB,yBAAyBrjC,EAAMrT,EAAMg2C,GAC5C/+C,KAAKitB,6BAA6B7Q,GAClCpc,KAAKosB,SAAWpsB,KAAKgtB,yBACrBhtB,KAAK0/C,iBAAiBtjC,EAAMrT,EAAMg2C,EACpC,CAyFA,SAASY,2BAA2BvjC,EAAMrT,EAAMg2C,GAC9C/+C,KAAKitB,6BAA6B7Q,GAClCpc,KAAKosB,SAAWpsB,KAAKgtB,yBACrBhtB,KAAK8oC,EAAIrc,gBAAgBC,QAAQtQ,EAAMrT,EAAK+/B,EAAG,EAAG,KAAM9oC,MACxDA,KAAK8G,EAAI,IAAI23C,aAAariC,EAAMrT,EAAKjC,GAAK,CAAC,EAAG,MAAO9G,MACrDA,KAAK0/C,iBAAiBtjC,EAAMrT,EAAMg2C,GAClC/+C,KAAK+sB,cAAgB/sB,KAAK+sB,WAC5B,CAIA,SAAS6yB,iBACP5/C,KAAKuL,GAAK,GACVvL,KAAK6/C,aAAe,GACpB7/C,KAAK8/C,GAAK33C,SAAS,IACrB,CAEA,SAAS43C,iBAAiBhZ,EAAQt6B,EAAIjU,GACpCwH,KAAKi0B,UAAY,CACf8S,OAAQA,EACRt6B,GAAIA,EACJjU,UAAWA,GAEbwH,KAAKwlC,SAAW,GAChBxlC,KAAK+sB,YAAc/sB,KAAKi0B,UAAU8S,OAAOja,kBAAkBz0B,QAAU2H,KAAKi0B,UAAUxnB,GAAGif,gBAAgBrzB,MACzG,CA1UA2lD,aAAa7+C,UAAUi7B,cAAgB,WACrCp6B,KAAK+sB,aAAc,CACrB,EAaAuxB,aAAan/C,UAAU4wB,MAAQ,WAC7B/vB,KAAK8G,EAAI,GACT9G,KAAKurB,MAAO,CACd,EAgCAkzB,aAAat/C,UAAUitB,SAAW,SAAUiR,GAC1C,IAAIr9B,KAAKoc,KAAKjF,WAAWsU,UAAYzrB,KAAKyrB,SAAY4R,KAItDr9B,KAAKyrB,QAAUzrB,KAAKoc,KAAKjF,WAAWsU,QACpCzrB,KAAKgtB,2BACLhtB,KAAKurB,KAAOvrB,KAAKurB,MAAQ8R,EAErBr9B,KAAKurB,MAAM,CACb,IAAIxsB,EAAI,EACJE,EAAMe,KAAK0+C,UAAUrmD,OAMzB,IAJsB,QAAlB2H,KAAKpK,WACPoK,KAAK2+C,QAAU,IAGZ5/C,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACI,MAAxBiB,KAAK0+C,UAAU3/C,GAAG8oB,EACE,QAAlB7nB,KAAKpK,SACPoK,KAAK2+C,SAAW,IAAM3+C,KAAK0+C,UAAU3/C,GAAG2H,EAAEL,EAE1CrG,KAAK4+C,UAAU7/C,GAAKiB,KAAK0+C,UAAU3/C,GAAG2H,EAAEL,EAG1CrG,KAAK6+C,WAAW,GAAK7+C,KAAK0+C,UAAU3/C,GAAG2H,EAAEL,CAG/C,CACF,EAEAzH,gBAAgB,CAACiuB,0BAA2B4xB,cAa5C7/C,gBAAgB,CAACiuB,0BAA2BiyB,oBAU5ClgD,gBAAgB,CAACiuB,0BAA2BmyB,kBAQ5CpgD,gBAAgB,CAACiuB,0BAA2BoyB,gBAiB5CC,iBAAiB//C,UAAU6gD,cAAgB,SAAUz1B,EAAQ3L,GAK3D,IAJA,IAAI7f,EAAI,EACJE,EAAMe,KAAKwL,EAAEnT,OAAS,EAGnB0G,EAAIE,GAAK,CAGd,GAFOhD,KAAK2H,IAAI2mB,EAAW,EAAJxrB,GAASwrB,EAAgB,EAAT3L,EAAiB,EAAJ7f,IAEzC,IACT,OAAO,EAGTA,GAAK,CACP,CAEA,OAAO,CACT,EAEAmgD,iBAAiB//C,UAAUogD,iBAAmB,WAC5C,GAAIv/C,KAAKwL,EAAEnT,OAAS,IAAM2H,KAAKmN,EAAE9U,OAAS,EACxC,OAAO,EAGT,GAAI2H,KAAK+I,KAAKkB,EAAEA,EAAE,GAAG7D,EAInB,IAHA,IAAIrH,EAAI,EACJE,EAAMe,KAAK+I,KAAKkB,EAAEA,EAAE5R,OAEjB0G,EAAIE,GAAK,CACd,IAAKe,KAAKggD,cAAchgD,KAAK+I,KAAKkB,EAAEA,EAAElL,GAAGqH,EAAGpG,KAAK+I,KAAKrC,GACpD,OAAO,EAGT3H,GAAK,CACP,MACK,IAAKiB,KAAKggD,cAAchgD,KAAK+I,KAAKkB,EAAEA,EAAGjK,KAAK+I,KAAKrC,GACtD,OAAO,EAGT,OAAO,CACT,EAEAw4C,iBAAiB//C,UAAUitB,SAAW,SAAUiR,GAM9C,GALAr9B,KAAKP,KAAK2sB,WACVpsB,KAAKurB,MAAO,EACZvrB,KAAKo/C,OAAQ,EACbp/C,KAAKq/C,OAAQ,EAETr/C,KAAKP,KAAK8rB,MAAQ8R,EAAa,CACjC,IAAIt+B,EAEAusB,EACAznB,EAFA5E,EAAoB,EAAde,KAAK+I,KAAKrC,EAIpB,IAAK3H,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBusB,EAAOvsB,EAAI,IAAM,EAAI,IAAM,IAC3B8E,EAAM5H,KAAKoI,MAAMrE,KAAKP,KAAK4G,EAAEtH,GAAKusB,GAE9BtrB,KAAKmN,EAAEpO,KAAO8E,IAChB7D,KAAKmN,EAAEpO,GAAK8E,EACZ7D,KAAKo/C,OAAS/hB,GAIlB,GAAIr9B,KAAKwL,EAAEnT,OAGT,IAFA4G,EAAMe,KAAKP,KAAK4G,EAAEhO,OAEb0G,EAAkB,EAAdiB,KAAK+I,KAAKrC,EAAO3H,EAAIE,EAAKF,GAAK,EACtCusB,EAAOvsB,EAAI,IAAM,EAAI,IAAM,EAC3B8E,EAAM9E,EAAI,IAAM,EAAI9C,KAAKoI,MAAuB,IAAjBrE,KAAKP,KAAK4G,EAAEtH,IAAYiB,KAAKP,KAAK4G,EAAEtH,GAE/DiB,KAAKwL,EAAEzM,EAAkB,EAAdiB,KAAK+I,KAAKrC,KAAW7C,IAClC7D,KAAKwL,EAAEzM,EAAkB,EAAdiB,KAAK+I,KAAKrC,GAAS7C,EAC9B7D,KAAKq/C,OAAShiB,GAKpBr9B,KAAKurB,MAAQ8R,CACf,CACF,EAEAz+B,gBAAgB,CAACiuB,0BAA2BqyB,kBAQ5CO,yBAAyBtgD,UAAUugD,iBAAmB,SAAUtjC,EAAMrT,EAAMg2C,GAC1E/+C,KAAKwL,EAAIihB,gBAAgBC,QAAQtQ,EAAMrT,EAAKyC,EAAG,EAAG,IAAMxL,MACxDA,KAAKoG,EAAIqmB,gBAAgBC,QAAQtQ,EAAMrT,EAAK3C,EAAG,EAAG,KAAMpG,MACxDA,KAAK0J,EAAI+iB,gBAAgBC,QAAQtQ,EAAMrT,EAAKW,EAAG,EAAG,KAAM1J,MACxDA,KAAKmG,EAAIsmB,gBAAgBC,QAAQtQ,EAAMrT,EAAK5C,GAAK,CAC/C8D,EAAG,GACF,EAAG,IAAMjK,MACZA,KAAK4M,EAAI6f,gBAAgBC,QAAQtQ,EAAMrT,EAAK6D,GAAK,CAC/C3C,EAAG,GACF,EAAGjG,UAAWhE,MACjBA,KAAKuG,EAAI,IAAI24C,iBAAiB9iC,EAAMrT,EAAKxC,EAAGvG,MAC5CA,KAAKpL,MAAQmqD,EACb/+C,KAAKigD,MAAQ,GACbjgD,KAAKkgD,gBAAgBnB,EAAQR,MAAOx1C,GACpC/I,KAAKmgD,mBAAmBp3C,EAAMg2C,GAC9B/+C,KAAK+sB,cAAgB/sB,KAAK+sB,WAC5B,EAEA0yB,yBAAyBtgD,UAAU+gD,gBAAkB,SAAUE,EAAar3C,GAC1E,IAAIs3C,EAAar6C,kBACbs6C,EAAQn4C,SAAoB,IAAXY,EAAKnC,EAAU,iBAAmB,kBACvD05C,EAAMpjC,aAAa,KAAMmjC,GACzBC,EAAMpjC,aAAa,eAAgB,OACnCojC,EAAMpjC,aAAa,gBAAiB,kBACpC,IACInmB,EACAgT,EACAC,EAHAi2C,EAAQ,GAMZ,IAFAj2C,EAAkB,EAAXjB,EAAKxC,EAAEG,EAETqD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBhT,EAAOoR,SAAS,QAChBm4C,EAAMvtC,YAAYhc,GAClBkpD,EAAM3/C,KAAKvJ,GAGbqpD,EAAYljC,aAAyB,OAAZnU,EAAK0B,GAAc,OAAS,SAAU,OAAS/L,kBAAoB,IAAM2hD,EAAa,KAC/GrgD,KAAKugD,GAAKD,EACVtgD,KAAKwgD,IAAMP,CACb,EAEAR,yBAAyBtgD,UAAUghD,mBAAqB,SAAUp3C,EAAMg2C,GACtE,GAAI/+C,KAAKuG,EAAEi5C,cAAgBx/C,KAAKuG,EAAE+4C,aAAc,CAC9C,IAAIvoD,EACAgT,EACAC,EACAstC,EAAOnvC,SAAS,QAChBkuC,EAAcluC,SAAS,QAC3BmvC,EAAKvkC,YAAYsjC,GACjB,IAAIoK,EAAYz6C,kBACZ06C,EAAS16C,kBACbsxC,EAAKp6B,aAAa,KAAMwjC,GACxB,IAAIC,EAASx4C,SAAoB,IAAXY,EAAKnC,EAAU,iBAAmB,kBACxD+5C,EAAOzjC,aAAa,KAAMujC,GAC1BE,EAAOzjC,aAAa,eAAgB,OACpCyjC,EAAOzjC,aAAa,gBAAiB,kBACrClT,EAAOjB,EAAKxC,EAAE0D,EAAEA,EAAE,GAAG7D,EAAI2C,EAAKxC,EAAE0D,EAAEA,EAAE,GAAG7D,EAAE/N,OAAS0Q,EAAKxC,EAAE0D,EAAEA,EAAE5R,OAC7D,IAAI4nD,EAAQjgD,KAAKigD,MAEjB,IAAKl2C,EAAe,EAAXhB,EAAKxC,EAAEG,EAAOqD,EAAIC,EAAMD,GAAK,GACpChT,EAAOoR,SAAS,SACX+U,aAAa,aAAc,oBAChCyjC,EAAO5tC,YAAYhc,GACnBkpD,EAAM3/C,KAAKvJ,GAGbs/C,EAAYn5B,aAAyB,OAAZnU,EAAK0B,GAAc,OAAS,SAAU,OAAS/L,kBAAoB,IAAM+hD,EAAY,KAE9F,OAAZ13C,EAAK0B,KACP4rC,EAAYn5B,aAAa,iBAAkB4gC,YAAY/0C,EAAK63C,IAAM,IAClEvK,EAAYn5B,aAAa,kBAAmB6gC,aAAah1C,EAAKw/B,IAAM,IAEpD,IAAZx/B,EAAKw/B,IACP8N,EAAYn5B,aAAa,oBAAqBnU,EAAKu/B,KAIvDtoC,KAAK6gD,GAAKF,EACV3gD,KAAK8gD,GAAKxJ,EACVt3C,KAAK+gD,IAAMd,EACXjgD,KAAK0gD,OAASA,EACd3B,EAAQP,OAASnI,CACnB,CACF,EAEAz3C,gBAAgB,CAACiuB,0BAA2B4yB,0BAW5C7gD,gBAAgB,CAAC6gD,yBAA0B5yB,0BAA2B8yB,4BAkBtE,IAAIqB,iBAAmB,SAA0B5H,EAAW/gD,EAAQiV,EAAQ8vB,GAC1E,GAAe,IAAX/kC,EACF,MAAO,GAGT,IAGI0G,EAHAkiD,EAAK7H,EAAU5tC,EACf01C,EAAK9H,EAAUr6C,EACf0xB,EAAK2oB,EAAU/yC,EAEf86C,EAAc,KAAO/jB,EAAI1F,wBAAwBjH,EAAG,GAAG,GAAIA,EAAG,GAAG,IAErE,IAAK1xB,EAAI,EAAGA,EAAI1G,EAAQ0G,GAAK,EAC3BoiD,GAAe,KAAO/jB,EAAI1F,wBAAwBupB,EAAGliD,EAAI,GAAG,GAAIkiD,EAAGliD,EAAI,GAAG,IAAM,IAAMq+B,EAAI1F,wBAAwBwpB,EAAGniD,GAAG,GAAImiD,EAAGniD,GAAG,IAAM,IAAMq+B,EAAI1F,wBAAwBjH,EAAG1xB,GAAG,GAAI0xB,EAAG1xB,GAAG,IAQ5L,OALIuO,GAAUjV,IACZ8oD,GAAe,KAAO/jB,EAAI1F,wBAAwBupB,EAAGliD,EAAI,GAAG,GAAIkiD,EAAGliD,EAAI,GAAG,IAAM,IAAMq+B,EAAI1F,wBAAwBwpB,EAAG,GAAG,GAAIA,EAAG,GAAG,IAAM,IAAM9jB,EAAI1F,wBAAwBjH,EAAG,GAAG,GAAIA,EAAG,GAAG,IAC1L0wB,GAAe,KAGVA,CACT,EAEIC,oBAAsB,WACxB,IAAIC,EAAkB,IAAI7uB,OAEtB8uB,EAAgB,IAAI9uB,OAqCxB,SAAS+uB,EAAuBC,EAAWC,EAAUvI,IAC/CA,GAAgBuI,EAASxtB,UAAUxnB,GAAG8e,OACxCk2B,EAASxtB,UAAUz7B,UAAU0kB,aAAa,UAAWukC,EAASxtB,UAAUxnB,GAAGpG,IAGzE6yC,GAAgBuI,EAASxtB,UAAU8S,OAAOxb,OAC5Ck2B,EAASxtB,UAAUz7B,UAAU0kB,aAAa,YAAaukC,EAASxtB,UAAU8S,OAAO1gC,EAAEyxB,UAEvF,CAEA,SAAS4pB,IAAc,CAEvB,SAASC,EAAWH,EAAWC,EAAUvI,GACvC,IAAInvC,EACAC,EACA43C,EACAC,EACAzI,EACAxlB,EAGAnE,EACA2N,EACA0kB,EACA73C,EALA83C,EAAON,EAASvd,OAAO7rC,OACvBgmD,EAAMoD,EAASpD,IAMnB,IAAKzqB,EAAI,EAAGA,EAAImuB,EAAMnuB,GAAK,EAAG,CAG5B,GAFAiuB,EAASJ,EAASh5B,GAAG8C,MAAQ2tB,EAEzBuI,EAASvd,OAAOtQ,GAAGyqB,IAAMA,EAAK,CAKhC,IAJAjhB,EAAMkkB,EAAcvxB,QACpB+xB,EAAazD,EAAMoD,EAASvd,OAAOtQ,GAAGyqB,IACtCp0C,EAAIw3C,EAASxD,aAAa5lD,OAAS,GAE3BwpD,GAAUC,EAAa,GAC7BD,EAASJ,EAASxD,aAAah0C,GAAG88B,OAAOxb,MAAQs2B,EACjDC,GAAc,EACd73C,GAAK,EAGP,GAAI43C,EAIF,IAHAC,EAAazD,EAAMoD,EAASvd,OAAOtQ,GAAGyqB,IACtCp0C,EAAIw3C,EAASxD,aAAa5lD,OAAS,EAE5BypD,EAAa,GAClB1kB,EAAIpH,SAASyrB,EAASxD,aAAah0C,GAAG88B,OAAO1gC,GAC7Cy7C,GAAc,EACd73C,GAAK,CAGX,MACEmzB,EAAMikB,EAMR,GAFAr3C,GADAylB,EAAQgyB,EAASh5B,GAAGgH,OACP7O,QAETihC,EAAQ,CAGV,IAFAD,EAAwB,GAEnB73C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzBqvC,EAAY3pB,EAAM5kB,OAAOd,KAERqvC,EAAUx4B,UACzBghC,GAAyBZ,iBAAiB5H,EAAWA,EAAUx4B,QAASw4B,EAAUjsC,EAAGiwB,IAIzFqkB,EAAStD,OAAOvqB,GAAKguB,CACvB,MACEA,EAAwBH,EAAStD,OAAOvqB,GAG1C6tB,EAASvd,OAAOtQ,GAAG9sB,IAAsB,IAAjB06C,EAAU3F,GAAc,GAAK+F,EACrDH,EAASvd,OAAOtQ,GAAGrI,KAAOs2B,GAAUJ,EAASvd,OAAOtQ,GAAGrI,IACzD,CACF,CAEA,SAASy2B,EAAWR,EAAWC,EAAUvI,GACvC,IAAI+I,EAAYR,EAAS7sD,OAErB6sD,EAASt0C,EAAEoe,MAAQ2tB,IACrB+I,EAAU1D,MAAMrhC,aAAa,OAAQ,OAASha,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,MAGzIo7C,EAASj2C,EAAE+f,MAAQ2tB,IACrB+I,EAAU1D,MAAMrhC,aAAa,eAAgBukC,EAASj2C,EAAEnF,EAE5D,CAEA,SAAS67C,EAAqBV,EAAWC,EAAUvI,GACjDiJ,EAAeX,EAAWC,EAAUvI,GACpCkJ,EAAaZ,EAAWC,EAAUvI,EACpC,CAEA,SAASiJ,EAAeX,EAAWC,EAAUvI,GAC3C,IAsBI+G,EACAlhD,EACAE,EACAlI,EA+CEq6B,EAxEFkvB,EAAQmB,EAASlB,GACjB8B,EAAaZ,EAASl7C,EAAEi5C,YACxBt9B,EAAMu/B,EAASr7C,EAAEC,EACjB8b,EAAMs/B,EAAS/3C,EAAErD,EAErB,GAAIo7C,EAASj2C,EAAE+f,MAAQ2tB,EAAc,CACnC,IAAIh6C,EAAwB,OAAjBsiD,EAAU/2C,GAAc,eAAiB,iBACpDg3C,EAAS7sD,MAAM2pD,MAAMrhC,aAAahe,EAAMuiD,EAASj2C,EAAEnF,EACrD,CAEA,GAAIo7C,EAASr7C,EAAEmlB,MAAQ2tB,EAAc,CACnC,IAAIoJ,EAAwB,IAAhBd,EAAU56C,EAAU,KAAO,KACnC27C,EAAkB,OAAVD,EAAiB,KAAO,KACpChC,EAAMpjC,aAAaolC,EAAOpgC,EAAI,IAC9Bo+B,EAAMpjC,aAAaqlC,EAAOrgC,EAAI,IAE1BmgC,IAAeZ,EAASl7C,EAAE+4C,eAC5BmC,EAASZ,GAAG3jC,aAAaolC,EAAOpgC,EAAI,IACpCu/B,EAASZ,GAAG3jC,aAAaqlC,EAAOrgC,EAAI,IAExC,CAOA,GAAIu/B,EAASl7C,EAAE64C,OAASlG,EAAc,CACpC+G,EAAQwB,EAASjB,IACjB,IAAIgC,EAAUf,EAASl7C,EAAE4G,EAGzB,IAFAlO,EAAMghD,EAAM5nD,OAEP0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,GACxBhI,EAAOkpD,EAAMlhD,IACRme,aAAa,SAAUslC,EAAY,EAAJzjD,GAAS,KAC7ChI,EAAKmmB,aAAa,aAAc,OAASslC,EAAY,EAAJzjD,EAAQ,GAAK,IAAMyjD,EAAY,EAAJzjD,EAAQ,GAAK,IAAMyjD,EAAY,EAAJzjD,EAAQ,GAAK,IAExH,CAEA,GAAIsjD,IAAeZ,EAASl7C,EAAE84C,OAASnG,GAAe,CACpD,IAAIuJ,EAAUhB,EAASl7C,EAAEiF,EAUzB,IAFAvM,GALEghD,EADEwB,EAASl7C,EAAE+4C,aACLmC,EAASjB,IAETiB,EAASV,KAGP1oD,OAEP0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBhI,EAAOkpD,EAAMlhD,GAER0iD,EAASl7C,EAAE+4C,cACdvoD,EAAKmmB,aAAa,SAAUulC,EAAY,EAAJ1jD,GAAS,KAG/ChI,EAAKmmB,aAAa,eAAgBulC,EAAY,EAAJ1jD,EAAQ,GAEtD,CAEA,GAAoB,IAAhByiD,EAAU56C,GACR66C,EAAS/3C,EAAE6hB,MAAQ2tB,KACrBoH,EAAMpjC,aAAa,KAAMiF,EAAI,IAC7Bm+B,EAAMpjC,aAAa,KAAMiF,EAAI,IAEzBkgC,IAAeZ,EAASl7C,EAAE+4C,eAC5BmC,EAASZ,GAAG3jC,aAAa,KAAMiF,EAAI,IACnCs/B,EAASZ,GAAG3jC,aAAa,KAAMiF,EAAI,WAevC,IATIs/B,EAASr7C,EAAEmlB,MAAQk2B,EAAS/3C,EAAE6hB,MAAQ2tB,KACxC9nB,EAAMn1B,KAAKgH,KAAKhH,KAAK8G,IAAImf,EAAI,GAAKC,EAAI,GAAI,GAAKlmB,KAAK8G,IAAImf,EAAI,GAAKC,EAAI,GAAI,IACzEm+B,EAAMpjC,aAAa,IAAKkU,GAEpBixB,IAAeZ,EAASl7C,EAAE+4C,cAC5BmC,EAASZ,GAAG3jC,aAAa,IAAKkU,IAI9BqwB,EAAS/3C,EAAE6hB,MAAQk2B,EAASt7C,EAAEolB,MAAQk2B,EAAS70C,EAAE2e,MAAQ2tB,EAAc,CACpE9nB,IACHA,EAAMn1B,KAAKgH,KAAKhH,KAAK8G,IAAImf,EAAI,GAAKC,EAAI,GAAI,GAAKlmB,KAAK8G,IAAImf,EAAI,GAAKC,EAAI,GAAI,KAG3E,IAAIugC,EAAMzmD,KAAKkuB,MAAMhI,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/CwD,EAAU+7B,EAASt7C,EAAEE,EAErBqf,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAGb,IAAIuc,EAAO7Q,EAAM1L,EACb9qB,EAAIqB,KAAKwuB,IAAIi4B,EAAMjB,EAAS70C,EAAEvG,GAAK47B,EAAO/f,EAAI,GAC9CnnB,EAAIkB,KAAK2tB,IAAI84B,EAAMjB,EAAS70C,EAAEvG,GAAK47B,EAAO/f,EAAI,GAClDo+B,EAAMpjC,aAAa,KAAMtiB,GACzB0lD,EAAMpjC,aAAa,KAAMniB,GAErBsnD,IAAeZ,EAASl7C,EAAE+4C,eAC5BmC,EAASZ,GAAG3jC,aAAa,KAAMtiB,GAC/B6mD,EAASZ,GAAG3jC,aAAa,KAAMniB,GAEnC,CAGJ,CAEA,SAASqnD,EAAaZ,EAAWC,EAAUvI,GACzC,IAAI+I,EAAYR,EAAS7sD,MACrBkS,EAAI26C,EAAS36C,EAEbA,IAAMA,EAAEykB,MAAQ2tB,IAAiBpyC,EAAE63C,UACrCsD,EAAU1D,MAAMrhC,aAAa,mBAAoBpW,EAAE63C,SACnDsD,EAAU1D,MAAMrhC,aAAa,oBAAqBpW,EAAE+3C,WAAW,KAG7D4C,EAASt0C,IAAMs0C,EAASt0C,EAAEoe,MAAQ2tB,IACpC+I,EAAU1D,MAAMrhC,aAAa,SAAU,OAASha,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,MAG3Io7C,EAASj2C,EAAE+f,MAAQ2tB,IACrB+I,EAAU1D,MAAMrhC,aAAa,iBAAkBukC,EAASj2C,EAAEnF,IAGxDo7C,EAAS3Y,EAAEvd,MAAQ2tB,KACrB+I,EAAU1D,MAAMrhC,aAAa,eAAgBukC,EAAS3Y,EAAEziC,GAEpD47C,EAAUzD,QACZyD,EAAUzD,OAAOthC,aAAa,eAAgBukC,EAAS3Y,EAAEziC,GAG/D,CAEA,MA7QS,CACPs8C,qBAGF,SAA8B55C,GAC5B,OAAQA,EAAK0B,IACX,IAAK,KACH,OAAOu3C,EAET,IAAK,KACH,OAAOG,EAET,IAAK,KACH,OAAOD,EAET,IAAK,KACH,OAAOE,EAET,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACH,OAAOT,EAET,IAAK,KACH,OAAOJ,EAET,IAAK,KACH,OAAOG,EAET,QACE,OAAO,KAEb,EA6OF,CAnR0B,GAqR1B,SAASkB,gBAAgB75C,EAAMoO,EAAYnM,GAEzChL,KAAK6K,OAAS,GAEd7K,KAAKgzC,WAAajqC,EAAK8B,OAEvB7K,KAAK6iD,WAAa,GAElB7iD,KAAKu9C,eAAiB,GAEtBv9C,KAAKizC,UAAY,GAEjBjzC,KAAK49C,kBAAoB,GAEzB59C,KAAK8iD,iBAAmB,GACxB9iD,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,GAGnChL,KAAK6/C,aAAe,EACtB,CAyWA,SAASkD,YAAYv3C,EAAGw3C,EAAInV,EAAIoV,EAAIpvB,EAAGntB,GACrC1G,KAAKwL,EAAIA,EACTxL,KAAKgjD,GAAKA,EACVhjD,KAAK6tC,GAAKA,EACV7tC,KAAKijD,GAAKA,EACVjjD,KAAK6zB,EAAIA,EACT7zB,KAAK0G,EAAIA,EACT1G,KAAKurB,KAAO,CACV/f,GAAG,EACHw3C,KAAMA,EACNnV,KAAMA,EACNoV,KAAMA,EACNpvB,GAAG,EACHntB,GAAG,EAEP,CAkDA,SAASw8C,aAAa9mC,EAAMrT,GAC1B/I,KAAKmjD,SAAW9kD,oBAChB2B,KAAK4mB,GAAK,GACV5mB,KAAKqG,EAAI,GACTrG,KAAK8rB,IAAK,EACV9rB,KAAK4rB,eAAgB,EACrB5rB,KAAKurB,MAAO,EAERxiB,EAAKjC,GAAKiC,EAAKjC,EAAE6lB,MACnB5jB,EAAKjC,EAAIsV,EAAKjF,WAAWyV,YAAYF,QAAQ3jB,EAAKjC,IAGpD9G,KAAK+I,KAAOA,EACZ/I,KAAKoc,KAAOA,EACZpc,KAAKgL,KAAOhL,KAAKoc,KAAKpR,KACtBhL,KAAKojD,UAAY,EACjBpjD,KAAKqjD,WAAY,EACjBrjD,KAAKsjD,gBAAkB,EACvBtjD,KAAK0rB,gBAAkB,GACvB1rB,KAAKujD,YAAc,CACjBC,OAAQ,EACRC,SAAUzjD,KAAK0jD,gBACfj9C,EAAG,GACH09B,OAAQ,GACRC,QAAS,GACT6e,GAAI,GACJl5C,EAAG,GACH45C,cAAe,GACf/vB,EAAG,GACHgwB,GAAI,EACJC,WAAY,GACZC,GAAI,GACJjD,GAAI,GACJz6C,EAAG,GACHynC,GAAI,GACJmV,GAAI,EACJp8C,EAAG,EACH29B,GAAI,EACJ7Q,GAAI,EACJqwB,GAAI,KACJC,eAAe,EACfC,iBAAiB,EACjBC,iBAAiB,EACjBC,QAAS,EACTC,UAAW,EACXC,UAAW,GACXC,gBAAiB,EACjB72C,YAAY,GAEdzN,KAAKukD,SAASvkD,KAAKujD,YAAavjD,KAAK+I,KAAKjC,EAAEmD,EAAE,GAAG7D,GAE5CpG,KAAKwkD,kBACRxkD,KAAKykD,iBAAiBzkD,KAAKujD,YAE/B,CA9dA3kD,gBAAgB,CAACuyC,YAAagF,iBAAkBuE,eAAgBO,cAAeN,iBAAkBvJ,aAAcwJ,sBAAuBgI,iBAEtIA,gBAAgBzjD,UAAUulD,qBAAuB,WAAa,EAE9D9B,gBAAgBzjD,UAAUwlD,eAAiB,IAAInyB,OAE/CowB,gBAAgBzjD,UAAUylD,yBAA2B,WAAa,EAElEhC,gBAAgBzjD,UAAU89C,cAAgB,WACxCj9C,KAAK6kD,aAAa7kD,KAAKgzC,WAAYhzC,KAAKizC,UAAWjzC,KAAK6/C,aAAc7/C,KAAKwzC,aAAc,EAAG,IAAI,GAChGxzC,KAAK8kD,oBACP,EAMAlC,gBAAgBzjD,UAAU2lD,mBAAqB,WAC7C,IAAI/lD,EAEAyvB,EACAzkB,EAEAnV,EAJAqK,EAAMe,KAAK6K,OAAOxS,OAGlB2R,EAAOhK,KAAK6iD,WAAWxqD,OAEvB0sD,EAAa,GACbC,GAAc,EAElB,IAAKj7C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAK5B,IAJAnV,EAAQoL,KAAK6iD,WAAW94C,GACxBi7C,GAAc,EACdD,EAAW1sD,OAAS,EAEf0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,GAGa,KAFrCyvB,EAAQxuB,KAAK6K,OAAO9L,IAEVmlC,OAAOh2B,QAAQtZ,KACvBmwD,EAAWzkD,KAAKkuB,GAChBw2B,EAAcx2B,EAAMzB,aAAei4B,GAInCD,EAAW1sD,OAAS,GAAK2sD,GAC3BhlD,KAAKilD,oBAAoBF,EAE7B,CACF,EAEAnC,gBAAgBzjD,UAAU8lD,oBAAsB,SAAUp6C,GACxD,IAAI9L,EACAE,EAAM4L,EAAOxS,OAEjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB8L,EAAO9L,GAAGq7B,eAEd,EAEAwoB,gBAAgBzjD,UAAU+lD,mBAAqB,SAAUn8C,EAAMm1C,GAE7D,IAAIiH,EACApG,EAAU,IAAIT,aAAav1C,EAAMm1C,GACjCkC,EAAcrB,EAAQR,MAgD1B,MA9CgB,OAAZx1C,EAAK0B,GACP06C,EAAc,IAAIrG,mBAAmB9+C,KAAM+I,EAAMg2C,GAC5B,OAAZh2C,EAAK0B,GACd06C,EAAc,IAAInG,iBAAiBh/C,KAAM+I,EAAMg2C,GAC1B,OAAZh2C,EAAK0B,IAA2B,OAAZ1B,EAAK0B,IAElC06C,EAAc,IADwB,OAAZp8C,EAAK0B,GAAcg1C,yBAA2BE,4BAClC3/C,KAAM+I,EAAMg2C,GAClD/+C,KAAKmX,WAAWC,KAAKrE,YAAYoyC,EAAY5E,IAEzC4E,EAAYzE,SACd1gD,KAAKmX,WAAWC,KAAKrE,YAAYoyC,EAAYrE,IAC7C9gD,KAAKmX,WAAWC,KAAKrE,YAAYoyC,EAAYtE,IAC7CT,EAAYljC,aAAa,OAAQ,OAASxe,kBAAoB,IAAMymD,EAAYzE,OAAS,OAEtE,OAAZ33C,EAAK0B,KACd06C,EAAc,IAAIlG,eAAej/C,KAAM+I,EAAMg2C,IAG/B,OAAZh2C,EAAK0B,IAA2B,OAAZ1B,EAAK0B,KAC3B21C,EAAYljC,aAAa,iBAAkB4gC,YAAY/0C,EAAK63C,IAAM,IAClER,EAAYljC,aAAa,kBAAmB6gC,aAAah1C,EAAKw/B,IAAM,IACpE6X,EAAYljC,aAAa,eAAgB,KAEzB,IAAZnU,EAAKw/B,IACP6X,EAAYljC,aAAa,oBAAqBnU,EAAKu/B,KAIxC,IAAXv/B,EAAKzC,GACP85C,EAAYljC,aAAa,YAAa,WAGpCnU,EAAK6yC,IACPwE,EAAYljC,aAAa,KAAMnU,EAAK6yC,IAGlC7yC,EAAKwE,IACP6yC,EAAYljC,aAAa,QAASnU,EAAKwE,IAGrCxE,EAAKuqC,KACP8M,EAAYxrD,MAAM,kBAAoBu7C,aAAapnC,EAAKuqC,KAG1DtzC,KAAK6iD,WAAWviD,KAAKy+C,GACrB/+C,KAAKolD,sBAAsBr8C,EAAMo8C,GAC1BA,CACT,EAEAvC,gBAAgBzjD,UAAUkmD,mBAAqB,SAAUt8C,GACvD,IAAIo8C,EAAc,IAAIvF,eActB,OAZI72C,EAAK6yC,IACPuJ,EAAYrF,GAAG5iC,aAAa,KAAMnU,EAAK6yC,IAGrC7yC,EAAKwE,IACP43C,EAAYrF,GAAG5iC,aAAa,QAASnU,EAAKwE,IAGxCxE,EAAKuqC,KACP6R,EAAYrF,GAAGlrD,MAAM,kBAAoBu7C,aAAapnC,EAAKuqC,KAGtD6R,CACT,EAEAvC,gBAAgBzjD,UAAUmmD,uBAAyB,SAAUv8C,EAAMvQ,GACjE,IAAI+sD,EAAoBhpB,yBAAyBqB,qBAAqB59B,KAAM+I,EAAM/I,MAC9EmlD,EAAc,IAAIpF,iBAAiBwF,EAAmBA,EAAkB/5C,EAAGhT,GAE/E,OADAwH,KAAKolD,sBAAsBr8C,EAAMo8C,GAC1BA,CACT,EAEAvC,gBAAgBzjD,UAAUqmD,mBAAqB,SAAUz8C,EAAM08C,EAAiBvH,GAC9E,IAAIzzC,EAAK,EAEO,OAAZ1B,EAAK0B,GACPA,EAAK,EACgB,OAAZ1B,EAAK0B,GACdA,EAAK,EACgB,OAAZ1B,EAAK0B,KACdA,EAAK,GAGP,IACI06C,EAAc,IAAInH,aAAayH,EAAiBvH,EADhClvB,qBAAqB+nB,aAAa/2C,KAAM+I,EAAM0B,EAAIzK,OAKtE,OAHAA,KAAK6K,OAAOvK,KAAK6kD,GACjBnlD,KAAKs9C,oBAAoB6H,GACzBnlD,KAAKolD,sBAAsBr8C,EAAMo8C,GAC1BA,CACT,EAEAvC,gBAAgBzjD,UAAUimD,sBAAwB,SAAUr8C,EAAMxE,GAIhE,IAHA,IAAIxF,EAAI,EACJE,EAAMe,KAAK8iD,iBAAiBzqD,OAEzB0G,EAAIE,GAAK,CACd,GAAIe,KAAK8iD,iBAAiB/jD,GAAGwF,UAAYA,EACvC,OAGFxF,GAAK,CACP,CAEAiB,KAAK8iD,iBAAiBxiD,KAAK,CACzB4I,GAAIk4C,oBAAoBuB,qBAAqB55C,GAC7CxE,QAASA,EACTwE,KAAMA,GAEV,EAEA65C,gBAAgBzjD,UAAUumD,iBAAmB,SAAUP,GACrD,IACIp7C,EADApI,EAAMwjD,EAAYjhB,OAElBl6B,EAAOhK,KAAK6iD,WAAWxqD,OAE3B,IAAK0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACpB/J,KAAK6iD,WAAW94C,GAAGuD,QACtB3L,EAAIrB,KAAKN,KAAK6iD,WAAW94C,GAG/B,EAEA64C,gBAAgBzjD,UAAUmnC,aAAe,WAEvC,IAAIvnC,EADJiB,KAAK4rB,eAAgB,EAErB,IAAI3sB,EAAMe,KAAKizC,UAAU56C,OAEzB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK6/C,aAAa9gD,GAAKiB,KAAKizC,UAAUl0C,GAOxC,IAJAiB,KAAK6kD,aAAa7kD,KAAKgzC,WAAYhzC,KAAKizC,UAAWjzC,KAAK6/C,aAAc7/C,KAAKwzC,aAAc,EAAG,IAAI,GAChGxzC,KAAK8kD,qBACL7lD,EAAMe,KAAK8sB,kBAAkBz0B,OAExB0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK8sB,kBAAkB/tB,GAAGqtB,WAG5BpsB,KAAK09C,iBACP,EAEAkF,gBAAgBzjD,UAAU0lD,aAAe,SAAUljD,EAAKsxC,EAAW4M,EAAcrnD,EAAW0lD,EAAOD,EAAc0H,GAC/G,IACI5mD,EAEAgL,EACAC,EAGA47C,EACAC,EACAC,EATAL,EAAkB,GAAG3oC,OAAOmhC,GAE5Bh/C,EAAM0C,EAAItJ,OAAS,EAGnB0tD,EAAY,GACZC,EAAe,GAKnB,IAAKjnD,EAAIE,EAAKF,GAAK,EAAGA,GAAK,EAAG,CAS5B,IARA+mD,EAAe9lD,KAAK29C,uBAAuBh8C,EAAI5C,KAK7Ck0C,EAAUl0C,GAAK8gD,EAAaiG,EAAe,GAF3CnkD,EAAI5C,GAAG+mC,QAAU6f,EAKD,OAAdhkD,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,GAC5Fq7C,EAGH7S,EAAUl0C,GAAGnK,MAAM0Y,QAAS,EAF5B2lC,EAAUl0C,GAAKiB,KAAKklD,mBAAmBvjD,EAAI5C,GAAIm/C,GAK7Cv8C,EAAI5C,GAAG+mC,SACLmN,EAAUl0C,GAAGnK,MAAM2pD,MAAM/U,aAAehxC,GAC1CA,EAAUua,YAAYkgC,EAAUl0C,GAAGnK,MAAM2pD,OAI7CwH,EAAUzlD,KAAK2yC,EAAUl0C,GAAGnK,YACvB,GAAkB,OAAd+M,EAAI5C,GAAG0L,GAAa,CAC7B,GAAKq7C,EAKH,IAFA97C,EAAOipC,EAAUl0C,GAAGwM,GAAGlT,OAElB0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBkpC,EAAUl0C,GAAG8gD,aAAa91C,GAAKkpC,EAAUl0C,GAAGwM,GAAGxB,QALjDkpC,EAAUl0C,GAAKiB,KAAKqlD,mBAAmB1jD,EAAI5C,IAS7CiB,KAAK6kD,aAAaljD,EAAI5C,GAAGwM,GAAI0nC,EAAUl0C,GAAGwM,GAAI0nC,EAAUl0C,GAAG8gD,aAAc5M,EAAUl0C,GAAG+gD,GAAI5B,EAAQ,EAAGuH,EAAiBE,GAElHhkD,EAAI5C,GAAG+mC,SACLmN,EAAUl0C,GAAG+gD,GAAGtW,aAAehxC,GACjCA,EAAUua,YAAYkgC,EAAUl0C,GAAG+gD,GAGzC,KAAyB,OAAdn+C,EAAI5C,GAAG0L,IACXq7C,IACH7S,EAAUl0C,GAAKiB,KAAKslD,uBAAuB3jD,EAAI5C,GAAIvG,IAGrDotD,EAAmB3S,EAAUl0C,GAAGk1B,UAChCwxB,EAAgBnlD,KAAKslD,IACE,OAAdjkD,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAC7Eq7C,IACH7S,EAAUl0C,GAAKiB,KAAKwlD,mBAAmB7jD,EAAI5C,GAAI0mD,EAAiBvH,IAGlEl+C,KAAK0lD,iBAAiBzS,EAAUl0C,KACT,OAAd4C,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IACzHq7C,GAMHD,EAAW5S,EAAUl0C,IACZuO,QAAS,IANlBu4C,EAAWlsB,eAAeG,YAAYn4B,EAAI5C,GAAG0L,KACpCqQ,KAAK9a,KAAM2B,EAAI5C,IACxBk0C,EAAUl0C,GAAK8mD,EACf7lD,KAAKu9C,eAAej9C,KAAKulD,IAM3BG,EAAa1lD,KAAKulD,IACK,OAAdlkD,EAAI5C,GAAG0L,KACXq7C,GAOHD,EAAW5S,EAAUl0C,IACZuO,QAAS,GAPlBu4C,EAAWlsB,eAAeG,YAAYn4B,EAAI5C,GAAG0L,IAC7CwoC,EAAUl0C,GAAK8mD,EACfA,EAAS/qC,KAAK9a,KAAM2B,EAAK5C,EAAGk0C,GAC5BjzC,KAAKu9C,eAAej9C,KAAKulD,GACzBF,GAAS,GAMXK,EAAa1lD,KAAKulD,IAGpB7lD,KAAK69C,oBAAoBl8C,EAAI5C,GAAIA,EAAI,EACvC,CAIA,IAFAE,EAAM8mD,EAAU1tD,OAEX0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBgnD,EAAUhnD,GAAGuO,QAAS,EAKxB,IAFArO,EAAM+mD,EAAa3tD,OAEd0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBinD,EAAajnD,GAAGuO,QAAS,CAE7B,EAEAs1C,gBAAgBzjD,UAAU+9C,mBAAqB,WAE7C,IAAIn+C,EADJiB,KAAK09C,kBAEL,IAAIz+C,EAAMe,KAAK6iD,WAAWxqD,OAE1B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK6iD,WAAW9jD,GAAGgxB,QAKrB,IAFA/vB,KAAKimD,cAEAlnD,EAAI,EAAGA,EAAIE,EAAKF,GAAK,GACpBiB,KAAK6iD,WAAW9jD,GAAGwsB,MAAQvrB,KAAK4rB,iBAC9B5rB,KAAK6iD,WAAW9jD,GAAGy/C,SACrBx+C,KAAK6iD,WAAW9jD,GAAGy/C,OAAOthC,aAAa,IAAKld,KAAK6iD,WAAW9jD,GAAG+H,GAE/D9G,KAAK6iD,WAAW9jD,GAAG+H,EAAI,OAAS9G,KAAK6iD,WAAW9jD,GAAG+H,GAGrD9G,KAAK6iD,WAAW9jD,GAAGw/C,MAAMrhC,aAAa,IAAKld,KAAK6iD,WAAW9jD,GAAG+H,GAAK,QAGzE,EAEA87C,gBAAgBzjD,UAAU8mD,YAAc,WACtC,IAAIlnD,EAEAmnD,EADAjnD,EAAMe,KAAK8iD,iBAAiBzqD,OAGhC,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBmnD,EAAkBlmD,KAAK8iD,iBAAiB/jD,IAEnCiB,KAAK4rB,eAAiBs6B,EAAgB3hD,QAAQwoB,eAAyC,IAAzBm5B,EAAgBn9C,MACjFm9C,EAAgBh9C,GAAGg9C,EAAgBn9C,KAAMm9C,EAAgB3hD,QAASvE,KAAK4rB,cAG7E,EAEAg3B,gBAAgBzjD,UAAUnH,QAAU,WAClCgI,KAAKk8C,qBACLl8C,KAAKgzC,WAAa,KAClBhzC,KAAKizC,UAAY,IACnB,EAmBA8P,YAAY5jD,UAAUgnD,OAAS,SAAU36C,EAAGw3C,EAAInV,EAAIoV,EAAIpvB,EAAGntB,GACzD1G,KAAKurB,KAAK/f,GAAI,EACdxL,KAAKurB,KAAKy3B,IAAK,EACfhjD,KAAKurB,KAAKsiB,IAAK,EACf7tC,KAAKurB,KAAK03B,IAAK,EACfjjD,KAAKurB,KAAKsI,GAAI,EACd7zB,KAAKurB,KAAK7kB,GAAI,EACd,IAAI0/C,GAAU,EAsCd,OApCIpmD,KAAKwL,IAAMA,IACbxL,KAAKwL,EAAIA,EACTxL,KAAKurB,KAAK/f,GAAI,EACd46C,GAAU,GAGRpmD,KAAKgjD,KAAOA,IACdhjD,KAAKgjD,GAAKA,EACVhjD,KAAKurB,KAAKy3B,IAAK,EACfoD,GAAU,GAGRpmD,KAAK6tC,KAAOA,IACd7tC,KAAK6tC,GAAKA,EACV7tC,KAAKurB,KAAKsiB,IAAK,EACfuY,GAAU,GAGRpmD,KAAKijD,KAAOA,IACdjjD,KAAKijD,GAAKA,EACVjjD,KAAKurB,KAAK03B,IAAK,EACfmD,GAAU,GAGRpmD,KAAK6zB,IAAMA,IACb7zB,KAAK6zB,EAAIA,EACT7zB,KAAKurB,KAAKsI,GAAI,EACduyB,GAAU,IAGR1/C,EAAErO,QAAW2H,KAAK0G,EAAE,KAAOA,EAAE,IAAM1G,KAAK0G,EAAE,KAAOA,EAAE,IAAM1G,KAAK0G,EAAE,KAAOA,EAAE,IAAM1G,KAAK0G,EAAE,KAAOA,EAAE,IAAM1G,KAAK0G,EAAE,MAAQA,EAAE,KAAO1G,KAAK0G,EAAE,MAAQA,EAAE,MAChJ1G,KAAK0G,EAAIA,EACT1G,KAAKurB,KAAK7kB,GAAI,EACd0/C,GAAU,GAGLA,CACT,EA0DAlD,aAAa/jD,UAAUukD,gBAAkB,CAAC,EAAG,GAE7CR,aAAa/jD,UAAUolD,SAAW,SAAUriD,EAAK6G,GAC/C,IAAK,IAAI3C,KAAK2C,EACR3J,OAAOD,UAAUE,eAAeC,KAAKyJ,EAAM3C,KAC7ClE,EAAIkE,GAAK2C,EAAK3C,IAIlB,OAAOlE,CACT,EAEAghD,aAAa/jD,UAAUknD,eAAiB,SAAUt9C,GAC3CA,EAAK0E,YACRzN,KAAKykD,iBAAiB17C,GAGxB/I,KAAKujD,YAAcx6C,EACnB/I,KAAKujD,YAAYE,SAAWzjD,KAAKujD,YAAYE,UAAYzjD,KAAK0jD,gBAC9D1jD,KAAKurB,MAAO,CACd,EAEA23B,aAAa/jD,UAAUqlD,eAAiB,WACtC,OAAOxkD,KAAKsmD,iBACd,EAEApD,aAAa/jD,UAAUmnD,gBAAkB,WAOvC,OANAtmD,KAAK8rB,GAAK9rB,KAAK+I,KAAKjC,EAAEmD,EAAE5R,OAAS,EAE7B2H,KAAK8rB,IACP9rB,KAAK+rB,UAAU/rB,KAAKumD,iBAAiB70C,KAAK1R,OAGrCA,KAAK8rB,EACd,EAEAo3B,aAAa/jD,UAAU4sB,UAAY,SAAUC,GAC3ChsB,KAAK0rB,gBAAgBprB,KAAK0rB,GAC1BhsB,KAAKoc,KAAK6P,mBAAmBjsB,KAC/B,EAEAkjD,aAAa/jD,UAAUitB,SAAW,SAAUo6B,GAC1C,GAAKxmD,KAAKoc,KAAKjF,WAAWsU,UAAYzrB,KAAKyrB,SAAYzrB,KAAK0rB,gBAAgBrzB,QAAYmuD,EAAxF,CAIAxmD,KAAKujD,YAAY38C,EAAI5G,KAAK+I,KAAKjC,EAAEmD,EAAEjK,KAAKojD,WAAWh9C,EAAEQ,EACrD,IAAI6/C,EAAezmD,KAAKujD,YACpBmD,EAAe1mD,KAAKojD,UAExB,GAAIpjD,KAAK2rB,KACP3rB,KAAKqmD,eAAermD,KAAKujD,iBAD3B,CAOA,IAAIxkD,EAFJiB,KAAK2rB,MAAO,EACZ3rB,KAAKurB,MAAO,EAEZ,IAAItsB,EAAMe,KAAK0rB,gBAAgBrzB,OAC3BwzB,EAAa26B,GAAexmD,KAAK+I,KAAKjC,EAAEmD,EAAEjK,KAAKojD,WAAWh9C,EAE9D,IAAKrH,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAGtB8sB,EADE66B,IAAiB1mD,KAAKojD,UACXpjD,KAAK0rB,gBAAgB3sB,GAAG8sB,EAAYA,EAAWjlB,GAE/C5G,KAAK0rB,gBAAgB3sB,GAAGiB,KAAKujD,YAAa13B,EAAWjlB,GAIlE6/C,IAAiB56B,GACnB7rB,KAAKqmD,eAAex6B,GAGtB7rB,KAAKqG,EAAIrG,KAAKujD,YACdvjD,KAAK4mB,GAAK5mB,KAAKqG,EACfrG,KAAK2rB,MAAO,EACZ3rB,KAAKyrB,QAAUzrB,KAAKoc,KAAKjF,WAAWsU,OAxBpC,CATA,CAkCF,EAEAy3B,aAAa/jD,UAAUonD,iBAAmB,WAMxC,IALA,IAAII,EAAW3mD,KAAK+I,KAAKjC,EAAEmD,EACvBsc,EAAWvmB,KAAKoc,KAAKpR,KAAKggB,cAC1BjsB,EAAI,EACJE,EAAM0nD,EAAStuD,OAEZ0G,GAAKE,EAAM,KACZF,IAAME,EAAM,GAAK0nD,EAAS5nD,EAAI,GAAG6H,EAAI2f,IAIzCxnB,GAAK,EAOP,OAJIiB,KAAKojD,YAAcrkD,IACrBiB,KAAKojD,UAAYrkD,GAGZiB,KAAK+I,KAAKjC,EAAEmD,EAAEjK,KAAKojD,WAAWh9C,CACvC,EAEA88C,aAAa/jD,UAAUynD,eAAiB,SAAU3b,GAUhD,IATA,IAGIsB,EACAH,EAJAya,EAAkB,GAClB9nD,EAAI,EACJE,EAAMgsC,EAAK5yC,OAGXyuD,GAAgB,EAChBC,GAAoB,EACpBC,EAAe,GAEZjoD,EAAIE,GACT6nD,EAAgBC,EAChBA,GAAoB,EACpBxa,EAAWtB,EAAKK,WAAWvsC,GAC3BioD,EAAe/b,EAAKgc,OAAOloD,GAEvB6pC,YAAY6D,oBAAoBF,GAClCua,GAAgB,EACPva,GAAY,OAAUA,GAAY,MACvC3D,YAAY+D,eAAe1B,EAAMlsC,GACnCioD,EAAe/b,EAAKvzB,OAAO3Y,EAAG,KAE9BqtC,EAAiBnB,EAAKK,WAAWvsC,EAAI,KAEf,OAAUqtC,GAAkB,QAC5CxD,YAAYsD,WAAWK,EAAUH,IACnC4a,EAAe/b,EAAKvzB,OAAO3Y,EAAG,GAC9B+nD,GAAgB,GAEhBE,EADSpe,YAAY4D,YAAYvB,EAAKvzB,OAAO3Y,EAAG,IACjCksC,EAAKvzB,OAAO3Y,EAAG,GAEfksC,EAAKvzB,OAAO3Y,EAAG,IAI3BwtC,EAAW,OACpBH,EAAiBnB,EAAKK,WAAWvsC,EAAI,GAEjC6pC,YAAYgE,oBAAoBL,KAClCua,GAAgB,IAETle,YAAY0D,kBAAkBC,KACvCua,GAAgB,EAChBC,GAAoB,GAGlBD,GACFD,EAAgBA,EAAgBxuD,OAAS,IAAM2uD,EAC/CF,GAAgB,GAEhBD,EAAgBvmD,KAAK0mD,GAGvBjoD,GAAKioD,EAAa3uD,OAGpB,OAAOwuD,CACT,EAEA3D,aAAa/jD,UAAUslD,iBAAmB,SAAUv4C,GAClDA,EAAauB,YAAa,EAC1B,IAGI1O,EACAE,EACAioD,EAEArjD,EAQAkG,EACAC,EAEAuC,EAlBA8L,EAAcrY,KAAKoc,KAAKjF,WAAWkB,YACnCtP,EAAO/I,KAAK+I,KACZo+C,EAAU,GAIV3rC,EAAQ,EAER4rC,EAAiBr+C,EAAK8qB,EAAEttB,EACxB8gD,EAAc,EACdC,EAAa,EACbC,EAAc,EACd1D,EAAa,GACb2D,EAAY,EACZC,EAAe,EAGfxjB,EAAW5rB,EAAY61B,cAAchiC,EAAazF,GAElD04C,EAAU,EACV1U,EAAYzG,kBAAkBC,GAClC/3B,EAAak4B,QAAUqG,EAAUnG,OACjCp4B,EAAai4B,OAASsG,EAAU71C,MAChCsX,EAAak4C,UAAYl4C,EAAa9F,EACtC8F,EAAam4C,UAAYrkD,KAAK4mD,eAAe16C,EAAatF,GAC1D3H,EAAMiN,EAAam4C,UAAUhsD,OAC7B6T,EAAao4C,gBAAkBp4C,EAAa03C,GAC5C,IACIrX,EADAmb,EAAiBx7C,EAAaq4B,GAAK,IAAOr4B,EAAak4C,UAG3D,GAAIl4C,EAAawnB,GAOf,IANA,IAGIi0B,EACAtD,EAJA9lD,GAAO,EACPklD,EAAWv3C,EAAawnB,GAAG,GAC3Bk0B,EAAY17C,EAAawnB,GAAG,GAIzBn1B,GAAM,CAEXopD,EAAgB,EAChBH,EAAY,EACZvoD,GAHAolD,EAAYrkD,KAAK4mD,eAAe16C,EAAatF,IAG7BvO,OAChBqvD,EAAiBx7C,EAAaq4B,GAAK,IAAOr4B,EAAak4C,UACvD,IAAIyD,GAAkB,EAEtB,IAAK9oD,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBwtC,EAAW8X,EAAUtlD,GAAGusC,WAAW,GACnC4b,GAAc,EAEO,MAAjB7C,EAAUtlD,GACZ8oD,EAAiB9oD,EACK,KAAbwtC,GAAgC,IAAbA,IAC5Bib,EAAY,EACZN,GAAc,EACdS,GAAiBz7C,EAAao4C,iBAA4C,IAAzBp4C,EAAak4C,WAG5D/rC,EAAY/L,OACdC,EAAW8L,EAAYy1B,YAAYuW,EAAUtlD,GAAIklC,EAASE,OAAQF,EAAS0G,SAC3EwU,EAAU+H,EAAc,EAAI36C,EAASu8B,EAAI58B,EAAak4C,UAAY,KAGlEjF,EAAU9mC,EAAY2yB,YAAYqZ,EAAUtlD,GAAImN,EAAazF,EAAGyF,EAAak4C,WAG3EoD,EAAYrI,EAAUsE,GAA6B,MAAjBY,EAAUtlD,KACtB,IAApB8oD,EACF5oD,GAAO,EAEPF,EAAI8oD,EAGNF,GAAiBz7C,EAAao4C,iBAA4C,IAAzBp4C,EAAak4C,UAC9DC,EAAU7wC,OAAOzU,EAAG8oD,IAAmB9oD,EAAI,EAAI,EAAG,MAElD8oD,GAAkB,EAClBL,EAAY,IAEZA,GAAarI,EACbqI,GAAaE,GAIjBC,GAAiB1jB,EAASuf,OAASt3C,EAAak4C,UAAY,IAExDpkD,KAAKqjD,WAAan3C,EAAak4C,UAAYpkD,KAAKsjD,iBAAmBsE,EAAYD,GACjFz7C,EAAak4C,WAAa,EAC1Bl4C,EAAao4C,gBAAkBp4C,EAAak4C,UAAYl4C,EAAa03C,GAAK13C,EAAa9F,IAEvF8F,EAAam4C,UAAYA,EACzBplD,EAAMiN,EAAam4C,UAAUhsD,OAC7BkG,GAAO,EAEX,CAGFipD,GAAaE,EACbvI,EAAU,EACV,IACI2I,EADAC,EAAoB,EAGxB,IAAKhpD,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EA6CxB,GA5CAmoD,GAAc,EAIG,MAFjB3a,GADAub,EAAc57C,EAAam4C,UAAUtlD,IACdusC,WAAW,KAEE,IAAbiB,GACrBwb,EAAoB,EACpBlE,EAAWvjD,KAAKknD,GAChBC,EAAeD,EAAYC,EAAeD,EAAYC,EACtDD,GAAa,EAAIE,EACjB7jD,EAAM,GACNqjD,GAAc,EACdK,GAAe,GAEf1jD,EAAMikD,EAGJzvC,EAAY/L,OACdC,EAAW8L,EAAYy1B,YAAYga,EAAa7jB,EAASE,OAAQ9rB,EAAY61B,cAAchiC,EAAazF,GAAGkkC,SAC3GwU,EAAU+H,EAAc,EAAI36C,EAASu8B,EAAI58B,EAAak4C,UAAY,KAIlEjF,EAAU9mC,EAAY2yB,YAAYnnC,EAAKqI,EAAazF,EAAGyF,EAAak4C,WAIlD,MAAhB0D,EACFC,GAAqB5I,EAAUuI,GAE/BF,GAAarI,EAAUuI,EAAiBK,EACxCA,EAAoB,GAGtBZ,EAAQ7mD,KAAK,CACXszB,EAAGurB,EACH6I,GAAI7I,EACJ8I,IAAKZ,EACLx/B,EAAGq/B,EACHgB,UAAW,GACXrkD,IAAKA,EACL8P,KAAM4zC,EACNY,sBAAuB,IAGH,GAAlBf,GAIF,GAFAC,GAAelI,EAEH,KAARt7C,GAAsB,MAARA,GAAe9E,IAAME,EAAM,EAAG,CAK9C,IAJY,KAAR4E,GAAsB,MAARA,IAChBwjD,GAAelI,GAGVmI,GAAcvoD,GACnBooD,EAAQG,GAAYU,GAAKX,EACzBF,EAAQG,GAAY5/B,IAAMlM,EAC1B2rC,EAAQG,GAAYc,MAAQjJ,EAC5BmI,GAAc,EAGhB9rC,GAAS,EACT6rC,EAAc,CAChB,OACK,GAAsB,GAAlBD,GAIT,GAFAC,GAAelI,EAEH,KAARt7C,GAAc9E,IAAME,EAAM,EAAG,CAK/B,IAJY,KAAR4E,IACFwjD,GAAelI,GAGVmI,GAAcvoD,GACnBooD,EAAQG,GAAYU,GAAKX,EACzBF,EAAQG,GAAY5/B,IAAMlM,EAC1B2rC,EAAQG,GAAYc,MAAQjJ,EAC5BmI,GAAc,EAGhBD,EAAc,EACd7rC,GAAS,CACX,OAEA2rC,EAAQ3rC,GAAOkM,IAAMlM,EACrB2rC,EAAQ3rC,GAAO4sC,MAAQ,EACvB5sC,GAAS,EAQb,GAJAtP,EAAa0nB,EAAIuzB,EACjBM,EAAeD,EAAYC,EAAeD,EAAYC,EACtD5D,EAAWvjD,KAAKknD,GAEZt7C,EAAawnB,GACfxnB,EAAau3C,SAAWv3C,EAAawnB,GAAG,GACxCxnB,EAAay3C,cAAgB,OAI7B,OAFAz3C,EAAau3C,SAAWgE,EAEhBv7C,EAAanC,GACnB,KAAK,EACHmC,EAAay3C,eAAiBz3C,EAAau3C,SAC3C,MAEF,KAAK,EACHv3C,EAAay3C,eAAiBz3C,EAAau3C,SAAW,EACtD,MAEF,QACEv3C,EAAay3C,cAAgB,EAInCz3C,EAAa23C,WAAaA,EAC1B,IACIwE,EACAC,EAEAC,EACA7gC,EALA8gC,EAAYz/C,EAAK6D,EAGrB5C,EAAOw+C,EAAUnwD,OAGjB,IAAIowD,EAAU,GAEd,IAAK1+C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAkB5B,KAjBAs+C,EAAeG,EAAUz+C,IAER6C,EAAEihC,KACjB3hC,EAAa+3C,iBAAkB,GAG7BoE,EAAaz7C,EAAEo2C,KACjB92C,EAAag4C,iBAAkB,IAG7BmE,EAAaz7C,EAAEq2C,IAAMoF,EAAaz7C,EAAE87C,IAAML,EAAaz7C,EAAE+7C,IAAMN,EAAaz7C,EAAEg8C,MAChF18C,EAAa83C,eAAgB,GAG/Bt8B,EAAM,EACN6gC,EAAQF,EAAajiD,EAAEI,EAElBzH,EAAI,EAAGA,EAAIE,EAAKF,GAAK,GACxBupD,EAAanB,EAAQpoD,IACVmpD,UAAUn+C,GAAK2d,GAEb,GAAT6gC,GAAiC,KAAnBD,EAAWzkD,KAAuB,GAAT0kD,GAAiC,KAAnBD,EAAWzkD,KAAiC,MAAnBykD,EAAWzkD,KAAwB,GAAT0kD,IAAeD,EAAWzgC,GAAuB,KAAlBygC,EAAWzkD,KAAc9E,GAAKE,EAAM,IAAe,GAATspD,IAAeD,EAAWzgC,GAAK9oB,GAAKE,EAAM,MAEnM,IAAtBopD,EAAajiD,EAAEyiD,IACjBJ,EAAQnoD,KAAKonB,GAGfA,GAAO,GAIX3e,EAAK6D,EAAE7C,GAAG3D,EAAE0iD,WAAaphC,EACzB,IACIqhC,EADAC,GAAc,EAGlB,GAA0B,IAAtBX,EAAajiD,EAAEyiD,GACjB,IAAK9pD,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAGpBiqD,IAFJV,EAAanB,EAAQpoD,IAEQmpD,UAAUn+C,KAErCi/C,EAAaV,EAAWJ,UAAUn+C,GAClCg/C,EAASN,EAAQj1C,OAAOvX,KAAKkH,MAAMlH,KAAK0H,SAAW8kD,EAAQpwD,QAAS,GAAG,IAGzEiwD,EAAWJ,UAAUn+C,GAAKg/C,CAGhC,CAEA78C,EAAai4C,QAAUj4C,EAAao4C,iBAA4C,IAAzBp4C,EAAak4C,UACpEl4C,EAAa43C,GAAK53C,EAAa43C,IAAM,EACrC53C,EAAas3C,OAASvf,EAASuf,OAASt3C,EAAak4C,UAAY,GACnE,EAEAlB,aAAa/jD,UAAUoc,mBAAqB,SAAU0tC,EAASztC,GAC7DA,OAAkBvjB,IAAVujB,EAAsBxb,KAAKojD,UAAY5nC,EAC/C,IAAI0tC,EAAQlpD,KAAKukD,SAAS,CAAC,EAAGvkD,KAAK+I,KAAKjC,EAAEmD,EAAEuR,GAAOpV,GACnD8iD,EAAQlpD,KAAKukD,SAAS2E,EAAOD,GAC7BjpD,KAAK+I,KAAKjC,EAAEmD,EAAEuR,GAAOpV,EAAI8iD,EACzBlpD,KAAKmpD,YAAY3tC,GACjBxb,KAAKqmD,eAAe6C,GACpBlpD,KAAKoc,KAAK6P,mBAAmBjsB,KAC/B,EAEAkjD,aAAa/jD,UAAUgqD,YAAc,SAAU3tC,GAC7C,IAAI0tC,EAAQlpD,KAAK+I,KAAKjC,EAAEmD,EAAEuR,GAAOpV,EACjC8iD,EAAMz7C,YAAa,EACnBzN,KAAKojD,UAAY,EACjBpjD,KAAK4rB,eAAgB,EACrB5rB,KAAKosB,SAAS88B,EAChB,EAEAhG,aAAa/jD,UAAUiqD,cAAgB,SAAUC,GAC/CrpD,KAAKqjD,UAAYgG,EACjBrpD,KAAKmpD,YAAYnpD,KAAKojD,WACtBpjD,KAAKoc,KAAK6P,mBAAmBjsB,KAC/B,EAEAkjD,aAAa/jD,UAAUmqD,mBAAqB,SAAUC,GACpDvpD,KAAKsjD,gBAAkBrnD,KAAKkH,MAAMomD,IAAe,EACjDvpD,KAAKmpD,YAAYnpD,KAAKojD,WACtBpjD,KAAKoc,KAAK6P,mBAAmBjsB,KAC/B,EAEA,IAAIwpD,iBAAmB,WACrB,IAAInmD,EAAMpH,KAAKoH,IACXE,EAAMtH,KAAKsH,IACXJ,EAAQlH,KAAKkH,MAEjB,SAASsmD,EAAwBrtC,EAAMrT,GACrC/I,KAAK0pD,oBAAsB,EAC3B1pD,KAAKiK,GAAI,EACTjK,KAAK+I,KAAOA,EACZ/I,KAAKoc,KAAOA,EACZpc,KAAKgL,KAAOoR,EAAKpR,KACjBhL,KAAK2pD,OAAS,EACd3pD,KAAK4pD,OAAS,EACd5pD,KAAKitB,6BAA6B7Q,GAClCpc,KAAKoG,EAAIqmB,gBAAgBC,QAAQtQ,EAAMrT,EAAK3C,GAAK,CAC/C6D,EAAG,GACF,EAAG,EAAGjK,MAGPA,KAAK0J,EADH,MAAOX,EACA0jB,gBAAgBC,QAAQtQ,EAAMrT,EAAKW,EAAG,EAAG,EAAG1J,MAE5C,CACPqG,EAAG,KAIPrG,KAAKwL,EAAIihB,gBAAgBC,QAAQtQ,EAAMrT,EAAKyC,GAAK,CAC/CvB,EAAG,GACF,EAAG,EAAGjK,MACTA,KAAK6pD,GAAKp9B,gBAAgBC,QAAQtQ,EAAMrT,EAAK8gD,IAAM,CACjD5/C,EAAG,GACF,EAAG,EAAGjK,MACTA,KAAK8pD,GAAKr9B,gBAAgBC,QAAQtQ,EAAMrT,EAAK+gD,IAAM,CACjD7/C,EAAG,GACF,EAAG,EAAGjK,MACTA,KAAK+pD,GAAKt9B,gBAAgBC,QAAQtQ,EAAMrT,EAAKghD,IAAM,CACjD9/C,EAAG,KACF,EAAG,EAAGjK,MACTA,KAAK4M,EAAI6f,gBAAgBC,QAAQtQ,EAAMrT,EAAK6D,EAAG,EAAG,IAAM5M,MAEnDA,KAAK8sB,kBAAkBz0B,QAC1B2H,KAAKosB,UAET,CA+JA,OA7JAq9B,EAAwBtqD,UAAY,CAClC6qD,QAAS,SAAiBtiC,GACpB1nB,KAAK0pD,qBAAuB1pD,KAAKoc,KAAK6tC,aAAa1G,YAAY3vB,EAAEv7B,QACnE2H,KAAKosB,WAGP,IAAI1K,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAEL7hB,KAAK8pD,GAAGzjD,EAAI,EACdqb,EAAK1hB,KAAK8pD,GAAGzjD,EAAI,IAEjBsb,GAAM3hB,KAAK8pD,GAAGzjD,EAAI,IAGhBrG,KAAK6pD,GAAGxjD,EAAI,EACdub,EAAK,EAAM5hB,KAAK6pD,GAAGxjD,EAAI,IAEvBwb,EAAK,EAAM7hB,KAAK6pD,GAAGxjD,EAAI,IAGzB,IAAI6jD,EAAQvsC,cAAciK,gBAAgBlG,EAAIC,EAAIC,EAAIC,GAAI7C,IACtDsM,EAAO,EACPllB,EAAIpG,KAAK2pD,OACTjgD,EAAI1J,KAAK4pD,OACT9tD,EAAOkE,KAAK+I,KAAK0f,GAErB,GAAa,IAAT3sB,EAOFwvB,EAAO4+B,EALL5+B,EADE5hB,IAAMtD,EACDshB,GAAOhe,EAAI,EAAI,EAEfrG,EAAI,EAAGE,EAAI,IAAOmG,EAAItD,IAAMshB,EAAMthB,IAAMsD,EAAItD,GAAI,UAIpD,GAAa,IAATtK,EAOTwvB,EAAO4+B,EALL5+B,EADE5hB,IAAMtD,EACDshB,GAAOhe,EAAI,EAAI,EAEf,EAAIrG,EAAI,EAAGE,EAAI,IAAOmG,EAAItD,IAAMshB,EAAMthB,IAAMsD,EAAItD,GAAI,UAIxD,GAAa,IAATtK,EACL4N,IAAMtD,EACRklB,EAAO,GAEPA,EAAOjoB,EAAI,EAAGE,EAAI,IAAOmG,EAAItD,IAAMshB,EAAMthB,IAAMsD,EAAItD,GAAI,KAE5C,GACTklB,GAAQ,EAERA,EAAO,EAAI,GAAKA,EAAO,IAI3BA,EAAO4+B,EAAM5+B,QACR,GAAa,IAATxvB,EAAY,CACrB,GAAI4N,IAAMtD,EACRklB,EAAO,MACF,CACL,IAAI6+B,EAAMzgD,EAAItD,EAKVxL,GAAKuvD,EAAM,GADfziC,EAAMnkB,EAAIF,EAAI,EAAGqkB,EAAM,GAAMthB,GAAIsD,EAAItD,IAEjCwG,EAAIu9C,EAAM,EACd7+B,EAAOrvB,KAAKgH,KAAK,EAAIrI,EAAIA,GAAKgS,EAAIA,GACpC,CAEA0e,EAAO4+B,EAAM5+B,EACf,MAAoB,IAATxvB,GACL4N,IAAMtD,EACRklB,EAAO,GAEP5D,EAAMnkB,EAAIF,EAAI,EAAGqkB,EAAM,GAAMthB,GAAIsD,EAAItD,GACrCklB,GAAQ,EAAIrvB,KAAKwuB,IAAIxuB,KAAKgI,GAAe,EAAVhI,KAAKgI,GAASyjB,GAAOhe,EAAItD,KAAO,GAGjEklB,EAAO4+B,EAAM5+B,KAET5D,GAAOvkB,EAAMiD,KAEbklB,EAAOjoB,EAAI,EAAGE,EADZmkB,EAAMthB,EAAI,EACM7C,EAAImG,EAAG,IAAMtD,EAAIshB,GAEjBhe,EAAIge,EAFmB,KAM7C4D,EAAO4+B,EAAM5+B,IAaf,GAAkB,MAAdtrB,KAAK+pD,GAAG1jD,EAAW,CACrB,IAAI+jD,EAAyB,IAAZpqD,KAAK+pD,GAAG1jD,EAEN,IAAf+jD,IACFA,EAAa,MAGf,IAAIC,EAAY,GAAmB,GAAbD,EAElB9+B,EAAO++B,EACT/+B,EAAO,GAEPA,GAAQA,EAAO++B,GAAaD,GAEjB,IACT9+B,EAAO,EAGb,CAEA,OAAOA,EAAOtrB,KAAK4M,EAAEvG,CACvB,EACA+lB,SAAU,SAAkBk+B,GAC1BtqD,KAAKgtB,2BACLhtB,KAAKurB,KAAO++B,GAAgBtqD,KAAKurB,KACjCvrB,KAAK0pD,mBAAqB1pD,KAAKoc,KAAK6tC,aAAa1G,YAAY3vB,EAAEv7B,QAAU,EAErEiyD,GAAgC,IAAhBtqD,KAAK+I,KAAKzC,IAC5BtG,KAAK0J,EAAErD,EAAIrG,KAAK0pD,oBAGlB,IAAIa,EAA0B,IAAhBvqD,KAAK+I,KAAKzC,EAAU,EAAI,IAAMtG,KAAK+I,KAAK+/C,WAClDt9C,EAAIxL,KAAKwL,EAAEnF,EAAIkkD,EACfnkD,EAAIpG,KAAKoG,EAAEC,EAAIkkD,EAAU/+C,EACzB9B,EAAI1J,KAAK0J,EAAErD,EAAIkkD,EAAU/+C,EAE7B,GAAIpF,EAAIsD,EAAG,CACT,IAAIyxB,EAAK/0B,EACTA,EAAIsD,EACJA,EAAIyxB,CACN,CAEAn7B,KAAK2pD,OAASvjD,EACdpG,KAAK4pD,OAASlgD,CAChB,GAEF9K,gBAAgB,CAACiuB,0BAA2B48B,GAMrC,CACLe,oBALF,SAA6BpuC,EAAMrT,EAAMpH,GACvC,OAAO,IAAI8nD,EAAwBrtC,EAAMrT,EAAMpH,EACjD,EAKF,CA7MuB,GA+MvB,SAAS8oD,yBAAyBruC,EAAMsuC,EAAelyD,GACrD,IAAImyD,EAAc,CAChBhkC,UAAU,GAER+F,EAAUD,gBAAgBC,QAC1Bk+B,EAA0BF,EAAc99C,EAC5C5M,KAAK4M,EAAI,CACPtG,EAAGskD,EAAwBtkD,EAAIomB,EAAQtQ,EAAMwuC,EAAwBtkD,EAAG,EAAGtC,UAAWxL,GAAamyD,EACnG5tB,GAAI6tB,EAAwB7tB,GAAKrQ,EAAQtQ,EAAMwuC,EAAwB7tB,GAAI,EAAG/4B,UAAWxL,GAAamyD,EACtG3tB,GAAI4tB,EAAwB5tB,GAAKtQ,EAAQtQ,EAAMwuC,EAAwB5tB,GAAI,EAAGh5B,UAAWxL,GAAamyD,EACtG99C,GAAI+9C,EAAwB/9C,GAAK6f,EAAQtQ,EAAMwuC,EAAwB/9C,GAAI,EAAG7I,UAAWxL,GAAamyD,EACtG79C,GAAI89C,EAAwB99C,GAAK4f,EAAQtQ,EAAMwuC,EAAwB99C,GAAI,EAAG9I,UAAWxL,GAAamyD,EACtGvkD,EAAGwkD,EAAwBxkD,EAAIsmB,EAAQtQ,EAAMwuC,EAAwBxkD,EAAG,EAAG,IAAM5N,GAAamyD,EAC9F/9C,EAAGg+C,EAAwBh+C,EAAI8f,EAAQtQ,EAAMwuC,EAAwBh+C,EAAG,EAAG,EAAGpU,GAAamyD,EAC3Fn/C,EAAGo/C,EAAwBp/C,EAAIkhB,EAAQtQ,EAAMwuC,EAAwBp/C,EAAG,EAAG,IAAMhT,GAAamyD,EAC9FjkD,EAAGkkD,EAAwBlkD,EAAIgmB,EAAQtQ,EAAMwuC,EAAwBlkD,EAAG,EAAG,EAAGlO,GAAamyD,EAC3F3H,GAAI4H,EAAwB5H,GAAKt2B,EAAQtQ,EAAMwuC,EAAwB5H,GAAI,EAAG,EAAGxqD,GAAamyD,EAC9F9c,GAAI+c,EAAwB/c,GAAKnhB,EAAQtQ,EAAMwuC,EAAwB/c,GAAI,EAAG,EAAGr1C,GAAamyD,EAC9F1H,GAAI2H,EAAwB3H,GAAKv2B,EAAQtQ,EAAMwuC,EAAwB3H,GAAI,EAAG,EAAGzqD,GAAamyD,EAC9FjC,GAAIkC,EAAwBlC,GAAKh8B,EAAQtQ,EAAMwuC,EAAwBlC,GAAI,EAAG,EAAGlwD,GAAamyD,EAC9FhC,GAAIiC,EAAwBjC,GAAKj8B,EAAQtQ,EAAMwuC,EAAwBjC,GAAI,EAAG,IAAMnwD,GAAamyD,EACjG/B,GAAIgC,EAAwBhC,GAAKl8B,EAAQtQ,EAAMwuC,EAAwBhC,GAAI,EAAG,IAAMpwD,GAAamyD,EACjG/jD,EAAGgkD,EAAwBhkD,EAAI8lB,EAAQtQ,EAAMwuC,EAAwBhkD,EAAG,EAAG,EAAGpO,GAAamyD,GAE7F3qD,KAAKoG,EAAIojD,iBAAiBgB,oBAAoBpuC,EAAMsuC,EAActkD,EAAG5N,GACrEwH,KAAKoG,EAAEQ,EAAI8jD,EAActkD,EAAEQ,CAC7B,CAEA,SAASikD,qBAAqB3a,EAAU4a,EAAY1uC,GAClDpc,KAAK4rB,eAAgB,EACrB5rB,KAAK+qD,gBAAiB,EACtB/qD,KAAKmjD,UAAY,EACjBnjD,KAAKgrD,UAAY9a,EACjBlwC,KAAKirD,YAAcH,EACnB9qD,KAAKkrD,MAAQ9uC,EACbpc,KAAKmrD,eAAiBppD,iBAAiB/B,KAAKgrD,UAAUp+C,EAAEvU,QACxD2H,KAAKorD,UAAY,CAAC,EAClBprD,KAAKqrD,aAAe,CAClBC,UAAW,CAAC,GAEdtrD,KAAKurD,gBAAkB,GACvBvrD,KAAKwrD,oBAAqB,EAC1BxrD,KAAKitB,6BAA6B7Q,EACpC,CAwoBA,SAASqvC,eAAgB,CAtoBzBZ,qBAAqB1rD,UAAUusD,iBAAmB,WAChD,IAAI3sD,EAEA2rD,EADAzrD,EAAMe,KAAKgrD,UAAUp+C,EAAEvU,OAEvBq0B,EAAUD,gBAAgBC,QAE9B,IAAK3tB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB2rD,EAAgB1qD,KAAKgrD,UAAUp+C,EAAE7N,GACjCiB,KAAKmrD,eAAepsD,GAAK,IAAI0rD,yBAAyBzqD,KAAKkrD,MAAOR,EAAe1qD,MAG/EA,KAAKgrD,UAAUtkD,GAAK,MAAO1G,KAAKgrD,UAAUtkD,GAC5C1G,KAAKorD,UAAY,CACfx+C,EAAG8f,EAAQ1sB,KAAKkrD,MAAOlrD,KAAKgrD,UAAUtkD,EAAEkG,EAAG,EAAG,EAAG5M,MACjDyG,EAAGimB,EAAQ1sB,KAAKkrD,MAAOlrD,KAAKgrD,UAAUtkD,EAAED,EAAG,EAAG,EAAGzG,MACjD4zB,EAAGlH,EAAQ1sB,KAAKkrD,MAAOlrD,KAAKgrD,UAAUtkD,EAAEktB,EAAG,EAAG,EAAG5zB,MACjDsG,EAAGomB,EAAQ1sB,KAAKkrD,MAAOlrD,KAAKgrD,UAAUtkD,EAAEJ,EAAG,EAAG,EAAGtG,MACjD0G,EAAGgmB,EAAQ1sB,KAAKkrD,MAAOlrD,KAAKgrD,UAAUtkD,EAAEA,EAAG,EAAG,EAAG1G,MACjD6zB,EAAG7zB,KAAKkrD,MAAMxY,YAAYuG,gBAAgBj5C,KAAKgrD,UAAUtkD,EAAEmtB,IAE7D7zB,KAAK+qD,gBAAiB,GAEtB/qD,KAAK+qD,gBAAiB,EAGxB/qD,KAAKqrD,aAAaC,UAAY5+B,EAAQ1sB,KAAKkrD,MAAOlrD,KAAKgrD,UAAUn3B,EAAEjnB,EAAG,EAAG,EAAG5M,KAC9E,EAEA6qD,qBAAqB1rD,UAAUwsD,YAAc,SAAUz/C,EAAcs/C,GAGnE,GAFAxrD,KAAKwrD,mBAAqBA,EAErBxrD,KAAKurB,MAASvrB,KAAK4rB,eAAkB4/B,GAAwBxrD,KAAK+qD,gBAAmB/qD,KAAKorD,UAAUv3B,EAAEtI,KAA3G,CAIAvrB,KAAK4rB,eAAgB,EACrB,IAMIggC,EACAC,EACA9sD,EACAE,EAEA6sD,EACAC,EACAC,EACAlpC,EACAvkB,EACA0tD,EACAC,EACAtqB,EACAhjB,EACAlnB,EACAurB,EACA3B,EACAiB,EACA4pC,EACA7U,EAzBAgU,EAAYtrD,KAAKqrD,aAAaC,UAAUjlD,EACxCmiD,EAAYxoD,KAAKmrD,eACjBjb,EAAWlwC,KAAKgrD,UAChBoB,EAAepsD,KAAKg5C,QACpB8R,EAAa9qD,KAAKirD,YAClBoB,EAAuBrsD,KAAKurD,gBAAgBlzD,OAK5C8uD,EAAUj7C,EAAa0nB,EAiB3B,GAAI5zB,KAAK+qD,eAAgB,CAGvB,GAFAzT,EAAOt3C,KAAKorD,UAAUv3B,GAEjB7zB,KAAKorD,UAAUvjC,GAAK7nB,KAAKorD,UAAU7/B,KAAM,CAC5C,IAYIlI,EAZAoM,EAAQ6nB,EAAKjxC,EAejB,IAbIrG,KAAKorD,UAAU9kD,EAAED,IACnBopB,EAAQA,EAAM1B,WAIhB+9B,EAAW,CACTQ,QAAS,EACT50D,SAAU,IAEZuH,EAAMwwB,EAAM7O,QAAU,EAEtBU,EAAc,EAETviB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBskB,EAAa8C,IAAIjD,gBAAgBuM,EAAMppB,EAAEtH,GAAI0wB,EAAMppB,EAAEtH,EAAI,GAAI,CAAC0wB,EAAMjkB,EAAEzM,GAAG,GAAK0wB,EAAMppB,EAAEtH,GAAG,GAAI0wB,EAAMjkB,EAAEzM,GAAG,GAAK0wB,EAAMppB,EAAEtH,GAAG,IAAK,CAAC0wB,EAAM1wB,EAAEA,EAAI,GAAG,GAAK0wB,EAAMppB,EAAEtH,EAAI,GAAG,GAAI0wB,EAAM1wB,EAAEA,EAAI,GAAG,GAAK0wB,EAAMppB,EAAEtH,EAAI,GAAG,KACxM+sD,EAASQ,SAAWjpC,EAAWP,cAC/BgpC,EAASp0D,SAAS4I,KAAK+iB,GACvB/B,GAAe+B,EAAWP,cAG5B/jB,EAAIE,EAEAq4C,EAAKjxC,EAAE8G,IACTkW,EAAa8C,IAAIjD,gBAAgBuM,EAAMppB,EAAEtH,GAAI0wB,EAAMppB,EAAE,GAAI,CAACopB,EAAMjkB,EAAEzM,GAAG,GAAK0wB,EAAMppB,EAAEtH,GAAG,GAAI0wB,EAAMjkB,EAAEzM,GAAG,GAAK0wB,EAAMppB,EAAEtH,GAAG,IAAK,CAAC0wB,EAAM1wB,EAAE,GAAG,GAAK0wB,EAAMppB,EAAE,GAAG,GAAIopB,EAAM1wB,EAAE,GAAG,GAAK0wB,EAAMppB,EAAE,GAAG,KACpLylD,EAASQ,SAAWjpC,EAAWP,cAC/BgpC,EAASp0D,SAAS4I,KAAK+iB,GACvB/B,GAAe+B,EAAWP,eAG5B9iB,KAAKorD,UAAUmB,GAAKT,CACtB,CAUA,GARAA,EAAW9rD,KAAKorD,UAAUmB,GAC1BR,EAAgB/rD,KAAKorD,UAAU3kD,EAAEJ,EACjC6lD,EAAa,EACbD,EAAW,EACXnpC,EAAgB,EAChBvkB,GAAO,EACP7G,EAAWo0D,EAASp0D,SAEhBq0D,EAAgB,GAAKzU,EAAKjxC,EAAE8G,EAS9B,IARI2+C,EAASQ,QAAUrwD,KAAK2H,IAAImoD,KAC9BA,GAAiB9vD,KAAK2H,IAAImoD,GAAiBD,EAASQ,SAKtDL,GADArtC,EAASlnB,EADTw0D,EAAax0D,EAASW,OAAS,GACDumB,QACZvmB,OAAS,EAEpB0zD,EAAgB,GACrBA,GAAiBntC,EAAOqtC,GAAUhpC,eAClCgpC,GAAY,GAEG,IAGbA,GADArtC,EAASlnB,EADTw0D,GAAc,GACgBttC,QACZvmB,OAAS,GAMjCupC,GADAhjB,EAASlnB,EAASw0D,GAAYttC,QACXqtC,EAAW,GAE9BhpC,GADA+oC,EAAeptC,EAAOqtC,IACOhpC,aAC/B,CAEAhkB,EAAMkoD,EAAQ9uD,OACduzD,EAAO,EACPC,EAAO,EACP,IAEInB,EAEA3gD,EACAC,EACAwiD,EAEAlhC,EARAmhC,EAAgC,IAAzBvgD,EAAak4C,UAAkB,KACtCsI,GAAY,EAMhB1iD,EAAOw+C,EAAUnwD,OAEjB,IACIs0D,EACAC,EACAC,EAKAC,EACAjf,EACAmV,EACAC,EACAh5C,EACA8iD,EACAC,EACAC,EAGAC,EAlBAxlC,GAAO,EAIPylC,EAAcpB,EACdqB,EAAiBlB,EACjBmB,EAAepB,EACf1E,GAAe,EASf+F,GAAU,GACVC,GAAUvtD,KAAKwtD,kBAGnB,GAAuB,IAAnBthD,EAAanC,GAA8B,IAAnBmC,EAAanC,EAAS,CAChD,IAAIo+C,GAAwB,EACxBsF,GAA0B,EAC1BC,GAAuC,IAAnBxhD,EAAanC,GAAW,IAAO,EACnDmd,GAAY,EACZymC,IAAY,EAEhB,IAAK5uD,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,GAAIooD,EAAQpoD,GAAG8oB,EAAG,CAKhB,IAJIsgC,KACFA,IAAyBsF,IAGpBvmC,GAAYnoB,GACjBooD,EAAQjgC,IAAWihC,sBAAwBA,GAC3CjhC,IAAa,EAGfihC,GAAwB,EACxBwF,IAAY,CACd,KAAO,CACL,IAAK5jD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB2gD,EAAgBlC,EAAUz+C,GAAG6C,GAEXhG,EAAE+f,WACdgnC,IAAgC,IAAnBzhD,EAAanC,IAC5B0jD,IAA2B/C,EAAc9jD,EAAEP,EAAIqnD,KAIjDpiC,EADmBk9B,EAAUz+C,GAAG3D,EACR4jD,QAAQ7C,EAAQpoD,GAAGmpD,UAAUn+C,GAAImmC,EAAStjC,EAAE7C,GAAG3D,EAAE0iD,aAEhEzwD,OACP8vD,IAAyBuC,EAAc9jD,EAAEP,EAAIilB,EAAK,GAAKoiC,GAEvDvF,IAAyBuC,EAAc9jD,EAAEP,EAAIilB,EAAOoiC,IAK1DC,IAAY,CACd,CAOF,IAJIxF,KACFA,IAAyBsF,IAGpBvmC,GAAYnoB,GACjBooD,EAAQjgC,IAAWihC,sBAAwBA,GAC3CjhC,IAAa,CAEjB,CAGA,IAAKnoB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAI3B,GAHAqtD,EAAar8B,QACb+8B,EAAc,EAEV3F,EAAQpoD,GAAG8oB,EACb+jC,EAAO,EACPC,GAAQ3/C,EAAai4C,QACrB0H,GAAQa,EAAY,EAAI,EACxBX,EAAgBoB,EAChBT,GAAY,EAER1sD,KAAK+qD,iBAEPkB,EAAWoB,EAEXzrB,GADAhjB,EAASlnB,EAFTw0D,EAAakB,GAEiBxuC,QACXqtC,EAAW,GAE9BhpC,GADA+oC,EAAeptC,EAAOqtC,IACOhpC,cAC7BH,EAAgB,GAGlBwqC,GAAU,GACVL,EAAW,GACXF,EAAW,GACXG,EAAU,GACVK,GAAUvtD,KAAKwtD,sBACV,CACL,GAAIxtD,KAAK+qD,eAAgB,CACvB,GAAIxD,IAAgBJ,EAAQpoD,GAAG4U,KAAM,CACnC,OAAQzH,EAAanC,GACnB,KAAK,EACHgiD,GAAiBzqC,EAAcpV,EAAa23C,WAAWsD,EAAQpoD,GAAG4U,MAClE,MAEF,KAAK,EACHo4C,IAAkBzqC,EAAcpV,EAAa23C,WAAWsD,EAAQpoD,GAAG4U,OAAS,EAOhF4zC,EAAcJ,EAAQpoD,GAAG4U,IAC3B,CAEI+T,IAAQy/B,EAAQpoD,GAAG2oB,MACjBy/B,EAAQz/B,KACVqkC,GAAiB5E,EAAQz/B,GAAK0gC,OAGhC2D,GAAiB5E,EAAQpoD,GAAGipD,GAAK,EACjCtgC,EAAMy/B,EAAQpoD,GAAG2oB,KAGnBqkC,GAAiBT,EAAU,GAAKnE,EAAQpoD,GAAGipD,GAAK,KAChD,IAAI4F,GAAiB,EAErB,IAAK7jD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB2gD,EAAgBlC,EAAUz+C,GAAG6C,GAEXlG,EAAEigB,YAElB2E,EADmBk9B,EAAUz+C,GAAG3D,EACR4jD,QAAQ7C,EAAQpoD,GAAGmpD,UAAUn+C,GAAImmC,EAAStjC,EAAE7C,GAAG3D,EAAE0iD,aAEhEzwD,OACPu1D,IAAkBlD,EAAchkD,EAAEL,EAAE,GAAKilB,EAAK,GAE9CsiC,IAAkBlD,EAAchkD,EAAEL,EAAE,GAAKilB,GAIzCo/B,EAAc99C,EAAE+Z,YAElB2E,EADmBk9B,EAAUz+C,GAAG3D,EACR4jD,QAAQ7C,EAAQpoD,GAAGmpD,UAAUn+C,GAAImmC,EAAStjC,EAAE7C,GAAG3D,EAAE0iD,aAEhEzwD,OACPu1D,IAAkBlD,EAAc99C,EAAEvG,EAAE,GAAKilB,EAAK,GAE9CsiC,IAAkBlD,EAAc99C,EAAEvG,EAAE,GAAKilB,GAY/C,IAPA/sB,GAAO,EAEHyB,KAAKorD,UAAUx+C,EAAEvG,IACnB0lD,EAAgC,GAAhB5E,EAAQ,GAAGa,IAAY1mC,EAActhB,KAAKorD,UAAU3kD,EAAEJ,EAAoB,GAAhB8gD,EAAQ,GAAGa,GAA4C,GAAjCb,EAAQA,EAAQ9uD,OAAS,GAAG2vD,IAAYtgC,GAAOzoB,EAAM,GACrJ8sD,GAAiB/rD,KAAKorD,UAAU3kD,EAAEJ,GAG7B9H,GACDukB,EAAgBG,GAAiB8oC,EAAgB6B,KAAmBhvC,GACtE2D,GAAQwpC,EAAgB6B,GAAiB9qC,GAAiBkpC,EAAa/oC,cACvE2pC,EAAWhrB,EAAUlf,MAAM,IAAMspC,EAAatpC,MAAM,GAAKkf,EAAUlf,MAAM,IAAMH,EAC/EsqC,EAAWjrB,EAAUlf,MAAM,IAAMspC,EAAatpC,MAAM,GAAKkf,EAAUlf,MAAM,IAAMH,EAC/E6pC,EAAat4B,WAAWw3B,EAAU,GAAKnE,EAAQpoD,GAAGipD,GAAK,MAASsD,EAAU,GAAKmB,EAAQ,KACvFluD,GAAO,GACEqgB,IACTkE,GAAiBkpC,EAAa/oC,eAC9BgpC,GAAY,IAEIrtC,EAAOvmB,SACrB4zD,EAAW,EAGNv0D,EAFLw0D,GAAc,GAYZttC,EAASlnB,EAASw0D,GAAYttC,OAT1B04B,EAAKjxC,EAAE8G,GACT8+C,EAAW,EAEXrtC,EAASlnB,EADTw0D,EAAa,GACiBttC,SAE9BkE,GAAiBkpC,EAAa/oC,cAC9BrE,EAAS,OAOXA,IACFgjB,EAAYoqB,EAEZ/oC,GADA+oC,EAAeptC,EAAOqtC,IACOhpC,gBAKnC0pC,EAAOxF,EAAQpoD,GAAGipD,GAAK,EAAIb,EAAQpoD,GAAGkpD,IACtCmE,EAAat4B,WAAW64B,EAAM,EAAG,EACnC,MACEA,EAAOxF,EAAQpoD,GAAGipD,GAAK,EAAIb,EAAQpoD,GAAGkpD,IACtCmE,EAAat4B,WAAW64B,EAAM,EAAG,GAEjCP,EAAat4B,WAAWw3B,EAAU,GAAKnE,EAAQpoD,GAAGipD,GAAK,MAAQsD,EAAU,GAAKmB,EAAO,IAAM,GAG7F,IAAK1iD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB2gD,EAAgBlC,EAAUz+C,GAAG6C,GAEXhG,EAAE+f,WAElB2E,EADmBk9B,EAAUz+C,GAAG3D,EACR4jD,QAAQ7C,EAAQpoD,GAAGmpD,UAAUn+C,GAAImmC,EAAStjC,EAAE7C,GAAG3D,EAAE0iD,YAE5D,IAAT8C,GAAiC,IAAnB1/C,EAAanC,IACzB/J,KAAK+qD,eACHz/B,EAAKjzB,OACP0zD,GAAiBrB,EAAc9jD,EAAEP,EAAIilB,EAAK,GAE1CygC,GAAiBrB,EAAc9jD,EAAEP,EAAIilB,EAE9BA,EAAKjzB,OACduzD,GAAQlB,EAAc9jD,EAAEP,EAAIilB,EAAK,GAEjCsgC,GAAQlB,EAAc9jD,EAAEP,EAAIilB,IAsBpC,IAhBIpf,EAAag4C,kBACflB,EAAK92C,EAAa82C,IAAM,GAGtB92C,EAAa+3C,kBAEbpW,EADE3hC,EAAa2hC,GACV,CAAC3hC,EAAa2hC,GAAG,GAAI3hC,EAAa2hC,GAAG,GAAI3hC,EAAa2hC,GAAG,IAEzD,CAAC,EAAG,EAAG,IAIZ3hC,EAAa83C,eAAiB93C,EAAa+2C,KAC7CA,EAAK,CAAC/2C,EAAa+2C,GAAG,GAAI/2C,EAAa+2C,GAAG,GAAI/2C,EAAa+2C,GAAG,KAG3Dl5C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB2gD,EAAgBlC,EAAUz+C,GAAG6C,GAEXA,EAAE+Z,YAElB2E,EADmBk9B,EAAUz+C,GAAG3D,EACR4jD,QAAQ7C,EAAQpoD,GAAGmpD,UAAUn+C,GAAImmC,EAAStjC,EAAE7C,GAAG3D,EAAE0iD,aAEhEzwD,OACP+zD,EAAat4B,WAAW42B,EAAc99C,EAAEvG,EAAE,GAAKilB,EAAK,IAAKo/B,EAAc99C,EAAEvG,EAAE,GAAKilB,EAAK,GAAIo/B,EAAc99C,EAAEvG,EAAE,GAAKilB,EAAK,IAErH8gC,EAAat4B,WAAW42B,EAAc99C,EAAEvG,EAAE,GAAKilB,GAAOo/B,EAAc99C,EAAEvG,EAAE,GAAKilB,EAAMo/B,EAAc99C,EAAEvG,EAAE,GAAKilB,IAKhH,IAAKvhB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB2gD,EAAgBlC,EAAUz+C,GAAG6C,GAEXxG,EAAEugB,YAElB2E,EADmBk9B,EAAUz+C,GAAG3D,EACR4jD,QAAQ7C,EAAQpoD,GAAGmpD,UAAUn+C,GAAImmC,EAAStjC,EAAE7C,GAAG3D,EAAE0iD,aAEhEzwD,OACP+zD,EAAa34B,MAAM,GAAKi3B,EAActkD,EAAEC,EAAE,GAAK,GAAKilB,EAAK,GAAI,GAAKo/B,EAActkD,EAAEC,EAAE,GAAK,GAAKilB,EAAK,GAAI,GAEvG8gC,EAAa34B,MAAM,GAAKi3B,EAActkD,EAAEC,EAAE,GAAK,GAAKilB,EAAM,GAAKo/B,EAActkD,EAAEC,EAAE,GAAK,GAAKilB,EAAM,IAKvG,IAAKvhB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAqD5B,GApDA2gD,EAAgBlC,EAAUz+C,GAAG6C,EAE7B0e,EADmBk9B,EAAUz+C,GAAG3D,EACR4jD,QAAQ7C,EAAQpoD,GAAGmpD,UAAUn+C,GAAImmC,EAAStjC,EAAE7C,GAAG3D,EAAE0iD,YAErE4B,EAAc79C,GAAG8Z,WACf2E,EAAKjzB,OACP+zD,EAAa54B,cAAck3B,EAAc79C,GAAGxG,EAAIilB,EAAK,GAAIo/B,EAAc59C,GAAGzG,EAAIilB,EAAK,IAEnF8gC,EAAa54B,cAAck3B,EAAc79C,GAAGxG,EAAIilB,EAAMo/B,EAAc59C,GAAGzG,EAAIilB,IAI3Eo/B,EAAcpkD,EAAEqgB,WACd2E,EAAKjzB,OACP+zD,EAAah5B,SAASs3B,EAAcpkD,EAAED,EAAIilB,EAAK,IAE/C8gC,EAAah5B,SAASs3B,EAAcpkD,EAAED,EAAIilB,IAI1Co/B,EAAc1tB,GAAGrW,WACf2E,EAAKjzB,OACP+zD,EAAaj5B,QAAQu3B,EAAc1tB,GAAG32B,EAAIilB,EAAK,IAE/C8gC,EAAaj5B,QAAQu3B,EAAc1tB,GAAG32B,EAAIilB,IAI1Co/B,EAAc3tB,GAAGpW,WACf2E,EAAKjzB,OACP+zD,EAAal5B,QAAQw3B,EAAc3tB,GAAG12B,EAAIilB,EAAK,IAE/C8gC,EAAal5B,QAAQw3B,EAAc3tB,GAAG12B,EAAIilB,IAI1Co/B,EAAcl/C,EAAEmb,WACd2E,EAAKjzB,OACPy0D,IAAgBpC,EAAcl/C,EAAEnF,EAAIilB,EAAK,GAAKwhC,GAAexhC,EAAK,GAElEwhC,IAAgBpC,EAAcl/C,EAAEnF,EAAIilB,EAAOwhC,GAAexhC,GAI1Dpf,EAAag4C,iBAAmBwG,EAAc1H,GAAGr8B,WAC/C2E,EAAKjzB,OACP2qD,GAAM0H,EAAc1H,GAAG38C,EAAIilB,EAAK,GAEhC03B,GAAM0H,EAAc1H,GAAG38C,EAAIilB,GAI3Bpf,EAAa+3C,iBAAmByG,EAAc7c,GAAGlnB,SACnD,IAAK1c,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClBqhB,EAAKjzB,OACPw1C,EAAG5jC,KAAOygD,EAAc7c,GAAGxnC,EAAE4D,GAAK4jC,EAAG5jC,IAAMqhB,EAAK,GAEhDuiB,EAAG5jC,KAAOygD,EAAc7c,GAAGxnC,EAAE4D,GAAK4jC,EAAG5jC,IAAMqhB,EAKjD,GAAIpf,EAAa83C,eAAiB93C,EAAa+2C,GAAI,CACjD,GAAIyH,EAAczH,GAAGt8B,SACnB,IAAK1c,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClBqhB,EAAKjzB,OACP4qD,EAAGh5C,KAAOygD,EAAczH,GAAG58C,EAAE4D,GAAKg5C,EAAGh5C,IAAMqhB,EAAK,GAEhD23B,EAAGh5C,KAAOygD,EAAczH,GAAG58C,EAAE4D,GAAKg5C,EAAGh5C,IAAMqhB,EAK7Co/B,EAAchC,GAAG/hC,WAEjBs8B,EADE33B,EAAKjzB,OACF+O,YAAY67C,EAAIyH,EAAchC,GAAGriD,EAAIilB,EAAK,IAE1ClkB,YAAY67C,EAAIyH,EAAchC,GAAGriD,EAAIilB,IAI1Co/B,EAAc/B,GAAGhiC,WAEjBs8B,EADE33B,EAAKjzB,OACF0O,mBAAmBk8C,EAAIyH,EAAc/B,GAAGtiD,EAAIilB,EAAK,IAEjDvkB,mBAAmBk8C,EAAIyH,EAAc/B,GAAGtiD,EAAIilB,IAIjDo/B,EAAc9B,GAAGjiC,WAEjBs8B,EADE33B,EAAKjzB,OACF8O,mBAAmB87C,EAAIyH,EAAc9B,GAAGviD,EAAIilB,EAAK,IAEjDnkB,mBAAmB87C,EAAIyH,EAAc9B,GAAGviD,EAAIilB,GAGvD,CACF,CAEA,IAAKvhB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB2gD,EAAgBlC,EAAUz+C,GAAG6C,GAEXlG,EAAEigB,WAElB2E,EADmBk9B,EAAUz+C,GAAG3D,EACR4jD,QAAQ7C,EAAQpoD,GAAGmpD,UAAUn+C,GAAImmC,EAAStjC,EAAE7C,GAAG3D,EAAE0iD,YAErE9oD,KAAK+qD,eACHz/B,EAAKjzB,OACP+zD,EAAat4B,UAAU,EAAG42B,EAAchkD,EAAEL,EAAE,GAAKilB,EAAK,IAAKo/B,EAAchkD,EAAEL,EAAE,GAAKilB,EAAK,IAEvF8gC,EAAat4B,UAAU,EAAG42B,EAAchkD,EAAEL,EAAE,GAAKilB,GAAOo/B,EAAchkD,EAAEL,EAAE,GAAKilB,GAExEA,EAAKjzB,OACd+zD,EAAat4B,UAAU42B,EAAchkD,EAAEL,EAAE,GAAKilB,EAAK,GAAIo/B,EAAchkD,EAAEL,EAAE,GAAKilB,EAAK,IAAKo/B,EAAchkD,EAAEL,EAAE,GAAKilB,EAAK,IAEpH8gC,EAAat4B,UAAU42B,EAAchkD,EAAEL,EAAE,GAAKilB,EAAMo/B,EAAchkD,EAAEL,EAAE,GAAKilB,GAAOo/B,EAAchkD,EAAEL,EAAE,GAAKilB,IAiB/G,GAZIpf,EAAag4C,kBACf6I,EAAW/J,EAAK,EAAI,EAAIA,GAGtB92C,EAAa+3C,kBACf+I,EAAW,OAAS/wD,KAAKoI,MAAc,IAARwpC,EAAG,IAAY,IAAM5xC,KAAKoI,MAAc,IAARwpC,EAAG,IAAY,IAAM5xC,KAAKoI,MAAc,IAARwpC,EAAG,IAAY,KAG5G3hC,EAAa83C,eAAiB93C,EAAa+2C,KAC7CgK,EAAW,OAAShxD,KAAKoI,MAAc,IAAR4+C,EAAG,IAAY,IAAMhnD,KAAKoI,MAAc,IAAR4+C,EAAG,IAAY,IAAMhnD,KAAKoI,MAAc,IAAR4+C,EAAG,IAAY,KAG5GjjD,KAAK+qD,eAAgB,CAIvB,GAHAqB,EAAat4B,UAAU,GAAI5nB,EAAa43C,IACxCsI,EAAat4B,UAAU,EAAGw3B,EAAU,GAAKmB,EAAO,IAAOZ,EAAM,GAEzD7rD,KAAKorD,UAAU1kD,EAAEL,EAAG,CACtB8lD,GAAYH,EAAatpC,MAAM,GAAKkf,EAAUlf,MAAM,KAAOspC,EAAatpC,MAAM,GAAKkf,EAAUlf,MAAM,IACnG,IAAIye,GAA4B,IAAtBllC,KAAK4xD,KAAK1B,GAAkBlwD,KAAKgI,GAEvC+nD,EAAatpC,MAAM,GAAKkf,EAAUlf,MAAM,KAC1Cye,IAAO,KAGTirB,EAAat5B,QAAQqO,GAAMllC,KAAKgI,GAAK,IACvC,CAEAmoD,EAAat4B,UAAU84B,EAAUC,EAAU,GAC3Cd,GAAiBT,EAAU,GAAKnE,EAAQpoD,GAAGipD,GAAK,KAE5Cb,EAAQpoD,EAAI,IAAM2oB,IAAQy/B,EAAQpoD,EAAI,GAAG2oB,MAC3CqkC,GAAiB5E,EAAQpoD,GAAGipD,GAAK,EACjC+D,GAAmC,KAAlB7/C,EAAaq4B,GAAar4B,EAAak4C,UAE5D,KAAO,CAQL,OAPAgI,EAAat4B,UAAU83B,EAAMC,EAAM,GAE/B3/C,EAAa63C,IAEfqI,EAAat4B,UAAU5nB,EAAa63C,GAAG,GAAI73C,EAAa63C,GAAG,GAAK73C,EAAas3C,OAAQ,GAG/Et3C,EAAanC,GACnB,KAAK,EACHqiD,EAAat4B,UAAUqzB,EAAQpoD,GAAGopD,sBAAwBj8C,EAAay3C,eAAiBz3C,EAAau3C,SAAWv3C,EAAa23C,WAAWsD,EAAQpoD,GAAG4U,OAAQ,EAAG,GAC9J,MAEF,KAAK,EACHy4C,EAAat4B,UAAUqzB,EAAQpoD,GAAGopD,sBAAwBj8C,EAAay3C,eAAiBz3C,EAAau3C,SAAWv3C,EAAa23C,WAAWsD,EAAQpoD,GAAG4U,OAAS,EAAG,EAAG,GAOtKy4C,EAAat4B,UAAU,GAAI5nB,EAAa43C,IACxCsI,EAAat4B,UAAU64B,EAAM,EAAG,GAChCP,EAAat4B,UAAUw3B,EAAU,GAAKnE,EAAQpoD,GAAGipD,GAAK,KAAOsD,EAAU,GAAKmB,EAAO,IAAM,GACzFb,GAAQzE,EAAQpoD,GAAG60B,EAAsB,KAAlB1nB,EAAaq4B,GAAar4B,EAAak4C,SAChE,CAEmB,SAAf0G,EACFwC,GAAUlB,EAAaz0B,QACC,QAAfmzB,EACTwC,GAAUlB,EAAat0B,UAEvBy1B,GAAU,CAACnB,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,GAAIy3D,EAAaz3D,MAAM,IAAKy3D,EAAaz3D,MAAM,IAAKy3D,EAAaz3D,MAAM,IAAKy3D,EAAaz3D,MAAM,IAAKy3D,EAAaz3D,MAAM,IAAKy3D,EAAaz3D,MAAM,KAG9Xu4D,EAAUJ,CACZ,CAEIT,GAAwBttD,GAC1BytD,EAAc,IAAIzJ,YAAYmK,EAASH,EAAUC,EAAUC,EAAUK,GAASC,IAC9EvtD,KAAKurD,gBAAgBjrD,KAAKksD,GAC1BH,GAAwB,EACxBrsD,KAAKwrD,oBAAqB,IAE1BgB,EAAcxsD,KAAKurD,gBAAgBxsD,GACnCiB,KAAKwrD,mBAAqBgB,EAAYrG,OAAO+G,EAASH,EAAUC,EAAUC,EAAUK,GAASC,KAAYvtD,KAAKwrD,mBAElH,CArlBA,CAslBF,EAEAX,qBAAqB1rD,UAAUitB,SAAW,WACpCpsB,KAAKkrD,MAAM/zC,WAAWsU,UAAYzrB,KAAKmjD,WAI3CnjD,KAAKmjD,SAAWnjD,KAAKkrD,MAAM/zC,WAAWsU,QACtCzrB,KAAKgtB,2BACP,EAEA69B,qBAAqB1rD,UAAU65C,QAAU,IAAIxmB,OAC7Cq4B,qBAAqB1rD,UAAUquD,kBAAoB,GACnD5uD,gBAAgB,CAACiuB,0BAA2Bg+B,sBAI5CY,aAAatsD,UAAU27C,YAAc,SAAU/xC,EAAMoO,EAAYnM,GAC/DhL,KAAKwrD,oBAAqB,EAC1BxrD,KAAKomB,YACLpmB,KAAKuxC,aAAaxoC,EAAMoO,EAAYnM,GACpChL,KAAKiqD,aAAe,IAAI/G,aAAaljD,KAAM+I,EAAKnC,EAAG5G,KAAK8sB,mBACxD9sB,KAAK8tD,aAAe,IAAIjD,qBAAqB9hD,EAAKnC,EAAG5G,KAAK8qD,WAAY9qD,MACtEA,KAAK23C,cAAc5uC,EAAMoO,EAAYnM,GACrChL,KAAK+8C,gBACL/8C,KAAK+uC,iBACL/uC,KAAKk7C,sBACLl7C,KAAKm7C,0BACLn7C,KAAKm8C,6BACLn8C,KAAKi9C,gBACLj9C,KAAKqb,OACLrb,KAAK8tD,aAAapC,iBAAiB1rD,KAAK8sB,kBAC1C,EAEA2+B,aAAatsD,UAAU8V,aAAe,SAAUu6B,GAC9CxvC,KAAKurB,MAAO,EACZvrB,KAAKuvC,uBAAuBC,GAC5BxvC,KAAK4zC,kBAAkBpE,EAAKxvC,KAAKgvC,UACnC,EAEAyc,aAAatsD,UAAU4uD,gBAAkB,SAAU3B,EAAcvhD,GAC/D,IAAId,EAEAqvC,EADApvC,EAAOa,EAAOxS,OAEd21D,EAAW,GAEf,IAAKjkD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACJ,OAAjBc,EAAOd,GAAGU,KACZ2uC,EAAYvuC,EAAOd,GAAGuB,GAAGrB,EACzB+jD,GAAYhN,iBAAiB5H,EAAWA,EAAUr6C,EAAE1G,QAAQ,EAAM+zD,IAItE,OAAO4B,CACT,EAEAvC,aAAatsD,UAAUoc,mBAAqB,SAAU0tC,EAASztC,GAC7Dxb,KAAKiqD,aAAa1uC,mBAAmB0tC,EAASztC,EAChD,EAEAiwC,aAAatsD,UAAUiqD,cAAgB,SAAUC,GAC/CrpD,KAAKiqD,aAAab,cAAcC,EAClC,EAEAoC,aAAatsD,UAAUmqD,mBAAqB,SAAU2E,GACpDjuD,KAAKiqD,aAAaX,mBAAmB2E,EACvC,EAEAxC,aAAatsD,UAAU+uD,4BAA8B,SAAUhiD,EAAckgD,EAAc+B,EAAYvC,EAAMC,GAO3G,OANI3/C,EAAa63C,IACfqI,EAAat4B,UAAU5nB,EAAa63C,GAAG,GAAI73C,EAAa63C,GAAG,GAAK73C,EAAas3C,OAAQ,GAGvF4I,EAAat4B,UAAU,GAAI5nB,EAAa43C,GAAI,GAEpC53C,EAAanC,GACnB,KAAK,EACHqiD,EAAat4B,UAAU5nB,EAAay3C,eAAiBz3C,EAAau3C,SAAWv3C,EAAa23C,WAAWsK,IAAc,EAAG,GACtH,MAEF,KAAK,EACH/B,EAAat4B,UAAU5nB,EAAay3C,eAAiBz3C,EAAau3C,SAAWv3C,EAAa23C,WAAWsK,IAAe,EAAG,EAAG,GAO9H/B,EAAat4B,UAAU83B,EAAMC,EAAM,EACrC,EAEAJ,aAAatsD,UAAUivD,WAAa,SAAUC,GAC5C,MAAO,OAASpyD,KAAKoI,MAAqB,IAAfgqD,EAAU,IAAY,IAAMpyD,KAAKoI,MAAqB,IAAfgqD,EAAU,IAAY,IAAMpyD,KAAKoI,MAAqB,IAAfgqD,EAAU,IAAY,GACjI,EAEA5C,aAAatsD,UAAUmvD,UAAY,IAAIvL,YAEvC0I,aAAatsD,UAAUnH,QAAU,WAAa,EAE9CyzD,aAAatsD,UAAUovD,aAAe,YAChCvuD,KAAKiqD,aAAa1+B,MAAQvrB,KAAKiqD,aAAar+B,iBAC9C5rB,KAAKwuD,eACLxuD,KAAKiqD,aAAar+B,eAAgB,EAClC5rB,KAAKiqD,aAAa1+B,MAAO,EAE7B,EAEA,IAAIkjC,eAAiB,CACnB5jD,OAAQ,IAGV,SAAS6jD,qBAAqB3lD,EAAMoO,EAAYnM,GAC9ChL,KAAK2uD,UAAY,GACjB3uD,KAAK8qD,WAAa,MAClB9qD,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,EACrC,CAgVA,SAAS4jD,cAAc7lD,EAAMoO,EAAYnM,GACvChL,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,EACrC,CAeA,SAAS6jD,YAAY9lD,EAAMoO,EAAYnM,GACrChL,KAAKomB,YACLpmB,KAAKuxC,aAAaxoC,EAAMoO,EAAYnM,GACpChL,KAAKomB,YACLpmB,KAAK23C,cAAc5uC,EAAMoO,EAAYnM,GACrChL,KAAK+8C,eACP,CAoBA,SAAS+R,kBAAmB,CAkQ5B,SAASC,eAAgB,CA4GzB,SAASC,eAAejmD,EAAMoO,EAAYnM,GACxChL,KAAK4J,OAASb,EAAKa,OACnB5J,KAAKivD,YAAa,EAClBjvD,KAAK2J,gBAAiB,EACtB3J,KAAK21C,gBAAkB,GACvB31C,KAAKwlC,SAAWxlC,KAAK4J,OAAS7H,iBAAiB/B,KAAK4J,OAAOvR,QAAU,GACrE2H,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,GACnChL,KAAKsU,GAAKvL,EAAKuL,GAAKmY,gBAAgBC,QAAQ1sB,KAAM+I,EAAKuL,GAAI,EAAG6C,EAAWtB,UAAW7V,MAAQ,CAC1F8xC,cAAc,EAElB,CAQA,SAASod,YAAYl1D,EAAe1B,GAClC0H,KAAKhG,cAAgBA,EACrBgG,KAAK4J,OAAS,KACd5J,KAAKgrB,eAAiB,EACtBhrB,KAAKmvD,WAAahnD,SAAS,OAC3B,IAAIinD,EAAY,GAEhB,GAAI92D,GAAUA,EAAO+2D,MAAO,CAC1B,IAAIC,EAAennD,SAAS,SACxBonD,EAAUvpD,kBACdspD,EAAapyC,aAAa,KAAMqyC,GAChCD,EAAa1kB,YAActyC,EAAO+2D,MAClCrvD,KAAKmvD,WAAWp8C,YAAYu8C,GAC5BF,GAAaG,CACf,CAEA,GAAIj3D,GAAUA,EAAOk3D,YAAa,CAChC,IAAIC,EAActnD,SAAS,QACvBunD,EAAS1pD,kBACbypD,EAAYvyC,aAAa,KAAMwyC,GAC/BD,EAAY7kB,YAActyC,EAAOk3D,YACjCxvD,KAAKmvD,WAAWp8C,YAAY08C,GAC5BL,GAAa,IAAMM,CACrB,CAEIN,GACFpvD,KAAKmvD,WAAWjyC,aAAa,kBAAmBkyC,GAGlD,IAAIh4C,EAAOjP,SAAS,QACpBnI,KAAKmvD,WAAWp8C,YAAYqE,GAC5B,IAAIi/B,EAAcluC,SAAS,KAC3BnI,KAAKmvD,WAAWp8C,YAAYsjC,GAC5Br2C,KAAKwzC,aAAe6C,EACpBr2C,KAAK6vC,aAAe,CAClB8f,oBAAqBr3D,GAAUA,EAAOq3D,qBAAuB,gBAC7DtS,yBAA0B/kD,GAAUA,EAAO+kD,0BAA4B,iBACvEuS,kBAAmBt3D,GAAUA,EAAOs3D,mBAAqB,UACzDxa,gBAAiB98C,GAAUA,EAAO88C,kBAAmB,EACrDtF,oBAAqBx3C,IAAuC,IAA7BA,EAAOw3C,mBACtC+f,YAAav3D,GAAUA,EAAOu3D,cAAe,EAC7CC,YAAax3D,GAAUA,EAAOw3D,cAAe,EAC7CC,UAAWz3D,GAAUA,EAAOy3D,WAAa,GACzChlD,GAAIzS,GAAUA,EAAOyS,IAAM,GAC3BilD,UAAW13D,GAAUA,EAAO03D,UAC5BC,WAAY,CACVn1D,MAAOxC,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAWn1D,OAAS,OACjET,OAAQ/B,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAW51D,QAAU,OACnEO,EAAGtC,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAWr1D,GAAK,KACzDG,EAAGzC,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAWl1D,GAAK,MAE3DD,MAAOxC,GAAUA,EAAOwC,MACxBT,OAAQ/B,GAAUA,EAAO+B,OACzB61D,gBAAiB53D,QAAoCL,IAA1BK,EAAO43D,gBAAgC53D,EAAO43D,gBAE3ElwD,KAAKmX,WAAa,CAChBoU,MAAM,EACNhF,UAAW,EACXnP,KAAMA,EACNy4B,aAAc7vC,KAAK6vC,cAErB7vC,KAAKwlC,SAAW,GAChBxlC,KAAK21C,gBAAkB,GACvB31C,KAAKmwD,WAAY,EACjBnwD,KAAKwZ,aAAe,KACtB,CAQA,SAAS42C,wBACPpwD,KAAKqwD,UAAY,CAAC,EAClBrwD,KAAKswD,aAAe,GACpBtwD,KAAKuwD,oBAAsB,CAC7B,CAt0BA3xD,gBAAgB,CAACuyC,YAAagF,iBAAkBuE,eAAgBC,iBAAkBvJ,aAAcwJ,qBAAsB6Q,cAAeiD,sBAErIA,qBAAqBvvD,UAAU89C,cAAgB,WACzCj9C,KAAK+I,KAAKynD,cAAgBxwD,KAAKmX,WAAWkB,YAAY/L,QACxDtM,KAAKywD,cAAgBtoD,SAAS,QAElC,EAEAumD,qBAAqBvvD,UAAUuxD,kBAAoB,SAAUC,GAM3D,IALA,IAAI5xD,EAAI,EACJE,EAAM0xD,EAAUt4D,OAChBu4D,EAAe,GACfC,EAAqB,GAElB9xD,EAAIE,GACL0xD,EAAU5xD,KAAO+xD,OAAOC,aAAa,KAAOJ,EAAU5xD,KAAO+xD,OAAOC,aAAa,IACnFH,EAAatwD,KAAKuwD,GAClBA,EAAqB,IAErBA,GAAsBF,EAAU5xD,GAGlCA,GAAK,EAIP,OADA6xD,EAAatwD,KAAKuwD,GACXD,CACT,EAEAlC,qBAAqBvvD,UAAU6xD,eAAiB,SAAUjoD,EAAM0qB,GAK9D,GAAI1qB,EAAK8B,QAAU9B,EAAK8B,OAAOxS,OAAQ,CACrC,IAAIm2B,EAAQzlB,EAAK8B,OAAO,GAExB,GAAI2jB,EAAMjjB,GAAI,CACZ,IAAI0lD,EAAYziC,EAAMjjB,GAAGijB,EAAMjjB,GAAGlT,OAAS,GAEvC44D,EAAU7qD,IACZ6qD,EAAU7qD,EAAE6D,EAAE,GAAKwpB,EACnBw9B,EAAU7qD,EAAE6D,EAAE,GAAKwpB,EAEvB,CACF,CAEA,OAAO1qB,CACT,EAEA2lD,qBAAqBvvD,UAAUqvD,aAAe,WAE5C,IAAIzvD,EACAE,EAFJe,KAAKisB,mBAAmBjsB,MAGxB,IAAIkM,EAAelM,KAAKiqD,aAAa1G,YACrCvjD,KAAKurD,gBAAkBxpD,iBAAiBmK,EAAeA,EAAa0nB,EAAEv7B,OAAS,GAE3E6T,EAAa+2C,GACfjjD,KAAKwzC,aAAat2B,aAAa,OAAQld,KAAKouD,WAAWliD,EAAa+2C,KAEpEjjD,KAAKwzC,aAAat2B,aAAa,OAAQ,iBAGrChR,EAAa2hC,KACf7tC,KAAKwzC,aAAat2B,aAAa,SAAUld,KAAKouD,WAAWliD,EAAa2hC,KACtE7tC,KAAKwzC,aAAat2B,aAAa,eAAgBhR,EAAa82C,KAG9DhjD,KAAKwzC,aAAat2B,aAAa,YAAahR,EAAak4C,WACzD,IAAIngB,EAAWjkC,KAAKmX,WAAWkB,YAAY61B,cAAchiC,EAAazF,GAEtE,GAAIw9B,EAAS4G,OACX7qC,KAAKwzC,aAAat2B,aAAa,QAAS+mB,EAAS4G,YAC5C,CACL7qC,KAAKwzC,aAAat2B,aAAa,cAAe+mB,EAAS0G,SACvD,IAAIvG,EAAUl4B,EAAak4B,QACvBD,EAASj4B,EAAai4B,OAC1BnkC,KAAKwzC,aAAat2B,aAAa,aAAcinB,GAC7CnkC,KAAKwzC,aAAat2B,aAAa,cAAeknB,EAChD,CAEApkC,KAAKwzC,aAAat2B,aAAa,aAAchR,EAAatF,GAC1D,IAGIsqD,EAHA/J,EAAUj7C,EAAa0nB,GAAK,GAC5Bu9B,IAAenxD,KAAKmX,WAAWkB,YAAY/L,MAC/CrN,EAAMkoD,EAAQ9uD,OAEd,IAAI+zD,EAAepsD,KAAKg5C,QAEpBwX,EAAcxwD,KAAK+I,KAAKynD,YACxB5E,EAAO,EACPC,EAAO,EACPa,GAAY,EACZhF,EAAmC,KAAlBx7C,EAAaq4B,GAAar4B,EAAak4C,UAE5D,IAAIoM,GAAgBW,GAAejlD,EAAawnB,GA4CzC,CACL,IACInnB,EADA6kD,EAAoBpxD,KAAK2uD,UAAUt2D,OAGvC,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAS3B,GARKiB,KAAK2uD,UAAU5vD,KAClBiB,KAAK2uD,UAAU5vD,GAAK,CAClBsyD,KAAM,KACNC,UAAW,KACXC,MAAO,QAINJ,IAAeX,GAAqB,IAANzxD,EAAS,CAG1C,GAFAmyD,EAAQE,EAAoBryD,EAAIiB,KAAK2uD,UAAU5vD,GAAGsyD,KAAOlpD,SAASgpD,EAAa,IAAM,QAEjFC,GAAqBryD,EAAG,CAM1B,GALAmyD,EAAMh0C,aAAa,iBAAkB,QACrCg0C,EAAMh0C,aAAa,kBAAmB,SACtCg0C,EAAMh0C,aAAa,oBAAqB,KACxCld,KAAK2uD,UAAU5vD,GAAGsyD,KAAOH,EAErBC,EAAY,CACd,IAAIG,EAAYnpD,SAAS,KACzB+oD,EAAMn+C,YAAYu+C,GAClBtxD,KAAK2uD,UAAU5vD,GAAGuyD,UAAYA,CAChC,CAEAtxD,KAAK2uD,UAAU5vD,GAAGsyD,KAAOH,EACzBlxD,KAAKwzC,aAAazgC,YAAYm+C,EAChC,CAEAA,EAAMt8D,MAAM4P,QAAU,SACxB,CAkBA,GAhBA4nD,EAAar8B,QAETygC,IACErJ,EAAQpoD,GAAG8oB,IACb+jC,GAAQlE,EACRmE,GAAQ3/C,EAAai4C,QACrB0H,GAAQa,EAAY,EAAI,EACxBA,GAAY,GAGd1sD,KAAKkuD,4BAA4BhiD,EAAckgD,EAAcjF,EAAQpoD,GAAG4U,KAAMi4C,EAAMC,GACpFD,GAAQzE,EAAQpoD,GAAG60B,GAAK,EAExBg4B,GAAQlE,GAGNyJ,EAAY,CAEd,IAAIK,EAEJ,GAAmB,KAHnBjlD,EAAWvM,KAAKmX,WAAWkB,YAAYy1B,YAAY5hC,EAAam4C,UAAUtlD,GAAIklC,EAASE,OAAQnkC,KAAKmX,WAAWkB,YAAY61B,cAAchiC,EAAazF,GAAGkkC,UAG5I/jC,EACX4qD,EAAe,IAAIxC,eAAeziD,EAASxD,KAAM/I,KAAKmX,WAAYnX,UAC7D,CACL,IAAI+I,EAAO0lD,eAEPliD,EAASxD,MAAQwD,EAASxD,KAAK8B,SACjC9B,EAAO/I,KAAKgxD,eAAezkD,EAASxD,KAAMmD,EAAak4C,YAGzDoN,EAAe,IAAI5O,gBAAgB75C,EAAM/I,KAAKmX,WAAYnX,KAC5D,CAEA,GAAIA,KAAK2uD,UAAU5vD,GAAGwyD,MAAO,CAC3B,IAAIA,EAAQvxD,KAAK2uD,UAAU5vD,GAAGwyD,MAC9BvxD,KAAK2uD,UAAU5vD,GAAGuyD,UAAU7iB,YAAY8iB,EAAM/d,cAC9C+d,EAAMv5D,SACR,CAEAgI,KAAK2uD,UAAU5vD,GAAGwyD,MAAQC,EAC1BA,EAAaC,QAAS,EACtBD,EAAav8C,aAAa,GAC1Bu8C,EAAaz3C,cACb/Z,KAAK2uD,UAAU5vD,GAAGuyD,UAAUv+C,YAAYy+C,EAAahe,cAGlC,IAAfjnC,EAAS3F,GACX5G,KAAK2uD,UAAU5vD,GAAGuyD,UAAUp0C,aAAa,YAAa,SAAWhR,EAAak4C,UAAY,IAAM,IAAMl4C,EAAak4C,UAAY,IAAM,IAEzI,MACMoM,GACFU,EAAMh0C,aAAa,YAAa,aAAekvC,EAAaz3D,MAAM,IAAM,IAAMy3D,EAAaz3D,MAAM,IAAM,KAGzGu8D,EAAMtmB,YAAcuc,EAAQpoD,GAAG8E,IAC/BqtD,EAAMt+C,eAAe,uCAAwC,YAAa,WAG9E,CAEI49C,GAAeU,GACjBA,EAAMh0C,aAAa,IAlJR,GAoJf,KA7IoD,CAClD,IAAIw0C,EAAW1xD,KAAKywD,cAChBkB,EAAU,QAEd,OAAQzlD,EAAanC,GACnB,KAAK,EACH4nD,EAAU,MACV,MAEF,KAAK,EACHA,EAAU,SACV,MAEF,QACEA,EAAU,QAIdD,EAASx0C,aAAa,cAAey0C,GACrCD,EAASx0C,aAAa,iBAAkBwqC,GACxC,IAAI9c,EAAc5qC,KAAK0wD,kBAAkBxkD,EAAam4C,WAItD,IAHAplD,EAAM2rC,EAAYvyC,OAClBwzD,EAAO3/C,EAAa63C,GAAK73C,EAAa63C,GAAG,GAAK73C,EAAas3C,OAAS,EAE/DzkD,EAAI,EAAGA,EAAIE,EAAKF,GAAK,GACxBmyD,EAAQlxD,KAAK2uD,UAAU5vD,GAAGsyD,MAAQlpD,SAAS,UACrCyiC,YAAcA,EAAY7rC,GAChCmyD,EAAMh0C,aAAa,IAAK,GACxBg0C,EAAMh0C,aAAa,IAAK2uC,GACxBqF,EAAMt8D,MAAM4P,QAAU,UACtBktD,EAAS3+C,YAAYm+C,GAEhBlxD,KAAK2uD,UAAU5vD,KAClBiB,KAAK2uD,UAAU5vD,GAAK,CAClBsyD,KAAM,KACNE,MAAO,OAIXvxD,KAAK2uD,UAAU5vD,GAAGsyD,KAAOH,EACzBrF,GAAQ3/C,EAAao4C,gBAGvBtkD,KAAKwzC,aAAazgC,YAAY2+C,EAChC,CAmGA,KAAO3yD,EAAIiB,KAAK2uD,UAAUt2D,QACxB2H,KAAK2uD,UAAU5vD,GAAGsyD,KAAKz8D,MAAM4P,QAAU,OACvCzF,GAAK,EAGPiB,KAAKs7C,cAAe,CACtB,EAEAoT,qBAAqBvvD,UAAU6wC,iBAAmB,WAIhD,GAHAhwC,KAAKiV,aAAajV,KAAKgL,KAAKggB,cAAgBhrB,KAAK+I,KAAK2D,IACtD1M,KAAKk9C,qBAEDl9C,KAAKs7C,aAAc,CACrBt7C,KAAKs7C,cAAe,EACpB,IAAIsW,EAAU5xD,KAAKwzC,aAAajiC,UAChCvR,KAAK6xD,KAAO,CACVz3D,IAAKw3D,EAAQ72D,EACbF,KAAM+2D,EAAQh3D,EACdE,MAAO82D,EAAQ92D,MACfT,OAAQu3D,EAAQv3D,OAEpB,CAEA,OAAO2F,KAAK6xD,IACd,EAEAnD,qBAAqBvvD,UAAUitB,SAAW,WACxC,IAAIrtB,EAEAyyD,EADAvyD,EAAMe,KAAK2uD,UAAUt2D,OAIzB,IAFA2H,KAAKgrB,cAAgBhrB,KAAKgL,KAAKggB,cAE1BjsB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,GACxByyD,EAAexxD,KAAK2uD,UAAU5vD,GAAGwyD,SAG/BC,EAAav8C,aAAajV,KAAKgL,KAAKggB,cAAgBhrB,KAAK+I,KAAK2D,IAE1D8kD,EAAajmC,OACfvrB,KAAKurB,MAAO,GAIpB,EAEAmjC,qBAAqBvvD,UAAU+9C,mBAAqB,WAGlD,GAFAl9C,KAAKuuD,iBAEAvuD,KAAK+I,KAAKynD,aAAexwD,KAAKurB,QACjCvrB,KAAK8tD,aAAanC,YAAY3rD,KAAKiqD,aAAa1G,YAAavjD,KAAKwrD,oBAE9DxrD,KAAKwrD,oBAAsBxrD,KAAK8tD,aAAatC,oBAAoB,CAEnE,IAAIzsD,EACAE,EAFJe,KAAKs7C,cAAe,EAGpB,IAGIwW,EACAC,EACAP,EALAjG,EAAkBvrD,KAAK8tD,aAAavC,gBACpCpE,EAAUnnD,KAAKiqD,aAAa1G,YAAY3vB,EAM5C,IALA30B,EAAMkoD,EAAQ9uD,OAKT0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACnBooD,EAAQpoD,GAAG8oB,IACdiqC,EAAiBvG,EAAgBxsD,GACjCgzD,EAAW/xD,KAAK2uD,UAAU5vD,GAAGsyD,MAC7BG,EAAexxD,KAAK2uD,UAAU5vD,GAAGwyD,QAG/BC,EAAaz3C,cAGX+3C,EAAevmC,KAAKsI,GACtBk+B,EAAS70C,aAAa,YAAa40C,EAAej+B,GAGhDi+B,EAAevmC,KAAK/f,GACtBumD,EAAS70C,aAAa,UAAW40C,EAAetmD,GAG9CsmD,EAAevmC,KAAKy3B,IACtB+O,EAAS70C,aAAa,eAAgB40C,EAAe9O,IAGnD8O,EAAevmC,KAAKsiB,IACtBkkB,EAAS70C,aAAa,SAAU40C,EAAejkB,IAG7CikB,EAAevmC,KAAK03B,IACtB8O,EAAS70C,aAAa,OAAQ40C,EAAe7O,IAIrD,CAEJ,EAMArkD,gBAAgB,CAACi8C,eAAgB+T,eAEjCA,cAAczvD,UAAU89C,cAAgB,WACtC,IAAIzG,EAAOruC,SAAS,QAIpBquC,EAAKt5B,aAAa,QAASld,KAAK+I,KAAKi6C,IACrCxM,EAAKt5B,aAAa,SAAUld,KAAK+I,KAAK0f,IACtC+tB,EAAKt5B,aAAa,OAAQld,KAAK+I,KAAK8kC,IACpC7tC,KAAKwzC,aAAazgC,YAAYyjC,EAChC,EAUAqY,YAAY1vD,UAAU8V,aAAe,SAAUu6B,GAC7CxvC,KAAK4zC,kBAAkBpE,GAAK,EAC9B,EAEAqf,YAAY1vD,UAAU4a,YAAc,WAAa,EAEjD80C,YAAY1vD,UAAU40C,eAAiB,WACrC,OAAO,IACT,EAEA8a,YAAY1vD,UAAUnH,QAAU,WAAa,EAE7C62D,YAAY1vD,UAAU6wC,iBAAmB,WAAa,EAEtD6e,YAAY1vD,UAAUkc,KAAO,WAAa,EAE1Czc,gBAAgB,CAACuyC,YAAagF,iBAAkBwE,iBAAkBvJ,cAAeyd,aAIjFjwD,gBAAgB,CAACqzC,cAAe6c,iBAEhCA,gBAAgB3vD,UAAU01C,WAAa,SAAU9rC,GAC/C,OAAO,IAAI8lD,YAAY9lD,EAAM/I,KAAKmX,WAAYnX,KAChD,EAEA8uD,gBAAgB3vD,UAAU21C,YAAc,SAAU/rC,GAChD,OAAO,IAAI65C,gBAAgB75C,EAAM/I,KAAKmX,WAAYnX,KACpD,EAEA8uD,gBAAgB3vD,UAAU41C,WAAa,SAAUhsC,GAC/C,OAAO,IAAI2lD,qBAAqB3lD,EAAM/I,KAAKmX,WAAYnX,KACzD,EAEA8uD,gBAAgB3vD,UAAUu1C,YAAc,SAAU3rC,GAChD,OAAO,IAAI8xC,cAAc9xC,EAAM/I,KAAKmX,WAAYnX,KAClD,EAEA8uD,gBAAgB3vD,UAAUy1C,YAAc,SAAU7rC,GAChD,OAAO,IAAI6lD,cAAc7lD,EAAM/I,KAAKmX,WAAYnX,KAClD,EAEA8uD,gBAAgB3vD,UAAUwX,gBAAkB,SAAUsC,GACpDjZ,KAAKmvD,WAAWjyC,aAAa,QAAS,8BACtCld,KAAKmvD,WAAWjyC,aAAa,cAAe,gCAExCld,KAAK6vC,aAAaigB,YACpB9vD,KAAKmvD,WAAWjyC,aAAa,UAAWld,KAAK6vC,aAAaigB,aAE1D9vD,KAAKmvD,WAAWjyC,aAAa,UAAW,OAASjE,EAAS6vB,EAAI,IAAM7vB,EAAS9S,GAG1EnG,KAAK6vC,aAAaggB,cACrB7vD,KAAKmvD,WAAWjyC,aAAa,QAASjE,EAAS6vB,GAC/C9oC,KAAKmvD,WAAWjyC,aAAa,SAAUjE,EAAS9S,GAChDnG,KAAKmvD,WAAWv6D,MAAMkG,MAAQ,OAC9BkF,KAAKmvD,WAAWv6D,MAAMyF,OAAS,OAC/B2F,KAAKmvD,WAAWv6D,MAAMq/B,UAAY,qBAClCj0B,KAAKmvD,WAAWv6D,MAAMg7D,kBAAoB5vD,KAAK6vC,aAAa+f,mBAG1D5vD,KAAK6vC,aAAa/0C,OACpBkF,KAAKmvD,WAAWjyC,aAAa,QAASld,KAAK6vC,aAAa/0C,OAGtDkF,KAAK6vC,aAAax1C,QACpB2F,KAAKmvD,WAAWjyC,aAAa,SAAUld,KAAK6vC,aAAax1C,QAGvD2F,KAAK6vC,aAAakgB,WACpB/vD,KAAKmvD,WAAWjyC,aAAa,QAASld,KAAK6vC,aAAakgB,WAGtD/vD,KAAK6vC,aAAa9kC,IACpB/K,KAAKmvD,WAAWjyC,aAAa,KAAMld,KAAK6vC,aAAa9kC,SAGnB9S,IAAhC+H,KAAK6vC,aAAamgB,WACpBhwD,KAAKmvD,WAAWjyC,aAAa,YAAald,KAAK6vC,aAAamgB,WAG9DhwD,KAAKmvD,WAAWjyC,aAAa,sBAAuBld,KAAK6vC,aAAa8f,qBAGtE3vD,KAAKhG,cAAcqB,QAAQ0X,YAAY/S,KAAKmvD,YAE5C,IAAI/3C,EAAOpX,KAAKmX,WAAWC,KAC3BpX,KAAK81C,gBAAgB78B,EAAU7B,GAC/BpX,KAAKmX,WAAWi+B,gBAAkBp1C,KAAK6vC,aAAauF,gBACpDp1C,KAAK+I,KAAOkQ,EACZ,IAAIo9B,EAAcluC,SAAS,YACvBquC,EAAOruC,SAAS,QACpBquC,EAAKt5B,aAAa,QAASjE,EAAS6vB,GACpC0N,EAAKt5B,aAAa,SAAUjE,EAAS9S,GACrCqwC,EAAKt5B,aAAa,IAAK,GACvBs5B,EAAKt5B,aAAa,IAAK,GACvB,IAAIwjC,EAAS16C,kBACbqwC,EAAYn5B,aAAa,KAAMwjC,GAC/BrK,EAAYtjC,YAAYyjC,GACxBx2C,KAAKwzC,aAAat2B,aAAa,YAAa,OAASxe,kBAAoB,IAAMgiD,EAAS,KACxFtpC,EAAKrE,YAAYsjC,GACjBr2C,KAAK4J,OAASqP,EAASrP,OACvB5J,KAAKwlC,SAAWzjC,iBAAiBkX,EAASrP,OAAOvR,OACnD,EAEAy2D,gBAAgB3vD,UAAUnH,QAAU,WAOlC,IAAI+G,EANAiB,KAAKhG,cAAcqB,UACrB2E,KAAKhG,cAAcqB,QAAQgiB,UAAY,IAGzCrd,KAAKwzC,aAAe,KACpBxzC,KAAKmX,WAAWC,KAAO,KAEvB,IAAInY,EAAMe,KAAK4J,OAAS5J,KAAK4J,OAAOvR,OAAS,EAE7C,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBiB,KAAKwlC,SAASzmC,IAAMiB,KAAKwlC,SAASzmC,GAAG/G,SACvCgI,KAAKwlC,SAASzmC,GAAG/G,UAIrBgI,KAAKwlC,SAASntC,OAAS,EACvB2H,KAAKmwD,WAAY,EACjBnwD,KAAKhG,cAAgB,IACvB,EAEA80D,gBAAgB3vD,UAAU2a,oBAAsB,WAAa,EAE7Dg1C,gBAAgB3vD,UAAU6yD,eAAiB,SAAUtqC,GACnD,IAAI3oB,EAAI,EACJE,EAAMe,KAAK4J,OAAOvR,OAEtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,GAAIiB,KAAK4J,OAAO7K,GAAG2oB,MAAQA,EACzB,OAAO3oB,EAIX,OAAQ,CACV,EAEA+vD,gBAAgB3vD,UAAUm1C,UAAY,SAAU53C,GAC9C,IAAI8oC,EAAWxlC,KAAKwlC,SAEpB,IAAIA,EAAS9oC,IAAgC,KAAxBsD,KAAK4J,OAAOlN,GAAK+N,GAAtC,CAIA+6B,EAAS9oC,IAAO,EAChB,IAAI6H,EAAUvE,KAAKw0C,WAAWx0C,KAAK4J,OAAOlN,IAa1C,GAZA8oC,EAAS9oC,GAAO6H,EAEZqD,yBAC0B,IAAxB5H,KAAK4J,OAAOlN,GAAK+N,IACnBzK,KAAKmX,WAAWX,iBAAiB3B,oBAAoBtQ,GAGvDA,EAAQiU,mBAGVxY,KAAKiyD,mBAAmB1tD,EAAS7H,GAE7BsD,KAAK4J,OAAOlN,GAAKi/C,GAAI,CACvB,IAAIuW,EAAe,OAAQlyD,KAAK4J,OAAOlN,GAAOsD,KAAKgyD,eAAehyD,KAAK4J,OAAOlN,GAAKy1D,IAAMz1D,EAAM,EAE/F,IAAsB,IAAlBw1D,EACF,OAGF,GAAKlyD,KAAKwlC,SAAS0sB,KAAiD,IAAhClyD,KAAKwlC,SAAS0sB,GAG3C,CACL,IACIE,EADe5sB,EAAS0sB,GACC9V,SAASp8C,KAAK4J,OAAOlN,GAAKi/C,IACvDp3C,EAAQu4C,SAASsV,EACnB,MANEpyD,KAAKs0C,UAAU4d,GACflyD,KAAK01C,kBAAkBnxC,EAM3B,CA/BA,CAgCF,EAEAuqD,gBAAgB3vD,UAAUo1C,qBAAuB,WAC/C,KAAOv0C,KAAK21C,gBAAgBt9C,QAAQ,CAClC,IAAIkM,EAAUvE,KAAK21C,gBAAgBla,MAGnC,GAFAl3B,EAAQy4C,iBAEJz4C,EAAQwE,KAAK4yC,GAIf,IAHA,IAAI58C,EAAI,EACJE,EAAMe,KAAKwlC,SAASntC,OAEjB0G,EAAIE,GAAK,CACd,GAAIe,KAAKwlC,SAASzmC,KAAOwF,EAAS,CAChC,IAAI2tD,EAAe,OAAQ3tD,EAAQwE,KAAO/I,KAAKgyD,eAAeztD,EAAQwE,KAAKopD,IAAMpzD,EAAI,EAEjFqzD,EADepyD,KAAKwlC,SAAS0sB,GACJ9V,SAASp8C,KAAK4J,OAAO7K,GAAG48C,IACrDp3C,EAAQu4C,SAASsV,GACjB,KACF,CAEArzD,GAAK,CACP,CAEJ,CACF,EAEA+vD,gBAAgB3vD,UAAU4a,YAAc,SAAUy1B,GAChD,GAAIxvC,KAAKgrB,gBAAkBwkB,IAAOxvC,KAAKmwD,UAAvC,CAgBA,IAAIpxD,EAZQ,OAARywC,EACFA,EAAMxvC,KAAKgrB,cAEXhrB,KAAKgrB,cAAgBwkB,EAKvBxvC,KAAKmX,WAAWoP,SAAWipB,EAC3BxvC,KAAKmX,WAAWsU,SAAW,EAC3BzrB,KAAKmX,WAAWX,iBAAiBrB,aAAeq6B,EAChDxvC,KAAKmX,WAAWoU,MAAO,EAEvB,IAAItsB,EAAMe,KAAK4J,OAAOvR,OAMtB,IAJK2H,KAAK2J,gBACR3J,KAAKq0C,YAAY7E,GAGdzwC,EAAIE,EAAM,EAAGF,GAAK,EAAGA,GAAK,GACzBiB,KAAK2J,gBAAkB3J,KAAKwlC,SAASzmC,KACvCiB,KAAKwlC,SAASzmC,GAAGkW,aAAau6B,EAAMxvC,KAAK4J,OAAO7K,GAAG2N,IAIvD,GAAI1M,KAAKmX,WAAWoU,KAClB,IAAKxsB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,GACpBiB,KAAK2J,gBAAkB3J,KAAKwlC,SAASzmC,KACvCiB,KAAKwlC,SAASzmC,GAAGgb,aA9BvB,CAkCF,EAEA+0C,gBAAgB3vD,UAAU8yD,mBAAqB,SAAU1tD,EAAS7H,GAChE,IAAIqkB,EAAaxc,EAAQwvC,iBAEzB,GAAKhzB,EAAL,CAOA,IAHA,IACIsxC,EADAtzD,EAAI,EAGDA,EAAIrC,GACLsD,KAAKwlC,SAASzmC,KAA2B,IAArBiB,KAAKwlC,SAASzmC,IAAeiB,KAAKwlC,SAASzmC,GAAGg1C,mBACpEse,EAAcryD,KAAKwlC,SAASzmC,GAAGg1C,kBAGjCh1C,GAAK,EAGHszD,EACFryD,KAAKwzC,aAAa8e,aAAavxC,EAAYsxC,GAE3CryD,KAAKwzC,aAAazgC,YAAYgO,EAhBhC,CAkBF,EAEA+tC,gBAAgB3vD,UAAUkc,KAAO,WAC/Brb,KAAKwzC,aAAa5+C,MAAM4P,QAAU,MACpC,EAEAsqD,gBAAgB3vD,UAAUmc,KAAO,WAC/Btb,KAAKwzC,aAAa5+C,MAAM4P,QAAU,OACpC,EAIA5F,gBAAgB,CAACuyC,YAAagF,iBAAkBwE,iBAAkBvJ,aAAcwJ,sBAAuBmU,cAEvGA,aAAa5vD,UAAU27C,YAAc,SAAU/xC,EAAMoO,EAAYnM,GAC/DhL,KAAKomB,YACLpmB,KAAKuxC,aAAaxoC,EAAMoO,EAAYnM,GACpChL,KAAK23C,cAAc5uC,EAAMoO,EAAYnM,GACrChL,KAAK+uC,iBACL/uC,KAAK+8C,gBACL/8C,KAAKk7C,sBACLl7C,KAAKm7C,0BACLn7C,KAAKm8C,8BAEDn8C,KAAK+I,KAAKmM,IAAOiC,EAAWi+B,iBAC9Bp1C,KAAKk1C,gBAGPl1C,KAAKqb,MACP,EAcA0zC,aAAa5vD,UAAU8V,aAAe,SAAUu6B,GAK9C,GAJAxvC,KAAKurB,MAAO,EACZvrB,KAAKuvC,uBAAuBC,GAC5BxvC,KAAK4zC,kBAAkBpE,EAAKxvC,KAAKgvC,WAE5BhvC,KAAKgvC,WAAchvC,KAAK+I,KAAKmM,GAAlC,CAIA,GAAKlV,KAAKsU,GAAGw9B,aASX9xC,KAAKgrB,cAAgBwkB,EAAMxvC,KAAK+I,KAAK4D,OATZ,CACzB,IAAIunC,EAAel0C,KAAKsU,GAAGjO,EAEvB6tC,IAAiBl0C,KAAK+I,KAAK0D,KAC7BynC,EAAel0C,KAAK+I,KAAK0D,GAAK,GAGhCzM,KAAKgrB,cAAgBkpB,CACvB,CAIA,IAAIn1C,EACAE,EAAMe,KAAKwlC,SAASntC,OAOxB,IALK2H,KAAK2J,gBACR3J,KAAKq0C,YAAYr0C,KAAKgrB,eAInBjsB,EAAIE,EAAM,EAAGF,GAAK,EAAGA,GAAK,GACzBiB,KAAK2J,gBAAkB3J,KAAKwlC,SAASzmC,MACvCiB,KAAKwlC,SAASzmC,GAAGkW,aAAajV,KAAKgrB,cAAgBhrB,KAAK4J,OAAO7K,GAAG2N,IAE9D1M,KAAKwlC,SAASzmC,GAAGwsB,OACnBvrB,KAAKurB,MAAO,GA3BlB,CA+BF,EAEAwjC,aAAa5vD,UAAU+9C,mBAAqB,WAC1C,IAAIn+C,EACAE,EAAMe,KAAK4J,OAAOvR,OAEtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,GACpBiB,KAAK2J,gBAAkB3J,KAAKwlC,SAASzmC,KACvCiB,KAAKwlC,SAASzmC,GAAGgb,aAGvB,EAEAg1C,aAAa5vD,UAAUozD,YAAc,SAAUhsB,GAC7CvmC,KAAKwlC,SAAWe,CAClB,EAEAwoB,aAAa5vD,UAAUqzD,YAAc,WACnC,OAAOxyD,KAAKwlC,QACd,EAEAupB,aAAa5vD,UAAUszD,gBAAkB,WACvC,IAAI1zD,EACAE,EAAMe,KAAK4J,OAAOvR,OAEtB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBiB,KAAKwlC,SAASzmC,IAChBiB,KAAKwlC,SAASzmC,GAAG/G,SAGvB,EAEA+2D,aAAa5vD,UAAUnH,QAAU,WAC/BgI,KAAKyyD,kBACLzyD,KAAKk8C,oBACP,EAcAt9C,gBAAgB,CAACkwD,gBAAiBC,aAAcrU,gBAAiBsU,gBAEjEA,eAAe7vD,UAAUw1C,WAAa,SAAU5rC,GAC9C,OAAO,IAAIimD,eAAejmD,EAAM/I,KAAKmX,WAAYnX,KACnD,EAqEApB,gBAAgB,CAACkwD,iBAAkBI,aAEnCA,YAAY/vD,UAAUw1C,WAAa,SAAU5rC,GAC3C,OAAO,IAAIimD,eAAejmD,EAAM/I,KAAKmX,WAAYnX,KACnD,EAQAowD,sBAAsBjxD,UAAY,CAChCuzD,qBAAsB,SAA8B5Z,GAClD,IAAI/5C,EACAE,EAAM65C,EAAWzgD,OACjBkd,EAAM,IAEV,IAAKxW,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBwW,GAAOujC,EAAW/5C,GAAGk1B,UAAU1e,IAAM,IAGvC,IAAIo9C,EAAW3yD,KAAKqwD,UAAU96C,GAY9B,OAVKo9C,IACHA,EAAW,CACT7Z,WAAY,GAAGh8B,OAAOg8B,GACtBnJ,eAAgB,IAAInd,OACpBjH,MAAM,GAERvrB,KAAKqwD,UAAU96C,GAAOo9C,EACtB3yD,KAAKswD,aAAahwD,KAAKqyD,IAGlBA,CACT,EACAC,gBAAiB,SAAyBD,EAAUzZ,GAKlD,IAJA,IAAIn6C,EAAI,EACJE,EAAM0zD,EAAS7Z,WAAWzgD,OAC1BkzB,EAAO2tB,EAEJn6C,EAAIE,IAAQi6C,GAAc,CAC/B,GAAIyZ,EAAS7Z,WAAW/5C,GAAGk1B,UAAU8S,OAAOxb,KAAM,CAChDA,GAAO,EACP,KACF,CAEAxsB,GAAK,CACP,CAEA,GAAIwsB,EAGF,IAFAonC,EAAShjB,eAAe5f,QAEnBhxB,EAAIE,EAAM,EAAGF,GAAK,EAAGA,GAAK,EAC7B4zD,EAAShjB,eAAe3Z,SAAS28B,EAAS7Z,WAAW/5C,GAAGk1B,UAAU8S,OAAO1gC,GAI7EssD,EAASpnC,KAAOA,CAClB,EACAsnC,iBAAkB,SAA0B3Z,GAC1C,IAAIn6C,EACAE,EAAMe,KAAKswD,aAAaj4D,OAE5B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK4yD,gBAAgB5yD,KAAKswD,aAAavxD,GAAIm6C,EAE/C,EACA4Z,UAAW,WAET,OADA9yD,KAAKuwD,qBAAuB,EACrB,IAAMvwD,KAAKuwD,mBACpB,GAGF,IAAIwC,WAAa,WACf,IAAIhoD,EAAK,+BACLioD,EAAa,KACbC,EAAgB,KAChBC,EAAM,KA4CV,SAASC,IACFH,IACHE,EAxBJ,WACE,IAAIE,EAAOjrD,SAAS,OAEhBuxC,EAAMvxC,SAAS,UACf8tB,EAAS9tB,SAAS,iBAetB,OAdAuxC,EAAIx8B,aAAa,KAAMnS,GACvBkrB,EAAO/Y,aAAa,OAAQ,UAC5B+Y,EAAO/Y,aAAa,8BAA+B,QACnD+Y,EAAO/Y,aAAa,SAAU,sFAC9Bw8B,EAAI3mC,YAAYkjB,GAEhBm9B,EAAKrgD,YAAY2mC,GAEjB0Z,EAAKl2C,aAAa,KAAMnS,EAAK,QAEzB6uC,eAAeC,gBACjBuZ,EAAKx+D,MAAM4P,QAAU,QAGhB4uD,CACT,CAIUC,GACNh3D,SAAS8gB,KAAKpK,YAAYmgD,GAC1BF,EAAar0D,UAAU,WACvBs0D,EAAgBD,EAAW5iD,WAAW,OAExBjX,OAAS,QAAU4R,EAAK,IACtCkoD,EAAc5iD,UAAY,gBAC1B4iD,EAAc3iD,SAAS,EAAG,EAAG,EAAG,GAEpC,CAcA,MAAO,CACLjC,KAAM8kD,EACNn0C,IAdF,SAAiB9O,GASf,OARK8iD,GACHG,IAGFH,EAAWl4D,MAAQoV,EAAOpV,MAC1Bk4D,EAAW34D,OAAS6V,EAAO7V,OAE3B44D,EAAc95D,OAAS,QAAU4R,EAAK,IAC/BioD,CACT,EAMF,EAEA,SAASM,aAAax4D,EAAOT,GAC3B,GAAIu/C,eAAeE,gBACjB,OAAO,IAAI/O,gBAAgBjwC,EAAOT,GAGpC,IAAI6V,EAASvR,UAAU,UAGvB,OAFAuR,EAAOpV,MAAQA,EACfoV,EAAO7V,OAASA,EACT6V,CACT,CAEA,IAAItC,YACK,CACL2lD,eAAgBR,WAAW1kD,KAC3BmlD,cAAeT,WAAW/zC,IAC1Bs0C,aAAcA,cAIdG,kBAAoB,CAAC,EAEzB,SAASC,UAAUt3C,GACjB,IAAIrd,EAGAm7C,EAFAj7C,EAAMmd,EAAKrT,KAAKgoC,GAAK30B,EAAKrT,KAAKgoC,GAAG14C,OAAS,EAI/C,IAHA2H,KAAKq6C,QAAU,GAGVt7C,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAC3Bm7C,EAAgB,KAChB,IAAIp+C,EAAOsgB,EAAKrT,KAAKgoC,GAAGhyC,GAAG0L,GAEvBgpD,kBAAkB33D,KAEpBo+C,EAAgB,IAAII,EADPmZ,kBAAkB33D,GAAMy+C,QACVn+B,EAAKs3B,eAAe1C,eAAejyC,GAAIqd,IAGhE89B,GACFl6C,KAAKq6C,QAAQ/5C,KAAK45C,EAEtB,CAEIl6C,KAAKq6C,QAAQhiD,QACf+jB,EAAKgzB,uBAAuBpvC,KAEhC,CAyBA,SAAS2zD,eAAe5oD,EAAIwvC,GAC1BkZ,kBAAkB1oD,GAAM,CACtBwvC,OAAQA,EAEZ,CAEA,SAASqZ,cAAc7qD,EAAMxE,GAK3B,IAAIxF,EAJJiB,KAAK+I,KAAOA,EACZ/I,KAAKuE,QAAUA,EACfvE,KAAKsK,gBAAkBtK,KAAK+I,KAAKuB,iBAAmB,GACpDtK,KAAKs2C,SAAWv0C,iBAAiB/B,KAAKsK,gBAAgBjS,QAEtD,IAAI4G,EAAMe,KAAKsK,gBAAgBjS,OAC3Bw7D,GAAW,EAEf,IAAK90D,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACa,MAAjCiB,KAAKsK,gBAAgBvL,GAAG5D,OAC1B04D,GAAW,GAGb7zD,KAAKs2C,SAASv3C,GAAKiwB,qBAAqB+nB,aAAa/2C,KAAKuE,QAASvE,KAAKsK,gBAAgBvL,GAAI,GAG9FiB,KAAK6zD,SAAWA,EAEZA,GACF7zD,KAAKuE,QAAQ6qC,uBAAuBpvC,KAExC,CAoDA,SAAS8zD,gBAAiB,CAvG1BJ,UAAUv0D,UAAU4a,YAAc,SAAU6R,GAC1C,IAAI7sB,EACAE,EAAMe,KAAKq6C,QAAQhiD,OAEvB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKq6C,QAAQt7C,GAAGgb,YAAY6R,EAEhC,EAEA8nC,UAAUv0D,UAAUy5C,WAAa,SAAU98C,GACzC,IAAIiD,EACAE,EAAMe,KAAKq6C,QAAQhiD,OACnBy4C,EAAU,GAEd,IAAK/xC,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBiB,KAAKq6C,QAAQt7C,GAAGjD,OAASA,GAC3Bg1C,EAAQxwC,KAAKN,KAAKq6C,QAAQt7C,IAI9B,OAAO+xC,CACT,EAgCA8iB,cAAcz0D,UAAU4a,YAAc,WACpC,GAAK/Z,KAAK6zD,SAAV,CAIA,IAEI90D,EAEAwL,EACA4sB,EACApuB,EANAkrB,EAAYj0B,KAAKuE,QAAQorC,eAAevS,IACxCjtB,EAAMnQ,KAAKuE,QAAQwvD,cAEnB90D,EAAMe,KAAKsK,gBAAgBjS,OAM/B,IAFA8X,EAAI6jD,YAECj1D,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,GAAqC,MAAjCiB,KAAKsK,gBAAgBvL,GAAG5D,KAAc,CAYxC,IAAI4O,EAXA/J,KAAKsK,gBAAgBvL,GAAGgmC,MAC1B50B,EAAI8jD,OAAO,EAAG,GACd9jD,EAAI+jD,OAAOl0D,KAAKuE,QAAQ4S,WAAW6+B,SAASlN,EAAG,GAC/C34B,EAAI+jD,OAAOl0D,KAAKuE,QAAQ4S,WAAW6+B,SAASlN,EAAG9oC,KAAKuE,QAAQ4S,WAAW6+B,SAAS7vC,GAChFgK,EAAI+jD,OAAO,EAAGl0D,KAAKuE,QAAQ4S,WAAW6+B,SAAS7vC,GAC/CgK,EAAI+jD,OAAO,EAAG,IAGhBnrD,EAAO/I,KAAKs2C,SAASv3C,GAAGsH,EACxBkE,EAAK0pB,EAAUgD,kBAAkBluB,EAAK1C,EAAE,GAAG,GAAI0C,EAAK1C,EAAE,GAAG,GAAI,GAC7D8J,EAAI8jD,OAAO1pD,EAAG,GAAIA,EAAG,IAErB,IAAIP,EAAOjB,EAAK6X,QAEhB,IAAK7W,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBotB,EAAMlD,EAAUoD,oBAAoBtuB,EAAKyC,EAAEzB,EAAI,GAAIhB,EAAKhK,EAAEgL,GAAIhB,EAAK1C,EAAE0D,IACrEoG,EAAIgkD,cAAch9B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGhEA,EAAMlD,EAAUoD,oBAAoBtuB,EAAKyC,EAAEzB,EAAI,GAAIhB,EAAKhK,EAAE,GAAIgK,EAAK1C,EAAE,IACrE8J,EAAIgkD,cAAch9B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAChE,CAGFn3B,KAAKuE,QAAQ4S,WAAWvhB,SAASw+D,MAAK,GACtCjkD,EAAIkkD,MAtCJ,CAuCF,EAEAT,cAAcz0D,UAAU85C,gBAAkB7C,YAAYj3C,UAAU85C,gBAEhE2a,cAAcz0D,UAAUnH,QAAU,WAChCgI,KAAKuE,QAAU,IACjB,EAIA,IAAI+vD,cAAgB,CAClB,EAAG,YACH,EAAG,aACH,EAAG,YACH,EAAG,cA4JL,SAASC,YAAYhwD,EAASwE,EAAMm7B,EAAQswB,GAC1Cx0D,KAAKy0D,aAAe,GACpBz0D,KAAKukC,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,IAWIxlC,EAXA0L,EAAK,EAEO,OAAZ1B,EAAK0B,GACPA,EAAK,EACgB,OAAZ1B,EAAK0B,GACdA,EAAK,EACgB,OAAZ1B,EAAK0B,KACdA,EAAK,GAGPzK,KAAKyoB,GAAKuG,qBAAqB+nB,aAAaxyC,EAASwE,EAAM0B,EAAIlG,GAE/D,IACImwD,EADAz1D,EAAMilC,EAAO7rC,OAGjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACnBmlC,EAAOnlC,GAAGuO,SACbonD,EAAc,CACZ5b,WAAY0b,EAAkB9B,qBAAqBxuB,EAAOnlC,GAAG+5C,YAC7D6b,QAAS,IAEX30D,KAAKy0D,aAAan0D,KAAKo0D,GACvBxwB,EAAOnlC,GAAGymC,SAASllC,KAAKo0D,GAG9B,CAIA,SAASE,eAAe7rD,EAAMoO,EAAYnM,GACxChL,KAAK6K,OAAS,GACd7K,KAAKgzC,WAAajqC,EAAK8B,OACvB7K,KAAK6iD,WAAa,GAClB7iD,KAAKizC,UAAY,GACjBjzC,KAAK6/C,aAAe,GACpB7/C,KAAKu9C,eAAiB,GACtBv9C,KAAK49C,kBAAoB,GACzB59C,KAAKw0D,kBAAoB,IAAIpE,sBAC7BpwD,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,EACrC,CA4hBA,SAAS6pD,cAAc9rD,EAAMoO,EAAYnM,GACvChL,KAAK2uD,UAAY,GACjB3uD,KAAKmkD,QAAU,EACfnkD,KAAKgkD,eAAgB,EACrBhkD,KAAKikD,iBAAkB,EACvBjkD,KAAKkkD,iBAAkB,EACvBlkD,KAAK80D,QAAS,EACd90D,KAAK+0D,MAAO,EACZ/0D,KAAK2jD,cAAgB,EACrB3jD,KAAKg1D,cAAgB,KACrBh1D,KAAK8qD,WAAa,SAClB9qD,KAAKuqB,OAAS,CACZwqC,KAAM,gBACND,OAAQ,gBACRG,OAAQ,EACRC,OAAQ,IAEVl1D,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,EACrC,CAsOA,SAASmqD,eAAepsD,EAAMoO,EAAYnM,GACxChL,KAAK+Q,UAAYoG,EAAWiE,aAAarS,EAAK4B,OAC9C3K,KAAKoR,IAAM+F,EAAWm6B,YAAY9+B,SAASxS,KAAK+Q,WAChD/Q,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,EACrC,CAyCA,SAASoqD,eAAersD,EAAMoO,EAAYnM,GACxChL,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,EACrC,CAcA,SAASqqD,qBAAsB,CAmU/B,SAASC,gBACPt1D,KAAKw4C,SAAW,EAChBx4C,KAAKi0B,UAAYxyB,iBAAiB,UAAW,IAC7CzB,KAAKqQ,UAAY,GACjBrQ,KAAKu1D,YAAc,GACnBv1D,KAAKwnD,UAAY,GACjBxnD,KAAKw1D,QAAU,GACfx1D,KAAK4iC,SAAW,GAChB5iC,KAAK6iC,WAAa,GAClB7iC,KAAK+K,GAAK9O,KAAK0H,QACjB,CAEA,SAAS8xD,gBAIP,IAAI12D,EAGJ,IANAiB,KAAK01D,MAAQ,GACb11D,KAAK21D,QAAU,EACf31D,KAAK41D,IAAM,IAAIpjC,OAIVzzB,EAAI,EAAGA,EAFF,GAEWA,GAAK,EAAG,CAC3B,IAAIg1D,EAAgB,IAAIuB,cACxBt1D,KAAK01D,MAAM32D,GAAKg1D,CAClB,CAEA/zD,KAAK4gB,QAPK,GAQV5gB,KAAK61D,cAAgB,KACrB71D,KAAK81D,aAAe,IAAItjC,OACxBxyB,KAAK+1D,eAAiB,EAEtB/1D,KAAKg2D,iBAAmB,GACxBh2D,KAAKi2D,iBAAmB,GAExBj2D,KAAKk2D,mBAAqB,GAC1Bl2D,KAAKm2D,mBAAqB,GAE1Bn2D,KAAKo2D,iBAAmB,GACxBp2D,KAAKq2D,iBAAmB,GAExBr2D,KAAKs2D,eAAiB,GACtBt2D,KAAKu2D,eAAiB,GAEtBv2D,KAAKw2D,gBAAkB,GACvBx2D,KAAKy2D,gBAAkB,GAEvBz2D,KAAK02D,kBAAoB,GACzB12D,KAAK22D,kBAAoB,EAC3B,CAiNA,SAASC,cAAc7tD,EAAMoO,EAAYnM,GACvChL,KAAK2J,gBAAiB,EACtB3J,KAAK4J,OAASb,EAAKa,OACnB5J,KAAK21C,gBAAkB,GACvB31C,KAAKwlC,SAAWzjC,iBAAiB/B,KAAK4J,OAAOvR,QAC7C2H,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,GACnChL,KAAKsU,GAAKvL,EAAKuL,GAAKmY,gBAAgBC,QAAQ1sB,KAAM+I,EAAKuL,GAAI,EAAG6C,EAAWtB,UAAW7V,MAAQ,CAC1F8xC,cAAc,EAElB,CAyCA,SAAS+kB,eAAe78D,EAAe1B,GACrC0H,KAAKhG,cAAgBA,EACrBgG,KAAK6vC,aAAe,CAClBinB,aAAax+D,QAAiCL,IAAvBK,EAAOw+D,aAA4Bx+D,EAAOw+D,YACjEC,QAASz+D,GAAUA,EAAOy+D,SAAW,KACrC3hB,gBAAiB98C,GAAUA,EAAO88C,kBAAmB,EACrDua,oBAAqBr3D,GAAUA,EAAOq3D,qBAAuB,gBAC7DtS,yBAA0B/kD,GAAUA,EAAO+kD,0BAA4B,iBACvEuS,kBAAmBt3D,GAAUA,EAAOs3D,mBAAqB,UACzDG,UAAWz3D,GAAUA,EAAOy3D,WAAa,GACzChlD,GAAIzS,GAAUA,EAAOyS,IAAM,GAC3BmlD,gBAAiB53D,QAAoCL,IAA1BK,EAAO43D,gBAAgC53D,EAAO43D,gBAE3ElwD,KAAK6vC,aAAamnB,IAAM1+D,GAAUA,EAAO0+D,KAAO,EAE5Ch3D,KAAKhG,cAAcqB,UACrB2E,KAAK6vC,aAAamnB,IAAM1+D,GAAUA,EAAO0+D,KAAO18D,OAAO28D,kBAAoB,GAG7Ej3D,KAAKgrB,eAAiB,EACtBhrB,KAAKmX,WAAa,CAChBoP,UAAW,EACXgF,MAAM,EACNskB,aAAc7vC,KAAK6vC,aACnBqnB,oBAAqB,GAEvBl3D,KAAKm3D,YAAc,IAAI1B,cACvBz1D,KAAKwlC,SAAW,GAChBxlC,KAAK21C,gBAAkB,GACvB31C,KAAK81D,aAAe,IAAItjC,OACxBxyB,KAAK2J,gBAAiB,EACtB3J,KAAKwZ,aAAe,SAEhBxZ,KAAK6vC,aAAainB,cACpB92D,KAAKo3D,aAAep3D,KAAKm3D,YAAYljC,UAAUviB,KAAK1R,KAAKm3D,aACzDn3D,KAAKq3D,WAAar3D,KAAKm3D,YAAY3e,QAAQ9mC,KAAK1R,KAAKm3D,aACrDn3D,KAAKs3D,aAAet3D,KAAKm3D,YAAY9mD,UAAUqB,KAAK1R,KAAKm3D,aACzDn3D,KAAKu3D,eAAiBv3D,KAAKm3D,YAAY5B,YAAY7jD,KAAK1R,KAAKm3D,aAC7Dn3D,KAAKw3D,aAAex3D,KAAKm3D,YAAY3P,UAAU91C,KAAK1R,KAAKm3D,aACzDn3D,KAAKy3D,WAAaz3D,KAAKm3D,YAAY3B,QAAQ9jD,KAAK1R,KAAKm3D,aACrDn3D,KAAK03D,YAAc13D,KAAKm3D,YAAYv0B,SAASlxB,KAAK1R,KAAKm3D,aACvDn3D,KAAK23D,cAAgB33D,KAAKm3D,YAAYt0B,WAAWnxB,KAAK1R,KAAKm3D,aAC3Dn3D,KAAK43D,QAAU53D,KAAKm3D,YAAYpC,KAAKrjD,KAAK1R,KAAKm3D,aAC/Cn3D,KAAK63D,YAAc73D,KAAKm3D,YAAY7mD,SAASoB,KAAK1R,KAAKm3D,aACvDn3D,KAAK83D,UAAY93D,KAAKm3D,YAAYrC,OAAOpjD,KAAK1R,KAAKm3D,aACnDn3D,KAAKo0D,KAAOp0D,KAAKm3D,YAAY/C,KAAK1iD,KAAK1R,KAAKm3D,aAEhD,CAQA,SAASY,eAAgB,CAwFzB,SAASC,cAAcjvD,EAAMoO,EAAYnM,GACvChL,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,EACrC,CAwBA,SAASitD,cAAclvD,EAAMoO,EAAYnM,GAEvChL,KAAK6K,OAAS,GAEd7K,KAAKgzC,WAAajqC,EAAK8B,OAEvB7K,KAAK6iD,WAAa,GAElB7iD,KAAKu9C,eAAiB,GAEtBv9C,KAAKizC,UAAY,GAEjBjzC,KAAK49C,kBAAoB,GAEzB59C,KAAK8iD,iBAAmB,GACxB9iD,KAAKk4D,gBAAkB/vD,SAAS,KAChCnI,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,GAGnChL,KAAK6/C,aAAe,GACpB7/C,KAAKm4D,YAAc,CACjBv9D,EAAG,OACHG,GAAI,OACJoL,EAAG,EACH2iC,EAAG,EAEP,CA+NA,SAASsvB,aAAarvD,EAAMoO,EAAYnM,GACtChL,KAAK2uD,UAAY,GACjB3uD,KAAKq4D,UAAY,GACjBr4D,KAAKm4D,YAAc,CACjBv9D,EAAG,OACHG,GAAI,OACJoL,EAAG,EACH2iC,EAAG,GAEL9oC,KAAK8qD,WAAa,MAClB9qD,KAAKs4D,UAAW,EAChBt4D,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,EACrC,CA0RA,SAASutD,eAAexvD,EAAMoO,EAAYnM,GACxChL,KAAKomB,YACLpmB,KAAKuxC,aAAaxoC,EAAMoO,EAAYnM,GACpChL,KAAK+8C,gBACL,IAAIrwB,EAAUD,gBAAgBC,QAe9B,GAdA1sB,KAAKw4D,GAAK9rC,EAAQ1sB,KAAM+I,EAAKyvD,GAAI,EAAG,EAAGx4D,MAEnC+I,EAAKuC,GAAG5E,EAAEN,GACZpG,KAAK48B,GAAKlQ,EAAQ1sB,KAAM+I,EAAKuC,GAAG5E,EAAE9L,EAAG,EAAG,EAAGoF,MAC3CA,KAAK68B,GAAKnQ,EAAQ1sB,KAAM+I,EAAKuC,GAAG5E,EAAE3L,EAAG,EAAG,EAAGiF,MAC3CA,KAAK88B,GAAKpQ,EAAQ1sB,KAAM+I,EAAKuC,GAAG5E,EAAE+vB,EAAG,EAAG,EAAGz2B,OAE3CA,KAAK0G,EAAIgmB,EAAQ1sB,KAAM+I,EAAKuC,GAAG5E,EAAG,EAAG,EAAG1G,MAGtC+I,EAAKuC,GAAGsB,IACV5M,KAAK4M,EAAI8f,EAAQ1sB,KAAM+I,EAAKuC,GAAGsB,EAAG,EAAG,EAAG5M,OAGtC+I,EAAKuC,GAAG4lB,GAAGjnB,EAAE5R,QAAU0Q,EAAKuC,GAAG4lB,GAAGjnB,EAAE,GAAGud,GAAI,CAC7C,IAAIzoB,EACAE,EAAM8J,EAAKuC,GAAG4lB,GAAGjnB,EAAE5R,OAEvB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBgK,EAAKuC,GAAG4lB,GAAGjnB,EAAElL,GAAGyoB,GAAK,KACrBze,EAAKuC,GAAG4lB,GAAGjnB,EAAElL,GAAG0oB,GAAK,IAEzB,CAEAznB,KAAKkxB,GAAKxE,EAAQ1sB,KAAM+I,EAAKuC,GAAG4lB,GAAI,EAAGltB,UAAWhE,MAClDA,KAAKkxB,GAAGzI,IAAK,EACbzoB,KAAK+8B,GAAKrQ,EAAQ1sB,KAAM+I,EAAKuC,GAAGyxB,GAAI,EAAG/4B,UAAWhE,MAClDA,KAAKg9B,GAAKtQ,EAAQ1sB,KAAM+I,EAAKuC,GAAG0xB,GAAI,EAAGh5B,UAAWhE,MAClDA,KAAKi9B,GAAKvQ,EAAQ1sB,KAAM+I,EAAKuC,GAAG2xB,GAAI,EAAGj5B,UAAWhE,MAClDA,KAAKo9B,IAAM,IAAI5K,OACfxyB,KAAKy4D,SAAW,IAAIjmC,OACpBxyB,KAAK4rB,eAAgB,EAErB5rB,KAAK2vC,eAAiB,CACpBC,MAAO5vC,KAEX,CAyIA,SAAS04D,cAAc3vD,EAAMoO,EAAYnM,GACvChL,KAAK+Q,UAAYoG,EAAWiE,aAAarS,EAAK4B,OAC9C3K,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,EACrC,CA4BA,SAAS2tD,mBAAmB3+D,EAAe1B,GACzC0H,KAAKhG,cAAgBA,EACrBgG,KAAK4J,OAAS,KACd5J,KAAKgrB,eAAiB,EACtBhrB,KAAK6vC,aAAe,CAClBkgB,UAAWz3D,GAAUA,EAAOy3D,WAAa,GACzC1S,yBAA0B/kD,GAAUA,EAAO+kD,0BAA4B,iBACvEvN,oBAAqBx3C,IAAuC,IAA7BA,EAAOw3C,mBACtCmgB,WAAY,CACVn1D,MAAOxC,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAWn1D,OAAS,OACjET,OAAQ/B,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAW51D,QAAU,OACnEO,EAAGtC,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAWr1D,GAAK,QACzDG,EAAGzC,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAWl1D,GAAK,UAG7DiF,KAAKmX,WAAa,CAChBoU,MAAM,EACNhF,UAAW,EACXspB,aAAc7vC,KAAK6vC,cAErB7vC,KAAK21C,gBAAkB,GACvB31C,KAAKwlC,SAAW,GAChBxlC,KAAK44D,eAAiB,GACtB54D,KAAKmwD,WAAY,EACjBnwD,KAAK64D,OAAS,KACd74D,KAAKivD,YAAa,EAClBjvD,KAAKwZ,aAAe,MACtB,CAyUA,SAASs/C,aAAa/vD,EAAMoO,EAAYnM,GACtChL,KAAK4J,OAASb,EAAKa,OACnB5J,KAAKivD,YAAclmD,EAAKqB,QACxBpK,KAAK2J,gBAAiB,EACtB3J,KAAK21C,gBAAkB,GACvB31C,KAAKwlC,SAAWxlC,KAAK4J,OAAS7H,iBAAiB/B,KAAK4J,OAAOvR,QAAU,GACrE2H,KAAK86C,YAAY/xC,EAAMoO,EAAYnM,GACnChL,KAAKsU,GAAKvL,EAAKuL,GAAKmY,gBAAgBC,QAAQ1sB,KAAM+I,EAAKuL,GAAI,EAAG6C,EAAWtB,UAAW7V,MAAQ,CAC1F8xC,cAAc,EAElB,CA6CA,SAASinB,eAAe/+D,EAAe1B,GACrC0H,KAAKhG,cAAgBA,EACrBgG,KAAK4J,OAAS,KACd5J,KAAKgrB,eAAiB,EACtBhrB,KAAK6vC,aAAe,CAClBkgB,UAAWz3D,GAAUA,EAAOy3D,WAAa,GACzC1S,yBAA0B/kD,GAAUA,EAAO+kD,0BAA4B,iBACvEvN,oBAAqBx3C,IAAuC,IAA7BA,EAAOw3C,mBACtCmgB,WAAY,CACVn1D,MAAOxC,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAWn1D,OAAS,OACjET,OAAQ/B,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAW51D,QAAU,OACnEO,EAAGtC,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAWr1D,GAAK,QACzDG,EAAGzC,GAAUA,EAAO23D,YAAc33D,EAAO23D,WAAWl1D,GAAK,SAE3Dm1D,gBAAiB53D,QAAoCL,IAA1BK,EAAO43D,gBAAgC53D,EAAO43D,gBAE3ElwD,KAAKmX,WAAa,CAChBoU,MAAM,EACNhF,UAAW,EACXspB,aAAc7vC,KAAK6vC,cAErB7vC,KAAK21C,gBAAkB,GACvB31C,KAAKwlC,SAAW,GAChBxlC,KAAK44D,eAAiB,GACtB54D,KAAKmwD,WAAY,EACjBnwD,KAAK64D,OAAS,KACd74D,KAAKivD,YAAa,EAClBjvD,KAAKwZ,aAAe,MACtB,CAz9FAs6C,cAAc30D,UAAY,CACxB65D,eAAgB,WAA2B,EAC3C9d,oBAAqB,WAAgC,EACrDC,wBAAyB,WAMvB,GAAIn7C,KAAK+I,KAAK4yC,IAAM,EAAG,CACrB37C,KAAKi5D,QAAU,GACf,IAAIlF,EAAgB/zD,KAAKmX,WAAW48C,cAChCmF,EAAetrD,YAAY0lD,aAAaS,EAAc7jD,OAAOpV,MAAOi5D,EAAc7jD,OAAO7V,QAC7F2F,KAAKi5D,QAAQ34D,KAAK44D,GAClB,IAAIC,EAAgBvrD,YAAY0lD,aAAaS,EAAc7jD,OAAOpV,MAAOi5D,EAAc7jD,OAAO7V,QAC9F2F,KAAKi5D,QAAQ34D,KAAK64D,GAEdn5D,KAAK+I,KAAK4yC,IAAM,IAAMt/C,SAAS+8D,UACjCxrD,YAAY2lD,gBAEhB,CAEAvzD,KAAK+zD,cAAgB/zD,KAAKmX,WAAW48C,cACrC/zD,KAAKq5D,gBAAkBr5D,KAAKmX,WAAWkiD,gBACvCr5D,KAAK04C,yBAA2B,IAAIgb,UAAU1zD,MAC9CA,KAAKy4C,wBACP,EACAwE,cAAe,WAA0B,EACzC7J,aAAc,WACZ,IAAIj8B,EAAanX,KAAKmX,WAEtB,GAAIA,EAAWmiD,YAAct5D,KAAK+I,KAAKuqC,GAAI,CACzCn8B,EAAWmiD,UAAYt5D,KAAK+I,KAAKuqC,GACjC,IAAID,EAAiBlD,aAAanwC,KAAK+I,KAAKuqC,IAC5Cn8B,EAAW48C,cAAcwF,yBAA2BlmB,CACtD,CACF,EACA8I,2BAA4B,WAC1Bn8C,KAAK0yC,YAAc,IAAIkhB,cAAc5zD,KAAK+I,KAAM/I,MAChDA,KAAK24C,iBAAmB34C,KAAK04C,yBAAyBE,WAAW3C,YAAYC,iBAC/E,EACAsjB,YAAa,WACNx5D,KAAKivC,QAAYjvC,KAAKgvC,YAAahvC,KAAKkvC,gBAC3ClvC,KAAKivC,QAAS,EAElB,EACAwqB,YAAa,WACPz5D,KAAKgvC,YAAchvC,KAAKkvC,gBAC1BlvC,KAAKivC,QAAS,EACdjvC,KAAK4rB,eAAgB,EACrB5rB,KAAK0yC,YAAY9mB,eAAgB,EAErC,EACAkrC,YAAa,SAAqB/C,GAChCA,EAAc2F,UAAU15D,KAAKq5D,gBAAgBtlC,GAAI/zB,KAAKq5D,gBAAgB5uD,GAAIzK,KAAKq5D,gBAAgBvwB,EAAI9oC,KAAKq5D,gBAAgB/lC,GAAItzB,KAAKq5D,gBAAgBlzD,EAAInG,KAAKq5D,gBAAgBzoC,GAC5K,EACA+oC,aAAc,WACZ,GAAI35D,KAAK+I,KAAK4yC,IAAM,EAAG,CACrB,IACIie,EADS55D,KAAKi5D,QAAQ,GACH7oD,WAAW,MAClCpQ,KAAK82D,YAAY8C,GAEjBA,EAAUC,UAAU75D,KAAK+zD,cAAc7jD,OAAQ,EAAG,GAGlDlQ,KAAK4lD,iBAAmB5lD,KAAK+zD,cAAc+F,eAC3C95D,KAAK+zD,cAAcpgC,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/C3zB,KAAK82D,YAAY92D,KAAK+zD,eACtB/zD,KAAK+zD,cAAcpgC,aAAa3zB,KAAK4lD,iBACvC,CACF,EACAmU,UAAW,WACT,GAAI/5D,KAAK+I,KAAK4yC,IAAM,EAAG,CACrB,IAAIqe,EAASh6D,KAAKi5D,QAAQ,GAItBW,EAAYI,EAAO5pD,WAAW,MAclC,GAbApQ,KAAK82D,YAAY8C,GACjBA,EAAUC,UAAU75D,KAAK+zD,cAAc7jD,OAAQ,EAAG,GAElDlQ,KAAK+zD,cAAcpgC,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/C3zB,KAAK82D,YAAY92D,KAAK+zD,eACtB/zD,KAAK+zD,cAAcpgC,aAAa3zB,KAAK4lD,kBAE1B5lD,KAAKgL,KAAK4qC,eAAe,OAAQ51C,KAAK+I,KAAO/I,KAAK+I,KAAKopD,GAAKnyD,KAAK+I,KAAK2e,IAAM,GAClF3N,aAAY,GAEjB/Z,KAAK+zD,cAAcpgC,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAG3C3zB,KAAK+I,KAAK4yC,IAAM,IAAMt/C,SAAS+8D,SAAU,CAG3C,IAAIpG,EAAaplD,YAAY4lD,cAAcxzD,KAAK+zD,cAAc7jD,QAC1C8iD,EAAW5iD,WAAW,MAC5BypD,UAAU75D,KAAK+zD,cAAc7jD,OAAQ,EAAG,GACtDlQ,KAAK82D,YAAY92D,KAAK+zD,eAEtB/zD,KAAK+zD,cAAc8F,UAAU7G,EAAY,EAAG,EAC9C,CAEAhzD,KAAK+zD,cAAcwF,yBAA2BjF,cAAct0D,KAAK+I,KAAK4yC,IACtE37C,KAAK+zD,cAAc8F,UAAUG,EAAQ,EAAG,GAGxCh6D,KAAK+zD,cAAcwF,yBAA2B,mBAC9Cv5D,KAAK+zD,cAAc8F,UAAU75D,KAAKi5D,QAAQ,GAAI,EAAG,GACjDj5D,KAAK+zD,cAAcpgC,aAAa3zB,KAAK4lD,kBAErC5lD,KAAK+zD,cAAcwF,yBAA2B,aAChD,CACF,EACAx/C,YAAa,SAAqBsjB,GAChC,IAAIr9B,KAAKivC,SAAUjvC,KAAK+I,KAAK8yC,KAIR,IAAjB77C,KAAK+I,KAAKyyC,IAAane,GAA3B,CAIAr9B,KAAKk4C,kBACLl4C,KAAK+vC,mBACL/vC,KAAKo4C,uBACLp4C,KAAKozC,eACL,IAAI6mB,EAAkC,IAAjBj6D,KAAK+I,KAAK0B,GAC/BzK,KAAK25D,eACL35D,KAAKmX,WAAWvhB,SAASw+D,KAAK6F,GAC9Bj6D,KAAKmX,WAAWvhB,SAASwhE,aAAap3D,KAAK2vC,eAAeoI,SAASpjD,OACnEqL,KAAKmX,WAAWvhB,SAASyhE,WAAWr3D,KAAK2vC,eAAeqI,cACxDh4C,KAAKk9C,qBACLl9C,KAAKmX,WAAWvhB,SAASskE,QAAQD,GACjCj6D,KAAK+5D,YAED/5D,KAAK0yC,YAAYmhB,UACnB7zD,KAAKmX,WAAWvhB,SAASskE,SAAQ,GAG/Bl6D,KAAK4rB,gBACP5rB,KAAK4rB,eAAgB,EApBvB,CAsBF,EACA5zB,QAAS,WACPgI,KAAK+zD,cAAgB,KACrB/zD,KAAK+I,KAAO,KACZ/I,KAAKmX,WAAa,KAClBnX,KAAK0yC,YAAY16C,SACnB,EACAghD,QAAS,IAAIxmB,QAEfshC,cAAc30D,UAAUkc,KAAOy4C,cAAc30D,UAAUq6D,YACvD1F,cAAc30D,UAAUmc,KAAOw4C,cAAc30D,UAAUs6D,YAgCvDlF,YAAYp1D,UAAUi7B,cAAgB4jB,aAAa7+C,UAAUi7B,cAc7Dx7B,gBAAgB,CAACuyC,YAAagF,iBAAkB2d,cAAe7Y,cAAeN,iBAAkBvJ,aAAcxC,mBAAoBgmB,gBAClIA,eAAez1D,UAAU27C,YAAcF,qBAAqBz7C,UAAU27C,YACtE8Z,eAAez1D,UAAUg7D,gBAAkB,CACzC3hB,QAAS,EACTV,QAAQ,GAEV8c,eAAez1D,UAAUi7D,aAAe,GAExCxF,eAAez1D,UAAU89C,cAAgB,WACvCj9C,KAAK6kD,aAAa7kD,KAAKgzC,WAAYhzC,KAAKizC,UAAWjzC,KAAK6/C,cAAc,EAAM,GAC9E,EAEA+U,eAAez1D,UAAU+lD,mBAAqB,SAAUn8C,EAAM+vC,GAC5D,IAAImJ,EAAY,CACdl5C,KAAMA,EACNjN,KAAMiN,EAAK0B,GACX4vD,cAAer6D,KAAKw0D,kBAAkB9B,qBAAqB5Z,GAC3DA,WAAY,GACZtT,SAAU,GACVl4B,QAAoB,IAAZvE,EAAK8yC,IAEXsJ,EAAc,CAAC,EAsBnB,GApBgB,OAAZp8C,EAAK0B,IAA2B,OAAZ1B,EAAK0B,IAC3B06C,EAAYh4C,EAAIsf,gBAAgBC,QAAQ1sB,KAAM+I,EAAKoE,EAAG,EAAG,IAAKnN,MAEzDmlD,EAAYh4C,EAAElD,IACjBg4C,EAAUqY,GAAK,OAASp3D,QAAQiiD,EAAYh4C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQiiD,EAAYh4C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQiiD,EAAYh4C,EAAE9G,EAAE,IAAM,MAE3G,OAAZ0C,EAAK0B,IAA2B,OAAZ1B,EAAK0B,KAClC06C,EAAY/+C,EAAIqmB,gBAAgBC,QAAQ1sB,KAAM+I,EAAK3C,EAAG,EAAG,KAAMpG,MAC/DmlD,EAAYz7C,EAAI+iB,gBAAgBC,QAAQ1sB,KAAM+I,EAAKW,EAAG,EAAG,KAAM1J,MAC/DmlD,EAAYh/C,EAAIsmB,gBAAgBC,QAAQ1sB,KAAM+I,EAAK5C,GAAK,CACtD8D,EAAG,GACF,EAAG,IAAMjK,MACZmlD,EAAYv4C,EAAI6f,gBAAgBC,QAAQ1sB,KAAM+I,EAAK6D,GAAK,CACtD3C,EAAG,GACF,EAAGjG,UAAWhE,MACjBmlD,EAAY5+C,EAAI,IAAI24C,iBAAiBl/C,KAAM+I,EAAKxC,EAAGvG,OAGrDmlD,EAAY35C,EAAIihB,gBAAgBC,QAAQ1sB,KAAM+I,EAAKyC,EAAG,EAAG,IAAMxL,MAE/C,OAAZ+I,EAAK0B,IAA2B,OAAZ1B,EAAK0B,IAe3B,GAdAw3C,EAAUrB,GAAK9C,YAAY/0C,EAAK63C,IAAM,GACtCqB,EAAU1Z,GAAKwV,aAAah1C,EAAKw/B,IAAM,GAExB,GAAXx/B,EAAKw/B,KAEP0Z,EAAU3Z,GAAKv/B,EAAKu/B,IAGtB6c,EAAYrc,EAAIrc,gBAAgBC,QAAQ1sB,KAAM+I,EAAK+/B,EAAG,EAAG,KAAM9oC,MAE1DmlD,EAAYrc,EAAE7+B,IACjBg4C,EAAUsY,GAAKpV,EAAYrc,EAAEziC,GAG3B0C,EAAKjC,EAAG,CACV,IAAIA,EAAI,IAAI23C,aAAaz+C,KAAM+I,EAAKjC,EAAG,SAAU9G,MACjDmlD,EAAYr+C,EAAIA,EAEXq+C,EAAYr+C,EAAEmD,IACjBg4C,EAAUuY,GAAKrV,EAAYr+C,EAAE83C,UAC7BqD,EAAc,GAAIkD,EAAYr+C,EAAE+3C,WAAW,GAE/C,OAEAoD,EAAU37C,EAAe,IAAXyC,EAAKzC,EAAU,UAAY,UAK3C,OAFAtG,KAAK6iD,WAAWviD,KAAK2hD,GACrBkD,EAAYvwD,MAAQqtD,EACbkD,CACT,EAEAyP,eAAez1D,UAAUkmD,mBAAqB,WAK5C,MAJkB,CAChB95C,GAAI,GACJs0C,aAAc,GAGlB,EAEA+U,eAAez1D,UAAUmmD,uBAAyB,SAAUv8C,GAU1D,MATkB,CAChBkrB,UAAW,CACTukB,QAAS,EACTV,QAAQ,EACRviC,IAAKvV,KAAKw0D,kBAAkB1B,YAC5BrmD,GAAIggB,gBAAgBC,QAAQ1sB,KAAM+I,EAAKyC,EAAG,EAAG,IAAMxL,MACnD+mC,OAAQxK,yBAAyBqB,qBAAqB59B,KAAM+I,EAAM/I,OAIxE,EAEA40D,eAAez1D,UAAUqmD,mBAAqB,SAAUz8C,GACtD,IAAIo8C,EAAc,IAAIoP,YAAYv0D,KAAM+I,EAAM/I,KAAK6iD,WAAY7iD,KAAKw0D,mBAGpE,OAFAx0D,KAAK6K,OAAOvK,KAAK6kD,GACjBnlD,KAAKs9C,oBAAoB6H,GAClBA,CACT,EAEAyP,eAAez1D,UAAUmnC,aAAe,WAEtC,IAAIvnC,EADJiB,KAAK4rB,eAAgB,EAErB,IAAI3sB,EAAMe,KAAKizC,UAAU56C,OAEzB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK6/C,aAAa9gD,GAAKiB,KAAKizC,UAAUl0C,GAMxC,IAHAiB,KAAK6kD,aAAa7kD,KAAKgzC,WAAYhzC,KAAKizC,UAAWjzC,KAAK6/C,cAAc,EAAM,IAC5E5gD,EAAMe,KAAK8sB,kBAAkBz0B,OAExB0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK8sB,kBAAkB/tB,GAAGqtB,WAG5BpsB,KAAK09C,kBACL19C,KAAKw0D,kBAAkB3B,iBAAiB7yD,KAAK4rB,cAC/C,EAEAgpC,eAAez1D,UAAUs7D,wBAA0B,SAAUxmC,GAC3D,IAAIl1B,EACAE,EAAMe,KAAK6iD,WAAWxqD,OAE1B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACnBiB,KAAK6iD,WAAW9jD,GAAGuO,QACtBtN,KAAK6iD,WAAW9jD,GAAG+5C,WAAWx4C,KAAK2zB,EAGzC,EAEA2gC,eAAez1D,UAAUu7D,6BAA+B,WACtD,IAAI37D,EACAE,EAAMe,KAAK6iD,WAAWxqD,OAE1B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACnBiB,KAAK6iD,WAAW9jD,GAAGuO,QACtBtN,KAAK6iD,WAAW9jD,GAAG+5C,WAAWrd,KAGpC,EAEAm5B,eAAez1D,UAAUw7D,YAAc,SAAUz2B,GAC/C,IAAInlC,EACAE,EAAMilC,EAAO7rC,OAEjB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBmlC,EAAOnlC,GAAGuO,QAAS,CAEvB,EAEAsnD,eAAez1D,UAAU0lD,aAAe,SAAUljD,EAAKsxC,EAAW4M,EAAc+a,EAAc9hB,GAC5F,IAAI/5C,EAEAgL,EACAC,EAGA87C,EACAD,EACAD,EAPA3mD,EAAM0C,EAAItJ,OAAS,EAGnB0tD,EAAY,GACZC,EAAe,GAIf6U,EAAgB,GAAG/9C,OAAOg8B,GAE9B,IAAK/5C,EAAIE,EAAKF,GAAK,EAAGA,GAAK,EAAG,CAS5B,IARA+mD,EAAe9lD,KAAK29C,uBAAuBh8C,EAAI5C,KAK7Ck0C,EAAUl0C,GAAK8gD,EAAaiG,EAAe,GAF3CnkD,EAAI5C,GAAG+7D,cAAgBF,EAKP,OAAdj5D,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,GACtEq7C,EAGH7S,EAAUl0C,GAAGnK,MAAM0Y,QAAS,EAF5B2lC,EAAUl0C,GAAKiB,KAAKklD,mBAAmBvjD,EAAI5C,GAAI87D,GAKjD9U,EAAUzlD,KAAK2yC,EAAUl0C,GAAGnK,YACvB,GAAkB,OAAd+M,EAAI5C,GAAG0L,GAAa,CAC7B,GAAKq7C,EAKH,IAFA97C,EAAOipC,EAAUl0C,GAAGwM,GAAGlT,OAElB0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBkpC,EAAUl0C,GAAG8gD,aAAa91C,GAAKkpC,EAAUl0C,GAAGwM,GAAGxB,QALjDkpC,EAAUl0C,GAAKiB,KAAKqlD,mBAAmB1jD,EAAI5C,IAS7CiB,KAAK6kD,aAAaljD,EAAI5C,GAAGwM,GAAI0nC,EAAUl0C,GAAGwM,GAAI0nC,EAAUl0C,GAAG8gD,aAAc+a,EAAcC,EACzF,KAAyB,OAAdl5D,EAAI5C,GAAG0L,IACXq7C,IACHF,EAAmB5lD,KAAKslD,uBAAuB3jD,EAAI5C,IACnDk0C,EAAUl0C,GAAK6mD,GAGjBiV,EAAcv6D,KAAK2yC,EAAUl0C,IAC7BiB,KAAKy6D,wBAAwBxnB,EAAUl0C,KAChB,OAAd4C,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,GAC7Eq7C,IACH7S,EAAUl0C,GAAKiB,KAAKwlD,mBAAmB7jD,EAAI5C,KAEtB,OAAd4C,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IAA6B,OAAd9I,EAAI5C,GAAG0L,IACnGq7C,GAMHD,EAAW5S,EAAUl0C,IACZuO,QAAS,IANlBu4C,EAAWlsB,eAAeG,YAAYn4B,EAAI5C,GAAG0L,KACpCqQ,KAAK9a,KAAM2B,EAAI5C,IACxBk0C,EAAUl0C,GAAK8mD,EACf7lD,KAAKu9C,eAAej9C,KAAKulD,IAM3BG,EAAa1lD,KAAKulD,IACK,OAAdlkD,EAAI5C,GAAG0L,KACXq7C,GAOHD,EAAW5S,EAAUl0C,IACZuO,QAAS,GAPlBu4C,EAAWlsB,eAAeG,YAAYn4B,EAAI5C,GAAG0L,IAC7CwoC,EAAUl0C,GAAK8mD,EACfA,EAAS/qC,KAAK9a,KAAM2B,EAAK5C,EAAGk0C,GAC5BjzC,KAAKu9C,eAAej9C,KAAKulD,GACzB+U,GAAe,GAMjB5U,EAAa1lD,KAAKulD,IAGpB7lD,KAAK69C,oBAAoBl8C,EAAI5C,GAAIA,EAAI,EACvC,CAMA,IAJAiB,KAAK06D,+BACL16D,KAAK26D,YAAY5U,GACjB9mD,EAAM+mD,EAAa3tD,OAEd0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBinD,EAAajnD,GAAGuO,QAAS,CAE7B,EAEAsnD,eAAez1D,UAAU+9C,mBAAqB,WAC5Cl9C,KAAKm6D,gBAAgB3hB,QAAU,EAC/Bx4C,KAAKm6D,gBAAgBriB,QAAS,EAC9B93C,KAAK09C,kBACL19C,KAAKw0D,kBAAkB3B,iBAAiB7yD,KAAK4rB,eAC7C5rB,KAAKimD,YAAYjmD,KAAKm6D,gBAAiBn6D,KAAKgzC,WAAYhzC,KAAKizC,WAAW,EAC1E,EAEA2hB,eAAez1D,UAAU47D,qBAAuB,SAAUC,EAAiBC,IACrED,EAAgBljB,QAAUmjB,EAAexuD,GAAG8e,MAAQvrB,KAAK4rB,iBAC3DqvC,EAAeziB,QAAUwiB,EAAgBxiB,QACzCyiB,EAAeziB,SAAWyiB,EAAexuD,GAAGpG,EAC5C40D,EAAenjB,QAAS,EAE5B,EAEA8c,eAAez1D,UAAU+7D,UAAY,WACnC,IAAIn8D,EAEAgL,EACAC,EACAC,EACAC,EACAq8B,EACA40B,EAGAr/D,EACAs/D,EAVAn8D,EAAMe,KAAK6iD,WAAWxqD,OAOtBzC,EAAWoK,KAAKmX,WAAWvhB,SAC3Bua,EAAMnQ,KAAKmX,WAAW48C,cAI1B,IAAKh1D,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAQxB,IAAgB,QANhBjD,GADAs/D,EAAep7D,KAAK6iD,WAAW9jD,IACXjD,OAMa,OAATA,GAAsC,IAApBs/D,EAAab,KAAaa,EAAaryD,KAAK+xD,eAAuC,IAAtBM,EAAaC,MAAqD,IAAvCr7D,KAAKmX,WAAW+/C,mBAA2B,CA2B3K,IA1BAthE,EAASw+D,OACT7tB,EAAQ60B,EAAa51B,SAER,OAAT1pC,GAA0B,OAATA,GACnBlG,EAAS2hE,eAAwB,OAATz7D,EAAgBs/D,EAAad,GAAKc,EAAaE,KAEvE1lE,EAAS4hE,aAAa4D,EAAab,IAEnC3kE,EAAS6hE,WAAW2D,EAAaxa,IAEjChrD,EAAS8hE,YAAY0D,EAAa7yB,IAElC3yC,EAAS+hE,cAAcyD,EAAa9yB,IAAM,IAE1C1yC,EAAS0hE,aAAsB,OAATx7D,EAAgBs/D,EAAad,GAAKc,EAAaE,KAGvE1lE,EAASyhE,WAAW+D,EAAaC,MAEpB,OAATv/D,GAA0B,OAATA,GACnBqU,EAAI6jD,YAGNp+D,EAASwhE,aAAagE,EAAaf,cAAc1qB,eAAeh7C,OAChEqV,EAAOu8B,EAAMluC,OAER0R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAa5B,IAZa,OAATjO,GAA0B,OAATA,IACnBqU,EAAI6jD,YAEAoH,EAAaZ,KACfrqD,EAAIorD,YAAYH,EAAaZ,IAC7BrqD,EAAIqrD,eAAiBJ,EAAiB,KAK1ClxD,GADAixD,EAAQ50B,EAAMx8B,GAAG4qD,SACJt8D,OAER4R,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACN,MAAfkxD,EAAMlxD,GAAGrD,EACXuJ,EAAI8jD,OAAOkH,EAAMlxD,GAAGvD,EAAE,GAAIy0D,EAAMlxD,GAAGvD,EAAE,IACb,MAAfy0D,EAAMlxD,GAAGrD,EAClBuJ,EAAIgkD,cAAcgH,EAAMlxD,GAAGktB,IAAI,GAAIgkC,EAAMlxD,GAAGktB,IAAI,GAAIgkC,EAAMlxD,GAAGktB,IAAI,GAAIgkC,EAAMlxD,GAAGktB,IAAI,GAAIgkC,EAAMlxD,GAAGktB,IAAI,GAAIgkC,EAAMlxD,GAAGktB,IAAI,IAEpHhnB,EAAIsrD,YAIK,OAAT3/D,GAA0B,OAATA,IAEnBlG,EAASkiE,YAELsD,EAAaZ,IACfrqD,EAAIorD,YAAYv7D,KAAKo6D,cAG3B,CAEa,OAATt+D,GAA0B,OAATA,GAEnBkE,KAAKmX,WAAWvhB,SAASgiE,QAAQwD,EAAa90D,GAGhD1Q,EAASskE,SACX,CAEJ,EAEAtF,eAAez1D,UAAU8mD,YAAc,SAAU+U,EAAiBj1B,EAAOh9B,EAAM2yD,GAC7E,IAAI38D,EAEAk8D,EAGJ,IAFAA,EAAiBD,EAEZj8D,EAJKgnC,EAAM1tC,OAAS,EAIX0G,GAAK,EAAGA,GAAK,EACL,OAAhBgnC,EAAMhnC,GAAG0L,IACXwwD,EAAiBlyD,EAAKhK,GAAGk1B,UACzBj0B,KAAK+6D,qBAAqBC,EAAiBC,IAClB,OAAhBl1B,EAAMhnC,GAAG0L,IAA+B,OAAhBs7B,EAAMhnC,GAAG0L,IAA+B,OAAhBs7B,EAAMhnC,GAAG0L,IAA+B,OAAhBs7B,EAAMhnC,GAAG0L,GAC1FzK,KAAK2hD,WAAW5b,EAAMhnC,GAAIgK,EAAKhK,IACN,OAAhBgnC,EAAMhnC,GAAG0L,GAClBzK,KAAKgiD,WAAWjc,EAAMhnC,GAAIgK,EAAKhK,GAAIk8D,GACV,OAAhBl1B,EAAMhnC,GAAG0L,GAClBzK,KAAKoiD,aAAarc,EAAMhnC,GAAIgK,EAAKhK,GAAIk8D,GACZ,OAAhBl1B,EAAMhnC,GAAG0L,IAA+B,OAAhBs7B,EAAMhnC,GAAG0L,GAC1CzK,KAAK27D,mBAAmB51B,EAAMhnC,GAAIgK,EAAKhK,GAAIk8D,GAClB,OAAhBl1B,EAAMhnC,GAAG0L,GAClBzK,KAAKimD,YAAYgV,EAAgBl1B,EAAMhnC,GAAGwM,GAAIxC,EAAKhK,GAAGwM,IAC7Cw6B,EAAMhnC,GAAG0L,GAIlBixD,GACF17D,KAAKk7D,WAET,EAEAtG,eAAez1D,UAAUy8D,kBAAoB,SAAUlH,EAAalmC,GAClE,GAAIxuB,KAAK4rB,eAAiB4C,EAAMjD,MAAQmpC,EAAY5b,WAAWvtB,KAAM,CACnE,IAEIxsB,EACAE,EACA8K,EAJA8xD,EAAanH,EAAYC,QACzBllC,EAAQjB,EAAMiB,MAIdzlB,EAAOylB,EAAM7O,QACjBi7C,EAAWxjE,OAAS,EACpB,IAAIyjE,EAAoBpH,EAAY5b,WAAWnJ,eAE/C,IAAK5lC,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAC5B,IAAIqvC,EAAY3pB,EAAM5kB,OAAOd,GAE7B,GAAIqvC,GAAaA,EAAU/yC,EAAG,CAG5B,IAFApH,EAAMm6C,EAAUx4B,QAEX7hB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACd,IAANA,GACF88D,EAAWv7D,KAAK,CACdsG,EAAG,IACHF,EAAGo1D,EAAkB7kC,kBAAkBmiB,EAAU/yC,EAAE,GAAG,GAAI+yC,EAAU/yC,EAAE,GAAG,GAAI,KAIjFw1D,EAAWv7D,KAAK,CACdsG,EAAG,IACHuwB,IAAK2kC,EAAkBzkC,oBAAoB+hB,EAAU5tC,EAAEzM,EAAI,GAAIq6C,EAAUr6C,EAAEA,GAAIq6C,EAAU/yC,EAAEtH,MAInF,IAARE,GACF48D,EAAWv7D,KAAK,CACdsG,EAAG,IACHF,EAAGo1D,EAAkB7kC,kBAAkBmiB,EAAU/yC,EAAE,GAAG,GAAI+yC,EAAU/yC,EAAE,GAAG,GAAI,KAI7E+yC,EAAUjsC,GAAKlO,IACjB48D,EAAWv7D,KAAK,CACdsG,EAAG,IACHuwB,IAAK2kC,EAAkBzkC,oBAAoB+hB,EAAU5tC,EAAEzM,EAAI,GAAIq6C,EAAUr6C,EAAE,GAAIq6C,EAAU/yC,EAAE,MAE7Fw1D,EAAWv7D,KAAK,CACdsG,EAAG,MAGT,CACF,CAEA8tD,EAAYC,QAAUkH,CACxB,CACF,EAEAjH,eAAez1D,UAAUwiD,WAAa,SAAU30C,EAAUy0C,GACxD,IAAoB,IAAhBz0C,EAAS6uC,IAAe7uC,EAAS8tD,cAAe,CAClD,IAAI/7D,EACAE,EAAMwiD,EAASgT,aAAap8D,OAEhC,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAK47D,kBAAkBna,EAASgT,aAAa11D,GAAI0iD,EAASh5B,GAE9D,CACF,EAEAmsC,eAAez1D,UAAU6iD,WAAa,SAAUR,EAAWC,EAAUwZ,GACnE,IAAIhZ,EAAYR,EAAS7sD,OAErB6sD,EAASt0C,EAAEoe,MAAQvrB,KAAK4rB,iBAC1Bq2B,EAAUqY,GAAK,OAASp3D,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,MAGnHo7C,EAASj2C,EAAE+f,MAAQ0vC,EAAenjB,QAAU93C,KAAK4rB,iBACnDq2B,EAAUoZ,KAAO5Z,EAASj2C,EAAEnF,EAAI40D,EAAeziB,QAEnD,EAEAoc,eAAez1D,UAAUw8D,mBAAqB,SAAUna,EAAWC,EAAUwZ,GAC3E,IACIK,EADArZ,EAAYR,EAAS7sD,MAGzB,IAAKqtD,EAAUqZ,KAAO7Z,EAASl7C,EAAEglB,MAAQk2B,EAASr7C,EAAEmlB,MAAQk2B,EAAS/3C,EAAE6hB,MAAwB,IAAhBi2B,EAAU56C,IAAY66C,EAASt7C,EAAEolB,MAAQk2B,EAAS70C,EAAE2e,MAAO,CACxI,IAuBIxsB,EAvBAoR,EAAMnQ,KAAKmX,WAAW48C,cACtB7xC,EAAMu/B,EAASr7C,EAAEC,EACjB8b,EAAMs/B,EAAS/3C,EAAErD,EAErB,GAAoB,IAAhBm7C,EAAU56C,EACZ00D,EAAMnrD,EAAI4rD,qBAAqB75C,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,QACtD,CACL,IAAIiP,EAAMn1B,KAAKgH,KAAKhH,KAAK8G,IAAImf,EAAI,GAAKC,EAAI,GAAI,GAAKlmB,KAAK8G,IAAImf,EAAI,GAAKC,EAAI,GAAI,IACzEugC,EAAMzmD,KAAKkuB,MAAMhI,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/CwD,EAAU+7B,EAASt7C,EAAEE,EAErBqf,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAGb,IAAIuc,EAAO7Q,EAAM1L,EACb9qB,EAAIqB,KAAKwuB,IAAIi4B,EAAMjB,EAAS70C,EAAEvG,GAAK47B,EAAO/f,EAAI,GAC9CnnB,EAAIkB,KAAK2tB,IAAI84B,EAAMjB,EAAS70C,EAAEvG,GAAK47B,EAAO/f,EAAI,GAClDo5C,EAAMnrD,EAAI6rD,qBAAqBphE,EAAGG,EAAG,EAAGmnB,EAAI,GAAIA,EAAI,GAAIkP,EAC1D,CAGA,IAAInyB,EAAMuiD,EAAUj7C,EAAEG,EAClB87C,EAAUf,EAASl7C,EAAE4G,EACrBqrC,EAAU,EAEd,IAAKz5C,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpB0iD,EAASl7C,EAAEi5C,aAAeiC,EAASl7C,EAAE+4C,eACvC9G,EAAUiJ,EAASl7C,EAAEiF,EAAM,EAAJzM,EAAQ,IAGjCu8D,EAAIW,aAAazZ,EAAY,EAAJzjD,GAAS,IAAK,QAAUyjD,EAAY,EAAJzjD,EAAQ,GAAK,IAAMyjD,EAAY,EAAJzjD,EAAQ,GAAK,IAAMyjD,EAAY,EAAJzjD,EAAQ,GAAK,IAAMy5C,EAAU,KAG9IyJ,EAAUqZ,IAAMA,CAClB,CAEArZ,EAAUoZ,KAAO5Z,EAASj2C,EAAEnF,EAAI40D,EAAeziB,OACjD,EAEAoc,eAAez1D,UAAUijD,aAAe,SAAUZ,EAAWC,EAAUwZ,GACrE,IAAIhZ,EAAYR,EAAS7sD,MACrBkS,EAAI26C,EAAS36C,EAEbA,IAAMA,EAAEykB,MAAQvrB,KAAK4rB,iBACvBq2B,EAAUuY,GAAK1zD,EAAE83C,UACjBqD,EAAc,GAAIn7C,EAAE+3C,WAAW,KAG7B4C,EAASt0C,EAAEoe,MAAQvrB,KAAK4rB,iBAC1Bq2B,EAAUqY,GAAK,OAASp3D,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,IAAMnD,QAAQu+C,EAASt0C,EAAE9G,EAAE,IAAM,MAGnHo7C,EAASj2C,EAAE+f,MAAQ0vC,EAAenjB,QAAU93C,KAAK4rB,iBACnDq2B,EAAUoZ,KAAO5Z,EAASj2C,EAAEnF,EAAI40D,EAAeziB,UAG7CiJ,EAAS3Y,EAAEvd,MAAQvrB,KAAK4rB,iBAC1Bq2B,EAAUsY,GAAK9Y,EAAS3Y,EAAEziC,EAE9B,EAEAuuD,eAAez1D,UAAUnH,QAAU,WACjCgI,KAAKgzC,WAAa,KAClBhzC,KAAKmX,WAAa,KAClBnX,KAAK+zD,cAAgB,KACrB/zD,KAAK6iD,WAAWxqD,OAAS,EACzB2H,KAAKizC,UAAU56C,OAAS,CAC1B,EAsBAuG,gBAAgB,CAACuyC,YAAagF,iBAAkB2d,cAAenZ,iBAAkBvJ,aAAcxC,kBAAmB6c,cAAeoJ,eACjIA,cAAc11D,UAAUurC,QAAU/rC,UAAU,UAAUyR,WAAW,MAEjEykD,cAAc11D,UAAUqvD,aAAe,WACrC,IAAItiD,EAAelM,KAAKiqD,aAAa1G,YACrCvjD,KAAKurD,gBAAkBxpD,iBAAiBmK,EAAa0nB,EAAI1nB,EAAa0nB,EAAEv7B,OAAS,GACjF,IAAI6jE,GAAU,EAEVhwD,EAAa+2C,IACfiZ,GAAU,EACVl8D,KAAKuqB,OAAOwqC,KAAO/0D,KAAKouD,WAAWliD,EAAa+2C,KAEhDjjD,KAAKuqB,OAAOwqC,KAAO,gBAGrB/0D,KAAK+0D,KAAOmH,EACZ,IAAIC,GAAY,EAEZjwD,EAAa2hC,KACfsuB,GAAY,EACZn8D,KAAKuqB,OAAOuqC,OAAS90D,KAAKouD,WAAWliD,EAAa2hC,IAClD7tC,KAAKuqB,OAAO0qC,OAAS/oD,EAAa82C,IAGpC,IACIjkD,EACAE,EAOAsN,EACAsX,EACA5Z,EACAC,EACAW,EACAd,EACAC,EACAovC,EACAgjB,EACAC,EAlBAp4B,EAAWjkC,KAAKmX,WAAWkB,YAAY61B,cAAchiC,EAAazF,GAGlE0gD,EAAUj7C,EAAa0nB,EACvBw4B,EAAepsD,KAAKg5C,QACxBh5C,KAAK80D,OAASqH,EACdn8D,KAAKuqB,OAAO2qC,OAAShpD,EAAak4C,UAAY,MAAQpkD,KAAKmX,WAAWkB,YAAY61B,cAAchiC,EAAazF,GAAGkkC,QAChH1rC,EAAMiN,EAAam4C,UAAUhsD,OAY7B,IAAIm4D,EAAcxwD,KAAK+I,KAAKynD,YACxB9I,EAAmC,KAAlBx7C,EAAaq4B,GAAar4B,EAAak4C,UACxDwH,EAAO,EACPC,EAAO,EACPa,GAAY,EACZt+B,EAAM,EAEV,IAAKrvB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAE3B8kB,GADAtX,EAAWvM,KAAKmX,WAAWkB,YAAYy1B,YAAY5hC,EAAam4C,UAAUtlD,GAAIklC,EAASE,OAAQnkC,KAAKmX,WAAWkB,YAAY61B,cAAchiC,EAAazF,GAAGkkC,WACjIp+B,EAASxD,MAAQ,CAAC,EAC1CqjD,EAAar8B,QAETygC,GAAerJ,EAAQpoD,GAAG8oB,IAC5B+jC,GAAQlE,EACRmE,GAAQ3/C,EAAai4C,QACrB0H,GAAQa,EAAY,EAAI,EACxBA,GAAY,GAId1iD,GADAa,EAASgZ,EAAUhZ,OAASgZ,EAAUhZ,OAAO,GAAGU,GAAK,IACvClT,OACd+zD,EAAa34B,MAAMvnB,EAAak4C,UAAY,IAAKl4C,EAAak4C,UAAY,KAEtEoM,GACFxwD,KAAKkuD,4BAA4BhiD,EAAckgD,EAAcjF,EAAQpoD,GAAG4U,KAAMi4C,EAAMC,GAGtFuQ,EAAWr6D,iBAAiBiI,EAAO,GACnC,IAAIsyD,EAAkB,EAEtB,IAAKvyD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,GAAqB,OAAjBc,EAAOd,GAAGU,GAAa,CAKzB,IAJAP,EAAOW,EAAOd,GAAGuB,GAAGrB,EAAElL,EAAE1G,OACxB+gD,EAAYvuC,EAAOd,GAAGuB,GAAGrB,EACzBoyD,EAAU,GAELpyD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACf,IAANA,GACFoyD,EAAQ/7D,KAAK8rD,EAAa11B,SAAS0iB,EAAU/yC,EAAE,GAAG,GAAI+yC,EAAU/yC,EAAE,GAAG,GAAI,GAAI+lD,EAAaz1B,SAASyiB,EAAU/yC,EAAE,GAAG,GAAI+yC,EAAU/yC,EAAE,GAAG,GAAI,IAG3Ig2D,EAAQ/7D,KAAK8rD,EAAa11B,SAAS0iB,EAAU5tC,EAAEvB,EAAI,GAAG,GAAImvC,EAAU5tC,EAAEvB,EAAI,GAAG,GAAI,GAAImiD,EAAaz1B,SAASyiB,EAAU5tC,EAAEvB,EAAI,GAAG,GAAImvC,EAAU5tC,EAAEvB,EAAI,GAAG,GAAI,GAAImiD,EAAa11B,SAAS0iB,EAAUr6C,EAAEkL,GAAG,GAAImvC,EAAUr6C,EAAEkL,GAAG,GAAI,GAAImiD,EAAaz1B,SAASyiB,EAAUr6C,EAAEkL,GAAG,GAAImvC,EAAUr6C,EAAEkL,GAAG,GAAI,GAAImiD,EAAa11B,SAAS0iB,EAAU/yC,EAAE4D,GAAG,GAAImvC,EAAU/yC,EAAE4D,GAAG,GAAI,GAAImiD,EAAaz1B,SAASyiB,EAAU/yC,EAAE4D,GAAG,GAAImvC,EAAU/yC,EAAE4D,GAAG,GAAI,IAG3ZoyD,EAAQ/7D,KAAK8rD,EAAa11B,SAAS0iB,EAAU5tC,EAAEvB,EAAI,GAAG,GAAImvC,EAAU5tC,EAAEvB,EAAI,GAAG,GAAI,GAAImiD,EAAaz1B,SAASyiB,EAAU5tC,EAAEvB,EAAI,GAAG,GAAImvC,EAAU5tC,EAAEvB,EAAI,GAAG,GAAI,GAAImiD,EAAa11B,SAAS0iB,EAAUr6C,EAAE,GAAG,GAAIq6C,EAAUr6C,EAAE,GAAG,GAAI,GAAIqtD,EAAaz1B,SAASyiB,EAAUr6C,EAAE,GAAG,GAAIq6C,EAAUr6C,EAAE,GAAG,GAAI,GAAIqtD,EAAa11B,SAAS0iB,EAAU/yC,EAAE,GAAG,GAAI+yC,EAAU/yC,EAAE,GAAG,GAAI,GAAI+lD,EAAaz1B,SAASyiB,EAAU/yC,EAAE,GAAG,GAAI+yC,EAAU/yC,EAAE,GAAG,GAAI,IACzZ+1D,EAASE,GAAmBD,EAC5BC,GAAmB,CACrB,CAGE9L,IACF5E,GAAQzE,EAAQpoD,GAAG60B,EACnBg4B,GAAQlE,GAGN1nD,KAAK2uD,UAAUvgC,GACjBpuB,KAAK2uD,UAAUvgC,GAAKhS,KAAOggD,EAE3Bp8D,KAAK2uD,UAAUvgC,GAAO,CACpBhS,KAAMggD,GAIVhuC,GAAO,CACT,CACF,EAEAymC,cAAc11D,UAAU+9C,mBAAqB,WAE3C,IAYIn+C,EACAE,EACA8K,EACAC,EACAC,EACAC,EAlBJlK,KAAKuuD,eACKvuD,KAAK+zD,cACXzqB,KAAOtpC,KAAKuqB,OAAO2qC,OACvBl1D,KAAKmX,WAAWvhB,SAAS6hE,WAAW,QAEpCz3D,KAAKmX,WAAWvhB,SAAS8hE,YAAY,SAErC13D,KAAKmX,WAAWvhB,SAAS+hE,cAAc,GAElC33D,KAAK+I,KAAKynD,aACbxwD,KAAK8tD,aAAanC,YAAY3rD,KAAKiqD,aAAa1G,YAAavjD,KAAKwrD,oBASpE,IAGIsG,EAHAvG,EAAkBvrD,KAAK8tD,aAAavC,gBACpCpE,EAAUnnD,KAAKiqD,aAAa1G,YAAY3vB,EAC5C30B,EAAMkoD,EAAQ9uD,OAEd,IAGI+jE,EACAC,EAJAE,EAAW,KACXC,EAAa,KACbC,EAAc,KAGd7mE,EAAWoK,KAAKmX,WAAWvhB,SAE/B,IAAKmJ,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,IAAKooD,EAAQpoD,GAAG8oB,EAAG,CASjB,IARAiqC,EAAiBvG,EAAgBxsD,MAG/BnJ,EAASw+D,OACTx+D,EAASwhE,aAAatF,EAAeprD,GACrC9Q,EAASyhE,WAAWvF,EAAetmD,IAGjCxL,KAAK+0D,KAAM,CAeb,IAdIjD,GAAkBA,EAAe7O,GAC/BsZ,IAAazK,EAAe7O,KAC9BrtD,EAAS0hE,aAAaxF,EAAe7O,IACrCsZ,EAAWzK,EAAe7O,IAEnBsZ,IAAav8D,KAAKuqB,OAAOwqC,OAClCwH,EAAWv8D,KAAKuqB,OAAOwqC,KACvBn/D,EAAS0hE,aAAat3D,KAAKuqB,OAAOwqC,OAIpC/qD,GADAoyD,EAAWp8D,KAAK2uD,UAAU5vD,GAAGqd,MACb/jB,OAChB2H,KAAKmX,WAAW48C,cAAcC,YAEzBjqD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAKzB,IAHAG,GADAmyD,EAAUD,EAASryD,IACJ1R,OACf2H,KAAKmX,WAAW48C,cAAcE,OAAOoI,EAAQ,GAAIA,EAAQ,IAEpDpyD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBjK,KAAKmX,WAAW48C,cAAcI,cAAckI,EAAQpyD,GAAIoyD,EAAQpyD,EAAI,GAAIoyD,EAAQpyD,EAAI,GAAIoyD,EAAQpyD,EAAI,GAAIoyD,EAAQpyD,EAAI,GAAIoyD,EAAQpyD,EAAI,IAIxIjK,KAAKmX,WAAW48C,cAAc0H,YAC9B7lE,EAASgiE,SAEX,CAEA,GAAI53D,KAAK80D,OAAQ,CAyBf,IAxBIhD,GAAkBA,EAAe9O,GAC/ByZ,IAAgB3K,EAAe9O,KACjCyZ,EAAc3K,EAAe9O,GAC7BptD,EAAS4hE,aAAa1F,EAAe9O,KAE9ByZ,IAAgBz8D,KAAKuqB,OAAO0qC,SACrCwH,EAAcz8D,KAAKuqB,OAAO0qC,OAC1Br/D,EAAS4hE,aAAax3D,KAAKuqB,OAAO0qC,SAGhCnD,GAAkBA,EAAejkB,GAC/B2uB,IAAe1K,EAAejkB,KAChC2uB,EAAa1K,EAAejkB,GAC5Bj4C,EAAS2hE,eAAezF,EAAejkB,KAEhC2uB,IAAex8D,KAAKuqB,OAAOuqC,SACpC0H,EAAax8D,KAAKuqB,OAAOuqC,OACzBl/D,EAAS2hE,eAAev3D,KAAKuqB,OAAOuqC,SAItC9qD,GADAoyD,EAAWp8D,KAAK2uD,UAAU5vD,GAAGqd,MACb/jB,OAChB2H,KAAKmX,WAAW48C,cAAcC,YAEzBjqD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAKzB,IAHAG,GADAmyD,EAAUD,EAASryD,IACJ1R,OACf2H,KAAKmX,WAAW48C,cAAcE,OAAOoI,EAAQ,GAAIA,EAAQ,IAEpDpyD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBjK,KAAKmX,WAAW48C,cAAcI,cAAckI,EAAQpyD,GAAIoyD,EAAQpyD,EAAI,GAAIoyD,EAAQpyD,EAAI,GAAIoyD,EAAQpyD,EAAI,GAAIoyD,EAAQpyD,EAAI,GAAIoyD,EAAQpyD,EAAI,IAIxIjK,KAAKmX,WAAW48C,cAAc0H,YAC9B7lE,EAASkiE,WAEX,CAEIhG,GACF9xD,KAAKmX,WAAWvhB,SAASskE,SAE7B,CAEJ,EAQAt7D,gBAAgB,CAACuyC,YAAagF,iBAAkB2d,cAAenZ,iBAAkBvJ,aAAcxC,mBAAoBumB,gBACnHA,eAAeh2D,UAAU27C,YAAc8H,gBAAgBzjD,UAAU27C,YACjEqa,eAAeh2D,UAAU8V,aAAe4lC,cAAc17C,UAAU8V,aAEhEkgD,eAAeh2D,UAAU89C,cAAgB,WACvC,GAAIj9C,KAAKoR,IAAItW,QAAUkF,KAAK+Q,UAAU+3B,IAAM9oC,KAAKoR,IAAItW,OAASkF,KAAK+Q,UAAU5K,IAAMnG,KAAKoR,IAAI/W,QAAS,CACnG,IAAI6V,EAASvR,UAAU,UACvBuR,EAAOpV,MAAQkF,KAAK+Q,UAAU+3B,EAC9B54B,EAAO7V,OAAS2F,KAAK+Q,UAAU5K,EAC/B,IAKIu2D,EACAC,EANAxsD,EAAMD,EAAOE,WAAW,MACxBwsD,EAAO58D,KAAKoR,IAAItW,MAChB+hE,EAAO78D,KAAKoR,IAAI/W,OAChByiE,EAASF,EAAOC,EAChBE,EAAY/8D,KAAK+Q,UAAU+3B,EAAI9oC,KAAK+Q,UAAU5K,EAG9C62D,EAAMh9D,KAAK+Q,UAAUqsC,IAAMp9C,KAAKmX,WAAW04B,aAAawN,yBAExDyf,EAASC,GAAqB,mBAARC,GAA4BF,EAASC,GAAqB,mBAARC,EAE1EN,GADAC,EAAaE,GACYE,EAGzBJ,GADAD,EAAYE,GACaG,EAG3B5sD,EAAI0pD,UAAU75D,KAAKoR,KAAMwrD,EAAOF,GAAa,GAAIG,EAAOF,GAAc,EAAGD,EAAWC,EAAY,EAAG,EAAG38D,KAAK+Q,UAAU+3B,EAAG9oC,KAAK+Q,UAAU5K,GACvInG,KAAKoR,IAAMlB,CACb,CACF,EAEAilD,eAAeh2D,UAAU+9C,mBAAqB,WAC5Cl9C,KAAK+zD,cAAc8F,UAAU75D,KAAKoR,IAAK,EAAG,EAC5C,EAEA+jD,eAAeh2D,UAAUnH,QAAU,WACjCgI,KAAKoR,IAAM,IACb,EAMAxS,gBAAgB,CAACuyC,YAAagF,iBAAkB2d,cAAenZ,iBAAkBvJ,aAAcxC,mBAAoBwmB,gBACnHA,eAAej2D,UAAU27C,YAAc8H,gBAAgBzjD,UAAU27C,YACjEsa,eAAej2D,UAAU8V,aAAe4lC,cAAc17C,UAAU8V,aAEhEmgD,eAAej2D,UAAU+9C,mBAAqB,WAE5Cl9C,KAAKmX,WAAWvhB,SAAS0hE,aAAat3D,KAAK+I,KAAK8kC,IAEhD7tC,KAAKmX,WAAWvhB,SAASiiE,YAAY,EAAG,EAAG73D,KAAK+I,KAAKi6C,GAAIhjD,KAAK+I,KAAK0f,GAErE,EAIA7pB,gBAAgB,CAACqzC,cAAeojB,oBAEhCA,mBAAmBl2D,UAAU21C,YAAc,SAAU/rC,GACnD,OAAO,IAAI6rD,eAAe7rD,EAAM/I,KAAKmX,WAAYnX,KACnD,EAEAq1D,mBAAmBl2D,UAAU41C,WAAa,SAAUhsC,GAClD,OAAO,IAAI8rD,cAAc9rD,EAAM/I,KAAKmX,WAAYnX,KAClD,EAEAq1D,mBAAmBl2D,UAAUu1C,YAAc,SAAU3rC,GACnD,OAAO,IAAIosD,eAAepsD,EAAM/I,KAAKmX,WAAYnX,KACnD,EAEAq1D,mBAAmBl2D,UAAUy1C,YAAc,SAAU7rC,GACnD,OAAO,IAAIqsD,eAAersD,EAAM/I,KAAKmX,WAAYnX,KACnD,EAEAq1D,mBAAmBl2D,UAAU01C,WAAaqa,YAAY/vD,UAAU01C,WAEhEwgB,mBAAmBl2D,UAAUi4D,aAAe,SAAUziE,GACnC,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAA0B,IAAdA,EAAM,KAA2B,IAAdA,EAAM,KAIrGqL,KAAK+zD,cAAc9/B,UAAUt/B,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IACxF,EAEA0gE,mBAAmBl2D,UAAUk4D,WAAa,SAAU5qD,GAClDzM,KAAK+zD,cAAckJ,aAAexwD,EAAK,EAAI,EAAIA,CACjD,EAEA4oD,mBAAmBl2D,UAAUm4D,aAAe,SAAUlgE,GACpD4I,KAAK+zD,cAAc1jD,UAAYjZ,CACjC,EAEAi+D,mBAAmBl2D,UAAUo4D,eAAiB,SAAUngE,GACtD4I,KAAK+zD,cAAcwB,YAAcn+D,CACnC,EAEAi+D,mBAAmBl2D,UAAUq4D,aAAe,SAAUpgE,GACpD4I,KAAK+zD,cAAcvM,UAAYpwD,CACjC,EAEAi+D,mBAAmBl2D,UAAUs4D,WAAa,SAAUrgE,GAClD4I,KAAK+zD,cAAcyB,QAAUp+D,CAC/B,EAEAi+D,mBAAmBl2D,UAAUu4D,YAAc,SAAUtgE,GACnD4I,KAAK+zD,cAAcnxB,SAAWxrC,CAChC,EAEAi+D,mBAAmBl2D,UAAUw4D,cAAgB,SAAUvgE,GACrD4I,KAAK+zD,cAAclxB,WAAazrC,CAClC,EAEAi+D,mBAAmBl2D,UAAUy4D,QAAU,SAAUsF,GAC/Cl9D,KAAK+zD,cAAcgB,KAAKmI,EAC1B,EAEA7H,mBAAmBl2D,UAAU04D,YAAc,SAAUj9D,EAAGG,EAAG+tC,EAAG3iC,GAC5DnG,KAAK+zD,cAAczjD,SAAS1V,EAAGG,EAAG+tC,EAAG3iC,EACvC,EAEAkvD,mBAAmBl2D,UAAU24D,UAAY,WACvC93D,KAAK+zD,cAAce,QACrB,EAEAO,mBAAmBl2D,UAAU4wB,MAAQ,WAC9B/vB,KAAK6vC,aAAainB,YAKvB92D,KAAKm3D,YAAYpnC,QAJf/vB,KAAK+zD,cAAcmG,SAKvB,EAEA7E,mBAAmBl2D,UAAUi1D,KAAO,WAClCp0D,KAAK+zD,cAAcK,MACrB,EAEAiB,mBAAmBl2D,UAAU+6D,QAAU,SAAUiD,GAC1Cn9D,KAAK6vC,aAAainB,aAKnBqG,IACFn9D,KAAKmX,WAAWmiD,UAAY,eAG9Bt5D,KAAKm3D,YAAY+C,QAAQiD,IARvBn9D,KAAK+zD,cAAcmG,SASvB,EAEA7E,mBAAmBl2D,UAAUwX,gBAAkB,SAAUsC,GACvD,GAAIjZ,KAAKhG,cAAcqB,QAAS,CAC9B2E,KAAKhG,cAAcxB,UAAYmG,UAAU,UACzC,IAAIy+D,EAAiBp9D,KAAKhG,cAAcxB,UAAU5D,MAClDwoE,EAAetiE,MAAQ,OACvBsiE,EAAe/iE,OAAS,OACxB,IAAIsV,EAAS,cACbytD,EAAe34D,gBAAkBkL,EACjCytD,EAAeC,mBAAqB1tD,EACpCytD,EAAe14D,sBAAwBiL,EACvCytD,EAAe,qBAAuBztD,EACtCytD,EAAexN,kBAAoB5vD,KAAK6vC,aAAa+f,kBACrD5vD,KAAKhG,cAAcqB,QAAQ0X,YAAY/S,KAAKhG,cAAcxB,WAC1DwH,KAAK+zD,cAAgB/zD,KAAKhG,cAAcxB,UAAU4X,WAAW,MAEzDpQ,KAAK6vC,aAAakgB,WACpB/vD,KAAKhG,cAAcxB,UAAU0kB,aAAa,QAASld,KAAK6vC,aAAakgB,WAGnE/vD,KAAK6vC,aAAa9kC,IACpB/K,KAAKhG,cAAcxB,UAAU0kB,aAAa,KAAMld,KAAK6vC,aAAa9kC,GAEtE,MACE/K,KAAK+zD,cAAgB/zD,KAAK6vC,aAAaknB,QAGzC/2D,KAAKm3D,YAAYmG,WAAWt9D,KAAK+zD,eACjC/zD,KAAK+I,KAAOkQ,EACZjZ,KAAK4J,OAASqP,EAASrP,OACvB5J,KAAKq5D,gBAAkB,CACrBvwB,EAAG7vB,EAAS6vB,EACZ3iC,EAAG8S,EAAS9S,EACZmtB,GAAI,EACJ1C,GAAI,EACJmD,GAAI,EACJtpB,GAAI,GAENzK,KAAK81C,gBAAgB78B,EAAU5c,SAAS8gB,MACxCnd,KAAKmX,WAAW48C,cAAgB/zD,KAAK+zD,cACrC/zD,KAAKmX,WAAWvhB,SAAWoK,KAC3BA,KAAKmX,WAAWomD,UAAW,EAC3Bv9D,KAAKmX,WAAWi+B,gBAAkBp1C,KAAK6vC,aAAauF,gBACpDp1C,KAAKmX,WAAWkiD,gBAAkBr5D,KAAKq5D,gBACvCr5D,KAAKwlC,SAAWzjC,iBAAiBkX,EAASrP,OAAOvR,QACjD2H,KAAK8Z,qBACP,EAEAu7C,mBAAmBl2D,UAAU2a,oBAAsB,SAAUhf,EAAOT,GAElE,IAAImjE,EACAC,EAoBAC,EACAC,EAEJ,GAzBA39D,KAAK+vB,QAIDj1B,GACF0iE,EAAe1iE,EACf2iE,EAAgBpjE,EAChB2F,KAAK+zD,cAAc7jD,OAAOpV,MAAQ0iE,EAClCx9D,KAAK+zD,cAAc7jD,OAAO7V,OAASojE,IAE/Bz9D,KAAKhG,cAAcqB,SAAW2E,KAAKhG,cAAcxB,WACnDglE,EAAex9D,KAAKhG,cAAcqB,QAAQ2uC,YAC1CyzB,EAAgBz9D,KAAKhG,cAAcqB,QAAQuiE,eAE3CJ,EAAex9D,KAAK+zD,cAAc7jD,OAAOpV,MACzC2iE,EAAgBz9D,KAAK+zD,cAAc7jD,OAAO7V,QAG5C2F,KAAK+zD,cAAc7jD,OAAOpV,MAAQ0iE,EAAex9D,KAAK6vC,aAAamnB,IACnEh3D,KAAK+zD,cAAc7jD,OAAO7V,OAASojE,EAAgBz9D,KAAK6vC,aAAamnB,MAMR,IAA3Dh3D,KAAK6vC,aAAa8f,oBAAoBzhD,QAAQ,UAA8E,IAA5DlO,KAAK6vC,aAAa8f,oBAAoBzhD,QAAQ,SAAiB,CACjI,IAAI8uD,EAAMh9D,KAAK6vC,aAAa8f,oBAAoB9jD,MAAM,KAClDgyD,EAAWb,EAAI,IAAM,OACrBtgE,EAAMsgE,EAAI,IAAM,WAChBpR,EAAOlvD,EAAIgb,OAAO,EAAG,GACrBm0C,EAAOnvD,EAAIgb,OAAO,GACtBgmD,EAAaF,EAAeC,GAC5BE,EAAe39D,KAAKq5D,gBAAgBvwB,EAAI9oC,KAAKq5D,gBAAgBlzD,GAE1Cu3D,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,GACnF79D,KAAKq5D,gBAAgB/lC,GAAKkqC,GAAgBx9D,KAAKq5D,gBAAgBvwB,EAAI9oC,KAAK6vC,aAAamnB,KACrFh3D,KAAKq5D,gBAAgBzoC,GAAK4sC,GAAgBx9D,KAAKq5D,gBAAgBvwB,EAAI9oC,KAAK6vC,aAAamnB,OAErFh3D,KAAKq5D,gBAAgB/lC,GAAKmqC,GAAiBz9D,KAAKq5D,gBAAgBlzD,EAAInG,KAAK6vC,aAAamnB,KACtFh3D,KAAKq5D,gBAAgBzoC,GAAK6sC,GAAiBz9D,KAAKq5D,gBAAgBlzD,EAAInG,KAAK6vC,aAAamnB,MAItFh3D,KAAKq5D,gBAAgBtlC,GADV,SAAT63B,IAAoB+R,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IAC5EL,EAAex9D,KAAKq5D,gBAAgBvwB,GAAK20B,EAAgBz9D,KAAKq5D,gBAAgBlzD,IAAM,EAAInG,KAAK6vC,aAAamnB,IACnH,SAATpL,IAAoB+R,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IACnFL,EAAex9D,KAAKq5D,gBAAgBvwB,GAAK20B,EAAgBz9D,KAAKq5D,gBAAgBlzD,IAAMnG,KAAK6vC,aAAamnB,IAEvG,EAI1Bh3D,KAAKq5D,gBAAgB5uD,GADV,SAATohD,IAAoB8R,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IAC5EJ,EAAgBz9D,KAAKq5D,gBAAgBlzD,GAAKq3D,EAAex9D,KAAKq5D,gBAAgBvwB,IAAM,EAAI9oC,KAAK6vC,aAAamnB,IACnH,SAATnL,IAAoB8R,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IACnFJ,EAAgBz9D,KAAKq5D,gBAAgBlzD,GAAKq3D,EAAex9D,KAAKq5D,gBAAgBvwB,IAAM9oC,KAAK6vC,aAAamnB,IAEvG,CAE9B,KAAqD,SAA1Ch3D,KAAK6vC,aAAa8f,qBAC3B3vD,KAAKq5D,gBAAgB/lC,GAAKkqC,GAAgBx9D,KAAKq5D,gBAAgBvwB,EAAI9oC,KAAK6vC,aAAamnB,KACrFh3D,KAAKq5D,gBAAgBzoC,GAAK6sC,GAAiBz9D,KAAKq5D,gBAAgBlzD,EAAInG,KAAK6vC,aAAamnB,KACtFh3D,KAAKq5D,gBAAgBtlC,GAAK,EAC1B/zB,KAAKq5D,gBAAgB5uD,GAAK,IAE1BzK,KAAKq5D,gBAAgB/lC,GAAKtzB,KAAK6vC,aAAamnB,IAC5Ch3D,KAAKq5D,gBAAgBzoC,GAAK5wB,KAAK6vC,aAAamnB,IAC5Ch3D,KAAKq5D,gBAAgBtlC,GAAK,EAC1B/zB,KAAKq5D,gBAAgB5uD,GAAK,GAG5BzK,KAAKq5D,gBAAgB1kE,MAAQ,CAACqL,KAAKq5D,gBAAgB/lC,GAAI,EAAG,EAAG,EAAG,EAAGtzB,KAAKq5D,gBAAgBzoC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG5wB,KAAKq5D,gBAAgBtlC,GAAI/zB,KAAKq5D,gBAAgB5uD,GAAI,EAAG,GAQnKzK,KAAKo3D,aAAap3D,KAAKq5D,gBAAgB1kE,OACvCqL,KAAK+zD,cAAcC,YACnBh0D,KAAK+zD,cAAcvd,KAAK,EAAG,EAAGx2C,KAAKq5D,gBAAgBvwB,EAAG9oC,KAAKq5D,gBAAgBlzD,GAC3EnG,KAAK+zD,cAAc0H,YACnBz7D,KAAK+zD,cAAcM,OACnBr0D,KAAK+Z,YAAY/Z,KAAKgrB,eAAe,EACvC,EAEAqqC,mBAAmBl2D,UAAUnH,QAAU,WAKrC,IAAI+G,EAGJ,IAPIiB,KAAK6vC,aAAainB,aAAe92D,KAAKhG,cAAcqB,UACtD2E,KAAKhG,cAAcqB,QAAQgiB,UAAY,IAMpCte,GAFKiB,KAAK4J,OAAS5J,KAAK4J,OAAOvR,OAAS,GAE9B,EAAG0G,GAAK,EAAGA,GAAK,EACzBiB,KAAKwlC,SAASzmC,IAAMiB,KAAKwlC,SAASzmC,GAAG/G,SACvCgI,KAAKwlC,SAASzmC,GAAG/G,UAIrBgI,KAAKwlC,SAASntC,OAAS,EACvB2H,KAAKmX,WAAW48C,cAAgB,KAChC/zD,KAAKhG,cAAcxB,UAAY,KAC/BwH,KAAKmwD,WAAY,CACnB,EAEAkF,mBAAmBl2D,UAAU4a,YAAc,SAAUy1B,EAAKnS,GACxD,IAAIr9B,KAAKgrB,gBAAkBwkB,IAAyC,IAAlCxvC,KAAK6vC,aAAainB,aAAyBz5B,KAAer9B,KAAKmwD,YAAsB,IAAT3gB,EAA9G,CAWA,IAAIzwC,EAPJiB,KAAKgrB,cAAgBwkB,EACrBxvC,KAAKmX,WAAWoP,SAAWipB,EAAMxvC,KAAKhG,cAAc4xB,cACpD5rB,KAAKmX,WAAWsU,SAAW,EAC3BzrB,KAAKmX,WAAWoU,MAAQvrB,KAAK6vC,aAAainB,aAAez5B,EACzDr9B,KAAKmX,WAAWX,iBAAiBrB,aAAeq6B,EAIhD,IAAIvwC,EAAMe,KAAK4J,OAAOvR,OAMtB,IAJK2H,KAAK2J,gBACR3J,KAAKq0C,YAAY7E,GAGdzwC,EAAIE,EAAM,EAAGF,GAAK,EAAGA,GAAK,GACzBiB,KAAK2J,gBAAkB3J,KAAKwlC,SAASzmC,KACvCiB,KAAKwlC,SAASzmC,GAAGkW,aAAau6B,EAAMxvC,KAAK4J,OAAO7K,GAAG2N,IAIvD,GAAI1M,KAAKmX,WAAWoU,KAAM,CAOxB,KANsC,IAAlCvrB,KAAK6vC,aAAainB,YACpB92D,KAAK+zD,cAAc2F,UAAU,EAAG,EAAG15D,KAAKq5D,gBAAgBvwB,EAAG9oC,KAAKq5D,gBAAgBlzD,GAEhFnG,KAAKo0D,OAGFr1D,EAAIE,EAAM,EAAGF,GAAK,EAAGA,GAAK,GACzBiB,KAAK2J,gBAAkB3J,KAAKwlC,SAASzmC,KACvCiB,KAAKwlC,SAASzmC,GAAGgb,eAIiB,IAAlC/Z,KAAK6vC,aAAainB,aACpB92D,KAAKk6D,SAET,CAtCA,CAuCF,EAEA7E,mBAAmBl2D,UAAUm1C,UAAY,SAAU53C,GACjD,IAAI8oC,EAAWxlC,KAAKwlC,SAEpB,IAAIA,EAAS9oC,IAAgC,KAAxBsD,KAAK4J,OAAOlN,GAAK+N,GAAtC,CAIA,IAAIlG,EAAUvE,KAAKw0C,WAAWx0C,KAAK4J,OAAOlN,GAAMsD,KAAMA,KAAKmX,YAC3DquB,EAAS9oC,GAAO6H,EAChBA,EAAQiU,iBAJR,CAQF,EAEA68C,mBAAmBl2D,UAAUo1C,qBAAuB,WAClD,KAAOv0C,KAAK21C,gBAAgBt9C,QACZ2H,KAAK21C,gBAAgBla,MAC3BuhB,gBAEZ,EAEAqY,mBAAmBl2D,UAAUkc,KAAO,WAClCrb,KAAKhG,cAAcxB,UAAU5D,MAAM4P,QAAU,MAC/C,EAEA6wD,mBAAmBl2D,UAAUmc,KAAO,WAClCtb,KAAKhG,cAAcxB,UAAU5D,MAAM4P,QAAU,OAC/C,EAkDAixD,cAAct2D,UAAU2+D,UAAY,WAClC,IAAIC,EAA2B,EAAf/9D,KAAK4gB,QACjB7hB,EAAI,EAER,IAAKA,EAAIiB,KAAK4gB,QAAS7hB,EAAIg/D,EAAWh/D,GAAK,EACzCiB,KAAK01D,MAAM32D,GAAK,IAAIu2D,cAGtBt1D,KAAK4gB,QAAUm9C,CACjB,EAEAtI,cAAct2D,UAAU4wB,MAAQ,WAC9B/vB,KAAK21D,QAAU,EACf31D,KAAK41D,IAAI7lC,QACT/vB,KAAK01D,MAAM11D,KAAK21D,SAASnd,QAAU,CACrC,EAEAid,cAAct2D,UAAU+6D,QAAU,SAAU8D,GAC1Ch+D,KAAK21D,SAAW,EAChB,IAEI52D,EAFAk/D,EAAiBj+D,KAAK01D,MAAM11D,KAAK21D,SACjC1hC,EAAYgqC,EAAehqC,UAE3BtyB,EAAM3B,KAAK41D,IAAIjhE,MAEnB,IAAKoK,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4C,EAAI5C,GAAKk1B,EAAUl1B,GAGrB,GAAIi/D,EAAc,CAChBh+D,KAAK61D,cAAcqE,UACnB,IAAIgE,EAAYl+D,KAAK01D,MAAM11D,KAAK21D,QAAU,GAC1C31D,KAAKi2D,iBAAmBiI,EAAU7tD,UAClCrQ,KAAKm2D,mBAAqB+H,EAAU3I,YACpCv1D,KAAKq2D,iBAAmB6H,EAAU1W,UAClCxnD,KAAKu2D,eAAiB2H,EAAU1I,QAChCx1D,KAAKy2D,gBAAkByH,EAAUt7B,SACjC5iC,KAAK02D,kBAAoBwH,EAAUr7B,UACrC,CAEA7iC,KAAK61D,cAAcliC,aAAaM,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,IAAKA,EAAU,MAE7G+pC,IAA4C,IAA5BC,EAAezlB,SAAkBx4C,KAAK+1D,iBAAmBkI,EAAezlB,WAC1Fx4C,KAAK61D,cAAcoH,YAAcgB,EAAezlB,QAChDx4C,KAAK+1D,eAAiBkI,EAAezlB,SAGvCx4C,KAAKg2D,iBAAmBiI,EAAe5tD,UACvCrQ,KAAKk2D,mBAAqB+H,EAAe1I,YACzCv1D,KAAKo2D,iBAAmB6H,EAAezW,UACvCxnD,KAAKs2D,eAAiB2H,EAAezI,QACrCx1D,KAAKw2D,gBAAkByH,EAAer7B,SACtC5iC,KAAK22D,kBAAoBsH,EAAep7B,UAC1C,EAEA4yB,cAAct2D,UAAUi1D,KAAO,SAAU+J,GACnCA,GACFn+D,KAAK61D,cAAczB,OAGrB,IAAIz/D,EAAQqL,KAAK41D,IAAIjhE,MAEjBqL,KAAK4gB,SAAW5gB,KAAK21D,SACvB31D,KAAK89D,YAGP,IACI/+D,EADAq/D,EAAep+D,KAAK01D,MAAM11D,KAAK21D,SAGnC,IAAK52D,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBq/D,EAAanqC,UAAUl1B,GAAKpK,EAAMoK,GAGpCiB,KAAK21D,SAAW,EAChB,IAAI0I,EAAWr+D,KAAK01D,MAAM11D,KAAK21D,SAC/B0I,EAAS7lB,QAAU4lB,EAAa5lB,QAChC6lB,EAAShuD,UAAY+tD,EAAa/tD,UAClCguD,EAAS9I,YAAc6I,EAAa7I,YACpC8I,EAAS7W,UAAY4W,EAAa5W,UAClC6W,EAAS7I,QAAU4I,EAAa5I,QAChC6I,EAASz7B,SAAWw7B,EAAax7B,SACjCy7B,EAASx7B,WAAau7B,EAAav7B,UACrC,EAEA4yB,cAAct2D,UAAUm/D,WAAa,SAAUlnE,GAC7C4I,KAAK01D,MAAM11D,KAAK21D,SAASnd,QAAUphD,CACrC,EAEAq+D,cAAct2D,UAAUm+D,WAAa,SAAUlmE,GAC7C4I,KAAK61D,cAAgBz+D,CACvB,EAEAq+D,cAAct2D,UAAUkR,UAAY,SAAUjZ,GACxC4I,KAAK01D,MAAM11D,KAAK21D,SAAStlD,YAAcjZ,IACzC4I,KAAKg2D,iBAAmB5+D,EACxB4I,KAAK01D,MAAM11D,KAAK21D,SAAStlD,UAAYjZ,EAEzC,EAEAq+D,cAAct2D,UAAUo2D,YAAc,SAAUn+D,GAC1C4I,KAAK01D,MAAM11D,KAAK21D,SAASJ,cAAgBn+D,IAC3C4I,KAAKk2D,mBAAqB9+D,EAC1B4I,KAAK01D,MAAM11D,KAAK21D,SAASJ,YAAcn+D,EAE3C,EAEAq+D,cAAct2D,UAAUqoD,UAAY,SAAUpwD,GACxC4I,KAAK01D,MAAM11D,KAAK21D,SAASnO,YAAcpwD,IACzC4I,KAAKo2D,iBAAmBh/D,EACxB4I,KAAK01D,MAAM11D,KAAK21D,SAASnO,UAAYpwD,EAEzC,EAEAq+D,cAAct2D,UAAUq2D,QAAU,SAAUp+D,GACtC4I,KAAK01D,MAAM11D,KAAK21D,SAASH,UAAYp+D,IACvC4I,KAAKs2D,eAAiBl/D,EACtB4I,KAAK01D,MAAM11D,KAAK21D,SAASH,QAAUp+D,EAEvC,EAEAq+D,cAAct2D,UAAUyjC,SAAW,SAAUxrC,GACvC4I,KAAK01D,MAAM11D,KAAK21D,SAAS/yB,WAAaxrC,IACxC4I,KAAKw2D,gBAAkBp/D,EACvB4I,KAAK01D,MAAM11D,KAAK21D,SAAS/yB,SAAWxrC,EAExC,EAEAq+D,cAAct2D,UAAU0jC,WAAa,SAAUzrC,GACzC4I,KAAK01D,MAAM11D,KAAK21D,SAAS9yB,aAAezrC,IAC1C4I,KAAK22D,kBAAoBv/D,EACzB4I,KAAK01D,MAAM11D,KAAK21D,SAAS9yB,WAAazrC,EAE1C,EAEAq+D,cAAct2D,UAAU80B,UAAY,SAAUt/B,GAC5CqL,KAAK81D,aAAav/B,eAAe5hC,GAEjC,IAAIixD,EAAmB5lD,KAAK41D,IAE5B51D,KAAK81D,aAAa9/B,SAAS4vB,GAE3BA,EAAiBrvB,eAAev2B,KAAK81D,aAAanhE,OAClD,IAAI4pE,EAAU3Y,EAAiBjxD,MAE/BqL,KAAK61D,cAAcliC,aAAa4qC,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAAKA,EAAQ,IACvG,EAEA9I,cAAct2D,UAAUq5C,QAAU,SAAU/rC,GAC1C,IAAIspD,EAAiB/1D,KAAK01D,MAAM11D,KAAK21D,SAASnd,QAC9Cud,GAAkBtpD,EAAK,EAAI,EAAIA,EAE3BzM,KAAK01D,MAAM11D,KAAK21D,SAASnd,UAAYud,IACnC/1D,KAAK+1D,iBAAmBtpD,IAC1BzM,KAAK61D,cAAcoH,YAAcxwD,EACjCzM,KAAK+1D,eAAiBtpD,GAGxBzM,KAAK01D,MAAM11D,KAAK21D,SAASnd,QAAUud,EAEvC,EAEAN,cAAct2D,UAAU41D,KAAO,SAAUmI,GACnCl9D,KAAKi2D,mBAAqBj2D,KAAKg2D,mBACjCh2D,KAAKi2D,iBAAmBj2D,KAAKg2D,iBAC7Bh2D,KAAK61D,cAAcxlD,UAAYrQ,KAAKi2D,kBAGtCj2D,KAAK61D,cAAcd,KAAKmI,EAC1B,EAEAzH,cAAct2D,UAAUmR,SAAW,SAAU1V,EAAGG,EAAG+tC,EAAG3iC,GAChDnG,KAAKi2D,mBAAqBj2D,KAAKg2D,mBACjCh2D,KAAKi2D,iBAAmBj2D,KAAKg2D,iBAC7Bh2D,KAAK61D,cAAcxlD,UAAYrQ,KAAKi2D,kBAGtCj2D,KAAK61D,cAAcvlD,SAAS1V,EAAGG,EAAG+tC,EAAG3iC,EACvC,EAEAsvD,cAAct2D,UAAU21D,OAAS,WAC3B90D,KAAKm2D,qBAAuBn2D,KAAKk2D,qBACnCl2D,KAAKm2D,mBAAqBn2D,KAAKk2D,mBAC/Bl2D,KAAK61D,cAAcN,YAAcv1D,KAAKm2D,oBAGpCn2D,KAAKq2D,mBAAqBr2D,KAAKo2D,mBACjCp2D,KAAKq2D,iBAAmBr2D,KAAKo2D,iBAC7Bp2D,KAAK61D,cAAcrO,UAAYxnD,KAAKq2D,kBAGlCr2D,KAAKu2D,iBAAmBv2D,KAAKs2D,iBAC/Bt2D,KAAKu2D,eAAiBv2D,KAAKs2D,eAC3Bt2D,KAAK61D,cAAcL,QAAUx1D,KAAKu2D,gBAGhCv2D,KAAKy2D,kBAAoBz2D,KAAKw2D,kBAChCx2D,KAAKy2D,gBAAkBz2D,KAAKw2D,gBAC5Bx2D,KAAK61D,cAAcjzB,SAAW5iC,KAAKy2D,iBAGjCz2D,KAAK02D,oBAAsB12D,KAAK22D,oBAClC32D,KAAK02D,kBAAoB12D,KAAK22D,kBAC9B32D,KAAK61D,cAAchzB,WAAa7iC,KAAK02D,mBAGvC12D,KAAK61D,cAAcf,QACrB,EAaAl2D,gBAAgB,CAACy2D,mBAAoBtG,aAAc+E,eAAgB8C,eAEnEA,cAAcz3D,UAAU+9C,mBAAqB,WAC3C,IAQIn+C,EARAoR,EAAMnQ,KAAK+zD,cAWf,IAVA5jD,EAAI6jD,YACJ7jD,EAAI8jD,OAAO,EAAG,GACd9jD,EAAI+jD,OAAOl0D,KAAK+I,KAAK+/B,EAAG,GACxB34B,EAAI+jD,OAAOl0D,KAAK+I,KAAK+/B,EAAG9oC,KAAK+I,KAAK5C,GAClCgK,EAAI+jD,OAAO,EAAGl0D,KAAK+I,KAAK5C,GACxBgK,EAAI+jD,OAAO,EAAG,GACd/jD,EAAIkkD,OAICt1D,EAFKiB,KAAK4J,OAAOvR,OAEP,EAAG0G,GAAK,EAAGA,GAAK,GACzBiB,KAAK2J,gBAAkB3J,KAAKwlC,SAASzmC,KACvCiB,KAAKwlC,SAASzmC,GAAGgb,aAGvB,EAEA68C,cAAcz3D,UAAUnH,QAAU,WAChC,IAAI+G,EAGJ,IAAKA,EAFKiB,KAAK4J,OAAOvR,OAEP,EAAG0G,GAAK,EAAGA,GAAK,EACzBiB,KAAKwlC,SAASzmC,IAChBiB,KAAKwlC,SAASzmC,GAAG/G,UAIrBgI,KAAK4J,OAAS,KACd5J,KAAKwlC,SAAW,IAClB,EAEAoxB,cAAcz3D,UAAUw1C,WAAa,SAAU5rC,GAC7C,OAAO,IAAI6tD,cAAc7tD,EAAM/I,KAAKmX,WAAYnX,KAClD,EAmDApB,gBAAgB,CAACy2D,oBAAqBwB,gBAEtCA,eAAe13D,UAAUw1C,WAAa,SAAU5rC,GAC9C,OAAO,IAAI6tD,cAAc7tD,EAAM/I,KAAKmX,WAAYnX,KAClD,EAIA+3D,aAAa54D,UAAY,CACvBq/D,eAAgB,WAA2B,EAC3CtjB,oBAAqB,WACnBl7C,KAAKuzC,YAAc50C,UAAUqB,KAAK+I,KAAK01D,IAAM,OAEzCz+D,KAAK+I,KAAKqB,SACZpK,KAAKmvD,WAAahnD,SAAS,OAC3BnI,KAAKwzC,aAAerrC,SAAS,KAC7BnI,KAAK03C,cAAgB13C,KAAKwzC,aAC1BxzC,KAAKmvD,WAAWp8C,YAAY/S,KAAKwzC,cACjCxzC,KAAKuzC,YAAYxgC,YAAY/S,KAAKmvD,aAElCnvD,KAAKwzC,aAAexzC,KAAKuzC,YAG3BjvC,SAAStE,KAAKuzC,YAChB,EACA4H,wBAAyB,WACvBn7C,KAAK04C,yBAA2B,IAAIgb,UAAU1zD,MAC9CA,KAAKq7C,mBAAqBr7C,KAAKuzC,YAC/BvzC,KAAK03C,cAAgB13C,KAAKwzC,aAEtBxzC,KAAK+I,KAAK6yC,IACZ57C,KAAKwzC,aAAat2B,aAAa,KAAMld,KAAK+I,KAAK6yC,IAG7C57C,KAAK+I,KAAKwE,IACZvN,KAAKwzC,aAAat2B,aAAa,QAASld,KAAK+I,KAAKwE,IAG/B,IAAjBvN,KAAK+I,KAAKuqC,IACZtzC,KAAKozC,cAET,EACA6I,cAAe,WACb,IAAIyiB,EAA0B1+D,KAAKq7C,mBAAqBr7C,KAAKq7C,mBAAmBzmD,MAAQ,CAAC,EAEzF,GAAIoL,KAAK2vC,eAAeiI,QAAS,CAC/B,IAAI+mB,EAAc3+D,KAAK2vC,eAAevS,IAAIzF,QAC1C+mC,EAAwBzqC,UAAY0qC,EACpCD,EAAwBE,gBAAkBD,CAC5C,CAEI3+D,KAAK2vC,eAAemI,SACtB4mB,EAAwBlmB,QAAUx4C,KAAK2vC,eAAeC,MAAMpkC,EAAEnF,EAElE,EACA0T,YAAa,WAGP/Z,KAAK+I,KAAK8yC,IAAM77C,KAAKivC,SAIzBjvC,KAAKk4C,kBACLl4C,KAAK+vC,mBACL/vC,KAAKi8C,gBACLj8C,KAAKk9C,qBAEDl9C,KAAK4rB,gBACP5rB,KAAK4rB,eAAgB,GAEzB,EACA5zB,QAAS,WACPgI,KAAKwzC,aAAe,KACpBxzC,KAAKq7C,mBAAqB,KAEtBr7C,KAAKo7C,eACPp7C,KAAKo7C,aAAe,MAGlBp7C,KAAK0yC,cACP1yC,KAAK0yC,YAAY16C,UACjBgI,KAAK0yC,YAAc,KAEvB,EACAyJ,2BAA4B,WAC1Bn8C,KAAK0yC,YAAc,IAAI0D,YAAYp2C,KAAK+I,KAAM/I,KAAMA,KAAKmX,WAC3D,EACA0nD,WAAY,WAAuB,EACnC/hB,SAAU,WAAqB,GAEjCib,aAAa54D,UAAU40C,eAAiB2G,eAAev7C,UAAU40C,eACjEgkB,aAAa54D,UAAU+8C,mBAAqB6b,aAAa54D,UAAUnH,QACnE+/D,aAAa54D,UAAUk2C,sBAAwBpD,aAAa9yC,UAAUk2C,sBAMtEz2C,gBAAgB,CAACuyC,YAAagF,iBAAkB4hB,aAAcpd,iBAAkBvJ,aAAcwJ,sBAAuBod,eAErHA,cAAc74D,UAAU89C,cAAgB,WACtC,IAAIzG,EAEAx2C,KAAK+I,KAAKqB,UACZosC,EAAOruC,SAAS,SACX+U,aAAa,QAASld,KAAK+I,KAAKi6C,IACrCxM,EAAKt5B,aAAa,SAAUld,KAAK+I,KAAK0f,IACtC+tB,EAAKt5B,aAAa,OAAQld,KAAK+I,KAAK8kC,IACpC7tC,KAAKmvD,WAAWjyC,aAAa,QAASld,KAAK+I,KAAKi6C,IAChDhjD,KAAKmvD,WAAWjyC,aAAa,SAAUld,KAAK+I,KAAK0f,OAEjD+tB,EAAO73C,UAAU,QACZ/J,MAAMkG,MAAQkF,KAAK+I,KAAKi6C,GAAK,KAClCxM,EAAK5hD,MAAMyF,OAAS2F,KAAK+I,KAAK0f,GAAK,KACnC+tB,EAAK5hD,MAAMkqE,gBAAkB9+D,KAAK+I,KAAK8kC,IAGzC7tC,KAAKwzC,aAAazgC,YAAYyjC,EAChC,EA8BA53C,gBAAgB,CAACuyC,YAAagF,iBAAkB6hB,cAAepV,gBAAiBmV,aAAcpd,iBAAkBvJ,aAAcxC,mBAAoBqpB,eAClJA,cAAc94D,UAAU4/D,kBAAoB9G,cAAc94D,UAAU+9C,mBAEpE+a,cAAc94D,UAAU89C,cAAgB,WACtC,IAAIhX,EAGJ,GAFAjmC,KAAKuzC,YAAY3+C,MAAM+0C,SAAW,EAE9B3pC,KAAK+I,KAAKqB,QACZpK,KAAKwzC,aAAazgC,YAAY/S,KAAKk4D,iBACnCjyB,EAAOjmC,KAAKmvD,eACP,CACLlpB,EAAO99B,SAAS,OAChB,IAAI4gC,EAAO/oC,KAAKgL,KAAKjC,KAAO/I,KAAKgL,KAAKjC,KAAO/I,KAAKmX,WAAW6+B,SAC7D/P,EAAK/oB,aAAa,QAAS6rB,EAAKD,GAChC7C,EAAK/oB,aAAa,SAAU6rB,EAAK5iC,GACjC8/B,EAAKlzB,YAAY/S,KAAKk4D,iBACtBl4D,KAAKwzC,aAAazgC,YAAYkzB,EAChC,CAEAjmC,KAAK6kD,aAAa7kD,KAAKgzC,WAAYhzC,KAAKizC,UAAWjzC,KAAK6/C,aAAc7/C,KAAKk4D,gBAAiB,EAAG,IAAI,GACnGl4D,KAAK8kD,qBACL9kD,KAAKg/D,UAAY/4B,CACnB,EAEAgyB,cAAc94D,UAAU8/D,oBAAsB,SAAUhhB,EAAcv7B,GACpE,IAAI3jB,EACAE,EAAMg/C,EAAa5lD,OAEvB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB2jB,EAAQu7B,EAAal/C,GAAGgoC,OAAO1gC,EAAE4wB,kBAAkBvU,EAAM,GAAIA,EAAM,GAAI,GAGzE,OAAOA,CACT,EAEAu1C,cAAc94D,UAAU+/D,0BAA4B,SAAUC,EAAMjgC,GAClE,IAEIngC,EAEAqgE,EACAC,EACAC,EACAC,EAPA/wC,EAAQ2wC,EAAK12C,GAAGpiB,EAChB43C,EAAekhB,EAAKlhB,aAEpBh/C,EAAMuvB,EAAM5N,QAMhB,KAAI3hB,GAAO,GAAX,CAIA,IAAKF,EAAI,EAAGA,EAAIE,EAAM,EAAGF,GAAK,EAC5BqgE,EAASp/D,KAAKi/D,oBAAoBhhB,EAAczvB,EAAMnoB,EAAEtH,IACxDsgE,EAASr/D,KAAKi/D,oBAAoBhhB,EAAczvB,EAAMhjB,EAAEzM,IACxDugE,EAAat/D,KAAKi/D,oBAAoBhhB,EAAczvB,EAAMzvB,EAAEA,EAAI,IAChEwgE,EAAav/D,KAAKi/D,oBAAoBhhB,EAAczvB,EAAMnoB,EAAEtH,EAAI,IAChEiB,KAAKw/D,YAAYJ,EAAQC,EAAQC,EAAYC,EAAYrgC,GAGvD1Q,EAAMrhB,IACRiyD,EAASp/D,KAAKi/D,oBAAoBhhB,EAAczvB,EAAMnoB,EAAEtH,IACxDsgE,EAASr/D,KAAKi/D,oBAAoBhhB,EAAczvB,EAAMhjB,EAAEzM,IACxDugE,EAAat/D,KAAKi/D,oBAAoBhhB,EAAczvB,EAAMzvB,EAAE,IAC5DwgE,EAAav/D,KAAKi/D,oBAAoBhhB,EAAczvB,EAAMnoB,EAAE,IAC5DrG,KAAKw/D,YAAYJ,EAAQC,EAAQC,EAAYC,EAAYrgC,GAf3D,CAiBF,EAEA+4B,cAAc94D,UAAUqgE,YAAc,SAAUJ,EAAQC,EAAQC,EAAYC,EAAYrgC,GACtFl/B,KAAKy/D,iBAAiBL,EAAQC,EAAQC,EAAYC,GAClD,IAAIv3B,EAAShoC,KAAK0/D,iBAClBxgC,EAAYtkC,EAAI0I,MAAM0kC,EAAOntC,KAAMqkC,EAAYtkC,GAC/CskC,EAAYygC,KAAOv8D,MAAM4kC,EAAOrE,MAAOzE,EAAYygC,MACnDzgC,EAAYnkC,EAAIuI,MAAM0kC,EAAO5tC,IAAK8kC,EAAYnkC,GAC9CmkC,EAAY0gC,KAAOx8D,MAAM4kC,EAAOC,OAAQ/I,EAAY0gC,KACtD,EAEA3H,cAAc94D,UAAUugE,iBAAmB,CACzC7kE,KAAM,EACN8oC,MAAO,EACPvpC,IAAK,EACL6tC,OAAQ,GAEVgwB,cAAc94D,UAAU0gE,gBAAkB,CACxCjlE,EAAG,EACH+kE,KAAM,EACN5kE,EAAG,EACH6kE,KAAM,EACN9kE,MAAO,EACPT,OAAQ,GAGV49D,cAAc94D,UAAUsgE,iBAAmB,SAAUpvC,EAAIC,EAAI0E,EAAIuJ,GAG/D,IAFA,IAES3xB,EAAGpG,EAAG2G,EAAGvG,EAAGk5D,EAAMx7C,EAAI0a,EAF3BgJ,EAAS,CAAC,CAAC3X,EAAG,GAAIkO,EAAG,IAAK,CAAClO,EAAG,GAAIkO,EAAG,KAENx/B,EAAI,EAAGA,EAAI,IAAKA,EAEjDyH,EAAI,EAAI6pB,EAAGtxB,GAAK,GAAKuxB,EAAGvxB,GAAK,EAAIi2B,EAAGj2B,GACpC6N,GAAK,EAAIyjB,EAAGtxB,GAAK,EAAIuxB,EAAGvxB,GAAK,EAAIi2B,EAAGj2B,GAAK,EAAIw/B,EAAGx/B,GAChDoO,EAAI,EAAImjB,EAAGvxB,GAAK,EAAIsxB,EAAGtxB,GACvByH,GAAK,EAIL2G,GAAK,EAEK,KAJVP,GAAK,IAIgB,IAANpG,IACE,IAANoG,GACThG,GAAKuG,EAAI3G,GAED,GAAKI,EAAI,GACfohC,EAAOjpC,GAAGuB,KAAKN,KAAK+/D,WAAWn5D,EAAGypB,EAAIC,EAAI0E,EAAIuJ,EAAIx/B,KAGpD+gE,EAAOt5D,EAAIA,EAAI,EAAI2G,EAAIP,IAEX,KACV0X,IAAO9d,EAAIxD,OAAO88D,KAAU,EAAIlzD,IACvB,GAAK0X,EAAK,GAAG0jB,EAAOjpC,GAAGuB,KAAKN,KAAK+/D,WAAWz7C,EAAI+L,EAAIC,EAAI0E,EAAIuJ,EAAIx/B,KACzEigC,IAAOx4B,EAAIxD,OAAO88D,KAAU,EAAIlzD,IACvB,GAAKoyB,EAAK,GAAGgJ,EAAOjpC,GAAGuB,KAAKN,KAAK+/D,WAAW/gC,EAAI3O,EAAIC,EAAI0E,EAAIuJ,EAAIx/B,MAK/EiB,KAAK0/D,iBAAiB7kE,KAAOyI,MAAMtB,MAAM,KAAMgmC,EAAO,IACtDhoC,KAAK0/D,iBAAiBtlE,IAAMkJ,MAAMtB,MAAM,KAAMgmC,EAAO,IACrDhoC,KAAK0/D,iBAAiB/7B,MAAQvgC,MAAMpB,MAAM,KAAMgmC,EAAO,IACvDhoC,KAAK0/D,iBAAiBz3B,OAAS7kC,MAAMpB,MAAM,KAAMgmC,EAAO,GAC1D,EAEAiwB,cAAc94D,UAAU4gE,WAAa,SAAUn5D,EAAGypB,EAAIC,EAAI0E,EAAIuJ,EAAIx/B,GAChE,OAAO+D,MAAM,EAAI8D,EAAG,GAAKypB,EAAGtxB,GAAK,EAAI+D,MAAM,EAAI8D,EAAG,GAAKA,EAAI0pB,EAAGvxB,GAAK,GAAK,EAAI6H,GAAK9D,MAAM8D,EAAG,GAAKouB,EAAGj2B,GAAK+D,MAAM8D,EAAG,GAAK23B,EAAGx/B,EAC1H,EAEAk5D,cAAc94D,UAAU6gE,qBAAuB,SAAU/sB,EAAW/T,GAClE,IAAIngC,EACAE,EAAMg0C,EAAU56C,OAEpB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBk0C,EAAUl0C,IAAMk0C,EAAUl0C,GAAG0pB,GAC/BzoB,KAAKk/D,0BAA0BjsB,EAAUl0C,GAAImgC,GACpC+T,EAAUl0C,IAAMk0C,EAAUl0C,GAAGwM,GACtCvL,KAAKggE,qBAAqB/sB,EAAUl0C,GAAGwM,GAAI2zB,GAClC+T,EAAUl0C,IAAMk0C,EAAUl0C,GAAGnK,OAASq+C,EAAUl0C,GAAG+pC,GAC5D9oC,KAAKigE,wBAAwBhtB,EAAUl0C,GAAG+pC,EAAG5J,EAGnD,EAEA+4B,cAAc94D,UAAU8gE,wBAA0B,SAAUC,EAAehhC,GACzE,IAAIpkC,EAAQ,EAEZ,GAAIolE,EAAc/4C,UAAW,CAC3B,IAAK,IAAIpoB,EAAI,EAAGA,EAAImhE,EAAc/4C,UAAU9uB,OAAQ0G,GAAK,EAAG,CAC1D,IAAIohE,EAAMD,EAAc/4C,UAAUpoB,GAAGqH,EAEjC+5D,EAAMrlE,IACRA,EAAQqlE,EAEZ,CAEArlE,GAASolE,EAAc50C,IACzB,MACExwB,EAAQolE,EAAc75D,EAAI65D,EAAc50C,KAG1C4T,EAAYtkC,GAAKE,EACjBokC,EAAYygC,MAAQ7kE,EACpBokC,EAAYnkC,GAAKD,EACjBokC,EAAY0gC,MAAQ9kE,CACtB,EAEAm9D,cAAc94D,UAAUihE,mBAAqB,SAAUnhC,GACrD,OAAOj/B,KAAKm4D,YAAYv9D,GAAKqkC,EAAIrkC,GAAKoF,KAAKm4D,YAAYp9D,GAAKkkC,EAAIlkC,GAAKiF,KAAKm4D,YAAYr9D,MAAQkF,KAAKm4D,YAAYv9D,GAAKqkC,EAAIrkC,EAAIqkC,EAAInkC,OAASkF,KAAKm4D,YAAY99D,OAAS2F,KAAKm4D,YAAYp9D,GAAKkkC,EAAIlkC,EAAIkkC,EAAI5kC,MACvM,EAEA49D,cAAc94D,UAAU+9C,mBAAqB,WAG3C,GAFAl9C,KAAK++D,qBAEA/+D,KAAKivC,SAAWjvC,KAAK4rB,eAAiB5rB,KAAKurB,MAAO,CACrD,IAAIs0C,EAAkB7/D,KAAK6/D,gBACvBx8D,EAAM,OASV,GARAw8D,EAAgBjlE,EAAIyI,EACpBw8D,EAAgBF,MAAQt8D,EACxBw8D,EAAgB9kE,EAAIsI,EACpBw8D,EAAgBD,MAAQv8D,EACxBrD,KAAKggE,qBAAqBhgE,KAAKizC,UAAW4sB,GAC1CA,EAAgB/kE,MAAQ+kE,EAAgBF,KAAOE,EAAgBjlE,EAAI,EAAIilE,EAAgBF,KAAOE,EAAgBjlE,EAC9GilE,EAAgBxlE,OAASwlE,EAAgBD,KAAOC,EAAgB9kE,EAAI,EAAI8kE,EAAgBD,KAAOC,EAAgB9kE,EAE3GiF,KAAKogE,mBAAmBP,GAC1B,OAGF,IAAIQ,GAAU,EAcd,GAZIrgE,KAAKm4D,YAAYrvB,IAAM+2B,EAAgB/kE,QACzCkF,KAAKm4D,YAAYrvB,EAAI+2B,EAAgB/kE,MACrCkF,KAAKg/D,UAAU9hD,aAAa,QAAS2iD,EAAgB/kE,OACrDulE,GAAU,GAGRrgE,KAAKm4D,YAAYhyD,IAAM05D,EAAgBxlE,SACzC2F,KAAKm4D,YAAYhyD,EAAI05D,EAAgBxlE,OACrC2F,KAAKg/D,UAAU9hD,aAAa,SAAU2iD,EAAgBxlE,QACtDgmE,GAAU,GAGRA,GAAWrgE,KAAKm4D,YAAYv9D,IAAMilE,EAAgBjlE,GAAKoF,KAAKm4D,YAAYp9D,IAAM8kE,EAAgB9kE,EAAG,CACnGiF,KAAKm4D,YAAYrvB,EAAI+2B,EAAgB/kE,MACrCkF,KAAKm4D,YAAYhyD,EAAI05D,EAAgBxlE,OACrC2F,KAAKm4D,YAAYv9D,EAAIilE,EAAgBjlE,EACrCoF,KAAKm4D,YAAYp9D,EAAI8kE,EAAgB9kE,EACrCiF,KAAKg/D,UAAU9hD,aAAa,UAAWld,KAAKm4D,YAAYv9D,EAAI,IAAMoF,KAAKm4D,YAAYp9D,EAAI,IAAMiF,KAAKm4D,YAAYrvB,EAAI,IAAM9oC,KAAKm4D,YAAYhyD,GACzI,IAAIm6D,EAAatgE,KAAKg/D,UAAUpqE,MAC5B2rE,EAAiB,aAAevgE,KAAKm4D,YAAYv9D,EAAI,MAAQoF,KAAKm4D,YAAYp9D,EAAI,MACtFulE,EAAWrsC,UAAYssC,EACvBD,EAAW1B,gBAAkB2B,CAC/B,CACF,CACF,EAgBA3hE,gBAAgB,CAACuyC,YAAagF,iBAAkB4hB,aAAcpd,iBAAkBvJ,aAAcwJ,qBAAsB6Q,cAAe2M,cAEnIA,aAAaj5D,UAAU89C,cAAgB,WAGrC,GAFAj9C,KAAKs4D,SAAWt4D,KAAKmyC,aAEjBnyC,KAAKs4D,SAAU,CACjBt4D,KAAK8qD,WAAa,MAClB9qD,KAAKwgE,MAAQxgE,KAAKgL,KAAKjC,KAAK+/B,EAC5B9oC,KAAKygE,MAAQzgE,KAAKgL,KAAKjC,KAAK5C,EAC5BnG,KAAKmvD,WAAWjyC,aAAa,QAASld,KAAKwgE,OAC3CxgE,KAAKmvD,WAAWjyC,aAAa,SAAUld,KAAKygE,OAC5C,IAAIl6D,EAAI4B,SAAS,KACjBnI,KAAK03C,cAAc3kC,YAAYxM,GAC/BvG,KAAKm9C,UAAY52C,CACnB,MACEvG,KAAK8qD,WAAa,OAClB9qD,KAAKm9C,UAAYn9C,KAAKwzC,aAGxBxzC,KAAKg9C,gBACP,EAEAob,aAAaj5D,UAAUqvD,aAAe,WACpC,IAAItiD,EAAelM,KAAKiqD,aAAa1G,YACrCvjD,KAAKurD,gBAAkBxpD,iBAAiBmK,EAAa0nB,EAAI1nB,EAAa0nB,EAAEv7B,OAAS,GACjF,IAAIqoE,EAAiB1gE,KAAKm9C,UAAUvoD,MAChC+rE,EAAYz0D,EAAa+2C,GAAKjjD,KAAKouD,WAAWliD,EAAa+2C,IAAM,gBACrEyd,EAAe3L,KAAO4L,EACtBD,EAAe15D,MAAQ25D,EAEnBz0D,EAAa2hC,KACf6yB,EAAe5L,OAAS90D,KAAKouD,WAAWliD,EAAa2hC,IACrD6yB,EAAeE,YAAc10D,EAAa82C,GAAK,MAGjD,IAiBIjkD,EACAE,EAlBAglC,EAAWjkC,KAAKmX,WAAWkB,YAAY61B,cAAchiC,EAAazF,GAEtE,IAAKzG,KAAKmX,WAAWkB,YAAY/L,MAI/B,GAHAo0D,EAAe/2B,SAAWz9B,EAAak4C,UAAY,KACnDsc,EAAeG,WAAa30D,EAAak4C,UAAY,KAEjDngB,EAAS4G,OACX7qC,KAAKm9C,UAAU4S,UAAY9rB,EAAS4G,WAC/B,CACL61B,EAAej3B,WAAaxF,EAAS0G,QACrC,IAAIvG,EAAUl4B,EAAak4B,QACvBD,EAASj4B,EAAai4B,OAC1Bu8B,EAAe72B,UAAY1F,EAC3Bu8B,EAAe52B,WAAa1F,CAC9B,CAKF,IAEI8sB,EACA4P,EACAC,EAJA5Z,EAAUj7C,EAAa0nB,EAC3B30B,EAAMkoD,EAAQ9uD,OAId,IACIwS,EADAuhD,EAAepsD,KAAKg5C,QAEpBgV,EAAW,GACX5/B,EAAM,EAEV,IAAKrvB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAuC3B,GAtCIiB,KAAKmX,WAAWkB,YAAY/L,OACzBtM,KAAKq4D,UAAUjqC,GAMlB8iC,EAAQlxD,KAAKq4D,UAAUjqC,KALvB8iC,EAAQ/oD,SAAS,SACX+U,aAAa,iBAAkB4gC,YAAY,IACjDoT,EAAMh0C,aAAa,kBAAmB6gC,aAAa,IACnDmT,EAAMh0C,aAAa,oBAAqB,MAKrCld,KAAKs4D,WACJt4D,KAAK2uD,UAAUvgC,GAEjB2yC,GADAD,EAAU9gE,KAAK2uD,UAAUvgC,IACT4yC,SAAS,KAEzBF,EAAUniE,UAAU,QACZ/J,MAAMisE,WAAa,GAC3BE,EAAQ54D,SAAS,QACX4K,YAAYm+C,GAClB5sD,SAASw8D,MAGH9gE,KAAKs4D,SAYfpH,EAAQlxD,KAAKq4D,UAAUjqC,GAAOpuB,KAAKq4D,UAAUjqC,GAAOjmB,SAAS,QAXzDnI,KAAK2uD,UAAUvgC,IACjB0yC,EAAU9gE,KAAK2uD,UAAUvgC,GACzB8iC,EAAQlxD,KAAKq4D,UAAUjqC,KAGvB9pB,SADAw8D,EAAUniE,UAAU,SAGpB2F,SADA4sD,EAAQvyD,UAAU,SAElBmiE,EAAQ/tD,YAAYm+C,IAOpBlxD,KAAKmX,WAAWkB,YAAY/L,MAAO,CACrC,IACIuX,EADAtX,EAAWvM,KAAKmX,WAAWkB,YAAYy1B,YAAY5hC,EAAam4C,UAAUtlD,GAAIklC,EAASE,OAAQnkC,KAAKmX,WAAWkB,YAAY61B,cAAchiC,EAAazF,GAAGkkC,SAkB7J,GAdE9mB,EADEtX,EACUA,EAASxD,KAET,KAGdqjD,EAAar8B,QAETlM,GAAaA,EAAUhZ,QAAUgZ,EAAUhZ,OAAOxS,SACpDwS,EAASgZ,EAAUhZ,OAAO,GAAGU,GAC7B6gD,EAAa34B,MAAMvnB,EAAak4C,UAAY,IAAKl4C,EAAak4C,UAAY,KAC1E4J,EAAWhuD,KAAK+tD,gBAAgB3B,EAAcvhD,GAC9CqmD,EAAMh0C,aAAa,IAAK8wC,IAGrBhuD,KAAKs4D,SAsBRt4D,KAAKm9C,UAAUpqC,YAAYm+C,OAtBT,CAGlB,GAFAlxD,KAAKm9C,UAAUpqC,YAAY+tD,GAEvBj9C,GAAaA,EAAUhZ,OAAQ,CAEjCxO,SAAS8gB,KAAKpK,YAAYguD,GAC1B,IAAI7hC,EAAc6hC,EAAMxvD,UACxBwvD,EAAM7jD,aAAa,QAASgiB,EAAYpkC,MAAQ,GAChDimE,EAAM7jD,aAAa,SAAUgiB,EAAY7kC,OAAS,GAClD0mE,EAAM7jD,aAAa,UAAWgiB,EAAYtkC,EAAI,EAAI,KAAOskC,EAAYnkC,EAAI,GAAK,KAAOmkC,EAAYpkC,MAAQ,GAAK,KAAOokC,EAAY7kC,OAAS,IAC1I,IAAI4mE,EAAaF,EAAMnsE,MACnBssE,EAAmB,cAAgBhiC,EAAYtkC,EAAI,GAAK,OAASskC,EAAYnkC,EAAI,GAAK,MAC1FkmE,EAAWhtC,UAAYitC,EACvBD,EAAWrC,gBAAkBsC,EAC7B/Z,EAAQpoD,GAAGolD,QAAUjlB,EAAYnkC,EAAI,CACvC,MACEgmE,EAAM7jD,aAAa,QAAS,GAC5B6jD,EAAM7jD,aAAa,SAAU,GAG/B4jD,EAAQ/tD,YAAYguD,EACtB,CAGF,MAIE,GAHA7P,EAAMtmB,YAAcuc,EAAQpoD,GAAG8E,IAC/BqtD,EAAMt+C,eAAe,uCAAwC,YAAa,YAErE5S,KAAKs4D,SAQRt4D,KAAKm9C,UAAUpqC,YAAYm+C,OART,CAClBlxD,KAAKm9C,UAAUpqC,YAAY+tD,GAE3B,IAAIK,EAASjQ,EAAMt8D,MACfwsE,EAAmB,kBAAoBl1D,EAAak4C,UAAY,IAAM,QAC1E+c,EAAOltC,UAAYmtC,EACnBD,EAAOvC,gBAAkBwC,CAC3B,CAMGphE,KAAKs4D,SAGRt4D,KAAK2uD,UAAUvgC,GAAO8iC,EAFtBlxD,KAAK2uD,UAAUvgC,GAAO0yC,EAKxB9gE,KAAK2uD,UAAUvgC,GAAKx5B,MAAM4P,QAAU,QACpCxE,KAAKq4D,UAAUjqC,GAAO8iC,EACtB9iC,GAAO,CACT,CAEA,KAAOA,EAAMpuB,KAAK2uD,UAAUt2D,QAC1B2H,KAAK2uD,UAAUvgC,GAAKx5B,MAAM4P,QAAU,OACpC4pB,GAAO,CAEX,EAEAgqC,aAAaj5D,UAAU+9C,mBAAqB,WAE1C,IAAImkB,EAEJ,GAHArhE,KAAKuuD,eAGDvuD,KAAK+I,KAAKynD,YAAa,CACzB,IAAKxwD,KAAK4rB,gBAAkB5rB,KAAKwrD,mBAC/B,OAGF,GAAIxrD,KAAKs4D,UAAYt4D,KAAK2vC,eAAeiI,QAAS,CAEhD53C,KAAKmvD,WAAWjyC,aAAa,WAAYld,KAAK2vC,eAAeC,MAAMlpC,EAAEL,EAAE,GAAK,KAAOrG,KAAK2vC,eAAeC,MAAMlpC,EAAEL,EAAE,GAAK,IAAMrG,KAAKwgE,MAAQ,IAAMxgE,KAAKygE,OACpJY,EAAWrhE,KAAKmvD,WAAWv6D,MAC3B,IAAI0sE,EAAc,cAAgBthE,KAAK2vC,eAAeC,MAAMlpC,EAAEL,EAAE,GAAK,OAASrG,KAAK2vC,eAAeC,MAAMlpC,EAAEL,EAAE,GAAK,MACjHg7D,EAASptC,UAAYqtC,EACrBD,EAASzC,gBAAkB0C,CAC7B,CACF,CAIA,GAFAthE,KAAK8tD,aAAanC,YAAY3rD,KAAKiqD,aAAa1G,YAAavjD,KAAKwrD,oBAE7DxrD,KAAKwrD,oBAAuBxrD,KAAK8tD,aAAatC,mBAAnD,CAIA,IAAIzsD,EACAE,EAKA6yD,EACAC,EACAwP,EANAl5B,EAAQ,EACRkjB,EAAkBvrD,KAAK8tD,aAAavC,gBACpCpE,EAAUnnD,KAAKiqD,aAAa1G,YAAY3vB,EAM5C,IALA30B,EAAMkoD,EAAQ9uD,OAKT0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBooD,EAAQpoD,GAAG8oB,EACbwgB,GAAS,GAET0pB,EAAW/xD,KAAK2uD,UAAU5vD,GAC1BwiE,EAAWvhE,KAAKq4D,UAAUt5D,GAC1B+yD,EAAiBvG,EAAgBljB,GACjCA,GAAS,EAELypB,EAAevmC,KAAKsI,IACjB7zB,KAAKs4D,SAIRvG,EAAS70C,aAAa,YAAa40C,EAAej+B,IAHlDk+B,EAASn9D,MAAMgqE,gBAAkB9M,EAAej+B,EAChDk+B,EAASn9D,MAAMq/B,UAAY69B,EAAej+B,IAO9Ck+B,EAASn9D,MAAM4jD,QAAUsZ,EAAetmD,EAEpCsmD,EAAe9O,IAAM8O,EAAevmC,KAAKy3B,IAC3Cue,EAASrkD,aAAa,eAAgB40C,EAAe9O,IAGnD8O,EAAejkB,IAAMikB,EAAevmC,KAAKsiB,IAC3C0zB,EAASrkD,aAAa,SAAU40C,EAAejkB,IAG7CikB,EAAe7O,IAAM6O,EAAevmC,KAAK03B,KAC3Cse,EAASrkD,aAAa,OAAQ40C,EAAe7O,IAC7Cse,EAAS3sE,MAAMoS,MAAQ8qD,EAAe7O,KAK5C,GAAIjjD,KAAKm9C,UAAU5rC,UAAYvR,KAAKivC,SAAWjvC,KAAK4rB,eAAiB5rB,KAAKurB,MAAO,CAC/E,IAAI2T,EAAcl/B,KAAKm9C,UAAU5rC,UAcjC,GAZIvR,KAAKm4D,YAAYrvB,IAAM5J,EAAYpkC,QACrCkF,KAAKm4D,YAAYrvB,EAAI5J,EAAYpkC,MACjCkF,KAAKmvD,WAAWjyC,aAAa,QAASgiB,EAAYpkC,QAGhDkF,KAAKm4D,YAAYhyD,IAAM+4B,EAAY7kC,SACrC2F,KAAKm4D,YAAYhyD,EAAI+4B,EAAY7kC,OACjC2F,KAAKmvD,WAAWjyC,aAAa,SAAUgiB,EAAY7kC,SAKjD2F,KAAKm4D,YAAYrvB,IAAM5J,EAAYpkC,MAAQ0mE,GAAcxhE,KAAKm4D,YAAYhyD,IAAM+4B,EAAY7kC,OAASmnE,GAAcxhE,KAAKm4D,YAAYv9D,IAAMskC,EAAYtkC,EAF7I,GAE2JoF,KAAKm4D,YAAYp9D,IAAMmkC,EAAYnkC,EAF9L,EAE0M,CACrNiF,KAAKm4D,YAAYrvB,EAAI5J,EAAYpkC,MAAQ0mE,EACzCxhE,KAAKm4D,YAAYhyD,EAAI+4B,EAAY7kC,OAASmnE,EAC1CxhE,KAAKm4D,YAAYv9D,EAAIskC,EAAYtkC,EALtB,EAMXoF,KAAKm4D,YAAYp9D,EAAImkC,EAAYnkC,EANtB,EAOXiF,KAAKmvD,WAAWjyC,aAAa,UAAWld,KAAKm4D,YAAYv9D,EAAI,IAAMoF,KAAKm4D,YAAYp9D,EAAI,IAAMiF,KAAKm4D,YAAYrvB,EAAI,IAAM9oC,KAAKm4D,YAAYhyD,GAC1Ik7D,EAAWrhE,KAAKmvD,WAAWv6D,MAC3B,IAAI6sE,EAAe,aAAezhE,KAAKm4D,YAAYv9D,EAAI,MAAQoF,KAAKm4D,YAAYp9D,EAAI,MACpFsmE,EAASptC,UAAYwtC,EACrBJ,EAASzC,gBAAkB6C,CAC7B,CACF,CA1EA,CA2EF,EA6CA7iE,gBAAgB,CAACuyC,YAAaC,aAAcuJ,kBAAmB4d,gBAE/DA,eAAep5D,UAAUuiE,MAAQ,WAC/B,IAAI3iE,EAEAiM,EACA22D,EACAvE,EAHAn+D,EAAMe,KAAKgL,KAAK4tD,eAAevgE,OAKnC,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAIxB,GAAkB,QAFlBiM,EAAOhL,KAAKgL,KAAK4tD,eAAe75D,IAEvBjD,KAAe,CACtB6lE,EAAmB32D,EAAK42D,gBAAgBhtE,MACxCwoE,EAAiBpyD,EAAKxS,UAAU5D,MAChC,IAAIitE,EAAc7hE,KAAKw4D,GAAGnyD,EAAI,KAC1BsJ,EAAS,cACTsmB,EAAS,4CACb0rC,EAAiBE,YAAcA,EAC/BF,EAAiBG,kBAAoBD,EACrCzE,EAAe34D,gBAAkBkL,EACjCytD,EAAeC,mBAAqB1tD,EACpCytD,EAAe14D,sBAAwBiL,EACvCgyD,EAAiB1tC,UAAYgC,EAC7B0rC,EAAiB/C,gBAAkB3oC,CACrC,CAEJ,EAEAsiC,eAAep5D,UAAU65D,eAAiB,WAAa,EAEvDT,eAAep5D,UAAUkc,KAAO,WAAa,EAE7Ck9C,eAAep5D,UAAU4a,YAAc,WACrC,IACIhb,EACAE,EAFAssB,EAAOvrB,KAAK4rB,cAIhB,GAAI5rB,KAAKu1C,UAGP,IAFAt2C,EAAMe,KAAKu1C,UAAUl9C,OAEhB0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBwsB,EAAOvrB,KAAKu1C,UAAUx2C,GAAG4wC,eAAeC,MAAMrkB,MAAQA,EAI1D,GAAIA,GAAQvrB,KAAKw4D,GAAGjtC,MAAQvrB,KAAK0G,GAAK1G,KAAK0G,EAAE6kB,MAAQvrB,KAAK48B,KAAO58B,KAAK48B,GAAGrR,MAAQvrB,KAAK68B,GAAGtR,MAAQvrB,KAAK88B,GAAGvR,OAASvrB,KAAK+8B,GAAGxR,MAAQvrB,KAAKg9B,GAAGzR,MAAQvrB,KAAKi9B,GAAG1R,MAAQvrB,KAAKkxB,GAAG3F,MAAQvrB,KAAK4M,GAAK5M,KAAK4M,EAAE2e,KAAM,CAGvM,GAFAvrB,KAAKo9B,IAAIrN,QAEL/vB,KAAKu1C,UAGP,IAAKx2C,EAFLE,EAAMe,KAAKu1C,UAAUl9C,OAAS,EAEhB0G,GAAK,EAAGA,GAAK,EAAG,CAC5B,IAAIgjE,EAAU/hE,KAAKu1C,UAAUx2C,GAAG4wC,eAAeC,MAC/C5vC,KAAKo9B,IAAItJ,WAAWiuC,EAAQr7D,EAAEL,EAAE,IAAK07D,EAAQr7D,EAAEL,EAAE,GAAI07D,EAAQr7D,EAAEL,EAAE,IACjErG,KAAKo9B,IAAIlK,SAAS6uC,EAAQ7wC,GAAG7qB,EAAE,IAAI8sB,SAAS4uC,EAAQ7wC,GAAG7qB,EAAE,IAAI+sB,QAAQ2uC,EAAQ7wC,GAAG7qB,EAAE,IAClFrG,KAAKo9B,IAAIlK,SAAS6uC,EAAQhlC,GAAG12B,GAAG8sB,SAAS4uC,EAAQ/kC,GAAG32B,GAAG+sB,QAAQ2uC,EAAQ9kC,GAAG52B,GAC1ErG,KAAKo9B,IAAI3J,MAAM,EAAIsuC,EAAQ37D,EAAEC,EAAE,GAAI,EAAI07D,EAAQ37D,EAAEC,EAAE,GAAI,EAAI07D,EAAQ37D,EAAEC,EAAE,IACvErG,KAAKo9B,IAAItJ,UAAUiuC,EAAQn1D,EAAEvG,EAAE,GAAI07D,EAAQn1D,EAAEvG,EAAE,GAAI07D,EAAQn1D,EAAEvG,EAAE,GACjE,CASF,GANIrG,KAAK0G,EACP1G,KAAKo9B,IAAItJ,WAAW9zB,KAAK0G,EAAEL,EAAE,IAAKrG,KAAK0G,EAAEL,EAAE,GAAIrG,KAAK0G,EAAEL,EAAE,IAExDrG,KAAKo9B,IAAItJ,WAAW9zB,KAAK48B,GAAGv2B,GAAIrG,KAAK68B,GAAGx2B,EAAGrG,KAAK88B,GAAGz2B,GAGjDrG,KAAK4M,EAAG,CACV,IAAIo1D,EAGFA,EADEhiE,KAAK0G,EACM,CAAC1G,KAAK0G,EAAEL,EAAE,GAAKrG,KAAK4M,EAAEvG,EAAE,GAAIrG,KAAK0G,EAAEL,EAAE,GAAKrG,KAAK4M,EAAEvG,EAAE,GAAIrG,KAAK0G,EAAEL,EAAE,GAAKrG,KAAK4M,EAAEvG,EAAE,IAE9E,CAACrG,KAAK48B,GAAGv2B,EAAIrG,KAAK4M,EAAEvG,EAAE,GAAIrG,KAAK68B,GAAGx2B,EAAIrG,KAAK4M,EAAEvG,EAAE,GAAIrG,KAAK88B,GAAGz2B,EAAIrG,KAAK4M,EAAEvG,EAAE,IAGvF,IAAI47D,EAAMhmE,KAAKgH,KAAKhH,KAAK8G,IAAIi/D,EAAW,GAAI,GAAK/lE,KAAK8G,IAAIi/D,EAAW,GAAI,GAAK/lE,KAAK8G,IAAIi/D,EAAW,GAAI,IAElGE,EAAU,CAACF,EAAW,GAAKC,EAAKD,EAAW,GAAKC,EAAKD,EAAW,GAAKC,GACrEE,EAAiBlmE,KAAKgH,KAAKi/D,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,IAC1EE,EAAanmE,KAAKkuB,MAAM+3C,EAAQ,GAAIC,GACpCE,EAAapmE,KAAKkuB,MAAM+3C,EAAQ,IAAKA,EAAQ,IACjDliE,KAAKo9B,IAAIjK,QAAQkvC,GAAYnvC,SAASkvC,EACxC,CAEApiE,KAAKo9B,IAAIlK,SAASlzB,KAAK+8B,GAAG12B,GAAG8sB,SAASnzB,KAAKg9B,GAAG32B,GAAG+sB,QAAQpzB,KAAKi9B,GAAG52B,GACjErG,KAAKo9B,IAAIlK,SAASlzB,KAAKkxB,GAAG7qB,EAAE,IAAI8sB,SAASnzB,KAAKkxB,GAAG7qB,EAAE,IAAI+sB,QAAQpzB,KAAKkxB,GAAG7qB,EAAE,IACzErG,KAAKo9B,IAAItJ,UAAU9zB,KAAKmX,WAAW6+B,SAASlN,EAAI,EAAG9oC,KAAKmX,WAAW6+B,SAAS7vC,EAAI,EAAG,GACnFnG,KAAKo9B,IAAItJ,UAAU,EAAG,EAAG9zB,KAAKw4D,GAAGnyD,GACjC,IAAIi8D,GAAoBtiE,KAAKy4D,SAASpiC,OAAOr2B,KAAKo9B,KAElD,IAAKklC,GAAoBtiE,KAAKw4D,GAAGjtC,OAASvrB,KAAKgL,KAAK4tD,eAAgB,CAElE,IAAI5tD,EACA22D,EACAvE,EAEJ,IALAn+D,EAAMe,KAAKgL,KAAK4tD,eAAevgE,OAK1B0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAGxB,GAAkB,QAFlBiM,EAAOhL,KAAKgL,KAAK4tD,eAAe75D,IAEvBjD,KAAe,CACtB,GAAIwmE,EAAkB,CACpB,IAAIC,EAAWviE,KAAKo9B,IAAIzF,SACxBylC,EAAiBpyD,EAAKxS,UAAU5D,OACjBq/B,UAAYsuC,EAC3BnF,EAAewB,gBAAkB2D,CACnC,CAEIviE,KAAKw4D,GAAGjtC,QACVo2C,EAAmB32D,EAAK42D,gBAAgBhtE,OACvBitE,YAAc7hE,KAAKw4D,GAAGnyD,EAAI,KAC3Cs7D,EAAiBG,kBAAoB9hE,KAAKw4D,GAAGnyD,EAAI,KAErD,CAGFrG,KAAKo9B,IAAI7O,MAAMvuB,KAAKy4D,SACtB,CACF,CAEAz4D,KAAK4rB,eAAgB,CACvB,EAEA2sC,eAAep5D,UAAU8V,aAAe,SAAUu6B,GAChDxvC,KAAK4zC,kBAAkBpE,GAAK,EAC9B,EAEA+oB,eAAep5D,UAAUnH,QAAU,WAAa,EAEhDugE,eAAep5D,UAAU40C,eAAiB,WACxC,OAAO,IACT,EAOAn1C,gBAAgB,CAACuyC,YAAagF,iBAAkB4hB,aAAcC,cAAerd,iBAAkBvJ,aAAcxC,mBAAoB8pB,eAEjIA,cAAcv5D,UAAU89C,cAAgB,WACtC,IAAIt8C,EAAYX,KAAKmX,WAAWrG,cAAc9Q,KAAK+Q,WAC/CK,EAAM,IAAIoxD,MAEVxiE,KAAK+I,KAAKqB,SACZpK,KAAKyiE,UAAYt6D,SAAS,SAC1BnI,KAAKyiE,UAAUvlD,aAAa,QAASld,KAAK+Q,UAAU+3B,EAAI,MACxD9oC,KAAKyiE,UAAUvlD,aAAa,SAAUld,KAAK+Q,UAAU5K,EAAI,MACzDnG,KAAKyiE,UAAU7vD,eAAe,+BAAgC,OAAQjS,GACtEX,KAAKwzC,aAAazgC,YAAY/S,KAAKyiE,WACnCziE,KAAKuzC,YAAYr2B,aAAa,QAASld,KAAK+Q,UAAU+3B,GACtD9oC,KAAKuzC,YAAYr2B,aAAa,SAAUld,KAAK+Q,UAAU5K,IAEvDnG,KAAKwzC,aAAazgC,YAAY3B,GAGhCA,EAAIsB,YAAc,YAClBtB,EAAIvQ,IAAMF,EAENX,KAAK+I,KAAK6yC,IACZ57C,KAAKuzC,YAAYr2B,aAAa,KAAMld,KAAK+I,KAAK6yC,GAElD,EA+BAh9C,gBAAgB,CAACqzC,cAAe0mB,oBAChCA,mBAAmBx5D,UAAUm1C,UAAY4a,YAAY/vD,UAAUm1C,UAE/DqkB,mBAAmBx5D,UAAUo1C,qBAAuB,WAClD,KAAOv0C,KAAK21C,gBAAgBt9C,QACZ2H,KAAK21C,gBAAgBla,MAC3BuhB,gBAEZ,EAEA2b,mBAAmBx5D,UAAU8yD,mBAAqB,SAAU1tD,EAAS7H,GACnE,IAAIgmE,EAAgBn+D,EAAQwvC,iBAE5B,GAAK2uB,EAAL,CAIA,IAAIjuB,EAAQz0C,KAAK4J,OAAOlN,GAExB,GAAK+3C,EAAMkuB,KAAQ3iE,KAAKivD,WA4BtBjvD,KAAK4iE,iBAAiBF,EAAehmE,QA3BrC,GAAIsD,KAAK44D,eACP54D,KAAK4iE,iBAAiBF,EAAehmE,OAChC,CAML,IALA,IACImmE,EACAC,EAFA/jE,EAAI,EAKDA,EAAIrC,GACLsD,KAAKwlC,SAASzmC,KAA2B,IAArBiB,KAAKwlC,SAASzmC,IAAeiB,KAAKwlC,SAASzmC,GAAGg1C,iBACpE+uB,EAAY9iE,KAAKwlC,SAASzmC,GAE1B8jE,GADgB7iE,KAAK4J,OAAO7K,GAAG4jE,IAAM3iE,KAAK+iE,wBAAwBhkE,GAAK+jE,EAAU/uB,mBAC/C8uB,GAGpC9jE,GAAK,EAGH8jE,EACGpuB,EAAMkuB,KAAQ3iE,KAAKivD,YACtBjvD,KAAKwzC,aAAa8e,aAAaoQ,EAAeG,GAEtCpuB,EAAMkuB,KAAQ3iE,KAAKivD,YAC7BjvD,KAAKwzC,aAAazgC,YAAY2vD,EAElC,CA9BF,CAkCF,EAEA/J,mBAAmBx5D,UAAU21C,YAAc,SAAU/rC,GACnD,OAAK/I,KAAKivD,WAIH,IAAIgJ,cAAclvD,EAAM/I,KAAKmX,WAAYnX,MAHvC,IAAI4iD,gBAAgB75C,EAAM/I,KAAKmX,WAAYnX,KAItD,EAEA24D,mBAAmBx5D,UAAU41C,WAAa,SAAUhsC,GAClD,OAAK/I,KAAKivD,WAIH,IAAImJ,aAAarvD,EAAM/I,KAAKmX,WAAYnX,MAHtC,IAAI0uD,qBAAqB3lD,EAAM/I,KAAKmX,WAAYnX,KAI3D,EAEA24D,mBAAmBx5D,UAAU61C,aAAe,SAAUjsC,GAEpD,OADA/I,KAAK64D,OAAS,IAAIN,eAAexvD,EAAM/I,KAAKmX,WAAYnX,MACjDA,KAAK64D,MACd,EAEAF,mBAAmBx5D,UAAUu1C,YAAc,SAAU3rC,GACnD,OAAK/I,KAAKivD,WAIH,IAAIyJ,cAAc3vD,EAAM/I,KAAKmX,WAAYnX,MAHvC,IAAI66C,cAAc9xC,EAAM/I,KAAKmX,WAAYnX,KAIpD,EAEA24D,mBAAmBx5D,UAAUy1C,YAAc,SAAU7rC,GACnD,OAAK/I,KAAKivD,WAIH,IAAI+I,cAAcjvD,EAAM/I,KAAKmX,WAAYnX,MAHvC,IAAI4uD,cAAc7lD,EAAM/I,KAAKmX,WAAYnX,KAIpD,EAEA24D,mBAAmBx5D,UAAU01C,WAAaqa,YAAY/vD,UAAU01C,WAEhE8jB,mBAAmBx5D,UAAU4jE,wBAA0B,SAAUrmE,GAI/D,IAHA,IAAIqC,EAAI,EACJE,EAAMe,KAAK44D,eAAevgE,OAEvB0G,EAAIE,GAAK,CACd,GAAIe,KAAK44D,eAAe75D,GAAGikE,UAAYtmE,GAAOsD,KAAK44D,eAAe75D,GAAGkkE,QAAUvmE,EAC7E,OAAOsD,KAAK44D,eAAe75D,GAAG6iE,gBAGhC7iE,GAAK,CACP,CAEA,OAAO,IACT,EAEA45D,mBAAmBx5D,UAAU+jE,sBAAwB,SAAUxmE,EAAKZ,GAClE,IACIlH,EACAwoE,EAFAwE,EAAkBjjE,UAAU,OAGhC2F,SAASs9D,GACT,IAAIppE,EAAYmG,UAAU,OAG1B,GAFA2F,SAAS9L,GAEI,OAATsD,EAAe,EACjBlH,EAAQgtE,EAAgBhtE,OAClBkG,MAAQkF,KAAKmX,WAAW6+B,SAASlN,EAAI,KAC3Cl0C,EAAMyF,OAAS2F,KAAKmX,WAAW6+B,SAAS7vC,EAAI,KAC5C,IAAI88B,EAAS,UACbruC,EAAM8P,sBAAwBu+B,EAC9BruC,EAAMyoE,mBAAqBp6B,EAC3BruC,EAAM6P,gBAAkBw+B,EAExB,IAAIhN,EAAS,6CADbmnC,EAAiB5kE,EAAU5D,OAEZq/B,UAAYgC,EAC3BmnC,EAAewB,gBAAkB3oC,CACnC,CAEA2rC,EAAgB7uD,YAAYva,GAE5B,IAAI2qE,EAAsB,CACxB3qE,UAAWA,EACXopE,gBAAiBA,EACjBoB,SAAUtmE,EACVumE,OAAQvmE,EACRZ,KAAMA,GAGR,OADAkE,KAAK44D,eAAet4D,KAAK6iE,GAClBA,CACT,EAEAxK,mBAAmBx5D,UAAUikE,kBAAoB,WAC/C,IAAIrkE,EAEAskE,EADApkE,EAAMe,KAAK4J,OAAOvR,OAElBirE,EAAmB,GAEvB,IAAKvkE,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBiB,KAAK4J,OAAO7K,GAAG4jE,KAA6B,IAAtB3iE,KAAK4J,OAAO7K,GAAG0L,IACd,OAArB64D,IACFA,EAAmB,KACnBD,EAA0BrjE,KAAKkjE,sBAAsBnkE,EAAG,OAG1DskE,EAAwBJ,OAAShnE,KAAKoH,IAAIggE,EAAwBJ,OAAQlkE,KAEjD,OAArBukE,IACFA,EAAmB,KACnBD,EAA0BrjE,KAAKkjE,sBAAsBnkE,EAAG,OAG1DskE,EAAwBJ,OAAShnE,KAAKoH,IAAIggE,EAAwBJ,OAAQlkE,IAM9E,IAAKA,GAFLE,EAAMe,KAAK44D,eAAevgE,QAEX,EAAG0G,GAAK,EAAGA,GAAK,EAC7BiB,KAAKujE,YAAYxwD,YAAY/S,KAAK44D,eAAe75D,GAAG6iE,gBAExD,EAEAjJ,mBAAmBx5D,UAAUyjE,iBAAmB,SAAUxmD,EAAM1f,GAI9D,IAHA,IAAIqC,EAAI,EACJE,EAAMe,KAAK44D,eAAevgE,OAEvB0G,EAAIE,GAAK,CACd,GAAIvC,GAAOsD,KAAK44D,eAAe75D,GAAGkkE,OAAQ,CAIxC,IAHA,IACI5Q,EADAtoD,EAAI/J,KAAK44D,eAAe75D,GAAGikE,SAGxBj5D,EAAIrN,GACLsD,KAAKwlC,SAASz7B,IAAM/J,KAAKwlC,SAASz7B,GAAGgqC,iBACvCse,EAAcryD,KAAKwlC,SAASz7B,GAAGgqC,kBAGjChqC,GAAK,EAGHsoD,EACFryD,KAAK44D,eAAe75D,GAAGvG,UAAU85D,aAAal2C,EAAMi2C,GAEpDryD,KAAK44D,eAAe75D,GAAGvG,UAAUua,YAAYqJ,GAG/C,KACF,CAEArd,GAAK,CACP,CACF,EAEA45D,mBAAmBx5D,UAAUwX,gBAAkB,SAAUsC,GACvD,IAAIsqD,EAAc5kE,UAAU,OACxBtD,EAAU2E,KAAKhG,cAAcqB,QAC7BzG,EAAQ2uE,EAAY3uE,MACxBA,EAAMkG,MAAQme,EAAS6vB,EAAI,KAC3Bl0C,EAAMyF,OAAS4e,EAAS9S,EAAI,KAC5BnG,KAAKujE,YAAcA,EACnBj/D,SAASi/D,GACT3uE,EAAMiQ,eAAiB,OACvBjQ,EAAMmQ,kBAAoB,OAC1BnQ,EAAMkQ,qBAAuB,OAEzB9E,KAAK6vC,aAAakgB,WACpBwT,EAAYrmD,aAAa,QAASld,KAAK6vC,aAAakgB,WAGtD10D,EAAQ0X,YAAYwwD,GACpB3uE,EAAM4uE,SAAW,SACjB,IAAItQ,EAAM/qD,SAAS,OACnB+qD,EAAIh2C,aAAa,QAAS,KAC1Bg2C,EAAIh2C,aAAa,SAAU,KAC3B5Y,SAAS4uD,GACTlzD,KAAKujE,YAAYxwD,YAAYmgD,GAC7B,IAAI97C,EAAOjP,SAAS,QACpB+qD,EAAIngD,YAAYqE,GAChBpX,KAAK+I,KAAOkQ,EAEZjZ,KAAK81C,gBAAgB78B,EAAUi6C,GAC/BlzD,KAAKmX,WAAWC,KAAOA,EACvBpX,KAAK4J,OAASqP,EAASrP,OACvB5J,KAAKwzC,aAAexzC,KAAKujE,YACzBvjE,KAAKojE,oBACLpjE,KAAK8Z,qBACP,EAEA6+C,mBAAmBx5D,UAAUnH,QAAU,WAOrC,IAAI+G,EANAiB,KAAKhG,cAAcqB,UACrB2E,KAAKhG,cAAcqB,QAAQgiB,UAAY,IAGzCrd,KAAKhG,cAAcxB,UAAY,KAC/BwH,KAAKmX,WAAWC,KAAO,KAEvB,IAAInY,EAAMe,KAAK4J,OAAS5J,KAAK4J,OAAOvR,OAAS,EAE7C,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACpBiB,KAAKwlC,SAASzmC,IAAMiB,KAAKwlC,SAASzmC,GAAG/G,SACvCgI,KAAKwlC,SAASzmC,GAAG/G,UAIrBgI,KAAKwlC,SAASntC,OAAS,EACvB2H,KAAKmwD,WAAY,EACjBnwD,KAAKhG,cAAgB,IACvB,EAEA2+D,mBAAmBx5D,UAAU2a,oBAAsB,WACjD,IAIIwZ,EACA1C,EACAmD,EACAtpB,EAPA+yD,EAAex9D,KAAKhG,cAAcqB,QAAQ2uC,YAC1CyzB,EAAgBz9D,KAAKhG,cAAcqB,QAAQuiE,aAC3CF,EAAaF,EAAeC,EACbz9D,KAAKmX,WAAW6+B,SAASlN,EAAI9oC,KAAKmX,WAAW6+B,SAAS7vC,EAMtDu3D,GACjBpqC,EAAKkqC,EAAex9D,KAAKmX,WAAW6+B,SAASlN,EAC7ClY,EAAK4sC,EAAex9D,KAAKmX,WAAW6+B,SAASlN,EAC7C/U,EAAK,EACLtpB,GAAMgzD,EAAgBz9D,KAAKmX,WAAW6+B,SAAS7vC,GAAKq3D,EAAex9D,KAAKmX,WAAW6+B,SAASlN,IAAM,IAElGxV,EAAKmqC,EAAgBz9D,KAAKmX,WAAW6+B,SAAS7vC,EAC9CyqB,EAAK6sC,EAAgBz9D,KAAKmX,WAAW6+B,SAAS7vC,EAC9C4tB,GAAMypC,EAAex9D,KAAKmX,WAAW6+B,SAASlN,GAAK20B,EAAgBz9D,KAAKmX,WAAW6+B,SAAS7vC,IAAM,EAClGsE,EAAK,GAGP,IAAI7V,EAAQoL,KAAKujE,YAAY3uE,MAC7BA,EAAMgqE,gBAAkB,YAActrC,EAAK,YAAc1C,EAAK,gBAAkBmD,EAAK,IAAMtpB,EAAK,QAChG7V,EAAMq/B,UAAYr/B,EAAMgqE,eAC1B,EAEAjG,mBAAmBx5D,UAAU4a,YAAcm1C,YAAY/vD,UAAU4a,YAEjE4+C,mBAAmBx5D,UAAUkc,KAAO,WAClCrb,KAAKujE,YAAY3uE,MAAM4P,QAAU,MACnC,EAEAm0D,mBAAmBx5D,UAAUmc,KAAO,WAClCtb,KAAKujE,YAAY3uE,MAAM4P,QAAU,OACnC,EAEAm0D,mBAAmBx5D,UAAUsa,UAAY,WAGvC,GAFAzZ,KAAKk1C,gBAEDl1C,KAAK64D,OACP74D,KAAK64D,OAAO6I,YACP,CACL,IAEI3iE,EAFA0kE,EAASzjE,KAAKmX,WAAW6+B,SAASlN,EAClC46B,EAAU1jE,KAAKmX,WAAW6+B,SAAS7vC,EAEnClH,EAAMe,KAAK44D,eAAevgE,OAE9B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAAG,CAC3B,IAAInK,EAAQoL,KAAK44D,eAAe75D,GAAG6iE,gBAAgBhtE,MACnDA,EAAMktE,kBAAoB7lE,KAAKgH,KAAKhH,KAAK8G,IAAI0gE,EAAQ,GAAKxnE,KAAK8G,IAAI2gE,EAAS,IAAM,KAClF9uE,EAAMitE,YAAcjtE,EAAMktE,iBAC5B,CACF,CACF,EAEAnJ,mBAAmBx5D,UAAUga,wBAA0B,SAAU/M,GAC/D,IAAIrN,EACAE,EAAMmN,EAAO/T,OACbsrE,EAAoBhlE,UAAU,OAElC,IAAKI,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,GAAIqN,EAAOrN,GAAGmW,GAAI,CAChB,IAAIlK,EAAOhL,KAAK20C,WAAWvoC,EAAOrN,GAAI4kE,EAAmB3jE,KAAKmX,WAAWnM,KAAM,MAC/EA,EAAKwN,kBACLxY,KAAKmX,WAAWX,iBAAiB3B,oBAAoB7J,EACvD,CAEJ,EAcApM,gBAAgB,CAAC+5D,mBAAoB5J,aAAcgJ,cAAee,cAClEA,aAAa35D,UAAUykE,6BAA+B9K,aAAa35D,UAAUg8C,wBAE7E2d,aAAa35D,UAAUg8C,wBAA0B,WAC/Cn7C,KAAK4jE,+BAGD5jE,KAAK+I,KAAKqB,SACZpK,KAAKmvD,WAAWjyC,aAAa,QAASld,KAAK+I,KAAK+/B,GAChD9oC,KAAKmvD,WAAWjyC,aAAa,SAAUld,KAAK+I,KAAK5C,GACjDnG,KAAKq7C,mBAAqBr7C,KAAKuzC,aAE/BvzC,KAAKq7C,mBAAqBr7C,KAAKwzC,YAEnC,EAEAslB,aAAa35D,UAAUyjE,iBAAmB,SAAUxmD,EAAM1f,GAIxD,IAHA,IACI21D,EADAtoD,EAAI,EAGDA,EAAIrN,GACLsD,KAAKwlC,SAASz7B,IAAM/J,KAAKwlC,SAASz7B,GAAGgqC,iBACvCse,EAAcryD,KAAKwlC,SAASz7B,GAAGgqC,kBAGjChqC,GAAK,EAGHsoD,EACFryD,KAAKwzC,aAAa8e,aAAal2C,EAAMi2C,GAErCryD,KAAKwzC,aAAazgC,YAAYqJ,EAElC,EAEA08C,aAAa35D,UAAUw1C,WAAa,SAAU5rC,GAC5C,OAAK/I,KAAKivD,WAIH,IAAI6J,aAAa/vD,EAAM/I,KAAKmX,WAAYnX,MAHtC,IAAIgvD,eAAejmD,EAAM/I,KAAKmX,WAAYnX,KAIrD,EAgCApB,gBAAgB,CAAC+5D,oBAAqBI,gBAEtCA,eAAe55D,UAAUw1C,WAAa,SAAU5rC,GAC9C,OAAK/I,KAAKivD,WAIH,IAAI6J,aAAa/vD,EAAM/I,KAAKmX,WAAYnX,MAHtC,IAAIgvD,eAAejmD,EAAM/I,KAAKmX,WAAYnX,KAIrD,EAEA,IAAIwyC,wBACK,SAAUxnC,GACf,SAAS64D,EAAmBhuE,GAI1B,IAHA,IAAIkJ,EAAI,EACJE,EAAM+L,EAAKpB,OAAOvR,OAEf0G,EAAIE,GAAK,CACd,GAAI+L,EAAKpB,OAAO7K,GAAGiW,KAAOnf,GAAQmV,EAAKpB,OAAO7K,GAAG2oB,MAAQ7xB,EACvD,OAAOmV,EAAKw6B,SAASzmC,GAAG0zC,eAG1B1zC,GAAK,CACP,CAEA,OAAO,IACT,CAaA,OAXAK,OAAO0kE,eAAeD,EAAoB,QAAS,CACjDzsE,MAAO4T,EAAKjC,KAAKiM,KAEnB6uD,EAAmBpvB,MAAQovB,EAC3BA,EAAmBE,YAAc,EACjCF,EAAmBxpE,OAAS2Q,EAAKjC,KAAK5C,GAAK6E,EAAKmM,WAAW6+B,SAAS7vC,EACpE09D,EAAmB/oE,MAAQkQ,EAAKjC,KAAK+/B,GAAK99B,EAAKmM,WAAW6+B,SAASlN,EACnE+6B,EAAmBE,YAAc,EACjCF,EAAmBG,cAAgB,EAAIh5D,EAAKmM,WAAWtB,UACvDguD,EAAmBI,iBAAmB,EACtCJ,EAAmBK,UAAYl5D,EAAKpB,OAAOvR,OACpCwrE,CACT,EAGF,SAASM,UAAUjiE,GAAuV,OAA1OiiE,UAArD,oBAAXhiE,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBF,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOhD,UAAY,gBAAkB+C,CAAK,EAAYiiE,UAAUjiE,EAAM,CA2BjY,SAASkiE,WAAWtjD,EAAMU,GAIxB,IAaI6iD,EAbAC,EAAStkE,KACTlF,EAAQ,IAMZypE,EAAU,SAEVC,EAAahjD,EAAKze,IAAIjI,EANb,GAOL2pE,EAAejjD,EAAKze,IAAI,EALnB,IAMLygE,EAA0B,EAAfiB,EACXntB,EAAOx8C,EAAQ,EA6FnB,SAAS4pE,EAAKnvD,GACZ,IAAI3O,EACA+9D,EAASpvD,EAAIld,OACbusE,EAAK5kE,KACLjB,EAAI,EACJgL,EAAI66D,EAAG7lE,EAAI6lE,EAAG76D,EAAI,EAClB3D,EAAIw+D,EAAGC,EAAI,GAOf,IALKF,IACHpvD,EAAM,CAACovD,MAIF5lE,EAAIjE,GACTsL,EAAErH,GAAKA,IAGT,IAAKA,EAAI,EAAGA,EAAIjE,EAAOiE,IACrBqH,EAAErH,GAAKqH,EAAE2D,EAAIutC,EAAOvtC,EAAIwL,EAAIxW,EAAI4lE,IAAW/9D,EAAIR,EAAErH,KACjDqH,EAAE2D,GAAKnD,EAITg+D,EAAGr+D,EAAI,SAAU8hC,GAQf,IANA,IAAIzhC,EACAN,EAAI,EACJvH,EAAI6lE,EAAG7lE,EACPgL,EAAI66D,EAAG76D,EACP3D,EAAIw+D,EAAGC,EAEJx8B,KACLzhC,EAAIR,EAAErH,EAAIu4C,EAAOv4C,EAAI,GACrBuH,EAAIA,EAAIxL,EAAQsL,EAAEkxC,GAAQlxC,EAAErH,GAAKqH,EAAE2D,EAAIutC,EAAOvtC,EAAInD,KAAOR,EAAE2D,GAAKnD,IAKlE,OAFAg+D,EAAG7lE,EAAIA,EACP6lE,EAAG76D,EAAIA,EACAzD,CAGT,CACF,CAMA,SAASw+D,EAAKr+D,EAAGG,GAIf,OAHAA,EAAE7H,EAAI0H,EAAE1H,EACR6H,EAAEmD,EAAItD,EAAEsD,EACRnD,EAAEi+D,EAAIp+D,EAAEo+D,EAAE9nD,QACHnW,CACT,CAMA,SAASm+D,EAAQ7iE,EAAKs9B,GACpB,IAEI//B,EAFAulE,EAAS,GACTC,EAAMd,UAAUjiE,GAGpB,GAAIs9B,GAAgB,UAAPylC,EACX,IAAKxlE,KAAQyC,EACX,IACE8iE,EAAO1kE,KAAKykE,EAAQ7iE,EAAIzC,GAAO+/B,EAAQ,GACzC,CAAE,MAAO91B,GAAI,CAIjB,OAAOs7D,EAAO3sE,OAAS2sE,EAAgB,UAAPC,EAAkB/iE,EAAMA,EAAM,IAChE,CAOA,SAASgjE,EAAOC,EAAM5vD,GAKpB,IAJA,IACI6vD,EADAC,EAAaF,EAAO,GAEpBp7D,EAAI,EAEDA,EAAIs7D,EAAWhtE,QACpBkd,EAAI+hC,EAAOvtC,GAAKutC,GAAQ8tB,GAAyB,GAAhB7vD,EAAI+hC,EAAOvtC,IAAWs7D,EAAW/5B,WAAWvhC,KAG/E,OAAOu7D,EAAS/vD,EAClB,CA2BA,SAAS+vD,EAAS14D,GAChB,OAAOkkD,OAAOC,aAAa/uD,MAAM,EAAG4K,EACtC,CAlIA4U,EAAK,OAAS+iD,GA3Ed,SAAoBY,EAAMI,EAASh3D,GACjC,IAAIgH,EAAM,GAKNiwD,EAAYN,EAAOH,GAJvBQ,GAAsB,IAAZA,EAAmB,CAC3BE,SAAS,GACPF,GAAW,CAAC,GAEuBE,QAAU,CAACN,EAAMG,EAASxkD,IAAkB,OAATqkD,EAiL5E,WACE,IACE,GAAId,EACF,OAAOiB,EAASjB,EAAWqB,YAAY5qE,IAGzC,IAAIouB,EAAM,IAAIy8C,WAAW7qE,GAEzB,OADCwpE,EAAOsB,QAAUtB,EAAOuB,UAAUC,gBAAgB58C,GAC5Co8C,EAASp8C,EAClB,CAAE,MAAOxf,GACP,IAAIq8D,EAAUzB,EAAOrmE,UACjB+nE,EAAUD,GAAWA,EAAQC,QACjC,MAAO,EAAE,IAAIp6B,KAAQ04B,EAAQ0B,EAAS1B,EAAO2B,OAAQX,EAASxkD,GAChE,CACF,CA/L4FolD,GAAaf,EAAM,GAAI5vD,GAE7G4wD,EAAO,IAAIzB,EAAKnvD,GAGhB6wD,EAAO,WAOT,IANA,IAAIv+C,EAAIs+C,EAAK5/D,EA5BR,GA8BLO,EAAI09D,EAEJ5pE,EAAI,EAEGitB,EAAI48C,GAET58C,GAAKA,EAAIjtB,GAAKE,EAEdgM,GAAKhM,EAELF,EAAIurE,EAAK5/D,EAAE,GAGb,KAAOshB,GAAK27C,GAEV37C,GAAK,EAEL/gB,GAAK,EAELlM,KAAO,EAGT,OAAQitB,EAAIjtB,GAAKkM,CACnB,EAcA,OAZAs/D,EAAKC,MAAQ,WACX,OAAmB,EAAZF,EAAK5/D,EAAE,EAChB,EAEA6/D,EAAKE,MAAQ,WACX,OAAOH,EAAK5/D,EAAE,GAAK,UACrB,EAEA6/D,EAAa,OAAIA,EAEjBlB,EAAOI,EAASa,EAAKtB,GAAI/jD,IAEjBykD,EAAQgB,MAAQh4D,GAAY,SAAU63D,EAAMjB,EAAMqB,EAAcC,GAetE,OAdIA,IAEEA,EAAM5B,GACRC,EAAK2B,EAAON,GAIdC,EAAKK,MAAQ,WACX,OAAO3B,EAAKqB,EAAM,CAAC,EACrB,GAKEK,GACFhlD,EAAK+iD,GAAW6B,EACTjB,GAGGiB,CACd,GAAGA,EAAMZ,EAAW,WAAYD,EAAUA,EAAQjB,OAAStkE,MAAQwhB,EAAM+jD,EAAQkB,MACnF,EA6IAvB,EAAO1jD,EAAK7d,SAAUmd,EAKxB,CAIA,SAAS4lD,aAAaljE,GACpB4gE,WAAW,GAAI5gE,EACjB,CAEA,IAAImjE,UAAY,CACdC,MAAO,SAGT,SAASC,UAAU3kE,GAAuV,OAA1O2kE,UAArD,oBAAX1kE,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBF,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOhD,UAAY,gBAAkB+C,CAAK,EAAY2kE,UAAU3kE,EAAM,CAEjY,IAAI4kE,kBAAoB,WAGtB,IAAIl1D,GAAK,CAAC,EACN3V,KAAOuH,OACPlJ,OAAS,KACT+B,SAAW,KACXoS,eAAiB,KACjBs4D,MAAQ,KACRhrE,OAAS,KACTirE,cAAgB,CAAC,EAGrB,SAAShtD,aACPgtD,cAAgB,CAAC,CACnB,CAEA,SAASC,sBAAsBtlE,GAC7B,OAAOA,EAAIU,cAAgBzJ,OAAS+I,EAAIU,cAAgBR,YAC1D,CAEA,SAASqlE,YAAYC,EAAM9gE,GACzB,MAAgB,WAAT8gE,GAAqB9gE,aAAaxJ,QAAmB,YAATsqE,GAA+B,WAATA,CAC3E,CAEA,SAASC,QAAQx6D,GACf,IAAIy6D,EAAOR,UAAUj6D,GAErB,GAAa,WAATy6D,GAAqBz6D,aAAa/P,QAAmB,YAATwqE,EAC9C,OAAQz6D,EAGV,GAAIq6D,sBAAsBr6D,GAAI,CAC5B,IAAI7N,EACAuoE,EAAO16D,EAAEvU,OACTkvE,EAAS,GAEb,IAAKxoE,EAAI,EAAGA,EAAIuoE,EAAMvoE,GAAK,EACzBwoE,EAAOxoE,IAAM6N,EAAE7N,GAGjB,OAAOwoE,CACT,CAEA,OAAI36D,EAAE+Z,SACG/Z,EAAEvG,GAGHuG,CACV,CAtCA85D,aAAaljE,QAwCb,IAAIgkE,UAAY7pD,cAAciK,gBAAgB,KAAO,EAAG,KAAO,KAAO,UAAU5I,IAC5EyoD,WAAa9pD,cAAciK,gBAAgB,KAAO,KAAO,KAAO,EAAG,WAAW5I,IAC9E0oD,aAAe/pD,cAAciK,gBAAgB,IAAM,EAAG,KAAO,EAAG,aAAa5I,IAEjF,SAASqtB,IAAIz/B,EAAGpG,GACd,IAAI6gE,EAAOR,UAAUj6D,GAEjB+6D,EAAOd,UAAUrgE,GAErB,GAAI0gE,YAAYG,EAAMz6D,IAAMs6D,YAAYS,EAAMnhE,IAAe,WAAT6gE,GAA8B,WAATM,EACvE,OAAO/6D,EAAIpG,EAGb,GAAIygE,sBAAsBr6D,IAAMs6D,YAAYS,EAAMnhE,GAGhD,OAFAoG,EAAIA,EAAEmQ,MAAM,IACV,IAAMvW,EACDoG,EAGT,GAAIs6D,YAAYG,EAAMz6D,IAAMq6D,sBAAsBzgE,GAGhD,OAFAA,EAAIA,EAAEuW,MAAM,IACV,GAAKnQ,EAAIpG,EAAE,GACNA,EAGT,GAAIygE,sBAAsBr6D,IAAMq6D,sBAAsBzgE,GAAI,CAMxD,IALA,IAAIzH,EAAI,EACJuoE,EAAO16D,EAAEvU,OACTuvE,EAAOphE,EAAEnO,OACTkvE,EAAS,GAENxoE,EAAIuoE,GAAQvoE,EAAI6oE,IACA,kBAATh7D,EAAE7N,IAAmB6N,EAAE7N,aAAclC,UAA4B,kBAAT2J,EAAEzH,IAAmByH,EAAEzH,aAAclC,QACvG0qE,EAAOxoE,GAAK6N,EAAE7N,GAAKyH,EAAEzH,GAErBwoE,EAAOxoE,QAAc9G,IAATuO,EAAEzH,GAAmB6N,EAAE7N,GAAK6N,EAAE7N,IAAMyH,EAAEzH,GAGpDA,GAAK,EAGP,OAAOwoE,CACT,CAEA,OAAO,CACT,CAEA,IAAItf,IAAM5b,IAEV,SAASw7B,IAAIj7D,EAAGpG,GACd,IAAI6gE,EAAOR,UAAUj6D,GAEjB+6D,EAAOd,UAAUrgE,GAErB,GAAI0gE,YAAYG,EAAMz6D,IAAMs6D,YAAYS,EAAMnhE,GAS5C,MARa,WAAT6gE,IACFz6D,EAAI0K,SAAS1K,EAAG,KAGL,WAAT+6D,IACFnhE,EAAI8Q,SAAS9Q,EAAG,KAGXoG,EAAIpG,EAGb,GAAIygE,sBAAsBr6D,IAAMs6D,YAAYS,EAAMnhE,GAGhD,OAFAoG,EAAIA,EAAEmQ,MAAM,IACV,IAAMvW,EACDoG,EAGT,GAAIs6D,YAAYG,EAAMz6D,IAAMq6D,sBAAsBzgE,GAGhD,OAFAA,EAAIA,EAAEuW,MAAM,IACV,GAAKnQ,EAAIpG,EAAE,GACNA,EAGT,GAAIygE,sBAAsBr6D,IAAMq6D,sBAAsBzgE,GAAI,CAMxD,IALA,IAAIzH,EAAI,EACJuoE,EAAO16D,EAAEvU,OACTuvE,EAAOphE,EAAEnO,OACTkvE,EAAS,GAENxoE,EAAIuoE,GAAQvoE,EAAI6oE,IACA,kBAATh7D,EAAE7N,IAAmB6N,EAAE7N,aAAclC,UAA4B,kBAAT2J,EAAEzH,IAAmByH,EAAEzH,aAAclC,QACvG0qE,EAAOxoE,GAAK6N,EAAE7N,GAAKyH,EAAEzH,GAErBwoE,EAAOxoE,QAAc9G,IAATuO,EAAEzH,GAAmB6N,EAAE7N,GAAK6N,EAAE7N,IAAMyH,EAAEzH,GAGpDA,GAAK,EAGP,OAAOwoE,CACT,CAEA,OAAO,CACT,CAEA,SAASO,IAAIl7D,EAAGpG,GACd,IAII7E,EAMA5C,EACAE,EAXAooE,EAAOR,UAAUj6D,GAEjB+6D,EAAOd,UAAUrgE,GAIrB,GAAI0gE,YAAYG,EAAMz6D,IAAMs6D,YAAYS,EAAMnhE,GAC5C,OAAOoG,EAAIpG,EAMb,GAAIygE,sBAAsBr6D,IAAMs6D,YAAYS,EAAMnhE,GAAI,CAIpD,IAHAvH,EAAM2N,EAAEvU,OACRsJ,EAAMF,iBAAiB,UAAWxC,GAE7BF,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4C,EAAI5C,GAAK6N,EAAE7N,GAAKyH,EAGlB,OAAO7E,CACT,CAEA,GAAIulE,YAAYG,EAAMz6D,IAAMq6D,sBAAsBzgE,GAAI,CAIpD,IAHAvH,EAAMuH,EAAEnO,OACRsJ,EAAMF,iBAAiB,UAAWxC,GAE7BF,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4C,EAAI5C,GAAK6N,EAAIpG,EAAEzH,GAGjB,OAAO4C,CACT,CAEA,OAAO,CACT,CAEA,SAAS2b,IAAI1Q,EAAGpG,GACd,IAII7E,EAMA5C,EACAE,EAXAooE,EAAOR,UAAUj6D,GAEjB+6D,EAAOd,UAAUrgE,GAIrB,GAAI0gE,YAAYG,EAAMz6D,IAAMs6D,YAAYS,EAAMnhE,GAC5C,OAAOoG,EAAIpG,EAMb,GAAIygE,sBAAsBr6D,IAAMs6D,YAAYS,EAAMnhE,GAAI,CAIpD,IAHAvH,EAAM2N,EAAEvU,OACRsJ,EAAMF,iBAAiB,UAAWxC,GAE7BF,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4C,EAAI5C,GAAK6N,EAAE7N,GAAKyH,EAGlB,OAAO7E,CACT,CAEA,GAAIulE,YAAYG,EAAMz6D,IAAMq6D,sBAAsBzgE,GAAI,CAIpD,IAHAvH,EAAMuH,EAAEnO,OACRsJ,EAAMF,iBAAiB,UAAWxC,GAE7BF,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4C,EAAI5C,GAAK6N,EAAIpG,EAAEzH,GAGjB,OAAO4C,CACT,CAEA,OAAO,CACT,CAEA,SAASomE,IAAIn7D,EAAGpG,GASd,MARiB,kBAANoG,IACTA,EAAI0K,SAAS1K,EAAG,KAGD,kBAANpG,IACTA,EAAI8Q,SAAS9Q,EAAG,KAGXoG,EAAIpG,CACb,CAEA,IAAIwhE,QAAU37B,IACV47B,QAAUJ,IACVK,QAAUJ,IACVK,QAAU7qD,IACV8qD,QAAUL,IAEd,SAASM,MAAM74B,EAAKjsC,EAAKF,GACvB,GAAIE,EAAMF,EAAK,CACb,IAAIilE,EAAKjlE,EACTA,EAAME,EACNA,EAAM+kE,CACR,CAEA,OAAOrsE,KAAKsH,IAAItH,KAAKoH,IAAImsC,EAAKjsC,GAAMF,EACtC,CAEA,SAASklE,iBAAiB1kE,GACxB,OAAOA,EAAMG,SACf,CAEA,IAAIwkE,mBAAqBD,iBAEzB,SAASE,iBAAiB5kE,GACxB,OAAOA,EAAMG,SACf,CAEA,IAAI0kE,mBAAqBH,iBACrBI,kBAAoB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAExC,SAAStwE,OAAOuwE,EAAMC,GACpB,GAAoB,kBAATD,GAAqBA,aAAgB/rE,OAE9C,OADAgsE,EAAOA,GAAQ,EACR5sE,KAAK2H,IAAIglE,EAAOC,GAOzB,IAAI9pE,EAJC8pE,IACHA,EAAOF,mBAIT,IAAI1pE,EAAMhD,KAAKsH,IAAIqlE,EAAKvwE,OAAQwwE,EAAKxwE,QACjC6oB,EAAc,EAElB,IAAKniB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBmiB,GAAejlB,KAAK8G,IAAI8lE,EAAK9pE,GAAK6pE,EAAK7pE,GAAI,GAG7C,OAAO9C,KAAKgH,KAAKie,EACnB,CAEA,SAAS4nD,UAAUC,GACjB,OAAOzrD,IAAIyrD,EAAK1wE,OAAO0wE,GACzB,CAEA,SAASC,SAASnlE,GAChB,IAKIsC,EACAC,EANAE,EAAIzC,EAAI,GACR0C,EAAI1C,EAAI,GACR2C,EAAI3C,EAAI,GACRR,EAAMpH,KAAKoH,IAAIiD,EAAGC,EAAGC,GACrBjD,EAAMtH,KAAKsH,IAAI+C,EAAGC,EAAGC,GAGrBotB,GAAKvwB,EAAME,GAAO,EAEtB,GAAIF,IAAQE,EACV4C,EAAI,EAEJC,EAAI,MACC,CACL,IAAIU,EAAIzD,EAAME,EAGd,OAFA6C,EAAIwtB,EAAI,GAAM9sB,GAAK,EAAIzD,EAAME,GAAOuD,GAAKzD,EAAME,GAEvCF,GACN,KAAKiD,EACHH,GAAKI,EAAIC,GAAKM,GAAKP,EAAIC,EAAI,EAAI,GAC/B,MAEF,KAAKD,EACHJ,GAAKK,EAAIF,GAAKQ,EAAI,EAClB,MAEF,KAAKN,EACHL,GAAKG,EAAIC,GAAKO,EAAI,EAOtBX,GAAK,CACP,CAEA,MAAO,CAACA,EAAGC,EAAGwtB,EAAG/vB,EAAI,GACvB,CAEA,SAASolE,QAAQviE,EAAGC,EAAGC,GAGrB,OAFIA,EAAI,IAAGA,GAAK,GACZA,EAAI,IAAGA,GAAK,GACZA,EAAI,EAAI,EAAUF,EAAc,GAATC,EAAID,GAASE,EACpCA,EAAI,GAAcD,EAClBC,EAAI,EAAI,EAAUF,GAAKC,EAAID,IAAM,EAAI,EAAIE,GAAK,EAC3CF,CACT,CAEA,SAASwiE,SAASrlE,GAChB,IAGIyC,EACAC,EACAC,EALAL,EAAItC,EAAI,GACRuC,EAAIvC,EAAI,GACR+vB,EAAI/vB,EAAI,GAKZ,GAAU,IAANuC,EACFE,EAAIstB,EAEJptB,EAAIotB,EAEJrtB,EAAIqtB,MACC,CACL,IAAIjtB,EAAIitB,EAAI,GAAMA,GAAK,EAAIxtB,GAAKwtB,EAAIxtB,EAAIwtB,EAAIxtB,EACxCM,EAAI,EAAIktB,EAAIjtB,EAChBL,EAAI2iE,QAAQviE,EAAGC,EAAGR,EAAI,EAAI,GAC1BI,EAAI0iE,QAAQviE,EAAGC,EAAGR,GAClBK,EAAIyiE,QAAQviE,EAAGC,EAAGR,EAAI,EAAI,EAC5B,CAEA,MAAO,CAACG,EAAGC,EAAGC,EAAG3C,EAAI,GACvB,CAEA,SAASslE,OAAOviE,EAAGwiE,EAAMC,EAAMC,EAAQC,GAQrC,QAPetxE,IAAXqxE,QAAmCrxE,IAAXsxE,IAC1BD,EAASF,EACTG,EAASF,EACTD,EAAO,EACPC,EAAO,GAGLA,EAAOD,EAAM,CACf,IAAII,EAAQH,EACZA,EAAOD,EACPA,EAAOI,CACT,CAEA,GAAI5iE,GAAKwiE,EACP,OAAOE,EAGT,GAAI1iE,GAAKyiE,EACP,OAAOE,EAGT,IAMIxqE,EANAwjB,EAAO8mD,IAASD,EAAO,GAAKxiE,EAAIwiE,IAASC,EAAOD,GAEpD,IAAKE,EAAOjxE,OACV,OAAOixE,GAAUC,EAASD,GAAU/mD,EAItC,IAAItjB,EAAMqqE,EAAOjxE,OACbsJ,EAAMF,iBAAiB,UAAWxC,GAEtC,IAAKF,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4C,EAAI5C,GAAKuqE,EAAOvqE,IAAMwqE,EAAOxqE,GAAKuqE,EAAOvqE,IAAMwjB,EAGjD,OAAO5gB,CACT,CAEA,SAASgC,OAAOJ,EAAKF,GAWnB,QAVYpL,IAARoL,SACUpL,IAARsL,GACFA,EAAM,EACNF,EAAM,IAENA,EAAME,EACNA,OAAMtL,IAINoL,EAAIhL,OAAQ,CACd,IAAI0G,EACAE,EAAMoE,EAAIhL,OAETkL,IACHA,EAAM9B,iBAAiB,UAAWxC,IAGpC,IAAI0C,EAAMF,iBAAiB,UAAWxC,GAClCwqE,EAAMjmE,OAAOG,SAEjB,IAAK5E,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4C,EAAI5C,GAAKwE,EAAIxE,GAAK0qE,GAAOpmE,EAAItE,GAAKwE,EAAIxE,IAGxC,OAAO4C,CACT,CAOA,YALY1J,IAARsL,IACFA,EAAM,GAIDA,EADIC,OAAOG,UACGN,EAAME,EAC7B,CAEA,SAASmmE,WAAW9qD,EAAQ+qD,EAAYC,EAAat8D,GACnD,IAAIvO,EACAE,EAAM2f,EAAOvmB,OACbyQ,EAAOulB,UAAUtN,aACrBjY,EAAKskB,cAAc9f,EAAQrO,GAC3B,IACI4qE,EACAC,EAFAC,EAAiB,CAAC,EAAG,GAIzB,IAAKhrE,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB8qE,EAAgBF,GAAcA,EAAW5qE,GAAK4qE,EAAW5qE,GAAKgrE,EAC9DD,EAAiBF,GAAeA,EAAY7qE,GAAK6qE,EAAY7qE,GAAKgrE,EAClEjhE,EAAK0kB,YAAY5O,EAAO7f,GAAG,GAAI6f,EAAO7f,GAAG,GAAI+qE,EAAe,GAAKlrD,EAAO7f,GAAG,GAAI+qE,EAAe,GAAKlrD,EAAO7f,GAAG,GAAI8qE,EAAc,GAAKjrD,EAAO7f,GAAG,GAAI8qE,EAAc,GAAKjrD,EAAO7f,GAAG,GAAIA,GAAG,GAGxL,OAAO+J,CACT,CAEA,SAASkhE,mBAAmB5tD,KAAMrT,KAAMkhE,UAEtC,SAASC,KAAKC,GACZ,OAAOA,CACT,CAEA,IAAK/tD,KAAKjF,WAAW04B,aAAaqgB,eAChC,OAAOga,KAGT,IAAIrmE,IAAMkF,KAAKnO,EACXwvE,cAAgB,qBAAqBznE,KAAKkB,KAE1CwmE,cAA0C,IAA3BxmE,IAAIqK,QAAQ,UAE3Bo8D,SAAWluD,KAAKrT,KAAK0B,GACrBwpB,UACAs2C,cACAr3B,QACAqH,OACAiwB,aAAeP,SACnBO,aAAaC,YAAcD,aAAa/sC,eACxCr+B,OAAO0kE,eAAe0G,aAAc,QAAS,CAC3CxrD,IAAK,WACH,OAAOwrD,aAAankE,CACtB,IAEF+V,KAAKpR,KAAKg5D,cAAgB,EAAI5nD,KAAKpR,KAAKmM,WAAWtB,UACnDuG,KAAKpR,KAAKi5D,iBAAmB,EAC7B,IAAIyG,QAAUtuD,KAAKrT,KAAKyD,GAAK4P,KAAKpR,KAAKmM,WAAWtB,UAC9C80D,SAAWvuD,KAAKrT,KAAK0D,GAAK2P,KAAKpR,KAAKmM,WAAWtB,UAC/C/a,MAAQshB,KAAKrT,KAAKi6C,GAAK5mC,KAAKrT,KAAKi6C,GAAK,EACtC3oD,OAAS+hB,KAAKrT,KAAK0f,GAAKrM,KAAKrT,KAAK0f,GAAK,EACvC5yB,KAAOumB,KAAKrT,KAAKiM,GACjB41D,OACAC,QACAC,QACAC,SACAC,OACAC,QACAC,UACAC,SACAC,OACAC,kBACAzuE,SACA0uE,SACAC,YACA93C,MACA+3C,UACAC,SACAn0B,KACAmzB,YACAiB,eACAC,aAEAC,oBAAsBC,KAAK,oCAAsChoE,IAAM,0BAA0B,GAEjGioE,QAAU7B,SAASn+C,GAAK/iB,KAAKkB,EAAE5R,OAAS,EACxC0zE,QAAU/rE,KAAK+I,OAAyB,IAAjB/I,KAAK+I,KAAK8yC,GAEjCmwB,OAAS,SAAgBC,EAAMC,GACjC,IAAIC,EACApiE,EACAqiE,EAAYpsE,KAAK4mB,GAAGvuB,OAAS2H,KAAK4mB,GAAGvuB,OAAS,EAC9Cg0E,EAAY5qE,iBAAiB,UAAW2qE,GAExCtqB,EAAa7lD,KAAKkH,MADf,EACqBkR,MAI5B,IAHA83D,EAAU,EACVpiE,EAAI,EAEGoiE,EAAUrqB,GAAY,CAE3B,IAAK/3C,EAAI,EAAGA,EAAIqiE,EAAWriE,GAAK,EAC9BsiE,EAAUtiE,KAAOmiE,EAAY,EAANA,EAAU1oE,OAAOG,SAG1CwoE,GAAW,CACb,CAGA,IAAIG,EAfG,EAeOj4D,KACVkO,EAAO+pD,EAAUrwE,KAAKkH,MAAMmpE,GAC5B3qE,EAAMF,iBAAiB,UAAW2qE,GAEtC,GAAIA,EAAY,EAAG,CACjB,IAAKriE,EAAI,EAAGA,EAAIqiE,EAAWriE,GAAK,EAC9BpI,EAAIoI,GAAK/J,KAAK4mB,GAAG7c,GAAKsiE,EAAUtiE,KAAOmiE,EAAY,EAANA,EAAU1oE,OAAOG,UAAY4e,EAI5E,OAAO5gB,CACT,CAEA,OAAO3B,KAAK4mB,GAAKylD,EAAU,KAAOH,EAAY,EAANA,EAAU1oE,OAAOG,UAAY4e,CACvE,EAAE7Q,KAAK1R,MAgBP,SAASusE,eAAezwE,EAAMyY,GAC5B,OAAOq2D,OAAO9uE,EAAMyY,GAAU,EAChC,CAEA,SAASi4D,gBAAgB1wE,EAAMyY,GAC7B,OAAOu2D,QAAQhvE,EAAMyY,GAAU,EACjC,CApBIi2D,aAAaI,SACfA,OAASJ,aAAaI,OAAOl5D,KAAK84D,cAClCK,QAAUD,QAGRJ,aAAaM,UACfA,QAAUN,aAAaM,QAAQp5D,KAAK84D,cACpCO,SAAWD,SAGTN,aAAaQ,SACfA,OAASR,aAAaQ,OAAOt5D,KAAK84D,eAWhCxqE,KAAKy9B,iBACPgtC,YAAczqE,KAAKy9B,eAAe/rB,KAAK1R,OAGrCA,KAAKysE,oBACPf,eAAiB1rE,KAAKysE,kBAAkB/6D,KAAK1R,OAG/C,IAAIgL,KAAOoR,KAAKpR,KAAKmM,WAAWX,iBAAiB9E,KAAK0K,KAAKpR,KAAKmM,WAAWX,kBAsLvEnC,KACAq4D,SACAt1E,MACA6zC,KACA0hC,UACAC,UACAC,cA1LJ,SAASC,OAAOC,EAAOC,GACrB,IAAIC,EAAO,CAACD,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,IACnEG,EAAQjxE,KAAKkuB,MAAM8iD,EAAK,GAAIhxE,KAAKgH,KAAKgqE,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,KAAOjpE,UAEpF,MAAO,EADI/H,KAAKkuB,MAAM8iD,EAAK,GAAIA,EAAK,IAAMjpE,UAC7BkpE,EAAO,EACtB,CAEA,SAASC,QAAQvmE,EAAGwiE,EAAMC,EAAM+D,EAAMC,GACpC,OAAOC,UAAU7F,WAAY7gE,EAAGwiE,EAAMC,EAAM+D,EAAMC,EACpD,CAEA,SAASE,OAAO3mE,EAAGwiE,EAAMC,EAAM+D,EAAMC,GACnC,OAAOC,UAAU9F,UAAW5gE,EAAGwiE,EAAMC,EAAM+D,EAAMC,EACnD,CAEA,SAASG,KAAK5mE,EAAGwiE,EAAMC,EAAM+D,EAAMC,GACjC,OAAOC,UAAU5F,aAAc9gE,EAAGwiE,EAAMC,EAAM+D,EAAMC,EACtD,CAEA,SAASC,UAAUpkE,EAAItC,EAAGwiE,EAAMC,EAAM+D,EAAMC,QAC7Bp1E,IAATm1E,GACFA,EAAOhE,EACPiE,EAAOhE,GAEPziE,GAAKA,EAAIwiE,IAASC,EAAOD,GAGvBxiE,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAGN,IAAI0kB,EAAOpiB,EAAGtC,GAEd,GAAIqgE,sBAAsBmG,GAAO,CAC/B,IAAIK,EACAC,EAASN,EAAK/0E,OACdsJ,EAAMF,iBAAiB,UAAWisE,GAEtC,IAAKD,EAAO,EAAGA,EAAOC,EAAQD,GAAQ,EACpC9rE,EAAI8rE,IAASJ,EAAKI,GAAQL,EAAKK,IAASniD,EAAO8hD,EAAKK,GAGtD,OAAO9rE,CACT,CAEA,OAAQ0rE,EAAOD,GAAQ9hD,EAAO8hD,CAChC,CAEA,SAASO,WAAWt5D,GAClB,IAAIo5D,EAEAjyD,EACA+L,EAFAmmD,EAAS3kE,KAAKkB,EAAE5R,OAIpB,GAAK0Q,KAAKkB,EAAE5R,QAA+B,kBAAd0Q,KAAKkB,EAAE,GAOlC,GAHAuR,GAAS,GACTnH,GAAQ+H,KAAKpR,KAAKmM,WAAWtB,WAElB9M,KAAKkB,EAAE,GAAGrD,EACnB4U,EAAQ,EACR+L,EAAUxe,KAAKkB,EAAE,GAAGrD,MACf,CACL,IAAK6mE,EAAO,EAAGA,EAAOC,EAAS,EAAGD,GAAQ,EAAG,CAC3C,GAAIp5D,IAAStL,KAAKkB,EAAEwjE,GAAM7mE,EAAG,CAC3B4U,EAAQiyD,EAAO,EACflmD,EAAUxe,KAAKkB,EAAEwjE,GAAM7mE,EACvB,KACF,CAAO,GAAIyN,EAAOtL,KAAKkB,EAAEwjE,GAAM7mE,GAAKyN,EAAOtL,KAAKkB,EAAEwjE,EAAO,GAAG7mE,EAAG,CACzDyN,EAAOtL,KAAKkB,EAAEwjE,GAAM7mE,EAAImC,KAAKkB,EAAEwjE,EAAO,GAAG7mE,EAAIyN,GAC/CmH,EAAQiyD,EAAO,EACflmD,EAAUxe,KAAKkB,EAAEwjE,EAAO,GAAG7mE,IAE3B4U,EAAQiyD,EAAO,EACflmD,EAAUxe,KAAKkB,EAAEwjE,GAAM7mE,GAGzB,KACF,CACF,EAEe,IAAX4U,IACFA,EAAQiyD,EAAO,EACflmD,EAAUxe,KAAKkB,EAAEwjE,GAAM7mE,EAE3B,MAhCA4U,EAAQ,EACR+L,EAAU,EAkCZ,IAAIqmD,EAAQ,CAAC,EAGb,OAFAA,EAAMpyD,MAAQA,EACdoyD,EAAMv5D,KAAOkT,EAAUnL,KAAKpR,KAAKmM,WAAWtB,UACrC+3D,CACT,CAEA,SAASr4D,IAAImS,GACX,IAAIkmD,EACAH,EACAC,EAEJ,IAAK3kE,KAAKkB,EAAE5R,QAA+B,kBAAd0Q,KAAKkB,EAAE,GAClC,MAAM,IAAI+J,MAAM,yCAA2C0T,GAG7DA,GAAO,EACPkmD,EAAQ,CACNv5D,KAAMtL,KAAKkB,EAAEyd,GAAK9gB,EAAIwV,KAAKpR,KAAKmM,WAAWtB,UAC3Cze,MAAO,IAET,IAAIuK,EAAMvC,OAAOD,UAAUE,eAAeC,KAAKyJ,KAAKkB,EAAEyd,GAAM,KAAO3e,KAAKkB,EAAEyd,GAAKthB,EAAI2C,KAAKkB,EAAEyd,EAAM,GAAGhe,EAGnG,IAFAgkE,EAAS/rE,EAAItJ,OAERo1E,EAAO,EAAGA,EAAOC,EAAQD,GAAQ,EACpCG,EAAMH,GAAQ9rE,EAAI8rE,GAClBG,EAAMx2E,MAAMq2E,GAAQ9rE,EAAI8rE,GAG1B,OAAOG,CACT,CAEA,SAASC,aAAa30D,EAAI40D,GAKxB,OAJKA,IACHA,EAAM1xD,KAAKpR,KAAKmM,WAAWtB,WAGtBqD,EAAK40D,CACd,CAEA,SAASC,aAAannE,EAAGknE,GASvB,OARKlnE,GAAW,IAANA,IACRA,EAAIyN,MAGDy5D,IACHA,EAAM1xD,KAAKpR,KAAKmM,WAAWtB,WAGtBjP,EAAIknE,CACb,CAEA,SAAS1J,WAAWe,GAClB3hE,OAAOwqE,WAAWC,SAAW9I,EAC/B,CAEA,SAASn1B,mBACP,OAAO5zB,KAAK4zB,kBACd,CAEA,SAASk+B,UAAUpzD,EAAMC,GACvB,MAAqB,kBAAV3jB,WACGa,IAAR8iB,EACK3jB,MAAM82E,UAAUpzD,GAGlB1jB,MAAM82E,UAAUpzD,EAAMC,GAGxB,EACT,CAEA,SAASrD,OAAOoD,EAAMC,GACpB,MAAqB,kBAAV3jB,WACGa,IAAR8iB,EACK3jB,MAAMsgB,OAAOoD,GAGf1jB,MAAMsgB,OAAOoD,EAAMC,GAGrB,EACT,CAEA,SAASozD,cAAcC,GACrB/5D,KAA2B,IAApB+5D,EAAwB,EAAInyE,KAAKkH,MAAMkR,KAAO+5D,GAAmBA,EACxEh3E,MAAQqzE,YAAYp2D,KACtB,CASA,IAAImH,MAAQY,KAAKrT,KAAK2e,IAClB2mD,aAAejyD,KAAKm5B,YAAan5B,KAAKm5B,UAAUl9C,QAChD+xC,OACA6jC,SAAWhyE,KAAKkH,MAAsB,IAAhBlH,KAAK0H,UAC3BwT,WAAaiF,KAAKjF,WAEtB,SAASm3D,kBAAkBnE,GAIzB,OAFA/yE,MAAQ+yE,EAEJnqE,KAAKuuE,oBAAsBnyD,KAAKjF,WAAWsU,SAA6B,iBAAlBzrB,KAAK2mB,SACtDvvB,OAGa,iBAAlB4I,KAAK2mB,WACPgmD,UAAY3sE,KAAK2sE,UACjBC,UAAY5sE,KAAK4sE,UACjBC,cAAgB7sE,KAAK6sE,eAGlBrB,YACHvgC,KAAO7uB,KAAKq2B,eAAexH,KAC3BugC,UAAYpvD,KAAKq2B,eACjBg5B,SAAWrvD,KAAKpR,KAAKoK,cACrB61D,QAAUO,UAAUP,QAAQv5D,KAAK85D,WACjCN,UAAYM,UAAUN,UAAUx5D,KAAK85D,WACrCL,SAAWK,UAAUL,SAASz5D,KAAK85D,WACnCJ,OAASI,UAAUJ,OAAO15D,KAAK85D,WAC/Bl0B,KAAOk0B,UAAUl0B,KAAOk0B,UAAUl0B,KAAK5lC,KAAK85D,WAAa,KACzDH,kBAAoBF,UAGjBl3C,YACHA,UAAY7X,KAAKq2B,eAAe,wBAChC83B,cAAgBt2C,UAEZA,YACFs3C,YAAct3C,UAAUs3C,cAOX,IAAbjB,UAAmBp3B,UACrBA,QAAUs4B,UAAU,4BAGjBjxB,SACHA,OAASixB,UAAU,KAGrB6C,aAAejyD,KAAKm5B,YAAan5B,KAAKm5B,UAAUl9C,WAE9B+xC,SAChBA,OAAShuB,KAAKm5B,UAAU,GAAG9C,gBAG7Bp+B,KAAOrU,KAAKgL,KAAKggB,cAAgBhrB,KAAKgL,KAAKmM,WAAWtB,UAElDw0D,cACFjG,WAAW6J,SAAW55D,MAGpB+1D,gBACFsC,SAAWhB,eAAer3D,OAG5Bu3D,sBACA5rE,KAAKuuE,kBAAoBnyD,KAAKjF,WAAWsU,QAGzCkgD,aAAeA,aAAahlD,WAAaggD,UAAUC,MAAQ+E,aAAatlE,EAAIslE,aAE9E,CAIA,OADA2C,kBAAkBE,yBAA2B,CAACjE,cAAegB,YAAal3D,KAAMq4D,SAAUhC,QAASC,SAAU7vE,MAAOT,OAAQxE,KAAMg1E,QAASE,SAAUC,OAAQI,OAAQC,kBAAmBJ,QAASC,UAAW5zB,KAAM16C,SAAU0uE,SAAU73C,MAAOg4C,SAAUK,QAASC,OAAQC,OAAQO,eAAgBC,gBAAiBxhE,KAAM8hE,OAAQK,QAASI,OAAQC,KAAMG,WAAYp4D,IAAK01B,KAAM0hC,UAAWC,UAAWC,cAAegB,aAAcE,aAAc/9B,iBAAkBk+B,UAAWx2D,OAAQy2D,cAAe3yD,MAAOrE,YAClem3D,iBACT,CAKA,OAHA18D,GAAGo4D,mBAAqBA,mBACxBp4D,GAAG48D,yBAA2B,CAACl0E,OAAQ+B,SAAUoS,eAAgBs4D,MAAOhrE,OAAQqrE,QAASnf,IAAK+f,QAASC,QAASC,QAASC,QAASC,QAASC,MAAOG,mBAAoBC,iBAAkBC,mBAAoBI,UAAWE,SAAUE,SAAUC,OAAQxlE,OAAQ+lE,WAAY1C,eACvQp1D,GAAGoI,WAAaA,WACTpI,EACT,CAh2BwB,GAk2BpB68D,YAAc,WAChB,IAAI78D,EAAK,CACTA,gBAGA,SAAyBxC,GACvB,IAAIs/D,EAAa,EACbC,EAAY,GA+BhBv/D,EAAUxZ,SAASwf,cAAgBo9B,wBAAwBpjC,EAAUxZ,UACrEwZ,EAAUxZ,SAASuhB,WAAWX,iBAAiB3B,oBAAoBzF,EAAUxZ,UAC7EwZ,EAAUxZ,SAASuhB,WAAWy3D,eA/B9B,WACEF,GAAc,CAChB,EA8BAt/D,EAAUxZ,SAASuhB,WAAW03D,cA5B9B,WAGqB,KAFnBH,GAAc,IAahB,WACE,IAAI3vE,EACAE,EAAM0vE,EAAUt2E,OAEpB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB4vE,EAAU5vE,GAAGiiB,UAGf2tD,EAAUt2E,OAAS,CACrB,CAnBIy2E,EAEJ,EAuBA1/D,EAAUxZ,SAASuhB,WAAW43D,2BArB9B,SAAoCC,IACK,IAAnCL,EAAUzgE,QAAQ8gE,IACpBL,EAAUruE,KAAK0uE,EAEnB,CAkBF,GAEA,OA1CAp9D,EAAGoI,WAAa8sD,kBAAkB9sD,WA0C3BpI,CACT,CA9CkB,GAgDdq9D,qBAAuB,WACzB,SAASC,EAAc53B,EAAMvuC,GAC3B/I,KAAKmvE,MAAQ73B,EACbt3C,KAAKovE,MAAQrmE,CACf,CAgDA,OA9CA3J,OAAO0kE,eAAeoL,EAAc/vE,UAAW,WAAY,CACzD6f,IAAK,WAKH,OAJIhf,KAAKmvE,MAAM1vE,KAAKwK,GAClBjK,KAAKmvE,MAAM1vE,KAAK2sB,WAGXpsB,KAAKmvE,MAAM1vE,IACpB,IAEFL,OAAO0kE,eAAeoL,EAAc/vE,UAAW,cAAe,CAC5D6f,IAAK,WAKH,OAJIhf,KAAKmvE,MAAM1iE,GAAGxC,GAChBjK,KAAKmvE,MAAM1iE,GAAG2f,WAGS,IAAlBpsB,KAAKmvE,MAAM1iE,GAAGpG,CACvB,IAGgB,SAAqBqsC,GACrC,IAEI3zC,EAFAswE,EAAmBttE,iBAAiB2wC,EAAY4D,SAASj+C,QAGzD4G,EAAMyzC,EAAY4D,SAASj+C,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBswE,EAAiBtwE,GAAK,IAAImwE,EAAcx8B,EAAY4D,SAASv3C,GAAI2zC,EAAYpoC,gBAAgBvL,IAiB/F,OAdmB,SAAsBlJ,GAGvC,IAFAkJ,EAAI,EAEGA,EAAIE,GAAK,CACd,GAAIyzC,EAAYpoC,gBAAgBvL,GAAGiW,KAAOnf,EACxC,OAAOw5E,EAAiBtwE,GAG1BA,GAAK,CACP,CAEA,OAAO,IACT,CAGF,CAGF,CArD2B,GAuDvBuwE,4BAA8B,WAChC,IAAIC,EAA6B,CAC/B3oD,GAAI,EACJvgB,EAAG,EACHilB,KAAM,GAEJkkD,EAA+B,CACjC5oD,GAAI,CAAC,EAAG,EAAG,GACXvgB,EAAG,CAAC,EAAG,EAAG,GACVilB,KAAM,GAGR,SAASmkD,EAAiBC,EAAiBzF,EAAUnuE,GACnDsD,OAAO0kE,eAAe4L,EAAiB,WAAY,CACjD1wD,IAAK,WACH,OAAOirD,EAASwC,kBAAkBxC,EAASj/D,KAAKmK,aAClD,IAEFu6D,EAAgB5D,QAAU7B,EAAS9iD,UAAY8iD,EAAS9iD,UAAU9uB,OAAS,EAE3Eq3E,EAAgBn6D,IAAM,SAAU7Y,GAC9B,IAAKgzE,EAAgB5D,QACnB,OAAO,EAGT,IAAI10E,EAAQ,GAGVA,EADE,MAAO6yE,EAAS9iD,UAAUzqB,EAAM,GAC1ButE,EAAS9iD,UAAUzqB,EAAM,GAAG0J,EAC3B,MAAO6jE,EAAS9iD,UAAUzqB,EAAM,GACjCutE,EAAS9iD,UAAUzqB,EAAM,GAAGgN,EAE5BugE,EAAS9iD,UAAUzqB,EAAM,GAAG0J,EAGtC,IAAIupE,EAAqB,mBAAT7zE,EAA4B,IAAIe,OAAOzF,GAASgI,OAAO0vC,OAAO,CAAC,EAAG13C,GAIlF,OAFAu4E,EAAUt7D,KAAO41D,EAAS9iD,UAAUzqB,EAAM,GAAGkK,EAAIqjE,EAAS7tD,KAAKpR,KAAKmM,WAAWtB,UAC/E85D,EAAUv4E,MAAiB,mBAAT0E,EAA4B1E,EAAM,GAAKA,EAClDu4E,CACT,EAEAD,EAAgBjF,YAAcR,EAASxsC,eACvCiyC,EAAgBE,YAAc3F,EAAS4F,eACvCH,EAAgBhE,eAAiBzB,EAASwC,kBAC1CiD,EAAgBI,cAAgB7F,EAAS6F,aAC3C,CAyDA,SAASC,IACP,OAAOR,CACT,CAEA,OAAO,SAAUtF,GACf,OAAKA,EAIqB,mBAAtBA,EAAStjD,SAhEf,SAAyCsjD,GAClCA,GAAc,OAAQA,IACzBA,EAAWsF,GAGb,IAAIjkD,EAAO,EAAI2+C,EAAS3+C,KACpBznB,EAAMomE,EAASrjD,GAAK0E,EACpBokD,EAAkB,IAAI7yE,OAAOgH,GAIjC,OAFA6rE,EAAgBt4E,MAAQyM,EACxB4rE,EAAiBC,EAAiBzF,EAAU,kBACrC,WAcL,OAbIA,EAAShgE,GACXggE,EAAS79C,WAGXvoB,EAAMomE,EAAS5jE,EAAIilB,EAEfokD,EAAgBt4E,QAAUyM,KAC5B6rE,EAAkB,IAAI7yE,OAAOgH,IAEbzM,MAAQyM,EACxB4rE,EAAiBC,EAAiBzF,EAAU,mBAGvCyF,CACT,CACF,CAsCWM,CAAgC/F,GApC3C,SAA2CA,GACpCA,GAAc,OAAQA,IACzBA,EAAWuF,GAGb,IAAIlkD,EAAO,EAAI2+C,EAAS3+C,KACpBrsB,EAAMgrE,EAASlhE,MAAQkhE,EAASlhE,KAAK6qB,GAAKq2C,EAASrjD,GAAGvuB,OACtDq3E,EAAkBjuE,iBAAiB,UAAWxC,GAC9CgxE,EAAWxuE,iBAAiB,UAAWxC,GAG3C,OAFAywE,EAAgBt4E,MAAQ64E,EACxBR,EAAiBC,EAAiBzF,EAAU,oBACrC,WACDA,EAAShgE,GACXggE,EAAS79C,WAGX,IAAK,IAAIrtB,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAC5BkxE,EAASlxE,GAAKkrE,EAAS5jE,EAAEtH,GAAKusB,EAC9BokD,EAAgB3wE,GAAKkxE,EAASlxE,GAGhC,OAAO2wE,CACT,CACF,CAgBSQ,CAAkCjG,GAPhC8F,CAQX,CACF,CAtHkC,GAwH9BI,6BACK,SAAUl8C,GACf,SAASm8C,EAAcv6E,GACrB,OAAQA,GACN,IAAK,QACL,IAAK,QACL,IAAK,aACL,KAAK,EACH,OAAOu6E,EAAc38C,MAEvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,KAAK,GACH,OAAO28C,EAAc9E,SAEvB,IAAK,gBACH,OAAO8E,EAAcC,UAEvB,IAAK,gBACH,OAAOD,EAAcE,UAEvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,KAAK,EACH,OAAOF,EAAcxzE,SAEvB,IAAK,kBACH,OAAOwzE,EAAcG,UAEvB,IAAK,kBACH,OAAOH,EAAcI,UAEvB,IAAK,kBACH,OAAOJ,EAAcK,UAEvB,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,mBACL,KAAK,EACH,OAAOL,EAAc7E,YAEvB,IAAK,UACL,IAAK,UACL,KAAK,GACH,OAAO6E,EAAc53B,QAEvB,QACE,OAAO,KAEb,CAkBA,IAAIk4B,EAEAC,EAEAC,EAEAC,EA8CJ,OApEAzxE,OAAO0kE,eAAesM,EAAe,WAAY,CAC/CpxD,IAAKswD,4BAA4Br7C,EAAU3tB,GAAK2tB,EAAUgJ,MAE5D79B,OAAO0kE,eAAesM,EAAe,YAAa,CAChDpxD,IAAKswD,4BAA4Br7C,EAAUgJ,IAAMhJ,EAAU3tB,KAE7DlH,OAAO0kE,eAAesM,EAAe,YAAa,CAChDpxD,IAAKswD,4BAA4Br7C,EAAU8I,MAE7C39B,OAAO0kE,eAAesM,EAAe,YAAa,CAChDpxD,IAAKswD,4BAA4Br7C,EAAU+I,MAE7C59B,OAAO0kE,eAAesM,EAAe,QAAS,CAC5CpxD,IAAKswD,4BAA4Br7C,EAAU7tB,KAWzC6tB,EAAUvtB,EACZmqE,EAAoBvB,4BAA4Br7C,EAAUvtB,IAE1DgqE,EAAMpB,4BAA4Br7C,EAAU2I,IAC5C+zC,EAAMrB,4BAA4Br7C,EAAU4I,IAExC5I,EAAU6I,KACZ8zC,EAAMtB,4BAA4Br7C,EAAU6I,MAIhD19B,OAAO0kE,eAAesM,EAAe,WAAY,CAC/CpxD,IAAK,WACH,OAAIiV,EAAUvtB,EACLmqE,IAGF,CAACH,IAAOC,IAAOC,EAAMA,IAAQ,EACtC,IAEFxxE,OAAO0kE,eAAesM,EAAe,YAAa,CAChDpxD,IAAKswD,4BAA4Br7C,EAAU2I,MAE7Cx9B,OAAO0kE,eAAesM,EAAe,YAAa,CAChDpxD,IAAKswD,4BAA4Br7C,EAAU4I,MAE7Cz9B,OAAO0kE,eAAesM,EAAe,YAAa,CAChDpxD,IAAKswD,4BAA4Br7C,EAAU6I,MAE7C19B,OAAO0kE,eAAesM,EAAe,cAAe,CAClDpxD,IAAKswD,4BAA4Br7C,EAAUrnB,KAE7CxN,OAAO0kE,eAAesM,EAAe,UAAW,CAC9CpxD,IAAKswD,4BAA4Br7C,EAAUzoB,KAE7CpM,OAAO0kE,eAAesM,EAAe,OAAQ,CAC3CpxD,IAAKswD,4BAA4Br7C,EAAUpnB,MAE7CzN,OAAO0kE,eAAesM,EAAe,WAAY,CAC/CpxD,IAAKswD,4BAA4Br7C,EAAUnnB,MAE7C1N,OAAO0kE,eAAesM,EAAe,cAAe,CAClDpxD,IAAKswD,4BAA4Br7C,EAAU/C,MAEtCk/C,CACT,EAGEh+B,yBAA2B,WAC7B,SAAS0+B,EAAUz8D,GACjB,IAAI08D,EAAa,IAAIv+C,OAWrB,YATav6B,IAAToc,EACerU,KAAKkrD,MAAMvb,eAAeC,MAAMnS,eAAeppB,GAErDka,MAAMwiD,GAEE/wE,KAAKkrD,MAAMvb,eAAeC,MAChCzS,cAAc4zC,GAGtBA,CACT,CAEA,SAASC,EAAWrvE,EAAK0S,GACvB,IAAI08D,EAAa/wE,KAAK8wE,UAAUz8D,GAIhC,OAHA08D,EAAWp8E,MAAM,IAAM,EACvBo8E,EAAWp8E,MAAM,IAAM,EACvBo8E,EAAWp8E,MAAM,IAAM,EAChBqL,KAAKixE,WAAWF,EAAYpvE,EACrC,CAEA,SAASspE,EAAQtpE,EAAK0S,GACpB,IAAI08D,EAAa/wE,KAAK8wE,UAAUz8D,GAChC,OAAOrU,KAAKixE,WAAWF,EAAYpvE,EACrC,CAEA,SAASuvE,EAAavvE,EAAK0S,GACzB,IAAI08D,EAAa/wE,KAAK8wE,UAAUz8D,GAIhC,OAHA08D,EAAWp8E,MAAM,IAAM,EACvBo8E,EAAWp8E,MAAM,IAAM,EACvBo8E,EAAWp8E,MAAM,IAAM,EAChBqL,KAAKmxE,YAAYJ,EAAYpvE,EACtC,CAEA,SAASupE,EAAUvpE,EAAK0S,GACtB,IAAI08D,EAAa/wE,KAAK8wE,UAAUz8D,GAChC,OAAOrU,KAAKmxE,YAAYJ,EAAYpvE,EACtC,CAEA,SAASsvE,EAAWh7C,EAAQt0B,GAC1B,GAAI3B,KAAKkrD,MAAM3V,WAAav1C,KAAKkrD,MAAM3V,UAAUl9C,OAAQ,CACvD,IAAI0G,EACAE,EAAMe,KAAKkrD,MAAM3V,UAAUl9C,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKkrD,MAAM3V,UAAUx2C,GAAG4wC,eAAeC,MAAMzS,cAAclH,EAE/D,CAEA,OAAOA,EAAOgB,kBAAkBt1B,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAM,EAC5D,CAEA,SAASwvE,EAAYl7C,EAAQt0B,GAC3B,GAAI3B,KAAKkrD,MAAM3V,WAAav1C,KAAKkrD,MAAM3V,UAAUl9C,OAAQ,CACvD,IAAI0G,EACAE,EAAMe,KAAKkrD,MAAM3V,UAAUl9C,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKkrD,MAAM3V,UAAUx2C,GAAG4wC,eAAeC,MAAMzS,cAAclH,EAE/D,CAEA,OAAOA,EAAOe,aAAar1B,EAC7B,CAEA,SAASwpE,EAASxpE,GAChB,IAAIovE,EAAa,IAAIv+C,OAKrB,GAJAu+C,EAAWhhD,QAEX/vB,KAAKkrD,MAAMvb,eAAeC,MAAMzS,cAAc4zC,GAE1C/wE,KAAKkrD,MAAM3V,WAAav1C,KAAKkrD,MAAM3V,UAAUl9C,OAAQ,CACvD,IAAI0G,EACAE,EAAMe,KAAKkrD,MAAM3V,UAAUl9C,OAE/B,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiB,KAAKkrD,MAAM3V,UAAUx2C,GAAG4wC,eAAeC,MAAMzS,cAAc4zC,GAG7D,OAAOA,EAAW/5C,aAAar1B,EACjC,CAEA,OAAOovE,EAAW/5C,aAAar1B,EACjC,CAEA,SAASyvE,IACP,MAAO,CAAC,EAAG,EAAG,EAAG,EACnB,CAEA,OAAO,SAAUh1D,GACf,IAAIi1D,EAUJ,SAASxN,EAAmBhuE,GAC1B,OAAQA,GACN,IAAK,0BACL,IAAK,WACL,KAAK,EACH,OAAOguE,EAAmB9wB,eAE5B,KAAK,EACL,KAAK,EACL,IAAK,YACL,IAAK,YACL,IAAK,uBACH,OAAOs+B,EAET,KAAK,EACL,IAAK,qBACL,IAAK,UACL,IAAK,UACH,OAAOxN,EAAmBtpB,OAE5B,IAAK,uBACH,OAAOspB,EAAmB1wB,cAE5B,QACE,OAAO,KAEb,CAEA0wB,EAAmBiN,UAAYA,EAC/BjN,EAAmBsN,YAAcA,EACjCtN,EAAmBoN,WAAaA,EAChCpN,EAAmBoH,QAAUA,EAC7BpH,EAAmBmN,WAAaA,EAChCnN,EAAmBqH,UAAYA,EAC/BrH,EAAmBqN,aAAeA,EAClCrN,EAAmBuH,OAASH,EAC5BpH,EAAmBsH,SAAWA,EAC9BtH,EAAmBuN,YAAcA,EACjCvN,EAAmB7zB,iBAAmB5zB,EAAK4zB,iBAAiBt+B,KAAK0K,GACjEynD,EAAmB3Y,MAAQ9uC,EAE3B,IAAIk1D,EAAwB/xE,cAD5B8xE,EAAqBlB,6BAA6B/zD,EAAKuzB,eAAeC,OACR,eAuC9D,OAtCAxwC,OAAOmyE,iBAAiB1N,EAAoB,CAC1CwK,UAAW,CACTrvD,IAAK,WACH,OAAO5C,EAAKm5B,UAAUl9C,MACxB,GAEF+xC,OAAQ,CACNprB,IAAK,WACH,OAAO5C,EAAKm5B,UAAU,GAAG9C,cAC3B,GAEF64B,SAAU/rE,cAAc8xE,EAAoB,YAC5C59C,MAAOl0B,cAAc8xE,EAAoB,SACzCz0E,SAAU2C,cAAc8xE,EAAoB,YAC5C74B,QAASj5C,cAAc8xE,EAAoB,WAC3C9F,YAAa+F,EACbE,aAAcF,EACdr9C,UAAW,CACTjV,IAAK,WACH,OAAOqyD,CACT,GAEFtF,OAAQ,CACN/sD,IAAK,WACH,OAAO5C,EAAK4yB,SACd,KAGJ60B,EAAmB4N,UAAYr1D,EAAKrT,KAAK2D,GACzCm3D,EAAmBroD,MAAQY,EAAKrT,KAAK2e,IACrCm8C,EAAmB1pB,OAAS/9B,EAAKrT,KAAK4B,MACtCk5D,EAAmBxpE,OAA0B,IAAjB+hB,EAAKrT,KAAK0B,GAAW2R,EAAKrT,KAAK5C,EAAI,IAC/D09D,EAAmB/oE,MAAyB,IAAjBshB,EAAKrT,KAAK0B,GAAW2R,EAAKrT,KAAK+/B,EAAI,IAC9D+6B,EAAmB6G,QAAUtuD,EAAKrT,KAAKyD,GAAK4P,EAAKpR,KAAKmM,WAAWtB,UACjEguD,EAAmB8G,SAAWvuD,EAAKrT,KAAK0D,GAAK2P,EAAKpR,KAAKmM,WAAWtB,UAClEguD,EAAmB6N,MAAQt1D,EAAKrT,KAAKiM,GACrC6uD,EAAmBlxB,sBAtFnB,SAAgCD,GAC9BmxB,EAAmBvsB,KAAO,IAAI23B,qBAAqBv8B,EAAat2B,EAClE,EAqFAynD,EAAmB/wB,yBAnFnB,SAAmChC,GACjC+yB,EAAmBtpB,OAASzJ,CAC9B,EAkFO+yB,CACT,CACF,CAzL+B,GA2L3B8N,qBACK,SAAUC,EAAmBC,GAClC,OAAO,SAAUhuE,GAGf,OAFAA,OAAc5L,IAAR4L,EAAoB,EAAIA,IAEnB,EACF+tE,EAGFC,EAAoBhuE,EAAM,EACnC,CACF,EAGEiuE,kBACK,SAAUC,EAAcjC,GAC7B,IAAI8B,EAAoB,CACtBF,MAAOK,GAaT,OAVA,SAAwBluE,GAGtB,OAFAA,OAAc5L,IAAR4L,EAAoB,EAAIA,IAEnB,EACF+tE,EAGF9B,EAAcjsE,EAAM,EAC7B,CAGF,EAGEwuC,2BAA6B,WA4C/B,SAAS2/B,EAAqBjpE,EAAMy8B,EAAUsqC,EAAe1zD,GAC3D,SAAS61D,EAAep8E,GAKtB,IAJA,IAAIi7C,EAAU/nC,EAAKgoC,GACfhyC,EAAI,EACJE,EAAM6xC,EAAQz4C,OAEX0G,EAAIE,GAAK,CACd,GAAIpJ,IAASi7C,EAAQ/xC,GAAGiW,IAAMnf,IAASi7C,EAAQ/xC,GAAGmzE,IAAMr8E,IAASi7C,EAAQ/xC,GAAGsnC,GAC1E,OAAsB,IAAlByK,EAAQ/xC,GAAG0L,GACNumC,EAAejyC,GAGjBiyC,EAAejyC,KAGxBA,GAAK,CACP,CAEA,MAAM,IAAIiV,KACZ,CAEA,IAGIjV,EAHAozE,EAAiBR,qBAAqBM,EAAgBnC,GAEtD9+B,EAAiB,GAEjB/xC,EAAM8J,EAAKgoC,GAAG14C,OAElB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACF,IAAlBgK,EAAKgoC,GAAGhyC,GAAG0L,GACbumC,EAAe1wC,KAAK0xE,EAAqBjpE,EAAKgoC,GAAGhyC,GAAIymC,EAASwL,eAAejyC,GAAIymC,EAASwL,eAAejyC,GAAG+wE,cAAe1zD,IAE3H40B,EAAe1wC,KAAK8xE,EAAqB5sC,EAASwL,eAAejyC,GAAIgK,EAAKgoC,GAAGhyC,GAAG0L,GAAI2R,EAAM+1D,IA2B9F,MAvBgB,uBAAZppE,EAAKmpE,IACP9yE,OAAO0kE,eAAemO,EAAgB,QAAS,CAC7CjzD,IAAK,WACH,OAAOgyB,EAAe,IACxB,IAIJ5xC,OAAOmyE,iBAAiBU,EAAgB,CACtCI,cAAe,CACbrzD,IAAK,WACH,OAAOjW,EAAKupE,EACd,GAEFZ,MAAO,CACLt6E,MAAO2R,EAAKiM,IAEd86D,cAAe,CACb14E,MAAO+6E,KAGXF,EAAeM,QAAsB,IAAZxpE,EAAKypE,GAC9BP,EAAelG,OAASkG,EAAeM,QAChCN,CACT,CAEA,SAASG,EAAqB7tE,EAASzI,EAAMsgB,EAAM0zD,GACjD,IAAI2C,EAAqBnD,4BAA4B/qE,EAAQmC,GAc7D,OAJInC,EAAQmC,EAAEgsE,kBACZnuE,EAAQmC,EAAEgsE,iBAAiBZ,kBAAkB,GAAIhC,IATnD,WACE,OAAa,KAATh0E,EACKsgB,EAAKpR,KAAKoK,cAAc7Q,EAAQmC,EAAEL,GAGpCosE,GACT,CAOF,CAEA,MA1HS,CACP5/B,uBAGF,SAAgCz2B,EAAM0zD,GACpC,GAAI1zD,EAAKs3B,eAAgB,CACvB,IAEI30C,EAFAiyC,EAAiB,GACjB2hC,EAAcv2D,EAAKrT,KAAKgoC,GAExB9xC,EAAMmd,EAAKs3B,eAAe1C,eAAe34C,OAE7C,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBiyC,EAAe1wC,KAAK0xE,EAAqBW,EAAY5zE,GAAIqd,EAAKs3B,eAAe1C,eAAejyC,GAAI+wE,EAAe1zD,IAGjH,IAAI00B,EAAU10B,EAAKrT,KAAKgoC,IAAM,GAE1BkhC,EAAiB,SAAwBp8E,GAI3C,IAHAkJ,EAAI,EACJE,EAAM6xC,EAAQz4C,OAEP0G,EAAIE,GAAK,CACd,GAAIpJ,IAASi7C,EAAQ/xC,GAAGiW,IAAMnf,IAASi7C,EAAQ/xC,GAAGmzE,IAAMr8E,IAASi7C,EAAQ/xC,GAAGsnC,GAC1E,OAAO2K,EAAejyC,GAGxBA,GAAK,CACP,CAEA,OAAO,IACT,EAOA,OALAK,OAAO0kE,eAAemO,EAAgB,gBAAiB,CACrDjzD,IAAK,WACH,OAAO8xB,EAAQz4C,MACjB,IAEK45E,CACT,CAEA,OAAO,IACT,EAkFF,CA5HiC,GA8H7BW,mBACK,SAA8BpkD,EAAOqkD,EAAM/C,GAChD,IAAIrwE,EAAOozE,EAAKpqD,GAEhB,SAASmpD,EAAkB/tE,GACzB,MAAY,UAARA,GAA2B,UAARA,GAA2B,SAARA,GAA0B,SAARA,GAA0B,sBAARA,GAAuC,IAARA,EACpG+tE,EAAkB9oE,KAGpB,IACT,CAEA,IAAIqpE,EAAiBR,qBAAqBC,EAAmB9B,GAsC7D,OApCArwE,EAAKizE,iBAAiBZ,kBAAkB,OAAQK,IAChD/yE,OAAOmyE,iBAAiBK,EAAmB,CACzC9oE,KAAM,CACJkW,IAAK,WAKH,OAJIvf,EAAKwK,GACPxK,EAAK2sB,WAGA3sB,CACT,GAEF+uB,MAAO,CACLxP,IAAK,WAKH,OAJIvf,EAAKwK,GACPxK,EAAK2sB,WAGA3sB,CACT,GAEFiyE,MAAO,CACLt6E,MAAOo3B,EAAMxZ,IAEfqxB,GAAI,CACFjvC,MAAOo3B,EAAM6X,IAEfysC,cAAe,CACb17E,MAAOo3B,EAAM6X,IAEf6rC,GAAI,CACF96E,MAAOo3B,EAAM0jD,IAEfpC,cAAe,CACb14E,MAAO04E,KAGJ8B,CACT,EAGEt/B,yBAA2B,WAC7B,SAASygC,EAAgBloE,EAAQgoE,EAAM/C,GACrC,IACI/wE,EADA4C,EAAM,GAEN1C,EAAM4L,EAASA,EAAOxS,OAAS,EAEnC,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACH,OAAjB8L,EAAO9L,GAAG0L,GACZ9I,EAAIrB,KAAK0yE,EAAsBnoE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IACzB,OAAjBjlE,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAK2yE,EAAqBpoE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IACxB,OAAjBjlE,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAK4yE,EAAuBroE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IAC1B,OAAjBjlE,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAK6yE,EAAqBtoE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IACxB,OAAjBjlE,EAAO9L,GAAG0L,KACO,OAAjBI,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAK8yE,EAAwBvoE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IAC3B,OAAjBjlE,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAK+yE,EAAqBxoE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IACxB,OAAjBjlE,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAKsyE,mBAAmB/nE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IACtB,OAAjBjlE,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAKgzE,EAAqBzoE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IACxB,OAAjBjlE,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAKizE,EAAwB1oE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IAC3B,OAAjBjlE,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAKkzE,EAAyB3oE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IAC5B,OAAjBjlE,EAAO9L,GAAG0L,GACnB9I,EAAIrB,KAAKmzE,EAA6B5oE,EAAO9L,GAAI8zE,EAAK9zE,GAAI+wE,IAE1DnuE,EAAIrB,MAA6BuK,EAAO9L,GAAI8zE,EAAK9zE,GAuJrD,WACE,OAAO,IACT,KArJA,OAAO4C,CACT,CAkCA,SAASqxE,EAAsBxkD,EAAOqkD,EAAM/C,GAC1C,IAAI8B,EAAoB,SAA4Bx6E,GAClD,OAAQA,GACN,IAAK,qBACL,IAAK,WACL,KAAK,EACH,OAAOw6E,EAAkB1+B,QAK3B,QACE,OAAO0+B,EAAkB39C,UAE/B,EAEA29C,EAAkB9B,cAAgB6B,qBAAqBC,EAAmB9B,GAC1E,IAAI58B,EAjDN,SAAkC1kB,EAAOqkD,EAAM/C,GAC7C,IAAI4D,EAEA9B,EAAoB,SAA4Bx6E,GAIlD,IAHA,IAAI2H,EAAI,EACJE,EAAMy0E,EAAWr7E,OAEd0G,EAAIE,GAAK,CACd,GAAIy0E,EAAW30E,GAAG2yE,QAAUt6E,GAASs8E,EAAW30E,GAAGmzE,KAAO96E,GAASs8E,EAAW30E,GAAG+zE,gBAAkB17E,GAASs8E,EAAW30E,GAAGsnC,KAAOjvC,GAASs8E,EAAW30E,GAAG2oB,MAAQtwB,EAC9J,OAAOs8E,EAAW30E,GAGpBA,GAAK,CACP,CAEA,MAAqB,kBAAV3H,EACFs8E,EAAWt8E,EAAQ,GAGrB,IACT,EAEAw6E,EAAkB9B,cAAgB6B,qBAAqBC,EAAmB9B,GAC1E4D,EAAaX,EAAgBvkD,EAAMjjB,GAAIsnE,EAAKtnE,GAAIqmE,EAAkB9B,eAClE8B,EAAkBS,cAAgBqB,EAAWr7E,OAC7C,IAAIg5E,EAAqBsC,EAA0BnlD,EAAMjjB,GAAGijB,EAAMjjB,GAAGlT,OAAS,GAAIw6E,EAAKtnE,GAAGsnE,EAAKtnE,GAAGlT,OAAS,GAAIu5E,EAAkB9B,eAIjI,OAHA8B,EAAkB39C,UAAYo9C,EAC9BO,EAAkBkB,cAAgBtkD,EAAMolD,IACxChC,EAAkBF,MAAQljD,EAAMxZ,GACzB48D,CACT,CAmBgBiC,CAAyBrlD,EAAOqkD,EAAMjB,EAAkB9B,eAClEuB,EAAqBsC,EAA0BnlD,EAAMjjB,GAAGijB,EAAMjjB,GAAGlT,OAAS,GAAIw6E,EAAKtnE,GAAGsnE,EAAKtnE,GAAGlT,OAAS,GAAIu5E,EAAkB9B,eAajI,OAZA8B,EAAkB1+B,QAAUA,EAC5B0+B,EAAkB39C,UAAYo9C,EAC9BjyE,OAAO0kE,eAAe8N,EAAmB,QAAS,CAChD5yD,IAAK,WACH,OAAOwP,EAAMxZ,EACf,IAGF48D,EAAkBS,cAAgB7jD,EAAM8jD,GACxCV,EAAkBkB,cAAgBtkD,EAAM6X,GACxCurC,EAAkB58D,GAAKwZ,EAAMxZ,GAC7B48D,EAAkBM,GAAK1jD,EAAM0jD,GACtBN,CACT,CAEA,SAASqB,EAAqBzkD,EAAOqkD,EAAM/C,GACzC,SAAS8B,EAAkB/tE,GACzB,MAAY,UAARA,GAA2B,UAARA,EACd+tE,EAAkB5qE,MAGf,YAARnD,GAA6B,YAARA,EAChB+tE,EAAkBp5B,QAGpB,IACT,CAkBA,OAhBAp5C,OAAOmyE,iBAAiBK,EAAmB,CACzC5qE,MAAO,CACLgY,IAAKswD,4BAA4BuD,EAAK1lE,IAExCqrC,QAAS,CACPx5B,IAAKswD,4BAA4BuD,EAAKrnE,IAExCkmE,MAAO,CACLt6E,MAAOo3B,EAAMxZ,IAEfk9D,GAAI,CACF96E,MAAOo3B,EAAM0jD,MAGjBW,EAAK1lE,EAAEulE,iBAAiBZ,kBAAkB,QAAShC,IACnD+C,EAAKrnE,EAAEknE,iBAAiBZ,kBAAkB,UAAWhC,IAC9C8B,CACT,CAEA,SAAS6B,EAA6BjlD,EAAOqkD,EAAM/C,GACjD,SAAS8B,EAAkB/tE,GACzB,MAAY,gBAARA,GAAiC,gBAARA,EACpB+tE,EAAkBkC,WAGf,cAARjwE,GAA+B,cAARA,EAClB+tE,EAAkBmC,SAGf,YAARlwE,GAA6B,YAARA,EAChB+tE,EAAkBp5B,QAGpB,IACT,CA2BA,OAzBAp5C,OAAOmyE,iBAAiBK,EAAmB,CACzCkC,WAAY,CACV90D,IAAKswD,4BAA4BuD,EAAKzsE,IAExC2tE,SAAU,CACR/0D,IAAKswD,4BAA4BuD,EAAKnpE,IAExC8uC,QAAS,CACPx5B,IAAKswD,4BAA4BuD,EAAKrnE,IAExC1P,KAAM,CACJkjB,IAAK,WACH,MAAO,GACT,GAEF0yD,MAAO,CACLt6E,MAAOo3B,EAAMxZ,IAEfk9D,GAAI,CACF96E,MAAOo3B,EAAM0jD,MAGjBW,EAAKzsE,EAAEssE,iBAAiBZ,kBAAkB,cAAehC,IACzD+C,EAAKnpE,EAAEgpE,iBAAiBZ,kBAAkB,YAAahC,IACvD+C,EAAKrnE,EAAEknE,iBAAiBZ,kBAAkB,UAAWhC,IAC9C8B,CACT,CAUA,SAASsB,EAAuB1kD,EAAOqkD,EAAM/C,GAC3C,IAUI/wE,EAVAozE,EAAiBR,qBAAqBC,EAAmB9B,GAEzDkE,EAAqBrC,qBAAqBsC,EAAQ9B,GAEtD,SAAS+B,EAAoBn1E,GAC3BK,OAAO0kE,eAAemQ,EAAQzlD,EAAM1nB,EAAE/H,GAAGiW,GAAI,CAC3CgK,IAAKswD,4BAA4BuD,EAAK/rE,EAAE43C,UAAU3/C,GAAG2H,IAEzD,CAGA,IAAIzH,EAAMuvB,EAAM1nB,EAAI0nB,EAAM1nB,EAAEzO,OAAS,EACjC47E,EAAS,CAAC,EAEd,IAAKl1E,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBm1E,EAAoBn1E,GACpB8zE,EAAK/rE,EAAE43C,UAAU3/C,GAAG2H,EAAEgsE,iBAAiBsB,GAGzC,SAASpC,EAAkB/tE,GACzB,MAAY,UAARA,GAA2B,UAARA,EACd+tE,EAAkB5qE,MAGf,YAARnD,GAA6B,YAARA,EAChB+tE,EAAkBp5B,QAGf,iBAAR30C,GAAkC,iBAARA,EACrB+tE,EAAkBhR,YAGpB,IACT,CA2BA,OAzBAxhE,OAAOmyE,iBAAiBK,EAAmB,CACzC5qE,MAAO,CACLgY,IAAKswD,4BAA4BuD,EAAK1lE,IAExCqrC,QAAS,CACPx5B,IAAKswD,4BAA4BuD,EAAKrnE,IAExCo1D,YAAa,CACX5hD,IAAKswD,4BAA4BuD,EAAK/pC,IAExCqrC,KAAM,CACJn1D,IAAK,WACH,OAAOi1D,CACT,GAEFvC,MAAO,CACLt6E,MAAOo3B,EAAMxZ,IAEfk9D,GAAI,CACF96E,MAAOo3B,EAAM0jD,MAGjBW,EAAK1lE,EAAEulE,iBAAiBZ,kBAAkB,QAASK,IACnDU,EAAKrnE,EAAEknE,iBAAiBZ,kBAAkB,UAAWK,IACrDU,EAAK/pC,EAAE4pC,iBAAiBZ,kBAAkB,eAAgBK,IACnDP,CACT,CAEA,SAASuB,EAAqB3kD,EAAOqkD,EAAM/C,GACzC,SAAS8B,EAAkB/tE,GACzB,OAAIA,IAAQ2qB,EAAM9kB,EAAE28B,IAAc,QAARxiC,GAAyB,QAARA,EAClC+tE,EAAkB72D,IAGvBlX,IAAQ2qB,EAAMpoB,EAAEigC,GACXurC,EAAkBwC,MAGvBvwE,IAAQ2qB,EAAMhjB,EAAE66B,GACXurC,EAAkB3qE,OAGpB,IACT,CAEA,IAAIkrE,EAAiBR,qBAAqBC,EAAmB9B,GAuB7D,OArBA8B,EAAkBkB,cAAgBtkD,EAAM6X,GACxCwsC,EAAKzsE,EAAEssE,iBAAiBZ,kBAAkB,QAASK,IACnDU,EAAKnpE,EAAEgpE,iBAAiBZ,kBAAkB,MAAOK,IACjDU,EAAKrnE,EAAEknE,iBAAiBZ,kBAAkB,SAAUK,IACpDP,EAAkBkB,cAAgBtkD,EAAM6X,GACxCurC,EAAkB9B,cAAgBA,EAClC1wE,OAAOmyE,iBAAiBK,EAAmB,CACzCwC,MAAO,CACLp1D,IAAKswD,4BAA4BuD,EAAKzsE,IAExC2U,IAAK,CACHiE,IAAKswD,4BAA4BuD,EAAKnpE,IAExCzC,OAAQ,CACN+X,IAAKswD,4BAA4BuD,EAAKrnE,IAExCkmE,MAAO,CACLt6E,MAAOo3B,EAAMxZ,MAGjB48D,EAAkBM,GAAK1jD,EAAM0jD,GACtBN,CACT,CAEA,SAAS+B,EAA0BnlD,EAAOqkD,EAAM/C,GAC9C,SAAS8B,EAAkBx6E,GACzB,OAAIo3B,EAAM5hB,EAAEy5B,KAAOjvC,GAAmB,iBAAVA,EACnBw6E,EAAkBrG,YAGvB/8C,EAAMhjB,EAAE66B,KAAOjvC,GAAmB,YAAVA,EACnBw6E,EAAkBp5B,QAGvBhqB,EAAM9nB,EAAE2/B,KAAOjvC,GAAmB,aAAVA,EACnBw6E,EAAkBh1E,SAGvB4xB,EAAMloB,EAAE+/B,KAAOjvC,GAAmB,aAAVA,GAAkC,yBAAVA,EAC3Cw6E,EAAkBtG,SAGvB98C,EAAMpoB,EAAEigC,KAAOjvC,GAAmB,UAAVA,EACnBw6E,EAAkBn+C,MAGvBjF,EAAM3hB,IAAM2hB,EAAM3hB,GAAGw5B,KAAOjvC,GAAmB,SAAVA,EAChCw6E,EAAkBr+C,KAGvB/E,EAAM1hB,IAAM0hB,EAAM1hB,GAAGu5B,KAAOjvC,GAAmB,cAAVA,EAChCw6E,EAAkByC,SAGpB,IACT,CAEA,IAAIlC,EAAiBR,qBAAqBC,EAAmB9B,GA2C7D,OAzCA+C,EAAK5+C,UAAU8S,OAAOv7B,EAAEknE,iBAAiBZ,kBAAkB,UAAWK,IACtEU,EAAK5+C,UAAU8S,OAAOrgC,EAAEgsE,iBAAiBZ,kBAAkB,WAAYK,IACvEU,EAAK5+C,UAAU8S,OAAOn6B,EAAE8lE,iBAAiBZ,kBAAkB,eAAgBK,IAC3EU,EAAK5+C,UAAU8S,OAAO3gC,EAAEssE,iBAAiBZ,kBAAkB,QAASK,IACpEU,EAAK5+C,UAAU8S,OAAOzgC,EAAEosE,iBAAiBZ,kBAAkB,WAAYK,IAEnEU,EAAK5+C,UAAU8S,OAAOl6B,KACxBgmE,EAAK5+C,UAAU8S,OAAOl6B,GAAG6lE,iBAAiBZ,kBAAkB,OAAQK,IACpEU,EAAK5+C,UAAU8S,OAAOj6B,GAAG4lE,iBAAiBZ,kBAAkB,aAAcK,KAG5EU,EAAK5+C,UAAUxnB,GAAGimE,iBAAiBZ,kBAAkB,UAAWK,IAChE/yE,OAAOmyE,iBAAiBK,EAAmB,CACzCp5B,QAAS,CACPx5B,IAAKswD,4BAA4BuD,EAAK5+C,UAAU8S,OAAOv7B,IAEzD5O,SAAU,CACRoiB,IAAKswD,4BAA4BuD,EAAK5+C,UAAU8S,OAAOrgC,IAEzD6kE,YAAa,CACXvsD,IAAKswD,4BAA4BuD,EAAK5+C,UAAU8S,OAAOn6B,IAEzD6mB,MAAO,CACLzU,IAAKswD,4BAA4BuD,EAAK5+C,UAAU8S,OAAO3gC,IAEzDklE,SAAU,CACRtsD,IAAKswD,4BAA4BuD,EAAK5+C,UAAU8S,OAAOzgC,IAEzDitB,KAAM,CACJvU,IAAKswD,4BAA4BuD,EAAK5+C,UAAU8S,OAAOl6B,KAEzDwnE,SAAU,CACRr1D,IAAKswD,4BAA4BuD,EAAK5+C,UAAU8S,OAAOj6B,KAEzD4kE,MAAO,CACLt6E,MAAOo3B,EAAMxZ,MAGjB48D,EAAkBnnE,GAAK,KACvBmnE,EAAkBM,GAAK1jD,EAAM0jD,GAC7BN,EAAkB9B,cAAgBA,EAC3B8B,CACT,CAEA,SAASwB,EAAwB5kD,EAAOqkD,EAAM/C,GAC5C,SAAS8B,EAAkBx6E,GACzB,OAAIo3B,EAAM9nB,EAAE2/B,KAAOjvC,EACVw6E,EAAkBh1E,SAGvB4xB,EAAMpoB,EAAEigC,KAAOjvC,EACVw6E,EAAkB7oC,KAGpB,IACT,CAEA,IAAIopC,EAAiBR,qBAAqBC,EAAmB9B,GAE7D8B,EAAkBkB,cAAgBtkD,EAAM6X,GACxC,IAAI5mC,EAAsB,OAAfozE,EAAKpqD,GAAGhe,GAAcooE,EAAKpqD,GAAGhpB,KAAOozE,EAAKpqD,GAerD,OAdAhpB,EAAK2G,EAAEssE,iBAAiBZ,kBAAkB,OAAQK,IAClD1yE,EAAKiH,EAAEgsE,iBAAiBZ,kBAAkB,WAAYK,IACtD/yE,OAAOmyE,iBAAiBK,EAAmB,CACzC7oC,KAAM,CACJ/pB,IAAKswD,4BAA4B7vE,EAAK2G,IAExCxJ,SAAU,CACRoiB,IAAKswD,4BAA4B7vE,EAAKiH,IAExCgrE,MAAO,CACLt6E,MAAOo3B,EAAMxZ,MAGjB48D,EAAkBM,GAAK1jD,EAAM0jD,GACtBN,CACT,CAEA,SAASyB,EAAqB7kD,EAAOqkD,EAAM/C,GACzC,SAAS8B,EAAkBx6E,GACzB,OAAIo3B,EAAM9nB,EAAE2/B,KAAOjvC,EACVw6E,EAAkBh1E,SAGvB4xB,EAAMloB,EAAE+/B,KAAOjvC,EACVw6E,EAAkBtG,SAGvB98C,EAAMjkB,GAAG87B,KAAOjvC,EACXw6E,EAAkBhzD,OAGvB4P,EAAM0C,GAAGmV,KAAOjvC,GAAmB,kCAAVA,EACpBw6E,EAAkB0C,YAGvB9lD,EAAM2C,GAAGkV,KAAOjvC,EACXw6E,EAAkB2C,gBAGvB/lD,EAAMqC,IAAOrC,EAAMqC,GAAGwV,KAAOjvC,GAAmB,kCAAVA,EAItCo3B,EAAMsC,IAAMtC,EAAMsC,GAAGuV,KAAOjvC,EACvBw6E,EAAkB4C,eAGpB,KAPE5C,EAAkB6C,WAQ7B,CAEA,IAAItC,EAAiBR,qBAAqBC,EAAmB9B,GAEzDrwE,EAAsB,OAAfozE,EAAKpqD,GAAGhe,GAAcooE,EAAKpqD,GAAGhpB,KAAOozE,EAAKpqD,GAwCrD,OAvCAmpD,EAAkBkB,cAAgBtkD,EAAM6X,GACxC5mC,EAAKyxB,GAAGwhD,iBAAiBZ,kBAAkB,eAAgBK,IAC3D1yE,EAAK0xB,GAAGuhD,iBAAiBZ,kBAAkB,kBAAmBK,IAC9D1yE,EAAK8K,GAAGmoE,iBAAiBZ,kBAAkB,SAAUK,IACrD1yE,EAAKiH,EAAEgsE,iBAAiBZ,kBAAkB,WAAYK,IACtD1yE,EAAK6G,EAAEosE,iBAAiBZ,kBAAkB,WAAYK,IAElD3jD,EAAMqC,KACRpxB,EAAKoxB,GAAG6hD,iBAAiBZ,kBAAkB,eAAgBK,IAC3D1yE,EAAKqxB,GAAG4hD,iBAAiBZ,kBAAkB,kBAAmBK,KAGhE/yE,OAAOmyE,iBAAiBK,EAAmB,CACzCh1E,SAAU,CACRoiB,IAAKswD,4BAA4B7vE,EAAKiH,IAExC4kE,SAAU,CACRtsD,IAAKswD,4BAA4B7vE,EAAK6G,IAExCsY,OAAQ,CACNI,IAAKswD,4BAA4B7vE,EAAK8K,KAExC+pE,YAAa,CACXt1D,IAAKswD,4BAA4B7vE,EAAKyxB,KAExCqjD,eAAgB,CACdv1D,IAAKswD,4BAA4B7vE,EAAK0xB,KAExCsjD,YAAa,CACXz1D,IAAKswD,4BAA4B7vE,EAAKoxB,KAExC2jD,eAAgB,CACdx1D,IAAKswD,4BAA4B7vE,EAAKqxB,KAExC4gD,MAAO,CACLt6E,MAAOo3B,EAAMxZ,MAGjB48D,EAAkBM,GAAK1jD,EAAM0jD,GACtBN,CACT,CAEA,SAAS0B,EAAqB9kD,EAAOqkD,EAAM/C,GACzC,SAAS8B,EAAkBx6E,GACzB,OAAIo3B,EAAM9nB,EAAE2/B,KAAOjvC,EACVw6E,EAAkBh1E,SAGvB4xB,EAAMloB,EAAE+/B,KAAOjvC,EACVw6E,EAAkBvgD,UAGvB7C,EAAMpoB,EAAEigC,KAAOjvC,GAAmB,SAAVA,GAA8B,0BAAVA,EACvCw6E,EAAkB7oC,KAGpB,IACT,CAEA,IAAIopC,EAAiBR,qBAAqBC,EAAmB9B,GAEzDrwE,EAAsB,OAAfozE,EAAKpqD,GAAGhe,GAAcooE,EAAKpqD,GAAGhpB,KAAOozE,EAAKpqD,GAoBrD,OAnBAmpD,EAAkBkB,cAAgBtkD,EAAM6X,GACxC5mC,EAAKiH,EAAEgsE,iBAAiBZ,kBAAkB,WAAYK,IACtD1yE,EAAK2G,EAAEssE,iBAAiBZ,kBAAkB,OAAQK,IAClD1yE,EAAK6G,EAAEosE,iBAAiBZ,kBAAkB,WAAYK,IACtD/yE,OAAOmyE,iBAAiBK,EAAmB,CACzCh1E,SAAU,CACRoiB,IAAKswD,4BAA4B7vE,EAAKiH,IAExC2qB,UAAW,CACTrS,IAAKswD,4BAA4B7vE,EAAK6G,IAExCyiC,KAAM,CACJ/pB,IAAKswD,4BAA4B7vE,EAAK2G,IAExCsrE,MAAO,CACLt6E,MAAOo3B,EAAMxZ,MAGjB48D,EAAkBM,GAAK1jD,EAAM0jD,GACtBN,CACT,CAEA,SAAS2B,EAAwB/kD,EAAOqkD,EAAM/C,GAC5C,SAAS8B,EAAkBx6E,GACzB,OAAIo3B,EAAMloB,EAAE+/B,KAAOjvC,GAAmB,oBAAVA,EACnBw6E,EAAkB1uC,OAGpB,IACT,CAEA,IAAIivC,EAAiBR,qBAAqBC,EAAmB9B,GAEzDrwE,EAAOozE,EAYX,OAXAjB,EAAkBkB,cAAgBtkD,EAAM6X,GACxC5mC,EAAKunC,GAAG0rC,iBAAiBZ,kBAAkB,SAAUK,IACrD/yE,OAAOmyE,iBAAiBK,EAAmB,CACzC1uC,OAAQ,CACNlkB,IAAKswD,4BAA4B7vE,EAAKunC,KAExC0qC,MAAO,CACLt6E,MAAOo3B,EAAMxZ,MAGjB48D,EAAkBM,GAAK1jD,EAAM0jD,GACtBN,CACT,CAEA,SAAS4B,EAAyBhlD,EAAOqkD,EAAM/C,GAC7C,SAAS8B,EAAkBx6E,GACzB,OAAIo3B,EAAMrhB,EAAEk5B,KAAOjvC,GAAmB,WAAVA,EACnBw6E,EAAkBzrC,OAGvB3X,EAAMhjB,EAAE66B,KAAOjvC,GAAmB,WAAVA,EACnBw6E,EAAkB3qE,OAGpB,IACT,CAEA,IAAIkrE,EAAiBR,qBAAqBC,EAAmB9B,GAEzDrwE,EAAOozE,EAgBX,OAfAjB,EAAkBkB,cAAgBtkD,EAAM6X,GACxC5mC,EAAK0N,EAAEulE,iBAAiBZ,kBAAkB,SAAUK,IACpD1yE,EAAK+L,EAAEknE,iBAAiBZ,kBAAkB,SAAUK,IACpD/yE,OAAOmyE,iBAAiBK,EAAmB,CACzCzrC,OAAQ,CACNnnB,IAAKswD,4BAA4B7vE,EAAK0N,IAExClG,OAAQ,CACN+X,IAAKswD,4BAA4B7vE,EAAK+L,IAExCkmE,MAAO,CACLt6E,MAAOo3B,EAAMxZ,MAGjB48D,EAAkBM,GAAK1jD,EAAM0jD,GACtBN,CACT,CAEA,OAAO,SAAU/mE,EAAQgoE,EAAM/C,GAC7B,IAAI4D,EAEJ,SAASgB,EAAmBt9E,GAC1B,GAAqB,kBAAVA,EAGT,OAAc,KAFdA,OAAkBa,IAAVb,EAAsB,EAAIA,GAGzB04E,EAGF4D,EAAWt8E,EAAQ,GAM5B,IAHA,IAAI2H,EAAI,EACJE,EAAMy0E,EAAWr7E,OAEd0G,EAAIE,GAAK,CACd,GAAIy0E,EAAW30E,GAAG2yE,QAAUt6E,EAC1B,OAAOs8E,EAAW30E,GAGpBA,GAAK,CACP,CAEA,OAAO,IACT,CAUA,OAJA21E,EAAmB5E,cAAgB6B,qBAAqB+C,GAJxD,WACE,OAAO5E,CACT,IAGA4D,EAAaX,EAAgBloE,EAAQgoE,EAAM6B,EAAmB5E,eAC9D4E,EAAmBrC,cAAgBqB,EAAWr7E,OAC9Cq8E,EAAmBhD,MAAQ,WACpBgD,CACT,CACF,CAnnB+B,GAqnB3BniC,wBACK,SAAUn2B,GACf,IAAIu4D,EAEJ,SAAS9Q,EAAmBhuE,GAC1B,MACO,uBADCA,EAEGguE,EAAmB+Q,WAGnB,IAEb,CAyBA,OAvBAx1E,OAAO0kE,eAAeD,EAAoB,aAAc,CACtD7kD,IAAK,WACH5C,EAAK6tC,aAAa79B,WAClB,IAAIyoD,EAAcz4D,EAAK6tC,aAAa1G,YAAY38C,EAiBhD,OAfK+tE,GAAeE,IAAgBF,EAAYv9E,SAC9Cu9E,EAAc,IAAI7jB,OAAO+jB,IAGbz9E,MAAQy9E,GAAe,IAAI/jB,OAAO+jB,GAE9Cz1E,OAAO0kE,eAAe6Q,EAAa,QAAS,CAC1C31D,IAAK,WACH,MAAO,CACL81D,UAAW14D,EAAK6tC,aAAa1G,YAAYN,GAE7C,KAIG0xB,CACT,IAEK9Q,CACT,EAGF,SAASkR,QAAQ7yE,GAAmV,OAAtO6yE,QAArD,oBAAX5yE,QAAoD,kBAApBA,OAAOC,SAAmC,SAAiBF,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOhD,UAAY,gBAAkB+C,CAAK,EAAY6yE,QAAQ7yE,EAAM,CAEzX,IAAI8xC,iBAAmB,WACrB,IAyCIghC,EAAuB,SAA8B54D,GACvD,SAASw1D,EAAkBx6E,GACzB,MAAc,YAAVA,EACKw6E,EAAkBqD,mBAGpB,IACT,CAIA,OAFArD,EAAkBF,MAAQ,UAC1BE,EAAkBqD,iBAnDU,SAAiC74D,GAC7D,IAAI84D,EAAsB,GACtBC,EAAkB/4D,EAAK63B,iBAQ3B,SAASuQ,EAAeptD,GACtB,GAAI+9E,EAAgB/9E,GAIlB,OAHA89E,EAAsB99E,EAGW,WAA7B29E,QAFJI,EAAkBA,EAAgB/9E,IAGzBotD,EAGF2wB,EAGT,IAAIC,EAAoBh+E,EAAM8W,QAAQgnE,GAEtC,IAA2B,IAAvBE,EAA0B,CAC5B,IAAI55D,EAAQlE,SAASlgB,EAAMsgB,OAAO09D,EAAoBF,EAAoB78E,QAAS,IAGnF,MAAiC,WAA7B08E,QAFJI,EAAkBA,EAAgB35D,IAGzBgpC,EAGF2wB,CACT,CAEA,MAAO,EACT,CAEA,OAlCA,WAGE,OAFAD,EAAsB,GACtBC,EAAkB/4D,EAAK63B,iBAChBuQ,CACT,CA+BF,CAYuC6wB,CAAwBj5D,GACtDw1D,CACT,EAEA,OAAO,SAAUx1D,GACf,SAASs4D,EAAmBt9E,GAC1B,MAAc,SAAVA,EACKs9E,EAAmBY,cAGrB,IACT,CAIA,OAFAZ,EAAmBhD,MAAQ,OAC3BgD,EAAmBY,cAAgBN,EAAqB54D,GACjDs4D,CACT,CACF,CArEuB,GAuEnBhB,WAAa,CACfj/B,MAAOrC,yBACPtB,QAASuB,2BACTrnC,KAAMwnC,wBACNhkB,MAAO8jB,yBACPrH,KAAMsH,wBACNgjC,QAASvhC,kBAGX,SAASwhC,aAAa15E,GACpB,OAAO43E,WAAW53E,IAAS,IAC7B,CAEA,IAAI25E,kBAgFK,CACLC,kBAhFF,SAA2Bt5D,EAAMrT,EAAMtJ,GACjCsJ,EAAKnO,IACP6E,EAAKwK,GAAI,EACTxK,EAAK7E,GAAI,EACT6E,EAAKuqE,mBAAqBlD,kBAAkBkD,mBAC5CvqE,EAAKisB,gBAAgBprB,KAAKb,EAAKuqE,mBAAmB5tD,EAAMrT,EAAMtJ,GAAMiS,KAAKjS,IAE7E,EA0EEowE,eA3DF,SAAwBtpD,GACtB,IACIgM,EAAKvyB,KAAKy9B,eAAelX,GACzBiX,EAAKx9B,KAAKy9B,eAAelX,GAFhB,KAGTrvB,EAAQ,EAEZ,GAAIq7B,EAAGl6B,OAAQ,CACb,IAAI0G,EAEJ,IAAKA,EAAI,EAAGA,EAAIwzB,EAAGl6B,OAAQ0G,GAAK,EAC9B7H,GAAS+E,KAAK8G,IAAIy6B,EAAGz+B,GAAKwzB,EAAGxzB,GAAI,GAGnC7H,EAA2B,IAAnB+E,KAAKgH,KAAK/L,EACpB,MACEA,EAAQ,EAGV,OAAOA,CACT,EAyCEu1E,kBAvCF,SAA2BlmD,GACzB,QAAiBtuB,IAAb+H,KAAKmsB,IACP,OAAOnsB,KAAKmsB,IAGd,IAIIugD,EAIE3tE,EARFs/B,GAAS,KAET9L,EAAKvyB,KAAKy9B,eAAelX,GACzBiX,EAAKx9B,KAAKy9B,eAAelX,EAAW8X,GAGxC,GAAI9L,EAAGl6B,OAIL,IAHAq0E,EAAWjrE,iBAAiB,UAAW8wB,EAAGl6B,QAGrC0G,EAAI,EAAGA,EAAIwzB,EAAGl6B,OAAQ0G,GAAK,EAI9B2tE,EAAS3tE,IAAMy+B,EAAGz+B,GAAKwzB,EAAGxzB,IAAMs/B,OAGlCquC,GAAYlvC,EAAKjL,GAAM8L,EAGzB,OAAOquC,CACT,EAcEjvC,eA1EF,SAAwBlX,GAUtB,OATAA,GAAYvmB,KAAKoc,KAAKjF,WAAWtB,WACjC0Q,GAAYvmB,KAAK0mB,cAEA1mB,KAAK21E,eAAe3tD,YACnChoB,KAAK21E,eAAezuD,UAAYlnB,KAAK21E,eAAe3tD,UAAYzB,EAAWvmB,KAAK21E,eAAezuD,UAAY,EAC3GlnB,KAAK21E,eAAev+E,MAAQ4I,KAAKsmB,iBAAiBC,EAAUvmB,KAAK21E,gBACjE31E,KAAK21E,eAAe3tD,UAAYzB,GAG3BvmB,KAAK21E,eAAev+E,KAC7B,EAgEEw+E,qBAbF,WACE,OAAO51E,KAAK4mB,EACd,EAYE8rD,iBAVF,SAA0B5C,GACxB9vE,KAAK8vE,cAAgBA,CACvB,GAYF,SAAS+F,uBACP,SAAS/K,EAAQhvE,EAAMyY,EAAUuhE,GAC/B,IAAK91E,KAAKiK,IAAMjK,KAAKmnB,UACnB,OAAOnnB,KAAK4mB,GAGd9qB,EAAOA,EAAOA,EAAKuoC,cAAgB,GACnC,IAQI0xC,EACAC,EAmBAj3E,EACAE,EACAg3E,EA9BA9gE,EAAenV,KAAKgL,KAAKggB,cACzB7D,EAAYnnB,KAAKmnB,UACjB+uD,EAAe/uD,EAAUA,EAAU9uB,OAAS,GAAGuO,EAEnD,GAAIuO,GAAgB+gE,EAClB,OAAOl2E,KAAK4mB,GA2Bd,GArBKkvD,EAcHE,EAAgBE,GAHdH,EAHGxhE,EAGatY,KAAK2H,IAAIsyE,EAAel2E,KAAKoc,KAAKpR,KAAKmM,WAAWtB,UAAYtB,GAF9DtY,KAAKoH,IAAI,EAAG6yE,EAAel2E,KAAKoc,KAAKrT,KAAKyD,QARvD+H,GAAYA,EAAW4S,EAAU9uB,OAAS,KAC7Ckc,EAAW4S,EAAU9uB,OAAS,GAIhC09E,EAAgBG,GADhBF,EAAgB7uD,EAAUA,EAAU9uB,OAAS,EAAIkc,GAAU3N,IAgBhD,aAAT9K,GAGF,GAFiBG,KAAKkH,OAAOgS,EAAe6gE,GAAiBD,GAE5C,IAAM,EACrB,OAAO/1E,KAAKy9B,gBAAgBs4C,GAAiB5gE,EAAe6gE,GAAiBD,EAAgBC,GAAiBh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,OAE3I,IAAa,WAAT/Z,EAAmB,CAC5B,IAAIq6E,EAAQn2E,KAAKy9B,eAAeu4C,EAAgBh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GAC5EugE,EAAOp2E,KAAKy9B,eAAey4C,EAAel2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GAC1E/e,EAAUkJ,KAAKy9B,iBAAiBtoB,EAAe6gE,GAAiBD,EAAgBC,GAAiBh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GAEjIwgE,EAAUp6E,KAAKkH,OAAOgS,EAAe6gE,GAAiBD,GAE1D,GAAI/1E,KAAK4mB,GAAGvuB,OAAQ,CAIlB,IAFA4G,GADAg3E,EAAM,IAAIr9E,MAAMu9E,EAAM99E,SACZA,OAEL0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBk3E,EAAIl3E,IAAMq3E,EAAKr3E,GAAKo3E,EAAMp3E,IAAMs3E,EAAUv/E,EAAQiI,GAGpD,OAAOk3E,CACT,CAEA,OAAQG,EAAOD,GAASE,EAAUv/E,CACpC,CAAO,GAAa,aAATgF,EAAqB,CAC9B,IAAIw6E,EAAYt2E,KAAKy9B,eAAey4C,EAAel2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GAC/E0gE,EAAgBv2E,KAAKy9B,gBAAgBy4C,EAAe,MAASl2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GAEjG,GAAI7V,KAAK4mB,GAAGvuB,OAAQ,CAIlB,IAFA4G,GADAg3E,EAAM,IAAIr9E,MAAM09E,EAAUj+E,SAChBA,OAEL0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBk3E,EAAIl3E,GAAKu3E,EAAUv3E,IAAMu3E,EAAUv3E,GAAKw3E,EAAcx3E,MAAQoW,EAAe+gE,GAAgBl2E,KAAKgL,KAAKmM,WAAWtB,WAAa,KAGjI,OAAOogE,CACT,CAEA,OAAOK,GAA4CnhE,EAAe+gE,GAAgB,MAA9DI,EAAYC,EAClC,EAEA,OAAOv2E,KAAKy9B,iBAAiBtoB,EAAe6gE,GAAiBD,EAAgBC,GAAiBh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,EAChI,CAEA,SAAS+0D,EAAO9uE,EAAMyY,EAAUuhE,GAC9B,IAAK91E,KAAKiK,EACR,OAAOjK,KAAK4mB,GAGd9qB,EAAOA,EAAOA,EAAKuoC,cAAgB,GACnC,IAQI0xC,EACAG,EAmBAn3E,EACAE,EACAg3E,EA9BA9gE,EAAenV,KAAKgL,KAAKggB,cACzB7D,EAAYnnB,KAAKmnB,UACjB6uD,EAAgB7uD,EAAU,GAAGvgB,EAEjC,GAAIuO,GAAgB6gE,EAClB,OAAOh2E,KAAK4mB,GA2Bd,GArBKkvD,EAcHI,EAAeF,GAHbD,EAHGxhE,EAGatY,KAAK2H,IAAI5D,KAAKoc,KAAKpR,KAAKmM,WAAWtB,UAAYtB,GAF/CtY,KAAKoH,IAAI,EAAGrD,KAAKoc,KAAKrT,KAAK0D,GAAKupE,OAR7CzhE,GAAYA,EAAW4S,EAAU9uB,OAAS,KAC7Ckc,EAAW4S,EAAU9uB,OAAS,GAIhC09E,GADAG,EAAe/uD,EAAU5S,GAAU3N,GACJovE,GAepB,aAATl6E,GAGF,GAFiBG,KAAKkH,OAAO6yE,EAAgB7gE,GAAgB4gE,GAE5C,IAAM,EACrB,OAAO/1E,KAAKy9B,iBAAiBu4C,EAAgB7gE,GAAgB4gE,EAAgBC,GAAiBh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,OAE3H,IAAa,WAAT/Z,EAAmB,CAC5B,IAAIq6E,EAAQn2E,KAAKy9B,eAAeu4C,EAAgBh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GAC5EugE,EAAOp2E,KAAKy9B,eAAey4C,EAAel2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GAC1E/e,EAAUkJ,KAAKy9B,gBAAgBs4C,GAAiBC,EAAgB7gE,GAAgB4gE,EAAgBC,GAAiBh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GACjJwgE,EAAUp6E,KAAKkH,OAAO6yE,EAAgB7gE,GAAgB4gE,GAAiB,EAE3E,GAAI/1E,KAAK4mB,GAAGvuB,OAAQ,CAIlB,IAFA4G,GADAg3E,EAAM,IAAIr9E,MAAMu9E,EAAM99E,SACZA,OAEL0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBk3E,EAAIl3E,GAAKjI,EAAQiI,IAAMq3E,EAAKr3E,GAAKo3E,EAAMp3E,IAAMs3E,EAG/C,OAAOJ,CACT,CAEA,OAAOn/E,GAAWs/E,EAAOD,GAASE,CACpC,CAAO,GAAa,aAATv6E,EAAqB,CAC9B,IAAI06E,EAAax2E,KAAKy9B,eAAeu4C,EAAgBh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GACjF4gE,EAAiBz2E,KAAKy9B,gBAAgBu4C,EAAgB,MAASh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,GAEnG,GAAI7V,KAAK4mB,GAAGvuB,OAAQ,CAIlB,IAFA4G,GADAg3E,EAAM,IAAIr9E,MAAM49E,EAAWn+E,SACjBA,OAEL0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxBk3E,EAAIl3E,GAAKy3E,EAAWz3E,IAAMy3E,EAAWz3E,GAAK03E,EAAe13E,KAAOi3E,EAAgB7gE,GAAgB,KAGlG,OAAO8gE,CACT,CAEA,OAAOO,GAAcA,EAAaC,IAAmBT,EAAgB7gE,GAAgB,IACvF,EAEA,OAAOnV,KAAKy9B,gBAAgBs4C,IAAkBC,EAAgB7gE,GAAgB4gE,EAAgBC,IAAkBh2E,KAAKgL,KAAKmM,WAAWtB,UAAW,EAClJ,CAEA,SAASm1D,EAAOlwE,EAAO47E,GACrB,IAAK12E,KAAKiK,EACR,OAAOjK,KAAK4mB,GAMd,GAHA9rB,EAAyB,IAAhBA,GAAS,KAClB47E,EAAUz6E,KAAKkH,MAAMuzE,GAAW,KAEjB,EACb,OAAO12E,KAAK4mB,GAGd,IAMIxvB,EAQAu/E,EAdA1xE,EAAcjF,KAAKgL,KAAKggB,cAAgBhrB,KAAKgL,KAAKmM,WAAWtB,UAC7DuQ,EAAYnhB,EAAcnK,EAE1B87E,EAAkBF,EAAU,GADjBzxE,EAAcnK,EACmBsrB,IAAcswD,EAAU,GAAK,EACzE33E,EAAI,EACJgL,EAAI,EAWR,IAPE3S,EADE4I,KAAK4mB,GAAGvuB,OACFoJ,iBAAiB,UAAWzB,KAAK4mB,GAAGvuB,QAEpC,EAKH0G,EAAI23E,GAAS,CAGlB,GAFAC,EAAc32E,KAAKy9B,eAAerX,EAAYrnB,EAAI63E,GAE9C52E,KAAK4mB,GAAGvuB,OACV,IAAK0R,EAAI,EAAGA,EAAI/J,KAAK4mB,GAAGvuB,OAAQ0R,GAAK,EACnC3S,EAAM2S,IAAM4sE,EAAY5sE,QAG1B3S,GAASu/E,EAGX53E,GAAK,CACP,CAEA,GAAIiB,KAAK4mB,GAAGvuB,OACV,IAAK0R,EAAI,EAAGA,EAAI/J,KAAK4mB,GAAGvuB,OAAQ0R,GAAK,EACnC3S,EAAM2S,IAAM2sE,OAGdt/E,GAASs/E,EAGX,OAAOt/E,CACT,CAEA,SAASy/E,EAAwBxiE,GAC1BrU,KAAK82E,0BACR92E,KAAK82E,wBAA0B,CAC7BzwE,EAAG,IAAImsB,SAKX,IAAIyD,EAASj2B,KAAK82E,wBAAwBzwE,EAG1C,GAFA4vB,EAAOM,eAAev2B,KAAK08B,IAAI/nC,OAE3BqL,KAAK28B,uBAAyB,EAAG,CACnC,IAAIo6C,EAAS/2E,KAAK4M,EAAE6wB,eAAeppB,GACnC4hB,EAAOnC,WAAWijD,EAAO,GAAK/2E,KAAK4M,EAAE0e,MAAOyrD,EAAO,GAAK/2E,KAAK4M,EAAE0e,KAAMyrD,EAAO,GAAK/2E,KAAK4M,EAAE0e,KAC1F,CAEA,GAAItrB,KAAK28B,uBAAyB,EAAG,CACnC,IAAIlJ,EAAQzzB,KAAKoG,EAAEq3B,eAAeppB,GAClC4hB,EAAOxC,MAAMA,EAAM,GAAKzzB,KAAKoG,EAAEklB,KAAMmI,EAAM,GAAKzzB,KAAKoG,EAAEklB,KAAMmI,EAAM,GAAKzzB,KAAKoG,EAAEklB,KACjF,CAEA,GAAItrB,KAAK6M,IAAM7M,KAAK28B,uBAAyB,EAAG,CAC9C,IAAIpJ,EAAOvzB,KAAK6M,GAAG4wB,eAAeppB,GAC9BggE,EAAWr0E,KAAK8M,GAAG2wB,eAAeppB,GACtC4hB,EAAOzC,cAAcD,EAAOvzB,KAAK6M,GAAGye,KAAM+oD,EAAWr0E,KAAK8M,GAAGwe,KAC/D,CAEA,GAAItrB,KAAKsG,GAAKtG,KAAK28B,uBAAyB,EAAG,CAC7C,IAAI2uC,EAAWtrE,KAAKsG,EAAEm3B,eAAeppB,GACrC4hB,EAAOnD,QAAQw4C,EAAWtrE,KAAKsG,EAAEglB,KACnC,MAAO,IAAKtrB,KAAKsG,GAAKtG,KAAK28B,uBAAyB,EAAG,CACrD,IAAIq6C,EAAYh3E,KAAKi9B,GAAGQ,eAAeppB,GACnC4iE,EAAYj3E,KAAKg9B,GAAGS,eAAeppB,GACnC6iE,EAAYl3E,KAAK+8B,GAAGU,eAAeppB,GACnC8iE,EAAcn3E,KAAKkxB,GAAGuM,eAAeppB,GACzC4hB,EAAO7C,SAAS4jD,EAAYh3E,KAAKi9B,GAAG3R,MAAM6H,QAAQ8jD,EAAYj3E,KAAKg9B,GAAG1R,MAAM4H,QAAQgkD,EAAYl3E,KAAK+8B,GAAGzR,MAAM8H,SAAS+jD,EAAY,GAAKn3E,KAAKkxB,GAAG5F,MAAM6H,QAAQgkD,EAAY,GAAKn3E,KAAKkxB,GAAG5F,MAAM4H,QAAQikD,EAAY,GAAKn3E,KAAKkxB,GAAG5F,KAChO,CAEA,GAAItrB,KAAK+I,KAAKrC,GAAK1G,KAAK+I,KAAKrC,EAAEN,EAAG,CAChC,IAAIgxE,EAAYp3E,KAAK48B,GAAGa,eAAeppB,GACnCgjE,EAAYr3E,KAAK68B,GAAGY,eAAeppB,GAEvC,GAAIrU,KAAK+I,KAAKrC,EAAE+vB,EAAG,CACjB,IAAI6gD,EAAYt3E,KAAK88B,GAAGW,eAAeppB,GACvC4hB,EAAOnC,UAAUsjD,EAAYp3E,KAAK48B,GAAGtR,KAAM+rD,EAAYr3E,KAAK68B,GAAGvR,MAAOgsD,EAAYt3E,KAAK88B,GAAGxR,KAC5F,MACE2K,EAAOnC,UAAUsjD,EAAYp3E,KAAK48B,GAAGtR,KAAM+rD,EAAYr3E,KAAK68B,GAAGvR,KAAM,EAEzE,KAAO,CACL,IAAI1uB,EAAWoD,KAAK0G,EAAE+2B,eAAeppB,GACrC4hB,EAAOnC,UAAUl3B,EAAS,GAAKoD,KAAK0G,EAAE4kB,KAAM1uB,EAAS,GAAKoD,KAAK0G,EAAE4kB,MAAO1uB,EAAS,GAAKoD,KAAK0G,EAAE4kB,KAC/F,CAEA,OAAO2K,CACT,CAEA,SAASshD,IACP,OAAOv3E,KAAKqG,EAAEkoB,MAAM,IAAIiE,OAC1B,CAEA,IAAIoL,EAAuBrB,yBAAyBqB,qBAEpDrB,yBAAyBqB,qBAAuB,SAAUxhB,EAAMrT,EAAMvQ,GACpE,IAAIiH,EAAOm+B,EAAqBxhB,EAAMrT,EAAMvQ,GAS5C,OAPIiH,EAAKqtB,kBAAkBz0B,OACzBoH,EAAKg+B,eAAiBo5C,EAAwBnlE,KAAKjS,GAEnDA,EAAKg+B,eAAiB85C,EAA8B7lE,KAAKjS,GAG3DA,EAAKizE,iBAAmB+C,kBAAkB/C,iBACnCjzE,CACT,EAEA,IAAI+3E,EAAkB/qD,gBAAgBC,QAEtCD,gBAAgBC,QAAU,SAAUtQ,EAAMrT,EAAMjN,EAAMwvB,EAAM9yB,GAC1D,IAAIiH,EAAO+3E,EAAgBp7D,EAAMrT,EAAMjN,EAAMwvB,EAAM9yB,GAI/CiH,EAAKqsB,GACPrsB,EAAKg+B,eAAiBg4C,kBAAkBh4C,eAAe/rB,KAAKjS,GAE5DA,EAAKg+B,eAAiBg4C,kBAAkBG,qBAAqBlkE,KAAKjS,GAGpEA,EAAKizE,iBAAmB+C,kBAAkB/C,iBAC1CjzE,EAAKqrE,QAAUA,EACfrrE,EAAKmrE,OAASA,EACdnrE,EAAKurE,OAASA,EACdvrE,EAAKgtE,kBAAoBgJ,kBAAkBhJ,kBAAkB/6D,KAAKjS,GAClEA,EAAKowE,eAAiB4F,kBAAkB5F,eAAen+D,KAAKjS,GAC5DA,EAAKqsE,QAAqB,IAAX/iE,EAAK6D,EAAU7D,EAAKkB,EAAE5R,OAAS,EAC9CoH,EAAKqzE,cAAgB/pE,EAAKs9B,GAC1B,IAAIjvC,EAAQ,EAiBZ,OAfa,IAAT0E,IACF1E,EAAQqK,iBAAiB,UAAsB,IAAXsH,EAAK6D,EAAU7D,EAAKkB,EAAE,GAAG7D,EAAE/N,OAAS0Q,EAAKkB,EAAE5R,SAGjFoH,EAAKk2E,eAAiB,CACpB3tD,UAAW3pB,oBACX6oB,UAAW,EACX9vB,MAAOA,GAETq+E,kBAAkBC,kBAAkBt5D,EAAMrT,EAAMtJ,GAE5CA,EAAKwK,GACPzR,EAAUyzB,mBAAmBxsB,GAGxBA,CACT,EAwBA,IAAIg4E,EAAmCzoD,qBAAqB0oD,yBACxDC,EAA4C3oD,qBAAqB4oD,kCAErE,SAASC,IAAoB,CAE7BA,EAAiB14E,UAAY,CAC3B8uB,SAAU,SAAkBxuB,EAAM4U,GAC5BrU,KAAKiK,GACPjK,KAAKosB,WAGP,IAMIrtB,EANAuvB,EAAYtuB,KAAKqG,OAERpO,IAAToc,IACFia,EAAYtuB,KAAKy9B,eAAeppB,EAAM,IAIxC,IAAIpV,EAAMqvB,EAAU1N,QAChBqN,EAAWK,EAAU7uB,GACrBmf,EAAS0P,EAAUjoB,EACnB1E,EAAMI,iBAAiB9C,GAE3B,IAAKF,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EAEtB4C,EAAI5C,GADO,MAATU,GAAyB,MAATA,EACT,CAACwuB,EAASlvB,GAAG,GAAK6f,EAAO7f,GAAG,GAAIkvB,EAASlvB,GAAG,GAAK6f,EAAO7f,GAAG,IAE3D,CAACkvB,EAASlvB,GAAG,GAAIkvB,EAASlvB,GAAG,IAI1C,OAAO4C,CACT,EACAid,OAAQ,SAAgBvK,GACtB,OAAOrU,KAAKiuB,SAAS,IAAK5Z,EAC5B,EACAs1D,WAAY,SAAoBt1D,GAC9B,OAAOrU,KAAKiuB,SAAS,IAAK5Z,EAC5B,EACAu1D,YAAa,SAAqBv1D,GAChC,OAAOrU,KAAKiuB,SAAS,IAAK5Z,EAC5B,EACAyjE,SAAU,WACR,OAAO93E,KAAKqG,EAAE8G,CAChB,EACA4qE,YAAa,SAAqBx1D,EAAMlO,GACtC,IAAIia,EAAYtuB,KAAKqG,OAERpO,IAAToc,IACFia,EAAYtuB,KAAKy9B,eAAeppB,EAAM,IAGnCrU,KAAKg4E,kBACRh4E,KAAKg4E,gBAAkB7xD,IAAIvC,kBAAkB0K,IAW/C,IARA,IAMI/jB,EANAuZ,EAAiB9jB,KAAKg4E,gBACtB52D,EAAU0C,EAAe1C,QACzBoC,EAAYM,EAAexC,YAAciB,EACzCxjB,EAAI,EACJE,EAAMmiB,EAAQ/oB,OACd4/E,EAAoB,EAGjBl5E,EAAIE,GAAK,CACd,GAAIg5E,EAAoB72D,EAAQriB,GAAGmiB,YAAcsC,EAAW,CAC1D,IAAI00D,EAAYn5E,EACZo5E,EAAW7pD,EAAUnhB,GAAKpO,IAAME,EAAM,EAAI,EAAIF,EAAI,EAClD+oB,GAAetE,EAAYy0D,GAAqB72D,EAAQriB,GAAGmiB,YAC/D3W,EAAK4b,IAAIV,kBAAkB6I,EAAUjoB,EAAE6xE,GAAY5pD,EAAUjoB,EAAE8xE,GAAW7pD,EAAU9iB,EAAE0sE,GAAY5pD,EAAUvvB,EAAEo5E,GAAWrwD,EAAa1G,EAAQriB,IAC9I,KACF,CACEk5E,GAAqB72D,EAAQriB,GAAGmiB,YAGlCniB,GAAK,CACP,CAMA,OAJKwL,IACHA,EAAK+jB,EAAUnhB,EAAI,CAACmhB,EAAUjoB,EAAE,GAAG,GAAIioB,EAAUjoB,EAAE,GAAG,IAAM,CAACioB,EAAUjoB,EAAEioB,EAAU1N,QAAU,GAAG,GAAI0N,EAAUjoB,EAAEioB,EAAU1N,QAAU,GAAG,KAGlIrW,CACT,EACA6tE,aAAc,SAAsB71D,EAAMlO,EAAMgkE,GAElC,GAAR91D,EAEFA,EAAOviB,KAAKqG,EAAE8G,EACG,GAARoV,IAETA,EAAO,MAGT,IAAIL,EAAMliB,KAAK+3E,YAAYx1D,EAAMlO,GAC7B8N,EAAMniB,KAAK+3E,YAAYx1D,EAAO,KAAOlO,GACrCikE,EAAUn2D,EAAI,GAAKD,EAAI,GACvBq2D,EAAUp2D,EAAI,GAAKD,EAAI,GACvBs2D,EAAYv8E,KAAKgH,KAAKhH,KAAK8G,IAAIu1E,EAAS,GAAKr8E,KAAK8G,IAAIw1E,EAAS,IAEnE,OAAkB,IAAdC,EACK,CAAC,EAAG,GAGmB,YAAfH,EAA2B,CAACC,EAAUE,EAAWD,EAAUC,GAAa,EAAED,EAAUC,EAAWF,EAAUE,EAE5H,EACAC,cAAe,SAAuBl2D,EAAMlO,GAC1C,OAAOrU,KAAKo4E,aAAa71D,EAAMlO,EAAM,UACvC,EACAqkE,aAAc,SAAsBn2D,EAAMlO,GACxC,OAAOrU,KAAKo4E,aAAa71D,EAAMlO,EAAM,SACvC,EACAq+D,iBAAkB+C,kBAAkB/C,iBACpCj1C,eAAgBg4C,kBAAkBG,sBAEpCh3E,gBAAgB,CAACi5E,GAAmBJ,GACpC74E,gBAAgB,CAACi5E,GAAmBF,GACpCA,EAA0Cx4E,UAAUs+B,eA5IpD,SAA6BlX,GAmB3B,OAjBKvmB,KAAK21E,iBACR31E,KAAK21E,eAAiB,CACpBgD,WAAYtqD,UAAUE,MAAMvuB,KAAK4mB,IACjCM,UAAW,EACX0xD,SAAUv6E,sBAIdkoB,GAAYvmB,KAAKoc,KAAKjF,WAAWtB,WACjC0Q,GAAYvmB,KAAK0mB,cAEA1mB,KAAK21E,eAAeiD,WACnC54E,KAAK21E,eAAezuD,UAAYlnB,KAAK21E,eAAeiD,SAAWryD,EAAWvmB,KAAKkrB,SAAShE,UAAY,EACpGlnB,KAAK21E,eAAeiD,SAAWryD,EAC/BvmB,KAAKivB,iBAAiB1I,EAAUvmB,KAAK21E,eAAegD,WAAY34E,KAAK21E,iBAGhE31E,KAAK21E,eAAegD,UAC7B,EAyHAhB,EAA0Cx4E,UAAU6qE,mBAAqBlD,kBAAkBkD,mBAC3F,IAAI6O,EAAuB7pD,qBAAqB+nB,aAEhD/nB,qBAAqB+nB,aAAe,SAAU36B,EAAMrT,EAAMjN,EAAM6F,EAAKm3E,GACnE,IAAIr5E,EAAOo5E,EAAqBz8D,EAAMrT,EAAMjN,EAAM6F,EAAKm3E,GAcvD,OAbAr5E,EAAKqzE,cAAgB/pE,EAAKs9B,GAC1B5mC,EAAKksB,MAAO,EAEC,IAAT7vB,EACF25E,kBAAkBC,kBAAkBt5D,EAAMrT,EAAKwB,GAAI9K,GACjC,IAAT3D,GACT25E,kBAAkBC,kBAAkBt5D,EAAMrT,EAAKuC,GAAI7L,GAGjDA,EAAKwK,GACPmS,EAAK6P,mBAAmBxsB,GAGnBA,CACT,CACF,CAEA,SAASs5E,eACPlD,sBACF,CAEA,SAASmD,eAWP91B,aAAa/jD,UAAU85E,mBAAqB,SAAUxyB,EAAcxb,GAClE,IAAIxkB,EAAWzmB,KAAKk5E,oBAAoBjuC,GAExC,GAAIwb,EAAa7/C,IAAM6f,EAAU,CAC/B,IAAIwiC,EAAU,CAAC,EAIf,OAHAjpD,KAAKukD,SAAS0E,EAASxC,GACvBwC,EAAQriD,EAAI6f,EAASjf,WACrByhD,EAAQx7C,YAAa,EACdw7C,CACT,CAEA,OAAOxC,CACT,EAEAvD,aAAa/jD,UAAUqlD,eAAiB,WACtC,IAAI20B,EAAcn5E,KAAKsmD,kBACnB8yB,EAAiBp5E,KAAK01E,oBAE1B,OADA11E,KAAK8rB,GAAKqtD,GAAeC,EAClBp5E,KAAK8rB,EACd,EAEAo3B,aAAa/jD,UAAUu2E,kBA/BvB,WACE,OAAI11E,KAAK+I,KAAKjC,EAAElM,GACdoF,KAAKk5E,oBAAsBpS,kBAAkBkD,mBAAmBt4D,KAAK1R,KAA1C8mE,CAAgD9mE,KAAKoc,KAAMpc,KAAK+I,KAAKjC,EAAG9G,MACnGA,KAAK+rB,UAAU/rB,KAAKi5E,mBAAmBvnE,KAAK1R,QACrC,GAGF,IACT,CAwBF,CAEA,SAASq5E,aACPL,cACF,CAEA,SAASM,sBAAuB,CAEhCA,oBAAoBn6E,UAAY,CAC9Bo6E,gBAAiB,SAAyBC,EAAUC,GAClD,IAEIC,EACA36E,EAHA46E,EAAUxxE,SAAS,WAKvB,IAJAwxE,EAAQz8D,aAAa,SAAUs8D,GAI1Bz6E,EAAI,EAAGA,EAAI06E,EAAIphF,OAAQ0G,GAAK,GAC/B26E,EAAcvxE,SAAS,gBACX+U,aAAa,KAAMu8D,EAAI16E,IACnC46E,EAAQ5mE,YAAY2mE,GACpBC,EAAQ5mE,YAAY2mE,GAGtB,OAAOC,CACT,GAGF,IAAIC,kBAAoB,mFAExB,SAASC,cAAc1gF,EAAQ+gD,EAAe99B,EAAMrR,EAAIovC,GACtDn6C,KAAKk6C,cAAgBA,EACrB,IAAIP,EAAgBxxC,SAAS,iBAC7BwxC,EAAcz8B,aAAa,OAAQ,UACnCy8B,EAAcz8B,aAAa,8BAA+B,aAC1Dy8B,EAAcz8B,aAAa,SAAU08D,kBAAoB,QACzD55E,KAAK85E,aAAengC,EACpBA,EAAcz8B,aAAa,SAAUnS,EAAK,WAC1C5R,EAAO4Z,YAAY4mC,IACnBA,EAAgBxxC,SAAS,kBACX+U,aAAa,OAAQ,UACnCy8B,EAAcz8B,aAAa,8BAA+B,QAC1Dy8B,EAAcz8B,aAAa,SAAU,2CACrCy8B,EAAcz8B,aAAa,SAAUnS,EAAK,WAC1C5R,EAAO4Z,YAAY4mC,GACnB35C,KAAK+5E,aAAepgC,EACpB,IAAIggC,EAAU35E,KAAKu5E,gBAAgBxuE,EAAI,CAACovC,EAAQpvC,EAAK,UAAWA,EAAK,YACrE5R,EAAO4Z,YAAY4mE,EACrB,CAcA,SAASK,cAAc7gF,EAAQ+gD,EAAe99B,EAAMrR,GAClD/K,KAAKk6C,cAAgBA,EACrB,IAAIP,EAAgBxxC,SAAS,iBAC7BwxC,EAAcz8B,aAAa,OAAQ,UACnCy8B,EAAcz8B,aAAa,8BAA+B,QAC1Dy8B,EAAcz8B,aAAa,SAAU,2CACrCy8B,EAAcz8B,aAAa,SAAUnS,GACrC5R,EAAO4Z,YAAY4mC,GACnB35C,KAAK+5E,aAAepgC,CACtB,CAUA,SAASsgC,gBAAgBvgC,EAAKQ,EAAe99B,GAC3Cpc,KAAKk6E,aAAc,EACnBl6E,KAAKk6C,cAAgBA,EACrBl6C,KAAKoc,KAAOA,EACZpc,KAAKyvB,MAAQ,EACf,CAgIA,SAAS0qD,iBAAiBhhF,EAAQ+gD,EAAe99B,EAAMrR,GACrD/K,KAAKk6C,cAAgBA,EACrB,IAAIP,EAAgBxxC,SAAS,iBAC7BwxC,EAAcz8B,aAAa,OAAQ,UACnCy8B,EAAcz8B,aAAa,8BAA+B,aAC1Dy8B,EAAcz8B,aAAa,SAAU,wFACrC/jB,EAAO4Z,YAAY4mC,GACnB,IAAIygC,EAAsBjyE,SAAS,uBACnCiyE,EAAoBl9D,aAAa,8BAA+B,QAChEk9D,EAAoBl9D,aAAa,SAAUnS,GAC3C/K,KAAK+5E,aAAeK,EACpB,IAAIC,EAAUlyE,SAAS,WACvBkyE,EAAQn9D,aAAa,OAAQ,SAC7Bk9D,EAAoBrnE,YAAYsnE,GAChCr6E,KAAKq6E,QAAUA,EACf,IAAIC,EAAUnyE,SAAS,WACvBmyE,EAAQp9D,aAAa,OAAQ,SAC7Bk9D,EAAoBrnE,YAAYunE,GAChCt6E,KAAKs6E,QAAUA,EACf,IAAIC,EAAUpyE,SAAS,WACvBoyE,EAAQr9D,aAAa,OAAQ,SAC7Bk9D,EAAoBrnE,YAAYwnE,GAChCv6E,KAAKu6E,QAAUA,EACfphF,EAAO4Z,YAAYqnE,EACrB,CAgBA,SAASI,mBAAmBrhF,EAAQ+gD,EAAe99B,EAAMrR,GACvD/K,KAAKk6C,cAAgBA,EACrB,IAAIlJ,EAAiBhxC,KAAKk6C,cAAclJ,eACpCopC,EAAsBjyE,SAAS,wBAE/B6oC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,KACzRrG,KAAKq6E,QAAUr6E,KAAKy6E,aAAa,UAAWL,KAI1CppC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,KACzRrG,KAAKs6E,QAAUt6E,KAAKy6E,aAAa,UAAWL,KAI1CppC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,KACzRrG,KAAKu6E,QAAUv6E,KAAKy6E,aAAa,UAAWL,KAI1CppC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,GAAW2qC,EAAe,IAAItqC,EAAEuD,GAAgC,IAA3B+mC,EAAe,IAAItqC,EAAEL,KACzRrG,KAAK06E,QAAU16E,KAAKy6E,aAAa,UAAWL,KAI1Cp6E,KAAKq6E,SAAWr6E,KAAKs6E,SAAWt6E,KAAKu6E,SAAWv6E,KAAK06E,WACvDN,EAAoBl9D,aAAa,8BAA+B,QAChE/jB,EAAO4Z,YAAYqnE,KAGjBppC,EAAe,GAAGtqC,EAAEuD,GAA+B,IAA1B+mC,EAAe,GAAGtqC,EAAEL,GAAW2qC,EAAe,GAAGtqC,EAAEuD,GAA+B,IAA1B+mC,EAAe,GAAGtqC,EAAEL,GAAW2qC,EAAe,GAAGtqC,EAAEuD,GAA+B,IAA1B+mC,EAAe,GAAGtqC,EAAEL,GAAW2qC,EAAe,GAAGtqC,EAAEuD,GAA+B,IAA1B+mC,EAAe,GAAGtqC,EAAEL,GAAW2qC,EAAe,GAAGtqC,EAAEuD,GAA+B,IAA1B+mC,EAAe,GAAGtqC,EAAEL,MAC/Q+zE,EAAsBjyE,SAAS,wBACX+U,aAAa,8BAA+B,QAChEk9D,EAAoBl9D,aAAa,SAAUnS,GAC3C5R,EAAO4Z,YAAYqnE,GACnBp6E,KAAK26E,gBAAkB36E,KAAKy6E,aAAa,UAAWL,GACpDp6E,KAAK46E,gBAAkB56E,KAAKy6E,aAAa,UAAWL,GACpDp6E,KAAK66E,gBAAkB76E,KAAKy6E,aAAa,UAAWL,GAExD,CA4EA,SAASU,oBAAoB3hF,EAAQ+gD,EAAe99B,EAAMrR,EAAIovC,GAC5D,IAAI4gC,EAAmB7gC,EAAc1hD,UAAU2e,WAAW04B,aAAaogB,WACnEA,EAAa/V,EAAcnxC,KAAK4/C,IAAMoyB,EAC1C5hF,EAAO+jB,aAAa,IAAK+yC,EAAWr1D,GAAKmgF,EAAiBngF,GAC1DzB,EAAO+jB,aAAa,IAAK+yC,EAAWl1D,GAAKggF,EAAiBhgF,GAC1D5B,EAAO+jB,aAAa,QAAS+yC,EAAWn1D,OAASigF,EAAiBjgF,OAClE3B,EAAO+jB,aAAa,SAAU+yC,EAAW51D,QAAU0gF,EAAiB1gF,QACpE2F,KAAKk6C,cAAgBA,EACrB,IAAI8gC,EAAiB7yE,SAAS,kBAC9B6yE,EAAe99D,aAAa,KAAM,eAClC89D,EAAe99D,aAAa,SAAUnS,EAAK,kBAC3CiwE,EAAe99D,aAAa,eAAgB,KAC5Cld,KAAKg7E,eAAiBA,EACtB7hF,EAAO4Z,YAAYioE,GACnB,IAAIC,EAAW9yE,SAAS,YACxB8yE,EAAS/9D,aAAa,KAAM,MAC5B+9D,EAAS/9D,aAAa,KAAM,KAC5B+9D,EAAS/9D,aAAa,KAAMnS,EAAK,kBACjCkwE,EAAS/9D,aAAa,SAAUnS,EAAK,kBACrC/K,KAAKi7E,SAAWA,EAChB9hF,EAAO4Z,YAAYkoE,GACnB,IAAIC,EAAU/yE,SAAS,WACvB+yE,EAAQh+D,aAAa,cAAe,WACpCg+D,EAAQh+D,aAAa,gBAAiB,KACtCg+D,EAAQh+D,aAAa,SAAUnS,EAAK,kBACpC/K,KAAKk7E,QAAUA,EACf/hF,EAAO4Z,YAAYmoE,GACnB,IAAIC,EAAchzE,SAAS,eAC3BgzE,EAAYj+D,aAAa,KAAMnS,EAAK,kBACpCowE,EAAYj+D,aAAa,MAAOnS,EAAK,kBACrCowE,EAAYj+D,aAAa,WAAY,MACrCi+D,EAAYj+D,aAAa,SAAUnS,EAAK,kBACxC5R,EAAO4Z,YAAYooE,GACnB,IAAIxB,EAAU35E,KAAKu5E,gBAAgBxuE,EAAI,CAACA,EAAK,iBAAkBovC,IAC/DhhD,EAAO4Z,YAAY4mE,EACrB,CAlWA/6E,gBAAgB,CAAC06E,qBAAsBO,eAEvCA,cAAc16E,UAAU4a,YAAc,SAAUsjB,GAC9C,GAAIA,GAAer9B,KAAKk6C,cAAc3uB,KAAM,CAC1C,IAAI6vD,EAAap7E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EACpDg1E,EAAar7E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EACpDmyC,EAAUx4C,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAI,IACzDrG,KAAK85E,aAAa58D,aAAa,SAAU08D,kBAAoB,IAAMphC,EAAU,MAC7Ex4C,KAAK+5E,aAAa78D,aAAa,SAAUm+D,EAAW,GAAKD,EAAW,GAAK,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,aAC/O,CACF,EAaApB,cAAc76E,UAAU4a,YAAc,SAAUsjB,GAC9C,GAAIA,GAAer9B,KAAKk6C,cAAc3uB,KAAM,CAC1C,IAAIvkB,EAAQhH,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAC/CmyC,EAAUx4C,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EACrDrG,KAAK+5E,aAAa78D,aAAa,SAAU,WAAalW,EAAM,GAAK,YAAcA,EAAM,GAAK,YAAcA,EAAM,GAAK,UAAYwxC,EAAU,KAC3I,CACF,EASAyhC,gBAAgB96E,UAAUk6E,WAAa,WACrC,IACIvwE,EACAwyE,EACAv8E,EACAE,EAJAs8E,EAAev7E,KAAKoc,KAAKo3B,aAAawtB,UAAYhhE,KAAKoc,KAAKo3B,aAAagoC,WAmB7E,IAbiD,IAA7Cx7E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,GACzCpH,EAAMe,KAAKoc,KAAKs2B,YAAYpoC,gBAAgBjS,OAC5C0G,EAAI,GAGJE,EAAU,GADVF,EAAIiB,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAI,IAIjDi1E,EAAYnzE,SAAS,MACX+U,aAAa,OAAQ,QAC/Bo+D,EAAUp+D,aAAa,iBAAkB,SACzCo+D,EAAUp+D,aAAa,oBAAqB,GAEpCne,EAAIE,EAAKF,GAAK,EACpB+J,EAAOX,SAAS,QAChBmzE,EAAUvoE,YAAYjK,GACtB9I,KAAKyvB,MAAMnvB,KAAK,CACdoG,EAAGoC,EACH+qB,EAAG90B,IAIP,GAAkD,IAA9CiB,KAAKk6C,cAAclJ,eAAe,IAAItqC,EAAEL,EAAS,CACnD,IAAIixC,EAAOnvC,SAAS,QAChB4C,EAAK/E,kBACTsxC,EAAKp6B,aAAa,KAAMnS,GACxBusC,EAAKp6B,aAAa,YAAa,SAC/Bo6B,EAAKvkC,YAAYuoE,GACjBt7E,KAAKoc,KAAKjF,WAAWC,KAAKrE,YAAYukC,GACtC,IAAI/wC,EAAI4B,SAAS,KAGjB,IAFA5B,EAAE2W,aAAa,OAAQ,OAASxe,kBAAoB,IAAMqM,EAAK,KAExDwwE,EAAa,IAClBh1E,EAAEwM,YAAYwoE,EAAa,IAG7Bv7E,KAAKoc,KAAKo3B,aAAazgC,YAAYxM,GACnCvG,KAAKu8C,OAASjF,EACdgkC,EAAUp+D,aAAa,SAAU,OACnC,MAAO,GAAkD,IAA9Cld,KAAKk6C,cAAclJ,eAAe,IAAItqC,EAAEL,GAAyD,IAA9CrG,KAAKk6C,cAAclJ,eAAe,IAAItqC,EAAEL,EAAS,CAC7G,GAAkD,IAA9CrG,KAAKk6C,cAAclJ,eAAe,IAAItqC,EAAEL,EAG1C,IAFAk1E,EAAev7E,KAAKoc,KAAKo3B,aAAawtB,UAAYhhE,KAAKoc,KAAKo3B,aAAagoC,WAElED,EAAaljF,QAClB2H,KAAKoc,KAAKo3B,aAAa/E,YAAY8sC,EAAa,IAIpDv7E,KAAKoc,KAAKo3B,aAAazgC,YAAYuoE,GACnCt7E,KAAKoc,KAAKo3B,aAAaioC,gBAAgB,QACvCH,EAAUp+D,aAAa,SAAU,OACnC,CAEAld,KAAKk6E,aAAc,EACnBl6E,KAAK07E,WAAaJ,CACpB,EAEArB,gBAAgB96E,UAAU4a,YAAc,SAAUsjB,GAKhD,IAAIt+B,EAJCiB,KAAKk6E,aACRl6E,KAAKq5E,aAIP,IACI/hC,EACAxuC,EAFA7J,EAAMe,KAAKyvB,MAAMp3B,OAIrB,IAAK0G,EAAI,EAAGA,EAAIE,EAAKF,GAAK,EACxB,IAAyB,IAArBiB,KAAKyvB,MAAM1wB,GAAG80B,IAChByjB,EAAOt3C,KAAKoc,KAAKs2B,YAAY4D,SAASt2C,KAAKyvB,MAAM1wB,GAAG80B,GACpD/qB,EAAO9I,KAAKyvB,MAAM1wB,GAAG2H,GAEjB22B,GAAer9B,KAAKk6C,cAAc3uB,MAAQ+rB,EAAK73C,KAAK8rB,OACtDziB,EAAKoU,aAAa,IAAKo6B,EAAKN,UAG1B3Z,GAAer9B,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,MAAQvrB,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,MAAQvrB,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,MAAQvrB,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,MAAQ+rB,EAAK73C,KAAK8rB,MAAM,CAC7N,IAAIowD,EAEJ,GAAiD,IAA7C37E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,GAAwD,MAA7CrG,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAW,CACtG,IAAID,EAAmG,IAA/FnK,KAAKsH,IAAIvD,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAGrG,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,GAC9FqD,EAAmG,IAA/FzN,KAAKoH,IAAIrD,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAGrG,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,GAC9FutB,EAAI9qB,EAAK8yE,iBACbD,EAAiB,SAAW/nD,EAAIxtB,EAAI,IACpC,IAGI2D,EAHA8xE,EAAajoD,GAAKlqB,EAAItD,GACtBsS,EAAU,EAA+C,EAA3C1Y,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAQrG,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAI,IACxGy1E,EAAQ7/E,KAAKkH,MAAM04E,EAAanjE,GAGpC,IAAK3O,EAAI,EAAGA,EAAI+xE,EAAO/xE,GAAK,EAC1B4xE,GAAkB,KAAkD,EAA3C37E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAQrG,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAI,IAAO,IAG5Hs1E,GAAkB,KAAW,GAAJ/nD,EAAS,MACpC,MACE+nD,EAAiB,KAAkD,EAA3C37E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAQrG,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAI,IAGpHyC,EAAKoU,aAAa,mBAAoBy+D,EACxC,CAYJ,IARIt+C,GAAer9B,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,OACxDvrB,KAAK07E,WAAWx+D,aAAa,eAA2D,EAA3Cld,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,IAGlFg3B,GAAer9B,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,OACxDvrB,KAAK07E,WAAWx+D,aAAa,UAAWld,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,IAG/B,IAA9CrG,KAAKk6C,cAAclJ,eAAe,IAAItqC,EAAEL,GAAyD,IAA9CrG,KAAKk6C,cAAclJ,eAAe,IAAItqC,EAAEL,KACzFg3B,GAAer9B,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,MAAM,CAC9D,IAAIvkB,EAAQhH,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EACnDrG,KAAK07E,WAAWx+D,aAAa,SAAU,OAASha,QAAmB,IAAX8D,EAAM,IAAY,IAAM9D,QAAmB,IAAX8D,EAAM,IAAY,IAAM9D,QAAmB,IAAX8D,EAAM,IAAY,IAC5I,CAEJ,EA4BAmzE,iBAAiBh7E,UAAU4a,YAAc,SAAUsjB,GACjD,GAAIA,GAAer9B,KAAKk6C,cAAc3uB,KAAM,CAC1C,IAAIwwD,EAAS/7E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAChD21E,EAASh8E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAChD41E,EAASj8E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAChD61E,EAASD,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDI,EAASF,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDK,EAASH,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACxD/7E,KAAKq6E,QAAQn9D,aAAa,cAAeg/D,GACzCl8E,KAAKs6E,QAAQp9D,aAAa,cAAei/D,GACzCn8E,KAAKu6E,QAAQr9D,aAAa,cAAek/D,EAC3C,CACF,EA2CA5B,mBAAmBr7E,UAAUs7E,aAAe,SAAU3+E,EAAMs+E,GAC1D,IAAIx9B,EAASz0C,SAASrM,GAGtB,OAFA8gD,EAAO1/B,aAAa,OAAQ,SAC5Bk9D,EAAoBrnE,YAAY6pC,GACzBA,CACT,EAEA49B,mBAAmBr7E,UAAUk9E,cAAgB,SAAUC,EAAYC,EAAYC,EAAOC,EAAaC,GAcjG,IAbA,IAEIn6D,EAMAo6D,EARAvuD,EAAM,EAGN7qB,EAAMtH,KAAKsH,IAAI+4E,EAAYC,GAC3Bl5E,EAAMpH,KAAKoH,IAAIi5E,EAAYC,GAC3BK,EAAQhkF,MAAM0G,KAAK,KAAM,CAC3BjH,OALa,MAQXqE,EAAM,EACNmgF,EAAcH,EAAcD,EAC5BK,EAAaP,EAAaD,EAEvBluD,GAAO,KAIVuuD,GAHFp6D,EAAO6L,EAAM,MAED7qB,EACGu5E,EAAa,EAAIJ,EAAcD,EACnCl6D,GAAQlf,EACJy5E,EAAa,EAAIL,EAAcC,EAE/BD,EAAcI,EAAc5gF,KAAK8G,KAAKwf,EAAO+5D,GAAcQ,EAAY,EAAIN,GAG1FI,EAAMlgF,GAAOigF,EACbjgF,GAAO,EACP0xB,GAAO,IAAM,IAGf,OAAOwuD,EAAM7tE,KAAK,IACpB,EAEAyrE,mBAAmBr7E,UAAU4a,YAAc,SAAUsjB,GACnD,GAAIA,GAAer9B,KAAKk6C,cAAc3uB,KAAM,CAC1C,IAAI1nB,EACAmtC,EAAiBhxC,KAAKk6C,cAAclJ,eAEpChxC,KAAK26E,kBAAoBt9C,GAAe2T,EAAe,GAAGtqC,EAAE6kB,MAAQylB,EAAe,GAAGtqC,EAAE6kB,MAAQylB,EAAe,GAAGtqC,EAAE6kB,MAAQylB,EAAe,GAAGtqC,EAAE6kB,MAAQylB,EAAe,GAAGtqC,EAAE6kB,QAC9K1nB,EAAM7D,KAAKq8E,cAAcrrC,EAAe,GAAGtqC,EAAEL,EAAG2qC,EAAe,GAAGtqC,EAAEL,EAAG2qC,EAAe,GAAGtqC,EAAEL,EAAG2qC,EAAe,GAAGtqC,EAAEL,EAAG2qC,EAAe,GAAGtqC,EAAEL,GACzIrG,KAAK26E,gBAAgBz9D,aAAa,cAAerZ,GACjD7D,KAAK46E,gBAAgB19D,aAAa,cAAerZ,GACjD7D,KAAK66E,gBAAgB39D,aAAa,cAAerZ,IAG/C7D,KAAKq6E,UAAYh9C,GAAe2T,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,QAC3K1nB,EAAM7D,KAAKq8E,cAAcrrC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,GAC9IrG,KAAKq6E,QAAQn9D,aAAa,cAAerZ,IAGvC7D,KAAKs6E,UAAYj9C,GAAe2T,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,QAC3K1nB,EAAM7D,KAAKq8E,cAAcrrC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,GAC9IrG,KAAKs6E,QAAQp9D,aAAa,cAAerZ,IAGvC7D,KAAKu6E,UAAYl9C,GAAe2T,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,QAC3K1nB,EAAM7D,KAAKq8E,cAAcrrC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,GAC9IrG,KAAKu6E,QAAQr9D,aAAa,cAAerZ,IAGvC7D,KAAK06E,UAAYr9C,GAAe2T,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,MAAQylB,EAAe,IAAItqC,EAAE6kB,QAC3K1nB,EAAM7D,KAAKq8E,cAAcrrC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,EAAG2qC,EAAe,IAAItqC,EAAEL,GAC9IrG,KAAK06E,QAAQx9D,aAAa,cAAerZ,GAE7C,CACF,EAuCAjF,gBAAgB,CAAC06E,qBAAsBwB,qBAEvCA,oBAAoB37E,UAAU4a,YAAc,SAAUsjB,GACpD,GAAIA,GAAer9B,KAAKk6C,cAAc3uB,KAAM,CAK1C,IAJI8R,GAAer9B,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,OACxDvrB,KAAKg7E,eAAe99D,aAAa,eAAgBld,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAI,GAG1Fg3B,GAAer9B,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,KAAM,CAC9D,IAAIwxD,EAAM/8E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EACjDrG,KAAKk7E,QAAQh+D,aAAa,cAAe7V,SAASpL,KAAKoI,MAAe,IAAT04E,EAAI,IAAW9gF,KAAKoI,MAAe,IAAT04E,EAAI,IAAW9gF,KAAKoI,MAAe,IAAT04E,EAAI,KACvH,CAMA,IAJI1/C,GAAer9B,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,OACxDvrB,KAAKk7E,QAAQh+D,aAAa,gBAAiBld,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAI,KAGpFg3B,GAAer9B,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,MAAQvrB,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAE6kB,KAAM,CAC7G,IAAI8b,EAAWrnC,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAClDmrB,GAASxxB,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAI,IAAMrC,UAC1DpJ,EAAIysC,EAAWprC,KAAKwuB,IAAI+G,GACxBz2B,EAAIssC,EAAWprC,KAAK2tB,IAAI4H,GAC5BxxB,KAAKi7E,SAAS/9D,aAAa,KAAMtiB,GACjCoF,KAAKi7E,SAAS/9D,aAAa,KAAMniB,EACnC,CACF,CACF,EAEA,IAAIiiF,iBAAmB,GAEvB,SAASC,gBAAgBC,EAAYhjC,EAAe99B,GAClDpc,KAAKk6E,aAAc,EACnBl6E,KAAKk6C,cAAgBA,EACrBl6C,KAAKk9E,WAAaA,EAClBl9E,KAAKoc,KAAOA,EACZA,EAAKg/B,aAAejzC,SAAS,KAC7BiU,EAAKg/B,aAAaroC,YAAYqJ,EAAKo3B,cACnCp3B,EAAKg/B,aAAaroC,YAAYqJ,EAAKi/B,oBACnCj/B,EAAKm3B,YAAcn3B,EAAKg/B,YAC1B,CAqGA,SAAS+hC,sBAAsBhkF,EAAQ+gD,EAAe99B,EAAMrR,GAE1D5R,EAAO+jB,aAAa,IAAK,SACzB/jB,EAAO+jB,aAAa,IAAK,SACzB/jB,EAAO+jB,aAAa,QAAS,QAC7B/jB,EAAO+jB,aAAa,SAAU,QAC9Bld,KAAKk6C,cAAgBA,EACrB,IAAI8gC,EAAiB7yE,SAAS,kBAC9B6yE,EAAe99D,aAAa,SAAUnS,GACtC5R,EAAO4Z,YAAYioE,GACnBh7E,KAAKg7E,eAAiBA,CACxB,CA6BA,SAASoC,kBAAmB,CAwC5B,SAASC,mBAAmB3oE,EAAGwlC,GAC7Bl6C,KAAK8a,KAAKo/B,EACZ,CAIA,SAASojC,kBAAkB5pC,GACzB1zC,KAAK8a,KAAK44B,EACZ,CA+BA,OA1NAupC,gBAAgB99E,UAAUo+E,WAAa,SAAUjmC,GAI/C,IAHA,IAAIv4C,EAAI,EACJE,EAAM+9E,iBAAiB3kF,OAEpB0G,EAAIE,GAAK,CACd,GAAI+9E,iBAAiBj+E,KAAOu4C,EAC1B,OAAO0lC,iBAAiBj+E,GAG1BA,GAAK,CACP,CAEA,OAAO,IACT,EAEAk+E,gBAAgB99E,UAAUq+E,gBAAkB,SAAUlmC,EAAMmmC,GAC1D,IAAIj0C,EAAa8N,EAAK9D,aAAahK,WAEnC,GAAKA,EAAL,CAQA,IAJA,IAYIk0C,EAZA1c,EAAWx3B,EAAWw3B,SACtBjiE,EAAI,EACJE,EAAM+hE,EAAS3oE,OAEZ0G,EAAIE,GACL+hE,EAASjiE,KAAOu4C,EAAK9D,cAIzBz0C,GAAK,EAKHA,GAAKE,EAAM,IACby+E,EAAY1c,EAASjiE,EAAI,IAG3B,IAAI4+E,EAAUx1E,SAAS,OACvBw1E,EAAQzgE,aAAa,OAAQ,IAAMugE,GAE/BC,EACFl0C,EAAW8oB,aAAaqrB,EAASD,GAEjCl0C,EAAWz2B,YAAY4qE,EA1BzB,CA4BF,EAEAV,gBAAgB99E,UAAUy+E,iBAAmB,SAAUxhE,EAAMk7B,GAC3D,IAAKt3C,KAAKu9E,WAAWjmC,GAAO,CAC1B,IAAImmC,EAAWz3E,kBACXu2C,EAASp0C,SAAS,QACtBo0C,EAAOr/B,aAAa,KAAMo6B,EAAK7D,SAC/B8I,EAAOr/B,aAAa,YAAa,SAEjC8/D,iBAAiB18E,KAAKg3C,GAEtB,IAAIlgC,EAAOgF,EAAKjF,WAAWC,KAC3BA,EAAKrE,YAAYwpC,GACjB,IAAIshC,EAAS11E,SAAS,UACtB01E,EAAO3gE,aAAa,KAAMugE,GAC1Bz9E,KAAKw9E,gBAAgBlmC,EAAMmmC,GAC3BI,EAAO9qE,YAAYukC,EAAK9D,cACxBp8B,EAAKrE,YAAY8qE,GACjB,IAAIF,EAAUx1E,SAAS,OACvBw1E,EAAQzgE,aAAa,OAAQ,IAAMugE,GACnClhC,EAAOxpC,YAAY4qE,GACnBrmC,EAAKvuC,KAAK8yC,IAAK,EACfvE,EAAKh8B,MACP,CAEAc,EAAK0gC,SAASxF,EAAK7D,QACrB,EAEAwpC,gBAAgB99E,UAAUk6E,WAAa,WAMrC,IALA,IAAI3xD,EAAM1nB,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAC7Cm/B,EAAWxlC,KAAKoc,KAAKpR,KAAKw6B,SAC1BzmC,EAAI,EACJE,EAAMumC,EAASntC,OAEZ0G,EAAIE,GACLumC,EAASzmC,IAAMymC,EAASzmC,GAAGgK,KAAK2e,MAAQA,GAC1C1nB,KAAK49E,iBAAiB59E,KAAKoc,KAAMopB,EAASzmC,IAG5CA,GAAK,EAGPiB,KAAKk6E,aAAc,CACrB,EAEA+C,gBAAgB99E,UAAU4a,YAAc,WACjC/Z,KAAKk6E,aACRl6E,KAAKq5E,YAET,EAeA8D,sBAAsBh+E,UAAU4a,YAAc,SAAUsjB,GACtD,GAAIA,GAAer9B,KAAKk6C,cAAc3uB,KAAM,CAE1C,IACIuyD,EADqB,GACb99E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAO/C03E,EAAa/9E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EACpD23E,EAAuB,GAAdD,EAAkB,EAAID,EAE/BG,EAAuB,GAAdF,EAAkB,EAAID,EAEnC99E,KAAKg7E,eAAe99D,aAAa,eAAgB8gE,EAAS,IAAMC,GAKhE,IAAIC,EAAuD,GAA5Cl+E,KAAKk6C,cAAclJ,eAAe,GAAGtqC,EAAEL,EAAS,OAAS,YAExErG,KAAKg7E,eAAe99D,aAAa,WAAYghE,EAC/C,CACF,EAIAd,gBAAgBj+E,UAAU2b,KAAO,SAAU44B,GACzC1zC,KAAK0zC,eAAiBA,EACtB1zC,KAAKlE,KAAOm6C,YAAYC,iBACxBl2C,KAAKi2B,OAAS,IAAIzD,OAClBxyB,KAAKw4C,SAAW,EAChBx4C,KAAKurB,MAAO,EACZvrB,KAAK83C,QAAS,CAChB,EAEAslC,gBAAgBj+E,UAAU4a,YAAc,SAAUokE,GAIhD,GAHAn+E,KAAK83C,QAAS,EACd93C,KAAKurB,MAAO,EAER4yD,GAAcn+E,KAAK0zC,eAAenoB,KAAM,CAC1C,IAAIylB,EAAiBhxC,KAAK0zC,eAAe1C,eACrC+lC,EAAS/lC,EAAe,GAAGtqC,EAAEL,EAC7BzJ,EAAWo0C,EAAe,GAAGtqC,EAAEL,EAC/B+3E,EAA2C,IAA1BptC,EAAe,GAAGtqC,EAAEL,EACrCg4E,EAAcrtC,EAAe,GAAGtqC,EAAEL,EAClCi4E,EAAaF,EAAiBC,EAAcrtC,EAAe,GAAGtqC,EAAEL,EAChEktB,EAAOyd,EAAe,GAAGtqC,EAAEL,EAC3BguE,EAAWrjC,EAAe,GAAGtqC,EAAEL,EAC/BilE,EAAWt6B,EAAe,GAAGtqC,EAAEL,EACnCrG,KAAKi2B,OAAOlG,QACZ/vB,KAAKi2B,OAAOnC,WAAWijD,EAAO,IAAKA,EAAO,GAAIA,EAAO,IACrD/2E,KAAKi2B,OAAOxC,MAAmB,IAAb6qD,EAAiC,IAAdD,EAAoB,GACzDr+E,KAAKi2B,OAAOnD,QAAQw4C,EAAWtnE,WAC/BhE,KAAKi2B,OAAOzC,cAAcD,EAAOvvB,WAAYqwE,EAAW,IAAMrwE,WAC9DhE,KAAKi2B,OAAOnC,UAAUl3B,EAAS,GAAIA,EAAS,GAAI,GAChDoD,KAAKurB,MAAO,EAERvrB,KAAKw4C,UAAYxH,EAAe,GAAGtqC,EAAEL,IACvCrG,KAAKw4C,QAAUxH,EAAe,GAAGtqC,EAAEL,EACnCrG,KAAK83C,QAAS,EAElB,CACF,EAMAl5C,gBAAgB,CAACw+E,iBAAkBC,oBAMnCz+E,gBAAgB,CAACw+E,iBAAkBE,mBAEnChoE,iBAAiB,SAAUuhD,gBAC3BvhD,iBAAiB,OAAQyjD,gBACzBzjD,iBAAiB,MAAO45C,aAExBv1B,eAAeE,iBAAiB,KAAMG,cACtCL,eAAeE,iBAAiB,KAAMI,wBACtCN,eAAeE,iBAAiB,KAAMgE,kBACtClE,eAAeE,iBAAiB,KAAMiE,sBACtCnE,eAAeE,iBAAiB,KAAM4G,gBACtC9G,eAAeE,iBAAiB,KAAMkK,oBAEtCp8B,qBAAqB8mE,aACrB5mE,wBAAwB2tE,cACxBuD,eACAM,aAEA5+B,iBAAiB,GAAIo/B,eAAe,GACpCp/B,iBAAiB,GAAIu/B,eAAe,GACpCv/B,iBAAiB,GAAIw/B,iBAAiB,GACtCx/B,iBAAiB,GAAI0/B,kBAAkB,GACvC1/B,iBAAiB,GAAI+/B,oBAAoB,GACzC//B,iBAAiB,GAAIqgC,qBAAqB,GAC1CrgC,iBAAiB,GAAIwiC,iBAAiB,GACtCxiC,iBAAiB,GAAI0iC,uBAAuB,GAC5C1iC,iBAAiB,GAAI4iC,oBAAoB,GACzC1pB,eAAe,GAAI2pB,mBAEZtlD,MAET,EA1rnBiEumD,OAAO9kD,QAAUz7B,uCCWrE,IAAIwgF,EAAGC,EAAQ,IAASC,EAAGD,EAAQ,KAAa,SAAS/3E,EAAEkG,GAAG,IAAI,IAAIpG,EAAE,yDAAyDoG,EAAEO,EAAE,EAAEA,EAAE/U,UAAUC,OAAO8U,IAAI3G,GAAG,WAAWm4E,mBAAmBvmF,UAAU+U,IAAI,MAAM,yBAAyBP,EAAE,WAAWpG,EAAE,gHAAgH,CAAC,IAAIg0D,EAAG,IAAIokB,IAAIC,EAAG,CAAC,EAAE,SAASC,EAAGlyE,EAAEpG,GAAGu4E,EAAGnyE,EAAEpG,GAAGu4E,EAAGnyE,EAAE,UAAUpG,EAAE,CACxb,SAASu4E,EAAGnyE,EAAEpG,GAAW,IAARq4E,EAAGjyE,GAAGpG,EAAMoG,EAAE,EAAEA,EAAEpG,EAAEnO,OAAOuU,IAAI4tD,EAAGvS,IAAIzhD,EAAEoG,GAAG,CAC5D,IAAIoyE,IAAK,qBAAqB1kF,QAAQ,qBAAqBA,OAAO+B,UAAU,qBAAqB/B,OAAO+B,SAASxC,eAAeolF,EAAG7/E,OAAOD,UAAUE,eAAe6/E,EAAG,8VAA8VC,EACpgB,CAAC,EAAEC,EAAG,CAAC,EACiN,SAAS/4E,EAAEuG,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,EAAEF,GAAGvG,KAAKq/E,gBAAgB,IAAI74E,GAAG,IAAIA,GAAG,IAAIA,EAAExG,KAAKs/E,cAAcx4E,EAAE9G,KAAKu/E,mBAAmB71E,EAAE1J,KAAKw/E,gBAAgBryE,EAAEnN,KAAK+xE,aAAanlE,EAAE5M,KAAKlE,KAAK0K,EAAExG,KAAKy/E,YAAYh5E,EAAEzG,KAAK0/E,kBAAkBn5E,CAAC,CAAC,IAAIkwB,EAAE,CAAC,EACpb,uIAAuI5qB,MAAM,KAAKpS,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAenT,SAAQ,SAASmT,GAAG,IAAIpG,EAAEoG,EAAE,GAAG6pB,EAAEjwB,GAAG,IAAIH,EAAEG,EAAE,GAAE,EAAGoG,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASnT,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAEy3B,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiB5qC,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8Of,MAAM,KAAKpS,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAEy3B,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAY5qC,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAYnT,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQnT,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAASnT,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAEy3B,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIs7C,EAAG,gBAAgB,SAAS7yE,EAAGF,GAAG,OAAOA,EAAE,GAAGgzE,aAAa,CAIxZ,SAASC,EAAGjzE,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAE+sB,EAAEp3B,eAAemH,GAAGiwB,EAAEjwB,GAAG,MAAQ,OAAOkD,EAAE,IAAIA,EAAE5N,KAAKgL,KAAK,EAAEN,EAAEnO,SAAS,MAAMmO,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAYoG,EAAEpG,EAAE2G,EAAErG,GAAG,GAAG,OAAON,GAAG,qBAAqBA,GADqE,SAAYoG,EAAEpG,EAAE2G,EAAErG,GAAG,GAAG,OAAOqG,GAAG,IAAIA,EAAErR,KAAK,OAAM,EAAG,cAAc0K,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGM,IAAc,OAAOqG,GAASA,EAAEkyE,gBAAmD,WAAnCzyE,EAAEA,EAAEy3B,cAActnB,MAAM,EAAE,KAAsB,UAAUnQ,GAAE,QAAQ,OAAM,EAAG,CAC/TkzE,CAAGlzE,EAAEpG,EAAE2G,EAAErG,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOqG,EAAE,OAAOA,EAAErR,MAAM,KAAK,EAAE,OAAO0K,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO1J,MAAM0J,GAAG,KAAK,EAAE,OAAO1J,MAAM0J,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOtEu5E,CAAGv5E,EAAE2G,EAAEzD,EAAE5C,KAAKqG,EAAE,MAAMrG,GAAG,OAAO4C,EARxK,SAAYkD,GAAG,QAAGqyE,EAAG3/E,KAAK8/E,EAAGxyE,KAAeqyE,EAAG3/E,KAAK6/E,EAAGvyE,KAAesyE,EAAGv8E,KAAKiK,GAAUwyE,EAAGxyE,IAAG,GAAGuyE,EAAGvyE,IAAG,GAAS,GAAE,CAQwDozE,CAAGx5E,KAAK,OAAO2G,EAAEP,EAAE6uE,gBAAgBj1E,GAAGoG,EAAEsQ,aAAa1W,EAAE,GAAG2G,IAAIzD,EAAE81E,gBAAgB5yE,EAAElD,EAAEqoE,cAAc,OAAO5kE,EAAE,IAAIzD,EAAE5N,MAAQ,GAAGqR,GAAG3G,EAAEkD,EAAE41E,cAAcx4E,EAAE4C,EAAE61E,mBAAmB,OAAOpyE,EAAEP,EAAE6uE,gBAAgBj1E,IAAa2G,EAAE,KAAXzD,EAAEA,EAAE5N,OAAc,IAAI4N,IAAG,IAAKyD,EAAE,GAAG,GAAGA,EAAErG,EAAE8F,EAAEgG,eAAe9L,EAAEN,EAAE2G,GAAGP,EAAEsQ,aAAa1W,EAAE2G,KAAI,CAHjd,0jCAA0jCtB,MAAM,KAAKpS,SAAQ,SAASmT,GAAG,IAAIpG,EAAEoG,EAAEiR,QAAQ8hE,EACzmC7yE,GAAI2pB,EAAEjwB,GAAG,IAAIH,EAAEG,EAAE,GAAE,EAAGoG,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2Ef,MAAM,KAAKpS,SAAQ,SAASmT,GAAG,IAAIpG,EAAEoG,EAAEiR,QAAQ8hE,EAAG7yE,GAAI2pB,EAAEjwB,GAAG,IAAIH,EAAEG,EAAE,GAAE,EAAGoG,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAanT,SAAQ,SAASmT,GAAG,IAAIpG,EAAEoG,EAAEiR,QAAQ8hE,EAAG7yE,GAAI2pB,EAAEjwB,GAAG,IAAIH,EAAEG,EAAE,GAAE,EAAGoG,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAenT,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAEy3B,cAAc,MAAK,GAAG,EAAG,IACld5N,EAAEwpD,UAAU,IAAI55E,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAc5M,SAAQ,SAASmT,GAAG6pB,EAAE7pB,GAAG,IAAIvG,EAAEuG,EAAE,GAAE,EAAGA,EAAEy3B,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAI67C,EAAG1B,EAAG2B,mDAAmDC,EAAGj+E,OAAOk+E,IAAI,iBAAiBC,EAAGn+E,OAAOk+E,IAAI,gBAAgBE,EAAGp+E,OAAOk+E,IAAI,kBAAkBG,EAAGr+E,OAAOk+E,IAAI,qBAAqBI,EAAGt+E,OAAOk+E,IAAI,kBAAkBK,EAAGv+E,OAAOk+E,IAAI,kBAAkBM,EAAGx+E,OAAOk+E,IAAI,iBAAiBO,EAAGz+E,OAAOk+E,IAAI,qBAAqBQ,EAAG1+E,OAAOk+E,IAAI,kBAAkBS,EAAG3+E,OAAOk+E,IAAI,uBAAuBU,EAAG5+E,OAAOk+E,IAAI,cAAcW,EAAG7+E,OAAOk+E,IAAI,cAAcl+E,OAAOk+E,IAAI,eAAel+E,OAAOk+E,IAAI,0BACje,IAAIY,EAAG9+E,OAAOk+E,IAAI,mBAAmBl+E,OAAOk+E,IAAI,uBAAuBl+E,OAAOk+E,IAAI,eAAel+E,OAAOk+E,IAAI,wBAAwB,IAAIa,EAAG/+E,OAAOC,SAAS,SAAS++E,EAAGv0E,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAEs0E,GAAIt0E,EAAEs0E,IAAKt0E,EAAE,eAA0CA,EAAE,IAAI,CAAC,IAAoBw0E,EAAhBhjE,EAAEhf,OAAO0vC,OAAU,SAASuyC,EAAGz0E,GAAG,QAAG,IAASw0E,EAAG,IAAI,MAAMptE,OAAQ,CAAC,MAAM7G,GAAG,IAAI3G,EAAE2G,EAAEuoD,MAAM3hD,OAAOutE,MAAM,gBAAgBF,EAAG56E,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK46E,EAAGx0E,CAAC,CAAC,IAAI20E,GAAG,EACzb,SAASC,EAAG50E,EAAEpG,GAAG,IAAIoG,GAAG20E,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAIp0E,EAAE6G,MAAMytE,kBAAkBztE,MAAMytE,uBAAkB,EAAO,IAAI,GAAGj7E,EAAE,GAAGA,EAAE,WAAW,MAAMwN,OAAQ,EAAE5U,OAAO0kE,eAAet9D,EAAErH,UAAU,QAAQ,CAACuiF,IAAI,WAAW,MAAM1tE,OAAQ,IAAI,kBAAkB2tE,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAUp7E,EAAE,GAAG,CAAC,MAAMotB,GAAG,IAAI9sB,EAAE8sB,CAAC,CAAC+tD,QAAQC,UAAUh1E,EAAE,GAAGpG,EAAE,KAAK,CAAC,IAAIA,EAAElH,MAAM,CAAC,MAAMs0B,GAAG9sB,EAAE8sB,CAAC,CAAChnB,EAAEtN,KAAKkH,EAAErH,UAAU,KAAK,CAAC,IAAI,MAAM6U,OAAQ,CAAC,MAAM4f,GAAG9sB,EAAE8sB,CAAC,CAAChnB,GAAG,CAAC,CAAC,MAAMgnB,GAAG,GAAGA,GAAG9sB,GAAG,kBAAkB8sB,EAAE8hC,MAAM,CAAC,IAAI,IAAIhsD,EAAEkqB,EAAE8hC,MAAM7pD,MAAM,MACnfpF,EAAEK,EAAE4uD,MAAM7pD,MAAM,MAAMtF,EAAEmD,EAAErR,OAAO,EAAE8N,EAAEM,EAAEpO,OAAO,EAAE,GAAGkO,GAAG,GAAGJ,GAAGuD,EAAEnD,KAAKE,EAAEN,IAAIA,IAAI,KAAK,GAAGI,GAAG,GAAGJ,EAAEI,IAAIJ,IAAI,GAAGuD,EAAEnD,KAAKE,EAAEN,GAAG,CAAC,GAAG,IAAII,GAAG,IAAIJ,EAAG,MAAMI,IAAQ,IAAJJ,GAASuD,EAAEnD,KAAKE,EAAEN,GAAG,CAAC,IAAI8D,EAAE,KAAKP,EAAEnD,GAAGsX,QAAQ,WAAW,QAA6F,OAArFjR,EAAEi1E,aAAa53E,EAAE63E,SAAS,iBAAiB73E,EAAEA,EAAE4T,QAAQ,cAAcjR,EAAEi1E,cAAqB53E,CAAC,QAAO,GAAG1D,GAAG,GAAGJ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQo7E,GAAG,EAAGvtE,MAAMytE,kBAAkBt0E,CAAC,CAAC,OAAOP,EAAEA,EAAEA,EAAEi1E,aAAaj1E,EAAE/W,KAAK,IAAIwrF,EAAGz0E,GAAG,EAAE,CAC9Z,SAASm1E,EAAGn1E,GAAG,OAAOA,EAAEo1E,KAAK,KAAK,EAAE,OAAOX,EAAGz0E,EAAE9Q,MAAM,KAAK,GAAG,OAAOulF,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAOz0E,EAAE40E,EAAG50E,EAAE9Q,MAAK,GAAM,KAAK,GAAG,OAAO8Q,EAAE40E,EAAG50E,EAAE9Q,KAAK6pD,QAAO,GAAM,KAAK,EAAE,OAAO/4C,EAAE40E,EAAG50E,EAAE9Q,MAAK,GAAM,QAAQ,MAAM,GAAG,CACxR,SAASmmF,EAAGr1E,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAEi1E,aAAaj1E,EAAE/W,MAAM,KAAK,GAAG,kBAAkB+W,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK2zE,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBl0E,EAAE,OAAOA,EAAEs1E,UAAU,KAAKvB,EAAG,OAAO/zE,EAAEi1E,aAAa,WAAW,YAAY,KAAKnB,EAAG,OAAO9zE,EAAEu1E,SAASN,aAAa,WAAW,YAAY,KAAKjB,EAAG,IAAIp6E,EAAEoG,EAAE+4C,OAC7Z,OADoa/4C,EAAEA,EAAEi1E,eACndj1E,EAAE,MADieA,EAAEpG,EAAEq7E,aAClfr7E,EAAE3Q,MAAM,IAAY,cAAc+W,EAAE,IAAI,cAAqBA,EAAE,KAAKm0E,EAAG,OAA6B,QAAtBv6E,EAAEoG,EAAEi1E,aAAa,MAAcr7E,EAAEy7E,EAAGr1E,EAAE9Q,OAAO,OAAO,KAAKklF,EAAGx6E,EAAEoG,EAAEw1E,SAASx1E,EAAEA,EAAEy1E,MAAM,IAAI,OAAOJ,EAAGr1E,EAAEpG,GAAG,CAAC,MAAM2G,GAAG,EAAE,OAAO,IAAI,CAC3M,SAASm1E,EAAG11E,GAAG,IAAIpG,EAAEoG,EAAE9Q,KAAK,OAAO8Q,EAAEo1E,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAOx7E,EAAEq7E,aAAa,WAAW,YAAY,KAAK,GAAG,OAAOr7E,EAAE27E,SAASN,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkBj1E,GAAXA,EAAEpG,EAAEm/C,QAAWk8B,aAAaj1E,EAAE/W,MAAM,GAAG2Q,EAAEq7E,cAAc,KAAKj1E,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAOpG,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAOy7E,EAAGz7E,GAAG,KAAK,EAAE,OAAOA,IAAIg6E,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,oBAAoBh6E,EAAE,OAAOA,EAAEq7E,aAAar7E,EAAE3Q,MAAM,KAAK,GAAG,kBAAkB2Q,EAAE,OAAOA,EAAE,OAAO,IAAI,CAAC,SAAS+7E,EAAG31E,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAG,CACra,SAAS41E,EAAG51E,GAAG,IAAIpG,EAAEoG,EAAE9Q,KAAK,OAAO8Q,EAAEA,EAAE61E,WAAW,UAAU71E,EAAEy3B,gBAAgB,aAAa79B,GAAG,UAAUA,EAAE,CAEtF,SAASk8E,EAAG91E,GAAGA,EAAE+1E,gBAAgB/1E,EAAE+1E,cADvD,SAAY/1E,GAAG,IAAIpG,EAAEg8E,EAAG51E,GAAG,UAAU,QAAQO,EAAE/N,OAAOM,yBAAyBkN,EAAEvK,YAAYlD,UAAUqH,GAAGM,EAAE,GAAG8F,EAAEpG,GAAG,IAAIoG,EAAEvN,eAAemH,IAAI,qBAAqB2G,GAAG,oBAAoBA,EAAE6R,KAAK,oBAAoB7R,EAAEu0E,IAAI,CAAC,IAAIh4E,EAAEyD,EAAE6R,IAAIvY,EAAE0G,EAAEu0E,IAAiL,OAA7KtiF,OAAO0kE,eAAel3D,EAAEpG,EAAE,CAACo8E,cAAa,EAAG5jE,IAAI,WAAW,OAAOtV,EAAEpK,KAAKU,KAAK,EAAE0hF,IAAI,SAAS90E,GAAG9F,EAAE,GAAG8F,EAAEnG,EAAEnH,KAAKU,KAAK4M,EAAE,IAAIxN,OAAO0kE,eAAel3D,EAAEpG,EAAE,CAACq8E,WAAW11E,EAAE01E,aAAmB,CAACz2D,SAAS,WAAW,OAAOtlB,CAAC,EAAEg8E,SAAS,SAASl2E,GAAG9F,EAAE,GAAG8F,CAAC,EAAEm2E,aAAa,WAAWn2E,EAAE+1E,cACxf,YAAY/1E,EAAEpG,EAAE,EAAE,CAAC,CAAkDw8E,CAAGp2E,GAAG,CAAC,SAASq2E,EAAGr2E,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIpG,EAAEoG,EAAE+1E,cAAc,IAAIn8E,EAAE,OAAM,EAAG,IAAI2G,EAAE3G,EAAE4lB,WAAetlB,EAAE,GAAqD,OAAlD8F,IAAI9F,EAAE07E,EAAG51E,GAAGA,EAAEs2E,QAAQ,OAAO,QAAQt2E,EAAExV,QAAOwV,EAAE9F,KAAaqG,IAAG3G,EAAEs8E,SAASl2E,IAAG,EAAM,CAAC,SAASu2E,EAAGv2E,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqBvQ,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOuQ,EAAEw2E,eAAex2E,EAAEuQ,IAAI,CAAC,MAAM3W,GAAG,OAAOoG,EAAEuQ,IAAI,CAAC,CACpa,SAASkmE,EAAGz2E,EAAEpG,GAAG,IAAI2G,EAAE3G,EAAE08E,QAAQ,OAAO9kE,EAAE,CAAC,EAAE5X,EAAE,CAAC88E,oBAAe,EAAOC,kBAAa,EAAOnsF,WAAM,EAAO8rF,QAAQ,MAAM/1E,EAAEA,EAAEP,EAAE42E,cAAcC,gBAAgB,CAAC,SAASC,EAAG92E,EAAEpG,GAAG,IAAI2G,EAAE,MAAM3G,EAAE+8E,aAAa,GAAG/8E,EAAE+8E,aAAaz8E,EAAE,MAAMN,EAAE08E,QAAQ18E,EAAE08E,QAAQ18E,EAAE88E,eAAen2E,EAAEo1E,EAAG,MAAM/7E,EAAEpP,MAAMoP,EAAEpP,MAAM+V,GAAGP,EAAE42E,cAAc,CAACC,eAAe38E,EAAE68E,aAAax2E,EAAEy2E,WAAW,aAAap9E,EAAE1K,MAAM,UAAU0K,EAAE1K,KAAK,MAAM0K,EAAE08E,QAAQ,MAAM18E,EAAEpP,MAAM,CAAC,SAASysF,EAAGj3E,EAAEpG,GAAe,OAAZA,EAAEA,EAAE08E,UAAiBrD,EAAGjzE,EAAE,UAAUpG,GAAE,EAAG,CAC9d,SAASs9E,EAAGl3E,EAAEpG,GAAGq9E,EAAGj3E,EAAEpG,GAAG,IAAI2G,EAAEo1E,EAAG/7E,EAAEpP,OAAO0P,EAAEN,EAAE1K,KAAK,GAAG,MAAMqR,EAAK,WAAWrG,GAAM,IAAIqG,GAAG,KAAKP,EAAExV,OAAOwV,EAAExV,OAAO+V,KAAEP,EAAExV,MAAM,GAAG+V,GAAOP,EAAExV,QAAQ,GAAG+V,IAAIP,EAAExV,MAAM,GAAG+V,QAAQ,GAAG,WAAWrG,GAAG,UAAUA,EAA8B,YAA3B8F,EAAE6uE,gBAAgB,SAAgBj1E,EAAEnH,eAAe,SAAS6S,GAAGtF,EAAEpG,EAAE1K,KAAKqR,GAAG3G,EAAEnH,eAAe,iBAAiB6S,GAAGtF,EAAEpG,EAAE1K,KAAKymF,EAAG/7E,EAAE+8E,eAAe,MAAM/8E,EAAE08E,SAAS,MAAM18E,EAAE88E,iBAAiB12E,EAAE02E,iBAAiB98E,EAAE88E,eAAe,CACla,SAASS,EAAGn3E,EAAEpG,EAAE2G,GAAG,GAAG3G,EAAEnH,eAAe,UAAUmH,EAAEnH,eAAe,gBAAgB,CAAC,IAAIyH,EAAEN,EAAE1K,KAAK,KAAK,WAAWgL,GAAG,UAAUA,QAAG,IAASN,EAAEpP,OAAO,OAAOoP,EAAEpP,OAAO,OAAOoP,EAAE,GAAGoG,EAAE42E,cAAcG,aAAax2E,GAAG3G,IAAIoG,EAAExV,QAAQwV,EAAExV,MAAMoP,GAAGoG,EAAE22E,aAAa/8E,CAAC,CAAU,MAAT2G,EAAEP,EAAE/W,QAAc+W,EAAE/W,KAAK,IAAI+W,EAAE02E,iBAAiB12E,EAAE42E,cAAcC,eAAe,KAAKt2E,IAAIP,EAAE/W,KAAKsX,EAAE,CACzV,SAAS+E,GAAGtF,EAAEpG,EAAE2G,GAAM,WAAW3G,GAAG28E,EAAGv2E,EAAEo3E,iBAAiBp3E,IAAE,MAAMO,EAAEP,EAAE22E,aAAa,GAAG32E,EAAE42E,cAAcG,aAAa/2E,EAAE22E,eAAe,GAAGp2E,IAAIP,EAAE22E,aAAa,GAAGp2E,GAAE,CAAC,IAAI82E,GAAGrrF,MAAMC,QAC7K,SAAS+vD,GAAGh8C,EAAEpG,EAAE2G,EAAErG,GAAe,GAAZ8F,EAAEA,EAAE24D,QAAW/+D,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAIkD,EAAE,EAAEA,EAAEyD,EAAE9U,OAAOqR,IAAIlD,EAAE,IAAI2G,EAAEzD,KAAI,EAAG,IAAIyD,EAAE,EAAEA,EAAEP,EAAEvU,OAAO8U,IAAIzD,EAAElD,EAAEnH,eAAe,IAAIuN,EAAEO,GAAG/V,OAAOwV,EAAEO,GAAG+2E,WAAWx6E,IAAIkD,EAAEO,GAAG+2E,SAASx6E,GAAGA,GAAG5C,IAAI8F,EAAEO,GAAGg3E,iBAAgB,EAAG,KAAK,CAAmB,IAAlBh3E,EAAE,GAAGo1E,EAAGp1E,GAAG3G,EAAE,KAASkD,EAAE,EAAEA,EAAEkD,EAAEvU,OAAOqR,IAAI,CAAC,GAAGkD,EAAElD,GAAGtS,QAAQ+V,EAAiD,OAA9CP,EAAElD,GAAGw6E,UAAS,OAAGp9E,IAAI8F,EAAElD,GAAGy6E,iBAAgB,IAAW,OAAO39E,GAAGoG,EAAElD,GAAG06E,WAAW59E,EAAEoG,EAAElD,GAAG,CAAC,OAAOlD,IAAIA,EAAE09E,UAAS,EAAG,CAAC,CACxY,SAASG,GAAGz3E,EAAEpG,GAAG,GAAG,MAAMA,EAAE89E,wBAAwB,MAAMtwE,MAAMtN,EAAE,KAAK,OAAO0X,EAAE,CAAC,EAAE5X,EAAE,CAACpP,WAAM,EAAOmsF,kBAAa,EAAOviB,SAAS,GAAGp0D,EAAE42E,cAAcG,cAAc,CAAC,SAASY,GAAG33E,EAAEpG,GAAG,IAAI2G,EAAE3G,EAAEpP,MAAM,GAAG,MAAM+V,EAAE,CAA+B,GAA9BA,EAAE3G,EAAEw6D,SAASx6D,EAAEA,EAAE+8E,aAAgB,MAAMp2E,EAAE,CAAC,GAAG,MAAM3G,EAAE,MAAMwN,MAAMtN,EAAE,KAAK,GAAGu9E,GAAG92E,GAAG,CAAC,GAAG,EAAEA,EAAE9U,OAAO,MAAM2b,MAAMtN,EAAE,KAAKyG,EAAEA,EAAE,EAAE,CAAC3G,EAAE2G,CAAC,CAAC,MAAM3G,IAAIA,EAAE,IAAI2G,EAAE3G,CAAC,CAACoG,EAAE42E,cAAc,CAACG,aAAapB,EAAGp1E,GAAG,CACnY,SAASq3E,GAAG53E,EAAEpG,GAAG,IAAI2G,EAAEo1E,EAAG/7E,EAAEpP,OAAO0P,EAAEy7E,EAAG/7E,EAAE+8E,cAAc,MAAMp2E,KAAIA,EAAE,GAAGA,KAAMP,EAAExV,QAAQwV,EAAExV,MAAM+V,GAAG,MAAM3G,EAAE+8E,cAAc32E,EAAE22E,eAAep2E,IAAIP,EAAE22E,aAAap2E,IAAI,MAAMrG,IAAI8F,EAAE22E,aAAa,GAAGz8E,EAAE,CAAC,SAAS29E,GAAG73E,GAAG,IAAIpG,EAAEoG,EAAEg+B,YAAYpkC,IAAIoG,EAAE42E,cAAcG,cAAc,KAAKn9E,GAAG,OAAOA,IAAIoG,EAAExV,MAAMoP,EAAE,CAAC,SAASk+E,GAAG93E,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAC7c,SAAS+3E,GAAG/3E,EAAEpG,GAAG,OAAO,MAAMoG,GAAG,iCAAiCA,EAAE83E,GAAGl+E,GAAG,+BAA+BoG,GAAG,kBAAkBpG,EAAE,+BAA+BoG,CAAC,CAChK,IAAIg4E,GAAeh4E,GAAZi4E,IAAYj4E,GAAsJ,SAASA,EAAEpG,GAAG,GAAG,+BAA+BoG,EAAEk4E,cAAc,cAAcl4E,EAAEA,EAAEm4E,UAAUv+E,MAAM,CAA2F,KAA1Fo+E,GAAGA,IAAIvoF,SAASxC,cAAc,QAAUkrF,UAAU,QAAQv+E,EAAEw+E,UAAUx9E,WAAW,SAAahB,EAAEo+E,GAAGK,WAAWr4E,EAAEq4E,YAAYr4E,EAAE6hC,YAAY7hC,EAAEq4E,YAAY,KAAKz+E,EAAEy+E,YAAYr4E,EAAEmG,YAAYvM,EAAEy+E,WAAW,CAAC,EAAvb,qBAAqBC,OAAOA,MAAMC,wBAAwB,SAAS3+E,EAAE2G,EAAErG,EAAE4C,GAAGw7E,MAAMC,yBAAwB,WAAW,OAAOv4E,GAAEpG,EAAE2G,EAAM,GAAE,EAAEP,IACtK,SAASgF,GAAGhF,EAAEpG,GAAG,GAAGA,EAAE,CAAC,IAAI2G,EAAEP,EAAEq4E,WAAW,GAAG93E,GAAGA,IAAIP,EAAEw4E,WAAW,IAAIj4E,EAAEk4E,SAAwB,YAAdl4E,EAAEm4E,UAAU9+E,EAAS,CAACoG,EAAEg+B,YAAYpkC,CAAC,CACtH,IAAI++E,GAAG,CAACC,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGpiD,MAAK,EAAGqiD,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGj9C,YAAW,EAAGk9C,WAAU,EAAGnmB,YAAW,EAAGroB,SAAQ,EAAGyuC,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAClfC,MAAK,EAAGC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGjnB,aAAY,GAAIknB,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGn7E,EAAEpG,EAAE2G,GAAG,OAAO,MAAM3G,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAG2G,GAAG,kBAAkB3G,GAAG,IAAIA,GAAG++E,GAAGlmF,eAAeuN,IAAI24E,GAAG34E,IAAI,GAAGpG,GAAGuN,OAAOvN,EAAE,IAAI,CACzb,SAASwhF,GAAGp7E,EAAEpG,GAAa,IAAI,IAAI2G,KAAlBP,EAAEA,EAAEhY,MAAmB4R,EAAE,GAAGA,EAAEnH,eAAe8N,GAAG,CAAC,IAAIrG,EAAE,IAAIqG,EAAEe,QAAQ,MAAMxE,EAAEq+E,GAAG56E,EAAE3G,EAAE2G,GAAGrG,GAAG,UAAUqG,IAAIA,EAAE,YAAYrG,EAAE8F,EAAEq7E,YAAY96E,EAAEzD,GAAGkD,EAAEO,GAAGzD,CAAC,CAAC,CADYtK,OAAOyU,KAAK0xE,IAAI9rF,SAAQ,SAASmT,GAAGk7E,GAAGruF,SAAQ,SAAS+M,GAAGA,EAAEA,EAAEoG,EAAEq6C,OAAO,GAAG24B,cAAchzE,EAAEshE,UAAU,GAAGqX,GAAG/+E,GAAG++E,GAAG34E,EAAE,GAAE,IAChI,IAAIs7E,GAAG9pE,EAAE,CAAC+pE,UAAS,GAAI,CAACC,MAAK,EAAGC,MAAK,EAAGC,IAAG,EAAGvL,KAAI,EAAGwL,OAAM,EAAGC,IAAG,EAAGp3E,KAAI,EAAGq3E,OAAM,EAAGC,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAGC,OAAM,EAAG1uC,QAAO,EAAG2uC,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAGp8E,EAAEpG,GAAG,GAAGA,EAAE,CAAC,GAAG0hF,GAAGt7E,KAAK,MAAMpG,EAAEw6D,UAAU,MAAMx6D,EAAE89E,yBAAyB,MAAMtwE,MAAMtN,EAAE,IAAIkG,IAAI,GAAG,MAAMpG,EAAE89E,wBAAwB,CAAC,GAAG,MAAM99E,EAAEw6D,SAAS,MAAMhtD,MAAMtN,EAAE,KAAK,GAAG,kBAAkBF,EAAE89E,2BAA2B,WAAW99E,EAAE89E,yBAAyB,MAAMtwE,MAAMtN,EAAE,IAAK,CAAC,GAAG,MAAMF,EAAE5R,OAAO,kBAAkB4R,EAAE5R,MAAM,MAAMof,MAAMtN,EAAE,IAAK,CAAC,CAClW,SAASuiF,GAAGr8E,EAAEpG,GAAG,IAAI,IAAIoG,EAAEsB,QAAQ,KAAK,MAAM,kBAAkB1H,EAAEsqB,GAAG,OAAOlkB,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,IAAIs8E,GAAG,KAAK,SAASC,GAAGv8E,GAA6F,OAA1FA,EAAEA,EAAEjH,QAAQiH,EAAEw8E,YAAY9uF,QAAS+uF,0BAA0Bz8E,EAAEA,EAAEy8E,yBAAgC,IAAIz8E,EAAEy4E,SAASz4E,EAAE48B,WAAW58B,CAAC,CAAC,IAAI08E,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACpc,SAASC,GAAG78E,GAAG,GAAGA,EAAE88E,GAAG98E,GAAG,CAAC,GAAG,oBAAoB08E,GAAG,MAAMt1E,MAAMtN,EAAE,MAAM,IAAIF,EAAEoG,EAAE+8E,UAAUnjF,IAAIA,EAAEojF,GAAGpjF,GAAG8iF,GAAG18E,EAAE+8E,UAAU/8E,EAAE9Q,KAAK0K,GAAG,CAAC,CAAC,SAASqjF,GAAGj9E,GAAG28E,GAAGC,GAAGA,GAAGlpF,KAAKsM,GAAG48E,GAAG,CAAC58E,GAAG28E,GAAG38E,CAAC,CAAC,SAASk9E,KAAK,GAAGP,GAAG,CAAC,IAAI38E,EAAE28E,GAAG/iF,EAAEgjF,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAG78E,GAAMpG,EAAE,IAAIoG,EAAE,EAAEA,EAAEpG,EAAEnO,OAAOuU,IAAI68E,GAAGjjF,EAAEoG,GAAG,CAAC,CAAC,SAASm9E,GAAGn9E,EAAEpG,GAAG,OAAOoG,EAAEpG,EAAE,CAAC,SAASwjF,KAAK,CAAC,IAAIC,IAAG,EAAG,SAASC,GAAGt9E,EAAEpG,EAAE2G,GAAG,GAAG88E,GAAG,OAAOr9E,EAAEpG,EAAE2G,GAAG88E,IAAG,EAAG,IAAI,OAAOF,GAAGn9E,EAAEpG,EAAE2G,EAAE,CAAC,QAAW88E,IAAG,GAAG,OAAOV,IAAI,OAAOC,MAAGQ,KAAKF,KAAI,CAAC,CAChb,SAASK,GAAGv9E,EAAEpG,GAAG,IAAI2G,EAAEP,EAAE+8E,UAAU,GAAG,OAAOx8E,EAAE,OAAO,KAAK,IAAIrG,EAAE8iF,GAAGz8E,GAAG,GAAG,OAAOrG,EAAE,OAAO,KAAKqG,EAAErG,EAAEN,GAAGoG,EAAE,OAAOpG,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBM,GAAGA,EAAEs9E,YAAqBt9E,IAAI,YAAb8F,EAAEA,EAAE9Q,OAAuB,UAAU8Q,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAG9F,EAAE,MAAM8F,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGO,GAAG,oBACleA,EAAE,MAAM6G,MAAMtN,EAAE,IAAIF,SAAS2G,IAAI,OAAOA,CAAC,CAAC,IAAIi9E,IAAG,EAAG,GAAGpL,EAAG,IAAI,IAAIqL,GAAG,CAAC,EAAEjrF,OAAO0kE,eAAeumB,GAAG,UAAU,CAACrrE,IAAI,WAAWorE,IAAG,CAAE,IAAI9vF,OAAOf,iBAAiB,OAAO8wF,GAAGA,IAAI/vF,OAAOd,oBAAoB,OAAO6wF,GAAGA,GAAG,CAAC,MAAMz9E,IAAGw9E,IAAG,CAAE,CAAC,SAASE,GAAG19E,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,EAAEF,EAAEJ,EAAE8D,GAAG,IAAI2pB,EAAEh7B,MAAMuG,UAAU4d,MAAMzd,KAAKlH,UAAU,GAAG,IAAIoO,EAAExE,MAAMmL,EAAEymB,EAAE,CAAC,MAAMC,GAAG7zB,KAAKuP,QAAQskB,EAAE,CAAC,CAAC,IAAI02D,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACp7E,QAAQ,SAAS3C,GAAG29E,IAAG,EAAGC,GAAG59E,CAAC,GAAG,SAASg+E,GAAGh+E,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,EAAEF,EAAEJ,EAAE8D,GAAGsgF,IAAG,EAAGC,GAAG,KAAKF,GAAGtoF,MAAM2oF,GAAGvyF,UAAU,CACjW,SAASyyF,GAAGj+E,GAAG,IAAIpG,EAAEoG,EAAEO,EAAEP,EAAE,GAAGA,EAAEk+E,UAAU,KAAKtkF,EAAEukF,QAAQvkF,EAAEA,EAAEukF,WAAW,CAACn+E,EAAEpG,EAAE,GAAO,KAAa,MAAjBA,EAAEoG,GAASo+E,SAAc79E,EAAE3G,EAAEukF,QAAQn+E,EAAEpG,EAAEukF,aAAan+E,EAAE,CAAC,OAAO,IAAIpG,EAAEw7E,IAAI70E,EAAE,IAAI,CAAC,SAAS89E,GAAGr+E,GAAG,GAAG,KAAKA,EAAEo1E,IAAI,CAAC,IAAIx7E,EAAEoG,EAAEs+E,cAAsE,GAAxD,OAAO1kF,IAAkB,QAAdoG,EAAEA,EAAEk+E,aAAqBtkF,EAAEoG,EAAEs+E,gBAAmB,OAAO1kF,EAAE,OAAOA,EAAE2kF,UAAU,CAAC,OAAO,IAAI,CAAC,SAASC,GAAGx+E,GAAG,GAAGi+E,GAAGj+E,KAAKA,EAAE,MAAMoH,MAAMtN,EAAE,KAAM,CAE1S,SAAS2kF,GAAGz+E,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAIpG,EAAEoG,EAAEk+E,UAAU,IAAItkF,EAAE,CAAS,GAAG,QAAXA,EAAEqkF,GAAGj+E,IAAe,MAAMoH,MAAMtN,EAAE,MAAM,OAAOF,IAAIoG,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAIO,EAAEP,EAAE9F,EAAEN,IAAI,CAAC,IAAIkD,EAAEyD,EAAE49E,OAAO,GAAG,OAAOrhF,EAAE,MAAM,IAAIjD,EAAEiD,EAAEohF,UAAU,GAAG,OAAOrkF,EAAE,CAAY,GAAG,QAAdK,EAAE4C,EAAEqhF,QAAmB,CAAC59E,EAAErG,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG4C,EAAE4hF,QAAQ7kF,EAAE6kF,MAAM,CAAC,IAAI7kF,EAAEiD,EAAE4hF,MAAM7kF,GAAG,CAAC,GAAGA,IAAI0G,EAAE,OAAOi+E,GAAG1hF,GAAGkD,EAAE,GAAGnG,IAAIK,EAAE,OAAOskF,GAAG1hF,GAAGlD,EAAEC,EAAEA,EAAE8kF,OAAO,CAAC,MAAMv3E,MAAMtN,EAAE,KAAM,CAAC,GAAGyG,EAAE49E,SAASjkF,EAAEikF,OAAO59E,EAAEzD,EAAE5C,EAAEL,MAAM,CAAC,IAAI,IAAIF,GAAE,EAAGJ,EAAEuD,EAAE4hF,MAAMnlF,GAAG,CAAC,GAAGA,IAAIgH,EAAE,CAAC5G,GAAE,EAAG4G,EAAEzD,EAAE5C,EAAEL,EAAE,KAAK,CAAC,GAAGN,IAAIW,EAAE,CAACP,GAAE,EAAGO,EAAE4C,EAAEyD,EAAE1G,EAAE,KAAK,CAACN,EAAEA,EAAEolF,OAAO,CAAC,IAAIhlF,EAAE,CAAC,IAAIJ,EAAEM,EAAE6kF,MAAMnlF,GAAG,CAAC,GAAGA,IAC5fgH,EAAE,CAAC5G,GAAE,EAAG4G,EAAE1G,EAAEK,EAAE4C,EAAE,KAAK,CAAC,GAAGvD,IAAIW,EAAE,CAACP,GAAE,EAAGO,EAAEL,EAAE0G,EAAEzD,EAAE,KAAK,CAACvD,EAAEA,EAAEolF,OAAO,CAAC,IAAIhlF,EAAE,MAAMyN,MAAMtN,EAAE,KAAM,CAAC,CAAC,GAAGyG,EAAE29E,YAAYhkF,EAAE,MAAMkN,MAAMtN,EAAE,KAAM,CAAC,GAAG,IAAIyG,EAAE60E,IAAI,MAAMhuE,MAAMtN,EAAE,MAAM,OAAOyG,EAAEw8E,UAAU7yF,UAAUqW,EAAEP,EAAEpG,CAAC,CAAkBglF,CAAG5+E,IAAmB6+E,GAAG7+E,GAAG,IAAI,CAAC,SAAS6+E,GAAG7+E,GAAG,GAAG,IAAIA,EAAEo1E,KAAK,IAAIp1E,EAAEo1E,IAAI,OAAOp1E,EAAE,IAAIA,EAAEA,EAAE0+E,MAAM,OAAO1+E,GAAG,CAAC,IAAIpG,EAAEilF,GAAG7+E,GAAG,GAAG,OAAOpG,EAAE,OAAOA,EAAEoG,EAAEA,EAAE2+E,OAAO,CAAC,OAAO,IAAI,CAC1X,IAAIG,GAAGhN,EAAGiN,0BAA0BC,GAAGlN,EAAGmN,wBAAwBC,GAAGpN,EAAGqN,qBAAqBC,GAAGtN,EAAGuN,sBAAsB1tE,GAAEmgE,EAAGwN,aAAaC,GAAGzN,EAAG0N,iCAAiCnpC,GAAGy7B,EAAG2N,2BAA2BC,GAAG5N,EAAG6N,8BAA8BC,GAAG9N,EAAG+N,wBAAwBC,GAAGhO,EAAGiO,qBAAqBC,GAAGlO,EAAGmO,sBAAsBC,GAAG,KAAKlsC,GAAG,KACvV,IAAImsC,GAAG9wF,KAAK+wF,MAAM/wF,KAAK+wF,MAAiC,SAAYpgF,GAAU,OAAPA,KAAK,EAAS,IAAIA,EAAE,GAAG,IAAIqgF,GAAGrgF,GAAGsgF,GAAG,GAAG,CAAC,EAA/ED,GAAGhxF,KAAKkxF,IAAID,GAAGjxF,KAAKmxF,IAA4D,IAAIC,GAAG,GAAGx/C,GAAG,QAC7H,SAASy/C,GAAG1gF,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAE,CAAC,SAAS2gF,GAAG3gF,EAAEpG,GAAG,IAAI2G,EAAEP,EAAE4gF,aAAa,GAAG,IAAIrgF,EAAE,OAAO,EAAE,IAAIrG,EAAE,EAAE4C,EAAEkD,EAAE6gF,eAAehnF,EAAEmG,EAAE8gF,YAAYnnF,EAAI,UAAF4G,EAAY,GAAG,IAAI5G,EAAE,CAAC,IAAIJ,EAAEI,GAAGmD,EAAE,IAAIvD,EAAEW,EAAEwmF,GAAGnnF,GAAS,KAALM,GAAGF,KAAUO,EAAEwmF,GAAG7mF,GAAI,MAAa,KAAPF,EAAE4G,GAAGzD,GAAQ5C,EAAEwmF,GAAG/mF,GAAG,IAAIE,IAAIK,EAAEwmF,GAAG7mF,IAAI,GAAG,IAAIK,EAAE,OAAO,EAAE,GAAG,IAAIN,GAAGA,IAAIM,GAAG,KAAKN,EAAEkD,MAAKA,EAAE5C,GAAGA,KAAEL,EAAED,GAAGA,IAAQ,KAAKkD,GAAG,KAAO,QAAFjD,IAAY,OAAOD,EAA0C,GAAxC,KAAO,EAAFM,KAAOA,GAAK,GAAFqG,GAA4B,KAAtB3G,EAAEoG,EAAE+gF,gBAAwB,IAAI/gF,EAAEA,EAAEghF,cAAcpnF,GAAGM,EAAE,EAAEN,GAAckD,EAAE,IAAbyD,EAAE,GAAG4/E,GAAGvmF,IAAUM,GAAG8F,EAAEO,GAAG3G,IAAIkD,EAAE,OAAO5C,CAAC,CACvc,SAAS+mF,GAAGjhF,EAAEpG,GAAG,OAAOoG,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAOpG,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAE,CACrN,SAASsnF,GAAGlhF,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAE4gF,cAAsC5gF,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAASmhF,KAAK,IAAInhF,EAAEygF,GAAoC,OAA1B,KAAQ,SAAfA,KAAK,MAAqBA,GAAG,IAAWzgF,CAAC,CAAC,SAASohF,GAAGphF,GAAG,IAAI,IAAIpG,EAAE,GAAG2G,EAAE,EAAE,GAAGA,EAAEA,IAAI3G,EAAElG,KAAKsM,GAAG,OAAOpG,CAAC,CAC3a,SAASynF,GAAGrhF,EAAEpG,EAAE2G,GAAGP,EAAE4gF,cAAchnF,EAAE,YAAYA,IAAIoG,EAAE6gF,eAAe,EAAE7gF,EAAE8gF,YAAY,IAAG9gF,EAAEA,EAAEshF,YAAW1nF,EAAE,GAAGumF,GAAGvmF,IAAQ2G,CAAC,CACzH,SAASghF,GAAGvhF,EAAEpG,GAAG,IAAI2G,EAAEP,EAAE+gF,gBAAgBnnF,EAAE,IAAIoG,EAAEA,EAAEghF,cAAczgF,GAAG,CAAC,IAAIrG,EAAE,GAAGimF,GAAG5/E,GAAGzD,EAAE,GAAG5C,EAAE4C,EAAElD,EAAEoG,EAAE9F,GAAGN,IAAIoG,EAAE9F,IAAIN,GAAG2G,IAAIzD,CAAC,CAAC,CAAC,IAAI8U,GAAE,EAAE,SAAS4vE,GAAGxhF,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAE,KAAO,UAAFA,GAAa,GAAG,UAAU,EAAE,CAAC,CAAC,IAAIyhF,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIC,IAAIC,GAAG,IAAID,IAAIE,GAAG,GAAGC,GAAG,6PAA6PtjF,MAAM,KAChiB,SAASujF,GAAGxiF,EAAEpG,GAAG,OAAOoG,GAAG,IAAK,UAAU,IAAK,WAAWgiF,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGM,OAAO7oF,EAAE8oF,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBL,GAAGI,OAAO7oF,EAAE8oF,WAAW,CACnT,SAASC,GAAG3iF,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,GAAG,OAAG,OAAOmG,GAAGA,EAAE4iF,cAAc/oF,GAASmG,EAAE,CAAC6iF,UAAUjpF,EAAEkpF,aAAaviF,EAAEwiF,iBAAiB7oF,EAAE0oF,YAAY/oF,EAAEmpF,iBAAiB,CAAClmF,IAAI,OAAOlD,IAAY,QAARA,EAAEkjF,GAAGljF,KAAa8nF,GAAG9nF,IAAIoG,IAAEA,EAAE+iF,kBAAkB7oF,EAAEN,EAAEoG,EAAEgjF,iBAAiB,OAAOlmF,IAAI,IAAIlD,EAAE0H,QAAQxE,IAAIlD,EAAElG,KAAKoJ,GAAUkD,EAAC,CAEpR,SAASijF,GAAGjjF,GAAG,IAAIpG,EAAEspF,GAAGljF,EAAEjH,QAAQ,GAAG,OAAOa,EAAE,CAAC,IAAI2G,EAAE09E,GAAGrkF,GAAG,GAAG,OAAO2G,EAAE,GAAW,MAAR3G,EAAE2G,EAAE60E,MAAY,GAAW,QAARx7E,EAAEykF,GAAG99E,IAA4D,OAA/CP,EAAE6iF,UAAUjpF,OAAEioF,GAAG7hF,EAAEmjF,UAAS,WAAWxB,GAAGphF,EAAE,SAAgB,GAAG,IAAI3G,GAAG2G,EAAEw8E,UAAU7yF,QAAQo0F,cAAc8E,aAAmE,YAArDpjF,EAAE6iF,UAAU,IAAItiF,EAAE60E,IAAI70E,EAAEw8E,UAAUsG,cAAc,KAAY,CAACrjF,EAAE6iF,UAAU,IAAI,CAClT,SAASS,GAAGtjF,GAAG,GAAG,OAAOA,EAAE6iF,UAAU,OAAM,EAAG,IAAI,IAAIjpF,EAAEoG,EAAEgjF,iBAAiB,EAAEppF,EAAEnO,QAAQ,CAAC,IAAI8U,EAAEgjF,GAAGvjF,EAAE8iF,aAAa9iF,EAAE+iF,iBAAiBnpF,EAAE,GAAGoG,EAAE4iF,aAAa,GAAG,OAAOriF,EAAiG,OAAe,QAAR3G,EAAEkjF,GAAGv8E,KAAamhF,GAAG9nF,GAAGoG,EAAE6iF,UAAUtiF,GAAE,EAA3H,IAAIrG,EAAE,IAAtBqG,EAAEP,EAAE4iF,aAAwBntF,YAAY8K,EAAErR,KAAKqR,GAAG+7E,GAAGpiF,EAAEqG,EAAExH,OAAOyqF,cAActpF,GAAGoiF,GAAG,KAA0D1iF,EAAEmS,OAAO,CAAC,OAAM,CAAE,CAAC,SAAS03E,GAAGzjF,EAAEpG,EAAE2G,GAAG+iF,GAAGtjF,IAAIO,EAAEkiF,OAAO7oF,EAAE,CAAC,SAAS8pF,KAAK5B,IAAG,EAAG,OAAOE,IAAIsB,GAAGtB,MAAMA,GAAG,MAAM,OAAOC,IAAIqB,GAAGrB,MAAMA,GAAG,MAAM,OAAOC,IAAIoB,GAAGpB,MAAMA,GAAG,MAAMC,GAAGt1F,QAAQ42F,IAAIpB,GAAGx1F,QAAQ42F,GAAG,CACnf,SAASE,GAAG3jF,EAAEpG,GAAGoG,EAAE6iF,YAAYjpF,IAAIoG,EAAE6iF,UAAU,KAAKf,KAAKA,IAAG,EAAGhQ,EAAGiN,0BAA0BjN,EAAG+N,wBAAwB6D,KAAK,CAC5H,SAASE,GAAG5jF,GAAG,SAASpG,EAAEA,GAAG,OAAO+pF,GAAG/pF,EAAEoG,EAAE,CAAC,GAAG,EAAE+hF,GAAGt2F,OAAO,CAACk4F,GAAG5B,GAAG,GAAG/hF,GAAG,IAAI,IAAIO,EAAE,EAAEA,EAAEwhF,GAAGt2F,OAAO8U,IAAI,CAAC,IAAIrG,EAAE6nF,GAAGxhF,GAAGrG,EAAE2oF,YAAY7iF,IAAI9F,EAAE2oF,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAOb,IAAI2B,GAAG3B,GAAGhiF,GAAG,OAAOiiF,IAAI0B,GAAG1B,GAAGjiF,GAAG,OAAOkiF,IAAIyB,GAAGzB,GAAGliF,GAAGmiF,GAAGt1F,QAAQ+M,GAAGyoF,GAAGx1F,QAAQ+M,GAAO2G,EAAE,EAAEA,EAAE+hF,GAAG72F,OAAO8U,KAAIrG,EAAEooF,GAAG/hF,IAAKsiF,YAAY7iF,IAAI9F,EAAE2oF,UAAU,MAAM,KAAK,EAAEP,GAAG72F,QAAiB,QAAR8U,EAAE+hF,GAAG,IAAYO,WAAYI,GAAG1iF,GAAG,OAAOA,EAAEsiF,WAAWP,GAAGv2E,OAAO,CAAC,IAAI83E,GAAGvQ,EAAGwQ,wBAAwBC,IAAG,EAC5a,SAASC,GAAGhkF,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAE8U,GAAE/X,EAAEgqF,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAIryE,GAAE,EAAEsyE,GAAGlkF,EAAEpG,EAAE2G,EAAErG,EAAE,CAAC,QAAQ0X,GAAE9U,EAAE+mF,GAAGI,WAAWpqF,CAAC,CAAC,CAAC,SAASsqF,GAAGnkF,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAE8U,GAAE/X,EAAEgqF,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAIryE,GAAE,EAAEsyE,GAAGlkF,EAAEpG,EAAE2G,EAAErG,EAAE,CAAC,QAAQ0X,GAAE9U,EAAE+mF,GAAGI,WAAWpqF,CAAC,CAAC,CACjO,SAASqqF,GAAGlkF,EAAEpG,EAAE2G,EAAErG,GAAG,GAAG6pF,GAAG,CAAC,IAAIjnF,EAAEymF,GAAGvjF,EAAEpG,EAAE2G,EAAErG,GAAG,GAAG,OAAO4C,EAAEmyC,GAAGjvC,EAAEpG,EAAEM,EAAEiE,GAAGoC,GAAGiiF,GAAGxiF,EAAE9F,QAAQ,GANtF,SAAY8F,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,OAAOlD,GAAG,IAAK,UAAU,OAAOooF,GAAGW,GAAGX,GAAGhiF,EAAEpG,EAAE2G,EAAErG,EAAE4C,IAAG,EAAG,IAAK,YAAY,OAAOmlF,GAAGU,GAAGV,GAAGjiF,EAAEpG,EAAE2G,EAAErG,EAAE4C,IAAG,EAAG,IAAK,YAAY,OAAOolF,GAAGS,GAAGT,GAAGliF,EAAEpG,EAAE2G,EAAErG,EAAE4C,IAAG,EAAG,IAAK,cAAc,IAAIjD,EAAEiD,EAAE4lF,UAAkD,OAAxCP,GAAGrN,IAAIj7E,EAAE8oF,GAAGR,GAAG/vE,IAAIvY,IAAI,KAAKmG,EAAEpG,EAAE2G,EAAErG,EAAE4C,KAAU,EAAG,IAAK,oBAAoB,OAAOjD,EAAEiD,EAAE4lF,UAAUL,GAAGvN,IAAIj7E,EAAE8oF,GAAGN,GAAGjwE,IAAIvY,IAAI,KAAKmG,EAAEpG,EAAE2G,EAAErG,EAAE4C,KAAI,EAAG,OAAM,CAAE,CAM1QsnF,CAAGtnF,EAAEkD,EAAEpG,EAAE2G,EAAErG,GAAGA,EAAEmqF,uBAAuB,GAAG7B,GAAGxiF,EAAE9F,GAAK,EAAFN,IAAM,EAAE2oF,GAAGjhF,QAAQtB,GAAG,CAAC,KAAK,OAAOlD,GAAG,CAAC,IAAIjD,EAAEijF,GAAGhgF,GAA0D,GAAvD,OAAOjD,GAAG4nF,GAAG5nF,GAAiB,QAAdA,EAAE0pF,GAAGvjF,EAAEpG,EAAE2G,EAAErG,KAAa+0C,GAAGjvC,EAAEpG,EAAEM,EAAEiE,GAAGoC,GAAM1G,IAAIiD,EAAE,MAAMA,EAAEjD,CAAC,CAAC,OAAOiD,GAAG5C,EAAEmqF,iBAAiB,MAAMp1C,GAAGjvC,EAAEpG,EAAEM,EAAE,KAAKqG,EAAE,CAAC,CAAC,IAAIpC,GAAG,KACpU,SAASolF,GAAGvjF,EAAEpG,EAAE2G,EAAErG,GAA2B,GAAxBiE,GAAG,KAAwB,QAAX6B,EAAEkjF,GAAVljF,EAAEu8E,GAAGriF,KAAuB,GAAW,QAARN,EAAEqkF,GAAGj+E,IAAYA,EAAE,UAAU,GAAW,MAARO,EAAE3G,EAAEw7E,KAAW,CAAS,GAAG,QAAXp1E,EAAEq+E,GAAGzkF,IAAe,OAAOoG,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAIO,EAAE,CAAC,GAAG3G,EAAEmjF,UAAU7yF,QAAQo0F,cAAc8E,aAAa,OAAO,IAAIxpF,EAAEw7E,IAAIx7E,EAAEmjF,UAAUsG,cAAc,KAAKrjF,EAAE,IAAI,MAAMpG,IAAIoG,IAAIA,EAAE,MAAW,OAAL7B,GAAG6B,EAAS,IAAI,CAC7S,SAASskF,GAAGtkF,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAOu/E,MAAM,KAAKlpC,GAAG,OAAO,EAAE,KAAKqpC,GAAG,OAAO,EAAE,KAAKE,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAG,CAAC,IAAIuE,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAIzkF,EAAkB9F,EAAhBN,EAAE4qF,GAAGjkF,EAAE3G,EAAEnO,OAASqR,EAAE,UAAUynF,GAAGA,GAAG/5F,MAAM+5F,GAAGvmD,YAAYnkC,EAAEiD,EAAErR,OAAO,IAAIuU,EAAE,EAAEA,EAAEO,GAAG3G,EAAEoG,KAAKlD,EAAEkD,GAAGA,KAAK,IAAIrG,EAAE4G,EAAEP,EAAE,IAAI9F,EAAE,EAAEA,GAAGP,GAAGC,EAAE2G,EAAErG,KAAK4C,EAAEjD,EAAEK,GAAGA,KAAK,OAAOuqF,GAAG3nF,EAAEqT,MAAMnQ,EAAE,EAAE9F,EAAE,EAAEA,OAAE,EAAO,CACxY,SAASyqF,GAAG3kF,GAAG,IAAIpG,EAAEoG,EAAE4kF,QAA+E,MAAvE,aAAa5kF,EAAgB,KAAbA,EAAEA,EAAE2/B,WAAgB,KAAK/lC,IAAIoG,EAAE,IAAKA,EAAEpG,EAAE,KAAKoG,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAAS6kF,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CAC5K,SAAS1qD,GAAGp6B,GAAG,SAASpG,EAAEA,EAAEM,EAAE4C,EAAEjD,EAAEF,GAA6G,IAAI,IAAI4G,KAAlHnN,KAAK2xF,WAAWnrF,EAAExG,KAAK4xF,YAAYloF,EAAE1J,KAAKlE,KAAKgL,EAAE9G,KAAKwvF,YAAY/oF,EAAEzG,KAAK2F,OAAOY,EAAEvG,KAAK6xF,cAAc,KAAkBjlF,EAAEA,EAAEvN,eAAe8N,KAAK3G,EAAEoG,EAAEO,GAAGnN,KAAKmN,GAAG3G,EAAEA,EAAEC,GAAGA,EAAE0G,IAAgI,OAA5HnN,KAAK8xF,oBAAoB,MAAMrrF,EAAEsrF,iBAAiBtrF,EAAEsrF,kBAAiB,IAAKtrF,EAAEurF,aAAaP,GAAGC,GAAG1xF,KAAKiyF,qBAAqBP,GAAU1xF,IAAI,CAC9E,OAD+Eoe,EAAE5X,EAAErH,UAAU,CAAC+yF,eAAe,WAAWlyF,KAAK+xF,kBAAiB,EAAG,IAAInlF,EAAE5M,KAAKwvF,YAAY5iF,IAAIA,EAAEslF,eAAetlF,EAAEslF,iBAAiB,mBAAmBtlF,EAAEolF,cAC7eplF,EAAEolF,aAAY,GAAIhyF,KAAK8xF,mBAAmBL,GAAG,EAAER,gBAAgB,WAAW,IAAIrkF,EAAE5M,KAAKwvF,YAAY5iF,IAAIA,EAAEqkF,gBAAgBrkF,EAAEqkF,kBAAkB,mBAAmBrkF,EAAEulF,eAAevlF,EAAEulF,cAAa,GAAInyF,KAAKiyF,qBAAqBR,GAAG,EAAEW,QAAQ,WAAW,EAAEC,aAAaZ,KAAYjrF,CAAC,CACjR,IAAoL8rF,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,UAAU,SAASjmF,GAAG,OAAOA,EAAEimF,WAAWjnD,KAAKC,KAAK,EAAEkmD,iBAAiB,EAAEe,UAAU,GAAGt3C,GAAGxU,GAAGyrD,IAAIM,GAAG30E,EAAE,CAAC,EAAEq0E,GAAG,CAAC5f,KAAK,EAAEmgB,OAAO,IAAIC,GAAGjsD,GAAG+rD,IAAaG,GAAG90E,EAAE,CAAC,EAAE20E,GAAG,CAACI,QAAQ,EAAEC,QAAQ,EAAEj2F,QAAQ,EAAEC,QAAQ,EAAEi2F,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGC,OAAO,EAAEC,QAAQ,EAAEC,cAAc,SAASnnF,GAAG,YAAO,IAASA,EAAEmnF,cAAcnnF,EAAEonF,cAAcpnF,EAAEw8E,WAAWx8E,EAAEqnF,UAAUrnF,EAAEonF,YAAYpnF,EAAEmnF,aAAa,EAAEG,UAAU,SAAStnF,GAAG,MAAG,cAC3eA,EAASA,EAAEsnF,WAAUtnF,IAAI4lF,KAAKA,IAAI,cAAc5lF,EAAE9Q,MAAMw2F,GAAG1lF,EAAEumF,QAAQX,GAAGW,QAAQZ,GAAG3lF,EAAEwmF,QAAQZ,GAAGY,SAASb,GAAGD,GAAG,EAAEE,GAAG5lF,GAAU0lF,GAAE,EAAE6B,UAAU,SAASvnF,GAAG,MAAM,cAAcA,EAAEA,EAAEunF,UAAU5B,EAAE,IAAI6B,GAAGptD,GAAGksD,IAAiCmB,GAAGrtD,GAA7B5oB,EAAE,CAAC,EAAE80E,GAAG,CAACoB,aAAa,KAA4CC,GAAGvtD,GAA9B5oB,EAAE,CAAC,EAAE20E,GAAG,CAACgB,cAAc,KAA0ES,GAAGxtD,GAA5D5oB,EAAE,CAAC,EAAEq0E,GAAG,CAACgC,cAAc,EAAEj4E,YAAY,EAAEk4E,cAAc,KAAcC,GAAGv2E,EAAE,CAAC,EAAEq0E,GAAG,CAACmC,cAAc,SAAShoF,GAAG,MAAM,kBAAkBA,EAAEA,EAAEgoF,cAAct6F,OAAOs6F,aAAa,IAAIC,GAAG7tD,GAAG2tD,IAAyBG,GAAG9tD,GAArB5oB,EAAE,CAAC,EAAEq0E,GAAG,CAAC1pF,KAAK,KAAcgsF,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGtpF,GAAG,IAAIpG,EAAExG,KAAKwvF,YAAY,OAAOhpF,EAAEmtF,iBAAiBntF,EAAEmtF,iBAAiB/mF,MAAIA,EAAEipF,GAAGjpF,OAAMpG,EAAEoG,EAAK,CAAC,SAASgnF,KAAK,OAAOsC,EAAE,CAChS,IAAIC,GAAG/3E,EAAE,CAAC,EAAE20E,GAAG,CAACx9E,IAAI,SAAS3I,GAAG,GAAGA,EAAE2I,IAAI,CAAC,IAAI/O,EAAEuuF,GAAGnoF,EAAE2I,MAAM3I,EAAE2I,IAAI,GAAG,iBAAiB/O,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAaoG,EAAE9Q,KAAc,MAAR8Q,EAAE2kF,GAAG3kF,IAAU,QAAQkkD,OAAOC,aAAankD,GAAI,YAAYA,EAAE9Q,MAAM,UAAU8Q,EAAE9Q,KAAK85F,GAAGhpF,EAAE4kF,UAAU,eAAe,EAAE,EAAE4E,KAAK,EAAE1mF,SAAS,EAAE6jF,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAE2C,OAAO,EAAEC,OAAO,EAAE3C,iBAAiBC,GAAGrnD,SAAS,SAAS3/B,GAAG,MAAM,aAAaA,EAAE9Q,KAAKy1F,GAAG3kF,GAAG,CAAC,EAAE4kF,QAAQ,SAAS5kF,GAAG,MAAM,YAAYA,EAAE9Q,MAAM,UAAU8Q,EAAE9Q,KAAK8Q,EAAE4kF,QAAQ,CAAC,EAAE+E,MAAM,SAAS3pF,GAAG,MAAM,aAC7eA,EAAE9Q,KAAKy1F,GAAG3kF,GAAG,YAAYA,EAAE9Q,MAAM,UAAU8Q,EAAE9Q,KAAK8Q,EAAE4kF,QAAQ,CAAC,IAAIgF,GAAGxvD,GAAGmvD,IAAiIM,GAAGzvD,GAA7H5oB,EAAE,CAAC,EAAE80E,GAAG,CAAC5D,UAAU,EAAEx0F,MAAM,EAAET,OAAO,EAAEq8F,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAGjwD,GAArH5oB,EAAE,CAAC,EAAE20E,GAAG,CAACmE,QAAQ,EAAEC,cAAc,EAAEC,eAAe,EAAE3D,OAAO,EAAEC,QAAQ,EAAEH,QAAQ,EAAEC,SAAS,EAAEG,iBAAiBC,MAA0EyD,GAAGrwD,GAA3D5oB,EAAE,CAAC,EAAEq0E,GAAG,CAAC1gB,aAAa,EAAEv1D,YAAY,EAAEk4E,cAAc,KAAc4C,GAAGl5E,EAAE,CAAC,EAAE80E,GAAG,CAACqE,OAAO,SAAS3qF,GAAG,MAAM,WAAWA,EAAEA,EAAE2qF,OAAO,gBAAgB3qF,GAAGA,EAAE4qF,YAAY,CAAC,EACnfC,OAAO,SAAS7qF,GAAG,MAAM,WAAWA,EAAEA,EAAE6qF,OAAO,gBAAgB7qF,GAAGA,EAAE8qF,YAAY,eAAe9qF,GAAGA,EAAE+qF,WAAW,CAAC,EAAEC,OAAO,EAAEC,UAAU,IAAIC,GAAG9wD,GAAGswD,IAAIS,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGhZ,GAAI,qBAAqB1kF,OAAO29F,GAAG,KAAKjZ,GAAI,iBAAiB3iF,WAAW47F,GAAG57F,SAAS67F,cAAc,IAAIC,GAAGnZ,GAAI,cAAc1kF,SAAS29F,GAAGG,GAAGpZ,KAAMgZ,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAGvnC,OAAOC,aAAa,IAAIunC,IAAG,EAC1W,SAASC,GAAG3rF,EAAEpG,GAAG,OAAOoG,GAAG,IAAK,QAAQ,OAAO,IAAImrF,GAAG7pF,QAAQ1H,EAAEgrF,SAAS,IAAK,UAAU,OAAO,MAAMhrF,EAAEgrF,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAASgH,GAAG5rF,GAAc,MAAM,kBAAjBA,EAAEA,EAAEomF,SAAkC,SAASpmF,EAAEA,EAAE7D,KAAK,IAAI,CAAC,IAAI0vF,IAAG,EAE9Q,IAAIC,GAAG,CAAC1xF,OAAM,EAAG2xF,MAAK,EAAGC,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGC,OAAM,EAAGC,QAAO,EAAGC,UAAS,EAAGC,OAAM,EAAGC,QAAO,EAAGC,KAAI,EAAGluD,MAAK,EAAG52B,MAAK,EAAG/K,KAAI,EAAG8vF,MAAK,GAAI,SAASx0B,GAAGh4D,GAAG,IAAIpG,EAAEoG,GAAGA,EAAE61E,UAAU71E,EAAE61E,SAASp+C,cAAc,MAAM,UAAU79B,IAAIkyF,GAAG9rF,EAAE9Q,MAAM,aAAa0K,CAAO,CAAC,SAASsjD,GAAGl9C,EAAEpG,EAAE2G,EAAErG,GAAG+iF,GAAG/iF,GAAsB,GAAnBN,EAAE6yF,GAAG7yF,EAAE,aAAgBnO,SAAS8U,EAAE,IAAIquC,GAAG,WAAW,SAAS,KAAKruC,EAAErG,GAAG8F,EAAEtM,KAAK,CAAC+O,MAAMlC,EAAElU,UAAUuN,IAAI,CAAC,IAAIgyD,GAAG,KAAK8gC,GAAG,KAAK,SAASC,GAAG3sF,GAAG4sF,GAAG5sF,EAAE,EAAE,CAAC,SAAS6sF,GAAG7sF,GAAe,GAAGq2E,EAATyW,GAAG9sF,IAAY,OAAOA,CAAC,CACpe,SAAS+sF,GAAG/sF,EAAEpG,GAAG,GAAG,WAAWoG,EAAE,OAAOpG,CAAC,CAAC,IAAIozF,IAAG,EAAG,GAAG5a,EAAG,CAAC,IAAIn1B,GAAG,GAAGm1B,EAAG,CAAC,IAAI6a,GAAG,YAAYx9F,SAAS,IAAIw9F,GAAG,CAAC,IAAIC,GAAGz9F,SAASxC,cAAc,OAAOigG,GAAG58E,aAAa,UAAU,WAAW28E,GAAG,oBAAoBC,GAAGC,OAAO,CAAClwC,GAAGgwC,EAAE,MAAMhwC,IAAG,EAAG+vC,GAAG/vC,MAAMxtD,SAAS67F,cAAc,EAAE77F,SAAS67F,aAAa,CAAC,SAAS8B,KAAKxhC,KAAKA,GAAGyhC,YAAY,mBAAmBC,IAAIZ,GAAG9gC,GAAG,KAAK,CAAC,SAAS0hC,GAAGttF,GAAG,GAAG,UAAUA,EAAEmlE,cAAc0nB,GAAGH,IAAI,CAAC,IAAI9yF,EAAE,GAAGsjD,GAAGtjD,EAAE8yF,GAAG1sF,EAAEu8E,GAAGv8E,IAAIs9E,GAAGqP,GAAG/yF,EAAE,CAAC,CAC/b,SAAS2zF,GAAGvtF,EAAEpG,EAAE2G,GAAG,YAAYP,GAAGotF,KAAUV,GAAGnsF,GAARqrD,GAAGhyD,GAAU4zF,YAAY,mBAAmBF,KAAK,aAAattF,GAAGotF,IAAI,CAAC,SAASK,GAAGztF,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAO6sF,GAAGH,GAAG,CAAC,SAASgB,GAAG1tF,EAAEpG,GAAG,GAAG,UAAUoG,EAAE,OAAO6sF,GAAGjzF,EAAE,CAAC,SAAS+zF,GAAG3tF,EAAEpG,GAAG,GAAG,UAAUoG,GAAG,WAAWA,EAAE,OAAO6sF,GAAGjzF,EAAE,CAAiE,IAAIg0F,GAAG,oBAAoBp7F,OAAO0xB,GAAG1xB,OAAO0xB,GAA5G,SAAYlkB,EAAEpG,GAAG,OAAOoG,IAAIpG,IAAI,IAAIoG,GAAG,EAAEA,IAAI,EAAEpG,IAAIoG,IAAIA,GAAGpG,IAAIA,CAAC,EACtW,SAASi0F,GAAG7tF,EAAEpG,GAAG,GAAGg0F,GAAG5tF,EAAEpG,GAAG,OAAM,EAAG,GAAG,kBAAkBoG,GAAG,OAAOA,GAAG,kBAAkBpG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI2G,EAAE/N,OAAOyU,KAAKjH,GAAG9F,EAAE1H,OAAOyU,KAAKrN,GAAG,GAAG2G,EAAE9U,SAASyO,EAAEzO,OAAO,OAAM,EAAG,IAAIyO,EAAE,EAAEA,EAAEqG,EAAE9U,OAAOyO,IAAI,CAAC,IAAI4C,EAAEyD,EAAErG,GAAG,IAAIm4E,EAAG3/E,KAAKkH,EAAEkD,KAAK8wF,GAAG5tF,EAAElD,GAAGlD,EAAEkD,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,SAASgxF,GAAG9tF,GAAG,KAAKA,GAAGA,EAAEq4E,YAAYr4E,EAAEA,EAAEq4E,WAAW,OAAOr4E,CAAC,CACtU,SAAS+tF,GAAG/tF,EAAEpG,GAAG,IAAwBM,EAApBqG,EAAEutF,GAAG9tF,GAAO,IAAJA,EAAE,EAAYO,GAAG,CAAC,GAAG,IAAIA,EAAEk4E,SAAS,CAA0B,GAAzBv+E,EAAE8F,EAAEO,EAAEy9B,YAAYvyC,OAAUuU,GAAGpG,GAAGM,GAAGN,EAAE,MAAM,CAACkjC,KAAKv8B,EAAElG,OAAOT,EAAEoG,GAAGA,EAAE9F,CAAC,CAAC8F,EAAE,CAAC,KAAKO,GAAG,CAAC,GAAGA,EAAEytF,YAAY,CAACztF,EAAEA,EAAEytF,YAAY,MAAMhuF,CAAC,CAACO,EAAEA,EAAEq8B,UAAU,CAACr8B,OAAE,CAAM,CAACA,EAAEutF,GAAGvtF,EAAE,CAAC,CAAC,SAAS0tF,GAAGjuF,EAAEpG,GAAG,SAAOoG,IAAGpG,KAAEoG,IAAIpG,KAAKoG,GAAG,IAAIA,EAAEy4E,YAAY7+E,GAAG,IAAIA,EAAE6+E,SAASwV,GAAGjuF,EAAEpG,EAAEgjC,YAAY,aAAa58B,EAAEA,EAAEkuF,SAASt0F,KAAGoG,EAAEmuF,4BAAwD,GAA7BnuF,EAAEmuF,wBAAwBv0F,KAAY,CAC9Z,SAASw0F,KAAK,IAAI,IAAIpuF,EAAEtS,OAAOkM,EAAE28E,IAAK38E,aAAaoG,EAAEquF,mBAAmB,CAAC,IAAI,IAAI9tF,EAAE,kBAAkB3G,EAAE00F,cAAcxrF,SAASwoB,IAAI,CAAC,MAAMpxB,GAAGqG,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAM3G,EAAE28E,GAA/Bv2E,EAAEpG,EAAE00F,eAAgC7+F,SAAS,CAAC,OAAOmK,CAAC,CAAC,SAAS20F,GAAGvuF,GAAG,IAAIpG,EAAEoG,GAAGA,EAAE61E,UAAU71E,EAAE61E,SAASp+C,cAAc,OAAO79B,IAAI,UAAUA,IAAI,SAASoG,EAAE9Q,MAAM,WAAW8Q,EAAE9Q,MAAM,QAAQ8Q,EAAE9Q,MAAM,QAAQ8Q,EAAE9Q,MAAM,aAAa8Q,EAAE9Q,OAAO,aAAa0K,GAAG,SAASoG,EAAEwuF,gBAAgB,CACxa,SAASC,GAAGzuF,GAAG,IAAIpG,EAAEw0F,KAAK7tF,EAAEP,EAAE0uF,YAAYx0F,EAAE8F,EAAE2uF,eAAe,GAAG/0F,IAAI2G,GAAGA,GAAGA,EAAE62E,eAAe6W,GAAG1tF,EAAE62E,cAAcwX,gBAAgBruF,GAAG,CAAC,GAAG,OAAOrG,GAAGq0F,GAAGhuF,GAAG,GAAG3G,EAAEM,EAAEstE,WAAc,KAARxnE,EAAE9F,EAAEiU,OAAiBnO,EAAEpG,GAAG,mBAAmB2G,EAAEA,EAAEsuF,eAAej1F,EAAE2G,EAAEuuF,aAAaz/F,KAAKsH,IAAIqJ,EAAEO,EAAE/V,MAAMiB,aAAa,IAAGuU,GAAGpG,EAAE2G,EAAE62E,eAAe3nF,WAAWmK,EAAEm1F,aAAarhG,QAASshG,aAAa,CAAChvF,EAAEA,EAAEgvF,eAAe,IAAIlyF,EAAEyD,EAAEy9B,YAAYvyC,OAAOoO,EAAExK,KAAKsH,IAAIuD,EAAEstE,MAAM1qE,GAAG5C,OAAE,IAASA,EAAEiU,IAAItU,EAAExK,KAAKsH,IAAIuD,EAAEiU,IAAIrR,IAAIkD,EAAEivF,QAAQp1F,EAAEK,IAAI4C,EAAE5C,EAAEA,EAAEL,EAAEA,EAAEiD,GAAGA,EAAEixF,GAAGxtF,EAAE1G,GAAG,IAAIF,EAAEo0F,GAAGxtF,EACvfrG,GAAG4C,GAAGnD,IAAI,IAAIqG,EAAEkvF,YAAYlvF,EAAEmvF,aAAaryF,EAAEggC,MAAM98B,EAAEovF,eAAetyF,EAAEzC,QAAQ2F,EAAEqvF,YAAY11F,EAAEmjC,MAAM98B,EAAEsvF,cAAc31F,EAAEU,WAAUT,EAAEA,EAAE21F,eAAgBC,SAAS1yF,EAAEggC,KAAKhgC,EAAEzC,QAAQ2F,EAAEyvF,kBAAkB51F,EAAEK,GAAG8F,EAAE0vF,SAAS91F,GAAGoG,EAAEivF,OAAOt1F,EAAEmjC,KAAKnjC,EAAEU,UAAUT,EAAE+1F,OAAOh2F,EAAEmjC,KAAKnjC,EAAEU,QAAQ2F,EAAE0vF,SAAS91F,IAAI,CAAM,IAALA,EAAE,GAAOoG,EAAEO,EAAEP,EAAEA,EAAE48B,YAAY,IAAI58B,EAAEy4E,UAAU7+E,EAAElG,KAAK,CAACiE,QAAQqI,EAAE/R,KAAK+R,EAAE4vF,WAAWpiG,IAAIwS,EAAE6vF,YAAmD,IAAvC,oBAAoBtvF,EAAEuvF,OAAOvvF,EAAEuvF,QAAYvvF,EAAE,EAAEA,EAAE3G,EAAEnO,OAAO8U,KAAIP,EAAEpG,EAAE2G,IAAK5I,QAAQi4F,WAAW5vF,EAAE/R,KAAK+R,EAAErI,QAAQk4F,UAAU7vF,EAAExS,GAAG,CAAC,CACzf,IAAIuiG,GAAG3d,GAAI,iBAAiB3iF,UAAU,IAAIA,SAAS67F,aAAa0E,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGpwF,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAEqG,EAAE7S,SAAS6S,EAAEA,EAAE9Q,SAAS,IAAI8Q,EAAEk4E,SAASl4E,EAAEA,EAAE62E,cAAc+Y,IAAI,MAAMH,IAAIA,KAAKzZ,EAAGr8E,KAAU,mBAALA,EAAE81F,KAAyBzB,GAAGr0F,GAAGA,EAAE,CAACstE,MAAMttE,EAAE20F,eAAe1gF,IAAIjU,EAAE40F,cAAuF50F,EAAE,CAACi1F,YAA3Ej1F,GAAGA,EAAEk9E,eAAel9E,EAAEk9E,cAAc2X,aAAarhG,QAAQshG,gBAA+BG,WAAWC,aAAal1F,EAAEk1F,aAAaC,UAAUn1F,EAAEm1F,UAAUC,YAAYp1F,EAAEo1F,aAAcY,IAAIrC,GAAGqC,GAAGh2F,KAAKg2F,GAAGh2F,EAAsB,GAApBA,EAAEuyF,GAAGwD,GAAG,aAAgBxkG,SAASmO,EAAE,IAAIg1C,GAAG,WAAW,SAAS,KAAKh1C,EAAE2G,GAAGP,EAAEtM,KAAK,CAAC+O,MAAM7I,EAAEvN,UAAU6N,IAAIN,EAAEb,OAAOi3F,KAAK,CACtf,SAASK,GAAGrwF,EAAEpG,GAAG,IAAI2G,EAAE,CAAC,EAAiF,OAA/EA,EAAEP,EAAEy3B,eAAe79B,EAAE69B,cAAcl3B,EAAE,SAASP,GAAG,SAASpG,EAAE2G,EAAE,MAAMP,GAAG,MAAMpG,EAAS2G,CAAC,CAAC,IAAI+vF,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAG7wF,GAAG,GAAG2wF,GAAG3wF,GAAG,OAAO2wF,GAAG3wF,GAAG,IAAIswF,GAAGtwF,GAAG,OAAOA,EAAE,IAAYO,EAAR3G,EAAE02F,GAAGtwF,GAAK,IAAIO,KAAK3G,EAAE,GAAGA,EAAEnH,eAAe8N,IAAIA,KAAKqwF,GAAG,OAAOD,GAAG3wF,GAAGpG,EAAE2G,GAAG,OAAOP,CAAC,CAA/XoyE,IAAKwe,GAAGnhG,SAASxC,cAAc,OAAOjF,MAAM,mBAAmB0F,gBAAgB4iG,GAAGC,aAAa/tF,iBAAiB8tF,GAAGE,mBAAmBhuF,iBAAiB8tF,GAAGG,eAAejuF,WAAW,oBAAoB9U,eAAe4iG,GAAGI,cAAczM,YAAwJ,IAAI6M,GAAGD,GAAG,gBAAgBE,GAAGF,GAAG,sBAAsBG,GAAGH,GAAG,kBAAkBI,GAAGJ,GAAG,iBAAiBK,GAAG,IAAI9O,IAAIj+C,GAAG,smBAAsmBllC,MAAM,KAC/lC,SAASkyF,GAAGnxF,EAAEpG,GAAGs3F,GAAGpc,IAAI90E,EAAEpG,GAAGs4E,EAAGt4E,EAAE,CAACoG,GAAG,CAAC,IAAI,IAAI2zC,GAAG,EAAEA,GAAGxP,GAAG14C,OAAOkoD,KAAK,CAAC,IAAIy9C,GAAGjtD,GAAGwP,IAA2Dw9C,GAApDC,GAAG35D,cAAuD,MAAtC25D,GAAG,GAAGpe,cAAcoe,GAAGjhF,MAAM,IAAiB,CAACghF,GAAGL,GAAG,kBAAkBK,GAAGJ,GAAG,wBAAwBI,GAAGH,GAAG,oBAAoBG,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGF,GAAG,mBAAmB9e,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoEjzE,MAAM,MAAMizE,EAAG,WAAW,uFAAuFjzE,MAAM,MAAMizE,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DjzE,MAAM,MAAMizE,EAAG,qBAAqB,6DAA6DjzE,MAAM,MAC/fizE,EAAG,sBAAsB,8DAA8DjzE,MAAM,MAAM,IAAIoyF,GAAG,6NAA6NpyF,MAAM,KAAKqyF,GAAG,IAAItf,IAAI,0CAA0C/yE,MAAM,KAAKiR,OAAOmhF,KACzZ,SAASE,GAAGvxF,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE8F,EAAE9Q,MAAM,gBAAgB8Q,EAAEilF,cAAc1kF,EAlDjE,SAAYP,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,EAAEF,EAAEJ,EAAE8D,GAA4B,GAAzB2gF,GAAG5oF,MAAMhC,KAAK5H,WAAcmyF,GAAG,CAAC,IAAGA,GAAgC,MAAMv2E,MAAMtN,EAAE,MAA1C,IAAIktB,EAAE42D,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAG92D,EAAE,CAAC,CAkDpEwqE,CAAGt3F,EAAEN,OAAE,EAAOoG,GAAGA,EAAEilF,cAAc,IAAI,CACxG,SAAS2H,GAAG5sF,EAAEpG,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAI2G,EAAE,EAAEA,EAAEP,EAAEvU,OAAO8U,IAAI,CAAC,IAAIrG,EAAE8F,EAAEO,GAAGzD,EAAE5C,EAAEuI,MAAMvI,EAAEA,EAAE7N,UAAU2T,EAAE,CAAC,IAAInG,OAAE,EAAO,GAAGD,EAAE,IAAI,IAAID,EAAEO,EAAEzO,OAAO,EAAE,GAAGkO,EAAEA,IAAI,CAAC,IAAIJ,EAAEW,EAAEP,GAAG0D,EAAE9D,EAAEk4F,SAASzqE,EAAEztB,EAAE0rF,cAA2B,GAAb1rF,EAAEA,EAAE/M,SAAY6Q,IAAIxD,GAAGiD,EAAEuoF,uBAAuB,MAAMrlF,EAAEuxF,GAAGz0F,EAAEvD,EAAEytB,GAAGntB,EAAEwD,CAAC,MAAM,IAAI1D,EAAE,EAAEA,EAAEO,EAAEzO,OAAOkO,IAAI,CAAoD,GAA5C0D,GAAP9D,EAAEW,EAAEP,IAAO83F,SAASzqE,EAAEztB,EAAE0rF,cAAc1rF,EAAEA,EAAE/M,SAAY6Q,IAAIxD,GAAGiD,EAAEuoF,uBAAuB,MAAMrlF,EAAEuxF,GAAGz0F,EAAEvD,EAAEytB,GAAGntB,EAAEwD,CAAC,CAAC,CAAC,CAAC,GAAGwgF,GAAG,MAAM79E,EAAE89E,GAAGD,IAAG,EAAGC,GAAG,KAAK99E,CAAE,CAC5a,SAAS0xF,GAAE1xF,EAAEpG,GAAG,IAAI2G,EAAE3G,EAAEq6C,SAAI,IAAS1zC,IAAIA,EAAE3G,EAAEq6C,IAAI,IAAI+9B,KAAK,IAAI93E,EAAE8F,EAAE,WAAWO,EAAEoxF,IAAIz3F,KAAK03F,GAAGh4F,EAAEoG,EAAE,GAAE,GAAIO,EAAE86C,IAAInhD,GAAG,CAAC,SAAS23F,GAAG7xF,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE,EAAEN,IAAIM,GAAG,GAAG03F,GAAGrxF,EAAEP,EAAE9F,EAAEN,EAAE,CAAC,IAAIk4F,GAAG,kBAAkBziG,KAAK0H,SAAS6D,SAAS,IAAIuV,MAAM,GAAG,SAAS4hF,GAAG/xF,GAAG,IAAIA,EAAE8xF,IAAI,CAAC9xF,EAAE8xF,KAAI,EAAGlkC,EAAG/gE,SAAQ,SAAS+M,GAAG,oBAAoBA,IAAI03F,GAAGK,IAAI/3F,IAAIi4F,GAAGj4F,GAAE,EAAGoG,GAAG6xF,GAAGj4F,GAAE,EAAGoG,GAAG,IAAG,IAAIpG,EAAE,IAAIoG,EAAEy4E,SAASz4E,EAAEA,EAAEo3E,cAAc,OAAOx9E,GAAGA,EAAEk4F,MAAMl4F,EAAEk4F,KAAI,EAAGD,GAAG,mBAAkB,EAAGj4F,GAAG,CAAC,CACjb,SAASg4F,GAAG5xF,EAAEpG,EAAE2G,EAAErG,GAAG,OAAOoqF,GAAG1qF,IAAI,KAAK,EAAE,IAAIkD,EAAEknF,GAAG,MAAM,KAAK,EAAElnF,EAAEqnF,GAAG,MAAM,QAAQrnF,EAAEonF,GAAG3jF,EAAEzD,EAAEgI,KAAK,KAAKlL,EAAE2G,EAAEP,GAAGlD,OAAE,GAAQ0gF,IAAI,eAAe5jF,GAAG,cAAcA,GAAG,UAAUA,IAAIkD,GAAE,GAAI5C,OAAE,IAAS4C,EAAEkD,EAAErT,iBAAiBiN,EAAE2G,EAAE,CAACyxF,SAAQ,EAAGC,QAAQn1F,IAAIkD,EAAErT,iBAAiBiN,EAAE2G,GAAE,QAAI,IAASzD,EAAEkD,EAAErT,iBAAiBiN,EAAE2G,EAAE,CAAC0xF,QAAQn1F,IAAIkD,EAAErT,iBAAiBiN,EAAE2G,GAAE,EAAG,CAClV,SAAS0uC,GAAGjvC,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,IAAIjD,EAAEK,EAAE,GAAG,KAAO,EAAFN,IAAM,KAAO,EAAFA,IAAM,OAAOM,EAAE8F,EAAE,OAAO,CAAC,GAAG,OAAO9F,EAAE,OAAO,IAAIP,EAAEO,EAAEk7E,IAAI,GAAG,IAAIz7E,GAAG,IAAIA,EAAE,CAAC,IAAIJ,EAAEW,EAAE6iF,UAAUsG,cAAc,GAAG9pF,IAAIuD,GAAG,IAAIvD,EAAEk/E,UAAUl/E,EAAEqjC,aAAa9/B,EAAE,MAAM,GAAG,IAAInD,EAAE,IAAIA,EAAEO,EAAEikF,OAAO,OAAOxkF,GAAG,CAAC,IAAI0D,EAAE1D,EAAEy7E,IAAI,IAAG,IAAI/3E,GAAG,IAAIA,MAAKA,EAAE1D,EAAEojF,UAAUsG,iBAAkBvmF,GAAG,IAAIO,EAAEo7E,UAAUp7E,EAAEu/B,aAAa9/B,GAAE,OAAOnD,EAAEA,EAAEwkF,MAAM,CAAC,KAAK,OAAO5kF,GAAG,CAAS,GAAG,QAAXI,EAAEupF,GAAG3pF,IAAe,OAAe,GAAG,KAAX8D,EAAE1D,EAAEy7E,MAAc,IAAI/3E,EAAE,CAACnD,EAAEL,EAAEF,EAAE,SAASqG,CAAC,CAACzG,EAAEA,EAAEqjC,UAAU,CAAC,CAAC1iC,EAAEA,EAAEikF,MAAM,CAACb,IAAG,WAAW,IAAIpjF,EAAEL,EAAEiD,EAAEy/E,GAAGh8E,GAAG5G,EAAE,GACpfqG,EAAE,CAAC,IAAIzG,EAAE23F,GAAG9+E,IAAIpS,GAAG,QAAG,IAASzG,EAAE,CAAC,IAAI8D,EAAEuxC,GAAG3zB,EAAEjb,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAI2kF,GAAGpkF,GAAG,MAAMP,EAAE,IAAK,UAAU,IAAK,QAAQ3C,EAAEusF,GAAG,MAAM,IAAK,UAAU3uE,EAAE,QAAQ5d,EAAEsqF,GAAG,MAAM,IAAK,WAAW1sE,EAAE,OAAO5d,EAAEsqF,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYtqF,EAAEsqF,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIpnF,EAAE0mF,OAAO,MAAMjnF,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc3C,EAAEmqF,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOnqF,EAC1iBoqF,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAapqF,EAAEgtF,GAAG,MAAM,KAAKyG,GAAG,KAAKC,GAAG,KAAKC,GAAG3zF,EAAEuqF,GAAG,MAAM,KAAKqJ,GAAG5zF,EAAEotF,GAAG,MAAM,IAAK,SAASptF,EAAEgpF,GAAG,MAAM,IAAK,QAAQhpF,EAAE6tF,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ7tF,EAAE4qF,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY5qF,EAAEwsF,GAAG,IAAI7vF,EAAE,KAAO,EAAFJ,GAAKs4F,GAAGl4F,GAAG,WAAWgG,EAAEhS,EAAEgM,EAAE,OAAOT,EAAEA,EAAE,UAAU,KAAKA,EAAES,EAAE,GAAG,IAAI,IAAQsK,EAAJ43B,EAAEhiC,EAAI,OAC/egiC,GAAG,CAAK,IAAIi2D,GAAR7tF,EAAE43B,GAAU6gD,UAAsF,GAA5E,IAAIz4E,EAAE8wE,KAAK,OAAO+c,IAAI7tF,EAAE6tF,EAAE,OAAOnkG,IAAc,OAAVmkG,EAAE5U,GAAGrhD,EAAEluC,KAAYgM,EAAEtG,KAAK0+F,GAAGl2D,EAAEi2D,EAAE7tF,MAAS4tF,EAAE,MAAMh2D,EAAEA,EAAEiiD,MAAM,CAAC,EAAEnkF,EAAEvO,SAAS8N,EAAE,IAAI8D,EAAE9D,EAAE0hB,EAAE,KAAK1a,EAAEzD,GAAGnD,EAAEjG,KAAK,CAAC+O,MAAMlJ,EAAElN,UAAU2N,IAAI,CAAC,CAAC,GAAG,KAAO,EAAFJ,GAAK,CAA4E,GAAnCyD,EAAE,aAAa2C,GAAG,eAAeA,KAAtEzG,EAAE,cAAcyG,GAAG,gBAAgBA,IAA2CO,IAAI+7E,MAAKrhE,EAAE1a,EAAE4mF,eAAe5mF,EAAE6mF,eAAelE,GAAGjoE,KAAIA,EAAEo3E,OAAgBh1F,GAAG9D,KAAGA,EAAEuD,EAAEpP,SAASoP,EAAEA,GAAGvD,EAAEuD,EAAEs6E,eAAe79E,EAAEw1F,aAAax1F,EAAE+4F,aAAa5kG,OAAU2P,GAAqCA,EAAEnD,EAAiB,QAAf+gB,GAAnCA,EAAE1a,EAAE4mF,eAAe5mF,EAAE8mF,WAAkBnE,GAAGjoE,GAAG,QAC9dA,KAARi3E,EAAEjU,GAAGhjE,KAAU,IAAIA,EAAEm6D,KAAK,IAAIn6D,EAAEm6D,OAAKn6D,EAAE,QAAU5d,EAAE,KAAK4d,EAAE/gB,GAAKmD,IAAI4d,GAAE,CAAgU,GAA/TjhB,EAAEwtF,GAAG2K,EAAE,eAAenkG,EAAE,eAAekuC,EAAE,QAAW,eAAel8B,GAAG,gBAAgBA,IAAEhG,EAAE6vF,GAAGsI,EAAE,iBAAiBnkG,EAAE,iBAAiBkuC,EAAE,WAAUg2D,EAAE,MAAM70F,EAAE9D,EAAEuzF,GAAGzvF,GAAGiH,EAAE,MAAM2W,EAAE1hB,EAAEuzF,GAAG7xE,IAAG1hB,EAAE,IAAIS,EAAEm4F,EAAEj2D,EAAE,QAAQ7+B,EAAEkD,EAAEzD,IAAK/D,OAAOm5F,EAAE34F,EAAE4tF,cAAc7iF,EAAE6tF,EAAE,KAAKjP,GAAGpmF,KAAK5C,KAAIF,EAAE,IAAIA,EAAEhM,EAAEkuC,EAAE,QAAQjhB,EAAE1a,EAAEzD,IAAK/D,OAAOuL,EAAEtK,EAAEmtF,cAAc+K,EAAEC,EAAEn4F,GAAGk4F,EAAEC,EAAK90F,GAAG4d,EAAErhB,EAAE,CAAa,IAAR5L,EAAEitB,EAAEihB,EAAE,EAAM53B,EAAhBtK,EAAEqD,EAAkBiH,EAAEA,EAAEiuF,GAAGjuF,GAAG43B,IAAQ,IAAJ53B,EAAE,EAAM6tF,EAAEnkG,EAAEmkG,EAAEA,EAAEI,GAAGJ,GAAG7tF,IAAI,KAAK,EAAE43B,EAAE53B,GAAGtK,EAAEu4F,GAAGv4F,GAAGkiC,IAAI,KAAK,EAAE53B,EAAE43B,GAAGluC,EACpfukG,GAAGvkG,GAAGsW,IAAI,KAAK43B,KAAK,CAAC,GAAGliC,IAAIhM,GAAG,OAAOA,GAAGgM,IAAIhM,EAAEkwF,UAAU,MAAMtkF,EAAEI,EAAEu4F,GAAGv4F,GAAGhM,EAAEukG,GAAGvkG,EAAE,CAACgM,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAOqD,GAAGm1F,GAAG74F,EAAEJ,EAAE8D,EAAErD,GAAE,GAAI,OAAOihB,GAAG,OAAOi3E,GAAGM,GAAG74F,EAAEu4F,EAAEj3E,EAAEjhB,GAAE,EAAG,CAA8D,GAAG,YAA1CqD,GAAjB9D,EAAEW,EAAE4yF,GAAG5yF,GAAGxM,QAAWmoF,UAAUt8E,EAAEs8E,SAASp+C,gBAA+B,UAAUp6B,GAAG,SAAS9D,EAAErK,KAAK,IAAIujG,EAAG1F,QAAQ,GAAG/0B,GAAGz+D,GAAG,GAAGyzF,GAAGyF,EAAG9E,OAAO,CAAC8E,EAAGhF,GAAG,IAAIiF,EAAGnF,EAAE,MAAMlwF,EAAE9D,EAAEs8E,WAAW,UAAUx4E,EAAEo6B,gBAAgB,aAAal+B,EAAErK,MAAM,UAAUqK,EAAErK,QAAQujG,EAAG/E,IACrV,OAD4V+E,IAAKA,EAAGA,EAAGzyF,EAAE9F,IAAKgjD,GAAGvjD,EAAE84F,EAAGlyF,EAAEzD,IAAW41F,GAAIA,EAAG1yF,EAAEzG,EAAEW,GAAG,aAAa8F,IAAI0yF,EAAGn5F,EAAEq9E,gBAClf8b,EAAG1b,YAAY,WAAWz9E,EAAErK,MAAMoW,GAAG/L,EAAE,SAASA,EAAE/O,QAAOkoG,EAAGx4F,EAAE4yF,GAAG5yF,GAAGxM,OAAcsS,GAAG,IAAK,WAAag4D,GAAG06B,IAAK,SAASA,EAAGlE,mBAAgBwB,GAAG0C,EAAGzC,GAAG/1F,EAAEg2F,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAGz2F,EAAE4G,EAAEzD,GAAG,MAAM,IAAK,kBAAkB,GAAGizF,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAGz2F,EAAE4G,EAAEzD,GAAG,IAAI61F,EAAG,GAAGvH,GAAGxxF,EAAE,CAAC,OAAOoG,GAAG,IAAK,mBAAmB,IAAI4yF,EAAG,qBAAqB,MAAMh5F,EAAE,IAAK,iBAAiBg5F,EAAG,mBACpe,MAAMh5F,EAAE,IAAK,oBAAoBg5F,EAAG,sBAAsB,MAAMh5F,EAAEg5F,OAAG,CAAM,MAAM/G,GAAGF,GAAG3rF,EAAEO,KAAKqyF,EAAG,oBAAoB,YAAY5yF,GAAG,MAAMO,EAAEqkF,UAAUgO,EAAG,sBAAsBA,IAAKpH,IAAI,OAAOjrF,EAAEmpF,SAASmC,IAAI,uBAAuB+G,EAAG,qBAAqBA,GAAI/G,KAAK8G,EAAGjO,OAAYF,GAAG,UAARD,GAAGznF,GAAkBynF,GAAG/5F,MAAM+5F,GAAGvmD,YAAY6tD,IAAG,IAAiB,GAAZ6G,EAAGjG,GAAGvyF,EAAE04F,IAASnnG,SAASmnG,EAAG,IAAI1K,GAAG0K,EAAG5yF,EAAE,KAAKO,EAAEzD,GAAGnD,EAAEjG,KAAK,CAAC+O,MAAMmwF,EAAGvmG,UAAUqmG,IAAKC,EAAGC,EAAGz2F,KAAKw2F,EAAa,QAATA,EAAG/G,GAAGrrF,MAAeqyF,EAAGz2F,KAAKw2F,MAAUA,EAAGpH,GA5BhM,SAAYvrF,EAAEpG,GAAG,OAAOoG,GAAG,IAAK,iBAAiB,OAAO4rF,GAAGhyF,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAE+vF,MAAa,MAAK+B,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAOzrF,EAAEpG,EAAEuC,QAASsvF,IAAIC,GAAG,KAAK1rF,EAAE,QAAQ,OAAO,KAAK,CA4BE6yF,CAAG7yF,EAAEO,GA3Bzd,SAAYP,EAAEpG,GAAG,GAAGiyF,GAAG,MAAM,mBAAmB7rF,IAAIorF,IAAIO,GAAG3rF,EAAEpG,IAAIoG,EAAE0kF,KAAKD,GAAGD,GAAGD,GAAG,KAAKsH,IAAG,EAAG7rF,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKpG,EAAE+sF,SAAS/sF,EAAEitF,QAAQjtF,EAAEktF,UAAUltF,EAAE+sF,SAAS/sF,EAAEitF,OAAO,CAAC,GAAGjtF,EAAEk5F,MAAM,EAAEl5F,EAAEk5F,KAAKrnG,OAAO,OAAOmO,EAAEk5F,KAAK,GAAGl5F,EAAE+vF,MAAM,OAAOzlC,OAAOC,aAAavqD,EAAE+vF,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAO6B,IAAI,OAAO5xF,EAAE8vF,OAAO,KAAK9vF,EAAEuC,KAAyB,CA2BqF42F,CAAG/yF,EAAEO,MACje,GADoerG,EAAEuyF,GAAGvyF,EAAE,kBACvezO,SAASqR,EAAE,IAAIorF,GAAG,gBAAgB,cAAc,KAAK3nF,EAAEzD,GAAGnD,EAAEjG,KAAK,CAAC+O,MAAM3F,EAAEzQ,UAAU6N,IAAI4C,EAAEX,KAAKw2F,GAAG,CAAC/F,GAAGjzF,EAAEC,EAAE,GAAE,CAAC,SAASw4F,GAAGpyF,EAAEpG,EAAE2G,GAAG,MAAM,CAACkxF,SAASzxF,EAAExT,SAASoN,EAAEqrF,cAAc1kF,EAAE,CAAC,SAASksF,GAAGzsF,EAAEpG,GAAG,IAAI,IAAI2G,EAAE3G,EAAE,UAAUM,EAAE,GAAG,OAAO8F,GAAG,CAAC,IAAIlD,EAAEkD,EAAEnG,EAAEiD,EAAEigF,UAAU,IAAIjgF,EAAEs4E,KAAK,OAAOv7E,IAAIiD,EAAEjD,EAAY,OAAVA,EAAE0jF,GAAGv9E,EAAEO,KAAYrG,EAAEw+B,QAAQ05D,GAAGpyF,EAAEnG,EAAEiD,IAAc,OAAVjD,EAAE0jF,GAAGv9E,EAAEpG,KAAYM,EAAExG,KAAK0+F,GAAGpyF,EAAEnG,EAAEiD,KAAKkD,EAAEA,EAAEm+E,MAAM,CAAC,OAAOjkF,CAAC,CAAC,SAASq4F,GAAGvyF,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAEm+E,aAAan+E,GAAG,IAAIA,EAAEo1E,KAAK,OAAOp1E,GAAI,IAAI,CACnd,SAASwyF,GAAGxyF,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,IAAI,IAAIjD,EAAED,EAAEmrF,WAAWprF,EAAE,GAAG,OAAO4G,GAAGA,IAAIrG,GAAG,CAAC,IAAIX,EAAEgH,EAAElD,EAAE9D,EAAE2kF,UAAUl3D,EAAEztB,EAAEwjF,UAAU,GAAG,OAAO1/E,GAAGA,IAAInD,EAAE,MAAM,IAAIX,EAAE67E,KAAK,OAAOpuD,IAAIztB,EAAEytB,EAAElqB,EAAa,OAAVO,EAAEkgF,GAAGh9E,EAAE1G,KAAYF,EAAE++B,QAAQ05D,GAAG7xF,EAAElD,EAAE9D,IAAKuD,GAAc,OAAVO,EAAEkgF,GAAGh9E,EAAE1G,KAAYF,EAAEjG,KAAK0+F,GAAG7xF,EAAElD,EAAE9D,KAAMgH,EAAEA,EAAE49E,MAAM,CAAC,IAAIxkF,EAAElO,QAAQuU,EAAEtM,KAAK,CAAC+O,MAAM7I,EAAEvN,UAAUsN,GAAG,CAAC,IAAIq5F,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAGlzF,GAAG,OAAO,kBAAkBA,EAAEA,EAAE,GAAGA,GAAGiR,QAAQ+hF,GAAG,MAAM/hF,QAAQgiF,GAAG,GAAG,CAAC,SAASE,GAAGnzF,EAAEpG,EAAE2G,GAAW,GAAR3G,EAAEs5F,GAAGt5F,GAAMs5F,GAAGlzF,KAAKpG,GAAG2G,EAAE,MAAM6G,MAAMtN,EAAE,KAAM,CAAC,SAASs5F,KAAK,CAC9e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGvzF,EAAEpG,GAAG,MAAM,aAAaoG,GAAG,aAAaA,GAAG,kBAAkBpG,EAAEw6D,UAAU,kBAAkBx6D,EAAEw6D,UAAU,kBAAkBx6D,EAAE89E,yBAAyB,OAAO99E,EAAE89E,yBAAyB,MAAM99E,EAAE89E,wBAAwB8b,MAAM,CAC5P,IAAIC,GAAG,oBAAoB9mF,WAAWA,gBAAW,EAAO+mF,GAAG,oBAAoBC,aAAaA,kBAAa,EAAOC,GAAG,oBAAoBC,QAAQA,aAAQ,EAAOC,GAAG,oBAAoBC,eAAeA,eAAe,qBAAqBH,GAAG,SAAS5zF,GAAG,OAAO4zF,GAAGI,QAAQ,MAAMC,KAAKj0F,GAAGk0F,MAAMC,GAAG,EAAEV,GAAG,SAASU,GAAGn0F,GAAG2M,YAAW,WAAW,MAAM3M,CAAE,GAAE,CACpV,SAASo0F,GAAGp0F,EAAEpG,GAAG,IAAI2G,EAAE3G,EAAEM,EAAE,EAAE,EAAE,CAAC,IAAI4C,EAAEyD,EAAEytF,YAA6B,GAAjBhuF,EAAE6hC,YAAYthC,GAAMzD,GAAG,IAAIA,EAAE27E,SAAS,GAAY,QAATl4E,EAAEzD,EAAEX,MAAc,CAAC,GAAG,IAAIjC,EAA0B,OAAvB8F,EAAE6hC,YAAY/kC,QAAG8mF,GAAGhqF,GAAUM,GAAG,KAAK,MAAMqG,GAAG,OAAOA,GAAG,OAAOA,GAAGrG,IAAIqG,EAAEzD,CAAC,OAAOyD,GAAGqjF,GAAGhqF,EAAE,CAAC,SAASy6F,GAAGr0F,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEguF,YAAY,CAAC,IAAIp0F,EAAEoG,EAAEy4E,SAAS,GAAG,IAAI7+E,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAEoG,EAAE7D,OAAiB,OAAOvC,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAI,CAAC,CAAC,OAAOoG,CAAC,CACjY,SAASs0F,GAAGt0F,GAAGA,EAAEA,EAAEu0F,gBAAgB,IAAI,IAAI36F,EAAE,EAAEoG,GAAG,CAAC,GAAG,IAAIA,EAAEy4E,SAAS,CAAC,IAAIl4E,EAAEP,EAAE7D,KAAK,GAAG,MAAMoE,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAI3G,EAAE,OAAOoG,EAAEpG,GAAG,KAAK,OAAO2G,GAAG3G,GAAG,CAACoG,EAAEA,EAAEu0F,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIC,GAAGnlG,KAAK0H,SAAS6D,SAAS,IAAIuV,MAAM,GAAGskF,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGnC,GAAG,oBAAoBmC,GAAGvgD,GAAG,iBAAiBugD,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAAStR,GAAGljF,GAAG,IAAIpG,EAAEoG,EAAEy0F,IAAI,GAAG76F,EAAE,OAAOA,EAAE,IAAI,IAAI2G,EAAEP,EAAE48B,WAAWr8B,GAAG,CAAC,GAAG3G,EAAE2G,EAAE8xF,KAAK9xF,EAAEk0F,IAAI,CAAe,GAAdl0F,EAAE3G,EAAEskF,UAAa,OAAOtkF,EAAE8kF,OAAO,OAAOn+E,GAAG,OAAOA,EAAEm+E,MAAM,IAAI1+E,EAAEs0F,GAAGt0F,GAAG,OAAOA,GAAG,CAAC,GAAGO,EAAEP,EAAEy0F,IAAI,OAAOl0F,EAAEP,EAAEs0F,GAAGt0F,EAAE,CAAC,OAAOpG,CAAC,CAAK2G,GAAJP,EAAEO,GAAMq8B,UAAU,CAAC,OAAO,IAAI,CAAC,SAASkgD,GAAG98E,GAAkB,QAAfA,EAAEA,EAAEy0F,KAAKz0F,EAAEqyF,MAAc,IAAIryF,EAAEo1E,KAAK,IAAIp1E,EAAEo1E,KAAK,KAAKp1E,EAAEo1E,KAAK,IAAIp1E,EAAEo1E,IAAI,KAAKp1E,CAAC,CAAC,SAAS8sF,GAAG9sF,GAAG,GAAG,IAAIA,EAAEo1E,KAAK,IAAIp1E,EAAEo1E,IAAI,OAAOp1E,EAAE+8E,UAAU,MAAM31E,MAAMtN,EAAE,IAAK,CAAC,SAASkjF,GAAGh9E,GAAG,OAAOA,EAAE00F,KAAK,IAAI,CAAC,IAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAG/0F,GAAG,MAAM,CAAC9V,QAAQ8V,EAAE,CACve,SAASg1F,GAAEh1F,GAAG,EAAE80F,KAAK90F,EAAE9V,QAAQ2qG,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAASG,GAAEj1F,EAAEpG,GAAGk7F,KAAKD,GAAGC,IAAI90F,EAAE9V,QAAQ8V,EAAE9V,QAAQ0P,CAAC,CAAC,IAAIs7F,GAAG,CAAC,EAAEC,GAAEJ,GAAGG,IAAIE,GAAGL,IAAG,GAAIM,GAAGH,GAAG,SAASI,GAAGt1F,EAAEpG,GAAG,IAAI2G,EAAEP,EAAE9Q,KAAKqmG,aAAa,IAAIh1F,EAAE,OAAO20F,GAAG,IAAIh7F,EAAE8F,EAAE+8E,UAAU,GAAG7iF,GAAGA,EAAEs7F,8CAA8C57F,EAAE,OAAOM,EAAEu7F,0CAA0C,IAAS57F,EAALiD,EAAE,CAAC,EAAI,IAAIjD,KAAK0G,EAAEzD,EAAEjD,GAAGD,EAAEC,GAAoH,OAAjHK,KAAI8F,EAAEA,EAAE+8E,WAAYyY,4CAA4C57F,EAAEoG,EAAEy1F,0CAA0C34F,GAAUA,CAAC,CAC9d,SAAS44F,GAAG11F,GAAyB,OAAO,QAA7BA,EAAEA,EAAE21F,yBAAmC,IAAS31F,CAAC,CAAC,SAAS41F,KAAKZ,GAAEI,IAAIJ,GAAEG,GAAE,CAAC,SAASU,GAAG71F,EAAEpG,EAAE2G,GAAG,GAAG40F,GAAEjrG,UAAUgrG,GAAG,MAAM9tF,MAAMtN,EAAE,MAAMm7F,GAAEE,GAAEv7F,GAAGq7F,GAAEG,GAAG70F,EAAE,CAAC,SAASu1F,GAAG91F,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE8F,EAAE+8E,UAAgC,GAAtBnjF,EAAEA,EAAE+7F,kBAAqB,oBAAoBz7F,EAAE67F,gBAAgB,OAAOx1F,EAAwB,IAAI,IAAIzD,KAA9B5C,EAAEA,EAAE67F,kBAAiC,KAAKj5F,KAAKlD,GAAG,MAAMwN,MAAMtN,EAAE,IAAI47E,EAAG11E,IAAI,UAAUlD,IAAI,OAAO0U,EAAE,CAAC,EAAEjR,EAAErG,EAAE,CACxX,SAAS87F,GAAGh2F,GAA2G,OAAxGA,GAAGA,EAAEA,EAAE+8E,YAAY/8E,EAAEi2F,2CAA2Cf,GAAGG,GAAGF,GAAEjrG,QAAQ+qG,GAAEE,GAAEn1F,GAAGi1F,GAAEG,GAAGA,GAAGlrG,UAAe,CAAE,CAAC,SAASgsG,GAAGl2F,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE8F,EAAE+8E,UAAU,IAAI7iF,EAAE,MAAMkN,MAAMtN,EAAE,MAAMyG,GAAGP,EAAE81F,GAAG91F,EAAEpG,EAAEy7F,IAAIn7F,EAAE+7F,0CAA0Cj2F,EAAEg1F,GAAEI,IAAIJ,GAAEG,IAAGF,GAAEE,GAAEn1F,IAAIg1F,GAAEI,IAAIH,GAAEG,GAAG70F,EAAE,CAAC,IAAI41F,GAAG,KAAKC,IAAG,EAAGtnD,IAAG,EAAG,SAASunD,GAAGr2F,GAAG,OAAOm2F,GAAGA,GAAG,CAACn2F,GAAGm2F,GAAGziG,KAAKsM,EAAE,CAChW,SAASs2F,KAAK,IAAIxnD,IAAI,OAAOqnD,GAAG,CAACrnD,IAAG,EAAG,IAAI9uC,EAAE,EAAEpG,EAAEgY,GAAE,IAAI,IAAIrR,EAAE41F,GAAG,IAAIvkF,GAAE,EAAE5R,EAAEO,EAAE9U,OAAOuU,IAAI,CAAC,IAAI9F,EAAEqG,EAAEP,GAAG,GAAG9F,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAACi8F,GAAG,KAAKC,IAAG,CAAE,CAAC,MAAMt5F,GAAG,MAAM,OAAOq5F,KAAKA,GAAGA,GAAGhmF,MAAMnQ,EAAE,IAAI8+E,GAAGzoC,GAAGigD,IAAIx5F,CAAE,CAAC,QAAQ8U,GAAEhY,EAAEk1C,IAAG,CAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAIynD,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAG,SAASllC,GAAG7xD,EAAEpG,GAAG28F,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGA,GAAGz2F,EAAE02F,GAAG98F,CAAC,CACjV,SAASo9F,GAAGh3F,EAAEpG,EAAE2G,GAAGo2F,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGA,GAAG72F,EAAE,IAAI9F,EAAE48F,GAAG92F,EAAE+2F,GAAG,IAAIj6F,EAAE,GAAGqjF,GAAGjmF,GAAG,EAAEA,KAAK,GAAG4C,GAAGyD,GAAG,EAAE,IAAI1G,EAAE,GAAGsmF,GAAGvmF,GAAGkD,EAAE,GAAG,GAAGjD,EAAE,CAAC,IAAIF,EAAEmD,EAAEA,EAAE,EAAEjD,GAAGK,GAAG,GAAGP,GAAG,GAAGiB,SAAS,IAAIV,IAAIP,EAAEmD,GAAGnD,EAAEm9F,GAAG,GAAG,GAAG3W,GAAGvmF,GAAGkD,EAAEyD,GAAGzD,EAAE5C,EAAE68F,GAAGl9F,EAAEmG,CAAC,MAAM82F,GAAG,GAAGj9F,EAAE0G,GAAGzD,EAAE5C,EAAE68F,GAAG/2F,CAAC,CAAC,SAASi3F,GAAGj3F,GAAG,OAAOA,EAAEm+E,SAAStsB,GAAG7xD,EAAE,GAAGg3F,GAAGh3F,EAAE,EAAE,GAAG,CAAC,SAASk3F,GAAGl3F,GAAG,KAAKA,IAAIy2F,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,KAAK,KAAKx2F,IAAI62F,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKG,GAAGJ,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,IAAI,CAAC,IAAIO,GAAG,KAAKC,GAAG,KAAKC,IAAE,EAAGC,GAAG,KACje,SAASC,GAAGv3F,EAAEpG,GAAG,IAAI2G,EAAEi3F,GAAG,EAAE,KAAK,KAAK,GAAGj3F,EAAEk3F,YAAY,UAAUl3F,EAAEw8E,UAAUnjF,EAAE2G,EAAE49E,OAAOn+E,EAAgB,QAAdpG,EAAEoG,EAAE03F,YAAoB13F,EAAE03F,UAAU,CAACn3F,GAAGP,EAAEo+E,OAAO,IAAIxkF,EAAElG,KAAK6M,EAAE,CACxJ,SAASo3F,GAAG33F,EAAEpG,GAAG,OAAOoG,EAAEo1E,KAAK,KAAK,EAAE,IAAI70E,EAAEP,EAAE9Q,KAAyE,OAAO,QAA3E0K,EAAE,IAAIA,EAAE6+E,UAAUl4E,EAAEk3B,gBAAgB79B,EAAEi8E,SAASp+C,cAAc,KAAK79B,KAAmBoG,EAAE+8E,UAAUnjF,EAAEu9F,GAAGn3F,EAAEo3F,GAAG/C,GAAGz6F,EAAEy+E,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7Cz+E,EAAE,KAAKoG,EAAE43F,cAAc,IAAIh+F,EAAE6+E,SAAS,KAAK7+E,KAAYoG,EAAE+8E,UAAUnjF,EAAEu9F,GAAGn3F,EAAEo3F,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxBx9F,EAAE,IAAIA,EAAE6+E,SAAS,KAAK7+E,KAAY2G,EAAE,OAAOs2F,GAAG,CAAC14F,GAAG24F,GAAGlgC,SAASmgC,IAAI,KAAK/2F,EAAEs+E,cAAc,CAACC,WAAW3kF,EAAEi+F,YAAYt3F,EAAEu3F,UAAU,aAAYv3F,EAAEi3F,GAAG,GAAG,KAAK,KAAK,IAAKza,UAAUnjF,EAAE2G,EAAE49E,OAAOn+E,EAAEA,EAAE0+E,MAAMn+E,EAAE42F,GAAGn3F,EAAEo3F,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAG,CAAC,SAASW,GAAG/3F,GAAG,OAAO,KAAY,EAAPA,EAAEzR,OAAS,KAAa,IAARyR,EAAEo+E,MAAU,CAAC,SAAS4Z,GAAGh4F,GAAG,GAAGq3F,GAAE,CAAC,IAAIz9F,EAAEw9F,GAAG,GAAGx9F,EAAE,CAAC,IAAI2G,EAAE3G,EAAE,IAAI+9F,GAAG33F,EAAEpG,GAAG,CAAC,GAAGm+F,GAAG/3F,GAAG,MAAMoH,MAAMtN,EAAE,MAAMF,EAAEy6F,GAAG9zF,EAAEytF,aAAa,IAAI9zF,EAAEi9F,GAAGv9F,GAAG+9F,GAAG33F,EAAEpG,GAAG29F,GAAGr9F,EAAEqG,IAAIP,EAAEo+E,OAAe,KAATp+E,EAAEo+E,MAAY,EAAEiZ,IAAE,EAAGF,GAAGn3F,EAAE,CAAC,KAAK,CAAC,GAAG+3F,GAAG/3F,GAAG,MAAMoH,MAAMtN,EAAE,MAAMkG,EAAEo+E,OAAe,KAATp+E,EAAEo+E,MAAY,EAAEiZ,IAAE,EAAGF,GAAGn3F,CAAC,CAAC,CAAC,CAAC,SAASi4F,GAAGj4F,GAAG,IAAIA,EAAEA,EAAEm+E,OAAO,OAAOn+E,GAAG,IAAIA,EAAEo1E,KAAK,IAAIp1E,EAAEo1E,KAAK,KAAKp1E,EAAEo1E,KAAKp1E,EAAEA,EAAEm+E,OAAOgZ,GAAGn3F,CAAC,CACha,SAASk4F,GAAGl4F,GAAG,GAAGA,IAAIm3F,GAAG,OAAM,EAAG,IAAIE,GAAE,OAAOY,GAAGj4F,GAAGq3F,IAAE,GAAG,EAAG,IAAIz9F,EAAkG,IAA/FA,EAAE,IAAIoG,EAAEo1E,QAAQx7E,EAAE,IAAIoG,EAAEo1E,OAAgBx7E,EAAE,UAAXA,EAAEoG,EAAE9Q,OAAmB,SAAS0K,IAAI25F,GAAGvzF,EAAE9Q,KAAK8Q,EAAEm4F,gBAAmBv+F,IAAIA,EAAEw9F,IAAI,CAAC,GAAGW,GAAG/3F,GAAG,MAAMo4F,KAAKhxF,MAAMtN,EAAE,MAAM,KAAKF,GAAG29F,GAAGv3F,EAAEpG,GAAGA,EAAEy6F,GAAGz6F,EAAEo0F,YAAY,CAAO,GAANiK,GAAGj4F,GAAM,KAAKA,EAAEo1E,IAAI,CAAgD,KAA7Bp1E,EAAE,QAApBA,EAAEA,EAAEs+E,eAAyBt+E,EAAEu+E,WAAW,MAAW,MAAMn3E,MAAMtN,EAAE,MAAMkG,EAAE,CAAiB,IAAhBA,EAAEA,EAAEguF,YAAgBp0F,EAAE,EAAEoG,GAAG,CAAC,GAAG,IAAIA,EAAEy4E,SAAS,CAAC,IAAIl4E,EAAEP,EAAE7D,KAAK,GAAG,OAAOoE,EAAE,CAAC,GAAG,IAAI3G,EAAE,CAACw9F,GAAG/C,GAAGr0F,EAAEguF,aAAa,MAAMhuF,CAAC,CAACpG,GAAG,KAAK,MAAM2G,GAAG,OAAOA,GAAG,OAAOA,GAAG3G,GAAG,CAACoG,EAAEA,EAAEguF,WAAW,CAACoJ,GACjgB,IAAI,CAAC,MAAMA,GAAGD,GAAG9C,GAAGr0F,EAAE+8E,UAAUiR,aAAa,KAAK,OAAM,CAAE,CAAC,SAASoK,KAAK,IAAI,IAAIp4F,EAAEo3F,GAAGp3F,GAAGA,EAAEq0F,GAAGr0F,EAAEguF,YAAY,CAAC,SAASqK,KAAKjB,GAAGD,GAAG,KAAKE,IAAE,CAAE,CAAC,SAASiB,GAAGt4F,GAAG,OAAOs3F,GAAGA,GAAG,CAACt3F,GAAGs3F,GAAG5jG,KAAKsM,EAAE,CAAC,IAAIu4F,GAAGjlB,EAAGwQ,wBAChM,SAAS0U,GAAGx4F,EAAEpG,EAAE2G,GAAW,GAAG,QAAXP,EAAEO,EAAErT,MAAiB,oBAAoB8S,GAAG,kBAAkBA,EAAE,CAAC,GAAGO,EAAEk4F,OAAO,CAAY,GAAXl4F,EAAEA,EAAEk4F,OAAY,CAAC,GAAG,IAAIl4F,EAAE60E,IAAI,MAAMhuE,MAAMtN,EAAE,MAAM,IAAII,EAAEqG,EAAEw8E,SAAS,CAAC,IAAI7iF,EAAE,MAAMkN,MAAMtN,EAAE,IAAIkG,IAAI,IAAIlD,EAAE5C,EAAEL,EAAE,GAAGmG,EAAE,OAAG,OAAOpG,GAAG,OAAOA,EAAE1M,KAAK,oBAAoB0M,EAAE1M,KAAK0M,EAAE1M,IAAIwrG,aAAa7+F,EAASD,EAAE1M,KAAI0M,EAAE,SAASoG,GAAG,IAAIpG,EAAEkD,EAAE67F,KAAK,OAAO34F,SAASpG,EAAEC,GAAGD,EAAEC,GAAGmG,CAAC,EAAEpG,EAAE8+F,WAAW7+F,EAASD,EAAC,CAAC,GAAG,kBAAkBoG,EAAE,MAAMoH,MAAMtN,EAAE,MAAM,IAAIyG,EAAEk4F,OAAO,MAAMrxF,MAAMtN,EAAE,IAAIkG,GAAI,CAAC,OAAOA,CAAC,CAC/c,SAAS44F,GAAG54F,EAAEpG,GAAuC,MAApCoG,EAAExN,OAAOD,UAAUqI,SAASlI,KAAKkH,GAASwN,MAAMtN,EAAE,GAAG,oBAAoBkG,EAAE,qBAAqBxN,OAAOyU,KAAKrN,GAAGuI,KAAK,MAAM,IAAInC,GAAI,CAAC,SAAS64F,GAAG74F,GAAiB,OAAOpG,EAAfoG,EAAEy1E,OAAez1E,EAAEw1E,SAAS,CACrM,SAASsjB,GAAG94F,GAAG,SAASpG,EAAEA,EAAE2G,GAAG,GAAGP,EAAE,CAAC,IAAI9F,EAAEN,EAAE89F,UAAU,OAAOx9F,GAAGN,EAAE89F,UAAU,CAACn3F,GAAG3G,EAAEwkF,OAAO,IAAIlkF,EAAExG,KAAK6M,EAAE,CAAC,CAAC,SAASA,EAAEA,EAAErG,GAAG,IAAI8F,EAAE,OAAO,KAAK,KAAK,OAAO9F,GAAGN,EAAE2G,EAAErG,GAAGA,EAAEA,EAAEykF,QAAQ,OAAO,IAAI,CAAC,SAASzkF,EAAE8F,EAAEpG,GAAG,IAAIoG,EAAE,IAAIoiF,IAAI,OAAOxoF,GAAG,OAAOA,EAAE+O,IAAI3I,EAAE80E,IAAIl7E,EAAE+O,IAAI/O,GAAGoG,EAAE80E,IAAIl7E,EAAEgV,MAAMhV,GAAGA,EAAEA,EAAE+kF,QAAQ,OAAO3+E,CAAC,CAAC,SAASlD,EAAEkD,EAAEpG,GAAsC,OAAnCoG,EAAE+4F,GAAG/4F,EAAEpG,IAAKgV,MAAM,EAAE5O,EAAE2+E,QAAQ,KAAY3+E,CAAC,CAAC,SAASnG,EAAED,EAAE2G,EAAErG,GAAa,OAAVN,EAAEgV,MAAM1U,EAAM8F,EAA6C,QAAjB9F,EAAEN,EAAEskF,YAA6BhkF,EAAEA,EAAE0U,OAAQrO,GAAG3G,EAAEwkF,OAAO,EAAE79E,GAAGrG,GAAEN,EAAEwkF,OAAO,EAAS79E,IAArG3G,EAAEwkF,OAAO,QAAQ79E,EAAqF,CAAC,SAAS5G,EAAEC,GACzd,OAD4doG,GAC7f,OAAOpG,EAAEskF,YAAYtkF,EAAEwkF,OAAO,GAAUxkF,CAAC,CAAC,SAASL,EAAEyG,EAAEpG,EAAE2G,EAAErG,GAAG,OAAG,OAAON,GAAG,IAAIA,EAAEw7E,MAAWx7E,EAAEo/F,GAAGz4F,EAAEP,EAAEzR,KAAK2L,IAAKikF,OAAOn+E,EAAEpG,KAAEA,EAAEkD,EAAElD,EAAE2G,IAAK49E,OAAOn+E,EAASpG,EAAC,CAAC,SAASyD,EAAE2C,EAAEpG,EAAE2G,EAAErG,GAAG,IAAIL,EAAE0G,EAAErR,KAAK,OAAG2K,IAAI85E,EAAU1sD,EAAEjnB,EAAEpG,EAAE2G,EAAExY,MAAMqsE,SAASl6D,EAAEqG,EAAEoI,KAAQ,OAAO/O,IAAIA,EAAE69F,cAAc59F,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEy7E,WAAWlB,GAAIykB,GAAGh/F,KAAKD,EAAE1K,QAAagL,EAAE4C,EAAElD,EAAE2G,EAAExY,QAASmF,IAAIsrG,GAAGx4F,EAAEpG,EAAE2G,GAAGrG,EAAEikF,OAAOn+E,EAAE9F,KAAEA,EAAE++F,GAAG14F,EAAErR,KAAKqR,EAAEoI,IAAIpI,EAAExY,MAAM,KAAKiY,EAAEzR,KAAK2L,IAAKhN,IAAIsrG,GAAGx4F,EAAEpG,EAAE2G,GAAGrG,EAAEikF,OAAOn+E,EAAS9F,EAAC,CAAC,SAAS8sB,EAAEhnB,EAAEpG,EAAE2G,EAAErG,GAAG,OAAG,OAAON,GAAG,IAAIA,EAAEw7E,KACjfx7E,EAAEmjF,UAAUsG,gBAAgB9iF,EAAE8iF,eAAezpF,EAAEmjF,UAAUmc,iBAAiB34F,EAAE24F,iBAAsBt/F,EAAEu/F,GAAG54F,EAAEP,EAAEzR,KAAK2L,IAAKikF,OAAOn+E,EAAEpG,KAAEA,EAAEkD,EAAElD,EAAE2G,EAAE6zD,UAAU,KAAM+pB,OAAOn+E,EAASpG,EAAC,CAAC,SAASqtB,EAAEjnB,EAAEpG,EAAE2G,EAAErG,EAAEL,GAAG,OAAG,OAAOD,GAAG,IAAIA,EAAEw7E,MAAWx7E,EAAEw/F,GAAG74F,EAAEP,EAAEzR,KAAK2L,EAAEL,IAAKskF,OAAOn+E,EAAEpG,KAAEA,EAAEkD,EAAElD,EAAE2G,IAAK49E,OAAOn+E,EAASpG,EAAC,CAAC,SAASG,EAAEiG,EAAEpG,EAAE2G,GAAG,GAAG,kBAAkB3G,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAOA,EAAEo/F,GAAG,GAAGp/F,EAAEoG,EAAEzR,KAAKgS,IAAK49E,OAAOn+E,EAAEpG,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE07E,UAAU,KAAK9B,EAAG,OAAOjzE,EAAE04F,GAAGr/F,EAAE1K,KAAK0K,EAAE+O,IAAI/O,EAAE7R,MAAM,KAAKiY,EAAEzR,KAAKgS,IACjfrT,IAAIsrG,GAAGx4F,EAAE,KAAKpG,GAAG2G,EAAE49E,OAAOn+E,EAAEO,EAAE,KAAKmzE,EAAG,OAAO95E,EAAEu/F,GAAGv/F,EAAEoG,EAAEzR,KAAKgS,IAAK49E,OAAOn+E,EAAEpG,EAAE,KAAKw6E,EAAiB,OAAOr6E,EAAEiG,GAAE9F,EAAnBN,EAAE67E,OAAmB77E,EAAE47E,UAAUj1E,GAAG,GAAG82E,GAAGz9E,IAAI26E,EAAG36E,GAAG,OAAOA,EAAEw/F,GAAGx/F,EAAEoG,EAAEzR,KAAKgS,EAAE,OAAQ49E,OAAOn+E,EAAEpG,EAAEg/F,GAAG54F,EAAEpG,EAAE,CAAC,OAAO,IAAI,CAAC,SAASF,EAAEsG,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAE,OAAOlD,EAAEA,EAAE+O,IAAI,KAAK,GAAG,kBAAkBpI,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAO,OAAOzD,EAAE,KAAKvD,EAAEyG,EAAEpG,EAAE,GAAG2G,EAAErG,GAAG,GAAG,kBAAkBqG,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+0E,UAAU,KAAK9B,EAAG,OAAOjzE,EAAEoI,MAAM7L,EAAEO,EAAE2C,EAAEpG,EAAE2G,EAAErG,GAAG,KAAK,KAAKw5E,EAAG,OAAOnzE,EAAEoI,MAAM7L,EAAEkqB,EAAEhnB,EAAEpG,EAAE2G,EAAErG,GAAG,KAAK,KAAKk6E,EAAG,OAAiB16E,EAAEsG,EACpfpG,GADwekD,EAAEyD,EAAEk1E,OACxel1E,EAAEi1E,UAAUt7E,GAAG,GAAGm9E,GAAG92E,IAAIg0E,EAAGh0E,GAAG,OAAO,OAAOzD,EAAE,KAAKmqB,EAAEjnB,EAAEpG,EAAE2G,EAAErG,EAAE,MAAM0+F,GAAG54F,EAAEO,EAAE,CAAC,OAAO,IAAI,CAAC,SAASpS,EAAE6R,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,GAAG,kBAAkB5C,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAwBX,EAAEK,EAAnBoG,EAAEA,EAAEoS,IAAI7R,IAAI,KAAW,GAAGrG,EAAE4C,GAAG,GAAG,kBAAkB5C,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEo7E,UAAU,KAAK9B,EAAG,OAA2Cn2E,EAAEzD,EAAtCoG,EAAEA,EAAEoS,IAAI,OAAOlY,EAAEyO,IAAIpI,EAAErG,EAAEyO,MAAM,KAAWzO,EAAE4C,GAAG,KAAK42E,EAAG,OAA2C1sD,EAAEptB,EAAtCoG,EAAEA,EAAEoS,IAAI,OAAOlY,EAAEyO,IAAIpI,EAAErG,EAAEyO,MAAM,KAAWzO,EAAE4C,GAAG,KAAKs3E,EAAiB,OAAOjmF,EAAE6R,EAAEpG,EAAE2G,GAAE1G,EAAvBK,EAAEu7E,OAAuBv7E,EAAEs7E,UAAU14E,GAAG,GAAGu6E,GAAGn9E,IAAIq6E,EAAGr6E,GAAG,OAAwB+sB,EAAErtB,EAAnBoG,EAAEA,EAAEoS,IAAI7R,IAAI,KAAWrG,EAAE4C,EAAE,MAAM87F,GAAGh/F,EAAEM,EAAE,CAAC,OAAO,IAAI,CAC9f,SAAS+gB,EAAEne,EAAEnD,EAAEJ,EAAE8D,GAAG,IAAI,IAAI2pB,EAAE,KAAKC,EAAE,KAAK3iB,EAAE3K,EAAEuiC,EAAEviC,EAAE,EAAE3L,EAAE,KAAK,OAAOsW,GAAG43B,EAAE3iC,EAAE9N,OAAOywC,IAAI,CAAC53B,EAAEsK,MAAMstB,GAAGluC,EAAEsW,EAAEA,EAAE,MAAMtW,EAAEsW,EAAEq6E,QAAQ,IAAI1jE,EAAEvhB,EAAEoD,EAAEwH,EAAE/K,EAAE2iC,GAAG7+B,GAAG,GAAG,OAAO4d,EAAE,CAAC,OAAO3W,IAAIA,EAAEtW,GAAG,KAAK,CAACgS,GAAGsE,GAAG,OAAO2W,EAAEijE,WAAWtkF,EAAEkD,EAAEwH,GAAG3K,EAAEE,EAAEohB,EAAEthB,EAAEuiC,GAAG,OAAOjV,EAAED,EAAE/L,EAAEgM,EAAE03D,QAAQ1jE,EAAEgM,EAAEhM,EAAE3W,EAAEtW,CAAC,CAAC,GAAGkuC,IAAI3iC,EAAE9N,OAAO,OAAO8U,EAAEzD,EAAEwH,GAAG+yF,IAAGxlC,GAAG/0D,EAAEo/B,GAAGlV,EAAE,GAAG,OAAO1iB,EAAE,CAAC,KAAK43B,EAAE3iC,EAAE9N,OAAOywC,IAAkB,QAAd53B,EAAEvK,EAAE+C,EAAEvD,EAAE2iC,GAAG7+B,MAAc1D,EAAEE,EAAEyK,EAAE3K,EAAEuiC,GAAG,OAAOjV,EAAED,EAAE1iB,EAAE2iB,EAAE03D,QAAQr6E,EAAE2iB,EAAE3iB,GAAc,OAAX+yF,IAAGxlC,GAAG/0D,EAAEo/B,GAAUlV,CAAC,CAAC,IAAI1iB,EAAEpK,EAAE4C,EAAEwH,GAAG43B,EAAE3iC,EAAE9N,OAAOywC,IAAsB,QAAlBluC,EAAEG,EAAEmW,EAAExH,EAAEo/B,EAAE3iC,EAAE2iC,GAAG7+B,MAAc2C,GAAG,OAAOhS,EAAEkwF,WAAW55E,EAAEm+E,OAAO,OACvfz0F,EAAE2a,IAAIuzB,EAAEluC,EAAE2a,KAAKhP,EAAEE,EAAE7L,EAAE2L,EAAEuiC,GAAG,OAAOjV,EAAED,EAAEh5B,EAAEi5B,EAAE03D,QAAQ3wF,EAAEi5B,EAAEj5B,GAAuD,OAApDgS,GAAGsE,EAAEzX,SAAQ,SAASmT,GAAG,OAAOpG,EAAEkD,EAAEkD,EAAE,IAAGq3F,IAAGxlC,GAAG/0D,EAAEo/B,GAAUlV,CAAC,CAAC,SAAShtB,EAAE8C,EAAEnD,EAAEJ,EAAE8D,GAAG,IAAI2pB,EAAEutD,EAAGh7E,GAAG,GAAG,oBAAoBytB,EAAE,MAAM5f,MAAMtN,EAAE,MAAkB,GAAG,OAAfP,EAAEytB,EAAEt0B,KAAK6G,IAAc,MAAM6N,MAAMtN,EAAE,MAAM,IAAI,IAAIwK,EAAE0iB,EAAE,KAAKC,EAAEttB,EAAEuiC,EAAEviC,EAAE,EAAE3L,EAAE,KAAKitB,EAAE1hB,EAAE8/F,OAAO,OAAOpyE,IAAIhM,EAAEq+E,KAAKp9D,IAAIjhB,EAAE1hB,EAAE8/F,OAAO,CAACpyE,EAAErY,MAAMstB,GAAGluC,EAAEi5B,EAAEA,EAAE,MAAMj5B,EAAEi5B,EAAE03D,QAAQ,IAAI3kF,EAAEN,EAAEoD,EAAEmqB,EAAEhM,EAAEzwB,MAAM6S,GAAG,GAAG,OAAOrD,EAAE,CAAC,OAAOitB,IAAIA,EAAEj5B,GAAG,KAAK,CAACgS,GAAGinB,GAAG,OAAOjtB,EAAEkkF,WAAWtkF,EAAEkD,EAAEmqB,GAAGttB,EAAEE,EAAEG,EAAEL,EAAEuiC,GAAG,OAAO53B,EAAE0iB,EAAEhtB,EAAEsK,EAAEq6E,QAAQ3kF,EAAEsK,EAAEtK,EAAEitB,EAAEj5B,CAAC,CAAC,GAAGitB,EAAEq+E,KAAK,OAAO/4F,EAAEzD,EACzfmqB,GAAGowE,IAAGxlC,GAAG/0D,EAAEo/B,GAAGlV,EAAE,GAAG,OAAOC,EAAE,CAAC,MAAMhM,EAAEq+E,KAAKp9D,IAAIjhB,EAAE1hB,EAAE8/F,OAAwB,QAAjBp+E,EAAElhB,EAAE+C,EAAEme,EAAEzwB,MAAM6S,MAAc1D,EAAEE,EAAEohB,EAAEthB,EAAEuiC,GAAG,OAAO53B,EAAE0iB,EAAE/L,EAAE3W,EAAEq6E,QAAQ1jE,EAAE3W,EAAE2W,GAAc,OAAXo8E,IAAGxlC,GAAG/0D,EAAEo/B,GAAUlV,CAAC,CAAC,IAAIC,EAAE/sB,EAAE4C,EAAEmqB,IAAIhM,EAAEq+E,KAAKp9D,IAAIjhB,EAAE1hB,EAAE8/F,OAA4B,QAArBp+E,EAAE9sB,EAAE84B,EAAEnqB,EAAEo/B,EAAEjhB,EAAEzwB,MAAM6S,MAAc2C,GAAG,OAAOib,EAAEijE,WAAWj3D,EAAEw7D,OAAO,OAAOxnE,EAAEtS,IAAIuzB,EAAEjhB,EAAEtS,KAAKhP,EAAEE,EAAEohB,EAAEthB,EAAEuiC,GAAG,OAAO53B,EAAE0iB,EAAE/L,EAAE3W,EAAEq6E,QAAQ1jE,EAAE3W,EAAE2W,GAAuD,OAApDjb,GAAGinB,EAAEp6B,SAAQ,SAASmT,GAAG,OAAOpG,EAAEkD,EAAEkD,EAAE,IAAGq3F,IAAGxlC,GAAG/0D,EAAEo/B,GAAUlV,CAAC,CAG3T,OAH4T,SAASkrE,EAAElyF,EAAE9F,EAAEL,EAAEN,GAAkF,GAA/E,kBAAkBM,GAAG,OAAOA,GAAGA,EAAE3K,OAAOykF,GAAI,OAAO95E,EAAE8O,MAAM9O,EAAEA,EAAE9R,MAAMqsE,UAAa,kBAAkBv6D,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEy7E,UAAU,KAAK9B,EAAGxzE,EAAE,CAAC,IAAI,IAAI3C,EAC7hBxD,EAAE8O,IAAIqe,EAAE9sB,EAAE,OAAO8sB,GAAG,CAAC,GAAGA,EAAEre,MAAMtL,EAAE,CAAU,IAATA,EAAExD,EAAE3K,QAAYykF,GAAI,GAAG,IAAI3sD,EAAEouD,IAAI,CAAC70E,EAAEP,EAAEgnB,EAAE23D,UAASzkF,EAAE4C,EAAEkqB,EAAEntB,EAAE9R,MAAMqsE,WAAY+pB,OAAOn+E,EAAEA,EAAE9F,EAAE,MAAM8F,CAAC,OAAO,GAAGgnB,EAAEywE,cAAcp6F,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEi4E,WAAWlB,GAAIykB,GAAGx7F,KAAK2pB,EAAE93B,KAAK,CAACqR,EAAEP,EAAEgnB,EAAE23D,UAASzkF,EAAE4C,EAAEkqB,EAAEntB,EAAE9R,QAASmF,IAAIsrG,GAAGx4F,EAAEgnB,EAAEntB,GAAGK,EAAEikF,OAAOn+E,EAAEA,EAAE9F,EAAE,MAAM8F,CAAC,CAACO,EAAEP,EAAEgnB,GAAG,KAAK,CAAMptB,EAAEoG,EAAEgnB,GAAGA,EAAEA,EAAE23D,OAAO,CAAC9kF,EAAE3K,OAAOykF,IAAIz5E,EAAEk/F,GAAGv/F,EAAE9R,MAAMqsE,SAASp0D,EAAEzR,KAAKgL,EAAEM,EAAE8O,MAAOw1E,OAAOn+E,EAAEA,EAAE9F,KAAIX,EAAE0/F,GAAGp/F,EAAE3K,KAAK2K,EAAE8O,IAAI9O,EAAE9R,MAAM,KAAKiY,EAAEzR,KAAKgL,IAAKrM,IAAIsrG,GAAGx4F,EAAE9F,EAAEL,GAAGN,EAAE4kF,OAAOn+E,EAAEA,EAAEzG,EAAE,CAAC,OAAOI,EAAEqG,GAAG,KAAK0zE,EAAG1zE,EAAE,CAAC,IAAIgnB,EAAEntB,EAAE8O,IAAI,OACzfzO,GAAG,CAAC,GAAGA,EAAEyO,MAAMqe,EAAC,CAAC,GAAG,IAAI9sB,EAAEk7E,KAAKl7E,EAAE6iF,UAAUsG,gBAAgBxpF,EAAEwpF,eAAenpF,EAAE6iF,UAAUmc,iBAAiBr/F,EAAEq/F,eAAe,CAAC34F,EAAEP,EAAE9F,EAAEykF,UAASzkF,EAAE4C,EAAE5C,EAAEL,EAAEu6D,UAAU,KAAM+pB,OAAOn+E,EAAEA,EAAE9F,EAAE,MAAM8F,CAAC,CAAMO,EAAEP,EAAE9F,GAAG,KAAM,CAAKN,EAAEoG,EAAE9F,GAAGA,EAAEA,EAAEykF,OAAO,EAACzkF,EAAEi/F,GAAGt/F,EAAEmG,EAAEzR,KAAKgL,IAAK4kF,OAAOn+E,EAAEA,EAAE9F,CAAC,CAAC,OAAOP,EAAEqG,GAAG,KAAKo0E,EAAG,OAAiB8d,EAAElyF,EAAE9F,GAAd8sB,EAAEntB,EAAE47E,OAAc57E,EAAE27E,UAAUj8E,GAAG,GAAG89E,GAAGx9E,GAAG,OAAOohB,EAAEjb,EAAE9F,EAAEL,EAAEN,GAAG,GAAGg7E,EAAG16E,GAAG,OAAOG,EAAEgG,EAAE9F,EAAEL,EAAEN,GAAGq/F,GAAG54F,EAAEnG,EAAE,CAAC,MAAM,kBAAkBA,GAAG,KAAKA,GAAG,kBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAOK,GAAG,IAAIA,EAAEk7E,KAAK70E,EAAEP,EAAE9F,EAAEykF,UAASzkF,EAAE4C,EAAE5C,EAAEL,IAAKskF,OAAOn+E,EAAEA,EAAE9F,IACnfqG,EAAEP,EAAE9F,IAAGA,EAAE8+F,GAAGn/F,EAAEmG,EAAEzR,KAAKgL,IAAK4kF,OAAOn+E,EAAEA,EAAE9F,GAAGP,EAAEqG,IAAIO,EAAEP,EAAE9F,EAAE,CAAS,CAAC,IAAIq/F,GAAGT,IAAG,GAAIU,GAAGV,IAAG,GAAIW,GAAG1E,GAAG,MAAM2E,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAAC,SAASI,GAAG95F,GAAG,IAAIpG,EAAE6/F,GAAGvvG,QAAQ8qG,GAAEyE,IAAIz5F,EAAE+5F,cAAcngG,CAAC,CAAC,SAASogG,GAAGh6F,EAAEpG,EAAE2G,GAAG,KAAK,OAAOP,GAAG,CAAC,IAAI9F,EAAE8F,EAAEk+E,UAA+H,IAApHl+E,EAAEi6F,WAAWrgG,KAAKA,GAAGoG,EAAEi6F,YAAYrgG,EAAE,OAAOM,IAAIA,EAAE+/F,YAAYrgG,IAAI,OAAOM,IAAIA,EAAE+/F,WAAWrgG,KAAKA,IAAIM,EAAE+/F,YAAYrgG,GAAMoG,IAAIO,EAAE,MAAMP,EAAEA,EAAEm+E,MAAM,CAAC,CACnZ,SAASh+C,GAAGngC,EAAEpG,GAAG8/F,GAAG15F,EAAE45F,GAAGD,GAAG,KAAsB,QAAjB35F,EAAEA,EAAEk6F,eAAuB,OAAOl6F,EAAEm6F,eAAe,KAAKn6F,EAAEo6F,MAAMxgG,KAAKygG,IAAG,GAAIr6F,EAAEm6F,aAAa,KAAK,CAAC,SAASG,GAAGt6F,GAAG,IAAIpG,EAAEoG,EAAE+5F,cAAc,GAAGH,KAAK55F,EAAE,GAAGA,EAAE,CAACmqD,QAAQnqD,EAAEu6F,cAAc3gG,EAAEy/F,KAAK,MAAM,OAAOM,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMtyF,MAAMtN,EAAE,MAAM6/F,GAAG35F,EAAE05F,GAAGQ,aAAa,CAACE,MAAM,EAAED,aAAan6F,EAAE,MAAM25F,GAAGA,GAAGN,KAAKr5F,EAAE,OAAOpG,CAAC,CAAC,IAAIkiD,GAAG,KAAK,SAAS0+C,GAAGx6F,GAAG,OAAO87C,GAAGA,GAAG,CAAC97C,GAAG87C,GAAGpoD,KAAKsM,EAAE,CACvY,SAASy6F,GAAGz6F,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAElD,EAAE8gG,YAA+E,OAAnE,OAAO59F,GAAGyD,EAAE84F,KAAK94F,EAAEi6F,GAAG5gG,KAAK2G,EAAE84F,KAAKv8F,EAAEu8F,KAAKv8F,EAAEu8F,KAAK94F,GAAG3G,EAAE8gG,YAAYn6F,EAASo6F,GAAG36F,EAAE9F,EAAE,CAAC,SAASygG,GAAG36F,EAAEpG,GAAGoG,EAAEo6F,OAAOxgG,EAAE,IAAI2G,EAAEP,EAAEk+E,UAAqC,IAA3B,OAAO39E,IAAIA,EAAE65F,OAAOxgG,GAAG2G,EAAEP,EAAMA,EAAEA,EAAEm+E,OAAO,OAAOn+E,GAAGA,EAAEi6F,YAAYrgG,EAAgB,QAAd2G,EAAEP,EAAEk+E,aAAqB39E,EAAE05F,YAAYrgG,GAAG2G,EAAEP,EAAEA,EAAEA,EAAEm+E,OAAO,OAAO,IAAI59E,EAAE60E,IAAI70E,EAAEw8E,UAAU,IAAI,CAAC,IAAI6d,IAAG,EAAG,SAASC,GAAG76F,GAAGA,EAAE86F,YAAY,CAACC,UAAU/6F,EAAEs+E,cAAc0c,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAACC,QAAQ,KAAKT,YAAY,KAAKN,MAAM,GAAGl2D,QAAQ,KAAK,CAC/e,SAAS8S,GAAGh3C,EAAEpG,GAAGoG,EAAEA,EAAE86F,YAAYlhG,EAAEkhG,cAAc96F,IAAIpG,EAAEkhG,YAAY,CAACC,UAAU/6F,EAAE+6F,UAAUC,gBAAgBh7F,EAAEg7F,gBAAgBC,eAAej7F,EAAEi7F,eAAeC,OAAOl7F,EAAEk7F,OAAOh3D,QAAQlkC,EAAEkkC,SAAS,CAAC,SAASk3D,GAAGp7F,EAAEpG,GAAG,MAAM,CAACyhG,UAAUr7F,EAAEs7F,KAAK1hG,EAAEw7E,IAAI,EAAE7yE,QAAQ,KAAKZ,SAAS,KAAK03F,KAAK,KAAK,CACtR,SAASkC,GAAGv7F,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE8F,EAAE86F,YAAY,GAAG,OAAO5gG,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAEghG,OAAU,KAAO,EAAFM,IAAK,CAAC,IAAI1+F,EAAE5C,EAAEihG,QAA+D,OAAvD,OAAOr+F,EAAElD,EAAEy/F,KAAKz/F,GAAGA,EAAEy/F,KAAKv8F,EAAEu8F,KAAKv8F,EAAEu8F,KAAKz/F,GAAGM,EAAEihG,QAAQvhG,EAAS+gG,GAAG36F,EAAEO,EAAE,CAAoF,OAAnE,QAAhBzD,EAAE5C,EAAEwgG,cAAsB9gG,EAAEy/F,KAAKz/F,EAAE4gG,GAAGtgG,KAAKN,EAAEy/F,KAAKv8F,EAAEu8F,KAAKv8F,EAAEu8F,KAAKz/F,GAAGM,EAAEwgG,YAAY9gG,EAAS+gG,GAAG36F,EAAEO,EAAE,CAAC,SAASk7F,GAAGz7F,EAAEpG,EAAE2G,GAAmB,GAAG,QAAnB3G,EAAEA,EAAEkhG,eAA0BlhG,EAAEA,EAAEshG,OAAO,KAAO,QAAF36F,IAAY,CAAC,IAAIrG,EAAEN,EAAEwgG,MAAwB75F,GAAlBrG,GAAG8F,EAAE4gF,aAAkBhnF,EAAEwgG,MAAM75F,EAAEghF,GAAGvhF,EAAEO,EAAE,CAAC,CACrZ,SAASm7F,GAAG17F,EAAEpG,GAAG,IAAI2G,EAAEP,EAAE86F,YAAY5gG,EAAE8F,EAAEk+E,UAAU,GAAG,OAAOhkF,GAAoBqG,KAAhBrG,EAAEA,EAAE4gG,aAAmB,CAAC,IAAIh+F,EAAE,KAAKjD,EAAE,KAAyB,GAAG,QAAvB0G,EAAEA,EAAEy6F,iBAA4B,CAAC,EAAE,CAAC,IAAIrhG,EAAE,CAAC0hG,UAAU96F,EAAE86F,UAAUC,KAAK/6F,EAAE+6F,KAAKlmB,IAAI70E,EAAE60E,IAAI7yE,QAAQhC,EAAEgC,QAAQZ,SAASpB,EAAEoB,SAAS03F,KAAK,MAAM,OAAOx/F,EAAEiD,EAAEjD,EAAEF,EAAEE,EAAEA,EAAEw/F,KAAK1/F,EAAE4G,EAAEA,EAAE84F,IAAI,OAAO,OAAO94F,GAAG,OAAO1G,EAAEiD,EAAEjD,EAAED,EAAEC,EAAEA,EAAEw/F,KAAKz/F,CAAC,MAAMkD,EAAEjD,EAAED,EAAiH,OAA/G2G,EAAE,CAACw6F,UAAU7gG,EAAE6gG,UAAUC,gBAAgBl+F,EAAEm+F,eAAephG,EAAEqhG,OAAOhhG,EAAEghG,OAAOh3D,QAAQhqC,EAAEgqC,cAASlkC,EAAE86F,YAAYv6F,EAAQ,CAAoB,QAAnBP,EAAEO,EAAE06F,gBAAwB16F,EAAEy6F,gBAAgBphG,EAAEoG,EAAEq5F,KACnfz/F,EAAE2G,EAAE06F,eAAerhG,CAAC,CACpB,SAAS+hG,GAAG37F,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAEkD,EAAE86F,YAAYF,IAAG,EAAG,IAAI/gG,EAAEiD,EAAEk+F,gBAAgBrhG,EAAEmD,EAAEm+F,eAAe1hG,EAAEuD,EAAEo+F,OAAOC,QAAQ,GAAG,OAAO5hG,EAAE,CAACuD,EAAEo+F,OAAOC,QAAQ,KAAK,IAAI99F,EAAE9D,EAAEytB,EAAE3pB,EAAEg8F,KAAKh8F,EAAEg8F,KAAK,KAAK,OAAO1/F,EAAEE,EAAEmtB,EAAErtB,EAAE0/F,KAAKryE,EAAErtB,EAAE0D,EAAE,IAAI4pB,EAAEjnB,EAAEk+E,UAAU,OAAOj3D,KAAoB1tB,GAAhB0tB,EAAEA,EAAE6zE,aAAgBG,kBAAmBthG,IAAI,OAAOJ,EAAE0tB,EAAE+zE,gBAAgBh0E,EAAEztB,EAAE8/F,KAAKryE,EAAEC,EAAEg0E,eAAe59F,GAAG,CAAC,GAAG,OAAOxD,EAAE,CAAC,IAAIE,EAAE+C,EAAEi+F,UAA6B,IAAnBphG,EAAE,EAAEstB,EAAED,EAAE3pB,EAAE,KAAK9D,EAAEM,IAAI,CAAC,IAAIH,EAAEH,EAAE+hG,KAAKntG,EAAEoL,EAAE8hG,UAAU,IAAInhG,EAAER,KAAKA,EAAE,CAAC,OAAOutB,IAAIA,EAAEA,EAAEoyE,KAAK,CAACgC,UAAUltG,EAAEmtG,KAAK,EAAElmB,IAAI77E,EAAE67E,IAAI7yE,QAAQhJ,EAAEgJ,QAAQZ,SAASpI,EAAEoI,SACvf03F,KAAK,OAAOr5F,EAAE,CAAC,IAAIib,EAAEjb,EAAEhG,EAAET,EAAU,OAARG,EAAEE,EAAEzL,EAAEoS,EAASvG,EAAEo7E,KAAK,KAAK,EAAc,GAAG,oBAAfn6D,EAAEjhB,EAAEuI,SAAiC,CAACxI,EAAEkhB,EAAEvoB,KAAKvE,EAAE4L,EAAEL,GAAG,MAAMsG,CAAC,CAACjG,EAAEkhB,EAAE,MAAMjb,EAAE,KAAK,EAAEib,EAAEmjE,OAAe,MAATnjE,EAAEmjE,MAAa,IAAI,KAAK,EAAsD,GAAG,QAA3C1kF,EAAE,oBAAduhB,EAAEjhB,EAAEuI,SAAgC0Y,EAAEvoB,KAAKvE,EAAE4L,EAAEL,GAAGuhB,SAAe,IAASvhB,EAAE,MAAMsG,EAAEjG,EAAEyX,EAAE,CAAC,EAAEzX,EAAEL,GAAG,MAAMsG,EAAE,KAAK,EAAE46F,IAAG,EAAG,CAAC,OAAOrhG,EAAEoI,UAAU,IAAIpI,EAAE+hG,OAAOt7F,EAAEo+E,OAAO,GAAe,QAAZ1kF,EAAEoD,EAAEonC,SAAiBpnC,EAAEonC,QAAQ,CAAC3qC,GAAGG,EAAEhG,KAAK6F,GAAG,MAAMpL,EAAE,CAACktG,UAAUltG,EAAEmtG,KAAK5hG,EAAE07E,IAAI77E,EAAE67E,IAAI7yE,QAAQhJ,EAAEgJ,QAAQZ,SAASpI,EAAEoI,SAAS03F,KAAK,MAAM,OAAOpyE,GAAGD,EAAEC,EAAE94B,EAAEkP,EAAEtD,GAAGktB,EAAEA,EAAEoyE,KAAKlrG,EAAEwL,GAAGD,EAC3e,GAAG,QAAZH,EAAEA,EAAE8/F,MAAiB,IAAsB,QAAnB9/F,EAAEuD,EAAEo+F,OAAOC,SAAiB,MAAe5hG,GAAJG,EAAEH,GAAM8/F,KAAK3/F,EAAE2/F,KAAK,KAAKv8F,EAAEm+F,eAAevhG,EAAEoD,EAAEo+F,OAAOC,QAAQ,IAAI,EAAsG,GAA5F,OAAOl0E,IAAI5pB,EAAEtD,GAAG+C,EAAEi+F,UAAU19F,EAAEP,EAAEk+F,gBAAgBh0E,EAAElqB,EAAEm+F,eAAeh0E,EAA4B,QAA1BrtB,EAAEkD,EAAEo+F,OAAOR,aAAwB,CAAC59F,EAAElD,EAAE,GAAGD,GAAGmD,EAAEw+F,KAAKx+F,EAAEA,EAAEu8F,WAAWv8F,IAAIlD,EAAE,MAAM,OAAOC,IAAIiD,EAAEo+F,OAAOd,MAAM,GAAGwB,IAAIjiG,EAAEqG,EAAEo6F,MAAMzgG,EAAEqG,EAAEs+E,cAAcvkF,CAAC,CAAC,CAC9V,SAAS8hB,GAAG7b,EAAEpG,EAAE2G,GAA8B,GAA3BP,EAAEpG,EAAEsqC,QAAQtqC,EAAEsqC,QAAQ,KAAQ,OAAOlkC,EAAE,IAAIpG,EAAE,EAAEA,EAAEoG,EAAEvU,OAAOmO,IAAI,CAAC,IAAIM,EAAE8F,EAAEpG,GAAGkD,EAAE5C,EAAEyH,SAAS,GAAG,OAAO7E,EAAE,CAAqB,GAApB5C,EAAEyH,SAAS,KAAKzH,EAAEqG,EAAK,oBAAoBzD,EAAE,MAAMsK,MAAMtN,EAAE,IAAIgD,IAAIA,EAAEpK,KAAKwH,EAAE,CAAC,CAAC,CAAC,IAAI2hG,GAAG,CAAC,EAAEC,GAAG/G,GAAG8G,IAAIE,GAAGhH,GAAG8G,IAAIG,GAAGjH,GAAG8G,IAAI,SAASI,GAAGj8F,GAAG,GAAGA,IAAI67F,GAAG,MAAMz0F,MAAMtN,EAAE,MAAM,OAAOkG,CAAC,CACnS,SAASk8F,GAAGl8F,EAAEpG,GAAyC,OAAtCq7F,GAAE+G,GAAGpiG,GAAGq7F,GAAE8G,GAAG/7F,GAAGi1F,GAAE6G,GAAGD,IAAI77F,EAAEpG,EAAE6+E,UAAmB,KAAK,EAAE,KAAK,GAAG7+E,GAAGA,EAAEA,EAAEg1F,iBAAiBh1F,EAAEs+E,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkEn+E,EAAEm+E,GAArCn+E,GAAvBoG,EAAE,IAAIA,EAAEpG,EAAEgjC,WAAWhjC,GAAMs+E,cAAc,KAAKl4E,EAAEA,EAAEm8F,SAAkBnH,GAAE8G,IAAI7G,GAAE6G,GAAGliG,EAAE,CAAC,SAASwiG,KAAKpH,GAAE8G,IAAI9G,GAAE+G,IAAI/G,GAAEgH,GAAG,CAAC,SAASK,GAAGr8F,GAAGi8F,GAAGD,GAAG9xG,SAAS,IAAI0P,EAAEqiG,GAAGH,GAAG5xG,SAAaqW,EAAEw3E,GAAGn+E,EAAEoG,EAAE9Q,MAAM0K,IAAI2G,IAAI00F,GAAE8G,GAAG/7F,GAAGi1F,GAAE6G,GAAGv7F,GAAG,CAAC,SAAS+7F,GAAGt8F,GAAG+7F,GAAG7xG,UAAU8V,IAAIg1F,GAAE8G,IAAI9G,GAAE+G,IAAI,CAAC,IAAIQ,GAAExH,GAAG,GACxZ,SAASyH,GAAGx8F,GAAG,IAAI,IAAIpG,EAAEoG,EAAE,OAAOpG,GAAG,CAAC,GAAG,KAAKA,EAAEw7E,IAAI,CAAC,IAAI70E,EAAE3G,EAAE0kF,cAAc,GAAG,OAAO/9E,IAAmB,QAAfA,EAAEA,EAAEg+E,aAAqB,OAAOh+E,EAAEpE,MAAM,OAAOoE,EAAEpE,MAAM,OAAOvC,CAAC,MAAM,GAAG,KAAKA,EAAEw7E,UAAK,IAASx7E,EAAEu+F,cAAcsE,aAAa,GAAG,KAAa,IAAR7iG,EAAEwkF,OAAW,OAAOxkF,OAAO,GAAG,OAAOA,EAAE8kF,MAAM,CAAC9kF,EAAE8kF,MAAMP,OAAOvkF,EAAEA,EAAEA,EAAE8kF,MAAM,QAAQ,CAAC,GAAG9kF,IAAIoG,EAAE,MAAM,KAAK,OAAOpG,EAAE+kF,SAAS,CAAC,GAAG,OAAO/kF,EAAEukF,QAAQvkF,EAAEukF,SAASn+E,EAAE,OAAO,KAAKpG,EAAEA,EAAEukF,MAAM,CAACvkF,EAAE+kF,QAAQR,OAAOvkF,EAAEukF,OAAOvkF,EAAEA,EAAE+kF,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI+d,GAAG,GACrc,SAASC,KAAK,IAAI,IAAI38F,EAAE,EAAEA,EAAE08F,GAAGjxG,OAAOuU,IAAI08F,GAAG18F,GAAG48F,8BAA8B,KAAKF,GAAGjxG,OAAO,CAAC,CAAC,IAAIoxG,GAAGvpB,EAAGwpB,uBAAuBC,GAAGzpB,EAAGwQ,wBAAwBkZ,GAAG,EAAEC,GAAE,KAAKC,GAAE,KAAKC,GAAE,KAAKC,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAASC,KAAI,MAAMp2F,MAAMtN,EAAE,KAAM,CAAC,SAAS2jG,GAAGz9F,EAAEpG,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAI2G,EAAE,EAAEA,EAAE3G,EAAEnO,QAAQ8U,EAAEP,EAAEvU,OAAO8U,IAAI,IAAIqtF,GAAG5tF,EAAEO,GAAG3G,EAAE2G,IAAI,OAAM,EAAG,OAAM,CAAE,CAChW,SAASm9F,GAAG19F,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,GAAyH,GAAtHmjG,GAAGnjG,EAAEojG,GAAErjG,EAAEA,EAAE0kF,cAAc,KAAK1kF,EAAEkhG,YAAY,KAAKlhG,EAAEwgG,MAAM,EAAEyC,GAAG3yG,QAAQ,OAAO8V,GAAG,OAAOA,EAAEs+E,cAAcqf,GAAGC,GAAG59F,EAAEO,EAAErG,EAAE4C,GAAMugG,GAAG,CAACxjG,EAAE,EAAE,EAAE,CAAY,GAAXwjG,IAAG,EAAGC,GAAG,EAAK,IAAIzjG,EAAE,MAAMuN,MAAMtN,EAAE,MAAMD,GAAG,EAAEsjG,GAAED,GAAE,KAAKtjG,EAAEkhG,YAAY,KAAK+B,GAAG3yG,QAAQ2zG,GAAG79F,EAAEO,EAAErG,EAAE4C,EAAE,OAAOugG,GAAG,CAA+D,GAA9DR,GAAG3yG,QAAQ4zG,GAAGlkG,EAAE,OAAOsjG,IAAG,OAAOA,GAAE7D,KAAK2D,GAAG,EAAEG,GAAED,GAAED,GAAE,KAAKG,IAAG,EAAMxjG,EAAE,MAAMwN,MAAMtN,EAAE,MAAM,OAAOkG,CAAC,CAAC,SAAS+9F,KAAK,IAAI/9F,EAAE,IAAIs9F,GAAQ,OAALA,GAAG,EAASt9F,CAAC,CAC/Y,SAASg+F,KAAK,IAAIh+F,EAAE,CAACs+E,cAAc,KAAKyc,UAAU,KAAKkD,UAAU,KAAKC,MAAM,KAAK7E,KAAK,MAA8C,OAAxC,OAAO8D,GAAEF,GAAE3e,cAAc6e,GAAEn9F,EAAEm9F,GAAEA,GAAE9D,KAAKr5F,EAASm9F,EAAC,CAAC,SAASgB,KAAK,GAAG,OAAOjB,GAAE,CAAC,IAAIl9F,EAAEi9F,GAAE/e,UAAUl+E,EAAE,OAAOA,EAAEA,EAAEs+E,cAAc,IAAI,MAAMt+E,EAAEk9F,GAAE7D,KAAK,IAAIz/F,EAAE,OAAOujG,GAAEF,GAAE3e,cAAc6e,GAAE9D,KAAK,GAAG,OAAOz/F,EAAEujG,GAAEvjG,EAAEsjG,GAAEl9F,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMoH,MAAMtN,EAAE,MAAUkG,EAAE,CAACs+E,eAAP4e,GAAEl9F,GAAqBs+E,cAAcyc,UAAUmC,GAAEnC,UAAUkD,UAAUf,GAAEe,UAAUC,MAAMhB,GAAEgB,MAAM7E,KAAK,MAAM,OAAO8D,GAAEF,GAAE3e,cAAc6e,GAAEn9F,EAAEm9F,GAAEA,GAAE9D,KAAKr5F,CAAC,CAAC,OAAOm9F,EAAC,CACje,SAASiB,GAAGp+F,EAAEpG,GAAG,MAAM,oBAAoBA,EAAEA,EAAEoG,GAAGpG,CAAC,CACnD,SAASykG,GAAGr+F,GAAG,IAAIpG,EAAEukG,KAAK59F,EAAE3G,EAAEskG,MAAM,GAAG,OAAO39F,EAAE,MAAM6G,MAAMtN,EAAE,MAAMyG,EAAE+9F,oBAAoBt+F,EAAE,IAAI9F,EAAEgjG,GAAEpgG,EAAE5C,EAAE+jG,UAAUpkG,EAAE0G,EAAE46F,QAAQ,GAAG,OAAOthG,EAAE,CAAC,GAAG,OAAOiD,EAAE,CAAC,IAAInD,EAAEmD,EAAEu8F,KAAKv8F,EAAEu8F,KAAKx/F,EAAEw/F,KAAKx/F,EAAEw/F,KAAK1/F,CAAC,CAACO,EAAE+jG,UAAUnhG,EAAEjD,EAAE0G,EAAE46F,QAAQ,IAAI,CAAC,GAAG,OAAOr+F,EAAE,CAACjD,EAAEiD,EAAEu8F,KAAKn/F,EAAEA,EAAE6gG,UAAU,IAAIxhG,EAAEI,EAAE,KAAK0D,EAAE,KAAK2pB,EAAEntB,EAAE,EAAE,CAAC,IAAIotB,EAAED,EAAEs0E,KAAK,IAAI0B,GAAG/1E,KAAKA,EAAE,OAAO5pB,IAAIA,EAAEA,EAAEg8F,KAAK,CAACiC,KAAK,EAAExsG,OAAOk4B,EAAEl4B,OAAOyvG,cAAcv3E,EAAEu3E,cAAcC,WAAWx3E,EAAEw3E,WAAWnF,KAAK,OAAOn/F,EAAE8sB,EAAEu3E,cAAcv3E,EAAEw3E,WAAWx+F,EAAE9F,EAAE8sB,EAAEl4B,YAAY,CAAC,IAAIiL,EAAE,CAACuhG,KAAKr0E,EAAEn4B,OAAOk4B,EAAEl4B,OAAOyvG,cAAcv3E,EAAEu3E,cACngBC,WAAWx3E,EAAEw3E,WAAWnF,KAAK,MAAM,OAAOh8F,GAAG9D,EAAE8D,EAAEtD,EAAEJ,EAAEO,GAAGmD,EAAEA,EAAEg8F,KAAKt/F,EAAEkjG,GAAE7C,OAAOnzE,EAAE20E,IAAI30E,CAAC,CAACD,EAAEA,EAAEqyE,IAAI,OAAO,OAAOryE,GAAGA,IAAIntB,GAAG,OAAOwD,EAAE1D,EAAEO,EAAEmD,EAAEg8F,KAAK9/F,EAAEq0F,GAAG1zF,EAAEN,EAAE0kF,iBAAiB+b,IAAG,GAAIzgG,EAAE0kF,cAAcpkF,EAAEN,EAAEmhG,UAAUphG,EAAEC,EAAEqkG,UAAU5gG,EAAEkD,EAAEk+F,kBAAkBvkG,CAAC,CAAiB,GAAG,QAAnB8F,EAAEO,EAAEm6F,aAAwB,CAAC59F,EAAEkD,EAAE,GAAGnG,EAAEiD,EAAEw+F,KAAK2B,GAAE7C,OAAOvgG,EAAE+hG,IAAI/hG,EAAEiD,EAAEA,EAAEu8F,WAAWv8F,IAAIkD,EAAE,MAAM,OAAOlD,IAAIyD,EAAE65F,MAAM,GAAG,MAAM,CAACxgG,EAAE0kF,cAAc/9E,EAAEm+F,SAAS,CAC9X,SAASC,GAAG3+F,GAAG,IAAIpG,EAAEukG,KAAK59F,EAAE3G,EAAEskG,MAAM,GAAG,OAAO39F,EAAE,MAAM6G,MAAMtN,EAAE,MAAMyG,EAAE+9F,oBAAoBt+F,EAAE,IAAI9F,EAAEqG,EAAEm+F,SAAS5hG,EAAEyD,EAAE46F,QAAQthG,EAAED,EAAE0kF,cAAc,GAAG,OAAOxhF,EAAE,CAACyD,EAAE46F,QAAQ,KAAK,IAAIxhG,EAAEmD,EAAEA,EAAEu8F,KAAK,GAAGx/F,EAAEmG,EAAEnG,EAAEF,EAAE7K,QAAQ6K,EAAEA,EAAE0/F,WAAW1/F,IAAImD,GAAG8wF,GAAG/zF,EAAED,EAAE0kF,iBAAiB+b,IAAG,GAAIzgG,EAAE0kF,cAAczkF,EAAE,OAAOD,EAAEqkG,YAAYrkG,EAAEmhG,UAAUlhG,GAAG0G,EAAEk+F,kBAAkB5kG,CAAC,CAAC,MAAM,CAACA,EAAEK,EAAE,CAAC,SAAS0kG,KAAK,CACpW,SAASC,GAAG7+F,EAAEpG,GAAG,IAAI2G,EAAE08F,GAAE/iG,EAAEikG,KAAKrhG,EAAElD,IAAIC,GAAG+zF,GAAG1zF,EAAEokF,cAAcxhF,GAAsE,GAAnEjD,IAAIK,EAAEokF,cAAcxhF,EAAEu9F,IAAG,GAAIngG,EAAEA,EAAEgkG,MAAMY,GAAGC,GAAGj6F,KAAK,KAAKvE,EAAErG,EAAE8F,GAAG,CAACA,IAAO9F,EAAE8kG,cAAcplG,GAAGC,GAAG,OAAOsjG,IAAuB,EAApBA,GAAE7e,cAAclJ,IAAM,CAAuD,GAAtD70E,EAAE69E,OAAO,KAAK6gB,GAAG,EAAEC,GAAGp6F,KAAK,KAAKvE,EAAErG,EAAE4C,EAAElD,QAAG,EAAO,MAAS,OAAOulG,GAAE,MAAM/3F,MAAMtN,EAAE,MAAM,KAAQ,GAAHkjG,KAAQoC,GAAG7+F,EAAE3G,EAAEkD,EAAE,CAAC,OAAOA,CAAC,CAAC,SAASsiG,GAAGp/F,EAAEpG,EAAE2G,GAAGP,EAAEo+E,OAAO,MAAMp+E,EAAE,CAACg/F,YAAYplG,EAAEpP,MAAM+V,GAAmB,QAAhB3G,EAAEqjG,GAAEnC,cAAsBlhG,EAAE,CAACylG,WAAW,KAAKC,OAAO,MAAMrC,GAAEnC,YAAYlhG,EAAEA,EAAE0lG,OAAO,CAACt/F,IAAgB,QAAXO,EAAE3G,EAAE0lG,QAAgB1lG,EAAE0lG,OAAO,CAACt/F,GAAGO,EAAE7M,KAAKsM,EAAG,CAClf,SAASk/F,GAAGl/F,EAAEpG,EAAE2G,EAAErG,GAAGN,EAAEpP,MAAM+V,EAAE3G,EAAEolG,YAAY9kG,EAAEqlG,GAAG3lG,IAAI4lG,GAAGx/F,EAAE,CAAC,SAAS++F,GAAG/+F,EAAEpG,EAAE2G,GAAG,OAAOA,GAAE,WAAWg/F,GAAG3lG,IAAI4lG,GAAGx/F,EAAE,GAAE,CAAC,SAASu/F,GAAGv/F,GAAG,IAAIpG,EAAEoG,EAAEg/F,YAAYh/F,EAAEA,EAAExV,MAAM,IAAI,IAAI+V,EAAE3G,IAAI,OAAOg0F,GAAG5tF,EAAEO,EAAE,CAAC,MAAMrG,GAAG,OAAM,CAAE,CAAC,CAAC,SAASslG,GAAGx/F,GAAG,IAAIpG,EAAE+gG,GAAG36F,EAAE,GAAG,OAAOpG,GAAG6lG,GAAG7lG,EAAEoG,EAAE,GAAG,EAAE,CAClQ,SAAS0/F,GAAG1/F,GAAG,IAAIpG,EAAEokG,KAA8M,MAAzM,oBAAoBh+F,IAAIA,EAAEA,KAAKpG,EAAE0kF,cAAc1kF,EAAEmhG,UAAU/6F,EAAEA,EAAE,CAACm7F,QAAQ,KAAKT,YAAY,KAAKN,MAAM,EAAEsE,SAAS,KAAKJ,oBAAoBF,GAAGK,kBAAkBz+F,GAAGpG,EAAEskG,MAAMl+F,EAAEA,EAAEA,EAAE0+F,SAASiB,GAAG76F,KAAK,KAAKm4F,GAAEj9F,GAAS,CAACpG,EAAE0kF,cAAct+E,EAAE,CAC5P,SAASi/F,GAAGj/F,EAAEpG,EAAE2G,EAAErG,GAA8O,OAA3O8F,EAAE,CAACo1E,IAAIp1E,EAAE4/F,OAAOhmG,EAAExO,QAAQmV,EAAEs/F,KAAK3lG,EAAEm/F,KAAK,MAAsB,QAAhBz/F,EAAEqjG,GAAEnC,cAAsBlhG,EAAE,CAACylG,WAAW,KAAKC,OAAO,MAAMrC,GAAEnC,YAAYlhG,EAAEA,EAAEylG,WAAWr/F,EAAEq5F,KAAKr5F,GAAmB,QAAfO,EAAE3G,EAAEylG,YAAoBzlG,EAAEylG,WAAWr/F,EAAEq5F,KAAKr5F,GAAG9F,EAAEqG,EAAE84F,KAAK94F,EAAE84F,KAAKr5F,EAAEA,EAAEq5F,KAAKn/F,EAAEN,EAAEylG,WAAWr/F,GAAWA,CAAC,CAAC,SAAS8/F,KAAK,OAAO3B,KAAK7f,aAAa,CAAC,SAASyhB,GAAG//F,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAEkhG,KAAKf,GAAE7e,OAAOp+E,EAAElD,EAAEwhF,cAAc2gB,GAAG,EAAErlG,EAAE2G,OAAE,OAAO,IAASrG,EAAE,KAAKA,EAAE,CAC9Y,SAAS8lG,GAAGhgG,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAEqhG,KAAKjkG,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIL,OAAE,EAAO,GAAG,OAAOqjG,GAAE,CAAC,IAAIvjG,EAAEujG,GAAE5e,cAA0B,GAAZzkF,EAAEF,EAAEvO,QAAW,OAAO8O,GAAGujG,GAAGvjG,EAAEP,EAAEkmG,MAAmC,YAA5B/iG,EAAEwhF,cAAc2gB,GAAGrlG,EAAE2G,EAAE1G,EAAEK,GAAU,CAAC+iG,GAAE7e,OAAOp+E,EAAElD,EAAEwhF,cAAc2gB,GAAG,EAAErlG,EAAE2G,EAAE1G,EAAEK,EAAE,CAAC,SAAS+lG,GAAGjgG,EAAEpG,GAAG,OAAOmmG,GAAG,QAAQ,EAAE//F,EAAEpG,EAAE,CAAC,SAASklG,GAAG9+F,EAAEpG,GAAG,OAAOomG,GAAG,KAAK,EAAEhgG,EAAEpG,EAAE,CAAC,SAASsmG,GAAGlgG,EAAEpG,GAAG,OAAOomG,GAAG,EAAE,EAAEhgG,EAAEpG,EAAE,CAAC,SAASumG,GAAGngG,EAAEpG,GAAG,OAAOomG,GAAG,EAAE,EAAEhgG,EAAEpG,EAAE,CAChX,SAAS+lD,GAAG3/C,EAAEpG,GAAG,MAAG,oBAAoBA,GAASoG,EAAEA,IAAIpG,EAAEoG,GAAG,WAAWpG,EAAE,KAAK,GAAK,OAAOA,QAAG,IAASA,GAASoG,EAAEA,IAAIpG,EAAE1P,QAAQ8V,EAAE,WAAWpG,EAAE1P,QAAQ,IAAI,QAA1E,CAA2E,CAAC,SAASk2G,GAAGpgG,EAAEpG,EAAE2G,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE2P,OAAO,CAAClQ,IAAI,KAAYggG,GAAG,EAAE,EAAErgD,GAAG76C,KAAK,KAAKlL,EAAEoG,GAAGO,EAAE,CAAC,SAAS8/F,KAAK,CAAC,SAASC,GAAGtgG,EAAEpG,GAAG,IAAI2G,EAAE49F,KAAKvkG,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIM,EAAEqG,EAAE+9E,cAAc,OAAG,OAAOpkF,GAAG,OAAON,GAAG6jG,GAAG7jG,EAAEM,EAAE,IAAWA,EAAE,IAAGqG,EAAE+9E,cAAc,CAACt+E,EAAEpG,GAAUoG,EAAC,CAC7Z,SAAS6a,GAAG7a,EAAEpG,GAAG,IAAI2G,EAAE49F,KAAKvkG,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIM,EAAEqG,EAAE+9E,cAAc,OAAG,OAAOpkF,GAAG,OAAON,GAAG6jG,GAAG7jG,EAAEM,EAAE,IAAWA,EAAE,IAAG8F,EAAEA,IAAIO,EAAE+9E,cAAc,CAACt+E,EAAEpG,GAAUoG,EAAC,CAAC,SAASugG,GAAGvgG,EAAEpG,EAAE2G,GAAG,OAAG,KAAQ,GAAHy8F,KAAch9F,EAAE+6F,YAAY/6F,EAAE+6F,WAAU,EAAGV,IAAG,GAAIr6F,EAAEs+E,cAAc/9E,IAAEqtF,GAAGrtF,EAAE3G,KAAK2G,EAAE4gF,KAAK8b,GAAE7C,OAAO75F,EAAEq7F,IAAIr7F,EAAEP,EAAE+6F,WAAU,GAAWnhG,EAAC,CAAC,SAAS4mG,GAAGxgG,EAAEpG,GAAG,IAAI2G,EAAEqR,GAAEA,GAAE,IAAIrR,GAAG,EAAEA,EAAEA,EAAE,EAAEP,GAAE,GAAI,IAAI9F,EAAE6iG,GAAG9Y,WAAW8Y,GAAG9Y,WAAW,CAAC,EAAE,IAAIjkF,GAAE,GAAIpG,GAAG,CAAC,QAAQgY,GAAErR,EAAEw8F,GAAG9Y,WAAW/pF,CAAC,CAAC,CAAC,SAASyzD,KAAK,OAAOwwC,KAAK7f,aAAa,CAC1d,SAASmiB,GAAGzgG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAEwmG,GAAG1gG,GAAkE,GAA/DO,EAAE,CAAC+6F,KAAKphG,EAAEpL,OAAOyR,EAAEg+F,eAAc,EAAGC,WAAW,KAAKnF,KAAK,MAASsH,GAAG3gG,GAAG4gG,GAAGhnG,EAAE2G,QAAQ,GAAiB,QAAdA,EAAEk6F,GAAGz6F,EAAEpG,EAAE2G,EAAErG,IAAY,CAAWulG,GAAGl/F,EAAEP,EAAE9F,EAAX2mG,MAAgBC,GAAGvgG,EAAE3G,EAAEM,EAAE,CAAC,CAC/K,SAASylG,GAAG3/F,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAEwmG,GAAG1gG,GAAGlD,EAAE,CAACw+F,KAAKphG,EAAEpL,OAAOyR,EAAEg+F,eAAc,EAAGC,WAAW,KAAKnF,KAAK,MAAM,GAAGsH,GAAG3gG,GAAG4gG,GAAGhnG,EAAEkD,OAAO,CAAC,IAAIjD,EAAEmG,EAAEk+E,UAAU,GAAG,IAAIl+E,EAAEo6F,QAAQ,OAAOvgG,GAAG,IAAIA,EAAEugG,QAAiC,QAAxBvgG,EAAED,EAAE0kG,qBAA8B,IAAI,IAAI3kG,EAAEC,EAAE6kG,kBAAkBllG,EAAEM,EAAEF,EAAE4G,GAAqC,GAAlCzD,EAAEyhG,eAAc,EAAGzhG,EAAE0hG,WAAWjlG,EAAKq0F,GAAGr0F,EAAEI,GAAG,CAAC,IAAI0D,EAAEzD,EAAE8gG,YAA+E,OAAnE,OAAOr9F,GAAGP,EAAEu8F,KAAKv8F,EAAE09F,GAAG5gG,KAAKkD,EAAEu8F,KAAKh8F,EAAEg8F,KAAKh8F,EAAEg8F,KAAKv8F,QAAGlD,EAAE8gG,YAAY59F,EAAQ,CAAC,CAAC,MAAMkqB,GAAG,CAAwB,QAAdzmB,EAAEk6F,GAAGz6F,EAAEpG,EAAEkD,EAAE5C,MAAoBulG,GAAGl/F,EAAEP,EAAE9F,EAAb4C,EAAE+jG,MAAgBC,GAAGvgG,EAAE3G,EAAEM,GAAG,CAAC,CAC/c,SAASymG,GAAG3gG,GAAG,IAAIpG,EAAEoG,EAAEk+E,UAAU,OAAOl+E,IAAIi9F,IAAG,OAAOrjG,GAAGA,IAAIqjG,EAAC,CAAC,SAAS2D,GAAG5gG,EAAEpG,GAAGyjG,GAAGD,IAAG,EAAG,IAAI78F,EAAEP,EAAEm7F,QAAQ,OAAO56F,EAAE3G,EAAEy/F,KAAKz/F,GAAGA,EAAEy/F,KAAK94F,EAAE84F,KAAK94F,EAAE84F,KAAKz/F,GAAGoG,EAAEm7F,QAAQvhG,CAAC,CAAC,SAASknG,GAAG9gG,EAAEpG,EAAE2G,GAAG,GAAG,KAAO,QAAFA,GAAW,CAAC,IAAIrG,EAAEN,EAAEwgG,MAAwB75F,GAAlBrG,GAAG8F,EAAE4gF,aAAkBhnF,EAAEwgG,MAAM75F,EAAEghF,GAAGvhF,EAAEO,EAAE,CAAC,CAC9P,IAAIu9F,GAAG,CAACiD,YAAYzG,GAAG0G,YAAYxD,GAAEyD,WAAWzD,GAAE1xG,UAAU0xG,GAAE0D,oBAAoB1D,GAAE2D,mBAAmB3D,GAAE4D,gBAAgB5D,GAAE6D,QAAQ7D,GAAE8D,WAAW9D,GAAE1zG,OAAO0zG,GAAE9zG,SAAS8zG,GAAE+D,cAAc/D,GAAEgE,iBAAiBhE,GAAEiE,cAAcjE,GAAEkE,iBAAiBlE,GAAEmE,qBAAqBnE,GAAEoE,MAAMpE,GAAEqE,0BAAyB,GAAIlE,GAAG,CAACoD,YAAYzG,GAAG0G,YAAY,SAAShhG,EAAEpG,GAA4C,OAAzCokG,KAAK1f,cAAc,CAACt+E,OAAE,IAASpG,EAAE,KAAKA,GAAUoG,CAAC,EAAEihG,WAAW3G,GAAGxuG,UAAUm0G,GAAGiB,oBAAoB,SAASlhG,EAAEpG,EAAE2G,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE2P,OAAO,CAAClQ,IAAI,KAAY+/F,GAAG,QAC3f,EAAEpgD,GAAG76C,KAAK,KAAKlL,EAAEoG,GAAGO,EAAE,EAAE6gG,gBAAgB,SAASphG,EAAEpG,GAAG,OAAOmmG,GAAG,QAAQ,EAAE//F,EAAEpG,EAAE,EAAEunG,mBAAmB,SAASnhG,EAAEpG,GAAG,OAAOmmG,GAAG,EAAE,EAAE//F,EAAEpG,EAAE,EAAEynG,QAAQ,SAASrhG,EAAEpG,GAAG,IAAI2G,EAAEy9F,KAAqD,OAAhDpkG,OAAE,IAASA,EAAE,KAAKA,EAAEoG,EAAEA,IAAIO,EAAE+9E,cAAc,CAACt+E,EAAEpG,GAAUoG,CAAC,EAAEshG,WAAW,SAASthG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE8jG,KAAkM,OAA7LpkG,OAAE,IAAS2G,EAAEA,EAAE3G,GAAGA,EAAEM,EAAEokF,cAAcpkF,EAAE6gG,UAAUnhG,EAAEoG,EAAE,CAACm7F,QAAQ,KAAKT,YAAY,KAAKN,MAAM,EAAEsE,SAAS,KAAKJ,oBAAoBt+F,EAAEy+F,kBAAkB7kG,GAAGM,EAAEgkG,MAAMl+F,EAAEA,EAAEA,EAAE0+F,SAAS+B,GAAG37F,KAAK,KAAKm4F,GAAEj9F,GAAS,CAAC9F,EAAEokF,cAAct+E,EAAE,EAAElW,OAAO,SAASkW,GAC3d,OAAdA,EAAE,CAAC9V,QAAQ8V,GAAhBg+F,KAA4B1f,cAAct+E,CAAC,EAAEtW,SAASg2G,GAAG6B,cAAclB,GAAGmB,iBAAiB,SAASxhG,GAAG,OAAOg+F,KAAK1f,cAAct+E,CAAC,EAAEyhG,cAAc,WAAW,IAAIzhG,EAAE0/F,IAAG,GAAI9lG,EAAEoG,EAAE,GAA6C,OAA1CA,EAAEwgG,GAAG17F,KAAK,KAAK9E,EAAE,IAAIg+F,KAAK1f,cAAct+E,EAAQ,CAACpG,EAAEoG,EAAE,EAAE0hG,iBAAiB,WAAW,EAAEC,qBAAqB,SAAS3hG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE+iG,GAAEngG,EAAEkhG,KAAK,GAAG3G,GAAE,CAAC,QAAG,IAAS92F,EAAE,MAAM6G,MAAMtN,EAAE,MAAMyG,EAAEA,GAAG,KAAK,CAAO,GAANA,EAAE3G,IAAO,OAAOulG,GAAE,MAAM/3F,MAAMtN,EAAE,MAAM,KAAQ,GAAHkjG,KAAQoC,GAAGllG,EAAEN,EAAE2G,EAAE,CAACzD,EAAEwhF,cAAc/9E,EAAE,IAAI1G,EAAE,CAACrP,MAAM+V,EAAEy+F,YAAYplG,GACvZ,OAD0ZkD,EAAEohG,MAAMrkG,EAAEomG,GAAGlB,GAAGj6F,KAAK,KAAK5K,EACpfL,EAAEmG,GAAG,CAACA,IAAI9F,EAAEkkF,OAAO,KAAK6gB,GAAG,EAAEC,GAAGp6F,KAAK,KAAK5K,EAAEL,EAAE0G,EAAE3G,QAAG,EAAO,MAAa2G,CAAC,EAAEqhG,MAAM,WAAW,IAAI5hG,EAAEg+F,KAAKpkG,EAAEulG,GAAE2C,iBAAiB,GAAGzK,GAAE,CAAC,IAAI92F,EAAEw2F,GAAkDn9F,EAAE,IAAIA,EAAE,KAA9C2G,GAAHu2F,KAAU,GAAG,GAAG3W,GAAhB2W,IAAsB,IAAIl8F,SAAS,IAAI2F,GAAuB,GAAPA,EAAE+8F,QAAW1jG,GAAG,IAAI2G,EAAE3F,SAAS,KAAKhB,GAAG,GAAG,MAAaA,EAAE,IAAIA,EAAE,KAAf2G,EAAEg9F,MAAmB3iG,SAAS,IAAI,IAAI,OAAOoF,EAAEs+E,cAAc1kF,CAAC,EAAEioG,0BAAyB,GAAIjE,GAAG,CAACmD,YAAYzG,GAAG0G,YAAYV,GAAGW,WAAW3G,GAAGxuG,UAAUgzG,GAAGoC,oBAAoBd,GAAGe,mBAAmBjB,GAAGkB,gBAAgBjB,GAAGkB,QAAQxmF,GAAGymF,WAAWjD,GAAGv0G,OAAOg2G,GAAGp2G,SAAS,WAAW,OAAO20G,GAAGD,GAAG,EACrhBmD,cAAclB,GAAGmB,iBAAiB,SAASxhG,GAAc,OAAOugG,GAAZpC,KAAiBjB,GAAE5e,cAAct+E,EAAE,EAAEyhG,cAAc,WAAgD,MAAM,CAArCpD,GAAGD,IAAI,GAAKD,KAAK7f,cAAyB,EAAEojB,iBAAiB9C,GAAG+C,qBAAqB9C,GAAG+C,MAAMj0C,GAAGk0C,0BAAyB,GAAIhE,GAAG,CAACkD,YAAYzG,GAAG0G,YAAYV,GAAGW,WAAW3G,GAAGxuG,UAAUgzG,GAAGoC,oBAAoBd,GAAGe,mBAAmBjB,GAAGkB,gBAAgBjB,GAAGkB,QAAQxmF,GAAGymF,WAAW3C,GAAG70G,OAAOg2G,GAAGp2G,SAAS,WAAW,OAAOi1G,GAAGP,GAAG,EAAEmD,cAAclB,GAAGmB,iBAAiB,SAASxhG,GAAG,IAAIpG,EAAEukG,KAAK,OAAO,OACzfjB,GAAEtjG,EAAE0kF,cAAct+E,EAAEugG,GAAG3mG,EAAEsjG,GAAE5e,cAAct+E,EAAE,EAAEyhG,cAAc,WAAgD,MAAM,CAArC9C,GAAGP,IAAI,GAAKD,KAAK7f,cAAyB,EAAEojB,iBAAiB9C,GAAG+C,qBAAqB9C,GAAG+C,MAAMj0C,GAAGk0C,0BAAyB,GAAI,SAASE,GAAG/hG,EAAEpG,GAAG,GAAGoG,GAAGA,EAAEgiG,aAAa,CAA4B,IAAI,IAAIzhG,KAAnC3G,EAAE4X,EAAE,CAAC,EAAE5X,GAAGoG,EAAEA,EAAEgiG,kBAA4B,IAASpoG,EAAE2G,KAAK3G,EAAE2G,GAAGP,EAAEO,IAAI,OAAO3G,CAAC,CAAC,OAAOA,CAAC,CAAC,SAASqoG,GAAGjiG,EAAEpG,EAAE2G,EAAErG,GAA8BqG,EAAE,QAAXA,EAAEA,EAAErG,EAAtBN,EAAEoG,EAAEs+E,sBAAmC,IAAS/9E,EAAE3G,EAAE4X,EAAE,CAAC,EAAE5X,EAAE2G,GAAGP,EAAEs+E,cAAc/9E,EAAE,IAAIP,EAAEo6F,QAAQp6F,EAAE86F,YAAYC,UAAUx6F,EAAE,CACrd,IAAI2hG,GAAG,CAACC,UAAU,SAASniG,GAAG,SAAOA,EAAEA,EAAEoiG,kBAAiBnkB,GAAGj+E,KAAKA,CAAI,EAAEqiG,gBAAgB,SAASriG,EAAEpG,EAAE2G,GAAGP,EAAEA,EAAEoiG,gBAAgB,IAAIloG,EAAE2mG,KAAI/jG,EAAE4jG,GAAG1gG,GAAGnG,EAAEuhG,GAAGlhG,EAAE4C,GAAGjD,EAAE0I,QAAQ3I,OAAE,IAAS2G,GAAG,OAAOA,IAAI1G,EAAE8H,SAASpB,GAAe,QAAZ3G,EAAE2hG,GAAGv7F,EAAEnG,EAAEiD,MAAc2iG,GAAG7lG,EAAEoG,EAAElD,EAAE5C,GAAGuhG,GAAG7hG,EAAEoG,EAAElD,GAAG,EAAEwlG,oBAAoB,SAAStiG,EAAEpG,EAAE2G,GAAGP,EAAEA,EAAEoiG,gBAAgB,IAAIloG,EAAE2mG,KAAI/jG,EAAE4jG,GAAG1gG,GAAGnG,EAAEuhG,GAAGlhG,EAAE4C,GAAGjD,EAAEu7E,IAAI,EAAEv7E,EAAE0I,QAAQ3I,OAAE,IAAS2G,GAAG,OAAOA,IAAI1G,EAAE8H,SAASpB,GAAe,QAAZ3G,EAAE2hG,GAAGv7F,EAAEnG,EAAEiD,MAAc2iG,GAAG7lG,EAAEoG,EAAElD,EAAE5C,GAAGuhG,GAAG7hG,EAAEoG,EAAElD,GAAG,EAAEylG,mBAAmB,SAASviG,EAAEpG,GAAGoG,EAAEA,EAAEoiG,gBAAgB,IAAI7hG,EAAEsgG,KAAI3mG,EACnfwmG,GAAG1gG,GAAGlD,EAAEs+F,GAAG76F,EAAErG,GAAG4C,EAAEs4E,IAAI,OAAE,IAASx7E,GAAG,OAAOA,IAAIkD,EAAE6E,SAAS/H,GAAe,QAAZA,EAAE2hG,GAAGv7F,EAAElD,EAAE5C,MAAculG,GAAG7lG,EAAEoG,EAAE9F,EAAEqG,GAAGk7F,GAAG7hG,EAAEoG,EAAE9F,GAAG,GAAG,SAASsoG,GAAGxiG,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,EAAEF,GAAiB,MAAM,oBAApBqG,EAAEA,EAAE+8E,WAAsC0lB,sBAAsBziG,EAAEyiG,sBAAsBvoG,EAAEL,EAAEF,IAAGC,EAAErH,YAAWqH,EAAErH,UAAUmwG,wBAAsB7U,GAAGttF,EAAErG,KAAK2zF,GAAG/wF,EAAEjD,GAAK,CAC1S,SAAS8oG,GAAG3iG,EAAEpG,EAAE2G,GAAG,IAAIrG,GAAE,EAAG4C,EAAEo4F,GAAOr7F,EAAED,EAAEgpG,YAA2W,MAA/V,kBAAkB/oG,GAAG,OAAOA,EAAEA,EAAEygG,GAAGzgG,IAAIiD,EAAE44F,GAAG97F,GAAGy7F,GAAGF,GAAEjrG,QAAyB2P,GAAGK,EAAE,QAAtBA,EAAEN,EAAE27F,oBAA4B,IAASr7F,GAAGo7F,GAAGt1F,EAAElD,GAAGo4F,IAAIt7F,EAAE,IAAIA,EAAE2G,EAAE1G,GAAGmG,EAAEs+E,cAAc,OAAO1kF,EAAEigE,YAAO,IAASjgE,EAAEigE,MAAMjgE,EAAEigE,MAAM,KAAKjgE,EAAEipG,QAAQX,GAAGliG,EAAE+8E,UAAUnjF,EAAEA,EAAEwoG,gBAAgBpiG,EAAE9F,KAAI8F,EAAEA,EAAE+8E,WAAYyY,4CAA4C14F,EAAEkD,EAAEy1F,0CAA0C57F,GAAUD,CAAC,CAC5Z,SAASkpG,GAAG9iG,EAAEpG,EAAE2G,EAAErG,GAAG8F,EAAEpG,EAAEigE,MAAM,oBAAoBjgE,EAAEmpG,2BAA2BnpG,EAAEmpG,0BAA0BxiG,EAAErG,GAAG,oBAAoBN,EAAEopG,kCAAkCppG,EAAEopG,iCAAiCziG,EAAErG,GAAGN,EAAEigE,QAAQ75D,GAAGkiG,GAAGI,oBAAoB1oG,EAAEA,EAAEigE,MAAM,KAAK,CACpQ,SAASopC,GAAGjjG,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAEkD,EAAE+8E,UAAUjgF,EAAE/U,MAAMwY,EAAEzD,EAAE+8D,MAAM75D,EAAEs+E,cAAcxhF,EAAE67F,KAAK,CAAC,EAAEkC,GAAG76F,GAAG,IAAInG,EAAED,EAAEgpG,YAAY,kBAAkB/oG,GAAG,OAAOA,EAAEiD,EAAEqtD,QAAQmwC,GAAGzgG,IAAIA,EAAE67F,GAAG97F,GAAGy7F,GAAGF,GAAEjrG,QAAQ4S,EAAEqtD,QAAQmrC,GAAGt1F,EAAEnG,IAAIiD,EAAE+8D,MAAM75D,EAAEs+E,cAA2C,oBAA7BzkF,EAAED,EAAEspG,4BAAiDjB,GAAGjiG,EAAEpG,EAAEC,EAAE0G,GAAGzD,EAAE+8D,MAAM75D,EAAEs+E,eAAe,oBAAoB1kF,EAAEspG,0BAA0B,oBAAoBpmG,EAAEqmG,yBAAyB,oBAAoBrmG,EAAEsmG,2BAA2B,oBAAoBtmG,EAAEumG,qBAAqBzpG,EAAEkD,EAAE+8D,MACrf,oBAAoB/8D,EAAEumG,oBAAoBvmG,EAAEumG,qBAAqB,oBAAoBvmG,EAAEsmG,2BAA2BtmG,EAAEsmG,4BAA4BxpG,IAAIkD,EAAE+8D,OAAOqoC,GAAGI,oBAAoBxlG,EAAEA,EAAE+8D,MAAM,MAAM8hC,GAAG37F,EAAEO,EAAEzD,EAAE5C,GAAG4C,EAAE+8D,MAAM75D,EAAEs+E,eAAe,oBAAoBxhF,EAAEwmG,oBAAoBtjG,EAAEo+E,OAAO,QAAQ,CAAC,SAASmlB,GAAGvjG,EAAEpG,GAAG,IAAI,IAAI2G,EAAE,GAAGrG,EAAEN,EAAE,GAAG2G,GAAG40E,EAAGj7E,GAAGA,EAAEA,EAAEikF,aAAajkF,GAAG,IAAI4C,EAAEyD,CAAC,CAAC,MAAM1G,GAAGiD,EAAE,6BAA6BjD,EAAE2pG,QAAQ,KAAK3pG,EAAEivD,KAAK,CAAC,MAAM,CAACt+D,MAAMwV,EAAEutC,OAAO3zC,EAAEkvD,MAAMhsD,EAAE2mG,OAAO,KAAK,CAC1d,SAASC,GAAG1jG,EAAEpG,EAAE2G,GAAG,MAAM,CAAC/V,MAAMwV,EAAEutC,OAAO,KAAKub,MAAM,MAAMvoD,EAAEA,EAAE,KAAKkjG,OAAO,MAAM7pG,EAAEA,EAAE,KAAK,CAAC,SAAS+pG,GAAG3jG,EAAEpG,GAAG,IAAIwnC,QAAQh/B,MAAMxI,EAAEpP,MAAM,CAAC,MAAM+V,GAAGoM,YAAW,WAAW,MAAMpM,CAAE,GAAE,CAAC,CAAC,IAAIqjG,GAAG,oBAAoBC,QAAQA,QAAQzhB,IAAI,SAAS0hB,GAAG9jG,EAAEpG,EAAE2G,IAAGA,EAAE66F,IAAI,EAAE76F,IAAK60E,IAAI,EAAE70E,EAAEgC,QAAQ,CAAC5K,QAAQ,MAAM,IAAIuC,EAAEN,EAAEpP,MAAsD,OAAhD+V,EAAEoB,SAAS,WAAWoiG,KAAKA,IAAG,EAAGC,GAAG9pG,GAAGypG,GAAG3jG,EAAEpG,EAAE,EAAS2G,CAAC,CACrW,SAAS0jG,GAAGjkG,EAAEpG,EAAE2G,IAAGA,EAAE66F,IAAI,EAAE76F,IAAK60E,IAAI,EAAE,IAAIl7E,EAAE8F,EAAE9Q,KAAKg1G,yBAAyB,GAAG,oBAAoBhqG,EAAE,CAAC,IAAI4C,EAAElD,EAAEpP,MAAM+V,EAAEgC,QAAQ,WAAW,OAAOrI,EAAE4C,EAAE,EAAEyD,EAAEoB,SAAS,WAAWgiG,GAAG3jG,EAAEpG,EAAE,CAAC,CAAC,IAAIC,EAAEmG,EAAE+8E,UAA8O,OAApO,OAAOljF,GAAG,oBAAoBA,EAAEsqG,oBAAoB5jG,EAAEoB,SAAS,WAAWgiG,GAAG3jG,EAAEpG,GAAG,oBAAoBM,IAAI,OAAOkqG,GAAGA,GAAG,IAAIpyB,IAAI,CAAC5+E,OAAOgxG,GAAG/oD,IAAIjoD,OAAO,IAAImN,EAAE3G,EAAEkvD,MAAM11D,KAAK+wG,kBAAkBvqG,EAAEpP,MAAM,CAAC65G,eAAe,OAAO9jG,EAAEA,EAAE,IAAI,GAAUA,CAAC,CACnb,SAAS+jG,GAAGtkG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE8F,EAAEukG,UAAU,GAAG,OAAOrqG,EAAE,CAACA,EAAE8F,EAAEukG,UAAU,IAAIX,GAAG,IAAI9mG,EAAE,IAAIk1E,IAAI93E,EAAE46E,IAAIl7E,EAAEkD,EAAE,WAAiB,KAAXA,EAAE5C,EAAEkY,IAAIxY,MAAgBkD,EAAE,IAAIk1E,IAAI93E,EAAE46E,IAAIl7E,EAAEkD,IAAIA,EAAE60F,IAAIpxF,KAAKzD,EAAEu+C,IAAI96C,GAAGP,EAAEwkG,GAAG1/F,KAAK,KAAK9E,EAAEpG,EAAE2G,GAAG3G,EAAEq6F,KAAKj0F,EAAEA,GAAG,CAAC,SAASykG,GAAGzkG,GAAG,EAAE,CAAC,IAAIpG,EAA4E,IAAvEA,EAAE,KAAKoG,EAAEo1E,OAAsBx7E,EAAE,QAApBA,EAAEoG,EAAEs+E,gBAAyB,OAAO1kF,EAAE2kF,YAAuB3kF,EAAE,OAAOoG,EAAEA,EAAEA,EAAEm+E,MAAM,OAAO,OAAOn+E,GAAG,OAAO,IAAI,CAChW,SAAS0kG,GAAG1kG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,OAAG,KAAY,EAAPkD,EAAEzR,OAAeyR,IAAIpG,EAAEoG,EAAEo+E,OAAO,OAAOp+E,EAAEo+E,OAAO,IAAI79E,EAAE69E,OAAO,OAAO79E,EAAE69E,QAAQ,MAAM,IAAI79E,EAAE60E,MAAM,OAAO70E,EAAE29E,UAAU39E,EAAE60E,IAAI,KAAIx7E,EAAEwhG,IAAI,EAAE,IAAKhmB,IAAI,EAAEmmB,GAAGh7F,EAAE3G,EAAE,KAAK2G,EAAE65F,OAAO,GAAGp6F,IAAEA,EAAEo+E,OAAO,MAAMp+E,EAAEo6F,MAAMt9F,EAASkD,EAAC,CAAC,IAAI2kG,GAAGrxB,EAAGsxB,kBAAkBvK,IAAG,EAAG,SAASwK,GAAG7kG,EAAEpG,EAAE2G,EAAErG,GAAGN,EAAE8kF,MAAM,OAAO1+E,EAAEw5F,GAAG5/F,EAAE,KAAK2G,EAAErG,GAAGq/F,GAAG3/F,EAAEoG,EAAE0+E,MAAMn+E,EAAErG,EAAE,CACnV,SAAS4qG,GAAG9kG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAGyD,EAAEA,EAAEw4C,OAAO,IAAIl/C,EAAED,EAAE1M,IAAqC,OAAjCizC,GAAGvmC,EAAEkD,GAAG5C,EAAEwjG,GAAG19F,EAAEpG,EAAE2G,EAAErG,EAAEL,EAAEiD,GAAGyD,EAAEw9F,KAAQ,OAAO/9F,GAAIq6F,IAA2EhD,IAAG92F,GAAG02F,GAAGr9F,GAAGA,EAAEwkF,OAAO,EAAEymB,GAAG7kG,EAAEpG,EAAEM,EAAE4C,GAAUlD,EAAE8kF,QAA7G9kF,EAAEkhG,YAAY96F,EAAE86F,YAAYlhG,EAAEwkF,QAAQ,KAAKp+E,EAAEo6F,QAAQt9F,EAAEioG,GAAG/kG,EAAEpG,EAAEkD,GAAoD,CACzN,SAASkoG,GAAGhlG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,GAAG,OAAOkD,EAAE,CAAC,IAAInG,EAAE0G,EAAErR,KAAK,MAAG,oBAAoB2K,GAAIorG,GAAGprG,SAAI,IAASA,EAAEmoG,cAAc,OAAOzhG,EAAE2kG,cAAS,IAAS3kG,EAAEyhG,eAAoDhiG,EAAEi5F,GAAG14F,EAAErR,KAAK,KAAKgL,EAAEN,EAAEA,EAAErL,KAAKuO,IAAK5P,IAAI0M,EAAE1M,IAAI8S,EAAEm+E,OAAOvkF,EAASA,EAAE8kF,MAAM1+E,IAArGpG,EAAEw7E,IAAI,GAAGx7E,EAAE1K,KAAK2K,EAAEsrG,GAAGnlG,EAAEpG,EAAEC,EAAEK,EAAE4C,GAAyE,CAAW,GAAVjD,EAAEmG,EAAE0+E,MAAS,KAAK1+E,EAAEo6F,MAAMt9F,GAAG,CAAC,IAAInD,EAAEE,EAAEs+F,cAA0C,IAAhB53F,EAAE,QAAdA,EAAEA,EAAE2kG,SAAmB3kG,EAAEstF,IAAQl0F,EAAEO,IAAI8F,EAAE9S,MAAM0M,EAAE1M,IAAI,OAAO63G,GAAG/kG,EAAEpG,EAAEkD,EAAE,CAA6C,OAA5ClD,EAAEwkF,OAAO,GAAEp+E,EAAE+4F,GAAGl/F,EAAEK,IAAKhN,IAAI0M,EAAE1M,IAAI8S,EAAEm+E,OAAOvkF,EAASA,EAAE8kF,MAAM1+E,CAAC,CAC1b,SAASmlG,GAAGnlG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,GAAG,OAAOkD,EAAE,CAAC,IAAInG,EAAEmG,EAAEm4F,cAAc,GAAGtK,GAAGh0F,EAAEK,IAAI8F,EAAE9S,MAAM0M,EAAE1M,IAAI,IAAGmtG,IAAG,EAAGzgG,EAAEg+F,aAAa19F,EAAEL,EAAE,KAAKmG,EAAEo6F,MAAMt9F,GAAsC,OAAOlD,EAAEwgG,MAAMp6F,EAAEo6F,MAAM2K,GAAG/kG,EAAEpG,EAAEkD,GAAjE,KAAa,OAARkD,EAAEo+E,SAAgBic,IAAG,EAAyC,EAAC,OAAO+K,GAAGplG,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAE,CACxN,SAASuoG,GAAGrlG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAEN,EAAEg+F,aAAa96F,EAAE5C,EAAEk6D,SAASv6D,EAAE,OAAOmG,EAAEA,EAAEs+E,cAAc,KAAK,GAAG,WAAWpkF,EAAE3L,KAAK,GAAG,KAAY,EAAPqL,EAAErL,MAAQqL,EAAE0kF,cAAc,CAACgnB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMvQ,GAAEwQ,GAAGC,IAAIA,IAAInlG,MAAM,CAAC,GAAG,KAAO,WAAFA,GAAc,OAAOP,EAAE,OAAOnG,EAAEA,EAAEyrG,UAAU/kG,EAAEA,EAAE3G,EAAEwgG,MAAMxgG,EAAEqgG,WAAW,WAAWrgG,EAAE0kF,cAAc,CAACgnB,UAAUtlG,EAAEulG,UAAU,KAAKC,YAAY,MAAM5rG,EAAEkhG,YAAY,KAAK7F,GAAEwQ,GAAGC,IAAIA,IAAI1lG,EAAE,KAAKpG,EAAE0kF,cAAc,CAACgnB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMtrG,EAAE,OAAOL,EAAEA,EAAEyrG,UAAU/kG,EAAE00F,GAAEwQ,GAAGC,IAAIA,IAAIxrG,CAAC,MAAM,OACtfL,GAAGK,EAAEL,EAAEyrG,UAAU/kG,EAAE3G,EAAE0kF,cAAc,MAAMpkF,EAAEqG,EAAE00F,GAAEwQ,GAAGC,IAAIA,IAAIxrG,EAAc,OAAZ2qG,GAAG7kG,EAAEpG,EAAEkD,EAAEyD,GAAU3G,EAAE8kF,KAAK,CAAC,SAASinB,GAAG3lG,EAAEpG,GAAG,IAAI2G,EAAE3G,EAAE1M,KAAO,OAAO8S,GAAG,OAAOO,GAAG,OAAOP,GAAGA,EAAE9S,MAAMqT,KAAE3G,EAAEwkF,OAAO,IAAIxkF,EAAEwkF,OAAO,QAAO,CAAC,SAASgnB,GAAGplG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,IAAIjD,EAAE67F,GAAGn1F,GAAG80F,GAAGF,GAAEjrG,QAAmD,OAA3C2P,EAAEy7F,GAAG17F,EAAEC,GAAGsmC,GAAGvmC,EAAEkD,GAAGyD,EAAEm9F,GAAG19F,EAAEpG,EAAE2G,EAAErG,EAAEL,EAAEiD,GAAG5C,EAAE6jG,KAAQ,OAAO/9F,GAAIq6F,IAA2EhD,IAAGn9F,GAAG+8F,GAAGr9F,GAAGA,EAAEwkF,OAAO,EAAEymB,GAAG7kG,EAAEpG,EAAE2G,EAAEzD,GAAUlD,EAAE8kF,QAA7G9kF,EAAEkhG,YAAY96F,EAAE86F,YAAYlhG,EAAEwkF,QAAQ,KAAKp+E,EAAEo6F,QAAQt9F,EAAEioG,GAAG/kG,EAAEpG,EAAEkD,GAAoD,CACla,SAAS8oG,GAAG5lG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,GAAG44F,GAAGn1F,GAAG,CAAC,IAAI1G,GAAE,EAAGm8F,GAAGp8F,EAAE,MAAMC,GAAE,EAAW,GAARsmC,GAAGvmC,EAAEkD,GAAM,OAAOlD,EAAEmjF,UAAU8oB,GAAG7lG,EAAEpG,GAAG+oG,GAAG/oG,EAAE2G,EAAErG,GAAG+oG,GAAGrpG,EAAE2G,EAAErG,EAAE4C,GAAG5C,GAAE,OAAQ,GAAG,OAAO8F,EAAE,CAAC,IAAIrG,EAAEC,EAAEmjF,UAAUxjF,EAAEK,EAAEu+F,cAAcx+F,EAAE5R,MAAMwR,EAAE,IAAI8D,EAAE1D,EAAEwwD,QAAQnjC,EAAEzmB,EAAEqiG,YAAY,kBAAkB57E,GAAG,OAAOA,EAAEA,EAAEszE,GAAGtzE,GAAyBA,EAAEsuE,GAAG17F,EAA1BotB,EAAE0uE,GAAGn1F,GAAG80F,GAAGF,GAAEjrG,SAAmB,IAAI+8B,EAAE1mB,EAAE2iG,yBAAyBnpG,EAAE,oBAAoBktB,GAAG,oBAAoBttB,EAAEwpG,wBAAwBppG,GAAG,oBAAoBJ,EAAEqpG,kCAAkC,oBAAoBrpG,EAAEopG,4BAC1dxpG,IAAIW,GAAGmD,IAAI2pB,IAAI87E,GAAGlpG,EAAED,EAAEO,EAAE8sB,GAAG4zE,IAAG,EAAG,IAAIlhG,EAAEE,EAAE0kF,cAAc3kF,EAAEkgE,MAAMngE,EAAEiiG,GAAG/hG,EAAEM,EAAEP,EAAEmD,GAAGO,EAAEzD,EAAE0kF,cAAc/kF,IAAIW,GAAGR,IAAI2D,GAAG+3F,GAAGlrG,SAAS0wG,IAAI,oBAAoB3zE,IAAIg7E,GAAGroG,EAAE2G,EAAE0mB,EAAE/sB,GAAGmD,EAAEzD,EAAE0kF,gBAAgB/kF,EAAEqhG,IAAI4H,GAAG5oG,EAAE2G,EAAEhH,EAAEW,EAAER,EAAE2D,EAAE2pB,KAAKjtB,GAAG,oBAAoBJ,EAAEypG,2BAA2B,oBAAoBzpG,EAAE0pG,qBAAqB,oBAAoB1pG,EAAE0pG,oBAAoB1pG,EAAE0pG,qBAAqB,oBAAoB1pG,EAAEypG,2BAA2BzpG,EAAEypG,6BAA6B,oBAAoBzpG,EAAE2pG,oBAAoB1pG,EAAEwkF,OAAO,WAClf,oBAAoBzkF,EAAE2pG,oBAAoB1pG,EAAEwkF,OAAO,SAASxkF,EAAEu+F,cAAcj+F,EAAEN,EAAE0kF,cAAcjhF,GAAG1D,EAAE5R,MAAMmS,EAAEP,EAAEkgE,MAAMx8D,EAAE1D,EAAEwwD,QAAQnjC,EAAE9sB,EAAEX,IAAI,oBAAoBI,EAAE2pG,oBAAoB1pG,EAAEwkF,OAAO,SAASlkF,GAAE,EAAG,KAAK,CAACP,EAAEC,EAAEmjF,UAAU/lC,GAAGh3C,EAAEpG,GAAGL,EAAEK,EAAEu+F,cAAcnxE,EAAEptB,EAAE1K,OAAO0K,EAAE69F,YAAYl+F,EAAEwoG,GAAGnoG,EAAE1K,KAAKqK,GAAGI,EAAE5R,MAAMi/B,EAAEjtB,EAAEH,EAAEg+F,aAAal+F,EAAEC,EAAEwwD,QAAwB,kBAAhB9sD,EAAEkD,EAAEqiG,cAAiC,OAAOvlG,EAAEA,EAAEi9F,GAAGj9F,GAAyBA,EAAEi4F,GAAG17F,EAA1ByD,EAAEq4F,GAAGn1F,GAAG80F,GAAGF,GAAEjrG,SAAmB,IAAIiE,EAAEoS,EAAE2iG,0BAA0Bj8E,EAAE,oBAAoB94B,GAAG,oBAAoBwL,EAAEwpG,0BAC9e,oBAAoBxpG,EAAEqpG,kCAAkC,oBAAoBrpG,EAAEopG,4BAA4BxpG,IAAIQ,GAAGL,IAAI2D,IAAIylG,GAAGlpG,EAAED,EAAEO,EAAEmD,GAAGu9F,IAAG,EAAGlhG,EAAEE,EAAE0kF,cAAc3kF,EAAEkgE,MAAMngE,EAAEiiG,GAAG/hG,EAAEM,EAAEP,EAAEmD,GAAG,IAAIme,EAAErhB,EAAE0kF,cAAc/kF,IAAIQ,GAAGL,IAAIuhB,GAAGm6E,GAAGlrG,SAAS0wG,IAAI,oBAAoBzsG,IAAI8zG,GAAGroG,EAAE2G,EAAEpS,EAAE+L,GAAG+gB,EAAErhB,EAAE0kF,gBAAgBt3D,EAAE4zE,IAAI4H,GAAG5oG,EAAE2G,EAAEymB,EAAE9sB,EAAER,EAAEuhB,EAAE5d,KAAI,IAAK4pB,GAAG,oBAAoBttB,EAAEmsG,4BAA4B,oBAAoBnsG,EAAEosG,sBAAsB,oBAAoBpsG,EAAEosG,qBAAqBpsG,EAAEosG,oBAAoB7rG,EAAE+gB,EAAE5d,GAAG,oBAAoB1D,EAAEmsG,4BAC5fnsG,EAAEmsG,2BAA2B5rG,EAAE+gB,EAAE5d,IAAI,oBAAoB1D,EAAEqsG,qBAAqBpsG,EAAEwkF,OAAO,GAAG,oBAAoBzkF,EAAEwpG,0BAA0BvpG,EAAEwkF,OAAO,QAAQ,oBAAoBzkF,EAAEqsG,oBAAoBzsG,IAAIyG,EAAEm4F,eAAez+F,IAAIsG,EAAEs+E,gBAAgB1kF,EAAEwkF,OAAO,GAAG,oBAAoBzkF,EAAEwpG,yBAAyB5pG,IAAIyG,EAAEm4F,eAAez+F,IAAIsG,EAAEs+E,gBAAgB1kF,EAAEwkF,OAAO,MAAMxkF,EAAEu+F,cAAcj+F,EAAEN,EAAE0kF,cAAcrjE,GAAGthB,EAAE5R,MAAMmS,EAAEP,EAAEkgE,MAAM5+C,EAAEthB,EAAEwwD,QAAQ9sD,EAAEnD,EAAE8sB,IAAI,oBAAoBrtB,EAAEqsG,oBAAoBzsG,IAAIyG,EAAEm4F,eAAez+F,IACjfsG,EAAEs+E,gBAAgB1kF,EAAEwkF,OAAO,GAAG,oBAAoBzkF,EAAEwpG,yBAAyB5pG,IAAIyG,EAAEm4F,eAAez+F,IAAIsG,EAAEs+E,gBAAgB1kF,EAAEwkF,OAAO,MAAMlkF,GAAE,EAAG,CAAC,OAAO+rG,GAAGjmG,EAAEpG,EAAE2G,EAAErG,EAAEL,EAAEiD,EAAE,CACnK,SAASmpG,GAAGjmG,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,GAAG8rG,GAAG3lG,EAAEpG,GAAG,IAAID,EAAE,KAAa,IAARC,EAAEwkF,OAAW,IAAIlkF,IAAIP,EAAE,OAAOmD,GAAGo5F,GAAGt8F,EAAE2G,GAAE,GAAIwkG,GAAG/kG,EAAEpG,EAAEC,GAAGK,EAAEN,EAAEmjF,UAAU4nB,GAAGz6G,QAAQ0P,EAAE,IAAIL,EAAEI,GAAG,oBAAoB4G,EAAE2jG,yBAAyB,KAAKhqG,EAAE6+C,SAAwI,OAA/Hn/C,EAAEwkF,OAAO,EAAE,OAAOp+E,GAAGrG,GAAGC,EAAE8kF,MAAM6a,GAAG3/F,EAAEoG,EAAE0+E,MAAM,KAAK7kF,GAAGD,EAAE8kF,MAAM6a,GAAG3/F,EAAE,KAAKL,EAAEM,IAAIgrG,GAAG7kG,EAAEpG,EAAEL,EAAEM,GAAGD,EAAE0kF,cAAcpkF,EAAE2/D,MAAM/8D,GAAGo5F,GAAGt8F,EAAE2G,GAAE,GAAW3G,EAAE8kF,KAAK,CAAC,SAASwnB,GAAGlmG,GAAG,IAAIpG,EAAEoG,EAAE+8E,UAAUnjF,EAAEusG,eAAetQ,GAAG71F,EAAEpG,EAAEusG,eAAevsG,EAAEusG,iBAAiBvsG,EAAEuwD,SAASvwD,EAAEuwD,SAAS0rC,GAAG71F,EAAEpG,EAAEuwD,SAAQ,GAAI+xC,GAAGl8F,EAAEpG,EAAEypF,cAAc,CAC5e,SAAS1nD,GAAG37B,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAuC,OAApCu7F,KAAKC,GAAGx7F,GAAGlD,EAAEwkF,OAAO,IAAIymB,GAAG7kG,EAAEpG,EAAE2G,EAAErG,GAAUN,EAAE8kF,KAAK,CAAC,IAaqL0nB,GAAGC,GAAGC,GAAGC,GAb1LC,GAAG,CAACjoB,WAAW,KAAKsZ,YAAY,KAAKC,UAAU,GAAG,SAAS2O,GAAGzmG,GAAG,MAAM,CAACslG,UAAUtlG,EAAEulG,UAAU,KAAKC,YAAY,KAAK,CAClM,SAASkB,GAAG1mG,EAAEpG,EAAE2G,GAAG,IAA0DhH,EAAtDW,EAAEN,EAAEg+F,aAAa96F,EAAEy/F,GAAEryG,QAAQ2P,GAAE,EAAGF,EAAE,KAAa,IAARC,EAAEwkF,OAAqJ,IAAvI7kF,EAAEI,KAAKJ,GAAE,OAAOyG,GAAG,OAAOA,EAAEs+E,gBAAiB,KAAO,EAAFxhF,IAASvD,GAAEM,GAAE,EAAGD,EAAEwkF,QAAQ,KAAY,OAAOp+E,GAAG,OAAOA,EAAEs+E,gBAAcxhF,GAAG,GAAEm4F,GAAEsH,GAAI,EAAFz/F,GAAQ,OAAOkD,EAA2B,OAAxBg4F,GAAGp+F,GAAwB,QAArBoG,EAAEpG,EAAE0kF,gBAA2C,QAAft+E,EAAEA,EAAEu+E,aAA4B,KAAY,EAAP3kF,EAAErL,MAAQqL,EAAEwgG,MAAM,EAAE,OAAOp6F,EAAE7D,KAAKvC,EAAEwgG,MAAM,EAAExgG,EAAEwgG,MAAM,WAAW,OAAKzgG,EAAEO,EAAEk6D,SAASp0D,EAAE9F,EAAEysG,SAAgB9sG,GAAGK,EAAEN,EAAErL,KAAKsL,EAAED,EAAE8kF,MAAM/kF,EAAE,CAACpL,KAAK,SAAS6lE,SAASz6D,GAAG,KAAO,EAAFO,IAAM,OAAOL,GAAGA,EAAEogG,WAAW,EAAEpgG,EAAE+9F,aAC7ej+F,GAAGE,EAAE+sG,GAAGjtG,EAAEO,EAAE,EAAE,MAAM8F,EAAEo5F,GAAGp5F,EAAE9F,EAAEqG,EAAE,MAAM1G,EAAEskF,OAAOvkF,EAAEoG,EAAEm+E,OAAOvkF,EAAEC,EAAE8kF,QAAQ3+E,EAAEpG,EAAE8kF,MAAM7kF,EAAED,EAAE8kF,MAAMJ,cAAcmoB,GAAGlmG,GAAG3G,EAAE0kF,cAAckoB,GAAGxmG,GAAG6mG,GAAGjtG,EAAED,IAAqB,GAAG,QAArBmD,EAAEkD,EAAEs+E,gBAA2C,QAAf/kF,EAAEuD,EAAEyhF,YAAqB,OAGpM,SAAYv+E,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,EAAEF,GAAG,GAAG4G,EAAG,OAAW,IAAR3G,EAAEwkF,OAAiBxkF,EAAEwkF,QAAQ,IAAwB0oB,GAAG9mG,EAAEpG,EAAED,EAA3BO,EAAEwpG,GAAGt8F,MAAMtN,EAAE,SAAsB,OAAOF,EAAE0kF,eAAqB1kF,EAAE8kF,MAAM1+E,EAAE0+E,MAAM9kF,EAAEwkF,OAAO,IAAI,OAAKvkF,EAAEK,EAAEysG,SAAS7pG,EAAElD,EAAErL,KAAK2L,EAAE0sG,GAAG,CAACr4G,KAAK,UAAU6lE,SAASl6D,EAAEk6D,UAAUt3D,EAAE,EAAE,OAAMjD,EAAEu/F,GAAGv/F,EAAEiD,EAAEnD,EAAE,OAAQykF,OAAO,EAAElkF,EAAEikF,OAAOvkF,EAAEC,EAAEskF,OAAOvkF,EAAEM,EAAEykF,QAAQ9kF,EAAED,EAAE8kF,MAAMxkF,EAAE,KAAY,EAAPN,EAAErL,OAASgrG,GAAG3/F,EAAEoG,EAAE0+E,MAAM,KAAK/kF,GAAGC,EAAE8kF,MAAMJ,cAAcmoB,GAAG9sG,GAAGC,EAAE0kF,cAAckoB,GAAU3sG,GAAE,GAAG,KAAY,EAAPD,EAAErL,MAAQ,OAAOu4G,GAAG9mG,EAAEpG,EAAED,EAAE,MAAM,GAAG,OAAOmD,EAAEX,KAAK,CAChd,GADidjC,EAAE4C,EAAEkxF,aAAalxF,EAAEkxF,YAAY+Y,QAC3e,IAAIxtG,EAAEW,EAAE8sG,KAA0C,OAArC9sG,EAAEX,EAA0CutG,GAAG9mG,EAAEpG,EAAED,EAA/BO,EAAEwpG,GAAlB7pG,EAAEuN,MAAMtN,EAAE,MAAaI,OAAE,GAA0B,CAAwB,GAAvBX,EAAE,KAAKI,EAAEqG,EAAEi6F,YAAeI,IAAI9gG,EAAE,CAAK,GAAG,QAAPW,EAAEilG,IAAc,CAAC,OAAOxlG,GAAGA,GAAG,KAAK,EAAEmD,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAE,KAAKA,GAAG5C,EAAE2mF,eAAelnF,IAAI,EAAEmD,IAC5eA,IAAIjD,EAAEi+F,YAAYj+F,EAAEi+F,UAAUh7F,EAAE69F,GAAG36F,EAAElD,GAAG2iG,GAAGvlG,EAAE8F,EAAElD,GAAG,GAAG,CAA0B,OAAzBmqG,KAAgCH,GAAG9mG,EAAEpG,EAAED,EAAlCO,EAAEwpG,GAAGt8F,MAAMtN,EAAE,OAAyB,CAAC,MAAG,OAAOgD,EAAEX,MAAYvC,EAAEwkF,OAAO,IAAIxkF,EAAE8kF,MAAM1+E,EAAE0+E,MAAM9kF,EAAEstG,GAAGpiG,KAAK,KAAK9E,GAAGlD,EAAEqqG,YAAYvtG,EAAE,OAAKoG,EAAEnG,EAAEg+F,YAAYT,GAAG/C,GAAGv3F,EAAEkxF,aAAamJ,GAAGv9F,EAAEy9F,IAAE,EAAGC,GAAG,KAAK,OAAOt3F,IAAI22F,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGC,GAAG92F,EAAE7B,GAAG44F,GAAG/2F,EAAE42D,SAASigC,GAAGj9F,GAAGA,EAAEitG,GAAGjtG,EAAEM,EAAEk6D,UAAUx6D,EAAEwkF,OAAO,KAAYxkF,EAAC,CALrKwtG,CAAGpnG,EAAEpG,EAAED,EAAEO,EAAEX,EAAEuD,EAAEyD,GAAG,GAAG1G,EAAE,CAACA,EAAEK,EAAEysG,SAAShtG,EAAEC,EAAErL,KAAegL,GAAVuD,EAAEkD,EAAE0+E,OAAUC,QAAQ,IAAIthF,EAAE,CAAC9O,KAAK,SAAS6lE,SAASl6D,EAAEk6D,UAChF,OAD0F,KAAO,EAAFz6D,IAAMC,EAAE8kF,QAAQ5hF,IAAG5C,EAAEN,EAAE8kF,OAAQub,WAAW,EAAE//F,EAAE09F,aAAav6F,EAAEzD,EAAE89F,UAAU,OAAOx9F,EAAE6+F,GAAGj8F,EAAEO,IAAKgqG,aAA4B,SAAfvqG,EAAEuqG,aAAuB,OAAO9tG,EAAEM,EAAEk/F,GAAGx/F,EAAEM,IAAIA,EAAEu/F,GAAGv/F,EAAEF,EAAE4G,EAAE,OAAQ69E,OAAO,EAAGvkF,EAAEskF,OACnfvkF,EAAEM,EAAEikF,OAAOvkF,EAAEM,EAAEykF,QAAQ9kF,EAAED,EAAE8kF,MAAMxkF,EAAEA,EAAEL,EAAEA,EAAED,EAAE8kF,MAA8B/kF,EAAE,QAA1BA,EAAEqG,EAAE0+E,MAAMJ,eAAyBmoB,GAAGlmG,GAAG,CAAC+kG,UAAU3rG,EAAE2rG,UAAU/kG,EAAEglG,UAAU,KAAKC,YAAY7rG,EAAE6rG,aAAa3rG,EAAEykF,cAAc3kF,EAAEE,EAAEogG,WAAWj6F,EAAEi6F,YAAY15F,EAAE3G,EAAE0kF,cAAckoB,GAAUtsG,CAAC,CAAoO,OAAzN8F,GAAVnG,EAAEmG,EAAE0+E,OAAUC,QAAQzkF,EAAE6+F,GAAGl/F,EAAE,CAACtL,KAAK,UAAU6lE,SAASl6D,EAAEk6D,WAAW,KAAY,EAAPx6D,EAAErL,QAAU2L,EAAEkgG,MAAM75F,GAAGrG,EAAEikF,OAAOvkF,EAAEM,EAAEykF,QAAQ,KAAK,OAAO3+E,IAAkB,QAAdO,EAAE3G,EAAE89F,YAAoB99F,EAAE89F,UAAU,CAAC13F,GAAGpG,EAAEwkF,OAAO,IAAI79E,EAAE7M,KAAKsM,IAAIpG,EAAE8kF,MAAMxkF,EAAEN,EAAE0kF,cAAc,KAAYpkF,CAAC,CACnd,SAAS2sG,GAAG7mG,EAAEpG,GAA8D,OAA3DA,EAAEgtG,GAAG,CAACr4G,KAAK,UAAU6lE,SAASx6D,GAAGoG,EAAEzR,KAAK,EAAE,OAAQ4vF,OAAOn+E,EAASA,EAAE0+E,MAAM9kF,CAAC,CAAC,SAASktG,GAAG9mG,EAAEpG,EAAE2G,EAAErG,GAAwG,OAArG,OAAOA,GAAGo+F,GAAGp+F,GAAGq/F,GAAG3/F,EAAEoG,EAAE0+E,MAAM,KAAKn+E,IAAGP,EAAE6mG,GAAGjtG,EAAEA,EAAEg+F,aAAaxjC,WAAYgqB,OAAO,EAAExkF,EAAE0kF,cAAc,KAAYt+E,CAAC,CAGkJ,SAASsnG,GAAGtnG,EAAEpG,EAAE2G,GAAGP,EAAEo6F,OAAOxgG,EAAE,IAAIM,EAAE8F,EAAEk+E,UAAU,OAAOhkF,IAAIA,EAAEkgG,OAAOxgG,GAAGogG,GAAGh6F,EAAEm+E,OAAOvkF,EAAE2G,EAAE,CACxc,SAASgnG,GAAGvnG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,IAAIjD,EAAEmG,EAAEs+E,cAAc,OAAOzkF,EAAEmG,EAAEs+E,cAAc,CAACkpB,YAAY5tG,EAAE6tG,UAAU,KAAKC,mBAAmB,EAAEC,KAAKztG,EAAE0tG,KAAKrnG,EAAEsnG,SAAS/qG,IAAIjD,EAAE2tG,YAAY5tG,EAAEC,EAAE4tG,UAAU,KAAK5tG,EAAE6tG,mBAAmB,EAAE7tG,EAAE8tG,KAAKztG,EAAEL,EAAE+tG,KAAKrnG,EAAE1G,EAAEguG,SAAS/qG,EAAE,CAC3O,SAASgrG,GAAG9nG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAEN,EAAEg+F,aAAa96F,EAAE5C,EAAEuiG,YAAY5iG,EAAEK,EAAE0tG,KAAsC,GAAjC/C,GAAG7kG,EAAEpG,EAAEM,EAAEk6D,SAAS7zD,GAAkB,KAAO,GAAtBrG,EAAEqiG,GAAEryG,UAAqBgQ,EAAI,EAAFA,EAAI,EAAEN,EAAEwkF,OAAO,QAAQ,CAAC,GAAG,OAAOp+E,GAAG,KAAa,IAARA,EAAEo+E,OAAWp+E,EAAE,IAAIA,EAAEpG,EAAE8kF,MAAM,OAAO1+E,GAAG,CAAC,GAAG,KAAKA,EAAEo1E,IAAI,OAAOp1E,EAAEs+E,eAAegpB,GAAGtnG,EAAEO,EAAE3G,QAAQ,GAAG,KAAKoG,EAAEo1E,IAAIkyB,GAAGtnG,EAAEO,EAAE3G,QAAQ,GAAG,OAAOoG,EAAE0+E,MAAM,CAAC1+E,EAAE0+E,MAAMP,OAAOn+E,EAAEA,EAAEA,EAAE0+E,MAAM,QAAQ,CAAC,GAAG1+E,IAAIpG,EAAE,MAAMoG,EAAE,KAAK,OAAOA,EAAE2+E,SAAS,CAAC,GAAG,OAAO3+E,EAAEm+E,QAAQn+E,EAAEm+E,SAASvkF,EAAE,MAAMoG,EAAEA,EAAEA,EAAEm+E,MAAM,CAACn+E,EAAE2+E,QAAQR,OAAOn+E,EAAEm+E,OAAOn+E,EAAEA,EAAE2+E,OAAO,CAACzkF,GAAG,CAAC,CAAQ,GAAP+6F,GAAEsH,GAAEriG,GAAM,KAAY,EAAPN,EAAErL,MAAQqL,EAAE0kF,cAC/e,UAAU,OAAOxhF,GAAG,IAAK,WAAqB,IAAVyD,EAAE3G,EAAE8kF,MAAU5hF,EAAE,KAAK,OAAOyD,GAAiB,QAAdP,EAAEO,EAAE29E,YAAoB,OAAOse,GAAGx8F,KAAKlD,EAAEyD,GAAGA,EAAEA,EAAEo+E,QAAY,QAAJp+E,EAAEzD,IAAYA,EAAElD,EAAE8kF,MAAM9kF,EAAE8kF,MAAM,OAAO5hF,EAAEyD,EAAEo+E,QAAQp+E,EAAEo+E,QAAQ,MAAM4oB,GAAG3tG,GAAE,EAAGkD,EAAEyD,EAAE1G,GAAG,MAAM,IAAK,YAA6B,IAAjB0G,EAAE,KAAKzD,EAAElD,EAAE8kF,MAAU9kF,EAAE8kF,MAAM,KAAK,OAAO5hF,GAAG,CAAe,GAAG,QAAjBkD,EAAElD,EAAEohF,YAAuB,OAAOse,GAAGx8F,GAAG,CAACpG,EAAE8kF,MAAM5hF,EAAE,KAAK,CAACkD,EAAElD,EAAE6hF,QAAQ7hF,EAAE6hF,QAAQp+E,EAAEA,EAAEzD,EAAEA,EAAEkD,CAAC,CAACunG,GAAG3tG,GAAE,EAAG2G,EAAE,KAAK1G,GAAG,MAAM,IAAK,WAAW0tG,GAAG3tG,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAE0kF,cAAc,KAAK,OAAO1kF,EAAE8kF,KAAK,CAC7d,SAASmnB,GAAG7lG,EAAEpG,GAAG,KAAY,EAAPA,EAAErL,OAAS,OAAOyR,IAAIA,EAAEk+E,UAAU,KAAKtkF,EAAEskF,UAAU,KAAKtkF,EAAEwkF,OAAO,EAAE,CAAC,SAAS2mB,GAAG/kG,EAAEpG,EAAE2G,GAAyD,GAAtD,OAAOP,IAAIpG,EAAEsgG,aAAal6F,EAAEk6F,cAAc0B,IAAIhiG,EAAEwgG,MAAS,KAAK75F,EAAE3G,EAAEqgG,YAAY,OAAO,KAAK,GAAG,OAAOj6F,GAAGpG,EAAE8kF,QAAQ1+E,EAAE0+E,MAAM,MAAMt3E,MAAMtN,EAAE,MAAM,GAAG,OAAOF,EAAE8kF,MAAM,CAA4C,IAAjCn+E,EAAEw4F,GAAZ/4F,EAAEpG,EAAE8kF,MAAa1+E,EAAE43F,cAAch+F,EAAE8kF,MAAMn+E,EAAMA,EAAE49E,OAAOvkF,EAAE,OAAOoG,EAAE2+E,SAAS3+E,EAAEA,EAAE2+E,SAAQp+E,EAAEA,EAAEo+E,QAAQoa,GAAG/4F,EAAEA,EAAE43F,eAAgBzZ,OAAOvkF,EAAE2G,EAAEo+E,QAAQ,IAAI,CAAC,OAAO/kF,EAAE8kF,KAAK,CAO9a,SAASqpB,GAAG/nG,EAAEpG,GAAG,IAAIy9F,GAAE,OAAOr3F,EAAE6nG,UAAU,IAAK,SAASjuG,EAAEoG,EAAE4nG,KAAK,IAAI,IAAIrnG,EAAE,KAAK,OAAO3G,GAAG,OAAOA,EAAEskF,YAAY39E,EAAE3G,GAAGA,EAAEA,EAAE+kF,QAAQ,OAAOp+E,EAAEP,EAAE4nG,KAAK,KAAKrnG,EAAEo+E,QAAQ,KAAK,MAAM,IAAK,YAAYp+E,EAAEP,EAAE4nG,KAAK,IAAI,IAAI1tG,EAAE,KAAK,OAAOqG,GAAG,OAAOA,EAAE29E,YAAYhkF,EAAEqG,GAAGA,EAAEA,EAAEo+E,QAAQ,OAAOzkF,EAAEN,GAAG,OAAOoG,EAAE4nG,KAAK5nG,EAAE4nG,KAAK,KAAK5nG,EAAE4nG,KAAKjpB,QAAQ,KAAKzkF,EAAEykF,QAAQ,KAAK,CAC5U,SAAS1mB,GAAEj4D,GAAG,IAAIpG,EAAE,OAAOoG,EAAEk+E,WAAWl+E,EAAEk+E,UAAUQ,QAAQ1+E,EAAE0+E,MAAMn+E,EAAE,EAAErG,EAAE,EAAE,GAAGN,EAAE,IAAI,IAAIkD,EAAEkD,EAAE0+E,MAAM,OAAO5hF,GAAGyD,GAAGzD,EAAEs9F,MAAMt9F,EAAEm9F,WAAW//F,GAAkB,SAAf4C,EAAEuqG,aAAsBntG,GAAW,SAAR4C,EAAEshF,MAAethF,EAAEqhF,OAAOn+E,EAAElD,EAAEA,EAAE6hF,aAAa,IAAI7hF,EAAEkD,EAAE0+E,MAAM,OAAO5hF,GAAGyD,GAAGzD,EAAEs9F,MAAMt9F,EAAEm9F,WAAW//F,GAAG4C,EAAEuqG,aAAantG,GAAG4C,EAAEshF,MAAMthF,EAAEqhF,OAAOn+E,EAAElD,EAAEA,EAAE6hF,QAAyC,OAAjC3+E,EAAEqnG,cAAcntG,EAAE8F,EAAEi6F,WAAW15F,EAAS3G,CAAC,CAC7V,SAASouG,GAAGhoG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAEN,EAAEg+F,aAAmB,OAANV,GAAGt9F,GAAUA,EAAEw7E,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAOnd,GAAEr+D,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAO87F,GAAG97F,EAAE1K,OAAO0mG,KAAK39B,GAAEr+D,GAAG,KAVqD,KAAK,EAA2Q,OAAzQM,EAAEN,EAAEmjF,UAAUqf,KAAKpH,GAAEI,IAAIJ,GAAEG,IAAGwH,KAAKziG,EAAEisG,iBAAiBjsG,EAAEiwD,QAAQjwD,EAAEisG,eAAejsG,EAAEisG,eAAe,MAAS,OAAOnmG,GAAG,OAAOA,EAAE0+E,QAAMwZ,GAAGt+F,GAAGA,EAAEwkF,OAAO,EAAE,OAAOp+E,GAAGA,EAAEs+E,cAAc8E,cAAc,KAAa,IAARxpF,EAAEwkF,SAAaxkF,EAAEwkF,OAAO,KAAK,OAAOkZ,KAAK2Q,GAAG3Q,IAAIA,GAAG,QAAO+O,GAAGrmG,EAAEpG,GAAGq+D,GAAEr+D,GAAU,KAAK,KAAK,EAAE0iG,GAAG1iG,GAAG,IAAIkD,EAAEm/F,GAAGD,GAAG9xG,SAC7e,GAATqW,EAAE3G,EAAE1K,KAAQ,OAAO8Q,GAAG,MAAMpG,EAAEmjF,UAAUupB,GAAGtmG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAGkD,EAAE9S,MAAM0M,EAAE1M,MAAM0M,EAAEwkF,OAAO,IAAIxkF,EAAEwkF,OAAO,aAAa,CAAC,IAAIlkF,EAAE,CAAC,GAAG,OAAON,EAAEmjF,UAAU,MAAM31E,MAAMtN,EAAE,MAAW,OAALm+D,GAAEr+D,GAAU,IAAI,CAAkB,GAAjBoG,EAAEi8F,GAAGH,GAAG5xG,SAAYguG,GAAGt+F,GAAG,CAACM,EAAEN,EAAEmjF,UAAUx8E,EAAE3G,EAAE1K,KAAK,IAAI2K,EAAED,EAAEu+F,cAA+C,OAAjCj+F,EAAEu6F,IAAI76F,EAAEM,EAAEw6F,IAAI76F,EAAEmG,EAAE,KAAY,EAAPpG,EAAErL,MAAegS,GAAG,IAAK,SAASmxF,GAAE,SAASx3F,GAAGw3F,GAAE,QAAQx3F,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQw3F,GAAE,OAAOx3F,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI4C,EAAE,EAAEA,EAAEu0F,GAAG5lG,OAAOqR,IAAI40F,GAAEL,GAAGv0F,GAAG5C,GAAG,MAAM,IAAK,SAASw3F,GAAE,QAAQx3F,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOw3F,GAAE,QACnhBx3F,GAAGw3F,GAAE,OAAOx3F,GAAG,MAAM,IAAK,UAAUw3F,GAAE,SAASx3F,GAAG,MAAM,IAAK,QAAQ48E,EAAG58E,EAAEL,GAAG63F,GAAE,UAAUx3F,GAAG,MAAM,IAAK,SAASA,EAAE08E,cAAc,CAACsxB,cAAcruG,EAAEsuG,UAAUzW,GAAE,UAAUx3F,GAAG,MAAM,IAAK,WAAWy9E,GAAGz9E,EAAEL,GAAG63F,GAAE,UAAUx3F,GAAkB,IAAI,IAAIP,KAAvByiF,GAAG77E,EAAE1G,GAAGiD,EAAE,KAAkBjD,EAAE,GAAGA,EAAEpH,eAAekH,GAAG,CAAC,IAAIJ,EAAEM,EAAEF,GAAG,aAAaA,EAAE,kBAAkBJ,EAAEW,EAAE8jC,cAAczkC,KAAI,IAAKM,EAAEuuG,0BAA0BjV,GAAGj5F,EAAE8jC,YAAYzkC,EAAEyG,GAAGlD,EAAE,CAAC,WAAWvD,IAAI,kBAAkBA,GAAGW,EAAE8jC,cAAc,GAAGzkC,KAAI,IAAKM,EAAEuuG,0BAA0BjV,GAAGj5F,EAAE8jC,YAC1ezkC,EAAEyG,GAAGlD,EAAE,CAAC,WAAW,GAAGvD,IAAI04E,EAAGx/E,eAAekH,IAAI,MAAMJ,GAAG,aAAaI,GAAG+3F,GAAE,SAASx3F,EAAE,CAAC,OAAOqG,GAAG,IAAK,QAAQu1E,EAAG57E,GAAGi9E,EAAGj9E,EAAEL,GAAE,GAAI,MAAM,IAAK,WAAWi8E,EAAG57E,GAAG29E,GAAG39E,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBL,EAAEwuG,UAAUnuG,EAAEouG,QAAQlV,IAAIl5F,EAAE4C,EAAElD,EAAEkhG,YAAY5gG,EAAE,OAAOA,IAAIN,EAAEwkF,OAAO,EAAE,KAAK,CAACzkF,EAAE,IAAImD,EAAE27E,SAAS37E,EAAEA,EAAEs6E,cAAc,iCAAiCp3E,IAAIA,EAAE83E,GAAGv3E,IAAI,iCAAiCP,EAAE,WAAWO,IAAGP,EAAErG,EAAE1M,cAAc,QAASkrF,UAAU,qBAAuBn4E,EAAEA,EAAE6hC,YAAY7hC,EAAEq4E,aAC/f,kBAAkBn+E,EAAEgqB,GAAGlkB,EAAErG,EAAE1M,cAAcsT,EAAE,CAAC2jB,GAAGhqB,EAAEgqB,MAAMlkB,EAAErG,EAAE1M,cAAcsT,GAAG,WAAWA,IAAI5G,EAAEqG,EAAE9F,EAAEiuG,SAASxuG,EAAEwuG,UAAS,EAAGjuG,EAAEiiC,OAAOxiC,EAAEwiC,KAAKjiC,EAAEiiC,QAAQn8B,EAAErG,EAAE6B,gBAAgBwE,EAAEO,GAAGP,EAAEy0F,IAAI76F,EAAEoG,EAAE00F,IAAIx6F,EAAEksG,GAAGpmG,EAAEpG,GAAE,GAAG,GAAIA,EAAEmjF,UAAU/8E,EAAEA,EAAE,CAAW,OAAVrG,EAAE0iF,GAAG97E,EAAErG,GAAUqG,GAAG,IAAK,SAASmxF,GAAE,SAAS1xF,GAAG0xF,GAAE,QAAQ1xF,GAAGlD,EAAE5C,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQw3F,GAAE,OAAO1xF,GAAGlD,EAAE5C,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI4C,EAAE,EAAEA,EAAEu0F,GAAG5lG,OAAOqR,IAAI40F,GAAEL,GAAGv0F,GAAGkD,GAAGlD,EAAE5C,EAAE,MAAM,IAAK,SAASw3F,GAAE,QAAQ1xF,GAAGlD,EAAE5C,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOw3F,GAAE,QAClf1xF,GAAG0xF,GAAE,OAAO1xF,GAAGlD,EAAE5C,EAAE,MAAM,IAAK,UAAUw3F,GAAE,SAAS1xF,GAAGlD,EAAE5C,EAAE,MAAM,IAAK,QAAQ48E,EAAG92E,EAAE9F,GAAG4C,EAAE25E,EAAGz2E,EAAE9F,GAAGw3F,GAAE,UAAU1xF,GAAG,MAAM,IAAK,SAAiL,QAAQlD,EAAE5C,QAAxK,IAAK,SAAS8F,EAAE42E,cAAc,CAACsxB,cAAchuG,EAAEiuG,UAAUrrG,EAAE0U,EAAE,CAAC,EAAEtX,EAAE,CAAC1P,WAAM,IAASknG,GAAE,UAAU1xF,GAAG,MAAM,IAAK,WAAW23E,GAAG33E,EAAE9F,GAAG4C,EAAE26E,GAAGz3E,EAAE9F,GAAGw3F,GAAE,UAAU1xF,GAAiC,IAAInG,KAAhBuiF,GAAG77E,EAAEzD,GAAGvD,EAAEuD,EAAa,GAAGvD,EAAE9G,eAAeoH,GAAG,CAAC,IAAIwD,EAAE9D,EAAEM,GAAG,UAAUA,EAAEuhF,GAAGp7E,EAAE3C,GAAG,4BAA4BxD,EAAuB,OAApBwD,EAAEA,EAAEA,EAAEm2F,YAAO,IAAgBvb,GAAGj4E,EAAE3C,GAAI,aAAaxD,EAAE,kBAAkBwD,GAAG,aAC7ekD,GAAG,KAAKlD,IAAI2H,GAAGhF,EAAE3C,GAAG,kBAAkBA,GAAG2H,GAAGhF,EAAE,GAAG3C,GAAG,mCAAmCxD,GAAG,6BAA6BA,GAAG,cAAcA,IAAIo4E,EAAGx/E,eAAeoH,GAAG,MAAMwD,GAAG,aAAaxD,GAAG63F,GAAE,SAAS1xF,GAAG,MAAM3C,GAAG41E,EAAGjzE,EAAEnG,EAAEwD,EAAE1D,GAAG,CAAC,OAAO4G,GAAG,IAAK,QAAQu1E,EAAG91E,GAAGm3E,EAAGn3E,EAAE9F,GAAE,GAAI,MAAM,IAAK,WAAW47E,EAAG91E,GAAG63E,GAAG73E,GAAG,MAAM,IAAK,SAAS,MAAM9F,EAAE1P,OAAOwV,EAAEsQ,aAAa,QAAQ,GAAGqlE,EAAGz7E,EAAE1P,QAAQ,MAAM,IAAK,SAASwV,EAAEmoG,WAAWjuG,EAAEiuG,SAAmB,OAAVtuG,EAAEK,EAAE1P,OAAcwxD,GAAGh8C,IAAI9F,EAAEiuG,SAAStuG,GAAE,GAAI,MAAMK,EAAEy8E,cAAc36B,GAAGh8C,IAAI9F,EAAEiuG,SAASjuG,EAAEy8E,cAClf,GAAI,MAAM,QAAQ,oBAAoB75E,EAAEurG,UAAUroG,EAAEsoG,QAAQlV,IAAI,OAAO7yF,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWrG,IAAIA,EAAEquG,UAAU,MAAMvoG,EAAE,IAAK,MAAM9F,GAAE,EAAG,MAAM8F,EAAE,QAAQ9F,GAAE,EAAG,CAACA,IAAIN,EAAEwkF,OAAO,EAAE,CAAC,OAAOxkF,EAAE1M,MAAM0M,EAAEwkF,OAAO,IAAIxkF,EAAEwkF,OAAO,QAAQ,CAAM,OAALnmB,GAAEr+D,GAAU,KAAK,KAAK,EAAE,GAAGoG,GAAG,MAAMpG,EAAEmjF,UAAUwpB,GAAGvmG,EAAEpG,EAAEoG,EAAEm4F,cAAcj+F,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAON,EAAEmjF,UAAU,MAAM31E,MAAMtN,EAAE,MAAsC,GAAhCyG,EAAE07F,GAAGD,GAAG9xG,SAAS+xG,GAAGH,GAAG5xG,SAAYguG,GAAGt+F,GAAG,CAAyC,GAAxCM,EAAEN,EAAEmjF,UAAUx8E,EAAE3G,EAAEu+F,cAAcj+F,EAAEu6F,IAAI76F,GAAKC,EAAEK,EAAEw+E,YAAYn4E,IAC/e,QADofP,EACvfm3F,IAAY,OAAOn3F,EAAEo1E,KAAK,KAAK,EAAE+d,GAAGj5F,EAAEw+E,UAAUn4E,EAAE,KAAY,EAAPP,EAAEzR,OAAS,MAAM,KAAK,GAAE,IAAKyR,EAAEm4F,cAAciQ,0BAA0BjV,GAAGj5F,EAAEw+E,UAAUn4E,EAAE,KAAY,EAAPP,EAAEzR,OAASsL,IAAID,EAAEwkF,OAAO,EAAE,MAAMlkF,GAAG,IAAIqG,EAAEk4E,SAASl4E,EAAEA,EAAE62E,eAAeoxB,eAAetuG,IAAKu6F,IAAI76F,EAAEA,EAAEmjF,UAAU7iF,CAAC,CAAM,OAAL+9D,GAAEr+D,GAAU,KAAK,KAAK,GAA0B,GAAvBo7F,GAAEuH,IAAGriG,EAAEN,EAAE0kF,cAAiB,OAAOt+E,GAAG,OAAOA,EAAEs+E,eAAe,OAAOt+E,EAAEs+E,cAAcC,WAAW,CAAC,GAAG8Y,IAAG,OAAOD,IAAI,KAAY,EAAPx9F,EAAErL,OAAS,KAAa,IAARqL,EAAEwkF,OAAWga,KAAKC,KAAKz+F,EAAEwkF,OAAO,MAAMvkF,GAAE,OAAQ,GAAGA,EAAEq+F,GAAGt+F,GAAG,OAAOM,GAAG,OAAOA,EAAEqkF,WAAW,CAAC,GAAG,OAC5fv+E,EAAE,CAAC,IAAInG,EAAE,MAAMuN,MAAMtN,EAAE,MAAqD,KAA7BD,EAAE,QAApBA,EAAED,EAAE0kF,eAAyBzkF,EAAE0kF,WAAW,MAAW,MAAMn3E,MAAMtN,EAAE,MAAMD,EAAE46F,IAAI76F,CAAC,MAAMy+F,KAAK,KAAa,IAARz+F,EAAEwkF,SAAaxkF,EAAE0kF,cAAc,MAAM1kF,EAAEwkF,OAAO,EAAEnmB,GAAEr+D,GAAGC,GAAE,CAAE,MAAM,OAAOy9F,KAAK2Q,GAAG3Q,IAAIA,GAAG,MAAMz9F,GAAE,EAAG,IAAIA,EAAE,OAAe,MAARD,EAAEwkF,MAAYxkF,EAAE,IAAI,CAAC,OAAG,KAAa,IAARA,EAAEwkF,QAAkBxkF,EAAEwgG,MAAM75F,EAAE3G,KAAEM,EAAE,OAAOA,MAAO,OAAO8F,GAAG,OAAOA,EAAEs+E,gBAAgBpkF,IAAIN,EAAE8kF,MAAMN,OAAO,KAAK,KAAY,EAAPxkF,EAAErL,QAAU,OAAOyR,GAAG,KAAe,EAAVu8F,GAAEryG,SAAW,IAAIu+G,KAAIA,GAAE,GAAGxB,OAAO,OAAOrtG,EAAEkhG,cAAclhG,EAAEwkF,OAAO,GAAGnmB,GAAEr+D,GAAU,MAAK,KAAK,EAAE,OAAOwiG,KACrfiK,GAAGrmG,EAAEpG,GAAG,OAAOoG,GAAG+xF,GAAGn4F,EAAEmjF,UAAUsG,eAAeprB,GAAEr+D,GAAG,KAAK,KAAK,GAAG,OAAOkgG,GAAGlgG,EAAE1K,KAAKqmF,UAAUtd,GAAEr+D,GAAG,KAA+C,KAAK,GAA0B,GAAvBo7F,GAAEuH,IAAwB,QAArB1iG,EAAED,EAAE0kF,eAA0B,OAAOrmB,GAAEr+D,GAAG,KAAuC,GAAlCM,EAAE,KAAa,IAARN,EAAEwkF,OAA4B,QAAjBzkF,EAAEE,EAAE4tG,WAAsB,GAAGvtG,EAAE6tG,GAAGluG,GAAE,OAAQ,CAAC,GAAG,IAAI4uG,IAAG,OAAOzoG,GAAG,KAAa,IAARA,EAAEo+E,OAAW,IAAIp+E,EAAEpG,EAAE8kF,MAAM,OAAO1+E,GAAG,CAAS,GAAG,QAAXrG,EAAE6iG,GAAGx8F,IAAe,CAAmG,IAAlGpG,EAAEwkF,OAAO,IAAI2pB,GAAGluG,GAAE,GAAoB,QAAhBK,EAAEP,EAAEmhG,eAAuBlhG,EAAEkhG,YAAY5gG,EAAEN,EAAEwkF,OAAO,GAAGxkF,EAAEytG,aAAa,EAAEntG,EAAEqG,EAAMA,EAAE3G,EAAE8kF,MAAM,OAAOn+E,GAAOP,EAAE9F,GAANL,EAAE0G,GAAQ69E,OAAO,SAC/d,QAAdzkF,EAAEE,EAAEqkF,YAAoBrkF,EAAEogG,WAAW,EAAEpgG,EAAEugG,MAAMp6F,EAAEnG,EAAE6kF,MAAM,KAAK7kF,EAAEwtG,aAAa,EAAExtG,EAAEs+F,cAAc,KAAKt+F,EAAEykF,cAAc,KAAKzkF,EAAEihG,YAAY,KAAKjhG,EAAEqgG,aAAa,KAAKrgG,EAAEkjF,UAAU,OAAOljF,EAAEogG,WAAWtgG,EAAEsgG,WAAWpgG,EAAEugG,MAAMzgG,EAAEygG,MAAMvgG,EAAE6kF,MAAM/kF,EAAE+kF,MAAM7kF,EAAEwtG,aAAa,EAAExtG,EAAE69F,UAAU,KAAK79F,EAAEs+F,cAAcx+F,EAAEw+F,cAAct+F,EAAEykF,cAAc3kF,EAAE2kF,cAAczkF,EAAEihG,YAAYnhG,EAAEmhG,YAAYjhG,EAAE3K,KAAKyK,EAAEzK,KAAK8Q,EAAErG,EAAEugG,aAAargG,EAAEqgG,aAAa,OAAOl6F,EAAE,KAAK,CAACo6F,MAAMp6F,EAAEo6F,MAAMD,aAAan6F,EAAEm6F,eAAe55F,EAAEA,EAAEo+E,QAA2B,OAAnBsW,GAAEsH,GAAY,EAAVA,GAAEryG,QAAU,GAAU0P,EAAE8kF,KAAK,CAAC1+E,EAClgBA,EAAE2+E,OAAO,CAAC,OAAO9kF,EAAE+tG,MAAMj2F,KAAI+2F,KAAK9uG,EAAEwkF,OAAO,IAAIlkF,GAAE,EAAG6tG,GAAGluG,GAAE,GAAID,EAAEwgG,MAAM,QAAQ,KAAK,CAAC,IAAIlgG,EAAE,GAAW,QAAR8F,EAAEw8F,GAAG7iG,KAAa,GAAGC,EAAEwkF,OAAO,IAAIlkF,GAAE,EAAmB,QAAhBqG,EAAEP,EAAE86F,eAAuBlhG,EAAEkhG,YAAYv6F,EAAE3G,EAAEwkF,OAAO,GAAG2pB,GAAGluG,GAAE,GAAI,OAAOA,EAAE+tG,MAAM,WAAW/tG,EAAEguG,WAAWluG,EAAEukF,YAAYmZ,GAAE,OAAOp/B,GAAEr+D,GAAG,UAAU,EAAE+X,KAAI9X,EAAE6tG,mBAAmBgB,IAAI,aAAanoG,IAAI3G,EAAEwkF,OAAO,IAAIlkF,GAAE,EAAG6tG,GAAGluG,GAAE,GAAID,EAAEwgG,MAAM,SAASvgG,EAAE2tG,aAAa7tG,EAAEglF,QAAQ/kF,EAAE8kF,MAAM9kF,EAAE8kF,MAAM/kF,IAAa,QAAT4G,EAAE1G,EAAE8tG,MAAcpnG,EAAEo+E,QAAQhlF,EAAEC,EAAE8kF,MAAM/kF,EAAEE,EAAE8tG,KAAKhuG,EAAE,CAAC,OAAG,OAAOE,EAAE+tG,MAAYhuG,EAAEC,EAAE+tG,KAAK/tG,EAAE4tG,UAC9e7tG,EAAEC,EAAE+tG,KAAKhuG,EAAE+kF,QAAQ9kF,EAAE6tG,mBAAmB/1F,KAAI/X,EAAE+kF,QAAQ,KAAKp+E,EAAEg8F,GAAEryG,QAAQ+qG,GAAEsH,GAAEriG,EAAI,EAAFqG,EAAI,EAAI,EAAFA,GAAK3G,IAAEq+D,GAAEr+D,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAO+uG,KAAKzuG,EAAE,OAAON,EAAE0kF,cAAc,OAAOt+E,GAAG,OAAOA,EAAEs+E,gBAAgBpkF,IAAIN,EAAEwkF,OAAO,MAAMlkF,GAAG,KAAY,EAAPN,EAAErL,MAAQ,KAAQ,WAAHm3G,MAAiBztC,GAAEr+D,GAAkB,EAAfA,EAAEytG,eAAiBztG,EAAEwkF,OAAO,OAAOnmB,GAAEr+D,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMwN,MAAMtN,EAAE,IAAIF,EAAEw7E,KAAM,CAClX,SAASwzB,GAAG5oG,EAAEpG,GAAS,OAANs9F,GAAGt9F,GAAUA,EAAEw7E,KAAK,KAAK,EAAE,OAAOsgB,GAAG97F,EAAE1K,OAAO0mG,KAAiB,OAAZ51F,EAAEpG,EAAEwkF,QAAexkF,EAAEwkF,OAAS,MAAHp+E,EAAS,IAAIpG,GAAG,KAAK,KAAK,EAAE,OAAOwiG,KAAKpH,GAAEI,IAAIJ,GAAEG,IAAGwH,KAAe,KAAO,OAAjB38F,EAAEpG,EAAEwkF,SAAqB,KAAO,IAAFp+E,IAAQpG,EAAEwkF,OAAS,MAAHp+E,EAAS,IAAIpG,GAAG,KAAK,KAAK,EAAE,OAAO0iG,GAAG1iG,GAAG,KAAK,KAAK,GAA0B,GAAvBo7F,GAAEuH,IAAwB,QAArBv8F,EAAEpG,EAAE0kF,gBAA2B,OAAOt+E,EAAEu+E,WAAW,CAAC,GAAG,OAAO3kF,EAAEskF,UAAU,MAAM92E,MAAMtN,EAAE,MAAMu+F,IAAI,CAAW,OAAS,OAAnBr4F,EAAEpG,EAAEwkF,QAAsBxkF,EAAEwkF,OAAS,MAAHp+E,EAAS,IAAIpG,GAAG,KAAK,KAAK,GAAG,OAAOo7F,GAAEuH,IAAG,KAAK,KAAK,EAAE,OAAOH,KAAK,KAAK,KAAK,GAAG,OAAOtC,GAAGlgG,EAAE1K,KAAKqmF,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOozB,KAC1gB,KAAyB,QAAQ,OAAO,KAAK,CArB7CvC,GAAG,SAASpmG,EAAEpG,GAAG,IAAI,IAAI2G,EAAE3G,EAAE8kF,MAAM,OAAOn+E,GAAG,CAAC,GAAG,IAAIA,EAAE60E,KAAK,IAAI70E,EAAE60E,IAAIp1E,EAAEmG,YAAY5F,EAAEw8E,gBAAgB,GAAG,IAAIx8E,EAAE60E,KAAK,OAAO70E,EAAEm+E,MAAM,CAACn+E,EAAEm+E,MAAMP,OAAO59E,EAAEA,EAAEA,EAAEm+E,MAAM,QAAQ,CAAC,GAAGn+E,IAAI3G,EAAE,MAAM,KAAK,OAAO2G,EAAEo+E,SAAS,CAAC,GAAG,OAAOp+E,EAAE49E,QAAQ59E,EAAE49E,SAASvkF,EAAE,OAAO2G,EAAEA,EAAE49E,MAAM,CAAC59E,EAAEo+E,QAAQR,OAAO59E,EAAE49E,OAAO59E,EAAEA,EAAEo+E,OAAO,CAAC,EAAE0nB,GAAG,WAAW,EACxTC,GAAG,SAAStmG,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAEkD,EAAEm4F,cAAc,GAAGr7F,IAAI5C,EAAE,CAAC8F,EAAEpG,EAAEmjF,UAAUkf,GAAGH,GAAG5xG,SAAS,IAA4RyP,EAAxRE,EAAE,KAAK,OAAO0G,GAAG,IAAK,QAAQzD,EAAE25E,EAAGz2E,EAAElD,GAAG5C,EAAEu8E,EAAGz2E,EAAE9F,GAAGL,EAAE,GAAG,MAAM,IAAK,SAASiD,EAAE0U,EAAE,CAAC,EAAE1U,EAAE,CAACtS,WAAM,IAAS0P,EAAEsX,EAAE,CAAC,EAAEtX,EAAE,CAAC1P,WAAM,IAASqP,EAAE,GAAG,MAAM,IAAK,WAAWiD,EAAE26E,GAAGz3E,EAAElD,GAAG5C,EAAEu9E,GAAGz3E,EAAE9F,GAAGL,EAAE,GAAG,MAAM,QAAQ,oBAAoBiD,EAAEurG,SAAS,oBAAoBnuG,EAAEmuG,UAAUroG,EAAEsoG,QAAQlV,IAAyB,IAAIpsE,KAAzBo1D,GAAG77E,EAAErG,GAASqG,EAAE,KAAczD,EAAE,IAAI5C,EAAEzH,eAAeu0B,IAAIlqB,EAAErK,eAAeu0B,IAAI,MAAMlqB,EAAEkqB,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAIztB,EAAEuD,EAAEkqB,GAAG,IAAIrtB,KAAKJ,EAAEA,EAAE9G,eAAekH,KACjf4G,IAAIA,EAAE,CAAC,GAAGA,EAAE5G,GAAG,GAAG,KAAK,4BAA4BqtB,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIirD,EAAGx/E,eAAeu0B,GAAGntB,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAInG,KAAKszB,EAAE,OAAO,IAAIA,KAAK9sB,EAAE,CAAC,IAAImD,EAAEnD,EAAE8sB,GAAyB,GAAtBztB,EAAE,MAAMuD,EAAEA,EAAEkqB,QAAG,EAAU9sB,EAAEzH,eAAeu0B,IAAI3pB,IAAI9D,IAAI,MAAM8D,GAAG,MAAM9D,GAAG,GAAG,UAAUytB,EAAE,GAAGztB,EAAE,CAAC,IAAII,KAAKJ,GAAGA,EAAE9G,eAAekH,IAAI0D,GAAGA,EAAE5K,eAAekH,KAAK4G,IAAIA,EAAE,CAAC,GAAGA,EAAE5G,GAAG,IAAI,IAAIA,KAAK0D,EAAEA,EAAE5K,eAAekH,IAAIJ,EAAEI,KAAK0D,EAAE1D,KAAK4G,IAAIA,EAAE,CAAC,GAAGA,EAAE5G,GAAG0D,EAAE1D,GAAG,MAAM4G,IAAI1G,IAAIA,EAAE,IAAIA,EAAEnG,KAAKszB,EACpfzmB,IAAIA,EAAElD,MAAM,4BAA4B2pB,GAAG3pB,EAAEA,EAAEA,EAAEm2F,YAAO,EAAOj6F,EAAEA,EAAEA,EAAEi6F,YAAO,EAAO,MAAMn2F,GAAG9D,IAAI8D,IAAIxD,EAAEA,GAAG,IAAInG,KAAKszB,EAAE3pB,IAAI,aAAa2pB,EAAE,kBAAkB3pB,GAAG,kBAAkBA,IAAIxD,EAAEA,GAAG,IAAInG,KAAKszB,EAAE,GAAG3pB,GAAG,mCAAmC2pB,GAAG,6BAA6BA,IAAIirD,EAAGx/E,eAAeu0B,IAAI,MAAM3pB,GAAG,aAAa2pB,GAAG0qE,GAAE,SAAS1xF,GAAGnG,GAAGN,IAAI8D,IAAIxD,EAAE,MAAMA,EAAEA,GAAG,IAAInG,KAAKszB,EAAE3pB,GAAG,CAACkD,IAAI1G,EAAEA,GAAG,IAAInG,KAAK,QAAQ6M,GAAG,IAAIymB,EAAEntB,GAAKD,EAAEkhG,YAAY9zE,KAAEptB,EAAEwkF,OAAO,EAAC,CAAC,EAAEmoB,GAAG,SAASvmG,EAAEpG,EAAE2G,EAAErG,GAAGqG,IAAIrG,IAAIN,EAAEwkF,OAAO,EAAE,EAkBlb,IAAIyqB,IAAG,EAAGC,IAAE,EAAGC,GAAG,oBAAoBC,QAAQA,QAAQh3B,IAAIi3B,GAAE,KAAK,SAASC,GAAGlpG,EAAEpG,GAAG,IAAI2G,EAAEP,EAAE9S,IAAI,GAAG,OAAOqT,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAMrG,GAAGivG,GAAEnpG,EAAEpG,EAAEM,EAAE,MAAMqG,EAAErW,QAAQ,IAAI,CAAC,SAASk/G,GAAGppG,EAAEpG,EAAE2G,GAAG,IAAIA,GAAG,CAAC,MAAMrG,GAAGivG,GAAEnpG,EAAEpG,EAAEM,EAAE,CAAC,CAAC,IAAImvG,IAAG,EAIxR,SAASC,GAAGtpG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAEN,EAAEkhG,YAAyC,GAAG,QAAhC5gG,EAAE,OAAOA,EAAEA,EAAEmlG,WAAW,MAAiB,CAAC,IAAIviG,EAAE5C,EAAEA,EAAEm/F,KAAK,EAAE,CAAC,IAAIv8F,EAAEs4E,IAAIp1E,KAAKA,EAAE,CAAC,IAAInG,EAAEiD,EAAE1R,QAAQ0R,EAAE1R,aAAQ,OAAO,IAASyO,GAAGuvG,GAAGxvG,EAAE2G,EAAE1G,EAAE,CAACiD,EAAEA,EAAEu8F,IAAI,OAAOv8F,IAAI5C,EAAE,CAAC,CAAC,SAASqvG,GAAGvpG,EAAEpG,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAEkhG,aAAuBlhG,EAAEylG,WAAW,MAAiB,CAAC,IAAI9+F,EAAE3G,EAAEA,EAAEy/F,KAAK,EAAE,CAAC,IAAI94F,EAAE60E,IAAIp1E,KAAKA,EAAE,CAAC,IAAI9F,EAAEqG,EAAEq/F,OAAOr/F,EAAEnV,QAAQ8O,GAAG,CAACqG,EAAEA,EAAE84F,IAAI,OAAO94F,IAAI3G,EAAE,CAAC,CAAC,SAAS4vG,GAAGxpG,GAAG,IAAIpG,EAAEoG,EAAE9S,IAAI,GAAG,OAAO0M,EAAE,CAAC,IAAI2G,EAAEP,EAAE+8E,UAAiB/8E,EAAEo1E,IAA8Bp1E,EAAEO,EAAE,oBAAoB3G,EAAEA,EAAEoG,GAAGpG,EAAE1P,QAAQ8V,CAAC,CAAC,CAClf,SAASypG,GAAGzpG,GAAG,IAAIpG,EAAEoG,EAAEk+E,UAAU,OAAOtkF,IAAIoG,EAAEk+E,UAAU,KAAKurB,GAAG7vG,IAAIoG,EAAE0+E,MAAM,KAAK1+E,EAAE03F,UAAU,KAAK13F,EAAE2+E,QAAQ,KAAK,IAAI3+E,EAAEo1E,MAAoB,QAAdx7E,EAAEoG,EAAE+8E,oBAA4BnjF,EAAE66F,WAAW76F,EAAE86F,WAAW96F,EAAEq6C,WAAWr6C,EAAE+6F,WAAW/6F,EAAEg7F,MAAM50F,EAAE+8E,UAAU,KAAK/8E,EAAEm+E,OAAO,KAAKn+E,EAAEk6F,aAAa,KAAKl6F,EAAEm4F,cAAc,KAAKn4F,EAAEs+E,cAAc,KAAKt+E,EAAE43F,aAAa,KAAK53F,EAAE+8E,UAAU,KAAK/8E,EAAE86F,YAAY,IAAI,CAAC,SAAS4O,GAAG1pG,GAAG,OAAO,IAAIA,EAAEo1E,KAAK,IAAIp1E,EAAEo1E,KAAK,IAAIp1E,EAAEo1E,GAAG,CACna,SAASu0B,GAAG3pG,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAE2+E,SAAS,CAAC,GAAG,OAAO3+E,EAAEm+E,QAAQurB,GAAG1pG,EAAEm+E,QAAQ,OAAO,KAAKn+E,EAAEA,EAAEm+E,MAAM,CAA2B,IAA1Bn+E,EAAE2+E,QAAQR,OAAOn+E,EAAEm+E,OAAWn+E,EAAEA,EAAE2+E,QAAQ,IAAI3+E,EAAEo1E,KAAK,IAAIp1E,EAAEo1E,KAAK,KAAKp1E,EAAEo1E,KAAK,CAAC,GAAW,EAARp1E,EAAEo+E,MAAQ,SAASp+E,EAAE,GAAG,OAAOA,EAAE0+E,OAAO,IAAI1+E,EAAEo1E,IAAI,SAASp1E,EAAOA,EAAE0+E,MAAMP,OAAOn+E,EAAEA,EAAEA,EAAE0+E,KAAK,CAAC,KAAa,EAAR1+E,EAAEo+E,OAAS,OAAOp+E,EAAE+8E,SAAS,CAAC,CACzT,SAAS6sB,GAAG5pG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE8F,EAAEo1E,IAAI,GAAG,IAAIl7E,GAAG,IAAIA,EAAE8F,EAAEA,EAAE+8E,UAAUnjF,EAAE,IAAI2G,EAAEk4E,SAASl4E,EAAEq8B,WAAW8oB,aAAa1lD,EAAEpG,GAAG2G,EAAEmlD,aAAa1lD,EAAEpG,IAAI,IAAI2G,EAAEk4E,UAAU7+E,EAAE2G,EAAEq8B,YAAa8oB,aAAa1lD,EAAEO,IAAK3G,EAAE2G,GAAI4F,YAAYnG,GAA4B,QAAxBO,EAAEA,EAAEspG,2BAA8B,IAAStpG,GAAG,OAAO3G,EAAE0uG,UAAU1uG,EAAE0uG,QAAQlV,UAAU,GAAG,IAAIl5F,GAAc,QAAV8F,EAAEA,EAAE0+E,OAAgB,IAAIkrB,GAAG5pG,EAAEpG,EAAE2G,GAAGP,EAAEA,EAAE2+E,QAAQ,OAAO3+E,GAAG4pG,GAAG5pG,EAAEpG,EAAE2G,GAAGP,EAAEA,EAAE2+E,OAAO,CAC1X,SAASmrB,GAAG9pG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE8F,EAAEo1E,IAAI,GAAG,IAAIl7E,GAAG,IAAIA,EAAE8F,EAAEA,EAAE+8E,UAAUnjF,EAAE2G,EAAEmlD,aAAa1lD,EAAEpG,GAAG2G,EAAE4F,YAAYnG,QAAQ,GAAG,IAAI9F,GAAc,QAAV8F,EAAEA,EAAE0+E,OAAgB,IAAIorB,GAAG9pG,EAAEpG,EAAE2G,GAAGP,EAAEA,EAAE2+E,QAAQ,OAAO3+E,GAAG8pG,GAAG9pG,EAAEpG,EAAE2G,GAAGP,EAAEA,EAAE2+E,OAAO,CAAC,IAAIorB,GAAE,KAAKC,IAAG,EAAG,SAASC,GAAGjqG,EAAEpG,EAAE2G,GAAG,IAAIA,EAAEA,EAAEm+E,MAAM,OAAOn+E,GAAG2pG,GAAGlqG,EAAEpG,EAAE2G,GAAGA,EAAEA,EAAEo+E,OAAO,CACnR,SAASurB,GAAGlqG,EAAEpG,EAAE2G,GAAG,GAAGyzC,IAAI,oBAAoBA,GAAGm2D,qBAAqB,IAAIn2D,GAAGm2D,qBAAqBjqB,GAAG3/E,EAAE,CAAC,MAAMhH,GAAG,CAAC,OAAOgH,EAAE60E,KAAK,KAAK,EAAE0zB,IAAGI,GAAG3oG,EAAE3G,GAAG,KAAK,EAAE,IAAIM,EAAE6vG,GAAEjtG,EAAEktG,GAAGD,GAAE,KAAKE,GAAGjqG,EAAEpG,EAAE2G,GAAOypG,GAAGltG,EAAE,QAATitG,GAAE7vG,KAAkB8vG,IAAIhqG,EAAE+pG,GAAExpG,EAAEA,EAAEw8E,UAAU,IAAI/8E,EAAEy4E,SAASz4E,EAAE48B,WAAWiF,YAAYthC,GAAGP,EAAE6hC,YAAYthC,IAAIwpG,GAAEloE,YAAYthC,EAAEw8E,YAAY,MAAM,KAAK,GAAG,OAAOgtB,KAAIC,IAAIhqG,EAAE+pG,GAAExpG,EAAEA,EAAEw8E,UAAU,IAAI/8E,EAAEy4E,SAAS2b,GAAGp0F,EAAE48B,WAAWr8B,GAAG,IAAIP,EAAEy4E,UAAU2b,GAAGp0F,EAAEO,GAAGqjF,GAAG5jF,IAAIo0F,GAAG2V,GAAExpG,EAAEw8E,YAAY,MAAM,KAAK,EAAE7iF,EAAE6vG,GAAEjtG,EAAEktG,GAAGD,GAAExpG,EAAEw8E,UAAUsG,cAAc2mB,IAAG,EAClfC,GAAGjqG,EAAEpG,EAAE2G,GAAGwpG,GAAE7vG,EAAE8vG,GAAGltG,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIgsG,KAAoB,QAAhB5uG,EAAEqG,EAAEu6F,cAAsC,QAAf5gG,EAAEA,EAAEmlG,aAAsB,CAACviG,EAAE5C,EAAEA,EAAEm/F,KAAK,EAAE,CAAC,IAAIx/F,EAAEiD,EAAEnD,EAAEE,EAAEzO,QAAQyO,EAAEA,EAAEu7E,SAAI,IAASz7E,IAAI,KAAO,EAAFE,IAAe,KAAO,EAAFA,KAAfuvG,GAAG7oG,EAAE3G,EAAED,GAAyBmD,EAAEA,EAAEu8F,IAAI,OAAOv8F,IAAI5C,EAAE,CAAC+vG,GAAGjqG,EAAEpG,EAAE2G,GAAG,MAAM,KAAK,EAAE,IAAIuoG,KAAII,GAAG3oG,EAAE3G,GAAiB,oBAAdM,EAAEqG,EAAEw8E,WAAgCqtB,sBAAsB,IAAIlwG,EAAEnS,MAAMwY,EAAE43F,cAAcj+F,EAAE2/D,MAAMt5D,EAAE+9E,cAAcpkF,EAAEkwG,sBAAsB,CAAC,MAAM7wG,GAAG4vG,GAAE5oG,EAAE3G,EAAEL,EAAE,CAAC0wG,GAAGjqG,EAAEpG,EAAE2G,GAAG,MAAM,KAAK,GAAG0pG,GAAGjqG,EAAEpG,EAAE2G,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAEhS,MAAQu6G,IAAG5uG,EAAE4uG,KAAI,OAChfvoG,EAAE+9E,cAAc2rB,GAAGjqG,EAAEpG,EAAE2G,GAAGuoG,GAAE5uG,GAAG+vG,GAAGjqG,EAAEpG,EAAE2G,GAAG,MAAM,QAAQ0pG,GAAGjqG,EAAEpG,EAAE2G,GAAG,CAAC,SAAS8pG,GAAGrqG,GAAG,IAAIpG,EAAEoG,EAAE86F,YAAY,GAAG,OAAOlhG,EAAE,CAACoG,EAAE86F,YAAY,KAAK,IAAIv6F,EAAEP,EAAE+8E,UAAU,OAAOx8E,IAAIA,EAAEP,EAAE+8E,UAAU,IAAIgsB,IAAInvG,EAAE/M,SAAQ,SAAS+M,GAAG,IAAIM,EAAEowG,GAAGxlG,KAAK,KAAK9E,EAAEpG,GAAG2G,EAAEoxF,IAAI/3F,KAAK2G,EAAE86C,IAAIzhD,GAAGA,EAAEq6F,KAAK/5F,EAAEA,GAAG,GAAE,CAAC,CACzQ,SAASqwG,GAAGvqG,EAAEpG,GAAG,IAAI2G,EAAE3G,EAAE89F,UAAU,GAAG,OAAOn3F,EAAE,IAAI,IAAIrG,EAAE,EAAEA,EAAEqG,EAAE9U,OAAOyO,IAAI,CAAC,IAAI4C,EAAEyD,EAAErG,GAAG,IAAI,IAAIL,EAAEmG,EAAErG,EAAEC,EAAEL,EAAEI,EAAEqG,EAAE,KAAK,OAAOzG,GAAG,CAAC,OAAOA,EAAE67E,KAAK,KAAK,EAAE20B,GAAExwG,EAAEwjF,UAAUitB,IAAG,EAAG,MAAMhqG,EAAE,KAAK,EAA4C,KAAK,EAAE+pG,GAAExwG,EAAEwjF,UAAUsG,cAAc2mB,IAAG,EAAG,MAAMhqG,EAAEzG,EAAEA,EAAE4kF,MAAM,CAAC,GAAG,OAAO4rB,GAAE,MAAM3iG,MAAMtN,EAAE,MAAMowG,GAAGrwG,EAAEF,EAAEmD,GAAGitG,GAAE,KAAKC,IAAG,EAAG,IAAI3sG,EAAEP,EAAEohF,UAAU,OAAO7gF,IAAIA,EAAE8gF,OAAO,MAAMrhF,EAAEqhF,OAAO,IAAI,CAAC,MAAMn3D,GAAGmiF,GAAErsG,EAAElD,EAAEotB,EAAE,CAAC,CAAC,GAAkB,MAAfptB,EAAEytG,aAAmB,IAAIztG,EAAEA,EAAE8kF,MAAM,OAAO9kF,GAAG4wG,GAAG5wG,EAAEoG,GAAGpG,EAAEA,EAAE+kF,OAAO,CACje,SAAS6rB,GAAGxqG,EAAEpG,GAAG,IAAI2G,EAAEP,EAAEk+E,UAAUhkF,EAAE8F,EAAEo+E,MAAM,OAAOp+E,EAAEo1E,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAdm1B,GAAG3wG,EAAEoG,GAAGyqG,GAAGzqG,GAAQ,EAAF9F,EAAI,CAAC,IAAIovG,GAAG,EAAEtpG,EAAEA,EAAEm+E,QAAQorB,GAAG,EAAEvpG,EAAE,CAAC,MAAMhG,GAAGmvG,GAAEnpG,EAAEA,EAAEm+E,OAAOnkF,EAAE,CAAC,IAAIsvG,GAAG,EAAEtpG,EAAEA,EAAEm+E,OAAO,CAAC,MAAMnkF,GAAGmvG,GAAEnpG,EAAEA,EAAEm+E,OAAOnkF,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEuwG,GAAG3wG,EAAEoG,GAAGyqG,GAAGzqG,GAAK,IAAF9F,GAAO,OAAOqG,GAAG2oG,GAAG3oG,EAAEA,EAAE49E,QAAQ,MAAM,KAAK,EAAgD,GAA9CosB,GAAG3wG,EAAEoG,GAAGyqG,GAAGzqG,GAAK,IAAF9F,GAAO,OAAOqG,GAAG2oG,GAAG3oG,EAAEA,EAAE49E,QAAmB,GAARn+E,EAAEo+E,MAAS,CAAC,IAAIthF,EAAEkD,EAAE+8E,UAAU,IAAI/3E,GAAGlI,EAAE,GAAG,CAAC,MAAM9C,GAAGmvG,GAAEnpG,EAAEA,EAAEm+E,OAAOnkF,EAAE,CAAC,CAAC,GAAK,EAAFE,GAAoB,OAAd4C,EAAEkD,EAAE+8E,WAAmB,CAAC,IAAIljF,EAAEmG,EAAEm4F,cAAcx+F,EAAE,OAAO4G,EAAEA,EAAE43F,cAAct+F,EAAEN,EAAEyG,EAAE9Q,KAAKmO,EAAE2C,EAAE86F,YACje,GAAnB96F,EAAE86F,YAAY,KAAQ,OAAOz9F,EAAE,IAAI,UAAU9D,GAAG,UAAUM,EAAE3K,MAAM,MAAM2K,EAAE5Q,MAAMguF,EAAGn6E,EAAEjD,GAAGwiF,GAAG9iF,EAAEI,GAAG,IAAIqtB,EAAEq1D,GAAG9iF,EAAEM,GAAG,IAAIF,EAAE,EAAEA,EAAE0D,EAAE5R,OAAOkO,GAAG,EAAE,CAAC,IAAIstB,EAAE5pB,EAAE1D,GAAGI,EAAEsD,EAAE1D,EAAE,GAAG,UAAUstB,EAAEm0D,GAAGt+E,EAAE/C,GAAG,4BAA4BktB,EAAEgxD,GAAGn7E,EAAE/C,GAAG,aAAaktB,EAAEjiB,GAAGlI,EAAE/C,GAAGk5E,EAAGn2E,EAAEmqB,EAAEltB,EAAEitB,EAAE,CAAC,OAAOztB,GAAG,IAAK,QAAQ29E,EAAGp6E,EAAEjD,GAAG,MAAM,IAAK,WAAW+9E,GAAG96E,EAAEjD,GAAG,MAAM,IAAK,SAAS,IAAIH,EAAEoD,EAAE85E,cAAcsxB,YAAYprG,EAAE85E,cAAcsxB,cAAcruG,EAAEsuG,SAAS,IAAIh6G,EAAE0L,EAAErP,MAAM,MAAM2D,EAAE6tD,GAAGl/C,IAAIjD,EAAEsuG,SAASh6G,GAAE,GAAIuL,MAAMG,EAAEsuG,WAAW,MAAMtuG,EAAE88E,aAAa36B,GAAGl/C,IAAIjD,EAAEsuG,SACnftuG,EAAE88E,cAAa,GAAI36B,GAAGl/C,IAAIjD,EAAEsuG,SAAStuG,EAAEsuG,SAAS,GAAG,IAAG,IAAKrrG,EAAE43F,IAAI76F,CAAC,CAAC,MAAMG,GAAGmvG,GAAEnpG,EAAEA,EAAEm+E,OAAOnkF,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAduwG,GAAG3wG,EAAEoG,GAAGyqG,GAAGzqG,GAAQ,EAAF9F,EAAI,CAAC,GAAG,OAAO8F,EAAE+8E,UAAU,MAAM31E,MAAMtN,EAAE,MAAMgD,EAAEkD,EAAE+8E,UAAUljF,EAAEmG,EAAEm4F,cAAc,IAAIr7F,EAAE47E,UAAU7+E,CAAC,CAAC,MAAMG,GAAGmvG,GAAEnpG,EAAEA,EAAEm+E,OAAOnkF,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAduwG,GAAG3wG,EAAEoG,GAAGyqG,GAAGzqG,GAAQ,EAAF9F,GAAK,OAAOqG,GAAGA,EAAE+9E,cAAc8E,aAAa,IAAIQ,GAAGhqF,EAAEypF,cAAc,CAAC,MAAMrpF,GAAGmvG,GAAEnpG,EAAEA,EAAEm+E,OAAOnkF,EAAE,CAAC,MAAM,KAAK,EAG4G,QAAQuwG,GAAG3wG,EACnfoG,GAAGyqG,GAAGzqG,SAJ4Y,KAAK,GAAGuqG,GAAG3wG,EAAEoG,GAAGyqG,GAAGzqG,GAAqB,MAAlBlD,EAAEkD,EAAE0+E,OAAQN,QAAavkF,EAAE,OAAOiD,EAAEwhF,cAAcxhF,EAAEigF,UAAU2tB,SAAS7wG,GAAGA,GAClf,OAAOiD,EAAEohF,WAAW,OAAOphF,EAAEohF,UAAUI,gBAAgBqsB,GAAGh5F,OAAQ,EAAFzX,GAAKmwG,GAAGrqG,GAAG,MAAM,KAAK,GAAsF,GAAnFinB,EAAE,OAAO1mB,GAAG,OAAOA,EAAE+9E,cAAqB,EAAPt+E,EAAEzR,MAAQu6G,IAAG9hF,EAAE8hF,KAAI7hF,EAAEsjF,GAAG3wG,EAAEoG,GAAG8oG,GAAE9hF,GAAGujF,GAAG3wG,EAAEoG,GAAGyqG,GAAGzqG,GAAQ,KAAF9F,EAAO,CAA0B,GAAzB8sB,EAAE,OAAOhnB,EAAEs+E,eAAkBt+E,EAAE+8E,UAAU2tB,SAAS1jF,KAAKC,GAAG,KAAY,EAAPjnB,EAAEzR,MAAQ,IAAI06G,GAAEjpG,EAAEinB,EAAEjnB,EAAE0+E,MAAM,OAAOz3D,GAAG,CAAC,IAAIltB,EAAEkvG,GAAEhiF,EAAE,OAAOgiF,IAAG,CAAe,OAAV96G,GAAJuL,EAAEuvG,IAAMvqB,MAAahlF,EAAE07E,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGk0B,GAAG,EAAE5vG,EAAEA,EAAEykF,QAAQ,MAAM,KAAK,EAAE+qB,GAAGxvG,EAAEA,EAAEykF,QAAQ,IAAIljE,EAAEvhB,EAAEqjF,UAAU,GAAG,oBAAoB9hE,EAAEmvF,qBAAqB,CAAClwG,EAAER,EAAE6G,EAAE7G,EAAEykF,OAAO,IAAIvkF,EAAEM,EAAE+gB,EAAElzB,MACpf6R,EAAEu+F,cAAcl9E,EAAE4+C,MAAMjgE,EAAE0kF,cAAcrjE,EAAEmvF,sBAAsB,CAAC,MAAMpwG,GAAGmvG,GAAEjvG,EAAEqG,EAAEvG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEkvG,GAAGxvG,EAAEA,EAAEykF,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAOzkF,EAAE4kF,cAAc,CAACssB,GAAG7wG,GAAG,QAAQ,EAAE,OAAO5L,GAAGA,EAAEgwF,OAAOzkF,EAAEuvG,GAAE96G,GAAGy8G,GAAG7wG,EAAE,CAACktB,EAAEA,EAAE03D,OAAO,CAAC3+E,EAAE,IAAIinB,EAAE,KAAKltB,EAAEiG,IAAI,CAAC,GAAG,IAAIjG,EAAEq7E,KAAK,GAAG,OAAOnuD,EAAE,CAACA,EAAEltB,EAAE,IAAI+C,EAAE/C,EAAEgjF,UAAU/1D,EAAa,oBAAVntB,EAAEiD,EAAE9U,OAA4BqzF,YAAYxhF,EAAEwhF,YAAY,UAAU,OAAO,aAAaxhF,EAAEjC,QAAQ,QAAS2B,EAAEQ,EAAEgjF,UAAkCpjF,OAAE,KAA1B0D,EAAEtD,EAAEo+F,cAAcnwG,QAAoB,OAAOqV,GAAGA,EAAE5K,eAAe,WAAW4K,EAAEzF,QAAQ,KAAK2B,EAAEvR,MAAM4P,QACzfujF,GAAG,UAAUxhF,GAAG,CAAC,MAAMK,GAAGmvG,GAAEnpG,EAAEA,EAAEm+E,OAAOnkF,EAAE,CAAC,OAAO,GAAG,IAAID,EAAEq7E,KAAK,GAAG,OAAOnuD,EAAE,IAAIltB,EAAEgjF,UAAUrE,UAAU1xD,EAAE,GAAGjtB,EAAEo+F,aAAa,CAAC,MAAMn+F,GAAGmvG,GAAEnpG,EAAEA,EAAEm+E,OAAOnkF,EAAE,OAAO,IAAI,KAAKD,EAAEq7E,KAAK,KAAKr7E,EAAEq7E,KAAK,OAAOr7E,EAAEukF,eAAevkF,IAAIiG,IAAI,OAAOjG,EAAE2kF,MAAM,CAAC3kF,EAAE2kF,MAAMP,OAAOpkF,EAAEA,EAAEA,EAAE2kF,MAAM,QAAQ,CAAC,GAAG3kF,IAAIiG,EAAE,MAAMA,EAAE,KAAK,OAAOjG,EAAE4kF,SAAS,CAAC,GAAG,OAAO5kF,EAAEokF,QAAQpkF,EAAEokF,SAASn+E,EAAE,MAAMA,EAAEinB,IAAIltB,IAAIktB,EAAE,MAAMltB,EAAEA,EAAEokF,MAAM,CAACl3D,IAAIltB,IAAIktB,EAAE,MAAMltB,EAAE4kF,QAAQR,OAAOpkF,EAAEokF,OAAOpkF,EAAEA,EAAE4kF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG4rB,GAAG3wG,EAAEoG,GAAGyqG,GAAGzqG,GAAK,EAAF9F,GAAKmwG,GAAGrqG,GAAS,KAAK,IACtd,CAAC,SAASyqG,GAAGzqG,GAAG,IAAIpG,EAAEoG,EAAEo+E,MAAM,GAAK,EAAFxkF,EAAI,CAAC,IAAIoG,EAAE,CAAC,IAAI,IAAIO,EAAEP,EAAEm+E,OAAO,OAAO59E,GAAG,CAAC,GAAGmpG,GAAGnpG,GAAG,CAAC,IAAIrG,EAAEqG,EAAE,MAAMP,CAAC,CAACO,EAAEA,EAAE49E,MAAM,CAAC,MAAM/2E,MAAMtN,EAAE,KAAM,CAAC,OAAOI,EAAEk7E,KAAK,KAAK,EAAE,IAAIt4E,EAAE5C,EAAE6iF,UAAkB,GAAR7iF,EAAEkkF,QAAWp5E,GAAGlI,EAAE,IAAI5C,EAAEkkF,QAAQ,IAAgB0rB,GAAG9pG,EAAT2pG,GAAG3pG,GAAUlD,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAInD,EAAEO,EAAE6iF,UAAUsG,cAAsBumB,GAAG5pG,EAAT2pG,GAAG3pG,GAAUrG,GAAG,MAAM,QAAQ,MAAMyN,MAAMtN,EAAE,MAAO,CAAC,MAAMuD,GAAG8rG,GAAEnpG,EAAEA,EAAEm+E,OAAO9gF,EAAE,CAAC2C,EAAEo+E,QAAQ,CAAC,CAAG,KAAFxkF,IAASoG,EAAEo+E,QAAQ,KAAK,CAAC,SAASysB,GAAG7qG,EAAEpG,EAAE2G,GAAG0oG,GAAEjpG,EAAE8qG,GAAG9qG,EAAEpG,EAAE2G,EAAE,CACvb,SAASuqG,GAAG9qG,EAAEpG,EAAE2G,GAAG,IAAI,IAAIrG,EAAE,KAAY,EAAP8F,EAAEzR,MAAQ,OAAO06G,IAAG,CAAC,IAAInsG,EAAEmsG,GAAEpvG,EAAEiD,EAAE4hF,MAAM,GAAG,KAAK5hF,EAAEs4E,KAAKl7E,EAAE,CAAC,IAAIP,EAAE,OAAOmD,EAAEwhF,eAAeuqB,GAAG,IAAIlvG,EAAE,CAAC,IAAIJ,EAAEuD,EAAEohF,UAAU7gF,EAAE,OAAO9D,GAAG,OAAOA,EAAE+kF,eAAewqB,GAAEvvG,EAAEsvG,GAAG,IAAI7hF,EAAE8hF,GAAO,GAALD,GAAGlvG,GAAMmvG,GAAEzrG,KAAK2pB,EAAE,IAAIiiF,GAAEnsG,EAAE,OAAOmsG,IAAO5rG,GAAJ1D,EAAEsvG,IAAMvqB,MAAM,KAAK/kF,EAAEy7E,KAAK,OAAOz7E,EAAE2kF,cAAcysB,GAAGjuG,GAAG,OAAOO,GAAGA,EAAE8gF,OAAOxkF,EAAEsvG,GAAE5rG,GAAG0tG,GAAGjuG,GAAG,KAAK,OAAOjD,GAAGovG,GAAEpvG,EAAEixG,GAAGjxG,EAAED,EAAE2G,GAAG1G,EAAEA,EAAE8kF,QAAQsqB,GAAEnsG,EAAE+rG,GAAGtvG,EAAEuvG,GAAE9hF,CAAC,CAACgkF,GAAGhrG,EAAM,MAAM,KAAoB,KAAflD,EAAEuqG,eAAoB,OAAOxtG,GAAGA,EAAEskF,OAAOrhF,EAAEmsG,GAAEpvG,GAAGmxG,GAAGhrG,EAAM,CAAC,CACvc,SAASgrG,GAAGhrG,GAAG,KAAK,OAAOipG,IAAG,CAAC,IAAIrvG,EAAEqvG,GAAE,GAAG,KAAa,KAARrvG,EAAEwkF,OAAY,CAAC,IAAI79E,EAAE3G,EAAEskF,UAAU,IAAI,GAAG,KAAa,KAARtkF,EAAEwkF,OAAY,OAAOxkF,EAAEw7E,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG0zB,IAAGS,GAAG,EAAE3vG,GAAG,MAAM,KAAK,EAAE,IAAIM,EAAEN,EAAEmjF,UAAU,GAAW,EAARnjF,EAAEwkF,QAAU0qB,GAAE,GAAG,OAAOvoG,EAAErG,EAAEopG,wBAAwB,CAAC,IAAIxmG,EAAElD,EAAE69F,cAAc79F,EAAE1K,KAAKqR,EAAE43F,cAAc4J,GAAGnoG,EAAE1K,KAAKqR,EAAE43F,eAAej+F,EAAE8rG,mBAAmBlpG,EAAEyD,EAAE+9E,cAAcpkF,EAAE+wG,oCAAoC,CAAC,IAAIpxG,EAAED,EAAEkhG,YAAY,OAAOjhG,GAAGgiB,GAAGjiB,EAAEC,EAAEK,GAAG,MAAM,KAAK,EAAE,IAAIP,EAAEC,EAAEkhG,YAAY,GAAG,OAAOnhG,EAAE,CAAQ,GAAP4G,EAAE,KAAQ,OAAO3G,EAAE8kF,MAAM,OAAO9kF,EAAE8kF,MAAMtJ,KAAK,KAAK,EACvf,KAAK,EAAE70E,EAAE3G,EAAE8kF,MAAM3B,UAAUlhE,GAAGjiB,EAAED,EAAE4G,EAAE,CAAC,MAAM,KAAK,EAAE,IAAIhH,EAAEK,EAAEmjF,UAAU,GAAG,OAAOx8E,GAAW,EAAR3G,EAAEwkF,MAAQ,CAAC79E,EAAEhH,EAAE,IAAI8D,EAAEzD,EAAEu+F,cAAc,OAAOv+F,EAAE1K,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWmO,EAAEkrG,WAAWhoG,EAAEuvF,QAAQ,MAAM,IAAK,MAAMzyF,EAAEpJ,MAAMsM,EAAEtM,IAAIoJ,EAAEpJ,KAAK,CAAC,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAO2F,EAAE0kF,cAAc,CAAC,IAAIt3D,EAAEptB,EAAEskF,UAAU,GAAG,OAAOl3D,EAAE,CAAC,IAAIC,EAAED,EAAEs3D,cAAc,GAAG,OAAOr3D,EAAE,CAAC,IAAIltB,EAAEktB,EAAEs3D,WAAW,OAAOxkF,GAAG6pF,GAAG7pF,EAAE,CAAC,CAAC,CAAC,MAC5c,QAAQ,MAAMqN,MAAMtN,EAAE,MAAOgvG,IAAW,IAARlvG,EAAEwkF,OAAWorB,GAAG5vG,EAAE,CAAC,MAAMF,GAAGyvG,GAAEvvG,EAAEA,EAAEukF,OAAOzkF,EAAE,CAAC,CAAC,GAAGE,IAAIoG,EAAE,CAACipG,GAAE,KAAK,KAAK,CAAa,GAAG,QAAf1oG,EAAE3G,EAAE+kF,SAAoB,CAACp+E,EAAE49E,OAAOvkF,EAAEukF,OAAO8qB,GAAE1oG,EAAE,KAAK,CAAC0oG,GAAErvG,EAAEukF,MAAM,CAAC,CAAC,SAASysB,GAAG5qG,GAAG,KAAK,OAAOipG,IAAG,CAAC,IAAIrvG,EAAEqvG,GAAE,GAAGrvG,IAAIoG,EAAE,CAACipG,GAAE,KAAK,KAAK,CAAC,IAAI1oG,EAAE3G,EAAE+kF,QAAQ,GAAG,OAAOp+E,EAAE,CAACA,EAAE49E,OAAOvkF,EAAEukF,OAAO8qB,GAAE1oG,EAAE,KAAK,CAAC0oG,GAAErvG,EAAEukF,MAAM,CAAC,CACvS,SAAS4sB,GAAG/qG,GAAG,KAAK,OAAOipG,IAAG,CAAC,IAAIrvG,EAAEqvG,GAAE,IAAI,OAAOrvG,EAAEw7E,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI70E,EAAE3G,EAAEukF,OAAO,IAAIorB,GAAG,EAAE3vG,EAAE,CAAC,MAAMyD,GAAG8rG,GAAEvvG,EAAE2G,EAAElD,EAAE,CAAC,MAAM,KAAK,EAAE,IAAInD,EAAEN,EAAEmjF,UAAU,GAAG,oBAAoB7iF,EAAEopG,kBAAkB,CAAC,IAAIxmG,EAAElD,EAAEukF,OAAO,IAAIjkF,EAAEopG,mBAAmB,CAAC,MAAMjmG,GAAG8rG,GAAEvvG,EAAEkD,EAAEO,EAAE,CAAC,CAAC,IAAIxD,EAAED,EAAEukF,OAAO,IAAIqrB,GAAG5vG,EAAE,CAAC,MAAMyD,GAAG8rG,GAAEvvG,EAAEC,EAAEwD,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI1D,EAAEC,EAAEukF,OAAO,IAAIqrB,GAAG5vG,EAAE,CAAC,MAAMyD,GAAG8rG,GAAEvvG,EAAED,EAAE0D,EAAE,EAAE,CAAC,MAAMA,GAAG8rG,GAAEvvG,EAAEA,EAAEukF,OAAO9gF,EAAE,CAAC,GAAGzD,IAAIoG,EAAE,CAACipG,GAAE,KAAK,KAAK,CAAC,IAAI1vG,EAAEK,EAAE+kF,QAAQ,GAAG,OAAOplF,EAAE,CAACA,EAAE4kF,OAAOvkF,EAAEukF,OAAO8qB,GAAE1vG,EAAE,KAAK,CAAC0vG,GAAErvG,EAAEukF,MAAM,CAAC,CAC7d,IAwBkN+sB,GAxB9MC,GAAG97G,KAAKC,KAAK87G,GAAG93B,EAAGwpB,uBAAuBuO,GAAG/3B,EAAGsxB,kBAAkB0G,GAAGh4B,EAAGwQ,wBAAwB0X,GAAE,EAAE2D,GAAE,KAAKoM,GAAE,KAAKC,GAAE,EAAE9F,GAAG,EAAED,GAAG1Q,GAAG,GAAG0T,GAAE,EAAEgD,GAAG,KAAK7P,GAAG,EAAE8P,GAAG,EAAEC,GAAG,EAAE1rG,GAAG,KAAK2rG,GAAG,KAAKjB,GAAG,EAAEjC,GAAGmD,IAASC,GAAG,KAAK/H,IAAG,EAAGC,GAAG,KAAKI,GAAG,KAAK2H,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAASxL,KAAI,OAAO,KAAO,EAAFrF,IAAK7pF,MAAK,IAAIy6F,GAAGA,GAAGA,GAAGz6F,IAAG,CAChU,SAAS+uF,GAAG1gG,GAAG,OAAG,KAAY,EAAPA,EAAEzR,MAAe,EAAK,KAAO,EAAFitG,KAAM,IAAIgQ,GAASA,IAAGA,GAAK,OAAOjT,GAAGtU,YAAkB,IAAIooB,KAAKA,GAAGlrB,MAAMkrB,IAAU,KAAPrsG,EAAE4R,IAAkB5R,EAAiBA,OAAE,KAAjBA,EAAEtS,OAAO+U,OAAmB,GAAG6hF,GAAGtkF,EAAE9Q,KAAc,CAAC,SAASuwG,GAAGz/F,EAAEpG,EAAE2G,EAAErG,GAAG,GAAG,GAAGgyG,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK/kG,MAAMtN,EAAE,MAAMunF,GAAGrhF,EAAEO,EAAErG,GAAM,KAAO,EAAFshG,KAAMx7F,IAAIm/F,KAAEn/F,IAAIm/F,KAAI,KAAO,EAAF3D,MAAOkQ,IAAInrG,GAAG,IAAIkoG,IAAG6D,GAAGtsG,EAAEwrG,KAAIe,GAAGvsG,EAAE9F,GAAG,IAAIqG,GAAG,IAAIi7F,IAAG,KAAY,EAAP5hG,EAAErL,QAAUm6G,GAAG/2F,KAAI,IAAIykF,IAAIE,MAAK,CAC1Y,SAASiW,GAAGvsG,EAAEpG,GAAG,IAAI2G,EAAEP,EAAEwsG,cA3MzB,SAAYxsG,EAAEpG,GAAG,IAAI,IAAI2G,EAAEP,EAAE6gF,eAAe3mF,EAAE8F,EAAE8gF,YAAYhkF,EAAEkD,EAAEysG,gBAAgB5yG,EAAEmG,EAAE4gF,aAAa,EAAE/mF,GAAG,CAAC,IAAIF,EAAE,GAAGwmF,GAAGtmF,GAAGN,EAAE,GAAGI,EAAE0D,EAAEP,EAAEnD,IAAO,IAAI0D,EAAM,KAAK9D,EAAEgH,IAAI,KAAKhH,EAAEW,KAAG4C,EAAEnD,GAAGsnF,GAAG1nF,EAAEK,IAAQyD,GAAGzD,IAAIoG,EAAE0sG,cAAcnzG,GAAGM,IAAIN,CAAC,CAAC,CA2MnLozG,CAAG3sG,EAAEpG,GAAG,IAAIM,EAAEymF,GAAG3gF,EAAEA,IAAIm/F,GAAEqM,GAAE,GAAG,GAAG,IAAItxG,EAAE,OAAOqG,GAAGy+E,GAAGz+E,GAAGP,EAAEwsG,aAAa,KAAKxsG,EAAE4sG,iBAAiB,OAAO,GAAGhzG,EAAEM,GAAGA,EAAE8F,EAAE4sG,mBAAmBhzG,EAAE,CAAgB,GAAf,MAAM2G,GAAGy+E,GAAGz+E,GAAM,IAAI3G,EAAE,IAAIoG,EAAEo1E,IA5IsJ,SAAYp1E,GAAGo2F,IAAG,EAAGC,GAAGr2F,EAAE,CA4I5K6sG,CAAGC,GAAGhoG,KAAK,KAAK9E,IAAIq2F,GAAGyW,GAAGhoG,KAAK,KAAK9E,IAAI8zF,IAAG,WAAW,KAAO,EAAF0H,KAAMlF,IAAI,IAAG/1F,EAAE,SAAS,CAAC,OAAOihF,GAAGtnF,IAAI,KAAK,EAAEqG,EAAE81C,GAAG,MAAM,KAAK,EAAE91C,EAAEm/E,GAAG,MAAM,KAAK,GAAwC,QAAQn/E,EAAEq/E,SAApC,KAAK,UAAUr/E,EAAEy/E,GAAsBz/E,EAAEwsG,GAAGxsG,EAAEysG,GAAGloG,KAAK,KAAK9E,GAAG,CAACA,EAAE4sG,iBAAiBhzG,EAAEoG,EAAEwsG,aAAajsG,CAAC,CAAC,CAC7c,SAASysG,GAAGhtG,EAAEpG,GAAc,GAAXwyG,IAAI,EAAEC,GAAG,EAAK,KAAO,EAAF7Q,IAAK,MAAMp0F,MAAMtN,EAAE,MAAM,IAAIyG,EAAEP,EAAEwsG,aAAa,GAAGS,MAAMjtG,EAAEwsG,eAAejsG,EAAE,OAAO,KAAK,IAAIrG,EAAEymF,GAAG3gF,EAAEA,IAAIm/F,GAAEqM,GAAE,GAAG,GAAG,IAAItxG,EAAE,OAAO,KAAK,GAAG,KAAO,GAAFA,IAAO,KAAKA,EAAE8F,EAAE0sG,eAAe9yG,EAAEA,EAAEszG,GAAGltG,EAAE9F,OAAO,CAACN,EAAEM,EAAE,IAAI4C,EAAE0+F,GAAEA,IAAG,EAAE,IAAI3hG,EAAEszG,KAAgD,IAAxChO,KAAIn/F,GAAGwrG,KAAI5xG,IAAEkyG,GAAG,KAAKpD,GAAG/2F,KAAI,IAAIy7F,GAAGptG,EAAEpG,UAAUyzG,KAAK,KAAK,CAAC,MAAM9zG,GAAG+zG,GAAGttG,EAAEzG,EAAE,CAAUsgG,KAAKuR,GAAGlhH,QAAQ2P,EAAE2hG,GAAE1+F,EAAE,OAAOyuG,GAAE3xG,EAAE,GAAGulG,GAAE,KAAKqM,GAAE,EAAE5xG,EAAE6uG,GAAE,CAAC,GAAG,IAAI7uG,EAAE,CAAyC,GAAxC,IAAIA,IAAY,KAARkD,EAAEokF,GAAGlhF,MAAW9F,EAAE4C,EAAElD,EAAE2zG,GAAGvtG,EAAElD,KAAQ,IAAIlD,EAAE,MAAM2G,EAAEkrG,GAAG2B,GAAGptG,EAAE,GAAGssG,GAAGtsG,EAAE9F,GAAGqyG,GAAGvsG,EAAE2R,MAAKpR,EAAE,GAAG,IAAI3G,EAAE0yG,GAAGtsG,EAAE9F,OAChf,CAAuB,GAAtB4C,EAAEkD,EAAE9V,QAAQg0F,UAAa,KAAO,GAAFhkF,KAGnC,SAAY8F,GAAG,IAAI,IAAIpG,EAAEoG,IAAI,CAAC,GAAW,MAARpG,EAAEwkF,MAAY,CAAC,IAAI79E,EAAE3G,EAAEkhG,YAAY,GAAG,OAAOv6F,GAAe,QAAXA,EAAEA,EAAE++F,QAAiB,IAAI,IAAIplG,EAAE,EAAEA,EAAEqG,EAAE9U,OAAOyO,IAAI,CAAC,IAAI4C,EAAEyD,EAAErG,GAAGL,EAAEiD,EAAEkiG,YAAYliG,EAAEA,EAAEtS,MAAM,IAAI,IAAIojG,GAAG/zF,IAAIiD,GAAG,OAAM,CAAE,CAAC,MAAMnD,GAAG,OAAM,CAAE,CAAC,CAAC,CAAW,GAAV4G,EAAE3G,EAAE8kF,MAAwB,MAAf9kF,EAAEytG,cAAoB,OAAO9mG,EAAEA,EAAE49E,OAAOvkF,EAAEA,EAAE2G,MAAM,CAAC,GAAG3G,IAAIoG,EAAE,MAAM,KAAK,OAAOpG,EAAE+kF,SAAS,CAAC,GAAG,OAAO/kF,EAAEukF,QAAQvkF,EAAEukF,SAASn+E,EAAE,OAAM,EAAGpG,EAAEA,EAAEukF,MAAM,CAACvkF,EAAE+kF,QAAQR,OAAOvkF,EAAEukF,OAAOvkF,EAAEA,EAAE+kF,OAAO,CAAC,CAAC,OAAM,CAAE,CAHvX6uB,CAAG1wG,KAAe,KAAVlD,EAAEszG,GAAGltG,EAAE9F,MAAmB,KAARL,EAAEqnF,GAAGlhF,MAAW9F,EAAEL,EAAED,EAAE2zG,GAAGvtG,EAAEnG,KAAK,IAAID,GAAG,MAAM2G,EAAEkrG,GAAG2B,GAAGptG,EAAE,GAAGssG,GAAGtsG,EAAE9F,GAAGqyG,GAAGvsG,EAAE2R,MAAKpR,EAAqC,OAAnCP,EAAEytG,aAAa3wG,EAAEkD,EAAE0tG,cAAcxzG,EAASN,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMwN,MAAMtN,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAE6zG,GAAG3tG,EAAE4rG,GAAGE,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAGtsG,EAAE9F,IAAS,UAAFA,KAAeA,GAAiB,IAAbN,EAAE+wG,GAAG,IAAIh5F,MAAU,CAAC,GAAG,IAAIgvE,GAAG3gF,EAAE,GAAG,MAAyB,KAAnBlD,EAAEkD,EAAE6gF,gBAAqB3mF,KAAKA,EAAE,CAAC2mG,KAAI7gG,EAAE8gF,aAAa9gF,EAAE6gF,eAAe/jF,EAAE,KAAK,CAACkD,EAAE4tG,cAAcna,GAAGka,GAAG7oG,KAAK,KAAK9E,EAAE4rG,GAAGE,IAAIlyG,GAAG,KAAK,CAAC+zG,GAAG3tG,EAAE4rG,GAAGE,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAGtsG,EAAE9F,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAfN,EAAEoG,EAAEshF,WAAexkF,GAAG,EAAE,EAAE5C,GAAG,CAAC,IAAIP,EAAE,GAAGwmF,GAAGjmF,GAAGL,EAAE,GAAGF,GAAEA,EAAEC,EAAED,IAAKmD,IAAIA,EAAEnD,GAAGO,IAAIL,CAAC,CAAqG,GAApGK,EAAE4C,EAAqG,IAA3F5C,GAAG,KAAXA,EAAEyX,KAAIzX,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKixG,GAAGjxG,EAAE,OAAOA,GAAU,CAAC8F,EAAE4tG,cAAcna,GAAGka,GAAG7oG,KAAK,KAAK9E,EAAE4rG,GAAGE,IAAI5xG,GAAG,KAAK,CAACyzG,GAAG3tG,EAAE4rG,GAAGE,IAAI,MAA+B,QAAQ,MAAM1kG,MAAMtN,EAAE,MAAO,CAAC,CAAW,OAAVyyG,GAAGvsG,EAAE2R,MAAY3R,EAAEwsG,eAAejsG,EAAEysG,GAAGloG,KAAK,KAAK9E,GAAG,IAAI,CACrX,SAASutG,GAAGvtG,EAAEpG,GAAG,IAAI2G,EAAEN,GAA2G,OAAxGD,EAAE9V,QAAQo0F,cAAc8E,eAAegqB,GAAGptG,EAAEpG,GAAGwkF,OAAO,KAAe,KAAVp+E,EAAEktG,GAAGltG,EAAEpG,MAAWA,EAAEgyG,GAAGA,GAAGrrG,EAAE,OAAO3G,GAAGquG,GAAGruG,IAAWoG,CAAC,CAAC,SAASioG,GAAGjoG,GAAG,OAAO4rG,GAAGA,GAAG5rG,EAAE4rG,GAAGl4G,KAAK0B,MAAMw2G,GAAG5rG,EAAE,CAE5L,SAASssG,GAAGtsG,EAAEpG,GAAuD,IAApDA,IAAI+xG,GAAG/xG,IAAI8xG,GAAG1rG,EAAE6gF,gBAAgBjnF,EAAEoG,EAAE8gF,cAAclnF,EAAMoG,EAAEA,EAAEysG,gBAAgB,EAAE7yG,GAAG,CAAC,IAAI2G,EAAE,GAAG4/E,GAAGvmF,GAAGM,EAAE,GAAGqG,EAAEP,EAAEO,IAAI,EAAE3G,IAAIM,CAAC,CAAC,CAAC,SAAS4yG,GAAG9sG,GAAG,GAAG,KAAO,EAAFw7F,IAAK,MAAMp0F,MAAMtN,EAAE,MAAMmzG,KAAK,IAAIrzG,EAAE+mF,GAAG3gF,EAAE,GAAG,GAAG,KAAO,EAAFpG,GAAK,OAAO2yG,GAAGvsG,EAAE2R,MAAK,KAAK,IAAIpR,EAAE2sG,GAAGltG,EAAEpG,GAAG,GAAG,IAAIoG,EAAEo1E,KAAK,IAAI70E,EAAE,CAAC,IAAIrG,EAAEgnF,GAAGlhF,GAAG,IAAI9F,IAAIN,EAAEM,EAAEqG,EAAEgtG,GAAGvtG,EAAE9F,GAAG,CAAC,GAAG,IAAIqG,EAAE,MAAMA,EAAEkrG,GAAG2B,GAAGptG,EAAE,GAAGssG,GAAGtsG,EAAEpG,GAAG2yG,GAAGvsG,EAAE2R,MAAKpR,EAAE,GAAG,IAAIA,EAAE,MAAM6G,MAAMtN,EAAE,MAAiF,OAA3EkG,EAAEytG,aAAaztG,EAAE9V,QAAQg0F,UAAUl+E,EAAE0tG,cAAc9zG,EAAE+zG,GAAG3tG,EAAE4rG,GAAGE,IAAIS,GAAGvsG,EAAE2R,MAAY,IAAI,CACvd,SAASk8F,GAAG7tG,EAAEpG,GAAG,IAAI2G,EAAEi7F,GAAEA,IAAG,EAAE,IAAI,OAAOx7F,EAAEpG,EAAE,CAAC,QAAY,KAAJ4hG,GAAEj7F,KAAUmoG,GAAG/2F,KAAI,IAAIykF,IAAIE,KAAK,CAAC,CAAC,SAASwX,GAAG9tG,GAAG,OAAOgsG,IAAI,IAAIA,GAAG52B,KAAK,KAAO,EAAFomB,KAAMyR,KAAK,IAAIrzG,EAAE4hG,GAAEA,IAAG,EAAE,IAAIj7F,EAAE+qG,GAAGrnB,WAAW/pF,EAAE0X,GAAE,IAAI,GAAG05F,GAAGrnB,WAAW,KAAKryE,GAAE,EAAE5R,EAAE,OAAOA,GAAG,CAAC,QAAQ4R,GAAE1X,EAAEoxG,GAAGrnB,WAAW1jF,EAAM,KAAO,GAAXi7F,GAAE5hG,KAAa08F,IAAI,CAAC,CAAC,SAASqS,KAAKjD,GAAGD,GAAGv7G,QAAQ8qG,GAAEyQ,GAAG,CAChT,SAAS2H,GAAGptG,EAAEpG,GAAGoG,EAAEytG,aAAa,KAAKztG,EAAE0tG,cAAc,EAAE,IAAIntG,EAAEP,EAAE4tG,cAAiD,IAAlC,IAAIrtG,IAAIP,EAAE4tG,eAAe,EAAEla,GAAGnzF,IAAO,OAAOgrG,GAAE,IAAIhrG,EAAEgrG,GAAEptB,OAAO,OAAO59E,GAAG,CAAC,IAAIrG,EAAEqG,EAAQ,OAAN22F,GAAGh9F,GAAUA,EAAEk7E,KAAK,KAAK,EAA6B,QAA3Bl7E,EAAEA,EAAEhL,KAAKymG,yBAA4B,IAASz7F,GAAG07F,KAAK,MAAM,KAAK,EAAEwG,KAAKpH,GAAEI,IAAIJ,GAAEG,IAAGwH,KAAK,MAAM,KAAK,EAAEL,GAAGpiG,GAAG,MAAM,KAAK,EAAEkiG,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGpH,GAAEuH,IAAG,MAAM,KAAK,GAAGzC,GAAG5/F,EAAEhL,KAAKqmF,UAAU,MAAM,KAAK,GAAG,KAAK,GAAGozB,KAAKpoG,EAAEA,EAAE49E,MAAM,CAAqE,GAApEghB,GAAEn/F,EAAEurG,GAAEvrG,EAAE+4F,GAAG/4F,EAAE9V,QAAQ,MAAMshH,GAAE9F,GAAG9rG,EAAE6uG,GAAE,EAAEgD,GAAG,KAAKE,GAAGD,GAAG9P,GAAG,EAAEgQ,GAAG3rG,GAAG,KAAQ,OAAO67C,GAAG,CAAC,IAAIliD,EAC1f,EAAEA,EAAEkiD,GAAGrwD,OAAOmO,IAAI,GAA2B,QAAhBM,GAARqG,EAAEu7C,GAAGliD,IAAO8gG,aAAqB,CAACn6F,EAAEm6F,YAAY,KAAK,IAAI59F,EAAE5C,EAAEm/F,KAAKx/F,EAAE0G,EAAE46F,QAAQ,GAAG,OAAOthG,EAAE,CAAC,IAAIF,EAAEE,EAAEw/F,KAAKx/F,EAAEw/F,KAAKv8F,EAAE5C,EAAEm/F,KAAK1/F,CAAC,CAAC4G,EAAE46F,QAAQjhG,CAAC,CAAC4hD,GAAG,IAAI,CAAC,OAAO97C,CAAC,CAC3K,SAASstG,GAAGttG,EAAEpG,GAAG,OAAE,CAAC,IAAI2G,EAAEgrG,GAAE,IAAuB,GAAnB1R,KAAKgD,GAAG3yG,QAAQ4zG,GAAMV,GAAG,CAAC,IAAI,IAAIljG,EAAE+iG,GAAE3e,cAAc,OAAOpkF,GAAG,CAAC,IAAI4C,EAAE5C,EAAEgkG,MAAM,OAAOphG,IAAIA,EAAEq+F,QAAQ,MAAMjhG,EAAEA,EAAEm/F,IAAI,CAAC+D,IAAG,CAAE,CAA4C,GAA3CJ,GAAG,EAAEG,GAAED,GAAED,GAAE,KAAKI,IAAG,EAAGC,GAAG,EAAE+N,GAAGnhH,QAAQ,KAAQ,OAAOqW,GAAG,OAAOA,EAAE49E,OAAO,CAACsqB,GAAE,EAAEgD,GAAG7xG,EAAE2xG,GAAE,KAAK,KAAK,CAACvrG,EAAE,CAAC,IAAInG,EAAEmG,EAAErG,EAAE4G,EAAE49E,OAAO5kF,EAAEgH,EAAElD,EAAEzD,EAAqB,GAAnBA,EAAE4xG,GAAEjyG,EAAE6kF,OAAO,MAAS,OAAO/gF,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAE42F,KAAK,CAAC,IAAIjtE,EAAE3pB,EAAE4pB,EAAE1tB,EAAEQ,EAAEktB,EAAEmuD,IAAI,GAAG,KAAY,EAAPnuD,EAAE14B,QAAU,IAAIwL,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAIL,EAAEutB,EAAEi3D,UAAUxkF,GAAGutB,EAAE6zE,YAAYphG,EAAEohG,YAAY7zE,EAAEq3D,cAAc5kF,EAAE4kF,cACxer3D,EAAEmzE,MAAM1gG,EAAE0gG,QAAQnzE,EAAE6zE,YAAY,KAAK7zE,EAAEq3D,cAAc,KAAK,CAAC,IAAInwF,EAAEs2G,GAAG9qG,GAAG,GAAG,OAAOxL,EAAE,CAACA,EAAEiwF,QAAQ,IAAIsmB,GAAGv2G,EAAEwL,EAAEJ,EAAEM,EAAED,GAAU,EAAPzL,EAAEI,MAAQ+1G,GAAGzqG,EAAEmtB,EAAEptB,GAAOyD,EAAE2pB,EAAE,IAAI/L,GAAZrhB,EAAEzL,GAAc2sG,YAAY,GAAG,OAAO7/E,EAAE,CAAC,IAAIjhB,EAAE,IAAIg4E,IAAIh4E,EAAEqhD,IAAIh+C,GAAGzD,EAAEkhG,YAAY9gG,CAAC,MAAMihB,EAAEogC,IAAIh+C,GAAG,MAAM2C,CAAC,CAAM,GAAG,KAAO,EAAFpG,GAAK,CAAC0qG,GAAGzqG,EAAEmtB,EAAEptB,GAAGqtG,KAAK,MAAMjnG,CAAC,CAAC3C,EAAE+J,MAAMtN,EAAE,KAAM,MAAM,GAAGu9F,IAAU,EAAP99F,EAAEhL,KAAO,CAAC,IAAI2jG,EAAEuS,GAAG9qG,GAAG,GAAG,OAAOu4F,EAAE,CAAC,KAAa,MAARA,EAAE9T,SAAe8T,EAAE9T,OAAO,KAAKsmB,GAAGxS,EAAEv4F,EAAEJ,EAAEM,EAAED,GAAG0+F,GAAGiL,GAAGlmG,EAAE9D,IAAI,MAAMyG,CAAC,CAAC,CAACnG,EAAEwD,EAAEkmG,GAAGlmG,EAAE9D,GAAG,IAAIkvG,KAAIA,GAAE,GAAG,OAAOxoG,GAAGA,GAAG,CAACpG,GAAGoG,GAAGvM,KAAKmG,GAAGA,EAAEF,EAAE,EAAE,CAAC,OAAOE,EAAEu7E,KAAK,KAAK,EAAEv7E,EAAEukF,OAAO,MACpfxkF,IAAIA,EAAEC,EAAEugG,OAAOxgG,EAAkB8hG,GAAG7hG,EAAbiqG,GAAGjqG,EAAEwD,EAAEzD,IAAW,MAAMoG,EAAE,KAAK,EAAEzG,EAAE8D,EAAE,IAAI6+B,EAAEriC,EAAE3K,KAAKoV,EAAEzK,EAAEkjF,UAAU,GAAG,KAAa,IAARljF,EAAEukF,SAAa,oBAAoBliD,EAAEgoE,0BAA0B,OAAO5/F,GAAG,oBAAoBA,EAAE6/F,oBAAoB,OAAOC,KAAKA,GAAGzS,IAAIrtF,KAAK,CAACzK,EAAEukF,OAAO,MAAMxkF,IAAIA,EAAEC,EAAEugG,OAAOxgG,EAAkB8hG,GAAG7hG,EAAboqG,GAAGpqG,EAAEN,EAAEK,IAAW,MAAMoG,CAAC,EAAEnG,EAAEA,EAAEskF,MAAM,OAAO,OAAOtkF,EAAE,CAACk0G,GAAGxtG,EAAE,CAAC,MAAMkyF,GAAI74F,EAAE64F,EAAG8Y,KAAIhrG,GAAG,OAAOA,IAAIgrG,GAAEhrG,EAAEA,EAAE49E,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAAC,SAASgvB,KAAK,IAAIntG,EAAEorG,GAAGlhH,QAAsB,OAAdkhH,GAAGlhH,QAAQ4zG,GAAU,OAAO99F,EAAE89F,GAAG99F,CAAC,CACrd,SAASinG,KAAQ,IAAIwB,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAOtJ,IAAG,KAAQ,UAAHvD,KAAe,KAAQ,UAAH8P,KAAeY,GAAGnN,GAAEqM,GAAE,CAAC,SAAS0B,GAAGltG,EAAEpG,GAAG,IAAI2G,EAAEi7F,GAAEA,IAAG,EAAE,IAAIthG,EAAEizG,KAAqC,IAA7BhO,KAAIn/F,GAAGwrG,KAAI5xG,IAAEkyG,GAAG,KAAKsB,GAAGptG,EAAEpG,UAAUo0G,KAAK,KAAK,CAAC,MAAMlxG,GAAGwwG,GAAGttG,EAAElD,EAAE,CAAgC,GAAtB+8F,KAAK2B,GAAEj7F,EAAE6qG,GAAGlhH,QAAQgQ,EAAK,OAAOqxG,GAAE,MAAMnkG,MAAMtN,EAAE,MAAiB,OAAXqlG,GAAE,KAAKqM,GAAE,EAAS/C,EAAC,CAAC,SAASuF,KAAK,KAAK,OAAOzC,IAAG0C,GAAG1C,GAAE,CAAC,SAAS8B,KAAK,KAAK,OAAO9B,KAAIrsB,MAAM+uB,GAAG1C,GAAE,CAAC,SAAS0C,GAAGjuG,GAAG,IAAIpG,EAAEsxG,GAAGlrG,EAAEk+E,UAAUl+E,EAAE0lG,IAAI1lG,EAAEm4F,cAAcn4F,EAAE43F,aAAa,OAAOh+F,EAAEm0G,GAAG/tG,GAAGurG,GAAE3xG,EAAEyxG,GAAGnhH,QAAQ,IAAI,CAC1d,SAAS6jH,GAAG/tG,GAAG,IAAIpG,EAAEoG,EAAE,EAAE,CAAC,IAAIO,EAAE3G,EAAEskF,UAAqB,GAAXl+E,EAAEpG,EAAEukF,OAAU,KAAa,MAARvkF,EAAEwkF,QAAc,GAAgB,QAAb79E,EAAEynG,GAAGznG,EAAE3G,EAAE8rG,KAAkB,YAAJ6F,GAAEhrG,OAAc,CAAW,GAAG,QAAbA,EAAEqoG,GAAGroG,EAAE3G,IAAmC,OAAnB2G,EAAE69E,OAAO,WAAMmtB,GAAEhrG,GAAS,GAAG,OAAOP,EAAmE,OAAXyoG,GAAE,OAAE8C,GAAE,MAA5DvrG,EAAEo+E,OAAO,MAAMp+E,EAAEqnG,aAAa,EAAErnG,EAAE03F,UAAU,IAA4B,CAAa,GAAG,QAAf99F,EAAEA,EAAE+kF,SAAyB,YAAJ4sB,GAAE3xG,GAAS2xG,GAAE3xG,EAAEoG,CAAC,OAAO,OAAOpG,GAAG,IAAI6uG,KAAIA,GAAE,EAAE,CAAC,SAASkF,GAAG3tG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE0X,GAAE9U,EAAEwuG,GAAGrnB,WAAW,IAAIqnB,GAAGrnB,WAAW,KAAKryE,GAAE,EAC3Y,SAAY5R,EAAEpG,EAAE2G,EAAErG,GAAG,GAAG+yG,WAAW,OAAOjB,IAAI,GAAG,KAAO,EAAFxQ,IAAK,MAAMp0F,MAAMtN,EAAE,MAAMyG,EAAEP,EAAEytG,aAAa,IAAI3wG,EAAEkD,EAAE0tG,cAAc,GAAG,OAAOntG,EAAE,OAAO,KAA2C,GAAtCP,EAAEytG,aAAa,KAAKztG,EAAE0tG,cAAc,EAAKntG,IAAIP,EAAE9V,QAAQ,MAAMkd,MAAMtN,EAAE,MAAMkG,EAAEwsG,aAAa,KAAKxsG,EAAE4sG,iBAAiB,EAAE,IAAI/yG,EAAE0G,EAAE65F,MAAM75F,EAAE05F,WAA8J,GAzNtT,SAAYj6F,EAAEpG,GAAG,IAAI2G,EAAEP,EAAE4gF,cAAchnF,EAAEoG,EAAE4gF,aAAahnF,EAAEoG,EAAE6gF,eAAe,EAAE7gF,EAAE8gF,YAAY,EAAE9gF,EAAE0sG,cAAc9yG,EAAEoG,EAAEkuG,kBAAkBt0G,EAAEoG,EAAE+gF,gBAAgBnnF,EAAEA,EAAEoG,EAAEghF,cAAc,IAAI9mF,EAAE8F,EAAEshF,WAAW,IAAIthF,EAAEA,EAAEysG,gBAAgB,EAAElsG,GAAG,CAAC,IAAIzD,EAAE,GAAGqjF,GAAG5/E,GAAG1G,EAAE,GAAGiD,EAAElD,EAAEkD,GAAG,EAAE5C,EAAE4C,IAAI,EAAEkD,EAAElD,IAAI,EAAEyD,IAAI1G,CAAC,CAAC,CAyN5Gs0G,CAAGnuG,EAAEnG,GAAGmG,IAAIm/F,KAAIoM,GAAEpM,GAAE,KAAKqM,GAAE,GAAG,KAAoB,KAAfjrG,EAAE8mG,eAAoB,KAAa,KAAR9mG,EAAE69E,QAAa2tB,KAAKA,IAAG,EAAGgB,GAAGntB,IAAG,WAAgB,OAALqtB,KAAY,IAAI,KAAIpzG,EAAE,KAAa,MAAR0G,EAAE69E,OAAgB,KAAoB,MAAf79E,EAAE8mG,eAAqBxtG,EAAE,CAACA,EAAEyxG,GAAGrnB,WAAWqnB,GAAGrnB,WAAW,KAChf,IAAItqF,EAAEiY,GAAEA,GAAE,EAAE,IAAIrY,EAAEiiG,GAAEA,IAAG,EAAE6P,GAAGnhH,QAAQ,KA1CpC,SAAY8V,EAAEpG,GAAgB,GAAby5F,GAAGtP,GAAawK,GAAVvuF,EAAEouF,MAAc,CAAC,GAAG,mBAAmBpuF,EAAE,IAAIO,EAAE,CAACinE,MAAMxnE,EAAE6uF,eAAe1gF,IAAInO,EAAE8uF,mBAAmB9uF,EAAE,CAA8C,IAAI9F,GAAjDqG,GAAGA,EAAEP,EAAEo3E,gBAAgB72E,EAAEwuF,aAAarhG,QAAeshG,cAAczuF,EAAEyuF,eAAe,GAAG90F,GAAG,IAAIA,EAAEg1F,WAAW,CAAC3uF,EAAErG,EAAEi1F,WAAW,IAAIryF,EAAE5C,EAAEk1F,aAAav1F,EAAEK,EAAEm1F,UAAUn1F,EAAEA,EAAEo1F,YAAY,IAAI/uF,EAAEk4E,SAAS5+E,EAAE4+E,QAAQ,CAAC,MAAM0Z,GAAG5xF,EAAE,KAAK,MAAMP,CAAC,CAAC,IAAIrG,EAAE,EAAEJ,GAAG,EAAE8D,GAAG,EAAE2pB,EAAE,EAAEC,EAAE,EAAEltB,EAAEiG,EAAEtG,EAAE,KAAKE,EAAE,OAAO,CAAC,IAAI,IAAIzL,EAAK4L,IAAIwG,GAAG,IAAIzD,GAAG,IAAI/C,EAAE0+E,WAAWl/E,EAAEI,EAAEmD,GAAG/C,IAAIF,GAAG,IAAIK,GAAG,IAAIH,EAAE0+E,WAAWp7E,EAAE1D,EAAEO,GAAG,IAAIH,EAAE0+E,WAAW9+E,GACnfI,EAAE2+E,UAAUjtF,QAAW,QAAQ0C,EAAE4L,EAAEs+E,aAAkB3+E,EAAEK,EAAEA,EAAE5L,EAAE,OAAO,CAAC,GAAG4L,IAAIiG,EAAE,MAAMpG,EAA8C,GAA5CF,IAAI6G,KAAKymB,IAAIlqB,IAAIvD,EAAEI,GAAGD,IAAIG,KAAKotB,IAAI/sB,IAAImD,EAAE1D,GAAM,QAAQxL,EAAE4L,EAAEi0F,aAAa,MAAUt0F,GAAJK,EAAEL,GAAMkjC,UAAU,CAAC7iC,EAAE5L,CAAC,CAACoS,GAAG,IAAIhH,IAAI,IAAI8D,EAAE,KAAK,CAACmqE,MAAMjuE,EAAE4U,IAAI9Q,EAAE,MAAMkD,EAAE,IAAI,CAACA,EAAEA,GAAG,CAACinE,MAAM,EAAEr5D,IAAI,EAAE,MAAM5N,EAAE,KAA+C,IAA1C+yF,GAAG,CAAC5E,YAAY1uF,EAAE2uF,eAAepuF,GAAGwjF,IAAG,EAAOklB,GAAErvG,EAAE,OAAOqvG,IAAG,GAAOjpG,GAAJpG,EAAEqvG,IAAMvqB,MAAM,KAAoB,KAAf9kF,EAAEytG,eAAoB,OAAOrnG,EAAEA,EAAEm+E,OAAOvkF,EAAEqvG,GAAEjpG,OAAO,KAAK,OAAOipG,IAAG,CAACrvG,EAAEqvG,GAAE,IAAI,IAAIhuF,EAAErhB,EAAEskF,UAAU,GAAG,KAAa,KAARtkF,EAAEwkF,OAAY,OAAOxkF,EAAEw7E,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAOn6D,EAAE,CAAC,IAAIjhB,EAAEihB,EAAEk9E,cAAcjG,EAAEj3E,EAAEqjE,cAActwF,EAAE4L,EAAEmjF,UAAU7gD,EAAEluC,EAAEm1G,wBAAwBvpG,EAAE69F,cAAc79F,EAAE1K,KAAK8K,EAAE+nG,GAAGnoG,EAAE1K,KAAK8K,GAAGk4F,GAAGlkG,EAAEi9G,oCAAoC/uE,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI53B,EAAE1K,EAAEmjF,UAAUsG,cAAc,IAAI/+E,EAAEm0E,SAASn0E,EAAE05B,YAAY,GAAG,IAAI15B,EAAEm0E,UAAUn0E,EAAEsqF,iBAAiBtqF,EAAEu9B,YAAYv9B,EAAEsqF,iBAAiB,MAAyC,QAAQ,MAAMxnF,MAAMtN,EAAE,MAAO,CAAC,MAAMq4F,GAAGgX,GAAEvvG,EAAEA,EAAEukF,OAAOgU,EAAE,CAAa,GAAG,QAAfnyF,EAAEpG,EAAE+kF,SAAoB,CAAC3+E,EAAEm+E,OAAOvkF,EAAEukF,OAAO8qB,GAAEjpG,EAAE,KAAK,CAACipG,GAAErvG,EAAEukF,MAAM,CAACljE,EAAEouF,GAAGA,IAAG,CAAW,CAwCld+E,CAAGpuG,EAAEO,GAAGiqG,GAAGjqG,EAAEP,GAAGyuF,GAAG6E,IAAIvP,KAAKsP,GAAGC,GAAGD,GAAG,KAAKrzF,EAAE9V,QAAQqW,EAAEsqG,GAAGtqG,EAAEP,EAAElD,GAAGsiF,KAAKoc,GAAEjiG,EAAEqY,GAAEjY,EAAE2xG,GAAGrnB,WAAWpqF,CAAC,MAAMmG,EAAE9V,QAAQqW,EAAsF,GAApFwrG,KAAKA,IAAG,EAAGC,GAAGhsG,EAAEisG,GAAGnvG,GAAGjD,EAAEmG,EAAE4gF,aAAa,IAAI/mF,IAAIuqG,GAAG,MAhOmJ,SAAYpkG,GAAG,GAAGg0C,IAAI,oBAAoBA,GAAGq6D,kBAAkB,IAAIr6D,GAAGq6D,kBAAkBnuB,GAAGlgF,OAAE,EAAO,OAAuB,IAAhBA,EAAE9V,QAAQk0F,OAAW,CAAC,MAAMxkF,GAAG,CAAC,CAgOxR00G,CAAG/tG,EAAEw8E,WAAawvB,GAAGvsG,EAAE2R,MAAQ,OAAO/X,EAAE,IAAIM,EAAE8F,EAAEuuG,mBAAmBhuG,EAAE,EAAEA,EAAE3G,EAAEnO,OAAO8U,IAAIzD,EAAElD,EAAE2G,GAAGrG,EAAE4C,EAAEtS,MAAM,CAAC65G,eAAevnG,EAAEgsD,MAAM26C,OAAO3mG,EAAE2mG,SAAS,GAAGM,GAAG,MAAMA,IAAG,EAAG/jG,EAAEgkG,GAAGA,GAAG,KAAKhkG,EAAE,KAAQ,EAAHisG,KAAO,IAAIjsG,EAAEo1E,KAAK63B,KAAKpzG,EAAEmG,EAAE4gF,aAAa,KAAO,EAAF/mF,GAAKmG,IAAImsG,GAAGD,MAAMA,GAAG,EAAEC,GAAGnsG,GAAGksG,GAAG,EAAE5V,IAAgB,CAFxFkY,CAAGxuG,EAAEpG,EAAE2G,EAAErG,EAAE,CAAC,QAAQoxG,GAAGrnB,WAAWnnF,EAAE8U,GAAE1X,CAAC,CAAC,OAAO,IAAI,CAGhc,SAAS+yG,KAAK,GAAG,OAAOjB,GAAG,CAAC,IAAIhsG,EAAEwhF,GAAGyqB,IAAIryG,EAAE0xG,GAAGrnB,WAAW1jF,EAAEqR,GAAE,IAAmC,GAA/B05F,GAAGrnB,WAAW,KAAKryE,GAAE,GAAG5R,EAAE,GAAGA,EAAK,OAAOgsG,GAAG,IAAI9xG,GAAE,MAAO,CAAmB,GAAlB8F,EAAEgsG,GAAGA,GAAG,KAAKC,GAAG,EAAK,KAAO,EAAFzQ,IAAK,MAAMp0F,MAAMtN,EAAE,MAAM,IAAIgD,EAAE0+F,GAAO,IAALA,IAAG,EAAMyN,GAAEjpG,EAAE9V,QAAQ,OAAO++G,IAAG,CAAC,IAAIpvG,EAAEovG,GAAEtvG,EAAEE,EAAE6kF,MAAM,GAAG,KAAa,GAARuqB,GAAE7qB,OAAU,CAAC,IAAI7kF,EAAEM,EAAE69F,UAAU,GAAG,OAAOn+F,EAAE,CAAC,IAAI,IAAI8D,EAAE,EAAEA,EAAE9D,EAAE9N,OAAO4R,IAAI,CAAC,IAAI2pB,EAAEztB,EAAE8D,GAAG,IAAI4rG,GAAEjiF,EAAE,OAAOiiF,IAAG,CAAC,IAAIhiF,EAAEgiF,GAAE,OAAOhiF,EAAEmuD,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGk0B,GAAG,EAAEriF,EAAEptB,GAAG,IAAIE,EAAEktB,EAAEy3D,MAAM,GAAG,OAAO3kF,EAAEA,EAAEokF,OAAOl3D,EAAEgiF,GAAElvG,OAAO,KAAK,OAAOkvG,IAAG,CAAK,IAAIvvG,GAARutB,EAAEgiF,IAAUtqB,QAAQxwF,EAAE84B,EAAEk3D,OAAa,GAANsrB,GAAGxiF,GAAMA,IACnfD,EAAE,CAACiiF,GAAE,KAAK,KAAK,CAAC,GAAG,OAAOvvG,EAAE,CAACA,EAAEykF,OAAOhwF,EAAE86G,GAAEvvG,EAAE,KAAK,CAACuvG,GAAE96G,CAAC,CAAC,CAAC,CAAC,IAAI8sB,EAAEphB,EAAEqkF,UAAU,GAAG,OAAOjjE,EAAE,CAAC,IAAIjhB,EAAEihB,EAAEyjE,MAAM,GAAG,OAAO1kF,EAAE,CAACihB,EAAEyjE,MAAM,KAAK,EAAE,CAAC,IAAIwT,EAAEl4F,EAAE2kF,QAAQ3kF,EAAE2kF,QAAQ,KAAK3kF,EAAEk4F,CAAC,OAAO,OAAOl4F,EAAE,CAAC,CAACivG,GAAEpvG,CAAC,CAAC,CAAC,GAAG,KAAoB,KAAfA,EAAEwtG,eAAoB,OAAO1tG,EAAEA,EAAEwkF,OAAOtkF,EAAEovG,GAAEtvG,OAAOC,EAAE,KAAK,OAAOqvG,IAAG,CAAK,GAAG,KAAa,MAApBpvG,EAAEovG,IAAY7qB,OAAY,OAAOvkF,EAAEu7E,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGk0B,GAAG,EAAEzvG,EAAEA,EAAEskF,QAAQ,IAAInwF,EAAE6L,EAAE8kF,QAAQ,GAAG,OAAO3wF,EAAE,CAACA,EAAEmwF,OAAOtkF,EAAEskF,OAAO8qB,GAAEj7G,EAAE,MAAM4L,CAAC,CAACqvG,GAAEpvG,EAAEskF,MAAM,CAAC,CAAC,IAAIjiD,EAAEl8B,EAAE9V,QAAQ,IAAI++G,GAAE/sE,EAAE,OAAO+sE,IAAG,CAAK,IAAI3kG,GAAR3K,EAAEsvG,IAAUvqB,MAAM,GAAG,KAAoB,KAAf/kF,EAAE0tG,eAAoB,OAClf/iG,EAAEA,EAAE65E,OAAOxkF,EAAEsvG,GAAE3kG,OAAO1K,EAAE,IAAID,EAAEuiC,EAAE,OAAO+sE,IAAG,CAAK,GAAG,KAAa,MAApB1vG,EAAE0vG,IAAY7qB,OAAY,IAAI,OAAO7kF,EAAE67E,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGm0B,GAAG,EAAEhwG,GAAG,CAAC,MAAMk5F,GAAI0W,GAAE5vG,EAAEA,EAAE4kF,OAAOsU,EAAG,CAAC,GAAGl5F,IAAII,EAAE,CAACsvG,GAAE,KAAK,MAAMrvG,CAAC,CAAC,IAAIu4F,EAAE54F,EAAEolF,QAAQ,GAAG,OAAOwT,EAAE,CAACA,EAAEhU,OAAO5kF,EAAE4kF,OAAO8qB,GAAE9W,EAAE,MAAMv4F,CAAC,CAACqvG,GAAE1vG,EAAE4kF,MAAM,CAAC,CAAU,GAATqd,GAAE1+F,EAAEw5F,KAAQtiD,IAAI,oBAAoBA,GAAGy6D,sBAAsB,IAAIz6D,GAAGy6D,sBAAsBvuB,GAAGlgF,EAAE,CAAC,MAAMyyF,GAAI,CAACv4F,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ0X,GAAErR,EAAE+qG,GAAGrnB,WAAWrqF,CAAC,CAAC,CAAC,OAAM,CAAE,CAAC,SAAS80G,GAAG1uG,EAAEpG,EAAE2G,GAAyBP,EAAEu7F,GAAGv7F,EAAjBpG,EAAEkqG,GAAG9jG,EAAfpG,EAAE2pG,GAAGhjG,EAAE3G,GAAY,GAAY,GAAGA,EAAEinG,KAAI,OAAO7gG,IAAIqhF,GAAGrhF,EAAE,EAAEpG,GAAG2yG,GAAGvsG,EAAEpG,GAAG,CACze,SAASuvG,GAAEnpG,EAAEpG,EAAE2G,GAAG,GAAG,IAAIP,EAAEo1E,IAAIs5B,GAAG1uG,EAAEA,EAAEO,QAAQ,KAAK,OAAO3G,GAAG,CAAC,GAAG,IAAIA,EAAEw7E,IAAI,CAACs5B,GAAG90G,EAAEoG,EAAEO,GAAG,KAAK,CAAM,GAAG,IAAI3G,EAAEw7E,IAAI,CAAC,IAAIl7E,EAAEN,EAAEmjF,UAAU,GAAG,oBAAoBnjF,EAAE1K,KAAKg1G,0BAA0B,oBAAoBhqG,EAAEiqG,oBAAoB,OAAOC,KAAKA,GAAGzS,IAAIz3F,IAAI,CAAuBN,EAAE2hG,GAAG3hG,EAAjBoG,EAAEikG,GAAGrqG,EAAfoG,EAAEujG,GAAGhjG,EAAEP,GAAY,GAAY,GAAGA,EAAE6gG,KAAI,OAAOjnG,IAAIynF,GAAGznF,EAAE,EAAEoG,GAAGusG,GAAG3yG,EAAEoG,IAAI,KAAK,CAAC,CAACpG,EAAEA,EAAEukF,MAAM,CAAC,CACnV,SAASqmB,GAAGxkG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE8F,EAAEukG,UAAU,OAAOrqG,GAAGA,EAAEuoF,OAAO7oF,GAAGA,EAAEinG,KAAI7gG,EAAE8gF,aAAa9gF,EAAE6gF,eAAetgF,EAAE4+F,KAAIn/F,IAAIwrG,GAAEjrG,KAAKA,IAAI,IAAIkoG,IAAG,IAAIA,KAAM,UAAF+C,MAAeA,IAAG,IAAI75F,KAAIg5F,GAAGyC,GAAGptG,EAAE,GAAG2rG,IAAIprG,GAAGgsG,GAAGvsG,EAAEpG,EAAE,CAAC,SAAS+0G,GAAG3uG,EAAEpG,GAAG,IAAIA,IAAI,KAAY,EAAPoG,EAAEzR,MAAQqL,EAAE,GAAGA,EAAEqnC,GAAU,KAAQ,WAAfA,KAAK,MAAuBA,GAAG,WAAW,IAAI1gC,EAAEsgG,KAAc,QAAV7gG,EAAE26F,GAAG36F,EAAEpG,MAAcynF,GAAGrhF,EAAEpG,EAAE2G,GAAGgsG,GAAGvsG,EAAEO,GAAG,CAAC,SAAS2mG,GAAGlnG,GAAG,IAAIpG,EAAEoG,EAAEs+E,cAAc/9E,EAAE,EAAE,OAAO3G,IAAI2G,EAAE3G,EAAEk+F,WAAW6W,GAAG3uG,EAAEO,EAAE,CACjZ,SAAS+pG,GAAGtqG,EAAEpG,GAAG,IAAI2G,EAAE,EAAE,OAAOP,EAAEo1E,KAAK,KAAK,GAAG,IAAIl7E,EAAE8F,EAAE+8E,UAAcjgF,EAAEkD,EAAEs+E,cAAc,OAAOxhF,IAAIyD,EAAEzD,EAAEg7F,WAAW,MAAM,KAAK,GAAG59F,EAAE8F,EAAE+8E,UAAU,MAAM,QAAQ,MAAM31E,MAAMtN,EAAE,MAAO,OAAOI,GAAGA,EAAEuoF,OAAO7oF,GAAG+0G,GAAG3uG,EAAEO,EAAE,CAQqK,SAASwsG,GAAG/sG,EAAEpG,GAAG,OAAOklF,GAAG9+E,EAAEpG,EAAE,CACjZ,SAASg1G,GAAG5uG,EAAEpG,EAAE2G,EAAErG,GAAG9G,KAAKgiF,IAAIp1E,EAAE5M,KAAKuV,IAAIpI,EAAEnN,KAAKurF,QAAQvrF,KAAKsrF,MAAMtrF,KAAK+qF,OAAO/qF,KAAK2pF,UAAU3pF,KAAKlE,KAAKkE,KAAKqkG,YAAY,KAAKrkG,KAAKwb,MAAM,EAAExb,KAAKlG,IAAI,KAAKkG,KAAKwkG,aAAah+F,EAAExG,KAAK8mG,aAAa9mG,KAAKkrF,cAAclrF,KAAK0nG,YAAY1nG,KAAK+kG,cAAc,KAAK/kG,KAAK7E,KAAK2L,EAAE9G,KAAKi0G,aAAaj0G,KAAKgrF,MAAM,EAAEhrF,KAAKskG,UAAU,KAAKtkG,KAAK6mG,WAAW7mG,KAAKgnG,MAAM,EAAEhnG,KAAK8qF,UAAU,IAAI,CAAC,SAASsZ,GAAGx3F,EAAEpG,EAAE2G,EAAErG,GAAG,OAAO,IAAI00G,GAAG5uG,EAAEpG,EAAE2G,EAAErG,EAAE,CAAC,SAAS+qG,GAAGjlG,GAAiB,UAAdA,EAAEA,EAAEzN,aAAuByN,EAAE6uG,iBAAiB,CAEpd,SAAS9V,GAAG/4F,EAAEpG,GAAG,IAAI2G,EAAEP,EAAEk+E,UACuB,OADb,OAAO39E,IAAGA,EAAEi3F,GAAGx3F,EAAEo1E,IAAIx7E,EAAEoG,EAAE2I,IAAI3I,EAAEzR,OAAQkpG,YAAYz3F,EAAEy3F,YAAYl3F,EAAErR,KAAK8Q,EAAE9Q,KAAKqR,EAAEw8E,UAAU/8E,EAAE+8E,UAAUx8E,EAAE29E,UAAUl+E,EAAEA,EAAEk+E,UAAU39E,IAAIA,EAAEq3F,aAAah+F,EAAE2G,EAAErR,KAAK8Q,EAAE9Q,KAAKqR,EAAE69E,MAAM,EAAE79E,EAAE8mG,aAAa,EAAE9mG,EAAEm3F,UAAU,MAAMn3F,EAAE69E,MAAc,SAARp+E,EAAEo+E,MAAe79E,EAAE05F,WAAWj6F,EAAEi6F,WAAW15F,EAAE65F,MAAMp6F,EAAEo6F,MAAM75F,EAAEm+E,MAAM1+E,EAAE0+E,MAAMn+E,EAAE43F,cAAcn4F,EAAEm4F,cAAc53F,EAAE+9E,cAAct+E,EAAEs+E,cAAc/9E,EAAEu6F,YAAY96F,EAAE86F,YAAYlhG,EAAEoG,EAAEk6F,aAAa35F,EAAE25F,aAAa,OAAOtgG,EAAE,KAAK,CAACwgG,MAAMxgG,EAAEwgG,MAAMD,aAAavgG,EAAEugG,cAC/e55F,EAAEo+E,QAAQ3+E,EAAE2+E,QAAQp+E,EAAEqO,MAAM5O,EAAE4O,MAAMrO,EAAErT,IAAI8S,EAAE9S,IAAWqT,CAAC,CACxD,SAAS04F,GAAGj5F,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,GAAG,IAAIF,EAAE,EAAM,GAAJO,EAAE8F,EAAK,oBAAoBA,EAAEilG,GAAGjlG,KAAKrG,EAAE,QAAQ,GAAG,kBAAkBqG,EAAErG,EAAE,OAAOqG,EAAE,OAAOA,GAAG,KAAK2zE,EAAG,OAAOylB,GAAG74F,EAAE6zD,SAASt3D,EAAEjD,EAAED,GAAG,KAAKg6E,EAAGj6E,EAAE,EAAEmD,GAAG,EAAE,MAAM,KAAK+2E,EAAG,OAAO7zE,EAAEw3F,GAAG,GAAGj3F,EAAE3G,EAAI,EAAFkD,IAAO26F,YAAY5jB,EAAG7zE,EAAEo6F,MAAMvgG,EAAEmG,EAAE,KAAKi0E,EAAG,OAAOj0E,EAAEw3F,GAAG,GAAGj3F,EAAE3G,EAAEkD,IAAK26F,YAAYxjB,EAAGj0E,EAAEo6F,MAAMvgG,EAAEmG,EAAE,KAAKk0E,EAAG,OAAOl0E,EAAEw3F,GAAG,GAAGj3F,EAAE3G,EAAEkD,IAAK26F,YAAYvjB,EAAGl0E,EAAEo6F,MAAMvgG,EAAEmG,EAAE,KAAKq0E,EAAG,OAAOuyB,GAAGrmG,EAAEzD,EAAEjD,EAAED,GAAG,QAAQ,GAAG,kBAAkBoG,GAAG,OAAOA,EAAE,OAAOA,EAAEs1E,UAAU,KAAKxB,EAAGn6E,EAAE,GAAG,MAAMqG,EAAE,KAAK+zE,EAAGp6E,EAAE,EAAE,MAAMqG,EAAE,KAAKg0E,EAAGr6E,EAAE,GACpf,MAAMqG,EAAE,KAAKm0E,EAAGx6E,EAAE,GAAG,MAAMqG,EAAE,KAAKo0E,EAAGz6E,EAAE,GAAGO,EAAE,KAAK,MAAM8F,EAAE,MAAMoH,MAAMtN,EAAE,IAAI,MAAMkG,EAAEA,SAASA,EAAE,KAAuD,OAAjDpG,EAAE49F,GAAG79F,EAAE4G,EAAE3G,EAAEkD,IAAK26F,YAAYz3F,EAAEpG,EAAE1K,KAAKgL,EAAEN,EAAEwgG,MAAMvgG,EAASD,CAAC,CAAC,SAASw/F,GAAGp5F,EAAEpG,EAAE2G,EAAErG,GAA2B,OAAxB8F,EAAEw3F,GAAG,EAAEx3F,EAAE9F,EAAEN,IAAKwgG,MAAM75F,EAASP,CAAC,CAAC,SAAS4mG,GAAG5mG,EAAEpG,EAAE2G,EAAErG,GAAuE,OAApE8F,EAAEw3F,GAAG,GAAGx3F,EAAE9F,EAAEN,IAAK69F,YAAYpjB,EAAGr0E,EAAEo6F,MAAM75F,EAAEP,EAAE+8E,UAAU,CAAC2tB,UAAS,GAAW1qG,CAAC,CAAC,SAASg5F,GAAGh5F,EAAEpG,EAAE2G,GAA8B,OAA3BP,EAAEw3F,GAAG,EAAEx3F,EAAE,KAAKpG,IAAKwgG,MAAM75F,EAASP,CAAC,CAC5W,SAASm5F,GAAGn5F,EAAEpG,EAAE2G,GAA8J,OAA3J3G,EAAE49F,GAAG,EAAE,OAAOx3F,EAAEo0D,SAASp0D,EAAEo0D,SAAS,GAAGp0D,EAAE2I,IAAI/O,IAAKwgG,MAAM75F,EAAE3G,EAAEmjF,UAAU,CAACsG,cAAcrjF,EAAEqjF,cAAcyrB,gBAAgB,KAAK5V,eAAel5F,EAAEk5F,gBAAuBt/F,CAAC,CACtL,SAASm1G,GAAG/uG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG1J,KAAKgiF,IAAIx7E,EAAExG,KAAKiwF,cAAcrjF,EAAE5M,KAAKq6G,aAAar6G,KAAKmxG,UAAUnxG,KAAKlJ,QAAQkJ,KAAK07G,gBAAgB,KAAK17G,KAAKw6G,eAAe,EAAEx6G,KAAKo5G,aAAap5G,KAAK+yG,eAAe/yG,KAAK+2D,QAAQ,KAAK/2D,KAAKw5G,iBAAiB,EAAEx5G,KAAKkuF,WAAWF,GAAG,GAAGhuF,KAAKq5G,gBAAgBrrB,IAAI,GAAGhuF,KAAK2tF,eAAe3tF,KAAKs6G,cAAct6G,KAAK86G,iBAAiB96G,KAAKs5G,aAAat5G,KAAK0tF,YAAY1tF,KAAKytF,eAAeztF,KAAKwtF,aAAa,EAAExtF,KAAK4tF,cAAcI,GAAG,GAAGhuF,KAAK0uG,iBAAiB5nG,EAAE9G,KAAKm7G,mBAAmBzxG,EAAE1J,KAAK47G,gCAC/e,IAAI,CAAC,SAASC,GAAGjvG,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,EAAEF,EAAEJ,EAAE8D,GAAgN,OAA7M2C,EAAE,IAAI+uG,GAAG/uG,EAAEpG,EAAE2G,EAAEhH,EAAE8D,GAAG,IAAIzD,GAAGA,EAAE,GAAE,IAAKC,IAAID,GAAG,IAAIA,EAAE,EAAEC,EAAE29F,GAAG,EAAE,KAAK,KAAK59F,GAAGoG,EAAE9V,QAAQ2P,EAAEA,EAAEkjF,UAAU/8E,EAAEnG,EAAEykF,cAAc,CAAC3mF,QAAQuC,EAAEkpF,aAAa7iF,EAAE8/B,MAAM,KAAKmlE,YAAY,KAAK0J,0BAA0B,MAAMrU,GAAGhhG,GAAUmG,CAAC,CACzP,SAASmvG,GAAGnvG,GAAG,IAAIA,EAAE,OAAOk1F,GAAuBl1F,EAAE,CAAC,GAAGi+E,GAA1Bj+E,EAAEA,EAAEoiG,mBAA8BpiG,GAAG,IAAIA,EAAEo1E,IAAI,MAAMhuE,MAAMtN,EAAE,MAAM,IAAIF,EAAEoG,EAAE,EAAE,CAAC,OAAOpG,EAAEw7E,KAAK,KAAK,EAAEx7E,EAAEA,EAAEmjF,UAAU5yB,QAAQ,MAAMnqD,EAAE,KAAK,EAAE,GAAG01F,GAAG97F,EAAE1K,MAAM,CAAC0K,EAAEA,EAAEmjF,UAAUkZ,0CAA0C,MAAMj2F,CAAC,EAAEpG,EAAEA,EAAEukF,MAAM,OAAO,OAAOvkF,GAAG,MAAMwN,MAAMtN,EAAE,KAAM,CAAC,GAAG,IAAIkG,EAAEo1E,IAAI,CAAC,IAAI70E,EAAEP,EAAE9Q,KAAK,GAAGwmG,GAAGn1F,GAAG,OAAOu1F,GAAG91F,EAAEO,EAAE3G,EAAE,CAAC,OAAOA,CAAC,CACpW,SAASw1G,GAAGpvG,EAAEpG,EAAE2G,EAAErG,EAAE4C,EAAEjD,EAAEF,EAAEJ,EAAE8D,GAAwK,OAArK2C,EAAEivG,GAAG1uG,EAAErG,GAAE,EAAG8F,EAAElD,EAAEjD,EAAEF,EAAEJ,EAAE8D,IAAK8sD,QAAQglD,GAAG,MAAM5uG,EAAEP,EAAE9V,SAAsB2P,EAAEuhG,GAAhBlhG,EAAE2mG,KAAI/jG,EAAE4jG,GAAGngG,KAAeoB,cAAS,IAAS/H,GAAG,OAAOA,EAAEA,EAAE,KAAK2hG,GAAGh7F,EAAE1G,EAAEiD,GAAGkD,EAAE9V,QAAQkwG,MAAMt9F,EAAEukF,GAAGrhF,EAAElD,EAAE5C,GAAGqyG,GAAGvsG,EAAE9F,GAAU8F,CAAC,CAAC,SAASqvG,GAAGrvG,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI4C,EAAElD,EAAE1P,QAAQ2P,EAAEgnG,KAAIlnG,EAAE+mG,GAAG5jG,GAAsL,OAAnLyD,EAAE4uG,GAAG5uG,GAAG,OAAO3G,EAAEuwD,QAAQvwD,EAAEuwD,QAAQ5pD,EAAE3G,EAAEusG,eAAe5lG,GAAE3G,EAAEwhG,GAAGvhG,EAAEF,IAAK4I,QAAQ,CAAC5K,QAAQqI,GAAuB,QAApB9F,OAAE,IAASA,EAAE,KAAKA,KAAaN,EAAE+H,SAASzH,GAAe,QAAZ8F,EAAEu7F,GAAGz+F,EAAElD,EAAED,MAAc8lG,GAAGz/F,EAAElD,EAAEnD,EAAEE,GAAG4hG,GAAGz7F,EAAElD,EAAEnD,IAAWA,CAAC,CAC3b,SAAS21G,GAAGtvG,GAAe,OAAZA,EAAEA,EAAE9V,SAAcw0F,OAAyB1+E,EAAE0+E,MAAMtJ,IAAoDp1E,EAAE0+E,MAAM3B,WAAhF,IAA0F,CAAC,SAASwyB,GAAGvvG,EAAEpG,GAAqB,GAAG,QAArBoG,EAAEA,EAAEs+E,gBAA2B,OAAOt+E,EAAEu+E,WAAW,CAAC,IAAIh+E,EAAEP,EAAE83F,UAAU93F,EAAE83F,UAAU,IAAIv3F,GAAGA,EAAE3G,EAAE2G,EAAE3G,CAAC,CAAC,CAAC,SAAS41G,GAAGxvG,EAAEpG,GAAG21G,GAAGvvG,EAAEpG,IAAIoG,EAAEA,EAAEk+E,YAAYqxB,GAAGvvG,EAAEpG,EAAE,CAnB7SsxG,GAAG,SAASlrG,EAAEpG,EAAE2G,GAAG,GAAG,OAAOP,EAAE,GAAGA,EAAEm4F,gBAAgBv+F,EAAEg+F,cAAcxC,GAAGlrG,QAAQmwG,IAAG,MAAO,CAAC,GAAG,KAAKr6F,EAAEo6F,MAAM75F,IAAI,KAAa,IAAR3G,EAAEwkF,OAAW,OAAOic,IAAG,EAzE1I,SAAYr6F,EAAEpG,EAAE2G,GAAG,OAAO3G,EAAEw7E,KAAK,KAAK,EAAE8wB,GAAGtsG,GAAGy+F,KAAK,MAAM,KAAK,EAAEgE,GAAGziG,GAAG,MAAM,KAAK,EAAE87F,GAAG97F,EAAE1K,OAAO8mG,GAAGp8F,GAAG,MAAM,KAAK,EAAEsiG,GAAGtiG,EAAEA,EAAEmjF,UAAUsG,eAAe,MAAM,KAAK,GAAG,IAAInpF,EAAEN,EAAE1K,KAAKqmF,SAASz4E,EAAElD,EAAEu+F,cAAc3tG,MAAMyqG,GAAEwE,GAAGv/F,EAAE6/F,eAAe7/F,EAAE6/F,cAAcj9F,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArB5C,EAAEN,EAAE0kF,eAA2B,OAAG,OAAOpkF,EAAEqkF,YAAkB0W,GAAEsH,GAAY,EAAVA,GAAEryG,SAAW0P,EAAEwkF,OAAO,IAAI,MAAQ,KAAK79E,EAAE3G,EAAE8kF,MAAMub,YAAmByM,GAAG1mG,EAAEpG,EAAE2G,IAAG00F,GAAEsH,GAAY,EAAVA,GAAEryG,SAA8B,QAAnB8V,EAAE+kG,GAAG/kG,EAAEpG,EAAE2G,IAAmBP,EAAE2+E,QAAQ,MAAKsW,GAAEsH,GAAY,EAAVA,GAAEryG,SAAW,MAAM,KAAK,GAC7d,GADgegQ,EAAE,KAAKqG,EACrf3G,EAAEqgG,YAAe,KAAa,IAARj6F,EAAEo+E,OAAW,CAAC,GAAGlkF,EAAE,OAAO4tG,GAAG9nG,EAAEpG,EAAE2G,GAAG3G,EAAEwkF,OAAO,GAAG,CAA6F,GAA1E,QAAlBthF,EAAElD,EAAE0kF,iBAAyBxhF,EAAE2qG,UAAU,KAAK3qG,EAAE8qG,KAAK,KAAK9qG,EAAEuiG,WAAW,MAAMpK,GAAEsH,GAAEA,GAAEryG,SAAYgQ,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAON,EAAEwgG,MAAM,EAAEiL,GAAGrlG,EAAEpG,EAAE2G,GAAG,OAAOwkG,GAAG/kG,EAAEpG,EAAE2G,EAAE,CAwE7GkvG,CAAGzvG,EAAEpG,EAAE2G,GAAG85F,GAAG,KAAa,OAARr6F,EAAEo+E,MAAmB,MAAMic,IAAG,EAAGhD,IAAG,KAAa,QAARz9F,EAAEwkF,QAAgB4Y,GAAGp9F,EAAE88F,GAAG98F,EAAEgV,OAAiB,OAAVhV,EAAEwgG,MAAM,EAASxgG,EAAEw7E,KAAK,KAAK,EAAE,IAAIl7E,EAAEN,EAAE1K,KAAK22G,GAAG7lG,EAAEpG,GAAGoG,EAAEpG,EAAEg+F,aAAa,IAAI96F,EAAEw4F,GAAG17F,EAAEu7F,GAAEjrG,SAASi2C,GAAGvmC,EAAE2G,GAAGzD,EAAE4gG,GAAG,KAAK9jG,EAAEM,EAAE8F,EAAElD,EAAEyD,GAAG,IAAI1G,EAAEkkG,KACvI,OAD4InkG,EAAEwkF,OAAO,EAAE,kBAAkBthF,GAAG,OAAOA,GAAG,oBAAoBA,EAAEi8C,aAAQ,IAASj8C,EAAEw4E,UAAU17E,EAAEw7E,IAAI,EAAEx7E,EAAE0kF,cAAc,KAAK1kF,EAAEkhG,YAC1e,KAAKpF,GAAGx7F,IAAIL,GAAE,EAAGm8F,GAAGp8F,IAAIC,GAAE,EAAGD,EAAE0kF,cAAc,OAAOxhF,EAAE+8D,YAAO,IAAS/8D,EAAE+8D,MAAM/8D,EAAE+8D,MAAM,KAAKghC,GAAGjhG,GAAGkD,EAAE+lG,QAAQX,GAAGtoG,EAAEmjF,UAAUjgF,EAAEA,EAAEslG,gBAAgBxoG,EAAEqpG,GAAGrpG,EAAEM,EAAE8F,EAAEO,GAAG3G,EAAEqsG,GAAG,KAAKrsG,EAAEM,GAAE,EAAGL,EAAE0G,KAAK3G,EAAEw7E,IAAI,EAAEiiB,IAAGx9F,GAAGo9F,GAAGr9F,GAAGirG,GAAG,KAAKjrG,EAAEkD,EAAEyD,GAAG3G,EAAEA,EAAE8kF,OAAc9kF,EAAE,KAAK,GAAGM,EAAEN,EAAE69F,YAAYz3F,EAAE,CAAqF,OAApF6lG,GAAG7lG,EAAEpG,GAAGoG,EAAEpG,EAAEg+F,aAAuB19F,GAAV4C,EAAE5C,EAAEu7E,OAAUv7E,EAAEs7E,UAAU57E,EAAE1K,KAAKgL,EAAE4C,EAAElD,EAAEw7E,IAQtU,SAAYp1E,GAAG,GAAG,oBAAoBA,EAAE,OAAOilG,GAAGjlG,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEs1E,YAAgBtB,EAAG,OAAO,GAAG,GAAGh0E,IAAIm0E,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAR2Lu7B,CAAGx1G,GAAG8F,EAAE+hG,GAAG7nG,EAAE8F,GAAUlD,GAAG,KAAK,EAAElD,EAAEwrG,GAAG,KAAKxrG,EAAEM,EAAE8F,EAAEO,GAAG,MAAMP,EAAE,KAAK,EAAEpG,EAAEgsG,GAAG,KAAKhsG,EAAEM,EAAE8F,EAAEO,GAAG,MAAMP,EAAE,KAAK,GAAGpG,EAAEkrG,GAAG,KAAKlrG,EAAEM,EAAE8F,EAAEO,GAAG,MAAMP,EAAE,KAAK,GAAGpG,EAAEorG,GAAG,KAAKprG,EAAEM,EAAE6nG,GAAG7nG,EAAEhL,KAAK8Q,GAAGO,GAAG,MAAMP,EAAE,MAAMoH,MAAMtN,EAAE,IACvgBI,EAAE,IAAK,CAAC,OAAON,EAAE,KAAK,EAAE,OAAOM,EAAEN,EAAE1K,KAAK4N,EAAElD,EAAEg+F,aAA2CwN,GAAGplG,EAAEpG,EAAEM,EAArC4C,EAAElD,EAAE69F,cAAcv9F,EAAE4C,EAAEilG,GAAG7nG,EAAE4C,GAAcyD,GAAG,KAAK,EAAE,OAAOrG,EAAEN,EAAE1K,KAAK4N,EAAElD,EAAEg+F,aAA2CgO,GAAG5lG,EAAEpG,EAAEM,EAArC4C,EAAElD,EAAE69F,cAAcv9F,EAAE4C,EAAEilG,GAAG7nG,EAAE4C,GAAcyD,GAAG,KAAK,EAAEP,EAAE,CAAO,GAANkmG,GAAGtsG,GAAM,OAAOoG,EAAE,MAAMoH,MAAMtN,EAAE,MAAMI,EAAEN,EAAEg+F,aAA+B96F,GAAlBjD,EAAED,EAAE0kF,eAAkB3mF,QAAQq/C,GAAGh3C,EAAEpG,GAAG+hG,GAAG/hG,EAAEM,EAAE,KAAKqG,GAAG,IAAI5G,EAAEC,EAAE0kF,cAA0B,GAAZpkF,EAAEP,EAAEhC,QAAWkC,EAAEupF,aAAY,CAAC,GAAGvpF,EAAE,CAAClC,QAAQuC,EAAEkpF,cAAa,EAAG/iD,MAAM1mC,EAAE0mC,MAAM6uE,0BAA0Bv1G,EAAEu1G,0BAA0B1J,YAAY7rG,EAAE6rG,aAAa5rG,EAAEkhG,YAAYC,UAChflhG,EAAED,EAAE0kF,cAAczkF,EAAU,IAARD,EAAEwkF,MAAU,CAAuBxkF,EAAE+hC,GAAG37B,EAAEpG,EAAEM,EAAEqG,EAAjCzD,EAAEymG,GAAGn8F,MAAMtN,EAAE,MAAMF,IAAmB,MAAMoG,CAAC,CAAM,GAAG9F,IAAI4C,EAAE,CAAuBlD,EAAE+hC,GAAG37B,EAAEpG,EAAEM,EAAEqG,EAAjCzD,EAAEymG,GAAGn8F,MAAMtN,EAAE,MAAMF,IAAmB,MAAMoG,CAAC,CAAM,IAAIo3F,GAAG/C,GAAGz6F,EAAEmjF,UAAUsG,cAAchL,YAAY8e,GAAGv9F,EAAEy9F,IAAE,EAAGC,GAAG,KAAK/2F,EAAEi5F,GAAG5/F,EAAE,KAAKM,EAAEqG,GAAG3G,EAAE8kF,MAAMn+E,EAAEA,GAAGA,EAAE69E,OAAe,EAAT79E,EAAE69E,MAAS,KAAK79E,EAAEA,EAAEo+E,OAAQ,KAAI,CAAM,GAAL0Z,KAAQn+F,IAAI4C,EAAE,CAAClD,EAAEmrG,GAAG/kG,EAAEpG,EAAE2G,GAAG,MAAMP,CAAC,CAAC6kG,GAAG7kG,EAAEpG,EAAEM,EAAEqG,EAAE,CAAC3G,EAAEA,EAAE8kF,KAAK,CAAC,OAAO9kF,EAAE,KAAK,EAAE,OAAOyiG,GAAGziG,GAAG,OAAOoG,GAAGg4F,GAAGp+F,GAAGM,EAAEN,EAAE1K,KAAK4N,EAAElD,EAAEg+F,aAAa/9F,EAAE,OAAOmG,EAAEA,EAAEm4F,cAAc,KAAKx+F,EAAEmD,EAAEs3D,SAASm/B,GAAGr5F,EAAE4C,GAAGnD,EAAE,KAAK,OAAOE,GAAG05F,GAAGr5F,EAAEL,KAAKD,EAAEwkF,OAAO,IACnfunB,GAAG3lG,EAAEpG,GAAGirG,GAAG7kG,EAAEpG,EAAED,EAAE4G,GAAG3G,EAAE8kF,MAAM,KAAK,EAAE,OAAO,OAAO1+E,GAAGg4F,GAAGp+F,GAAG,KAAK,KAAK,GAAG,OAAO8sG,GAAG1mG,EAAEpG,EAAE2G,GAAG,KAAK,EAAE,OAAO27F,GAAGtiG,EAAEA,EAAEmjF,UAAUsG,eAAenpF,EAAEN,EAAEg+F,aAAa,OAAO53F,EAAEpG,EAAE8kF,MAAM6a,GAAG3/F,EAAE,KAAKM,EAAEqG,GAAGskG,GAAG7kG,EAAEpG,EAAEM,EAAEqG,GAAG3G,EAAE8kF,MAAM,KAAK,GAAG,OAAOxkF,EAAEN,EAAE1K,KAAK4N,EAAElD,EAAEg+F,aAA2CkN,GAAG9kG,EAAEpG,EAAEM,EAArC4C,EAAElD,EAAE69F,cAAcv9F,EAAE4C,EAAEilG,GAAG7nG,EAAE4C,GAAcyD,GAAG,KAAK,EAAE,OAAOskG,GAAG7kG,EAAEpG,EAAEA,EAAEg+F,aAAar3F,GAAG3G,EAAE8kF,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAOmmB,GAAG7kG,EAAEpG,EAAEA,EAAEg+F,aAAaxjC,SAAS7zD,GAAG3G,EAAE8kF,MAAM,KAAK,GAAG1+E,EAAE,CACxZ,GADyZ9F,EAAEN,EAAE1K,KAAKqmF,SAASz4E,EAAElD,EAAEg+F,aAAa/9F,EAAED,EAAEu+F,cAClfx+F,EAAEmD,EAAEtS,MAAMyqG,GAAEwE,GAAGv/F,EAAE6/F,eAAe7/F,EAAE6/F,cAAcpgG,EAAK,OAAOE,EAAE,GAAG+zF,GAAG/zF,EAAErP,MAAMmP,IAAI,GAAGE,EAAEu6D,WAAWt3D,EAAEs3D,WAAWghC,GAAGlrG,QAAQ,CAAC0P,EAAEmrG,GAAG/kG,EAAEpG,EAAE2G,GAAG,MAAMP,CAAC,OAAO,IAAc,QAAVnG,EAAED,EAAE8kF,SAAiB7kF,EAAEskF,OAAOvkF,GAAG,OAAOC,GAAG,CAAC,IAAIN,EAAEM,EAAEqgG,aAAa,GAAG,OAAO3gG,EAAE,CAACI,EAAEE,EAAE6kF,MAAM,IAAI,IAAIrhF,EAAE9D,EAAE4gG,aAAa,OAAO98F,GAAG,CAAC,GAAGA,EAAE8sD,UAAUjwD,EAAE,CAAC,GAAG,IAAIL,EAAEu7E,IAAI,EAAC/3E,EAAE+9F,IAAI,EAAE76F,GAAGA,IAAK60E,IAAI,EAAE,IAAIpuD,EAAEntB,EAAEihG,YAAY,GAAG,OAAO9zE,EAAE,CAAY,IAAIC,GAAfD,EAAEA,EAAEk0E,QAAeC,QAAQ,OAAOl0E,EAAE5pB,EAAEg8F,KAAKh8F,GAAGA,EAAEg8F,KAAKpyE,EAAEoyE,KAAKpyE,EAAEoyE,KAAKh8F,GAAG2pB,EAAEm0E,QAAQ99F,CAAC,CAAC,CAACxD,EAAEugG,OAAO75F,EAAgB,QAAdlD,EAAExD,EAAEqkF,aAAqB7gF,EAAE+8F,OAAO75F,GAAGy5F,GAAGngG,EAAEskF,OAClf59E,EAAE3G,GAAGL,EAAE6gG,OAAO75F,EAAE,KAAK,CAAClD,EAAEA,EAAEg8F,IAAI,CAAC,MAAM,GAAG,KAAKx/F,EAAEu7E,IAAIz7E,EAAEE,EAAE3K,OAAO0K,EAAE1K,KAAK,KAAK2K,EAAE6kF,WAAW,GAAG,KAAK7kF,EAAEu7E,IAAI,CAAY,GAAG,QAAdz7E,EAAEE,EAAEskF,QAAmB,MAAM/2E,MAAMtN,EAAE,MAAMH,EAAEygG,OAAO75F,EAAgB,QAAdhH,EAAEI,EAAEukF,aAAqB3kF,EAAE6gG,OAAO75F,GAAGy5F,GAAGrgG,EAAE4G,EAAE3G,GAAGD,EAAEE,EAAE8kF,OAAO,MAAMhlF,EAAEE,EAAE6kF,MAAM,GAAG,OAAO/kF,EAAEA,EAAEwkF,OAAOtkF,OAAO,IAAIF,EAAEE,EAAE,OAAOF,GAAG,CAAC,GAAGA,IAAIC,EAAE,CAACD,EAAE,KAAK,KAAK,CAAa,GAAG,QAAfE,EAAEF,EAAEglF,SAAoB,CAAC9kF,EAAEskF,OAAOxkF,EAAEwkF,OAAOxkF,EAAEE,EAAE,KAAK,CAACF,EAAEA,EAAEwkF,MAAM,CAACtkF,EAAEF,CAAC,CAACkrG,GAAG7kG,EAAEpG,EAAEkD,EAAEs3D,SAAS7zD,GAAG3G,EAAEA,EAAE8kF,KAAK,CAAC,OAAO9kF,EAAE,KAAK,EAAE,OAAOkD,EAAElD,EAAE1K,KAAKgL,EAAEN,EAAEg+F,aAAaxjC,SAASj0B,GAAGvmC,EAAE2G,GAAWrG,EAAEA,EAAV4C,EAAEw9F,GAAGx9F,IAAUlD,EAAEwkF,OAAO,EAAEymB,GAAG7kG,EAAEpG,EAAEM,EAAEqG,GACpf3G,EAAE8kF,MAAM,KAAK,GAAG,OAAgB5hF,EAAEilG,GAAX7nG,EAAEN,EAAE1K,KAAY0K,EAAEg+F,cAA6BoN,GAAGhlG,EAAEpG,EAAEM,EAAtB4C,EAAEilG,GAAG7nG,EAAEhL,KAAK4N,GAAcyD,GAAG,KAAK,GAAG,OAAO4kG,GAAGnlG,EAAEpG,EAAEA,EAAE1K,KAAK0K,EAAEg+F,aAAar3F,GAAG,KAAK,GAAG,OAAOrG,EAAEN,EAAE1K,KAAK4N,EAAElD,EAAEg+F,aAAa96F,EAAElD,EAAE69F,cAAcv9F,EAAE4C,EAAEilG,GAAG7nG,EAAE4C,GAAG+oG,GAAG7lG,EAAEpG,GAAGA,EAAEw7E,IAAI,EAAEsgB,GAAGx7F,IAAI8F,GAAE,EAAGg2F,GAAGp8F,IAAIoG,GAAE,EAAGmgC,GAAGvmC,EAAE2G,GAAGoiG,GAAG/oG,EAAEM,EAAE4C,GAAGmmG,GAAGrpG,EAAEM,EAAE4C,EAAEyD,GAAG0lG,GAAG,KAAKrsG,EAAEM,GAAE,EAAG8F,EAAEO,GAAG,KAAK,GAAG,OAAOunG,GAAG9nG,EAAEpG,EAAE2G,GAAG,KAAK,GAAG,OAAO8kG,GAAGrlG,EAAEpG,EAAE2G,GAAG,MAAM6G,MAAMtN,EAAE,IAAIF,EAAEw7E,KAAM,EAYxC,IAAIu6B,GAAG,oBAAoBC,YAAYA,YAAY,SAAS5vG,GAAGohC,QAAQh/B,MAAMpC,EAAE,EAAE,SAAS6vG,GAAG7vG,GAAG5M,KAAK08G,cAAc9vG,CAAC,CACjI,SAAS07B,GAAG17B,GAAG5M,KAAK08G,cAAc9vG,CAAC,CAC5J,SAAS+vG,GAAG/vG,GAAG,SAASA,GAAG,IAAIA,EAAEy4E,UAAU,IAAIz4E,EAAEy4E,UAAU,KAAKz4E,EAAEy4E,SAAS,CAAC,SAASu3B,GAAGhwG,GAAG,SAASA,GAAG,IAAIA,EAAEy4E,UAAU,IAAIz4E,EAAEy4E,UAAU,KAAKz4E,EAAEy4E,WAAW,IAAIz4E,EAAEy4E,UAAU,iCAAiCz4E,EAAE04E,WAAW,CAAC,SAASu3B,KAAK,CAExa,SAASC,GAAGlwG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,IAAIjD,EAAE0G,EAAEspG,oBAAoB,GAAGhwG,EAAE,CAAC,IAAIF,EAAEE,EAAE,GAAG,oBAAoBiD,EAAE,CAAC,IAAIvD,EAAEuD,EAAEA,EAAE,WAAW,IAAIkD,EAAEsvG,GAAG31G,GAAGJ,EAAE7G,KAAKsN,EAAE,CAAC,CAACqvG,GAAGz1G,EAAED,EAAEqG,EAAElD,EAAE,MAAMnD,EADxJ,SAAYqG,EAAEpG,EAAE2G,EAAErG,EAAE4C,GAAG,GAAGA,EAAE,CAAC,GAAG,oBAAoB5C,EAAE,CAAC,IAAIL,EAAEK,EAAEA,EAAE,WAAW,IAAI8F,EAAEsvG,GAAG31G,GAAGE,EAAEnH,KAAKsN,EAAE,CAAC,CAAC,IAAIrG,EAAEy1G,GAAGx1G,EAAEM,EAAE8F,EAAE,EAAE,MAAK,EAAG,EAAG,GAAGiwG,IAAmF,OAA/EjwG,EAAE6pG,oBAAoBlwG,EAAEqG,EAAEqyF,IAAI14F,EAAEzP,QAAQ6nG,GAAG,IAAI/xF,EAAEy4E,SAASz4E,EAAE48B,WAAW58B,GAAG8tG,KAAYn0G,CAAC,CAAC,KAAKmD,EAAEkD,EAAEw4E,WAAWx4E,EAAE6hC,YAAY/kC,GAAG,GAAG,oBAAoB5C,EAAE,CAAC,IAAIX,EAAEW,EAAEA,EAAE,WAAW,IAAI8F,EAAEsvG,GAAGjyG,GAAG9D,EAAE7G,KAAKsN,EAAE,CAAC,CAAC,IAAI3C,EAAE4xG,GAAGjvG,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAGiwG,IAA0G,OAAtGjwG,EAAE6pG,oBAAoBxsG,EAAE2C,EAAEqyF,IAAIh1F,EAAEnT,QAAQ6nG,GAAG,IAAI/xF,EAAEy4E,SAASz4E,EAAE48B,WAAW58B,GAAG8tG,IAAG,WAAWuB,GAAGz1G,EAAEyD,EAAEkD,EAAErG,EAAE,IAAUmD,CAAC,CACpU8yG,CAAG5vG,EAAE3G,EAAEoG,EAAElD,EAAE5C,GAAG,OAAOo1G,GAAG31G,EAAE,CAHpL+hC,GAAGnpC,UAAUwmD,OAAO82D,GAAGt9G,UAAUwmD,OAAO,SAAS/4C,GAAG,IAAIpG,EAAExG,KAAK08G,cAAc,GAAG,OAAOl2G,EAAE,MAAMwN,MAAMtN,EAAE,MAAMu1G,GAAGrvG,EAAEpG,EAAE,KAAK,KAAK,EAAE8hC,GAAGnpC,UAAU69G,QAAQP,GAAGt9G,UAAU69G,QAAQ,WAAW,IAAIpwG,EAAE5M,KAAK08G,cAAc,GAAG,OAAO9vG,EAAE,CAAC5M,KAAK08G,cAAc,KAAK,IAAIl2G,EAAEoG,EAAEqjF,cAAcyqB,IAAG,WAAWuB,GAAG,KAAKrvG,EAAE,KAAK,KAAK,IAAGpG,EAAEy4F,IAAI,IAAI,CAAC,EACzT32D,GAAGnpC,UAAU89G,2BAA2B,SAASrwG,GAAG,GAAGA,EAAE,CAAC,IAAIpG,EAAEgoF,KAAK5hF,EAAE,CAAC6iF,UAAU,KAAK9pF,OAAOiH,EAAEmjF,SAASvpF,GAAG,IAAI,IAAI2G,EAAE,EAAEA,EAAE+hF,GAAG72F,QAAQ,IAAImO,GAAGA,EAAE0oF,GAAG/hF,GAAG4iF,SAAS5iF,KAAK+hF,GAAG17E,OAAOrG,EAAE,EAAEP,GAAG,IAAIO,GAAG0iF,GAAGjjF,EAAE,CAAC,EAEXyhF,GAAG,SAASzhF,GAAG,OAAOA,EAAEo1E,KAAK,KAAK,EAAE,IAAIx7E,EAAEoG,EAAE+8E,UAAU,GAAGnjF,EAAE1P,QAAQo0F,cAAc8E,aAAa,CAAC,IAAI7iF,EAAEmgF,GAAG9mF,EAAEgnF,cAAc,IAAIrgF,IAAIghF,GAAG3nF,EAAI,EAAF2G,GAAKgsG,GAAG3yG,EAAE+X,MAAK,KAAO,EAAF6pF,MAAOkN,GAAG/2F,KAAI,IAAI2kF,MAAM,CAAC,MAAM,KAAK,GAAGwX,IAAG,WAAW,IAAIl0G,EAAE+gG,GAAG36F,EAAE,GAAG,GAAG,OAAOpG,EAAE,CAAC,IAAI2G,EAAEsgG,KAAIpB,GAAG7lG,EAAEoG,EAAE,EAAEO,EAAE,CAAC,IAAGivG,GAAGxvG,EAAE,GAAG,EAC/b0hF,GAAG,SAAS1hF,GAAG,GAAG,KAAKA,EAAEo1E,IAAI,CAAC,IAAIx7E,EAAE+gG,GAAG36F,EAAE,WAAW,GAAG,OAAOpG,EAAa6lG,GAAG7lG,EAAEoG,EAAE,UAAX6gG,MAAwB2O,GAAGxvG,EAAE,UAAU,CAAC,EAAE2hF,GAAG,SAAS3hF,GAAG,GAAG,KAAKA,EAAEo1E,IAAI,CAAC,IAAIx7E,EAAE8mG,GAAG1gG,GAAGO,EAAEo6F,GAAG36F,EAAEpG,GAAG,GAAG,OAAO2G,EAAak/F,GAAGl/F,EAAEP,EAAEpG,EAAXinG,MAAgB2O,GAAGxvG,EAAEpG,EAAE,CAAC,EAAEgoF,GAAG,WAAW,OAAOhwE,EAAC,EAAEiwE,GAAG,SAAS7hF,EAAEpG,GAAG,IAAI2G,EAAEqR,GAAE,IAAI,OAAOA,GAAE5R,EAAEpG,GAAG,CAAC,QAAQgY,GAAErR,CAAC,CAAC,EAClSm8E,GAAG,SAAS18E,EAAEpG,EAAE2G,GAAG,OAAO3G,GAAG,IAAK,QAAyB,GAAjBs9E,EAAGl3E,EAAEO,GAAG3G,EAAE2G,EAAEtX,KAAQ,UAAUsX,EAAErR,MAAM,MAAM0K,EAAE,CAAC,IAAI2G,EAAEP,EAAEO,EAAEq8B,YAAYr8B,EAAEA,EAAEq8B,WAAsF,IAA3Er8B,EAAEA,EAAEwgC,iBAAiB,cAAcxiC,KAAKE,UAAU,GAAG7E,GAAG,mBAAuBA,EAAE,EAAEA,EAAE2G,EAAE9U,OAAOmO,IAAI,CAAC,IAAIM,EAAEqG,EAAE3G,GAAG,GAAGM,IAAI8F,GAAG9F,EAAEo2G,OAAOtwG,EAAEswG,KAAK,CAAC,IAAIxzG,EAAEkgF,GAAG9iF,GAAG,IAAI4C,EAAE,MAAMsK,MAAMtN,EAAE,KAAKu8E,EAAGn8E,GAAGg9E,EAAGh9E,EAAE4C,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAW86E,GAAG53E,EAAEO,GAAG,MAAM,IAAK,SAAmB,OAAV3G,EAAE2G,EAAE/V,QAAewxD,GAAGh8C,IAAIO,EAAE4nG,SAASvuG,GAAE,GAAI,EAAEujF,GAAG0wB,GAAGzwB,GAAG0wB,GACpa,IAAIyC,GAAG,CAACC,uBAAsB,EAAGC,OAAO,CAAC3zB,GAAGgQ,GAAG9P,GAAGC,GAAGC,GAAG2wB,KAAK6C,GAAG,CAACC,wBAAwBztB,GAAG0tB,WAAW,EAAElkF,QAAQ,SAASmkF,oBAAoB,aAC1IC,GAAG,CAACF,WAAWF,GAAGE,WAAWlkF,QAAQgkF,GAAGhkF,QAAQmkF,oBAAoBH,GAAGG,oBAAoBE,eAAeL,GAAGK,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,gBAAgB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBn+B,EAAGwpB,uBAAuB4U,wBAAwB,SAAS1xG,GAAW,OAAO,QAAfA,EAAEy+E,GAAGz+E,IAAmB,KAAKA,EAAE+8E,SAAS,EAAE4zB,wBAAwBD,GAAGC,yBARjN,WAAc,OAAO,IAAI,EASpUgB,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,mCAAmC,GAAG,qBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAGC,YAAYD,GAAGE,cAAc,IAAIlyB,GAAGgyB,GAAGG,OAAOvB,IAAI98D,GAAGk+D,EAAE,CAAC,MAAMlyG,IAAG,CAAC,CAAC6sB,EAAQ0mD,mDAAmDg9B,GAC/Y1jF,EAAQylF,aAAa,SAAStyG,EAAEpG,GAAG,IAAI2G,EAAE,EAAE/U,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAIukH,GAAGn2G,GAAG,MAAMwN,MAAMtN,EAAE,MAAM,OAbuH,SAAYkG,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE,EAAE1O,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAAC8pF,SAAS5B,EAAG/qE,IAAI,MAAMzO,EAAE,KAAK,GAAGA,EAAEk6D,SAASp0D,EAAEqjF,cAAczpF,EAAEs/F,eAAe34F,EAAE,CAa1RI,CAAGX,EAAEpG,EAAE,KAAK2G,EAAE,EAAEssB,EAAQ0lF,WAAW,SAASvyG,EAAEpG,GAAG,IAAIm2G,GAAG/vG,GAAG,MAAMoH,MAAMtN,EAAE,MAAM,IAAIyG,GAAE,EAAGrG,EAAE,GAAG4C,EAAE6yG,GAA4P,OAAzP,OAAO/1G,QAAG,IAASA,KAAI,IAAKA,EAAE44G,sBAAsBjyG,GAAE,QAAI,IAAS3G,EAAEkoG,mBAAmB5nG,EAAEN,EAAEkoG,uBAAkB,IAASloG,EAAE20G,qBAAqBzxG,EAAElD,EAAE20G,qBAAqB30G,EAAEq1G,GAAGjvG,EAAE,GAAE,EAAG,KAAK,EAAKO,EAAE,EAAGrG,EAAE4C,GAAGkD,EAAEqyF,IAAIz4F,EAAE1P,QAAQ6nG,GAAG,IAAI/xF,EAAEy4E,SAASz4E,EAAE48B,WAAW58B,GAAU,IAAI6vG,GAAGj2G,EAAE,EACrfizB,EAAQ4lF,YAAY,SAASzyG,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEy4E,SAAS,OAAOz4E,EAAE,IAAIpG,EAAEoG,EAAEoiG,gBAAgB,QAAG,IAASxoG,EAAE,CAAC,GAAG,oBAAoBoG,EAAE+4C,OAAO,MAAM3xC,MAAMtN,EAAE,MAAiC,MAA3BkG,EAAExN,OAAOyU,KAAKjH,GAAGmC,KAAK,KAAWiF,MAAMtN,EAAE,IAAIkG,GAAI,CAAqC,OAA5BA,EAAE,QAAVA,EAAEy+E,GAAG7kF,IAAc,KAAKoG,EAAE+8E,SAAkB,EAAElwD,EAAQ6lF,UAAU,SAAS1yG,GAAG,OAAO8tG,GAAG9tG,EAAE,EAAE6sB,EAAQ8lF,QAAQ,SAAS3yG,EAAEpG,EAAE2G,GAAG,IAAIyvG,GAAGp2G,GAAG,MAAMwN,MAAMtN,EAAE,MAAM,OAAOo2G,GAAG,KAAKlwG,EAAEpG,GAAE,EAAG2G,EAAE,EAC/YssB,EAAQ+lF,YAAY,SAAS5yG,EAAEpG,EAAE2G,GAAG,IAAIwvG,GAAG/vG,GAAG,MAAMoH,MAAMtN,EAAE,MAAM,IAAII,EAAE,MAAMqG,GAAGA,EAAEsyG,iBAAiB,KAAK/1G,GAAE,EAAGjD,EAAE,GAAGF,EAAEg2G,GAAyO,GAAtO,OAAOpvG,QAAG,IAASA,KAAI,IAAKA,EAAEiyG,sBAAsB11G,GAAE,QAAI,IAASyD,EAAEuhG,mBAAmBjoG,EAAE0G,EAAEuhG,uBAAkB,IAASvhG,EAAEguG,qBAAqB50G,EAAE4G,EAAEguG,qBAAqB30G,EAAEw1G,GAAGx1G,EAAE,KAAKoG,EAAE,EAAE,MAAMO,EAAEA,EAAE,KAAKzD,EAAE,EAAGjD,EAAEF,GAAGqG,EAAEqyF,IAAIz4F,EAAE1P,QAAQ6nG,GAAG/xF,GAAM9F,EAAE,IAAI8F,EAAE,EAAEA,EAAE9F,EAAEzO,OAAOuU,IAA2BlD,GAAhBA,GAAPyD,EAAErG,EAAE8F,IAAO8yG,aAAgBvyG,EAAEwyG,SAAS,MAAMn5G,EAAEo1G,gCAAgCp1G,EAAEo1G,gCAAgC,CAACzuG,EAAEzD,GAAGlD,EAAEo1G,gCAAgCt7G,KAAK6M,EACvhBzD,GAAG,OAAO,IAAI4+B,GAAG9hC,EAAE,EAAEizB,EAAQksB,OAAO,SAAS/4C,EAAEpG,EAAE2G,GAAG,IAAIyvG,GAAGp2G,GAAG,MAAMwN,MAAMtN,EAAE,MAAM,OAAOo2G,GAAG,KAAKlwG,EAAEpG,GAAE,EAAG2G,EAAE,EAAEssB,EAAQmmF,uBAAuB,SAAShzG,GAAG,IAAIgwG,GAAGhwG,GAAG,MAAMoH,MAAMtN,EAAE,KAAK,QAAOkG,EAAE6pG,sBAAqBiE,IAAG,WAAWoC,GAAG,KAAK,KAAKlwG,GAAE,GAAG,WAAWA,EAAE6pG,oBAAoB,KAAK7pG,EAAEqyF,IAAI,IAAI,GAAE,KAAG,EAAM,EAAExlE,EAAQomF,wBAAwBpF,GAC/UhhF,EAAQqmF,oCAAoC,SAASlzG,EAAEpG,EAAE2G,EAAErG,GAAG,IAAI81G,GAAGzvG,GAAG,MAAM6G,MAAMtN,EAAE,MAAM,GAAG,MAAMkG,QAAG,IAASA,EAAEoiG,gBAAgB,MAAMh7F,MAAMtN,EAAE,KAAK,OAAOo2G,GAAGlwG,EAAEpG,EAAE2G,GAAE,EAAGrG,EAAE,EAAE2yB,EAAQH,QAAQ,+DC/T7L,SAASymF,IAEP,GAC4C,qBAAnClB,gCAC4C,oBAA5CA,+BAA+BkB,SAcxC,IAEElB,+BAA+BkB,SAASA,EAC1C,CAAE,MAAOrxG,GAGPs/B,QAAQh/B,MAAMN,EAChB,CACF,CAKEqxG,GACAxhC,EAAO9kD,QAAU,EAAjB8kD,qCCzBe93E,EAAEg4E,EAAQ,IAASx0E,EAAE9H,OAAOk+E,IAAI,iBAAiBzsD,EAAEzxB,OAAOk+E,IAAI,kBAAkBxsD,EAAEz0B,OAAOD,UAAUE,eAAewoB,EAAEphB,EAAE05E,mDAAmDqxB,kBAAkB9qG,EAAE,CAAC6O,KAAI,EAAGzb,KAAI,EAAGkmH,QAAO,EAAGC,UAAS,GAChP,SAASt5G,EAAEwG,EAAEP,EAAErG,GAAG,IAAIC,EAAEM,EAAE,CAAC,EAAE4C,EAAE,KAAKvD,EAAE,KAAiF,IAAIK,UAAhF,IAASD,IAAImD,EAAE,GAAGnD,QAAG,IAASqG,EAAE2I,MAAM7L,EAAE,GAAGkD,EAAE2I,UAAK,IAAS3I,EAAE9S,MAAMqM,EAAEyG,EAAE9S,KAAc8S,EAAEinB,EAAEv0B,KAAKsN,EAAEpG,KAAKE,EAAErH,eAAemH,KAAKM,EAAEN,GAAGoG,EAAEpG,IAAI,GAAG2G,GAAGA,EAAEyhG,aAAa,IAAIpoG,KAAKoG,EAAEO,EAAEyhG,kBAAe,IAAS9nG,EAAEN,KAAKM,EAAEN,GAAGoG,EAAEpG,IAAI,MAAM,CAAC07E,SAASj4E,EAAEnO,KAAKqR,EAAEoI,IAAI7L,EAAE5P,IAAIqM,EAAExR,MAAMmS,EAAEu+F,OAAOx9E,EAAE/wB,QAAQ,CAAoB2iC,EAAQymF,IAAIv5G,EAAE8yB,EAAQ0mF,KAAKx5G,4BCD7V,IAAIitB,EAAEzxB,OAAOk+E,IAAI,iBAAiBx4D,EAAE1lB,OAAOk+E,IAAI,gBAAgB35E,EAAEvE,OAAOk+E,IAAI,kBAAkB15E,EAAExE,OAAOk+E,IAAI,qBAAqB/5E,EAAEnE,OAAOk+E,IAAI,kBAAkBz5E,EAAEzE,OAAOk+E,IAAI,kBAAkBnvE,EAAE/O,OAAOk+E,IAAI,iBAAiBh6E,EAAElE,OAAOk+E,IAAI,qBAAqBv3C,EAAE3mC,OAAOk+E,IAAI,kBAAkBzlF,EAAEuH,OAAOk+E,IAAI,cAActlF,EAAEoH,OAAOk+E,IAAI,cAAc5pD,EAAEt0B,OAAOC,SACzW,IAAImc,EAAE,CAACwwF,UAAU,WAAW,OAAM,CAAE,EAAEI,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAED,gBAAgB,WAAW,GAAGzwF,EAAEpf,OAAO0vC,OAAOwvD,EAAE,CAAC,EAAE,SAASsD,EAAEh1F,EAAEpG,EAAEkD,GAAG1J,KAAKrL,MAAMiY,EAAE5M,KAAK+2D,QAAQvwD,EAAExG,KAAKulG,KAAKjH,EAAEt+F,KAAKyvG,QAAQ/lG,GAAG6U,CAAC,CACwI,SAASwgF,IAAI,CAAyB,SAAS8C,EAAEj1F,EAAEpG,EAAEkD,GAAG1J,KAAKrL,MAAMiY,EAAE5M,KAAK+2D,QAAQvwD,EAAExG,KAAKulG,KAAKjH,EAAEt+F,KAAKyvG,QAAQ/lG,GAAG6U,CAAC,CADxPqjF,EAAEziG,UAAUs8G,iBAAiB,CAAC,EACpQ7Z,EAAEziG,UAAUihH,SAAS,SAASxzG,EAAEpG,GAAG,GAAG,kBAAkBoG,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMoH,MAAM,yHAAyHhU,KAAKyvG,QAAQR,gBAAgBjvG,KAAK4M,EAAEpG,EAAE,WAAW,EAAEo7F,EAAEziG,UAAUkhH,YAAY,SAASzzG,GAAG5M,KAAKyvG,QAAQN,mBAAmBnvG,KAAK4M,EAAE,cAAc,EAAgBmyF,EAAE5/F,UAAUyiG,EAAEziG,UAAsF,IAAI4iG,EAAEF,EAAE1iG,UAAU,IAAI4/F,EACrfgD,EAAE1/F,YAAYw/F,EAAErjF,EAAEujF,EAAEH,EAAEziG,WAAW4iG,EAAEuN,sBAAqB,EAAG,IAAIrL,EAAErrG,MAAMC,QAAQimG,EAAE1/F,OAAOD,UAAUE,eAAe+oG,EAAE,CAACtxG,QAAQ,MAAMqyG,EAAE,CAAC5zF,KAAI,EAAGzb,KAAI,EAAGkmH,QAAO,EAAGC,UAAS,GACtK,SAASpW,EAAEj9F,EAAEpG,EAAEkD,GAAG,IAAI5C,EAAEqG,EAAE,CAAC,EAAElD,EAAE,KAAK9D,EAAE,KAAK,GAAG,MAAMK,EAAE,IAAIM,UAAK,IAASN,EAAE1M,MAAMqM,EAAEK,EAAE1M,UAAK,IAAS0M,EAAE+O,MAAMtL,EAAE,GAAGzD,EAAE+O,KAAK/O,EAAEs4F,EAAEx/F,KAAKkH,EAAEM,KAAKqiG,EAAE9pG,eAAeyH,KAAKqG,EAAErG,GAAGN,EAAEM,IAAI,IAAIP,EAAEnO,UAAUC,OAAO,EAAE,GAAG,IAAIkO,EAAE4G,EAAE6zD,SAASt3D,OAAO,GAAG,EAAEnD,EAAE,CAAC,IAAI,IAAIE,EAAE7N,MAAM2N,GAAGstB,EAAE,EAAEA,EAAEttB,EAAEstB,IAAIptB,EAAEotB,GAAGz7B,UAAUy7B,EAAE,GAAG1mB,EAAE6zD,SAASv6D,CAAC,CAAC,GAAGmG,GAAGA,EAAEgiG,aAAa,IAAI9nG,KAAKP,EAAEqG,EAAEgiG,kBAAe,IAASzhG,EAAErG,KAAKqG,EAAErG,GAAGP,EAAEO,IAAI,MAAM,CAACo7E,SAAStuD,EAAE93B,KAAK8Q,EAAE2I,IAAItL,EAAEnQ,IAAIqM,EAAExR,MAAMwY,EAAEk4F,OAAO+C,EAAEtxG,QAAQ,CAChV,SAASizG,EAAEn9F,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEs1E,WAAWtuD,CAAC,CAAoG,IAAIw2E,EAAE,OAAO,SAAS2B,EAAEn/F,EAAEpG,GAAG,MAAM,kBAAkBoG,GAAG,OAAOA,GAAG,MAAMA,EAAE2I,IAA7K,SAAgB3I,GAAG,IAAIpG,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAIoG,EAAEiR,QAAQ,SAAQ,SAASjR,GAAG,OAAOpG,EAAEoG,EAAE,GAAE,CAA+E0zG,CAAO,GAAG1zG,EAAE2I,KAAK/O,EAAEgB,SAAS,GAAG,CAC/W,SAASimG,EAAE7gG,EAAEpG,EAAEkD,EAAE5C,EAAEqG,GAAG,IAAIlD,SAAS2C,EAAK,cAAc3C,GAAG,YAAYA,IAAE2C,EAAE,MAAK,IAAIzG,GAAE,EAAG,GAAG,OAAOyG,EAAEzG,GAAE,OAAQ,OAAO8D,GAAG,IAAK,SAAS,IAAK,SAAS9D,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOyG,EAAEs1E,UAAU,KAAKtuD,EAAE,KAAK/L,EAAE1hB,GAAE,GAAI,GAAGA,EAAE,OAAWgH,EAAEA,EAANhH,EAAEyG,GAASA,EAAE,KAAK9F,EAAE,IAAIilG,EAAE5lG,EAAE,GAAGW,EAAEm9F,EAAE92F,IAAIzD,EAAE,GAAG,MAAMkD,IAAIlD,EAAEkD,EAAEiR,QAAQusF,EAAE,OAAO,KAAKqD,EAAEtgG,EAAE3G,EAAEkD,EAAE,IAAG,SAASkD,GAAG,OAAOA,CAAC,KAAI,MAAMO,IAAI48F,EAAE58F,KAAKA,EADnW,SAAWP,EAAEpG,GAAG,MAAM,CAAC07E,SAAStuD,EAAE93B,KAAK8Q,EAAE9Q,KAAKyZ,IAAI/O,EAAE1M,IAAI8S,EAAE9S,IAAInF,MAAMiY,EAAEjY,MAAM0wG,OAAOz4F,EAAEy4F,OAAO,CACyQyE,CAAE38F,EAAEzD,IAAIyD,EAAEoI,KAAKpP,GAAGA,EAAEoP,MAAMpI,EAAEoI,IAAI,IAAI,GAAGpI,EAAEoI,KAAKsI,QAAQusF,EAAE,OAAO,KAAKx9F,IAAIpG,EAAElG,KAAK6M,IAAI,EAAyB,GAAvBhH,EAAE,EAAEW,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOm9F,EAAEr3F,GAAG,IAAI,IAAIrG,EAAE,EAAEA,EAAEqG,EAAEvU,OAAOkO,IAAI,CAC/e,IAAIE,EAAEK,EAAEilG,EADwe9hG,EACrf2C,EAAErG,GAAeA,GAAGJ,GAAGsnG,EAAExjG,EAAEzD,EAAEkD,EAAEjD,EAAE0G,EAAE,MAAM,GAAG1G,EAPsU,SAAWmG,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAE6pB,GAAG7pB,EAAE6pB,IAAI7pB,EAAE,eAA0CA,EAAE,IAAI,CAO5bwR,CAAExR,GAAG,oBAAoBnG,EAAE,IAAImG,EAAEnG,EAAEnH,KAAKsN,GAAGrG,EAAE,IAAI0D,EAAE2C,EAAEq5F,QAAQC,MAA6B//F,GAAGsnG,EAA1BxjG,EAAEA,EAAE7S,MAA0BoP,EAAEkD,EAAtBjD,EAAEK,EAAEilG,EAAE9hG,EAAE1D,KAAkB4G,QAAQ,GAAG,WAAWlD,EAAE,MAAMzD,EAAEsqD,OAAOlkD,GAAGoH,MAAM,mDAAmD,oBAAoBxN,EAAE,qBAAqBpH,OAAOyU,KAAKjH,GAAGmC,KAAK,MAAM,IAAIvI,GAAG,6EAA6E,OAAOL,CAAC,CACzZ,SAAS0+D,EAAEj4D,EAAEpG,EAAEkD,GAAG,GAAG,MAAMkD,EAAE,OAAOA,EAAE,IAAI9F,EAAE,GAAGqG,EAAE,EAAmD,OAAjDsgG,EAAE7gG,EAAE9F,EAAE,GAAG,IAAG,SAAS8F,GAAG,OAAOpG,EAAElH,KAAKoK,EAAEkD,EAAEO,IAAI,IAAUrG,CAAC,CAAC,SAASuuG,EAAEzoG,GAAG,IAAI,IAAIA,EAAE2zG,QAAQ,CAAC,IAAI/5G,EAAEoG,EAAE4zG,SAAQh6G,EAAEA,KAAMq6F,MAAK,SAASr6F,GAAM,IAAIoG,EAAE2zG,UAAU,IAAI3zG,EAAE2zG,UAAQ3zG,EAAE2zG,QAAQ,EAAE3zG,EAAE4zG,QAAQh6G,EAAC,IAAE,SAASA,GAAM,IAAIoG,EAAE2zG,UAAU,IAAI3zG,EAAE2zG,UAAQ3zG,EAAE2zG,QAAQ,EAAE3zG,EAAE4zG,QAAQh6G,EAAC,KAAI,IAAIoG,EAAE2zG,UAAU3zG,EAAE2zG,QAAQ,EAAE3zG,EAAE4zG,QAAQh6G,EAAE,CAAC,GAAG,IAAIoG,EAAE2zG,QAAQ,OAAO3zG,EAAE4zG,QAAQC,QAAQ,MAAM7zG,EAAE4zG,OAAQ,CAC5Z,IAAI9K,EAAE,CAAC5+G,QAAQ,MAAM++G,EAAE,CAAChlB,WAAW,MAAMklB,EAAE,CAACrM,uBAAuBgM,EAAEhlB,wBAAwBmlB,EAAErE,kBAAkBpJ,GAAG,SAASuO,IAAI,MAAM3iG,MAAM,2DAA4D,CACzMylB,EAAQinF,SAAS,CAACpnH,IAAIurE,EAAEprE,QAAQ,SAASmT,EAAEpG,EAAEkD,GAAGm7D,EAAEj4D,GAAE,WAAWpG,EAAExE,MAAMhC,KAAK5H,UAAU,GAAEsR,EAAE,EAAE2+B,MAAM,SAASz7B,GAAG,IAAIpG,EAAE,EAAuB,OAArBq+D,EAAEj4D,GAAE,WAAWpG,GAAG,IAAUA,CAAC,EAAEm6G,QAAQ,SAAS/zG,GAAG,OAAOi4D,EAAEj4D,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAEg0G,KAAK,SAASh0G,GAAG,IAAIm9F,EAAEn9F,GAAG,MAAMoH,MAAM,yEAAyE,OAAOpH,CAAC,GAAG6sB,EAAQonF,UAAUjf,EAAEnoE,EAAQqnF,SAASp6G,EAAE+yB,EAAQsnF,SAASz6G,EAAEmzB,EAAQunF,cAAcnf,EAAEpoE,EAAQwnF,WAAWt6G,EAAE8yB,EAAQynF,SAASp4E,EAClcrP,EAAQ0mD,mDAAmD41B,EAAEt8E,EAAQ0nF,IAAIxK,EACzEl9E,EAAQ2nF,aAAa,SAASx0G,EAAEpG,EAAEkD,GAAG,GAAG,OAAOkD,QAAG,IAASA,EAAE,MAAMoH,MAAM,iFAAiFpH,EAAE,KAAK,IAAI9F,EAAE0X,EAAE,CAAC,EAAE5R,EAAEjY,OAAOwY,EAAEP,EAAE2I,IAAItL,EAAE2C,EAAE9S,IAAIqM,EAAEyG,EAAEy4F,OAAO,GAAG,MAAM7+F,EAAE,CAAoE,QAAnE,IAASA,EAAE1M,MAAMmQ,EAAEzD,EAAE1M,IAAIqM,EAAEiiG,EAAEtxG,cAAS,IAAS0P,EAAE+O,MAAMpI,EAAE,GAAG3G,EAAE+O,KAAQ3I,EAAE9Q,MAAM8Q,EAAE9Q,KAAK8yG,aAAa,IAAIroG,EAAEqG,EAAE9Q,KAAK8yG,aAAa,IAAInoG,KAAKD,EAAEs4F,EAAEx/F,KAAKkH,EAAEC,KAAK0iG,EAAE9pG,eAAeoH,KAAKK,EAAEL,QAAG,IAASD,EAAEC,SAAI,IAASF,EAAEA,EAAEE,GAAGD,EAAEC,GAAG,CAAC,IAAIA,EAAErO,UAAUC,OAAO,EAAE,GAAG,IAAIoO,EAAEK,EAAEk6D,SAASt3D,OAAO,GAAG,EAAEjD,EAAE,CAACF,EAAE3N,MAAM6N,GACrf,IAAI,IAAIotB,EAAE,EAAEA,EAAEptB,EAAEotB,IAAIttB,EAAEstB,GAAGz7B,UAAUy7B,EAAE,GAAG/sB,EAAEk6D,SAASz6D,CAAC,CAAC,MAAM,CAAC27E,SAAStuD,EAAE93B,KAAK8Q,EAAE9Q,KAAKyZ,IAAIpI,EAAErT,IAAImQ,EAAEtV,MAAMmS,EAAEu+F,OAAOl/F,EAAE,EAAEszB,EAAQ4nF,cAAc,SAASz0G,GAAqK,OAAlKA,EAAE,CAACs1E,SAAShxE,EAAEy1F,cAAc/5F,EAAE00G,eAAe10G,EAAE20G,aAAa,EAAEC,SAAS,KAAKC,SAAS,KAAKC,cAAc,KAAKC,YAAY,OAAQH,SAAS,CAACt/B,SAASt7E,EAAEu7E,SAASv1E,GAAUA,EAAE60G,SAAS70G,CAAC,EAAE6sB,EAAQ5/B,cAAcgwG,EAAEpwE,EAAQmoF,cAAc,SAASh1G,GAAG,IAAIpG,EAAEqjG,EAAEn4F,KAAK,KAAK9E,GAAY,OAATpG,EAAE1K,KAAK8Q,EAASpG,CAAC,EAAEizB,EAAQooF,UAAU,WAAW,MAAM,CAAC/qH,QAAQ,KAAK,EAC9d2iC,EAAQqoF,WAAW,SAASl1G,GAAG,MAAM,CAACs1E,SAAS77E,EAAEs/C,OAAO/4C,EAAE,EAAE6sB,EAAQsoF,eAAehY,EAAEtwE,EAAQuoF,KAAK,SAASp1G,GAAG,MAAM,CAACs1E,SAASnnF,EAAEqnF,SAAS,CAACm+B,SAAS,EAAEC,QAAQ5zG,GAAGy1E,MAAMgzB,EAAE,EAAE57E,EAAQwoF,KAAK,SAASr1G,EAAEpG,GAAG,MAAM,CAAC07E,SAAStnF,EAAEkB,KAAK8Q,EAAEklG,aAAQ,IAAStrG,EAAE,KAAKA,EAAE,EAAEizB,EAAQyoF,gBAAgB,SAASt1G,GAAG,IAAIpG,EAAEqvG,EAAEhlB,WAAWglB,EAAEhlB,WAAW,CAAC,EAAE,IAAIjkF,GAAG,CAAC,QAAQipG,EAAEhlB,WAAWrqF,CAAC,CAAC,EAAEizB,EAAQ0oF,aAAaxL,EAAEl9E,EAAQm0E,YAAY,SAAShhG,EAAEpG,GAAG,OAAOkvG,EAAE5+G,QAAQ82G,YAAYhhG,EAAEpG,EAAE,EAAEizB,EAAQo0E,WAAW,SAASjhG,GAAG,OAAO8oG,EAAE5+G,QAAQ+2G,WAAWjhG,EAAE,EAC3f6sB,EAAQ00E,cAAc,WAAW,EAAE10E,EAAQ20E,iBAAiB,SAASxhG,GAAG,OAAO8oG,EAAE5+G,QAAQs3G,iBAAiBxhG,EAAE,EAAE6sB,EAAQ/gC,UAAU,SAASkU,EAAEpG,GAAG,OAAOkvG,EAAE5+G,QAAQ4B,UAAUkU,EAAEpG,EAAE,EAAEizB,EAAQ+0E,MAAM,WAAW,OAAOkH,EAAE5+G,QAAQ03G,OAAO,EAAE/0E,EAAQq0E,oBAAoB,SAASlhG,EAAEpG,EAAEkD,GAAG,OAAOgsG,EAAE5+G,QAAQg3G,oBAAoBlhG,EAAEpG,EAAEkD,EAAE,EAAE+vB,EAAQs0E,mBAAmB,SAASnhG,EAAEpG,GAAG,OAAOkvG,EAAE5+G,QAAQi3G,mBAAmBnhG,EAAEpG,EAAE,EAAEizB,EAAQu0E,gBAAgB,SAASphG,EAAEpG,GAAG,OAAOkvG,EAAE5+G,QAAQk3G,gBAAgBphG,EAAEpG,EAAE,EACzdizB,EAAQw0E,QAAQ,SAASrhG,EAAEpG,GAAG,OAAOkvG,EAAE5+G,QAAQm3G,QAAQrhG,EAAEpG,EAAE,EAAEizB,EAAQy0E,WAAW,SAASthG,EAAEpG,EAAEkD,GAAG,OAAOgsG,EAAE5+G,QAAQo3G,WAAWthG,EAAEpG,EAAEkD,EAAE,EAAE+vB,EAAQ/iC,OAAO,SAASkW,GAAG,OAAO8oG,EAAE5+G,QAAQJ,OAAOkW,EAAE,EAAE6sB,EAAQnjC,SAAS,SAASsW,GAAG,OAAO8oG,EAAE5+G,QAAQR,SAASsW,EAAE,EAAE6sB,EAAQ80E,qBAAqB,SAAS3hG,EAAEpG,EAAEkD,GAAG,OAAOgsG,EAAE5+G,QAAQy3G,qBAAqB3hG,EAAEpG,EAAEkD,EAAE,EAAE+vB,EAAQ40E,cAAc,WAAW,OAAOqH,EAAE5+G,QAAQu3G,eAAe,EAAE50E,EAAQH,QAAQ,oCCtBlailD,EAAO9kD,QAAU,EAAjB8kD,iCCAAA,EAAO9kD,QAAU,EAAjB8kD,+BCMW,SAAS93E,EAAEmG,EAAEpG,GAAG,IAAI2G,EAAEP,EAAEvU,OAAOuU,EAAEtM,KAAKkG,GAAGoG,EAAE,KAAK,EAAEO,GAAG,CAAC,IAAIrG,EAAEqG,EAAE,IAAI,EAAEzD,EAAEkD,EAAE9F,GAAG,KAAG,EAAEP,EAAEmD,EAAElD,IAA0B,MAAMoG,EAA7BA,EAAE9F,GAAGN,EAAEoG,EAAEO,GAAGzD,EAAEyD,EAAErG,CAAc,CAAC,CAAC,SAASX,EAAEyG,GAAG,OAAO,IAAIA,EAAEvU,OAAO,KAAKuU,EAAE,EAAE,CAAC,SAAS3C,EAAE2C,GAAG,GAAG,IAAIA,EAAEvU,OAAO,OAAO,KAAK,IAAImO,EAAEoG,EAAE,GAAGO,EAAEP,EAAE6uB,MAAM,GAAGtuB,IAAI3G,EAAE,CAACoG,EAAE,GAAGO,EAAEP,EAAE,IAAI,IAAI9F,EAAE,EAAE4C,EAAEkD,EAAEvU,OAAOywC,EAAEp/B,IAAI,EAAE5C,EAAEgiC,GAAG,CAAC,IAAIjV,EAAE,GAAG/sB,EAAE,GAAG,EAAE0X,EAAE5R,EAAEinB,GAAGhM,EAAEgM,EAAE,EAAEj5B,EAAEgS,EAAEib,GAAG,GAAG,EAAEthB,EAAEiY,EAAErR,GAAG0a,EAAEne,GAAG,EAAEnD,EAAE3L,EAAE4jB,IAAI5R,EAAE9F,GAAGlM,EAAEgS,EAAEib,GAAG1a,EAAErG,EAAE+gB,IAAIjb,EAAE9F,GAAG0X,EAAE5R,EAAEinB,GAAG1mB,EAAErG,EAAE+sB,OAAQ,MAAGhM,EAAEne,GAAG,EAAEnD,EAAE3L,EAAEuS,IAA0B,MAAMP,EAA7BA,EAAE9F,GAAGlM,EAAEgS,EAAEib,GAAG1a,EAAErG,EAAE+gB,CAAc,EAAC,CAAC,OAAOrhB,CAAC,CAC3c,SAASD,EAAEqG,EAAEpG,GAAG,IAAI2G,EAAEP,EAAEw1G,UAAU57G,EAAE47G,UAAU,OAAO,IAAIj1G,EAAEA,EAAEP,EAAE7B,GAAGvE,EAAEuE,EAAE,CAAC,GAAG,kBAAkBs3G,aAAa,oBAAoBA,YAAYx2E,IAAI,CAAC,IAAIjY,EAAEyuF,YAAY5oF,EAAQyyD,aAAa,WAAW,OAAOt4D,EAAEiY,KAAK,CAAC,KAAK,CAAC,IAAInlC,EAAEklC,KAAKjlC,EAAED,EAAEmlC,MAAMpS,EAAQyyD,aAAa,WAAW,OAAOxlF,EAAEmlC,MAAMllC,CAAC,CAAC,CAAC,IAAIL,EAAE,GAAGM,EAAE,GAAGsK,EAAE,EAAE7K,EAAE,KAAKtL,EAAE,EAAE07B,GAAE,EAAGrY,GAAE,EAAGG,GAAE,EAAG+/E,EAAE,oBAAoB/kF,WAAWA,WAAW,KAAKqoF,EAAE,oBAAoBrB,aAAaA,aAAa,KAAKxB,EAAE,qBAAqBujB,aAAaA,aAAa,KACnT,SAASzgB,EAAEj1F,GAAG,IAAI,IAAIpG,EAAEL,EAAES,GAAG,OAAOJ,GAAG,CAAC,GAAG,OAAOA,EAAE+H,SAAStE,EAAErD,OAAQ,MAAGJ,EAAEirE,WAAW7kE,GAAgD,MAA9C3C,EAAErD,GAAGJ,EAAE47G,UAAU57G,EAAE+7G,eAAe97G,EAAEH,EAAEE,EAAa,CAACA,EAAEL,EAAES,EAAE,CAAC,CAAC,SAASm7F,EAAEn1F,GAAa,GAAV2R,GAAE,EAAGsjF,EAAEj1F,IAAOwR,EAAE,GAAG,OAAOjY,EAAEG,GAAG8X,GAAE,EAAG6lF,EAAEnF,OAAO,CAAC,IAAIt4F,EAAEL,EAAES,GAAG,OAAOJ,GAAG4hG,EAAErG,EAAEv7F,EAAEirE,UAAU7kE,EAAE,CAAC,CACra,SAASkyF,EAAElyF,EAAEpG,GAAG4X,GAAE,EAAGG,IAAIA,GAAE,EAAGqjF,EAAEuH,GAAGA,GAAG,GAAG1yE,GAAE,EAAG,IAAItpB,EAAEpS,EAAE,IAAS,IAAL8mG,EAAEr7F,GAAOH,EAAEF,EAAEG,GAAG,OAAOD,MAAMA,EAAEk8G,eAAe/7G,IAAIoG,IAAIi9F,MAAM,CAAC,IAAI/iG,EAAET,EAAEkI,SAAS,GAAG,oBAAoBzH,EAAE,CAACT,EAAEkI,SAAS,KAAKxT,EAAEsL,EAAEm8G,cAAc,IAAI94G,EAAE5C,EAAET,EAAEk8G,gBAAgB/7G,GAAGA,EAAEizB,EAAQyyD,eAAe,oBAAoBxiF,EAAErD,EAAEkI,SAAS7E,EAAErD,IAAIF,EAAEG,IAAI2D,EAAE3D,GAAGu7F,EAAEr7F,EAAE,MAAMyD,EAAE3D,GAAGD,EAAEF,EAAEG,EAAE,CAAC,GAAG,OAAOD,EAAE,IAAIyiC,GAAE,MAAO,CAAC,IAAIjV,EAAE1tB,EAAES,GAAG,OAAOitB,GAAGu0E,EAAErG,EAAEluE,EAAE49C,UAAUjrE,GAAGsiC,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQziC,EAAE,KAAKtL,EAAEoS,EAAEspB,GAAE,CAAE,CAAC,CAD1a,qBAAqBx4B,gBAAW,IAASA,UAAUwkH,iBAAY,IAASxkH,UAAUwkH,WAAWC,gBAAgBzkH,UAAUwkH,WAAWC,eAAehxG,KAAKzT,UAAUwkH,YAC2Q,IACzP59C,EAD6PilC,GAAE,EAAGC,EAAE,KAAKZ,GAAG,EAAEiB,EAAE,EAAE2B,GAAG,EACvc,SAASlC,IAAI,QAAOpwE,EAAQyyD,eAAe6f,EAAE3B,EAAO,CAAC,SAASqD,IAAI,GAAG,OAAO1D,EAAE,CAAC,IAAIn9F,EAAE6sB,EAAQyyD,eAAe6f,EAAEn/F,EAAE,IAAIpG,GAAE,EAAG,IAAIA,EAAEujG,GAAE,EAAGn9F,EAAE,CAAC,QAAQpG,EAAEq+D,KAAKilC,GAAE,EAAGC,EAAE,KAAK,CAAC,MAAMD,GAAE,CAAE,CAAO,GAAG,oBAAoB/K,EAAEl6B,EAAE,WAAWk6B,EAAE0O,EAAE,OAAO,GAAG,qBAAqBkV,eAAe,CAAC,IAAItN,EAAE,IAAIsN,eAAejN,EAAEL,EAAEuN,MAAMvN,EAAEwN,MAAMj6G,UAAU6kG,EAAE5oC,EAAE,WAAW6wC,EAAE7sG,YAAY,KAAK,CAAC,MAAMg8D,EAAE,WAAWy5B,EAAEmP,EAAE,EAAE,EAAE,SAASxJ,EAAEr3F,GAAGm9F,EAAEn9F,EAAEk9F,IAAIA,GAAE,EAAGjlC,IAAI,CAAC,SAASujC,EAAEx7F,EAAEpG,GAAG2iG,EAAE7K,GAAE,WAAW1xF,EAAE6sB,EAAQyyD,eAAe,GAAE1lF,EAAE,CAC5dizB,EAAQozD,sBAAsB,EAAEpzD,EAAQ4yD,2BAA2B,EAAE5yD,EAAQkzD,qBAAqB,EAAElzD,EAAQgzD,wBAAwB,EAAEhzD,EAAQqpF,mBAAmB,KAAKrpF,EAAQ8yD,8BAA8B,EAAE9yD,EAAQoyD,wBAAwB,SAASj/E,GAAGA,EAAE2B,SAAS,IAAI,EAAEkrB,EAAQspF,2BAA2B,WAAW3kG,GAAGqY,IAAIrY,GAAE,EAAG6lF,EAAEnF,GAAG,EAC1UrlE,EAAQupF,wBAAwB,SAASp2G,GAAG,EAAEA,GAAG,IAAIA,EAAEohC,QAAQh/B,MAAM,mHAAmHo7F,EAAE,EAAEx9F,EAAE3Q,KAAKkH,MAAM,IAAIyJ,GAAG,CAAC,EAAE6sB,EAAQ2yD,iCAAiC,WAAW,OAAOrxF,CAAC,EAAE0+B,EAAQwpF,8BAA8B,WAAW,OAAO98G,EAAEG,EAAE,EAAEmzB,EAAQypF,cAAc,SAASt2G,GAAG,OAAO7R,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIyL,EAAE,EAAE,MAAM,QAAQA,EAAEzL,EAAE,IAAIoS,EAAEpS,EAAEA,EAAEyL,EAAE,IAAI,OAAOoG,GAAG,CAAC,QAAQ7R,EAAEoS,CAAC,CAAC,EAAEssB,EAAQ0pF,wBAAwB,WAAW,EAC9f1pF,EAAQwyD,sBAAsB,WAAW,EAAExyD,EAAQ2pF,yBAAyB,SAASx2G,EAAEpG,GAAG,OAAOoG,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIO,EAAEpS,EAAEA,EAAE6R,EAAE,IAAI,OAAOpG,GAAG,CAAC,QAAQzL,EAAEoS,CAAC,CAAC,EAChMssB,EAAQkyD,0BAA0B,SAAS/+E,EAAEpG,EAAE2G,GAAG,IAAIrG,EAAE2yB,EAAQyyD,eAA8F,OAA/E,kBAAkB/+E,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEk2G,QAA6B,EAAEl2G,EAAErG,EAAEqG,EAAErG,EAAGqG,EAAErG,EAAS8F,GAAG,KAAK,EAAE,IAAIlD,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzMkD,EAAE,CAAC7B,GAAGmG,IAAI3C,SAAS/H,EAAEg8G,cAAc51G,EAAE6kE,UAAUtkE,EAAEo1G,eAAvD74G,EAAEyD,EAAEzD,EAAoE04G,WAAW,GAAGj1G,EAAErG,GAAG8F,EAAEw1G,UAAUj1G,EAAE1G,EAAEG,EAAEgG,GAAG,OAAOzG,EAAEG,IAAIsG,IAAIzG,EAAES,KAAK2X,GAAGqjF,EAAEuH,GAAGA,GAAG,GAAG5qF,GAAE,EAAG6pF,EAAErG,EAAE50F,EAAErG,MAAM8F,EAAEw1G,UAAU14G,EAAEjD,EAAEH,EAAEsG,GAAGwR,GAAGqY,IAAIrY,GAAE,EAAG6lF,EAAEnF,KAAYlyF,CAAC,EACne6sB,EAAQsyD,qBAAqB8d,EAAEpwE,EAAQ6pF,sBAAsB,SAAS12G,GAAG,IAAIpG,EAAEzL,EAAE,OAAO,WAAW,IAAIoS,EAAEpS,EAAEA,EAAEyL,EAAE,IAAI,OAAOoG,EAAE5K,MAAMhC,KAAK5H,UAAU,CAAC,QAAQ2C,EAAEoS,CAAC,CAAC,CAAC,8BCf7JoxE,EAAO9kD,QAAU,EAAjB8kD,OCFEglC,yBAA2B,CAAC,EAGhC,SAASC,oBAAoBC,GAE5B,IAAIC,EAAeH,yBAAyBE,GAC5C,QAAqBxrH,IAAjByrH,EACH,OAAOA,EAAajqF,QAGrB,IAAI8kD,EAASglC,yBAAyBE,GAAY,CAGjDhqF,QAAS,CAAC,GAOX,OAHAkqF,oBAAoBF,GAAUnkH,KAAKi/E,EAAO9kD,QAAS8kD,EAAQA,EAAO9kD,QAAS+pF,qBAGpEjlC,EAAO9kD,OACf,CCtBA+pF,oBAAoBI,KAAO,CAAC,ECC5BJ,oBAAoB37F,EAAK02D,IACxB,IAAIslC,EAAStlC,GAAUA,EAAOulC,WAC7B,IAAOvlC,EAAiB,QACxB,IAAM,EAEP,OADAilC,oBAAoB18G,EAAE+8G,EAAQ,CAAEj3G,EAAGi3G,IAC5BA,CAAM,QCNd,IACIE,EADAC,EAAW5kH,OAAO6kH,eAAkB/hH,GAAS9C,OAAO6kH,eAAe/hH,GAASA,GAASA,EAAa,UAQtGshH,oBAAoB58G,EAAI,SAASxP,EAAO+D,GAEvC,GADU,EAAPA,IAAU/D,EAAQ4I,KAAK5I,IAChB,EAAP+D,EAAU,OAAO/D,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAP+D,GAAa/D,EAAM0sH,WAAY,OAAO1sH,EAC1C,GAAW,GAAP+D,GAAoC,oBAAf/D,EAAMypG,KAAqB,OAAOzpG,CAC5D,CACA,IAAI8sH,EAAK9kH,OAAOotG,OAAO,MACvBgX,oBAAoBl9G,EAAE49G,GACtB,IAAI55E,EAAM,CAAC,EACXy5E,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIltH,EAAiB,EAAPqE,GAAY/D,EAAyB,iBAAXN,KAAyBitH,EAAe71G,QAAQpX,GAAUA,EAAUktH,EAASltH,GACxHsI,OAAO+kH,oBAAoBrtH,GAAS2C,SAAS8b,GAAS+0B,EAAI/0B,GAAO,IAAOne,EAAMme,KAI/E,OAFA+0B,EAAa,QAAI,IAAM,EACvBk5E,oBAAoB18G,EAAEo9G,EAAI55E,GACnB45E,CACR,MCxBAV,oBAAoB18G,EAAI,CAAC2yB,EAAS2qF,KACjC,IAAI,IAAI7uG,KAAO6uG,EACXZ,oBAAoBh4G,EAAE44G,EAAY7uG,KAASiuG,oBAAoBh4G,EAAEiuB,EAASlkB,IAC5EnW,OAAO0kE,eAAerqC,EAASlkB,EAAK,CAAEstE,YAAY,EAAM7jE,IAAKolG,EAAW7uG,IAE1E,ECNDiuG,oBAAoBh4G,EAAI,CAACtJ,EAAKzC,IAAUL,OAAOD,UAAUE,eAAeC,KAAK4C,EAAKzC,GCClF+jH,oBAAoBl9G,EAAKmzB,IACH,qBAAXt3B,QAA0BA,OAAOkiH,aAC1CjlH,OAAO0kE,eAAerqC,EAASt3B,OAAOkiH,YAAa,CAAEjtH,MAAO,WAE7DgI,OAAO0kE,eAAerqC,EAAS,aAAc,CAAEriC,OAAO,GAAO,8LCH9D,MAAMktH,EAAcjuH,EAAAA,cAAoB,CAAC,GAEzC,SAASkuH,EAAa5vH,GAClB,IAAI6vH,EAAWC,aAAaC,QAAQ,UAEpC,MAAOC,EAAQC,IAAatuH,EAAAA,EAAAA,UAAsB,MAAbkuH,GAErC,OACIK,EAAAA,EAAAA,KAACP,EAAY9C,SAAQ,CAACpqH,MAAO,CAACutH,SAAQC,aAAW5jD,SAC5CrsE,EAAMqsE,UAGnB,CCdO,MAAM8jD,EAAqB,YAGrBC,EAAkB,eAElBC,EAAiB,cAEjBC,EAAgB,WAKhBC,EAAc,sBACdC,EAAqB,IAErBC,EAAwB,ICf9B,IAAIC,ECAJ,SAASC,EAAUC,GACtB,MAAsB,mBAARA,CAClB,CACO,SAASC,EAASD,GACrB,MAAsB,kBAARA,CAClB,CACO,SAASE,EAASF,GACrB,MAAsB,kBAARA,CAClB,CAIO,SAASG,EAASH,GACrB,MAAsB,kBAARA,GAA4B,OAARA,CACtC,CACO,SAAS1sH,EAAQ0sH,GACpB,OAAO3sH,MAAMC,QAAQ0sH,EACzB,EDhBA,SAAWF,GACPA,EAAsB,OAAI,SAC1BA,EAA0B,WAAI,cAC9BA,EAA2B,YAAI,eAC/BA,EAAoB,KAAI,OACxBA,EAAoB,KAAI,OACxBA,EAAqB,MAAI,QACzBA,EAAmB,IAAI,MACvBA,EAAuB,QAAI,WAC3BA,EAAwB,SAAI,YAC5BA,EAAuB,QAAI,UAC3BA,EAAsB,OAAI,QAC7B,CAZD,CAYGA,IAAkBA,EAAgB,CAAC,IEXtC,MAAM11G,EACC,EADDA,EAEC,EAFDA,EAGC,EAEA,MAAMg2G,EACTtjH,WAAAA,CAAYujH,EAAW7qH,EAAG07B,GAKtB,GAJAz2B,KAAK6lH,iBAAmB,CAACr0F,EAAOn5B,KAC5B2H,KAAKpF,EAAIqB,KAAKwuB,IAAI+G,GAASn5B,EAC3B2H,KAAKjF,EAAIkB,KAAK2tB,IAAI4H,GAASn5B,CAAM,GAEhCotH,EAASG,IAAcA,EAAW,CACnC5lH,KAAKpF,EAAIgrH,EAAUhrH,EACnBoF,KAAKjF,EAAI6qH,EAAU7qH,EACnB,MAAM+qH,EAAWF,EACjB5lH,KAAKy2B,EAAIqvF,EAASrvF,EAAIqvF,EAASrvF,EAAI9mB,CACvC,KACK,SAAkB1X,IAAd2tH,QAAiC3tH,IAAN8C,EAMhC,MAAM,IAAIiZ,MAAM,GAAGkxG,wCALnBllH,KAAKpF,EAAIgrH,EACT5lH,KAAKjF,EAAIA,EACTiF,KAAKy2B,EAAIA,GAAK9mB,CAIlB,CACJ,CACA,iBAAWA,GACP,OAAOg2G,EAASnZ,OAAO78F,EAAUA,EAAUA,EAC/C,CACA,SAAI6hB,GACA,OAAOv1B,KAAKkuB,MAAMnqB,KAAKjF,EAAGiF,KAAKpF,EACnC,CACA,SAAI42B,CAAMA,GACNxxB,KAAK6lH,iBAAiBr0F,EAAOxxB,KAAK3H,OACtC,CACA,UAAIA,GACA,OAAO4D,KAAKgH,KAAKjD,KAAK+lH,cAC1B,CACA,UAAI1tH,CAAOA,GACP2H,KAAK6lH,iBAAiB7lH,KAAKwxB,MAAOn5B,EACtC,CACA,YAAOk2B,CAAM4rB,GACT,OAAOwrE,EAASnZ,OAAOryD,EAAOv/C,EAAGu/C,EAAOp/C,EAAGo/C,EAAO1jB,EACtD,CACA,aAAO+1E,CAAO5xG,EAAGG,EAAG07B,GAChB,OAAO,IAAIkvF,EAAS/qH,EAAGG,EAAG07B,EAC9B,CACAwxB,GAAAA,CAAI5hD,GACA,OAAOs/G,EAASnZ,OAAOxsG,KAAKpF,EAAIyL,EAAEzL,EAAGoF,KAAKjF,EAAIsL,EAAEtL,EAAGiF,KAAKy2B,EAAIpwB,EAAEowB,EAClE,CACAuvF,KAAAA,CAAM3/G,GACFrG,KAAKpF,GAAKyL,EAAEzL,EACZoF,KAAKjF,GAAKsL,EAAEtL,EACZiF,KAAKy2B,GAAKpwB,EAAEowB,CAChB,CACAquC,IAAAA,GACI,OAAO6gD,EAASp3F,MAAMvuB,KAC1B,CACAimH,UAAAA,CAAW5/G,GACP,OAAOrG,KAAK6nE,IAAIxhE,GAAGhO,MACvB,CACA6tH,YAAAA,CAAa7/G,GACT,OAAOrG,KAAK6nE,IAAIxhE,GAAG0/G,aACvB,CACAzoG,GAAAA,CAAIuK,GACA,OAAO89F,EAASnZ,OAAOxsG,KAAKpF,EAAIitB,EAAG7nB,KAAKjF,EAAI8sB,EAAG7nB,KAAKy2B,EAAI5O,EAC5D,CACAs+F,KAAAA,CAAMt+F,GACF7nB,KAAKpF,GAAKitB,EACV7nB,KAAKjF,GAAK8sB,EACV7nB,KAAKy2B,GAAK5O,CACd,CACAk+F,WAAAA,GACI,OAAO/lH,KAAKpF,GArEL,EAqEsBoF,KAAKjF,GArE3B,CAsEX,CACAuwB,IAAAA,CAAKzD,GACD,OAAO89F,EAASnZ,OAAOxsG,KAAKpF,EAAIitB,EAAG7nB,KAAKjF,EAAI8sB,EAAG7nB,KAAKy2B,EAAI5O,EAC5D,CACAu+F,MAAAA,CAAOv+F,GACH7nB,KAAKpF,GAAKitB,EACV7nB,KAAKjF,GAAK8sB,EACV7nB,KAAKy2B,GAAK5O,CACd,CACAihD,SAAAA,GACI,MAAMzwE,EAAS2H,KAAK3H,OAAmB,GACnCA,GACA2H,KAAKomH,OAlF0B,EAkFM/tH,EAE7C,CACAy6B,MAAAA,CAAOtB,GACH,OAAOm0F,EAASnZ,OAAOxsG,KAAKpF,EAAIqB,KAAKwuB,IAAI+G,GAASxxB,KAAKjF,EAAIkB,KAAK2tB,IAAI4H,GAAQxxB,KAAKpF,EAAIqB,KAAK2tB,IAAI4H,GAASxxB,KAAKjF,EAAIkB,KAAKwuB,IAAI+G,GAAQ7hB,EACrI,CACA02G,KAAAA,CAAMl5G,GACFnN,KAAKpF,EAAIuS,EAAEvS,EACXoF,KAAKjF,EAAIoS,EAAEpS,EACX,MAAMurH,EAAMn5G,EACZnN,KAAKy2B,EAAI6vF,EAAI7vF,EAAI6vF,EAAI7vF,EAAI9mB,CAC7B,CACAk4D,GAAAA,CAAIxhE,GACA,OAAOs/G,EAASnZ,OAAOxsG,KAAKpF,EAAIyL,EAAEzL,EAAGoF,KAAKjF,EAAIsL,EAAEtL,EAAGiF,KAAKy2B,EAAIpwB,EAAEowB,EAClE,CACA8vF,OAAAA,CAAQlgH,GACJrG,KAAKpF,GAAKyL,EAAEzL,EACZoF,KAAKjF,GAAKsL,EAAEtL,EACZiF,KAAKy2B,GAAKpwB,EAAEowB,CAChB,EAEG,MAAM+vF,UAAeb,EACxBtjH,WAAAA,CAAYujH,EAAW7qH,GACnB0rH,MAAMb,EAAW7qH,EAAG4U,EACxB,CACA,iBAAWA,GACP,OAAO62G,EAAOha,OAAO78F,EAAUA,EACnC,CACA,YAAO4e,CAAM4rB,GACT,OAAOqsE,EAAOha,OAAOryD,EAAOv/C,EAAGu/C,EAAOp/C,EAC1C,CACA,aAAOyxG,CAAO5xG,EAAGG,GACb,OAAO,IAAIyrH,EAAO5rH,EAAGG,EACzB,ECrHJ,IAAI2rH,EAAUzqH,KAAK0H,OACnB,MAAMgjH,EAAiB,CACnBC,UAAY10G,GAAOuK,sBAAsBvK,GACzC20G,OAASC,GAAQC,qBAAqBD,IACvCE,EAAkB,IAAIh4B,IAAmBi4B,EAAH,EAAchrH,KAAKgI,GACrD,SAASijH,EAAUrxH,EAAMsxH,GACxBH,EAAgBhoG,IAAInpB,IAGxBmxH,EAAgBtlC,IAAI7rF,EAAMsxH,EAC9B,CACO,SAASC,EAAUvxH,GACtB,OAAOmxH,EAAgBhoG,IAAInpB,IAAS,CAAEuB,GAAUA,EACpD,CAIO,SAASiwH,IAEZ,OAAOh/C,EAAMq+C,IADD,EAAS,EACc7pH,OAAOyqH,QAC9C,CAWO,SAASj/C,EAAM74B,EAAKjsC,EAAKF,GAC5B,OAAOpH,KAAKsH,IAAItH,KAAKoH,IAAImsC,EAAKjsC,GAAMF,EACxC,CACO,SAASkkH,EAAIC,EAAOC,EAAOC,EAASC,GACvC,OAAO1rH,KAAKkH,OAAOqkH,EAAQE,EAAUD,EAAQE,IAAYD,EAAUC,GACvE,CACO,SAASC,EAActhH,GAC1B,MAAMjD,EAAMwkH,EAAYvhH,GACxB,IAAI/C,EAAMukH,EAAYxhH,GAItB,OAHIjD,IAAQE,IACRA,EAHoC,GAKjC8jH,KAAehkH,EAAME,GAAOA,CACvC,CACO,SAASwkH,EAAc3wH,GAC1B,OAAOquH,EAASruH,GAASA,EAAQwwH,EAAcxwH,EACnD,CACO,SAAS0wH,EAAY1wH,GACxB,OAAOquH,EAASruH,GAASA,EAAQA,EAAMmM,GAC3C,CACO,SAASskH,EAAYzwH,GACxB,OAAOquH,EAASruH,GAASA,EAAQA,EAAMiM,GAC3C,CACO,SAAS2kH,EAAc7tE,EAAQ/iD,GAClC,GAAI+iD,IAAW/iD,QAAoBa,IAAVb,GAAuBquH,EAAStrE,GACrD,OAAOA,EAEX,MAAM52C,EAAMukH,EAAY3tE,GAAS92C,EAAMwkH,EAAY1tE,GACnD,YAAiBliD,IAAVb,EACD,CACEmM,IAAKtH,KAAKsH,IAAIA,EAAKnM,GACnBiM,IAAKpH,KAAKoH,IAAIA,EAAKjM,IAErB4wH,EAAczkH,EAAKF,EAC7B,CACO,SAAS4kH,EAAaC,EAAQC,GACjC,MAAMC,EAAKF,EAAOttH,EAAIutH,EAAOvtH,EAAGytH,EAAKH,EAAOntH,EAAIotH,EAAOptH,EACvD,MAAO,CAAEqtH,GAAIA,EAAIC,GAAIA,EAAIhhF,SAAUprC,KAAKgH,KAAKmlH,GADyB,EACPC,GADO,GAE1E,CACO,SAASC,EAAYJ,EAAQC,GAChC,OAAOF,EAAaC,EAAQC,GAAQ9gF,QACxC,CACO,SAASkhF,EAASC,GAErB,OAAQA,EAAUvsH,KAAKgI,GADT,GAElB,CAqCO,SAASwkH,EAAkBl2F,EAAIiL,EAAI3H,EAAIhB,GAE1C,OAAO2xF,EAAOha,OAAQj6E,EAAG33B,GAAKi7B,EAAKhB,IAAQgB,EAAKhB,GADjC,EACwC2I,EAAG5iC,EAAai6B,GAAOgB,EAAKhB,GAAKtC,EAAGx3B,EAC/F,CAsBO,SAAS2tH,EAAkC3/G,GAC9C,MAAO,CACHnO,EAAGmO,EAAKnM,UAAUhC,GAAKysH,IAAct+G,EAAKggC,KAAKjuC,MAC/CC,EAAGgO,EAAKnM,UAAU7B,GAAKssH,IAAct+G,EAAKggC,KAAK1uC,OAEvD,CAQO,SAASsuH,EAAWlgC,GAEvB,OAAKA,EAGEA,EAAMmgC,SAAS,KAAOC,WAAWpgC,GAAS08B,EAAqB0D,WAAWpgC,GAJ5D,CAKzB,CCjKO,IAAIqgC,ECAAC,ECAAC,ECAAC,ECAAC,ECAAC,GLCX,SAAWL,GACPA,EAAoB,KAAI,OACxBA,EAAwB,SAAI,WAC5BA,EAAwB,SAAI,WAC5BA,EAAsB,OAAI,QAC7B,CALD,CAKGA,IAAkBA,EAAgB,CAAC,ICLtC,SAAWC,GACPA,EAA4B,WAAI,aAChCA,EAA4B,WAAI,YACnC,CAHD,CAGGA,IAAoBA,EAAkB,CAAC,ICH1C,SAAWC,GACPA,EAAkB,KAAI,OACtBA,EAAiB,IAAI,MACrBA,EAAiB,IAAI,KACxB,CAJD,CAIGA,IAAgBA,EAAc,CAAC,ICJlC,SAAWC,GACPA,EAAyB,OAAI,SAC7BA,EAAuB,KAAI,OAC3BA,EAAwB,MAAI,QAC5BA,EAAsB,IAAI,KAC7B,CALD,CAKGA,IAAqBA,EAAmB,CAAC,ICL5C,SAAWC,GACPA,EAAmB,QAAI,UACvBA,EAAmB,QAAI,SAC1B,CAHD,CAGGA,IAAcA,EAAY,CAAC,ICH9B,SAAWC,GACPA,EAAoB,IAAI,MACxBA,EAAoB,IAAI,MACxBA,EAAuB,OAAI,QAC9B,CAJD,CAIGA,IAAmBA,EAAiB,CAAC,ICKxC,MAAMC,EAAU,CACZC,MAAOr7E,QAAQq7E,MACfr6G,MAAOg/B,QAAQh/B,MACfs6G,KAAMt7E,QAAQs7E,KACdn8B,IAAKn/C,QAAQm/C,IACbo8B,QAASv7E,QAAQm/C,IACjBq8B,QAASx7E,QAAQC,MAUd,SAASw7E,IACZ,OAAOL,CACX,CACA,SAASM,EAAe3gH,GACpB,MAAM4gH,EAAM,CAAEC,SAAS,IAAS,MAAEC,EAAK,WAAEC,EAAU,SAAEC,EAAQ,cAAEC,EAAa,SAAEt9C,EAAQ,OAAEu9C,GAAWlhH,EACnG,OAAI+gH,EAAWvmH,IAAMymH,EAAczmH,KAC/BumH,EAAWvmH,IAAMymH,EAAc3mH,KAC/BymH,EAAWzmH,IAAM2mH,EAAczmH,KAC/BumH,EAAWzmH,IAAM2mH,EAAc3mH,MAG9BwmH,EAAMxmH,KAAO0mH,EAASxmH,KAAOsmH,EAAMxmH,KAPwE,IAOhE0mH,EAAS1mH,IAAM0mH,EAASxmH,MAAempE,EAP4C,GAQ9Hm9C,EAAMtmH,KAAOwmH,EAAS1mH,KAAOwmH,EAAMtmH,IARwE,IAQjEwmH,EAAS1mH,IAAM0mH,EAASxmH,MAAempE,EAR6C,KAS/Hi9C,EAAIj9C,SAAWA,GAAYu9C,EAC3BN,EAAIC,SAAU,GALPD,CAQf,CAOO,SAASO,KACZ,MAAyB,qBAAX5vH,SAA2BA,QAAqC,qBAApBA,OAAO+B,WAA6B/B,OAAO+B,QACzG,CAIO,SAAS8tH,GAAeC,GAC3B,IAHQF,MAAiC,qBAAfG,WAM1B,OAAOA,WAAWD,EACtB,CAaO,SAASE,GAAUlzH,EAAOmzH,GAE7B,OAAOnzH,IAAUmzH,GAAU1xH,EAAQ0xH,IAAUA,EAAMr8G,QAAQ9W,IADrC,CAE1B,CACOozH,eAAeC,GAASnhF,EAAMhF,GACjC,UACUjoC,SAAS+b,MAAM/J,KAAK,GAAGi2B,GAAU,eAAegF,GAAQ,aAClE,CACA,MACA,CACJ,CAIO,SAASohF,GAAcH,EAAO/uG,GACjC,OAAO+uG,OAAgBtyH,IAAVujB,MADmCpjB,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,IACDojB,EAAQ+uG,EAAMlyH,OAJ1D,SAA0BkyH,GAC7B,OAAOtuH,KAAKkH,MAAMkkH,IAAckD,EAAMlyH,OAC1C,CAE0EsyH,CAAiBJ,GAC3F,CACO,SAASK,GAAcloG,EAAOqmB,EAAM9hC,EAAQi8B,EAAQ1rC,GAEvD,OAEG,SAAyBwwC,EAAQe,EAAM9hC,EAAQzP,GAClD,IAAIqzH,GAAS,EACRrzH,GAAaA,IAAcyxH,EAAiBhhF,SAC7C4iF,EAAS7iF,EAAO5tC,IAAM2uC,EAAK1uC,OAAS4M,EAAOrM,IAE3CiwH,GAAYrzH,GAAaA,IAAcyxH,EAAiBpuH,OACxDgwH,EAAS7iF,EAAOrE,MAAQ18B,EAAOrM,IAE/BiwH,GAAYrzH,GAAaA,IAAcyxH,EAAiBtlF,QACxDknF,EAAS7iF,EAAOntC,KAAOkuC,EAAKjuC,MAAQmM,EAAOlM,IAE3C8vH,GAAYrzH,GAAaA,IAAcyxH,EAAiB7uH,MACxDywH,EAAS7iF,EAAOC,OAAShhC,EAAOlM,GAEpC,OAAO8vH,CACX,CAjBWC,CAAgBC,GAAgBroG,EAAOwgB,GAD5B,GACkD6F,EAAM9hC,EAAQzP,EACtF,CAiBO,SAASuzH,GAAgBroG,EAAOwgB,GACnC,MAAO,CACH+E,OAAQvlB,EAAM3nB,EAAImoC,EAClBroC,KAAM6nB,EAAM9nB,EAAIsoC,EAChBS,MAAOjhB,EAAM9nB,EAAIsoC,EACjB9oC,IAAKsoB,EAAM3nB,EAAImoC,EAEvB,CACO,SAAS8nF,GAAWlsH,GAAyB,QAAAmsH,EAAA7yH,UAAAC,OAATwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAC9C,IAAK,MAAM/wE,KAAUt7C,EAAS,CAC1B,QAAe5G,IAAXkiD,GAAmC,OAAXA,EACxB,SAEJ,IAAKurE,EAASvrE,GAAS,CACnBr7C,EAAcq7C,EACd,QACJ,CACA,MAAMgxE,EAAgBvyH,MAAMC,QAAQshD,IAChCgxE,IAAkBzF,EAAS5mH,IAAiBA,GAAgBlG,MAAMC,QAAQiG,GAGpEqsH,IAAkBzF,EAAS5mH,IAAiBA,IAAelG,MAAMC,QAAQiG,KAC/EA,EAAc,CAAC,GAHfA,EAAc,GAKlB,IAAK,MAAMyW,KAAO4kC,EAAQ,CACtB,GAAY,cAAR5kC,EACA,SAEJ,MAA2Bne,EAAR+iD,EAA2B5kC,GAAM61G,EAAWtsH,EAC/DssH,EAAS71G,GACLmwG,EAAStuH,IAAUwB,MAAMC,QAAQzB,GAC3BA,EAAMkC,KAAI+M,GAAK2kH,GAAWI,EAAS71G,GAAMlP,KACzC2kH,GAAWI,EAAS71G,GAAMne,EACxC,CACJ,CACA,OAAO0H,CACX,CACO,SAASusH,GAAiBlwH,EAAMmwH,GACnC,QAASC,GAA6BD,GAAM1kH,GAAKA,EAAE4kH,QAAUlB,GAAUnvH,EAAMyL,EAAEzL,OACnF,CACO,SAASswH,GAAetwH,EAAMmwH,EAAM/8G,GACvCm9G,GAA0BJ,GAAMhuG,IAC5B,MAAMquG,EAAUruG,EAAIniB,KAAmBmiB,EAAIkuG,QACzBlB,GAAUnvH,EAAMwwH,IAKnC,SAA8BruG,EAAK/O,GACtC,MAAMq9G,EAAYtuG,EAAIsuG,UACtBF,GAA0BE,GAAWC,IACjCt9G,EAASs9G,EAAUvuG,EAAI,GAE/B,CATYwuG,CAAqBxuG,EAAK/O,EAC9B,GAER,CAOO,SAASo9G,GAAQL,EAAM/mH,GAC1B,GAAKA,GAAY+mH,EAGjB,OAAOC,GAA6BD,GAAMhuG,GA7H9C,SAAuB/Y,EAASqnH,GAC5B,MAAMjC,EAAM+B,GAA0BE,GAAWC,GACtCtnH,EAAQwnH,QAAQF,KAE3B,OAAOhzH,EAAQ8wH,GAAOA,EAAIqC,MAAKplH,GAAKA,IAAK+iH,CAC7C,CAyHesC,CAAc1nH,EAAS+Y,EAAIsuG,YAE1C,CACO,SAASM,GAA6BxlH,GACzC,MAAO,CACH9J,SAAU8J,EAAEylH,cACZjpF,OAAQx8B,EAAE0lH,YACVC,KAAM3lH,EAAE4lH,UACR5/C,SAAUhmE,EAAEgmE,SACZu9C,OAAQzD,EAAOha,OAAOub,EAAcrhH,EAAE6+D,QAAQgnD,OAAOC,WAAWp1H,OAAQ2wH,EAAcrhH,EAAE6+D,QAAQgnD,OAAOE,SAASr1H,QAExH,CACO,SAASs1H,GAAap8F,EAAI0E,GAC7B,MAAQp6B,EAAG+xH,EAAe5xH,EAAG6xH,GAAkBt8F,EAAGo8C,SAAS7E,IAAI7yC,EAAG03C,WAAYmgD,EAAMC,GAAQ,CAACx8F,EAAG1zB,SAAUo4B,EAAGp4B,WAAawrH,GAAI2E,EAAO1E,GAAI2E,GAAU/E,EAAa6E,EAAMD,GACtK,GAAIF,EAAgBI,EAAQH,EAAgBI,EADmJ,EAE3L,OAEJ,MAAMx7F,GAASv1B,KAAKkuB,MAAM6iG,EAAOD,GAAQl3F,EAAKvF,EAAG+7F,KAAMx3F,EAAKG,EAAGq3F,KAAM7nG,EAAK8L,EAAGo8C,SAAS55C,OAAOtB,GAAQy7F,EAAKj4F,EAAG03C,SAAS55C,OAAOtB,GAAQe,EAAKk2F,EAAkBjkG,EAAIyoG,EAAIp3F,EAAIhB,GAAK2I,EAAKirF,EAAkBwE,EAAIzoG,EAAIqR,EAAIhB,GAAKq4F,EAAU36F,EAAGO,QAAQtB,GAAQ27F,EAAU3vF,EAAG1K,QAAQtB,GACvQlB,EAAGo8C,SAAS9xE,EAAIsyH,EAAQtyH,EAAI01B,EAAG25F,OAAOrvH,EACtC01B,EAAGo8C,SAAS3xE,EAAImyH,EAAQnyH,EAAIu1B,EAAG25F,OAAOlvH,EACtCi6B,EAAG03C,SAAS9xE,EAAIuyH,EAAQvyH,EAAIo6B,EAAGi1F,OAAOrvH,EACtCo6B,EAAG03C,SAAS3xE,EAAIoyH,EAAQpyH,EAAIi6B,EAAGi1F,OAAOlvH,CAC1C,CACO,SAASqyH,GAAWC,EAAUC,GACjC,MAAkEtlF,EAAS+iF,GAA9DsC,EAASlB,cAAsBkB,EAASjB,aAAmDmB,EAAgBF,EAAS9nD,QAAQgnD,OAAQiB,EAAO9D,EAAe,CACnKG,MAAO,CACHtmH,IAAKykC,EAAOntC,KACZwI,IAAK2kC,EAAOrE,OAEhBmmF,WAAY,CACRvmH,IAAKykC,EAAO5tC,IACZiJ,IAAK2kC,EAAOC,QAEhB8hF,SAAU,CACNxmH,IAAK+pH,EAAUzyH,KACfwI,IAAKiqH,EAAU3pF,OAEnBqmF,cAAe,CACXzmH,IAAK+pH,EAAUlzH,IACfiJ,IAAKiqH,EAAUrlF,QAEnBykC,SAAU2gD,EAAS3gD,SAAS9xE,EAC5BqvH,OAAQlC,EAAcwF,EAAcf,WAAWp1H,SAE/Co2H,EAAK5D,eACiB3xH,IAAlBu1H,EAAK9gD,WACL2gD,EAAS3gD,SAAS9xE,EAAI4yH,EAAK9gD,eAETz0E,IAAlBu1H,EAAK5wH,WACLywH,EAASzwH,SAAShC,EAAI4yH,EAAK5wH,WAGnC,MAAM6wH,EAAO/D,EAAe,CACxBG,MAAO,CACHtmH,IAAKykC,EAAO5tC,IACZiJ,IAAK2kC,EAAOC,QAEhB6hF,WAAY,CACRvmH,IAAKykC,EAAOntC,KACZwI,IAAK2kC,EAAOrE,OAEhBomF,SAAU,CACNxmH,IAAK+pH,EAAUlzH,IACfiJ,IAAKiqH,EAAUrlF,QAEnB+hF,cAAe,CACXzmH,IAAK+pH,EAAUzyH,KACfwI,IAAKiqH,EAAU3pF,OAEnB+oC,SAAU2gD,EAAS3gD,SAAS3xE,EAC5BkvH,OAAQlC,EAAcwF,EAAcd,SAASr1H,SAE7Cq2H,EAAK7D,eACiB3xH,IAAlBw1H,EAAK/gD,WACL2gD,EAAS3gD,SAAS3xE,EAAI0yH,EAAK/gD,eAETz0E,IAAlBw1H,EAAK7wH,WACLywH,EAASzwH,SAAS7B,EAAI0yH,EAAK7wH,UAGvC,CACO,SAAS8uH,GAA0BxpH,EAAKqM,GAE3C,OAAO1V,EAAQqJ,GAAOA,EAAI5I,KAAI,CAAC6lE,EAAM3jD,IAAUjN,EAAS4wD,EAAM3jD,KAAUjN,EAASrM,EAD5D,EAEzB,CACO,SAASwrH,GAAyBxrH,EAAKsZ,EAAOmyG,GACjD,OAAO90H,EAAQqJ,GAAOwoH,GAAcxoH,EAAKsZ,EAAOmyG,GAAYzrH,CAChE,CACO,SAASqpH,GAA6BrpH,EAAKqM,GAC9C,GAAI1V,EAAQqJ,GACR,OAAOA,EAAIvG,MAAK,CAACiL,EAAG4U,IAAUjN,EAAS3H,EAAG4U,KAG9C,OAAOjN,EAASrM,EADK,GACgBA,OAAMjK,CAC/C,CACO,SAAS21H,GAAkCroD,EAASsoD,GACvD,MAAMC,EAAavoD,EAAQnuE,MAAO22H,EAAmBxoD,EAAQn2D,UAAWu6G,EAAM,CAC1EqE,UAAWjG,EAAcgG,EAAiB1K,OAAS+B,EACnDoG,OAAQuC,EAAiBvC,OACzBp0H,MAAO2wH,EAAcxiD,EAAQnuE,OAASy2H,EACtCxqH,IAAKwkH,EAAYiG,GAAcD,EAC/BtqH,IAAKukH,EAAYgG,GAAcD,EAC/BI,MAAO,EACPC,SAAUnG,EAAcgG,EAAiB1lF,OACzCh0B,KAAM,GAEV,GAAI05G,EAAiBvC,OAAQ,CAEzB,OADA7B,EAAIwE,MAFS,EAEapG,EAAcgG,EAAiBI,OACjDJ,EAAiB5yH,MACrB,KAAK2tH,EAAcsF,SACfzE,EAAI96G,OAASk6G,EAAgBsF,WAC7B,MACJ,KAAKvF,EAAcwF,SACf3E,EAAI96G,OAASk6G,EAAgBwF,WAC7B,MACJ,KAAKzF,EAAcnlH,OACfgmH,EAAI96G,OAASw4G,KXhRH,GWgR+B0B,EAAgBsF,WAAatF,EAAgBwF,WAG9F,MAAMC,EAAaT,EAAiB5yH,OAAS2tH,EAAc2F,KAC3D,OAAQV,EAAiBW,YACrB,KAAKvF,EAAe5lH,IAChBomH,EAAIvyH,MAAQuyH,EAAIpmH,IACZirH,IACA7E,EAAI96G,OAASk6G,EAAgBsF,YAEjC,MACJ,KAAKlF,EAAe9lH,IAChBsmH,EAAIvyH,MAAQuyH,EAAItmH,IACZmrH,IACA7E,EAAI96G,OAASk6G,EAAgBwF,YAEjC,MACJ,KAAKpF,EAAexlH,OACpB,QACIgmH,EAAIvyH,MAAQwwH,EAAc+B,GACtB6E,IACA7E,EAAI96G,OAASw4G,KXrSP,GWqSmC0B,EAAgBsF,WAAatF,EAAgBwF,YAItG,CAEA,OADA5E,EAAIhmC,aAAegmC,EAAIvyH,MAChBuyH,CACX,CACA,SAASgF,GAAkBC,EAAgBC,GAEvC,KADkBD,EAAezzH,OAAS+tH,EAAUxjG,SACpC,CACZ,MAAQvqB,KAAMuZ,KAAM1e,GAAS44H,EAC7B,OAAO54H,CACX,CAEA,MADmB,MAAO44H,EAEf,CACHh0H,EAAIg0H,EAAeh0H,EAAIuqH,EAAsB0J,EAAW/zH,MACxDC,EAAI6zH,EAAe7zH,EAAIoqH,EAAsB0J,EAAWx0H,QAIrD,CACHS,MAAQ8zH,EAAe9zH,MAAQqqH,EAAsB0J,EAAW/zH,MAChET,OAASu0H,EAAev0H,OAAS8qH,EAAsB0J,EAAWx0H,OAG9E,CACO,SAAS8xH,GAAYvvH,EAAUiyH,GAClC,OAAOF,GAAkB/xH,EAAUiyH,EACvC,CAkBO,SAASC,GAAgBzB,EAAUtkH,EAAMgmH,EAAiBC,EAAa3wF,GAE1E,GAAIgvF,EAASl9D,YACRpnD,IACAA,EAAKyiH,SACJziH,EAAKmlH,UAJM,OAI+BnlH,EAAKklH,OAJpC,IAI0DllH,EAAKmlH,UAJ/D,GAKb,OAEJ,MAAMxhD,GAAY3jE,EAAK2jE,UAPuC,GAOZruC,EAAM4rF,OAAQgF,EAAWlmH,EAAKxF,IAAK2rH,EAAWnmH,EAAK1F,IAAK8qH,EAAQplH,EAAKolH,OAP3C,EAc5E,GANKplH,EAAKsL,OACNtL,EAAKsL,KAAO,IAEXtL,EAAKilH,WAXqB,MAWgBjlH,EAAKsL,MAAQtL,EAAKilH,WAXlC,KAY3BjlH,EAAKsL,MAAQgqB,EAAMjnC,UAElB2R,EAAKilH,WAdqB,MAcgBjlH,EAAKsL,MAAQtL,EAAKilH,WAdlC,IAc/B,CAGA,OAAQjlH,EAAK8F,QACT,KAAKk6G,EAAgBsF,WACbtlH,EAAK3R,OAAS83H,GACVH,EACAhmH,EAAK8F,OAASk6G,EAAgBwF,WAG9BxlH,EAAK3R,OAAS83H,EAEbnmH,EAAKklH,QACNllH,EAAKklH,MA3BJ,GA6BLllH,EAAKklH,SAGLllH,EAAK3R,OAASs1E,EAElB,MACJ,KAAKq8C,EAAgBwF,WACbxlH,EAAK3R,OAAS63H,GACVF,EACAhmH,EAAK8F,OAASk6G,EAAgBsF,WAG9BtlH,EAAK3R,OAAS83H,EAEbnmH,EAAKklH,QACNllH,EAAKklH,MA5CJ,GA8CLllH,EAAKklH,SAGLllH,EAAK3R,OAASs1E,EAGtB3jE,EAAK2jE,UApDoC,IAoDxByhD,IACjBplH,EAAK2jE,UAAYyhD,GApEzB,SAAsBd,EAAU2B,EAAa53H,EAAO63H,EAAUC,GAC1D,OAAQF,GACJ,KAAKhG,EAAY3lH,IACTjM,GAAS83H,GACT7B,EAASr1H,UAEb,MACJ,KAAKgxH,EAAYzlH,IACTnM,GAAS63H,GACT5B,EAASr1H,UAIzB,CAyDIm3H,CAAa9B,EAAU2B,EAAajmH,EAAK3R,MAAO63H,EAAUC,GACrD7B,EAASl9D,YACVpnD,EAAK3R,MAAQixE,EAAMt/D,EAAK3R,MAAO63H,EAAUC,GAzC7C,CA2CJ,CC/ZO,IAAIE,GCKPC,IDJJ,SAAWD,GACPA,EAAkB,OAAI,SACtBA,EAAqB,UAAI,WAC5B,CAHD,CAGGA,KAAcA,GAAY,CAAC,ICE9B,SAAWC,GACPA,EAAWA,EAAc,EAAI,GAAK,IAClCA,EAAWA,EAAc,EAAI,GAAK,IAClCA,EAAWA,EAAc,EAAI,GAAK,IAClCA,EAAWA,EAAc,EAAI,GAAK,GACrC,CALD,CAKGA,KAAeA,GAAa,CAAC,IAChC,MAAMC,GAAmB,SAAUC,GAAgB,MAAOC,GAAgB,IAAIxgC,IACvE,SAASygC,GAAgBC,GAC5BF,GAAc9tC,IAAIguC,EAAQn6G,IAAKm6G,EACnC,CACA,SAASC,GAAalnC,GAClB,IAAK,MAAO,CAAEinC,KAAYF,GACtB,GAAI/mC,EAAMmnC,WAAWF,EAAQG,cACzB,OAAOH,EAAQI,YAAYrnC,GAGnC,MAAqEsnC,EAAWtnC,EAAM5qE,QAA/D,8CAAuF,CAACnJ,EAAGpO,EAAGC,EAAGC,EAAGoG,IAChHtG,EAAIA,EAAIC,EAAIA,EAAIC,EAAIA,QAAWvO,IAAN2U,EAAkBA,EAAIA,EAAI,MACQo4D,EAA1D,yDAAyEgrD,KAAKD,GAC1F,OAAO/qD,EACD,CACEp4D,OAA4B3U,IAAzB+sE,EAAOqqD,GAAWziH,GACf0K,SAAS0tD,EAAOqqD,GAAWziH,GAJoE,IAAoC,IAAjB,EAMxHpG,EAAG8Q,SAAS0tD,EAAOqqD,GAAW7oH,GANuE,IAOrGD,EAAG+Q,SAAS0tD,EAAOqqD,GAAW9oH,GAPuE,IAQrGD,EAAGgR,SAAS0tD,EAAOqqD,GAAW/oH,GARuE,UAUvGrO,CACV,CACO,SAASg4H,GAAgBxnC,EAAOjtE,GAAwB,IAAjBmyG,IAAQv1H,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GAClD,IAAKqwF,EACD,OAEJ,MAAMzhF,EAAQw+G,EAAS/8B,GAAS,CAAErxF,MAAOqxF,GAAUA,EACnD,GAAI+8B,EAASx+G,EAAM5P,OACf,OAAO84H,GAAWlpH,EAAM5P,MAAOokB,EAAOmyG,GAE1C,GAAI90H,EAAQmO,EAAM5P,OACd,OAAO64H,GAAgB,CACnB74H,MAAOszH,GAAc1jH,EAAM5P,MAAOokB,EAAOmyG,KAGjD,IAAK,MAAO,CAAE+B,KAAYF,GAAe,CACrC,MAAM7F,EAAM+F,EAAQS,iBAAiBnpH,GACrC,GAAI2iH,EACA,OAAOA,CAEf,CACJ,CACO,SAASuG,GAAWznC,EAAOjtE,GAAwB,IAAjBmyG,IAAQv1H,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GAC7C,IAAKqwF,EACD,OAEJ,MAAMzhF,EAAQw+G,EAAS/8B,GAAS,CAAErxF,MAAOqxF,GAAUA,EACnD,GAAI+8B,EAASx+G,EAAM5P,OACf,OAAO4P,EAAM5P,QAAUk4H,GAAmBc,KAiD3C,SAAqB3nC,GACxB,OAAOknC,GAAalnC,EACxB,CAnDwE4nC,CAAYrpH,EAAM5P,OAEtF,GAAIyB,EAAQmO,EAAM5P,OACd,OAAO84H,GAAW,CACd94H,MAAOszH,GAAc1jH,EAAM5P,MAAOokB,EAAOmyG,KAGjD,IAAK,MAAO,CAAE+B,KAAYF,GAAe,CACrC,MAAM7F,EAAM+F,EAAQY,YAAYtpH,GAChC,GAAI2iH,EACA,OAAOA,CAEf,CACJ,CAKO,SAAS4G,GAAgBvpH,EAAOwU,GACnC,MAAMg1G,EAAMP,GAAgBjpH,EAAOwU,IADepjB,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,IAElD,OAAOo4H,EAAMxnD,GAASwnD,QAAOv4H,CACjC,CACO,SAAS+wE,GAAShiE,GACrB,MAAiHypH,EAAKzpH,EAAMV,EAA7G,IAAyHivB,EAAKvuB,EAAMT,EAApI,IAAgJ4uB,EAAKnuB,EAAMR,EAA3J,IAAuKnD,EAAMpH,KAAKoH,IAAIotH,EAAIl7F,EAAIJ,GAAK5xB,EAAMtH,KAAKsH,IAAIktH,EAAIl7F,EAAIJ,GAAKw0F,EAAM,CAChPxjH,EAD2D,EAE3DytB,EAF4F,IAExFvwB,EAAME,GACV6C,EAHqE,GAqBzE,OAhBI/C,IAAQE,IACRomH,EAAIvjH,EAAIujH,EAAI/1F,EANgF,IAMpEvwB,EAAME,IAAQF,EAAME,IAAQF,EAAME,IANgD,EAM/BF,EAAME,GACjFomH,EAAIxjH,EACAsqH,IAAOptH,GACAkyB,EAAKJ,IAAO9xB,EAAME,GAClBomH,EAAIxjH,EAAIovB,IAAOlyB,EAVgF,GAUhE8xB,EAAKs7F,IAAOptH,EAAME,GAAOmtH,GAAmBD,EAAKl7F,IAAOlyB,EAAME,IAE5GomH,EAAI/1F,GAZ+C,IAanD+1F,EAAIvjH,GAbmC,IAcvCujH,EAAIxjH,GAdiF,GAejFwjH,EAAIxjH,EAfuD,IAgB3DwjH,EAAIxjH,GAhBmB,KAkBvBwjH,EAAIxjH,GAlBmB,MAmBvBwjH,EAAIxjH,GAnBmB,KAqBpBwjH,CACX,CAOO,SAASzgD,GAASynD,GACrB,MAAMC,EAAO,IAAiDzqH,GAAMwqH,EAAIxqH,EAAIyqH,EAAQA,GAAQA,EAAMxqH,EAAInK,KAAKoH,IAA1D,EAAoEpH,KAAKsH,IAAjG,IAA2GotH,EAAIvqH,IAAgDyqH,EAAc1qH,EAAIyqH,EAAME,EAAc1qH,EAArM,IAA+M2qH,EAAvF90H,KAAKoH,IAA3F,EAAqGpH,KAAKsH,IAAhI,IAA0IotH,EAAI/8F,IAA9I,IAA2No9F,EAAY,IAC5Q,GADiD,IAC7C5qH,EAAY,CACZ,MAAM6qH,EAAiBh1H,KAAKoI,MAAM0sH,EAAcC,GAChD,MAAO,CAAE1qH,EAAG2qH,EAAgB1qH,EAAG0qH,EAAgBzqH,EAAGyqH,EACtD,CACA,MAA8BC,EAAUA,CAACC,EAAOC,EAAOC,KAQnD,GANIA,EADa,GAEbA,IAEAA,EAJ2B,GAK3BA,IALyC,EAOzCA,EAP2B,EAQ3B,OAAOF,EARkC,GAQzBC,EAAQD,GAAoBE,EAEhD,GAXuB,EAWnBA,EAV2B,EAW3B,OAAOD,EAEX,GAnBsR,EAmBlRC,EAAiBC,EAAmB,CAEpC,OAAOH,GAASC,EAAQD,IAhBL,EAL+P,EAqBlOE,GAfP,CAgB7C,CACA,OAAOF,CAAK,EACUA,EAAQJ,EAnBrB,GAoBPA,GADiB,EACkBD,GACnCC,EAAcD,EAAcC,EAAcD,EAAaM,EArBlC,EAqBmDL,EAAcI,EAA2BI,EAAH,EA1BsK,EA0B7HC,EAAMv1H,KAAKsH,IAAIytH,EAAWA,EAAYE,EAAQE,EAAOD,EAAON,EAAcU,IAAcE,EAAQx1H,KAAKsH,IAAIytH,EAAWA,EAAYE,EAAQE,EAAOD,EAAON,IAAea,EAAOz1H,KAAKsH,IAAIytH,EAAWA,EAAYE,EAAQE,EAAOD,EAAON,EAAcU,IAC7Y,MAAO,CAAEjrH,EAAGrK,KAAKoI,MAAMmtH,GAAMjrH,EAAGtK,KAAKoI,MAAMotH,GAAQjrH,EAAGvK,KAAKoI,MAAMqtH,GACrE,CAUO,SAAStB,GAAkB7sH,GAC9B,MAAsBouH,EAAWpuH,GAAd,EACnB,MAAO,CACHiD,EAAGvK,KAAKkH,MAAMykH,EAAcI,EAAc2J,EAFe,OAGzDprH,EAAGtK,KAAKkH,MAAMykH,EAAcI,EAAc2J,EAHe,OAIzDrrH,EAAGrK,KAAKkH,MAAMykH,EAAcI,EAAc2J,EAJe,OAMjE,CACO,SAASC,GAAgB5qH,EAAOwxC,GAEnC,MAAO,QAAQxxC,EAAMV,MAAMU,EAAMT,MAAMS,EAAMR,MAAMgyC,GAD5B,IAE3B,CACO,SAASq5E,GAAgB7qH,EAAOwxC,GAEnC,MAAO,QAAQxxC,EAAMb,MAAMa,EAAMZ,OAAOY,EAAM4sB,OAAO4kB,GAD9B,IAE3B,CACO,SAASs5E,GAAS/1C,EAAQC,EAAQ+1C,EAAOC,GAC5C,IAAIC,EAAOl2C,EAAQm2C,EAAOl2C,EAO1B,YANe/jF,IAAXg6H,EAAK3rH,IACL2rH,EAAO/oD,GAAS6S,SAEL9jF,IAAXi6H,EAAK5rH,IACL4rH,EAAOhpD,GAAS8S,IAEb,CACHx1E,EAAG+gH,EAAI0K,EAAKzrH,EAAG0rH,EAAK1rH,EAAGurH,EAAOC,GAC9BzrH,EAAGghH,EAAI0K,EAAK1rH,EAAG2rH,EAAK3rH,EAAGwrH,EAAOC,GAC9B1rH,EAAGihH,EAAI0K,EAAK3rH,EAAG4rH,EAAK5rH,EAAGyrH,EAAOC,GAEtC,CACO,SAASG,GAAa7hG,EAAI0E,EAAIo9F,GACjC,GAAIA,IAAc9C,GACd,OAAOc,KAEN,GAAIgC,IAAc7C,GAanB,OAAO6C,EAb2B,CAClC,MAAMC,EAAc/hG,EAAGgiG,gBAAkBhiG,EAAGiiG,iBAAkBC,EAAYx9F,GAAIs9F,gBAAkBt9F,GAAIu9F,iBACpG,GAAIF,GAAeG,GAAax9F,EAC5B,OAAO88F,GAASO,EAAaG,EAAWliG,EAAG87F,YAAap3F,EAAGo3F,aAE1D,CACD,MAAMqG,EAAWJ,GAAeG,EAChC,GAAIC,EACA,OAAOvpD,GAASupD,EAExB,CACJ,CAIJ,CACO,SAASC,GAAmBC,EAAUC,EAAOC,GAChD,MAAM7rH,EAAQw+G,EAASmN,GAAYA,EAAWA,EAASv7H,MACvD,OAAI4P,IAAUsoH,GACNuD,EACO5C,GAAgB,CACnB74H,MAAO4P,IAGX4rH,EACOtD,GAEJC,GAEFvoH,IAAUuoH,GACRA,GAGAU,GAAgB,CACnB74H,MAAO4P,GAGnB,CACO,SAAS8rH,GAAoB1jH,GAChC,YAAqBnX,IAAdmX,EACD,CACEjJ,EAAGiJ,EAAUjJ,EAAE/O,MACfgP,EAAGgJ,EAAUhJ,EAAEhP,MACfw8B,EAAGxkB,EAAUwkB,EAAEx8B,YAEjBa,CACV,CACO,SAAS86H,GAAuBpC,EAAK5C,EAAkBiF,GAC1D,MAAMC,EAAW,CACb9sH,EAAG,CACCqlH,QAAQ,EACRp0H,MAAOu5H,EAAIxqH,GAEfC,EAAG,CACColH,QAAQ,EACRp0H,MAAOu5H,EAAIvqH,GAEfwtB,EAAG,CACC43F,QAAQ,EACRp0H,MAAOu5H,EAAI/8F,IAQnB,OALIm6F,IACAmF,GAAkBD,EAAS9sH,EAAG4nH,EAAiB5nH,EAAG6sH,GAClDE,GAAkBD,EAAS7sH,EAAG2nH,EAAiB3nH,EAAG4sH,GAClDE,GAAkBD,EAASr/F,EAAGm6F,EAAiBn6F,EAAGo/F,IAE/CC,CACX,CACA,SAASC,GAAkBv2C,EAAYw2C,EAAgBH,GACnDr2C,EAAW6uC,OAAS2H,EAAe3H,OAE/B7uC,EAAW6uC,QACX7uC,EAAWjQ,SAAYq7C,EAAcoL,EAAej8H,OAASiuH,EAAsB6N,EACnFr2C,EAAWwxC,MAH0B,EAGJpG,EAAcoL,EAAehF,OAC9DxxC,EAAW9tE,OAASk6G,EAAgBsF,WACpC1xC,EAAWsxC,MAL4C,EAMvDtxC,EAAWuxC,SAAWnG,EAAcoL,EAAe9qF,OACnDs0C,EAAWtoE,KAP6D,EAQxEsoE,EAAWqxC,UAAYjG,EAAcoL,EAAe9P,OAAS+B,EACxD+N,EAAeC,OAChBz2C,EAAWjQ,UAAY26C,IACvB1qC,EAAWvlF,OAASiwH,KAExB1qC,EAAWgH,aAAehH,EAAWvlF,MACrCulF,EAAW11E,OAAS+gH,EAAcmL,EAAelsH,SAGjD01E,EAAWjQ,SAjBS,CAmB5B,CACO,SAAS2mD,GAAiBtqH,EAAMkwF,EAAOq1B,EAAUjwF,GAEpD,IAAKt1B,IACAA,EAAKyiH,SACJziH,EAAKmlH,UAHM,OAG+BnlH,EAAKklH,OAHpC,IAG0DllH,EAAKmlH,UAH/D,GAIb,OAQJ,GANKnlH,EAAKsL,OACNtL,EAAKsL,KAAO,IAEXtL,EAAKilH,WATqB,MASgBjlH,EAAKsL,MAAQtL,EAAKilH,WATlC,KAU3BjlH,EAAKsL,MAAQgqB,EAAMjnC,QAElB2R,EAAKilH,WAZqB,MAYgBjlH,EAAKsL,MAAQtL,EAAKilH,WAZlC,GAa3B,OAEJ,MAAM/mH,EAAS8B,EAAK9B,OAAS2gH,EAAc7+G,EAAK9B,QAf6B,EAeRylE,GAAY3jE,EAAK2jE,UAfxB,GAemDruC,EAAM4rF,OAftB,IAe+BhjH,EAAyBknH,EAAQplH,EAAKolH,OAfzH,EAe4I9qH,EAAMwkH,EAAY5uB,GAAQ11F,EAAMukH,EAAY7uB,GACrO,GAAKq1B,GAAYvlH,EAAK8F,SAAWk6G,EAAgBsF,WAe5C,CACDtlH,EAAK3R,OAASs1E,EACd,MAAMuiD,EAAW,EACblmH,EAAK3R,MAAQ63H,IACRlmH,EAAKklH,QACNllH,EAAKklH,MAAQ,GAEjBllH,EAAKklH,QACLllH,EAAK8F,OAASk6G,EAAgBsF,WAEtC,MAxBItlH,EAAK3R,OAASs1E,EACV3jE,EAAK3R,MAAQiM,IACR0F,EAAKklH,QACNllH,EAAKklH,MAAQ,GAEjBllH,EAAKklH,QACDK,EACAvlH,EAAK8F,OAASk6G,EAAgBwF,WAG9BxlH,EAAK3R,OAASiM,GAetB0F,EAAK2jE,UA1CoC,IA0CxByhD,IACjBplH,EAAK2jE,UAAYyhD,GAErBplH,EAAK3R,MAAQixE,EAAMt/D,EAAK3R,MAAOmM,EAAKF,EACxC,CACO,SAASiwH,GAAYtsH,EAAOq3B,GAC/B,IAAKr3B,EACD,OAEJ,MAAM,EAAEb,EAAC,EAAEC,EAAC,EAAEwtB,GAAM5sB,EACdusH,EAEC,CAAEhwH,IAAK,EAAGF,IAAK,KAFhBkwH,EAGC,CAAEhwH,IAAK,EAAGF,IAAK,KAElB8C,GACAktH,GAAiBltH,EALd,CAAE5C,IAAK,EAAGF,IAAK,MAKY,EAAOg7B,GAErCj4B,GACAitH,GAAiBjtH,EAAGmtH,GAAU,EAAMl1F,GAEpCzK,GACAy/F,GAAiBz/F,EAAG2/F,GAAU,EAAMl1F,EAE5C,CCvVA,MAAM1uB,GAAc,EAAdA,GAAoB,EAAK6jH,GACxB,EADwBA,GAExB,EAFwBA,GAGxB,EAHwBA,GAIxB,EAEA,SAASC,GAAS18D,EAAS28D,EAAO34G,GACrCg8C,EAAQ/C,YACR+C,EAAQ9C,OAAOy/D,EAAM94H,EAAG84H,EAAM34H,GAC9Bg8D,EAAQ7C,OAAOn5C,EAAIngB,EAAGmgB,EAAIhgB,GAC1Bg8D,EAAQ0E,WACZ,CAaO,SAASk4D,GAAM58D,EAAS68D,GAC3B78D,EAAQ2C,UAAU/pD,GAAUA,GAAUikH,EAAU94H,MAAO84H,EAAUv5H,OACrE,CCxBA,SAASw5H,GAAkB5J,EAAQ6J,EAAWv+G,GAC1C,MAAMkR,EAAWqtG,EAAUv+G,QACVtd,IAAbwuB,IACAwjG,EAAO10G,IAAQ00G,EAAO10G,IAFsB,GAEEkR,EAEtD,CACA,SAASstG,GAAS7jH,EAAQtb,GAA0B,IAAnBo/H,EAAS57H,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,IAAAA,UAAA,GACtC,IAAKxD,EACD,OAGJ,IADgBsb,EAEZ,OAEJ,MAAM+jH,EAJU/jH,EAIatb,MAC7B,GAAKq/H,EAGL,IAAK,MAAM1+G,KAAO3gB,EAAO,CACrB,MAAMwC,EAAQxC,EAAM2gB,GACfne,GAGL68H,EAAahsC,YAAY1yE,EAAKne,EAAO48H,EAAY,YAAc,GACnE,CACJ,CACO,MAAME,GACT7xH,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,EACjBwH,KAAKm0H,uBAAyB9G,IAC1B,IAAK,MAAM5d,KAAWzvG,KAAKo0H,kBACvB3kB,EAAQ4kB,YAAYhH,EACxB,EAEJrtH,KAAKs0H,sBAAwB,CAACnkH,EAAKk9G,EAAUnqF,EAAQqxF,EAAUC,EAAavgG,KACxE,IAAK,MAAMw7E,KAAWzvG,KAAKy0H,iBAAkB,CACzC,GAAIhlB,EAAQilB,eAAgB,CACxB,MAAM,KAAE3/D,EAAI,OAAED,GAAW26C,EAAQilB,eAAerH,EAAUl9G,EAAK+yB,EAAQqxF,GACnEx/D,IACAy/D,EAAYz/D,KAAOA,GAEnBD,IACA0/D,EAAY1/D,OAASA,EAE7B,CACA,GAAI26C,EAAQklB,mBAAoB,CAC5B,MAAMC,EAAmBnlB,EAAQklB,mBAAmBtH,GACpD,IAAK,MAAM93G,KAAOq/G,EACdf,GAAkB5/F,EAAW2gG,EAAkBr/G,EAEvD,CACAk6F,EAAQolB,aAAaxH,EACzB,GAEJrtH,KAAK80H,oBAAsB,KACvB,IAAK,MAAMr8F,KAAUz4B,KAAK+0H,eACtBt8F,EAAO9e,UACX,EAEJ3Z,KAAKg1H,yBAA2B3H,IAC5B,IAAI4H,EAAQC,EACZ,IAAK,MAAMz8F,KAAUz4B,KAAKm1H,cAOtB,IANKF,GAAUx8F,EAAO28F,oBAClBH,EAAS1E,GAAgB93F,EAAO28F,kBAAkB/H,MAEjD6H,GAAUz8F,EAAO48F,sBAClBH,EAAS3E,GAAgB93F,EAAO48F,oBAAoBhI,KAEpD4H,GAAUC,EACV,MAGR,MAAO,CAACD,EAAQC,EAAO,EAE3Bl1H,KAAKs1H,WAAa9K,UACd,MAA8C+K,EAA9Bv1H,KAAKxH,UAAUg9H,cAA+BC,eAAeF,MAAOvuH,EAAQuuH,EAAMvuH,MAClG,GAAIA,EAAO,CACP,MAAM0uH,EAAWzF,GAAgBjpH,GACjC,GAAI0uH,EAAU,CACV,MAAMC,EAAa,IACZD,EACH9oH,EAAG2oH,EAAM/8E,SAEbx4C,KAAK41H,iBAAmBhE,GAAgB+D,EAAYA,EAAW/oH,EACnE,CACJ,YAEU,IAAI6zF,SAAQ,CAACG,EAASi1B,KACxB,IAAKN,EAAMO,MACP,OAEJ,MAAM1kH,EAAM/U,SAASxC,cAAc,OACnCuX,EAAI7X,iBAAiB,QAAQ,KACzByG,KAAK+1H,YAAc,CACfD,MAAO1kH,EACPonC,QAAS+8E,EAAM/8E,SAEnBooD,GAAS,IAEbxvF,EAAI7X,iBAAiB,SAASy8H,IAC1BH,EAAOG,EAAIhnH,MAAM,IAErBoC,EAAIvQ,IAAM00H,EAAMO,KAAK,GAE7B,EAEJ91H,KAAKi2H,WAAa,KACd,MAAM1xH,EAAUvE,KAAKuE,QAASghE,EAAUvlE,KAAKxH,UAAUg9H,cACvD,GAAKjxH,EAAL,CAGIvE,KAAKk2H,aACLl2H,KAAKm2H,eAAiBnL,GAAW,CAAC,EAAGzmH,EAAQ3P,OAC7CoL,KAAKo2H,uBAGLp2H,KAAKq2H,sBAET,IAAK,MAAM9gH,KAAOgwD,EAAQ3wE,MAAO,CAC7B,IAAK2gB,IAAQgwD,EAAQ3wE,MACjB,SAEJ,MAAMwC,EAAQmuE,EAAQ3wE,MAAM2gB,GACvBne,GAGLmN,EAAQ3P,MAAMqzF,YAAY1yE,EAAKne,EAAO,YAC1C,CAjBA,CAiBA,EAEJ4I,KAAKs2H,WAAa9L,UACd,MAA8C+L,EAA9Bv2H,KAAKxH,UAAUg9H,cAA+BgB,UAAUC,KAAKF,MAAOG,EAAYH,EAAMxhE,KACtG,IAAKwhE,EAAM/K,OACP,OAEJ,MAA2BhzE,EAAH,EAA+B+9E,EAAMl+H,OAC7D,GAAIq+H,EAAU1vH,MAAO,CACjB,MAAM8tE,EAAYm7C,GAAgByG,EAAU1vH,OAC5C,IAAK8tE,EACD,OAEJ90E,KAAK22H,WAAa,CACd3vH,MAAO,IACA8tE,GAEPt8B,UAER,YAEU,IAAIioD,SAAQ,CAACG,EAASi1B,KACxB,IAAKa,EAAUZ,MACX,OAEJ,MAAM1kH,EAAM/U,SAASxC,cAAc,OACnCuX,EAAI7X,iBAAiB,QAAQ,KACzByG,KAAK22H,WAAa,CACdb,MAAO1kH,EACPonC,WAEJooD,GAAS,IAEbxvF,EAAI7X,iBAAiB,SAASy8H,IAC1BH,EAAOG,EAAIhnH,MAAM,IAErBoC,EAAIvQ,IAAM61H,EAAUZ,KAAK,GAEjC,EAEJ91H,KAAK42H,WAAaC,IACd72H,KAAK82H,MAAK3mH,GD9Jf,SAAmB4mD,EAAS68D,EAAWiD,GAC1C9/D,EAAQ1mD,UAAYwmH,GAAa,gBACjC9/D,EAAQzmD,SAASX,GAAUA,GAAUikH,EAAU94H,MAAO84H,EAAUv5H,OACpE,CC2J6B08H,CAAU5mH,EAAKnQ,KAAK+oC,KAAM8tF,IAAW,EAE1D72H,KAAKg3H,YAAc,CAAClB,EAAOt9E,KACvBx4C,KAAK82H,MAAK3mH,GD7Jf,SAAoB4mD,EAAS68D,EAAWkC,EAAOt9E,GAC7Cs9E,IAGL/+D,EAAQkG,YAAczkB,EACtBue,EAAQ8C,UAAUi8D,EAAOnmH,GAAUA,GAAUikH,EAAU94H,MAAO84H,EAAUv5H,QACxE08D,EAAQkG,YAAc,EAC1B,CCsJ6Bg6D,CAAW9mH,EAAKnQ,KAAK+oC,KAAM+sF,EAAOt9E,IAAS,EAEhEx4C,KAAKk3H,aAAe,KAChB,MAAM3yH,EAAUvE,KAAKuE,QAChBA,IAGLvE,KAAKm3H,uBAAsBC,GAAYA,EAASC,eAChDr3H,KAAKi2H,aACLj2H,KAAKs3H,iBACLt3H,KAAKm3H,uBAAsBC,IAClB7yH,GAAaA,aAAmBgzH,MAGrCH,EAASI,QAAQjzH,EAAS,CAAEwT,YAAY,GAAO,IACjD,EAEN/X,KAAKq2H,oBAAsB,KACvB,MAAM9xH,EAAUvE,KAAKuE,QAASkzH,EAAgBz3H,KAAKm2H,eAC7C5xH,GAAWkzH,GAGjB1D,GAASxvH,EAASkzH,EAAc,EAEpCz3H,KAAKm3H,sBAAwB5oH,IACpBvO,KAAK03H,mBAGVnpH,EAASvO,KAAK03H,kBAAkB,EAEpC13H,KAAKo2H,oBAAsB,KACvB,MAAM7xH,EAAUvE,KAAKuE,QACrB,IAAKA,EACD,OAGJwvH,GAASxvH,EAAS,CACd3H,SAAU,QACVyqF,OAAQrnF,KAAKxH,UAAUg9H,cAAcmC,WAAWtwC,OAAO7/E,SAH7C,IAIVpN,IAAK,IACLS,KAAM,IACNC,MAAO,OACPT,OAAQ,SACT,EAAK,EAEZ2F,KAAK+oC,KAAO,CACR1uC,OAAQ,EACRS,MAAO,GAEXkF,KAAKmiF,SAAW,KAChBniF,KAAK43H,YAAa,EAClB53H,KAAKy0H,iBAAmB,GACxBz0H,KAAKo0H,kBAAoB,GACzBp0H,KAAK+0H,eAAiB,GACtB/0H,KAAKm1H,cAAgB,EACzB,CACA,eAAIe,GACA,OAAOl2H,KAAKxH,UAAUg9H,cAAcmC,WAAWnM,MACnD,CACAmI,KAAAA,GACI,MAAMpuD,EAAUvlE,KAAKxH,UAAUg9H,cAAee,EAAQhxD,EAAQixD,UAAUC,KAAKF,MAAOG,EAAY12H,KAAK22H,WACjGpxD,EAAQkwD,eAAejK,OACvBxrH,KAAK63H,QAEAtB,EAAM/K,QAAU+K,EAAMl+H,OAJkG,GAIxEq+H,EACjDA,EAAU1vH,MACVhH,KAAK42H,WAAWhF,GAAgB8E,EAAU1vH,MAAO0vH,EAAUl+E,UAEtDk+E,EAAUZ,OACf91H,KAAKg3H,YAAYN,EAAUZ,MAAOY,EAAUl+E,SAG3C+sB,EAAQouD,OACb3zH,KAAK82H,MAAK3mH,IACNwjH,GAAMxjH,EAAKnQ,KAAK+oC,KAAK,GAGjC,CACA/wC,OAAAA,GAEI,GADAgI,KAAKjJ,OACDiJ,KAAK43H,WAAY,CACjB,MAAMrzH,EAAUvE,KAAKuE,QACrBA,GAASuzH,QACb,MAEI93H,KAAKq2H,sBAETr2H,KAAKy0H,iBAAmB,GACxBz0H,KAAKo0H,kBAAoB,GACzBp0H,KAAK+0H,eAAiB,GACtB/0H,KAAKm1H,cAAgB,EACzB,CACA2B,IAAAA,CAAK5kH,GACD,MAAM/B,EAAMnQ,KAAKmiF,SACjB,GAAKhyE,EAGL,OAAO+B,EAAG/B,EACd,CACA4nH,SAAAA,CAAU7lH,GACN,MAAM/B,EAAMnQ,KAAKmiF,SACjB,GAAKhyE,EAGL,OAAO+B,EAAG/B,EACd,CACA6nH,YAAAA,CAAa3K,EAAUhvF,GACnB,GAAIgvF,EAAS4K,UAAY5K,EAASl9D,UAC9B,OAEJ,MAAMjtB,EAASmqF,EAASjB,YACxB,GAAIlpF,GAD+C,EAE/C,OAEJ,MAAMg1F,EAAU7K,EAASiF,eAAgB6F,EAAU9K,EAASkF,kBAAoB2F,EAChF,IAAKjD,EAAQC,GAAUl1H,KAAKg1H,yBAAyB3H,GAChD4H,IACDA,EAASiD,GAERhD,IACDA,EAASiD,IAERlD,GAAWC,IAGhBl1H,KAAK82H,MAAM3mH,IACP,MAAM3X,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAe4C,EAAgB/K,EAAS9nD,QAAQ8hB,OAAgCgxC,EAAH,EAAuChL,EAASgL,aAAcC,EAAiBD,GAAgBD,EAAcG,YAAiC//E,EAAU60E,EAASmL,OAAOhgF,SAAW60E,EAAS70E,SAASphD,OAA1D,EAAsIm9H,EAAW/7E,EAAU8/E,EAAgBG,GAAxEpL,EAASxlC,eAAiBrvC,GAA+E8/E,EAAgBrkG,EAAY,CAAC,EAAGugG,EAAc,CACpgBz/D,KAAMkgE,EAASpD,GAAgBoD,EAAQV,QAAYt8H,GAEvDu8H,EAAY1/D,OAASogE,EAASrD,GAAgBqD,EAAQuD,GAAkBjE,EAAYz/D,KACpF/0D,KAAKs0H,sBAAsBnkH,EAAKk9G,EAAUnqF,EAAQqxF,EAAUC,EAAavgG,GDpR9E,SAAsBlrB,GACzB,MAAM,UAAEvQ,EAAS,QAAEu+D,EAAO,SAAEs2D,EAAQ,MAAEhvF,EAAK,YAAEm2F,EAAW,eAAEiB,EAAc,UAAEiD,EAAS,OAAEx1F,EAAM,QAAEsV,EAAO,OAAEmgF,EAAM,UAAE1kG,GAAelrB,EAAMrM,EAAM2wH,EAASlB,cAAiC36F,EAAQ67F,EAAS/hD,UAAY+hD,EAASuL,aAAevL,EAAS3gD,SAASl7C,MAA1E,GAAiGqnG,EACxQ58H,KAAK2tB,IAAI4H,GAD+PqnG,EAExQ58H,KAAKwuB,IAAI+G,GACfsnG,IAAatnG,EAAqBgV,EAAgB,CACjD55B,EAAGisH,GAAkB5kG,EAAUrnB,GAAK4mH,IACpChtH,EAAGsyH,EAAWD,GAAkB5kG,EAAUztB,GAFZ,GAE6BytB,EAAUztB,GAAKgtH,GAC1ErmH,EAAG2rH,GAAYD,GAAkB5kG,EAAU9mB,GAHb,GAG8B8mB,EAAU9mB,GAAKqmH,GAC3E1sH,EAAG+xH,GAAkB5kG,EAAUntB,GAAK0sH,KAExCz8D,EAAQpjC,aAAa6S,EAAc55B,EAAG45B,EAAchgC,EAAGggC,EAAcr5B,EAAGq5B,EAAc1/B,EAAGpK,EAAI9B,EAAG8B,EAAI3B,GAChG06H,IACA1+D,EAAQwC,yBAA2Bm/D,GAEvC,MAAMK,EAAc1L,EAAS0L,YACzBJ,EAAOnN,QAAUuN,IACjBhiE,EAAQiiE,WAAaL,EAAOM,KAC5BliE,EAAQgiE,YAAcnH,GAAgBmH,GACtChiE,EAAQmiE,cAAgBP,EAAO1xH,OAAOrM,EACtCm8D,EAAQoiE,cAAgBR,EAAO1xH,OAAOlM,GAEtCy5H,EAAYz/D,OACZgC,EAAQ1mD,UAAYmkH,EAAYz/D,MAEpC,MAA0B6L,EAAcysD,EAASzsD,aAA1B,EACvB7J,EAAQvP,UAAYoZ,EAChB4zD,EAAY1/D,SACZiC,EAAQxB,YAAci/D,EAAY1/D,QAEtC,MAAMskE,EAAW,CACb5gI,YACAu+D,UACAs2D,WACAnqF,SACAsV,UACAna,QACAmI,gBACAo6B,gBA2BD,SAAmB73D,GACtB,MAAM,UAAEvQ,EAAS,QAAEu+D,EAAO,SAAEs2D,EAAQ,OAAEnqF,EAAM,QAAEsV,EAAO,MAAEna,EAAK,YAAEuiC,EAAW,cAAEp6B,GAAkBz9B,EAAMswH,EAAiB,EACpH,IAAKhM,EAAS7+F,MACV,OAEJ,MAAM8qG,EAAS9gI,EAAU+gI,aAAav6G,IAAIquG,EAAS7+F,OAC9C8qG,IAGLviE,EAAQ/C,YACRslE,EAAOxC,KAAK,CACR//D,UACAs2D,WACAnqF,SACAsV,UACAna,QACAm7F,WAAYhhI,EAAUihI,OAAOD,WAC7BhzF,cAAe,IAAKA,KAEpB6mF,EAASqM,YACT3iE,EAAQ0E,YAERmF,EAAcy4D,GACdtiE,EAAQjC,SAERu4D,EAASsM,WACT5iE,EAAQhC,OAEhB,CArDI6kE,CAAUR,GAsDP,SAA4BrwH,GAC/B,MAAM,UAAEvQ,EAAS,QAAEu+D,EAAO,SAAEs2D,EAAQ,OAAEnqF,EAAM,QAAEsV,EAAO,MAAEna,EAAK,cAAEmI,GAAkBz9B,EAChF,IAAKskH,EAAS7+F,MACV,OAEJ,MAAM8qG,EAAS9gI,EAAU+gI,aAAav6G,IAAIquG,EAAS7+F,OAC9C8qG,GAAQjF,WAGbiF,EAAOjF,UAAU,CACbt9D,UACAs2D,WACAnqF,SACAsV,UACAna,QACAm7F,WAAYhhI,EAAUihI,OAAOD,WAC7BhzF,cAAe,IAAKA,IAE5B,CAvEIqzF,CAAmBT,GAKhB,SAAoBrwH,GACvB,MAAM,UAAEvQ,EAAS,QAAEu+D,EAAO,SAAEs2D,EAAQ,OAAEnqF,EAAM,QAAEsV,EAAO,MAAEna,EAAK,cAAEmI,GAAkBz9B,EAChF,IAAKskH,EAAS9yE,OACV,OAEJ,MAAM++E,EAAS9gI,EAAUshI,cAAc96G,IAAIquG,EAAS9yE,QAC/C++E,GAGLA,EAAOxC,KAAK,CACR//D,UACAs2D,WACAnqF,SACAsV,UACAna,QACAm7F,WAAYhhI,EAAUihI,OAAOD,WAC7BhzF,cAAe,IAAKA,IAE5B,CAtBIuzF,CAAWX,GACXriE,EAAQwC,yBAA2B,cACnCxC,EAAQijE,gBACZ,CCyOYhC,CAAa,CACTx/H,YACAu+D,QAAS5mD,EACTk9G,WACAhvF,QACAm2F,cACAiB,eAAgBlwD,EAAQkwD,eAAejK,OACvCkN,UAAWnzD,EAAQkwD,eAAeiD,UAClCx1F,OAAQA,EAASm1F,GAAgBD,EAAc6B,SAC/CzhF,QAAS+7E,EACToE,OAAQtL,EAAS9nD,QAAQozD,OACzB1kG,cAEJj0B,KAAKm0H,uBAAuB9G,EAAS,GAE7C,CACA6M,kBAAAA,CAAmBzhG,EAAQ40F,EAAUhvF,GACjCr+B,KAAK82H,MAAK3mH,GDhLX,SAA4B4mD,EAASt+B,EAAQ40F,EAAUhvF,GACrD5F,EAAOu/F,cAGZv/F,EAAOu/F,aAAajhE,EAASs2D,EAAUhvF,EAC3C,CC2KyB67F,CAAmB/pH,EAAKsoB,EAAQ40F,EAAUhvF,IAC/D,CACA87F,UAAAA,CAAW1hG,EAAQ4F,GACfr+B,KAAK82H,MAAK3mH,GDzLX,SAAoB4mD,EAASt+B,EAAQ4F,GACnC5F,EAAOq+F,MAGZr+F,EAAOq+F,KAAK//D,EAAS14B,EACzB,CCoLyB87F,CAAWhqH,EAAKsoB,EAAQ4F,IAC7C,CACA,UAAMvjB,GACF9a,KAAKm3H,uBAAsBiD,GAAOA,EAAI/C,eACtCr3H,KAAK03H,kBJtQN,SAA8BnpH,GACjC,IAAI27G,MAAuC,qBAArBmQ,iBAGtB,OAAO,IAAIA,iBAAiB9rH,EAChC,CIiQiC+rH,EAAqBC,IAC1C,IAAK,MAAMC,KAAUD,EACG,eAAhBC,EAAO1+H,MAAkD,UAAzB0+H,EAAOl7C,eACvCt/E,KAAKk3H,cAEb,IAEJl3H,KAAK2Z,SACL3Z,KAAKi2H,mBACCj2H,KAAKs1H,aACX,UACUt1H,KAAKs2H,YACf,CACA,MAAO5sH,GACH+/G,IAAYz6G,MAAMtF,EACtB,CACA1J,KAAKs3H,iBACLt3H,KAAKm3H,uBAAsBiD,IAClBp6H,KAAKuE,SAAavE,KAAKuE,mBAAmBgzH,MAG/C6C,EAAI5C,QAAQx3H,KAAKuE,QAAS,CAAEwT,YAAY,GAAO,IAEnD/X,KAAKy6H,eACLz6H,KAAK06H,cACL16H,KAAK63H,OACT,CACAP,cAAAA,GACI,MAA8CqD,EAA9B36H,KAAKxH,UAAUg9H,cAAoCmF,WAAYp2H,EAAUvE,KAAKuE,QAC9F,IAAKA,EACD,OAEJ,MAAM0vH,EAAe1vH,EAAQ3P,MAC7B,GAAKq/H,EAAL,CAGA,GAAI0G,EAAW3zH,MAAO,CAClB,MAAMA,EAAQipH,GAAgB0K,EAAW3zH,OACzCitH,EAAan1D,gBAAkB93D,EAAQ4qH,GAAgB5qH,EAAO2zH,EAAWniF,SAAW,EACxF,MAEIy7E,EAAan1D,gBAAkB,GAEnCm1D,EAAa2G,gBAAkBD,EAAW7E,OAAS,GACnD7B,EAAa4G,mBAAqBF,EAAW/9H,UAAY,GACzDq3H,EAAa6G,iBAAmBH,EAAWtkC,QAAU,GACrD49B,EAAa8G,eAAiBJ,EAAW5xF,MAAQ,EAXjD,CAYJ,CACA2xF,WAAAA,GACI16H,KAAK+0H,eAAiB,GACtB,IAAK,MAAO,CAAEt8F,KAAWz4B,KAAKxH,UAAUwtE,QAChCvtC,EAAO9e,QACP3Z,KAAK+0H,eAAez0H,KAAKm4B,IAEzBA,EAAO28F,mBAAqB38F,EAAO48F,sBACnCr1H,KAAKm1H,cAAc70H,KAAKm4B,EAGpC,CACAgiG,YAAAA,GACIz6H,KAAKy0H,iBAAmB,GACxBz0H,KAAKo0H,kBAAoB,GACzB,IAAK,MAAM3kB,KAAWzvG,KAAKxH,UAAUg+H,UAAUwE,SACvCvrB,EAAQ4kB,WACRr0H,KAAKo0H,kBAAkB9zH,KAAKmvG,IAE5BA,EAAQilB,gBAAkBjlB,EAAQklB,oBAAsBllB,EAAQolB,aAChE70H,KAAKy0H,iBAAiBn0H,KAAKmvG,EAGvC,CACAwrB,UAAAA,CAAW/qH,GACHlQ,KAAK43H,YAAc53H,KAAKuE,SACxBvE,KAAKuE,QAAQuzH,SAEjB93H,KAAK43H,WACD1nH,EAAOyjG,SAAWmR,KAAsB50G,EAAOyjG,QACF,SAAvCzjG,EAAOyjG,QAAQmR,GACf9kH,KAAK43H,WACf53H,KAAKuE,QAAU2L,EACflQ,KAAKuE,QAAQ22H,WAAa,OAC1Bl7H,KAAKm2H,eAAiBnL,GAAW,CAAC,EAAGhrH,KAAKuE,QAAQ3P,OAClDoL,KAAK+oC,KAAK1uC,OAAS6V,EAAO0tD,aAC1B59D,KAAK+oC,KAAKjuC,MAAQoV,EAAO85B,YACzBhqC,KAAKmiF,SAAWniF,KAAKuE,QAAQ6L,WAAW,MACxCpQ,KAAKm3H,uBAAsBiD,IAClBp6H,KAAKuE,SAAavE,KAAKuE,mBAAmBgzH,MAG/C6C,EAAI5C,QAAQx3H,KAAKuE,QAAS,CAAEwT,YAAY,GAAO,IAEnD/X,KAAKxH,UAAUihI,OAAO3+G,OACtB9a,KAAKs3H,gBACT,CACAO,KAAAA,GACI,MAAMtyD,EAAUvlE,KAAKxH,UAAUg9H,cAC/Bx1H,KAAK82H,MAAK3mH,IACFo1D,EAAQkwD,eAAejK,QAAUjmD,EAAQkwD,eAAeF,OACxD5B,GAAMxjH,EAAKnQ,KAAK+oC,MACZ/oC,KAAK+1H,YACL/1H,KAAKg3H,YAAYh3H,KAAK+1H,YAAYD,MAAO91H,KAAK+1H,YAAYv9E,SAErDx4C,KAAK41H,iBACV51H,KAAK42H,WAAW52H,KAAK41H,kBAGrB51H,KAAK42H,cAIT52H,KAAK42H,YACT,GAER,CACAj9G,MAAAA,GACI,IAAK3Z,KAAKuE,QACN,OAAO,EAEX,MAAM/L,EAAYwH,KAAKxH,UAAWq1H,EAAUr1H,EAAUihI,OAAOD,WAAYzwF,EAAOvwC,EAAU0X,OAAO64B,KAAMoyF,EAC5Fn7H,KAAKuE,QAAQylC,YAAc6jF,EADiEsN,EAE3Fn7H,KAAKuE,QAAQq5D,aAAeiwD,EAExC,GAAIsN,IAAmBpyF,EAAK1uC,QACxB8gI,IAAkBpyF,EAAKjuC,OACvBqgI,IAAmBn7H,KAAKuE,QAAQlK,QAChC8gI,IAAkBn7H,KAAKuE,QAAQzJ,MAC/B,OAAO,EAEX,MAAMsgI,EAAU,IAAKryF,GASrB,OARA/oC,KAAKuE,QAAQzJ,MAAQiuC,EAAKjuC,MAAQkF,KAAKuE,QAAQylC,YAAc6jF,EAC7D7tH,KAAKuE,QAAQlK,OAAS0uC,EAAK1uC,OAAS2F,KAAKuE,QAAQq5D,aAAeiwD,EAC5D7tH,KAAKxH,UAAU6iI,SACf7iI,EAAUg+H,UAAU8E,gBAAgB,CAChCxgI,MAAOiuC,EAAKjuC,MAAQsgI,EAAQtgI,MAC5BT,OAAQ0uC,EAAK1uC,OAAS+gI,EAAQ/gI,UAG/B,CACX,CACAtD,IAAAA,GACIiJ,KAAKm3H,uBAAsBiD,GAAOA,EAAI/C,eACtCr3H,KAAK03H,uBAAoBz/H,EACzB+H,KAAK82H,MAAK3mH,GAAOwjH,GAAMxjH,EAAKnQ,KAAK+oC,OACrC,CACA,kBAAMwyF,GACF,IAAKv7H,KAAKuE,UAAYvE,KAAK2Z,SACvB,OAEJ,MAAMnhB,EAAYwH,KAAKxH,UAAWgjI,EAAehjI,EAAUijI,sBAC3DjjI,EAAUg+H,UAAUkF,aACpB17H,KAAK80H,sBACD0G,SACMhjI,EAAUmjI,SAExB,ECpeG,IAAIC,IACX,SAAWA,GACPA,EAA4B,OAAI,SAChCA,EAA4B,OAAI,SAChCA,EAA4B,OAAI,QACnC,CAJD,CAIGA,KAAwBA,GAAsB,CAAC,ICAlD,SAASC,GAAet3H,EAAS8K,EAAOnW,EAAS+uD,EAAKsd,GAClD,GAAItd,EAAK,CACL,IAAI6zE,EAAa,CAAEj9B,SAAS,GACxBymB,EAAU//C,GACVu2D,EAAWl9B,QAAUr5B,OAEJttE,IAAZstE,IACLu2D,EAAav2D,GAEjBhhE,EAAQhL,iBAAiB8V,EAAOnW,EAAS4iI,EAC7C,KACK,CACD,MAAMC,EAAgBx2D,EACtBhhE,EAAQ/K,oBAAoB6V,EAAOnW,EAAS6iI,EAChD,CACJ,CACO,MAAMC,GACT35H,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,EACjBwH,KAAKi8H,mBAAqBvyH,IACtB,MAAMlR,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cACtD,GAAIx1H,KAAKk8H,SAAU,CACf,MAAMC,EAAqB3jI,EAAUoF,cAAcw+H,MAAOC,EAAWF,EAAmBv/H,SACxF,IAAKy/H,EACD,OAEJF,EAAmBG,cAAgB,IAAKD,GACxCF,EAAmBI,WAAY,IAAI3wF,MAAO4wF,UAE1C9Q,GADgBnmD,EAAQ3nE,cAAc6+H,OAAOxnB,QACX95G,MAAMA,GAAQ6E,KAAKxH,UAAUkkI,gBAAgBvhI,IACnF,CACA,GAAe,aAAXuO,EAAE5N,KAAqB,CAEvByd,YAAW,IAAMvZ,KAAK28H,qBADH,IAEvB,GAEJ38H,KAAK48H,mBAAsBlzH,IACvB,MAAMmzH,EAAanzH,EAAGlR,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAU+sE,QAASu3D,EAAgBv3D,EAAQu3D,cAAeC,EAAYF,EAAW9Q,QAAU+Q,EAAcE,KAAOF,EAAcG,MAAOC,EAAQ33D,EAAQ43D,OAAOxhI,MAAKuhI,GAASA,EAAMrnI,OAASknI,IACjPG,GAAOzc,QAAQgO,MACVj2H,EAAU4kI,UAAUL,EAC7B,EAEJ/8H,KAAKq9H,wBAA0B,KAC3B,MAAM7kI,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cACtDx1H,KAAK28H,oBACAp3D,EAAQ+3D,cAGTjhI,UAAU4yC,QACVz2C,EAAU+kI,YAAa,EACvB/kI,EAAUxB,UAGVwB,EAAU+kI,YAAa,EACnB/kI,EAAUglI,gBACLhlI,EAAU5B,MAAK,GAGf4B,EAAUs+H,MAAK,IAE5B,EAEJ92H,KAAKy9H,oBAAsB,KACnBz9H,KAAK09H,iBACLn9B,aAAavgG,KAAK09H,uBACX19H,KAAK09H,gBAEhB,MAAMC,EAAenT,UACjB,MAAMt6G,EAASlQ,KAAKxH,UAAU0X,aACxBA,GAAQqrH,eAAc,EAEhCv7H,KAAK09H,eAAiBnkH,YAAW,KAAWokH,GAAc,GAAE39H,KAAKxH,UAAUg9H,cAAc53H,cAAc6+H,OAAO9iH,OAAO0pG,MAAQ+B,EAAsB,EAEvJplH,KAAK49H,8BAAgC,CAACC,EAAoB51E,KACtD,MAAM61E,EAAW99H,KAAK+9H,UAAWvlI,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAC3EwI,EAAkBxlI,EAAUoF,cAAc2G,QAChD,IAAKy5H,EACD,OAEJ,MAAMC,EAAOD,EAAiBE,EAAW1lI,EAAU0X,OAAO3L,QACtD25H,IACAA,EAAStpI,MAAMupI,cAAgBF,IAASC,EAAW,UAAY,SAE7D34D,EAAQ3nE,cAAc6+H,OAAO2B,QAAQ5S,QAAUjmD,EAAQ3nE,cAAc6+H,OAAOxnB,QAAQuW,UAG1FqQ,GAAemC,EAAiBhZ,EAAgB8Y,EAASO,UAAWp2E,GACpE4zE,GAAemC,EjBtFI,aiBsF8BF,EAASQ,WAAYr2E,GACtE4zE,GAAemC,EjBrFG,YiBqF8BF,EAASS,UAAWt2E,GAC/Dsd,EAAQ3nE,cAAc6+H,OAAOxnB,QAAQuW,QAItCqQ,GAAemC,EAAiB/Y,EAAe6Y,EAASU,cAAev2E,GACvE4zE,GAAemC,EjBjGH,YiBiGkCF,EAASW,QAASx2E,GAChE4zE,GAAemC,EjBnGD,ciBmGkCF,EAASY,UAAWz2E,IALpE4zE,GAAemC,EAAiB/Y,EAAe6Y,EAASa,SAAU12E,GAOtE4zE,GAAemC,EAAiBH,EAAoBC,EAASc,WAAY32E,GACzE4zE,GAAemC,EjB9FK,ciB8F8BF,EAASe,YAAa52E,GAAI,EAEhFjoD,KAAK8+H,iBAAmB72E,IACpB,MAAM61E,EAAW99H,KAAK+9H,UAAWvlI,EAAYwH,KAAKxH,UAA8CumI,EAAzBvmI,EAAUg9H,cAAoC53H,cAAcohI,UAAWd,EAAW1lI,EAAU0X,OAAO3L,QAC1K,IAAIs5H,EAAqB9Y,EACrBga,IAAenD,GAAoBthI,QACnC9B,EAAUoF,cAAc2G,QAAUjK,OAClCujI,EjB1Ga,ciB4GRkB,IAAenD,GAAoBxxF,QAAU8zF,EAClD1lI,EAAUoF,cAAc2G,QAAU25H,EAASe,eAAiBf,EAAS10F,WAGrEhxC,EAAUoF,cAAc2G,QAAU25H,EAEtCl+H,KAAKk/H,kBAAkBj3E,GACvBjoD,KAAKm/H,cAAcl3E,GACnBjoD,KAAK49H,8BAA8BC,EAAoB51E,GACnD5rD,UACAw/H,GAAex/H,SjB/GM,mBiB+G2ByhI,EAASsB,iBAAkBn3E,GAAK,EACpF,EAEJjoD,KAAKk/H,kBAAoBj3E,IACrB,MAAM61E,EAAW99H,KAAK+9H,UAAWsB,EAAalV,GAAe,gCACxDkV,SAG+BpnI,IAAhConI,EAAW9lI,sBAIgBtB,IAA3BonI,EAAWC,cAGXr3E,EACAo3E,EAAWC,YAAYxB,EAASyB,gBAGhCF,EAAWG,eAAe1B,EAASyB,iBAVnC1D,GAAewD,EAAY,SAAUvB,EAAS2B,YAAax3E,GAW/D,EAEJjoD,KAAKm/H,cAAgBl3E,IACjB,MAAM61E,EAAW99H,KAAK+9H,UAAWvlI,EAAYwH,KAAKxH,UAClD,IADuEA,EAAUg9H,cACpE53H,cAAc6+H,OAAO9iH,OAC9B,OAEJ,GAA8B,qBAAnB+lH,eAEP,YADA7D,GAAevhI,OjB5IJ,SiB4IyBwjI,EAASnkH,OAAQsuC,GAGzD,MAAMi2E,EAAW1lI,EAAU0X,OAAO3L,QAC9BvE,KAAK2/H,kBAAoB13E,GACrBi2E,GACAl+H,KAAK2/H,gBAAgBC,UAAU1B,GAEnCl+H,KAAK2/H,gBAAgBtI,oBACdr3H,KAAK2/H,kBAEN3/H,KAAK2/H,iBAAmB13E,GAAOi2E,IACrCl+H,KAAK2/H,gBAAkB,IAAID,gBAAgBG,IACzBA,EAAQlkI,MAAK+N,GAAKA,EAAE/D,SAAWu4H,KAI7Cl+H,KAAKy9H,qBAAqB,IAE9Bz9H,KAAK2/H,gBAAgBnI,QAAQ0G,GACjC,EAEJl+H,KAAK8/H,WAAa,KACd,MAAM,cAAEliI,GAAkBoC,KAAKxH,UAC/B,IAAKoF,EACD,OAEJ,MAAM,MAAEw+H,GAAUx+H,EAClBw+H,EAAM2D,UAAW,EACjB3D,EAAM4D,aAAe5D,EAAMx/H,QAAQ,EAEvCoD,KAAKigI,iBAAmBv2H,IACpB,MAAMlR,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,eAAe,MAAE4G,GAAU5jI,EAAUoF,cAC3Fw+H,EAAMvR,QAAS,EACf,IAAIqV,GAAU,EACd,MAAMC,EAAgB/D,EAAMx/H,SAC5B,GAAKujI,GAAkB56D,EAAQ3nE,cAAc6+H,OAAOxnB,QAAQuW,OAA5D,CAGA,IAAK,MAAO,CAAE/yF,KAAWjgC,EAAUwtE,QAC/B,GAAKvtC,EAAO2nG,qBAGZF,EAAUznG,EAAO2nG,mBAAmBD,GAChCD,GACA,MAGHA,GACDlgI,KAAKi8H,mBAAmBvyH,GAE5B0yH,EAAM2D,UAAW,CAbjB,CAasB,EAE1B//H,KAAK28H,kBAAoB,KACrB,MAAM/+H,EAAgBoC,KAAKxH,UAAUoF,cACrC,IAAKA,EACD,OAEJ,MAAMw+H,EAAQx+H,EAAcw+H,aACrBA,EAAMx/H,gBACNw/H,EAAME,qBACNF,EAAM4D,aACbpiI,EAAciR,OAASk2G,EACvBqX,EAAMvR,QAAS,EACfuR,EAAM2D,UAAW,CAAK,EAE1B//H,KAAKqgI,gBAAkB32H,IACnB,MAAMlR,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAe53H,EAAgBpF,EAAUoF,cAAesgI,EAAW1lI,EAAU0X,OAAO3L,QAC1I,IAAK3G,GAAe2G,QAChB,OAGJ,IAAI7H,EACJ,GAFAkB,EAAcw+H,MAAMvR,QAAS,EAEzBnhH,EAAE5N,KAAK8zH,WAAW,WAAY,CAC9B5vH,KAAKk8H,UAAW,EAChB,MAAMoE,EAAa52H,EACnB,GAAI9L,EAAc2G,UAAYjK,QAC1B,GAAI4jI,EAAU,CACV,MAAMqC,EAAarC,EAAS/jI,wBAC5BuC,EAAM,CACF9B,EAAG0lI,EAAWnjI,QAAUojI,EAAW1lI,KACnCE,EAAGulI,EAAWljI,QAAUmjI,EAAWnmI,IAE3C,OAEC,GAAImrE,EAAQ3nE,cAAcohI,YAAcpD,GAAoBxxF,OAAQ,CACrE,MAAM+P,EAASmmF,EAAW36H,OAAQA,EAAS26H,EAAWzuC,cACtD,GAAI13C,GAAUx0C,GAAUu4H,EAAU,CAC9B,MAAMnjF,EAAaZ,EAAOhgD,wBAAyBqmI,EAAa76H,EAAOxL,wBAAyBsmI,EAAavC,EAAS/jI,wBACtHuC,EAAM,CACF9B,EAAG0lI,EAAWI,QA5O3B,EA4O8C3lF,EAAWlgD,MAAQ2lI,EAAW3lI,KAAO4lI,EAAW5lI,MACjFE,EAAGulI,EAAWK,QA7O3B,EA6O8C5lF,EAAW3gD,KAAOomI,EAAWpmI,IAAMqmI,EAAWrmI,KAEvF,MAEIsC,EAAM,CACF9B,EAAG0lI,EAAWI,SAAWJ,EAAWnjI,QACpCpC,EAAGulI,EAAWK,SAAWL,EAAWljI,QAGhD,MACSkjI,EAAW36H,SAAWu4H,IAC3BxhI,EAAM,CACF9B,EAAG0lI,EAAWI,SAAWJ,EAAWnjI,QACpCpC,EAAGulI,EAAWK,SAAWL,EAAWljI,SAGhD,MAGI,GADA4C,KAAKk8H,SAAsB,cAAXxyH,EAAE5N,KACdoiI,EAAU,CACV,MAAM0C,EAAal3H,EAAGm3H,EAAe,EAAGC,EAAYF,EAAW1pC,QAAQ0pC,EAAW1pC,QAAQ7+F,OAASwoI,GAAeJ,EAAavC,EAAS/jI,wBAAyB4mI,EAAoB,EACrLrkI,EAAM,CACF9B,EAAGkmI,EAAU3jI,SAAWsjI,EAAW5lI,MAAQkmI,GAC3ChmI,EAAG+lI,EAAU1jI,SAAWqjI,EAAWrmI,KAAO2mI,GAElD,CAEJ,MAAMlT,EAAUr1H,EAAUihI,OAAOD,WAC7B98H,IACAA,EAAI9B,GAAKizH,EACTnxH,EAAI3B,GAAK8yH,GAEbjwH,EAAcw+H,MAAMx/H,SAAWF,EAC/BkB,EAAciR,OAASm2G,CAAc,EAEzChlH,KAAKghI,UAAYt3H,IACb,MAAMssH,EAAMtsH,EAAGwtF,EAAUt+F,MAAMqoI,KAAKjL,EAAI5+B,gBACxC,IAAK,MAAM8pC,KAAShqC,EAChBl3F,KAAKmhI,SAAS9xC,OAAO6xC,EAAME,YAE/BphI,KAAK28H,mBAAmB,EAE5B38H,KAAKqhI,eAAiB33H,IAClB,MAAMssH,EAAMtsH,EAAGwtF,EAAUt+F,MAAMqoI,KAAKjL,EAAI5+B,gBACxC,IAAK,MAAM8pC,KAAShqC,EAChBl3F,KAAKmhI,SAAS9xC,OAAO6xC,EAAME,YAE/BphI,KAAKigI,iBAAiBv2H,EAAE,EAE5B1J,KAAKshI,YAAc53H,IACf,MAAMssH,EAAMtsH,EAAGwtF,EAAUt+F,MAAMqoI,KAAKjL,EAAI5+B,gBACxC,IAAK,MAAM8pC,KAAShqC,EAChBl3F,KAAKmhI,SAASz/C,IAAIw/C,EAAME,WAAY/e,YAAYx2E,OAEpD7rC,KAAKqgI,gBAAgB32H,EAAE,EAE3B1J,KAAKk8H,UAAW,EAChBl8H,KAAKmhI,SAAW,IAAInyC,IACpBhvF,KAAK+9H,UAAY,CACbW,UAAWA,IAAM1+H,KAAK8/H,aACtBlB,WAAYA,IAAM5+H,KAAK28H,oBACvB0B,UAAY30H,GAAM1J,KAAKqgI,gBAAgB32H,GACvC+0H,QAAU/0H,GAAM1J,KAAKigI,iBAAiBv2H,GACtC40H,WAAa50H,GAAM1J,KAAKshI,YAAY53H,GACpC60H,UAAY70H,GAAM1J,KAAKqgI,gBAAgB32H,GACvCi1H,SAAWj1H,GAAM1J,KAAKghI,UAAUt3H,GAChCm1H,YAAcn1H,GAAM1J,KAAKghI,UAAUt3H,GACnC80H,cAAgB90H,GAAM1J,KAAKqhI,eAAe33H,GAC1C01H,iBAAkBA,IAAMp/H,KAAKq9H,0BAC7BoC,YAAc/1H,GAAM1J,KAAK48H,mBAAmBlzH,GAC5C61H,eAAiB71H,GAAM1J,KAAK48H,mBAAmBlzH,GAC/CiQ,OAAQA,KACJ3Z,KAAKy9H,qBAAqB,EAGtC,CACA8D,YAAAA,GACIvhI,KAAK8+H,kBAAiB,EAC1B,CACA0C,eAAAA,GACIxhI,KAAK8+H,kBAAiB,EAC1B,EClUG,IAAI2C,GCAAC,IDCX,SAAWD,GACPA,EAAuB,YAAI,cAC3BA,EAAyB,cAAI,gBAC7BA,EAA0B,eAAI,iBAC9BA,EAA4B,iBAAI,mBAChCA,EAA4B,iBAAI,mBAChCA,EAA8B,mBAAI,qBAClCA,EAA2B,gBAAI,kBAC/BA,EAAyB,cAAI,gBAC7BA,EAA0B,eAAI,iBAC9BA,EAAyB,cAAI,gBAC7BA,EAA6B,kBAAI,oBACjCA,EAA2B,gBAAI,iBAClC,CAbD,CAaGA,KAAcA,GAAY,CAAC,IEbvB,MAAME,GACTt/H,WAAAA,GACIrC,KAAK5I,MAAQ,EACjB,CACA,aAAOo1G,CAAOryD,EAAQpxC,GAClB,MAAM/B,EAAQ,IAAI26H,GAUlB,OATA36H,EAAMqH,KAAK8rC,QACEliD,IAAT8Q,IACIy8G,EAASz8G,IAASlQ,EAAQkQ,GAC1B/B,EAAMqH,KAAK,CAAEjX,MAAO2R,IAGpB/B,EAAMqH,KAAKtF,IAGZ/B,CACX,CACAqH,IAAAA,CAAKtF,QACmB9Q,IAAhB8Q,GAAM3R,QAGV4I,KAAK5I,MAAQ2R,EAAK3R,MACtB,ECtBG,MAAMwqI,GACTv/H,WAAAA,GACIrC,KAAKgH,MAAQ,IAAI26H,GACjB3hI,KAAKgH,MAAM5P,MAAQ,GACnB4I,KAAK81H,MAAQ,GACb91H,KAAKpD,SAAW,GAChBoD,KAAKq2F,OAAS,GACdr2F,KAAK+oC,KAAO,GACZ/oC,KAAKw4C,QAAU,CACnB,CACAnqC,IAAAA,CAAKtF,GACIA,SAGc9Q,IAAf8Q,EAAK/B,QACLhH,KAAKgH,MAAQ26H,GAAan1B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,aAEnC/O,IAAf8Q,EAAK+sH,QACL91H,KAAK81H,MAAQ/sH,EAAK+sH,YAEA79H,IAAlB8Q,EAAKnM,WACLoD,KAAKpD,SAAWmM,EAAKnM,eAEL3E,IAAhB8Q,EAAKstF,SACLr2F,KAAKq2F,OAASttF,EAAKstF,aAELp+F,IAAd8Q,EAAKggC,OACL/oC,KAAK+oC,KAAOhgC,EAAKggC,WAEA9wC,IAAjB8Q,EAAKyvC,UACLx4C,KAAKw4C,QAAUzvC,EAAKyvC,SAE5B,EChCG,MAAMqpF,GACTx/H,WAAAA,GACIrC,KAAKw4C,QAAU,CACnB,CACAnqC,IAAAA,CAAKtF,GACIA,SAGc9Q,IAAf8Q,EAAK/B,QACLhH,KAAKgH,MAAQ26H,GAAan1B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,aAEnC/O,IAAf8Q,EAAK+sH,QACL91H,KAAK81H,MAAQ/sH,EAAK+sH,YAED79H,IAAjB8Q,EAAKyvC,UACLx4C,KAAKw4C,QAAUzvC,EAAKyvC,SAE5B,EChBG,MAAMspF,GACTz/H,WAAAA,GACIrC,KAAK04H,UAAY,kBACjB14H,KAAKu1H,MAAQ,IAAIsM,GACjB7hI,KAAKwrH,QAAS,CAClB,CACAn9G,IAAAA,CAAKtF,GACD,GAAKA,EAAL,CAMA,QAHuB9Q,IAAnB8Q,EAAK2vH,YACL14H,KAAK04H,UAAY3vH,EAAK2vH,gBAEPzgI,IAAf8Q,EAAKwsH,MAAqB,CAC1B,MAAMA,EAAQxsH,EAAKwsH,MAAOvuH,EAASw+G,EAASz8G,EAAKwsH,OAAS,CAAEvuH,MAAO+B,EAAKwsH,OAAUxsH,EAAKwsH,MACvFv1H,KAAKu1H,MAAMlnH,UAAqBpW,IAAhBs9H,EAAMvuH,YAAuC/O,IAAhBs9H,EAAMO,MAAsBP,EAAQ,CAAEvuH,MAAOA,GAC9F,MACoB/O,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,OATvB,CAWJ,ECtBG,MAAMuW,GACT1/H,WAAAA,GACIrC,KAAKwrH,QAAS,EACdxrH,KAAKqnF,OAAS,CAClB,CACAh5E,IAAAA,CAAKtF,GACIA,SAGe9Q,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEHvzH,IAAhB8Q,EAAKs+E,SACLrnF,KAAKqnF,OAASt+E,EAAKs+E,QAE3B,ECfG,MAAM26C,GACT3/H,WAAAA,GACIrC,KAAKwrH,QAAS,EACdxrH,KAAK7E,KAAO,EAChB,CACAkT,IAAAA,CAAKtF,GACIA,SAGe9Q,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAELvzH,IAAd8Q,EAAK5N,OACL6E,KAAK7E,KAAO4N,EAAK5N,MAEzB,GNdJ,SAAWumI,GACPA,EAAgB,OAAI,SACpBA,EAAmB,UAAI,WAC1B,CAHD,CAGGA,KAAYA,GAAU,CAAC,IOHnB,MAAMO,GACT5/H,WAAAA,GACIrC,KAAK4rH,UAAY,GACjB5rH,KAAKwrH,QAAS,EACdxrH,KAAK7E,KAAO,GACZ6E,KAAKlE,KAAO4lI,GAAQQ,MACxB,CACA7zH,IAAAA,CAAKtF,GACIA,SAGkB9Q,IAAnB8Q,EAAK6iH,YACL5rH,KAAK4rH,UAAY7iH,EAAK6iH,gBAEN3zH,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAELvzH,IAAd8Q,EAAK5N,OACL6E,KAAK7E,KAAO4N,EAAK5N,WAEHlD,IAAd8Q,EAAKjN,OACLkE,KAAKlE,KAAOiN,EAAKjN,MAEzB,ECxBG,MAAMqmI,GACT9/H,WAAAA,GACIrC,KAAKwrH,QAAS,EACdxrH,KAAKoiI,MAAQ,EACbpiI,KAAKgrE,OAAS,EAClB,CACA38D,IAAAA,CAAKtF,GACIA,SAGe9Q,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEJvzH,IAAf8Q,EAAKq5H,QACLpiI,KAAKoiI,MAAQr5H,EAAKq5H,YAEFnqI,IAAhB8Q,EAAKiiE,SACLhrE,KAAKgrE,OAASjiE,EAAKiiE,QAE3B,EClBG,MAAMq3D,GACThgI,WAAAA,GACIrC,KAAKwrH,QAAS,EACdxrH,KAAK7E,KAAO,GACZ6E,KAAKsiI,SAAW,IAAIH,EACxB,CACA9zH,IAAAA,CAAKtF,GACIA,SAGe9Q,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAELvzH,IAAd8Q,EAAK5N,OACL6E,KAAK7E,KAAO4N,EAAK5N,MAErB6E,KAAKsiI,SAASj0H,KAAKtF,EAAKu5H,UAC5B,EClBG,MAAMC,GACTlgI,WAAAA,GACIrC,KAAKqjH,MAAQ,GACbrjH,KAAKwrH,QAAS,CAClB,CACAn9G,IAAAA,CAAKtF,QACY9Q,IAAT8Q,SAGe9Q,IAAf8Q,EAAKs6G,QACLrjH,KAAKqjH,MAAQt6G,EAAKs6G,YAEFprH,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,QAE3B,ECVG,MAAMnO,GACTh7G,WAAAA,GACIrC,KAAKi1G,QAAU,IAAI+sB,GACnBhiI,KAAKwiI,MAAQ,IAAIP,GACjBjiI,KAAKo+H,QAAU,IAAIiE,GACnBriI,KAAK2Z,OAAS,IAAI4oH,EACtB,CACAl0H,IAAAA,CAAKtF,GACD,IAAKA,EACD,OAEJ/I,KAAKi1G,QAAQ5mG,KAAKtF,EAAKksG,SACvB,MAAMutB,EAAQz5H,EAAKy5H,WACLvqI,IAAVuqI,IACAxiI,KAAKwiI,MAAQ9W,GAA0B8W,GAAO57H,IAC1C,MAAM67H,EAAM,IAAIR,GAEhB,OADAQ,EAAIp0H,KAAKzH,GACF67H,CAAG,KAGlBziI,KAAKo+H,QAAQ/vH,KAAKtF,EAAKq1H,SACvBp+H,KAAK2Z,OAAOtL,KAAKtF,EAAK4Q,OAC1B,EC3BG,MAAM+oH,GACTrgI,WAAAA,CAAYmoC,EAAQhyC,GAChBwH,KAAK2iI,QAAUn4F,EACfxqC,KAAK4iI,WAAapqI,CACtB,CACA6V,IAAAA,CAAKtF,GACD,IAAKA,EACD,OAEJ,IAAK/I,KAAK4iI,WACN,OAEJ,MAAMC,EAAc7iI,KAAK2iI,QAAQE,YAAY7jH,IAAIhf,KAAK4iI,YACtD,GAAKC,EAGL,IAAK,MAAMC,KAAcD,EAChBC,EAAWC,iBAGhBD,EAAWC,gBAAgB/iI,KAAM+I,EAEzC,ECnBG,MAAMi6H,GACT3gI,WAAAA,CAAYmoC,EAAQhyC,GAChBwH,KAAKg/H,UAAYpD,GAAoBthI,OACrC0F,KAAKy8H,OAAS,IAAIpf,GAClBr9G,KAAKijI,MAAQ,IAAIP,GAAMl4F,EAAQhyC,EACnC,CACA6V,IAAAA,CAAKtF,GACD,IAAKA,EACD,OAEJ,MAAMi2H,EAAYj2H,EAAKi2H,eACL/mI,IAAd+mI,IACAh/H,KAAKg/H,UAAYA,GAErBh/H,KAAKy8H,OAAOpuH,KAAKtF,EAAK0zH,QACtBz8H,KAAKijI,MAAM50H,KAAKtF,EAAKk6H,MACzB,EChBG,MAAMC,GACT70H,IAAAA,CAAKtF,GACIA,IAGDA,EAAKnM,WACLoD,KAAKpD,SAAW,CACZhC,EAAGmO,EAAKnM,SAAShC,GART,GASRG,EAAGgO,EAAKnM,SAAS7B,GATT,GAURI,KAAM4N,EAAKnM,SAASzB,MAAQ+tH,EAAUxjG,UAG1C3c,EAAKw8D,UACLvlE,KAAKulE,QAAUylD,GAAW,CAAC,EAAGjiH,EAAKw8D,UAE3C,EClBG,IAAI49D,GCAAC,GCAAC,GCAAC,GCAAC,GCAAC,GCAAC,INCX,SAAWN,GACPA,EAAuB,OAAI,SAC3BA,EAAuB,OAAI,QAC9B,CAHD,CAGGA,KAAmBA,GAAiB,CAAC,IOFjC,MAAMO,GACTrhI,WAAAA,GACIrC,KAAK2jI,SAAWlrB,IAChBz4G,KAAKulE,QAAU,CAAC,EAChBvlE,KAAK7E,KAAOgoI,GAAejzH,MAC/B,CACA7B,IAAAA,CAAKtF,GACIA,SAGiB9Q,IAAlB8Q,EAAK46H,WACL3jI,KAAK2jI,SAAW56H,EAAK46H,eAEP1rI,IAAd8Q,EAAK5N,OACD4N,EAAK5N,OAASgoI,GAAel9D,OAC7BjmE,KAAK7E,KAAOgoI,GAAel9D,OAG3BjmE,KAAK7E,KAAOgoI,GAAejzH,aAGdjY,IAAjB8Q,EAAKw8D,UACLvlE,KAAKulE,QAAUylD,GAAW,CAAC,EAAGjiH,EAAKw8D,UAE3C,GNzBJ,SAAW69D,GACPA,EAAe,IAAI,MACnBA,EAAgB,KAAI,OACpBA,EAAiB,MAAI,OACxB,CAJD,CAIGA,KAAcA,GAAY,CAAC,IOJvB,MAAMQ,GACTvhI,WAAAA,GACIrC,KAAKyuH,MAAO,EACZzuH,KAAK7E,KAAOioI,GAAUS,IACtB7jI,KAAK5I,OAAQ,CACjB,CACAiX,IAAAA,CAAKtF,GACIA,SAGa9Q,IAAd8Q,EAAK0lH,OACLzuH,KAAKyuH,KAAO1lH,EAAK0lH,WAEHx2H,IAAd8Q,EAAK5N,OACL6E,KAAK7E,KAAO4N,EAAK5N,WAEFlD,IAAf8Q,EAAK3R,QACL4I,KAAK5I,MAAQ2R,EAAK3R,OAE1B,EClBG,MAAM0sI,GACTzhI,WAAAA,GACIrC,KAAKnK,KAAO,GACZmK,KAAKygH,QAAU,IAAImjB,EACvB,CACAv1H,IAAAA,CAAKtF,GACIA,SAGa9Q,IAAd8Q,EAAKlT,OACLmK,KAAKnK,KAAOkT,EAAKlT,MAErBmK,KAAKygH,QAAQpyG,KAAKtF,EAAK03G,cACFxoH,IAAjB8Q,EAAKw8D,UACLvlE,KAAKulE,QAAUylD,GAAW,CAAC,EAAGjiH,EAAKw8D,UAE3C,ECfG,MAAMw+D,GACT1hI,WAAAA,GACIrC,KAAKqoC,MAAQ,EACbroC,KAAKwrH,QAAS,EACdxrH,KAAK9I,MAAQ,EACb8I,KAAKmuH,MAAQ,EACbnuH,KAAKqjH,MAAQ,EACbrjH,KAAKozH,MAAO,CAChB,CACA/kH,IAAAA,CAAKtF,GACIA,SAGc9Q,IAAf8Q,EAAKs/B,QACLroC,KAAKqoC,MAAQ2/E,EAAcj/G,EAAKs/B,aAEhBpwC,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEJvzH,IAAf8Q,EAAK7R,QACL8I,KAAK9I,MAAQ8wH,EAAcj/G,EAAK7R,aAEjBe,IAAf8Q,EAAKolH,QACLnuH,KAAKmuH,MAAQnG,EAAcj/G,EAAKolH,aAEjBl2H,IAAf8Q,EAAKs6G,QACLrjH,KAAKqjH,MAAQ2E,EAAcj/G,EAAKs6G,aAElBprH,IAAd8Q,EAAKqqH,OACLpzH,KAAKozH,KAAOrqH,EAAKqqH,MAEzB,EAEG,MAAM4Q,WAA+BD,GACxC1hI,WAAAA,GACIokH,QACAzmH,KAAK7E,KAAO2tH,EAAc2F,KAC1BzuH,KAAK0uH,WAAavF,EAAexlH,MACrC,CACA0K,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,GACNA,SAGa9Q,IAAd8Q,EAAK5N,OACL6E,KAAK7E,KAAO4N,EAAK5N,WAEGlD,IAApB8Q,EAAK2lH,aACL1uH,KAAK0uH,WAAa3lH,EAAK2lH,YAE/B,ECnDG,MAAMuV,WAAuBF,GAChC1hI,WAAAA,GACIokH,QACAzmH,KAAKiH,OAAS,EACdjH,KAAKozH,MAAO,CAChB,CACA/kH,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,GACNA,QAGe9Q,IAAhB8Q,EAAK9B,SACLjH,KAAKiH,OAAS+gH,EAAcj/G,EAAK9B,QAEzC,ECfG,MAAMi9H,GACT7hI,WAAAA,GACIrC,KAAKmG,EAAI,IAAI89H,GACbjkI,KAAKoG,EAAI,IAAI69H,GACbjkI,KAAK4zB,EAAI,IAAIqwG,EACjB,CACA51H,IAAAA,CAAKtF,GACIA,IAGL/I,KAAKmG,EAAEkI,KAAKtF,EAAK5C,GACjBnG,KAAKoG,EAAEiI,KAAKtF,EAAK3C,GACjBpG,KAAK4zB,EAAEvlB,KAAKtF,EAAK6qB,GACrB,ECXG,MAAMuwG,WAAwBxC,GACjCt/H,WAAAA,GACIokH,QACAzmH,KAAKoP,UAAY,IAAI80H,EACzB,CACA,aAAO13B,CAAOryD,EAAQpxC,GAClB,MAAM/B,EAAQ,IAAIm9H,GAUlB,OATAn9H,EAAMqH,KAAK8rC,QACEliD,IAAT8Q,IACIy8G,EAASz8G,IAASlQ,EAAQkQ,GAC1B/B,EAAMqH,KAAK,CAAEjX,MAAO2R,IAGpB/B,EAAMqH,KAAKtF,IAGZ/B,CACX,CACAqH,IAAAA,CAAKtF,GAED,GADA09G,MAAMp4G,KAAKtF,IACNA,EACD,OAEJ,MAAMoqH,EAAiBpqH,EAAKqG,eACLnX,IAAnBk7H,SAC8Bl7H,IAA1Bk7H,EAAe3H,OACfxrH,KAAKoP,UAAUjJ,EAAEkI,KAAK8kH,GAGtBnzH,KAAKoP,UAAUf,KAAKtF,EAAKqG,WAGrC,GXlCJ,SAAWi0H,GACPA,EAAsB,OAAI,SAC1BA,EAAsB,OAAI,SAC1BA,EAAuB,QAAI,SAC9B,CAJD,CAIGA,KAAkBA,GAAgB,CAAC,IYL/B,MAAMe,GACT/hI,WAAAA,GACIrC,KAAK9I,MAAQ,CACjB,CACAmX,IAAAA,CAAKtF,GACIA,QAGc9Q,IAAf8Q,EAAK7R,QACL8I,KAAK9I,MAAQ6R,EAAK7R,MAE1B,ECXG,MAAMmtI,GACThiI,WAAAA,GACIrC,KAAKwrH,QAAS,EACdxrH,KAAKskI,QAAU,CACnB,CACAj2H,IAAAA,CAAKtF,GACIA,SAGe9Q,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEFvzH,IAAjB8Q,EAAKu7H,UACLtkI,KAAKskI,QAAUv7H,EAAKu7H,SAE5B,ECbG,MAAMC,GACTliI,WAAAA,GACIrC,KAAK5I,MAAQ,CACjB,CACAiX,IAAAA,CAAKtF,GACIA,QAGc9Q,IAAf8Q,EAAK3R,QACL4I,KAAK5I,MAAQ4wH,EAAcj/G,EAAK3R,OAExC,EAEG,MAAMotI,WAAiCD,GAC1CliI,WAAAA,GACIokH,QACAzmH,KAAKoP,UAAY,IAAI20H,EACzB,CACA11H,IAAAA,CAAKtF,GAED,GADA09G,MAAMp4G,KAAKtF,IACNA,EACD,OAEJ,MAAMqG,EAAYrG,EAAKqG,eACLnX,IAAdmX,GACApP,KAAKoP,UAAUf,KAAKe,EAE5B,EAEG,MAAMq1H,WAAuCD,GAChDniI,WAAAA,GACIokH,QACAzmH,KAAKoP,UAAY,IAAI40H,EACzB,CACA31H,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,EACf,ECrCG,MAAM27H,WAA8BH,GACvCliI,WAAAA,GACIokH,QACAzmH,KAAK5I,MAAQ,CACjB,ECJG,MAAMutI,GACTtiI,WAAAA,GACIrC,KAAKwsH,WAAa,IAAIkY,GACtB1kI,KAAKysH,SAAW,IAAIiY,EACxB,CACAr2H,IAAAA,CAAKtF,GACIA,IAGL/I,KAAKwsH,WAAWn+G,KAAKtF,EAAKyjH,YAC1BxsH,KAAKysH,SAASp+G,KAAKtF,EAAK0jH,UAC5B,ECPG,MAAMmY,GACTviI,WAAAA,GACIrC,KAAK6kI,OAAS,IAAIT,GAClBpkI,KAAKusH,OAAS,IAAIoY,GAClB3kI,KAAKwrH,QAAS,EACdxrH,KAAK8kI,SAAW,GAChB9kI,KAAK7E,KAAOkoI,GAAc9W,OAC1BvsH,KAAK+kI,QAAU,IAAIV,EACvB,CACAh2H,IAAAA,CAAKtF,GACIA,IAGL/I,KAAK6kI,OAAOx2H,KAAKtF,EAAK87H,QACtB7kI,KAAKusH,OAAOl+G,KAAKtF,EAAKwjH,aACFt0H,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEDvzH,IAAlB8Q,EAAK+7H,WACL9kI,KAAK8kI,SAAW9c,EAAcj/G,EAAK+7H,gBAErB7sI,IAAd8Q,EAAK5N,OACL6E,KAAK7E,KAAO4N,EAAK5N,MAErB6E,KAAK+kI,QAAQ12H,KAAKtF,EAAKg8H,SAC3B,EC7BG,MAAMzqF,GACTj4C,WAAAA,GACIrC,KAAKglI,OAAQ,EACbhlI,KAAK+0D,MAAO,EACZ/0D,KAAKulE,QAAU,CAAC,EAChBvlE,KAAKlE,KAAO,EAChB,CACAuS,IAAAA,CAAKtF,GACD,IAAKA,EACD,OAEJ,MAAMw8D,EAAUx8D,EAAKw8D,QACrB,QAAgBttE,IAAZstE,EACA,IAAK,MAAMhrB,KAAUgrB,EAAS,CAC1B,MAAMpG,EAAOoG,EAAQhrB,GACjB4kB,IACAn/D,KAAKulE,QAAQhrB,GAAUywE,GAAWhrH,KAAKulE,QAAQhrB,IAAW,CAAC,EAAG4kB,GAEtE,MAEelnE,IAAf8Q,EAAKi8H,QACLhlI,KAAKglI,MAAQj8H,EAAKi8H,YAEJ/sI,IAAd8Q,EAAKgsD,OACL/0D,KAAK+0D,KAAOhsD,EAAKgsD,WAEH98D,IAAd8Q,EAAKjN,OACLkE,KAAKlE,KAAOiN,EAAKjN,KAEzB,EC7BG,MAAMmpI,GACT5iI,WAAAA,GACIrC,KAAKiH,OAAS,EACdjH,KAAK5I,MAAQ,EACjB,CACAiX,IAAAA,CAAKtF,GACIA,SAGe9Q,IAAhB8Q,EAAK9B,SACLjH,KAAKiH,OAAS+gH,EAAcj/G,EAAK9B,cAElBhP,IAAf8Q,EAAK3R,QACL4I,KAAK5I,MAAQ4wH,EAAcj/G,EAAK3R,QAExC,ECfG,MAAM8tI,GACT7iI,WAAAA,GACIrC,KAAKqnC,SAAW,IAChBrnC,KAAKwrH,QAAS,EACdxrH,KAAK8yB,OAAS,CACVl4B,EAAG,IACHG,EAAG,IAEX,CACAsT,IAAAA,CAAKtF,GACD,GAAKA,SAGiB9Q,IAAlB8Q,EAAKs+B,WACLrnC,KAAKqnC,SAAW2gF,EAAcj/G,EAAKs+B,gBAEnBpvC,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,QAEnBziH,EAAK+pB,QAAQ,CACb,MAAMI,EAAUnqB,EAAK+pB,OAAOl4B,OACZ3C,IAAZi7B,IACAlzB,KAAK8yB,OAAOl4B,EAAIs4B,GAEpB,MAAMC,EAAUpqB,EAAK+pB,OAAO/3B,OACZ9C,IAAZk7B,IACAnzB,KAAK8yB,OAAO/3B,EAAIo4B,EAExB,CACJ,EC7BG,MAAMgyG,GACT9iI,WAAAA,GACIrC,KAAKpF,EAAI,GACToF,KAAKjF,EAAI,GACTiF,KAAK7E,KAAO+tH,EAAUxjG,QACtB1lB,KAAKkjC,OAAS,CAClB,CACA70B,IAAAA,CAAKtF,GACIA,SAGU9Q,IAAX8Q,EAAKnO,IACLoF,KAAKpF,EAAImO,EAAKnO,QAEH3C,IAAX8Q,EAAKhO,IACLiF,KAAKjF,EAAIgO,EAAKhO,QAEA9C,IAAd8Q,EAAK5N,OACL6E,KAAK7E,KAAO4N,EAAK5N,WAEDlD,IAAhB8Q,EAAKm6B,SACLljC,KAAKkjC,OAASn6B,EAAKm6B,QAE3B,ECvBG,MAAMkiG,GACT/iI,WAAAA,GACIrC,KAAKqlI,aAAe,KACpBrlI,KAAKwrH,QAAS,EACdxrH,KAAKslI,SAAU,EACftlI,KAAK8kI,SAAW,EACpB,CACAz2H,IAAAA,CAAKtF,GACIA,SAGqB9Q,IAAtB8Q,EAAKs8H,eACLrlI,KAAKqlI,aAAerd,EAAcj/G,EAAKs8H,oBAEvBptI,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEFvzH,IAAjB8Q,EAAKu8H,UACLtlI,KAAKslI,QAAUv8H,EAAKu8H,cAEFrtI,IAAlB8Q,EAAK+7H,WACL9kI,KAAK8kI,SAAW9c,EAAcj/G,EAAK+7H,WAE3C,ECtBG,MAAMS,GACTljI,WAAAA,GACIrC,KAAKqoE,OAAQ,EACbroE,KAAKqjH,MAAQ,IAAIkhB,GACjBvkI,KAAKwrH,QAAS,EACdxrH,KAAKulE,QAAU,CAAC,CACpB,CACAl3D,IAAAA,CAAKtF,GACIA,SAGc9Q,IAAf8Q,EAAKs/D,QACLroE,KAAKqoE,MAAQt/D,EAAKs/D,OAEtBroE,KAAKqjH,MAAMh1G,KAAKtF,EAAKs6G,YACDprH,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,QAEvBxrH,KAAKwlI,UAAYz8H,EAAKy8H,UAClBz8H,EAAKw8D,UACLvlE,KAAKulE,QAAUylD,GAAWhrH,KAAKulE,QAASx8D,EAAKw8D,UAErD,ECvBG,MAAMkgE,GACTp3H,IAAAA,CAAKtF,GACIA,SAGc9Q,IAAf8Q,EAAK/B,QACLhH,KAAKgH,MAAQ26H,GAAan1B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,aAEnC/O,IAAf8Q,EAAK+sH,QACL91H,KAAK81H,MAAQ/sH,EAAK+sH,OAE1B,ECXG,MAAM4P,GACTrjI,WAAAA,GACIrC,KAAKwrH,QAAS,EACdxrH,KAAK3H,OAAS,GACd2H,KAAK+0D,KAAO,IAAI0wE,EACpB,CACAp3H,IAAAA,CAAKtF,GACIA,SAGe9Q,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAELvzH,IAAd8Q,EAAKgsD,MACL/0D,KAAK+0D,KAAK1mD,KAAKtF,EAAKgsD,WAEJ98D,IAAhB8Q,EAAK1Q,SACL2H,KAAK3H,OAAS0Q,EAAK1Q,QAE3B,GxBnBJ,SAAWirI,GACPA,EAAgB,OAAI,SACpBA,EAAc,KAAI,OAClBA,EAAa,IAAI,MACjBA,EAAiB,QAAI,UACrBA,EAAe,MAAI,OACtB,CAND,CAMGA,KAAYA,GAAU,CAAC,IyBNnB,MAAMqC,GACTtjI,WAAAA,GACIrC,KAAKygH,QAAU6iB,GAAQp6G,GAC3B,CACA7a,IAAAA,CAAKtF,GACIA,SAGgB9Q,IAAjB8Q,EAAK03G,UACLzgH,KAAKygH,QAAU13G,EAAK03G,SAExBzgH,KAAKioC,OAASl/B,EAAKk/B,QAAUl/B,EAAK03G,QAClCzgH,KAAKnF,KAAOkO,EAAKlO,MAAQkO,EAAK03G,QAC9BzgH,KAAK2jC,MAAQ56B,EAAK46B,OAAS56B,EAAK03G,QAChCzgH,KAAK5F,IAAM2O,EAAK3O,KAAO2O,EAAK03G,QAChC,ECdG,MAAMmlB,GACTvjI,WAAAA,GACIrC,KAAKqlI,aAAe,EACpBrlI,KAAKwrH,QAAS,CAClB,CACAn9G,IAAAA,CAAKtF,GACIA,SAGqB9Q,IAAtB8Q,EAAKs8H,eACLrlI,KAAKqlI,aAAerd,EAAcj/G,EAAKs8H,oBAEvBptI,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,QAEnBziH,EAAKnM,WACLoD,KAAKpD,SAAWouH,GAAW,CAAC,EAAGjiH,EAAKnM,WAE5C,ECTG,MAAMipI,GACTxjI,WAAAA,GACIrC,KAAKwxB,MAAQ,IAAIyzG,GACjBjlI,KAAK8lI,QAAU,IAAIZ,GACnBllI,KAAKijC,OAAS,IAAIkiG,GAClBnlI,KAAKmuH,MAAQ,EACbnuH,KAAKqnC,SAAW,CAAC,EACjBrnC,KAAKxI,UAAY6tH,EAAc0gB,KAC/B/lI,KAAKgmI,MAAQ,EACbhmI,KAAKwrH,QAAS,EACdxrH,KAAKimI,QAAU,IAAIb,GACnBplI,KAAK8I,KAAO,IAAIy8H,GAChBvlI,KAAKkmI,SAAW,IAAIP,GACpB3lI,KAAK2D,QAAS,EACd3D,KAAK+oC,MAAO,EACZ/oC,KAAK9I,MAAQ,EACb8I,KAAKmmI,KAAO,IAAIP,GAChB5lI,KAAKomI,UAAW,EAChBpmI,KAAKu2H,MAAQ,IAAImP,GACjB1lI,KAAKqmI,SAAU,EACfrmI,KAAKsmI,MAAO,CAChB,CACAj4H,IAAAA,CAAKtF,GACD,IAAKA,EACD,OAEJ/I,KAAKwxB,MAAMnjB,KAAKo3G,EAAS18G,EAAKyoB,OAAS,CAAEp6B,MAAO2R,EAAKyoB,OAAUzoB,EAAKyoB,OACpExxB,KAAK8lI,QAAQz3H,KAAKtF,EAAK+8H,SACvB9lI,KAAKijC,OAAO50B,KAAKtF,EAAKk6B,aACHhrC,IAAf8Q,EAAKolH,QACLnuH,KAAKmuH,MAAQnG,EAAcj/G,EAAKolH,aAEbl2H,IAAnB8Q,EAAKvR,YACLwI,KAAKxI,UAAYuR,EAAKvR,gBAEJS,IAAlB8Q,EAAKs+B,WACLrnC,KAAKqnC,SAAWo+E,EAAS18G,EAAKs+B,UACxB,CACEmlF,WAAYzjH,EAAKs+B,SACjBolF,SAAU1jH,EAAKs+B,UAEjB,IAAKt+B,EAAKs+B,gBAEDpvC,IAAf8Q,EAAKi9H,QACLhmI,KAAKgmI,MAAQhe,EAAcj/G,EAAKi9H,aAEhB/tI,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,QAEvBxrH,KAAKimI,QAAQ53H,KAAKtF,EAAKk9H,SACvB,MAAMC,EAAWn9H,EAAKm9H,cACLjuI,IAAbiuI,IACIxgB,EAASwgB,GACTlmI,KAAKkmI,SAAS73H,KAAK63H,GAGnBlmI,KAAKkmI,SAAS73H,KAAK,CACfoyG,QAASylB,KAIrBlmI,KAAK8I,KAAKuF,KAAKtF,EAAKD,WACA7Q,IAAhB8Q,EAAKpF,SACL3D,KAAK2D,OAASoF,EAAKpF,aAEL1L,IAAd8Q,EAAKggC,OACL/oC,KAAK+oC,KAAOhgC,EAAKggC,WAEF9wC,IAAf8Q,EAAK7R,QACL8I,KAAK9I,MAAQ8wH,EAAcj/G,EAAK7R,QAEpC8I,KAAKmmI,KAAK93H,KAAKtF,EAAKo9H,WACEluI,IAAlB8Q,EAAKq9H,WACLpmI,KAAKomI,SAAWr9H,EAAKq9H,UAEzBpmI,KAAKu2H,MAAMloH,KAAKtF,EAAKwtH,YACAt+H,IAAjB8Q,EAAKs9H,UACLrmI,KAAKqmI,QAAUt9H,EAAKs9H,cAENpuI,IAAd8Q,EAAKu9H,OACLtmI,KAAKsmI,KAAOv9H,EAAKu9H,KAEzB,EC3FG,MAAMC,WAAyBvC,GAClC3hI,WAAAA,GACIokH,QACAzmH,KAAKhI,QAAUgxH,EAAY+c,KAC3B/lI,KAAK9I,MAAQ,CACjB,CACAmX,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,GACNA,QAGgB9Q,IAAjB8Q,EAAK/Q,UACLgI,KAAKhI,QAAU+Q,EAAK/Q,QAE5B,ECdG,MAAMwuI,WAAgB/B,GACzBpiI,WAAAA,GACIokH,QACAzmH,KAAKoP,UAAY,IAAIm3H,GACrBvmI,KAAK5I,MAAQ,CACjB,CACAiX,IAAAA,CAAKtF,GACD,IAAKA,EACD,OAEJ09G,MAAMp4G,KAAKtF,GACX,MAAMqG,EAAYrG,EAAKqG,eACLnX,IAAdmX,GACApP,KAAKoP,UAAUf,KAAKe,EAE5B,ECjBG,MAAMq3H,GACTpkI,WAAAA,GACIrC,KAAKwrH,QAAS,EACdxrH,KAAKlF,MAAQ,KACbkF,KAAK3F,OAAS,IAClB,CACAgU,IAAAA,CAAKtF,GACD,IAAKA,EACD,YAEgB9Q,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,QAEvB,MAAM1wH,EAAQiO,EAAKjO,WACL7C,IAAV6C,IACAkF,KAAKlF,MAAQA,GAEjB,MAAMT,EAAS0O,EAAK1O,YACLpC,IAAXoC,IACA2F,KAAK3F,OAASA,EAEtB,G7BpBJ,SAAWkpI,GACPA,EAAkB,OAAI,SACtBA,EAAgB,KAAI,MACvB,CAHD,CAGGA,KAAcA,GAAY,CAAC,I8BHvB,MAAMmD,GACTrkI,WAAAA,GACIrC,KAAK7E,KAAOooI,GAAUl0C,OACtBrvF,KAAK5I,MAAQ,CACjB,CACAiX,IAAAA,CAAKtF,GACIA,SAGa9Q,IAAd8Q,EAAK5N,OACL6E,KAAK7E,KAAO4N,EAAK5N,WAEFlD,IAAf8Q,EAAK3R,QACL4I,KAAK5I,MAAQ2R,EAAK3R,OAE1B,ECdG,MAAMuvI,GACTtkI,WAAAA,GACIrC,KAAK4mI,QAAU,IAAIH,GACnBzmI,KAAK6mI,MAAQ,IAAIH,GACjB1mI,KAAK5I,MAAQ,CACjB,CACAiX,IAAAA,CAAKtF,GACIA,IAGL/I,KAAK4mI,QAAQv4H,KAAKtF,EAAK69H,SACvB5mI,KAAK6mI,MAAMx4H,KAAKtF,EAAK89H,YACF5uI,IAAf8Q,EAAK3R,QACL4I,KAAK5I,MAAQ2R,EAAK3R,OAE1B,EChBG,MAAM0vI,GACTzkI,WAAAA,GACIrC,KAAKi5H,KAAO,EACZj5H,KAAKgH,MAAQ,IAAI26H,GACjB3hI,KAAKwrH,QAAS,EACdxrH,KAAKiH,OAAS,CACVrM,EAAG,EACHG,EAAG,GAEPiF,KAAKgH,MAAM5P,MAAQ,MACvB,CACAiX,IAAAA,CAAKtF,GACIA,SAGa9Q,IAAd8Q,EAAKkwH,OACLj5H,KAAKi5H,KAAOlwH,EAAKkwH,MAErBj5H,KAAKgH,MAAQ26H,GAAan1B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,YAC9B/O,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEHvzH,IAAhB8Q,EAAK9B,cAGahP,IAAlB8Q,EAAK9B,OAAOrM,IACZoF,KAAKiH,OAAOrM,EAAImO,EAAK9B,OAAOrM,QAEV3C,IAAlB8Q,EAAK9B,OAAOlM,IACZiF,KAAKiH,OAAOlM,EAAIgO,EAAK9B,OAAOlM,IAEpC,EC/BG,MAAMgsI,GACT1kI,WAAAA,GACIrC,KAAKglI,OAAQ,EACbhlI,KAAK+0D,MAAO,EACZ/0D,KAAKulE,QAAU,CAAC,EAChBvlE,KAAKlE,KAAO,QAChB,CACAuS,IAAAA,CAAKtF,GACD,IAAKA,EACD,OAEJ,MAAMw8D,EAAUx8D,EAAKw8D,QACrB,QAAgBttE,IAAZstE,EACA,IAAK,MAAM/2C,KAAS+2C,EAAS,CACzB,MAAMpG,EAAOoG,EAAQ/2C,GACjB2wC,IACAn/D,KAAKulE,QAAQ/2C,GAASw8F,GAAWhrH,KAAKulE,QAAQ/2C,IAAU,CAAC,EAAG2wC,GAEpE,MAEelnE,IAAf8Q,EAAKi8H,QACLhlI,KAAKglI,MAAQj8H,EAAKi8H,YAEJ/sI,IAAd8Q,EAAKgsD,OACL/0D,KAAK+0D,KAAOhsD,EAAKgsD,WAEH98D,IAAd8Q,EAAKjN,OACLkE,KAAKlE,KAAOiN,EAAKjN,KAEzB,EC5BG,MAAMkrI,WAAsBhD,GAC/B3hI,WAAAA,GACIokH,QACAzmH,KAAKhI,QAAUgxH,EAAY+c,KAC3B/lI,KAAK9I,MAAQ,CACjB,CACAmX,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,GACNA,QAGgB9Q,IAAjB8Q,EAAK/Q,UACLgI,KAAKhI,QAAU+Q,EAAK/Q,QAE5B,ECdG,MAAMivI,WAAaxC,GACtBpiI,WAAAA,GACIokH,QACAzmH,KAAKoP,UAAY,IAAI43H,GACrBhnI,KAAK5I,MAAQ,CACjB,CACAiX,IAAAA,CAAKtF,GAED,GADA09G,MAAMp4G,KAAKtF,IACNA,EACD,OAEJ,MAAMqG,EAAYrG,EAAKqG,eACLnX,IAAdmX,GACApP,KAAKoP,UAAUf,KAAKe,EAE5B,ECfG,MAAM83H,GACT7kI,WAAAA,GACIrC,KAAKlF,MAAQ,CACjB,CACAuT,IAAAA,CAAKtF,GACIA,SAGc9Q,IAAf8Q,EAAK/B,QACLhH,KAAKgH,MAAQm9H,GAAgB33B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,aAEtC/O,IAAf8Q,EAAKjO,QACLkF,KAAKlF,MAAQktH,EAAcj/G,EAAKjO,aAEf7C,IAAjB8Q,EAAKyvC,UACLx4C,KAAKw4C,QAAUwvE,EAAcj/G,EAAKyvC,UAE1C,EClBG,MAAM2uF,WAAe5C,GACxBliI,WAAAA,GACIokH,QACAzmH,KAAKu4H,YAAc,EACnBv4H,KAAKi6H,SAAW,EAChBj6H,KAAKonI,aAAe,CACxB,CACA/4H,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,GACNA,SAGoB9Q,IAArB8Q,EAAKwvH,cACLv4H,KAAKu4H,YAAcxvH,EAAKwvH,kBAENtgI,IAAlB8Q,EAAKkxH,WACLj6H,KAAKi6H,SAAWlxH,EAAKkxH,eAEChiI,IAAtB8Q,EAAKq+H,eACLpnI,KAAKonI,aAAer+H,EAAKq+H,cAEjC,ECTG,MAAMC,GACThlI,WAAAA,CAAYmoC,EAAQhyC,GAChBwH,KAAK2iI,QAAUn4F,EACfxqC,KAAK4iI,WAAapqI,EAClBwH,KAAKusH,OAAS,IAAIoY,GAClB3kI,KAAKsnI,WAAa,IAAI1C,GACtB5kI,KAAKgH,MAAQ,IAAIm9H,GACjBnkI,KAAKgH,MAAM5P,MAAQ,OACnB4I,KAAKu6C,OAAS,IAAID,GAClBt6C,KAAKunI,OAAS,CAAC,EACfvnI,KAAKy2H,KAAO,IAAIoP,GAChB7lI,KAAK+4F,OAAS,IAAI4tC,GAClB3mI,KAAKw4C,QAAU,IAAIguF,GACnBxmI,KAAKwnI,kBAAmB,EACxBxnI,KAAK24H,OAAS,IAAImO,GAClB9mI,KAAKwuB,MAAQ,IAAIu4G,GACjB/mI,KAAK+oC,KAAO,IAAIk+F,GAChBjnI,KAAK80D,OAAS,IAAIoyE,GAClBlnI,KAAKqnF,OAAS,IAAI8/C,EACtB,CACA94H,IAAAA,CAAKtF,GACD,IAAKA,EACD,OAEJ,QAAoB9Q,IAAhB8Q,EAAKw+H,OACL,IAAK,MAAMnhG,KAAShnC,OAAOyU,KAAK9K,EAAKw+H,QAAS,CAC1C,IAAKnoI,OAAOqoI,OAAO1+H,EAAKw+H,OAAQnhG,GAC5B,SAEJ,MAAM+4B,EAAOp2D,EAAKw+H,OAAOnhG,QACZnuC,IAATknE,IACAn/D,KAAKunI,OAAOnhG,GAAS4kF,GAAWhrH,KAAKunI,OAAOnhG,IAAU,CAAC,EAAG+4B,GAElE,MAE0BlnE,IAA1B8Q,EAAKy+H,mBACLxnI,KAAKwnI,iBAAmBz+H,EAAKy+H,kBAEjCxnI,KAAKusH,OAAOl+G,KAAKtF,EAAKwjH,QACtBvsH,KAAKgH,MAAMqH,KAAK81H,GAAgB33B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,QACxDhH,KAAKu6C,OAAOlsC,KAAKtF,EAAKwxC,QACtBv6C,KAAKy2H,KAAKpoH,KAAKtF,EAAK0tH,MACpBz2H,KAAK+4F,OAAO1qF,KAAKtF,EAAKgwF,QACtB/4F,KAAKw4C,QAAQnqC,KAAKtF,EAAKyvC,SACvBx4C,KAAKwuB,MAAMngB,KAAKtF,EAAKylB,OACrBxuB,KAAK+oC,KAAK16B,KAAKtF,EAAKggC,MACpB/oC,KAAK24H,OAAOtqH,KAAKtF,EAAK4vH,QACtB34H,KAAKqnF,OAAOh5E,KAAKtF,EAAKs+E,QACtBrnF,KAAKsnI,WAAWj5H,KAAKtF,EAAKu+H,iBACCrvI,IAAvB8Q,EAAKnL,gBACLoC,KAAKpC,cAAgBotH,GAAW,CAAC,EAAGjiH,EAAKnL,gBAE7C,MAAM8pI,EAAe3+H,EAAK+rD,OAQ1B,GAPI4yE,IACA1nI,KAAK80D,OAAS42D,GAA0Bgc,GAAc9gI,IAClD,MAAM67H,EAAM,IAAIyE,GAEhB,OADAzE,EAAIp0H,KAAKzH,GACF67H,CAAG,KAGdziI,KAAK4iI,WAAY,CACjB,MAAM5H,EAAWh7H,KAAK2iI,QAAQ3H,SAASh8G,IAAIhf,KAAK4iI,YAChD,GAAI5H,EACA,IAAK,MAAMvrB,KAAWurB,EACdvrB,EAAQk4B,aACRl4B,EAAQk4B,YAAY3nI,KAAM+I,GAItC,MAAM85H,EAAc7iI,KAAK2iI,QAAQE,YAAY7jH,IAAIhf,KAAK4iI,YACtD,GAAIC,EACA,IAAK,MAAMC,KAAcD,EACjBC,EAAW8E,sBACX9E,EAAW8E,qBAAqB5nI,KAAM+I,EAItD,CACJ,EC1FG,SAAS4+H,GAAYpiE,GAA8B,QAAA0lD,EAAA7yH,UAAAC,OAAlBwvI,EAAgB,IAAAjvI,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAhB2c,EAAgB3c,EAAA,GAAA9yH,UAAA8yH,GACpD,IAAK,MAAM4c,KAAiBD,EACxBtiE,EAAQl3D,KAAKy5H,EAErB,CACO,SAASF,GAAqBp9F,EAAQhyC,GACzC,MAAM+sE,EAAU,IAAI8hE,GAAiB78F,EAAQhyC,GAAW,QAAAuvI,EAAA3vI,UAAAC,OADDwvI,EAAgB,IAAAjvI,MAAAmvI,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAhBH,EAAgBG,EAAA,GAAA5vI,UAAA4vI,GAGvE,OADAL,GAAYpiE,KAAYsiE,GACjBtiE,CACX,CCGO,MAAM0iE,GACT5lI,WAAAA,CAAYmoC,EAAQhyC,GAChBwH,KAAKkoI,kBAAoB/sI,GACb6E,KAAKm9H,OAAOxhI,MAAKuhI,GAASA,EAAMzc,QAAQrpH,OAAS8lI,EAAMzc,QAAQtlH,OAASA,KAC5E6E,KAAKm9H,OAAOxhI,MAAKuhI,GAASA,EAAMzc,QAAQrpH,OAAS8lI,EAAMzc,QAAQtlH,OAASioI,GAAUS,MAE1F7jI,KAAKmoI,cAAgBC,IACjBpoI,KAAKqO,KAAKrO,KAAK2iI,QAAQ0F,UAAUD,GAAQ,EAE7CpoI,KAAK2iI,QAAUn4F,EACfxqC,KAAK4iI,WAAapqI,EAClBwH,KAAKsoI,UAAW,EAChBtoI,KAAK26H,WAAa,IAAIiH,GACtB5hI,KAAKy1H,eAAiB,IAAIqM,GAC1B9hI,KAAK2zH,OAAQ,EACb3zH,KAAK88H,cAAgB,CAAC,EACtB98H,KAAKqjH,MAAQ,EACbrjH,KAAK23H,WAAa,IAAIoK,GACtB/hI,KAAKuoI,cAAe,EACpBvoI,KAAKuU,SAAW,EAChBvU,KAAKwoI,SAAW,IAChBxoI,KAAKpC,cAAgB,IAAIolI,GAAcx4F,EAAQhyC,GAC/CwH,KAAKyoI,gBAAkB,GACvBzoI,KAAKw2H,UAAYoR,GAAqB5nI,KAAK2iI,QAAS3iI,KAAK4iI,YACzD5iI,KAAKs9H,aAAc,EACnBt9H,KAAK0oI,wBAAyB,EAC9B1oI,KAAK2oI,WAAa,GAClB3oI,KAAKgrE,QAAS,EACdhrE,KAAKpL,MAAQ,CAAC,EACdoL,KAAKm9H,OAAS,GACdn9H,KAAK4oI,QAAU,GACnB,CACAv6H,IAAAA,CAAKtF,GACD,IAAKA,EACD,YAEgB9Q,IAAhB8Q,EAAKq/H,QACL1c,GAA0B3iH,EAAKq/H,QAAQA,GAAUpoI,KAAKmoI,cAAcC,UAElDnwI,IAAlB8Q,EAAKu/H,WACLtoI,KAAKsoI,SAAWv/H,EAAKu/H,eAENrwI,IAAf8Q,EAAK4qH,QACL3zH,KAAK2zH,MAAQ5qH,EAAK4qH,YAEL17H,IAAb8Q,EAAKwM,MACLvV,KAAKuV,IAAMxM,EAAKwM,UAEFtd,IAAd8Q,EAAKlT,OACLmK,KAAKnK,KAAOkT,EAAKlT,WAEFoC,IAAf8Q,EAAKs6G,QACLrjH,KAAKqjH,MAAQ2E,EAAcj/G,EAAKs6G,QAEpC,MAAMklB,EAAex/H,EAAKw/H,kBACLtwI,IAAjBswI,IACAvoI,KAAKuoI,aAAeA,QAEFtwI,IAAlB8Q,EAAKwL,WACLvU,KAAKuU,SAAWyzG,EAAcj/G,EAAKwL,WAEvC,MAAMi0H,EAAWz/H,EAAKy/H,cACLvwI,IAAbuwI,IACAxoI,KAAKwoI,SAAWA,QAEKvwI,IAArB8Q,EAAKu0H,cACLt9H,KAAKs9H,YAAcv0H,EAAKu0H,kBAEQrlI,IAAhC8Q,EAAK2/H,yBACL1oI,KAAK0oI,uBAAyB3/H,EAAK2/H,6BAElBzwI,IAAjB8Q,EAAK6/H,UACL5oI,KAAK4oI,QAAU7/H,EAAK6/H,SAExB5oI,KAAK26H,WAAWtsH,KAAKtF,EAAK4xH,YAC1B,MAAMhD,EAAa5uH,EAAK4uH,WACpBrS,EAAUqS,GACV33H,KAAK23H,WAAWnM,OAASmM,EAGzB33H,KAAK23H,WAAWtpH,KAAKspH,GAEzB33H,KAAKy1H,eAAepnH,KAAKtF,EAAK0sH,gBAC9Bz1H,KAAKpC,cAAcyQ,KAAKtF,EAAKnL,eACzBmL,EAAK0/H,kBACLzoI,KAAKyoI,gBAAkB1/H,EAAK0/H,gBAAgBnvI,KAAIsN,IAC5C,MAAM67H,EAAM,IAAIS,GAEhB,OADAT,EAAIp0H,KAAKzH,GACF67H,CAAG,KAGlBziI,KAAKw2H,UAAUnoH,KAAKtF,EAAKytH,WACzBx2H,KAAKpL,MAAQo2H,GAAWhrH,KAAKpL,MAAOmU,EAAKnU,OACzCoL,KAAK2iI,QAAQgF,YAAY3nI,KAAM+I,QACX9Q,IAAhB8Q,EAAKiiE,SACLhrE,KAAKgrE,OAASjiE,EAAKiiE,QAEvB,MAAM63D,EAAc7iI,KAAK2iI,QAAQE,YAAY7jH,IAAIhf,KAAK4iI,YACtD,GAAIC,EACA,IAAK,MAAMC,KAAcD,EACjBC,EAAW6E,aACX7E,EAAW6E,YAAY3nI,KAAM+I,GAIzC,QAAwB9Q,IAApB8Q,EAAK4/H,WACL,IAAK,MAAMA,KAAc5/H,EAAK4/H,WAAY,CACtC,MAAME,EAAgB,IAAInF,GAC1BmF,EAAcx6H,KAAKs6H,GACnB3oI,KAAK2oI,WAAWroI,KAAKuoI,EACzB,CAGJ,GADA7oI,KAAK2oI,WAAWG,MAAK,CAACl8H,EAAGpG,IAAMoG,EAAE+2H,SAAWn9H,EAAEm9H,gBAC1B1rI,IAAhB8Q,EAAKo0H,OACL,IAAK,MAAMD,KAASn0H,EAAKo0H,OAAQ,CAC7B,MAAM4L,EAAgB/oI,KAAKm9H,OAAOxhI,MAAKiL,GAAKA,EAAE/Q,OAASqnI,EAAMrnI,OAC7D,GAAKkzI,EAMDA,EAAc16H,KAAK6uH,OANH,CAChB,MAAM8L,EAAW,IAAIlF,GACrBkF,EAAS36H,KAAK6uH,GACdl9H,KAAKm9H,OAAO78H,KAAK0oI,EACrB,CAIJ,CAEJhpI,KAAK88H,cAAcE,KAAOh9H,KAAKkoI,kBAAkB9E,GAAUpG,OAAOnnI,KAClEmK,KAAK88H,cAAcG,MAAQj9H,KAAKkoI,kBAAkB9E,GAAUnG,QAAQpnI,IACxE,CACAozI,aAAAA,CAAcnuI,EAAO+yH,EAASqb,GAC1BlpI,KAAKqO,KAAK66H,GACV,MAAMC,EAAoBnpI,KAAK2oI,WAAWhtI,MAAKiL,GAAKA,EAAEzL,OAASgoI,GAAel9D,QAAUA,OAASr/D,EAAE+8H,SAAW19D,OAAOmjE,WAAaxiI,EAAE+8H,SAAW9V,EAAU/yH,IAEzJ,OADAkF,KAAKqO,KAAK86H,GAAmB5jE,SACtB4jE,GAAmBxF,QAC9B,CACA0F,QAAAA,CAASxzI,GACL,GAAIA,EAAM,CACN,MAAMyzI,EAActpI,KAAKm9H,OAAOxhI,MAAKuhI,GAASA,EAAMrnI,OAASA,IACzDyzI,GACAtpI,KAAKqO,KAAKi7H,EAAY/jE,QAE9B,KACK,CACD,MAAM85D,EAAalV,GAAe,gCAAiCof,EAAiBlK,GAAYtT,QAASyd,EAAexpI,KAAKkoI,kBAAkBqB,EAAiBnG,GAAUpG,KAAOoG,GAAUnG,OACvLuM,GACAxpI,KAAKqO,KAAKm7H,EAAajkE,QAE/B,CACJ,GvChKJ,SAAWi+D,GACPA,EAAyB,SAAI,WAC7BA,EAA0B,UAAI,WACjC,CAHD,CAGGA,KAAmBA,GAAiB,CAAC,IwCHjC,MAAMiG,GACTpnI,WAAAA,CAAYmoC,EAAQhyC,GAChBwH,KAAKxH,UAAYA,EACjBwH,KAAK2iI,QAAUn4F,EACfxqC,KAAK0pI,aAAe,GACpB1pI,KAAK2pI,qBAAuB,GAC5B3pI,KAAK4pI,qBAAuB,EAChC,CACAC,gBAAAA,CAAiBxrG,GACb,IAAK,MAAMykG,KAAc9iI,KAAK2pI,qBACtB7G,EAAWgH,aACXhH,EAAWiH,SAAS1rG,EAGhC,CACAq+F,eAAAA,CAAgBvhI,GACZ,IAAK,MAAM2nI,KAAc9iI,KAAK2pI,qBAC1B7G,EAAWpG,kBAAkBvhI,EAErC,CACA,UAAM2f,GACF9a,KAAK0pI,mBAAqB1pI,KAAK2iI,QAAQqH,eAAehqI,KAAKxH,WAAW,GACtEwH,KAAK2pI,qBAAuB,GAC5B3pI,KAAK4pI,qBAAuB,GAC5B,IAAK,MAAM9G,KAAc9iI,KAAK0pI,aAAc,CACxC,OAAQ5G,EAAWhnI,MACf,KAAK0nI,GAAeyG,SAChBjqI,KAAK2pI,qBAAqBrpI,KAAKwiI,GAC/B,MACJ,KAAKU,GAAehN,UAChBx2H,KAAK4pI,qBAAqBtpI,KAAKwiI,GAGvCA,EAAWhoH,MACf,CACJ,CACAovH,iBAAAA,CAAkB7c,EAAUhvF,GACxB,IAAK,MAAMykG,KAAc9iI,KAAK2pI,qBAC1B7G,EAAWnP,MAAMtG,EAAUhvF,GAE/B,IAAK,MAAMykG,KAAc9iI,KAAK4pI,qBACtB9G,EAAWgH,UAAUzc,IACrByV,EAAWiH,SAAS1c,EAAUhvF,EAG1C,CACAtO,KAAAA,CAAMs9F,GACF,IAAK,MAAMyV,KAAc9iI,KAAK2pI,qBACtB7G,EAAWgH,aACXhH,EAAW/yG,MAAMs9F,GAGzB,IAAK,MAAMyV,KAAc9iI,KAAK4pI,qBACtB9G,EAAWgH,UAAUzc,IACrByV,EAAW/yG,MAAMs9F,EAG7B,GvCzDJ,SAAWoW,GACPA,EAAwB,OAAI,SAC5BA,EAAwB,OAAI,SAC5BA,EAAyB,QAAI,SAChC,CAJD,CAIGA,KAAoBA,GAAkB,CAAC,IwCQ1C,MAAyC0G,GAAO,GAAoBC,GAAe,SAqBnF,SAASC,GAAWthI,GAChB,IAAKuhH,GAAUvhH,EAAKuhI,QAASvhI,EAAKwhI,YAC9B,OAEJ,MAAMC,EAzB4B,EAyBjBzhI,EAAKm6B,OAClBn6B,EAAK0hI,MAAQ1hI,EAAK2hI,SAAWF,EAC7BzhI,EAAK4hI,OAAO5hI,EAAKm6B,QAEZn6B,EAAK0hI,MAAQD,GAClBzhI,EAAK4hI,MAAM5hI,EAAKm6B,OAExB,CACO,MAAM0nG,GACTvoI,WAAAA,CAAYmoC,EAAQhyC,GAAW,IAAAqyI,EAAA,KAC3B7qI,KAAKxH,UAAYA,EACjBwH,KAAK8qI,cAAgB,SAACtyI,EAAWoE,EAAUyqF,GAAyC,IAAjC0jD,EAAQ3yI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,GAAAA,UAAA,GApCzC,EAqCd,IAAK,MAAO,CAAEqgC,KAAWjgC,EAAUwtE,QAAS,CACxC,MAAMglE,OAAwC/yI,IAA5BwgC,EAAOwyG,iBAAiCxyG,EAAOwyG,iBAAiBruI,EAAUiuI,QAAQ5yI,EACpG,GAAI+yI,EACA,OAAOrlB,EAASnZ,OAAOw+B,EAAUpwI,EAAGowI,EAAUjwI,EAAGssF,EAEzD,CACA,MAA0C6jD,EAAgBxiB,EAAkC,CACxF3/E,KADevwC,EAAU0X,OAAO64B,KAEhCnsC,SAAUA,IACVF,EAAMipH,EAASnZ,OAAO0+B,EAActwI,EAAGswI,EAAcnwI,EAAGssF,GAASnkD,EAAS2nG,EAAKze,YAAa8Z,EAAW2E,EAAKtlE,QAAQkxD,KAAKyP,SAAUiF,EAAiBb,IACpJD,GAAW,CACPC,UACAC,WAAY,CAACjH,GAAQ/W,QACrBke,MAAO/tI,EAAI9B,EACX8vI,SAAUlyI,EAAU0X,OAAO64B,KAAKjuC,MAChC6vI,MAAQvzI,GAAWsF,EAAI9B,GAAKxD,EAC5B8rC,UACF,EACHkoG,EAAed,IACdD,GAAW,CACPC,UACAC,WAAY,CAACjH,GAAQ/W,QACrBke,MAAO/tI,EAAI3B,EACX2vI,SAAUlyI,EAAU0X,OAAO64B,KAAK1uC,OAChCswI,MAAQvzI,GAAWsF,EAAI3B,GAAK3D,EAC5B8rC,UACF,EAMN,GAJAioG,EAAcjF,EAASrrI,MAAQqrI,EAASzlB,SACxC0qB,EAAcjF,EAASviG,OAASuiG,EAASzlB,SACzC2qB,EAAYlF,EAAS9rI,KAAO8rI,EAASzlB,SACrC2qB,EAAYlF,EAASj+F,QAAUi+F,EAASzlB,SACpCoqB,EAAKQ,cAAc3uI,EAAKquI,GAAW,CACnC,MAAMO,EAAY,EAClB,OAAOT,EAAKC,cAActyI,OAAWP,EAAWovF,EAAQ0jD,EAAWO,EACvE,CACA,OAAO5uI,CACX,EACAsD,KAAKurI,mBAAqB,KACtB,MAA8D5hB,E5EsBnE,SAAiCnyH,GACpC,MAAMg0I,EAAehlB,EAAO72G,OAG5B,OAFA67H,EAAanzI,OAAS,EACtBmzI,EAAah6G,MAAQh6B,EACdg0I,CACX,C4E3BiCC,CAAwBzrI,KAAKxI,WAA+BstE,OAAQ4mE,EAAc1rI,KAAKulE,QAAQkxD,KACpH,GAAIiV,EAAYl0I,YAAc6tH,EAAcwF,QAAU6gB,EAAYl0I,YAAc6tH,EAAcsmB,QAC1F,OAAOhiB,EAEX,MAAMv4F,EAAMm3F,EAASR,EAAc2jB,EAAYl6G,MAAMp6B,QAASw0I,EAAYrjB,EAASR,EAAc2jB,EAAYl6G,MAAMvqB,SAAUgyF,EAAQ,CACjIp+F,KAAM+wI,EAAYx6G,EAAM+4G,GACxBxmG,MAAOioG,EAAYx6G,EAAM+4G,IAQ7B,OANKuB,EAAYtF,WACbzc,EAAIn4F,OAASo2F,EAAcI,EAAc/uB,EAAMp+F,KAAMo+F,EAAMt1D,SAE3D+nG,EAAY/nI,QAAuC,kBAAtB+nI,EAAYx0I,QACzCyyH,EAAItxH,QAAUgvH,KAEXsC,CAAG,EAEd3pH,KAAKqrI,cAAgB,SAAC3uI,GAAsC,IAAjCquI,EAAQ3yI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,GAAAA,UAAA,GA5FjB,EA6Fd,MAAMyzI,EAAoBhB,EAAKtlE,QAAQ+hE,WAAYpkG,EAAS2nG,EAAKze,YACjE,IAAKyf,EAAkBrgB,OACnB,OAAO,EAEX,MAAMsgB,EAAiBD,EAAkB9G,QACzC,GAAI+G,EAAetgB,OACf,OAAO,EAEX,MAAM8Y,EAAUwH,EAAexH,QAC/B,GAAIA,GADiD,GACxByG,EAAWzG,EACpC,MAAM,IAAItwH,MAAM,GAAGkxG,iDAEvB,QAAS2lB,EAAKryI,UAAUg+H,UAAU76H,MAAK0xH,GAAY/E,EAAY5rH,EAAK2wH,EAASzwH,UAAYsmC,EAASmqF,EAASjB,aAC/G,EACApsH,KAAK+rI,cAAgB/kI,IACjB,IAAKA,IAAUhH,KAAKgsI,OAAUhsI,KAAKisI,YAAcjsI,KAAKgsI,KAAKE,MACvD,OAAOllI,EAEX,MAAgCmlI,EAAansI,KAAKgsI,KAAKxf,YAAcxsH,KAAKgsI,KAAKvf,SAAWiE,EAAvE,EAAyG0b,EAAUpsI,KAAKgsI,KAAKxf,WAAavwH,KAAKgI,GAAKkmI,GAA1I,EAC7B,OAD6LluI,KAAKkH,QAAQnD,KAAKgsI,KAAKx6G,OAAvL,GAAwM46G,IAAYnwI,KAAKgI,GAAKkoI,IA/GjO,EAmHtBnsI,KAAKisI,UACEjsI,KAAKisI,UAEZjsI,KAAKgsI,KAAKE,MlEsBnB,SAAkBllI,EAAOlL,EAAM1E,GAElC,MAAO,CACH+O,EAAGa,EAAMb,EACTC,EAAGY,EAAMZ,EACTwtB,EAAG5sB,EAAM4sB,GAAK93B,IAASszH,GAAUid,QAJrB,KAIoDj1I,EAExE,CkE5BuBk1I,CAAStlI,EAAOhH,KAAKgsI,KAAKE,MAAMpwI,KAAMkE,KAAKgsI,KAAKE,MAAM90I,OAE1D4P,EARIA,CAQC,EAEhBhH,KAAKusI,cAAgB3vI,IACjB,MAAMpE,EAAYwH,KAAKxH,UAAWg0I,EAAczkB,EAAc/nH,KAAKulE,QAAQ8hB,OAAOjwF,OAClF4I,KAAKpD,SAAWoD,KAAK8qI,cAActyI,EAAWoE,EAAUyrE,EAAMmkE,EADmC,EAChBh0I,EAAUowI,UAC3F5oI,KAAKysI,gBAAkBzsI,KAAKpD,SAASkoE,OACrC,MAAM+pD,EAAar2H,EAAU0X,OAAO64B,KAOpC,OANA/oC,KAAK0sI,WAAa,IACXvgB,GAAYnsH,KAAKulE,QAAQkxD,KAAKxzF,OAAQ4rF,GACzC3rF,OAAQljC,KAAKulE,QAAQkxD,KAAKxzF,OAAOC,QAHqB,EAItD/nC,KAAM6E,KAAKulE,QAAQkxD,KAAKxzF,OAAO9nC,MAAQ+tH,EAAUxjG,SAErD1lB,KAAKxI,U5EjEV,SAAmCA,EAAWoF,EAAUqmC,GAC3D,GAAIwiF,EAASjuH,GACT,OAAO+wH,EAAS/wH,GAEpB,MAA6Bm1I,EAAU,IACvC,OAAQn1I,GACJ,KAAK6tH,EAAcjrH,IACf,MAHgB,IAGR6B,KAAKgI,GACjB,KAAKohH,EAAcunB,SACf,OAAQ3wI,KAAKgI,GAAK0oI,EACtB,KAAKtnB,EAAc1hF,MACf,OAPM,EAQV,KAAK0hF,EAAcwnB,YACf,OAAO5wI,KAAKgI,GAAK0oI,EACrB,KAAKtnB,EAAcp9E,OACf,MAXgB,GAWThsC,KAAKgI,GAChB,KAAKohH,EAAcynB,WACf,MAboD3C,IAa7CluI,KAAKgI,GAChB,KAAKohH,EAAcxqH,KACf,OAAOoB,KAAKgI,GAChB,KAAKohH,EAAc0nB,QACf,MAjBoD5C,KAiB5CluI,KAAKgI,GACjB,KAAKohH,EAAcwF,OACf,OAAO5uH,KAAKkuB,MAAM8Y,EAAOloC,EAAI6B,EAAS7B,EAAGkoC,EAAOroC,EAAIgC,EAAShC,GACjE,KAAKyqH,EAAcsmB,QACf,OAAO1vI,KAAKkuB,MAAMvtB,EAAS7B,EAAIkoC,EAAOloC,EAAG6B,EAAShC,EAAIqoC,EAAOroC,GACjE,QACI,OAAOysH,IAAcJ,EAEjC,C4EoC6B+lB,CAA0BhtI,KAAKulE,QAAQkxD,KAAKj/H,UAAWwI,KAAKpD,SAAUoD,KAAK0sI,YACpF1sI,KAAKulE,QAAQkxD,KAAKj/H,WACtB,KAAK6tH,EAAcwF,OACf7qH,KAAKitI,QAAUxJ,GAAgB5Y,OAC/B,MACJ,KAAKxF,EAAcsmB,QACf3rI,KAAKitI,QAAUxJ,GAAgBkI,QAGvC3rI,KAAKiH,OAASu/G,EAAO72G,MAAM,EAE/B3P,KAAK2iI,QAAUn4F,CACnB,CACAxyC,OAAAA,CAAQk1I,GACJ,GAAIltI,KAAKmtI,aAAentI,KAAKmwD,UACzB,OAEJnwD,KAAKmwD,WAAY,EACjBnwD,KAAKw4H,OAAO4U,SAAU,EACtBptI,KAAKqtI,KAAKD,SAAU,EACpB,MAAM50I,EAAYwH,KAAKxH,UAAW80I,EAAgBttI,KAAKstI,cAAeC,EAAc/0I,EAAU+gI,aAAav6G,IAAIhf,KAAKwuB,OACpH++G,GAAaC,kBAAkBxtI,MAC/B,IAAK,MAAO,CAAEy4B,KAAWjgC,EAAUwtE,QAC/BvtC,EAAOg1G,oBAAoBztI,KAAMktI,GAErC,IAAK,MAAMz9B,KAAWj3G,EAAUg+H,UAAUwE,SACtCvrB,EAAQg+B,oBAAoBztI,KAAMktI,GAEtCI,GAAev9G,MAAM/vB,MACrBA,KAAK2iI,QAAQvyC,cAAcqxC,GAAUgM,kBAAmB,CACpDj1I,UAAWwH,KAAKxH,UAChBuQ,KAAM,CACFskH,SAAUrtH,OAGtB,CACA82H,IAAAA,CAAKz4F,GACD,MAAM7lC,EAAYwH,KAAKxH,UAAW0X,EAAS1X,EAAU0X,OACrD,IAAK,MAAO,CAAEuoB,KAAWjgC,EAAUwtE,QAC/B91D,EAAOgqH,mBAAmBzhG,EAAQz4B,KAAMq+B,GAE5CnuB,EAAO8nH,aAAah4H,KAAMq+B,EAC9B,CACAi0F,YAAAA,GACI,OAAOtyH,KAAK+rI,cAAc/rI,KAAKw4H,OAAOxxH,OAAS8rH,GAAoB9yH,KAAKgH,OAC5E,CACAslH,OAAAA,GACI,OAAOtsH,KAAKosH,aApL6C,EAoLlBnwH,KAAKgI,GAAKkmI,EACrD,CACAhe,WAAAA,GACI,MAAO,CACHvxH,EAAGoF,KAAKpD,SAAShC,EAAIoF,KAAKiH,OAAOrM,EACjCG,EAAGiF,KAAKpD,SAAS7B,EAAIiF,KAAKiH,OAAOlM,EACjC07B,EAAGz2B,KAAKpD,SAAS65B,EAEzB,CACA21F,SAAAA,GACI,OAAOpsH,KAAKw4H,OAAOt1F,QAAUljC,KAAK+oC,KAAK3xC,KAC3C,CACAm7H,cAAAA,GACI,OAAOvyH,KAAK+rI,cAAc/rI,KAAKw4H,OAAOxxH,OAAS8rH,GAAoB9yH,KAAK0tI,aAC5E,CACA5yH,IAAAA,CAAK/P,EAAInO,EAAU+wI,EAAiBvnG,GAChC,MAAM5tC,EAAYwH,KAAKxH,UAAWgyC,EAASxqC,KAAK2iI,QAChD3iI,KAAK+K,GAAKA,EACV/K,KAAKomC,MAAQA,EACbpmC,KAAK4tI,aAAc,EACnB5tI,KAAK6tI,YAAa,EAClB7tI,KAAK05H,YAAa,EAClB15H,KAAK25H,WAAY,EACjB35H,KAAK44H,cAAe,EACpB54H,KAAK8tI,aAAe,EACpB9tI,KAAKmwD,WAAY,EACjBnwD,KAAKmtI,aAAc,EACnBntI,KAAK+tI,YAAa,EAClB/tI,KAAKsrE,SAAW,EAChBtrE,KAAKguI,WAAY,EACjBhuI,KAAKy5H,OAAS,CACVwU,YAAa,CAAC,GAElBjuI,KAAKitI,QAAUxJ,GAAgByK,OAC/BluI,KAAKmuI,oBAAqB,EAC1B,MAAMtgB,EAAUr1H,EAAUihI,OAAOD,WAAY4U,EAAc51I,EAAUg9H,cAAe6Y,EAAmBzG,GAAqB5nI,KAAK2iI,QAASnqI,EAAW41I,EAAY5X,YAAY,iBAAEgR,GAAqB6G,EAAkBC,EAAaD,EAAiB9zF,OAAOz+C,KAAMyyI,EAAYF,EAAiB7/G,MAAM1yB,KACpSkE,KAAKu6C,OAASmzE,GAAyB4gB,EAAYtuI,KAAK+K,GAAIy8H,GAC5DxnI,KAAKwuB,MAAQk/F,GAAyB6gB,EAAWvuI,KAAK+K,GAAIy8H,GAC1D,MAAMgH,EAAgBH,EAAiB9zF,OAAQk0F,EAAeJ,EAAiB7/G,MAC/E,GAAIm/G,EAAiB,CACjB,GAAIA,EAAgBpzF,QAAQz+C,KAAM,CAC9B,MAAwDy+C,EAASmzE,GAAtCigB,EAAgBpzF,OAAOz+C,KAA4DkE,KAAK+K,GAAIy8H,GACnHjtF,IACAv6C,KAAKu6C,OAASA,EACdi0F,EAAcngI,KAAKs/H,EAAgBpzF,QAE3C,CACA,GAAIozF,EAAgBn/G,OAAO1yB,KAAM,CAC7B,MAAsD0yB,EAAQk/F,GAApCigB,EAAgBn/G,MAAM1yB,KAA0DkE,KAAK+K,GAAIy8H,GAC/Gh5G,IACAxuB,KAAKwuB,MAAQA,EACbigH,EAAapgI,KAAKs/H,EAAgBn/G,OAE1C,CACJ,CACA,GAAIxuB,KAAKu6C,SAAW6vF,GAAc,CAC9B,MAAMsE,EAAmB,IAAI1uI,KAAKxH,UAAUshI,cAAcjmH,QAC1D7T,KAAKu6C,OAASm0F,EAAiBzyI,KAAKkH,MAAMlH,KAAK0H,SAAW+qI,EAAiBr2I,QAC/E,CACA,GAAI2H,KAAKwuB,QAAU47G,GAAc,CAC7B,MAAMuE,EAAkB,IAAI3uI,KAAKxH,UAAU+gI,aAAa1lH,QACxD7T,KAAKwuB,MAAQmgH,EAAgB1yI,KAAKkH,MAAMlH,KAAK0H,SAAWgrI,EAAgBt2I,QAC5E,CACA2H,KAAK4uI,WAlPb,SAAwBr0F,EAAQi0F,EAAezjI,EAAIy8H,GAC/C,MAAMoH,EAAaJ,EAAcjpE,QAAQhrB,GACzC,GAAKq0F,EAGL,OAAO5jB,GAAW,CACdga,MAAOwJ,EAAcxJ,MACrBjwE,KAAMy5E,EAAcz5E,MACrB24D,GAAyBkhB,EAAY7jI,EAAIy8H,GAChD,CAyO0BqH,CAAe7uI,KAAKu6C,OAAQi0F,EAAexuI,KAAK+K,GAAIy8H,GACtExnI,KAAK6jB,UAzOb,SAAuB2K,EAAOigH,EAAc1jI,EAAIy8H,GAC5C,MAAM3jH,EAAY4qH,EAAalpE,QAAQ/2C,GACvC,GAAK3K,EAGL,OAAOmnG,GAAW,CACdga,MAAOyJ,EAAazJ,MACpBjwE,KAAM05E,EAAa15E,MACpB24D,GAAyB7pG,EAAW9Y,EAAIy8H,GAC/C,CAgOyBsH,CAAc9uI,KAAKwuB,MAAOigH,EAAczuI,KAAK+K,GAAIy8H,GAClE6G,EAAiBhgI,KAAKs/H,GACtB,MAAMiB,EAAa5uI,KAAK4uI,WACpBA,GACAP,EAAiBhgI,KAAKugI,EAAWpY,WAErC,MAAM3yG,EAAY7jB,KAAK6jB,UACnBA,GACAwqH,EAAiBhgI,KAAKwV,EAAU2yG,WAEpC,MAAM54H,EAAgB,IAAIolI,GAAcx4F,EAAQhyC,GAChDoF,EAAcyQ,KAAK7V,EAAUg9H,cAAc53H,eAC3CA,EAAcyQ,KAAKggI,EAAiBzwI,eACpCoC,KAAKpC,cAAgBA,EACrBoC,KAAK6tI,WAAae,GAAY75E,MAAQs5E,EAAiB9zF,OAAOwa,KAC9D/0D,KAAK4tI,YAAcgB,GAAY5J,OAASqJ,EAAiB9zF,OAAOyqF,MAChEhlI,KAAK25H,UAAY91G,GAAWkxC,MAAQs5E,EAAiB7/G,MAAMumC,KAC3D/0D,KAAK05H,WAAa71G,GAAWmhH,OAASqJ,EAAiB7/G,MAAMw2G,MAC7DhlI,KAAKulE,QAAU8oE,EACf,MAAMU,EAAc/uI,KAAKulE,QAAQkxD,KAAK3tH,KACtC9I,KAAKgvI,UAAYjnB,EAAcgnB,EAAY1rB,MAAMjsH,OAASguH,EACtD2pB,EAAYvJ,YACZxlI,KAAKstI,cAAgBttI,KAAK2iI,QAAQsM,iBAAiBF,EAAYvJ,WAC3DxlI,KAAKstI,eAAiB90I,EAAU02I,QAAQH,EAAYvJ,UAAWxlI,KAAKstI,gBACpEttI,KAAKstI,cAAcxyH,KAAKtiB,IAGhCA,EAAUihI,OAAO0V,aAAanvI,MAC9BA,KAAK+oC,KAAO6kF,GAAkC5tH,KAAKulE,QAAQx8B,KAAM8kF,GACjE7tH,KAAKw4H,OAAS,CACV4U,SAAS,GAEbptI,KAAKqtI,KAAO,CACRD,SAAS,EACTnjB,OAAQ,GAEZjqH,KAAKusI,cAAc3vI,GACnBoD,KAAKovI,gBAAkBpvI,KAAKurI,qBAC5BvrI,KAAK0sE,SAAW1sE,KAAKovI,gBAAgBtqE,OAErC9kE,KAAKqvI,UADe,EACWtnB,EAAc/nH,KAAKulE,QAAQkxD,KAAKtI,OAC/D,MAAMqI,EAAYh+H,EAAUg+H,UAC5BA,EAAU8Y,cAActvI,KAAKpD,SAAS65B,GACtCz2B,KAAKq4H,aAAer4H,KAAKpD,SAAS65B,EAAIj+B,EAAUowI,QAChD5oI,KAAKuvI,MAAQ,GACb,IAAIC,EAAeh3I,EAAUshI,cAAc96G,IAAIhf,KAAKu6C,QAC/Ci1F,IACDA,EAAexvI,KAAK2iI,QAAQ8M,gBAAgBzvI,KAAKu6C,QAC7Ci1F,GACAh3I,EAAUshI,cAAcp4C,IAAI1hF,KAAKu6C,OAAQi1F,IAG7CA,GAAcE,YACdF,EAAaE,WAAW1vI,MAE5B,IAAIutI,EAAc/0I,EAAU+gI,aAAav6G,IAAIhf,KAAKwuB,OAC7C++G,IACDA,EAAcvtI,KAAK2iI,QAAQgN,eAAe3vI,KAAKwuB,OAC3C++G,GACA/0I,EAAU+gI,aAAa73C,IAAI1hF,KAAKwuB,MAAO++G,IAG3CA,GAAaqC,WACbrC,EAAYqC,UAAU5vI,MAE1B,MAAM6vI,EAAgBtC,GAAauC,cAC/BD,IACA7vI,KAAKuvI,MAAQM,EAAc7vI,OAE/BA,KAAKi4H,UAAW,EAChBj4H,KAAK+4H,YAAc9I,GAAgBjwH,KAAKulE,QAAQozD,OAAO3xH,OACvD,IAAK,MAAMyoG,KAAW+mB,EAAUwE,SAC5BvrB,EAAQ30F,KAAK9a,MAEjB,IAAK,MAAM+vI,KAASvZ,EAAUwZ,OAC1BD,EAAMj1H,OAAO9a,MAEjBwvI,GAAcS,eAAez3I,EAAWwH,MACxCutI,GAAa0C,eAAez3I,EAAWwH,MACvC,IAAK,MAAO,CAAEy4B,KAAWjgC,EAAUwtE,QAC/BvtC,EAAOy3G,kBAAkBlwI,KAEjC,CACAmwI,cAAAA,GACI,MAAMjtG,EAASljC,KAAKosH,YAAayC,EAAa7uH,KAAKxH,UAAU0X,OAAO64B,KAAMnsC,EAAWoD,KAAKpD,SAC1F,OAAQA,EAAShC,IAAMsoC,GACnBtmC,EAAS7B,IAAMmoC,GACftmC,EAAS7B,GAAK8zH,EAAWx0H,OAAS6oC,GAClCtmC,EAAShC,GAAKi0H,EAAW/zH,MAAQooC,CACzC,CACA2Q,SAAAA,GACI,OAAQ7zC,KAAKmwD,YAAcnwD,KAAKi4H,UAAYj4H,KAAKmwI,gBACrD,CACApgH,KAAAA,GACI,IAAK,MAAM0/E,KAAWzvG,KAAKxH,UAAUg+H,UAAUwE,SAC3CvrB,EAAQ1/E,QAAQ/vB,KAExB,EClWG,MAAMowI,GACT/tI,WAAAA,CAAYzF,EAAUywH,GAClBrtH,KAAKpD,SAAWA,EAChBoD,KAAKqtH,SAAWA,CACpB,ECJG,IAAIgjB,IACX,SAAWA,GACPA,EAAkB,OAAI,SACtBA,EAAqB,UAAI,WAC5B,CAHD,CAGGA,KAAcA,GAAY,CAAC,ICDvB,MAAMC,GACTjuI,WAAAA,CAAYzH,EAAGG,EAAGe,GACdkE,KAAKpD,SAAW,CACZhC,EAAGA,EACHG,EAAGA,GAEPiF,KAAKlE,KAAOA,CAChB,EAEG,MAAMy0I,WAAeD,GACxBjuI,WAAAA,CAAYzH,EAAGG,EAAGmoC,GACdujF,MAAM7rH,EAAGG,EAAGs1I,GAAUnO,QACtBliI,KAAKkjC,OAASA,CAClB,CACA43D,QAAAA,CAASp4E,GACL,OAAO4lG,EAAY5lG,EAAO1iB,KAAKpD,WAAaoD,KAAKkjC,MACrD,CACAstG,UAAAA,CAAWv3C,GACP,MAAM4zB,EAAO7sH,KAAKpD,SAAUkwH,EAAO7zB,EAAMr8F,SAAU6zI,EAAex0I,KAAK2H,IAAIkpH,EAAKlyH,EAAIiyH,EAAKjyH,GAAtC61I,EAA6Cx0I,KAAK2H,IAAIkpH,EAAK/xH,EAAI8xH,EAAK9xH,GAAMuL,EAAItG,KAAKkjC,OACtI,GAAI+1D,aAAiBs3C,IAAUt3C,EAAMn9F,OAASu0I,GAAUnO,OAAQ,CAE5D,OADkC57H,EAAd2yF,EAA8B/1D,OAAejnC,KAAKgH,KAAKwtI,GArBrE,EAqB8FA,GArB9F,EAuBV,CACK,GAAIx3C,aAAiBy3C,IAAaz3C,EAAMn9F,OAASu0I,GAAUM,UAAW,CACvE,MAAMC,EAAY33C,GAAO,MAAEn+F,EAAK,OAAET,GAAWu2I,EAAU7nG,KACvD,OADqE9sC,KAAK8G,IAAI0tI,EAAY31I,EAzBpF,GAyBwGmB,KAAK8G,IAAI0tI,EAAYp2I,EAzB7H,IA0BWiM,GA1BX,GA2BDmqI,GAAanqI,EAAIxL,GAAS21I,GAAanqI,EAAIjM,GAC5Co2I,GAAa31I,GACb21I,GAAap2I,CACrB,CACA,OAAO,CACX,EAEG,MAAMq2I,WAAkBJ,GAC3BjuI,WAAAA,CAAYzH,EAAGG,EAAGD,EAAOT,GACrBosH,MAAM7rH,EAAGG,EAAGs1I,GAAUM,WACtB3wI,KAAK+oC,KAAO,CACR1uC,OAAQA,EACRS,MAAOA,EAEf,CACAggG,QAAAA,CAASp4E,GACL,MAAMomB,EAAI9oC,KAAK+oC,KAAKjuC,MAAOqL,EAAInG,KAAK+oC,KAAK1uC,OAAQqC,EAAMsD,KAAKpD,SAC5D,OAAO8lB,EAAM9nB,GAAK8B,EAAI9B,GAAK8nB,EAAM9nB,GAAK8B,EAAI9B,EAAIkuC,GAAKpmB,EAAM3nB,GAAK2B,EAAI3B,GAAK2nB,EAAM3nB,GAAK2B,EAAI3B,EAAIoL,CAC9F,CACAqqI,UAAAA,CAAWv3C,GACP,GAAIA,aAAiBs3C,GACjB,OAAOt3C,EAAMu3C,WAAWxwI,MAE5B,MAAM8oC,EAAI9oC,KAAK+oC,KAAKjuC,MAAOqL,EAAInG,KAAK+oC,KAAK1uC,OAAQwyH,EAAO7sH,KAAKpD,SAAUkwH,EAAO7zB,EAAMr8F,SAAUo1H,EAAQ/4B,aAAiBy3C,GAAYz3C,EAAMlwD,KAAO,CAAEjuC,MAAO,EAAGT,OAAQ,GAAKw2I,EAAK7e,EAAMl3H,MAAO05B,EAAKw9F,EAAM33H,OACtM,OAAOyyH,EAAKlyH,EAAIiyH,EAAKjyH,EAAIkuC,GAAKgkF,EAAKlyH,EAAIi2I,EAAKhkB,EAAKjyH,GAAKkyH,EAAK/xH,EAAI8xH,EAAK9xH,EAAIoL,GAAK2mH,EAAK/xH,EAAIy5B,EAAKq4F,EAAK9xH,CACpG,ECpDJ,MAAMovI,GAAO,GACN,MAAM2G,GACTzuI,WAAAA,CAAYsuI,EAAWI,GACnB/wI,KAAK2wI,UAAYA,EACjB3wI,KAAK+wI,SAAWA,EAChB/wI,KAAKgxI,WAAa,KACd,MAAM,EAAEp2I,EAAC,EAAEG,GAAMiF,KAAK2wI,UAAU/zI,UAAU,MAAE9B,EAAK,OAAET,GAAW2F,KAAK2wI,UAAU5nG,MAAM,SAAEgoG,GAAa/wI,KAClG,IAAK,IAAIjB,EAAI,EAAGA,EAPmB,EAOCA,IAAK,CACrC,MAAMkyI,EAAalyI,EARR,EASXiB,KAAKkxI,MAAM5wI,KAAK,IAAIwwI,GAAS,IAAIJ,GAAU91I,EAAIE,EAAQqvI,GAAO8G,EAAYl2I,EAAIV,EAAS8vI,IAAQluI,KAAKoI,MAAMtF,EAAIorI,IAAQ8G,GAAan2I,EAAQqvI,GAAM9vI,EAAS8vI,IAAO4G,GACrK,CACA/wI,KAAKmxI,UAAW,CAAI,EAExBnxI,KAAKoxI,QAAU,GACfpxI,KAAKmxI,UAAW,EAChBnxI,KAAKkxI,MAAQ,EACjB,CACAG,MAAAA,CAAO3uH,GACH,QAAK1iB,KAAK2wI,UAAU71C,SAASp4E,EAAM9lB,YAG/BoD,KAAKoxI,QAAQ/4I,OAAS2H,KAAK+wI,UAC3B/wI,KAAKoxI,QAAQ9wI,KAAKoiB,IACX,IAEN1iB,KAAKmxI,UACNnxI,KAAKgxI,aAEFhxI,KAAKkxI,MAAMllB,MAAKnkD,GAAOA,EAAIwpE,OAAO3uH,MAC7C,CACA0nG,KAAAA,CAAMnxB,EAAOq4C,GACT,MAAM3nB,EAAM,GACZ,IAAK1wB,EAAMu3C,WAAWxwI,KAAK2wI,WACvB,MAAO,GAEX,IAAK,MAAMjqI,KAAK1G,KAAKoxI,SACZn4C,EAAM6B,SAASp0F,EAAE9J,WAClB0rH,EAAYrvB,EAAMr8F,SAAU8J,EAAE9J,UAAY8J,EAAE2mH,SAASjB,eACnDklB,GAASA,EAAM5qI,EAAE2mH,YAGvB1D,EAAIrpH,KAAKoG,EAAE2mH,UAEf,GAAIrtH,KAAKmxI,SACL,IAAK,MAAMtpE,KAAO7nE,KAAKkxI,MACnBvnB,EAAIrpH,QAAQunE,EAAIuiD,MAAMnxB,EAAOq4C,IAGrC,OAAO3nB,CACX,CACA4nB,WAAAA,CAAY30I,EAAUsmC,EAAQouG,GAC1B,OAAOtxI,KAAKoqH,MAAM,IAAImmB,GAAO3zI,EAAShC,EAAGgC,EAAS7B,EAAGmoC,GAASouG,EAClE,CACAE,cAAAA,CAAe50I,EAAUmsC,EAAMuoG,GAC3B,OAAOtxI,KAAKoqH,MAAM,IAAIsmB,GAAU9zI,EAAShC,EAAGgC,EAAS7B,EAAGguC,EAAKjuC,MAAOiuC,EAAK1uC,QAASi3I,EACtF,EChDJ,MACMG,GAAkB5iB,IACpB,MAAM,OAAEx0H,EAAM,MAAES,GAAU+zH,EAC1B,OAAO,IAAI6hB,IADuC,IACjB51I,GADiB,IACET,EADkB,IACGS,EADH,IACuBT,EAAO,EAEjG,MAAMq3I,GACTrvI,WAAAA,CAAYmoC,EAAQhyC,GAAW,IAAAqyI,EAAA,KAC3B7qI,KAAK2xI,WAAa,WACd9G,EAAK+G,MAAMtxI,QAAKlI,UACpB,EACA4H,KAAK6xI,cAAgB,CAACtsE,EAASusE,EAAa1rG,KACxC,MAAM2rG,EAAgBxsE,EAAQwzB,OAC9B,IAAKxzB,EAAQwzB,OAAO6tC,SAASpb,OAOzB,iBANcvzH,IAAVmuC,EACApmC,KAAKgyI,OAASD,EAAclL,MAAMzvI,MAE7B26I,EAAclL,OACnB7mI,KAAKiyI,aAAavwD,IAAIt7C,EAAO2rG,EAAclL,MAAMzvI,QAIzD,MAAM86I,EAAgBlyI,KAAKmyI,mBAAmBJ,EAAcnL,SAAUwL,EAAqBL,EAAc36I,MAAqBi7I,EAAoBN,EAAclL,MAAMzvI,MAA3C,EAA8D26I,EAAclL,MAAMzvI,MAAQg7I,EAAoBE,EAAkBr2I,KAAKsH,IAAI6uI,EAAoBC,GAAqBH,EAAgBJ,EAAaS,EAAiBt2I,KAAKsH,IAAIvD,KAAKqoC,MAAOroC,KAAK7G,QAAOyN,GAAKA,EAAEw/B,QAAUA,IAAO/tC,aACtYJ,IAAVmuC,EACApmC,KAAKgyI,OAASD,EAAclL,MAAMzvI,MAAQ86I,EAG1ClyI,KAAKiyI,aAAavwD,IAAIt7C,EAAO2rG,EAAclL,MAAMzvI,MAAQ86I,GAEzDK,EAAiBD,EACjBtyI,KAAKM,KAAKrE,KAAK2H,IAAI0uI,EAAkBC,QAAiBt6I,EAAWstE,EAASn/B,GAErEmsG,EAAiBD,GACtBtyI,KAAKwyI,eAAeD,EAAiBD,EAAiBlsG,EAC1D,EAEJpmC,KAAKmyI,mBAAqBM,IACtB,MAAMj6I,EAAYwH,KAAK4iI,WACvB,IAAKpqI,EAAU0X,OAAO3L,UAAYkuI,EAAejnB,OAC7C,OAF+C,EAInD,MAAMt7G,EAAS1X,EAAU0X,OAAO3L,QAASspH,EAAUr1H,EAAUihI,OAAOD,WACpE,OAAQtpH,EAAOpV,MAAQoV,EAAO7V,QAAWo4I,EAAep4I,OAASo4I,EAAe33I,MAAQ+yH,GAzC/D,EAyCoF,EAEjH7tH,KAAK0yI,cAAgB,CAAC91I,EAAU+wI,EAAiBvnG,EAAOusG,KACpD,IACI,IAAItlB,EAAWrtH,KAAK4xI,MAAMn2G,MACrB4xF,IACDA,EAAW,IAAIud,GAAS5qI,KAAK2iI,QAAS3iI,KAAK4iI,aAE/CvV,EAASvyG,KAAK9a,KAAK4yI,QAASh2I,EAAU+wI,EAAiBvnG,GACvD,IAAIysG,GAAS,EAIb,GAHIF,IACAE,EAASF,EAAYtlB,KAEpBwlB,EACD,OAWJ,OATA7yI,KAAK8yI,OAAOxyI,KAAK+sH,GACjBrtH,KAAK+yI,QAAQzyI,KAAK+sH,GAClBrtH,KAAK4yI,UACL5yI,KAAK2iI,QAAQvyC,cAAcqxC,GAAUuR,cAAe,CAChDx6I,UAAWwH,KAAK4iI,WAChB75H,KAAM,CACFskH,cAGDA,CACX,CACA,MAAO3jH,GACH+/G,IAAYD,QAAQ,GAAGtE,sBAAgCx7G,IAC3D,GAEJ1J,KAAKizI,gBAAkB,CAACz3H,EAAO4qB,EAAO8mG,KAClC,MAAM7f,EAAWrtH,KAAK8yI,OAAOt3H,GAC7B,IAAK6xG,GAAYA,EAASjnF,QAAUA,EAChC,OAAO,EAEX,MAAM8sG,EAAOlzI,KAAK+yI,QAAQ7kI,QAAQm/G,GAWlC,OAVArtH,KAAK8yI,OAAOt/H,OAAOgI,EADwC,GAE3Dxb,KAAK+yI,QAAQv/H,OAAO0/H,EAFuC,GAG3D7lB,EAASr1H,QAAQk1I,GACjBltI,KAAK2iI,QAAQvyC,cAAcqxC,GAAU0R,gBAAiB,CAClD36I,UAAWwH,KAAK4iI,WAChB75H,KAAM,CACFskH,cAGRrtH,KAAK2xI,WAAWtkB,IACT,CAAI,EAEfrtH,KAAK2iI,QAAUn4F,EACfxqC,KAAK4iI,WAAapqI,EAClBwH,KAAK4yI,QAAU,EACf5yI,KAAK8yI,OAAS,GACd9yI,KAAK+yI,QAAU,GACf/yI,KAAK4xI,MAAQ,GACb5xI,KAAKgyI,OAAS,EACdhyI,KAAKiyI,aAAe,IAAIjjD,IACxBhvF,KAAKozI,YAAa,EAClBpzI,KAAKqzI,YAAc,EACnBrzI,KAAKszI,oBAAsB,IAAI7J,GAAmBj/F,EAAQhyC,GAC1DwH,KAAKuzI,qBAAsB,EAC3B,MAAM1kB,EAAar2H,EAAU0X,OAAO64B,KACpC/oC,KAAKwzI,SAAW,IAAI1C,GAASW,GAAe5iB,GAvG9B,GAwGd7uH,KAAKgwI,OAAS,GACdhwI,KAAKg7H,SAAW,EACpB,CACA,SAAI3yF,GACA,OAAOroC,KAAK8yI,OAAOz6I,MACvB,CACAo7I,kBAAAA,GACI,MAAMj7I,EAAYwH,KAAK4iI,WAAsBpqI,EAAUg9H,cAC/CiT,gBAAgBhvI,SAAQiN,GAAK1G,KAAK0zI,YAAYhtI,EAAE9J,SAAWuvH,GAAYzlH,EAAE9J,SAAUpE,EAAU0X,OAAO64B,WAAQ9wC,EAAWyO,EAAE6+D,UACrI,CACAmuE,WAAAA,CAAY92I,EAAU+wI,EAAiBvnG,EAAOusG,GAC1C,MAAMgB,EAAY3zI,KAAK4iI,WAAWpN,cAAcgB,UAAUz9B,OAAO8tC,MAAM1rI,KAAM0rI,OAAkB5uI,IAAVmuC,EAAsBpmC,KAAKgyI,OAAShyI,KAAKiyI,aAAajzH,IAAIonB,IAAUpmC,KAAKgyI,OAAQ4B,EAAe5zI,KAAKqoC,MAC1L,GAAIw+F,EADwM,EAExM,OAAQ8M,GACJ,KAAKpQ,GAAUl0C,OAAQ,CACnB,MAAqCwkD,EAAgBD,EAAjC,EAA8D/M,EAC9EgN,EAD8B,GAE9B7zI,KAAKwyI,eAAeqB,GAExB,KACJ,CACA,KAAKtQ,GAAUuQ,KACX,GAAIF,GAAgB/M,EAChB,OAKhB,OAAO7mI,KAAK0yI,cAAc91I,EAAU+wI,EAAiBvnG,EAAOusG,EAChE,CACAhf,KAAAA,GACI3zH,KAAK8yI,OAAS,GACd9yI,KAAK+yI,QAAU,GACf/yI,KAAKuzI,qBAAsB,CAC/B,CACAv7I,OAAAA,GACIgI,KAAK8yI,OAAS,GACd9yI,KAAK+yI,QAAU,GACf/yI,KAAKgwI,OAAS,GACdhwI,KAAKg7H,SAAW,EACpB,CACAlE,IAAAA,CAAKz4F,GACD,MAAM7lC,EAAYwH,KAAK4iI,WAAY1yH,EAAS1X,EAAU0X,OACtDA,EAAOyjH,QACP3zH,KAAKmmD,OAAO9nB,GACZ,IAAK,MAAO,CAAE5F,KAAWjgC,EAAUwtE,QAC/B91D,EAAOiqH,WAAW1hG,EAAQ4F,GAE9B,IAAK,MAAM33B,KAAK1G,KAAK+yI,QACjBrsI,EAAEowH,KAAKz4F,EAEf,CACAllC,MAAAA,CAAO46I,GACH,OAAO/zI,KAAK8yI,OAAO35I,OAAO46I,EAC9B,CACAp4I,IAAAA,CAAKo4I,GACD,OAAO/zI,KAAK8yI,OAAOn3I,KAAKo4I,EAC5B,CACA/0H,GAAAA,CAAIxD,GACA,OAAOxb,KAAK8yI,OAAOt3H,EACvB,CACAkhH,eAAAA,CAAgBvhI,GACZ6E,KAAKszI,oBAAoB5W,gBAAgBvhI,EAC7C,CACA,UAAM2f,GACF,MAAMtiB,EAAYwH,KAAK4iI,WAAYr9D,EAAU/sE,EAAUg9H,cACvDx1H,KAAKqzI,YAAc,EACnBrzI,KAAKozI,YAAa,QACZpzI,KAAK06H,cACX,IAAIwF,GAAU,EACd,IAAK,MAAO,CAAEznG,KAAWjgC,EAAUwtE,QAE/B,GADAk6D,EAAUznG,EAAOu7G,6BAA+B9T,EAC5CA,EACA,MAIR,GADAlgI,KAAKyzI,sBACAvT,EAAS,CACV,MAAMmO,EAAmB9oE,EAAQixD,UAAW+Q,EAAS8G,EAAiB9G,OACtE,IAAK,MAAMnhG,KAASmhG,EAAQ,CACxB,MAAM0M,EAAe1M,EAAOnhG,GAC5B,IAAK,IAAIrnC,EAAIiB,KAAKqoC,MAAOt+B,EAAI,EAAGA,EAAIkqI,EAAal7C,QAAQ3hG,OAAS2H,EAAIsvI,EAAiBt1C,OAAO3hG,MAAO2H,IAAKgL,IACtG/J,KAAK0zI,iBAAYz7I,EAAWg8I,EAAc7tG,EAElD,CACA,IAAK,IAAIrnC,EAAIiB,KAAKqoC,MAAOtpC,EAAIsvI,EAAiBt1C,OAAO3hG,MAAO2H,IACxDiB,KAAK0zI,aAEb,CACJ,CACA,iBAAMhZ,GACF,GAAI16H,KAAKuzI,oBACL,OAEJ,MAAM/6I,EAAYwH,KAAK4iI,WACvB5iI,KAAKgwI,aAAehwI,KAAK2iI,QAAQuR,UAAU17I,GAAW,GACtDwH,KAAKg7H,eAAiBh7H,KAAK2iI,QAAQwR,YAAY37I,GAAW,SACpDwH,KAAKszI,oBAAoBx4H,OAC/B,IAAK,MAAO,CAAEwyH,KAAkB90I,EAAU47I,eACtC9G,EAAcxyH,KAAKtiB,EAE3B,CACA8H,IAAAA,CAAKukF,EAAIu3C,EAAOuR,EAAiBvnG,GAC7B,IAAK,IAAIrnC,EAAI,EAAGA,EAAI8lF,EAAI9lF,IACpBiB,KAAK0zI,YAAYtX,GAAOx/H,SAAU+wI,EAAiBvnG,EAE3D,CACA,YAAMyb,GACF7hD,KAAK2zH,cACC3zH,KAAK8a,OACX9a,KAAK82H,KAAK,CAAE1/H,MAAO,EAAG6yH,OAAQ,GAClC,CACA6N,MAAAA,CAAOzK,EAAUjnF,EAAO8mG,GACpBltI,KAAKq0I,SAASr0I,KAAK8yI,OAAO5kI,QAAQm/G,QAAWp1H,EAAWmuC,EAAO8mG,EACnE,CACAmH,QAAAA,CAAS74H,GAA0D,IAAnD84H,EAAQl8I,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,GAAAA,UAAA,GA3NoC,EA2NVguC,EAAKhuC,UAAAC,OAAA,EAAAD,UAAA,QAAAH,EAAEi1I,EAAQ90I,UAAAC,OAAA,EAAAD,UAAA,QAAAH,EAE7D,GAAIujB,EADa,GACOA,EAAQxb,KAAKqoC,MACjC,OAEJ,IAAIksG,EAAU,EACd,IAAK,IAAIx1I,EAAIyc,EAAO+4H,EAAUD,GAAYv1I,EAAIiB,KAAKqoC,MAAOtpC,IAClDiB,KAAKizI,gBAAgBl0I,IAAKqnC,EAAO8mG,IACjCqH,GAGZ,CACA/B,cAAAA,CAAe8B,EAAUluG,GAErBpmC,KAAKq0I,SADgB,EACOC,EAAUluG,EAC1C,CACAs1F,UAAAA,GACI,MAAMn2D,EAAUvlE,KAAK4iI,WAAWpN,cAAe+R,EAAShiE,EAAQixD,UAAU+Q,OAC1E,IAAK,MAAMnhG,KAASmhG,EAChBvnI,KAAK6xI,cAActK,EAAOnhG,GAFkE,EAE7CA,GAEnDpmC,KAAK6xI,cAActsE,EAAQixD,UAAWjxD,EAAQkjE,gBAAgBpwI,OAClE,CACAi3I,aAAAA,CAAcjoD,GACVrnF,KAAKqzI,YAAchsD,EACnBrnF,KAAKozI,WAAapzI,KAAKozI,YAAcpzI,KAAKqzI,YAAchsD,CAC5D,CACAi0C,eAAAA,CAAgBrR,GACZjqH,KAAKw0I,cAAgBvqB,CACzB,CACA9jE,MAAAA,CAAO9nB,GACH,MAAM7lC,EAAYwH,KAAK4iI,WAAY6R,EAAoB,IAAI71D,IAC3D5+E,KAAKwzI,SAAW,IAAI1C,GAASW,GAAej5I,EAAU0X,OAAO64B,MA3P/C,GA4Pd,IAAK,MAAO,CAAEukG,KAAkB90I,EAAU47I,eACtC9G,EAAcnnF,SAElB,IAAK,MAAO,CAAE1tB,KAAWjgC,EAAUwtE,QAC/BvtC,EAAO0tB,SAAS9nB,GAEpB,MAAMq2G,EAAe10I,KAAKw0I,cAC1B,IAAK,MAAMnnB,KAAYrtH,KAAK8yI,OAAQ,CAC5B4B,IAAiBrnB,EAAS8gB,qBAC1B9gB,EAASzwH,SAAShC,GAAK85I,EAAa55I,MACpCuyH,EAASzwH,SAAS7B,GAAK25I,EAAar6I,OACpCgzH,EAASof,gBAAgB7xI,GAAK85I,EAAa55I,MAC3CuyH,EAASof,gBAAgB1xI,GAAK25I,EAAar6I,QAE/CgzH,EAAS8gB,oBAAqB,EAC9BnuI,KAAKszI,oBAAoBvjH,MAAMs9F,GAC/B,IAAK,MAAO,CAAE50F,KAAWz4B,KAAK4iI,WAAW58D,QAAS,CAC9C,GAAIqnD,EAASl9D,UACT,MAEJ13B,EAAOk8G,iBAAiBtnB,EAAUhvF,EACtC,CACA,IAAK,MAAM0xG,KAAS/vI,KAAKgwI,OACjBD,EAAMjG,UAAUzc,IAChB0iB,EAAMtZ,KAAKpJ,EAAUhvF,GAGzBgvF,EAASl9D,UACTskF,EAAkBxsF,IAAIolE,GAG1BrtH,KAAKwzI,SAASnC,OAAO,IAAIjB,GAAM/iB,EAASlB,cAAekB,GAC3D,CACA,GAAIonB,EAAkB1rG,KAAM,CACxB,MAAM6rG,EAAeluI,IAAO+tI,EAAkBl2C,IAAI73F,GAClD1G,KAAK8yI,OAAS9yI,KAAK7G,OAAOy7I,GAC1B50I,KAAK+yI,QAAU/yI,KAAK+yI,QAAQ55I,OAAOy7I,GACnC,IAAK,MAAMvnB,KAAYonB,EACnBz0I,KAAK2iI,QAAQvyC,cAAcqxC,GAAU0R,gBAAiB,CAClD36I,UAAWwH,KAAK4iI,WAChB75H,KAAM,CACFskH,cAIZrtH,KAAK2xI,cAAc8C,EACvB,CACAz0I,KAAKszI,oBAAoBzJ,iBAAiBxrG,GAC1C,IAAK,MAAMgvF,KAAYrtH,KAAK8yI,OAAQ,CAChC,IAAK,MAAMrjC,KAAWzvG,KAAKg7H,SACvBvrB,EAAQtpD,OAAOknE,EAAUhvF,GAExBgvF,EAASl9D,WAAck9D,EAAS4K,UACjCj4H,KAAKszI,oBAAoBpJ,kBAAkB7c,EAAUhvF,EAE7D,CAEA,UADOr+B,KAAKw0I,cACRx0I,KAAKozI,WAAY,CACjB,MAAMyB,EAAS70I,KAAK+yI,QACpB8B,EAAO/L,MAAK,CAACl8H,EAAGpG,IAAMA,EAAE5J,SAAS65B,EAAI7pB,EAAEhQ,SAAS65B,GAAK7pB,EAAE7B,GAAKvE,EAAEuE,KAC9D,MAAM81H,EAAe,EACrB7gI,KAAKqzI,YAAcwB,EAAOA,EAAOx8I,OAASwoI,GAAcjkI,SAAS65B,EACjEz2B,KAAKozI,YAAa,CACtB,CACJ,EClUG,MAAM0B,GACTzyI,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,EACjBwH,KAAKw5H,WAJQ,EAKbx5H,KAAKgzH,aALiC,CAM1C,CACAl4G,IAAAA,GACI,MAAMtiB,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cACtDx1H,KAAKw5H,YAAcj0D,EAAQgjE,cAAgBre,KAT9B,EASuD5vH,OAAO28D,iBAC3Ej3D,KAAKgzH,aAViC,EAWtC,MAAM+hB,EAAQ/0I,KAAKw5H,WAAYtpH,EAAS1X,EAAU0X,OAClD,GAAIA,EAAO3L,QAAS,CAChB,MAAMA,EAAU2L,EAAO3L,QACvB2L,EAAO64B,KAAKjuC,MAAQyJ,EAAQylC,YAAc+qG,EAC1C7kI,EAAO64B,KAAK1uC,OAASkK,EAAQq5D,aAAem3E,CAChD,CACA,MAAMve,EAAYjxD,EAAQixD,UAAWkV,EAAclV,EAAUC,KAC7Dz2H,KAAK8kI,SAAW/c,EAAc2jB,EAAYzF,QAAQnB,UAAYiQ,EAC9D/0I,KAAKg1I,mBAAqBjtB,EAAcyO,EAAUztF,KAAK35B,UAAUlY,OAAS69I,CAC9E,CACA5F,YAAAA,CAAa9hB,GACT,MAAM9nD,EAAU8nD,EAAS9nD,QAASwvE,EAAQ/0I,KAAKw5H,WAAYkS,EAAcnmE,EAAQkxD,KAAMwe,EAAevJ,EAAYrkG,SAAU1yC,EAAQ04H,EAASoM,OAC7I9kI,EAAMugJ,UAAYntB,EAAc2jB,EAAY1F,OAAS+O,EACrDpgJ,EAAMwgJ,UAAYptB,EAAc2jB,EAAYx0I,OAAS69I,EACrDpgJ,EAAMqgJ,mBAAqBjtB,EAAcxiD,EAAQx8B,KAAK35B,UAAUlY,OAAS69I,EACzE,MAAM9G,EAAct5I,EAAMs5I,YAC1BA,EAAYzhB,gBAAyCv0H,IAA5Bg9I,EAAazoB,WAA2ByoB,EAAazoB,WAAauoB,OAAQ98I,EACnGg2I,EAAYxhB,cAAqCx0H,IAA1Bg9I,EAAaxoB,SAAyBwoB,EAAaxoB,SAAWsoB,OAAQ98I,EAC7FtD,EAAMmwI,SAAW/c,EAAc2jB,EAAYzF,QAAQnB,UAAYiQ,CACnE,ECtBJ,SAASK,GAAW58I,GAChB,OAAOA,IAAcA,EAAU23D,SACnC,CAQA,SAASklF,GAAqB7qG,EAAQhyC,GAClC,MAAM+sE,EAAU,IAAI0iE,GAAQz9F,EAAQhyC,GAAW,QAAAyyH,EAAA7yH,UAAAC,OADCwvI,EAAgB,IAAAjvI,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAhB2c,EAAgB3c,EAAA,GAAA9yH,UAAA8yH,GAGhE,OADAyc,GAAYpiE,KAAYsiE,GACjBtiE,CACX,CACO,MAAM+vE,GACTjzI,WAAAA,CAAYmoC,EAAQz/B,EAAI+8H,GACpB9nI,KAAKu1I,qBAAuB1V,IACxB,GAAKuV,GAAWp1I,OAAUA,KAAKw1H,cAAckT,uBAG7C,IAAK,MAAM8M,KAAS3V,EACZ2V,EAAM7vI,SAAW3F,KAAKpC,cAAc2G,UAGpCixI,EAAMC,eACDz1I,KAAKpJ,OAGVoJ,KAAKhJ,QAEb,EAEJgJ,KAAK01I,WAAcC,IACf,IACI,IAAK31I,KAAK41I,cACkB39I,IAAxB+H,KAAK61I,gBACLF,EAAY31I,KAAK61I,eAAiBzwB,EAAwBplH,KAAKwoI,SAE/D,YADAxoI,KAAK82H,MAAK,GAGd92H,KAAK61I,iBAAmBF,EACxB,MAAMt3G,EAtCtB,SAAmBjnC,GACf,MAAO,CACHA,QACA6yH,OAH+C7xH,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,IAAAA,UAAA,GADpC,IACeA,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,GAAAA,UAAA,GADf,OAI4ChB,EAASguH,EAExE,CAiC8B0wB,CAAUH,EAAY31I,KAAK61I,eAAgB71I,KAAKwoI,SAAUxoI,KAAK41I,SAG7E,GAFA51I,KAAK+1I,YAAY13G,EAAMjnC,OACvB4I,KAAK61I,eAAiBF,EAClBt3G,EAAMjnC,MAAQguH,EAEd,YADAplH,KAAK82H,MAAK,GAId,GADA92H,KAAKw2H,UAAUM,KAAKz4F,IACfr+B,KAAKg2I,QAEN,YADAh2I,KAAKhI,UAGLgI,KAAKw9H,iBACLx9H,KAAK82H,MAAK,EAElB,CACA,MAAOptH,GACH+/G,IAAYz6G,MAAM,GAAGk2G,sBAAiCx7G,EAC1D,GAEJ1J,KAAK2iI,QAAUn4F,EACfxqC,KAAK+K,GAAK5I,OAAO4I,GACjB/K,KAAKwoI,SAAW,IAChBxoI,KAAK41I,SAAU,EACf51I,KAAKi2I,OAAS,EACdj2I,KAAKk2I,UAAY,EACjBl2I,KAAKm2I,UAAY,EACjBn2I,KAAKo2I,aAAc,EACnBp2I,KAAKq7H,SAAU,EACfr7H,KAAKmwD,WAAY,EACjBnwD,KAAKq2I,SAAU,EACfr2I,KAAK61I,eAAiB,EACtB71I,KAAK4oI,QAAU,IACf5oI,KAAKu9H,YAAa,EAClBv9H,KAAKs2I,eAAiB,IAAItnD,IAC1BhvF,KAAKu2I,eAAiBzO,EACtB9nI,KAAKw2I,sBAAwB1O,EAC7B9nI,KAAKy5H,OAAS,IAAIqb,GAAO90I,MACzBA,KAAKkQ,OAAS,IAAIgkH,GAAOl0H,MACzBA,KAAKw2H,UAAY,IAAIkb,GAAU1xI,KAAK2iI,QAAS3iI,MAC7CA,KAAKo0I,eAAiB,IAAIplD,IAC1BhvF,KAAKpC,cAAgB,CACjBw+H,MAAO,CACH2D,UAAU,EACVlV,QAAQ,IAGhB7qH,KAAKgmE,QAAU,IAAIgpB,IACnBhvF,KAAK85H,cAAgB,IAAI9qC,IACzBhvF,KAAKu5H,aAAe,IAAIvqC,IACxBhvF,KAAKy2I,SAAWpB,GAAqBr1I,KAAK2iI,QAAS3iI,MACnDA,KAAKw1H,cAAgB6f,GAAqBr1I,KAAK2iI,QAAS3iI,MACxDA,KAAK02I,gBAAkB,IAAI1a,GAAeh8H,MAC1CA,KAAK22I,sB5E3CN,SAAkCpoI,GACrC,IAAI27G,MAA2C,qBAAzB0sB,qBAGtB,OAAO,IAAIA,qBAAqBroI,EACpC,C4EsCqCsoI,EAAyBhX,GAAW7/H,KAAKu1I,qBAAqB1V,KAC3F7/H,KAAK2iI,QAAQvyC,cAAcqxC,GAAUqV,eAAgB,CAAEt+I,UAAWwH,MACtE,CACA,mBAAIw9H,GACA,OAAQx9H,KAAKq2I,UAAYr2I,KAAKu9H,YAAc6X,GAAWp1I,KAC3D,CACA,WAAIulE,GACA,OAAOvlE,KAAKy2I,QAChB,CACA,iBAAI3O,GACA,OAAO9nI,KAAKu2I,cAChB,CACAQ,eAAAA,CAAgBxoI,GACZ,IAAK6mI,GAAWp1I,MACZ,OAEJ,MAAMg8G,EAAKh8G,KAAKpC,cAAc2G,QAC9B,IAAKy3G,EACD,OAEJ,MAAMg7B,EAAsBA,CAACttI,EAAGhN,EAAKwmC,KACjC,IAAKkyG,GAAWp1I,MACZ,OAEJ,MAAM6tH,EAAU7tH,KAAKy5H,OAAOD,WAAYyd,EAAY,CAChDr8I,EAAG8B,EAAI9B,EAAIizH,EACX9yH,EAAG2B,EAAI3B,EAAI8yH,GACZ2I,EAAYx2H,KAAKw2H,UAAUgd,SAASjC,YAAY0F,EAAW/zG,EAAS2qF,GACvEt/G,EAAS7E,EAAG8sH,EAAU,EAiD1B,IAAI0gB,GAAU,EAAOC,GAAa,EAClCn3I,KAAKs2I,eAAe50D,IAAI,SAjDLh4E,IACf,IAAK0rI,GAAWp1I,MACZ,OAEJ,MAAMsgI,EAAa52H,EAAGhN,EAAM,CACxB9B,EAAG0lI,EAAWI,SAAWJ,EAAWnjI,QACpCpC,EAAGulI,EAAWK,SAAWL,EAAWljI,SAExC45I,EAAoBttI,EAAGhN,EADX,EACuB,IA0CvCsD,KAAKs2I,eAAe50D,IAAI,cAzCD01D,KACdhC,GAAWp1I,QAGhBk3I,GAAU,EACVC,GAAa,EAAK,IAqCtBn3I,KAAKs2I,eAAe50D,IAAI,aApCF21D,KACbjC,GAAWp1I,QAGhBm3I,GAAa,EAAI,IAiCrBn3I,KAAKs2I,eAAe50D,IAAI,YAhCFh4E,IAClB,GAAK0rI,GAAWp1I,MAAhB,CAGA,GAAIk3I,IAAYC,EAAY,CACxB,MAAMvW,EAAal3H,EAAGm3H,EAAe,EACrC,IAAIC,EAAYF,EAAW1pC,QAAQ0pC,EAAW1pC,QAAQ7+F,OAASwoI,GAC/D,IAAKC,IACDA,EAAYF,EAAWxpC,eAAewpC,EAAWxpC,eAAe/+F,OAASwoI,IACpEC,GACD,OAGR,MAAMv8H,EAAUvE,KAAKkQ,OAAO3L,QAASk8H,EAAal8H,EAAUA,EAAQpK,6BAA0BlC,EAAWq/I,EAAgB,EAAG56I,EAAM,CAC9H9B,EAAGkmI,EAAU3jI,SAAWsjI,EAAaA,EAAW5lI,KAAOy8I,GACvDv8I,EAAG+lI,EAAU1jI,SAAWqjI,EAAaA,EAAWrmI,IAAMk9I,IAE1DN,EAAoBttI,EAAGhN,EAAKT,KAAKoH,IAAIy9H,EAAUyW,QAASzW,EAAU0W,SACtE,CACAN,GAAU,EACVC,GAAa,CAjBb,CAiBkB,IAatBn3I,KAAKs2I,eAAe50D,IAAI,eAZA+1D,KACfrC,GAAWp1I,QAGhBk3I,GAAU,EACVC,GAAa,EAAK,IAQtB,IAAK,MAAO5hI,EAAKrc,KAAY8G,KAAKs2I,eAC9Bt6B,EAAGziH,iBAAiBgc,EAAKrc,EAEjC,CACA68I,WAAAA,CAAY3+I,GACR4I,KAAKm2I,WAAa/+I,CACtB,CACA83I,OAAAA,CAAQ35H,EAAKiwH,GAA6B,IAAlB0H,EAAQ90I,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,IAAAA,UAAA,GAC5B,SAAKg9I,GAAWp1I,QAAWktI,GAAYltI,KAAKo0I,eAAe71C,IAAIhpF,MAG/DvV,KAAKo0I,eAAe1yD,IAAInsE,EAAKiwH,IACtB,EACX,CACAwQ,KAAAA,GACI,OAAQh2I,KAAKk2I,WAAal2I,KAAKm2I,WAAan2I,KAAKk2I,SACrD,CACAwB,kBAAAA,GACI,GAAKtC,GAAWp1I,MAAhB,CAGA,IAAK,MAAOuV,EAAKrc,KAAY8G,KAAKs2I,eAC9Bt2I,KAAKpC,cAAc2G,SAAS/K,oBAAoB+b,EAAKrc,GAEzD8G,KAAKs2I,eAAe3iB,OAJpB,CAKJ,CACA37H,OAAAA,GAAuB,IAAf8/H,IAAM1/H,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GACV,GAAKg9I,GAAWp1I,MAAhB,CAGAA,KAAKjJ,OACLiJ,KAAK03I,qBACL13I,KAAKw2H,UAAUx+H,UACfgI,KAAKkQ,OAAOlY,UACZ,IAAK,MAAO,CAAEw3I,KAAiBxvI,KAAK85H,cAChC0V,EAAax3I,UAAUgI,MAE3B,IAAK,MAAO,CAAEutI,KAAgBvtI,KAAKu5H,aAC/BgU,EAAYv1I,UAAUgI,MAE1B,IAAK,MAAMuV,KAAOvV,KAAK85H,cAAcjmH,OACjC7T,KAAK85H,cAAczqC,OAAO95E,GAE9B,IAAK,MAAMA,KAAOvV,KAAKu5H,aAAa1lH,OAChC7T,KAAKu5H,aAAalqC,OAAO95E,GAI7B,GAFAvV,KAAK2iI,QAAQgV,aAAa33I,MAC1BA,KAAKmwD,WAAY,EACb2nE,EAAQ,CACR,MAAM8f,EAAU53I,KAAK2iI,QAAQ58F,MAAO+gF,EAAM8wB,EAAQC,WAAUjxI,GAAKA,IAAM5G,OACvE,GAAI8mH,GADqF,EACpE,CACjB,MAAMgxB,EAAc,EACpBF,EAAQpkI,OAAOszG,EAAKgxB,EACxB,CACJ,CACA93I,KAAK2iI,QAAQvyC,cAAcqxC,GAAUsW,mBAAoB,CAAEv/I,UAAWwH,MA1BtE,CA2BJ,CACA82H,IAAAA,CAAKsL,GACD,IAAKgT,GAAWp1I,MACZ,OAEJ,IAAIg4I,EAAc5V,EAClB,MAAM6V,EAAStC,IACPqC,IACAh4I,KAAK61I,oBAAiB59I,EACtB+/I,GAAc,GAElBh4I,KAAK01I,WAAWC,EAAU,EnFlO/B,IAAiBzsI,EmFoOhBlJ,KAAKk4I,qBnFpOWhvI,EmFoOmBysI,GAAasC,EAAMtC,GnFnOnDhvB,EAAeC,UAAU19G,GmFoOhC,CACA,YAAMivI,CAAOr8I,GAAoB,IAAdypE,EAAOntE,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC1B,IAAK,MAAO,CAAEqgC,KAAWz4B,KAAKgmE,QAAS,CACnC,IAAKvtC,EAAO0/G,OACR,SAEJ,MAAMxuB,QAAYlxF,EAAO0/G,OAAOr8I,EAAMypE,GACtC,GAAKokD,EAAIyuB,UAGT,OAAOzuB,EAAItgH,IACf,CACAogH,IAAYz6G,MAAM,GAAGk2G,+BAAyCppH,cAClE,CACA4gI,eAAAA,CAAgBvhI,GACZ,GAAKi6I,GAAWp1I,MAAhB,CAGAA,KAAKw2H,UAAUkG,gBAAgBvhI,GAC/B,IAAK,MAAO,CAAEs9B,KAAWz4B,KAAKgmE,QAC1BvtC,EAAOikG,kBAAkBvhI,EAH7B,CAKJ,CACA,UAAM2f,GACF,IAAKs6H,GAAWp1I,MACZ,OAEJ,MAAM8wC,EAAU9wC,KAAK2iI,QAAQ0V,sBAC7B,IAAK,MAAMv8I,KAAQg1C,EAAS,CACxB,MAAMwoF,EAASt5H,KAAK2iI,QAAQ8M,gBAAgB3zI,GACxCw9H,GACAt5H,KAAK85H,cAAcp4C,IAAI5lF,EAAMw9H,EAErC,CACA,MAAMzuH,EAAS7K,KAAK2iI,QAAQ2V,qBAC5B,IAAK,MAAMx8I,KAAQ+O,EAAQ,CACvB,MAAMyuH,EAASt5H,KAAK2iI,QAAQgN,eAAe7zI,GACvCw9H,GACAt5H,KAAKu5H,aAAa73C,IAAI5lF,EAAMw9H,EAEpC,OACMt5H,KAAKw2H,UAAUkE,cACrB16H,KAAKy2I,SAAWpB,GAAqBr1I,KAAK2iI,QAAS3iI,KAAMA,KAAKw2I,sBAAuBx2I,KAAK8nI,eAC1F9nI,KAAKw1H,cAAgB6f,GAAqBr1I,KAAK2iI,QAAS3iI,KAAMA,KAAKy2I,UACnE,MAAM8B,QAAyBv4I,KAAK2iI,QAAQ6V,oBAAoBx4I,MAChE,IAAK,MAAO+K,EAAI0tB,KAAW8/G,EACvBv4I,KAAKgmE,QAAQ0b,IAAI32E,EAAI0tB,GAEzBz4B,KAAKy5H,OAAO3+G,aACN9a,KAAKkQ,OAAO4K,OAClB9a,KAAKy7H,sBACLz7H,KAAKkQ,OAAOonH,iBACZt3H,KAAKkQ,OAAOyJ,SACZ,MAAM,QAAEivH,EAAO,SAAEr0H,EAAQ,MAAE8uG,EAAK,SAAEmlB,EAAQ,OAAEx9D,GAAWhrE,KAAKw1H,cAC5Dx1H,KAAK4oI,QAAUA,EACf5oI,KAAKk2I,UAAYnuB,EAAcxzG,GAAY6wG,EAC3CplH,KAAKi2I,OAASluB,EAAc1E,GAAS+B,EACrCplH,KAAKm2I,UAAY,EAEjBn2I,KAAKwoI,SAAWA,EAD2B,EACFA,EADjB,IAExBxoI,KAAK41I,QAAU5qE,EACf,IAAK,MAAO,CAAEsuD,KAAWt5H,KAAK85H,oBACpBR,EAAOx+G,OAAO9a,OAExB,IAAK,MAAO,CAAEs5H,KAAWt5H,KAAKu5H,mBACpBD,EAAOx+G,OAAO9a,OAExB,IAAK,MAAO,CAAEy4B,KAAWz4B,KAAKgmE,cACpBvtC,EAAO3d,UAEjB9a,KAAK2iI,QAAQvyC,cAAcqxC,GAAUgX,cAAe,CAAEjgJ,UAAWwH,aAC3DA,KAAKw2H,UAAU17G,OACrB9a,KAAKw2H,UAAUkF,aACf,IAAK,MAAO,CAAEjjG,KAAWz4B,KAAKgmE,QAC1BvtC,EAAOigH,mBAEX14I,KAAK2iI,QAAQvyC,cAAcqxC,GAAUiX,eAAgB,CAAElgJ,UAAWwH,MACtE,CACA,eAAMo9H,CAAUvnI,GACPu/I,GAAWp1I,QAGhBA,KAAK24I,cAAgB9iJ,QACfmK,KAAK27H,UACf,CACA3kI,KAAAA,GnFvTG,IAAyB4hJ,EmFwTxB,GAAKxD,GAAWp1I,aAGiB/H,IAA7B+H,KAAKk4I,sBnF3TeU,EmF4TJ54I,KAAKk4I,oBnF3T7BvxB,EAAeE,OAAO+xB,UmF4TP54I,KAAKk4I,sBAEZl4I,KAAKq2I,SAAT,CAGA,IAAK,MAAO,CAAE59G,KAAWz4B,KAAKgmE,QAC1BvtC,EAAOzhC,UAENgJ,KAAKu9H,aACNv9H,KAAKq2I,SAAU,GAEnBr2I,KAAK2iI,QAAQvyC,cAAcqxC,GAAUoX,gBAAiB,CAAErgJ,UAAWwH,MAPnE,CAQJ,CACApJ,IAAAA,CAAKwrI,GACD,IAAKgT,GAAWp1I,MACZ,OAEJ,MAAM84I,EAAc94I,KAAKq2I,SAAWjU,EACpC,IAAIpiI,KAAKo2I,aAAgBp2I,KAAKw1H,cAAc8S,SAA5C,CAOA,GAHItoI,KAAKq2I,UACLr2I,KAAKq2I,SAAU,GAEfyC,EACA,IAAK,MAAO,CAAErgH,KAAWz4B,KAAKgmE,QACtBvtC,EAAO7hC,MACP6hC,EAAO7hC,OAInBoJ,KAAK2iI,QAAQvyC,cAAcqxC,GAAUsX,cAAe,CAAEvgJ,UAAWwH,OACjEA,KAAK82H,KAAKgiB,IAAe,EAZzB,MAFI94I,KAAKo2I,aAAc,CAe3B,CACA,aAAMza,GACF,GAAKyZ,GAAWp1I,MAIhB,OADAA,KAAKjJ,OACEiJ,KAAKo0E,OAChB,CACA,WAAMrkD,CAAM+3G,GACR,GAAKsN,GAAWp1I,MAOhB,OAJAA,KAAKw2I,sBAAwB1O,EAC7B9nI,KAAKu2I,eAAiBzO,EACtB9nI,KAAKy2I,SAAWpB,GAAqBr1I,KAAK2iI,QAAS3iI,KAAMA,KAAKw2I,sBAAuBx2I,KAAK8nI,eAC1F9nI,KAAKw1H,cAAgB6f,GAAqBr1I,KAAK2iI,QAAS3iI,KAAMA,KAAKy2I,UAC5Dz2I,KAAK27H,SAChB,CACA,WAAMvnD,GACGghE,GAAWp1I,QAASA,KAAKq7H,gBAGxBr7H,KAAK8a,OACX9a,KAAKq7H,SAAU,QACT,IAAI56B,SAAQG,IACd,MAAMxsB,EAAQo2C,UACVxqH,KAAK02I,gBAAgBnV,eACjBvhI,KAAKpC,cAAc2G,mBAAmBy0I,aAAeh5I,KAAK22I,uBAC1D32I,KAAK22I,sBAAsBnf,QAAQx3H,KAAKpC,cAAc2G,SAE1D,IAAK,MAAO,CAAEk0B,KAAWz4B,KAAKgmE,cACpBvtC,EAAO27C,WAEjBp0E,KAAK2iI,QAAQvyC,cAAcqxC,GAAUwX,iBAAkB,CAAEzgJ,UAAWwH,OACpEA,KAAKpJ,OACLgqG,GAAS,EAEb5gG,KAAKk5I,cAAgB3/H,YAAW,KAAW66D,GAAO,GAAEp0E,KAAKi2I,OAAO,IAExE,CACAl/I,IAAAA,GACI,GAAKq+I,GAAWp1I,OAAUA,KAAKq7H,QAA/B,CAGIr7H,KAAKk5I,gBACL34C,aAAavgG,KAAKk5I,sBACXl5I,KAAKk5I,eAEhBl5I,KAAKo2I,aAAc,EACnBp2I,KAAKq7H,SAAU,EACfr7H,KAAK02I,gBAAgBlV,kBACrBxhI,KAAKhJ,QACLgJ,KAAKw2H,UAAU7C,QACf3zH,KAAKkQ,OAAOnZ,OACRiJ,KAAKpC,cAAc2G,mBAAmBy0I,aAAeh5I,KAAK22I,uBAC1D32I,KAAK22I,sBAAsB/W,UAAU5/H,KAAKpC,cAAc2G,SAE5D,IAAK,MAAO,CAAEk0B,KAAWz4B,KAAKgmE,QAC1BvtC,EAAO1hC,SAEX,IAAK,MAAMwe,KAAOvV,KAAKgmE,QAAQnyD,OAC3B7T,KAAKgmE,QAAQqpB,OAAO95E,GAExBvV,KAAKu2I,eAAiBv2I,KAAKy2I,SAC3Bz2I,KAAK2iI,QAAQvyC,cAAcqxC,GAAU0X,iBAAkB,CAAE3gJ,UAAWwH,MArBpE,CAsBJ,CACAy7H,mBAAAA,GACIz7H,KAAKw1H,cAAcmT,WAAa,GAChC,MAAMyQ,EAAcp5I,KAAKw1H,cAAcyT,cAAcjpI,KAAKkQ,OAAO64B,KAAKjuC,MAAOkF,KAAKy5H,OAAOD,WAAYx5H,KAAKy2I,UAE1G,OADAz2I,KAAKw1H,cAAc6T,SAASrpI,KAAK24I,eAC7B34I,KAAKq5I,sBAAwBD,IAGjCp5I,KAAKq5I,oBAAsBD,GACpB,EACX,EC1cG,MAAME,GACTj3I,WAAAA,GACIrC,KAAKu5I,WAAa,IAAIvqD,GAC1B,CACAz1F,gBAAAA,CAAiBuC,EAAM1C,GACnB4G,KAAKxG,oBAAoBsC,EAAM1C,GAC/B,IAAIuI,EAAM3B,KAAKu5I,WAAWv6H,IAAIljB,GACzB6F,IACDA,EAAM,GACN3B,KAAKu5I,WAAW73D,IAAI5lF,EAAM6F,IAE9BA,EAAIrB,KAAKlH,EACb,CACAg3F,aAAAA,CAAct0F,EAAMuX,GAChB,MAAMpa,EAAY+G,KAAKu5I,WAAWv6H,IAAIljB,GACtC7C,GAAWQ,SAAQP,GAAWA,EAAQma,IAC1C,CACAmmI,gBAAAA,CAAiB19I,GACb,QAASkE,KAAKu5I,WAAWv6H,IAAIljB,EACjC,CACA29I,uBAAAA,CAAwB39I,GACfA,EAIDkE,KAAKu5I,WAAWlqD,OAAOvzF,GAHvBkE,KAAKu5I,WAAa,IAAIvqD,GAK9B,CACAx1F,mBAAAA,CAAoBsC,EAAM1C,GACtB,MAAMuI,EAAM3B,KAAKu5I,WAAWv6H,IAAIljB,GAChC,IAAK6F,EACD,OAEJ,MAAMtJ,EAASsJ,EAAItJ,OAAQyuH,EAAMnlH,EAAIuM,QAAQ9U,GAC7C,GAAI0tH,EAD+D,EAE/D,OAEgB,IAChBzuH,EACA2H,KAAKu5I,WAAWlqD,OAAOvzF,GAGvB6F,EAAI6R,OAAOszG,EALK,EAOxB,ECtCJ0D,eAAekvB,GAAwBlhJ,EAAWc,EAAKqgJ,GAA6B,IAAfvX,EAAKhqI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,IAAAA,UAAA,GAClEuxH,EAAMrwH,EAAI0lB,IAAIxmB,GAKlB,OAJKmxH,IAAOyY,IACRzY,QAAYlpB,QAAQm5C,IAAI,IAAID,EAAapvH,UAAUjxB,KAAIsN,GAAKA,EAAEpO,MAC9Dc,EAAIooF,IAAIlpF,EAAWmxH,IAEhBA,CACX,CAaA,MAAMkwB,GAAgB,OAAQC,GAAiB,QAASC,GAAY,SAwC7D,MAAMC,GACT33I,WAAAA,GACIrC,KAAKi6I,SAAW,IAAIjrD,IACpBhvF,KAAKk6I,UAAY,GACjBl6I,KAAKm6I,iBAAmB,IAAIb,GAC5Bt5I,KAAKo6I,cAAe,EACpBp6I,KAAKgmE,QAAU,GACfhmE,KAAKq6I,cAAgB,CACjBxX,YAAa,IAAI7zC,IACjBghD,OAAQ,IAAIhhD,IACZgsC,SAAU,IAAIhsC,KAElBhvF,KAAK6iI,YAAc,IAAI7zC,IACvBhvF,KAAKgwI,OAAS,IAAIhhD,IAClBhvF,KAAKg7H,SAAW,IAAIhsC,IACpBhvF,KAAKs6I,QAAU,IAAItrD,IACnBhvF,KAAK85H,cAAgB,IAAI9qC,IACzBhvF,KAAKu5H,aAAe,IAAIvqC,IACxBhvF,KAAKo0I,eAAiB,IAAIplD,GAC9B,CACA,WAAIurD,GACA,MAAM5wB,EAAM,CAAC,EACb,IAAK,MAAO9zH,EAAMyC,KAAW0H,KAAKi6I,SAC9BtwB,EAAI9zH,GAAQyC,EAEhB,OAAOqxH,CACX,CACA,SAAI5jF,GACA,OAAO/lC,KAAKk6I,SAChB,CACA,WAAI5gH,GACA,MAAO,OACX,CACAkhH,SAAAA,CAAUliJ,GACN,MAAMid,EAAMjd,EAAOid,KAAOjd,EAAOzC,MAAQ,UACzCmK,KAAKi6I,SAASv4D,IAAInsE,EAAKjd,GACvB0H,KAAKm6I,iBAAiB/pD,cAAcqxC,GAAUgZ,YAAa,CAAE1xI,KAAM,CAAElT,KAAM0f,EAAKjd,WACpF,CACA,eAAMyzB,CAAUwuB,EAAQ++E,GAAwB,IAAhBqC,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GACnCszH,GAA0BnxE,GAAQz+C,IACzBkE,KAAKyvI,gBAAgB3zI,IACtBkE,KAAK85H,cAAcp4C,IAAI5lF,EAAMw9H,EACjC,UAEEt5H,KAAK27H,QAAQA,EACvB,CACApiI,gBAAAA,CAAiBuC,EAAM1C,GACnB4G,KAAKm6I,iBAAiB5gJ,iBAAiBuC,EAAM1C,EACjD,CACA,mBAAMshJ,CAAc7kJ,EAAM8kJ,GAAuC,IAAhBhf,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GACpD4H,KAAKq6I,cAAcxX,YAAYnhD,IAAI7rF,EAAM8kJ,SACnC36I,KAAK27H,QAAQA,EACvB,CACA,cAAMif,CAAS/kJ,EAAMglJ,GAAkC,IAAhBlf,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GAC1C4H,KAAKq6I,cAAcrK,OAAOtuD,IAAI7rF,EAAMglJ,SAC9B76I,KAAK27H,QAAQA,EACvB,CACA,wBAAMmf,CAAmBjlJ,EAAMklJ,GAAoC,IAAhBpf,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GACtD4H,KAAKq6I,cAAcrf,SAASt5C,IAAI7rF,EAAMklJ,SAChC/6I,KAAK27H,QAAQA,EACvB,CACA,sBAAMqf,CAAiBnlJ,EAAM2vI,GAA2B,IAAhB7J,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GACtC4H,KAAKivI,iBAAiBp5I,IACvBmK,KAAKo0I,eAAe1yD,IAAI7rF,EAAM2vI,SAE5BxlI,KAAK27H,QAAQA,EACvB,CACA,eAAMsf,CAAUxiH,GAAwB,IAAhBkjG,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GACtB4H,KAAKk7I,UAAUziH,EAAO1tB,KACvB/K,KAAKgmE,QAAQ1lE,KAAKm4B,SAEhBz4B,KAAK27H,QAAQA,EACvB,CACA,eAAMwf,CAAU/S,EAAQ7iE,GAA2C,IAAhBo2D,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,KAAjBA,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,IAAAA,UAAA,KACpB4H,KAAKqoI,UAAUD,IAC5BpoI,KAAKs6I,QAAQ54D,IAAI0mD,EAAQ7iE,SAEvBvlE,KAAK27H,QAAQA,EACvB,CACA,cAAMhtG,CAAS2qG,GAAwB,IAAhBqC,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GAC1B,IAAK,MAAMgjJ,KAAa9hB,EAAO+hB,WACvBr7I,KAAK2vI,eAAeyL,IAGxBp7I,KAAKu5H,aAAa73C,IAAI05D,EAAW9hB,SAE/Bt5H,KAAK27H,QAAQA,EACvB,CACAgc,YAAAA,CAAan/I,GACTwH,KAAKg7H,SAAS3rC,OAAO72F,GACrBwH,KAAKgwI,OAAO3gD,OAAO72F,GACnBwH,KAAK6iI,YAAYxzC,OAAO72F,EAC5B,CACA43F,aAAAA,CAAct0F,EAAMuX,GAChBrT,KAAKm6I,iBAAiB/pD,cAAct0F,EAAMuX,EAC9C,CACAioI,GAAAA,GACI,OAAOt7I,KAAK+lC,KAChB,CACAw1G,OAAAA,CAAQ//H,GACJ,OAAOxb,KAAKm/D,KAAK3jD,EACrB,CACA,yBAAMg9H,CAAoBhgJ,GACtB,MAAMmxH,EAAM,IAAI36B,IAChB,IAAK,MAAMv2D,KAAUz4B,KAAKgmE,QAClBvtC,EAAO+iH,YAAYhjJ,EAAUg9H,gBAC7B7L,EAAIjoC,IAAIjpD,EAAO1tB,SAAU0tB,EAAOyiH,UAAU1iJ,IAGlD,OAAOmxH,CACX,CACA8lB,eAAAA,CAAgB3zI,GACZ,OAAOkE,KAAK85H,cAAc96G,IAAIljB,EAClC,CACA,oBAAMkuI,CAAexxI,GAA0B,IAAf4pI,EAAKhqI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,IAAAA,UAAA,GACjC,OAAOshJ,GAAwBlhJ,EAAWwH,KAAK6iI,YAAa7iI,KAAKq6I,cAAcxX,YAAaT,EAChG,CACA,eAAM8R,CAAU17I,GAA0B,IAAf4pI,EAAKhqI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,IAAAA,UAAA,GAC5B,OAAOshJ,GAAwBlhJ,EAAWwH,KAAKgwI,OAAQhwI,KAAKq6I,cAAcrK,OAAQ5N,EACtF,CACA6M,gBAAAA,CAAiBnzI,GACb,OAAOkE,KAAKo0I,eAAep1H,IAAIljB,EACnC,CACAo/I,SAAAA,CAAUziH,GACN,OAAOz4B,KAAKgmE,QAAQrqE,MAAKiL,GAAKA,EAAEmE,KAAO0tB,GAC3C,CACA4vG,SAAAA,CAAUD,GACN,OAAOpoI,KAAKs6I,QAAQt7H,IAAIopH,EAC5B,CACAuH,cAAAA,CAAe7zI,GACX,OAAOkE,KAAKu5H,aAAav6G,IAAIljB,EACjC,CACAu8I,mBAAAA,GACI,OAAOr4I,KAAK85H,cAAcjmH,MAC9B,CACAykI,kBAAAA,GACI,OAAOt4I,KAAKu5H,aAAa1lH,MAC7B,CACA,iBAAMsgI,CAAY37I,GAA0B,IAAf4pI,EAAKhqI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,IAAAA,UAAA,GAC9B,OAAOshJ,GAAwBlhJ,EAAWwH,KAAKg7H,SAAUh7H,KAAKq6I,cAAcrf,SAAUoH,EAC1F,CACAtnH,IAAAA,GACQ9a,KAAKo6I,eAGTp6I,KAAKo6I,cAAe,EACxB,CACAj7E,IAAAA,CAAK3jD,GACD,MAAM,MAAEuqB,GAAU/lC,KAAMm/D,EAAOp5B,EAAMvqB,GACrC,GAAK2jD,IAAQA,EAAKhP,UAKlB,OAAOgP,EALP,CACI,MAAM24E,EAAc,EACpB/xG,EAAMvyB,OAAOgI,EAAOs8H,EAExB,CAEJ,CACA,UAAMzpI,CAAK2I,GACP,MAA4BjM,EAAKiM,EAAOjM,IAAMiM,EAAOzS,SAASwG,IAAM,cAAc9O,KAAKkH,MAAlE,IAAwEkkH,QAA+B,MAAE7rG,EAAK,IAAElS,GAAQ0N,EAAQuuD,EAAUj8D,QAjNvKkhH,eAA8BzhH,GAC1B,MAAMO,EAAMokH,GAAyB3kH,EAAKO,IAAKP,EAAKyS,OACpD,IAAKlS,EACD,OAAOP,EAAKwqG,SAEhB,MAAMplG,QAAiB44D,MAAMz9D,GAC7B,OAAI6E,EAAS+pG,SACK/pG,EAASstI,QAE3BhyB,IAAYz6G,MAAM,GAAGk2G,KAAe/2G,EAASU,uCACtC9F,EAAKwqG,SAChB,CAsMmLmoC,CAAe,CAAEnoC,SAAUv8F,EAAOuuD,QAASj8D,MAAKkS,UAAWxE,EAAOuuD,QACvOo2E,EAAiBjuB,GAAyBnoD,EAAS/pD,IAAQ,MAAEuqB,GAAU/lC,KAAM47I,EAAW71G,EAAM8xG,WAAUxxI,GAAKA,EAAE0E,GAAGykD,cAAgBzkD,IAAmB8wI,EAAU,IAAIvG,GAAUt1I,KAAM+K,EAAI4wI,GAC7L,GAAIC,GADoJ,EAC9H,CACtB,MAAME,EAAM97I,KAAKm/D,KAAKy8E,GAA8B9D,EAAcgE,EAA3B,EAAU,EAC7CA,IAAQA,EAAI3rF,WACZ2rF,EAAI9jJ,SAAQ,GAEhB+tC,EAAMvyB,OAAOooI,EAAU9D,EAAa+D,EACxC,MAEI91G,EAAMzlC,KAAKu7I,GAEf,MAAME,EApLOC,EAACjxI,EAAIovC,KACtB,IAAI4hG,EAAe5hG,GAAU99C,SAASu5C,eAAe7qC,GACrD,OAAIgxI,IAGJA,EAAe1/I,SAASxC,cAAc,OACtCkiJ,EAAahxI,GAAKA,EAClBgxI,EAAapoC,QAAQmR,GAAsB+0B,GAC3Cx9I,SAAS8gB,KAAKrK,OAAOipI,GACdA,EAAY,EA2KMC,CAAgBjxI,EAAIiM,EAAOzS,SAAU25H,EAjNsC6d,KACpG,IAAI7d,EACJ,GAAI6d,aAAwBE,mBAAqBF,EAAahzC,QAAQ1kE,gBAAkB01G,GACpF7b,EAAW6d,EACN7d,EAASvqB,QAAQmR,KAClBoZ,EAASvqB,QAAQmR,GAAsBg1B,QAG1C,CACD,MAAMoC,EAAmBH,EAAa3+H,qBAAqB28H,IACvDmC,EAAiB7jJ,QAEjB6lI,EAAWge,EADQ,GAEnBhe,EAASvqB,QAAQmR,GAAsBg1B,KAGvC5b,EAAW7hI,SAASxC,cAAckgJ,IAClC7b,EAASvqB,QAAQmR,GAAsB+0B,GACvCkC,EAAahpI,YAAYmrH,GAEjC,CACA,MAAMie,EAAc,OAOpB,OANKje,EAAStpI,MAAMkG,QAChBojI,EAAStpI,MAAMkG,MAAQqhJ,GAEtBje,EAAStpI,MAAMyF,SAChB6jI,EAAStpI,MAAMyF,OAAS8hJ,GAErBje,CAAQ,EAqL0Dke,CAAuBL,GAG5F,OAFAF,EAAQ3rI,OAAO+qH,WAAWiD,SACpB2d,EAAQznE,QACPynE,CACX,CACAlU,WAAAA,CAAYpiE,EAASuiE,GACjB9nI,KAAKgmE,QAAQvsE,SAAQg/B,GAAUA,EAAOkvG,cAAcpiE,EAASuiE,IACjE,CACAF,oBAAAA,CAAqBpvI,EAAW+sE,GAA2B,QAAA0lD,EAAA7yH,UAAAC,OAAfyvI,EAAa,IAAAlvI,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAb4c,EAAa5c,EAAA,GAAA9yH,UAAA8yH,GACrD,MAAM8P,EAAWh7H,KAAKg7H,SAASh8G,IAAIxmB,GAC9BwiI,GAGLA,EAASvhI,SAAQg2G,GAAWA,EAAQk4B,cAAcpiE,KAAYuiE,IAClE,CACA,aAAMnM,MAAevjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,WAIXqoG,QAAQm5C,IAAI55I,KAAK+lC,MAAMzsC,KAAIsN,GAAKA,EAAE+0H,YAC5C,CACAniI,mBAAAA,CAAoBsC,EAAM1C,GACtB4G,KAAKm6I,iBAAiB3gJ,oBAAoBsC,EAAM1C,EACpD,CACAijJ,iBAAAA,CAAkB9tI,GACd,MAAM,MAAEw3B,GAAU/lC,KAClB,IAAK+lC,EAAM1tC,OACP,MAAM,IAAI2b,MAAM,GAAGkxG,kEAEvBn/E,EAAMtsC,SAAQ0lE,GAAQA,EAAK43E,gBAAgBxoI,IAC/C,ECvQJ,IAAI+tI,GCDAjtB,GCDOktB,GCAAC,GCAAC,IJGX,SAAWH,GACPA,EAAWA,EAAc,EAAI,GAAK,IAClCA,EAAWA,EAAc,EAAI,GAAK,IAClCA,EAAWA,EAAc,EAAI,GAAK,IAClCA,EAAWA,EAAc,EAAI,GAAK,GACrC,CALD,CAKGA,KAAeA,GAAa,CAAC,IACzB,MAAMI,GACTr6I,WAAAA,GACIrC,KAAKuV,IAAM,MACXvV,KAAK6vH,aAAe,KACxB,CACAS,WAAAA,CAAYtpH,GACR,MAAgCyrH,EAAbzrH,EAAM5P,MAA6Bu5H,KAAO3pH,EAAM5P,MACnE,QAAmBa,IAAfw6H,EAAStsH,QAAkClO,IAAfw6H,EAASrsH,QAAkCnO,IAAfw6H,EAAS7+F,EACjE,OAAOs1C,GAASupD,EAExB,CACAtC,gBAAAA,CAAiBnpH,GACb,MAAgCyrH,EAAbzrH,EAAM5P,MAA6Bu5H,KAAO3pH,EAAM5P,MACnE,QAAmBa,IAAfw6H,EAAStsH,QAAkClO,IAAfw6H,EAAS7+F,EACrC,OAAOs1C,GAAS,CACZ/iE,EAAG4hH,EAAc0K,EAAStsH,GAC1BytB,EAAGm0F,EAAc0K,EAAS7+F,GAC1BxtB,EAAG2hH,EAAc0K,EAASrsH,IAGtC,CACA0pH,WAAAA,CAAYrnC,GACR,IAAKA,EAAMmnC,WAAW,OAClB,OAEJ,MAAoF5qD,EAAtE,qEAAqFgrD,KAAKvnC,GACxG,OAAOzjB,E7E6GR,SAAoB23E,GACvB,MAAMC,EAAY1zE,GAASyzE,GAC3B,MAAO,CACH/vI,EAAG+vI,EAAK/vI,EACRpG,EAAGo2I,EAAUp2I,EACbD,EAAGq2I,EAAUr2I,EACbD,EAAGs2I,EAAUt2I,EAErB,C6EpHcu2I,CAAW,CACTjwI,EAAGo4D,EAAO3sE,OAH0G,EAGrFswH,EAAW3jD,EAAOs3E,GAAW1vI,IAH0E,EAItIzG,EAAGmR,SAAS0tD,EAAOs3E,GAAWn2I,GAJmH,IAKjJytB,EAAGtc,SAAS0tD,EAAOs3E,GAAW1oH,GALmH,IAMjJxtB,EAAGkR,SAAS0tD,EAAOs3E,GAAWl2I,GANmH,WAQnJnO,CACV,GCzCJ,SAAWo3H,GACPA,EAAWA,EAAc,EAAI,GAAK,IAClCA,EAAWA,EAAc,EAAI,GAAK,IAClCA,EAAWA,EAAc,EAAI,GAAK,IAClCA,EAAWA,EAAc,EAAI,GAAK,GACrC,CALD,CAKGA,KAAeA,GAAa,CAAC,IACzB,MAAMytB,GACTz6I,WAAAA,GACIrC,KAAKuV,IAAM,MACXvV,KAAK6vH,aAAe,KACxB,CACAS,WAAAA,CAAYtpH,GACR,MAAgC+1I,EAAb/1I,EAAM5P,MAA6Bo5H,KAAOxpH,EAAM5P,MACnE,QAAmBa,IAAf8kJ,EAASz2I,EACT,OAAOy2I,CAEf,CACA5sB,gBAAAA,CAAiBnpH,GACb,MAAgC+1I,EAAb/1I,EAAM5P,MAA6Bo5H,KAAOxpH,EAAM5P,MACnE,QAAmBa,IAAf8kJ,EAASz2I,EACT,MAAO,CACHA,EAAGyhH,EAAcg1B,EAASz2I,GAC1BC,EAAGwhH,EAAcg1B,EAASx2I,GAC1BC,EAAGuhH,EAAcg1B,EAASv2I,GAGtC,CACAspH,WAAAA,CAAYrnC,GACR,IAAKA,EAAMmnC,WAAW5vH,KAAK6vH,cACvB,OAEJ,MAAkF7qD,EAApE,mEAAmFgrD,KAAKvnC,GACtG,OAAOzjB,EACD,CACEp4D,EAAGo4D,EAAO3sE,OAHoH,EAG/FswH,EAAW3jD,EAAOqqD,GAAWziH,IAHoF,EAIhJpG,EAAG8Q,SAAS0tD,EAAOqqD,GAAW7oH,GAJgF,IAK9GD,EAAG+Q,SAAS0tD,EAAOqqD,GAAW9oH,GALgF,IAM9GD,EAAGgR,SAAS0tD,EAAOqqD,GAAW/oH,GANgF,UAQhHrO,CACV,EIzCG,MAAM+kJ,GACT36I,WAAAA,CAAY7J,GACRwH,KAAKlE,KAAO0nI,GAAeyG,SAC3BjqI,KAAKxH,UAAYA,CACrB,ECJG,MAAMykJ,GACT56I,WAAAA,CAAY7J,GACRwH,KAAKlE,KAAO0nI,GAAehN,UAC3Bx2H,KAAKxH,UAAYA,CACrB,GJJJ,SAAW+jJ,GACPA,EAA2B,UAAI,YAC/BA,EAAkC,iBAAI,oBACtCA,EAAwB,OAAI,QAC/B,CAJD,CAIGA,KAAoBA,GAAkB,CAAC,ICJ1C,SAAWC,GACPA,EAAqB,OAAI,SACzBA,EAAqB,OAAI,SACzBA,EAAqB,OAAI,QAC5B,CAJD,CAIGA,KAAiBA,GAAe,CAAC,ICJpC,SAAWC,GACPA,EAAuB,WAAI,eAC3BA,EAAuB,WAAI,eAC3BA,EAAwB,YAAI,gBAC5BA,EAAyB,aAAI,iBAC7BA,EAAuB,WAAI,eAC3BA,EAAwB,YAAI,gBAC5BA,EAAwB,YAAI,gBAC5BA,EAAuB,WAAI,eAC3BA,EAAuB,WAAI,eAC3BA,EAAwB,YAAI,gBAC5BA,EAAwB,YAAI,gBAC5BA,EAAyB,aAAI,iBAC7BA,EAA0B,cAAI,kBAC9BA,EAAwB,YAAI,gBAC5BA,EAAyB,aAAI,iBAC7BA,EAAyB,aAAI,iBAC7BA,EAAwB,YAAI,gBAC5BA,EAAwB,YAAI,gBAC5BA,EAA0B,cAAI,mBAC9BA,EAA0B,cAAI,mBAC9BA,EAA2B,eAAI,oBAC/BA,EAA4B,gBAAI,qBAChCA,EAA0B,cAAI,mBAC9BA,EAA2B,eAAI,oBAC/BA,EAA2B,eAAI,oBAC/BA,EAA0B,cAAI,mBAC9BA,EAA0B,cAAI,kBACjC,CA5BD,CA4BGA,KAAeA,GAAa,CAAC,IG3BhC,MAAMS,GCEC,WACH,MAAMC,EAAkB,IAAIL,GAAmBM,EAAkB,IAAIV,GACrEjtB,GAAgB0tB,GAChB1tB,GAAgB2tB,GAChB,MAAM5yG,EAAS,IAAIwvG,GAEnB,OADAxvG,EAAO1vB,OACA0vB,CACX,CDToB1vB,GACfovG,OACD5vH,OAAO4iJ,YAAcA,IEDzB,MAAMz2I,GAAKG,IACT,MAAM7H,EAAI6H,EAAEmE,IAAM,cAClB,OAAO8oB,EAAAA,EAAAA,YAAE,KACP,IAAInqB,EACJ,OAAOtD,GAAEiI,KAAK,CAAEtD,GAAIhM,EAAGuK,IAAK1C,EAAE0C,IAAKi8D,QAAS3+D,EAAE2+D,UAAWs7B,MAAMjtE,IAC7D,IAAIhnB,EACJlD,EAAIkqB,EAA8B,OAA1BhnB,EAAIhG,EAAEy2I,kBAA4BzwI,EAAEtN,KAAKsH,EAAGgtB,EAAE,IACpD,KACG,MAALlqB,GAAaA,EAAE1R,SAAS,CACzB,GACA,CAAC+G,EAAG6H,EAAGA,EAAE0C,IAAK1C,EAAE2+D,WAA2Bz+D,EAAAA,EAAAA,KAAE,MAAO,CAAEiE,GAAIhM,EAAGgxD,UAAWnpD,EAAEmpD,WAAY,ECT3Fy6D,eAAe3iG,GAAEjhB,SACTA,EAAE7H,GACV,CCLA,MAAmCu+I,GAAW,EA+BvC,SAAS7mB,GAAKpJ,EAAUqe,EAAayJ,EAAWrQ,EAAUoQ,EAAW72G,IAsDrE,SAAmBgvF,EAAUhvF,GAChC,MAAMgwG,EAAmBhhB,EAAS9nD,QAASwpE,EAAcV,EAAiB5X,KAAK3tH,KAC/E,IADmGimI,EAAYvjB,OAE3G,OAEJ,GAAI6B,EAASygB,cAAgBzgB,EAAS2hB,UAElC,YADA3hB,EAASygB,cAAgBzvG,EAAMjnC,OAGnC,MAAM0R,EAAOukH,EAASigB,eAAeiQ,SAASlwB,EAAUhvF,GACpDv1B,GACAukH,EAAS3gD,SAASs5C,MAAMl9G,GAExBimI,EAAY1mE,QACZglD,EAAS3gD,SAAS9xE,EAAIytE,EAAMglD,EAAS3gD,SAAS9xE,GAAI0iJ,GAAUA,IAC5DjwB,EAAS3gD,SAAS3xE,EAAIstE,EAAMglD,EAAS3gD,SAAS3xE,GAAIuiJ,GAAUA,KAEhEjwB,EAASygB,cAAgBzgB,EAAS2hB,SACtC,CAvEIwO,CAAUnwB,EAAUhvF,GACpB,MAAMo/G,EAAiBpwB,EAAS4Y,QAASyX,EAAgBD,GAAgBjyB,QAAUiyB,EAAenY,SAAWgY,GAAWA,GACpHpI,GAAaC,IACb9nB,EAAS3gD,SAAS9xE,GAAMs6I,EAAY72G,EAAM4rF,QAnCiB,GAmCYkrB,IAEvEsI,GAAgBjyB,QAAU2pB,IAC1B9nB,EAAS3gD,SAAS3xE,GACb2iJ,GAAiBD,EAAepY,aAAehnG,EAAM4rF,SAvCC,GAuC6BkrB,IAE5F,MAAMhnB,EAAQd,EAASgiB,UACvBhiB,EAAS3gD,SAAS05C,OAAO+H,GACzB,MAAMzhD,EAAW2gD,EAAS3gD,SAASphD,KAAK6pH,GACpCsI,GAAgBjyB,QAChBsZ,EA7CwB,KA8CrB2Y,EAAenY,SAAW54D,EAAS3xE,GA9Cd,GA8CkC2xE,EAAS3xE,GAAK+pI,GACnE2Y,EAAenY,SAAW54D,EAAS3xE,GA/ChB,GA+CoC2xE,EAAS3xE,IAAM+pI,KAC3Ep4D,EAAS3xE,EAAI2iJ,EAAgB5Y,EACzBqQ,IACA9nB,EAAS3gD,SAAS3xE,EAAI2xE,EAAS3xE,EAAIo6I,IAG3C,MAAM/c,EAAgB/K,EAAS9nD,QAAQ8hB,OAAQs2D,GAAmBL,GAAWjwB,EAASgL,eAAiBD,EAAcgP,aACrH16D,EAAS05C,OAAOu3B,GAChB,MAAM,SAAE/gJ,GAAaywH,EACrBzwH,EAASopH,MAAMt5C,GACXg/D,EAAYrF,UACZzpI,EAAShC,GAAKqB,KAAK2tB,IAAIhtB,EAAShC,EAAIqB,KAAKwuB,IAAI7tB,EAAS7B,IACtD6B,EAAS7B,GAAKkB,KAAKwuB,IAAI7tB,EAAS7B,EAAIkB,KAAK2tB,IAAIhtB,EAAShC,IAE9D,CC3DO,MAAMgjJ,GACT9iI,IAAAA,CAAKuyG,GACD,MAAkCowB,EAAlBpwB,EAAS9nD,QAAkCkxD,KAAKwP,QAChE5Y,EAAS4Y,QAAU,CACfza,OAAQiyB,EAAejyB,OACvB6Z,aAActd,EAAc01B,EAAepY,cAC3CC,QAASmY,EAAenY,SDmG7B,SAAkBjY,GACrB,MAAM70H,EAAY60H,EAAS70H,UAAuCqlJ,EAAlBxwB,EAAS9nD,QAA+BkxD,KAAK0P,KAC7F,IAAK0X,EAAYryB,OACb,OAEJ,MAAMsyB,EAAUD,EAAYjhJ,UAAY,CAAEhC,EAAG,GAAIG,EAAG,IAAyBgjJ,EAAa,CACtFnjJ,EADmE,IAChEkjJ,EAAQljJ,EAAiBpC,EAAU0X,OAAO64B,KAAKjuC,MAClDC,EAFmE,IAEhE+iJ,EAAQ/iJ,EAAiBvC,EAAU0X,OAAO64B,KAAK1uC,QACrBgtC,EAAWihF,EAAnC+E,EAASlB,cAA2C4xB,GAAaC,EAAmBj2B,EAAc81B,EAAYxY,cACvHhY,EAASoM,OAAOukB,iBAAmBA,EAAmBxlJ,EAAUihI,OAAOD,WAEvEnM,EAAS8Y,KAAO,CACZljG,OAAQ86G,EACRvmJ,UAAW61H,EAAS3gD,SAAS9xE,GAHb,EAGgC2hJ,GAAgB0B,UAAY1B,GAAgB2B,iBAC5F1sH,MAAO67F,EAAS3gD,SAASl7C,MACzB0R,OAAQmE,EACRg+F,aAAchY,EAASoM,OAAOukB,iBAEtC,CCnHQG,CAAS9wB,EACb,CACAyc,SAAAA,CAAUzc,GACN,OAAQA,EAASl9D,WAAak9D,EAAS9nD,QAAQkxD,KAAKjL,MACxD,CACAiL,IAAAA,CAAKpJ,EAAUhvF,GACX,MAAM+/G,EAAkB/wB,EAAS9nD,QAASmmE,EAAc0S,EAAgB3nB,KACxE,IAAKiV,EAAYlgB,OACb,OAEJ,MAAMhzH,EAAY60H,EAAS70H,UAAWq1H,EAAUr1H,EAAUihI,OAAOD,WACjEnM,EAASoM,OAAO0b,YAAcptB,EAAc2jB,EAAYx0I,OAAS22H,EACjER,EAASoM,OAAOyb,YAAcntB,EAAcsF,EAAS9nD,QAAQkxD,KAAKuP,OAASnY,EAC3E,MAAMwwB,EDiFP,SAAiChxB,GACpC,OAAOA,EAASggB,KAAKD,QAAU/f,EAASggB,KAAKpjB,OAASqzB,EAC1D,CCnF2BgB,CAAwBjxB,GAAWkxB,EAAYlxB,EAASoM,OAAO0b,UAAY38I,EAAUihI,OAAOzG,aAAckiB,EAAY7nB,EAASoM,OAAOyb,UAAWsJ,EAAU32B,EAAYu2B,EAAgBr1G,KAAK3xC,OAASy2H,EAA+IsnB,EAAaoJ,GAAtI7S,EAAY3iG,KAAOskF,EAASjB,YAAcoyB,EAtBtP,GAsB2WH,GAA1EhgH,EAAM4rF,QAtB/Q,GAA/C,EAsB0a6a,EAAWzX,EAASoM,OAAOqL,UAAYtsI,EAAUihI,OAAOqL,SACze4G,EAAYvF,KAAK3a,ODsCtB,SAAc6B,EAAU8nB,GAC3B,MAAM38I,EAAY60H,EAAS70H,UAC3B,IAAK60H,EAAS8Y,KACV,OAEJ,MAAMsY,EAAa,CACf7jJ,EAAGyyH,EAAS8Y,KAAK3uI,YAAc+kJ,GAAgB0B,UAAYhiJ,KAAKwuB,IAAMxuB,KAAK2tB,IAC3E7uB,EAAGsyH,EAAS8Y,KAAK3uI,YAAc+kJ,GAAgB0B,UAAYhiJ,KAAK2tB,IAAM3tB,KAAKwuB,KAE/E4iG,EAASzwH,SAAShC,EAAIyyH,EAAS8Y,KAAKljG,OAAOroC,EAAIyyH,EAAS8Y,KAAKjjG,OAASu7G,EAAW7jJ,EAAEyyH,EAAS8Y,KAAK30G,OACjG67F,EAASzwH,SAAS7B,EAAIsyH,EAAS8Y,KAAKljG,OAAOloC,EAAIsyH,EAAS8Y,KAAKjjG,OAASu7G,EAAW1jJ,EAAEsyH,EAAS8Y,KAAK30G,OACjG67F,EAAS8Y,KAAKjjG,QAAUmqF,EAAS8Y,KAAKd,aACtC,MAAMqZ,EAAgBziJ,KAAKoH,IAAI7K,EAAU0X,OAAO64B,KAAKjuC,MAAOtC,EAAU0X,OAAO64B,KAAK1uC,QAASskJ,EA1ElF,GA0EgGD,EACrGrxB,EAAS8Y,KAAKjjG,OAASy7G,GACvBtxB,EAAS8Y,KAAKjjG,OAASy7G,EACvBtxB,EAAS8Y,KAAKd,eAAiBiY,IAE1BjwB,EAAS8Y,KAAKjjG,OA/E4D,IAgF/EmqF,EAAS8Y,KAAKjjG,OAhFiE,EAiF/EmqF,EAAS8Y,KAAKd,eAAiBiY,IAEnCjwB,EAAS8Y,KAAK30G,OAnFqF,IAmF5E2jH,GAA0BmI,GAAWjwB,EAAS8Y,KAAKjjG,OAASw7G,EACvF,CC3DYvY,CAAK9Y,EAAU8nB,GAGf1e,GAAKpJ,EAAUqe,EAAayJ,EAAWrQ,EAAUoQ,EAAW72G,GD3BjE,SAAuBgvF,GAC1B,MAAMof,EAAkBpf,EAASof,iBAAiB,GAAErkB,EAAE,GAAEC,GAAOJ,EAAawkB,EAAiBpf,EAASzwH,UAAWgiJ,EAAU3iJ,KAAK2H,IAAIwkH,GAAKy2B,EAAU5iJ,KAAK2H,IAAIykH,IAAK,YAAE4lB,GAAgB5gB,EAASoM,OAAQqlB,EAAY7Q,EAAYzhB,WAAYuyB,EAAY9Q,EAAYxhB,SAChQ,IAAKqyB,IAAcC,EACf,OAGJ,IADsBD,GAAaF,GAAWE,GAAqCC,GAAaF,GAAWE,KACpE1xB,EAAS2gB,UAC5C3gB,EAAS2gB,YAAe8Q,GAAaF,EAAUE,KAAiBC,GAAaF,EAAUE,EACnFD,IACAzxB,EAAS3gD,SAAS9xE,EAVjB,GAUqByyH,EAAS3gD,SAAS3xE,EAAWsyH,EAAS3gD,SAAS9xE,GAErEmkJ,IACA1xB,EAAS3gD,SAAS3xE,EAbjB,GAaqBsyH,EAAS3gD,SAAS9xE,EAAWyyH,EAAS3gD,SAAS3xE,QAGxE,KAAM+jJ,GAAaF,EAAUE,MAAgBC,GAAaF,EAAUE,IAAc1xB,EAAS2gB,UAC5F3gB,EAAS2gB,WAAY,OAEpB,GAAI3gB,EAAS2gB,UAAW,CACzB,MAAMtxI,EAAM2wH,EAASzwH,SAAUuvB,EAAMkhG,EAAS3gD,SAC1CoyE,IACEpiJ,EAAI9B,EAAI6xI,EAAgB7xI,GAAKuxB,EAAIvxB,EAtBf,GAsBoC8B,EAAI9B,EAAI6xI,EAAgB7xI,GAAKuxB,EAAIvxB,EAtBrE,KAuBpBuxB,EAAIvxB,IAAMysH,KAEV03B,IACEriJ,EAAI3B,EAAI0xI,EAAgB1xI,GAAKoxB,EAAIpxB,EA1Bf,GA0BoC2B,EAAI3B,EAAI0xI,EAAgB1xI,GAAKoxB,EAAIpxB,EA1BrE,KA2BpBoxB,EAAIpxB,IAAMssH,IAElB,CACJ,CCAQ23B,CAAc3xB,EAClB,EChCJ,MAAkBpG,GAAH,EAAchrH,KAAKgI,GAA2B0L,GAAc,EAAdA,GAAoB,ECG1E,MAAMsvI,GACT58I,WAAAA,GACIrC,KAAKq7I,WAAa,CAAC,SACvB,CACAvkB,IAAAA,CAAK/tH,IDNF,SAAoBA,GACvB,MAAM,QAAEguD,EAAO,SAAEs2D,EAAQ,OAAEnqF,GAAWn6B,EACjCskH,EAAS6xB,cACV7xB,EAAS6xB,YAAc,CAAE37I,IAJyB,EAIVF,IAAK4jH,KAEjD,MAAMi4B,EAAc7xB,EAAS6xB,YAC7BnoF,EAAQooF,IAAIxvI,GAAUA,GAAUuzB,EAAQg8G,EAAY37I,IAAK27I,EAAY77I,KAAK,EAC9E,CCAQ+7I,CAAWr2I,EACf,CACA+mI,aAAAA,GACI,OATM,EAUV,CACAG,YAAAA,CAAaz3I,EAAW60H,GACpB,MAAMxpG,EAAYwpG,EAASxpG,UAAW2N,EAAQ3N,GAAW2N,OAAS,CAC9DnuB,IAbiB,IAcjBE,IAdiC,GAgBrC8pH,EAAS6xB,YAAex5B,EAASl0F,GAK3B,CAAEjuB,IAAKglH,EAAS/2F,EAAMjuB,KAAMF,IAAKklH,EAAS/2F,EAAMnuB,MAJhD,CACEE,IAlB6B,EAmB7BF,IAAKklH,EAAS/2F,GAG1B,ECvBG,MAAM6tH,GACTh9I,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,CACrB,CACAsiB,IAAAA,CAAKuyG,GACD,MAAMoF,EAAWlC,GAAgBlD,EAAS9nD,QAAQv+D,MAAOqmH,EAAStiH,GAAIsiH,EAAS9nD,QAAQiiE,kBACnF/U,IACApF,EAASrmH,MAAQ+rH,GAAuBN,EAAUpF,EAAS9nD,QAAQv+D,MAAMoI,UAAWpP,KAAKxH,UAAUihI,OAAOzG,cAElH,CACA8W,SAAAA,CAAUzc,GACN,MAAQlnH,EAAGm5I,EAAYl5I,EAAGm5I,EAAY3rH,EAAG4rH,GAAenyB,EAAS9nD,QAAQv+D,MAAMoI,WAAW,MAAEpI,GAAUqmH,EACtG,OAASA,EAASl9D,YACbk9D,EAAS4K,gBACWhgI,IAAnB+O,GAAOb,EAAE/O,OAAuBkoJ,EAAW9zB,aACrBvzH,IAAnB+O,GAAOZ,EAAEhP,OAAuBmoJ,EAAW/zB,aACxBvzH,IAAnB+O,GAAO4sB,EAAEx8B,OAAuBooJ,EAAWh0B,OACxD,CACArlE,MAAAA,CAAOknE,EAAUhvF,GACbi1F,GAAYjG,EAASrmH,MAAOq3B,EAChC,ECpBG,MAAMohH,GACTp9I,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,CACrB,CACAsiB,IAAAA,CAAKuyG,GACD,MAAMqyB,EAAiBryB,EAAS9nD,QAAQ/sB,QACxC60E,EAAS70E,QAAUo1E,GAAkC8xB,EADM,GAE3D,MAAMC,EAAmBD,EAAetwI,UACpCuwI,EAAiBn0B,SACjB6B,EAAS70E,QAAQk0B,SACZq7C,EAAc43B,EAAiBzoJ,OAASiuH,EAAsBnlH,KAAKxH,UAAUihI,OAAOzG,aACpF2sB,EAAiBvsB,OAClB/F,EAAS70E,QAAQk0B,UAAY26C,KAGzC,CACAyiB,SAAAA,CAAUzc,GAEN,OAASA,EAASl9D,YACbk9D,EAAS4K,YACR5K,EAAS70E,SACX60E,EAAS70E,QAAQgzE,UACf6B,EAAS70E,QAAQ01E,UALV,QAMHb,EAAS70E,QAAQ01E,UANd,OAOAb,EAAS70E,QAAQy1E,OAPjB,IAOmCZ,EAAS70E,QAAQ01E,UAPpD,GAQjB,CACAn+F,KAAAA,CAAMs9F,GACEA,EAAS70E,UACT60E,EAAS70E,QAAQnkC,KAAO,EACxBg5G,EAAS70E,QAAQy1E,MAAQ,EAEjC,CACA9nE,MAAAA,CAAOknE,EAAUhvF,GACRr+B,KAAK8pI,UAAUzc,IAAcA,EAAS70E,SAG3Cs2E,GAAgBzB,EAAUA,EAAS70E,SAAS,EAAM60E,EAAS9nD,QAAQ/sB,QAAQppC,UAAUpX,QAASqmC,EAClG,ECpCG,MAAMuhH,GACTv9I,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,EACjBwH,KAAKijI,MAAQ,CACTK,GAAQ/W,OACR+W,GAAQz3H,MAEhB,CACAs6C,MAAAA,CAAOknE,EAAU71H,EAAW6mC,EAAOisG,GAC/B,IAAKtqI,KAAKijI,MAAMnhD,SAASwoD,GACrB,OAEJ,MAAM9xI,EAAYwH,KAAKxH,UACvB,IAAI0nI,GAAU,EACd,IAAK,MAAO,CAAEznG,KAAWjgC,EAAUwtE,QAI/B,QAH8B/tE,IAA1BwgC,EAAOonH,iBACP3f,EAAUznG,EAAOonH,eAAexyB,EAAUhvF,EAAO7mC,IAEjD0oI,EACA,MAGR,GAAIA,EACA,OAEJ,MAAMxjI,EAAM2wH,EAASlB,cAAellH,EAASomH,EAASpmH,OAAQ8hC,EAAOskF,EAASjB,YAAapkF,EAAS+iF,GAAgBruH,EAAKqsC,GAAO8lF,EAAar2H,EAAU0X,OAAO64B,MCzB/J,SAA0BhgC,GAC7B,GAAKA,EAAKuhI,UAAYhH,GAAQ/W,QAAUxjH,EAAKuhI,UAAYhH,GAAQz3H,OAC5D9C,EAAKvR,YAAcyxH,EAAiBpuH,MAAQkO,EAAKvR,YAAcyxH,EAAiBtlF,MACjF,OAEA56B,EAAKi/B,OAAOrE,MANe,GAMM56B,EAAKvR,YAAcyxH,EAAiBpuH,KACrEkO,EAAKskH,SAASzwH,SAAShC,EAAImO,EAAKggC,KAAOhgC,EAAK9B,OAAOrM,EAE9CmO,EAAKi/B,OAAOntC,KAAOkO,EAAK8lH,WAAW/zH,OAASiO,EAAKvR,YAAcyxH,EAAiBtlF,QACrF56B,EAAKskH,SAASzwH,SAAShC,EAAImO,EAAK8lH,WAAW/zH,MAAQiO,EAAKggC,KAAOhgC,EAAK9B,OAAOrM,GAE/E,MAAM8xE,EAAW3jE,EAAKskH,SAAS3gD,SAAS9xE,EACxC,IAAIgvH,GAAU,EACd,GAAK7gH,EAAKvR,YAAcyxH,EAAiBtlF,OACrC56B,EAAKi/B,OAAOrE,OAAS56B,EAAK8lH,WAAW/zH,OACrC4xE,EAhBY,GAiBX3jE,EAAKvR,YAAcyxH,EAAiBpuH,MAAQkO,EAAKi/B,OAAOntC,MAjB9B,GAiBmD6xE,EAjBlE,EAiB2F,CACvG,MAAMozE,EAAc/3B,EAAch/G,EAAKskH,SAAS9nD,QAAQgnD,OAAOC,WAAWp1H,OAC1E2R,EAAKskH,SAAS3gD,SAAS9xE,IAAMklJ,EAC7Bl2B,GAAU,CACd,CACA,IAAKA,EACD,OAEJ,MAAMm2B,EAASh3I,EAAK9B,OAAOrM,EAAImO,EAAKggC,KAChChgC,EAAKi/B,OAAOrE,OAAS56B,EAAK8lH,WAAW/zH,OAASiO,EAAKvR,YAAcyxH,EAAiBtlF,MAClF56B,EAAKskH,SAASzwH,SAAShC,EAAImO,EAAK8lH,WAAW/zH,MAAQilJ,EAE9Ch3I,EAAKi/B,OAAOntC,MA7BU,GA6BWkO,EAAKvR,YAAcyxH,EAAiBpuH,OAC1EkO,EAAKskH,SAASzwH,SAAShC,EAAImlJ,GAE3Bh3I,EAAKuhI,UAAYhH,GAAQz3H,OACzB9C,EAAKskH,SAASr1H,SAEtB,CDRQgoJ,CAAiB,CAAE3yB,WAAUid,UAAS9yI,YAAWwwC,SAAQ6mF,aAAY5nH,SAAQ8hC,SCS9E,SAAwBhgC,GAC3B,GAAKA,EAAKuhI,UAAYhH,GAAQ/W,QAAUxjH,EAAKuhI,UAAYhH,GAAQz3H,OAC5D9C,EAAKvR,YAAcyxH,EAAiBhhF,QAAUl/B,EAAKvR,YAAcyxH,EAAiB7uH,IACnF,OAEA2O,EAAKi/B,OAAOC,OAzCe,GAyCOl/B,EAAKvR,YAAcyxH,EAAiB7uH,IACtE2O,EAAKskH,SAASzwH,SAAS7B,EAAIgO,EAAKggC,KAAOhgC,EAAK9B,OAAOlM,EAE9CgO,EAAKi/B,OAAO5tC,IAAM2O,EAAK8lH,WAAWx0H,QAAU0O,EAAKvR,YAAcyxH,EAAiBhhF,SACrFl/B,EAAKskH,SAASzwH,SAAS7B,EAAIgO,EAAK8lH,WAAWx0H,OAAS0O,EAAKggC,KAAOhgC,EAAK9B,OAAOlM,GAEhF,MAAM2xE,EAAW3jE,EAAKskH,SAAS3gD,SAAS3xE,EACxC,IAAI6uH,GAAU,EACd,GAAK7gH,EAAKvR,YAAcyxH,EAAiBhhF,QACrCl/B,EAAKi/B,OAAOC,QAAUl/B,EAAK8lH,WAAWx0H,QACtCqyE,EAnDY,GAoDX3jE,EAAKvR,YAAcyxH,EAAiB7uH,KAAO2O,EAAKi/B,OAAO5tC,KApD7B,GAoDiDsyE,EApDhE,EAoDyF,CACrG,MAAMozE,EAAc/3B,EAAch/G,EAAKskH,SAAS9nD,QAAQgnD,OAAOE,SAASr1H,OACxE2R,EAAKskH,SAAS3gD,SAAS3xE,IAAM+kJ,EAC7Bl2B,GAAU,CACd,CACA,IAAKA,EACD,OAEJ,MAAMm2B,EAASh3I,EAAK9B,OAAOlM,EAAIgO,EAAKggC,KAChChgC,EAAKi/B,OAAOC,QAAUl/B,EAAK8lH,WAAWx0H,QAAU0O,EAAKvR,YAAcyxH,EAAiBhhF,OACpFl/B,EAAKskH,SAASzwH,SAAS7B,EAAIgO,EAAK8lH,WAAWx0H,OAAS0lJ,EAE/Ch3I,EAAKi/B,OAAO5tC,KAhEU,GAgEU2O,EAAKvR,YAAcyxH,EAAiB7uH,MACzE2O,EAAKskH,SAASzwH,SAAS7B,EAAIglJ,GAE3Bh3I,EAAKuhI,UAAYhH,GAAQz3H,OACzB9C,EAAKskH,SAASr1H,SAEtB,CD1CQioJ,CAAe,CAAE5yB,WAAUid,UAAS9yI,YAAWwwC,SAAQ6mF,aAAY5nH,SAAQ8hC,QAC/E,EE5BG,MAAMm3G,GACT79I,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,EACjBwH,KAAKijI,MAAQ,CAACK,GAAQtrI,QAC1B,CACAmuD,MAAAA,CAAOknE,EAAU71H,EAAW2oJ,EAAQ7V,GAChC,IAAKtqI,KAAKijI,MAAMnhD,SAASwoD,GACrB,OAEJ,MAAM9xI,EAAYwH,KAAKxH,UACvB,OAAQ60H,EAAS4f,SACb,KAAKxJ,GAAgByK,OACrB,KAAKzK,GAAgBkI,QACjB,GAAI/gB,GAAcyC,EAASzwH,SAAUpE,EAAU0X,OAAO64B,KAAMy9E,EAAO72G,OAAQ09G,EAASjB,YAAa50H,GAC7F,OAEJ,MACJ,KAAKisI,GAAgB5Y,OAAQ,CACzB,MAAM,GAAEzC,EAAE,GAAEC,GAAOJ,EAAaoF,EAASzwH,SAAUywH,EAASqf,aAAe9xI,EAAGwlJ,EAAIrlJ,EAAGslJ,GAAOhzB,EAAS3gD,SACrG,GAAK0zE,EApBD,GAoBqBh4B,EAAKiF,EAASqf,WAAWxpG,QAC7Cm9G,EArBD,GAqBqBh4B,EAAKgF,EAASqf,WAAWxpG,QAC7Ck9G,GAtBD,GAsBsBh4B,GAAMiF,EAASqf,WAAWxpG,QAC/Cm9G,GAvBD,GAuBsBh4B,GAAMgF,EAASqf,WAAWxpG,OAChD,OAEJ,KACJ,EAEJ1qC,EAAUg+H,UAAUsB,OAAOzK,OAAUp1H,GAAW,EACpD,EC7BG,MAAMqoJ,GACTj+I,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,EACjBwH,KAAKijI,MAAQ,CAACK,GAAQyC,KAC1B,CACA5/E,MAAAA,CAAOknE,EAAU71H,EAAW6mC,EAAOisG,GAC/B,IAAKtqI,KAAKijI,MAAMnhD,SAASwoD,GACrB,OAEJ,IAAKjd,EAAS9nD,QAAQkxD,KAAKpvF,SAASmlF,aAC/Bh1H,IAAcyxH,EAAiBpuH,MAAQrD,IAAcyxH,EAAiBtlF,UACtE0pF,EAAS9nD,QAAQkxD,KAAKpvF,SAASolF,WAC3Bj1H,IAAcyxH,EAAiB7uH,KAAO5C,IAAcyxH,EAAiBhhF,SAC1E,OAEJ,MAAMw1G,EAAiBpwB,EAAS9nD,QAAQkxD,KAAKwP,QAASztI,EAAYwH,KAAKxH,UAAWq2H,EAAar2H,EAAU0X,OAAO64B,KAAMw3G,EAAUlzB,EAASjB,YACzI,GAAKqxB,EAAejyB,OAWf,CACD,MAAM5uH,EAAWywH,EAASzwH,WACpB6gJ,EAAenY,SACjB1oI,EAAS7B,EAAI8zH,EAAWx0H,OAASkmJ,GACjC/oJ,IAAcyxH,EAAiBhhF,QAC9Bw1G,EAAenY,SAAW1oI,EAAS7B,GAAKwlJ,GAAW/oJ,IAAcyxH,EAAiB7uH,MACnF5B,EAAUg+H,UAAUsB,OAAOzK,EAEnC,KAnB4B,CACxB,GAAKA,EAAS3gD,SAAS3xE,EAlBf,GAkBkCsyH,EAASzwH,SAAS7B,GAAK8zH,EAAWx0H,OAASkmJ,GAChFlzB,EAAS3gD,SAAS3xE,EAnBf,GAmBkCsyH,EAASzwH,SAAS7B,IAAMwlJ,GAC7DlzB,EAAS3gD,SAAS9xE,EApBf,GAoBkCyyH,EAASzwH,SAAShC,GAAKi0H,EAAW/zH,MAAQylJ,GAC/ElzB,EAAS3gD,SAAS9xE,EArBf,GAqBkCyyH,EAASzwH,SAAShC,IAAM2lJ,EAC9D,OAEC31B,GAAcyC,EAASzwH,SAAUpE,EAAU0X,OAAO64B,KAAMy9E,EAAO72G,OAAQ4wI,EAAS/oJ,IACjFgB,EAAUg+H,UAAUsB,OAAOzK,EAEnC,CAUJ,ECpCG,MAAMmzB,GACTn+I,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,EACjBwH,KAAKijI,MAAQ,CAACK,GAAQp6G,IAC1B,CACAi9B,MAAAA,CAAOknE,EAAU71H,EAAW6mC,EAAOisG,GAC/B,IAAKtqI,KAAKijI,MAAMnhD,SAASwoD,GACrB,OAEJ,MAAM9xI,EAAYwH,KAAKxH,UACvB,OAAQ60H,EAAS4f,SACb,KAAKxJ,GAAgB5Y,OAAQ,CACzB,MAAQjwH,EAAGwlJ,EAAIrlJ,EAAGslJ,GAAOhzB,EAAS3gD,SAC5B+zE,EAAUj6B,EAAO72G,OACvB8wI,EAAQpoJ,OAASg1H,EAASqf,WAAWxpG,OACrCu9G,EAAQjvH,MAAQ67F,EAAS3gD,SAASl7C,MAAQv1B,KAAKgI,GAC/Cw8I,EAAQz6B,MAAMQ,EAAOha,OAAO6gB,EAASqf,aACrC,MAAM,GAAEtkB,EAAE,GAAEC,GAAOJ,EAAaoF,EAASzwH,SAAU6jJ,GACnD,GAAKL,GAnBD,GAmBsBh4B,GAnBL,GAoBhBi4B,GApBD,GAoBsBh4B,GApBL,GAqBhB+3B,GArBD,GAqBsBh4B,GArBL,GAsBhBi4B,GAtBD,GAsBsBh4B,GAtBL,EAuBjB,OAEJgF,EAASzwH,SAAShC,EAAIqB,KAAKkH,MAAMykH,EAAc,CAC3CrkH,IAAK,EACLF,IAAK7K,EAAU0X,OAAO64B,KAAKjuC,SAE/BuyH,EAASzwH,SAAS7B,EAAIkB,KAAKkH,MAAMykH,EAAc,CAC3CrkH,IAAK,EACLF,IAAK7K,EAAU0X,OAAO64B,KAAK1uC,UAE/B,MAAQ+tH,GAAIs4B,EAAOr4B,GAAIs4B,GAAU14B,EAAaoF,EAASzwH,SAAUywH,EAASqf,YAC1Erf,EAAS71H,UAAYyE,KAAKkuB,OAAOw2H,GAAQD,GACzCrzB,EAAS3gD,SAASl7C,MAAQ67F,EAAS71H,UACnC,KACJ,CACA,QACI,GAAIozH,GAAcyC,EAASzwH,SAAUpE,EAAU0X,OAAO64B,KAAMy9E,EAAO72G,OAAQ09G,EAASjB,YAAa50H,GAC7F,OAEJ,OAAQ61H,EAAS4f,SACb,KAAKxJ,GAAgBkI,QAAS,CAC1Bte,EAASzwH,SAAShC,EACdqB,KAAKkH,MAAMykH,EAAc,CACrBrkH,KAAM8pH,EAASqf,WAAWxpG,OAC1B7/B,IAAKgqH,EAASqf,WAAWxpG,UACvBmqF,EAASqf,WAAW9xI,EAC9ByyH,EAASzwH,SAAS7B,EACdkB,KAAKkH,MAAMykH,EAAc,CACrBrkH,KAAM8pH,EAASqf,WAAWxpG,OAC1B7/B,IAAKgqH,EAASqf,WAAWxpG,UACvBmqF,EAASqf,WAAW3xI,EAC9B,MAAM,GAAEqtH,EAAE,GAAEC,GAAOJ,EAAaoF,EAASzwH,SAAUywH,EAASqf,YACxDrf,EAASqf,WAAWxpG,SACpBmqF,EAAS71H,UAAYyE,KAAKkuB,MAAMk+F,EAAID,GACpCiF,EAAS3gD,SAASl7C,MAAQ67F,EAAS71H,WAEvC,KACJ,CACA,KAAKisI,GAAgByK,OAAQ,CACzB,MAAM5H,EAAOjZ,EAAS9nD,QAAQkxD,KAAK6P,KAAMzX,EAAar2H,EAAU0X,OAAO64B,KAAM63G,EAAS,CAClF34G,OAAQ4mF,EAAWx0H,OAASgzH,EAASjB,YAAciB,EAASpmH,OAAOlM,EACnEF,MAAOwyH,EAASjB,YAAciB,EAASpmH,OAAOrM,EAC9C+oC,MAAOkrF,EAAW/zH,MAAQuyH,EAASjB,YAAciB,EAASpmH,OAAOrM,EACjER,KAAMizH,EAASjB,YAAciB,EAASpmH,OAAOlM,GAC9C8lJ,EAAYxzB,EAASjB,YAAa00B,EAAa/1B,GAAgBsC,EAASzwH,SAAUikJ,GACjFrpJ,IAAcyxH,EAAiBtlF,OAC/Bm9G,EAAWjmJ,KAAOg0H,EAAW/zH,MAAQuyH,EAASpmH,OAAOrM,GACrDyyH,EAASzwH,SAAShC,EAAIgmJ,EAAO/lJ,KAC7BwyH,EAASof,gBAAgB7xI,EAAIyyH,EAASzwH,SAAShC,EAC1C0rI,IACDjZ,EAASzwH,SAAS7B,EAAIssH,IAAcwH,EAAWx0H,OAC/CgzH,EAASof,gBAAgB1xI,EAAIsyH,EAASzwH,SAAS7B,IAG9CvD,IAAcyxH,EAAiBpuH,MAAQimJ,EAAWn9G,OAAS0pF,EAASpmH,OAAOrM,IAChFyyH,EAASzwH,SAAShC,EAAIgmJ,EAAOj9G,MAC7B0pF,EAASof,gBAAgB7xI,EAAIyyH,EAASzwH,SAAShC,EAC1C0rI,IACDjZ,EAASzwH,SAAS7B,EAAIssH,IAAcwH,EAAWx0H,OAC/CgzH,EAASof,gBAAgB1xI,EAAIsyH,EAASzwH,SAAS7B,IAGnDvD,IAAcyxH,EAAiBhhF,QAC/B64G,EAAW1mJ,IAAMy0H,EAAWx0H,OAASgzH,EAASpmH,OAAOlM,GAChDurI,IACDjZ,EAASzwH,SAAShC,EAAIysH,IAAcwH,EAAW/zH,MAC/CuyH,EAASof,gBAAgB7xI,EAAIyyH,EAASzwH,SAAShC,GAEnDyyH,EAASzwH,SAAS7B,EAAI6lJ,EAAOxmJ,IAC7BizH,EAASof,gBAAgB1xI,EAAIsyH,EAASzwH,SAAS7B,GAE1CvD,IAAcyxH,EAAiB7uH,KAAO0mJ,EAAW74G,QAAUolF,EAASpmH,OAAOlM,IAC3EurI,IACDjZ,EAASzwH,SAAShC,EAAIysH,IAAcwH,EAAW/zH,MAC/CuyH,EAASof,gBAAgB7xI,EAAIyyH,EAASzwH,SAAShC,GAEnDyyH,EAASzwH,SAAS7B,EAAI6lJ,EAAO34G,OAC7BolF,EAASof,gBAAgB1xI,EAAIsyH,EAASzwH,SAAS7B,GAEnD,KACJ,GAKhB,ECxGJ,MAAMgmJ,GAAeA,CAAC7a,EAAUoE,IACpBpE,EAASzlB,UAAY6pB,GACzBpE,EAASj+F,SAAWqiG,GACpBpE,EAASrrI,OAASyvI,GAClBpE,EAASviG,QAAU2mG,GACnBpE,EAAS9rI,MAAQkwI,EAElB,MAAM0W,GACT3+I,WAAAA,CAAY7J,GACRwH,KAAKihJ,eAAiB,CAAC5zB,EAAUhvF,EAAOisG,EAAS9yI,KAC7C,IAAK,MAAMi4G,KAAWzvG,KAAKg7H,SACvBvrB,EAAQtpD,OAAOknE,EAAU71H,EAAW6mC,EAAOisG,EAC/C,EAEJtqI,KAAKxH,UAAYA,EACjBwH,KAAKg7H,SAAW,EACpB,CACAlgH,IAAAA,CAAKuyG,GACDrtH,KAAKg7H,SAAW,GAChB,MAAMkL,EAAW7Y,EAAS9nD,QAAQkxD,KAAKyP,SACnC6a,GAAa7a,EAAU5C,GAAQ/W,QAC/BvsH,KAAKg7H,SAAS16H,KAAK,IAAIs/I,GAAc5/I,KAAKxH,YAErCuoJ,GAAa7a,EAAU5C,GAAQp6G,KACpClpB,KAAKg7H,SAAS16H,KAAK,IAAIkgJ,GAAWxgJ,KAAKxH,YAElCuoJ,GAAa7a,EAAU5C,GAAQtrI,SACpCgI,KAAKg7H,SAAS16H,KAAK,IAAI4/I,GAAelgJ,KAAKxH,YAEtCuoJ,GAAa7a,EAAU5C,GAAQyC,OACpC/lI,KAAKg7H,SAAS16H,KAAK,IAAIggJ,GAAYtgJ,KAAKxH,WAEhD,CACAsxI,SAAAA,CAAUzc,GACN,OAAQA,EAASl9D,YAAck9D,EAAS4K,QAC5C,CACA9xE,MAAAA,CAAOknE,EAAUhvF,GACb,MAAM6nG,EAAW7Y,EAAS9nD,QAAQkxD,KAAKyP,SACvClmI,KAAKihJ,eAAe5zB,EAAUhvF,EAAO6nG,EAASj+F,QAAUi+F,EAASzlB,QAASwI,EAAiBhhF,QAC3FjoC,KAAKihJ,eAAe5zB,EAAUhvF,EAAO6nG,EAASrrI,MAAQqrI,EAASzlB,QAASwI,EAAiBpuH,MACzFmF,KAAKihJ,eAAe5zB,EAAUhvF,EAAO6nG,EAASviG,OAASuiG,EAASzlB,QAASwI,EAAiBtlF,OAC1F3jC,KAAKihJ,eAAe5zB,EAAUhvF,EAAO6nG,EAAS9rI,KAAO8rI,EAASzlB,QAASwI,EAAiB7uH,IAC5F,EC7CG,MAAM8mJ,GACTpmI,IAAAA,CAAKuyG,GACD,MAAM70H,EAAY60H,EAAS70H,UAAgD2oJ,EAAvB9zB,EAAS9nD,QAAQx8B,KAAkC35B,UACnG+xI,EAAc31B,SACd6B,EAAStkF,KAAK2jC,UACR2gD,EAASoM,OAAOub,oBAAsBx8I,EAAUihI,OAAOub,oBAAsB7vB,EAC3E3sH,EAAUihI,OAAOzG,aACpBmuB,EAAc/tB,OACf/F,EAAStkF,KAAK2jC,UAAY26C,KAGtC,CACAyiB,SAAAA,CAAUzc,GACN,OAASA,EAASl9D,YACbk9D,EAAS4K,UACV5K,EAAStkF,KAAKyiF,UACZ6B,EAAStkF,KAAKmlF,UAjBX,QAkBCb,EAAStkF,KAAKmlF,UAlBf,OAmBIb,EAAStkF,KAAKklF,OAnBlB,IAmBwCZ,EAAStkF,KAAKmlF,UAnBtD,GAoBb,CACAn+F,KAAAA,CAAMs9F,GACFA,EAAStkF,KAAKklF,MAtBL,CAuBb,CACA9nE,MAAAA,CAAOknE,EAAUhvF,GACRr+B,KAAK8pI,UAAUzc,IAGpByB,GAAgBzB,EAAUA,EAAStkF,MAAM,EAAMskF,EAAS9nD,QAAQx8B,KAAK35B,UAAUpX,QAASqmC,EAC5F,ECxBGmsF,eAAe42B,GAAU52G,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SCLxCoyH,eAA6BhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACzCoyC,EAAOowG,SAAS,QAAQ,IACnBn6C,QAAQG,QAAQ,IAAIg9C,KAC5BjiB,EACP,CDEU0lB,CAAc72G,GAAQ,SENzBggF,eAA+BhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC3CoyC,EAAO7b,SAAS,IAAIswH,GAAgBtjB,EAC9C,CFKU2lB,CAAgB92G,GAAQ,SGP3BggF,eAAgChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC5CoyC,EAAOswG,mBAAmB,SAAStiJ,GAC9BioG,QAAQG,QAAQ,IAAIy+C,GAAa7mJ,KACzCmjI,EACP,CHIU4lB,CAAiB/2G,GAAQ,SIR5BggF,eAAkChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC9CoyC,EAAOswG,mBAAmB,WAAWtiJ,GAChCioG,QAAQG,QAAQ,IAAI6+C,GAAejnJ,KAC3CmjI,EACP,CJKU6lB,CAAmBh3G,GAAQ,SKT9BggF,eAAmChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC/CoyC,EAAOswG,mBAAmB,YAAYtiJ,GACjCioG,QAAQG,QAAQ,IAAIogD,GAAmBxoJ,KAC/CmjI,EACP,CLMU8lB,CAAoBj3G,GAAQ,SMV/BggF,eAA+BhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC3CoyC,EAAOswG,mBAAmB,QAAQ,IAC7Br6C,QAAQG,QAAQ,IAAIsgD,KAC5BvlB,EACP,CNOU+lB,CAAgBl3G,GAAQ,SACxBA,EAAOmxF,QAAQA,EACzB,COZA,MAAMgmB,GAAc,+FACb,MAAMC,GACTv/I,WAAAA,GACIrC,KAAKq7I,WAAa,CAAC,SACnBr7I,KAAK6hJ,gBAAkB,IAAI7yD,GAC/B,CACAh3F,OAAAA,GACI,IAAK,MAAOud,EAAKusI,KAAc9hJ,KAAK6hJ,gBAC5BC,aAAqBC,cACrBD,GAAW9c,QACXhlI,KAAK6hJ,gBAAgBxyD,OAAO95E,GAGxC,CACAuhH,IAAAA,CAAK/tH,IChBF,SAAmBA,GACtB,MAAM,QAAEguD,EAAO,SAAEs2D,EAAQ,OAAEnqF,EAAM,QAAEsV,GAAYzvC,EAAM+4I,EAAYz0B,EAASy0B,UAAuBtX,EAAH,EAActnG,EAAiB8+G,EAAgBjrF,EAAQkG,YAChJ6kF,IAGL/qF,EAAQkG,YAAczkB,EACtBue,EAAQ8C,UAAUioF,GAAY5+G,GAASA,EAAQsnG,EAAUA,GACzDzzE,EAAQkG,YAAc+kF,EAC1B,CDSQC,CAAUl5I,EACd,CACA,UAAM+R,CAAKtiB,GACP,MAAM+sE,EAAU/sE,EAAUg9H,eAAe,WAAE6lB,GAAer7I,KAC1D,IAAKq7I,EAAW1/I,MAAKiL,GAAK0jH,GAAU1jH,EAAG2+D,EAAQixD,UAAUhoG,MAAM1yB,QAC3D,OAEJ,MAAMomJ,EAAW,CAACz3B,GAASk3B,KAAelT,EAAe4M,EACpD/hJ,KAAIsN,GAAK2+D,EAAQixD,UAAUhoG,MAAM+2C,QAAQ3+D,KACzCjL,MAAKiL,KAAOA,IACb6nI,GACA/iB,GAA0B+iB,GAAcjgH,IAChCA,EAAM8a,MACN44G,EAAS5hJ,KAAKmqH,GAASj8F,EAAM8a,MACjC,UAGFm3D,QAAQm5C,IAAIsI,EACtB,CACA1U,eAAAA,CAAgBngB,UACLA,EAASy0B,SACpB,CACA7R,YAAAA,CAAaz3I,EAAW60H,GACpB,MAAkBxpG,EAAYwpG,EAASxpG,UACvC,IAAKA,GAAWzsB,MACZ,OAEJ,MAAM+qJ,EAAQz0B,GAAyB7pG,EAAUzsB,MAAOi2H,EAAS+0B,iBAAkB94G,EAAOzlB,EAAUylB,MAAQq4G,GAC5G,IAAKQ,EACD,OAEJ,MAAM5sI,EAAM,GAAG4sI,KAAS74G,IAAQ+4G,EAAeriJ,KAAK6hJ,gBAAgB7iI,IAAIzJ,GACxE,GAAI8sI,EAEA,YADAh1B,EAASy0B,UAAYO,GAGzB,MAAMxzB,EAbS,EAaIhH,EAAYwF,EAAStkF,KAAK3xC,OAC7C,IAAI0qJ,EACJ,MAAMtD,EAAU32B,EAAYwF,EAAStkF,KAAK3xC,OAC1C,GAA+B,qBAApB2zC,gBAAiC,CACxC,MAAM76B,EAAS,IAAI66B,gBAAgB8jF,EAAYA,GAAa93D,EAAU7mD,EAAOE,WAAW,MACxF,IAAK2mD,EACD,OAEJA,EAAQztB,KAAO,OArBJ,EAqBWk1G,OAAsBl1G,IAC5CytB,EAAQurF,aAAe,SACvBvrF,EAAQwrF,UAAY,SACpBxrF,EAAQyrF,SAASL,EAAO3D,EAASA,GACjCsD,EAAY5xI,EAAOuyI,uBACvB,KACK,CACD,MAAMvyI,EAAS7T,SAASxC,cAAc,UACtCqW,EAAOpV,MAAQ+zH,EACf3+G,EAAO7V,OAASw0H,EAChB,MAAM93D,EAAU7mD,EAAOE,WAAW,MAClC,IAAK2mD,EACD,OAEJA,EAAQztB,KAAO,OAnCJ,EAmCWk1G,OAAsBl1G,IAC5CytB,EAAQurF,aAAe,SACvBvrF,EAAQwrF,UAAY,SACpBxrF,EAAQyrF,SAASL,EAAO3D,EAASA,GACjCsD,EAAY5xI,CAChB,CACAlQ,KAAK6hJ,gBAAgBngE,IAAInsE,EAAKusI,GAC9Bz0B,EAASy0B,UAAYA,CACzB,EElFJ,MAAMY,GAAY,EAAGpF,GAAW,EAChC,SAASqF,GAAenqJ,EAAWoE,EAAUgmJ,EAAex6D,EAAMy6D,GAC9D,MAAMC,EAAiBtqJ,EAAUg9H,cAAc53H,cAAcqlI,MAAM6C,QACnE,IAAKgd,EACD,OAEJ,MAAM14B,EAAQ5xH,EAAUg+H,UAAUgd,SAASppB,MAAMhiC,EAAMy6D,GACvD,IAAK,MAAMx1B,KAAYjD,EAAO,CAC1B,MAAM,GAAEhC,EAAE,GAAEC,EAAE,SAAEhhF,GAAa4gF,EAAaoF,EAASzwH,SAAUA,GAAW8vE,EAAWo2E,EAAe5rJ,MAAQ4rJ,EAAe74B,OAAQ84B,EAAgB16E,EAAM++C,EAAU07B,EAAe37B,OAAzBC,CAAiCk2B,GAAWj2G,EAAWu7G,GAAiBl2E,EAAUg2E,GAAWI,EAAehe,UAAWke,EAAUx8B,EAAOha,OAAQnlE,EAAuB+gF,EAAK/gF,EAAY07G,EAA7Br2E,EAA6CrlC,EAAuBghF,EAAKhhF,EAAY07G,EAA7Br2E,GAC1W2gD,EAASzwH,SAAS2pH,QAAQy8B,EAC9B,CACJ,CCXO,MAAMC,GACT5gJ,WAAAA,GACIrC,KAAKqnC,SAAW,IAChBrnC,KAAKuU,SAAW,GAChBvU,KAAKmnH,OAASs1B,GAAWyG,YACzBljJ,KAAKiqH,OAAS,EACdjqH,KAAK8kI,SAAW,GAChB9kI,KAAK9I,MAAQ,CACjB,CACAmX,IAAAA,CAAKtF,GACIA,SAGiB9Q,IAAlB8Q,EAAKs+B,WACLrnC,KAAKqnC,SAAWt+B,EAAKs+B,eAEHpvC,IAAlB8Q,EAAKwL,WACLvU,KAAKuU,SAAWxL,EAAKwL,eAELtc,IAAhB8Q,EAAKo+G,SACLnnH,KAAKmnH,OAASp+G,EAAKo+G,aAEHlvH,IAAhB8Q,EAAKkhH,SACLjqH,KAAKiqH,OAASlhH,EAAKkhH,aAEDhyH,IAAlB8Q,EAAK+7H,WACL9kI,KAAK8kI,SAAW/7H,EAAK+7H,eAEN7sI,IAAf8Q,EAAK7R,QACL8I,KAAK9I,MAAQ6R,EAAK7R,OAE1B,EC7BJ,MAAMisJ,GAAc,UACb,MAAMC,WAAkBpG,GAC3B36I,WAAAA,CAAYmoC,EAAQhyC,GAChBiuH,MAAMjuH,GACNwH,KAAK2iI,QAAUn4F,EACVhyC,EAAUstI,UACXttI,EAAUstI,QAAU,CAAEtP,UAAW,KAErCx2H,KAAK08H,gBAAmBvhI,IACpB,MAA8C2qI,EAA9B9lI,KAAKxH,UAAUg9H,cAAiC53H,cAAcqlI,MAAM6C,QACpF,GAAKA,GAAW3qI,IAASgoJ,GAAzB,CAGK3qJ,EAAUstI,UACXttI,EAAUstI,QAAU,CAAEtP,UAAW,KAErCh+H,EAAUstI,QAAQ/F,UAAW,EAC7BvnI,EAAUstI,QAAQz9F,MAAQ,EAC1B,IAAK,MAAMglF,KAAY70H,EAAUstI,QAAQtP,UAChCx2H,KAAK8pI,UAAUzc,IAGpBA,EAAS3gD,SAAS25C,MAAMgH,EAAS+hB,iBAErC52I,EAAUstI,QAAQtP,UAAY,GAC9Bh+H,EAAUstI,QAAQud,QAAS,EAC3B9pI,YAAW,KACH/gB,EAAU23D,YAGT33D,EAAUstI,UACXttI,EAAUstI,QAAU,CAAEtP,UAAW,KAErCh+H,EAAUstI,QAAQ/F,UAAW,EAAK,GACnC+F,EAAQvxH,SAAW6wG,EAtBtB,CAsB4C,CAEpD,CACAuO,KAAAA,GACA,CACA74G,IAAAA,GACI,MAAMtiB,EAAYwH,KAAKxH,UAAWstI,EAAUttI,EAAUg9H,cAAc53H,cAAcqlI,MAAM6C,QACnFA,IAGLttI,EAAUihI,OAAO6pB,oBAAsBxd,EAAQz+F,SAAW7uC,EAAUihI,OAAOD,WAC/E,CACAuQ,QAAAA,GACI,MAAMvxI,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAe+tB,EAAkB/qJ,EAAUoF,cAAciR,SAAWm2G,EAAgByX,EAASl3D,EAAQ3nE,cAAc6+H,QAAUjR,OAAQg4B,EAAcroJ,KAAMsoJ,GAAchnB,EAAO2B,SAAW5S,OAAQk4B,EAAcvoJ,KAAMwoJ,GAAclnB,EAAOxnB,QAC5RsuC,GAAmBC,GAAgBl5B,GAAU64B,GAAaM,GFb/D,SAAsBjrJ,EAAWorJ,GACpC,MAAMvnB,EAAW7jI,EAAUoF,cAAcw+H,MAAMx/H,SAAUgmJ,EAAgBpqJ,EAAUihI,OAAO6pB,qBACrFV,GAAiBA,EAvCqB,IAuCSvmB,GAGpDsmB,GAAenqJ,EAAW6jI,EAAUumB,EAAe,IAAIrS,GAAOlU,EAASzhI,EAAGyhI,EAASthI,EAAG6nJ,IAAiBl8I,GAAMk9I,EAAUl9I,IAC3H,CEQYm9I,CAAa7jJ,KAAKxH,WAAWkO,GAAK1G,KAAK8pI,UAAUpjI,KAE5Cg9I,GAAgBp5B,GAAU64B,GAAaQ,IFzCjD,SAAsBnrJ,EAAWorJ,GAC/BprJ,EAAUstI,UACXttI,EAAUstI,QAAU,CAAEtP,UAAW,KAErC,MAAM,QAAEsP,GAAYttI,EAUpB,GATKstI,EAAQud,SACJvd,EAAQz9F,QACTy9F,EAAQz9F,MAAQ,GAEpBy9F,EAAQz9F,QACJy9F,EAAQz9F,QAAU7vC,EAAUg+H,UAAUnuF,QACtCy9F,EAAQud,QAAS,IAGrBvd,EAAQ/F,SAAU,CAClB,MAAM1D,EAAW7jI,EAAUoF,cAAcw+H,MAAME,cAAesmB,EAAgBpqJ,EAAUihI,OAAO6pB,oBAC/F,IAAKV,GAAiBA,EA5BiB,IA4BavmB,EAChD,OAEJsmB,GAAenqJ,EAAW6jI,EAAUumB,EAAe,IAAIrS,GAAOlU,EAASzhI,EAAGyhI,EAASthI,EAAG6nJ,IAAiBl8I,GAAMk9I,EAAUl9I,IAC3H,MAC8B,IAArBo/H,EAAQ/F,WACb+F,EAAQtP,UAAY,GAE5B,CEkBYstB,CAAa9jJ,KAAKxH,WAAWkO,GAAK1G,KAAK8pI,UAAUpjI,IAEzD,CACAojI,SAAAA,CAAUzc,GACN,MAAM70H,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAe4G,EAAQ5jI,EAAUoF,cAAcw+H,MAAOK,GAAUpP,GAAUzvH,eAAiB2nE,EAAQ3nE,eAAe6+H,OACxK,KAAML,EAAMx/H,WAAa6/H,EAAO2B,QAAQ5S,WAAa4Q,EAAME,gBAAkBG,EAAOxnB,QAAQuW,QACxF,OAAO,EAEX,MAAMi4B,EAAYhnB,EAAO2B,QAAQjjI,KAAMwoJ,EAAYlnB,EAAOxnB,QAAQ95G,KAClE,OAAOmvH,GAAU64B,GAAaM,IAAcn5B,GAAU64B,GAAaQ,EACvE,CACA5gB,eAAAA,CAAgBx9D,GACPA,EAAQugE,UACTvgE,EAAQugE,QAAU,IAAImd,IACzB,QAAAh4B,EAAA7yH,UAAAC,OAHuBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI/B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQugE,QAAQz3H,KAAK8rC,GAAQ2rF,QAErC,CACA/1G,KAAAA,GACA,EC1EJ,MAAMg0H,GAAY,EAAG5Z,GAAO,GAAK6Z,GAAS/nJ,KAAKgI,GAAKkmI,GAAMzZ,GAAS,EAAGuzB,GAAkB,GACxF,SAASC,GAAc1rJ,EAAWoE,EAAUsmC,EAAQklD,EAAMw7D,GACtD,MAAMx5B,EAAQ5xH,EAAUg+H,UAAUgd,SAASppB,MAAMhiC,EAAMw7D,GACvD,IAAK,MAAMv2B,KAAYjD,EACfhiC,aAAgBmoD,GAChB7jB,GAAaR,GAA6BmB,GAAW,CACjDzwH,WACAsmC,SACAmpF,KAAMnpF,GAAU6gH,GAAYC,GAC5Bt3E,SAAU85C,EAAO72G,OACjBs6G,OAAQzD,EAAO72G,SAGdy4E,aAAgBsoD,IACrBtjB,GAAWC,EAAUtC,GAAgBnuH,EAAUsmC,GAG3D,CAgBO,SAASihH,GAAU3rJ,EAAW8yH,EAAM84B,EAAYR,GACnDn4B,GAAe24B,EAAY94B,GAAM,CAACO,EAAUvuG,IAhBhD,SAA8B9kB,EAAWqzH,EAAUvuG,EAAK+mI,GACpD,MAAMj6B,EAAQ/tH,SAASsxC,iBAAiBk+E,GACnCzB,EAAM/xH,QAGX+xH,EAAM3wH,SAAQ0lE,IACV,MAAM/iD,EAAO+iD,EAAM0uD,EAAUr1H,EAAUihI,OAAOD,WAAY98H,EAAM,CAC5D9B,GAAIwhB,EAAKkoI,WAAaloI,EAAK4tB,YAAcmgG,IAAQtc,EACjD9yH,GAAIqhB,EAAKmoI,UAAYnoI,EAAKwhD,aAAeusE,IAAQtc,GAClD3qF,EAAS9mB,EAAK4tB,YAAcmgG,GAAOtc,EAASpuF,EAAYwkH,GAAkBp2B,EAASzlC,EAAO9qE,EAAIxhB,OAAS4lI,GAAQQ,OAC5G,IAAIqO,GAAO7zI,EAAI9B,EAAG8B,EAAI3B,EAAGmoC,EAASzD,GAClC,IAAIixG,GAAUt0H,EAAKkoI,WAAaz2B,EAAUpuF,EAAWrjB,EAAKmoI,UAAY12B,EAAUpuF,EAAWrjB,EAAK4tB,YAAc6jF,EAAUpuF,EAAYixF,GAAQt0G,EAAKwhD,aAAeiwD,EAAUpuF,EAAYixF,IAC5L2zB,EAAS3nJ,EAAKwmC,EAAQklD,EAAK,GAEnC,CAEwDo8D,CAAqBhsJ,EAAWqzH,EAAUvuG,GAAK,CAAC5gB,EAAKwmC,EAAQklD,IAAS87D,GAAc1rJ,EAAWkE,EAAKwmC,EAAQklD,EAAMw7D,MAC1K,CCpCO,MAAMa,GACTpiJ,WAAAA,GACIrC,KAAKqnC,SAAW,GACpB,CACAh5B,IAAAA,CAAKtF,GACIA,QAGiB9Q,IAAlB8Q,EAAKs+B,WACLrnC,KAAKqnC,SAAWt+B,EAAKs+B,SAE7B,ECRJ,MAAM+8G,GAAa,SACZ,MAAMM,WAAgB1H,GACzB36I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,EACV,CACAm7H,KAAAA,GACA,CACA74G,IAAAA,GACI,MAAMtiB,EAAYwH,KAAKxH,UAAW+zH,EAAS/zH,EAAUg9H,cAAc53H,cAAcqlI,MAAM1W,OAClFA,IAGL/zH,EAAUihI,OAAOkrB,mBAAqBp4B,EAAOllF,SAAW7uC,EAAUihI,OAAOD,WAC7E,CACAuQ,QAAAA,GACI,MAAMvxI,EAAYwH,KAAKxH,UAA8CikI,EAAzBjkI,EAAUg9H,cAAgC53H,cAAc6+H,OAAQ8mB,EAAkB/qJ,EAAUoF,cAAciR,SAAWm2G,EAAgBw+B,EAAe/mB,EAAO2B,QAAQ5S,OAAQi4B,EAAYhnB,EAAO2B,QAAQjjI,KAAMmwH,EAAOmR,EAAO+F,MAClQ+gB,GAAmBC,GAAgBl5B,GAAU85B,GAAYX,GFkB9D,SAAqBjrJ,EAAWorJ,GACnC,MAAM/1B,EAAUr1H,EAAUihI,OAAOD,WAAY/5F,EAAYwkH,GAAkBp2B,EAASwO,EAAW7jI,EAAUoF,cAAcw+H,MAAMx/H,SAAUsmC,EAAS1qC,EAAUihI,OAAOkrB,oBAC5JzhH,GAAUA,EAtCqF,IAsC9Dm5F,GAGtC6nB,GAAc1rJ,EAAW6jI,EAAUn5F,EAAQ,IAAIqtG,GAAOlU,EAASzhI,EAAGyhI,EAASthI,EAAGmoC,EAASzD,GAAYmkH,EACvG,CEvBYgB,CAAY5kJ,KAAKxH,WAAWkO,GAAK1G,KAAK8pI,UAAUpjI,KAGhDy9I,GAAUnkJ,KAAKxH,UAAW8yH,EAAM84B,IAAY19I,GAAK1G,KAAK8pI,UAAUpjI,IAExE,CACAojI,SAAAA,CAAUzc,GACN,MAAM70H,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAe4G,EAAQ5jI,EAAUoF,cAAcw+H,MAAOK,GAAUpP,GAAUzvH,eAAiB2nE,EAAQ3nE,eAAe6+H,OAAQnR,EAAOmR,EAAO+F,MAC9L,QAAWpG,EAAMx/H,UAAY6/H,EAAO2B,QAAQ5S,QAAUlB,GAAU85B,GAAY3nB,EAAO2B,QAAQjjI,OACvFkwH,GAAiB+4B,GAAY94B,EACrC,CACAyX,eAAAA,CAAgBx9D,GACPA,EAAQgnD,SACThnD,EAAQgnD,OAAS,IAAIk4B,IACxB,QAAAx5B,EAAA7yH,UAAAC,OAHuBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI/B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQgnD,OAAOl+G,KAAK8rC,GAAQoyE,OAEpC,CACAx8F,KAAAA,GACA,ECvCG,MAAM80H,GACTxiJ,WAAAA,GACIrC,KAAKqnC,SAAW,IAChBrnC,KAAKuU,SAAW,GAChBvU,KAAKunH,KAAM,CACf,CACAl5G,IAAAA,CAAKtF,GACD,GAAKA,EAAL,CAeA,QAZsB9Q,IAAlB8Q,EAAKs+B,WACLrnC,KAAKqnC,SAAWt+B,EAAKs+B,eAEHpvC,IAAlB8Q,EAAKwL,WACLvU,KAAKuU,SAAWxL,EAAKwL,eAERtc,IAAb8Q,EAAKw+G,MACLvnH,KAAKunH,IAAMx+G,EAAKw+G,UAECtvH,IAAjB8Q,EAAKyvC,UACLx4C,KAAKw4C,QAAUzvC,EAAKyvC,cAELvgD,IAAf8Q,EAAK/B,MAAqB,CAC1B,MAAMqrH,EAAcx5H,EAAQmH,KAAKgH,YAAS/O,EAAY+H,KAAKgH,MAC3DhH,KAAKgH,MAAQ0kH,GAA0B3iH,EAAK/B,OAAOA,GACxC26H,GAAan1B,OAAO6lB,EAAarrH,IAEhD,MACkB/O,IAAd8Q,EAAKggC,OACL/oC,KAAK+oC,KAAOhgC,EAAKggC,KApBrB,CAsBJ,EC/BG,MAAM+7G,WAAkBD,GAC3BxiJ,WAAAA,GACIokH,QACAzmH,KAAK4rH,UAAY,EACrB,CACAv9G,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,GACNA,QAGkB9Q,IAAnB8Q,EAAK6iH,YACL5rH,KAAK4rH,UAAY7iH,EAAK6iH,UAE9B,ECXG,MAAMm5B,WAAeF,GACxBx2I,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,GACNA,IAGL/I,KAAKsrH,KAAOI,GAA0B3iH,EAAKuiH,MAAMhuG,IAC7C,MAAMmlH,EAAM,IAAIqiB,GAEhB,OADAriB,EAAIp0H,KAAKiP,GACFmlH,CAAG,IAElB,ECdG,IAAIuiB,GCCJ,SAASC,GAAqBC,EAAeC,EAAWC,EAAcrQ,GACzE,GAAIoQ,GAAaC,EAAc,CAE3B,OAAO/8E,EADO68E,GAAiBC,EAAYC,GAAgBrQ,EACvCmQ,EAAeC,EACvC,CACK,GAAIA,EAAYC,EAAc,CAE/B,OAAO/8E,EADO68E,GAAiBE,EAAeD,GAAapQ,EACvCoQ,EAAWD,EACnC,CACJ,EDTA,SAAWF,GACPA,EAAyB,MAAI,QAC7BA,EAA2B,QAAI,UAC/BA,EAAwB,KAAI,MAC/B,CAJD,CAIGA,KAAsBA,GAAoB,CAAC,IED9C,MAAMK,GAAa,SACZ,MAAMC,WAAgBtI,GACzB36I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,GACNwH,KAAKulJ,aAAe,KAChB,MAAM/sJ,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAegwB,EAAgBhtJ,EAAUoF,cAAcw+H,MAAME,cAAempB,EAAgBlgF,EAAQ3nE,cAAcqlI,MAAMzK,OAC9K,IAAKitB,IAAkBD,EACnB,OAEChtJ,EAAUggI,SACXhgI,EAAUggI,OAAS,CAAC,GAExB,MAAMnxF,EAAW7uC,EAAUihI,OAAOisB,mBAClC,IAAKr+G,GAAYA,EAbc,EAc3B,OAEJ,MAAM+iF,EAAQ5xH,EAAUg+H,UAAUgd,SAASjC,YAAYiU,EAAen+G,GAAU3gC,GAAK1G,KAAK8pI,UAAUpjI,MAAK,OAAE8xH,GAAWhgI,EACtH,IAAK,MAAM60H,KAAYjD,EAAO,CAC1B,IAAKoO,EAAOuH,SACR,SAEJ1S,EAASmL,OAAO4U,SAAW5U,EAAOmtB,YAClC,MAAoCC,EAAYt9B,EAApC+E,EAASlB,cAA4Cq5B,GAAgBK,IAAa,IAAIj6G,MAAO4wF,WAAahkI,EAAUoF,cAAcw+H,MAAMG,WAtBnG,IAuB7CnX,EACAygC,EAAYJ,EAAclxI,WAC1BikH,EAAOmtB,aAAc,GAErBE,EA3ByD,EA2B7CJ,EAAclxI,WAC1BikH,EAAOuH,UAAW,EAClBvH,EAAOmtB,aAAc,GAEzB,MAAMG,EAAW,CACbC,UAAW,CACPC,SAAUxtJ,EAAUihI,OAAOwsB,eAC3B7uJ,MAAOi2H,EAASmL,OAAOt1F,QAE3BgjH,aAAc,CACVF,SAAUn+B,EAAYwF,EAAS9nD,QAAQx8B,KAAK3xC,OAASoB,EAAUihI,OAAOD,WACtEpiI,MAAOi2H,EAAStkF,KAAK3xC,OAEzB0E,KAAMkpJ,GAAkBj8G,MAE5B/oC,KAAKmmJ,SAAS94B,EAAUu4B,EAAWC,EAAWC,GAC9C,MAAMM,EAAc,CAChBL,UAAW,CACPC,SAAUP,EAAcjtG,QACxBphD,MAAOi2H,EAASmL,OAAOhgF,SAE3B0tG,aAAc,CACVF,SAAUn+B,EAAYwF,EAAS9nD,QAAQ/sB,QAAQphD,OAC/CA,MAAOi2H,EAAS70E,SAASphD,OAlDgD,GAoD7E0E,KAAMkpJ,GAAkBxsG,SAE5Bx4C,KAAKmmJ,SAAS94B,EAAUu4B,EAAWC,EAAWO,IACzC5tB,EAAOmtB,aAAeC,GAAav+G,EACpCrnC,KAAKqmJ,kBAAkBh5B,EAAUu4B,UAG1Bv4B,EAASmL,OAAOxxH,KAE/B,GAEJhH,KAAKsmJ,aAAe,KAChB,MAAM9tJ,EAAYwH,KAAKxH,UAAW6jI,EAAW7jI,EAAUoF,cAAcw+H,MAAMx/H,SAAUyqC,EAAW7uC,EAAUihI,OAAOisB,mBACjH,IAAKr+G,GAAYA,EAjEc,IAiEag1F,EACxC,OAEJ,MAAMjS,EAAQ5xH,EAAUg+H,UAAUgd,SAASjC,YAAYlV,EAAUh1F,GAAU3gC,GAAK1G,KAAK8pI,UAAUpjI,KAC/F,IAAK,MAAM2mH,KAAYjD,EAAO,CAC1BiD,EAASmL,OAAO4U,SAAU,EAC1B,MAAoC7sG,EAAgB+nF,EAAxC+E,EAASlB,cAAgDkQ,GAAW0Y,EAvEkB,EAuEIx0G,EAAgB8G,EAClH9G,GAAiB8G,EACb0tG,GAzEgI,GAyE3Gv8I,EAAUoF,cAAciR,SAAWm2G,IACxDhlH,KAAKumJ,iBAAiBl5B,EAAU0nB,GAChC/0I,KAAKwmJ,oBAAoBn5B,EAAU0nB,GACnC/0I,KAAKqmJ,kBAAkBh5B,EAAU0nB,IAIrC/0I,KAAK+vB,MAAMs9F,GAEX70H,EAAUoF,cAAciR,SAAWk2G,GACnC/kH,KAAK+vB,MAAMs9F,EAEnB,GAEJrtH,KAAKqmJ,kBAAoB,CAACh5B,EAAU0nB,EAAO0R,KACvC,MAAMlhF,EAAUvlE,KAAKxH,UAAUg9H,cAAeiwB,EAAgBgB,GAAalhF,EAAQ3nE,cAAcqlI,MAAMzK,OACvG,GAAKitB,EAAL,CAGA,IAAKp4B,EAASmL,OAAOkuB,WAAY,CAC7B,MAAMC,EAAYlB,EAAcz+I,MAChC,IAAK2/I,EACD,OAEJ,MAAMC,EAAcl5B,GAAyBi5B,GAC7Ct5B,EAASmL,OAAOkuB,WAAan2B,GAAgBq2B,EACjD,CACA,GAAKv5B,EAASmL,OAAOkuB,WAGrB,GAAIjB,EAAcl+B,IAAK,CACnB8F,EAASmL,OAAOxxH,WAAQ/O,EACxB,MAAM4uJ,EAASx5B,EAASiF,eACxBjF,EAASmL,OAAOxxH,MAAQ6/I,EAClB79E,GAAS8oD,GAAS+0B,EAAQx5B,EAASmL,OAAOkuB,WA3GkD,EA2GxB3R,EAAOA,IAC3E1nB,EAASmL,OAAOkuB,UAC1B,MAEIr5B,EAASmL,OAAOxxH,MAAQqmH,EAASmL,OAAOkuB,UApB5C,CAqBA,EAEJ1mJ,KAAKwmJ,oBAAsB,CAACn5B,EAAU0nB,EAAO0R,KACzC,MAAkClhF,EAAhBvlE,KAAKxH,UAA+Bg9H,cAAesxB,EAAcL,GAAWjuG,SAAW+sB,EAAQ3nE,cAAcqlI,MAAMzK,QAAQhgF,QAC7I,IAAKsuG,EACD,OAEJ,MAAMC,EAAa15B,EAAS9nD,QAAQ/sB,QAAQphD,MAA6DohD,EAAUysG,GAArD53B,EAAS70E,SAASphD,OAvHK,EAuH6D0vJ,EAAaj/B,EAAYk/B,GAAahS,QACxK98I,IAAZugD,IACA60E,EAASmL,OAAOhgF,QAAUA,EAC9B,EAEJx4C,KAAKumJ,iBAAmB,CAACl5B,EAAU0nB,EAAO0R,KACtC,MAAMjuJ,EAAYwH,KAAKxH,UAAWwuJ,EAAWP,GAAW19G,KAAO09G,EAAU19G,KAAOvwC,EAAUihI,OAAOD,WAAahhI,EAAUihI,OAAOwsB,eAC/H,QAAiBhuJ,IAAb+uJ,EACA,OAEJ,MAAMC,EAAUp/B,EAAYwF,EAAS9nD,QAAQx8B,KAAK3xC,OAASoB,EAAUihI,OAAOD,WAAyCzwF,EAAOk8G,GAA5B53B,EAAStkF,KAAK3xC,MAA0C4vJ,EAAUC,EAASlS,QAC9J98I,IAAT8wC,IACAskF,EAASmL,OAAOt1F,OAAS6F,EAC7B,EAEJ/oC,KAAKmmJ,SAAW,CAAC94B,EAAUu4B,EAAWC,EAAW98I,KAC7C,MAAMvQ,EAAYwH,KAAKxH,UAAW0uJ,EAAcn+I,EAAKg9I,UAAUC,SAA6CP,EAAzBjtJ,EAAUg9H,cAAuC53H,cAAcqlI,MAAMzK,OACxJ,IAAKitB,QAAiCxtJ,IAAhBivJ,EAClB,OAEJ,MAAMC,EAAiB1B,EAAclxI,SAAU6yI,EAAiB5uJ,EAAUihI,OAAOisB,mBAAoB2B,EAAiBt+I,EAAKm9I,aAAaF,SAAUsB,EAAav+I,EAAKg9I,UAAU3uJ,MAAOmwJ,EAAOx+I,EAAKm9I,aAAa9uJ,OA3IhF,EA2I6G0E,EAAOiN,EAAKjN,KACvP,GAAKsrJ,KAAkBA,EA5IQ,IA4IwBF,IAAgBG,EAMvE,GAHK7uJ,EAAUggI,SACXhgI,EAAUggI,OAAS,CAAC,GAEpBhgI,EAAUggI,OAAOmtB,YACb2B,IACIxrJ,IAASkpJ,GAAkBj8G,aACpBskF,EAASmL,OAAOt1F,OAEvBpnC,IAASkpJ,GAAkBxsG,gBACpB60E,EAASmL,OAAOhgF,cAK/B,GAAIotG,GAAawB,EAAgB,CAE7B,IADYE,GAAcC,KACdL,EAAa,CACrB,MAAM9vJ,EAAQmwJ,EAAQ1B,GAAa0B,EAAOL,GAAgBC,EACtDrrJ,IAASkpJ,GAAkBj8G,OAC3BskF,EAASmL,OAAOt1F,OAAS9rC,GAEzB0E,IAASkpJ,GAAkBxsG,UAC3B60E,EAASmL,OAAOhgF,QAAUphD,EAElC,CACJ,MAEQ0E,IAASkpJ,GAAkBj8G,aACpBskF,EAASmL,OAAOt1F,OAEvBpnC,IAASkpJ,GAAkBxsG,gBACpB60E,EAASmL,OAAOhgF,OAGnC,EAEJx4C,KAAKwnJ,qBAAuB,CAACnpH,EAAOwtF,EAAUvuG,KAC1C,MAAM9kB,EAAYwH,KAAKxH,UAAWozH,EAAYvvH,SAASsxC,iBAAiBk+E,GAAW2M,EAAShgI,EAAUg9H,cAAc53H,cAAcqlI,MAAMzK,OACnIA,GAAW5M,EAAUvzH,QAG1BuzH,EAAUnyH,SAAQ0lE,IACd,MAAM/iD,EAAO+iD,EAAM0uD,EAAUr1H,EAAUihI,OAAOD,WAAY98H,EAAM,CAC5D9B,GAAIwhB,EAAKkoI,WA1LqI,GA0LxHloI,EAAK4tB,aAAsB6jF,EACjD9yH,GAAIqhB,EAAKmoI,UA3LqI,GA2LzHnoI,EAAKwhD,cAAuBiwD,GAClD45B,EA5L+I,GA4L/HrrI,EAAK4tB,YAAqB6jF,EAASzlC,EAAO9qE,EAAIxhB,OAAS4lI,GAAQQ,OAC5E,IAAIqO,GAAO7zI,EAAI9B,EAAG8B,EAAI3B,EAAG0sJ,GACzB,IAAI/W,GAAUt0H,EAAKkoI,WAAaz2B,EAASzxG,EAAKmoI,UAAY12B,EAASzxG,EAAK4tB,YAAc6jF,EAASzxG,EAAKwhD,aAAeiwD,GAAUzD,EAAQ5xH,EAAUg+H,UAAUgd,SAASppB,MAAMhiC,GAAM1hF,GAAK1G,KAAK8pI,UAAUpjI,KACxM,IAAK,MAAM2mH,KAAYjD,EAAO,CAC1B,IAAKhiC,EAAK0S,SAASuyB,EAASlB,eACxB,SAEJkB,EAASmL,OAAO4U,SAAU,EAC1B,MAA0BqZ,EAAY96B,GAAzB6M,EAAOlN,KAAgClvG,GAC/CixG,EAASmL,OAAOl7G,KAAO+vG,EAASmL,OAAOl7G,MAAQlB,IAChDpc,KAAK2zH,MAAMtG,EAAUhvF,GAAO,GAC5BgvF,EAASmL,OAAOl7G,IAAMlB,GAE1Bpc,KAAKumJ,iBAAiBl5B,EAzM4I,EAyMpHo5B,GAC9CzmJ,KAAKwmJ,oBAAoBn5B,EA1MyI,EA0MjHo5B,GACjDzmJ,KAAKqmJ,kBAAkBh5B,EA3M2I,EA2MnHo5B,EACnD,IACF,EAEDjuJ,EAAUggI,SACXhgI,EAAUggI,OAAS,CAAC,GAExBx4H,KAAK08H,gBAAmBvhI,IAChBA,IAASkqJ,KAGR7sJ,EAAUggI,SACXhgI,EAAUggI,OAAS,CAAC,GAExBhgI,EAAUggI,OAAOuH,UAAW,EAAI,CAExC,CACApM,KAAAA,CAAMtG,EAAUhvF,EAAO+jG,GACf/U,EAASmL,OAAO4U,UAAYhL,WAGzB/U,EAASmL,OAAOl7G,WAChB+vG,EAASmL,OAAOhgF,eAChB60E,EAASmL,OAAOt1F,cAChBmqF,EAASmL,OAAOxxH,MAC3B,CACA8T,IAAAA,GACI,MAAMtiB,EAAYwH,KAAKxH,UAAWggI,EAAShgI,EAAUg9H,cAAc53H,cAAcqlI,MAAMzK,OAClFA,IAGLhgI,EAAUihI,OAAOisB,mBAAqBltB,EAAOnxF,SAAW7uC,EAAUihI,OAAOD,gBACrDvhI,IAAhBugI,EAAOzvF,OACPvwC,EAAUihI,OAAOwsB,eAAiBztB,EAAOzvF,KAAOvwC,EAAUihI,OAAOD,YAEzE,CACAuQ,QAAAA,CAAS1rG,GACL,MAA8Co+F,EAA9Bz8H,KAAKxH,UAAUg9H,cAAgC53H,cAAc6+H,OAAQ2B,EAAU3B,EAAO2B,QAASnpB,EAAUwnB,EAAOxnB,QAASuuC,EAAeplB,EAAQ5S,OAAQi4B,EAAYrlB,EAAQjjI,KAAMuoJ,EAAezuC,EAAQuW,OAAQm4B,EAAY1uC,EAAQ95G,KAAMmwH,EAAOmR,EAAO+F,MACrQghB,GAAgBl5B,GAAU+6B,GAAY5B,GACtCzjJ,KAAKsmJ,eAEA5C,GAAgBp5B,GAAU+6B,GAAY1B,GAC3C3jJ,KAAKulJ,eAGL95B,GAAe45B,GAAY/5B,GAAM,CAACO,EAAUvuG,IAAQtd,KAAKwnJ,qBAAqBnpH,EAAOwtF,EAAUvuG,IAEvG,CACAwsH,SAAAA,CAAUzc,GACN,MAAM70H,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAe4G,EAAQ5jI,EAAUoF,cAAcw+H,MAAOK,GAAUpP,GAAUzvH,eAAiB2nE,EAAQ3nE,eAAe6+H,QAAQ,QAAExnB,EAAO,MAAEutB,EAAK,QAAEpE,GAAY3B,EAAQgqB,EAAYp7B,GAAiBg6B,GAAY7iB,GAC/P,SAAMikB,GAAcroB,EAAQ5S,QAAY4Q,EAAMx/H,UAAcq4G,EAAQuW,QAAU4Q,EAAME,iBAG7EhS,GAAU+6B,GAAYjnB,EAAQjjI,OAASmvH,GAAU+6B,GAAYpwC,EAAQ95G,OAASsrJ,EACzF,CACA1jB,eAAAA,CAAgBx9D,GACPA,EAAQizD,SACTjzD,EAAQizD,OAAS,IAAIusB,IACxB,QAAA95B,EAAA7yH,UAAAC,OAHuBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI/B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQizD,OAAOnqH,KAAK8rC,GAAQq+E,OAEpC,CACAzoG,KAAAA,CAAMs9F,GACFA,EAASmL,OAAO4U,SAAU,CAC9B,EChRG,MAAMsa,GACTrlJ,WAAAA,GACIrC,KAAKw4C,QAAU,EACnB,CACAnqC,IAAAA,CAAKtF,GACIA,QAGgB9Q,IAAjB8Q,EAAKyvC,UACLx4C,KAAKw4C,QAAUzvC,EAAKyvC,QAE5B,ECVG,MAAMmvG,GACTtlJ,WAAAA,GACIrC,KAAKqnC,SAAW,GAChBrnC,KAAK4nJ,MAAQ,IAAIF,GACjB1nJ,KAAKkjC,OAAS,EAClB,CACA70B,IAAAA,CAAKtF,GACIA,SAGiB9Q,IAAlB8Q,EAAKs+B,WACLrnC,KAAKqnC,SAAWt+B,EAAKs+B,UAEzBrnC,KAAK4nJ,MAAMv5I,KAAKtF,EAAK6+I,YACD3vJ,IAAhB8Q,EAAKm6B,SACLljC,KAAKkjC,OAASn6B,EAAKm6B,QAE3B,ECjBJ,MAAM2kH,GAAc,EAAGC,GAAc,EAkB9B,SAASC,GAAUvvJ,EAAW2X,EAAKmgB,EAAI0E,GAC1C,MAAyCgzH,EAAzBxvJ,EAAUg9H,cAAwC53H,cAAcqlI,MAAMglB,QACtF,GAAKD,EAGL,OAtBG,SAAkBjxF,EAASzmC,EAAI0E,EAAIwjB,GACtC,MAAM0vG,EAAWjsJ,KAAKkH,MAAM6xB,EAAGo3F,YAAc97F,EAAG87F,aAAcrwC,EAASzrD,EAAGgiG,eAAgBt2C,EAAShnD,EAAGs9F,eACtG,IAAKv2C,IAAWC,EACZ,OAEJ,MAAMmsE,EAAY73H,EAAG67F,cAAei8B,EAAUpzH,EAAGm3F,cAAek8B,EAASv2B,GAAS/1C,EAAQC,EAAQ1rD,EAAG87F,YAAap3F,EAAGo3F,aAAck8B,EAAOvxF,EAAQgF,qBAAqBosF,EAAUvtJ,EAAGutJ,EAAUptJ,EAAGqtJ,EAAQxtJ,EAAGwtJ,EAAQrtJ,GAIpN,OAHAutJ,EAAKrsF,aAAa4rF,GAAah2B,GAAgB91C,EAAQvjC,IACvD8vG,EAAKrsF,aAAaoM,EAAM6/E,EAAUL,GAAaC,IAAcl2B,GAAgBy2B,EAAQ7vG,IACrF8vG,EAAKrsF,aAAa6rF,GAAaj2B,GAAgB71C,EAAQxjC,IAChD8vG,CACX,CAYWC,CAASp4I,EAAKmgB,EAAI0E,EAAIgzH,EAAeJ,MAAMpvG,QACtD,CACO,SAASgwG,GAAehwJ,EAAW83B,EAAI0E,GAC1Cx8B,EAAU0X,OAAO4mH,MAAK3mH,IAClB,MAAM2zC,EAAKikG,GAAUvvJ,EAAW2X,EAAKmgB,EAAI0E,GACzC,IAAK8uB,EACD,OAEJ,MAAM+oE,EAAOv8F,EAAG67F,cAAeW,EAAO93F,EAAGm3F,eAnB1C,SAAyBp1D,EAASj8D,EAAOitJ,EAAWr0B,EAAO34G,GAC9D04G,GAAS18D,EAAS28D,EAAO34G,GACzBg8C,EAAQvP,UAAY1sD,EACpBi8D,EAAQxB,YAAcwyF,EACtBhxF,EAAQjC,QACZ,CAeQ2zF,CAAgBt4I,EAAKmgB,EAAGmpG,OAAOivB,YAhCqB,EAgCY5kG,EAAI+oE,EAAMC,EAAK,GAEvF,CC/BO,MAAM67B,WAAkB3L,GAC3B36I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,EACV,CACAm7H,KAAAA,GACA,CACA74G,IAAAA,GACI,MAAMtiB,EAAYwH,KAAKxH,UAAWyvJ,EAAUzvJ,EAAUg9H,cAAc53H,cAAcqlI,MAAMglB,QACnFA,IAGLzvJ,EAAUihI,OAAOmvB,oBAAsBX,EAAQ5gH,SAAW7uC,EAAUihI,OAAOD,WAC3EhhI,EAAUihI,OAAOovB,kBAAoBZ,EAAQ/kH,OAAS1qC,EAAUihI,OAAOD,WAC3E,CACAuQ,QAAAA,GACI,MAAMvxI,EAAYwH,KAAKxH,UACvB,GAD4CA,EAAUg9H,cAC1C53H,cAAc6+H,OAAO2B,QAAQ5S,QAA6C,gBAAnChzH,EAAUoF,cAAciR,OAA0B,CACjG,MAAMwtH,EAAW7jI,EAAUoF,cAAcw+H,MAAMx/H,UAAU,oBAAEgsJ,EAAmB,kBAAEC,GAAsBrwJ,EAAUihI,OAChH,IAAKmvB,GACDA,EApB6B,IAqB5BC,GACDA,EAtB6B,IAuB5BxsB,EACD,OAEJ,MAAMh1F,EAAWprC,KAAK2H,IAAIilJ,GAAoBz+B,EAAQ5xH,EAAUg+H,UAAUgd,SAASjC,YAAYlV,EAAUh1F,GAAU3gC,GAAK1G,KAAK8pI,UAAUpjI,KACvI0jH,EAAM3wH,SAAQ,CAAC62B,EAAIvxB,KACf,MAAM8tH,EAAOv8F,EAAG67F,cAChB,IAAK,MAAMn3F,KAAMo1F,EAAMrtG,MAAMhe,EADgB,GACE,CAC3C,MAAM+tH,EAAO93F,EAAGm3F,cAAe28B,EAAU7sJ,KAAK2H,IAAIglJ,GAAsBG,EAAQ9sJ,KAAK2H,IAAIipH,EAAKjyH,EAAIkyH,EAAKlyH,GAAIouJ,EAAQ/sJ,KAAK2H,IAAIipH,EAAK9xH,EAAI+xH,EAAK/xH,GACtIguJ,EAAQD,GAAWE,EAAQF,GAC3BN,GAAehwJ,EAAW83B,EAAI0E,EAEtC,IAER,CACJ,CACA80G,SAAAA,CAAUzc,GACN,MAAM70H,EAAYwH,KAAKxH,UAAW4jI,EAAQ5jI,EAAUoF,cAAcw+H,MAAOK,GAAUpP,GAAUzvH,eAAiBpF,EAAUg9H,cAAc53H,eAAe6+H,OACrJ,SAAMA,EAAO2B,QAAQ5S,SAAU4Q,EAAMx/H,WAG9B0tH,GA3CK,UA2CkBmS,EAAO2B,QAAQjjI,KACjD,CACA4nI,eAAAA,CAAgBx9D,GACPA,EAAQ0iF,UACT1iF,EAAQ0iF,QAAU,IAAIN,IACzB,QAAA18B,EAAA7yH,UAAAC,OAHuBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI/B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQ0iF,QAAQ55I,KAAK8rC,GAAQ8tG,QAErC,CACAl4H,KAAAA,GACA,ECxDG,MAAMk5H,GACT5mJ,WAAAA,GACIrC,KAAK4yH,OAAQ,EACb5yH,KAAK6yH,SAAU,EACf7yH,KAAKw4C,QAAU,CACnB,CACAnqC,IAAAA,CAAKtF,GACIA,SAGc9Q,IAAf8Q,EAAK6pH,QACL5yH,KAAK4yH,MAAQ7pH,EAAK6pH,YAEH36H,IAAf8Q,EAAK/B,QACLhH,KAAKgH,MAAQ26H,GAAan1B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,aAEjC/O,IAAjB8Q,EAAK8pH,UACL7yH,KAAK6yH,QAAU9pH,EAAK8pH,cAEH56H,IAAjB8Q,EAAKyvC,UACLx4C,KAAKw4C,QAAUzvC,EAAKyvC,SAE5B,ECtBG,MAAM0wG,GACT7mJ,WAAAA,GACIrC,KAAKqnC,SAAW,IAChBrnC,KAAK4nJ,MAAQ,IAAIqB,EACrB,CACA56I,IAAAA,CAAKtF,GACIA,SAGiB9Q,IAAlB8Q,EAAKs+B,WACLrnC,KAAKqnC,SAAWt+B,EAAKs+B,UAEzBrnC,KAAK4nJ,MAAMv5I,KAAKtF,EAAK6+I,OACzB,ECNG,SAASuB,GAAS3wJ,EAAW60H,EAAU+7B,EAAW5wG,EAAS6jF,GAC9D7jI,EAAU0X,OAAO4mH,MAAK3mH,IAClB,MAAMk5I,EAAWh8B,EAASlB,eAR3B,SAAsBp1D,EAASj8D,EAAO44H,EAAO34G,EAAKuuI,EAAW9wG,GAChEi7E,GAAS18D,EAAS28D,EAAO34G,GACzBg8C,EAAQxB,YAAcq8D,GAAgB03B,EAAW9wG,GACjDue,EAAQvP,UAAY1sD,EACpBi8D,EAAQjC,QACZ,CAIQy0F,CAAap5I,EAAKk9G,EAASoM,OAAOivB,YAVrB,EAUiDW,EAAUhtB,EAAU+sB,EAAW5wG,EAAQ,GAE7G,CCTO,MAAMgxG,WAAgBxM,GACzB36I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,EACV,CACAm7H,KAAAA,GACA,CACA74G,IAAAA,GACI,MAAMtiB,EAAYwH,KAAKxH,UAAWixJ,EAAOjxJ,EAAUg9H,cAAc53H,cAAcqlI,MAAMwmB,KAChFA,IAGLjxJ,EAAUihI,OAAOiwB,iBAAmBD,EAAKpiH,SAAW7uC,EAAUihI,OAAOD,WACzE,CACAuQ,QAAAA,GACI,MAAMvxI,EAAYwH,KAAKxH,UAA8CoF,EAAzBpF,EAAUg9H,cAAuC53H,cAC7F,IAAKA,EAAcqlI,MAAMwmB,OACpB7rJ,EAAc6+H,OAAO2B,QAAQ5S,QAC9BhzH,EAAUoF,cAAciR,SAAWm2G,EACnC,OAEJ,MAAMqX,EAAW7jI,EAAUoF,cAAcw+H,MAAMx/H,SAC/C,IAAKy/H,EACD,OAEJ,MAAMh1F,EAAW7uC,EAAUihI,OAAOiwB,iBAClC,IAAKriH,GAAYA,EA1Bc,EA2B3B,OAEJ,MAAM+iF,EAAQ5xH,EAAUg+H,UAAUgd,SAASjC,YAAYlV,EAAUh1F,GAAU3gC,GAAK1G,KAAK8pI,UAAUpjI,KAC/F,IAAK,MAAM2mH,KAAYjD,EAAO,CAC1B,MAAoC7pF,EAAgB+nF,EAAxC+E,EAASlB,cAAgDkQ,GACrE,GAAI97F,EAAgB8G,EAChB,SAEJ,MAAMsiH,EAAkB/rJ,EAAcqlI,MAAMwmB,KAAK7B,MAAOgC,EAAcD,EAAgBnxG,QAASqxG,EAAcD,EAAerpH,EAAgBqpH,EAAeviH,EAC3J,GAAIwiH,GApCuC,EAqCvC,SAEJ,MAAMl3B,EAAWg3B,EAAgB3iJ,OAASqmH,EAAS9nD,QAAQqiF,OAAO5gJ,MAClE,IAAKxO,EAAUg+H,UAAUszB,eAAiBn3B,EAAU,CAChD,MAAMo3B,EAAensJ,EAAcqlI,MAAMwmB,KAAK7B,MAC9CpvJ,EAAUg+H,UAAUszB,cAAgBp3B,GAAmBC,EAAUo3B,EAAan3B,MAAOm3B,EAAal3B,QACtG,CACA,MAAMy2B,EAAYn3B,GAAa9E,OAAUp1H,EAAWO,EAAUg+H,UAAUszB,eACnER,GAGLH,GAAS3wJ,EAAW60H,EAAUi8B,EAAWO,EAAaxtB,EAC1D,CACJ,CACAyN,SAAAA,CAAUzc,GACN,MAAM70H,EAAYwH,KAAKxH,UAAW4jI,EAAQ5jI,EAAUoF,cAAcw+H,MAAOK,GAAUpP,GAAUzvH,eAAiBpF,EAAUg9H,cAAc53H,eAAe6+H,OACrJ,OAAOA,EAAO2B,QAAQ5S,UAAY4Q,EAAMx/H,UAAY0tH,GArD3C,OAqD+DmS,EAAO2B,QAAQjjI,KAC3F,CACA4nI,eAAAA,CAAgBx9D,GACPA,EAAQkkF,OACTlkF,EAAQkkF,KAAO,IAAIP,IACtB,QAAAj+B,EAAA7yH,UAAAC,OAHuBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI/B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQkkF,KAAKp7I,KAAK8rC,GAAQsvG,KAElC,CACA15H,KAAAA,GACA,ECjEG,MAAMi6H,WAAehN,GACxB36I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,GACNwH,KAAK08H,gBAAmBvhI,IACpB,GALM,UAKFA,EACA,OAEJ,MAAM3C,EAAYwH,KAAKxH,UACnBA,EAAUglI,gBACVhlI,EAAUxB,QAGVwB,EAAU5B,MACd,CAER,CACA+8H,KAAAA,GACA,CACA74G,IAAAA,GACA,CACAivH,QAAAA,GACA,CACAD,SAAAA,GACI,OAAO,CACX,CACA/5G,KAAAA,GACA,EC3BG,MAAMk6H,GACT5nJ,WAAAA,GACIrC,KAAKygH,SAAU,EACfzgH,KAAKunI,OAAS,GACdvnI,KAAKs0I,SAAW,CACpB,CACAjmI,IAAAA,CAAKtF,GACD,IAAKA,EACD,YAEiB9Q,IAAjB8Q,EAAK03G,UACLzgH,KAAKygH,QAAU13G,EAAK03G,cAEJxoH,IAAhB8Q,EAAKw+H,SACLvnI,KAAKunI,OAASx+H,EAAKw+H,OAAOjuI,KAAIsN,GAAKA,KAElC5G,KAAKunI,OAAOlvI,SACb2H,KAAKygH,SAAU,GAEnB,MAAM6zB,EAAWvrI,EAAKurI,cACLr8I,IAAbq8I,IACAt0I,KAAKs0I,SAAWtsB,EAAcssB,GAEtC,ECrBG,MAAM4V,WAAelN,GACxB36I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,GACNwH,KAAK08H,gBAAmBvhI,IACpB,GALK,SAKDA,EACA,OAEJ,MAAM3C,EAAYwH,KAAKxH,UAA8C2xJ,EAAzB3xJ,EAAUg9H,cAAqC53H,cAAcqlI,MAAM3iI,KAC/G,IAAK6pJ,EACD,OAEJ,MAAM7V,EAAWvsB,EAAcoiC,EAAY7V,UAC3C,GAAIA,GAbuB,EAcvB,OAEJ,MAAMluG,EAAQskF,GAAc,MAACzyH,KAAckyJ,EAAY5iB,SAAU0M,OAAyBh8I,IAAVmuC,EAAsB5tC,EAAUg9H,cAAcgB,UAAU+Q,OAAOnhG,QAASnuC,EACnJO,EAAUg+H,UAAUl2H,KAAKg0I,EAAU97I,EAAUoF,cAAcw+H,MAAO6X,EAAc7tG,EAAM,CAEnG,CACAutF,KAAAA,GACA,CACA74G,IAAAA,GACA,CACAivH,QAAAA,GACA,CACAD,SAAAA,GACI,OAAO,CACX,CACA/G,eAAAA,CAAgBx9D,GACPA,EAAQjlE,OACTilE,EAAQjlE,KAAO,IAAI2pJ,IACtB,QAAAh/B,EAAA7yH,UAAAC,OAHuBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI/B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQjlE,KAAK+N,KAAK8rC,GAAQ75C,KAElC,CACAyvB,KAAAA,GACA,ECvCG,MAAMq6H,GACT/nJ,WAAAA,GACIrC,KAAKs0I,SAAW,CACpB,CACAjmI,IAAAA,CAAKtF,GACD,IAAKA,EACD,OAEJ,MAAMurI,EAAWvrI,EAAKurI,cACLr8I,IAAbq8I,IACAt0I,KAAKs0I,SAAWtsB,EAAcssB,GAEtC,ECVG,MAAM+V,WAAgBrN,GACzB36I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,GACNwH,KAAK08H,gBAAmBvhI,IACpB,MAAM3C,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cACtD,IAAKjwD,EAAQ3nE,cAAcqlI,MAAMnL,QAN1B,WAMoC38H,EACvC,OAEJ,MAAMmvJ,EAAWviC,EAAcxiD,EAAQ3nE,cAAcqlI,MAAMnL,OAAOwc,UAClE97I,EAAUg+H,UAAUgc,eAAe8X,EAAS,CAEpD,CACA32B,KAAAA,GACA,CACA74G,IAAAA,GACA,CACAivH,QAAAA,GACA,CACAD,SAAAA,GACI,OAAO,CACX,CACA/G,eAAAA,CAAgBx9D,GACPA,EAAQuyD,SACTvyD,EAAQuyD,OAAS,IAAIsyB,IACxB,QAAAn/B,EAAA7yH,UAAAC,OAHuBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI/B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQuyD,OAAOzpH,KAAK8rC,GAAQ29E,OAEpC,CACA/nG,KAAAA,GACA,EChCG,MAAMw6H,GACTloJ,WAAAA,GACIrC,KAAKqnC,SAAW,IAChBrnC,KAAKuU,SAAW,GAChBvU,KAAKiqH,OAAS,IACdjqH,KAAK9I,MAAQ,EACb8I,KAAK8kI,SAAW,GAChB9kI,KAAKmnH,OAASs1B,GAAWyG,WAC7B,CACA70I,IAAAA,CAAKtF,GACIA,SAGiB9Q,IAAlB8Q,EAAKs+B,WACLrnC,KAAKqnC,SAAWt+B,EAAKs+B,eAEHpvC,IAAlB8Q,EAAKwL,WACLvU,KAAKuU,SAAWxL,EAAKwL,eAELtc,IAAhB8Q,EAAKo+G,SACLnnH,KAAKmnH,OAASp+G,EAAKo+G,aAEHlvH,IAAhB8Q,EAAKkhH,SACLjqH,KAAKiqH,OAASlhH,EAAKkhH,aAEJhyH,IAAf8Q,EAAK7R,QACL8I,KAAK9I,MAAQ6R,EAAK7R,YAEAe,IAAlB8Q,EAAK+7H,WACL9kI,KAAK8kI,SAAW/7H,EAAK+7H,UAE7B,EC/BG,MAAM0lB,WAAmBD,GAC5BloJ,WAAAA,GACIokH,QACAzmH,KAAK4rH,UAAY,EACrB,CACAv9G,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,GACNA,QAGkB9Q,IAAnB8Q,EAAK6iH,YACL5rH,KAAK4rH,UAAY7iH,EAAK6iH,UAE9B,ECXG,MAAM6+B,WAAgBF,GACzBl8I,IAAAA,CAAKtF,GACD09G,MAAMp4G,KAAKtF,GACNA,IAGL/I,KAAKsrH,KAAOI,GAA0B3iH,EAAKuiH,MAAMhuG,IAC7C,MAAMmlH,EAAM,IAAI+nB,GAEhB,OADA/nB,EAAIp0H,KAAKiP,GACFmlH,CAAG,IAElB,ECZJ,MAAMioB,GAAc,UACb,MAAMC,WAAiB3N,GAC1B36I,WAAAA,CAAYmoC,EAAQhyC,GAChBiuH,MAAMjuH,GACNwH,KAAK4qJ,cAAgB,KACjB,MAAMpyJ,EAAYwH,KAAKxH,UAAWqyJ,EAAiBryJ,EAAUg9H,cAAc53H,cAAcqlI,MAAM6nB,QAC/F,IAAKD,EACD,OAEJ,MAAMC,EAAUtyJ,EAAUsyJ,SAAW,CAAEt0B,UAAW,IAUlD,GATKs0B,EAAQzH,SACJyH,EAAQziH,QACTyiH,EAAQziH,MAAQ,GAEpByiH,EAAQziH,QACJyiH,EAAQziH,QAAU7vC,EAAUg+H,UAAUnuF,QACtCyiH,EAAQzH,QAAS,IAGrByH,EAAQ/qB,SAAU,CAClB,MAAMgrB,EAAkBvyJ,EAAUihI,OAAOuxB,oBACzC,IAAKD,GAAmBA,EArBK,EAsBzB,OAEJ,MAAMtD,EAAgBxrJ,KAAK8G,IAAIgoJ,EAxBuB,EAAwB,GAwBavF,EAAgBhtJ,EAAUoF,cAAcw+H,MAAME,cACzI,QAAsBrkI,IAAlButJ,EACA,OAEJ,MAAMvsD,EAAQ,IAAIs3C,GAAOiV,EAAc5qJ,EAAG4qJ,EAAczqJ,EAAG0sJ,GAAgBr9B,EAAQ5xH,EAAUg+H,UAAUgd,SAASppB,MAAMnxB,GAAOvyF,GAAK1G,KAAK8pI,UAAUpjI,KACjJ,IAAK,MAAM2mH,KAAYjD,EAAO,CAC1B,MAAM,GAAEhC,EAAE,GAAEC,EAAE,SAAEhhF,GAAa4gF,EAAau9B,EAAen4B,EAASzwH,UAAWkK,EAAIugC,GA9BU,EA8BgD+6F,GAAUqlB,EAAhCoD,EAAe3zJ,MAA6C4P,EACjL,GAAIA,GAAK2gJ,EAAe,CACpBqD,EAAQt0B,UAAUl2H,KAAK+sH,GACvB,MAAM49B,EAAOzkC,EAAOha,OAAO4b,EAAIC,GAC/B4iC,EAAK5yJ,OAAS+pI,EACd/U,EAAS3gD,SAAS25C,MAAM4kC,EAC5B,CACJ,CACJ,MACK,IAAyB,IAArBH,EAAQ/qB,SAAoB,CACjC,IAAK,MAAM1S,KAAYy9B,EAAQt0B,UAC3BnJ,EAAS3gD,SAAS25C,MAAMgH,EAAS+hB,iBAErC0b,EAAQt0B,UAAY,EACxB,GAEJx2H,KAAKkrJ,cAAgB,KACjB,MAAM1yJ,EAAYwH,KAAKxH,UAAW6jI,EAAW7jI,EAAUoF,cAAcw+H,MAAMx/H,SAAU6qJ,EAAgBjvJ,EAAUihI,OAAOuxB,qBACjHvD,GAAiBA,EAhD4F,IAgD9DprB,GAGpDr8H,KAAKmrJ,gBAAgB9uB,EAAUorB,EAAe,IAAIlX,GAAOlU,EAASzhI,EAAGyhI,EAASthI,EAAG0sJ,GAAe,EAEpGznJ,KAAKmrJ,gBAAkB,CAACvuJ,EAAU6qJ,EAAer/D,EAAMgjE,KACnD,MAAM5yJ,EAAYwH,KAAKxH,UAAW4xH,EAAQ5xH,EAAUg+H,UAAUgd,SAASppB,MAAMhiC,GAAM1hF,GAAK1G,KAAK8pI,UAAUpjI,KAAKmkJ,EAAiBryJ,EAAUg9H,cAAc53H,cAAcqlI,MAAM6nB,QACzK,IAAKD,EACD,OAEJ,MAAM,OAAE1jC,EAAM,MAAEjwH,EAAK,OAAE+yH,EAAM,SAAE6a,GAAa+lB,EAAgBQ,EAAajkC,EAAUD,GAASz6C,GAAY0+E,GAAYl0J,OAASA,GAAS+yH,EACtI,IAAK,MAAMoD,KAAYjD,EAAO,CAC1B,MAAM,GAAEhC,EAAE,GAAEC,EAAE,SAAEhhF,GAAa4gF,EAAaoF,EAASzwH,SAAUA,GAAW0uJ,EAAgBjjF,EAAMgjF,EA5DgD,EA4DtBhkH,EAAWogH,GAAiB/6E,EA5DxB,EA4D4Co4D,GAAWke,EAAUx8B,EAAOha,OAAQnlE,EAAuB+gF,EAAK/gF,EAAYikH,EAA7B5+E,EAA6CrlC,EAAuBghF,EAAKhhF,EAAYikH,EAA7B5+E,GAC/Q2gD,EAASzwH,SAASopH,MAAMg9B,EAC5B,GAEJhjJ,KAAKurJ,uBAAyB,CAAC1/B,EAAUvuG,KACrC,MAAM9kB,EAAYwH,KAAKxH,UAAWsyJ,EAAUtyJ,EAAUg9H,cAAc53H,cAAcqlI,MAAM6nB,QACxF,IAAKA,EACD,OAEJ,MAAM1gC,EAAQ/tH,SAASsxC,iBAAiBk+E,GACnCzB,EAAM/xH,QAGX+xH,EAAM3wH,SAAQ0lE,IACV,MAAM/iD,EAAO+iD,EAAM0uD,EAAUr1H,EAAUihI,OAAOD,WAAY98H,EAAM,CAC5D9B,GAAIwhB,EAAKkoI,WA3E2I,GA2E9HloI,EAAK4tB,aAAsB6jF,EACjD9yH,GAAIqhB,EAAKmoI,UA5E2I,GA4E/HnoI,EAAKwhD,cAAuBiwD,GAClD45B,EA7EqJ,GA6ErIrrI,EAAK4tB,YAAqB6jF,EAASzlC,EAAO9qE,EAAIxhB,OAAS4lI,GAAQQ,OAC5E,IAAIqO,GAAO7zI,EAAI9B,EAAG8B,EAAI3B,EAAG0sJ,GACzB,IAAI/W,GAAUt0H,EAAKkoI,WAAaz2B,EAASzxG,EAAKmoI,UAAY12B,EAASzxG,EAAK4tB,YAAc6jF,EAASzxG,EAAKwhD,aAAeiwD,GAA+Bu9B,EAAaz/B,GAA3Bm/B,EAAQx/B,KAAiClvG,GACnLpc,KAAKmrJ,gBAAgBzuJ,EAAK+qJ,EAAer/D,EAAMgjE,EAAW,GAC5D,EAENprJ,KAAK2iI,QAAUn4F,EACVhyC,EAAUsyJ,UACXtyJ,EAAUsyJ,QAAU,CAAEt0B,UAAW,KAErCx2H,KAAK08H,gBAAmBvhI,IACpB,MAA8CqwJ,EAA9BxrJ,KAAKxH,UAAUg9H,cAAqC53H,cAAcqlI,MAAM6nB,QACxF,IAAKU,GAAerwJ,IAASuvJ,GACzB,OAEClyJ,EAAUsyJ,UACXtyJ,EAAUsyJ,QAAU,CAAEt0B,UAAW,KAErC,MAAMs0B,EAAUtyJ,EAAUsyJ,QAC1BA,EAAQ/qB,UAAW,EACnB+qB,EAAQziH,MAAQ,EAChB,IAAK,MAAMglF,KAAY70H,EAAUsyJ,QAAQt0B,UAChCx2H,KAAK8pI,UAAUzc,IAGpBA,EAAS3gD,SAAS25C,MAAMgH,EAAS+hB,iBAErC0b,EAAQt0B,UAAY,GACpBs0B,EAAQzH,QAAS,EACjB9pI,YAAW,KACH/gB,EAAU23D,YAGd26F,EAAQ/qB,UAAW,EAAK,GACzByrB,EAAYj3I,SAAW6wG,EAAsB,CAExD,CACAuO,KAAAA,GACA,CACA74G,IAAAA,GACI,MAAMtiB,EAAYwH,KAAKxH,UAAWsyJ,EAAUtyJ,EAAUg9H,cAAc53H,cAAcqlI,MAAM6nB,QACnFA,IAGLtyJ,EAAUihI,OAAOuxB,oBAAsBF,EAAQzjH,SAAW7uC,EAAUihI,OAAOD,WAC/E,CACAuQ,QAAAA,GACI,MAAMvxI,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAe+tB,EAAkB/qJ,EAAUoF,cAAciR,SAAWm2G,EAAgByX,EAASl3D,EAAQ3nE,cAAc6+H,OAAQgvB,EAAQhvB,EAAO2B,QAASolB,EAAeiI,EAAMjgC,OAAQi4B,EAAYgI,EAAMtwJ,KAAMuwJ,EAAQjvB,EAAOxnB,QAASyuC,EAAegI,EAAMlgC,OAAQm4B,EAAY+H,EAAMvwJ,KAAMmwH,EAAOmR,EAAO+F,MACrV+gB,GAAmBC,GAAgBl5B,GAAUogC,GAAajH,GAC1DzjJ,KAAKkrJ,gBAEAxH,GAAgBp5B,GAAUogC,GAAa/G,GAC5C3jJ,KAAK4qJ,gBAGLn/B,GAAei/B,GAAap/B,GAAM,CAACO,EAAUvuG,IAAQtd,KAAKurJ,uBAAuB1/B,EAAUvuG,IAEnG,CACAwsH,SAAAA,CAAUzc,GACN,MAAM70H,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAe4G,EAAQ5jI,EAAUoF,cAAcw+H,MAAOK,GAAUpP,GAAUzvH,eAAiB2nE,EAAQ3nE,eAAe6+H,OAAQnR,EAAOmR,EAAO+F,MAAOipB,EAAQhvB,EAAO2B,QAASstB,EAAQjvB,EAAOxnB,QAASm2C,EAAa//B,GAAiBq/B,GAAap/B,GAChS,KAAM8/B,GAAeK,EAAMjgC,QAAY4Q,EAAMx/H,UAAc8uJ,EAAMlgC,QAAU4Q,EAAME,eAC7E,OAAO,EAEX,MAAMmnB,EAAYgI,EAAMtwJ,KAAMwoJ,EAAY+H,EAAMvwJ,KAChD,OAAOmvH,GAAUogC,GAAajH,IAAcn5B,GAAUogC,GAAa/G,IAAcyH,CACrF,CACAroB,eAAAA,CAAgBx9D,GACPA,EAAQulF,UACTvlF,EAAQulF,QAAU,IAAIL,IACzB,QAAAx/B,EAAA7yH,UAAAC,OAHuBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI/B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQulF,QAAQz8I,KAAK8rC,GAAQ2wG,QAErC,CACA/6H,KAAAA,GACA,EC1JG,MAAM47H,GACTtpJ,WAAAA,GACIrC,KAAKiqH,OAAS,EACdjqH,KAAKkjC,OAAS,GAClB,CACA70B,IAAAA,CAAKtF,GACIA,SAGe9Q,IAAhB8Q,EAAKkhH,SACLjqH,KAAKiqH,OAASlhH,EAAKkhH,aAEHhyH,IAAhB8Q,EAAKm6B,SACLljC,KAAKkjC,OAASn6B,EAAKm6B,QAE3B,ECZG,MAAM0oH,WAAe5O,GACxB36I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,EACV,CACAm7H,KAAAA,CAAMtG,EAAUhvF,EAAO+jG,GACf/U,EAASggB,KAAKD,UAAYhL,IAG9B/U,EAASggB,KAAKpjB,OAAS,EAC3B,CACAnvG,IAAAA,GACI,MAAMtiB,EAAYwH,KAAKxH,UAAW60I,EAAO70I,EAAUg9H,cAAc53H,cAAcqlI,MAAMoK,KAChFA,IAGL70I,EAAUihI,OAAOoyB,eAAiBxe,EAAKnqG,OAAS1qC,EAAUihI,OAAOD,WACrE,CACAuQ,QAAAA,GACA,CACAD,SAAAA,CAAUzc,GACN,MAAM70H,EAAYwH,KAAKxH,UAAW4jI,EAAQ5jI,EAAUoF,cAAcw+H,MAAOK,GAAUpP,GAAUzvH,eAAiBpF,EAAUg9H,cAAc53H,eAAe6+H,OACrJ,OAAOA,EAAO2B,QAAQ5S,UAAY4Q,EAAMx/H,UAAY0tH,GAtB3C,OAsB+DmS,EAAO2B,QAAQjjI,KAC3F,CACA4nI,eAAAA,CAAgBx9D,GACPA,EAAQ8nE,OACT9nE,EAAQ8nE,KAAO,IAAIse,IACtB,QAAA1gC,EAAA7yH,UAAAC,OAHuBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI/B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQ8nE,KAAKh/H,KAAK8rC,GAAQkzF,KAElC,CACAt9G,KAAAA,CAAMs9F,GACFA,EAASggB,KAAKD,SAAU,EACxB,MAAM50I,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAe6G,EAAW7jI,EAAUoF,cAAcw+H,MAAMx/H,SAAUsmC,EAAS1qC,EAAUihI,OAAOoyB,eAAgBC,EAAcvmF,EAAQ3nE,cAAcqlI,MAAMoK,KAC5M,IAAKye,IAAgB5oH,GAAUA,EAnCF,IAmCyBm5F,EAClD,OAEJ,MAA4Cp6F,EAAOqmF,EAAY+T,EAA3ChP,EAASlB,eAA0D4/B,EAAkB9pH,EAAOiB,EAAQm7G,EAAayN,EAAY7hC,QAAQ,KAAEojB,GAAShgB,EAChKprF,EAAOiB,IAGXmqG,EAAKD,SAAU,EACfC,EAAKpjB,OAAS8hC,EAAkB1N,EACpC,EC7CJ,MAAM2N,GAAc,EACdC,GAAoB,uGAanBzhC,eAAe0hC,GAAUp2B,GAC5B,OAAO,IAAIr1B,SAASG,IAChBk1B,EAAMq2B,SAAU,EAChB,MAAM/6I,EAAM,IAAIoxD,MAChBszD,EAAMvxH,QAAU6M,EAChBA,EAAI7X,iBAAiB,QAAQ,KACzBu8H,EAAMq2B,SAAU,EAChBvrD,GAAS,IAEbxvF,EAAI7X,iBAAiB,SAAS,KAC1Bu8H,EAAMvxH,aAAUtM,EAChB69H,EAAM9mH,OAAQ,EACd8mH,EAAMq2B,SAAU,EAChB1iC,IAAYz6G,MAAM,GAAGk2G,oBAA8B4Q,EAAM37E,UACzDymD,GAAS,IAEbxvF,EAAIvQ,IAAMi1H,EAAM37E,MAAM,GAE9B,CACOqwE,eAAe4hC,GAAiBt2B,GACnC,GAAmB,QAAfA,EAAMh6H,KAEN,kBADMowJ,GAAUp2B,GAGpBA,EAAMq2B,SAAU,EAChB,MAAMh+I,QAAiB44D,MAAM+uD,EAAM37E,QAC9BhsC,EAAS+pG,GAKV4d,EAAMu2B,cAAgBl+I,EAAS88B,QAJ/Bw+E,IAAYz6G,MAAM,GAAGk2G,qBACrB4Q,EAAM9mH,OAAQ,GAKlB8mH,EAAMq2B,SAAU,CACpB,CACO,SAASG,GAAkBx2B,EAAOy2B,EAAWvlJ,EAAOqmH,GACvD,MAAMm/B,EAhDV,SAAyBC,EAAYzlJ,EAAOwxC,GACxC,MAAM,QAAE6zG,GAAYI,EACpB,IAAKJ,EACD,MAAO,GAEX,MAAMK,EAAa76B,GAAgB7qH,EAAOwxC,GAC1C,GAAI6zG,EAAQvqE,SAAS,QACjB,OAAOuqE,EAAQxuI,QAAQouI,IAAmB,IAAMS,IAEpD,MAAMC,EAAeN,EAAQn+I,QAAQ,KACrC,MAAO,GAAGm+I,EAAQn+E,UAAU89E,GAAaW,YAAuBD,KAAcL,EAAQn+E,UAAUy+E,IACpG,CAqC2BC,CAAgB92B,EAAO9uH,EAAOqmH,EAAS70E,SAASphD,OAlDnC,GAkD6Dy1J,EAAW,CACxG7lJ,QACA8lJ,IAAKP,EAAUO,IACf/jJ,KAAM,IACC+sH,EACHu2B,QAASG,GAEbl/G,QAAQ,EACRynG,MAAOwX,EAAUzxJ,MAAQyxJ,EAAUlyJ,OACnC0yJ,aAAcR,EAAUQ,aACxB5yG,OAAQoyG,EAAU1rJ,KAEtB,OAAO,IAAI4/F,SAAQG,IACf,MAAM1tC,EAAM,IAAI9pD,KAAK,CAACojJ,GAAiB,CAAE1wJ,KAAM,kBAAoBkxJ,EAASzjJ,KAAOjP,OAAOiP,KAAOjP,OAAO2yJ,WAAa3yJ,OAAQgP,EAAM0jJ,EAAOxjJ,gBAAgB0pD,GAAM9hD,EAAM,IAAIoxD,MAC1KpxD,EAAI7X,iBAAiB,QAAQ,KACzBszJ,EAASv/G,QAAS,EAClBu/G,EAAStoJ,QAAU6M,EACnBwvF,EAAQisD,GACRG,EAAOE,gBAAgB5jJ,EAAI,IAc/B8H,EAAI7X,iBAAiB,SAAS,KAZTixH,WACjBwiC,EAAOE,gBAAgB5jJ,GACvB,MAAM6jJ,EAAO,IACNr3B,EACH9mH,OAAO,EACPm9I,SAAS,SAEPD,GAAUiB,GAChBN,EAASv/G,QAAS,EAClBu/G,EAAStoJ,QAAU4oJ,EAAK5oJ,QACxBq8F,EAAQisD,EAAS,EAEoBO,EAAc,IACvDh8I,EAAIvQ,IAAMyI,CAAG,GAErB,CCtFO,MAAM+jJ,GAAmB,CAAC,EAAG,EAAG,EAAG,GAC7BC,GAAiB,CAAC,EAAG,EAAG,EAAG,GCDjC,MAAMC,GACTlrJ,WAAAA,CAAYmrJ,GACRxtJ,KAAKtD,IAAM,EACXsD,KAAK+I,KAAO,IAAInH,kBAAkB4rJ,EACtC,CACAC,SAAAA,CAAUplH,GACN,MAAMtrB,EAAQ/c,KAAK+I,KAAKgU,MAAM/c,KAAKtD,IAAKsD,KAAKtD,IAAM2rC,GAEnD,OADAroC,KAAKtD,KAAOqgB,EAAM1kB,OACX0kB,EAAM2wI,QAAO,CAACC,EAAKC,IAASD,EAAM78F,OAAOC,aAAa68F,IAAO,GACxE,CACAC,QAAAA,GACI,OAAO7tJ,KAAK+I,KAAK/I,KAAKtD,MAC1B,CACAoxJ,YAAAA,GAGI,OADA9tJ,KAAKtD,KADa,EAEXsD,KAAK+I,KAAK/I,KAAKtD,IAFJ,IAEwBsD,KAAK+I,KAAK/I,KAAKtD,IAFzB,IAAW,EAG/C,CACAqxJ,aAAAA,GACI,IAAIC,EAAc,GAAIjlH,EAAO,EAE7B,EAAG,CACCA,EAAO/oC,KAAK+I,KAAK/I,KAAKtD,OACtB,IAAK,IAAI2rC,EAAQU,IAAQV,GAHZ,EAG+B2lH,GAAel9F,OAAOC,aAAa/wD,KAAK+I,KAAK/I,KAAKtD,SAElG,OALgC,IAKvBqsC,GACT,OAAOilH,CACX,CACAC,gBAAAA,GACI,IAAIllH,EAAO/oC,KAAK+I,KAAK/I,KAAKtD,KAAMuC,EAAM,EAEtC,IAAK,IAAIgI,EAAS,EADA,IACG8hC,EAAoB9hC,GAAU8hC,EADlB,EACoCA,EAAO/oC,KAAK+I,KAAK/I,KAAKtD,IAAMuK,GAC7FhI,GAAO8pC,EAEX,MAAMmlH,EAAY,IAAIvoF,WAAW1mE,GACjC8pC,EAAO/oC,KAAK+I,KAAK/I,KAAKtD,OACtB,IAAK,IAAIqC,EAAI,EANK,IAMFgqC,EAAoBA,EAAO/oC,KAAK+I,KAAK/I,KAAKtD,OACtD,IAAK,IAAI2rC,EAAQU,IAAQV,GAPX,EAO+B6lH,EAAUnvJ,KAAOiB,KAAK+I,KAAK/I,KAAKtD,QAGjF,OAAOwxJ,CACX,CACAC,aAAAA,GACI,IAAK,MAAM7iB,EAAY,EAAG8iB,EAAS,EAAGpuJ,KAAK+I,KAAK/I,KAAKtD,OAAS0xJ,EAAQpuJ,KAAKtD,KAAOsD,KAAK+I,KAAK/I,KAAKtD,KAAO4uI,GAExGtrI,KAAKtD,KACT,EC9CG,IAAI2xJ,GCAAC,IDCX,SAAWD,GACPA,EAAeA,EAAwB,QAAI,GAAK,UAChDA,EAAeA,EAAwB,QAAI,GAAK,UAChDA,EAAeA,EAAkC,kBAAI,GAAK,oBAC1DA,EAAeA,EAAgC,gBAAI,GAAK,kBACxDA,EAAeA,EAA2B,WAAI,GAAK,aACnDA,EAAeA,EAA2B,WAAI,GAAK,aACnDA,EAAeA,EAA2B,WAAI,GAAK,aACnDA,EAAeA,EAA2B,WAAI,GAAK,YACtD,CATD,CASGA,KAAmBA,GAAiB,CAAC,ICTxC,SAAWC,GACPA,EAAeA,EAA0B,UAAI,IAAM,YACnDA,EAAeA,EAAqC,qBAAI,KAAO,uBAC/DA,EAAeA,EAAyC,yBAAI,KAAO,2BACnEA,EAAeA,EAAmC,mBAAI,GAAK,qBAC3DA,EAAeA,EAAiC,iBAAI,KAAO,mBAC3DA,EAAeA,EAAsB,MAAI,IAAM,QAC/CA,EAAeA,EAA0B,UAAI,IAAM,WACtD,CARD,CAQGA,KAAmBA,GAAiB,CAAC,ICJxC,MAAM3+I,GACC,EADDA,GAEC,EAC2D4+I,GAAmB,EACrF,SAASC,GAAgBC,EAAYpmH,GACjC,MAAMqmH,EAAS,GACf,IAAK,IAAI3vJ,EAAI,EAAGA,EAAIspC,EAAOtpC,IACvB2vJ,EAAOpuJ,KAAK,CACRgG,EAAGmoJ,EAAW1lJ,KAAK0lJ,EAAW/xJ,KAC9B6J,EAAGkoJ,EAAW1lJ,KAAK0lJ,EAAW/xJ,IAAM,GACpC8J,EAAGioJ,EAAW1lJ,KAAK0lJ,EAAW/xJ,IAAM,KAExC+xJ,EAAW/xJ,KAAO,EAEtB,OAAOgyJ,CACX,CAwLAlkC,eAAemkC,GAAWF,EAAY3B,EAAK8B,EAAUC,EAAeC,EAAsBC,GACtF,OAAQN,EAAWZ,YACf,KAAKS,GAAeU,UAChB,OAAO,EACX,KAAKV,GAAe9rF,YAlI5BgoD,eAA+BikC,EAAY3B,EAAK8B,EAAUC,EAAeC,EAAsBC,GAC3F,MAAM9W,EAAQ6U,EAAI/wJ,OAAO8yJ,GAAc,IACvC5W,EAAMp9I,KAAO4zJ,EAAWX,eACxB7V,EAAM79I,IAAMq0J,EAAWX,eACvB7V,EAAMn9I,MAAQ2zJ,EAAWX,eACzB7V,EAAM59I,OAASo0J,EAAWX,eAC1B,MAAMmB,EAAaR,EAAWZ,WAAYqB,EAA8C,OAAV,IAAbD,GAA6BE,EAAyC,MAAV,GAAbF,GAChHhX,EAAMmX,SAAmC,MAAV,GAAbH,GAClBhX,EAAMoX,UAAyB,GAAbJ,KAAuB,EACzC,MAAMK,EAAkB,GAAyB,GAAL,EAAbL,GAC3BC,IACAjX,EAAMsX,gBAAkBf,GAAgBC,EAAYa,IAExD,MAAME,EAAYh0I,IACd,MAAM,EAAElV,EAAC,EAAEC,EAAC,EAAEC,IAAO0oJ,EAAsBjX,EAAMsX,gBAAkBzC,EAAI2C,kBAAkBj0I,GACzF,OAAIA,IAAUszI,EAAqB,MACxB,CAAExoJ,IAAGC,IAAGC,IAAGoG,EAAG,KAElB,CAAEtG,IAAGC,IAAGC,IAAGoG,EAAGgiJ,MAAetoJ,EAAIC,EAAIC,GAAK,GAAK,EAAG,EAEvDsvH,EAAQ,MACV,IACI,OAAO,IAAI45B,UAAUzX,EAAMn9I,MAAOm9I,EAAM59I,OAAQ,CAAEs1J,WAAY,QAClE,CACA,MAAO3gJ,GACH,GAAIA,aAAiB4gJ,cAA+B,mBAAf5gJ,EAAMnZ,KACvC,OAAO,KAEX,MAAMmZ,CACV,CACH,EAVa,GAWd,GAAa,MAAT8mH,EACA,MAAM,IAAI+5B,UAAU,8BAExB,MAAMC,EAAcrB,EAAWZ,WAAYtB,EAAYkC,EAAWR,mBAAoB8B,EAAY,GAAKD,EACjGE,EAAWA,CAACtzJ,EAAKuC,KACnB,MAAMgxJ,EAAUvzJ,IAAQ,EAAGwzJ,EAAe,EAANxzJ,EACpC,OAAU6vJ,EAAU0D,IAAY1D,EAAU0D,EAAU,IAAM,IAAM1D,EAAU0D,EAAU,IAAM,KACnF,GAAKhxJ,GAAO,GAAMixJ,KACrBA,CAAM,EAEd,GAAIf,EAAgB,CAChB,IAAK,IAAI/4D,EAAO,EAAGrtD,EAAO+mH,EAAc,EAAGpzJ,EAAM,EAAGyzJ,EAAM,CAAC,CAAC,IAAK5pF,EAAO,EAAGA,EAAO,EAAGA,IAAQ,CACzF,GAAI8mF,GAAiB9mF,GAAQ0xE,EAAM59I,OAAQ,CACvC,IAAI+1J,EAAW,EAAGC,EAAY,EAAGC,GAAO,EACxC,MAAQA,GAAM,CACV,MAAM/7C,EAAOne,EAGb,GAFAA,EAAO45D,EAAStzJ,EAAKqsC,GACrBrsC,GAAOqsC,EAAO,EACVqtD,IAAS25D,EAAW,CACpBhnH,EAAO+mH,EAAc,EACrBK,EAAI93J,OAAS03J,EAAY,EACzB,IAAK,IAAIhxJ,EAAI,EAAGA,EAAIoxJ,EAAI93J,OAAQ0G,IAC5BoxJ,EAAIpxJ,GAAKA,EAAIgxJ,EAAY,CAAChxJ,GAAK,EAEvC,KACK,CACGq3F,GAAQ+5D,EAAI93J,OACZ83J,EAAI7vJ,KAAK6vJ,EAAI57C,GAAMz3F,OAAOqzI,EAAI57C,GAAM,KAE/BA,IAASw7C,GACdI,EAAI7vJ,KAAK6vJ,EAAI57C,GAAMz3F,OAAOqzI,EAAI/5D,GAAM,KAExC,IAAK,MAAMj3B,KAAQgxF,EAAI/5D,GAAO,CAC1B,MAAM,EAAE9vF,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEoG,GAAM4iJ,EAASrwF,GAChC22D,EAAM/sH,KAAK24E,IAAI,CAACp7E,EAAGC,EAAGC,EAAGoG,GAAIygJ,GAAiB9mF,GAAQ0xE,EAAMn9I,MACxDwyJ,GAAe/mF,GAAQ8pF,EACtBD,GAA0B,EAAdnY,EAAMn9I,QACvBs1J,GAAY,CAChB,CACID,EAAI93J,SAAW,GAAK0wC,GAAQA,EAAO,IACnCA,GAER,CACIqnH,IAA2B,EAAdnY,EAAMn9I,OAAau1J,EAAY,KAC5CA,IACIhD,GAAiB9mF,GAAQ+mF,GAAe/mF,GAAQ8pF,GAAapY,EAAM59I,SACnEi2J,GAAO,GAGnB,CACJ,CACAvB,IAAmBN,EAAW/xJ,KAAO+xJ,EAAW1lJ,KAAK1Q,OAAS,GAAIw2J,GAAc,GAAS,EAAG/4B,EAAO,CAAEl7H,EAAGq9I,EAAMp9I,KAAME,EAAGk9I,EAAM79I,KAAO,CAAEU,MAAOgyJ,EAAIhyJ,MAAOT,OAAQyyJ,EAAIzyJ,QACxK,CACA49I,EAAMniB,MAAQA,EACdmiB,EAAMsY,aAAeC,kBAAkB16B,EAC3C,KACK,CACD,IAAI1/B,EAAO,EAAGrtD,EAAO+mH,EAAc,EAAGpzJ,EAAM,EAAG0zJ,GAAY,EAAGE,GAAO,EACrE,MAAMH,EAAM,CAAC,CAAC,IACd,MAAQG,GAAM,CACV,MAAM/7C,EAAOne,EAGb,GAFAA,EAAO45D,EAAStzJ,EAAKqsC,GACrBrsC,GAAOqsC,EACHqtD,IAAS25D,EAAW,CACpBhnH,EAAO+mH,EAAc,EACrBK,EAAI93J,OAAS03J,EAAY,EACzB,IAAK,IAAIhxJ,EAAI,EAAGA,EAAIoxJ,EAAI93J,OAAQ0G,IAC5BoxJ,EAAIpxJ,GAAKA,EAAIgxJ,EAAY,CAAChxJ,GAAK,EAEvC,KACK,CACD,GAAIq3F,IAAS25D,EAAY,EAAG,CACxBO,GAAO,EACP,KACJ,CACIl6D,GAAQ+5D,EAAI93J,OACZ83J,EAAI7vJ,KAAK6vJ,EAAI57C,GAAMz3F,OAAOqzI,EAAI57C,GAAM,KAE/BA,IAASw7C,GACdI,EAAI7vJ,KAAK6vJ,EAAI57C,GAAMz3F,OAAOqzI,EAAI/5D,GAAM,KAExC,IAAK,MAAMj3B,KAAQgxF,EAAI/5D,GAAO,CAC1B,MAAM,EAAE9vF,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEoG,GAAM4iJ,EAASrwF,GAChC22D,EAAM/sH,KAAK24E,IAAI,CAACp7E,EAAGC,EAAGC,EAAGoG,GAAKwjJ,GAAY,EAC9C,CACID,EAAI93J,QAAU,GAAK0wC,GAAQA,EAAO,IAClCA,GAER,CACJ,CACAkvG,EAAMniB,MAAQA,EACdmiB,EAAMsY,aAAeC,kBAAkB16B,GACvCi5B,KAAoBN,EAAW/xJ,IAAM,GAAK+xJ,EAAW1lJ,KAAK1Q,OAAQw2J,GAAc,GAAS,EAAG5W,EAAMniB,MAAO,CAAEl7H,EAAGq9I,EAAMp9I,KAAME,EAAGk9I,EAAM79I,KAAO,CAAEU,MAAOgyJ,EAAIhyJ,MAAOT,OAAQyyJ,EAAIzyJ,QAC9K,CACJ,CAMkBo2J,CAAgBhC,EAAY3B,EAAK8B,EAAUC,EAAeC,EAAsBC,GACtF,MACJ,KAAKT,GAAeoC,WA9L5B,SAA6BjC,EAAY3B,EAAK+B,EAAeC,GACzD,OAAQL,EAAWZ,YACf,KAAKS,GAAeqC,yBAA0B,CAC1C,MAAM1Y,EAAQ6U,EAAI/wJ,OAAO8yJ,GAAc,IACvCJ,EAAW/xJ,MACX,MAAMuyJ,EAAaR,EAAWZ,WAC9B5V,EAAM2Y,YAA2B,IAAb3B,KAAuB,EAC3ChX,EAAM4Y,gBAA+B,GAAb5B,KAAuB,EAC/ChX,EAAM6Y,mBAA0C,KAAP,EAAb7B,GAC5B,MAAM8B,EAAwC,KAAP,EAAb9B,GAC1BhX,EAAMjqB,UAAwC,GAA5BygC,EAAWX,eAC7B,MAAMkD,EAAoBvC,EAAWZ,WACjCkD,GACAjC,EAAqBkC,GAEzBvC,EAAW/xJ,MACX,KACJ,CACA,KAAK4xJ,GAAe2C,qBAAsB,CACtCxC,EAAW/xJ,MACX,MAAMw0J,EAAuB,CACzB9vB,WAAYqtB,EAAWhB,UAAU,GACjC0D,mBAAoB1C,EAAWhB,UAAU,GACzC1kJ,KAAM0lJ,EAAWR,oBAErBnB,EAAIsE,sBAAsB9wJ,KAAK4wJ,GAC/B,KACJ,CACA,KAAK5C,GAAe+C,iBAChBvE,EAAIwE,SAAShxJ,KAAK,CAACuuJ,GAAc,GAAQJ,EAAWV,kBACpD,MAEJ,KAAKO,GAAeiD,mBAChB,GAAoC,IAAhCzE,EAAI2C,iBAAiBp3J,OACrB,MAAM,IAAIw3J,UAAU,mDAExBpB,EAAW/xJ,MACXowJ,EAAI/wJ,OAAO8yJ,GAAc,IAAQ2C,cAAgB,CAC7C32J,KAAM4zJ,EAAWX,eACjB1zJ,IAAKq0J,EAAWX,eAChBhzJ,MAAO2zJ,EAAWX,eAClBzzJ,OAAQo0J,EAAWX,eACnB2D,SAAU,CACN32J,MAAO2zJ,EAAWX,eAClBzzJ,OAAQo0J,EAAWX,gBAEvB4D,gBAAiBjD,EAAWZ,WAC5B/uF,gBAAiB2vF,EAAWZ,WAC5B5iH,KAAMwjH,EAAWV,iBAErB,MAEJ,QACIU,EAAWN,gBAGvB,CAuIYwD,CAAoBlD,EAAY3B,EAAK+B,EAAeC,GACpD,MACJ,QACI,MAAM,IAAIe,UAAU,yBAE5B,OAAO,CACX,CAiMOrlC,eAAeonC,GAAa97B,GAC/B,GAAmB,QAAfA,EAAMh6H,KAAV,CAIAg6H,EAAMq2B,SAAU,EAChB,IACIr2B,EAAM+7B,cA9LPrnC,eAAyBsnC,EAAQ/C,EAAkBH,GACjDA,IACDA,GAAW,GACf,MAAMjlC,QAAY5iD,MAAM+qF,GACxB,IAAKnoC,EAAIzR,IAAqB,MAAfyR,EAAI96G,OACf,MAAM,IAAIghJ,UAAU,kBAExB,MAAM71F,QAAe2vD,EAAIooC,cACnBjF,EAAM,CACRhyJ,MAAO,EACPT,OAAQ,EACR6K,UAAW,EACX8sJ,SAAU,EACVC,iBAAkB,EAClBl2J,OAAQ,GACRqzJ,UAAU,EACVK,iBAAkB,GAClB70B,gBAAiB,IAAI80B,UAAU,EAAG,EAAG,CAAEC,WAAY,SACnD2B,SAAU,GACVF,sBAAuB,IACxB3C,EAAa,IAAIlB,GAAW,IAAI3rJ,kBAAkBo4D,IACrD,GAAgC,WAA5By0F,EAAWhB,UAAU,GACrB,MAAM,IAAIz5I,MAAM,4BAEpB84I,EAAIhyJ,MAAQ2zJ,EAAWX,eACvBhB,EAAIzyJ,OAASo0J,EAAWX,eACxB,MAAMmB,EAAaR,EAAWZ,WAAYqE,EAA+C,OAAV,IAAbjD,GAClEnC,EAAIkF,UAAyB,IAAb/C,KAAuB,EACvCnC,EAAIsC,SAAgC,KAAP,EAAbH,GAChB,MAAMkD,EAAmB,GAAyB,GAAL,EAAblD,GAAsBmD,EAAuB3D,EAAWZ,WACxFf,EAAImF,iBAAmBxD,EAAWZ,WACL,IAAzBf,EAAImF,mBACJnF,EAAImF,kBAAoBnF,EAAImF,iBAAmB,IAAO,IAEtDC,IACApF,EAAI2C,iBAAmBjB,GAAgBC,EAAY0D,IAEvD,MAAMv3B,EAAkB,MACpB,IACI,OAAO,IAAI80B,UAAU5C,EAAIhyJ,MAAOgyJ,EAAIzyJ,OAAQ,CAAEs1J,WAAY,QAC9D,CACA,MAAO3gJ,GACH,GAAIA,aAAiB4gJ,cAA+B,mBAAf5gJ,EAAMnZ,KACvC,OAAO,KAEX,MAAMmZ,CACV,CACH,EAVuB,GAWxB,GAAuB,MAAnB4rH,EACA,MAAM,IAAI5mH,MAAM,8BAEpB,MAAM,EAAE1N,EAAC,EAAEC,EAAC,EAAEC,GAAMsmJ,EAAI2C,iBAAiB2C,GACzCx3B,EAAgB7xH,KAAK24E,IAAIwwE,EAAuB,CAAC5rJ,EAAGC,EAAGC,EAAG,KAAO,CAAC,EAAG,EAAG,EAAG,IAC3E,IAAK,IAAIzH,EAAI,EAAGA,EAAI67H,EAAgB7xH,KAAK1Q,OAAQ0G,GAAK,EAClD67H,EAAgB7xH,KAAKspJ,WAAWtzJ,EAAG,EAAGA,GAE1C+tJ,EAAIlyB,gBAAkBA,EACtB,IAAI03B,GAAc,EAAGC,GAAsB,EAAMvB,GAAqB,EACtE,MAAMwB,EAAiBlnB,IACfA,IACAinB,GAAsB,GAEnBD,GAELxD,EAAwBroI,IACV,MAAZA,IACAuqI,EAAoBvqI,GAEjBuqI,GAEX,IACI,GACQuB,IACAzF,EAAI/wJ,OAAOuE,KAAK,CACZzF,KAAM,EACNT,IAAK,EACLU,MAAO,EACPT,OAAQ,EACRw2J,eAAgBxC,GAAeoE,QAC/B38B,MAAO,IAAI45B,UAAU,EAAG,EAAG,CAAEC,WAAY,SACzC6B,cAAe,KACfV,oBAAoB,EACpB9iC,UAAW,EACXohC,UAAU,EACVG,gBAAiB,GACjBF,SAAU,EACVuB,WAAY,IAEhB0B,IACAtB,GAAqB,EACrBuB,GAAsB,gBAEb5D,GAAWF,EAAY3B,EAAK8B,EAAU4D,EAAe1D,EAAsBC,IAC5FjC,EAAI/wJ,OAAO1D,SACX,IAAK,MAAM4/I,KAAS6U,EAAI/wJ,OAAQ,CAC5B,GAAIk8I,EAAM6Y,oBAA0C,IAApB7Y,EAAMjqB,UAAiB,CACnD8+B,EAAI5nJ,UAAYuzG,IAChB,KACJ,CACAq0C,EAAI5nJ,WAAa+yI,EAAMjqB,SAC3B,CACA,OAAO8+B,CACX,CACA,MAAO99I,GACH,GAAIA,aAAiB6gJ,UACjB,MAAM,IAAI77I,MAAM,6BAA6Bs+I,MAAetjJ,EAAMohG,YAEtE,MAAMphG,CACV,CACJ,CAiF8B0jJ,CAAU58B,EAAM37E,QACtC27E,EAAM68B,aAxMP,SAA0B7F,GAC7B,IAAK,MAAM8F,KAAa9F,EAAIsE,sBACxB,GAAIwB,EAAUxxB,WAAawxB,EAAUzB,qBAAuB,cAG5D,OAAOyB,EAAU7pJ,KAAK,IAAM6pJ,EAAU7pJ,KAAK,IAAM,GAErD,OAAO8pJ,GACX,CAgM6BC,CAAiBh9B,EAAM+7B,UAAYtD,GACnDz4B,EAAM68B,eACP78B,EAAM68B,aAAel6C,IAE7B,CACA,MACIqd,EAAM9mH,OAAQ,CAClB,CACA8mH,EAAMq2B,SAAU,CAZhB,YAFUD,GAAUp2B,EAexB,CCxaO,MAAMi9B,GACT1wJ,WAAAA,CAAYmoC,GACRxqC,KAAKq7I,WAAa,CAAC,QAAS,UAC5Br7I,KAAKgzJ,eAAiBxoC,UAClB,IAAKxqH,KAAK2iI,QAAQupB,UACd,MAAM,IAAIl4I,MAAM,GAAGkxG,uCAEjBllH,KAAK2iI,QAAQupB,UAAU,CACzBY,IAAKL,EAAWK,IAChBj3J,KAAM42J,EAAW52J,KACjBk3J,aAAcN,EAAWM,eAAgB,EACzClsJ,IAAK4rJ,EAAW5rJ,KAClB,EAENb,KAAK2iI,QAAUn4F,CACnB,CACAyoH,QAAAA,CAASn9B,GACA91H,KAAK2iI,QAAQ3wH,SACdhS,KAAK2iI,QAAQ3wH,OAAS,IAE1BhS,KAAK2iI,QAAQ3wH,OAAO1R,KAAKw1H,EAC7B,CACAgB,IAAAA,CAAK/tH,GACD,MAAM,QAAEguD,EAAO,OAAE7zB,EAAM,SAAEmqF,EAAQ,QAAE70E,GAAYzvC,EAAM+sH,EAAQzI,EAASyI,MAAOvxH,EAAUuxH,GAAOvxH,QAC9F,GAAKuxH,EAAL,CAIA,GADA/+D,EAAQkG,YAAczkB,EAClBs9E,EAAMg3B,KAAOh3B,EAAM+7B,SDkTxB,SAAiB9oJ,GACpB,MAAM,QAAEguD,EAAO,OAAE7zB,EAAM,SAAEmqF,EAAQ,MAAEhvF,GAAUt1B,EAAM+sH,EAAQzI,EAASyI,MACpE,IAAKA,GAAO+7B,UAAY/7B,EAAMg3B,IAC1B,OAEJ,MAAMhzG,EAAkB,IAAI/O,gBAAgB+qF,EAAM+7B,QAAQ/2J,MAAOg7H,EAAM+7B,QAAQx3J,QAAS64J,EAAmBp5G,EAAgB1pC,WAAW,MACtI,IAAK8iJ,EACD,MAAM,IAAIl/I,MAAM,6CAEpBk/I,EAAiBC,sBAAwB,MACzCD,EAAiBE,uBAAwB,EACzCF,EAAiBx5F,UAAU/pD,GAAUA,GAAUmqC,EAAgBh/C,MAAOg/C,EAAgBz/C,aACxDpC,IAA1Bo1H,EAASslC,eACTtlC,EAASslC,aAAe78B,EAAM68B,cAAgBpE,IAElD,IAAI+D,EAAajlC,EAASgmC,UAzVZ,EA0Vd,MAAM32J,EAAM,CAAE9B,EA1VU,IA0VNk7H,EAAM+7B,QAAQ/2J,MAAcC,EA1VtB,IA0V0B+6H,EAAM+7B,QAAQx3J,QAAiB49I,EAAQniB,EAAM+7B,QAAQ91J,OAAOu2J,GAI9G,QAHyBr6J,IAArBo1H,EAASimC,UACTjmC,EAASimC,QA5V8B,GA8VtCrb,EAAMsY,OAAX,CAIA,OADAx5F,EAAQtjC,MAAMyP,EAAS4yF,EAAM+7B,QAAQ/2J,MAAOooC,EAAS4yF,EAAM+7B,QAAQx3J,QAC3D49I,EAAM4Y,gBACV,KAAKxC,GAAekF,WACpB,KAAKlF,GAAemF,WACpB,KAAKnF,GAAeoF,WACpB,KAAKpF,GAAeqF,WACpB,KAAKrF,GAAeoE,QAChBS,EAAiBr5F,UAAUo+E,EAAMsY,OAAQtY,EAAMp9I,KAAMo9I,EAAM79I,KAC3D28D,EAAQ8C,UAAU/f,EAAiBp9C,EAAI9B,EAAG8B,EAAI3B,GAC9Cm4J,EAAiBx5F,UAAU/pD,GAAUA,GAAUmqC,EAAgBh/C,MAAOg/C,EAAgBz/C,QACtF,MACJ,KAAKg0J,GAAesF,QAChBT,EAAiBr5F,UAAUo+E,EAAMsY,OAAQtY,EAAMp9I,KAAMo9I,EAAM79I,KAC3D28D,EAAQ8C,UAAU/f,EAAiBp9C,EAAI9B,EAAG8B,EAAI3B,GAC9C,MACJ,KAAKszJ,GAAeuF,kBAChBV,EAAiBr5F,UAAUo+E,EAAMsY,OAAQtY,EAAMp9I,KAAMo9I,EAAM79I,KAC3D28D,EAAQ8C,UAAU/f,EAAiBp9C,EAAI9B,EAAG8B,EAAI3B,GAC9Cm4J,EAAiBx5F,UAAU/pD,GAAUA,GAAUmqC,EAAgBh/C,MAAOg/C,EAAgBz/C,QACjFy7H,EAAM+7B,QAAQpC,iBAAiBp3J,OAIhC66J,EAAiBW,aAAa/9B,EAAM+7B,QAAQj3B,gBAAiBl+H,EAAI9B,EAAG8B,EAAI3B,GAHxEm4J,EAAiBW,aAAa/9B,EAAM+7B,QAAQ91J,OArXG,GAqXgB+5H,MAAOp5H,EAAI9B,EAAIq9I,EAAMp9I,KAAM6B,EAAI3B,EAAIk9I,EAAM79I,KAK5G,MACJ,KAAKi0J,GAAeyF,gBAChB,CACI,MAAMC,EAAoBb,EAAiBc,aAAarkJ,GAAUA,GAAUmqC,EAAgBh/C,MAAOg/C,EAAgBz/C,QACnH64J,EAAiBr5F,UAAUo+E,EAAMsY,OAAQtY,EAAMp9I,KAAMo9I,EAAM79I,KAC3D28D,EAAQ8C,UAAU/f,EAAiBp9C,EAAI9B,EAAG8B,EAAI3B,GAC9Cm4J,EAAiBx5F,UAAU/pD,GAAUA,GAAUmqC,EAAgBh/C,MAAOg/C,EAAgBz/C,QACtF64J,EAAiBW,aAAaE,EAAmBpkJ,GAAUA,GAC/D,EAIR,GADA09G,EAASimC,SAAWj1H,EAAMjnC,MACtBi2H,EAASimC,QAAUrb,EAAMjqB,UAAW,CAEpC,GADAX,EAASimC,SAAWrb,EAAMjqB,YACpBskC,GAAcx8B,EAAM+7B,QAAQ91J,OAAO1D,OAAQ,CAC7C,KAAMg1H,EAASslC,cAAgBpE,GAC3B,OAEJ+D,EA5YmD,EA6YnDY,EAAiBx5F,UAAU/pD,GAAUA,GAAUmqC,EAAgBh/C,MAAOg/C,EAAgBz/C,OAC1F,CACAgzH,EAASgmC,SAAWf,CACxB,CACAv7F,EAAQtjC,MAAMqiG,EAAM+7B,QAAQ/2J,MAAQooC,EAAQ4yF,EAAM+7B,QAAQx3J,OAAS6oC,EAjDnE,CAkDJ,CCzXY+wH,CAAQlrJ,QAEP,GAAIxE,EAAS,CACd,MAAMwwI,EAAQjf,EAAMif,MAAOr4I,EAAM,CAC7B9B,GAAIsoC,EACJnoC,GAAImoC,GACLsnG,EApCA,EAoCWtnG,EACd6zB,EAAQ8C,UAAUt1D,EAAS7H,EAAI9B,EAAG8B,EAAI3B,EAAGyvI,EAAUA,EAAWuK,EAClE,CACAh+E,EAAQkG,YAvCiB,CA2BzB,CAaJ,CACA6yE,aAAAA,GACI,OA1CoC,EA2CxC,CACA,UAAMh1H,CAAKtiB,GACP,MAAM+sE,EAAU/sE,EAAUg9H,cAC1B,GAAKjwD,EAAQ2uF,SAAYl0J,KAAK2iI,QAAQupB,UAGtC,IAAK,MAAMK,KAAahnF,EAAQ2uF,cACtBl0J,KAAK2iI,QAAQupB,UAAUK,EAErC,CACA3c,SAAAA,CAAUviB,GACN,GAAuB,UAAnBA,EAAS7+F,OAAwC,WAAnB6+F,EAAS7+F,MACvC,OAECxuB,KAAK2iI,QAAQ3wH,SACdhS,KAAK2iI,QAAQ3wH,OAAS,IAE1B,MAAMu6I,EAAYl/B,EAASxpG,UAC3B,IAAK0oI,EACD,OAEUvsJ,KAAK2iI,QAAQ3wH,OAAOrW,MAAMiL,GAAMA,EAAE/Q,OAAS02J,EAAU12J,MAAQ+Q,EAAEuzC,SAAWoyG,EAAU1rJ,OAEzFb,KAAKgzJ,eAAezG,GAAW1rD,MAAK,KACrC7gG,KAAK4vI,UAAUviB,EAAS,GAGpC,CACA4iB,YAAAA,CAAaz3I,EAAW60H,GACpB,GAAuB,UAAnBA,EAAS7+F,OAAwC,WAAnB6+F,EAAS7+F,MACvC,OAECxuB,KAAK2iI,QAAQ3wH,SACdhS,KAAK2iI,QAAQ3wH,OAAS,IAE1B,MAAMA,EAAShS,KAAK2iI,QAAQ3wH,OAAQu6I,EAAYl/B,EAASxpG,UACzD,IAAK0oI,EACD,OAEJ,MAAMvlJ,EAAQqmH,EAASiF,eAAgBwD,EAAQ9jH,EAAOrW,MAAMiL,GAAMA,EAAE/Q,OAAS02J,EAAU12J,MAAQ+Q,EAAEuzC,SAAWoyG,EAAU1rJ,MACtH,IAAKi1H,EACD,OAEJ,MAAMi3B,EAAeR,EAAUQ,cAAgBj3B,EAAMi3B,aACjDj3B,EAAMq2B,QACN5yI,YAAW,KACPvZ,KAAKiwI,aAAaz3I,EAAW60H,EAAS,IAIzC,WACD,IAAIw/B,EAEAA,EADA/2B,EAAMu2B,SAAWrlJ,QACAslJ,GAAkBx2B,EAAOy2B,EAAWvlJ,EAAOqmH,GAGjD,CACPrmH,QACA+B,KAAM+sH,EACNvxH,QAASuxH,EAAMvxH,QACfuoJ,IAAKh3B,EAAMg3B,IACX+E,QAAS/7B,EAAM+7B,QACfc,aAAc78B,EAAM68B,aACpBrlH,QAAQ,EACRynG,MAAOwX,EAAUzxJ,OAASyxJ,EAAUlyJ,OAC9BkyJ,EAAUzxJ,MAAQyxJ,EAAUlyJ,OAC5By7H,EAAMif,OA7G+B,EA8G3CgY,aAAcA,EACd5yG,OAAQoyG,EAAU1rJ,KAGrBgsJ,EAAS9X,QACV8X,EAAS9X,MAAQ,GAErB,MAAmG0X,EAAa,CAC5G32B,MAAO+2B,EACP93F,KAFSw3F,EAAUx3F,MAAQs4D,EAASsM,UAGpCqL,MAHuDunB,EAAUvnB,OAAS3X,EAASqM,YAKvFrM,EAASyI,MAAQ22B,EAAW32B,MAC5BzI,EAASsM,UAAY8yB,EAAW13F,KAChCs4D,EAASqM,WAAa+yB,EAAWznB,KACpC,EAhCI,EAiCT,ECjIG,MAAMmvB,GACT9xJ,WAAAA,GACIrC,KAAKa,IAAM,GACXb,KAAK8sJ,KAAM,CACf,CACAz+I,IAAAA,CAAKtF,GACIA,SAGY9Q,IAAb8Q,EAAK+jJ,MACL9sJ,KAAK8sJ,IAAM/jJ,EAAK+jJ,UAEA70J,IAAhB8Q,EAAK1O,SACL2F,KAAK3F,OAAS0O,EAAK1O,aAELpC,IAAd8Q,EAAKlT,OACLmK,KAAKnK,KAAOkT,EAAKlT,WAEKoC,IAAtB8Q,EAAKgkJ,eACL/sJ,KAAK+sJ,aAAehkJ,EAAKgkJ,mBAEZ90J,IAAb8Q,EAAKlI,MACLb,KAAKa,IAAMkI,EAAKlI,UAED5I,IAAf8Q,EAAKjO,QACLkF,KAAKlF,MAAQiO,EAAKjO,OAE1B,EC1BG,MAAMs5J,GACT/xJ,WAAAA,CAAYmoC,GACRxqC,KAAK+K,GAAK,iBACV/K,KAAK2iI,QAAUn4F,CACnB,CACA,eAAM0wG,GAEF,aADMz6C,QAAQG,UACP,CAAC,CACZ,CACA+mC,WAAAA,CAAYpiE,EAASprB,GACjB,IAAKA,GAAQ+5G,QACT,OAEC3uF,EAAQ2uF,UACT3uF,EAAQ2uF,QAAU,IAEtB,MAAMG,EAAiB9uF,EAAQ2uF,QAC/B,IAAK,MAAM/0F,KAAQhlB,EAAO+5G,QAAS,CAC/B,MAAMI,EAAWD,EAAe14J,MAAKiL,GAAKA,EAAE/Q,OAASspE,EAAKtpE,MAAQ+Q,EAAE/F,MAAQs+D,EAAKt+D,MACjF,GAAIyzJ,EACAA,EAASjmJ,KAAK8wD,OAEb,CACD,MAAM+0F,EAAU,IAAIC,GACpBD,EAAQ7lJ,KAAK8wD,GACbk1F,EAAe/zJ,KAAK4zJ,EACxB,CACJ,CACJ,CACA1Y,WAAAA,GACI,OAAO,CACX,EC3BJ,MAAM+Y,GAAY,EAyCX/pC,eAAewoC,GAAexoH,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,IAxCpD,SAA8BoyC,GACtBA,EAAO0hH,YAGX1hH,EAAO0hH,UAAY1hC,UACf,IAAKzhH,EAAKlT,OAASkT,EAAKlI,IACpB,MAAM,IAAImT,MAAM,GAAGkxG,8BAKvB,GAHK16E,EAAOx4B,SACRw4B,EAAOx4B,OAAS,KAEhBw4B,EAAOx4B,OAAOrW,MAAMiL,GAAMA,EAAE/Q,OAASkT,EAAKlT,MAAQ+Q,EAAEuzC,SAAWpxC,EAAKlI,MAGxE,IACI,MAAMi1H,EAAQ,CACVg3B,IAAK/jJ,EAAK+jJ,MAAO,EACjBj3J,KAAMkT,EAAKlT,MAAQkT,EAAKlI,IACxBs5C,OAAQpxC,EAAKlI,IACb/E,KAAMiN,EAAKlI,IAAIqtE,UAAUnlE,EAAKlI,IAAIxI,OAASk8J,IAC3CvlJ,OAAO,EACPm9I,SAAS,EACTY,aAAchkJ,EAAKgkJ,aACnBhY,MAAOhsI,EAAKjO,OAASiO,EAAK1O,OAAS0O,EAAKjO,MAAQiO,EAAK1O,YAASpC,GAGlE,IAAIu8J,EADJhqH,EAAOx4B,OAAO1R,KAAKw1H,GAGf0+B,EADAzrJ,EAAK+jJ,IACO8E,GAGA7oJ,EAAKgkJ,aAAeX,GAAmBF,SAEjDsI,EAAU1+B,EACpB,CACA,MACI,MAAM,IAAI9hH,MAAM,GAAGkxG,KAAen8G,EAAKlT,MAAQkT,EAAKlI,gBACxD,GAER,CAEI4zJ,CAAqBjqH,GACrB,MAAMkqH,EAAY,IAAIN,GAAqB5pH,SACrCA,EAAOywG,UAAUyZ,EAAW/4B,SAC5BnxF,EAAO7b,SAAS,IAAIokI,GAAYvoH,GAASmxF,EACnD,CClDO,MAAMg5B,WAAkBpwB,GAC3BliI,WAAAA,GACIokH,QACAzmH,KAAKozH,MAAO,CAChB,CACA/kH,IAAAA,CAAKtF,GACIA,IAGL09G,MAAMp4G,KAAKtF,QACO9Q,IAAd8Q,EAAKqqH,OACLpzH,KAAKozH,KAAOrqH,EAAKqqH,MAEzB,ECbG,MAAMwhC,WAAqBrwB,GAC9BliI,WAAAA,GACIokH,QACAzmH,KAAKozH,MAAO,CAChB,CACA/kH,IAAAA,CAAKtF,GACIA,IAGL09G,MAAMp4G,KAAKtF,QACO9Q,IAAd8Q,EAAKqqH,OACLpzH,KAAKozH,KAAOrqH,EAAKqqH,MAEzB,ECZG,MAAMyhC,GACTxyJ,WAAAA,GACIrC,KAAKqoC,MAAQ,EACbroC,KAAKqjH,MAAQ,IAAIsxC,GACjB30J,KAAKuU,SAAW,IAAIqgJ,EACxB,CACAvmJ,IAAAA,CAAKtF,GACIA,SAGc9Q,IAAf8Q,EAAKs/B,QACLroC,KAAKqoC,MAAQt/B,EAAKs/B,OAEtBroC,KAAKqjH,MAAMh1G,KAAKtF,EAAKs6G,OACrBrjH,KAAKuU,SAASlG,KAAKtF,EAAKwL,UAC5B,ECbG,MAAMugJ,GACTzyJ,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,CACrB,CACAsiB,IAAAA,CAAKuyG,GACD,MAAM70H,EAAYwH,KAAKxH,UAAgDu8J,EAAlB1nC,EAAS9nD,QAAwCyvF,KACjGD,IAGL1nC,EAAS2nC,KAAO,CACZ3xC,MAAO7qH,EAAUihI,OAAOzG,aAChBjL,EAAcgtC,EAAY1xC,MAAMjsH,QAAU29J,EAAY1xC,MAAM+P,KAZnD,EAYqE/L,KAC9E7uH,EAAUihI,OAAOzG,aACjB5N,EAdL,EAgBH4I,UAhBG,EAiBHz5G,SAAU/b,EAAUihI,OAAOzG,aACnBjL,EAAcgtC,EAAYxgJ,SAASnd,QAAU29J,EAAYxgJ,SAAS6+G,KAlBzD,EAkB2E/L,KACpF7uH,EAAUihI,OAAOzG,aACjB5N,EApBL,EAsBH/wG,KAtBG,EAuBHg0B,MAAO0sH,EAAY1sH,OAEnBglF,EAAS2nC,KAAKzgJ,UAzBX,IA0BH84G,EAAS2nC,KAAKzgJ,UA1BsB,GA4BpC84G,EAAS2nC,KAAK3sH,OA5BX,IA6BHglF,EAAS2nC,KAAK3sH,OA7BsB,GA+BpCglF,EAAS2nC,OACT3nC,EAAS4K,SAAW5K,EAAS2nC,KAAK3xC,MAhC/B,GAkCX,CACAymB,SAAAA,CAAUzc,GACN,OAAQA,EAASl9D,SACrB,CACAw3E,WAAAA,CAAYpiE,GACHA,EAAQyvF,OACTzvF,EAAQyvF,KAAO,IAAIH,IACtB,QAAA5pC,EAAA7yH,UAAAC,OAHmBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI3B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQyvF,KAAK3mJ,KAAK8rC,GAAQ66G,KAElC,CACA7uG,MAAAA,CAAOknE,EAAUhvF,GACRr+B,KAAK8pI,UAAUzc,IAAcA,EAAS2nC,MChD5C,SAAoB3nC,EAAUhvF,EAAOwwF,GACxC,IAAKxB,EAAS2nC,KACV,OAEJ,MAAMA,EAAO3nC,EAAS2nC,KACtB,IAAIC,GAAc,EAClB,GAAI5nC,EAAS4K,SAAU,CAEnB,GADA+8B,EAAKhnC,WAAa3vF,EAAMjnC,QACpB49J,EAAKhnC,WAAaX,EAAS2nC,KAAK3xC,OAOhC,OANA4xC,GAAc,EACd5nC,EAAS4K,UAAW,EACpB+8B,EAAKhnC,UAZF,EAaHgnC,EAAK3gJ,KAbF,CAkBX,CACA,IAnB8B,IAmB1B2gJ,EAAKzgJ,SACL,OAEJ,GAAI84G,EAAS4K,SACT,OAQJ,GANIg9B,EACAD,EAAK3gJ,KA1BE,EA6BP2gJ,EAAK3gJ,MAAQgqB,EAAMjnC,MAEnB49J,EAAK3gJ,KAAO2gJ,EAAKzgJ,SACjB,OAMJ,GAJAygJ,EAAK3gJ,KAlCM,EAmCPg5G,EAAS2nC,KAAK3sH,MAnCyB,GAoCvCglF,EAAS2nC,KAAK3sH,QApCyB,IAsCvCglF,EAAS2nC,KAAK3sH,MAEd,YADAglF,EAASr1H,UAGb,MAAMk9J,EAAaltC,EA1C2C,EA0Cd6G,EAAW/zH,OAAQq6J,EAAcntC,EA1CnB,EA0CgD6G,EAAW/zH,OACzHuyH,EAASzwH,SAAShC,EAAIgtH,EAAcstC,GACpC7nC,EAASzwH,SAAS7B,EAAI6sH,EAAcutC,GACpC9nC,EAAS4K,UAAW,EACpB+8B,EAAKhnC,UA9CM,EA+CXgnC,EAAK3gJ,KA/CM,EAgDXg5G,EAASt9F,QACT,MAAMglI,EAAc1nC,EAAS9nD,QAAQyvF,KACjCD,IACAC,EAAK3xC,MAAQ0E,EAAcgtC,EAAY1xC,MAAMjsH,OAASguH,EACtD4vC,EAAKzgJ,SAAWwzG,EAAcgtC,EAAYxgJ,SAASnd,OAASguH,EAEpE,CDFQgwC,CAAW/nC,EAAUhvF,EAAOr+B,KAAKxH,UAAU0X,OAAO64B,KACtD,EEpDG,MAAMssH,GACThzJ,WAAAA,GACIrC,KAAKq7I,WAAa,CAAC,OACvB,CACAvkB,IAAAA,CAAK/tH,ICNF,SAAkBA,GACrB,MAAM,QAAEguD,EAAO,SAAEs2D,EAAQ,OAAEnqF,GAAWn6B,EAAM8a,EAAYwpG,EAASxpG,UACjEkzC,EAAQ9C,QAAQ/wB,EADsE,GAEtF6zB,EAAQ7C,OAAOhxB,EAFuE,GAGtF6zB,EAAQvB,QAAU3xC,GAAWyxI,KAAO,MACxC,CDEQ7hC,CAAS1qH,EACb,CACA+mI,aAAAA,GACI,OATM,CAUV,EETG,MAAMylB,GACTz6I,IAAAA,GACA,CACAgvH,SAAAA,CAAUzc,GACN,OAASnD,OACJmD,EAASl9D,WACVk9D,EAAS70H,UAAUg9H,cAAc53H,cAAc6+H,OAAO2B,QAAQkE,SAAS9W,MAC/E,CACAiL,IAAAA,CAAKpJ,GACD,MAAM70H,EAAY60H,EAAS70H,UAA8Cg9J,EAAzBh9J,EAAUg9H,cAAyC53H,cAAc6+H,OAAO2B,QAAQkE,SAChI,GAAIpY,OAAYsrC,EAAgBhqC,OAC5B,OAEJ,MAAMiqC,EAAgBD,EAAgBpzB,MAAO/F,EAAW7jI,EAAUoF,cAAcw+H,MAAMx/H,SACtF,IAAKy/H,EACD,OAEJ,MAAMxN,EAAar2H,EAAU0X,OAAO64B,KAAM2sH,EAlBrC,GAmBE7mC,EAAW/zH,MADwB46J,EAlBrC,GAoBE7mC,EAAWx0H,OACfs7J,EAAiBH,EAAgBxqF,OAAQi/C,EAASoD,EAASjB,YAAcqpC,EAAeG,GACnFv5B,EAASzhI,EAAI86J,GAAkBzrC,EADoD2rC,GAEnFv5B,EAASthI,EAAI26J,GAAkBzrC,GACpC,OAAEhjH,GAAWomH,EAChBpmH,EAAOrM,IAAMg7J,EAAmB3uJ,EAAOrM,GAAK+6J,EAC5C1uJ,EAAOlM,IAAM66J,EAAmB3uJ,EAAOlM,GAAK46J,CAChD,EC1BG,MAAMvS,WAAkBnG,GAC3B56I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,EACV,CACAm7H,KAAAA,GACA,CACA74G,IAAAA,GACA,CACAivH,QAAAA,CAASz5G,GACL,MAAM93B,EAAYwH,KAAKxH,eACIP,IAAvBq4B,EAAGulI,kBACHvlI,EAAGulI,gBAAkB9tC,EAAcz3F,EAAGi1C,QAAQkxD,KAAKqP,QAAQz+F,UAAY7uC,EAAUihI,OAAOD,YAE5F,MAAMnyF,EAAW/W,EAAGulI,gBAAiBhpC,EAAOv8F,EAAG67F,cAAe/B,EAAQ5xH,EAAUg+H,UAAUgd,SAASjC,YAAY1kB,EAAMxlF,GACrH,IAAK,MAAMrS,KAAMo1F,EAAO,CACpB,GAAI95F,IAAO0E,IAAOA,EAAGuwC,QAAQkxD,KAAKqP,QAAQta,QAAUx2F,EAAGm7B,WAAan7B,EAAGijG,SACnE,SAEJ,MAAMnL,EAAO93F,EAAGm3F,eAAe,GAAE/D,EAAE,GAAEC,GAAOJ,EAAa4E,EAAMC,GAAOh6F,EAASxC,EAAGi1C,QAAQkxD,KAAKqP,QAAQhzG,OAAQ3J,EAAKi/F,GAnB1G,IAmBgHt1F,EAAOl4B,GAAoBwuB,EAAKi/F,GAnBhJ,IAmBsJv1F,EAAO/3B,GAAoB+6J,EAAW9gI,EAAG+T,KAAK3xC,MAAQk5B,EAAGyY,KAAK3xC,MAAO2+J,EAnB1M,EAmBgOD,EAC3PxlI,EAAGo8C,SAAS9xE,GAAKuuB,EAAK2sI,EACtBxlI,EAAGo8C,SAAS3xE,GAAKquB,EAAK0sI,EACtB9gI,EAAG03C,SAAS9xE,GAAKuuB,EAAK4sI,EACtB/gI,EAAG03C,SAAS3xE,GAAKquB,EAAK2sI,CAC1B,CACJ,CACAjsB,SAAAA,CAAUzc,GACN,OAAOA,EAAS9nD,QAAQkxD,KAAKqP,QAAQta,MACzC,CACAz7F,KAAAA,GACA,EC9BJ,MAAMo6G,GAAO,GAAK6rB,GAAe,GAAIC,GAAkB,EACvD,SAASC,GAAa5lI,EAAImgG,EAAIz7F,EAAImhI,EAAI93H,EAAOm7F,GACzC,MAAMvP,EAAS5hD,EAAO/3C,EAAGi1C,QAAQ+hE,WAAWzC,OAAO3tI,MAAQmnC,EAAM4rF,OAAU+rC,GAAcC,GAAiBE,GAC1G7lI,EAAGyY,KAAK3xC,OAAS6yH,EAASkgB,GAC1Bn1G,EAAG+T,KAAK3xC,OAAS6yH,EACbksC,GAAM38B,IACNxkG,EAAG+T,KAAK3xC,MAAQ,EAChB49B,EAAGh9B,UAEX,CCTA,MAAMo+J,GAAkB1vJ,SACQzO,IAAxByO,EAAE2vJ,oBACF3vJ,EAAE2vJ,kBAAoBtuC,EAAcrhH,EAAE6+D,QAAQ+hE,WAAWxC,WAEzDp+H,EAAEgmE,SAASr0E,OAASqO,EAAE2vJ,oBACtB3vJ,EAAEgmE,SAASr0E,OAASqO,EAAE2vJ,kBAC1B,EAEG,SAAS9pC,GAAOj8F,EAAI0E,GACvB03F,GAAaR,GAA6B57F,GAAK47F,GAA6Bl3F,IAC5EohI,GAAe9lI,GACf8lI,GAAephI,EACnB,CCTO,SAASshI,GAAiBhmI,EAAI0E,EAAIqJ,EAAOm7F,GAC5C,OAAQlpG,EAAGi1C,QAAQ+hE,WAAWnsI,MAC1B,KAAKkoI,GAAcwB,QFKpB,SAAgBv0G,EAAI0E,EAAIqJ,EAAOm7F,GAClC,MAAM/I,EAAKngG,EAAG87F,YAAa+pC,EAAKnhI,EAAGo3F,iBACxBn0H,IAAPw4H,QAA2Bx4H,IAAPk+J,EACpB7lI,EAAGt4B,eAESC,IAAPw4H,QAA2Bx4H,IAAPk+J,EACzBnhI,EAAGh9B,eAESC,IAAPw4H,QAA2Bx4H,IAAPk+J,IACrB1lC,GAAM0lC,EACND,GAAa5lI,EAAImgG,EAAIz7F,EAAImhI,EAAI93H,EAAOm7F,GAGpC08B,GAAalhI,EAAImhI,EAAI7lI,EAAImgG,EAAIpyF,EAAOm7F,GAGhD,CEpBYqL,CAAOv0G,EAAI0E,EAAIqJ,EAAOm7F,GACtB,MAEJ,KAAK6J,GAAc9W,OACfA,GAAOj8F,EAAI0E,GACX,MAEJ,KAAKquG,GAAcrrI,SCbpB,SAAiBs4B,EAAI0E,GACnB1E,EAAG68G,aAAgBn4G,EAAGm4G,aACvB5gB,GAAOj8F,EAAI0E,QAEQ/8B,IAAnBq4B,EAAG87F,kBAAgDn0H,IAAnB+8B,EAAGo3F,YACnC97F,EAAGt4B,eAEqBC,IAAnBq4B,EAAG87F,kBAAgDn0H,IAAnB+8B,EAAGo3F,YACxCp3F,EAAGh9B,eAEqBC,IAAnBq4B,EAAG87F,kBAAgDn0H,IAAnB+8B,EAAGo3F,cACxB97F,EAAG87F,aAAep3F,EAAGo3F,YAAcp3F,EAAK1E,GAChDt4B,SAEhB,CDAYA,CAAQs4B,EAAI0E,GAIxB,CEhBO,MAAMuhI,WAAiBtZ,GAC1B56I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,EACV,CACAm7H,KAAAA,GACA,CACA74G,IAAAA,GACA,CACAivH,QAAAA,CAASz5G,EAAI+N,GACT,GAAI/N,EAAG6/B,WAAa7/B,EAAG2nG,SACnB,OAEJ,MAAMz/H,EAAYwH,KAAKxH,UAAWq0H,EAAOv8F,EAAG67F,cAAeqqC,EAAUlmI,EAAG87F,YAAahC,EAAQ5xH,EAAUg+H,UAAUgd,SAASjC,YAAY1kB,EAb/H,EAaqI2pC,GAC5I,IAAK,MAAMxhI,KAAMo1F,EAAO,CACpB,GAAI95F,IAAO0E,IACNA,EAAGuwC,QAAQ+hE,WAAW9b,QACvBl7F,EAAGi1C,QAAQ+hE,WAAWnsI,OAAS65B,EAAGuwC,QAAQ+hE,WAAWnsI,MACrD65B,EAAGm7B,WACHn7B,EAAGijG,SACH,SAEJ,MAAMnL,EAAO93F,EAAGm3F,cAAesqC,EAAUzhI,EAAGo3F,YAC5C,GAAInwH,KAAK2H,IAAI3H,KAAKoI,MAAMwoH,EAAKp2F,GAAKx6B,KAAKoI,MAAMyoH,EAAKr2F,IAAM+/H,EAAUC,EAC9D,SAESnuC,EAAYuE,EAAMC,GAAe0pC,EAAUC,GAIxDH,GAAiBhmI,EAAI0E,EAAIqJ,EAAO7lC,EAAUihI,OAAOD,WACrD,CACJ,CACAsQ,SAAAA,CAAUzc,GACN,OAAOA,EAAS9nD,QAAQ+hE,WAAW9b,MACvC,CACAz7F,KAAAA,GACA,ECrCG,MAAM2mI,WAAmBnmB,GAC5BluI,WAAAA,CAAYzH,EAAGG,EAAGmoC,EAAQ2rF,GACtBpI,MAAM7rH,EAAGG,EAAGmoC,GACZljC,KAAK6uH,WAAaA,EAClB7uH,KAAK6uH,WAAa,IAAKA,EAC3B,CACA/zB,QAAAA,CAASp4E,GACL,MAAM,MAAE5nB,EAAK,OAAET,GAAW2F,KAAK6uH,YAAY,EAAEj0H,EAAC,EAAEG,GAAM2nB,EACtD,OAAQ+jG,MAAM3rB,SAASp4E,IACnB+jG,MAAM3rB,SAAS,CAAElgG,EAAGA,EAAIE,EAAOC,OAC/B0rH,MAAM3rB,SAAS,CAAElgG,EAAGA,EAAIE,EAAOC,EAAGA,EAAIV,KACtCosH,MAAM3rB,SAAS,CAAElgG,IAAGG,EAAGA,EAAIV,GACnC,CACAm2I,UAAAA,CAAWv3C,GACP,GAAIwtB,MAAM+pB,WAAWv3C,GACjB,OAAO,EAEX,MAAMziD,EAAOyiD,EAAOipC,EAASjpC,EAAO2nD,EAAS,CACzChmJ,EAAGq+F,EAAMr8F,SAAShC,EAAIoF,KAAK6uH,WAAW/zH,MACtCC,EAAGk+F,EAAMr8F,SAAS7B,EAAIiF,KAAK6uH,WAAWx0H,QAE1C,QAAsBpC,IAAlBiqI,EAAOh/F,OAAsB,CAC7B,MAAMyzH,EAAe,IAAIpmB,GAAOqQ,EAAOhmJ,EAAGgmJ,EAAO7lJ,EAvB9C,EAuBiDmnI,EAAOh/F,QAC3D,OAAOujF,MAAM+pB,WAAWmmB,EAC5B,CACK,QAAkB1+J,IAAdu+C,EAAKzN,KAAoB,CAC9B,MAAM6tH,EAAS,IAAIlmB,GAAUkQ,EAAOhmJ,EAAGgmJ,EAAO7lJ,EA3B3C,EA2B8Cy7C,EAAKzN,KAAKjuC,MA3BxD,EA2BwE07C,EAAKzN,KAAK1uC,QACrF,OAAOosH,MAAM+pB,WAAWomB,EAC5B,CACA,OAAO,CACX,EC/BG,MAAMC,GACTx0J,WAAAA,GACIrC,KAAKi5H,KAAO,EACZj5H,KAAKgH,MAAQ,IAAI26H,GACjB3hI,KAAKgH,MAAM5P,MAAQ,OACnB4I,KAAKwrH,QAAS,CAClB,CACAn9G,IAAAA,CAAKtF,GACIA,SAGa9Q,IAAd8Q,EAAKkwH,OACLj5H,KAAKi5H,KAAOlwH,EAAKkwH,MAErBj5H,KAAKgH,MAAQ26H,GAAan1B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,YAC9B/O,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,QAE3B,EClBG,MAAMsrC,GACTz0J,WAAAA,GACIrC,KAAKwrH,QAAS,EACdxrH,KAAK0hC,UAAY,CACrB,CACArzB,IAAAA,CAAKtF,GACIA,SAGc9Q,IAAf8Q,EAAK/B,QACLhH,KAAKgH,MAAQ26H,GAAan1B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,aAElC/O,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEAvzH,IAAnB8Q,EAAK24B,YACL1hC,KAAK0hC,UAAY34B,EAAK24B,gBAELzpC,IAAjB8Q,EAAKyvC,UACLx4C,KAAKw4C,QAAUzvC,EAAKyvC,SAE5B,ECnBG,MAAMu+G,GACT10J,WAAAA,GACIrC,KAAK4yH,OAAQ,EACb5yH,KAAKgH,MAAQ,IAAI26H,GACjB3hI,KAAKgH,MAAM5P,MAAQ,OACnB4I,KAAK6yH,SAAU,EACf7yH,KAAKqnC,SAAW,IAChBrnC,KAAKwrH,QAAS,EACdxrH,KAAK0hC,UAAY,EACjB1hC,KAAKw4C,QAAU,EACfx4C,KAAK24H,OAAS,IAAIk+B,GAClB72J,KAAKg3J,UAAY,IAAIF,GACrB92J,KAAKlF,MAAQ,EACbkF,KAAKsmI,MAAO,CAChB,CACAj4H,IAAAA,CAAKtF,GACIA,SAGW9Q,IAAZ8Q,EAAKgC,KACL/K,KAAK+K,GAAKhC,EAAKgC,SAEA9S,IAAf8Q,EAAK6pH,QACL5yH,KAAK4yH,MAAQ7pH,EAAK6pH,OAEtB5yH,KAAKgH,MAAQ26H,GAAan1B,OAAOxsG,KAAKgH,MAAO+B,EAAK/B,YAC7B/O,IAAjB8Q,EAAK8pH,UACL7yH,KAAK6yH,QAAU9pH,EAAK8pH,cAEF56H,IAAlB8Q,EAAKs+B,WACLrnC,KAAKqnC,SAAWt+B,EAAKs+B,eAELpvC,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEAvzH,IAAnB8Q,EAAK24B,YACL1hC,KAAK0hC,UAAY34B,EAAK24B,gBAELzpC,IAAjB8Q,EAAKyvC,UACLx4C,KAAKw4C,QAAUzvC,EAAKyvC,SAExBx4C,KAAK24H,OAAOtqH,KAAKtF,EAAK4vH,QACtB34H,KAAKg3J,UAAU3oJ,KAAKtF,EAAKiuJ,gBACN/+J,IAAf8Q,EAAKjO,QACLkF,KAAKlF,MAAQiO,EAAKjO,YAEJ7C,IAAd8Q,EAAKu9H,OACLtmI,KAAKsmI,KAAOv9H,EAAKu9H,MAEzB,ECjDJ,MAA0C32H,GACnC,EADmCA,GAEnC,EAEP,SAASsnJ,GAAgBpqC,EAAMC,EAAMoqC,EAAaroC,EAAYyX,GAC1D,MAAM,GAAEle,EAAE,GAAEC,EAAE,SAAEhhF,GAAa4gF,EAAa4E,EAAMC,GAChD,IAAKwZ,GAAQj/F,GAAY6vH,EACrB,OAAO7vH,EAEX,MAAM8vH,EAAW,CACbv8J,EAAGqB,KAAK2H,IAAIwkH,GACZrtH,EAAGkB,KAAK2H,IAAIykH,IACb+uC,EACIn7J,KAAKsH,IAAI4zJ,EAASv8J,EAAGi0H,EAAW/zH,MAAQq8J,EAASv8J,GADrDw8J,EAEIn7J,KAAKsH,IAAI4zJ,EAASp8J,EAAG8zH,EAAWx0H,OAAS88J,EAASp8J,GAEzD,OAAOkB,KAAKgH,KAAKm0J,GAhBD,EAgBkCA,GAhBlC,EAiBpB,CACO,MAAMC,WAAepa,GACxB56I,WAAAA,CAAY7J,GACRiuH,MAAMjuH,GACNwH,KAAKs3J,UAAYhnI,IACb,IAAKA,EAAGi1C,QAAQqiF,MACZ,OAEJ,MAAMpvJ,EAAYwH,KAAKu3J,cAAexN,EAAez5H,EAAGi1C,QAAQqiF,MAChE,IAAIx1B,OAAgCn6H,IAApB8xJ,EAAah/I,GACvBvS,EAAUg+H,UAAUghC,WACpBh/J,EAAUg+H,UAAUihC,YAAYz4I,IAAI+qI,EAAah/I,IACvD,GAAIqnH,EACA,OAGJA,EAAYM,GADKq3B,EAAa/iJ,MACW+iJ,EAAan3B,MAAOm3B,EAAal3B,cAClD56H,IAApB8xJ,EAAah/I,GACbvS,EAAUg+H,UAAUghC,WAAaplC,EAGjC55H,EAAUg+H,UAAUihC,YAAY/1E,IAAIqoE,EAAah/I,GAAIqnH,EACzD,EAEJpyH,KAAKu3J,cAAgB/+J,CACzB,CACAm7H,KAAAA,GACA,CACA74G,IAAAA,GACI9a,KAAKu3J,cAAc/gC,UAAUghC,gBAAav/J,EAC1C+H,KAAKu3J,cAAc/gC,UAAUihC,YAAc,IAAIzoE,GACnD,CACA+6C,QAAAA,CAASz5G,GACL,IAAKA,EAAGi1C,QAAQqiF,MACZ,OAEJt3H,EAAGs3H,MAAQ,GACX,MAAM/6B,EAAOv8F,EAAG67F,cAAe3zH,EAAYwH,KAAKxH,UAAWq2H,EAAar2H,EAAU0X,OAAO64B,KACzF,GAAI8jF,EAAKjyH,EAAI+U,IAAYk9G,EAAK9xH,EAAI4U,IAAYk9G,EAAKjyH,EAAIi0H,EAAW/zH,OAAS+xH,EAAK9xH,EAAI8zH,EAAWx0H,OAC3F,OAEJ,MAAMq9J,EAAWpnI,EAAGi1C,QAAQqiF,MAAOb,EAAa2Q,EAASl/G,QAAS0+G,EAAc5mI,EAAGmpG,OAAOk+B,eAvDjF,EAuD+GrxB,EAAOoxB,EAASpxB,KACxI,IAAIrtC,EAEAA,EADAqtC,EACQ,IAAIowB,GAAW7pC,EAAKjyH,EAAGiyH,EAAK9xH,EAAGm8J,EAAaroC,GAG5C,IAAI0hB,GAAO1jB,EAAKjyH,EAAGiyH,EAAK9xH,EAAGm8J,GAEvC,MAAM9sC,EAAQ5xH,EAAUg+H,UAAUgd,SAASppB,MAAMnxB,GACjD,IAAK,MAAMjkE,KAAMo1F,EAAO,CACpB,MAAMwtC,EAAW5iI,EAAGuwC,QAAQqiF,MAC5B,GAAIt3H,IAAO0E,IACN4iI,GAAUpsC,QACXksC,EAAS3sJ,KAAO6sJ,EAAS7sJ,IACzBiqB,EAAGijG,UACHjjG,EAAGm7B,YACFn7B,EAAG4yH,OACJt3H,EAAGs3H,MAAM57B,MAAKplH,GAAKA,EAAE9H,cAAgBk2B,KACrCA,EAAG4yH,MAAM57B,MAAKplH,GAAKA,EAAE9H,cAAgBwxB,IACrC,SAEJ,MAAMw8F,EAAO93F,EAAGm3F,cAChB,GAAIW,EAAKlyH,EAAI+U,IAAYm9G,EAAK/xH,EAAI4U,IAAYm9G,EAAKlyH,EAAIi0H,EAAW/zH,OAASgyH,EAAK/xH,EAAI8zH,EAAWx0H,OAC3F,SAEJ,MAAMgtC,EAAW4vH,GAAgBpqC,EAAMC,EAAMoqC,EAAaroC,EAAYyX,GAAQsxB,EAAStxB,MACvF,GAAIj/F,EAAW6vH,EACX,SAEJ,MAAMrN,GAvFqB,EAuFUxiH,EAAW6vH,GAAenQ,EAC/D/mJ,KAAKs3J,UAAUhnI,GACfA,EAAGs3H,MAAMtnJ,KAAK,CACVxB,YAAak2B,EACbwjB,QAASqxG,GAEjB,CACJ,CACA/f,SAAAA,CAAUzc,GACN,QAASA,EAAS9nD,QAAQqiF,OAAOp8B,MACrC,CACAoc,oBAAAA,CAAqBriE,GACZA,EAAQqiF,QACTriF,EAAQqiF,MAAQ,IAAImP,IACvB,QAAA9rC,EAAA7yH,UAAAC,OAH4BwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAIpC,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQqiF,MAAMv5I,KAAK8rC,GAAQytG,MAEnC,CACA73H,KAAAA,GACA,ECnBG,SAAS8nI,GAAiBrhC,EAAWshC,GACxC,MAAMviJ,IALiBwiJ,EAKAvhC,EAAUl9H,KAAIsN,GAAKA,EAAEmE,MAJxC+9H,MAAK,CAACl8H,EAAGpG,IAAMoG,EAAIpG,IAChBuxJ,EAAIhpJ,KAAK,MAFb,IAAoBgpJ,EAMvB,IAAIpuC,EAAMmuC,EAAW94I,IAAIzJ,GAKzB,YAJYtd,IAAR0xH,IACAA,EAAMtC,IACNywC,EAAWp2E,IAAInsE,EAAKo0G,IAEjBA,CACX,CChGO,MAAMquC,GACT31J,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,EACjBwH,KAAKi4J,cAAgB,CAAC3nI,EAAIq4D,KACtB,MAAMuvE,EAAiB5nI,EAAGi1C,QAAQqiF,MAClC,IAAKsQ,GAAgB1sC,OACjB,OAEJ,MAAMhzH,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAexgG,EAAK2zD,EAAK7pF,YAAa+tH,EAAOv8F,EAAG67F,cAAeW,EAAO93F,EAAGm3F,cAC/H,IAAI3zE,EAAUmwC,EAAKnwC,QACnBhgD,EAAU0X,OAAO4mH,MAAK3mH,IAClB,IAAIm5I,EACJ,MAAM6O,EAAU7nI,EAAGi1C,QAAQ4yF,SAASvkJ,MACpC,GAAIukJ,GAAS3sC,OAAQ,CACjB,MAAM4sC,EAAcD,EAAQz2H,UAAW22H,EAAapoC,GAAgBkoC,EAAQnxJ,OAAoBqgH,IAAc+wC,GAC7FC,IACb/O,EAAY+O,EACZ7/G,EAAUuvE,EAAcowC,EAAQ3/G,SAExC,CACA,IAAK8wG,EAAW,CACZ,MAAMl3B,OAAkCn6H,IAAtBigK,EAAentJ,GAC3BvS,EAAUg+H,UAAUihC,YAAYz4I,IAAIk5I,EAAentJ,IACnDvS,EAAUg+H,UAAUghC,WAC1BlO,EAAYn3B,GAAa7hG,EAAI0E,EAAIo9F,EACrC,CACA,IAAKk3B,EACD,OAEJ,MAAMxuJ,EAAQw1B,EAAGmpG,OAAOivB,YA9BP,EA8B+Bza,EAAc39G,EAAGmpG,OAAOk+B,eA9BtC,GA8BoE,eAAEliC,GAAmBlwD,GDxBpI,SAAsBvuD,GACzB,IAAIshJ,GAAQ,EACZ,MAAM,MAAE5kC,EAAK,IAAE34G,EAAG,YAAEkzH,EAAW,QAAEl3E,EAAO,WAAE83D,EAAU,MAAE/zH,EAAK,eAAE26H,EAAc,UAAE6zB,EAAS,QAAE9wG,EAAO,MAAEovG,GAAU5wI,EAC3G,GAAIsxG,EAAYoL,EAAO34G,IAAQkzH,EAC3Bxa,GAAS18D,EAAS28D,EAAO34G,GACzBu9I,GAAQ,OAEP,GAAI1Q,EAAMthB,KAAM,CACjB,IAAIiyB,EACAC,EACJ,MAIMpjI,EAAK6yF,EAAayL,EAJV,CACV94H,EAAGmgB,EAAIngB,EAAIi0H,EAAW/zH,MACtBC,EAAGggB,EAAIhgB,IAGX,GAAIq6B,EAAGiS,UAAY4mG,EAAa,CAC5B,MAAM3gC,EAAKomB,EAAM34H,EAAKq6B,EAAGizF,GAAKjzF,EAAGgzF,GAAMsL,EAAM94H,EAC7C29J,EAAM,CAAE39J,EAAG,EAAGG,EAAGuyG,GACjBkrD,EAAM,CAAE59J,EAAGi0H,EAAW/zH,MAAOC,EAAGuyG,EACpC,KACK,CACD,MAIMl5E,EAAK6zF,EAAayL,EAJV,CACV94H,EAAGmgB,EAAIngB,EACPG,EAAGggB,EAAIhgB,EAAI8zH,EAAWx0H,SAG1B,GAAI+5B,EAAGiT,UAAY4mG,EAAa,CAC5B,MACM5gC,IADKqmB,EAAM34H,EAAKq5B,EAAGi0F,GAAKj0F,EAAGg0F,GAAMsL,EAAM94H,IAC3Bw5B,EAAGi0F,GAAKj0F,EAAGg0F,IAC7BmwC,EAAM,CAAE39J,EAAGyyG,EAAItyG,EAAG,GAClBy9J,EAAM,CAAE59J,EAAGyyG,EAAItyG,EAAG8zH,EAAWx0H,OACjC,KACK,CACD,MAIMo+J,EAAKxwC,EAAayL,EAJV,CACV94H,EAAGmgB,EAAIngB,EAAIi0H,EAAW/zH,MACtBC,EAAGggB,EAAIhgB,EAAI8zH,EAAWx0H,SAG1B,GAAIo+J,EAAGpxH,UAAY4mG,EAAa,CAC5B,MAAM3gC,EAAKomB,EAAM34H,EAAK09J,EAAGpwC,GAAKowC,EAAGrwC,GAAMsL,EAAM94H,EAE7C29J,EAAM,CAAE39J,GADI0yG,GAAMmrD,EAAGpwC,GAAKowC,EAAGrwC,IACdrtH,EAAGuyG,GAClBkrD,EAAM,CAAE59J,EAAG29J,EAAI39J,EAAIi0H,EAAW/zH,MAAOC,EAAGw9J,EAAIx9J,EAAI8zH,EAAWx0H,OAC/D,CACJ,CACJ,CACIk+J,GAAOC,IACP/kC,GAAS18D,EAAS28D,EAAO6kC,GACzB9kC,GAAS18D,EAASh8C,EAAKy9I,GACvBF,GAAQ,EAEhB,CACA,IAAKA,EACD,OAEJvhG,EAAQvP,UAAY1sD,EAChB26H,EAAejK,SACfz0D,EAAQwC,yBAA2Bk8D,EAAeiD,WAEtD3hE,EAAQxB,YAAcq8D,GAAgB03B,EAAW9wG,GACjD,MAAM,OAAEmgF,GAAWivB,EACnB,GAAIjvB,EAAOnN,OAAQ,CACf,MAAMuN,EAAc9I,GAAgB0I,EAAO3xH,OACvC+xH,IACAhiE,EAAQiiE,WAAaL,EAAOM,KAC5BliE,EAAQgiE,YAAcnH,GAAgBmH,GAE9C,CACAhiE,EAAQjC,QACZ,CC5CgB4jG,CAAa,CACT3hG,QAAS5mD,EACTrV,QACA44H,MAAO7G,EACP9xG,IAAK+xG,EACLmhB,cACApf,WAAYr2H,EAAU0X,OAAO64B,KAC7B6+G,MAAOsQ,EACPziC,eAAgBA,EAChB6zB,YACA9wG,WACF,GACJ,EAENx4C,KAAK24J,kBAAoB,CAACroI,EAAIsoI,EAAOC,KACjC,MAAM9O,EAAez5H,EAAGi1C,QAAQqiF,MAChC,IAAKmC,GAAcv+B,OACf,OAEJ,MAAMstC,EAAkB/O,EAAaiN,UACrC,IAAK8B,EAAgBttC,OACjB,OAEJ,MAAMhzH,EAAYwH,KAAKxH,UAAW+sE,EAAU/sE,EAAUg9H,cAAexgG,EAAK4jI,EAAM95J,YAAay/B,EAAKs6H,EAAM/5J,YAAai6J,EAAkBD,EAAgBtgH,SAtDvG,IAsDmHogH,EAAMpgH,QAAUqgH,EAAMrgH,SACrLugH,GAvDG,GA0DPvgK,EAAU0X,OAAO4mH,MAAK3mH,IAClB,MAAM08G,EAAOv8F,EAAG67F,cAAeW,EAAO93F,EAAGm3F,cAAe6sC,EAAOz6H,EAAG4tF,cAAewrC,EAAgBrnI,EAAGmpG,OAAOk+B,eA3DzE,EA4DlC,GAAIrvC,EAAYuE,EAAMC,GAAQ6qC,GAC1BrvC,EAAY0wC,EAAMlsC,GAAQ6qC,GAC1BrvC,EAAY0wC,EAAMnsC,GAAQ8qC,EAC1B,OAEJ,IAAIsB,EAAgBhpC,GAAgB6oC,EAAgB9xJ,OACpD,IAAKiyJ,EAAe,CAChB,MAAM7mC,OAAgCn6H,IAApB8xJ,EAAah/I,GACzBvS,EAAUg+H,UAAUihC,YAAYz4I,IAAI+qI,EAAah/I,IACjDvS,EAAUg+H,UAAUghC,WAC1ByB,EAAgB9mC,GAAa7hG,EAAI0E,EAAIo9F,EACzC,CACK6mC,GDId,SAA0BjiJ,GAC7B,MAAM,QAAE+/C,EAAO,KAAE81D,EAAI,KAAEC,EAAI,KAAEksC,EAAI,eAAEvjC,EAAc,cAAEwjC,EAAa,gBAAEF,GAAoB/hJ,GA9EnF,SAAsB+/C,EAASzmC,EAAI0E,EAAIuJ,GAC1Cw4B,EAAQ/C,YACR+C,EAAQ9C,OAAO3jC,EAAG11B,EAAG01B,EAAGv1B,GACxBg8D,EAAQ7C,OAAOl/B,EAAGp6B,EAAGo6B,EAAGj6B,GACxBg8D,EAAQ7C,OAAO31B,EAAG3jC,EAAG2jC,EAAGxjC,GACxBg8D,EAAQ0E,WACZ,CAyEIy9F,CAAaniG,EAAS81D,EAAMC,EAAMksC,GAC9BvjC,EAAejK,SACfz0D,EAAQwC,yBAA2Bk8D,EAAeiD,WAEtD3hE,EAAQ1mD,UAAYuhH,GAAgBqnC,EAAeF,GACnDhiG,EAAQhC,MACZ,CCTgBokG,CAAiB,CACbpiG,QAAS5mD,EACT08G,OACAC,OACAksC,OACAvjC,eAAgBlwD,EAAQkwD,eACxBwjC,gBACAF,mBACF,GACJ,EAEN/4J,KAAKo5J,eAAiB,CAAC7zF,EAASj1C,EAAIq4D,EAAM0wE,KACtC,MAAMrkI,EAAK2zD,EAAK7pF,YAChB,IAAMymE,EAAQqiF,OAAOoP,UAAUxrC,SAAUx2F,EAAGuwC,QAAQqiF,OAAOoP,UAAUxrC,OACjE,OAEJ,MAAMv9F,EAAW+G,EAAG4yH,OAAOzuJ,QAAOyN,IAC9B,MAAM0yJ,EAAWt5J,KAAKu5J,kBAAkBvkI,EAAIpuB,EAAE9H,aAC9C,OAAQk2B,EAAGuwC,QAAQqiF,OACf0R,GAAYtkI,EAAGuwC,QAAQqiF,MAAMlmH,WAC7B23H,EAAQxhB,WAAUjkH,GAAKA,EAAE90B,cAAgB8H,EAAE9H,eAHwB,CAGA,IAE3E,GAAKmvB,GAAU51B,OAGf,IAAK,MAAMmhK,KAAUvrI,EAAU,CAC3B,MAAMsQ,EAAKi7H,EAAO16J,YAA4BkB,KAAKy5J,sBAAsBnpI,EAAI0E,EAAIuJ,GAC9DgnC,EAAQqiF,MAAMoP,UAAUt1H,WAG3C1hC,KAAK24J,kBAAkBroI,EAAIq4D,EAAM6wE,EACrC,GAEJx5J,KAAKu5J,kBAAoB,CAACjpI,EAAI0E,IACnB6iI,GAAiB,CAACvnI,EAAI0E,GAAKh1B,KAAK05J,OAAO9R,OAElD5nJ,KAAKy5J,sBAAwB,CAACnpI,EAAI0E,EAAIuJ,IAC3Bs5H,GAAiB,CAACvnI,EAAI0E,EAAIuJ,GAAKv+B,KAAK05J,OAAO1C,WAEtDh3J,KAAK05J,OAAS,CACV9R,MAAO,IAAI54D,IACXgoE,UAAW,IAAIhoE,IAEvB,CACAgpC,YAAAA,CAAajhE,EAASs2D,GAClB,MAAM,MAAEu6B,EAAK,QAAEriF,GAAY8nD,EAC3B,IAAKu6B,GAAOvvJ,OACR,OAEJ,MAAMghK,EAAUzR,EAAMzuJ,QAAOy6B,GAAK2xC,EAAQqiF,QACrCriF,EAAQqiF,MAAMlmH,WA7HqD,GA8HhE1hC,KAAKu5J,kBAAkBlsC,EAAUz5F,EAAE90B,cAAgBymE,EAAQqiF,MAAMlmH,aACzE,IAAK,MAAMinD,KAAQ0wE,EACfr5J,KAAKo5J,eAAe7zF,EAAS8nD,EAAU1kC,EAAM0wE,GACzC1wE,EAAKnwC,QAjIF,IAiI2B60E,EAASoM,OAAOivB,YAjI7B,MAkIjB1oJ,KAAKi4J,cAAc5qC,EAAU1kC,EAGzC,CACA,UAAM7tE,GACF9a,KAAK05J,OAAO9R,MAAQ,IAAI54D,IACxBhvF,KAAK05J,OAAO1C,UAAY,IAAIhoE,UACtByR,QAAQG,SAClB,CACAsvC,eAAAA,CAAgB7iB,GAEZ,GADAA,EAASu6B,MAAQ,IACZv6B,EAAS9nD,QAAQqiF,MAClB,OAEJ,MAAM7S,EAAQ/0I,KAAKxH,UAAUihI,OAAOD,YAAY,OAAEC,GAAWpM,GAAU,SAAEhmF,EAAQ,MAAEvsC,GAAUuyH,EAAS9nD,QAAQqiF,MAC9GnuB,EAAOk+B,cAAgBtwH,EAAW0tG,EAClCtb,EAAOivB,WAAa5tJ,EAAQi6I,CAChC,CACAtH,iBAAAA,CAAkBpgB,GACdA,EAASu6B,MAAQ,EACrB,ECvJG,MAAM+R,GACTt3J,WAAAA,GACIrC,KAAK+K,GAAK,OACd,CACAmwI,SAAAA,CAAU1iJ,GACN,OAAOioG,QAAQG,QAAQ,IAAIo3D,GAAax/J,GAC5C,CACAmvI,WAAAA,GACA,CACA6T,WAAAA,GACI,OAAO,CACX,ECVGhxB,eAAeovC,GAA8BpvH,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SCD5DoyH,eAAoChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAChDoyC,EAAOkwG,cAAc,kBAAkBlwB,SAClC/pB,QAAQG,QAAQ,IAAIy2D,GAAO7+J,KACnCmjI,EACP,CDFUk+B,CAAqBrvH,EAAQmxF,SEFhCnR,eAA+BhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,GACjD,MAAMqgC,EAAS,IAAIkhI,SACbnvH,EAAOywG,UAAUxiH,EAAQkjG,EACnC,CFAUm+B,CAAgBtvH,EAAQmxF,EAClC,CGJA,MAAmBhsH,GAAc,EAAdA,GAAoB,ECEhC,MAAMoqJ,GACTjjC,IAAAA,CAAK/tH,GACD,MAAM,SAAEskH,EAAQ,OAAEnqF,GAAWn6B,GDH9B,SAAqBA,EAAMqrE,EAAO4lF,GACrC,MAAM,QAAEjjG,GAAYhuD,EAAMkxJ,EAAYD,EAAK3xH,MAAM6xH,UAAYF,EAAK3xH,MAAM8xH,YAAaC,EAAeJ,EAAK3xH,MAAM6xH,UAAYF,EAAK3xH,MAAM8xH,YAAaE,EAFzI,KAE0KD,EAF9H,GAE6JA,EAAcE,EAAgBr+J,KAAKgI,GAAKskH,EAAS8xC,GACpQ,GAAKtjG,EAAL,CAGAA,EAAQ/C,YACR+C,EAAQjjC,UAAUsgD,EAAMx5E,EAAGw5E,EAAMr5E,GACjCg8D,EAAQ9C,OAAOtkD,GAAUA,IACzB,IAAK,IAAI5Q,EAAI,EAAGA,EAAIk7J,EAAWl7J,IAC3Bg4D,EAAQ7C,OAAO8lG,EAAK3hK,OAAQsX,IAC5BonD,EAAQjjC,UAAUkmI,EAAK3hK,OAAQsX,IAC/BonD,EAAQjkC,OAAOwnI,EAPnB,CASJ,CCTQC,CAAYxxJ,EAD+B/I,KAAKw6J,UAAUntC,EAAUnqF,GAAgBljC,KAAKy6J,aAAaptC,EAAUnqF,GAEpH,CACA4sG,aAAAA,CAAcziB,GACV,MAAMqtC,EAAUrtC,EAASxpG,UACzB,OAAO5nB,KAAKoI,MAAM0jH,EAAc2yC,GAASnrB,OAR5B,GASjB,ECTG,MAAMorB,WAAsBZ,GAC/B13J,WAAAA,GACIokH,SAASruH,WACT4H,KAAKq7I,WAAa,CAAC,UACvB,CACAmf,SAAAA,CAAUntC,EAAUnqF,GAChB,MAAO,CACHtoC,GAAIsoC,GAAUmqF,EAASkiB,MART,KASdx0I,GAAImoC,EAAS,IAErB,CACAu3H,YAAAA,CAAaptC,EAAUnqF,GACnB,MAAMqsG,EAAQliB,EAASkiB,MACvB,MAAO,CACHlnG,MAAO,CACH8xH,YAAa,EACbD,UAAW3qB,GAEfl3I,OAnB6B,KAmBpB6qC,GAAqBqsG,EAnBmB,GAqBzD,ECpBG,MAAMqrB,WAAuBb,GAChC13J,WAAAA,GACIokH,SAASruH,WACT4H,KAAKq7I,WAAa,CAAC,WACvB,CACAmf,SAAAA,CAAUntC,EAAUnqF,GAChB,MAAO,CACHtoC,GAAIsoC,EACJnoC,EAAGmoC,EATC,KAWZ,CACA4sG,aAAAA,GACI,OAbsB,CAc1B,CACA2qB,YAAAA,CAAaptC,EAAUnqF,GAEnB,MAAO,CACHmF,MAAO,CACH8xH,YAAa,EACbD,UAAW,GAEf7hK,OAtB8B,EAgBjB6qC,EAQrB,ECjBGsnF,eAAeqwC,GAAiBrwH,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAN/CoyH,eAAuChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACnDoyC,EAAO7b,SAAS,IAAIgsI,GAAiBh/B,EAC/C,CAKUm/B,CAAwBtwH,EAAQmxF,SAJnCnR,eAAiChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC7CoyC,EAAO7b,SAAS,IAAIisI,GAAkBj/B,EAChD,CAGUo/B,CAAkBvwH,EAAQmxF,EACpC,CCVO,MAAMq/B,GACT34J,WAAAA,GACIrC,KAAKwrH,QAAS,EACdxrH,KAAK9I,MAAQ,EACb8I,KAAKmuH,MAAQ,EACbnuH,KAAKozH,MAAO,CAChB,CACA/kH,IAAAA,CAAKtF,GACIA,SAGe9Q,IAAhB8Q,EAAKyiH,SACLxrH,KAAKwrH,OAASziH,EAAKyiH,aAEJvzH,IAAf8Q,EAAK7R,QACL8I,KAAK9I,MAAQ8wH,EAAcj/G,EAAK7R,aAEjBe,IAAf8Q,EAAKolH,QACLnuH,KAAKmuH,MAAQnG,EAAcj/G,EAAKolH,aAElBl2H,IAAd8Q,EAAKqqH,OACLpzH,KAAKozH,KAAOrqH,EAAKqqH,MAEzB,ECtBG,MAAM6nC,WAAe12B,GACxBliI,WAAAA,GACIokH,QACAzmH,KAAKoP,UAAY,IAAI4rJ,GACrBh7J,KAAKxI,UAAY+kJ,GAAgB0B,UACjCj+I,KAAK8I,MAAO,EACZ9I,KAAK5I,MAAQ,CACjB,CACAiX,IAAAA,CAAKtF,GACIA,IAGL09G,MAAMp4G,KAAKtF,QACY9Q,IAAnB8Q,EAAKvR,YACLwI,KAAKxI,UAAYuR,EAAKvR,WAE1BwI,KAAKoP,UAAUf,KAAKtF,EAAKqG,gBACPnX,IAAd8Q,EAAKD,OACL9I,KAAK8I,KAAOC,EAAKD,MAEzB,ECpBJ,MAAkBm+G,GAAH,EAAchrH,KAAKgI,GAC3B,MAAMi3J,GACT74J,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,CACrB,CACAsiB,IAAAA,CAAKuyG,GACD,MAAM8tC,EAAgB9tC,EAAS9nD,QAAQzyC,OACvC,IAAKqoI,EACD,OAEJ9tC,EAASv6F,OAAS,CACd04F,OAAQ2vC,EAAc/rJ,UAAUo8G,OAChCp0H,MAAOmxH,EAASR,EAAcozC,EAAc/jK,QAC5CmM,IAAK,EACLF,IAAK4jH,IAEToG,EAASuL,aAAeuiC,EAAcryJ,KACtC,IAAIsyJ,EAAkBD,EAAc3jK,UACpC,GAAI4jK,IAAoB7e,GAAgB54I,OAAQ,CAE5Cy3J,EADcn/J,KAAKkH,MAnBhB,EAmBsBkkH,KAAkC,EACtBk1B,GAAgB2B,iBAAmB3B,GAAgB0B,SAC5F,CACA,OAAQmd,GACJ,KAAK7e,GAAgB2B,iBACrB,IAAK,mBACD7wB,EAASv6F,OAAOjkB,OAASk6G,EAAgBwF,WACzC,MACJ,KAAKguB,GAAgB0B,UACjB5wB,EAASv6F,OAAOjkB,OAASk6G,EAAgBsF,WAGjD,MAAMgtC,EAAkBF,EAAc/rJ,UAClCisJ,EAAgB7vC,SAChB6B,EAASv6F,OAAOq7F,MAjC8B,EAiCXpG,EAAcszC,EAAgBltC,OACjEd,EAASv6F,OAAO45C,SACXq7C,EAAcszC,EAAgBnkK,OAnC4B,IAmCJ8I,KAAKxH,UAAUihI,OAAOzG,aAC5EqoC,EAAgBjoC,OACjB/F,EAASv6F,OAAO45C,UAAY26C,MAGpCgG,EAAS/hD,SAAW+hD,EAASv6F,OAAO17B,KACxC,CACA0yI,SAAAA,CAAUzc,GACN,MAAMv6F,EAASu6F,EAAS9nD,QAAQzyC,OAChC,QAAKA,KAGGu6F,EAASl9D,YAAck9D,EAAS4K,aAAenlG,EAAO17B,OAAS07B,EAAO1jB,UAAUo8G,QAAU14F,EAAOhqB,MAC7G,CACA6+H,WAAAA,CAAYpiE,GACHA,EAAQzyC,SACTyyC,EAAQzyC,OAAS,IAAImoI,IACxB,QAAAhwC,EAAA7yH,UAAAC,OAHmBwG,EAAO,IAAAjG,MAAAqyH,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPrsH,EAAOqsH,EAAA,GAAA9yH,UAAA8yH,GAI3B,IAAK,MAAM/wE,KAAUt7C,EACjB0mE,EAAQzyC,OAAOzkB,KAAK8rC,GAAQrnB,OAEpC,CACAqzB,MAAAA,CAAOknE,EAAUhvF,GACRr+B,KAAK8pI,UAAUzc,KAGpBA,EAAS0gB,aAAe1gB,EAASv6F,OAC5Bu6F,EAASv6F,SAGdg8F,GAAgBzB,EAAUA,EAASv6F,QAAQ,EAAOk2F,EAAY+c,KAAM1nG,GACpEgvF,EAAS/hD,SAAW+hD,EAASv6F,OAAO17B,OACxC,ECrEJ,MAA4BkkK,GAAYr/J,KAAKgH,KAApB,GCElB,MAAMs4J,GACTl5J,WAAAA,GACIrC,KAAKq7I,WAAa,CAAC,OAAQ,SAC/B,CACAvkB,IAAAA,CAAK/tH,IDLF,SAAoBA,GACvB,MAAM,QAAEguD,EAAO,OAAE7zB,GAAWn6B,EAAMyyJ,EAAct4H,EAASo4H,GAAWG,EAFM,EAEUD,EACpFzkG,EAAQvgB,MAAMglH,GAAcA,EAAaC,EAAeA,EAC5D,CCGQC,CAAW3yJ,EACf,CACA+mI,aAAAA,GACI,OATM,CAUV,ECXJ,MAAwBngI,GAAc,EAAdA,GAAoB,ECGrC,MAAMgsJ,GACTt5J,WAAAA,GACIrC,KAAKq7I,WAAa,CAAC,OACvB,CACAvkB,IAAAA,CAAK/tH,IDNF,SAAkBA,GACrB,MAAM,QAAEguD,EAAO,SAAEs2D,EAAQ,OAAEnqF,GAAWn6B,EAAMwmI,EAAQliB,EAASkiB,MAAOqsB,EAAQvuC,EAASwuC,WAFpE,EAGjB9kG,EAAQ9C,OAAOtkD,GAAUA,GAAWuzB,GACpC,IAAK,IAAInkC,EAAI,EAAGA,EAAIwwI,EAAOxwI,IACvBg4D,EAAQjkC,OAAO72B,KAAKgI,GAAKsrI,GACzBx4E,EAAQ7C,OAAOvkD,GAAUA,GAAWuzB,EAAS04H,GAC7C7kG,EAAQjkC,OAAO72B,KAAKgI,GAAKsrI,GACzBx4E,EAAQ7C,OAAOvkD,GAAUA,GAAWuzB,EAE5C,CCFQ44H,CAAS/yJ,EACb,CACA+mI,aAAAA,CAAcziB,GACV,MAAM0uC,EAAO1uC,EAASxpG,UACtB,OAAO5nB,KAAKoI,MAAM0jH,EAAcg0C,GAAMxsB,OAVP,GAWnC,CACAU,YAAAA,CAAaz3I,EAAW60H,GACpB,MAAM0uC,EAAO1uC,EAASxpG,UACtBwpG,EAASwuC,UAAY9zC,EAAcg0C,GAAMH,OAd5B,EAejB,ECfG,MAAMI,GACT35J,WAAAA,CAAY7J,GACRwH,KAAKxH,UAAYA,CACrB,CACAsiB,IAAAA,CAAKuyG,GACD,MAAM70H,EAAYwH,KAAKxH,UAAW+sE,EAAU8nD,EAAS9nD,QAC/CzQ,EAAS44D,GAAyBnoD,EAAQzQ,OAAQu4D,EAAStiH,GAAIw6D,EAAQiiE,kBAC7Ena,EAASzsD,YAAcmnD,EAAcjzD,EAAOh6D,OAAStC,EAAUihI,OAAOD,WACtEnM,EAASxlC,cAAgBkgC,EAAcjzD,EAAOtc,SAT/B,GAUf60E,EAAS4uC,gBAAkBnnG,EAAO9tD,OAAOoI,UACzC,MAAM8sJ,EAAiB3rC,GAAgBz7D,EAAO9tD,QAAUqmH,EAASiF,eAC7D4pC,IACA7uC,EAASqgB,YAAc3a,GAAuBmpC,EAAgB7uC,EAAS4uC,gBAAiBzjK,EAAUihI,OAAOzG,cAEjH,CACA8W,SAAAA,CAAUzc,GACN,MAAMrmH,EAAQqmH,EAAS4uC,iBAAiB,YAAEvuB,GAAgBrgB,EAC1D,OAASA,EAASl9D,YACbk9D,EAAS4K,YACRjxH,SACyB/O,IAAzBy1I,GAAavnI,EAAE/O,OAAuBs2I,EAAYvnI,EAAEqlH,aACxBvzH,IAAzBy1I,GAAatnI,EAAEhP,OAAuBs2I,EAAYtnI,EAAEolH,aAC3BvzH,IAAzBy1I,GAAa95G,EAAEx8B,OAAuBs2I,EAAY95G,EAAE43F,OACjE,CACArlE,MAAAA,CAAOknE,EAAUhvF,GACRr+B,KAAK8pI,UAAUzc,IAGpBiG,GAAYjG,EAASqgB,YAAarvG,EACtC,ECNGmsF,eAAe2xC,GAAS3xH,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SCxBvCoyH,eAAiChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC7CoyC,EAAOowG,SAAS,YAAY,IACvBn6C,QAAQG,QAAQ,IAAI20D,KAC5B55B,EACP,CDqBUygC,CAAkB5xH,GAAQ,SEzB7BggF,eAA8ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC1DoyC,EAAOkwG,cAAc,mBAAmBliJ,GACnCioG,QAAQG,QAAQ,IAAIwiD,GAAU54G,EAAQhyC,KAC9CmjI,EACP,CFsBU0gC,CAA+B7xH,GAAQ,SG1B1CggF,eAA6ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACzDoyC,EAAOkwG,cAAc,kBAAkBliJ,GAClCioG,QAAQG,QAAQ,IAAI8jD,GAAQlsJ,KACpCmjI,EACP,CHuBU2gC,CAA8B9xH,GAAQ,SI3BzCggF,eAA6ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACzDoyC,EAAOkwG,cAAc,kBAAkBliJ,GAClCioG,QAAQG,QAAQ,IAAI0kD,GAAQ9sJ,KACpCmjI,EACP,CJwBU4gC,CAA8B/xH,GAAQ,SK5BzCggF,eAA8ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC1DoyC,EAAOkwG,cAAc,mBAAmBliJ,GACnCioG,QAAQG,QAAQ,IAAI+nD,GAAUnwJ,KACtCmjI,EACP,CLyBU6gC,CAA+BhyH,GAAQ,SM7B1CggF,eAA2ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACvDoyC,EAAOkwG,cAAc,gBAAgBliJ,GAChCioG,QAAQG,QAAQ,IAAI4oD,GAAQhxJ,KACpCmjI,EACP,CN0BU8gC,CAA4BjyH,GAAQ,SO9BvCggF,eAA4ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACxDoyC,EAAOkwG,cAAc,iBAAiBliJ,GACjCioG,QAAQG,QAAQ,IAAIopD,GAAOxxJ,KACnCmjI,EACP,CP2BU+gC,CAA6BlyH,GAAQ,SQ/BxCggF,eAA2ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACvDoyC,EAAOkwG,cAAc,gBAAgBliJ,GAChCioG,QAAQG,QAAQ,IAAIspD,GAAO1xJ,KACnCmjI,EACP,CR4BUghC,CAA4BnyH,GAAQ,SShCvCggF,eAA6ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACzDoyC,EAAOkwG,cAAc,kBAAkBliJ,GAClCioG,QAAQG,QAAQ,IAAIypD,GAAQ7xJ,KACpCmjI,EACP,CT6BUihC,CAA8BpyH,GAAQ,SUjCzCggF,eAA8ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC1DoyC,EAAOkwG,cAAc,mBAAmBliJ,GACnCioG,QAAQG,QAAQ,IAAI+pD,GAASngH,EAAQhyC,KAC7CmjI,EACP,CV8BUkhC,CAA+BryH,GAAQ,SWlC1CggF,eAA2ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACvDoyC,EAAOkwG,cAAc,gBAAgBliJ,GAChCioG,QAAQG,QAAQ,IAAIgrD,GAAOpzJ,KACnCmjI,EACP,CX+BUmhC,CAA4BtyH,GAAQ,SYnCvCggF,eAA+ChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC3DoyC,EAAOkwG,cAAc,oBAAoBliJ,GACpCioG,QAAQG,QAAQ,IAAIwiD,GAAU5qJ,KACtCmjI,EACP,CZgCUohC,CAAgCvyH,GAAQ,SapC3CggF,eAAkDhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC9DoyC,EAAOkwG,cAAc,uBAAuBliJ,GACvCioG,QAAQG,QAAQ,IAAI21D,GAAS/9J,KACrCmjI,EACP,CbiCUqhC,CAAmCxyH,GAAQ,SAC3CovH,GAA8BpvH,GAAQ,SctCzCggF,iBACHtD,EAAUu1B,GAAWwgB,YAAY7lK,GAASA,GAAS,IACnD8vH,EAAUu1B,GAAWyG,aAAa9rJ,GAAS,GAAK,EAAIA,IAAU,IAC9D8vH,EAAUu1B,GAAWygB,eAAe9lK,GAAUA,EAAQ,GAAM,EAAIA,GAAS,EAAI,IAAM,EAAIA,EAAQ,IAAM,EAAI,UACnGqpG,QAAQG,SAClB,CdkCUu8D,SevCH3yC,eAA8BhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC1CoyC,EAAO7b,SAAS,IAAIizH,GAAejmB,EAC7C,CfsCUyhC,CAAe5yH,GAAQ,SACvBwoH,GAAexoH,GAAQ,SgBzC1BggF,eAA6BhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACzCoyC,EAAO7b,SAAS,IAAI0mI,GAAc15B,EAC5C,ChBwCU0hC,CAAc7yH,GAAQ,SACtBqwH,GAAiBrwH,GAAQ,SiB3C5BggF,eAA+BhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC3CoyC,EAAO7b,SAAS,IAAI4sI,GAAgB5/B,EAC9C,CjB0CU2hC,CAAgB9yH,GAAQ,SkB5C3BggF,eAA6BhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SACzCoyC,EAAO7b,SAAS,IAAIgtI,GAAchgC,EAC5C,ClB2CU4hC,CAAc/yH,GAAQ,SmB7CzBggF,eAA+BhgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC3CoyC,EAAOswG,mBAAmB,QAAQtwB,SAC7B/pB,QAAQG,QAAQ,IAAIk0D,GAAYt8J,KACxCmjI,EACP,CnB0CU6hC,CAAgBhzH,GAAQ,SoB9C3BggF,eAAiChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAC7CoyC,EAAOswG,mBAAmB,UAAUtiJ,GAC/BioG,QAAQG,QAAQ,IAAIs6D,GAAc1iK,KAC1CmjI,EACP,CpB2CU8hC,CAAkBjzH,GAAQ,SqB/C7BggF,eAAsChgF,GAAwB,IAAhBmxF,IAAOvjI,UAAAC,OAAA,QAAAJ,IAAAG,UAAA,KAAAA,UAAA,SAClDoyC,EAAOswG,mBAAmB,eAAetiJ,GACpCioG,QAAQG,QAAQ,IAAIo7D,GAAmBxjK,KAC/CmjI,EACP,CrB4CU+hC,CAAuBlzH,GAAQ,SAC/B42G,GAAU52G,EAAQmxF,EAC5B,CsB/CA,MA6pMA,GA7pM4BhnI,IAC1B,MAAOmmB,EAAM6iJ,IAAWrnK,EAAAA,EAAAA,WAAS,IAC1BsnK,EAAaC,IAAkBvnK,EAAAA,EAAAA,UAAS,IAE/CoC,EAAAA,EAAAA,YAAU,KACRolK,IAAoBtzC,gBACZ2xC,GAAS3xH,EAAO,IACrBq2D,MAAK,KACN88D,GAAQ,EAAK,IAIf,MAAMtsJ,EAAaC,aAAY,KAC7BusJ,GAAgBE,IAAUA,EAAO,GAAK,IAAG,GACxC,KAGH,MAAO,IAAMtsJ,cAAcJ,EAAW,GACrC,IAEH,MA8nMMkpI,EAAU,EAvnMAtsC,EAAAA,EAAAA,UAAQ,MACtB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,GACZ,OAAU,GACV,KAAQ,GACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,IAEV,MAAS,CACP,UAAa,GACb,QAAU,EACV,KAAQ,GACR,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,SACR,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEX,OAAU,CACR,SAAY,KAEd,OAAU,CACR,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,KAGjB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,KAGjB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,IAEV,OAAU,CAAC,EACX,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,OACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,GAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,SAAY,GACZ,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGYA,EAAAA,EAAAA,UAAQ,MACtB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,UACZ,OAAU,YACV,KAAQ,MACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,GAEX,MAAS,CACP,UAAa,CAAC,EACd,QAAU,EACV,KAAQ,CAAC,EACT,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,EACT,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEb,OAAU,CACN,SAAY,KAEhB,OAAU,CACR,SAAY,IACZ,SAAY,EACZ,KAAO,EACP,QAAW,EACX,KAAQ,EACR,KAAQ,CACJ,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,CAAC,IAGlB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,CAAC,GAEX,OAAU,GACV,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,OACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,IAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAGT,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,KAAQ,WACR,SAAY,CACV,UAAY,EACZ,MAAQ,EAGR,UAAa,CACX,MAAS,CACP,KAAQ,SACR,QAAW,CACT,OAAU,CACR,IAAO,8DACP,MAAS,IACT,OAAU,SAOpB,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGYA,EAAAA,EAAAA,UAAQ,MACtB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,GACZ,OAAU,GACV,KAAQ,GACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,GAEX,MAAS,CACP,UAAa,CAAC,EACd,QAAU,EACV,KAAQ,CAAC,EACT,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,EACT,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEX,OAAU,CACR,SAAY,KAEd,OAAU,CACR,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,QAAW,EACX,KAAQ,EACR,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,CAAC,IAGlB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,CAAC,GAEX,OAAU,GACV,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,SACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,EACT,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,KAAQ,OACR,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGWA,EAAAA,EAAAA,UAAQ,MACrB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,GACZ,OAAU,GACV,KAAQ,GACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,IAEV,MAAS,CACP,UAAa,GACb,QAAU,EACV,KAAQ,GACR,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,SACR,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEX,OAAU,CACR,SAAY,KAEd,OAAU,CACR,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,KAGjB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,KAGjB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,IAEV,OAAU,CAAC,EACX,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,OACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,GAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,SAAY,GACZ,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGYA,EAAAA,EAAAA,UAAQ,MACtB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,UACZ,OAAU,YACV,KAAQ,MACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,GAEX,MAAS,CACP,UAAa,CAAC,EACd,QAAU,EACV,KAAQ,CAAC,EACT,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,EACT,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEb,OAAU,CACN,SAAY,KAEhB,OAAU,CACR,SAAY,IACZ,SAAY,EACZ,KAAO,EACP,QAAW,EACX,KAAQ,EACR,KAAQ,CACJ,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,CAAC,IAGlB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,CAAC,GAEX,OAAU,GACV,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,OACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,IAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAGT,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,KAAQ,WACR,SAAY,CACV,UAAY,EACZ,MAAQ,EAGR,UAAa,CACX,MAAS,CACP,KAAQ,SACR,QAAW,CACT,OAAU,CACR,IAAO,8DACP,MAAS,IACT,OAAU,SAOpB,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGYA,EAAAA,EAAAA,UAAQ,MACtB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,UACZ,OAAU,YACV,KAAQ,MACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,GAEX,MAAS,CACP,UAAa,CAAC,EACd,QAAU,EACV,KAAQ,CAAC,EACT,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,EACT,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEb,OAAU,CACN,SAAY,KAEhB,OAAU,CACR,SAAY,IACZ,SAAY,EACZ,KAAO,EACP,QAAW,EACX,KAAQ,EACR,KAAQ,CACJ,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,CAAC,IAGlB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,CAAC,GAEX,OAAU,GACV,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,QACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,GAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAGT,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,KAAQ,WACR,SAAY,CACV,UAAY,EACZ,MAAQ,EAGR,UAAa,CACX,MAAS,CACP,KAAQ,SACR,QAAW,CACT,OAAU,CACR,IAAO,8DACP,MAAS,IACT,OAAU,SAOpB,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGYA,EAAAA,EAAAA,UAAQ,MACtB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,GACZ,OAAU,GACV,KAAQ,GACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,IAEV,MAAS,CACP,UAAa,GACb,QAAU,EACV,KAAQ,GACR,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,SACR,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEX,OAAU,CACR,SAAY,KAEd,OAAU,CACR,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,KAGjB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,KAGjB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,IAEV,OAAU,CAAC,EACX,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,OACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,GAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,SAAY,GACZ,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGYA,EAAAA,EAAAA,UAAQ,MACtB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,UACZ,OAAU,YACV,KAAQ,MACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,GAEX,MAAS,CACP,UAAa,CAAC,EACd,QAAU,EACV,KAAQ,CAAC,EACT,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,EACT,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEb,OAAU,CACN,SAAY,KAEhB,OAAU,CACR,SAAY,IACZ,SAAY,EACZ,KAAO,EACP,QAAW,EACX,KAAQ,EACR,KAAQ,CACJ,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,CAAC,IAGlB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,CAAC,GAEX,OAAU,GACV,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,OACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,IAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAGT,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,KAAQ,WACR,SAAY,CACV,UAAY,EACZ,MAAQ,EAGR,UAAa,CACX,MAAS,CACP,KAAQ,SACR,QAAW,CACT,OAAU,CACR,IAAO,8DACP,MAAS,IACT,OAAU,SAOpB,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGYA,EAAAA,EAAAA,UAAQ,MACtB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,UACZ,OAAU,YACV,KAAQ,MACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,GAEX,MAAS,CACP,UAAa,CAAC,EACd,QAAU,EACV,KAAQ,CAAC,EACT,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,EACT,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEb,OAAU,CACN,SAAY,KAEhB,OAAU,CACR,SAAY,IACZ,SAAY,EACZ,KAAO,EACP,QAAW,EACX,KAAQ,EACR,KAAQ,CACJ,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,CAAC,IAGlB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,CAAC,GAEX,OAAU,GACV,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,OACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,EACP,IAAO,GAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAGT,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,KAAQ,WACR,SAAY,CACV,UAAY,EACZ,MAAQ,EAGR,UAAa,CACX,MAAS,CACP,KAAQ,SACR,QAAW,CACT,OAAU,CACR,IAAO,8DACP,MAAS,IACT,OAAU,SAOpB,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGYA,EAAAA,EAAAA,UAAQ,MACtB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,GACZ,OAAU,GACV,KAAQ,GACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,IAEV,MAAS,CACP,UAAa,GACb,QAAU,EACV,KAAQ,GACR,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,SACR,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEX,OAAU,CACR,SAAY,KAEd,OAAU,CACR,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,KAGjB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,KAGjB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,IAEV,OAAU,CAAC,EACX,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,OACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,GAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,SAAY,GACZ,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAGaA,EAAAA,EAAAA,UAAQ,MACvB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,UACZ,OAAU,YACV,KAAQ,MACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,GAEX,MAAS,CACP,UAAa,CAAC,EACd,QAAU,EACV,KAAQ,CAAC,EACT,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,EACT,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEb,OAAU,CACN,SAAY,KAEhB,OAAU,CACR,SAAY,IACZ,SAAY,EACZ,KAAO,EACP,QAAW,EACX,KAAQ,EACR,KAAQ,CACJ,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,CAAC,IAGlB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,CAAC,GAEX,OAAU,GACV,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,OACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,IAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAGT,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,KAAQ,WACR,SAAY,CACV,UAAY,EACZ,MAAQ,EAGR,UAAa,CACX,MAAS,CACP,KAAQ,SACR,QAAW,CACT,OAAU,CACR,IAAO,8DACP,MAAS,IACT,OAAU,SAOpB,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAIaA,EAAAA,EAAAA,UAAQ,MACvB,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,UACZ,OAAU,YACV,KAAQ,MACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,GAEX,MAAS,CACP,UAAa,CAAC,EACd,QAAU,EACV,KAAQ,CAAC,EACT,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,EACT,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEb,OAAU,CACN,SAAY,KAEhB,OAAU,CACR,SAAY,IACZ,SAAY,EACZ,KAAO,EACP,QAAW,EACX,KAAQ,EACR,KAAQ,CACJ,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,CAAC,IAGlB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,CAAC,GAEX,OAAU,GACV,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,MACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,CACP,IAAO,GACP,IAAO,IAET,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAGT,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,KAAQ,WACR,SAAY,CACV,UAAY,EACZ,MAAQ,EAGR,UAAa,CACX,MAAS,CACP,KAAQ,SACR,QAAW,CACT,OAAU,CACR,IAAO,8DACP,MAAS,IACT,OAAU,SAOpB,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAGX,KAMJ,OACE4W,EAAAA,EAAAA,KAAC6sB,GAAS,CACR3mI,GAAIpW,EAAMoW,GACV+P,KAnoMqBtiB,IACvBw1C,QAAQm/C,IAAI30F,EAAU,EAmoMpB+sE,QAASg1E,EAAQqjB,IACjB,6OCtpMMI,IAAZ,SAAYA,GAQVA,EAAA,UAOAA,EAAA,YAMAA,EAAA,iBACD,CAtBD,CAAYA,KAAAA,GAsBX,KAqKD,MAAMC,GAAoB,WAySV,SAAAC,GAAU9mK,EAAYg5G,GACpC,IAAc,IAAVh5G,GAA6B,OAAVA,GAAmC,qBAAVA,EAC9C,MAAM,IAAI4c,MAAMo8F,EAEpB,CAEgB,SAAAoZ,GAAQ20C,EAAW/tD,GACjC,IAAK+tD,EAAM,CAEc,qBAAZnwH,SAAyBA,QAAQC,KAAKmiE,GAEjD,IAME,MAAM,IAAIp8F,MAAMo8F,EAEjB,CAAC,MAAO1mG,GAAI,CACd,CACH,CASA,SAAS00J,GAAgB1uJ,EAAoB8L,GAC3C,MAAO,CACL6iJ,IAAK3uJ,EAAS+2D,MACdlxD,IAAK7F,EAAS6F,IACduxG,IAAKtrG,EAET,CAKM,SAAU8iJ,GACdxnK,EACA0wB,EACAi/C,EACAlxD,GAcA,YAfA,IAAAkxD,IAAAA,EAAa,MAGD83F,GAAA,CACV3uJ,SAA6B,kBAAZ9Y,EAAuBA,EAAUA,EAAQ8Y,SAC1DspF,OAAQ,GACRslE,KAAM,IACY,kBAAPh3I,EAAkBi3I,GAAUj3I,GAAMA,EAAE,CAC/Ci/C,QAKAlxD,IAAMiS,GAAOA,EAAgBjS,KAAQA,GAjChCtZ,KAAK0H,SAAS6D,SAAS,IAAIkQ,OAAO,EAAG,IAoC9C,CAKgB,SAAAgyD,GAAUzuE,GAIV,IAJW,SACzB2U,EAAW,IAAG,OACdspF,EAAS,GAAE,KACXslE,EAAO,IACOvjK,EAKd,OAJIi+F,GAAqB,MAAXA,IACZtpF,GAAiC,MAArBspF,EAAOjyC,OAAO,GAAaiyC,EAAS,IAAMA,GACpDslE,GAAiB,MAATA,IACV5uJ,GAA+B,MAAnB4uJ,EAAKv3G,OAAO,GAAau3G,EAAO,IAAMA,GAC7C5uJ,CACT,CAKM,SAAU6uJ,GAAU31J,GACxB,IAAI41J,EAA4B,CAAC,EAEjC,GAAI51J,EAAM,CACR,IAAI61J,EAAY71J,EAAKoF,QAAQ,KACzBywJ,GAAa,IACfD,EAAWF,KAAO11J,EAAK4O,OAAOinJ,GAC9B71J,EAAOA,EAAK4O,OAAO,EAAGinJ,IAGxB,IAAIC,EAAc91J,EAAKoF,QAAQ,KAC3B0wJ,GAAe,IACjBF,EAAWxlE,OAASpwF,EAAK4O,OAAOknJ,GAChC91J,EAAOA,EAAK4O,OAAO,EAAGknJ,IAGpB91J,IACF41J,EAAW9uJ,SAAW9G,EAEzB,CAED,OAAO41J,CACT,CASA,SAASG,GACPC,EACAC,EACAC,EACAz5F,QAAA,IAAAA,IAAAA,EAA6B,CAAC,GAE9B,IAAI,OAAEjrE,EAAS+B,SAASs/F,YAAY,SAAEsjE,GAAW,GAAU15F,EACvD25F,EAAgB5kK,EAAO6kK,QACvBzjK,EAASsiK,GAAOoB,IAChBhmK,EAA4B,KAE5BoiB,EAAQ6jJ,IASZ,SAASA,IAEP,OADYH,EAAcz4F,OAAS,CAAEqgD,IAAK,OAC7BA,GACf,CAEA,SAASw4C,IACP5jK,EAASsiK,GAAOoB,IAChB,IAAI79H,EAAY89H,IACZhhI,EAAqB,MAAbkD,EAAoB,KAAOA,EAAY/lB,EACnDA,EAAQ+lB,EACJnoC,GACFA,EAAS,CAAEsC,SAAQgU,SAAUyvJ,EAAQzvJ,SAAU2uB,SAEnD,CA+CA,SAASkhI,EAAU/3I,GAIjB,IAAI6gE,EACyB,SAA3B/tF,EAAOoV,SAASC,OACZrV,EAAOoV,SAASC,OAChBrV,EAAOoV,SAASwoB,KAElBA,EAAqB,kBAAP1Q,EAAkBA,EAAKkiD,GAAWliD,GASpD,OALA0Q,EAAOA,EAAKra,QAAQ,KAAM,OAC1BqgJ,GACE71E,EACsE,sEAAAnwD,GAEjE,IAAI3uB,IAAI2uB,EAAMmwD,EACvB,CApFa,MAAT7sE,IACFA,EAAQ,EACR0jJ,EAAcM,aAAYjB,GAAM,GAAAW,EAAcz4F,MAAO,CAAAqgD,IAAKtrG,IAAS,KAoFrE,IAAI2jJ,EAAmB,CACrB,UAAIzjK,GACF,OAAOA,GAET,YAAIgU,GACF,OAAOovJ,EAAYxkK,EAAQ4kK,IAE7BO,MAAAA,CAAOv2J,GACL,GAAI9P,EACF,MAAM,IAAI4a,MAAM,8CAKlB,OAHA1Z,EAAOf,iBAAiB0kK,GAAmBqB,GAC3ClmK,EAAW8P,EAEJ,KACL5O,EAAOd,oBAAoBykK,GAAmBqB,GAC9ClmK,EAAW,IAAI,GAGnB2lK,WAAWv3I,GACFu3I,EAAWzkK,EAAQktB,GAE5B+3I,YACAG,cAAAA,CAAel4I,GAEb,IAAIle,EAAMi2J,EAAU/3I,GACpB,MAAO,CACL5X,SAAUtG,EAAIsG,SACdspF,OAAQ5vF,EAAI4vF,OACZslE,KAAMl1J,EAAIk1J,OAGdl+J,KAlGF,SAAcknB,EAAQi/C,GACpB/qE,EAASsiK,GAAO/T,KAChB,IAAIv6I,EAAW4uJ,GAAea,EAAQzvJ,SAAU8X,EAAIi/C,GAChDu4F,GAAkBA,EAAiBtvJ,EAAU8X,GAEjDhM,EAAQ6jJ,IAAa,EACrB,IAAIM,EAAevB,GAAgB1uJ,EAAU8L,GACzClS,EAAM61J,EAAQJ,WAAWrvJ,GAG7B,IACEwvJ,EAAcU,UAAUD,EAAc,GAAIr2J,GAC1C,MAAO0F,GAKP,GAAIA,aAAiB4gJ,cAA+B,mBAAf5gJ,EAAMnZ,KACzC,MAAMmZ,EAIR1U,EAAOoV,SAASo/B,OAAOxlC,EACxB,CAEG21J,GAAY7lK,GACdA,EAAS,CAAEsC,SAAQgU,SAAUyvJ,EAAQzvJ,SAAU2uB,MAAO,GAE1D,EAuEExgB,QArEF,SAAiB2J,EAAQi/C,GACvB/qE,EAASsiK,GAAOvL,QAChB,IAAI/iJ,EAAW4uJ,GAAea,EAAQzvJ,SAAU8X,EAAIi/C,GAChDu4F,GAAkBA,EAAiBtvJ,EAAU8X,GAEjDhM,EAAQ6jJ,IACR,IAAIM,EAAevB,GAAgB1uJ,EAAU8L,GACzClS,EAAM61J,EAAQJ,WAAWrvJ,GAC7BwvJ,EAAcM,aAAaG,EAAc,GAAIr2J,GAEzC21J,GAAY7lK,GACdA,EAAS,CAAEsC,SAAQgU,SAAUyvJ,EAAQzvJ,SAAU2uB,MAAO,GAE1D,EAyDEwhI,GAAGh4I,GACMq3I,EAAcW,GAAGh4I,IAI5B,OAAOs3I,CACT,CC7tBA,IAAYW,IAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,aACD,CALD,CAAYA,KAAAA,GAKX,KAkRiC,IAAIlhF,IAAuB,CAC3D,OACA,gBACA,OACA,KACA,QACA,aAoNI,SAAUmhF,GAGdC,EACAC,EACAC,GAEA,YAFQ,IAARA,IAAAA,EAAW,KAEJC,GAAgBH,EAAQC,EAAaC,GAAU,EACxD,CAEM,SAAUC,GAGdH,EACAC,EACAC,EACAE,GAEA,IAGIxwJ,EAAWywJ,IAFU,kBAAhBJ,EAA2BxB,GAAUwB,GAAeA,GAEvBrwJ,UAAY,IAAKswJ,GAEvD,GAAgB,MAAZtwJ,EACF,OAAO,KAGT,IAAI0wJ,EAAWC,GAAcP,IAmM/B,SAA2BM,GACzBA,EAASx3B,MAAK,CAACl8H,EAAGpG,IAChBoG,EAAE4zJ,QAAUh6J,EAAEg6J,MACVh6J,EAAEg6J,MAAQ5zJ,EAAE4zJ,MAyCpB,SAAwB5zJ,EAAapG,GACnC,IAAIi6J,EACF7zJ,EAAEvU,SAAWmO,EAAEnO,QAAUuU,EAAEmQ,MAAM,GAAI,GAAG2jJ,OAAM,CAAC74I,EAAG9oB,IAAM8oB,IAAMrhB,EAAEzH,KAElE,OAAO0hK,EAKH7zJ,EAAEA,EAAEvU,OAAS,GAAKmO,EAAEA,EAAEnO,OAAS,GAG/B,CACN,CArDQsoK,CACE/zJ,EAAEg0J,WAAWtnK,KAAKsvF,GAASA,EAAKi4E,gBAChCr6J,EAAEo6J,WAAWtnK,KAAKsvF,GAASA,EAAKi4E,kBAG1C,CA3MEC,CAAkBR,GAElB,IAAIv0C,EAAU,KACd,IAAK,IAAIhtH,EAAI,EAAc,MAAXgtH,GAAmBhtH,EAAIuhK,EAASjoK,SAAU0G,EAAG,CAO3D,IAAIgiK,EAAUC,GAAWpxJ,GACzBm8G,EAAUk1C,GACRX,EAASvhK,GACTgiK,EACAX,EAEH,CAED,OAAOr0C,CACT,CAyCA,SAASw0C,GAGPP,EACAM,EACAY,EACAC,QAF2C,IAA3Cb,IAAAA,EAA2C,SAC3C,IAAAY,IAAAA,EAA4C,SAClC,IAAVC,IAAAA,EAAa,IAEb,IAAIC,EAAeA,CACjBC,EACA7lJ,EACA8lJ,KAEA,IAAI14E,EAAmC,CACrC04E,kBACmBrpK,IAAjBqpK,EAA6BD,EAAMv4J,MAAQ,GAAKw4J,EAClDC,eAAuC,IAAxBF,EAAME,cACrBV,cAAerlJ,EACf6lJ,SAGEz4E,EAAK04E,aAAa1xC,WAAW,OAC/BsuC,GACEt1E,EAAK04E,aAAa1xC,WAAWuxC,GAC7B,wBAAwBv4E,EAAK04E,aAA7B,wBACMH,EADN,4GAKFv4E,EAAK04E,aAAe14E,EAAK04E,aAAavkJ,MAAMokJ,EAAW9oK,SAGzD,IAAIyQ,EAAO04J,GAAU,CAACL,EAAYv4E,EAAK04E,eACnCV,EAAaM,EAAYpkJ,OAAO8rE,GAKhCy4E,EAAMrgG,UAAYqgG,EAAMrgG,SAAS3oE,OAAS,IAC5C6lK,IAGkB,IAAhBmD,EAAM7lJ,MACN,4FACuC1S,EAAI,MAE7Cy3J,GAAcc,EAAMrgG,SAAUs/F,EAAUM,EAAY93J,KAKpC,MAAdu4J,EAAMv4J,MAAiBu4J,EAAM7lJ,QAIjC8kJ,EAAShgK,KAAK,CACZwI,OACA03J,MAAOiB,GAAa34J,EAAMu4J,EAAM7lJ,OAChColJ,cACA,EAaJ,OAXAZ,EAAOvmK,SAAQ,CAAC4nK,EAAO7lJ,KAAS,IAAAkmJ,EAE9B,GAAmB,KAAfL,EAAMv4J,MAA0B,OAAX44J,EAACL,EAAMv4J,OAAN44J,EAAY5/E,SAAS,KAG7C,IAAK,IAAI6/E,KAAYC,GAAwBP,EAAMv4J,MACjDs4J,EAAaC,EAAO7lJ,EAAOmmJ,QAH7BP,EAAaC,EAAO7lJ,EAKrB,IAGI8kJ,CACT,CAgBA,SAASsB,GAAwB94J,GAC/B,IAAIpR,EAAWoR,EAAK+C,MAAM,KAC1B,GAAwB,IAApBnU,EAASW,OAAc,MAAO,GAElC,IAAKqkB,KAAU1mB,GAAQ0B,EAGnBmqK,EAAanlJ,EAAMksG,SAAS,KAE5Bk5C,EAAWplJ,EAAMmB,QAAQ,MAAO,IAEpC,GAAoB,IAAhB7nB,EAAKqC,OAGP,OAAOwpK,EAAa,CAACC,EAAU,IAAM,CAACA,GAGxC,IAAIC,EAAeH,GAAwB5rK,EAAK+Y,KAAK,MAEjDi2D,EAAmB,GAqBvB,OAZAA,EAAO1kE,QACFyhK,EAAazoK,KAAK0oK,GACP,KAAZA,EAAiBF,EAAW,CAACA,EAAUE,GAASjzJ,KAAK,QAKrD8yJ,GACF78F,EAAO1kE,QAAQyhK,GAIV/8F,EAAO1rE,KAAKqoK,GACjB74J,EAAK8mH,WAAW,MAAqB,KAAb+xC,EAAkB,IAAMA,GAEpD,CAaA,MAAMM,GAAU,YACVC,GAAsB,EACtBC,GAAkB,EAClBC,GAAoB,EACpBC,GAAqB,GACrBC,IAAgB,EAChBC,GAAWn8J,GAAoB,MAANA,EAE/B,SAASq7J,GAAa34J,EAAc0S,GAClC,IAAI9jB,EAAWoR,EAAK+C,MAAM,KACtB22J,EAAe9qK,EAASW,OAS5B,OARIX,EAASs0H,KAAKu2C,MAChBC,GAAgBF,IAGd9mJ,IACFgnJ,GAAgBL,IAGXzqK,EACJyB,QAAQiN,IAAOm8J,GAAQn8J,KACvBsnJ,QACC,CAAC8S,EAAO9nJ,IACN8nJ,GACCyB,GAAQt/J,KAAK+V,GACVwpJ,GACY,KAAZxpJ,EACA0pJ,GACAC,KACNG,EAEN,CAiBA,SAASvB,GAIPwB,EACA7yJ,EACAwwJ,QAAY,IAAZA,IAAAA,GAAe,GAEf,IAAI,WAAEQ,GAAe6B,EAEjBC,EAAgB,CAAC,EACjBC,EAAkB,IAClB52C,EAA2D,GAC/D,IAAK,IAAIhtH,EAAI,EAAGA,EAAI6hK,EAAWvoK,SAAU0G,EAAG,CAC1C,IAAI6pF,EAAOg4E,EAAW7hK,GAClBgc,EAAMhc,IAAM6hK,EAAWvoK,OAAS,EAChCuqK,EACkB,MAApBD,EACI/yJ,EACAA,EAASmN,MAAM4lJ,EAAgBtqK,SAAW,IAC5CipF,EAAQuhF,GACV,CAAE/5J,KAAM8/E,EAAK04E,aAAcC,cAAe34E,EAAK24E,cAAexmJ,OAC9D6nJ,GAGEvB,EAAQz4E,EAAKy4E,MAkBjB,IAfG//E,GACDvmE,GACAqlJ,IACCQ,EAAWA,EAAWvoK,OAAS,GAAGgpK,MAAM7lJ,QAEzC8lE,EAAQuhF,GACN,CACE/5J,KAAM8/E,EAAK04E,aACXC,cAAe34E,EAAK24E,cACpBxmJ,KAAK,GAEP6nJ,KAICthF,EACH,OAAO,KAGTliF,OAAO0vC,OAAO4zH,EAAephF,EAAMtqE,QAEnC+0G,EAAQzrH,KAAK,CAEX0W,OAAQ0rJ,EACR9yJ,SAAU4xJ,GAAU,CAACmB,EAAiBrhF,EAAM1xE,WAC5CkzJ,aAAcC,GACZvB,GAAU,CAACmB,EAAiBrhF,EAAMwhF,gBAEpCzB,UAGyB,MAAvB//E,EAAMwhF,eACRH,EAAkBnB,GAAU,CAACmB,EAAiBrhF,EAAMwhF,eAEvD,CAED,OAAO/2C,CACT,CAiHgB,SAAA82C,GAIdG,EACApzJ,GAEuB,kBAAZozJ,IACTA,EAAU,CAAEl6J,KAAMk6J,EAASzB,eAAe,EAAOxmJ,KAAK,IAGxD,IAAKkoJ,EAASC,GA4ChB,SACEp6J,EACAy4J,EACAxmJ,QADa,IAAbwmJ,IAAAA,GAAgB,QACb,IAAHxmJ,IAAAA,GAAM,GAENyuG,GACW,MAAT1gH,IAAiBA,EAAK8/G,SAAS,MAAQ9/G,EAAK8/G,SAAS,MACrD,eAAe9/G,EAAf,oCACMA,EAAK+U,QAAQ,MAAO,MAD1B,qIAGsC/U,EAAK+U,QAAQ,MAAO,MAAK,MAGjE,IAAI7G,EAA8B,GAC9BmsJ,EACF,IACAr6J,EACG+U,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,qBAAsB,QAC9BA,QACC,qBACA,CAACnJ,EAAW0uJ,EAAmBvB,KAC7B7qJ,EAAO1W,KAAK,CAAE8iK,YAAWvB,WAA0B,MAAdA,IAC9BA,EAAa,eAAiB,gBAIzC/4J,EAAK8/G,SAAS,MAChB5xG,EAAO1W,KAAK,CAAE8iK,UAAW,MACzBD,GACW,MAATr6J,GAAyB,OAATA,EACZ,QACA,qBACGiS,EAETooJ,GAAgB,QACE,KAATr6J,GAAwB,MAATA,IAQxBq6J,GAAgB,iBAKlB,IAAIF,EAAU,IAAII,OAAOF,EAAc5B,OAAgBtpK,EAAY,KAEnE,MAAO,CAACgrK,EAASjsJ,EACnB,CAjGkCssJ,CAC9BN,EAAQl6J,KACRk6J,EAAQzB,cACRyB,EAAQjoJ,KAGNumE,EAAQ1xE,EAAS0xE,MAAM2hF,GAC3B,IAAK3hF,EAAO,OAAO,KAEnB,IAAIqhF,EAAkBrhF,EAAM,GACxBwhF,EAAeH,EAAgB9kJ,QAAQ,UAAW,MAClD0lJ,EAAgBjiF,EAAMvkE,MAAM,GAuBhC,MAAO,CACL/F,OAvBmBksJ,EAAexV,QAClC,CAACzrC,EAAIhnH,EAA6BugB,KAAS,IAApC,UAAE4nJ,EAAS,WAAEvB,GAAY5mK,EAG9B,GAAkB,MAAdmoK,EAAmB,CACrB,IAAII,EAAaD,EAAc/nJ,IAAU,GACzCsnJ,EAAeH,EACZ5lJ,MAAM,EAAG4lJ,EAAgBtqK,OAASmrK,EAAWnrK,QAC7CwlB,QAAQ,UAAW,KACvB,CAED,MAAMzmB,EAAQmsK,EAAc/nJ,GAM5B,OAJEymG,EAAKmhD,GADHvB,IAAezqK,OACCa,GAECb,GAAS,IAAIymB,QAAQ,OAAQ,KAE3CokG,CAAI,GAEb,CAAC,GAKDryG,SAAU+yJ,EACVG,eACAE,UAEJ,CA2DM,SAAUhC,GAAW5pK,GACzB,IACE,OAAOA,EACJyU,MAAM,KACNvS,KAAK+M,GAAM6yB,mBAAmB7yB,GAAGwX,QAAQ,MAAO,SAChD9O,KAAK,KACR,MAAOC,GAQP,OAPAw6G,IACE,EACA,iBAAiBpyH,EAAjB,oHAEe4X,EAAK,MAGf5X,CACR,CACH,CAKgB,SAAAipK,GACdzwJ,EACAswJ,GAEA,GAAiB,MAAbA,EAAkB,OAAOtwJ,EAE7B,IAAKA,EAASy0B,cAAcurF,WAAWswC,EAAS77H,eAC9C,OAAO,KAKT,IAAIo/H,EAAavD,EAASt3C,SAAS,KAC/Bs3C,EAAS7nK,OAAS,EAClB6nK,EAAS7nK,OACTqrK,EAAW9zJ,EAASq3C,OAAOw8G,GAC/B,OAAIC,GAAyB,MAAbA,EAEP,KAGF9zJ,EAASmN,MAAM0mJ,IAAe,GACvC,OAiNajC,GAAa/xI,GACxBA,EAAM1gB,KAAK,KAAK8O,QAAQ,SAAU,KAKvBklJ,GAAqBnzJ,GAChCA,EAASiO,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,KAqEL7J,MAqSpC,SAAU2vJ,GAAqB30J,GACnC,OACW,MAATA,GACwB,kBAAjBA,EAAMH,QACe,kBAArBG,EAAM40J,YACa,mBAAnB50J,EAAM60J,UACb,SAAU70J,CAEd,CCp/BA,MAAM80J,GAAgD,CACpD,OACA,MACA,QACA,UAMIC,IAJuB,IAAInlF,IAC/BklF,IAG2C,CAC3C,SACGA,KAEuB,IAAIllF,IAAgBmlF,IAEpB,IAAInlF,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,MACf,IAAIA,IAAI,CAAC,IAAK,MA8nFlBz8E,OAAO,mPCpvGtC,MAAM6hK,GACX3tK,EAAAA,cAAoD,MAK/C,MAAM4tK,GAAyB5tK,EAAAA,cAEpC,MA8CK,MAAM6tK,GAAoB7tK,EAAAA,cAC/B,MAYK,MAAM8tK,GAAkB9tK,EAAAA,cAC7B,YAaW+tK,GAAe/tK,EAAAA,cAAwC,CAClEguK,OAAQ,KACRt4C,QAAS,GACTu4C,aAAa,IAOR,MAAMC,GAAoBluK,EAAAA,cAAyB,MClFnD,SAASmuK,KACd,OAA4C,MAArCnuK,EAAAA,WAAiB8tK,GAC1B,CAYO,SAASM,KAQd,OANED,MADFE,IAAU,GAOHruK,EAAAA,WAAiB8tK,IAAiBz0J,QAC3C,CA2OO,SAASi1J,GACd3E,EACAC,EACA2E,EACAC,GAGEL,MADFE,IAAU,GAOV,IAAI,UAAEzmK,GAAc5H,EAAAA,WAAiB6tK,KAC/Bn4C,QAAS+4C,GAAkBzuK,EAAAA,WAAiB+tK,IAC9CW,EAAaD,EAAcA,EAAczsK,OAAS,GAClD2sK,EAAeD,EAAaA,EAAW/tJ,OAAS,CAAC,EAEjDiuJ,GADiBF,GAAaA,EAAWn1J,SACpBm1J,EAAaA,EAAWjC,aAAe,KAC9CiC,GAAcA,EAAW1D,MAqC3C,IAEI3xJ,EAFAw1J,EAAsBT,KAG1B,GAAIxE,EAAa,KAAAkF,EACf,IAAIC,EACqB,kBAAhBnF,EAA2BxB,GAAUwB,GAAeA,EAGpC,MAAvBgF,IAC4B,OADFE,EACxBC,EAAkBx1J,eAAQ,EAA1Bu1J,EAA4Bv1C,WAAWq1C,KAF3CP,IAAU,GASVh1J,EAAW01J,CACb,MACE11J,EAAWw1J,EAGb,IAAIt1J,EAAWF,EAASE,UAAY,IAEhCgzJ,EAAoBhzJ,EACxB,GAA2B,MAAvBq1J,EAA4B,CAe9B,IAAII,EAAiBJ,EAAmBpnJ,QAAQ,MAAO,IAAIhS,MAAM,KAEjE+2J,EAAoB,IADLhzJ,EAASiO,QAAQ,MAAO,IAAIhS,MAAM,KACdkR,MAAMsoJ,EAAehtK,QAAQ0W,KAAK,IACvE,CAEA,IAAIg9G,EAAUg0C,GAAYC,EAAQ,CAAEpwJ,SAAUgzJ,IAmB9C,IAAI0C,EAAkBC,GACpBx5C,GACEA,EAAQzyH,KAAKgoF,GACXliF,OAAO0vC,OAAO,CAAC,EAAGwyC,EAAO,CACvBtqE,OAAQ5X,OAAO0vC,OAAO,CAAC,EAAGk2H,EAAc1jF,EAAMtqE,QAC9CpH,SAAU4xJ,GAAU,CAClByD,EAEAhnK,EAAUyhK,eACNzhK,EAAUyhK,eAAep+E,EAAM1xE,UAAUA,SACzC0xE,EAAM1xE,WAEZkzJ,aACyB,MAAvBxhF,EAAMwhF,aACFmC,EACAzD,GAAU,CACRyD,EAEAhnK,EAAUyhK,eACNzhK,EAAUyhK,eAAep+E,EAAMwhF,cAAclzJ,SAC7C0xE,EAAMwhF,mBAIxBgC,EACAF,EACAC,GAMF,OAAI5E,GAAeqF,EAEfjvK,EAAAA,cAAC8tK,GAAgB3iD,SAAQ,CACvBpqH,MAAO,CACLsY,SAAQ6uJ,GAAA,CACN3uJ,SAAU,IACVspF,OAAQ,GACRslE,KAAM,GACN/3F,MAAO,KACPlxD,IAAK,WACF7F,GAEL81J,eAAgBxH,GAAeoB,MAGhCkG,GAKAA,CACT,CAEA,SAASG,KACP,IAAIz2J,EA0cC,WAAkC,IAAA02J,EACvC,IAAI12J,EAAQ3Y,EAAAA,WAAiBkuK,IACzB99F,EAAQk/F,GAAmBC,GAAoBC,eAC/CC,EAAUC,GAAkBH,GAAoBC,eAIpD,QAAc5tK,IAAV+W,EACF,OAAOA,EAIT,OAAO,OAAP02J,EAAOj/F,EAAMu/F,aAAN,EAAAN,EAAeI,EACxB,CAvdcG,GACR71D,EAAUuzD,GAAqB30J,GAC5BA,EAAMH,OAAU,IAAAG,EAAM40J,WACzB50J,aAAiBgF,MACjBhF,EAAMohG,QACNjlG,KAAKE,UAAU2D,GACf0mD,EAAQ1mD,aAAiBgF,MAAQhF,EAAM0mD,MAAQ,KAC/CwwG,EAAY,yBACZC,EAAY,CAAEC,QAAS,SAAUtnG,gBAAiBonG,GAsBtD,OACE7vK,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAI,2CACJA,EAAAA,cAAA,MAAIzB,MAAO,CAAEi1C,UAAW,WAAaumE,GACpC16C,EAAQr/D,EAAAA,cAAA,OAAKzB,MAAOuxK,GAAYzwG,GAAe,KAvBtC,KA2BhB,CAEA,MAAM2wG,GAAsBhwK,EAAAA,cAACovK,GAAqB,MAgB3C,MAAMa,WAA4BjwK,EAAAA,UAIvCgM,WAAAA,CAAY1N,GACV8xH,MAAM9xH,GACNqL,KAAKymE,MAAQ,CACX/2D,SAAU/a,EAAM+a,SAChB62J,aAAc5xK,EAAM4xK,aACpBv3J,MAAOra,EAAMqa,MAEjB,CAEA,+BAAO8hG,CAAyB9hG,GAC9B,MAAO,CAAEA,MAAOA,EAClB,CAEA,+BAAO8gG,CACLn7G,EACA8xE,GAUA,OACEA,EAAM/2D,WAAa/a,EAAM+a,UACD,SAAvB+2D,EAAM8/F,cAAkD,SAAvB5xK,EAAM4xK,aAEjC,CACLv3J,MAAOra,EAAMqa,MACbU,SAAU/a,EAAM+a,SAChB62J,aAAc5xK,EAAM4xK,cAQjB,CACLv3J,WAAuB/W,IAAhBtD,EAAMqa,MAAsBra,EAAMqa,MAAQy3D,EAAMz3D,MACvDU,SAAU+2D,EAAM/2D,SAChB62J,aAAc5xK,EAAM4xK,cAAgB9/F,EAAM8/F,aAE9C,CAEAx1D,iBAAAA,CAAkB/hG,EAAYw3J,GAC5Bx4H,QAAQh/B,MACN,wDACAA,EACAw3J,EAEJ,CAEA7gH,MAAAA,GACE,YAA4B1tD,IAArB+H,KAAKymE,MAAMz3D,MAChB3Y,EAAAA,cAAC+tK,GAAa5iD,SAAQ,CAACpqH,MAAO4I,KAAKrL,MAAM8xK,cACvCpwK,EAAAA,cAACkuK,GAAkB/iD,SAAQ,CACzBpqH,MAAO4I,KAAKymE,MAAMz3D,MAClBgyD,SAAUhhE,KAAKrL,MAAM06C,aAIzBrvC,KAAKrL,MAAMqsE,QAEf,EASF,SAAS0lG,GAAazrK,GAAwD,IAAvD,aAAEwrK,EAAY,MAAEnlF,EAAK,SAAEtgB,GAA8B/lE,EACtE0rK,EAAoBtwK,EAAAA,WAAiB2tK,IAazC,OARE2C,GACAA,EAAkBC,QAClBD,EAAkBE,gBACjBvlF,EAAM+/E,MAAMyF,cAAgBxlF,EAAM+/E,MAAM0F,iBAEzCJ,EAAkBE,cAAcG,2BAA6B1lF,EAAM+/E,MAAMt2J,IAIzE1U,EAAAA,cAAC+tK,GAAa5iD,SAAQ,CAACpqH,MAAOqvK,GAC3BzlG,EAGP,CAEO,SAASukG,GACdx5C,EACA+4C,EACAF,EACAC,GAC2B,IAAAoC,EAC3B,QAJ2B,IAA3BnC,IAAAA,EAA8B,SACc,IAA5CF,IAAAA,EAA+C,WACX,IAApCC,IAAAA,EAAuC,MAExB,MAAX94C,EAAiB,KAAAm7C,EACnB,IAAKtC,EACH,OAAO,KAGT,GAAIA,EAAgBoB,OAGlBj6C,EAAU64C,EAAgB74C,YACrB,MACL,OAAAm7C,EAAArC,IAAAqC,EAAQC,qBACiB,IAAzBrC,EAAczsK,SACbusK,EAAgB1qF,aACjB0qF,EAAgB74C,QAAQ1zH,OAAS,GAUjC,OAAO,KAFP0zH,EAAU64C,EAAgB74C,OAG5B,CACF,CAEA,IAAIu5C,EAAkBv5C,EAGlBi6C,EAAS,OAAHiB,EAAGrC,QAAA,EAAAqC,EAAiBjB,OAC9B,GAAc,MAAVA,EAAgB,CAClB,IAAIoB,EAAa9B,EAAgBztB,WAC9BhkH,GAAMA,EAAEwtI,MAAMt2J,SAA+B9S,KAAnB,MAAN+tK,OAAM,EAANA,EAASnyI,EAAEwtI,MAAMt2J,OAGtCq8J,GAAc,GADhB1C,IAAU,GAMVY,EAAkBA,EAAgBvoJ,MAChC,EACA9gB,KAAKsH,IAAI+hK,EAAgBjtK,OAAQ+uK,EAAa,GAElD,CAIA,IAAIC,GAAiB,EACjBC,GAAiB,EACrB,GAAI1C,GAAmBC,GAAUA,EAAOsC,oBACtC,IAAK,IAAIpoK,EAAI,EAAGA,EAAIumK,EAAgBjtK,OAAQ0G,IAAK,CAC/C,IAAIuiF,EAAQgkF,EAAgBvmK,GAM5B,IAJIuiF,EAAM+/E,MAAMkG,iBAAmBjmF,EAAM+/E,MAAMmG,0BAC7CF,EAAgBvoK,GAGduiF,EAAM+/E,MAAMt2J,GAAI,CAClB,IAAI,WAAE08J,EAAU,OAAEzB,GAAWpB,EACzB8C,EACFpmF,EAAM+/E,MAAMsG,aACmB1vK,IAA/BwvK,EAAWnmF,EAAM+/E,MAAMt2J,OACrBi7J,QAAqC/tK,IAA3B+tK,EAAO1kF,EAAM+/E,MAAMt2J,KACjC,GAAIu2E,EAAM+/E,MAAMr/C,MAAQ0lD,EAAkB,CAIxCL,GAAiB,EAEf/B,EADEgC,GAAiB,EACDhC,EAAgBvoJ,MAAM,EAAGuqJ,EAAgB,GAEzC,CAAChC,EAAgB,IAErC,KACF,CACF,CACF,CAGF,OAAOA,EAAgBsC,aAAY,CAACvD,EAAQ/iF,EAAO9lE,KAEjD,IAAIxM,EACA64J,GAA8B,EAC9Bf,EAAuC,KACvCU,EAAiD,KA0VzD,IAAqBjyJ,EAzVbqvJ,IACF51J,EAAQg3J,GAAU1kF,EAAM+/E,MAAMt2J,GAAKi7J,EAAO1kF,EAAM+/E,MAAMt2J,SAAM9S,EAC5D6uK,EAAexlF,EAAM+/E,MAAMyF,cAAgBT,GAEvCgB,IACEC,EAAgB,GAAe,IAAV9rJ,GAoVZjG,EAlVT,kBACA,GAkVIuyJ,GAAcvyJ,KAC1BuyJ,GAAcvyJ,IAAO,GAhVfsyJ,GAA8B,EAC9BL,EAAyB,MAChBF,IAAkB9rJ,IAC3BqsJ,GAA8B,EAC9BL,EAAyBlmF,EAAM+/E,MAAMmG,wBAA0B,QAKrE,IAAIz7C,EAAU+4C,EAAchoJ,OAAOwoJ,EAAgBvoJ,MAAM,EAAGvB,EAAQ,IAChEusJ,EAAcA,KAChB,IAAI/mG,EAkBJ,OAhBEA,EADEhyD,EACS83J,EACFe,EACEL,EACFlmF,EAAM+/E,MAAMxgD,UAOVxqH,EAAAA,cAACirF,EAAM+/E,MAAMxgD,UAAS,MACxBv/B,EAAM+/E,MAAM98J,QACV+8E,EAAM+/E,MAAM98J,QAEZ8/J,EAGXhuK,EAAAA,cAACqwK,GAAa,CACZplF,MAAOA,EACPmlF,aAAc,CACZpC,SACAt4C,UACAu4C,YAAgC,MAAnBM,GAEf5jG,SAAUA,GACV,EAMN,OAAO4jG,IACJtjF,EAAM+/E,MAAM0F,eAAiBzlF,EAAM+/E,MAAMyF,cAA0B,IAAVtrJ,GAC1DnlB,EAAAA,cAACiwK,GAAmB,CAClB52J,SAAUk1J,EAAgBl1J,SAC1B62J,aAAc3B,EAAgB2B,aAC9Bl3H,UAAWy3H,EACX93J,MAAOA,EACPgyD,SAAU+mG,IACVtB,aAAc,CAAEpC,OAAQ,KAAMt4C,UAASu4C,aAAa,KAGtDyD,GACD,GACA,KACL,CAAC,IAQInC,GAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,wBAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,wCAAnBA,EAAmB,wBAAnBA,EAAmB,gCAAnBA,EAAmB,gCAAnBA,EAAmB,wBAAnBA,CAAmB,EAAnBA,IAAmB,IAyBxB,SAASD,GAAmBqC,GAC1B,IAAIvhG,EAAQpwE,EAAAA,WAAiB4tK,IAE7B,OADUx9F,GAAVi+F,IAAU,GACHj+F,CACT,CASA,SAASs/F,GAAkBiC,GACzB,IAAI3G,EARN,WACE,IAAIA,EAAQhrK,EAAAA,WAAiB+tK,IAE7B,OADU/C,GAAVqD,IAAU,GACHrD,CACT,CAIc4G,GACRC,EAAY7G,EAAMt1C,QAAQs1C,EAAMt1C,QAAQ1zH,OAAS,GAKrD,OAHE6vK,EAAU7G,MAAMt2J,IADlB25J,IAAU,GAIHwD,EAAU7G,MAAMt2J,EACzB,CA4NA,MAAM+8J,GAAyC,CAAC,ECngCpBzxK,EAAsB,gBAyS3C,SAAS8xK,GAAMC,GACpB1D,IAAU,EAKZ,CAqBO,SAAS2D,GAAMC,GAQqB,IAPzCpI,SAAUqI,EAAe,IAAG,SAC5BvnG,EAAW,KACXtxD,SAAU84J,EAAY,eACtBhD,EAAiBxH,GAAeoB,IAAG,UACnCnhK,EACA2oK,OAAQ6B,GAAa,EAAK,OAC1B5D,GACYyD,EAET9D,MADHE,IAAU,GAQV,IAAIxE,EAAWqI,EAAa1qJ,QAAQ,OAAQ,KACxC6qJ,EAAoBryK,EAAAA,SACtB,KAAM,CACJ6pK,WACAjiK,YACA2oK,OAAQ6B,EACR5D,OAAMtG,GAAA,CACJoK,sBAAsB,GACnB9D,MAGP,CAAC3E,EAAU2E,EAAQ5mK,EAAWwqK,IAGJ,kBAAjBD,IACTA,EAAe/J,GAAU+J,IAG3B,IAAI,SACF54J,EAAW,IAAG,OACdspF,EAAS,GAAE,KACXslE,EAAO,GAAE,MACT/3F,EAAQ,KAAI,IACZlxD,EAAM,WACJizJ,EAEAI,EAAkBvyK,EAAAA,SAAc,KAClC,IAAIwyK,EAAmBxI,GAAczwJ,EAAUswJ,GAE/C,OAAwB,MAApB2I,EACK,KAGF,CACLn5J,SAAU,CACRE,SAAUi5J,EACV3vE,SACAslE,OACA/3F,QACAlxD,OAEFiwJ,iBACD,GACA,CAACtF,EAAUtwJ,EAAUspF,EAAQslE,EAAM/3F,EAAOlxD,EAAKiwJ,IASlD,OAAuB,MAAnBoD,EACK,KAIPvyK,EAAAA,cAAC6tK,GAAkB1iD,SAAQ,CAACpqH,MAAOsxK,GACjCryK,EAAAA,cAAC8tK,GAAgB3iD,SAAQ,CAACxgD,SAAUA,EAAU5pE,MAAOwxK,IAG3D,CAaO,SAASE,GAAMC,GAGqB,IAHpB,SACrB/nG,EAAQ,SACRtxD,GACYq5J,EACZ,ODnKOpE,GCmKUqE,GAAyBhoG,GAAWtxD,EACvD,CAuC4B,IAAI+wF,SAAQ,SAEPpqG,EAAAA,UAkH1B,SAAS2yK,GACdhoG,EACAmgG,QAAoB,IAApBA,IAAAA,EAAuB,IAEvB,IAAInB,EAAwB,GA6D5B,OA3DA3pK,EAAAA,SAAeoD,QAAQunE,GAAU,CAACz8D,EAASiX,KACzC,IAAKnlB,EAAAA,eAAqBkO,GAGxB,OAGF,IAAI0kK,EAAW,IAAI9H,EAAY3lJ,GAE/B,GAAIjX,EAAQzI,OAASzF,EAAAA,SAMnB,YAJA2pK,EAAO1/J,KAAK0B,MACVg+J,EACAgJ,GAAyBzkK,EAAQ5P,MAAMqsE,SAAUioG,IAMnD1kK,EAAQzI,OAASqsK,IADnBzD,IAAU,GAQPngK,EAAQ5P,MAAM6mB,OAAUjX,EAAQ5P,MAAMqsE,UADzC0jG,IAAU,GAKV,IAAIrD,EAAqB,CACvBt2J,GAAIxG,EAAQ5P,MAAMoW,IAAMk+J,EAASl6J,KAAK,KACtCwyJ,cAAeh9J,EAAQ5P,MAAM4sK,cAC7Bh9J,QAASA,EAAQ5P,MAAM4P,QACvBs8G,UAAWt8G,EAAQ5P,MAAMksH,UACzBrlG,MAAOjX,EAAQ5P,MAAM6mB,MACrB1S,KAAMvE,EAAQ5P,MAAMmU,KACpB6+J,OAAQpjK,EAAQ5P,MAAMgzK,OACtBjsK,OAAQ6I,EAAQ5P,MAAM+G,OACtBorK,aAAcviK,EAAQ5P,MAAMmyK,aAC5BC,cAAexiK,EAAQ5P,MAAMoyK,cAC7BmC,iBACiC,MAA/B3kK,EAAQ5P,MAAMoyK,eACgB,MAA9BxiK,EAAQ5P,MAAMmyK,aAChBqC,iBAAkB5kK,EAAQ5P,MAAMw0K,iBAChCvwB,OAAQr0I,EAAQ5P,MAAMikJ,OACtB52B,KAAMz9G,EAAQ5P,MAAMqtH,MAGlBz9G,EAAQ5P,MAAMqsE,WAChBqgG,EAAMrgG,SAAWgoG,GACfzkK,EAAQ5P,MAAMqsE,SACdioG,IAIJjJ,EAAO1/J,KAAK+gK,EAAM,IAGbrB,CACT,CClfgD,IAAIphF,IAAI,CACtD,oCACA,sBACA,eCeF,IACEtkF,OAAO8uK,qBAHT,GAIC,CAAC,MAAO1/J,IACP,CAgJiE,IAAIslF,IAkCvE,MACMq6E,GAAsBhzK,EAAsB,gBAE5BizK,EAAmB,UAEvBjzK,EAAY,MA4VxB,SAAUkzK,GAAahsK,GAKR,IALS,SAC5B2iK,EAAQ,SACRl/F,EAAQ,OACR6jG,EAAM,OACNvqK,GACmBiD,EACfisK,EAAanzK,EAAAA,SP7aH,IACdkvE,EO6a0B,MAAtBikG,EAAW1yK,UACb0yK,EAAW1yK,cP9ab,KAAAyuE,EO8a4C,CAAEjrE,SAAQ2kK,UAAU,MP9ahE15F,EAAiC,CAAC,GAoB3Bs5F,IAlBP,SACEvkK,EACA4kK,GAEA,IAAI,SAAEtvJ,EAAQ,OAAEspF,EAAM,KAAEslE,GAASlkK,EAAOoV,SACxC,OAAO4uJ,GACL,GACA,CAAE1uJ,WAAUspF,SAAQslE,QAEnBU,EAAcz4F,OAASy4F,EAAcz4F,MAAM43F,KAAQ,KACnDa,EAAcz4F,OAASy4F,EAAcz4F,MAAMlxD,KAAQ,UAExD,IAEA,SAA2Bjb,EAAgBktB,GACzC,MAAqB,kBAAPA,EAAkBA,EAAKkiD,GAAWliD,EAClD,GAKE,KACA+9C,KOyZF,IAAI45F,EAAUqK,EAAW1yK,SACpB2vE,EAAOgjG,GAAgBpzK,EAAAA,SAAe,CACzCqF,OAAQyjK,EAAQzjK,OAChBgU,SAAUyvJ,EAAQzvJ,YAEhB,mBAAEg6J,GAAuB7E,GAAU,CAAC,EACpCzkD,EAAW/pH,EAAAA,aACZszK,IACCD,GAAsBL,GAClBA,IAAoB,IAAMI,EAAaE,KACvCF,EAAaE,EAAS,GAE5B,CAACF,EAAcC,IAKjB,OAFArzK,EAAAA,iBAAsB,IAAM8oK,EAAQM,OAAOr/C,IAAW,CAAC++C,EAAS/+C,IAG9D/pH,EAAAA,cAACgyK,GAAM,CACLnI,SAAUA,EACVl/F,SAAUA,EACVtxD,SAAU+2D,EAAM/2D,SAChB81J,eAAgB/+F,EAAM/qE,OACtBuC,UAAWkhK,EACX0F,OAAQA,GAGd,CAsHoB,qBAAXvqK,QACoB,qBAApBA,OAAO+B,UACP/B,OAAO+B,SAASxC,cAyazB,IAAK+vK,GAQAhE,IARL,SAAKgE,GACHA,EAAA,4CACAA,EAAA,sBACAA,EAAA,oCACAA,EAAA,wBACAA,EAAA,+CACD,EAND,CAAKA,KAAAA,GAMJ,KAED,SAAKhE,GACHA,EAAA,wBACAA,EAAA,0BACAA,EAAA,2CACD,CAJD,CAAKA,KAAAA,GAIJ,KC91CD,MA+EA,GA/EoBiE,KAClB,MAAOC,EAAcC,IAAmBzzK,EAAAA,EAAAA,WAAS,IAC1C0zK,EAAcC,IAAmB3zK,EAAAA,EAAAA,WAAS,GAC3C4zK,GAAaxzK,EAAAA,EAAAA,QAAO,MAOpByzK,EAAsB96J,IACtB66J,EAAWpzK,UAAYozK,EAAWpzK,QAAQgkG,SAASzrF,EAAM1J,UAL7DokK,GAAgB,GAChBE,GAAgB,GAMhB,EAgCF,OA7BAvxK,EAAAA,EAAAA,YAAU,KACR,MAAM0xK,EAAW7wJ,YAAW,KAC1BwwJ,GAAgB,EAAK,GACpB,OAEGM,EAAW9wJ,YAAW,KAC1B0wJ,GAAgB,EAAK,GACpB,OAEGK,EAAW/wJ,YAAW,KAC1B0wJ,GAAgB,EAAM,GACrB,OAIH,OAFA5tK,SAAS9C,iBAAiB,YAAa4wK,GAEhC,KACL5pE,aAAa6pE,GACb7pE,aAAa8pE,GACb9pE,aAAa+pE,GACbjuK,SAAS7C,oBAAoB,YAAa2wK,EAAmB,CAC9D,GACA,KAEHzxK,EAAAA,EAAAA,YAAU,KACJsxK,GACFD,GAAgB,EAClB,GACC,CAACC,KAGFO,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gBAAeiR,SAAA,CAC3B8oG,IACCjlD,EAAAA,EAAAA,KAAA,OACE/qH,IAAKowK,EACLn6G,UAAW,qCAAoC+5G,EAAe,OAAS,IAAK9oG,UAE5E6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,wCAAuC8oC,UAC7C6jD,EAAAA,EAAAA,KAAA,OACEhkH,IAAI,iDACJkvD,UAAU,uCACVy6G,IAAI,sBAKXR,IACGnlD,EAAAA,EAAAA,KAAA,OACA/qH,IAAKowK,EACLn6G,UAAW,qCAAoC+5G,EAAe,OAAS,IAAK9oG,UAE5E6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,wCAAwCvyB,OAAO,SAAQq7D,UAC7D6jD,EAAAA,EAAAA,KAAA,OACEhkH,IAAI,iDACJkvD,UAAU,uCACVy6G,IAAI,wBAKR,ECjBV,SA3DA,WACE,MAAOC,EAAgBC,IAAqBp0K,EAAAA,EAAAA,WAAS,GAoBrD,OAlBAoC,EAAAA,EAAAA,YAAU,KACR,MAAMiyK,EAAeA,KAEfrwK,OAAOswK,QAAU,GACnBF,GAAkB,GAElBA,GAAkB,EACpB,EAMF,OAHApwK,OAAOf,iBAAiB,SAAUoxK,GAG3B,KACLrwK,OAAOd,oBAAoB,SAAUmxK,EAAa,CACnD,GACA,KAGD9lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAW,kDAAiD06G,EAAiB,WAAa,IAAKzpG,UAClGupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,kBAAiBiR,SAAA,EAC9B6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,yBAAyB73B,KAAK,KAAI8oC,UAC7C6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wCAAwC2pK,IAAI,GAAGnwK,OAAO,UAGjEwqH,EAAAA,EAAAA,KAAA,UAAQ90D,UAAU,iBAAiBj0D,KAAK,SAAS,iBAAe,WAAW,iBAAe,0BAA0B,gBAAc,yBAAyB,gBAAc,QAAQ,aAAW,oBAAmBklE,UAC7M6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,2BAGlB80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,2BAA2BhlD,GAAG,yBAAwBi2D,UACnEupG,EAAAA,EAAAA,MAAA,MAAIx6G,UAAU,qBAAoBiR,SAAA,EAChC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,WAAUiR,UACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,oBAAoB,eAAa,OAAO73B,KAAK,UAAS8oC,SAAC,iBAEtE6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,WAAUiR,UACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,oBAAoB,eAAa,OAAO73B,KAAK,cAAa8oC,SAAC,qBAE1E6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,WAAUiR,UACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,oBAAoB,eAAa,OAAO73B,KAAK,cAAa8oC,SAAC,gBAE1E6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,WAAUiR,UACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,oBAAoB,eAAa,OAAO73B,KAAK,wBAAuB8oC,SAAC,+BAEpF6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,WAAUiR,UACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,oBAAoB,eAAa,OAAO73B,KAAK,mBAAkB8oC,SAAC,cAE/E6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,oBAAmBiR,UAC/B6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,WAAW,eAAa,OAAO73B,KAAK,WAAU8oC,SAAC,uBAO1E,ECwCA,SAjGA,WACI,MAAM6pG,EAAW,CAAC,kBAAmB,mBAAoB,oBAAqB,YACvErvJ,EAAOsvJ,IAAYx0K,EAAAA,EAAAA,UAAS,IAC5By0K,EAAOC,IAAY10K,EAAAA,EAAAA,UAAS,KAC5B20K,EAAWC,IAAgB50K,EAAAA,EAAAA,WAAS,IACpC60K,EAAcC,IAAmB90K,EAAAA,EAAAA,WAAS,IAC1C+0K,EAASC,IAAch1K,EAAAA,EAAAA,WAAS,GA2CvC,OAzCAoC,EAAAA,EAAAA,YAAU,KACN,IAAI6yK,EAqCJ,OAnCKF,IACGJ,EACIF,EAAM1yK,OAASwyK,EAASrvJ,GAAOnjB,OAC/BkzK,EAAUhyJ,YAAW,KACjByxJ,EAASH,EAASrvJ,GAAOuB,MAAM,EAAGguJ,EAAM1yK,OAAS,GAAG,GACrD,KAECmjB,IAAUqvJ,EAASxyK,OAAS,EAC5BkhB,YAAW,KACP6xJ,GAAgB,GAChBE,GAAW,GACX/xJ,YAAW,KACPyxJ,EAAS,IACTF,EAAS,GACTI,GAAa,GACbE,GAAgB,GAChBE,GAAW,EAAM,GAClB,IAAM,GACV,KAEH/xJ,YAAW,IAAM2xJ,GAAa,IAAQ,KAI1CH,EAAM1yK,OAAS,EACfkzK,EAAUhyJ,YAAW,KACjByxJ,EAASD,EAAMhuJ,MAAM,GAAI,GAAG,GAC7B,KAEHmuJ,GAAa,GACbJ,EAAStvJ,EAAQ,KAKtB,IAAM+kF,aAAagrE,EAAQ,GACnC,CAACR,EAAOE,EAAWzvJ,EAAO6vJ,KAGzBxmD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,SAAQi2D,UAChBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,kBAAiBiR,SAAA,EAC5B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YACfw6G,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,OAAK95G,GAAG,sBAAsBglD,UAAU,+BAA+B,eAAa,WAAUiR,UAC1FupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,iBAAgBiR,SAAA,EAC3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,uBAAuB,mBAAiB,OAAMiR,UACzD6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,qBAAqBkvD,UAAU,gBAAgBy6G,IAAI,WAEhE3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAeiR,UAC1B6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,4BAA4BkvD,UAAU,gBAAgBy6G,IAAI,WAEvE3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAeiR,UAC1B6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,gCAAgCkvD,UAAU,gBAAgBy6G,IAAI,WAE3E3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAeiR,UAC1B6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,qCAAqCkvD,UAAU,gBAAgBy6G,IAAI,WAEhF3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAeiR,UAC1B6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,6BAA6BkvD,UAAU,gBAAgBy6G,IAAI,WAExE3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAeiR,UAC1B6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,yBAAyBkvD,UAAU,gBAAgBy6G,IAAI,WAEpE3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAeiR,UAC1B6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2BAA2BkvD,UAAU,gBAAgBy6G,IAAI,kBAKlFD,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,WAAUiR,SAAA,EACrB6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,aAAYiR,SAAC,wCAC3BupG,EAAAA,EAAAA,MAAA,MAAIx6G,UAAU,cAAaiR,SAAA,CACtB+pG,EACAI,IAAgBtmD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,SAAQiR,SAAC,UAE9C6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,cAAaiR,SAAC,2EAC5B6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,wCAAwC63B,UAAU,8CAA6CiR,SAAC,iBACxG6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,+BAA+B63B,UAAU,sDAAqDiR,SAAC,sBAM/H,ECpEA,SA1BA,WACI,OAAO6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,aAAYi2D,UAC3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,kBAAiBiR,UAC5BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,uBAAsBiR,SAAA,EACjC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,6BACb80D,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,sBACJ6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,aAAYiR,SAAC,2KAG9BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,uBAAsBiR,SAAA,EACjC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,sCACb80D,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,uBACJ6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,aAAYiR,SAAC,6KAG9BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,uBAAsBiR,SAAA,EACjC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,+BACb80D,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,sBACJ6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,aAAYiR,SAAC,qMAK5C,ECuCF,SAhEA,WACI,OAAO6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,aAAYi2D,UAC3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,2BAA0BiR,UACrC6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UACpB6jD,EAAAA,EAAAA,KAAA,OAAK95G,GAAG,oCAAoCglD,UAAU,gCAAgC,eAAa,WAAUiR,UACzGupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,iBAAgBiR,SAAA,EAE3BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,uBAAuB,mBAAiB,QAAOiR,SAAA,EAC1D6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,wfACJ6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wCAAwC2pK,IAAI,eACrD3lD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,aAAYiR,SAAC,0CAG/BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gBAAgB,mBAAiB,QAAOiR,SAAA,EACnD6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,uZACJ6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2CAA2C2pK,IAAI,eACxD3lD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,aAAYiR,SAAC,uCAG/BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gBAAgB,mBAAiB,QAAOiR,SAAA,EACnD6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,+kBACJ6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wCAAwC2pK,IAAI,eACrD3lD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,aAAYiR,SAAC,uCAG/BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gBAAgB,mBAAiB,QAAOiR,SAAA,EACnD6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,odACJ6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,mCAAmC2pK,IAAI,eAChD3lD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,aAAYiR,SAAC,yCAG/BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gBAAgB,mBAAiB,QAAOiR,SAAA,EACnD6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,8bACJ6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,mCAAmC2pK,IAAI,eAChD3lD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,aAAYiR,SAAC,+BAG/BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gBAAgB,mBAAiB,QAAOiR,SAAA,EACnD6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,kZACJ6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,uCAAuC2pK,IAAI,eACpD3lD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,aAAYiR,SAAC,qCAG/BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gBAAgB,mBAAiB,QAAOiR,SAAA,EACnD6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,qZACJ6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,qCAAqC2pK,IAAI,eAClD3lD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,aAAYiR,SAAC,uCAG/BupG,EAAAA,EAAAA,MAAA,UAAQx6G,UAAU,wBAAwBj0D,KAAK,SAAS,iBAAe,qCAAqC,gBAAc,OAAMklE,SAAA,EAC5H6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,6BAA6B,cAAY,UACzD80D,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,kBAAiBiR,SAAC,iBAEtCupG,EAAAA,EAAAA,MAAA,UAAQx6G,UAAU,wBAAwBj0D,KAAK,SAAS,iBAAe,qCAAqC,gBAAc,OAAMklE,SAAA,EAC5H6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,6BAA6B,cAAY,UACzD80D,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,kBAAiBiR,SAAC,sBAO1D,ECWA,SAzEA,WACC,OAAO6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,uBAAsBi2D,UAClCupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,kBAAiBiR,SAAA,EACxB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,uBAAsBiR,UACjC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,qDAGZupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,WAAUiR,SAAA,EACrB6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,wIACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,8RACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,0SAER6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,kCAGjBgkH,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,qCAAoCiR,UAC/C6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,uBAGZ6jD,EAAAA,EAAAA,KAAA,OAAK95G,GAAG,0BAA0BglD,UAAU,gCAAgC,eAAa,WAAUiR,UAC/F6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,aAAYiR,UACvBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,iBAAgBiR,SAAA,EAC3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,uBAAuB,mBAAiB,QAAOiR,UAC1DupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2BAEb0pK,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,oBAAmBiR,SAAA,EAC9B6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,aACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,4VAIhB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAgB,mBAAiB,QAAOiR,UACnDupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,+BAEb0pK,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,oBAAmBiR,SAAA,EAC9B6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,aACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,gcAIhB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAgB,mBAAiB,QAAOiR,UACnDupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,yBAEb0pK,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,oBAAmBiR,SAAA,EAC9B6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,aACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,iYAIhBupG,EAAAA,EAAAA,MAAA,UAAQx6G,UAAU,wBAAwBj0D,KAAK,SAAS,iBAAe,2BAA2B,gBAAc,OAAMklE,SAAA,EAClH6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,6BAA6B,cAAY,UACzD80D,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,kBAAiBiR,SAAC,iBAEtCupG,EAAAA,EAAAA,MAAA,UAAQx6G,UAAU,wBAAwBj0D,KAAK,SAAS,iBAAe,2BAA2B,gBAAc,OAAMklE,SAAA,EAClH6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,6BAA6B,cAAY,UACzD80D,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,kBAAiBiR,SAAC,uBAMvD,ECvELwqG,GAAY,CACd,CAAE3qK,IAAK,4BAA6B2pK,IAAK,eAAgB7hF,KAAM,2BAC/D,CAAE9nF,IAAK,+BAAgC2pK,IAAK,kBAAmB7hF,KAAM,sDACrE,CAAE9nF,IAAK,4CAA6C2pK,IAAK,sBAAuB7hF,KAAM,kCACtF,CAAE9nF,IAAK,gCAAiC2pK,IAAK,mBAAoB7hF,KAAM,0BACvE,CAAE9nF,IAAK,qCAAsC2pK,IAAK,eAAgB7hF,KAAM,KACxE,CAAE9nF,IAAK,+BAAgC2pK,IAAK,SAAU7hF,KAAM,0BAC5D,CAAE9nF,IAAK,2CAA4C2pK,IAAK,cAAe7hF,KAAM,iDAC7E,CAAE9nF,IAAK,sCAAuC2pK,IAAK,gBAAiB7hF,KAAM,wDAC1E,CAAE9nF,IAAK,+BAAgC2pK,IAAK,SAAU7hF,KAAM,yBAC5D,CAAE9nF,IAAK,+BAAgC2pK,IAAK,SAAU7hF,KAAM,KAC5D,CAAE9nF,IAAK,8CAA+C2pK,IAAK,eAAgB7hF,KAAM,gDACjF,CAAE9nF,IAAK,+BAAgC2pK,IAAK,MAAO7hF,KAAM,KACzD,CAAE9nF,IAAK,0CAA2C2pK,IAAK,6BAAqB7hF,KAAM,KAClF,CAAE9nF,IAAK,yCAA0C2pK,IAAK,oBAAqB7hF,KAAM,wEACjF,CAAE9nF,IAAK,mCAAoC2pK,IAAK,iBAAe7hF,KAAM,sDACrE,CAAE9nF,IAAK,4CAA6C2pK,IAAK,0BAAwB7hF,KAAM,0DACvF,CAAE9nF,IAAK,iCAAkC2pK,IAAK,gBAAc7hF,KAAM,0BAClE,CAAE9nF,IAAK,wCAAyC2pK,IAAK,kBAAmB7hF,KAAM,0BAC9E,CAAE9nF,IAAK,4BAA6B2pK,IAAK,MAAO7hF,KAAM,qDACtD,CAAE9nF,IAAK,4CAA6C2pK,IAAK,sBAAuB7hF,KAAM,qDACtF,CAAE9nF,IAAK,2BAA4B2pK,IAAK,KAAM7hF,KAAM,qDACpD,CAAE9nF,IAAK,mCAAoC2pK,IAAK,iBAAe7hF,KAAM,0BACrE,CAAE9nF,IAAK,8BAA+B2pK,IAAK,QAAS7hF,KAAM,yBAC1D,CAAE9nF,IAAK,+BAAgC2pK,IAAK,SAAU7hF,KAAM,uBAC5D,CAAE9nF,IAAK,qCAAsC2pK,IAAK,eAAgB7hF,KAAM,KACxE,CAAE9nF,IAAK,4BAA6B2pK,IAAK,MAAO7hF,KAAM,8BACtD,CAAE9nF,IAAK,iCAAkC2pK,IAAK,WAAY7hF,KAAM,2BAqBpE,SAlBA,WACI,OACIk8B,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,YAAWi2D,UACnB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,sBAAqBiR,UAChC6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,mBAAkBiR,UAC7B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,kBAAiBiR,SAC3BwqG,GAAU1uJ,OAAO0uJ,IAAWlyK,KAAI,CAACmyK,EAAUjwJ,KACxCqpG,EAAAA,EAAAA,KAAA,KAAe3sF,KAAMuzI,EAAS9iF,KAAMhjF,OAAO,SAASioC,IAAI,sBAAqBozB,UACzE6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAK4qK,EAAS5qK,IAAK2pK,IAAKiB,EAASjB,OADlChvJ,YASpC,EC0JA,SAxMA,WACI,OAAOqpG,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,kBAAiBi2D,UAChCupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,kBAAiBiR,SAAA,EAE5B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,kBAAiBiR,UAC5BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,SAAQiR,SAAA,EACnB6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,6CACJ6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,aAAYiR,SAAC,2EAIlCupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,kBAAiBiR,SAAA,EAC5B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,0DAAyDiR,SAAA,EACpE6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,kCAAiCiR,UAC5C6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,iBAERupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,WAAUiR,SAAC,sEACxB6jD,EAAAA,EAAAA,KAAA,OAAK95G,GAAG,sBAAsBglD,UAAU,+BAA+B,eAAa,WAAUiR,UAC1FupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,iBAAgBiR,SAAA,EAC3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,uBAAuB,mBAAiB,MAAKiR,UACxD6jD,EAAAA,EAAAA,KAAA,KAAA7jD,UAAGupG,EAAAA,EAAAA,MAAA,SAAOx6G,UAAU,aAAYiR,SAAA,CAAC,OAAG6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,oBAAmBiR,SAAC,OAAU,sBAEtF6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAgB,mBAAiB,MAAKiR,UACjDupG,EAAAA,EAAAA,MAAA,KAAGx6G,UAAU,WAAUiR,SAAA,CAAC,OAAG6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,WAAUiR,SAAC,OAAU,OAAE6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,aAAYiR,SAAC,wBAI5G6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,aAAYiR,SAAC,0EAC1B6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,0CAA0CvyB,OAAO,SAASoqD,UAAU,gEAA+DiR,SAAC,2BAKxJ6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,0DAAyDiR,SAAA,EACpE6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,wDAAuDiR,UAClE6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,mBAERupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,WAAUiR,SAAC,sEACxB6jD,EAAAA,EAAAA,KAAA,OAAK95G,GAAG,sBAAsBglD,UAAU,+BAA+B,eAAa,WAAUiR,UAC1FupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,iBAAgBiR,SAAA,EAC3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,uBAAuB,mBAAiB,MAAKiR,UAC5D6jD,EAAAA,EAAAA,KAAA,KAAA7jD,UAAGupG,EAAAA,EAAAA,MAAA,SAAOx6G,UAAU,aAAYiR,SAAA,CAAC,OAAG6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,oBAAmBiR,SAAC,QAAW,sBAEnF6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAgB,mBAAiB,MAAKiR,UACjDupG,EAAAA,EAAAA,MAAA,KAAGx6G,UAAU,WAAUiR,SAAA,CAAC,OAAG6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,WAAUiR,SAAC,QAAW,OAAE6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,aAAYiR,SAAC,wBAIzG6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,aAAYiR,SAAC,0EAC1B6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,0CAA0CvyB,OAAO,SAASoqD,UAAU,wDAAuDiR,SAAC,2BAKpJ6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,0DAAyDiR,SAAA,EACpE6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,kCAAiCiR,UAC5C6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,eAERupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,WAAUiR,SAAC,mEACxB6jD,EAAAA,EAAAA,KAAA,OAAK95G,GAAG,sBAAsBglD,UAAU,+BAA+B,eAAa,WAAUiR,UAC1FupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,iBAAgBiR,SAAA,EAC3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,uBAAuB,mBAAiB,MAAKiR,UAC5D6jD,EAAAA,EAAAA,KAAA,KAAA7jD,UAAGupG,EAAAA,EAAAA,MAAA,SAAOx6G,UAAU,aAAYiR,SAAA,CAAC,OAAG6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,oBAAmBiR,SAAC,QAAW,sBAEvF6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAgB,mBAAiB,MAAKiR,UACjDupG,EAAAA,EAAAA,MAAA,KAAGx6G,UAAU,WAAUiR,SAAA,CAAC,OAAG6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,WAAUiR,SAAC,QAAW,OAAE6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,aAAYiR,SAAC,wBAIzG6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,aAAYiR,SAAC,0EAC1B6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,0CAA0CvyB,OAAO,SAASoqD,UAAU,gEAA+DiR,SAAC,8BAM5JupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,aAAYiR,SAAA,EACvB6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,6BAA4BiR,SAAC,oBAE3C6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,mBAAkBiR,UACjCupG,EAAAA,EAAAA,MAAA,SAAOx6G,UAAU,+BAA8BiR,SAAA,EAC3C6jD,EAAAA,EAAAA,KAAA,SAAA7jD,UACAupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,aACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,UAASiR,SAAC,eACxB6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,UAASiR,SAAC,iBACxB6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,UAASiR,SAAC,kBAGhCupG,EAAAA,EAAAA,MAAA,SAAAvpG,SAAA,EACIupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,mCACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2BAEhC0pK,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,wBACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2BAEhC0pK,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,wBACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,8BAIpC0pK,EAAAA,EAAAA,MAAA,SAAAvpG,SAAA,EACIupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,4BACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2BAEhC0pK,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,iCACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2BAEhC0pK,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,oCACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,8BAIpC0pK,EAAAA,EAAAA,MAAA,SAAAvpG,SAAA,EACIupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,iCACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,6BAE3BupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,wBACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,sCAI/BupG,EAAAA,EAAAA,MAAA,SAAAvpG,SAAA,EACIupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,4BACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,0BACvB6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,6BAE3BupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,gCACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,QACd80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,0BACvB6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,gCAI/BupG,EAAAA,EAAAA,MAAA,SAAAvpG,SAAA,EACIupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,qBACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2BAEhC0pK,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,sBACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2BAEhC0pK,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,sBACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wBAC5BgkH,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2BAEhC0pK,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,SAAC,yBACvC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,0BACvB6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,0BACvB6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,2CAQ7C,EC7CF,SAxJA,WAGI,OAFQ,IAAIp1B,MAAO+/H,eAEZpB,EAAAA,EAAAA,MAAA,WAASx/J,GAAG,UAASi2D,SAAA,EAC1B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UACxB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UACf6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UACvB6jD,EAAAA,EAAAA,KAAA,OAAK95G,GAAG,sBAAsBglD,UAAU,+BAA+B,eAAa,WAAUiR,UAC1FupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,iBAAgBiR,SAAA,EAC3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,uBAAuB,mBAAiB,OAAMiR,UACzD6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,mDAAmDkvD,UAAU,kBAE3H80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAgB,mBAAiB,OAAMiR,UAClD6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,6CAA6CkvD,UAAU,kBAErH80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAgB,mBAAiB,OAAMiR,UAClD6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,wBAAwBvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,6CAA6CkvD,UAAU,6BAOlIw6G,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACxBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,cACb80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACvB6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,kCAEXgkH,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,cACjB80D,EAAAA,EAAAA,KAAA,OAAA7jD,UACEupG,EAAAA,EAAAA,MAAA,MAAIx6G,UAAU,+CAA8CiR,SAAA,EACxD6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,4BAA2BiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,iCAAiCvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,+BAChH80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,4BAA2BiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,0CAA0CvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,gCACzH80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,4BAA2BiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,6BACxG80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,4BAA2BiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,mCAAmCvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,8BAClH80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,4BAA2BiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,+BAA+BvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,8BAC9G80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,4BAA2BiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,mDAAmDvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,uCAI5I80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,kBAAkBhlD,GAAG,SAAQi2D,UAC1CupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,iBAAgBiR,SAAA,EAC3BupG,EAAAA,EAAAA,MAAA,KAAGx6G,UAAU,cAAaiR,SAAA,EAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,WAAW,iBAAe,WAAW73B,KAAK,8CAA2C0zI,KAAK,SAAS,gBAAc,QAAQ,gBAAc,kBAAiB5qG,SAAC,kDAA8C,qFAC/OupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,WAAWhlD,GAAG,6CAA0C,cAAY,UAASi2D,SAAA,EAC5F6jD,EAAAA,EAAAA,KAAA,MAAA7jD,UAAI6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,0BAAyBiR,SAAC,qBAC5C6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,iwBACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,mjBACH6jD,EAAAA,EAAAA,KAAA,MAAA7jD,UAAI6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,0BAAyBiR,SAAC,oDAC5C6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,krCACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,yRACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,qDACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,gSACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,uCACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,0EAEH6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UAClBupG,EAAAA,EAAAA,MAAA,SAAOx6G,UAAU,QAAOiR,SAAA,EACtB6jD,EAAAA,EAAAA,KAAA,SAAA7jD,UACEupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,UAASiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,2BAC3B6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,UAASiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,8BAGjC6jD,EAAAA,EAAAA,KAAA,SAAA7jD,UACIupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,oCAC1C6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,iCAG9B6jD,EAAAA,EAAAA,KAAA,SAAA7jD,UACIupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,wBAC1C6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,6FAG9B6jD,EAAAA,EAAAA,KAAA,SAAA7jD,UACIupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,mCAC1C6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,oFAG9B6jD,EAAAA,EAAAA,KAAA,SAAA7jD,UACMupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACE6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,kCAC1C6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,+DAG9B6jD,EAAAA,EAAAA,KAAA,SAAA7jD,UACMupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACE6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,6BAC1C6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,qEAG9B6jD,EAAAA,EAAAA,KAAA,SAAA7jD,UACMupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACE6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,0BAC1C6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,qFAIxBupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EACE6jD,EAAAA,EAAAA,KAAA,MAAI6mD,MAAM,MAAM37G,UAAU,aAAYiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,mCAC1C6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,KAAIiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,qKAKlC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,oPACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,iEACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,0OACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,wSACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,kPACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,+CACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,2EACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,gYACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,qDACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,0LACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,sKACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,+gBACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,yPACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,+FACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,2DACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,oEACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,kSACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,kgBACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,iYACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,iqBACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,0UACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,klBACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,kRACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,mJACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,mJACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,uUACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,iDACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,8QACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,qaACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,mEACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,8RACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,mcACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,qEACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,4UACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,oCACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,yWACH6jD,EAAAA,EAAAA,KAAA,KAAA7jD,UAAG6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,iBAAgBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,WAAW,iBAAe,WAAW73B,KAAK,8CAA2C0zI,KAAK,SAAS,gBAAc,QAAQ,gBAAc,kBAAiB5qG,SAAC,6BAMvN,EC5HF,SAlBA,WACI,OACI6jD,EAAAA,EAAAA,KAAA,OAAA7jD,UACIupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,UAASiR,SAAA,EACpB6jD,EAAAA,EAAAA,KAACglD,GAAW,KACZhlD,EAAAA,EAAAA,KAACrvB,GAAI,KACLqvB,EAAAA,EAAAA,KAACgnD,GAAM,KACPhnD,EAAAA,EAAAA,KAACinD,GAAU,KACXjnD,EAAAA,EAAAA,KAACknD,GAAU,KACXlnD,EAAAA,EAAAA,KAACmnD,GAAkB,KACnBnnD,EAAAA,EAAAA,KAAConD,GAAS,KACVpnD,EAAAA,EAAAA,KAACqnD,GAAM,KACPrnD,EAAAA,EAAAA,KAACsnD,GAAO,QAIxB,EC6fA,GAlhByBx3K,IAEvB,MAAOmmB,EAAM6iJ,IAAWrnK,EAAAA,EAAAA,WAAS,IACjCoC,EAAAA,EAAAA,YAAU,KACRolK,IAAoBtzC,gBACZ2xC,GAAS3xH,EAAO,IACrBq2D,MAAK,KACN88D,GAAQ,EAAK,GACb,GACD,IAEH,MAKMp4F,GAAU0oC,EAAAA,EAAAA,UACd,MACI,UAAY,EACZ,WAAc,CACZ,MAAS,CACP,MAAS,WAEX,MAAS,GACT,SAAY,GACZ,OAAU,GACV,KAAQ,GACR,QAAW,GAEb,eAAkB,CAChB,UAAa,kBACb,MAAS,CACP,MAAS,CACP,MAAS,QAEX,QAAW,GAEb,QAAU,GAEZ,OAAS,EACT,cAAiB,CAAC,EAClB,MAAS,EACT,WAAc,CACZ,QAAU,EACV,OAAU,GAEZ,cAAgB,EAChB,SAAY,EACZ,SAAY,IACZ,cAAiB,CACf,UAAa,SACb,OAAU,CACR,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,GAEX,MAAS,CACP,UAAa,CAAC,EACd,QAAU,EACV,KAAQ,CAAC,EACT,KAAQ,UAEV,QAAW,CACT,QAAU,EACV,KAAQ,CAAC,EACT,SAAY,CACV,QAAU,EACV,MAAS,EACT,OAAU,KAGd,OAAU,CACR,MAAS,GACT,QAAU,IAGd,MAAS,CACP,MAAS,CACP,MAAS,EACT,aAAe,EACf,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,gBACV,OAAU,EACV,SAAY,GACZ,MAAS,GAEX,OAAU,CACR,SAAY,KAEd,OAAU,CACR,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,QAAW,EACX,KAAQ,EACR,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,KAAO,EACP,UAAa,CAAC,IAGlB,QAAW,CACT,SAAY,GACZ,MAAS,CACP,QAAW,IAEb,OAAU,IAEZ,KAAQ,CACN,SAAY,IACZ,MAAS,CACP,OAAS,EACT,SAAW,EACX,QAAW,IAGf,KAAQ,CACN,SAAW,EACX,OAAU,GACV,SAAY,GAEd,OAAU,CACR,SAAY,GAEd,QAAW,CACT,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,KAAQ,CACN,SAAY,IACZ,SAAY,GACZ,OAAU,IACV,MAAS,EACT,SAAY,GACZ,OAAU,gBACV,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,EACV,OAAU,KAEZ,MAAS,CACP,KAAQ,CACN,SAAY,CACV,MAAS,CACP,MAAS,WAEX,KAAQ,CACN,MAAS,YAGb,OAAU,KAEZ,OAAU,CACR,MAAS,CACP,MAAS,WAEX,OAAU,QAKlB,gBAAmB,GACnB,UAAa,CACX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,WAAc,CACZ,OAAU,CACR,MAAS,GAEX,OAAU,CACR,WAAc,CACZ,MAAS,GAEX,SAAY,CACV,MAAS,IAGb,QAAU,EACV,SAAY,GACZ,KAAQ,SACR,QAAW,CACT,QAAU,EACV,QAAW,IAGf,MAAS,CACP,MAAS,CAAC,UAAW,UAAW,UAAW,WAC3C,UAAa,CACX,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,GAEZ,EAAK,CACH,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,OAAU,KAIhB,OAAU,CACR,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,CAAC,GAEX,OAAU,GACV,KAAQ,CACN,MAAS,CACP,OAAU,EACV,MAAS,IAEX,QAAW,CACT,SAAY,IACZ,QAAU,EACV,OAAU,CACR,EAAK,IACL,EAAK,MAGT,OAAU,CACR,EAAK,GACL,EAAK,GACL,KAAQ,UACR,OAAU,GAEZ,MAAS,EACT,SAAY,CAAC,EACb,UAAa,SACb,MAAS,EACT,QAAU,EACV,QAAW,CACT,aAAgB,KAChB,QAAU,EACV,SAAW,EACX,SAAY,IAEd,KAAQ,CACN,OAAS,EACT,MAAS,CACP,MAAS,GAEX,QAAU,EACV,QAAW,CAAC,GAEd,SAAY,CACV,QAAW,MACX,OAAU,MACV,KAAQ,MACR,MAAS,MACT,IAAO,OAET,QAAU,EACV,MAAQ,EACR,MAAS,EACT,KAAQ,CACN,aAAgB,EAChB,QAAU,GAEZ,UAAY,EACZ,MAAS,CACP,QAAU,EACV,OAAU,GACV,KAAQ,CAAC,GAEX,SAAW,EACX,MAAQ,GAEV,OAAU,CACR,QAAW,CACT,QAAU,EACV,MAAS,KACT,OAAU,MAEZ,MAAS,CACP,KAAQ,SACR,MAAS,GAEX,MAAS,KAEX,QAAW,CACT,MAAS,CACP,IAAO,GACP,IAAO,GAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,kBAAoB,EACpB,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,EACV,OAAU,CACR,EAAK,EACL,EAAK,IAGT,MAAS,CACP,OAAS,EACT,MAAQ,EACR,QAAW,CAAC,EACZ,KAAQ,UAEV,KAAQ,CACN,MAAS,CACP,IAAO,GACP,IAAO,KAET,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,EACR,KAAQ,OACR,WAAc,SACd,QAAW,SAGf,OAAU,CACR,MAAS,GAEX,OAAU,CACR,MAAS,EACT,YAAe,EACf,SAAY,EACZ,aAAgB,GAElB,QAAW,CACT,OAAU,CAAC,EACX,KAAQ,OACR,MAAS,CACP,MAAS,EACT,OAAU,CACR,MAAS,GAEX,KAAQ,CACN,MAAS,CACP,IAAO,EACP,IAAO,IAGX,YAAc,EACd,UAAa,CAAC,IAGlB,KAAQ,CACN,OAAU,CACR,QAAU,EACV,MAAS,GAEX,QAAU,EACV,UAAa,CACX,QAAU,EACV,MAAS,GAEX,KAAQ,WACR,MAAS,IAEX,KAAQ,CACN,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,QAAU,GAEZ,QAAW,CACT,MAAS,CACP,QAAU,EACV,UAAa,IACb,QAAW,GAEb,UAAa,CACX,QAAU,EACV,UAAa,IACb,QAAW,IAGf,OAAU,CACR,SAAY,EACZ,QAAU,EACV,MAAS,CACP,MAAS,GACT,KAAQ,KAGZ,KAAQ,CACN,MAAS,EACT,MAAS,CACP,MAAS,EACT,MAAQ,GAEV,SAAY,CACV,MAAS,EACT,MAAQ,IAGZ,OAAU,CACR,MAAS,EACT,UAAa,CACX,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,UAAa,YACb,MAAQ,GAEV,MAAS,CACP,UAAa,CACX,MAAS,EACT,QAAU,EACV,MAAS,EACT,MAAS,EACT,MAAS,EACT,MAAQ,GAEV,QAAU,EACV,QAAW,EACX,SAAY,CACV,MAAS,IAEX,MAAS,GAEX,MAAS,CACP,OAAS,EACT,MAAS,CACP,MAAS,QAEX,SAAW,EACX,SAAY,IACZ,QAAU,EACV,UAAa,EACb,QAAW,EACX,OAAU,CACR,KAAQ,EACR,MAAS,CACP,MAAS,QAEX,QAAU,GAEZ,UAAa,CACX,QAAU,EACV,UAAa,GAEf,MAAS,EACT,MAAQ,GAEV,QAAW,CACT,MAAS,EACT,SAAW,EACX,SAAY,EACZ,SAAY,EACZ,OAAU,EACV,MAAS,IAGb,aAAe,EACf,wBAA0B,EAC1B,WAAc,GACd,QAAU,EACV,MAAS,CAAC,EACV,OAAU,GACV,QAAW,IACX,KAAQ,OACR,OAAU,CACR,SAAW,EACX,OAAU,CACR,OAAU,EACV,OAAS,OAIjB,IAIF,OAAO4W,EAAAA,EAAAA,KAAC6sB,GAAS,CAAC3mI,GAAIpW,EAAMoW,GAAI+P,KApgBPtiB,IACvBw1C,QAAQm/C,IAAI30F,EAAU,EAmgB+B+sE,QAASA,GAAW,ECre7E,SA3CA,WACI,OAAOs/C,EAAAA,EAAAA,KAAA,OAAA7jD,UACPupG,EAAAA,EAAAA,MAAA,WAASx/J,GAAG,WAAUi2D,SAAA,EACtB6jD,EAAAA,EAAAA,KAACunD,GAAe,KAChB7B,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EAClBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EACf6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,cACd80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACvB6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,kCAEXgkH,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,cACjB80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACvB6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,gBAEL6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,OAAMiR,UACjBupG,EAAAA,EAAAA,MAAA,MAAIx6G,UAAU,+CAA8CiR,SAAA,EAC1D6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,wBAAuBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,mDAAmDvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,8BAC9H80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,wBAAuBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,iCAAiCvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,8BAC5G80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,wBAAuBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,0CAA0CvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,oCAG3Hw6G,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,QAAOiR,SAAA,EAClBupG,EAAAA,EAAAA,MAAA,MAAIx6G,UAAU,+CAA8CiR,SAAA,EAC1D6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,yBAAwBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,wBAAwBvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,6BACpG80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,yBAAwBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,wDAAwDvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,8BACpI80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,yBAAwBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,+BAA+BvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,gCAE7G80D,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,IAAI63B,UAAU,6CAA4CiR,SAAC,mCAG3E6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UACxB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,2BAA0BiR,UACrC6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,gcAQvB,ECiCF,SA5EA,WACI,OAAO6jD,EAAAA,EAAAA,KAAA,OAAA7jD,UAGP6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,gBAAei2D,UAE3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UAClBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,+CAA+C2pK,IAAI,aAIxED,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,WAAUiR,SAAA,EACvB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,kBAAiBiR,UAC9B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,SAAQiR,UACnB6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,8HAGRupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,UAASiR,SAAA,EACpBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,aAAYiR,SAAA,EACvB6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,QAAQl6D,KAAK,WAAWkV,GAAG,SAASjP,KAAK,QAAQonF,SAAO,KACzE2hC,EAAAA,EAAAA,KAAA,SAAOwnD,QAAQ,SAAQrrG,SAAC,yCAE5BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,aAAYiR,SAAA,EACvB6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,QAAQl6D,KAAK,WAAWkV,GAAG,SAASjP,KAAK,QAAQonF,SAAO,KACzE2hC,EAAAA,EAAAA,KAAA,SAAOwnD,QAAQ,SAAQrrG,SAAC,yCAE5BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,aAAYiR,SAAA,EACvB6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,QAAQl6D,KAAK,WAAWkV,GAAG,SAASjP,KAAK,QAAQonF,SAAO,KACzE2hC,EAAAA,EAAAA,KAAA,SAAOwnD,QAAQ,SAAQrrG,SAAC,+BAE5BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,aAAYiR,SAAA,EACvB6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,QAAQl6D,KAAK,WAAWkV,GAAG,SAASjP,KAAK,QAAQonF,SAAO,KACzE2hC,EAAAA,EAAAA,KAAA,SAAOwnD,QAAQ,SAAQrrG,SAAC,gDAE5BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,aAAYiR,SAAA,EACvB6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,QAAQl6D,KAAK,WAAWkV,GAAG,SAASjP,KAAK,QAAQonF,SAAO,KACzE2hC,EAAAA,EAAAA,KAAA,SAAOwnD,QAAQ,SAAQrrG,SAAC,gDAE5BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,aAAYiR,SAAA,EACvB6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,QAAQl6D,KAAK,WAAWkV,GAAG,SAASjP,KAAK,QAAQonF,SAAO,KACzE2hC,EAAAA,EAAAA,KAAA,SAAOwnD,QAAQ,SAAQrrG,SAAC,kBAI9B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UACxB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UAClBupG,EAAAA,EAAAA,MAAA,QACE7uK,OAAO,kDACP4wK,OAAO,OACPv8G,UAAU,OAAMiR,SAAA,EAEhB6jD,EAAAA,EAAAA,KAAA,SAAOwnD,QAAQ,QAAOrrG,SAAC,uBACvB6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,sBAAsBj0D,KAAK,QAAQjG,KAAK,QAAQkV,GAAG,QAAQ+2J,UAAQ,KACpFj9C,EAAAA,EAAAA,KAAA,SAAO/oH,KAAK,SAASjG,KAAK,WAAWuB,MAAM,WAC3CytH,EAAAA,EAAAA,KAAA,SACE/oH,KAAK,SACLjG,KAAK,QACLuB,MAAM,uEAERmzK,EAAAA,EAAAA,MAAA,OAAAvpG,SAAA,EACA6jD,EAAAA,EAAAA,KAAA,UAAQ90D,UAAU,6CAA6Cj0D,KAAK,SAAQklE,SAAC,YAC7E6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,IAAI63B,UAAU,qDAAoDiR,SAAC,4CAWrG,EC5CF,SA9BA,WACI,OAAO6jD,EAAAA,EAAAA,KAAA,OAAA7jD,UAGLupG,EAAAA,EAAAA,MAAA,WAASx/J,GAAG,mBAAkBi2D,SAAA,EAE5B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UACxB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UAClB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UACxB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,+CAA+C2pK,IAAI,iBAKxE3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UACxB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UAClBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACtB6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,4CACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,sDACJ6jD,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,wQACH6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,IAAI63B,UAAU,sDAAqDiR,SAAC,oCAQpG,EC2CF,SAvEA,WACI,OAAO6jD,EAAAA,EAAAA,KAAA,OAAA7jD,UAEP6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,uBAAsBi2D,UAE9BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACtB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,kBAAiBiR,UAC5BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,SAAQiR,SAAA,EACnB6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,sDACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,0FAIZupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,4BAA2BiR,SAAA,EACtC6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gCAA+BiR,SAAA,EAC1C6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,mBAAkBiR,UAC7B6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,gBAERupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACtB6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,2EACJ6jD,EAAAA,EAAAA,KAAA,KAAA7jD,UAAG6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,aAAYiR,SAAC,mBACjCupG,EAAAA,EAAAA,MAAA,KAAAvpG,SAAA,CAAG,OAAG6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,uBAAsBiR,SAAC,QAAW,OAAE6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,mBAC3E80D,EAAAA,EAAAA,KAAA,KAAA7jD,UAAG6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,aAAYiR,SAAC,oFACjC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,uEAAuEvyB,OAAO,SAASoqD,UAAU,6CAA4CiR,SAAC,0BAKlK6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,+CAA8CiR,SAAA,EACzD6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,wDAAuDiR,UAClE6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,iBAERupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACtB6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,sEACJ6jD,EAAAA,EAAAA,KAAA,KAAA7jD,UAAG6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,aAAYiR,SAAC,mBACjCupG,EAAAA,EAAAA,MAAA,KAAAvpG,SAAA,CAAG,OAAG6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,uBAAsBiR,SAAC,QAAW,OAAE6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,mBAC3E80D,EAAAA,EAAAA,KAAA,KAAA7jD,UAAG6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,aAAYiR,SAAC,oFACjC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,uEAAuEvyB,OAAO,SAASoqD,UAAU,qCAAoCiR,SAAC,0BAK1J6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gCAA+BiR,SAAA,EAC1C6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,mBAAkBiR,UAC7B6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,iBAERupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACtB6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,iEACJ6jD,EAAAA,EAAAA,KAAA,KAAA7jD,UAAG6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,aAAYiR,SAAC,mBACjCupG,EAAAA,EAAAA,MAAA,KAAAvpG,SAAA,CAAG,OAAG6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,uBAAsBiR,SAAC,QAAW,OAAE6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,mBAC3E80D,EAAAA,EAAAA,KAAA,KAAA7jD,UAAG6jD,EAAAA,EAAAA,KAAA,SAAO90D,UAAU,aAAYiR,SAAC,uFACjC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,uEAAuEvyB,OAAO,SAASoqD,UAAU,6CAA4CiR,SAAC,6BAKtKupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,cACf80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,iDAEbgkH,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,sBAK7B,ECtCF,SA/BA,WACI,OAAO80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,0DAAyDiR,UAE/EupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EAEtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,yBAAyB73B,KAAK,IAAG8oC,UAC5C6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,iCAAiC2pK,IAAI,GAAGnwK,OAAO,WAG1DwqH,EAAAA,EAAAA,KAAA,UAAQ90D,UAAU,iBAAiBj0D,KAAK,SAAS,iBAAe,WAAW,iBAAe,0BAA0B,gBAAc,yBAAyB,gBAAc,QAAQ,aAAW,oBAAmBklE,UAC7M6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,2BAGlB80D,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,4BAA4BhlD,GAAG,yBAAwBi2D,UACpEupG,EAAAA,EAAAA,MAAA,MAAIx6G,UAAU,qBAAoBiR,SAAA,EAChC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,WAAUiR,UACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,WAAW,eAAa,OAAO73B,KAAK,IAAG8oC,SAAC,iBAEvD6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,WAAUiR,UACtB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,WAAW,eAAa,OAAO73B,KAAK,qBAAoB8oC,SAAC,cAEvE6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,WAAUiR,UACvB6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,WAAW,eAAa,OAAO73B,KAAK,oBAAmB8oC,SAAC,uBAOjF,ECcF,SA3CA,WACI,OAAO6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,qBAAoBi2D,UACnC6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UACtBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EACpB6jD,EAAAA,EAAAA,KAAA,OAAK95G,GAAG,oCAAoCglD,UAAU,gCAAgC,eAAa,WAAUiR,UACzGupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,iBAAgBiR,SAAA,EAC3B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,uBAAuB,mBAAiB,OAAMiR,UACzD6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,+DAA+D2pK,IAAI,mBAGhJ3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,gBAAgB,mBAAiB,OAAMiR,UAClD6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,yDAAyD2pK,IAAI,mBAG1ID,EAAAA,EAAAA,MAAA,UAAQx6G,UAAU,wBAAwBj0D,KAAK,SAAS,iBAAe,qCAAqC,gBAAc,OAAMklE,SAAA,EAC5H6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,6BAA6B,cAAY,UACzD80D,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,kBAAiBiR,SAAC,iBAEtCupG,EAAAA,EAAAA,MAAA,UAAQx6G,UAAU,wBAAwBj0D,KAAK,SAAS,iBAAe,qCAAqC,gBAAc,OAAMklE,SAAA,EAC5H6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,6BAA6B,cAAY,UACzD80D,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,kBAAiBiR,SAAC,kBAI9CupG,EAAAA,EAAAA,MAAA,OAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,2BAA0BiR,SAAC,yDACzC6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,cAAaiR,SAAC,qFAEhC6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,MAAKiR,UAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,mBAAkBiR,UACtC6jD,EAAAA,EAAAA,KAAA,UAAQ/pH,MAAM,MAAMT,OAAO,MAAMwG,IAAI,4CAA4CwuD,MAAM,uBAAuBk9G,YAAY,IAAIC,MAAM,sGAAsGC,iBAAe,SAGxP5nD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,kBAAiBiR,UAC5B6jD,EAAAA,EAAAA,KAAA,OAAA7jD,UACI6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASoqD,UAAU,sCAAqCiR,SAAC,wCAMrH,ECoBA,SA7DA,WACI,OAAO6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,oBAAmBi2D,UACjCupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,YAAWiR,SAAA,EACvBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,0DAA0DkvD,UAAU,WAAWy6G,IAAI,eAExK3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,sDAAsDkvD,UAAU,WAAWy6G,IAAI,eAEpK3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,mEAAmEkvD,UAAU,WAAWy6G,IAAI,kBAGrL3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,+BAA8BiR,UAClD6jD,EAAAA,EAAAA,KAAA,UAAQ/pH,MAAM,MAAMT,OAAO,MAAMwG,IAAI,4CAA4CwuD,MAAM,uBAAuBk9G,YAAY,IAAIC,MAAM,sGAAsGC,iBAAe,OAEpPlC,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,iFAAiFkvD,UAAU,WAAWy6G,IAAI,eAE/L3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,8DAA8DkvD,UAAU,WAAWy6G,IAAI,eAE5K3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,wDAAwDkvD,UAAU,WAAWy6G,IAAI,eAE1K3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,+BAA8BiR,UAClD6jD,EAAAA,EAAAA,KAAA,UAAQ/pH,MAAM,MAAMT,OAAO,MAAMwG,IAAI,4CAA4CwuD,MAAM,uBAAuBk9G,YAAY,IAAIC,MAAM,sGAAsGC,iBAAe,UAGpPlC,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,8DAA8DkvD,UAAU,WAAWy6G,IAAI,eAE5K3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,2DAA2DkvD,UAAU,WAAWy6G,IAAI,eAEzK3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,gEAAgEkvD,UAAU,WAAWy6G,IAAI,eAElL3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,+BAA8BiR,UAClD6jD,EAAAA,EAAAA,KAAA,UAAQ/pH,MAAM,MAAMT,OAAO,MAAMwG,IAAI,4CAA4CwuD,MAAM,uBAAuBk9G,YAAY,IAAIC,MAAM,sGAAsGC,iBAAe,UAGpPlC,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChB6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,+DAA+DkvD,UAAU,WAAWy6G,IAAI,eAE7K3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,8DAA8DkvD,UAAU,WAAWy6G,IAAI,eAE5K3lD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UAAQ6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyBvyB,OAAO,SAASioC,IAAI,WAAUozB,UAAC6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,uEAAuEkvD,UAAU,WAAWy6G,IAAI,qBAMnM,ECvCF,SArBA,WACI,OAAO3lD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,mBAAkBi2D,UAC/B6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,YAAWiR,UACxBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,MAAKiR,SAAA,EAChBupG,EAAAA,EAAAA,MAAA,OAAAvpG,SAAA,EACI6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,gBAAeiR,SAAC,cAC7B6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,oBAAmBiR,SAAC,kFAErC6jD,EAAAA,EAAAA,KAAA,OAAA7jD,UACEupG,EAAAA,EAAAA,MAAA,MAAIx6G,UAAU,mCAAkCiR,SAAA,EAC5C6jD,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,mBAAkBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,oDAAoDvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,yCAC1H80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,mBAAkBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,2CAA2CvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,yCACjH80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,mBAAkBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,2CAA2CvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,wCACjH80D,EAAAA,EAAAA,KAAA,MAAI90D,UAAU,mBAAkBiR,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,6CAA6CvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,oDAMvI,ECLF,SATA,WACI,OAAOw6G,EAAAA,EAAAA,MAAA,OAAAvpG,SAAA,EACP6jD,EAAAA,EAAAA,KAAC6nD,GAAW,KACZ7nD,EAAAA,EAAAA,KAAC8nD,GAAiB,KAClB9nD,EAAAA,EAAAA,KAAC+nD,GAAgB,KACjB/nD,EAAAA,EAAAA,KAACgoD,GAAe,MAElB,ECqBF,SAhCA,WACI,OAAOhoD,EAAAA,EAAAA,KAAA,OAAA7jD,UAGP6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,gBAAei2D,UAE3BupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,0BAAyBiR,SAAA,EACpC6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,WAAUiR,UACrB6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,kCAEnBgkH,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,uBAAsBiR,UACpC6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,yEAELupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,wBAAuBiR,SAAA,EAC5BupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAI,aAAS6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,6DAA6D0zI,KAAK,SAAS,gBAAc,QAAQ,gBAAc,kBAAkBjmK,OAAO,SAAQq7D,SAAC,sCAA4B,wHAClMupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,EAAI6jD,EAAAA,EAAAA,KAAA,OAAKhkH,IAAI,qBAAqB,0HAClCgkH,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,kBACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,qBAEdupG,EAAAA,EAAAA,MAAA,UAAQx6G,UAAU,eAAciR,SAAA,EAC/B6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,0DAA0DvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,8BAC/F80D,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,0CAA0CvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,+BAC/E80D,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,mCAAmCvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,6BACxE80D,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,+BAA+BvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,6BACpE80D,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,oEAMJ,ECHF,SA3BA,WACI,OAAO6jD,EAAAA,EAAAA,KAAA,OAAA7jD,UAGP6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,YAAWi2D,UAEvBupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,sBAAqBiR,SAAA,EACtC6jD,EAAAA,EAAAA,KAAA,OAAK90D,UAAU,mBAAkBiR,UAChCupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAI,sCAA+B6jD,EAAAA,EAAAA,KAAA,QAAM90D,UAAU,aAAYiR,SAAC,yBAAwB,sCAA+B6jD,EAAAA,EAAAA,KAAA,QAAMioD,MAAM,aAAY9rG,SAAC,gBAAkB,iEAEnKupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,gCAA+BiR,SAAA,EAC7C6jD,EAAAA,EAAAA,KAAA,UAAQ/pH,MAAM,MAAMT,OAAO,MAAMwG,IAAI,4CAA4CwuD,MAAM,uBAAuBk9G,YAAY,IAAIC,MAAM,sGAAsGC,iBAAe,KACzP5nD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,yBAAyB63B,UAAU,uCAAsCiR,SAAC,0CAEnFupG,EAAAA,EAAAA,MAAA,UAAQx6G,UAAU,eAAciR,SAAA,EAC/B6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,0DAA0DvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,8BAC/F80D,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,0CAA0CvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,+BAC/E80D,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,mCAAmCvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,6BACxE80D,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,+BAA+BvyB,OAAO,SAAQq7D,UAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,6BACpE80D,EAAAA,EAAAA,KAAA,KAAA7jD,SAAG,oEAMJ,ECzBF,MAAM+rG,WAA4C12K,EAAAA,UAChDgM,WAAAA,CAAY1N,GACV8xH,MAAM9xH,GACNqL,KAAKymE,MAAQ,CACXumG,UAAW,EAEf,CAEA98D,iBAAAA,GAEE,MAAMvnB,EAAOtsF,SAASxC,cAAc,KACpC8uF,EAAKzwD,KAAO,uFACZywD,EAAKhjF,OAAS,SACdgjF,EAAKskF,SAAW,gCAGhB5wK,SAAS8gB,KAAKpK,YAAY41E,GAG1BA,EAAK+iE,QAGLrvJ,SAAS8gB,KAAKsxB,YAAYk6C,GAG1B3oF,KAAKktK,SAAW57J,aAAY,KAC1BtR,KAAKogH,UAAS+sD,IAAS,CACrBH,UAAWG,EAAUH,UAAY,KAChC,GACF,KAGHzzJ,YAAW,KACTjf,OAAOoV,SAASmO,QAAQ,8BAA8B,GACrD,IACL,CAEAm5F,oBAAAA,GAEEvlG,cAAczR,KAAKktK,SACrB,CAEAvnH,MAAAA,GACE,OACEk/D,EAAAA,EAAAA,KAAA,OAAA7jD,UACE6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,4BAA2Bi2D,UACrCupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,kBAAiBiR,SAAA,EAC9B6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,iBACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,+EACJupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAK,KAAIupG,EAAAA,EAAAA,MAAA,KAAGryI,KAAK,uFAAuF63B,UAAU,kDAAkDk9G,SAAS,gCAA+BjsG,SAAA,EAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,mBAAqB,uBAC/Ow6G,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAI,kCAAgChhE,KAAKymE,MAAMumG,UAAU,wBAKnE,EAGF,YC1DA,MAAMI,WAAwC/2K,EAAAA,UAC5CgM,WAAAA,CAAY1N,GACV8xH,MAAM9xH,GACNqL,KAAKymE,MAAQ,CACXumG,UAAW,EAEf,CAEA98D,iBAAAA,GAEE,MAAMvnB,EAAOtsF,SAASxC,cAAc,KACpC8uF,EAAKzwD,KAAO,uFACZywD,EAAKhjF,OAAS,SACdgjF,EAAKskF,SAAW,2BAGhB5wK,SAAS8gB,KAAKpK,YAAY41E,GAG1BA,EAAK+iE,QAGLrvJ,SAAS8gB,KAAKsxB,YAAYk6C,GAG1B3oF,KAAKktK,SAAW57J,aAAY,KAC1BtR,KAAKogH,UAAS+sD,IAAS,CACrBH,UAAWG,EAAUH,UAAY,KAChC,GACF,KAGHzzJ,YAAW,KACTjf,OAAOoV,SAASmO,QAAQ,8BAA8B,GACrD,IACL,CAEAm5F,oBAAAA,GAEEvlG,cAAczR,KAAKktK,SACrB,CAEAvnH,MAAAA,GACE,OACEk/D,EAAAA,EAAAA,KAAA,OAAA7jD,UACE6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,uBAAsBi2D,UAChCupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,kBAAiBiR,SAAA,EAC9B6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,iBACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,+EACJupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAK,KAAIupG,EAAAA,EAAAA,MAAA,KAAGryI,KAAK,uFAAuF63B,UAAU,kDAAkDk9G,SAAS,sCAAqCjsG,SAAA,EAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,mBAAqB,uBACrPw6G,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAI,kCAAgChhE,KAAKymE,MAAMumG,UAAU,wBAKnE,EAGF,YC1DA,MAAMK,WAAuDh3K,EAAAA,UAC3DgM,WAAAA,CAAY1N,GACV8xH,MAAM9xH,GACNqL,KAAKymE,MAAQ,CACXumG,UAAW,EAEf,CAEA98D,iBAAAA,GAEE,MAAMvnB,EAAOtsF,SAASxC,cAAc,KACpC8uF,EAAKzwD,KAAO,uFACZywD,EAAKhjF,OAAS,SACdgjF,EAAKskF,SAAW,kFAGhB5wK,SAAS8gB,KAAKpK,YAAY41E,GAG1BA,EAAK+iE,QAGLrvJ,SAAS8gB,KAAKsxB,YAAYk6C,GAG1B3oF,KAAKktK,SAAW57J,aAAY,KAC1BtR,KAAKogH,UAAS+sD,IAAS,CACrBH,UAAWG,EAAUH,UAAY,KAChC,GACF,KAGHzzJ,YAAW,KACTjf,OAAOoV,SAASmO,QAAQ,8BAA8B,GACrD,IACL,CAEAm5F,oBAAAA,GAEEvlG,cAAczR,KAAKktK,SACrB,CAEAvnH,MAAAA,GACE,OACEk/D,EAAAA,EAAAA,KAAA,OAAA7jD,UACE6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,8EAA6Ei2D,UACvFupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,kBAAiBiR,SAAA,EAC9B6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,iBACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,+EACJupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAK,KAAIupG,EAAAA,EAAAA,MAAA,KAAGryI,KAAK,uFAAuF63B,UAAU,kDAAkDk9G,SAAS,kFAAiFjsG,SAAA,EAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,mBAAqB,uBACjSw6G,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAI,kCAAgChhE,KAAKymE,MAAMumG,UAAU,wBAKnE,EAGF,YC1DA,MAAMM,WAAyDj3K,EAAAA,UAC7DgM,WAAAA,CAAY1N,GACV8xH,MAAM9xH,GACNqL,KAAKymE,MAAQ,CACXumG,UAAW,EAEf,CAEA98D,iBAAAA,GAEE,MAAMvnB,EAAOtsF,SAASxC,cAAc,KACpC8uF,EAAKzwD,KAAO,uFACZywD,EAAKhjF,OAAS,SACdgjF,EAAKskF,SAAW,0BAGhB5wK,SAAS8gB,KAAKpK,YAAY41E,GAG1BA,EAAK+iE,QAGLrvJ,SAAS8gB,KAAKsxB,YAAYk6C,GAG1B3oF,KAAKktK,SAAW57J,aAAY,KAC1BtR,KAAKogH,UAAS+sD,IAAS,CACrBH,UAAWG,EAAUH,UAAY,KAChC,GACF,KAGHzzJ,YAAW,KACTjf,OAAOoV,SAASmO,QAAQ,8BAA8B,GACrD,IACL,CAEAm5F,oBAAAA,GAEEvlG,cAAczR,KAAKktK,SACrB,CAEAvnH,MAAAA,GACE,OACEk/D,EAAAA,EAAAA,KAAA,OAAA7jD,UACE6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,0BAAyBi2D,UACnCupG,EAAAA,EAAAA,MAAA,OAAKx6G,UAAU,kBAAiBiR,SAAA,EAC9B6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,iBACJ6jD,EAAAA,EAAAA,KAAA,MAAA7jD,SAAI,+EACJupG,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAK,KAAIupG,EAAAA,EAAAA,MAAA,KAAGryI,KAAK,uFAAuF63B,UAAU,kDAAkDk9G,SAAS,0BAAyBjsG,SAAA,EAAC6jD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,mBAAqB,uBACzOw6G,EAAAA,EAAAA,MAAA,MAAAvpG,SAAA,CAAI,kCAAgChhE,KAAKymE,MAAMumG,UAAU,wBAKnE,EAGF,2kjDCjCE,GAvBeO,KAEX1oD,EAAAA,EAAAA,KAAA,OAAA7jD,UACE6jD,EAAAA,EAAAA,KAAA,WAAS95G,GAAG,WAAUi2D,UACpBupG,EAAAA,EAAAA,MAAA,OAAAvpG,SAAA,EAEE6jD,EAAAA,EAAAA,KAACpnH,KAAM,CACL5I,cAAeA,GACfC,MAAM,EACNF,MAAO,CAAEyF,OAAQ,IAAKS,MAAO,IAAK0mE,OAAQ,aAE5CqjD,EAAAA,EAAAA,KAAA,KAAG90D,UAAU,aAAYiR,SAAC,6CAC1B6jD,EAAAA,EAAAA,KAAA,UAAA7jD,UACE6jD,EAAAA,EAAAA,KAAA,KAAG3sF,KAAK,IAAI63B,UAAU,8CAA6CiR,SAAC,gCCsClF,SAlCA,WACE,MAAM,OAAE2jD,IAAW9W,EAAAA,EAAAA,YAAWyW,GAU9B,OACEimD,EAAAA,EAAAA,MAAChB,GAAa,CAAAvoG,SAAA,EACd6jD,EAAAA,EAAAA,KAAC2oD,GAAkB,CAACziK,GAAG,eACrBw/J,EAAAA,EAAAA,MAACzB,GAAM,CAAA9nG,SAAA,EACL6jD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,IAAIvE,SAASsgH,EAAAA,EAAAA,KAAC4oD,GAAI,OAC9B5oD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,YAAYvE,SAASsgH,EAAAA,EAAAA,KAAC6oD,GAAO,OACzC7oD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,iBAAiBvE,SAASsgH,EAAAA,EAAAA,KAAC8oD,GAAa,OACpD9oD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,0CAA0CvE,SAASsgH,EAAAA,EAAAA,KAAC+oD,GAAgB,OAChF/oD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,oCAAoCvE,SAASsgH,EAAAA,EAAAA,KAACgpD,GAAQ,OAClEhpD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,iCAAiCvE,SAASsgH,EAAAA,EAAAA,KAACipD,GAAmB,OAC1EjpD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,oBAAoBvE,SAASsgH,EAAAA,EAAAA,KAACkpD,GAAW,OACrDlpD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,iCAAiCvE,SAASsgH,EAAAA,EAAAA,KAACmpD,GAAS,OAChEnpD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,sCAAsCvE,SAASsgH,EAAAA,EAAAA,KAACkoD,GAAmC,OAC/FloD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,gCAAgCvE,SAASsgH,EAAAA,EAAAA,KAACuoD,GAA+B,OACrFvoD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,oDAAoDvE,SAASsgH,EAAAA,EAAAA,KAACwoD,GAA8C,OACxHxoD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,kEAAkEvE,SAASsgH,EAAAA,EAAAA,KAACyoD,GAAgD,OAExIzoD,EAAAA,EAAAA,KAACsjD,GAAK,CAACr/J,KAAK,IAAIvE,SAASsgH,EAAAA,EAAAA,KAAC0oD,GAAQ,WAI1C,EChDAjE,EAAAA,QACEzkD,EAAAA,EAAAA,KAACN,EAAY,CAAAvjD,UACX6jD,EAAAA,EAAAA,KAACopD,GAAG,MAEN5xK,SAASu5C,eAAe","sources":["../node_modules/lottie-react/compiled/hooks/useLottie.js","../node_modules/lottie-react/compiled/hooks/useLottieInteractivity.js","../node_modules/lottie-react/compiled/components/Lottie.js","../node_modules/lottie-web/build/player/lottie.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","app/Context/auth.jsx","../node_modules/@tsparticles/engine/browser/Core/Utils/Constants.js","../node_modules/@tsparticles/engine/browser/Enums/Directions/MoveDirection.js","../node_modules/@tsparticles/engine/browser/Utils/TypeUtils.js","../node_modules/@tsparticles/engine/browser/Core/Utils/Vectors.js","../node_modules/@tsparticles/engine/browser/Utils/NumberUtils.js","../node_modules/@tsparticles/engine/browser/Enums/Modes/AnimationMode.js","../node_modules/@tsparticles/engine/browser/Enums/AnimationStatus.js","../node_modules/@tsparticles/engine/browser/Enums/Types/DestroyType.js","../node_modules/@tsparticles/engine/browser/Enums/Directions/OutModeDirection.js","../node_modules/@tsparticles/engine/browser/Enums/Modes/PixelMode.js","../node_modules/@tsparticles/engine/browser/Enums/Types/StartValueType.js","../node_modules/@tsparticles/engine/browser/Utils/Utils.js","../node_modules/@tsparticles/engine/browser/Enums/Types/AlterType.js","../node_modules/@tsparticles/engine/browser/Utils/ColorUtils.js","../node_modules/@tsparticles/engine/browser/Utils/CanvasUtils.js","../node_modules/@tsparticles/engine/browser/Core/Canvas.js","../node_modules/@tsparticles/engine/browser/Enums/InteractivityDetect.js","../node_modules/@tsparticles/engine/browser/Core/Utils/EventListeners.js","../node_modules/@tsparticles/engine/browser/Enums/Types/EventType.js","../node_modules/@tsparticles/engine/browser/Enums/Types/DivType.js","../node_modules/@tsparticles/engine/browser/Options/Classes/OptionsColor.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Background/Background.js","../node_modules/@tsparticles/engine/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js","../node_modules/@tsparticles/engine/browser/Options/Classes/BackgroundMask/BackgroundMask.js","../node_modules/@tsparticles/engine/browser/Options/Classes/FullScreen/FullScreen.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/ClickEvent.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/DivEvent.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/Parallax.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/HoverEvent.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/ResizeEvent.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/Events.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Modes/Modes.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Interactivity.js","../node_modules/@tsparticles/engine/browser/Options/Classes/ManualParticle.js","../node_modules/@tsparticles/engine/browser/Enums/Modes/ResponsiveMode.js","../node_modules/@tsparticles/engine/browser/Enums/Modes/ThemeMode.js","../node_modules/@tsparticles/engine/browser/Enums/Modes/CollisionMode.js","../node_modules/@tsparticles/engine/browser/Enums/Modes/OutMode.js","../node_modules/@tsparticles/engine/browser/Enums/Modes/LimitMode.js","../node_modules/@tsparticles/engine/browser/Enums/Types/InteractorType.js","../node_modules/@tsparticles/engine/browser/Enums/Types/ParticleOutType.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Responsive.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Theme/ThemeDefault.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Theme/Theme.js","../node_modules/@tsparticles/engine/browser/Options/Classes/AnimationOptions.js","../node_modules/@tsparticles/engine/browser/Options/Classes/ColorAnimation.js","../node_modules/@tsparticles/engine/browser/Options/Classes/HslAnimation.js","../node_modules/@tsparticles/engine/browser/Options/Classes/AnimatableColor.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Collisions/CollisionsAbsorb.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Collisions/CollisionsOverlap.js","../node_modules/@tsparticles/engine/browser/Options/Classes/ValueWithRandom.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Bounce/ParticlesBounceFactor.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Bounce/ParticlesBounce.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Collisions/Collisions.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Effect/Effect.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveAngle.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveAttract.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveCenter.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveGravity.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/Path/MovePath.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveTrailFill.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveTrail.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/OutModes.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/Spin.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/Move.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Opacity/Opacity.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Number/ParticlesDensity.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Number/ParticlesNumber.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Shadow.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Shape/Shape.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Size/SizeAnimation.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Size/Size.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Stroke.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/ZIndex/ZIndex.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Particles/ParticlesOptions.js","../node_modules/@tsparticles/engine/browser/Utils/OptionsUtils.js","../node_modules/@tsparticles/engine/browser/Options/Classes/Options.js","../node_modules/@tsparticles/engine/browser/Core/Utils/InteractionManager.js","../node_modules/@tsparticles/engine/browser/Core/Particle.js","../node_modules/@tsparticles/engine/browser/Core/Utils/Point.js","../node_modules/@tsparticles/engine/browser/Types/RangeType.js","../node_modules/@tsparticles/engine/browser/Core/Utils/Ranges.js","../node_modules/@tsparticles/engine/browser/Core/Utils/QuadTree.js","../node_modules/@tsparticles/engine/browser/Core/Particles.js","../node_modules/@tsparticles/engine/browser/Core/Retina.js","../node_modules/@tsparticles/engine/browser/Core/Container.js","../node_modules/@tsparticles/engine/browser/Utils/EventDispatcher.js","../node_modules/@tsparticles/engine/browser/Core/Engine.js","../node_modules/@tsparticles/engine/browser/Utils/HslColorManager.js","../node_modules/@tsparticles/engine/browser/Utils/RgbColorManager.js","../node_modules/@tsparticles/engine/browser/Enums/Directions/RotateDirection.js","../node_modules/@tsparticles/engine/browser/Enums/Types/GradientType.js","../node_modules/@tsparticles/engine/browser/Enums/Types/EasingType.js","../node_modules/@tsparticles/engine/browser/Core/Utils/ExternalInteractorBase.js","../node_modules/@tsparticles/engine/browser/Core/Utils/ParticlesInteractorBase.js","../node_modules/@tsparticles/engine/browser/index.js","../node_modules/@tsparticles/engine/browser/init.js","../node_modules/@tsparticles/react/dist/Particles.js","../node_modules/@tsparticles/react/dist/index.js","../node_modules/@tsparticles/move-base/browser/Utils.js","../node_modules/@tsparticles/move-base/browser/BaseMover.js","../node_modules/@tsparticles/shape-circle/browser/Utils.js","../node_modules/@tsparticles/shape-circle/browser/CircleDrawer.js","../node_modules/@tsparticles/updater-color/browser/ColorUpdater.js","../node_modules/@tsparticles/updater-opacity/browser/OpacityUpdater.js","../node_modules/@tsparticles/updater-out-modes/browser/BounceOutMode.js","../node_modules/@tsparticles/updater-out-modes/browser/Utils.js","../node_modules/@tsparticles/updater-out-modes/browser/DestroyOutMode.js","../node_modules/@tsparticles/updater-out-modes/browser/NoneOutMode.js","../node_modules/@tsparticles/updater-out-modes/browser/OutOutMode.js","../node_modules/@tsparticles/updater-out-modes/browser/OutOfCanvasUpdater.js","../node_modules/@tsparticles/updater-size/browser/SizeUpdater.js","../node_modules/@tsparticles/basic/browser/index.js","../node_modules/@tsparticles/move-base/browser/index.js","../node_modules/@tsparticles/shape-circle/browser/index.js","../node_modules/@tsparticles/updater-color/browser/index.js","../node_modules/@tsparticles/updater-opacity/browser/index.js","../node_modules/@tsparticles/updater-out-modes/browser/index.js","../node_modules/@tsparticles/updater-size/browser/index.js","../node_modules/@tsparticles/shape-emoji/browser/EmojiDrawer.js","../node_modules/@tsparticles/shape-emoji/browser/Utils.js","../node_modules/@tsparticles/interaction-external-attract/browser/Utils.js","../node_modules/@tsparticles/interaction-external-attract/browser/Options/Classes/Attract.js","../node_modules/@tsparticles/interaction-external-attract/browser/Attractor.js","../node_modules/@tsparticles/interaction-external-bounce/browser/Utils.js","../node_modules/@tsparticles/interaction-external-bounce/browser/Options/Classes/Bounce.js","../node_modules/@tsparticles/interaction-external-bounce/browser/Bouncer.js","../node_modules/@tsparticles/interaction-external-bubble/browser/Options/Classes/BubbleBase.js","../node_modules/@tsparticles/interaction-external-bubble/browser/Options/Classes/BubbleDiv.js","../node_modules/@tsparticles/interaction-external-bubble/browser/Options/Classes/Bubble.js","../node_modules/@tsparticles/interaction-external-bubble/browser/Enums.js","../node_modules/@tsparticles/interaction-external-bubble/browser/Utils.js","../node_modules/@tsparticles/interaction-external-bubble/browser/Bubbler.js","../node_modules/@tsparticles/interaction-external-connect/browser/Options/Classes/ConnectLinks.js","../node_modules/@tsparticles/interaction-external-connect/browser/Options/Classes/Connect.js","../node_modules/@tsparticles/interaction-external-connect/browser/Utils.js","../node_modules/@tsparticles/interaction-external-connect/browser/Connector.js","../node_modules/@tsparticles/interaction-external-grab/browser/Options/Classes/GrabLinks.js","../node_modules/@tsparticles/interaction-external-grab/browser/Options/Classes/Grab.js","../node_modules/@tsparticles/interaction-external-grab/browser/Utils.js","../node_modules/@tsparticles/interaction-external-grab/browser/Grabber.js","../node_modules/@tsparticles/interaction-external-pause/browser/Pauser.js","../node_modules/@tsparticles/interaction-external-push/browser/Options/Classes/Push.js","../node_modules/@tsparticles/interaction-external-push/browser/Pusher.js","../node_modules/@tsparticles/interaction-external-remove/browser/Options/Classes/Remove.js","../node_modules/@tsparticles/interaction-external-remove/browser/Remover.js","../node_modules/@tsparticles/interaction-external-repulse/browser/Options/Classes/RepulseBase.js","../node_modules/@tsparticles/interaction-external-repulse/browser/Options/Classes/RepulseDiv.js","../node_modules/@tsparticles/interaction-external-repulse/browser/Options/Classes/Repulse.js","../node_modules/@tsparticles/interaction-external-repulse/browser/Repulser.js","../node_modules/@tsparticles/interaction-external-slow/browser/Options/Classes/Slow.js","../node_modules/@tsparticles/interaction-external-slow/browser/Slower.js","../node_modules/@tsparticles/shape-image/browser/Utils.js","../node_modules/@tsparticles/shape-image/browser/GifUtils/Constants.js","../node_modules/@tsparticles/shape-image/browser/GifUtils/ByteStream.js","../node_modules/@tsparticles/shape-image/browser/GifUtils/Enums/DisposalMethod.js","../node_modules/@tsparticles/shape-image/browser/GifUtils/Types/GIFDataHeaders.js","../node_modules/@tsparticles/shape-image/browser/GifUtils/Utils.js","../node_modules/@tsparticles/shape-image/browser/ImageDrawer.js","../node_modules/@tsparticles/shape-image/browser/Options/Classes/Preload.js","../node_modules/@tsparticles/shape-image/browser/ImagePreloader.js","../node_modules/@tsparticles/shape-image/browser/index.js","../node_modules/@tsparticles/updater-life/browser/Options/Classes/LifeDelay.js","../node_modules/@tsparticles/updater-life/browser/Options/Classes/LifeDuration.js","../node_modules/@tsparticles/updater-life/browser/Options/Classes/Life.js","../node_modules/@tsparticles/updater-life/browser/LifeUpdater.js","../node_modules/@tsparticles/updater-life/browser/Utils.js","../node_modules/@tsparticles/shape-line/browser/LineDrawer.js","../node_modules/@tsparticles/shape-line/browser/Utils.js","../node_modules/@tsparticles/move-parallax/browser/ParallaxMover.js","../node_modules/@tsparticles/interaction-particles-attract/browser/Attractor.js","../node_modules/@tsparticles/interaction-particles-collisions/browser/Absorb.js","../node_modules/@tsparticles/interaction-particles-collisions/browser/Bounce.js","../node_modules/@tsparticles/interaction-particles-collisions/browser/ResolveCollision.js","../node_modules/@tsparticles/interaction-particles-collisions/browser/Destroy.js","../node_modules/@tsparticles/interaction-particles-collisions/browser/Collider.js","../node_modules/@tsparticles/interaction-particles-links/browser/CircleWarp.js","../node_modules/@tsparticles/interaction-particles-links/browser/Options/Classes/LinksShadow.js","../node_modules/@tsparticles/interaction-particles-links/browser/Options/Classes/LinksTriangle.js","../node_modules/@tsparticles/interaction-particles-links/browser/Options/Classes/Links.js","../node_modules/@tsparticles/interaction-particles-links/browser/Linker.js","../node_modules/@tsparticles/interaction-particles-links/browser/Utils.js","../node_modules/@tsparticles/interaction-particles-links/browser/LinkInstance.js","../node_modules/@tsparticles/interaction-particles-links/browser/LinksPlugin.js","../node_modules/@tsparticles/interaction-particles-links/browser/index.js","../node_modules/@tsparticles/interaction-particles-links/browser/interaction.js","../node_modules/@tsparticles/interaction-particles-links/browser/plugin.js","../node_modules/@tsparticles/shape-polygon/browser/Utils.js","../node_modules/@tsparticles/shape-polygon/browser/PolygonDrawerBase.js","../node_modules/@tsparticles/shape-polygon/browser/PolygonDrawer.js","../node_modules/@tsparticles/shape-polygon/browser/TriangleDrawer.js","../node_modules/@tsparticles/shape-polygon/browser/index.js","../node_modules/@tsparticles/updater-rotate/browser/Options/Classes/RotateAnimation.js","../node_modules/@tsparticles/updater-rotate/browser/Options/Classes/Rotate.js","../node_modules/@tsparticles/updater-rotate/browser/RotateUpdater.js","../node_modules/@tsparticles/shape-square/browser/Utils.js","../node_modules/@tsparticles/shape-square/browser/SquareDrawer.js","../node_modules/@tsparticles/shape-star/browser/Utils.js","../node_modules/@tsparticles/shape-star/browser/StarDrawer.js","../node_modules/@tsparticles/updater-stroke-color/browser/StrokeColorUpdater.js","../node_modules/@tsparticles/slim/browser/index.js","../node_modules/@tsparticles/move-parallax/browser/index.js","../node_modules/@tsparticles/interaction-external-attract/browser/index.js","../node_modules/@tsparticles/interaction-external-bounce/browser/index.js","../node_modules/@tsparticles/interaction-external-bubble/browser/index.js","../node_modules/@tsparticles/interaction-external-connect/browser/index.js","../node_modules/@tsparticles/interaction-external-grab/browser/index.js","../node_modules/@tsparticles/interaction-external-pause/browser/index.js","../node_modules/@tsparticles/interaction-external-push/browser/index.js","../node_modules/@tsparticles/interaction-external-remove/browser/index.js","../node_modules/@tsparticles/interaction-external-repulse/browser/index.js","../node_modules/@tsparticles/interaction-external-slow/browser/index.js","../node_modules/@tsparticles/interaction-particles-attract/browser/index.js","../node_modules/@tsparticles/interaction-particles-collisions/browser/index.js","../node_modules/@tsparticles/plugin-easing-quad/browser/index.js","../node_modules/@tsparticles/shape-emoji/browser/index.js","../node_modules/@tsparticles/shape-line/browser/index.js","../node_modules/@tsparticles/shape-square/browser/index.js","../node_modules/@tsparticles/shape-star/browser/index.js","../node_modules/@tsparticles/updater-life/browser/index.js","../node_modules/@tsparticles/updater-rotate/browser/index.js","../node_modules/@tsparticles/updater-stroke-color/browser/index.js","site/Components/particles.jsx","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","PushMessage/pushmessage.jsx","site/Components/menu.jsx","site/Components/inicio.jsx","site/Components/beneficios.jsx","site/Components/testemunho.jsx","site/Components/abrirempresagratis.jsx","site/Components/parceiros.jsx","site/Components/precos.jsx","site/Components/contato.jsx","site/site.jsx","particles-diversas/particles-padrao-caindo.jsx","contacte-nos/siga-nos.jsx","descadastrese/descadastrese.jsx","descadastrese/descadastramento.jsx","parceiros/certificacaodigital.jsx","parceiros/Fisconet/navfisconet.jsx","parceiros/Fisconet/carrossel.fisconet.jsx","parceiros/Fisconet/produtosfisconet.jsx","parceiros/Fisconet/contatofisconet.jsx","parceiros/Fisconet/fisconet.jsx","link-avisos/aviso-feriado-procramacao.jsx","link-marketing/getao-de-estoque-emissao-nfe/gestao-de-estoque-emissao-nfe.jsx","link-baixar-arquivos/baixar-planilha-simples-naconal.jsx","link-baixar-arquivos/baixar-planilha-planilhas-auxiliares.jsx","link-baixar-arquivos/baixar-declaracao-sn-para-nao-sofrer-retencoes.jsx","link-baixar-arquivos/baixar-relatorio-faturamento-eduardo-matsumoto.jsx","notfound/notfound.jsx","app.jsx","index.js"],"sourcesContent":["import lottie from \"lottie-web\";\nimport React, { useEffect, useRef, useState, } from \"react\";\nconst useLottie = (props, style) => {\n const { animationData, loop, autoplay, initialSegment, onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy, \n // Specified here to take them out from the 'rest'\n lottieRef, renderer, name, assetsPath, rendererSettings, \n // TODO: find a better way to extract the html props to avoid specifying\n // all the props that we want to exclude (as you can see above)\n ...rest } = props;\n const [animationLoaded, setAnimationLoaded] = useState(false);\n const animationInstanceRef = useRef();\n const animationContainer = useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n const play = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n const stop = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n const pause = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n const setSpeed = (speed) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n const goToAndPlay = (value, isFrame) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n const goToAndStop = (value, isFrame) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n const setDirection = (direction) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n const playSegments = (segments, forceFlag) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n const setSubframe = (useSubFrames) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n const getDuration = (inFrames) => { var _a; return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames); };\n /**\n * Destroy animation\n */\n const destroy = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n const loadAnimation = (forcedConfigs = {}) => {\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n const config = {\n ...props,\n ...forcedConfigs,\n container: animationContainer.current,\n };\n // Save the animation instance\n animationInstanceRef.current = lottie.loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n useEffect(() => {\n const onUnmount = loadAnimation();\n // Clean up on unmount\n return () => onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n useEffect(() => {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n useEffect(() => {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] ||\n animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n useEffect(() => {\n const partialListeners = [\n { name: \"complete\", handler: onComplete },\n { name: \"loopComplete\", handler: onLoopComplete },\n { name: \"enterFrame\", handler: onEnterFrame },\n { name: \"segmentStart\", handler: onSegmentStart },\n { name: \"config_ready\", handler: onConfigReady },\n { name: \"data_ready\", handler: onDataReady },\n { name: \"data_failed\", handler: onDataFailed },\n { name: \"loaded_images\", handler: onLoadedImages },\n { name: \"DOMLoaded\", handler: onDOMLoaded },\n { name: \"destroy\", handler: onDestroy },\n ];\n const listeners = partialListeners.filter((listener) => listener.handler != null);\n if (!listeners.length) {\n return;\n }\n const deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n (listener) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return () => {\n deregisterList.forEach((deregister) => deregister());\n };\n }, [\n onComplete,\n onLoopComplete,\n onEnterFrame,\n onSegmentStart,\n onConfigReady,\n onDataReady,\n onDataFailed,\n onLoadedImages,\n onDOMLoaded,\n onDestroy,\n ]);\n /**\n * Build the animation view\n */\n const View = React.createElement(\"div\", { style: style, ref: animationContainer, ...rest });\n return {\n View,\n play,\n stop,\n pause,\n setSpeed,\n goToAndStop,\n goToAndPlay,\n setDirection,\n playSegments,\n setSubframe,\n getDuration,\n destroy,\n animationContainerRef: animationContainer,\n animationLoaded,\n animationItem: animationInstanceRef.current,\n };\n};\nexport default useLottie;\n","import { useEffect } from \"react\";\n// helpers\nexport function getContainerVisibility(container) {\n const { top, height } = container.getBoundingClientRect();\n const current = window.innerHeight - top;\n const max = window.innerHeight + height;\n return current / max;\n}\nexport function getContainerCursorPosition(container, cursorX, cursorY) {\n const { top, left, width, height } = container.getBoundingClientRect();\n const x = (cursorX - left) / width;\n const y = (cursorY - top) / height;\n return { x, y };\n}\nexport const useInitInteractivity = ({ wrapperRef, animationItem, mode, actions, }) => {\n useEffect(() => {\n const wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n const scrollModeHandler = () => {\n let assignedSegment = null;\n const scrollHandler = () => {\n const currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n const action = actions.find(({ visibility }) => visibility &&\n currentPercent >= visibility[0] &&\n currentPercent <= visibility[1]);\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" &&\n action.visibility &&\n action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n const frameToGo = action.frames[0] +\n Math.ceil(((currentPercent - action.visibility[0]) /\n (action.visibility[1] - action.visibility[0])) *\n action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return () => {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n const cursorModeHandler = () => {\n const handleCursor = (_x, _y) => {\n let x = _x;\n let y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n const pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n const action = actions.find(({ position }) => {\n if (position &&\n Array.isArray(position.x) &&\n Array.isArray(position.y)) {\n return (x >= position.x[0] &&\n x <= position.x[1] &&\n y >= position.y[0] &&\n y <= position.y[1]);\n }\n if (position &&\n !Number.isNaN(position.x) &&\n !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" &&\n action.position &&\n Array.isArray(action.position.x) &&\n Array.isArray(action.position.y) &&\n action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n const xPercent = (x - action.position.x[0]) /\n (action.position.x[1] - action.position.x[0]);\n const yPercent = (y - action.position.y[0]) /\n (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil(((xPercent + yPercent) / 2) *\n (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n const mouseMoveHandler = (ev) => {\n handleCursor(ev.clientX, ev.clientY);\n };\n const mouseOutHandler = () => {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return () => {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n};\nconst useLottieInteractivity = ({ actions, mode, lottieObj, }) => {\n const { animationItem, View, animationContainerRef } = lottieObj;\n useInitInteractivity({\n actions,\n animationItem,\n mode,\n wrapperRef: animationContainerRef,\n });\n return View;\n};\nexport default useLottieInteractivity;\n","import { useEffect } from \"react\";\nimport useLottie from \"../hooks/useLottie\";\nimport useLottieInteractivity from \"../hooks/useLottieInteractivity\";\nconst Lottie = (props) => {\n var _a, _b, _c;\n const { style, interactivity, ...lottieProps } = props;\n /**\n * Initialize the 'useLottie' hook\n */\n const { View, play, stop, pause, setSpeed, goToAndStop, goToAndPlay, setDirection, playSegments, setSubframe, getDuration, destroy, animationContainerRef, animationLoaded, animationItem, } = useLottie(lottieProps, style);\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n useEffect(() => {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play,\n stop,\n pause,\n setSpeed,\n goToAndPlay,\n goToAndStop,\n setDirection,\n playSegments,\n setSubframe,\n getDuration,\n destroy,\n animationContainerRef,\n animationLoaded,\n animationItem,\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View,\n play,\n stop,\n pause,\n setSpeed,\n goToAndStop,\n goToAndPlay,\n setDirection,\n playSegments,\n setSubframe,\n getDuration,\n destroy,\n animationContainerRef,\n animationLoaded,\n animationItem,\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\",\n });\n};\nexport default Lottie;\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import React, {useState} from 'react';\n\nconst AuthContext = React.createContext({});\n\nfunction AuthProvider(props){\n let isLogado = localStorage.getItem(\"logado\");\n\n const [logado, setLogado] = useState(isLogado === \"S\" ? true : false);\n \n return (\n \n {props.children}\n \n )\n}\n\nexport {AuthContext, AuthProvider};","export const generatedAttribute = \"generated\";\nexport const mouseDownEvent = \"pointerdown\";\nexport const mouseUpEvent = \"pointerup\";\nexport const mouseLeaveEvent = \"pointerleave\";\nexport const mouseOutEvent = \"pointerout\";\nexport const mouseMoveEvent = \"pointermove\";\nexport const touchStartEvent = \"touchstart\";\nexport const touchEndEvent = \"touchend\";\nexport const touchMoveEvent = \"touchmove\";\nexport const touchCancelEvent = \"touchcancel\";\nexport const resizeEvent = \"resize\";\nexport const visibilityChangeEvent = \"visibilitychange\";\nexport const errorPrefix = \"tsParticles - Error\";\nexport const percentDenominator = 100;\nexport const halfRandom = 0.5;\nexport const millisecondsToSeconds = 1000;\n","export var MoveDirection;\n(function (MoveDirection) {\n MoveDirection[\"bottom\"] = \"bottom\";\n MoveDirection[\"bottomLeft\"] = \"bottom-left\";\n MoveDirection[\"bottomRight\"] = \"bottom-right\";\n MoveDirection[\"left\"] = \"left\";\n MoveDirection[\"none\"] = \"none\";\n MoveDirection[\"right\"] = \"right\";\n MoveDirection[\"top\"] = \"top\";\n MoveDirection[\"topLeft\"] = \"top-left\";\n MoveDirection[\"topRight\"] = \"top-right\";\n MoveDirection[\"outside\"] = \"outside\";\n MoveDirection[\"inside\"] = \"inside\";\n})(MoveDirection || (MoveDirection = {}));\n","export function isBoolean(arg) {\n return typeof arg === \"boolean\";\n}\nexport function isString(arg) {\n return typeof arg === \"string\";\n}\nexport function isNumber(arg) {\n return typeof arg === \"number\";\n}\nexport function isFunction(arg) {\n return typeof arg === \"function\";\n}\nexport function isObject(arg) {\n return typeof arg === \"object\" && arg !== null;\n}\nexport function isArray(arg) {\n return Array.isArray(arg);\n}\n","import { errorPrefix } from \"./Constants.js\";\nimport { isNumber } from \"../../Utils/TypeUtils.js\";\nconst origin = {\n x: 0,\n y: 0,\n z: 0,\n}, squareExp = 2, inverseFactorNumerator = 1.0;\nexport class Vector3d {\n constructor(xOrCoords, y, z) {\n this._updateFromAngle = (angle, length) => {\n this.x = Math.cos(angle) * length;\n this.y = Math.sin(angle) * length;\n };\n if (!isNumber(xOrCoords) && xOrCoords) {\n this.x = xOrCoords.x;\n this.y = xOrCoords.y;\n const coords3d = xOrCoords;\n this.z = coords3d.z ? coords3d.z : origin.z;\n }\n else if (xOrCoords !== undefined && y !== undefined) {\n this.x = xOrCoords;\n this.y = y;\n this.z = z ?? origin.z;\n }\n else {\n throw new Error(`${errorPrefix} Vector3d not initialized correctly`);\n }\n }\n static get origin() {\n return Vector3d.create(origin.x, origin.y, origin.z);\n }\n get angle() {\n return Math.atan2(this.y, this.x);\n }\n set angle(angle) {\n this._updateFromAngle(angle, this.length);\n }\n get length() {\n return Math.sqrt(this.getLengthSq());\n }\n set length(length) {\n this._updateFromAngle(this.angle, length);\n }\n static clone(source) {\n return Vector3d.create(source.x, source.y, source.z);\n }\n static create(x, y, z) {\n return new Vector3d(x, y, z);\n }\n add(v) {\n return Vector3d.create(this.x + v.x, this.y + v.y, this.z + v.z);\n }\n addTo(v) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n }\n copy() {\n return Vector3d.clone(this);\n }\n distanceTo(v) {\n return this.sub(v).length;\n }\n distanceToSq(v) {\n return this.sub(v).getLengthSq();\n }\n div(n) {\n return Vector3d.create(this.x / n, this.y / n, this.z / n);\n }\n divTo(n) {\n this.x /= n;\n this.y /= n;\n this.z /= n;\n }\n getLengthSq() {\n return this.x ** squareExp + this.y ** squareExp;\n }\n mult(n) {\n return Vector3d.create(this.x * n, this.y * n, this.z * n);\n }\n multTo(n) {\n this.x *= n;\n this.y *= n;\n this.z *= n;\n }\n normalize() {\n const length = this.length, noLength = 0;\n if (length != noLength) {\n this.multTo(inverseFactorNumerator / length);\n }\n }\n rotate(angle) {\n return Vector3d.create(this.x * Math.cos(angle) - this.y * Math.sin(angle), this.x * Math.sin(angle) + this.y * Math.cos(angle), origin.z);\n }\n setTo(c) {\n this.x = c.x;\n this.y = c.y;\n const v3d = c;\n this.z = v3d.z ? v3d.z : origin.z;\n }\n sub(v) {\n return Vector3d.create(this.x - v.x, this.y - v.y, this.z - v.z);\n }\n subFrom(v) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n }\n}\nexport class Vector extends Vector3d {\n constructor(xOrCoords, y) {\n super(xOrCoords, y, origin.z);\n }\n static get origin() {\n return Vector.create(origin.x, origin.y);\n }\n static clone(source) {\n return Vector.create(source.x, source.y);\n }\n static create(x, y) {\n return new Vector(x, y);\n }\n}\n","import { MoveDirection } from \"../Enums/Directions/MoveDirection.js\";\nimport { Vector } from \"../Core/Utils/Vectors.js\";\nimport { isNumber } from \"./TypeUtils.js\";\nimport { percentDenominator } from \"../Core/Utils/Constants.js\";\nlet _random = Math.random;\nconst _animationLoop = {\n nextFrame: (cb) => requestAnimationFrame(cb),\n cancel: (idx) => cancelAnimationFrame(idx),\n}, easingFunctions = new Map(), double = 2, doublePI = Math.PI * double;\nexport function addEasing(name, easing) {\n if (easingFunctions.get(name)) {\n return;\n }\n easingFunctions.set(name, easing);\n}\nexport function getEasing(name) {\n return easingFunctions.get(name) ?? ((value) => value);\n}\nexport function setRandom(rnd = Math.random) {\n _random = rnd;\n}\nexport function getRandom() {\n const min = 0, max = 1;\n return clamp(_random(), min, max - Number.EPSILON);\n}\nexport function setAnimationFunctions(nextFrame, cancel) {\n _animationLoop.nextFrame = (callback) => nextFrame(callback);\n _animationLoop.cancel = (handle) => cancel(handle);\n}\nexport function animate(fn) {\n return _animationLoop.nextFrame(fn);\n}\nexport function cancelAnimation(handle) {\n _animationLoop.cancel(handle);\n}\nexport function clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\nexport function mix(comp1, comp2, weight1, weight2) {\n return Math.floor((comp1 * weight1 + comp2 * weight2) / (weight1 + weight2));\n}\nexport function randomInRange(r) {\n const max = getRangeMax(r), minOffset = 0;\n let min = getRangeMin(r);\n if (max === min) {\n min = minOffset;\n }\n return getRandom() * (max - min) + min;\n}\nexport function getRangeValue(value) {\n return isNumber(value) ? value : randomInRange(value);\n}\nexport function getRangeMin(value) {\n return isNumber(value) ? value : value.min;\n}\nexport function getRangeMax(value) {\n return isNumber(value) ? value : value.max;\n}\nexport function setRangeValue(source, value) {\n if (source === value || (value === undefined && isNumber(source))) {\n return source;\n }\n const min = getRangeMin(source), max = getRangeMax(source);\n return value !== undefined\n ? {\n min: Math.min(min, value),\n max: Math.max(max, value),\n }\n : setRangeValue(min, max);\n}\nexport function getDistances(pointA, pointB) {\n const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y, squareExp = 2;\n return { dx: dx, dy: dy, distance: Math.sqrt(dx ** squareExp + dy ** squareExp) };\n}\nexport function getDistance(pointA, pointB) {\n return getDistances(pointA, pointB).distance;\n}\nexport function degToRad(degrees) {\n const PIDeg = 180;\n return (degrees * Math.PI) / PIDeg;\n}\nexport function getParticleDirectionAngle(direction, position, center) {\n if (isNumber(direction)) {\n return degToRad(direction);\n }\n const empty = 0, half = 0.5, quarter = 0.25, threeQuarter = half + quarter;\n switch (direction) {\n case MoveDirection.top:\n return -Math.PI * half;\n case MoveDirection.topRight:\n return -Math.PI * quarter;\n case MoveDirection.right:\n return empty;\n case MoveDirection.bottomRight:\n return Math.PI * quarter;\n case MoveDirection.bottom:\n return Math.PI * half;\n case MoveDirection.bottomLeft:\n return Math.PI * threeQuarter;\n case MoveDirection.left:\n return Math.PI;\n case MoveDirection.topLeft:\n return -Math.PI * threeQuarter;\n case MoveDirection.inside:\n return Math.atan2(center.y - position.y, center.x - position.x);\n case MoveDirection.outside:\n return Math.atan2(position.y - center.y, position.x - center.x);\n default:\n return getRandom() * doublePI;\n }\n}\nexport function getParticleBaseVelocity(direction) {\n const baseVelocity = Vector.origin;\n baseVelocity.length = 1;\n baseVelocity.angle = direction;\n return baseVelocity;\n}\nexport function collisionVelocity(v1, v2, m1, m2) {\n const double = 2;\n return Vector.create((v1.x * (m1 - m2)) / (m1 + m2) + (v2.x * double * m2) / (m1 + m2), v1.y);\n}\nexport function calcPositionFromSize(data) {\n return data.position?.x !== undefined && data.position.y !== undefined\n ? {\n x: (data.position.x * data.size.width) / percentDenominator,\n y: (data.position.y * data.size.height) / percentDenominator,\n }\n : undefined;\n}\nexport function calcPositionOrRandomFromSize(data) {\n return {\n x: ((data.position?.x ?? getRandom() * percentDenominator) * data.size.width) / percentDenominator,\n y: ((data.position?.y ?? getRandom() * percentDenominator) * data.size.height) / percentDenominator,\n };\n}\nexport function calcPositionOrRandomFromSizeRanged(data) {\n const position = {\n x: data.position?.x !== undefined ? getRangeValue(data.position.x) : undefined,\n y: data.position?.y !== undefined ? getRangeValue(data.position.y) : undefined,\n };\n return calcPositionOrRandomFromSize({ size: data.size, position });\n}\nexport function calcExactPositionOrRandomFromSize(data) {\n return {\n x: data.position?.x ?? getRandom() * data.size.width,\n y: data.position?.y ?? getRandom() * data.size.height,\n };\n}\nexport function calcExactPositionOrRandomFromSizeRanged(data) {\n const position = {\n x: data.position?.x !== undefined ? getRangeValue(data.position.x) : undefined,\n y: data.position?.y !== undefined ? getRangeValue(data.position.y) : undefined,\n };\n return calcExactPositionOrRandomFromSize({ size: data.size, position });\n}\nexport function parseAlpha(input) {\n const defaultAlpha = 1;\n if (!input) {\n return defaultAlpha;\n }\n return input.endsWith(\"%\") ? parseFloat(input) / percentDenominator : parseFloat(input);\n}\n","export var AnimationMode;\n(function (AnimationMode) {\n AnimationMode[\"auto\"] = \"auto\";\n AnimationMode[\"increase\"] = \"increase\";\n AnimationMode[\"decrease\"] = \"decrease\";\n AnimationMode[\"random\"] = \"random\";\n})(AnimationMode || (AnimationMode = {}));\n","export var AnimationStatus;\n(function (AnimationStatus) {\n AnimationStatus[\"increasing\"] = \"increasing\";\n AnimationStatus[\"decreasing\"] = \"decreasing\";\n})(AnimationStatus || (AnimationStatus = {}));\n","export var DestroyType;\n(function (DestroyType) {\n DestroyType[\"none\"] = \"none\";\n DestroyType[\"max\"] = \"max\";\n DestroyType[\"min\"] = \"min\";\n})(DestroyType || (DestroyType = {}));\n","export var OutModeDirection;\n(function (OutModeDirection) {\n OutModeDirection[\"bottom\"] = \"bottom\";\n OutModeDirection[\"left\"] = \"left\";\n OutModeDirection[\"right\"] = \"right\";\n OutModeDirection[\"top\"] = \"top\";\n})(OutModeDirection || (OutModeDirection = {}));\n","export var PixelMode;\n(function (PixelMode) {\n PixelMode[\"precise\"] = \"precise\";\n PixelMode[\"percent\"] = \"percent\";\n})(PixelMode || (PixelMode = {}));\n","export var StartValueType;\n(function (StartValueType) {\n StartValueType[\"max\"] = \"max\";\n StartValueType[\"min\"] = \"min\";\n StartValueType[\"random\"] = \"random\";\n})(StartValueType || (StartValueType = {}));\n","import { clamp, collisionVelocity, getDistances, getRandom, getRangeMax, getRangeMin, getRangeValue, randomInRange, } from \"./NumberUtils.js\";\nimport { halfRandom, millisecondsToSeconds, percentDenominator } from \"../Core/Utils/Constants.js\";\nimport { isArray, isObject } from \"./TypeUtils.js\";\nimport { AnimationMode } from \"../Enums/Modes/AnimationMode.js\";\nimport { AnimationStatus } from \"../Enums/AnimationStatus.js\";\nimport { DestroyType } from \"../Enums/Types/DestroyType.js\";\nimport { OutModeDirection } from \"../Enums/Directions/OutModeDirection.js\";\nimport { PixelMode } from \"../Enums/Modes/PixelMode.js\";\nimport { StartValueType } from \"../Enums/Types/StartValueType.js\";\nimport { Vector } from \"../Core/Utils/Vectors.js\";\nconst _logger = {\n debug: console.debug,\n error: console.error,\n info: console.info,\n log: console.log,\n verbose: console.log,\n warning: console.warn,\n};\nexport function setLogger(logger) {\n _logger.debug = logger.debug || _logger.debug;\n _logger.error = logger.error || _logger.error;\n _logger.info = logger.info || _logger.info;\n _logger.log = logger.log || _logger.log;\n _logger.verbose = logger.verbose || _logger.verbose;\n _logger.warning = logger.warning || _logger.warning;\n}\nexport function getLogger() {\n return _logger;\n}\nfunction rectSideBounce(data) {\n const res = { bounced: false }, { pSide, pOtherSide, rectSide, rectOtherSide, velocity, factor } = data, half = 0.5, minVelocity = 0;\n if (pOtherSide.min < rectOtherSide.min ||\n pOtherSide.min > rectOtherSide.max ||\n pOtherSide.max < rectOtherSide.min ||\n pOtherSide.max > rectOtherSide.max) {\n return res;\n }\n if ((pSide.max >= rectSide.min && pSide.max <= (rectSide.max + rectSide.min) * half && velocity > minVelocity) ||\n (pSide.min <= rectSide.max && pSide.min > (rectSide.max + rectSide.min) * half && velocity < minVelocity)) {\n res.velocity = velocity * -factor;\n res.bounced = true;\n }\n return res;\n}\nfunction checkSelector(element, selectors) {\n const res = executeOnSingleOrMultiple(selectors, selector => {\n return element.matches(selector);\n });\n return isArray(res) ? res.some(t => t) : res;\n}\nexport function isSsr() {\n return typeof window === \"undefined\" || !window || typeof window.document === \"undefined\" || !window.document;\n}\nexport function hasMatchMedia() {\n return !isSsr() && typeof matchMedia !== \"undefined\";\n}\nexport function safeMatchMedia(query) {\n if (!hasMatchMedia()) {\n return;\n }\n return matchMedia(query);\n}\nexport function safeIntersectionObserver(callback) {\n if (isSsr() || typeof IntersectionObserver === \"undefined\") {\n return;\n }\n return new IntersectionObserver(callback);\n}\nexport function safeMutationObserver(callback) {\n if (isSsr() || typeof MutationObserver === \"undefined\") {\n return;\n }\n return new MutationObserver(callback);\n}\nexport function isInArray(value, array) {\n const invalidIndex = -1;\n return value === array || (isArray(array) && array.indexOf(value) > invalidIndex);\n}\nexport async function loadFont(font, weight) {\n try {\n await document.fonts.load(`${weight ?? \"400\"} 36px '${font ?? \"Verdana\"}'`);\n }\n catch {\n }\n}\nexport function arrayRandomIndex(array) {\n return Math.floor(getRandom() * array.length);\n}\nexport function itemFromArray(array, index, useIndex = true) {\n return array[index !== undefined && useIndex ? index % array.length : arrayRandomIndex(array)];\n}\nexport function isPointInside(point, size, offset, radius, direction) {\n const minRadius = 0;\n return areBoundsInside(calculateBounds(point, radius ?? minRadius), size, offset, direction);\n}\nexport function areBoundsInside(bounds, size, offset, direction) {\n let inside = true;\n if (!direction || direction === OutModeDirection.bottom) {\n inside = bounds.top < size.height + offset.x;\n }\n if (inside && (!direction || direction === OutModeDirection.left)) {\n inside = bounds.right > offset.x;\n }\n if (inside && (!direction || direction === OutModeDirection.right)) {\n inside = bounds.left < size.width + offset.y;\n }\n if (inside && (!direction || direction === OutModeDirection.top)) {\n inside = bounds.bottom > offset.y;\n }\n return inside;\n}\nexport function calculateBounds(point, radius) {\n return {\n bottom: point.y + radius,\n left: point.x - radius,\n right: point.x + radius,\n top: point.y - radius,\n };\n}\nexport function deepExtend(destination, ...sources) {\n for (const source of sources) {\n if (source === undefined || source === null) {\n continue;\n }\n if (!isObject(source)) {\n destination = source;\n continue;\n }\n const sourceIsArray = Array.isArray(source);\n if (sourceIsArray && (isObject(destination) || !destination || !Array.isArray(destination))) {\n destination = [];\n }\n else if (!sourceIsArray && (isObject(destination) || !destination || Array.isArray(destination))) {\n destination = {};\n }\n for (const key in source) {\n if (key === \"__proto__\") {\n continue;\n }\n const sourceDict = source, value = sourceDict[key], destDict = destination;\n destDict[key] =\n isObject(value) && Array.isArray(value)\n ? value.map(v => deepExtend(destDict[key], v))\n : deepExtend(destDict[key], value);\n }\n }\n return destination;\n}\nexport function isDivModeEnabled(mode, divs) {\n return !!findItemFromSingleOrMultiple(divs, t => t.enable && isInArray(mode, t.mode));\n}\nexport function divModeExecute(mode, divs, callback) {\n executeOnSingleOrMultiple(divs, div => {\n const divMode = div.mode, divEnabled = div.enable;\n if (divEnabled && isInArray(mode, divMode)) {\n singleDivModeExecute(div, callback);\n }\n });\n}\nexport function singleDivModeExecute(div, callback) {\n const selectors = div.selectors;\n executeOnSingleOrMultiple(selectors, selector => {\n callback(selector, div);\n });\n}\nexport function divMode(divs, element) {\n if (!element || !divs) {\n return;\n }\n return findItemFromSingleOrMultiple(divs, div => {\n return checkSelector(element, div.selectors);\n });\n}\nexport function circleBounceDataFromParticle(p) {\n return {\n position: p.getPosition(),\n radius: p.getRadius(),\n mass: p.getMass(),\n velocity: p.velocity,\n factor: Vector.create(getRangeValue(p.options.bounce.horizontal.value), getRangeValue(p.options.bounce.vertical.value)),\n };\n}\nexport function circleBounce(p1, p2) {\n const { x: xVelocityDiff, y: yVelocityDiff } = p1.velocity.sub(p2.velocity), [pos1, pos2] = [p1.position, p2.position], { dx: xDist, dy: yDist } = getDistances(pos2, pos1), minimumDistance = 0;\n if (xVelocityDiff * xDist + yVelocityDiff * yDist < minimumDistance) {\n return;\n }\n const angle = -Math.atan2(yDist, xDist), m1 = p1.mass, m2 = p2.mass, u1 = p1.velocity.rotate(angle), u2 = p2.velocity.rotate(angle), v1 = collisionVelocity(u1, u2, m1, m2), v2 = collisionVelocity(u2, u1, m1, m2), vFinal1 = v1.rotate(-angle), vFinal2 = v2.rotate(-angle);\n p1.velocity.x = vFinal1.x * p1.factor.x;\n p1.velocity.y = vFinal1.y * p1.factor.y;\n p2.velocity.x = vFinal2.x * p2.factor.x;\n p2.velocity.y = vFinal2.y * p2.factor.y;\n}\nexport function rectBounce(particle, divBounds) {\n const pPos = particle.getPosition(), size = particle.getRadius(), bounds = calculateBounds(pPos, size), bounceOptions = particle.options.bounce, resH = rectSideBounce({\n pSide: {\n min: bounds.left,\n max: bounds.right,\n },\n pOtherSide: {\n min: bounds.top,\n max: bounds.bottom,\n },\n rectSide: {\n min: divBounds.left,\n max: divBounds.right,\n },\n rectOtherSide: {\n min: divBounds.top,\n max: divBounds.bottom,\n },\n velocity: particle.velocity.x,\n factor: getRangeValue(bounceOptions.horizontal.value),\n });\n if (resH.bounced) {\n if (resH.velocity !== undefined) {\n particle.velocity.x = resH.velocity;\n }\n if (resH.position !== undefined) {\n particle.position.x = resH.position;\n }\n }\n const resV = rectSideBounce({\n pSide: {\n min: bounds.top,\n max: bounds.bottom,\n },\n pOtherSide: {\n min: bounds.left,\n max: bounds.right,\n },\n rectSide: {\n min: divBounds.top,\n max: divBounds.bottom,\n },\n rectOtherSide: {\n min: divBounds.left,\n max: divBounds.right,\n },\n velocity: particle.velocity.y,\n factor: getRangeValue(bounceOptions.vertical.value),\n });\n if (resV.bounced) {\n if (resV.velocity !== undefined) {\n particle.velocity.y = resV.velocity;\n }\n if (resV.position !== undefined) {\n particle.position.y = resV.position;\n }\n }\n}\nexport function executeOnSingleOrMultiple(obj, callback) {\n const defaultIndex = 0;\n return isArray(obj) ? obj.map((item, index) => callback(item, index)) : callback(obj, defaultIndex);\n}\nexport function itemFromSingleOrMultiple(obj, index, useIndex) {\n return isArray(obj) ? itemFromArray(obj, index, useIndex) : obj;\n}\nexport function findItemFromSingleOrMultiple(obj, callback) {\n if (isArray(obj)) {\n return obj.find((t, index) => callback(t, index));\n }\n const defaultIndex = 0;\n return callback(obj, defaultIndex) ? obj : undefined;\n}\nexport function initParticleNumericAnimationValue(options, pxRatio) {\n const valueRange = options.value, animationOptions = options.animation, res = {\n delayTime: getRangeValue(animationOptions.delay) * millisecondsToSeconds,\n enable: animationOptions.enable,\n value: getRangeValue(options.value) * pxRatio,\n max: getRangeMax(valueRange) * pxRatio,\n min: getRangeMin(valueRange) * pxRatio,\n loops: 0,\n maxLoops: getRangeValue(animationOptions.count),\n time: 0,\n }, decayOffset = 1;\n if (animationOptions.enable) {\n res.decay = decayOffset - getRangeValue(animationOptions.decay);\n switch (animationOptions.mode) {\n case AnimationMode.increase:\n res.status = AnimationStatus.increasing;\n break;\n case AnimationMode.decrease:\n res.status = AnimationStatus.decreasing;\n break;\n case AnimationMode.random:\n res.status = getRandom() >= halfRandom ? AnimationStatus.increasing : AnimationStatus.decreasing;\n break;\n }\n const autoStatus = animationOptions.mode === AnimationMode.auto;\n switch (animationOptions.startValue) {\n case StartValueType.min:\n res.value = res.min;\n if (autoStatus) {\n res.status = AnimationStatus.increasing;\n }\n break;\n case StartValueType.max:\n res.value = res.max;\n if (autoStatus) {\n res.status = AnimationStatus.decreasing;\n }\n break;\n case StartValueType.random:\n default:\n res.value = randomInRange(res);\n if (autoStatus) {\n res.status = getRandom() >= halfRandom ? AnimationStatus.increasing : AnimationStatus.decreasing;\n }\n break;\n }\n }\n res.initialValue = res.value;\n return res;\n}\nfunction getPositionOrSize(positionOrSize, canvasSize) {\n const isPercent = positionOrSize.mode === PixelMode.percent;\n if (!isPercent) {\n const { mode: _, ...rest } = positionOrSize;\n return rest;\n }\n const isPosition = \"x\" in positionOrSize;\n if (isPosition) {\n return {\n x: (positionOrSize.x / percentDenominator) * canvasSize.width,\n y: (positionOrSize.y / percentDenominator) * canvasSize.height,\n };\n }\n else {\n return {\n width: (positionOrSize.width / percentDenominator) * canvasSize.width,\n height: (positionOrSize.height / percentDenominator) * canvasSize.height,\n };\n }\n}\nexport function getPosition(position, canvasSize) {\n return getPositionOrSize(position, canvasSize);\n}\nexport function getSize(size, canvasSize) {\n return getPositionOrSize(size, canvasSize);\n}\nfunction checkDestroy(particle, destroyType, value, minValue, maxValue) {\n switch (destroyType) {\n case DestroyType.max:\n if (value >= maxValue) {\n particle.destroy();\n }\n break;\n case DestroyType.min:\n if (value <= minValue) {\n particle.destroy();\n }\n break;\n }\n}\nexport function updateAnimation(particle, data, changeDirection, destroyType, delta) {\n const minLoops = 0, minDelay = 0, identity = 1, minVelocity = 0, minDecay = 1;\n if (particle.destroyed ||\n !data ||\n !data.enable ||\n ((data.maxLoops ?? minLoops) > minLoops && (data.loops ?? minLoops) > (data.maxLoops ?? minLoops))) {\n return;\n }\n const velocity = (data.velocity ?? minVelocity) * delta.factor, minValue = data.min, maxValue = data.max, decay = data.decay ?? minDecay;\n if (!data.time) {\n data.time = 0;\n }\n if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {\n data.time += delta.value;\n }\n if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {\n return;\n }\n switch (data.status) {\n case AnimationStatus.increasing:\n if (data.value >= maxValue) {\n if (changeDirection) {\n data.status = AnimationStatus.decreasing;\n }\n else {\n data.value -= maxValue;\n }\n if (!data.loops) {\n data.loops = minLoops;\n }\n data.loops++;\n }\n else {\n data.value += velocity;\n }\n break;\n case AnimationStatus.decreasing:\n if (data.value <= minValue) {\n if (changeDirection) {\n data.status = AnimationStatus.increasing;\n }\n else {\n data.value += maxValue;\n }\n if (!data.loops) {\n data.loops = minLoops;\n }\n data.loops++;\n }\n else {\n data.value -= velocity;\n }\n }\n if (data.velocity && decay !== identity) {\n data.velocity *= decay;\n }\n checkDestroy(particle, destroyType, data.value, minValue, maxValue);\n if (!particle.destroyed) {\n data.value = clamp(data.value, minValue, maxValue);\n }\n}\n","export var AlterType;\n(function (AlterType) {\n AlterType[\"darken\"] = \"darken\";\n AlterType[\"enlighten\"] = \"enlighten\";\n})(AlterType || (AlterType = {}));\n","import { clamp, getRandom, getRangeMax, getRangeMin, getRangeValue, mix, randomInRange, setRangeValue, } from \"./NumberUtils.js\";\nimport { isArray, isString } from \"./TypeUtils.js\";\nimport { millisecondsToSeconds, percentDenominator } from \"../Core/Utils/Constants.js\";\nimport { AnimationStatus } from \"../Enums/AnimationStatus.js\";\nimport { itemFromArray } from \"./Utils.js\";\nvar RgbIndexes;\n(function (RgbIndexes) {\n RgbIndexes[RgbIndexes[\"r\"] = 1] = \"r\";\n RgbIndexes[RgbIndexes[\"g\"] = 2] = \"g\";\n RgbIndexes[RgbIndexes[\"b\"] = 3] = \"b\";\n RgbIndexes[RgbIndexes[\"a\"] = 4] = \"a\";\n})(RgbIndexes || (RgbIndexes = {}));\nconst randomColorValue = \"random\", midColorValue = \"mid\", colorManagers = new Map();\nexport function addColorManager(manager) {\n colorManagers.set(manager.key, manager);\n}\nfunction stringToRgba(input) {\n for (const [, manager] of colorManagers) {\n if (input.startsWith(manager.stringPrefix)) {\n return manager.parseString(input);\n }\n }\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i, hexFixed = input.replace(shorthandRegex, (_, r, g, b, a) => {\n return r + r + g + g + b + b + (a !== undefined ? a + a : \"\");\n }), regex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i, result = regex.exec(hexFixed), radix = 16, defaultAlpha = 1, alphaFactor = 0xff;\n return result\n ? {\n a: result[RgbIndexes.a] !== undefined\n ? parseInt(result[RgbIndexes.a], radix) / alphaFactor\n : defaultAlpha,\n b: parseInt(result[RgbIndexes.b], radix),\n g: parseInt(result[RgbIndexes.g], radix),\n r: parseInt(result[RgbIndexes.r], radix),\n }\n : undefined;\n}\nexport function rangeColorToRgb(input, index, useIndex = true) {\n if (!input) {\n return;\n }\n const color = isString(input) ? { value: input } : input;\n if (isString(color.value)) {\n return colorToRgb(color.value, index, useIndex);\n }\n if (isArray(color.value)) {\n return rangeColorToRgb({\n value: itemFromArray(color.value, index, useIndex),\n });\n }\n for (const [, manager] of colorManagers) {\n const res = manager.handleRangeColor(color);\n if (res) {\n return res;\n }\n }\n}\nexport function colorToRgb(input, index, useIndex = true) {\n if (!input) {\n return;\n }\n const color = isString(input) ? { value: input } : input;\n if (isString(color.value)) {\n return color.value === randomColorValue ? getRandomRgbColor() : stringToRgb(color.value);\n }\n if (isArray(color.value)) {\n return colorToRgb({\n value: itemFromArray(color.value, index, useIndex),\n });\n }\n for (const [, manager] of colorManagers) {\n const res = manager.handleColor(color);\n if (res) {\n return res;\n }\n }\n}\nexport function colorToHsl(color, index, useIndex = true) {\n const rgb = colorToRgb(color, index, useIndex);\n return rgb ? rgbToHsl(rgb) : undefined;\n}\nexport function rangeColorToHsl(color, index, useIndex = true) {\n const rgb = rangeColorToRgb(color, index, useIndex);\n return rgb ? rgbToHsl(rgb) : undefined;\n}\nexport function rgbToHsl(color) {\n const rgbMax = 255, hMax = 360, sMax = 100, lMax = 100, hMin = 0, sMin = 0, hPhase = 60, half = 0.5, double = 2, r1 = color.r / rgbMax, g1 = color.g / rgbMax, b1 = color.b / rgbMax, max = Math.max(r1, g1, b1), min = Math.min(r1, g1, b1), res = {\n h: hMin,\n l: (max + min) * half,\n s: sMin,\n };\n if (max !== min) {\n res.s = res.l < half ? (max - min) / (max + min) : (max - min) / (double - max - min);\n res.h =\n r1 === max\n ? (g1 - b1) / (max - min)\n : (res.h = g1 === max ? double + (b1 - r1) / (max - min) : double * double + (r1 - g1) / (max - min));\n }\n res.l *= lMax;\n res.s *= sMax;\n res.h *= hPhase;\n if (res.h < hMin) {\n res.h += hMax;\n }\n if (res.h >= hMax) {\n res.h -= hMax;\n }\n return res;\n}\nexport function stringToAlpha(input) {\n return stringToRgba(input)?.a;\n}\nexport function stringToRgb(input) {\n return stringToRgba(input);\n}\nexport function hslToRgb(hsl) {\n const hMax = 360, sMax = 100, lMax = 100, sMin = 0, lMin = 0, h = ((hsl.h % hMax) + hMax) % hMax, s = Math.max(sMin, Math.min(sMax, hsl.s)), l = Math.max(lMin, Math.min(lMax, hsl.l)), hNormalized = h / hMax, sNormalized = s / sMax, lNormalized = l / lMax, rgbFactor = 255, triple = 3;\n if (s === sMin) {\n const grayscaleValue = Math.round(lNormalized * rgbFactor);\n return { r: grayscaleValue, g: grayscaleValue, b: grayscaleValue };\n }\n const half = 0.5, double = 2, channel = (temp1, temp2, temp3) => {\n const temp3Min = 0, temp3Max = 1, sextuple = 6;\n if (temp3 < temp3Min) {\n temp3++;\n }\n if (temp3 > temp3Max) {\n temp3--;\n }\n if (temp3 * sextuple < temp3Max) {\n return temp1 + (temp2 - temp1) * sextuple * temp3;\n }\n if (temp3 * double < temp3Max) {\n return temp2;\n }\n if (temp3 * triple < temp3Max * double) {\n const temp3Offset = double / triple;\n return temp1 + (temp2 - temp1) * (temp3Offset - temp3) * sextuple;\n }\n return temp1;\n }, sNormalizedOffset = 1, temp1 = lNormalized < half\n ? lNormalized * (sNormalizedOffset + sNormalized)\n : lNormalized + sNormalized - lNormalized * sNormalized, temp2 = double * lNormalized - temp1, phaseNumerator = 1, phaseThird = phaseNumerator / triple, red = Math.min(rgbFactor, rgbFactor * channel(temp2, temp1, hNormalized + phaseThird)), green = Math.min(rgbFactor, rgbFactor * channel(temp2, temp1, hNormalized)), blue = Math.min(rgbFactor, rgbFactor * channel(temp2, temp1, hNormalized - phaseThird));\n return { r: Math.round(red), g: Math.round(green), b: Math.round(blue) };\n}\nexport function hslaToRgba(hsla) {\n const rgbResult = hslToRgb(hsla);\n return {\n a: hsla.a,\n b: rgbResult.b,\n g: rgbResult.g,\n r: rgbResult.r,\n };\n}\nexport function getRandomRgbColor(min) {\n const defaultMin = 0, fixedMin = min ?? defaultMin, rgbMax = 256;\n return {\n b: Math.floor(randomInRange(setRangeValue(fixedMin, rgbMax))),\n g: Math.floor(randomInRange(setRangeValue(fixedMin, rgbMax))),\n r: Math.floor(randomInRange(setRangeValue(fixedMin, rgbMax))),\n };\n}\nexport function getStyleFromRgb(color, opacity) {\n const defaultOpacity = 1;\n return `rgba(${color.r}, ${color.g}, ${color.b}, ${opacity ?? defaultOpacity})`;\n}\nexport function getStyleFromHsl(color, opacity) {\n const defaultOpacity = 1;\n return `hsla(${color.h}, ${color.s}%, ${color.l}%, ${opacity ?? defaultOpacity})`;\n}\nexport function colorMix(color1, color2, size1, size2) {\n let rgb1 = color1, rgb2 = color2;\n if (rgb1.r === undefined) {\n rgb1 = hslToRgb(color1);\n }\n if (rgb2.r === undefined) {\n rgb2 = hslToRgb(color2);\n }\n return {\n b: mix(rgb1.b, rgb2.b, size1, size2),\n g: mix(rgb1.g, rgb2.g, size1, size2),\n r: mix(rgb1.r, rgb2.r, size1, size2),\n };\n}\nexport function getLinkColor(p1, p2, linkColor) {\n if (linkColor === randomColorValue) {\n return getRandomRgbColor();\n }\n else if (linkColor === midColorValue) {\n const sourceColor = p1.getFillColor() ?? p1.getStrokeColor(), destColor = p2?.getFillColor() ?? p2?.getStrokeColor();\n if (sourceColor && destColor && p2) {\n return colorMix(sourceColor, destColor, p1.getRadius(), p2.getRadius());\n }\n else {\n const hslColor = sourceColor ?? destColor;\n if (hslColor) {\n return hslToRgb(hslColor);\n }\n }\n }\n else {\n return linkColor;\n }\n}\nexport function getLinkRandomColor(optColor, blink, consent) {\n const color = isString(optColor) ? optColor : optColor.value;\n if (color === randomColorValue) {\n if (consent) {\n return rangeColorToRgb({\n value: color,\n });\n }\n if (blink) {\n return randomColorValue;\n }\n return midColorValue;\n }\n else if (color === midColorValue) {\n return midColorValue;\n }\n else {\n return rangeColorToRgb({\n value: color,\n });\n }\n}\nexport function getHslFromAnimation(animation) {\n return animation !== undefined\n ? {\n h: animation.h.value,\n s: animation.s.value,\n l: animation.l.value,\n }\n : undefined;\n}\nexport function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {\n const resColor = {\n h: {\n enable: false,\n value: hsl.h,\n },\n s: {\n enable: false,\n value: hsl.s,\n },\n l: {\n enable: false,\n value: hsl.l,\n },\n };\n if (animationOptions) {\n setColorAnimation(resColor.h, animationOptions.h, reduceFactor);\n setColorAnimation(resColor.s, animationOptions.s, reduceFactor);\n setColorAnimation(resColor.l, animationOptions.l, reduceFactor);\n }\n return resColor;\n}\nfunction setColorAnimation(colorValue, colorAnimation, reduceFactor) {\n colorValue.enable = colorAnimation.enable;\n const defaultVelocity = 0, decayOffset = 1, defaultLoops = 0, defaultTime = 0;\n if (colorValue.enable) {\n colorValue.velocity = (getRangeValue(colorAnimation.speed) / percentDenominator) * reduceFactor;\n colorValue.decay = decayOffset - getRangeValue(colorAnimation.decay);\n colorValue.status = AnimationStatus.increasing;\n colorValue.loops = defaultLoops;\n colorValue.maxLoops = getRangeValue(colorAnimation.count);\n colorValue.time = defaultTime;\n colorValue.delayTime = getRangeValue(colorAnimation.delay) * millisecondsToSeconds;\n if (!colorAnimation.sync) {\n colorValue.velocity *= getRandom();\n colorValue.value *= getRandom();\n }\n colorValue.initialValue = colorValue.value;\n colorValue.offset = setRangeValue(colorAnimation.offset);\n }\n else {\n colorValue.velocity = defaultVelocity;\n }\n}\nexport function updateColorValue(data, range, decrease, delta) {\n const minLoops = 0, minDelay = 0, identity = 1, minVelocity = 0, minOffset = 0, velocityFactor = 3.6;\n if (!data ||\n !data.enable ||\n ((data.maxLoops ?? minLoops) > minLoops && (data.loops ?? minLoops) > (data.maxLoops ?? minLoops))) {\n return;\n }\n if (!data.time) {\n data.time = 0;\n }\n if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {\n data.time += delta.value;\n }\n if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {\n return;\n }\n const offset = data.offset ? randomInRange(data.offset) : minOffset, velocity = (data.velocity ?? minVelocity) * delta.factor + offset * velocityFactor, decay = data.decay ?? identity, max = getRangeMax(range), min = getRangeMin(range);\n if (!decrease || data.status === AnimationStatus.increasing) {\n data.value += velocity;\n if (data.value > max) {\n if (!data.loops) {\n data.loops = 0;\n }\n data.loops++;\n if (decrease) {\n data.status = AnimationStatus.decreasing;\n }\n else {\n data.value -= max;\n }\n }\n }\n else {\n data.value -= velocity;\n const minValue = 0;\n if (data.value < minValue) {\n if (!data.loops) {\n data.loops = 0;\n }\n data.loops++;\n data.status = AnimationStatus.increasing;\n }\n }\n if (data.velocity && decay !== identity) {\n data.velocity *= decay;\n }\n data.value = clamp(data.value, min, max);\n}\nexport function updateColor(color, delta) {\n if (!color) {\n return;\n }\n const { h, s, l } = color;\n const ranges = {\n h: { min: 0, max: 360 },\n s: { min: 0, max: 100 },\n l: { min: 0, max: 100 },\n };\n if (h) {\n updateColorValue(h, ranges.h, false, delta);\n }\n if (s) {\n updateColorValue(s, ranges.s, true, delta);\n }\n if (l) {\n updateColorValue(l, ranges.l, true, delta);\n }\n}\n","import { AlterType } from \"../Enums/Types/AlterType.js\";\nimport { getStyleFromRgb } from \"./ColorUtils.js\";\nconst origin = { x: 0, y: 0 }, defaultTransform = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n};\nexport function drawLine(context, begin, end) {\n context.beginPath();\n context.moveTo(begin.x, begin.y);\n context.lineTo(end.x, end.y);\n context.closePath();\n}\nexport function paintBase(context, dimension, baseColor) {\n context.fillStyle = baseColor ?? \"rgba(0,0,0,0)\";\n context.fillRect(origin.x, origin.y, dimension.width, dimension.height);\n}\nexport function paintImage(context, dimension, image, opacity) {\n if (!image) {\n return;\n }\n context.globalAlpha = opacity;\n context.drawImage(image, origin.x, origin.y, dimension.width, dimension.height);\n context.globalAlpha = 1;\n}\nexport function clear(context, dimension) {\n context.clearRect(origin.x, origin.y, dimension.width, dimension.height);\n}\nexport function drawParticle(data) {\n const { container, context, particle, delta, colorStyles, backgroundMask, composite, radius, opacity, shadow, transform, } = data, pos = particle.getPosition(), defaultAngle = 0, angle = particle.rotation + (particle.pathRotation ? particle.velocity.angle : defaultAngle), rotateData = {\n sin: Math.sin(angle),\n cos: Math.cos(angle),\n }, rotating = !!angle, identity = 1, transformData = {\n a: rotateData.cos * (transform.a ?? defaultTransform.a),\n b: rotating ? rotateData.sin * (transform.b ?? identity) : transform.b ?? defaultTransform.b,\n c: rotating ? -rotateData.sin * (transform.c ?? identity) : transform.c ?? defaultTransform.c,\n d: rotateData.cos * (transform.d ?? defaultTransform.d),\n };\n context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n const shadowColor = particle.shadowColor;\n if (shadow.enable && shadowColor) {\n context.shadowBlur = shadow.blur;\n context.shadowColor = getStyleFromRgb(shadowColor);\n context.shadowOffsetX = shadow.offset.x;\n context.shadowOffsetY = shadow.offset.y;\n }\n if (colorStyles.fill) {\n context.fillStyle = colorStyles.fill;\n }\n const minStrokeWidth = 0, strokeWidth = particle.strokeWidth ?? minStrokeWidth;\n context.lineWidth = strokeWidth;\n if (colorStyles.stroke) {\n context.strokeStyle = colorStyles.stroke;\n }\n const drawData = {\n container,\n context,\n particle,\n radius,\n opacity,\n delta,\n transformData,\n strokeWidth,\n };\n drawShape(drawData);\n drawShapeAfterDraw(drawData);\n drawEffect(drawData);\n context.globalCompositeOperation = \"source-over\";\n context.resetTransform();\n}\nexport function drawEffect(data) {\n const { container, context, particle, radius, opacity, delta, transformData } = data;\n if (!particle.effect) {\n return;\n }\n const drawer = container.effectDrawers.get(particle.effect);\n if (!drawer) {\n return;\n }\n drawer.draw({\n context,\n particle,\n radius,\n opacity,\n delta,\n pixelRatio: container.retina.pixelRatio,\n transformData: { ...transformData },\n });\n}\nexport function drawShape(data) {\n const { container, context, particle, radius, opacity, delta, strokeWidth, transformData } = data, minStrokeWidth = 0;\n if (!particle.shape) {\n return;\n }\n const drawer = container.shapeDrawers.get(particle.shape);\n if (!drawer) {\n return;\n }\n context.beginPath();\n drawer.draw({\n context,\n particle,\n radius,\n opacity,\n delta,\n pixelRatio: container.retina.pixelRatio,\n transformData: { ...transformData },\n });\n if (particle.shapeClose) {\n context.closePath();\n }\n if (strokeWidth > minStrokeWidth) {\n context.stroke();\n }\n if (particle.shapeFill) {\n context.fill();\n }\n}\nexport function drawShapeAfterDraw(data) {\n const { container, context, particle, radius, opacity, delta, transformData } = data;\n if (!particle.shape) {\n return;\n }\n const drawer = container.shapeDrawers.get(particle.shape);\n if (!drawer?.afterDraw) {\n return;\n }\n drawer.afterDraw({\n context,\n particle,\n radius,\n opacity,\n delta,\n pixelRatio: container.retina.pixelRatio,\n transformData: { ...transformData },\n });\n}\nexport function drawPlugin(context, plugin, delta) {\n if (!plugin.draw) {\n return;\n }\n plugin.draw(context, delta);\n}\nexport function drawParticlePlugin(context, plugin, particle, delta) {\n if (!plugin.drawParticle) {\n return;\n }\n plugin.drawParticle(context, particle, delta);\n}\nexport function alterHsl(color, type, value) {\n const lFactor = 1;\n return {\n h: color.h,\n s: color.s,\n l: color.l + (type === AlterType.darken ? -lFactor : lFactor) * value,\n };\n}\n","import { clear, drawParticle, drawParticlePlugin, drawPlugin, paintBase, paintImage } from \"../Utils/CanvasUtils.js\";\nimport { deepExtend, getLogger, safeMutationObserver } from \"../Utils/Utils.js\";\nimport { getStyleFromHsl, getStyleFromRgb, rangeColorToHsl, rangeColorToRgb } from \"../Utils/ColorUtils.js\";\nimport { generatedAttribute } from \"./Utils/Constants.js\";\nfunction setTransformValue(factor, newFactor, key) {\n const newValue = newFactor[key], defaultValue = 1;\n if (newValue !== undefined) {\n factor[key] = (factor[key] ?? defaultValue) * newValue;\n }\n}\nfunction setStyle(canvas, style, important = false) {\n if (!style) {\n return;\n }\n const element = canvas;\n if (!element) {\n return;\n }\n const elementStyle = element.style;\n if (!elementStyle) {\n return;\n }\n for (const key in style) {\n const value = style[key];\n if (!value) {\n continue;\n }\n elementStyle.setProperty(key, value, important ? \"important\" : \"\");\n }\n}\nexport class Canvas {\n constructor(container) {\n this.container = container;\n this._applyPostDrawUpdaters = particle => {\n for (const updater of this._postDrawUpdaters) {\n updater.afterDraw?.(particle);\n }\n };\n this._applyPreDrawUpdaters = (ctx, particle, radius, zOpacity, colorStyles, transform) => {\n for (const updater of this._preDrawUpdaters) {\n if (updater.getColorStyles) {\n const { fill, stroke } = updater.getColorStyles(particle, ctx, radius, zOpacity);\n if (fill) {\n colorStyles.fill = fill;\n }\n if (stroke) {\n colorStyles.stroke = stroke;\n }\n }\n if (updater.getTransformValues) {\n const updaterTransform = updater.getTransformValues(particle);\n for (const key in updaterTransform) {\n setTransformValue(transform, updaterTransform, key);\n }\n }\n updater.beforeDraw?.(particle);\n }\n };\n this._applyResizePlugins = () => {\n for (const plugin of this._resizePlugins) {\n plugin.resize?.();\n }\n };\n this._getPluginParticleColors = particle => {\n let fColor, sColor;\n for (const plugin of this._colorPlugins) {\n if (!fColor && plugin.particleFillColor) {\n fColor = rangeColorToHsl(plugin.particleFillColor(particle));\n }\n if (!sColor && plugin.particleStrokeColor) {\n sColor = rangeColorToHsl(plugin.particleStrokeColor(particle));\n }\n if (fColor && sColor) {\n break;\n }\n }\n return [fColor, sColor];\n };\n this._initCover = async () => {\n const options = this.container.actualOptions, cover = options.backgroundMask.cover, color = cover.color;\n if (color) {\n const coverRgb = rangeColorToRgb(color);\n if (coverRgb) {\n const coverColor = {\n ...coverRgb,\n a: cover.opacity,\n };\n this._coverColorStyle = getStyleFromRgb(coverColor, coverColor.a);\n }\n }\n else {\n await new Promise((resolve, reject) => {\n if (!cover.image) {\n return;\n }\n const img = document.createElement(\"img\");\n img.addEventListener(\"load\", () => {\n this._coverImage = {\n image: img,\n opacity: cover.opacity,\n };\n resolve();\n });\n img.addEventListener(\"error\", evt => {\n reject(evt.error);\n });\n img.src = cover.image;\n });\n }\n };\n this._initStyle = () => {\n const element = this.element, options = this.container.actualOptions;\n if (!element) {\n return;\n }\n if (this._fullScreen) {\n this._originalStyle = deepExtend({}, element.style);\n this._setFullScreenStyle();\n }\n else {\n this._resetOriginalStyle();\n }\n for (const key in options.style) {\n if (!key || !options.style) {\n continue;\n }\n const value = options.style[key];\n if (!value) {\n continue;\n }\n element.style.setProperty(key, value, \"important\");\n }\n };\n this._initTrail = async () => {\n const options = this.container.actualOptions, trail = options.particles.move.trail, trailFill = trail.fill;\n if (!trail.enable) {\n return;\n }\n const factorNumerator = 1, opacity = factorNumerator / trail.length;\n if (trailFill.color) {\n const fillColor = rangeColorToRgb(trailFill.color);\n if (!fillColor) {\n return;\n }\n this._trailFill = {\n color: {\n ...fillColor,\n },\n opacity,\n };\n }\n else {\n await new Promise((resolve, reject) => {\n if (!trailFill.image) {\n return;\n }\n const img = document.createElement(\"img\");\n img.addEventListener(\"load\", () => {\n this._trailFill = {\n image: img,\n opacity,\n };\n resolve();\n });\n img.addEventListener(\"error\", evt => {\n reject(evt.error);\n });\n img.src = trailFill.image;\n });\n }\n };\n this._paintBase = baseColor => {\n this.draw(ctx => paintBase(ctx, this.size, baseColor));\n };\n this._paintImage = (image, opacity) => {\n this.draw(ctx => paintImage(ctx, this.size, image, opacity));\n };\n this._repairStyle = () => {\n const element = this.element;\n if (!element) {\n return;\n }\n this._safeMutationObserver(observer => observer.disconnect());\n this._initStyle();\n this.initBackground();\n this._safeMutationObserver(observer => {\n if (!element || !(element instanceof Node)) {\n return;\n }\n observer.observe(element, { attributes: true });\n });\n };\n this._resetOriginalStyle = () => {\n const element = this.element, originalStyle = this._originalStyle;\n if (!(element && originalStyle)) {\n return;\n }\n setStyle(element, originalStyle);\n };\n this._safeMutationObserver = callback => {\n if (!this._mutationObserver) {\n return;\n }\n callback(this._mutationObserver);\n };\n this._setFullScreenStyle = () => {\n const element = this.element;\n if (!element) {\n return;\n }\n const radix = 10;\n setStyle(element, {\n position: \"fixed\",\n zIndex: this.container.actualOptions.fullScreen.zIndex.toString(radix),\n top: \"0\",\n left: \"0\",\n width: \"100%\",\n height: \"100%\",\n }, true);\n };\n this.size = {\n height: 0,\n width: 0,\n };\n this._context = null;\n this._generated = false;\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n }\n get _fullScreen() {\n return this.container.actualOptions.fullScreen.enable;\n }\n clear() {\n const options = this.container.actualOptions, trail = options.particles.move.trail, trailFill = this._trailFill, minimumLength = 0;\n if (options.backgroundMask.enable) {\n this.paint();\n }\n else if (trail.enable && trail.length > minimumLength && trailFill) {\n if (trailFill.color) {\n this._paintBase(getStyleFromRgb(trailFill.color, trailFill.opacity));\n }\n else if (trailFill.image) {\n this._paintImage(trailFill.image, trailFill.opacity);\n }\n }\n else if (options.clear) {\n this.draw(ctx => {\n clear(ctx, this.size);\n });\n }\n }\n destroy() {\n this.stop();\n if (this._generated) {\n const element = this.element;\n element?.remove();\n }\n else {\n this._resetOriginalStyle();\n }\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n }\n draw(cb) {\n const ctx = this._context;\n if (!ctx) {\n return;\n }\n return cb(ctx);\n }\n drawAsync(cb) {\n const ctx = this._context;\n if (!ctx) {\n return undefined;\n }\n return cb(ctx);\n }\n drawParticle(particle, delta) {\n if (particle.spawning || particle.destroyed) {\n return;\n }\n const radius = particle.getRadius(), minimumSize = 0;\n if (radius <= minimumSize) {\n return;\n }\n const pfColor = particle.getFillColor(), psColor = particle.getStrokeColor() ?? pfColor;\n let [fColor, sColor] = this._getPluginParticleColors(particle);\n if (!fColor) {\n fColor = pfColor;\n }\n if (!sColor) {\n sColor = psColor;\n }\n if (!fColor && !sColor) {\n return;\n }\n this.draw((ctx) => {\n const container = this.container, options = container.actualOptions, zIndexOptions = particle.options.zIndex, zIndexFactorOffset = 1, zIndexFactor = zIndexFactorOffset - particle.zIndexFactor, zOpacityFactor = zIndexFactor ** zIndexOptions.opacityRate, defaultOpacity = 1, opacity = particle.bubble.opacity ?? particle.opacity?.value ?? defaultOpacity, strokeOpacity = particle.strokeOpacity ?? opacity, zOpacity = opacity * zOpacityFactor, zStrokeOpacity = strokeOpacity * zOpacityFactor, transform = {}, colorStyles = {\n fill: fColor ? getStyleFromHsl(fColor, zOpacity) : undefined,\n };\n colorStyles.stroke = sColor ? getStyleFromHsl(sColor, zStrokeOpacity) : colorStyles.fill;\n this._applyPreDrawUpdaters(ctx, particle, radius, zOpacity, colorStyles, transform);\n drawParticle({\n container,\n context: ctx,\n particle,\n delta,\n colorStyles,\n backgroundMask: options.backgroundMask.enable,\n composite: options.backgroundMask.composite,\n radius: radius * zIndexFactor ** zIndexOptions.sizeRate,\n opacity: zOpacity,\n shadow: particle.options.shadow,\n transform,\n });\n this._applyPostDrawUpdaters(particle);\n });\n }\n drawParticlePlugin(plugin, particle, delta) {\n this.draw(ctx => drawParticlePlugin(ctx, plugin, particle, delta));\n }\n drawPlugin(plugin, delta) {\n this.draw(ctx => drawPlugin(ctx, plugin, delta));\n }\n async init() {\n this._safeMutationObserver(obs => obs.disconnect());\n this._mutationObserver = safeMutationObserver(records => {\n for (const record of records) {\n if (record.type === \"attributes\" && record.attributeName === \"style\") {\n this._repairStyle();\n }\n }\n });\n this.resize();\n this._initStyle();\n await this._initCover();\n try {\n await this._initTrail();\n }\n catch (e) {\n getLogger().error(e);\n }\n this.initBackground();\n this._safeMutationObserver(obs => {\n if (!this.element || !(this.element instanceof Node)) {\n return;\n }\n obs.observe(this.element, { attributes: true });\n });\n this.initUpdaters();\n this.initPlugins();\n this.paint();\n }\n initBackground() {\n const options = this.container.actualOptions, background = options.background, element = this.element;\n if (!element) {\n return;\n }\n const elementStyle = element.style;\n if (!elementStyle) {\n return;\n }\n if (background.color) {\n const color = rangeColorToRgb(background.color);\n elementStyle.backgroundColor = color ? getStyleFromRgb(color, background.opacity) : \"\";\n }\n else {\n elementStyle.backgroundColor = \"\";\n }\n elementStyle.backgroundImage = background.image || \"\";\n elementStyle.backgroundPosition = background.position || \"\";\n elementStyle.backgroundRepeat = background.repeat || \"\";\n elementStyle.backgroundSize = background.size || \"\";\n }\n initPlugins() {\n this._resizePlugins = [];\n for (const [, plugin] of this.container.plugins) {\n if (plugin.resize) {\n this._resizePlugins.push(plugin);\n }\n if (plugin.particleFillColor ?? plugin.particleStrokeColor) {\n this._colorPlugins.push(plugin);\n }\n }\n }\n initUpdaters() {\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n for (const updater of this.container.particles.updaters) {\n if (updater.afterDraw) {\n this._postDrawUpdaters.push(updater);\n }\n if (updater.getColorStyles ?? updater.getTransformValues ?? updater.beforeDraw) {\n this._preDrawUpdaters.push(updater);\n }\n }\n }\n loadCanvas(canvas) {\n if (this._generated && this.element) {\n this.element.remove();\n }\n this._generated =\n canvas.dataset && generatedAttribute in canvas.dataset\n ? canvas.dataset[generatedAttribute] === \"true\"\n : this._generated;\n this.element = canvas;\n this.element.ariaHidden = \"true\";\n this._originalStyle = deepExtend({}, this.element.style);\n this.size.height = canvas.offsetHeight;\n this.size.width = canvas.offsetWidth;\n this._context = this.element.getContext(\"2d\");\n this._safeMutationObserver(obs => {\n if (!this.element || !(this.element instanceof Node)) {\n return;\n }\n obs.observe(this.element, { attributes: true });\n });\n this.container.retina.init();\n this.initBackground();\n }\n paint() {\n const options = this.container.actualOptions;\n this.draw(ctx => {\n if (options.backgroundMask.enable && options.backgroundMask.cover) {\n clear(ctx, this.size);\n if (this._coverImage) {\n this._paintImage(this._coverImage.image, this._coverImage.opacity);\n }\n else if (this._coverColorStyle) {\n this._paintBase(this._coverColorStyle);\n }\n else {\n this._paintBase();\n }\n }\n else {\n this._paintBase();\n }\n });\n }\n resize() {\n if (!this.element) {\n return false;\n }\n const container = this.container, pxRatio = container.retina.pixelRatio, size = container.canvas.size, newSize = {\n width: this.element.offsetWidth * pxRatio,\n height: this.element.offsetHeight * pxRatio,\n };\n if (newSize.height === size.height &&\n newSize.width === size.width &&\n newSize.height === this.element.height &&\n newSize.width === this.element.width) {\n return false;\n }\n const oldSize = { ...size };\n this.element.width = size.width = this.element.offsetWidth * pxRatio;\n this.element.height = size.height = this.element.offsetHeight * pxRatio;\n if (this.container.started) {\n container.particles.setResizeFactor({\n width: size.width / oldSize.width,\n height: size.height / oldSize.height,\n });\n }\n return true;\n }\n stop() {\n this._safeMutationObserver(obs => obs.disconnect());\n this._mutationObserver = undefined;\n this.draw(ctx => clear(ctx, this.size));\n }\n async windowResize() {\n if (!this.element || !this.resize()) {\n return;\n }\n const container = this.container, needsRefresh = container.updateActualOptions();\n container.particles.setDensity();\n this._applyResizePlugins();\n if (needsRefresh) {\n await container.refresh();\n }\n }\n}\n","export var InteractivityDetect;\n(function (InteractivityDetect) {\n InteractivityDetect[\"canvas\"] = \"canvas\";\n InteractivityDetect[\"parent\"] = \"parent\";\n InteractivityDetect[\"window\"] = \"window\";\n})(InteractivityDetect || (InteractivityDetect = {}));\n","import { executeOnSingleOrMultiple, safeMatchMedia } from \"../../Utils/Utils.js\";\nimport { millisecondsToSeconds, mouseDownEvent, mouseLeaveEvent, mouseMoveEvent, mouseOutEvent, mouseUpEvent, resizeEvent, touchCancelEvent, touchEndEvent, touchMoveEvent, touchStartEvent, visibilityChangeEvent, } from \"./Constants.js\";\nimport { InteractivityDetect } from \"../../Enums/InteractivityDetect.js\";\nimport { isBoolean } from \"../../Utils/TypeUtils.js\";\nconst double = 2;\nfunction manageListener(element, event, handler, add, options) {\n if (add) {\n let addOptions = { passive: true };\n if (isBoolean(options)) {\n addOptions.capture = options;\n }\n else if (options !== undefined) {\n addOptions = options;\n }\n element.addEventListener(event, handler, addOptions);\n }\n else {\n const removeOptions = options;\n element.removeEventListener(event, handler, removeOptions);\n }\n}\nexport class EventListeners {\n constructor(container) {\n this.container = container;\n this._doMouseTouchClick = e => {\n const container = this.container, options = container.actualOptions;\n if (this._canPush) {\n const mouseInteractivity = container.interactivity.mouse, mousePos = mouseInteractivity.position;\n if (!mousePos) {\n return;\n }\n mouseInteractivity.clickPosition = { ...mousePos };\n mouseInteractivity.clickTime = new Date().getTime();\n const onClick = options.interactivity.events.onClick;\n executeOnSingleOrMultiple(onClick.mode, mode => this.container.handleClickMode(mode));\n }\n if (e.type === \"touchend\") {\n const touchDelay = 500;\n setTimeout(() => this._mouseTouchFinish(), touchDelay);\n }\n };\n this._handleThemeChange = (e) => {\n const mediaEvent = e, container = this.container, options = container.options, defaultThemes = options.defaultThemes, themeName = mediaEvent.matches ? defaultThemes.dark : defaultThemes.light, theme = options.themes.find(theme => theme.name === themeName);\n if (theme?.default.auto) {\n void container.loadTheme(themeName);\n }\n };\n this._handleVisibilityChange = () => {\n const container = this.container, options = container.actualOptions;\n this._mouseTouchFinish();\n if (!options.pauseOnBlur) {\n return;\n }\n if (document?.hidden) {\n container.pageHidden = true;\n container.pause();\n }\n else {\n container.pageHidden = false;\n if (container.animationStatus) {\n void container.play(true);\n }\n else {\n void container.draw(true);\n }\n }\n };\n this._handleWindowResize = () => {\n if (this._resizeTimeout) {\n clearTimeout(this._resizeTimeout);\n delete this._resizeTimeout;\n }\n const handleResize = async () => {\n const canvas = this.container.canvas;\n await canvas?.windowResize();\n };\n this._resizeTimeout = setTimeout(() => void handleResize(), this.container.actualOptions.interactivity.events.resize.delay * millisecondsToSeconds);\n };\n this._manageInteractivityListeners = (mouseLeaveTmpEvent, add) => {\n const handlers = this._handlers, container = this.container, options = container.actualOptions;\n const interactivityEl = container.interactivity.element;\n if (!interactivityEl) {\n return;\n }\n const html = interactivityEl, canvasEl = container.canvas.element;\n if (canvasEl) {\n canvasEl.style.pointerEvents = html === canvasEl ? \"initial\" : \"none\";\n }\n if (!(options.interactivity.events.onHover.enable || options.interactivity.events.onClick.enable)) {\n return;\n }\n manageListener(interactivityEl, mouseMoveEvent, handlers.mouseMove, add);\n manageListener(interactivityEl, touchStartEvent, handlers.touchStart, add);\n manageListener(interactivityEl, touchMoveEvent, handlers.touchMove, add);\n if (!options.interactivity.events.onClick.enable) {\n manageListener(interactivityEl, touchEndEvent, handlers.touchEnd, add);\n }\n else {\n manageListener(interactivityEl, touchEndEvent, handlers.touchEndClick, add);\n manageListener(interactivityEl, mouseUpEvent, handlers.mouseUp, add);\n manageListener(interactivityEl, mouseDownEvent, handlers.mouseDown, add);\n }\n manageListener(interactivityEl, mouseLeaveTmpEvent, handlers.mouseLeave, add);\n manageListener(interactivityEl, touchCancelEvent, handlers.touchCancel, add);\n };\n this._manageListeners = add => {\n const handlers = this._handlers, container = this.container, options = container.actualOptions, detectType = options.interactivity.detectsOn, canvasEl = container.canvas.element;\n let mouseLeaveTmpEvent = mouseLeaveEvent;\n if (detectType === InteractivityDetect.window) {\n container.interactivity.element = window;\n mouseLeaveTmpEvent = mouseOutEvent;\n }\n else if (detectType === InteractivityDetect.parent && canvasEl) {\n container.interactivity.element = canvasEl.parentElement ?? canvasEl.parentNode;\n }\n else {\n container.interactivity.element = canvasEl;\n }\n this._manageMediaMatch(add);\n this._manageResize(add);\n this._manageInteractivityListeners(mouseLeaveTmpEvent, add);\n if (document) {\n manageListener(document, visibilityChangeEvent, handlers.visibilityChange, add, false);\n }\n };\n this._manageMediaMatch = add => {\n const handlers = this._handlers, mediaMatch = safeMatchMedia(\"(prefers-color-scheme: dark)\");\n if (!mediaMatch) {\n return;\n }\n if (mediaMatch.addEventListener !== undefined) {\n manageListener(mediaMatch, \"change\", handlers.themeChange, add);\n return;\n }\n if (mediaMatch.addListener === undefined) {\n return;\n }\n if (add) {\n mediaMatch.addListener(handlers.oldThemeChange);\n }\n else {\n mediaMatch.removeListener(handlers.oldThemeChange);\n }\n };\n this._manageResize = add => {\n const handlers = this._handlers, container = this.container, options = container.actualOptions;\n if (!options.interactivity.events.resize) {\n return;\n }\n if (typeof ResizeObserver === \"undefined\") {\n manageListener(window, resizeEvent, handlers.resize, add);\n return;\n }\n const canvasEl = container.canvas.element;\n if (this._resizeObserver && !add) {\n if (canvasEl) {\n this._resizeObserver.unobserve(canvasEl);\n }\n this._resizeObserver.disconnect();\n delete this._resizeObserver;\n }\n else if (!this._resizeObserver && add && canvasEl) {\n this._resizeObserver = new ResizeObserver((entries) => {\n const entry = entries.find(e => e.target === canvasEl);\n if (!entry) {\n return;\n }\n this._handleWindowResize();\n });\n this._resizeObserver.observe(canvasEl);\n }\n };\n this._mouseDown = () => {\n const { interactivity } = this.container;\n if (!interactivity) {\n return;\n }\n const { mouse } = interactivity;\n mouse.clicking = true;\n mouse.downPosition = mouse.position;\n };\n this._mouseTouchClick = e => {\n const container = this.container, options = container.actualOptions, { mouse } = container.interactivity;\n mouse.inside = true;\n let handled = false;\n const mousePosition = mouse.position;\n if (!mousePosition || !options.interactivity.events.onClick.enable) {\n return;\n }\n for (const [, plugin] of container.plugins) {\n if (!plugin.clickPositionValid) {\n continue;\n }\n handled = plugin.clickPositionValid(mousePosition);\n if (handled) {\n break;\n }\n }\n if (!handled) {\n this._doMouseTouchClick(e);\n }\n mouse.clicking = false;\n };\n this._mouseTouchFinish = () => {\n const interactivity = this.container.interactivity;\n if (!interactivity) {\n return;\n }\n const mouse = interactivity.mouse;\n delete mouse.position;\n delete mouse.clickPosition;\n delete mouse.downPosition;\n interactivity.status = mouseLeaveEvent;\n mouse.inside = false;\n mouse.clicking = false;\n };\n this._mouseTouchMove = e => {\n const container = this.container, options = container.actualOptions, interactivity = container.interactivity, canvasEl = container.canvas.element;\n if (!interactivity?.element) {\n return;\n }\n interactivity.mouse.inside = true;\n let pos;\n if (e.type.startsWith(\"pointer\")) {\n this._canPush = true;\n const mouseEvent = e;\n if (interactivity.element === window) {\n if (canvasEl) {\n const clientRect = canvasEl.getBoundingClientRect();\n pos = {\n x: mouseEvent.clientX - clientRect.left,\n y: mouseEvent.clientY - clientRect.top,\n };\n }\n }\n else if (options.interactivity.detectsOn === InteractivityDetect.parent) {\n const source = mouseEvent.target, target = mouseEvent.currentTarget;\n if (source && target && canvasEl) {\n const sourceRect = source.getBoundingClientRect(), targetRect = target.getBoundingClientRect(), canvasRect = canvasEl.getBoundingClientRect();\n pos = {\n x: mouseEvent.offsetX + double * sourceRect.left - (targetRect.left + canvasRect.left),\n y: mouseEvent.offsetY + double * sourceRect.top - (targetRect.top + canvasRect.top),\n };\n }\n else {\n pos = {\n x: mouseEvent.offsetX ?? mouseEvent.clientX,\n y: mouseEvent.offsetY ?? mouseEvent.clientY,\n };\n }\n }\n else if (mouseEvent.target === canvasEl) {\n pos = {\n x: mouseEvent.offsetX ?? mouseEvent.clientX,\n y: mouseEvent.offsetY ?? mouseEvent.clientY,\n };\n }\n }\n else {\n this._canPush = e.type !== \"touchmove\";\n if (canvasEl) {\n const touchEvent = e, lengthOffset = 1, lastTouch = touchEvent.touches[touchEvent.touches.length - lengthOffset], canvasRect = canvasEl.getBoundingClientRect(), defaultCoordinate = 0;\n pos = {\n x: lastTouch.clientX - (canvasRect.left ?? defaultCoordinate),\n y: lastTouch.clientY - (canvasRect.top ?? defaultCoordinate),\n };\n }\n }\n const pxRatio = container.retina.pixelRatio;\n if (pos) {\n pos.x *= pxRatio;\n pos.y *= pxRatio;\n }\n interactivity.mouse.position = pos;\n interactivity.status = mouseMoveEvent;\n };\n this._touchEnd = e => {\n const evt = e, touches = Array.from(evt.changedTouches);\n for (const touch of touches) {\n this._touches.delete(touch.identifier);\n }\n this._mouseTouchFinish();\n };\n this._touchEndClick = e => {\n const evt = e, touches = Array.from(evt.changedTouches);\n for (const touch of touches) {\n this._touches.delete(touch.identifier);\n }\n this._mouseTouchClick(e);\n };\n this._touchStart = e => {\n const evt = e, touches = Array.from(evt.changedTouches);\n for (const touch of touches) {\n this._touches.set(touch.identifier, performance.now());\n }\n this._mouseTouchMove(e);\n };\n this._canPush = true;\n this._touches = new Map();\n this._handlers = {\n mouseDown: () => this._mouseDown(),\n mouseLeave: () => this._mouseTouchFinish(),\n mouseMove: (e) => this._mouseTouchMove(e),\n mouseUp: (e) => this._mouseTouchClick(e),\n touchStart: (e) => this._touchStart(e),\n touchMove: (e) => this._mouseTouchMove(e),\n touchEnd: (e) => this._touchEnd(e),\n touchCancel: (e) => this._touchEnd(e),\n touchEndClick: (e) => this._touchEndClick(e),\n visibilityChange: () => this._handleVisibilityChange(),\n themeChange: (e) => this._handleThemeChange(e),\n oldThemeChange: (e) => this._handleThemeChange(e),\n resize: () => {\n this._handleWindowResize();\n },\n };\n }\n addListeners() {\n this._manageListeners(true);\n }\n removeListeners() {\n this._manageListeners(false);\n }\n}\n","export var EventType;\n(function (EventType) {\n EventType[\"configAdded\"] = \"configAdded\";\n EventType[\"containerInit\"] = \"containerInit\";\n EventType[\"particlesSetup\"] = \"particlesSetup\";\n EventType[\"containerStarted\"] = \"containerStarted\";\n EventType[\"containerStopped\"] = \"containerStopped\";\n EventType[\"containerDestroyed\"] = \"containerDestroyed\";\n EventType[\"containerPaused\"] = \"containerPaused\";\n EventType[\"containerPlay\"] = \"containerPlay\";\n EventType[\"containerBuilt\"] = \"containerBuilt\";\n EventType[\"particleAdded\"] = \"particleAdded\";\n EventType[\"particleDestroyed\"] = \"particleDestroyed\";\n EventType[\"particleRemoved\"] = \"particleRemoved\";\n})(EventType || (EventType = {}));\n","export var DivType;\n(function (DivType) {\n DivType[\"circle\"] = \"circle\";\n DivType[\"rectangle\"] = \"rectangle\";\n})(DivType || (DivType = {}));\n","import { isArray, isString } from \"../../Utils/TypeUtils.js\";\nexport class OptionsColor {\n constructor() {\n this.value = \"\";\n }\n static create(source, data) {\n const color = new OptionsColor();\n color.load(source);\n if (data !== undefined) {\n if (isString(data) || isArray(data)) {\n color.load({ value: data });\n }\n else {\n color.load(data);\n }\n }\n return color;\n }\n load(data) {\n if (data?.value === undefined) {\n return;\n }\n this.value = data.value;\n }\n}\n","import { OptionsColor } from \"../OptionsColor.js\";\nexport class Background {\n constructor() {\n this.color = new OptionsColor();\n this.color.value = \"\";\n this.image = \"\";\n this.position = \"\";\n this.repeat = \"\";\n this.size = \"\";\n this.opacity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.image !== undefined) {\n this.image = data.image;\n }\n if (data.position !== undefined) {\n this.position = data.position;\n }\n if (data.repeat !== undefined) {\n this.repeat = data.repeat;\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { OptionsColor } from \"../OptionsColor.js\";\nexport class BackgroundMaskCover {\n constructor() {\n this.opacity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.image !== undefined) {\n this.image = data.image;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { BackgroundMaskCover } from \"./BackgroundMaskCover.js\";\nimport { isString } from \"../../../Utils/TypeUtils.js\";\nexport class BackgroundMask {\n constructor() {\n this.composite = \"destination-out\";\n this.cover = new BackgroundMaskCover();\n this.enable = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.composite !== undefined) {\n this.composite = data.composite;\n }\n if (data.cover !== undefined) {\n const cover = data.cover, color = (isString(data.cover) ? { color: data.cover } : data.cover);\n this.cover.load(cover.color !== undefined || cover.image !== undefined ? cover : { color: color });\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","export class FullScreen {\n constructor() {\n this.enable = true;\n this.zIndex = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.zIndex !== undefined) {\n this.zIndex = data.zIndex;\n }\n }\n}\n","export class ClickEvent {\n constructor() {\n this.enable = false;\n this.mode = [];\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n }\n}\n","import { DivType } from \"../../../../Enums/Types/DivType.js\";\nexport class DivEvent {\n constructor() {\n this.selectors = [];\n this.enable = false;\n this.mode = [];\n this.type = DivType.circle;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n}\n","export class Parallax {\n constructor() {\n this.enable = false;\n this.force = 2;\n this.smooth = 10;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.force !== undefined) {\n this.force = data.force;\n }\n if (data.smooth !== undefined) {\n this.smooth = data.smooth;\n }\n }\n}\n","import { Parallax } from \"./Parallax.js\";\nexport class HoverEvent {\n constructor() {\n this.enable = false;\n this.mode = [];\n this.parallax = new Parallax();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n this.parallax.load(data.parallax);\n }\n}\n","export class ResizeEvent {\n constructor() {\n this.delay = 0.5;\n this.enable = true;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.delay !== undefined) {\n this.delay = data.delay;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","import { ClickEvent } from \"./ClickEvent.js\";\nimport { DivEvent } from \"./DivEvent.js\";\nimport { HoverEvent } from \"./HoverEvent.js\";\nimport { ResizeEvent } from \"./ResizeEvent.js\";\nimport { executeOnSingleOrMultiple } from \"../../../../Utils/Utils.js\";\nexport class Events {\n constructor() {\n this.onClick = new ClickEvent();\n this.onDiv = new DivEvent();\n this.onHover = new HoverEvent();\n this.resize = new ResizeEvent();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.onClick.load(data.onClick);\n const onDiv = data.onDiv;\n if (onDiv !== undefined) {\n this.onDiv = executeOnSingleOrMultiple(onDiv, t => {\n const tmp = new DivEvent();\n tmp.load(t);\n return tmp;\n });\n }\n this.onHover.load(data.onHover);\n this.resize.load(data.resize);\n }\n}\n","export class Modes {\n constructor(engine, container) {\n this._engine = engine;\n this._container = container;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (!this._container) {\n return;\n }\n const interactors = this._engine.interactors.get(this._container);\n if (!interactors) {\n return;\n }\n for (const interactor of interactors) {\n if (!interactor.loadModeOptions) {\n continue;\n }\n interactor.loadModeOptions(this, data);\n }\n }\n}\n","import { Events } from \"./Events/Events.js\";\nimport { InteractivityDetect } from \"../../../Enums/InteractivityDetect.js\";\nimport { Modes } from \"./Modes/Modes.js\";\nexport class Interactivity {\n constructor(engine, container) {\n this.detectsOn = InteractivityDetect.window;\n this.events = new Events();\n this.modes = new Modes(engine, container);\n }\n load(data) {\n if (!data) {\n return;\n }\n const detectsOn = data.detectsOn;\n if (detectsOn !== undefined) {\n this.detectsOn = detectsOn;\n }\n this.events.load(data.events);\n this.modes.load(data.modes);\n }\n}\n","import { PixelMode } from \"../../Enums/Modes/PixelMode.js\";\nimport { deepExtend } from \"../../Utils/Utils.js\";\nconst defaultPosition = 50;\nexport class ManualParticle {\n load(data) {\n if (!data) {\n return;\n }\n if (data.position) {\n this.position = {\n x: data.position.x ?? defaultPosition,\n y: data.position.y ?? defaultPosition,\n mode: data.position.mode ?? PixelMode.percent,\n };\n }\n if (data.options) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","export var ResponsiveMode;\n(function (ResponsiveMode) {\n ResponsiveMode[\"screen\"] = \"screen\";\n ResponsiveMode[\"canvas\"] = \"canvas\";\n})(ResponsiveMode || (ResponsiveMode = {}));\n","export var ThemeMode;\n(function (ThemeMode) {\n ThemeMode[\"any\"] = \"any\";\n ThemeMode[\"dark\"] = \"dark\";\n ThemeMode[\"light\"] = \"light\";\n})(ThemeMode || (ThemeMode = {}));\n","export var CollisionMode;\n(function (CollisionMode) {\n CollisionMode[\"absorb\"] = \"absorb\";\n CollisionMode[\"bounce\"] = \"bounce\";\n CollisionMode[\"destroy\"] = \"destroy\";\n})(CollisionMode || (CollisionMode = {}));\n","export var OutMode;\n(function (OutMode) {\n OutMode[\"bounce\"] = \"bounce\";\n OutMode[\"none\"] = \"none\";\n OutMode[\"out\"] = \"out\";\n OutMode[\"destroy\"] = \"destroy\";\n OutMode[\"split\"] = \"split\";\n})(OutMode || (OutMode = {}));\n","export var LimitMode;\n(function (LimitMode) {\n LimitMode[\"delete\"] = \"delete\";\n LimitMode[\"wait\"] = \"wait\";\n})(LimitMode || (LimitMode = {}));\n","export var InteractorType;\n(function (InteractorType) {\n InteractorType[\"external\"] = \"external\";\n InteractorType[\"particles\"] = \"particles\";\n})(InteractorType || (InteractorType = {}));\n","export var ParticleOutType;\n(function (ParticleOutType) {\n ParticleOutType[\"normal\"] = \"normal\";\n ParticleOutType[\"inside\"] = \"inside\";\n ParticleOutType[\"outside\"] = \"outside\";\n})(ParticleOutType || (ParticleOutType = {}));\n","import { ResponsiveMode } from \"../../Enums/Modes/ResponsiveMode.js\";\nimport { deepExtend } from \"../../Utils/Utils.js\";\nexport class Responsive {\n constructor() {\n this.maxWidth = Infinity;\n this.options = {};\n this.mode = ResponsiveMode.canvas;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.maxWidth !== undefined) {\n this.maxWidth = data.maxWidth;\n }\n if (data.mode !== undefined) {\n if (data.mode === ResponsiveMode.screen) {\n this.mode = ResponsiveMode.screen;\n }\n else {\n this.mode = ResponsiveMode.canvas;\n }\n }\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","import { ThemeMode } from \"../../../Enums/Modes/ThemeMode.js\";\nexport class ThemeDefault {\n constructor() {\n this.auto = false;\n this.mode = ThemeMode.any;\n this.value = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.auto !== undefined) {\n this.auto = data.auto;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { ThemeDefault } from \"./ThemeDefault.js\";\nimport { deepExtend } from \"../../../Utils/Utils.js\";\nexport class Theme {\n constructor() {\n this.name = \"\";\n this.default = new ThemeDefault();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.name !== undefined) {\n this.name = data.name;\n }\n this.default.load(data.default);\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","import { AnimationMode } from \"../../Enums/Modes/AnimationMode.js\";\nimport { StartValueType } from \"../../Enums/Types/StartValueType.js\";\nimport { setRangeValue } from \"../../Utils/NumberUtils.js\";\nexport class AnimationOptions {\n constructor() {\n this.count = 0;\n this.enable = false;\n this.speed = 1;\n this.decay = 0;\n this.delay = 0;\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = setRangeValue(data.count);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.delay !== undefined) {\n this.delay = setRangeValue(data.delay);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\nexport class RangedAnimationOptions extends AnimationOptions {\n constructor() {\n super();\n this.mode = AnimationMode.auto;\n this.startValue = StartValueType.random;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.startValue !== undefined) {\n this.startValue = data.startValue;\n }\n }\n}\n","import { AnimationOptions } from \"./AnimationOptions.js\";\nimport { setRangeValue } from \"../../Utils/NumberUtils.js\";\nexport class ColorAnimation extends AnimationOptions {\n constructor() {\n super();\n this.offset = 0;\n this.sync = true;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.offset !== undefined) {\n this.offset = setRangeValue(data.offset);\n }\n }\n}\n","import { ColorAnimation } from \"./ColorAnimation.js\";\nexport class HslAnimation {\n constructor() {\n this.h = new ColorAnimation();\n this.s = new ColorAnimation();\n this.l = new ColorAnimation();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.h.load(data.h);\n this.s.load(data.s);\n this.l.load(data.l);\n }\n}\n","import { isArray, isString } from \"../../Utils/TypeUtils.js\";\nimport { HslAnimation } from \"./HslAnimation.js\";\nimport { OptionsColor } from \"./OptionsColor.js\";\nexport class AnimatableColor extends OptionsColor {\n constructor() {\n super();\n this.animation = new HslAnimation();\n }\n static create(source, data) {\n const color = new AnimatableColor();\n color.load(source);\n if (data !== undefined) {\n if (isString(data) || isArray(data)) {\n color.load({ value: data });\n }\n else {\n color.load(data);\n }\n }\n return color;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n const colorAnimation = data.animation;\n if (colorAnimation !== undefined) {\n if (colorAnimation.enable !== undefined) {\n this.animation.h.load(colorAnimation);\n }\n else {\n this.animation.load(data.animation);\n }\n }\n }\n}\n","export class CollisionsAbsorb {\n constructor() {\n this.speed = 2;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n }\n}\n","export class CollisionsOverlap {\n constructor() {\n this.enable = true;\n this.retries = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.retries !== undefined) {\n this.retries = data.retries;\n }\n }\n}\n","import { AnimationOptions, RangedAnimationOptions } from \"./AnimationOptions.js\";\nimport { setRangeValue } from \"../../Utils/NumberUtils.js\";\nexport class ValueWithRandom {\n constructor() {\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value);\n }\n }\n}\nexport class AnimationValueWithRandom extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new AnimationOptions();\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n const animation = data.animation;\n if (animation !== undefined) {\n this.animation.load(animation);\n }\n }\n}\nexport class RangedAnimationValueWithRandom extends AnimationValueWithRandom {\n constructor() {\n super();\n this.animation = new RangedAnimationOptions();\n }\n load(data) {\n super.load(data);\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom.js\";\nexport class ParticlesBounceFactor extends ValueWithRandom {\n constructor() {\n super();\n this.value = 1;\n }\n}\n","import { ParticlesBounceFactor } from \"./ParticlesBounceFactor.js\";\nexport class ParticlesBounce {\n constructor() {\n this.horizontal = new ParticlesBounceFactor();\n this.vertical = new ParticlesBounceFactor();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.horizontal.load(data.horizontal);\n this.vertical.load(data.vertical);\n }\n}\n","import { CollisionMode } from \"../../../../Enums/Modes/CollisionMode.js\";\nimport { CollisionsAbsorb } from \"./CollisionsAbsorb.js\";\nimport { CollisionsOverlap } from \"./CollisionsOverlap.js\";\nimport { ParticlesBounce } from \"../Bounce/ParticlesBounce.js\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils.js\";\nexport class Collisions {\n constructor() {\n this.absorb = new CollisionsAbsorb();\n this.bounce = new ParticlesBounce();\n this.enable = false;\n this.maxSpeed = 50;\n this.mode = CollisionMode.bounce;\n this.overlap = new CollisionsOverlap();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.absorb.load(data.absorb);\n this.bounce.load(data.bounce);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = setRangeValue(data.maxSpeed);\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n this.overlap.load(data.overlap);\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils.js\";\nexport class Effect {\n constructor() {\n this.close = true;\n this.fill = true;\n this.options = {};\n this.type = [];\n }\n load(data) {\n if (!data) {\n return;\n }\n const options = data.options;\n if (options !== undefined) {\n for (const effect in options) {\n const item = options[effect];\n if (item) {\n this.options[effect] = deepExtend(this.options[effect] ?? {}, item);\n }\n }\n }\n if (data.close !== undefined) {\n this.close = data.close;\n }\n if (data.fill !== undefined) {\n this.fill = data.fill;\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils.js\";\nexport class MoveAngle {\n constructor() {\n this.offset = 0;\n this.value = 90;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.offset !== undefined) {\n this.offset = setRangeValue(data.offset);\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value);\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils.js\";\nexport class MoveAttract {\n constructor() {\n this.distance = 200;\n this.enable = false;\n this.rotate = {\n x: 3000,\n y: 3000,\n };\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = setRangeValue(data.distance);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.rotate) {\n const rotateX = data.rotate.x;\n if (rotateX !== undefined) {\n this.rotate.x = rotateX;\n }\n const rotateY = data.rotate.y;\n if (rotateY !== undefined) {\n this.rotate.y = rotateY;\n }\n }\n }\n}\n","import { PixelMode } from \"../../../../Enums/Modes/PixelMode.js\";\nexport class MoveCenter {\n constructor() {\n this.x = 50;\n this.y = 50;\n this.mode = PixelMode.percent;\n this.radius = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.x !== undefined) {\n this.x = data.x;\n }\n if (data.y !== undefined) {\n this.y = data.y;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils.js\";\nexport class MoveGravity {\n constructor() {\n this.acceleration = 9.81;\n this.enable = false;\n this.inverse = false;\n this.maxSpeed = 50;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.acceleration !== undefined) {\n this.acceleration = setRangeValue(data.acceleration);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.inverse !== undefined) {\n this.inverse = data.inverse;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = setRangeValue(data.maxSpeed);\n }\n }\n}\n","import { ValueWithRandom } from \"../../../ValueWithRandom.js\";\nimport { deepExtend } from \"../../../../../Utils/Utils.js\";\nexport class MovePath {\n constructor() {\n this.clamp = true;\n this.delay = new ValueWithRandom();\n this.enable = false;\n this.options = {};\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.clamp !== undefined) {\n this.clamp = data.clamp;\n }\n this.delay.load(data.delay);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.generator = data.generator;\n if (data.options) {\n this.options = deepExtend(this.options, data.options);\n }\n }\n}\n","import { OptionsColor } from \"../../OptionsColor.js\";\nexport class MoveTrailFill {\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.image !== undefined) {\n this.image = data.image;\n }\n }\n}\n","import { MoveTrailFill } from \"./MoveTrailFill.js\";\nexport class MoveTrail {\n constructor() {\n this.enable = false;\n this.length = 10;\n this.fill = new MoveTrailFill();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.fill !== undefined) {\n this.fill.load(data.fill);\n }\n if (data.length !== undefined) {\n this.length = data.length;\n }\n }\n}\n","import { OutMode } from \"../../../../Enums/Modes/OutMode.js\";\nexport class OutModes {\n constructor() {\n this.default = OutMode.out;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.default !== undefined) {\n this.default = data.default;\n }\n this.bottom = data.bottom ?? data.default;\n this.left = data.left ?? data.default;\n this.right = data.right ?? data.default;\n this.top = data.top ?? data.default;\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils.js\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils.js\";\nexport class Spin {\n constructor() {\n this.acceleration = 0;\n this.enable = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.acceleration !== undefined) {\n this.acceleration = setRangeValue(data.acceleration);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.position) {\n this.position = deepExtend({}, data.position);\n }\n }\n}\n","import { MoveDirection } from \"../../../../Enums/Directions/MoveDirection.js\";\nimport { isNumber, isObject } from \"../../../../Utils/TypeUtils.js\";\nimport { MoveAngle } from \"./MoveAngle.js\";\nimport { MoveAttract } from \"./MoveAttract.js\";\nimport { MoveCenter } from \"./MoveCenter.js\";\nimport { MoveGravity } from \"./MoveGravity.js\";\nimport { MovePath } from \"./Path/MovePath.js\";\nimport { MoveTrail } from \"./MoveTrail.js\";\nimport { OutModes } from \"./OutModes.js\";\nimport { Spin } from \"./Spin.js\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils.js\";\nexport class Move {\n constructor() {\n this.angle = new MoveAngle();\n this.attract = new MoveAttract();\n this.center = new MoveCenter();\n this.decay = 0;\n this.distance = {};\n this.direction = MoveDirection.none;\n this.drift = 0;\n this.enable = false;\n this.gravity = new MoveGravity();\n this.path = new MovePath();\n this.outModes = new OutModes();\n this.random = false;\n this.size = false;\n this.speed = 2;\n this.spin = new Spin();\n this.straight = false;\n this.trail = new MoveTrail();\n this.vibrate = false;\n this.warp = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n this.angle.load(isNumber(data.angle) ? { value: data.angle } : data.angle);\n this.attract.load(data.attract);\n this.center.load(data.center);\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n if (data.distance !== undefined) {\n this.distance = isNumber(data.distance)\n ? {\n horizontal: data.distance,\n vertical: data.distance,\n }\n : { ...data.distance };\n }\n if (data.drift !== undefined) {\n this.drift = setRangeValue(data.drift);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.gravity.load(data.gravity);\n const outModes = data.outModes;\n if (outModes !== undefined) {\n if (isObject(outModes)) {\n this.outModes.load(outModes);\n }\n else {\n this.outModes.load({\n default: outModes,\n });\n }\n }\n this.path.load(data.path);\n if (data.random !== undefined) {\n this.random = data.random;\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n this.spin.load(data.spin);\n if (data.straight !== undefined) {\n this.straight = data.straight;\n }\n this.trail.load(data.trail);\n if (data.vibrate !== undefined) {\n this.vibrate = data.vibrate;\n }\n if (data.warp !== undefined) {\n this.warp = data.warp;\n }\n }\n}\n","import { DestroyType } from \"../../../../Enums/Types/DestroyType.js\";\nimport { RangedAnimationOptions } from \"../../AnimationOptions.js\";\nexport class OpacityAnimation extends RangedAnimationOptions {\n constructor() {\n super();\n this.destroy = DestroyType.none;\n this.speed = 2;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n }\n}\n","import { OpacityAnimation } from \"./OpacityAnimation.js\";\nimport { RangedAnimationValueWithRandom } from \"../../ValueWithRandom.js\";\nexport class Opacity extends RangedAnimationValueWithRandom {\n constructor() {\n super();\n this.animation = new OpacityAnimation();\n this.value = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n const animation = data.animation;\n if (animation !== undefined) {\n this.animation.load(animation);\n }\n }\n}\n","export class ParticlesDensity {\n constructor() {\n this.enable = false;\n this.width = 1920;\n this.height = 1080;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n const width = data.width;\n if (width !== undefined) {\n this.width = width;\n }\n const height = data.height;\n if (height !== undefined) {\n this.height = height;\n }\n }\n}\n","import { LimitMode } from \"../../../../Enums/Modes/LimitMode.js\";\nexport class ParticlesNumberLimit {\n constructor() {\n this.mode = LimitMode.delete;\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { ParticlesDensity } from \"./ParticlesDensity.js\";\nimport { ParticlesNumberLimit } from \"./ParticlesNumberLimit.js\";\nexport class ParticlesNumber {\n constructor() {\n this.density = new ParticlesDensity();\n this.limit = new ParticlesNumberLimit();\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n this.density.load(data.density);\n this.limit.load(data.limit);\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { OptionsColor } from \"../OptionsColor.js\";\nexport class Shadow {\n constructor() {\n this.blur = 0;\n this.color = new OptionsColor();\n this.enable = false;\n this.offset = {\n x: 0,\n y: 0,\n };\n this.color.value = \"#000\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.blur !== undefined) {\n this.blur = data.blur;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.offset === undefined) {\n return;\n }\n if (data.offset.x !== undefined) {\n this.offset.x = data.offset.x;\n }\n if (data.offset.y !== undefined) {\n this.offset.y = data.offset.y;\n }\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils.js\";\nexport class Shape {\n constructor() {\n this.close = true;\n this.fill = true;\n this.options = {};\n this.type = \"circle\";\n }\n load(data) {\n if (!data) {\n return;\n }\n const options = data.options;\n if (options !== undefined) {\n for (const shape in options) {\n const item = options[shape];\n if (item) {\n this.options[shape] = deepExtend(this.options[shape] ?? {}, item);\n }\n }\n }\n if (data.close !== undefined) {\n this.close = data.close;\n }\n if (data.fill !== undefined) {\n this.fill = data.fill;\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n}\n","import { DestroyType } from \"../../../../Enums/Types/DestroyType.js\";\nimport { RangedAnimationOptions } from \"../../AnimationOptions.js\";\nexport class SizeAnimation extends RangedAnimationOptions {\n constructor() {\n super();\n this.destroy = DestroyType.none;\n this.speed = 5;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n }\n}\n","import { RangedAnimationValueWithRandom } from \"../../ValueWithRandom.js\";\nimport { SizeAnimation } from \"./SizeAnimation.js\";\nexport class Size extends RangedAnimationValueWithRandom {\n constructor() {\n super();\n this.animation = new SizeAnimation();\n this.value = 3;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n const animation = data.animation;\n if (animation !== undefined) {\n this.animation.load(animation);\n }\n }\n}\n","import { AnimatableColor } from \"../AnimatableColor.js\";\nimport { setRangeValue } from \"../../../Utils/NumberUtils.js\";\nexport class Stroke {\n constructor() {\n this.width = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = AnimatableColor.create(this.color, data.color);\n }\n if (data.width !== undefined) {\n this.width = setRangeValue(data.width);\n }\n if (data.opacity !== undefined) {\n this.opacity = setRangeValue(data.opacity);\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom.js\";\nexport class ZIndex extends ValueWithRandom {\n constructor() {\n super();\n this.opacityRate = 1;\n this.sizeRate = 1;\n this.velocityRate = 1;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.opacityRate !== undefined) {\n this.opacityRate = data.opacityRate;\n }\n if (data.sizeRate !== undefined) {\n this.sizeRate = data.sizeRate;\n }\n if (data.velocityRate !== undefined) {\n this.velocityRate = data.velocityRate;\n }\n }\n}\n","import { deepExtend, executeOnSingleOrMultiple } from \"../../../Utils/Utils.js\";\nimport { AnimatableColor } from \"../AnimatableColor.js\";\nimport { Collisions } from \"./Collisions/Collisions.js\";\nimport { Effect } from \"./Effect/Effect.js\";\nimport { Move } from \"./Move/Move.js\";\nimport { Opacity } from \"./Opacity/Opacity.js\";\nimport { ParticlesBounce } from \"./Bounce/ParticlesBounce.js\";\nimport { ParticlesNumber } from \"./Number/ParticlesNumber.js\";\nimport { Shadow } from \"./Shadow.js\";\nimport { Shape } from \"./Shape/Shape.js\";\nimport { Size } from \"./Size/Size.js\";\nimport { Stroke } from \"./Stroke.js\";\nimport { ZIndex } from \"./ZIndex/ZIndex.js\";\nexport class ParticlesOptions {\n constructor(engine, container) {\n this._engine = engine;\n this._container = container;\n this.bounce = new ParticlesBounce();\n this.collisions = new Collisions();\n this.color = new AnimatableColor();\n this.color.value = \"#fff\";\n this.effect = new Effect();\n this.groups = {};\n this.move = new Move();\n this.number = new ParticlesNumber();\n this.opacity = new Opacity();\n this.reduceDuplicates = false;\n this.shadow = new Shadow();\n this.shape = new Shape();\n this.size = new Size();\n this.stroke = new Stroke();\n this.zIndex = new ZIndex();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.groups !== undefined) {\n for (const group of Object.keys(data.groups)) {\n if (!Object.hasOwn(data.groups, group)) {\n continue;\n }\n const item = data.groups[group];\n if (item !== undefined) {\n this.groups[group] = deepExtend(this.groups[group] ?? {}, item);\n }\n }\n }\n if (data.reduceDuplicates !== undefined) {\n this.reduceDuplicates = data.reduceDuplicates;\n }\n this.bounce.load(data.bounce);\n this.color.load(AnimatableColor.create(this.color, data.color));\n this.effect.load(data.effect);\n this.move.load(data.move);\n this.number.load(data.number);\n this.opacity.load(data.opacity);\n this.shape.load(data.shape);\n this.size.load(data.size);\n this.shadow.load(data.shadow);\n this.zIndex.load(data.zIndex);\n this.collisions.load(data.collisions);\n if (data.interactivity !== undefined) {\n this.interactivity = deepExtend({}, data.interactivity);\n }\n const strokeToLoad = data.stroke;\n if (strokeToLoad) {\n this.stroke = executeOnSingleOrMultiple(strokeToLoad, t => {\n const tmp = new Stroke();\n tmp.load(t);\n return tmp;\n });\n }\n if (this._container) {\n const updaters = this._engine.updaters.get(this._container);\n if (updaters) {\n for (const updater of updaters) {\n if (updater.loadOptions) {\n updater.loadOptions(this, data);\n }\n }\n }\n const interactors = this._engine.interactors.get(this._container);\n if (interactors) {\n for (const interactor of interactors) {\n if (interactor.loadParticlesOptions) {\n interactor.loadParticlesOptions(this, data);\n }\n }\n }\n }\n }\n}\n","import { ParticlesOptions } from \"../Options/Classes/Particles/ParticlesOptions.js\";\nexport function loadOptions(options, ...sourceOptionsArr) {\n for (const sourceOptions of sourceOptionsArr) {\n options.load(sourceOptions);\n }\n}\nexport function loadParticlesOptions(engine, container, ...sourceOptionsArr) {\n const options = new ParticlesOptions(engine, container);\n loadOptions(options, ...sourceOptionsArr);\n return options;\n}\n","import { deepExtend, executeOnSingleOrMultiple, safeMatchMedia } from \"../../Utils/Utils.js\";\nimport { Background } from \"./Background/Background.js\";\nimport { BackgroundMask } from \"./BackgroundMask/BackgroundMask.js\";\nimport { FullScreen } from \"./FullScreen/FullScreen.js\";\nimport { Interactivity } from \"./Interactivity/Interactivity.js\";\nimport { ManualParticle } from \"./ManualParticle.js\";\nimport { Responsive } from \"./Responsive.js\";\nimport { ResponsiveMode } from \"../../Enums/Modes/ResponsiveMode.js\";\nimport { Theme } from \"./Theme/Theme.js\";\nimport { ThemeMode } from \"../../Enums/Modes/ThemeMode.js\";\nimport { isBoolean } from \"../../Utils/TypeUtils.js\";\nimport { loadParticlesOptions } from \"../../Utils/OptionsUtils.js\";\nimport { setRangeValue } from \"../../Utils/NumberUtils.js\";\nexport class Options {\n constructor(engine, container) {\n this._findDefaultTheme = mode => {\n return (this.themes.find(theme => theme.default.value && theme.default.mode === mode) ??\n this.themes.find(theme => theme.default.value && theme.default.mode === ThemeMode.any));\n };\n this._importPreset = preset => {\n this.load(this._engine.getPreset(preset));\n };\n this._engine = engine;\n this._container = container;\n this.autoPlay = true;\n this.background = new Background();\n this.backgroundMask = new BackgroundMask();\n this.clear = true;\n this.defaultThemes = {};\n this.delay = 0;\n this.fullScreen = new FullScreen();\n this.detectRetina = true;\n this.duration = 0;\n this.fpsLimit = 120;\n this.interactivity = new Interactivity(engine, container);\n this.manualParticles = [];\n this.particles = loadParticlesOptions(this._engine, this._container);\n this.pauseOnBlur = true;\n this.pauseOnOutsideViewport = true;\n this.responsive = [];\n this.smooth = false;\n this.style = {};\n this.themes = [];\n this.zLayers = 100;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.preset !== undefined) {\n executeOnSingleOrMultiple(data.preset, preset => this._importPreset(preset));\n }\n if (data.autoPlay !== undefined) {\n this.autoPlay = data.autoPlay;\n }\n if (data.clear !== undefined) {\n this.clear = data.clear;\n }\n if (data.key !== undefined) {\n this.key = data.key;\n }\n if (data.name !== undefined) {\n this.name = data.name;\n }\n if (data.delay !== undefined) {\n this.delay = setRangeValue(data.delay);\n }\n const detectRetina = data.detectRetina;\n if (detectRetina !== undefined) {\n this.detectRetina = detectRetina;\n }\n if (data.duration !== undefined) {\n this.duration = setRangeValue(data.duration);\n }\n const fpsLimit = data.fpsLimit;\n if (fpsLimit !== undefined) {\n this.fpsLimit = fpsLimit;\n }\n if (data.pauseOnBlur !== undefined) {\n this.pauseOnBlur = data.pauseOnBlur;\n }\n if (data.pauseOnOutsideViewport !== undefined) {\n this.pauseOnOutsideViewport = data.pauseOnOutsideViewport;\n }\n if (data.zLayers !== undefined) {\n this.zLayers = data.zLayers;\n }\n this.background.load(data.background);\n const fullScreen = data.fullScreen;\n if (isBoolean(fullScreen)) {\n this.fullScreen.enable = fullScreen;\n }\n else {\n this.fullScreen.load(fullScreen);\n }\n this.backgroundMask.load(data.backgroundMask);\n this.interactivity.load(data.interactivity);\n if (data.manualParticles) {\n this.manualParticles = data.manualParticles.map(t => {\n const tmp = new ManualParticle();\n tmp.load(t);\n return tmp;\n });\n }\n this.particles.load(data.particles);\n this.style = deepExtend(this.style, data.style);\n this._engine.loadOptions(this, data);\n if (data.smooth !== undefined) {\n this.smooth = data.smooth;\n }\n const interactors = this._engine.interactors.get(this._container);\n if (interactors) {\n for (const interactor of interactors) {\n if (interactor.loadOptions) {\n interactor.loadOptions(this, data);\n }\n }\n }\n if (data.responsive !== undefined) {\n for (const responsive of data.responsive) {\n const optResponsive = new Responsive();\n optResponsive.load(responsive);\n this.responsive.push(optResponsive);\n }\n }\n this.responsive.sort((a, b) => a.maxWidth - b.maxWidth);\n if (data.themes !== undefined) {\n for (const theme of data.themes) {\n const existingTheme = this.themes.find(t => t.name === theme.name);\n if (!existingTheme) {\n const optTheme = new Theme();\n optTheme.load(theme);\n this.themes.push(optTheme);\n }\n else {\n existingTheme.load(theme);\n }\n }\n }\n this.defaultThemes.dark = this._findDefaultTheme(ThemeMode.dark)?.name;\n this.defaultThemes.light = this._findDefaultTheme(ThemeMode.light)?.name;\n }\n setResponsive(width, pxRatio, defaultOptions) {\n this.load(defaultOptions);\n const responsiveOptions = this.responsive.find(t => t.mode === ResponsiveMode.screen && screen ? t.maxWidth > screen.availWidth : t.maxWidth * pxRatio > width);\n this.load(responsiveOptions?.options);\n return responsiveOptions?.maxWidth;\n }\n setTheme(name) {\n if (name) {\n const chosenTheme = this.themes.find(theme => theme.name === name);\n if (chosenTheme) {\n this.load(chosenTheme.options);\n }\n }\n else {\n const mediaMatch = safeMatchMedia(\"(prefers-color-scheme: dark)\"), clientDarkMode = mediaMatch?.matches, defaultTheme = this._findDefaultTheme(clientDarkMode ? ThemeMode.dark : ThemeMode.light);\n if (defaultTheme) {\n this.load(defaultTheme.options);\n }\n }\n }\n}\n","import { InteractorType } from \"../../Enums/Types/InteractorType.js\";\nexport class InteractionManager {\n constructor(engine, container) {\n this.container = container;\n this._engine = engine;\n this._interactors = [];\n this._externalInteractors = [];\n this._particleInteractors = [];\n }\n externalInteract(delta) {\n for (const interactor of this._externalInteractors) {\n if (interactor.isEnabled()) {\n interactor.interact(delta);\n }\n }\n }\n handleClickMode(mode) {\n for (const interactor of this._externalInteractors) {\n interactor.handleClickMode?.(mode);\n }\n }\n async init() {\n this._interactors = await this._engine.getInteractors(this.container, true);\n this._externalInteractors = [];\n this._particleInteractors = [];\n for (const interactor of this._interactors) {\n switch (interactor.type) {\n case InteractorType.external:\n this._externalInteractors.push(interactor);\n break;\n case InteractorType.particles:\n this._particleInteractors.push(interactor);\n break;\n }\n interactor.init();\n }\n }\n particlesInteract(particle, delta) {\n for (const interactor of this._externalInteractors) {\n interactor.clear(particle, delta);\n }\n for (const interactor of this._particleInteractors) {\n if (interactor.isEnabled(particle)) {\n interactor.interact(particle, delta);\n }\n }\n }\n reset(particle) {\n for (const interactor of this._externalInteractors) {\n if (interactor.isEnabled()) {\n interactor.reset(particle);\n }\n }\n for (const interactor of this._particleInteractors) {\n if (interactor.isEnabled(particle)) {\n interactor.reset(particle);\n }\n }\n }\n}\n","import { Vector, Vector3d } from \"./Utils/Vectors.js\";\nimport { calcExactPositionOrRandomFromSize, clamp, degToRad, getDistance, getParticleBaseVelocity, getParticleDirectionAngle, getRandom, getRangeValue, randomInRange, setRangeValue, } from \"../Utils/NumberUtils.js\";\nimport { deepExtend, getPosition, initParticleNumericAnimationValue, isInArray, itemFromSingleOrMultiple, } from \"../Utils/Utils.js\";\nimport { errorPrefix, millisecondsToSeconds } from \"./Utils/Constants.js\";\nimport { getHslFromAnimation, rangeColorToRgb } from \"../Utils/ColorUtils.js\";\nimport { EventType } from \"../Enums/Types/EventType.js\";\nimport { Interactivity } from \"../Options/Classes/Interactivity/Interactivity.js\";\nimport { MoveDirection } from \"../Enums/Directions/MoveDirection.js\";\nimport { OutMode } from \"../Enums/Modes/OutMode.js\";\nimport { ParticleOutType } from \"../Enums/Types/ParticleOutType.js\";\nimport { PixelMode } from \"../Enums/Modes/PixelMode.js\";\nimport { alterHsl } from \"../Utils/CanvasUtils.js\";\nimport { loadParticlesOptions } from \"../Utils/OptionsUtils.js\";\nconst defaultRetryCount = 0, double = 2, half = 0.5, squareExp = 2, randomString = \"random\";\nfunction loadEffectData(effect, effectOptions, id, reduceDuplicates) {\n const effectData = effectOptions.options[effect];\n if (!effectData) {\n return;\n }\n return deepExtend({\n close: effectOptions.close,\n fill: effectOptions.fill,\n }, itemFromSingleOrMultiple(effectData, id, reduceDuplicates));\n}\nfunction loadShapeData(shape, shapeOptions, id, reduceDuplicates) {\n const shapeData = shapeOptions.options[shape];\n if (!shapeData) {\n return;\n }\n return deepExtend({\n close: shapeOptions.close,\n fill: shapeOptions.fill,\n }, itemFromSingleOrMultiple(shapeData, id, reduceDuplicates));\n}\nfunction fixOutMode(data) {\n if (!isInArray(data.outMode, data.checkModes)) {\n return;\n }\n const diameter = data.radius * double;\n if (data.coord > data.maxCoord - diameter) {\n data.setCb(-data.radius);\n }\n else if (data.coord < diameter) {\n data.setCb(data.radius);\n }\n}\nexport class Particle {\n constructor(engine, container) {\n this.container = container;\n this._calcPosition = (container, position, zIndex, tryCount = defaultRetryCount) => {\n for (const [, plugin] of container.plugins) {\n const pluginPos = plugin.particlePosition !== undefined ? plugin.particlePosition(position, this) : undefined;\n if (pluginPos) {\n return Vector3d.create(pluginPos.x, pluginPos.y, zIndex);\n }\n }\n const canvasSize = container.canvas.size, exactPosition = calcExactPositionOrRandomFromSize({\n size: canvasSize,\n position: position,\n }), pos = Vector3d.create(exactPosition.x, exactPosition.y, zIndex), radius = this.getRadius(), outModes = this.options.move.outModes, fixHorizontal = (outMode) => {\n fixOutMode({\n outMode,\n checkModes: [OutMode.bounce],\n coord: pos.x,\n maxCoord: container.canvas.size.width,\n setCb: (value) => (pos.x += value),\n radius,\n });\n }, fixVertical = (outMode) => {\n fixOutMode({\n outMode,\n checkModes: [OutMode.bounce],\n coord: pos.y,\n maxCoord: container.canvas.size.height,\n setCb: (value) => (pos.y += value),\n radius,\n });\n };\n fixHorizontal(outModes.left ?? outModes.default);\n fixHorizontal(outModes.right ?? outModes.default);\n fixVertical(outModes.top ?? outModes.default);\n fixVertical(outModes.bottom ?? outModes.default);\n if (this._checkOverlap(pos, tryCount)) {\n const increment = 1;\n return this._calcPosition(container, undefined, zIndex, tryCount + increment);\n }\n return pos;\n };\n this._calculateVelocity = () => {\n const baseVelocity = getParticleBaseVelocity(this.direction), res = baseVelocity.copy(), moveOptions = this.options.move;\n if (moveOptions.direction === MoveDirection.inside || moveOptions.direction === MoveDirection.outside) {\n return res;\n }\n const rad = degToRad(getRangeValue(moveOptions.angle.value)), radOffset = degToRad(getRangeValue(moveOptions.angle.offset)), range = {\n left: radOffset - rad * half,\n right: radOffset + rad * half,\n };\n if (!moveOptions.straight) {\n res.angle += randomInRange(setRangeValue(range.left, range.right));\n }\n if (moveOptions.random && typeof moveOptions.speed === \"number\") {\n res.length *= getRandom();\n }\n return res;\n };\n this._checkOverlap = (pos, tryCount = defaultRetryCount) => {\n const collisionsOptions = this.options.collisions, radius = this.getRadius();\n if (!collisionsOptions.enable) {\n return false;\n }\n const overlapOptions = collisionsOptions.overlap;\n if (overlapOptions.enable) {\n return false;\n }\n const retries = overlapOptions.retries, minRetries = 0;\n if (retries >= minRetries && tryCount > retries) {\n throw new Error(`${errorPrefix} particle is overlapping and can't be placed`);\n }\n return !!this.container.particles.find(particle => getDistance(pos, particle.position) < radius + particle.getRadius());\n };\n this._getRollColor = color => {\n if (!color || !this.roll || (!this.backColor && !this.roll.alter)) {\n return color;\n }\n const rollFactor = 1, none = 0, backFactor = this.roll.horizontal && this.roll.vertical ? double * rollFactor : rollFactor, backSum = this.roll.horizontal ? Math.PI * half : none, rolled = Math.floor(((this.roll.angle ?? none) + backSum) / (Math.PI / backFactor)) % double;\n if (!rolled) {\n return color;\n }\n if (this.backColor) {\n return this.backColor;\n }\n if (this.roll.alter) {\n return alterHsl(color, this.roll.alter.type, this.roll.alter.value);\n }\n return color;\n };\n this._initPosition = position => {\n const container = this.container, zIndexValue = getRangeValue(this.options.zIndex.value), minZ = 0;\n this.position = this._calcPosition(container, position, clamp(zIndexValue, minZ, container.zLayers));\n this.initialPosition = this.position.copy();\n const canvasSize = container.canvas.size, defaultRadius = 0;\n this.moveCenter = {\n ...getPosition(this.options.move.center, canvasSize),\n radius: this.options.move.center.radius ?? defaultRadius,\n mode: this.options.move.center.mode ?? PixelMode.percent,\n };\n this.direction = getParticleDirectionAngle(this.options.move.direction, this.position, this.moveCenter);\n switch (this.options.move.direction) {\n case MoveDirection.inside:\n this.outType = ParticleOutType.inside;\n break;\n case MoveDirection.outside:\n this.outType = ParticleOutType.outside;\n break;\n }\n this.offset = Vector.origin;\n };\n this._engine = engine;\n }\n destroy(override) {\n if (this.unbreakable || this.destroyed) {\n return;\n }\n this.destroyed = true;\n this.bubble.inRange = false;\n this.slow.inRange = false;\n const container = this.container, pathGenerator = this.pathGenerator, shapeDrawer = container.shapeDrawers.get(this.shape);\n shapeDrawer?.particleDestroy?.(this);\n for (const [, plugin] of container.plugins) {\n plugin.particleDestroyed?.(this, override);\n }\n for (const updater of container.particles.updaters) {\n updater.particleDestroyed?.(this, override);\n }\n pathGenerator?.reset(this);\n this._engine.dispatchEvent(EventType.particleDestroyed, {\n container: this.container,\n data: {\n particle: this,\n },\n });\n }\n draw(delta) {\n const container = this.container, canvas = container.canvas;\n for (const [, plugin] of container.plugins) {\n canvas.drawParticlePlugin(plugin, this, delta);\n }\n canvas.drawParticle(this, delta);\n }\n getFillColor() {\n return this._getRollColor(this.bubble.color ?? getHslFromAnimation(this.color));\n }\n getMass() {\n return this.getRadius() ** squareExp * Math.PI * half;\n }\n getPosition() {\n return {\n x: this.position.x + this.offset.x,\n y: this.position.y + this.offset.y,\n z: this.position.z,\n };\n }\n getRadius() {\n return this.bubble.radius ?? this.size.value;\n }\n getStrokeColor() {\n return this._getRollColor(this.bubble.color ?? getHslFromAnimation(this.strokeColor));\n }\n init(id, position, overrideOptions, group) {\n const container = this.container, engine = this._engine;\n this.id = id;\n this.group = group;\n this.effectClose = true;\n this.effectFill = true;\n this.shapeClose = true;\n this.shapeFill = true;\n this.pathRotation = false;\n this.lastPathTime = 0;\n this.destroyed = false;\n this.unbreakable = false;\n this.isRotating = false;\n this.rotation = 0;\n this.misplaced = false;\n this.retina = {\n maxDistance: {},\n };\n this.outType = ParticleOutType.normal;\n this.ignoresResizeRatio = true;\n const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = loadParticlesOptions(this._engine, container, mainOptions.particles), { reduceDuplicates } = particlesOptions, effectType = particlesOptions.effect.type, shapeType = particlesOptions.shape.type;\n this.effect = itemFromSingleOrMultiple(effectType, this.id, reduceDuplicates);\n this.shape = itemFromSingleOrMultiple(shapeType, this.id, reduceDuplicates);\n const effectOptions = particlesOptions.effect, shapeOptions = particlesOptions.shape;\n if (overrideOptions) {\n if (overrideOptions.effect?.type) {\n const overrideEffectType = overrideOptions.effect.type, effect = itemFromSingleOrMultiple(overrideEffectType, this.id, reduceDuplicates);\n if (effect) {\n this.effect = effect;\n effectOptions.load(overrideOptions.effect);\n }\n }\n if (overrideOptions.shape?.type) {\n const overrideShapeType = overrideOptions.shape.type, shape = itemFromSingleOrMultiple(overrideShapeType, this.id, reduceDuplicates);\n if (shape) {\n this.shape = shape;\n shapeOptions.load(overrideOptions.shape);\n }\n }\n }\n if (this.effect === randomString) {\n const availableEffects = [...this.container.effectDrawers.keys()];\n this.effect = availableEffects[Math.floor(Math.random() * availableEffects.length)];\n }\n if (this.shape === randomString) {\n const availableShapes = [...this.container.shapeDrawers.keys()];\n this.shape = availableShapes[Math.floor(Math.random() * availableShapes.length)];\n }\n this.effectData = loadEffectData(this.effect, effectOptions, this.id, reduceDuplicates);\n this.shapeData = loadShapeData(this.shape, shapeOptions, this.id, reduceDuplicates);\n particlesOptions.load(overrideOptions);\n const effectData = this.effectData;\n if (effectData) {\n particlesOptions.load(effectData.particles);\n }\n const shapeData = this.shapeData;\n if (shapeData) {\n particlesOptions.load(shapeData.particles);\n }\n const interactivity = new Interactivity(engine, container);\n interactivity.load(container.actualOptions.interactivity);\n interactivity.load(particlesOptions.interactivity);\n this.interactivity = interactivity;\n this.effectFill = effectData?.fill ?? particlesOptions.effect.fill;\n this.effectClose = effectData?.close ?? particlesOptions.effect.close;\n this.shapeFill = shapeData?.fill ?? particlesOptions.shape.fill;\n this.shapeClose = shapeData?.close ?? particlesOptions.shape.close;\n this.options = particlesOptions;\n const pathOptions = this.options.move.path;\n this.pathDelay = getRangeValue(pathOptions.delay.value) * millisecondsToSeconds;\n if (pathOptions.generator) {\n this.pathGenerator = this._engine.getPathGenerator(pathOptions.generator);\n if (this.pathGenerator && container.addPath(pathOptions.generator, this.pathGenerator)) {\n this.pathGenerator.init(container);\n }\n }\n container.retina.initParticle(this);\n this.size = initParticleNumericAnimationValue(this.options.size, pxRatio);\n this.bubble = {\n inRange: false,\n };\n this.slow = {\n inRange: false,\n factor: 1,\n };\n this._initPosition(position);\n this.initialVelocity = this._calculateVelocity();\n this.velocity = this.initialVelocity.copy();\n const decayOffset = 1;\n this.moveDecay = decayOffset - getRangeValue(this.options.move.decay);\n const particles = container.particles;\n particles.setLastZIndex(this.position.z);\n this.zIndexFactor = this.position.z / container.zLayers;\n this.sides = 24;\n let effectDrawer = container.effectDrawers.get(this.effect);\n if (!effectDrawer) {\n effectDrawer = this._engine.getEffectDrawer(this.effect);\n if (effectDrawer) {\n container.effectDrawers.set(this.effect, effectDrawer);\n }\n }\n if (effectDrawer?.loadEffect) {\n effectDrawer.loadEffect(this);\n }\n let shapeDrawer = container.shapeDrawers.get(this.shape);\n if (!shapeDrawer) {\n shapeDrawer = this._engine.getShapeDrawer(this.shape);\n if (shapeDrawer) {\n container.shapeDrawers.set(this.shape, shapeDrawer);\n }\n }\n if (shapeDrawer?.loadShape) {\n shapeDrawer.loadShape(this);\n }\n const sideCountFunc = shapeDrawer?.getSidesCount;\n if (sideCountFunc) {\n this.sides = sideCountFunc(this);\n }\n this.spawning = false;\n this.shadowColor = rangeColorToRgb(this.options.shadow.color);\n for (const updater of particles.updaters) {\n updater.init(this);\n }\n for (const mover of particles.movers) {\n mover.init?.(this);\n }\n effectDrawer?.particleInit?.(container, this);\n shapeDrawer?.particleInit?.(container, this);\n for (const [, plugin] of container.plugins) {\n plugin.particleCreated?.(this);\n }\n }\n isInsideCanvas() {\n const radius = this.getRadius(), canvasSize = this.container.canvas.size, position = this.position;\n return (position.x >= -radius &&\n position.y >= -radius &&\n position.y <= canvasSize.height + radius &&\n position.x <= canvasSize.width + radius);\n }\n isVisible() {\n return !this.destroyed && !this.spawning && this.isInsideCanvas();\n }\n reset() {\n for (const updater of this.container.particles.updaters) {\n updater.reset?.(this);\n }\n }\n}\n","export class Point {\n constructor(position, particle) {\n this.position = position;\n this.particle = particle;\n }\n}\n","export var RangeType;\n(function (RangeType) {\n RangeType[\"circle\"] = \"circle\";\n RangeType[\"rectangle\"] = \"rectangle\";\n})(RangeType || (RangeType = {}));\n","import { RangeType } from \"../../Types/RangeType.js\";\nimport { getDistance } from \"../../Utils/NumberUtils.js\";\nconst squareExp = 2;\nexport class BaseRange {\n constructor(x, y, type) {\n this.position = {\n x: x,\n y: y,\n };\n this.type = type;\n }\n}\nexport class Circle extends BaseRange {\n constructor(x, y, radius) {\n super(x, y, RangeType.circle);\n this.radius = radius;\n }\n contains(point) {\n return getDistance(point, this.position) <= this.radius;\n }\n intersects(range) {\n const pos1 = this.position, pos2 = range.position, distPos = { x: Math.abs(pos2.x - pos1.x), y: Math.abs(pos2.y - pos1.y) }, r = this.radius;\n if (range instanceof Circle || range.type === RangeType.circle) {\n const circleRange = range, rSum = r + circleRange.radius, dist = Math.sqrt(distPos.x ** squareExp + distPos.y ** squareExp);\n return rSum > dist;\n }\n else if (range instanceof Rectangle || range.type === RangeType.rectangle) {\n const rectRange = range, { width, height } = rectRange.size, edges = Math.pow(distPos.x - width, squareExp) + Math.pow(distPos.y - height, squareExp);\n return (edges <= r ** squareExp ||\n (distPos.x <= r + width && distPos.y <= r + height) ||\n distPos.x <= width ||\n distPos.y <= height);\n }\n return false;\n }\n}\nexport class Rectangle extends BaseRange {\n constructor(x, y, width, height) {\n super(x, y, RangeType.rectangle);\n this.size = {\n height: height,\n width: width,\n };\n }\n contains(point) {\n const w = this.size.width, h = this.size.height, pos = this.position;\n return point.x >= pos.x && point.x <= pos.x + w && point.y >= pos.y && point.y <= pos.y + h;\n }\n intersects(range) {\n if (range instanceof Circle) {\n return range.intersects(this);\n }\n const w = this.size.width, h = this.size.height, pos1 = this.position, pos2 = range.position, size2 = range instanceof Rectangle ? range.size : { width: 0, height: 0 }, w2 = size2.width, h2 = size2.height;\n return pos2.x < pos1.x + w && pos2.x + w2 > pos1.x && pos2.y < pos1.y + h && pos2.y + h2 > pos1.y;\n }\n}\n","import { Circle, Rectangle } from \"./Ranges.js\";\nimport { getDistance } from \"../../Utils/NumberUtils.js\";\nconst half = 0.5, double = 2, subdivideCount = 4;\nexport class QuadTree {\n constructor(rectangle, capacity) {\n this.rectangle = rectangle;\n this.capacity = capacity;\n this._subdivide = () => {\n const { x, y } = this.rectangle.position, { width, height } = this.rectangle.size, { capacity } = this;\n for (let i = 0; i < subdivideCount; i++) {\n const fixedIndex = i % double;\n this._subs.push(new QuadTree(new Rectangle(x + width * half * fixedIndex, y + height * half * (Math.round(i * half) - fixedIndex), width * half, height * half), capacity));\n }\n this._divided = true;\n };\n this._points = [];\n this._divided = false;\n this._subs = [];\n }\n insert(point) {\n if (!this.rectangle.contains(point.position)) {\n return false;\n }\n if (this._points.length < this.capacity) {\n this._points.push(point);\n return true;\n }\n if (!this._divided) {\n this._subdivide();\n }\n return this._subs.some(sub => sub.insert(point));\n }\n query(range, check) {\n const res = [];\n if (!range.intersects(this.rectangle)) {\n return [];\n }\n for (const p of this._points) {\n if (!range.contains(p.position) &&\n getDistance(range.position, p.position) > p.particle.getRadius() &&\n (!check || check(p.particle))) {\n continue;\n }\n res.push(p.particle);\n }\n if (this._divided) {\n for (const sub of this._subs) {\n res.push(...sub.query(range, check));\n }\n }\n return res;\n }\n queryCircle(position, radius, check) {\n return this.query(new Circle(position.x, position.y, radius), check);\n }\n queryRectangle(position, size, check) {\n return this.query(new Rectangle(position.x, position.y, size.width, size.height), check);\n }\n}\n","import { getLogger, getPosition } from \"../Utils/Utils.js\";\nimport { EventType } from \"../Enums/Types/EventType.js\";\nimport { InteractionManager } from \"./Utils/InteractionManager.js\";\nimport { LimitMode } from \"../Enums/Modes/LimitMode.js\";\nimport { Particle } from \"./Particle.js\";\nimport { Point } from \"./Utils/Point.js\";\nimport { QuadTree } from \"./Utils/QuadTree.js\";\nimport { Rectangle } from \"./Utils/Ranges.js\";\nimport { errorPrefix } from \"./Utils/Constants.js\";\nconst qTreeCapacity = 4, squareExp = 2, defaultRemoveQuantity = 1;\nconst qTreeRectangle = (canvasSize) => {\n const { height, width } = canvasSize, posOffset = -0.25, sizeFactor = 1.5;\n return new Rectangle(posOffset * width, posOffset * height, sizeFactor * width, sizeFactor * height);\n};\nexport class Particles {\n constructor(engine, container) {\n this._addToPool = (...particles) => {\n this._pool.push(...particles);\n };\n this._applyDensity = (options, manualCount, group) => {\n const numberOptions = options.number;\n if (!options.number.density?.enable) {\n if (group === undefined) {\n this._limit = numberOptions.limit.value;\n }\n else if (numberOptions.limit) {\n this._groupLimits.set(group, numberOptions.limit.value);\n }\n return;\n }\n const densityFactor = this._initDensityFactor(numberOptions.density), optParticlesNumber = numberOptions.value, minLimit = 0, optParticlesLimit = numberOptions.limit.value > minLimit ? numberOptions.limit.value : optParticlesNumber, particlesNumber = Math.min(optParticlesNumber, optParticlesLimit) * densityFactor + manualCount, particlesCount = Math.min(this.count, this.filter(t => t.group === group).length);\n if (group === undefined) {\n this._limit = numberOptions.limit.value * densityFactor;\n }\n else {\n this._groupLimits.set(group, numberOptions.limit.value * densityFactor);\n }\n if (particlesCount < particlesNumber) {\n this.push(Math.abs(particlesNumber - particlesCount), undefined, options, group);\n }\n else if (particlesCount > particlesNumber) {\n this.removeQuantity(particlesCount - particlesNumber, group);\n }\n };\n this._initDensityFactor = densityOptions => {\n const container = this._container, defaultFactor = 1;\n if (!container.canvas.element || !densityOptions.enable) {\n return defaultFactor;\n }\n const canvas = container.canvas.element, pxRatio = container.retina.pixelRatio;\n return (canvas.width * canvas.height) / (densityOptions.height * densityOptions.width * pxRatio ** squareExp);\n };\n this._pushParticle = (position, overrideOptions, group, initializer) => {\n try {\n let particle = this._pool.pop();\n if (!particle) {\n particle = new Particle(this._engine, this._container);\n }\n particle.init(this._nextId, position, overrideOptions, group);\n let canAdd = true;\n if (initializer) {\n canAdd = initializer(particle);\n }\n if (!canAdd) {\n return;\n }\n this._array.push(particle);\n this._zArray.push(particle);\n this._nextId++;\n this._engine.dispatchEvent(EventType.particleAdded, {\n container: this._container,\n data: {\n particle,\n },\n });\n return particle;\n }\n catch (e) {\n getLogger().warning(`${errorPrefix} adding particle: ${e}`);\n }\n };\n this._removeParticle = (index, group, override) => {\n const particle = this._array[index];\n if (!particle || particle.group !== group) {\n return false;\n }\n const zIdx = this._zArray.indexOf(particle), deleteCount = 1;\n this._array.splice(index, deleteCount);\n this._zArray.splice(zIdx, deleteCount);\n particle.destroy(override);\n this._engine.dispatchEvent(EventType.particleRemoved, {\n container: this._container,\n data: {\n particle,\n },\n });\n this._addToPool(particle);\n return true;\n };\n this._engine = engine;\n this._container = container;\n this._nextId = 0;\n this._array = [];\n this._zArray = [];\n this._pool = [];\n this._limit = 0;\n this._groupLimits = new Map();\n this._needsSort = false;\n this._lastZIndex = 0;\n this._interactionManager = new InteractionManager(engine, container);\n this._pluginsInitialized = false;\n const canvasSize = container.canvas.size;\n this.quadTree = new QuadTree(qTreeRectangle(canvasSize), qTreeCapacity);\n this.movers = [];\n this.updaters = [];\n }\n get count() {\n return this._array.length;\n }\n addManualParticles() {\n const container = this._container, options = container.actualOptions;\n options.manualParticles.forEach(p => this.addParticle(p.position ? getPosition(p.position, container.canvas.size) : undefined, p.options));\n }\n addParticle(position, overrideOptions, group, initializer) {\n const limitMode = this._container.actualOptions.particles.number.limit.mode, limit = group === undefined ? this._limit : this._groupLimits.get(group) ?? this._limit, currentCount = this.count, minLimit = 0;\n if (limit > minLimit) {\n switch (limitMode) {\n case LimitMode.delete: {\n const countOffset = 1, minCount = 0, countToRemove = currentCount + countOffset - limit;\n if (countToRemove > minCount) {\n this.removeQuantity(countToRemove);\n }\n break;\n }\n case LimitMode.wait:\n if (currentCount >= limit) {\n return;\n }\n break;\n }\n }\n return this._pushParticle(position, overrideOptions, group, initializer);\n }\n clear() {\n this._array = [];\n this._zArray = [];\n this._pluginsInitialized = false;\n }\n destroy() {\n this._array = [];\n this._zArray = [];\n this.movers = [];\n this.updaters = [];\n }\n draw(delta) {\n const container = this._container, canvas = container.canvas;\n canvas.clear();\n this.update(delta);\n for (const [, plugin] of container.plugins) {\n canvas.drawPlugin(plugin, delta);\n }\n for (const p of this._zArray) {\n p.draw(delta);\n }\n }\n filter(condition) {\n return this._array.filter(condition);\n }\n find(condition) {\n return this._array.find(condition);\n }\n get(index) {\n return this._array[index];\n }\n handleClickMode(mode) {\n this._interactionManager.handleClickMode(mode);\n }\n async init() {\n const container = this._container, options = container.actualOptions;\n this._lastZIndex = 0;\n this._needsSort = false;\n await this.initPlugins();\n let handled = false;\n for (const [, plugin] of container.plugins) {\n handled = plugin.particlesInitialization?.() ?? handled;\n if (handled) {\n break;\n }\n }\n this.addManualParticles();\n if (!handled) {\n const particlesOptions = options.particles, groups = particlesOptions.groups;\n for (const group in groups) {\n const groupOptions = groups[group];\n for (let i = this.count, j = 0; j < groupOptions.number?.value && i < particlesOptions.number.value; i++, j++) {\n this.addParticle(undefined, groupOptions, group);\n }\n }\n for (let i = this.count; i < particlesOptions.number.value; i++) {\n this.addParticle();\n }\n }\n }\n async initPlugins() {\n if (this._pluginsInitialized) {\n return;\n }\n const container = this._container;\n this.movers = await this._engine.getMovers(container, true);\n this.updaters = await this._engine.getUpdaters(container, true);\n await this._interactionManager.init();\n for (const [, pathGenerator] of container.pathGenerators) {\n pathGenerator.init(container);\n }\n }\n push(nb, mouse, overrideOptions, group) {\n for (let i = 0; i < nb; i++) {\n this.addParticle(mouse?.position, overrideOptions, group);\n }\n }\n async redraw() {\n this.clear();\n await this.init();\n this.draw({ value: 0, factor: 0 });\n }\n remove(particle, group, override) {\n this.removeAt(this._array.indexOf(particle), undefined, group, override);\n }\n removeAt(index, quantity = defaultRemoveQuantity, group, override) {\n const minIndex = 0;\n if (index < minIndex || index > this.count) {\n return;\n }\n let deleted = 0;\n for (let i = index; deleted < quantity && i < this.count; i++) {\n if (this._removeParticle(i--, group, override)) {\n deleted++;\n }\n }\n }\n removeQuantity(quantity, group) {\n const defaultIndex = 0;\n this.removeAt(defaultIndex, quantity, group);\n }\n setDensity() {\n const options = this._container.actualOptions, groups = options.particles.groups, manualCount = 0;\n for (const group in groups) {\n this._applyDensity(groups[group], manualCount, group);\n }\n this._applyDensity(options.particles, options.manualParticles.length);\n }\n setLastZIndex(zIndex) {\n this._lastZIndex = zIndex;\n this._needsSort = this._needsSort || this._lastZIndex < zIndex;\n }\n setResizeFactor(factor) {\n this._resizeFactor = factor;\n }\n update(delta) {\n const container = this._container, particlesToDelete = new Set();\n this.quadTree = new QuadTree(qTreeRectangle(container.canvas.size), qTreeCapacity);\n for (const [, pathGenerator] of container.pathGenerators) {\n pathGenerator.update();\n }\n for (const [, plugin] of container.plugins) {\n plugin.update?.(delta);\n }\n const resizeFactor = this._resizeFactor;\n for (const particle of this._array) {\n if (resizeFactor && !particle.ignoresResizeRatio) {\n particle.position.x *= resizeFactor.width;\n particle.position.y *= resizeFactor.height;\n particle.initialPosition.x *= resizeFactor.width;\n particle.initialPosition.y *= resizeFactor.height;\n }\n particle.ignoresResizeRatio = false;\n this._interactionManager.reset(particle);\n for (const [, plugin] of this._container.plugins) {\n if (particle.destroyed) {\n break;\n }\n plugin.particleUpdate?.(particle, delta);\n }\n for (const mover of this.movers) {\n if (mover.isEnabled(particle)) {\n mover.move(particle, delta);\n }\n }\n if (particle.destroyed) {\n particlesToDelete.add(particle);\n continue;\n }\n this.quadTree.insert(new Point(particle.getPosition(), particle));\n }\n if (particlesToDelete.size) {\n const checkDelete = (p) => !particlesToDelete.has(p);\n this._array = this.filter(checkDelete);\n this._zArray = this._zArray.filter(checkDelete);\n for (const particle of particlesToDelete) {\n this._engine.dispatchEvent(EventType.particleRemoved, {\n container: this._container,\n data: {\n particle,\n },\n });\n }\n this._addToPool(...particlesToDelete);\n }\n this._interactionManager.externalInteract(delta);\n for (const particle of this._array) {\n for (const updater of this.updaters) {\n updater.update(particle, delta);\n }\n if (!particle.destroyed && !particle.spawning) {\n this._interactionManager.particlesInteract(particle, delta);\n }\n }\n delete this._resizeFactor;\n if (this._needsSort) {\n const zArray = this._zArray;\n zArray.sort((a, b) => b.position.z - a.position.z || a.id - b.id);\n const lengthOffset = 1;\n this._lastZIndex = zArray[zArray.length - lengthOffset].position.z;\n this._needsSort = false;\n }\n }\n}\n","import { getRangeValue } from \"../Utils/NumberUtils.js\";\nimport { isSsr } from \"../Utils/Utils.js\";\nconst defaultRatio = 1, defaultReduceFactor = 1;\nexport class Retina {\n constructor(container) {\n this.container = container;\n this.pixelRatio = defaultRatio;\n this.reduceFactor = defaultReduceFactor;\n }\n init() {\n const container = this.container, options = container.actualOptions;\n this.pixelRatio = !options.detectRetina || isSsr() ? defaultRatio : window.devicePixelRatio;\n this.reduceFactor = defaultReduceFactor;\n const ratio = this.pixelRatio, canvas = container.canvas;\n if (canvas.element) {\n const element = canvas.element;\n canvas.size.width = element.offsetWidth * ratio;\n canvas.size.height = element.offsetHeight * ratio;\n }\n const particles = options.particles, moveOptions = particles.move;\n this.maxSpeed = getRangeValue(moveOptions.gravity.maxSpeed) * ratio;\n this.sizeAnimationSpeed = getRangeValue(particles.size.animation.speed) * ratio;\n }\n initParticle(particle) {\n const options = particle.options, ratio = this.pixelRatio, moveOptions = options.move, moveDistance = moveOptions.distance, props = particle.retina;\n props.moveDrift = getRangeValue(moveOptions.drift) * ratio;\n props.moveSpeed = getRangeValue(moveOptions.speed) * ratio;\n props.sizeAnimationSpeed = getRangeValue(options.size.animation.speed) * ratio;\n const maxDistance = props.maxDistance;\n maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;\n maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;\n props.maxSpeed = getRangeValue(moveOptions.gravity.maxSpeed) * ratio;\n }\n}\n","import { animate, cancelAnimation, getRangeValue } from \"../Utils/NumberUtils.js\";\nimport { errorPrefix, millisecondsToSeconds } from \"./Utils/Constants.js\";\nimport { getLogger, safeIntersectionObserver } from \"../Utils/Utils.js\";\nimport { Canvas } from \"./Canvas.js\";\nimport { EventListeners } from \"./Utils/EventListeners.js\";\nimport { EventType } from \"../Enums/Types/EventType.js\";\nimport { Options } from \"../Options/Classes/Options.js\";\nimport { Particles } from \"./Particles.js\";\nimport { Retina } from \"./Retina.js\";\nimport { loadOptions } from \"../Utils/OptionsUtils.js\";\nfunction guardCheck(container) {\n return container && !container.destroyed;\n}\nconst defaultFps = 60;\nfunction initDelta(value, fpsLimit = defaultFps, smooth = false) {\n return {\n value,\n factor: smooth ? defaultFps / fpsLimit : (defaultFps * value) / millisecondsToSeconds,\n };\n}\nfunction loadContainerOptions(engine, container, ...sourceOptionsArr) {\n const options = new Options(engine, container);\n loadOptions(options, ...sourceOptionsArr);\n return options;\n}\nexport class Container {\n constructor(engine, id, sourceOptions) {\n this._intersectionManager = entries => {\n if (!guardCheck(this) || !this.actualOptions.pauseOnOutsideViewport) {\n return;\n }\n for (const entry of entries) {\n if (entry.target !== this.interactivity.element) {\n continue;\n }\n if (entry.isIntersecting) {\n void this.play();\n }\n else {\n this.pause();\n }\n }\n };\n this._nextFrame = (timestamp) => {\n try {\n if (!this._smooth &&\n this._lastFrameTime !== undefined &&\n timestamp < this._lastFrameTime + millisecondsToSeconds / this.fpsLimit) {\n this.draw(false);\n return;\n }\n this._lastFrameTime ??= timestamp;\n const delta = initDelta(timestamp - this._lastFrameTime, this.fpsLimit, this._smooth);\n this.addLifeTime(delta.value);\n this._lastFrameTime = timestamp;\n if (delta.value > millisecondsToSeconds) {\n this.draw(false);\n return;\n }\n this.particles.draw(delta);\n if (!this.alive()) {\n this.destroy();\n return;\n }\n if (this.animationStatus) {\n this.draw(false);\n }\n }\n catch (e) {\n getLogger().error(`${errorPrefix} in animation loop`, e);\n }\n };\n this._engine = engine;\n this.id = Symbol(id);\n this.fpsLimit = 120;\n this._smooth = false;\n this._delay = 0;\n this._duration = 0;\n this._lifeTime = 0;\n this._firstStart = true;\n this.started = false;\n this.destroyed = false;\n this._paused = true;\n this._lastFrameTime = 0;\n this.zLayers = 100;\n this.pageHidden = false;\n this._clickHandlers = new Map();\n this._sourceOptions = sourceOptions;\n this._initialSourceOptions = sourceOptions;\n this.retina = new Retina(this);\n this.canvas = new Canvas(this);\n this.particles = new Particles(this._engine, this);\n this.pathGenerators = new Map();\n this.interactivity = {\n mouse: {\n clicking: false,\n inside: false,\n },\n };\n this.plugins = new Map();\n this.effectDrawers = new Map();\n this.shapeDrawers = new Map();\n this._options = loadContainerOptions(this._engine, this);\n this.actualOptions = loadContainerOptions(this._engine, this);\n this._eventListeners = new EventListeners(this);\n this._intersectionObserver = safeIntersectionObserver(entries => this._intersectionManager(entries));\n this._engine.dispatchEvent(EventType.containerBuilt, { container: this });\n }\n get animationStatus() {\n return !this._paused && !this.pageHidden && guardCheck(this);\n }\n get options() {\n return this._options;\n }\n get sourceOptions() {\n return this._sourceOptions;\n }\n addClickHandler(callback) {\n if (!guardCheck(this)) {\n return;\n }\n const el = this.interactivity.element;\n if (!el) {\n return;\n }\n const clickOrTouchHandler = (e, pos, radius) => {\n if (!guardCheck(this)) {\n return;\n }\n const pxRatio = this.retina.pixelRatio, posRetina = {\n x: pos.x * pxRatio,\n y: pos.y * pxRatio,\n }, particles = this.particles.quadTree.queryCircle(posRetina, radius * pxRatio);\n callback(e, particles);\n }, clickHandler = (e) => {\n if (!guardCheck(this)) {\n return;\n }\n const mouseEvent = e, pos = {\n x: mouseEvent.offsetX || mouseEvent.clientX,\n y: mouseEvent.offsetY || mouseEvent.clientY,\n }, radius = 1;\n clickOrTouchHandler(e, pos, radius);\n }, touchStartHandler = () => {\n if (!guardCheck(this)) {\n return;\n }\n touched = true;\n touchMoved = false;\n }, touchMoveHandler = () => {\n if (!guardCheck(this)) {\n return;\n }\n touchMoved = true;\n }, touchEndHandler = (e) => {\n if (!guardCheck(this)) {\n return;\n }\n if (touched && !touchMoved) {\n const touchEvent = e, lengthOffset = 1;\n let lastTouch = touchEvent.touches[touchEvent.touches.length - lengthOffset];\n if (!lastTouch) {\n lastTouch = touchEvent.changedTouches[touchEvent.changedTouches.length - lengthOffset];\n if (!lastTouch) {\n return;\n }\n }\n const element = this.canvas.element, canvasRect = element ? element.getBoundingClientRect() : undefined, minCoordinate = 0, pos = {\n x: lastTouch.clientX - (canvasRect ? canvasRect.left : minCoordinate),\n y: lastTouch.clientY - (canvasRect ? canvasRect.top : minCoordinate),\n };\n clickOrTouchHandler(e, pos, Math.max(lastTouch.radiusX, lastTouch.radiusY));\n }\n touched = false;\n touchMoved = false;\n }, touchCancelHandler = () => {\n if (!guardCheck(this)) {\n return;\n }\n touched = false;\n touchMoved = false;\n };\n let touched = false, touchMoved = false;\n this._clickHandlers.set(\"click\", clickHandler);\n this._clickHandlers.set(\"touchstart\", touchStartHandler);\n this._clickHandlers.set(\"touchmove\", touchMoveHandler);\n this._clickHandlers.set(\"touchend\", touchEndHandler);\n this._clickHandlers.set(\"touchcancel\", touchCancelHandler);\n for (const [key, handler] of this._clickHandlers) {\n el.addEventListener(key, handler);\n }\n }\n addLifeTime(value) {\n this._lifeTime += value;\n }\n addPath(key, generator, override = false) {\n if (!guardCheck(this) || (!override && this.pathGenerators.has(key))) {\n return false;\n }\n this.pathGenerators.set(key, generator);\n return true;\n }\n alive() {\n return !this._duration || this._lifeTime <= this._duration;\n }\n clearClickHandlers() {\n if (!guardCheck(this)) {\n return;\n }\n for (const [key, handler] of this._clickHandlers) {\n this.interactivity.element?.removeEventListener(key, handler);\n }\n this._clickHandlers.clear();\n }\n destroy(remove = true) {\n if (!guardCheck(this)) {\n return;\n }\n this.stop();\n this.clearClickHandlers();\n this.particles.destroy();\n this.canvas.destroy();\n for (const [, effectDrawer] of this.effectDrawers) {\n effectDrawer.destroy?.(this);\n }\n for (const [, shapeDrawer] of this.shapeDrawers) {\n shapeDrawer.destroy?.(this);\n }\n for (const key of this.effectDrawers.keys()) {\n this.effectDrawers.delete(key);\n }\n for (const key of this.shapeDrawers.keys()) {\n this.shapeDrawers.delete(key);\n }\n this._engine.clearPlugins(this);\n this.destroyed = true;\n if (remove) {\n const mainArr = this._engine.items, idx = mainArr.findIndex(t => t === this), minIndex = 0;\n if (idx >= minIndex) {\n const deleteCount = 1;\n mainArr.splice(idx, deleteCount);\n }\n }\n this._engine.dispatchEvent(EventType.containerDestroyed, { container: this });\n }\n draw(force) {\n if (!guardCheck(this)) {\n return;\n }\n let refreshTime = force;\n const frame = (timestamp) => {\n if (refreshTime) {\n this._lastFrameTime = undefined;\n refreshTime = false;\n }\n this._nextFrame(timestamp);\n };\n this._drawAnimationFrame = animate(timestamp => frame(timestamp));\n }\n async export(type, options = {}) {\n for (const [, plugin] of this.plugins) {\n if (!plugin.export) {\n continue;\n }\n const res = await plugin.export(type, options);\n if (!res.supported) {\n continue;\n }\n return res.blob;\n }\n getLogger().error(`${errorPrefix} - Export plugin with type ${type} not found`);\n }\n handleClickMode(mode) {\n if (!guardCheck(this)) {\n return;\n }\n this.particles.handleClickMode(mode);\n for (const [, plugin] of this.plugins) {\n plugin.handleClickMode?.(mode);\n }\n }\n async init() {\n if (!guardCheck(this)) {\n return;\n }\n const effects = this._engine.getSupportedEffects();\n for (const type of effects) {\n const drawer = this._engine.getEffectDrawer(type);\n if (drawer) {\n this.effectDrawers.set(type, drawer);\n }\n }\n const shapes = this._engine.getSupportedShapes();\n for (const type of shapes) {\n const drawer = this._engine.getShapeDrawer(type);\n if (drawer) {\n this.shapeDrawers.set(type, drawer);\n }\n }\n await this.particles.initPlugins();\n this._options = loadContainerOptions(this._engine, this, this._initialSourceOptions, this.sourceOptions);\n this.actualOptions = loadContainerOptions(this._engine, this, this._options);\n const availablePlugins = await this._engine.getAvailablePlugins(this);\n for (const [id, plugin] of availablePlugins) {\n this.plugins.set(id, plugin);\n }\n this.retina.init();\n await this.canvas.init();\n this.updateActualOptions();\n this.canvas.initBackground();\n this.canvas.resize();\n const { zLayers, duration, delay, fpsLimit, smooth } = this.actualOptions;\n this.zLayers = zLayers;\n this._duration = getRangeValue(duration) * millisecondsToSeconds;\n this._delay = getRangeValue(delay) * millisecondsToSeconds;\n this._lifeTime = 0;\n const defaultFpsLimit = 120, minFpsLimit = 0;\n this.fpsLimit = fpsLimit > minFpsLimit ? fpsLimit : defaultFpsLimit;\n this._smooth = smooth;\n for (const [, drawer] of this.effectDrawers) {\n await drawer.init?.(this);\n }\n for (const [, drawer] of this.shapeDrawers) {\n await drawer.init?.(this);\n }\n for (const [, plugin] of this.plugins) {\n await plugin.init?.();\n }\n this._engine.dispatchEvent(EventType.containerInit, { container: this });\n await this.particles.init();\n this.particles.setDensity();\n for (const [, plugin] of this.plugins) {\n plugin.particlesSetup?.();\n }\n this._engine.dispatchEvent(EventType.particlesSetup, { container: this });\n }\n async loadTheme(name) {\n if (!guardCheck(this)) {\n return;\n }\n this._currentTheme = name;\n await this.refresh();\n }\n pause() {\n if (!guardCheck(this)) {\n return;\n }\n if (this._drawAnimationFrame !== undefined) {\n cancelAnimation(this._drawAnimationFrame);\n delete this._drawAnimationFrame;\n }\n if (this._paused) {\n return;\n }\n for (const [, plugin] of this.plugins) {\n plugin.pause?.();\n }\n if (!this.pageHidden) {\n this._paused = true;\n }\n this._engine.dispatchEvent(EventType.containerPaused, { container: this });\n }\n play(force) {\n if (!guardCheck(this)) {\n return;\n }\n const needsUpdate = this._paused || force;\n if (this._firstStart && !this.actualOptions.autoPlay) {\n this._firstStart = false;\n return;\n }\n if (this._paused) {\n this._paused = false;\n }\n if (needsUpdate) {\n for (const [, plugin] of this.plugins) {\n if (plugin.play) {\n plugin.play();\n }\n }\n }\n this._engine.dispatchEvent(EventType.containerPlay, { container: this });\n this.draw(needsUpdate ?? false);\n }\n async refresh() {\n if (!guardCheck(this)) {\n return;\n }\n this.stop();\n return this.start();\n }\n async reset(sourceOptions) {\n if (!guardCheck(this)) {\n return;\n }\n this._initialSourceOptions = sourceOptions;\n this._sourceOptions = sourceOptions;\n this._options = loadContainerOptions(this._engine, this, this._initialSourceOptions, this.sourceOptions);\n this.actualOptions = loadContainerOptions(this._engine, this, this._options);\n return this.refresh();\n }\n async start() {\n if (!guardCheck(this) || this.started) {\n return;\n }\n await this.init();\n this.started = true;\n await new Promise(resolve => {\n const start = async () => {\n this._eventListeners.addListeners();\n if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {\n this._intersectionObserver.observe(this.interactivity.element);\n }\n for (const [, plugin] of this.plugins) {\n await plugin.start?.();\n }\n this._engine.dispatchEvent(EventType.containerStarted, { container: this });\n this.play();\n resolve();\n };\n this._delayTimeout = setTimeout(() => void start(), this._delay);\n });\n }\n stop() {\n if (!guardCheck(this) || !this.started) {\n return;\n }\n if (this._delayTimeout) {\n clearTimeout(this._delayTimeout);\n delete this._delayTimeout;\n }\n this._firstStart = true;\n this.started = false;\n this._eventListeners.removeListeners();\n this.pause();\n this.particles.clear();\n this.canvas.stop();\n if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {\n this._intersectionObserver.unobserve(this.interactivity.element);\n }\n for (const [, plugin] of this.plugins) {\n plugin.stop?.();\n }\n for (const key of this.plugins.keys()) {\n this.plugins.delete(key);\n }\n this._sourceOptions = this._options;\n this._engine.dispatchEvent(EventType.containerStopped, { container: this });\n }\n updateActualOptions() {\n this.actualOptions.responsive = [];\n const newMaxWidth = this.actualOptions.setResponsive(this.canvas.size.width, this.retina.pixelRatio, this._options);\n this.actualOptions.setTheme(this._currentTheme);\n if (this._responsiveMaxWidth === newMaxWidth) {\n return false;\n }\n this._responsiveMaxWidth = newMaxWidth;\n return true;\n }\n}\n","export class EventDispatcher {\n constructor() {\n this._listeners = new Map();\n }\n addEventListener(type, listener) {\n this.removeEventListener(type, listener);\n let arr = this._listeners.get(type);\n if (!arr) {\n arr = [];\n this._listeners.set(type, arr);\n }\n arr.push(listener);\n }\n dispatchEvent(type, args) {\n const listeners = this._listeners.get(type);\n listeners?.forEach(handler => handler(args));\n }\n hasEventListener(type) {\n return !!this._listeners.get(type);\n }\n removeAllEventListeners(type) {\n if (!type) {\n this._listeners = new Map();\n }\n else {\n this._listeners.delete(type);\n }\n }\n removeEventListener(type, listener) {\n const arr = this._listeners.get(type);\n if (!arr) {\n return;\n }\n const length = arr.length, idx = arr.indexOf(listener), minIndex = 0;\n if (idx < minIndex) {\n return;\n }\n const deleteCount = 1;\n if (length === deleteCount) {\n this._listeners.delete(type);\n }\n else {\n arr.splice(idx, deleteCount);\n }\n }\n}\n","import { errorPrefix, generatedAttribute } from \"./Utils/Constants.js\";\nimport { executeOnSingleOrMultiple, getLogger, itemFromSingleOrMultiple } from \"../Utils/Utils.js\";\nimport { Container } from \"./Container.js\";\nimport { EventDispatcher } from \"../Utils/EventDispatcher.js\";\nimport { EventType } from \"../Enums/Types/EventType.js\";\nimport { getRandom } from \"../Utils/NumberUtils.js\";\nasync function getItemsFromInitializer(container, map, initializers, force = false) {\n let res = map.get(container);\n if (!res || force) {\n res = await Promise.all([...initializers.values()].map(t => t(container)));\n map.set(container, res);\n }\n return res;\n}\nasync function getDataFromUrl(data) {\n const url = itemFromSingleOrMultiple(data.url, data.index);\n if (!url) {\n return data.fallback;\n }\n const response = await fetch(url);\n if (response.ok) {\n return (await response.json());\n }\n getLogger().error(`${errorPrefix} ${response.status} while retrieving config file`);\n return data.fallback;\n}\nconst generatedTrue = \"true\", generatedFalse = \"false\", canvasTag = \"canvas\", getCanvasFromContainer = (domContainer) => {\n let canvasEl;\n if (domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === canvasTag) {\n canvasEl = domContainer;\n if (!canvasEl.dataset[generatedAttribute]) {\n canvasEl.dataset[generatedAttribute] = generatedFalse;\n }\n }\n else {\n const existingCanvases = domContainer.getElementsByTagName(canvasTag);\n if (existingCanvases.length) {\n const firstIndex = 0;\n canvasEl = existingCanvases[firstIndex];\n canvasEl.dataset[generatedAttribute] = generatedFalse;\n }\n else {\n canvasEl = document.createElement(canvasTag);\n canvasEl.dataset[generatedAttribute] = generatedTrue;\n domContainer.appendChild(canvasEl);\n }\n }\n const fullPercent = \"100%\";\n if (!canvasEl.style.width) {\n canvasEl.style.width = fullPercent;\n }\n if (!canvasEl.style.height) {\n canvasEl.style.height = fullPercent;\n }\n return canvasEl;\n}, getDomContainer = (id, source) => {\n let domContainer = source ?? document.getElementById(id);\n if (domContainer) {\n return domContainer;\n }\n domContainer = document.createElement(\"div\");\n domContainer.id = id;\n domContainer.dataset[generatedAttribute] = generatedTrue;\n document.body.append(domContainer);\n return domContainer;\n};\nexport class Engine {\n constructor() {\n this._configs = new Map();\n this._domArray = [];\n this._eventDispatcher = new EventDispatcher();\n this._initialized = false;\n this.plugins = [];\n this._initializers = {\n interactors: new Map(),\n movers: new Map(),\n updaters: new Map(),\n };\n this.interactors = new Map();\n this.movers = new Map();\n this.updaters = new Map();\n this.presets = new Map();\n this.effectDrawers = new Map();\n this.shapeDrawers = new Map();\n this.pathGenerators = new Map();\n }\n get configs() {\n const res = {};\n for (const [name, config] of this._configs) {\n res[name] = config;\n }\n return res;\n }\n get items() {\n return this._domArray;\n }\n get version() {\n return \"3.5.0\";\n }\n addConfig(config) {\n const key = config.key ?? config.name ?? \"default\";\n this._configs.set(key, config);\n this._eventDispatcher.dispatchEvent(EventType.configAdded, { data: { name: key, config } });\n }\n async addEffect(effect, drawer, refresh = true) {\n executeOnSingleOrMultiple(effect, type => {\n if (!this.getEffectDrawer(type)) {\n this.effectDrawers.set(type, drawer);\n }\n });\n await this.refresh(refresh);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n async addInteractor(name, interactorInitializer, refresh = true) {\n this._initializers.interactors.set(name, interactorInitializer);\n await this.refresh(refresh);\n }\n async addMover(name, moverInitializer, refresh = true) {\n this._initializers.movers.set(name, moverInitializer);\n await this.refresh(refresh);\n }\n async addParticleUpdater(name, updaterInitializer, refresh = true) {\n this._initializers.updaters.set(name, updaterInitializer);\n await this.refresh(refresh);\n }\n async addPathGenerator(name, generator, refresh = true) {\n if (!this.getPathGenerator(name)) {\n this.pathGenerators.set(name, generator);\n }\n await this.refresh(refresh);\n }\n async addPlugin(plugin, refresh = true) {\n if (!this.getPlugin(plugin.id)) {\n this.plugins.push(plugin);\n }\n await this.refresh(refresh);\n }\n async addPreset(preset, options, override = false, refresh = true) {\n if (override || !this.getPreset(preset)) {\n this.presets.set(preset, options);\n }\n await this.refresh(refresh);\n }\n async addShape(drawer, refresh = true) {\n for (const validType of drawer.validTypes) {\n if (this.getShapeDrawer(validType)) {\n continue;\n }\n this.shapeDrawers.set(validType, drawer);\n }\n await this.refresh(refresh);\n }\n clearPlugins(container) {\n this.updaters.delete(container);\n this.movers.delete(container);\n this.interactors.delete(container);\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\n }\n dom() {\n return this.items;\n }\n domItem(index) {\n return this.item(index);\n }\n async getAvailablePlugins(container) {\n const res = new Map();\n for (const plugin of this.plugins) {\n if (plugin.needsPlugin(container.actualOptions)) {\n res.set(plugin.id, await plugin.getPlugin(container));\n }\n }\n return res;\n }\n getEffectDrawer(type) {\n return this.effectDrawers.get(type);\n }\n async getInteractors(container, force = false) {\n return getItemsFromInitializer(container, this.interactors, this._initializers.interactors, force);\n }\n async getMovers(container, force = false) {\n return getItemsFromInitializer(container, this.movers, this._initializers.movers, force);\n }\n getPathGenerator(type) {\n return this.pathGenerators.get(type);\n }\n getPlugin(plugin) {\n return this.plugins.find(t => t.id === plugin);\n }\n getPreset(preset) {\n return this.presets.get(preset);\n }\n getShapeDrawer(type) {\n return this.shapeDrawers.get(type);\n }\n getSupportedEffects() {\n return this.effectDrawers.keys();\n }\n getSupportedShapes() {\n return this.shapeDrawers.keys();\n }\n async getUpdaters(container, force = false) {\n return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);\n }\n init() {\n if (this._initialized) {\n return;\n }\n this._initialized = true;\n }\n item(index) {\n const { items } = this, item = items[index];\n if (!item || item.destroyed) {\n const deleteCount = 1;\n items.splice(index, deleteCount);\n return;\n }\n return item;\n }\n async load(params) {\n const randomFactor = 10000, id = params.id ?? params.element?.id ?? `tsparticles${Math.floor(getRandom() * randomFactor)}`, { index, url } = params, options = url ? await getDataFromUrl({ fallback: params.options, url, index }) : params.options;\n const currentOptions = itemFromSingleOrMultiple(options, index), { items } = this, oldIndex = items.findIndex(v => v.id.description === id), minIndex = 0, newItem = new Container(this, id, currentOptions);\n if (oldIndex >= minIndex) {\n const old = this.item(oldIndex), one = 1, none = 0, deleteCount = old ? one : none;\n if (old && !old.destroyed) {\n old.destroy(false);\n }\n items.splice(oldIndex, deleteCount, newItem);\n }\n else {\n items.push(newItem);\n }\n const domContainer = getDomContainer(id, params.element), canvasEl = getCanvasFromContainer(domContainer);\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n loadOptions(options, sourceOptions) {\n this.plugins.forEach(plugin => plugin.loadOptions?.(options, sourceOptions));\n }\n loadParticlesOptions(container, options, ...sourceOptions) {\n const updaters = this.updaters.get(container);\n if (!updaters) {\n return;\n }\n updaters.forEach(updater => updater.loadOptions?.(options, ...sourceOptions));\n }\n async refresh(refresh = true) {\n if (!refresh) {\n return;\n }\n await Promise.all(this.items.map(t => t.refresh()));\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n setOnClickHandler(callback) {\n const { items } = this;\n if (!items.length) {\n throw new Error(`${errorPrefix} can only set click handlers after calling tsParticles.load()`);\n }\n items.forEach(item => item.addClickHandler(callback));\n }\n}\n","import { getRangeValue, parseAlpha } from \"./NumberUtils.js\";\nimport { hslToRgb, hslaToRgba } from \"./ColorUtils.js\";\nvar HslIndexes;\n(function (HslIndexes) {\n HslIndexes[HslIndexes[\"h\"] = 1] = \"h\";\n HslIndexes[HslIndexes[\"s\"] = 2] = \"s\";\n HslIndexes[HslIndexes[\"l\"] = 3] = \"l\";\n HslIndexes[HslIndexes[\"a\"] = 5] = \"a\";\n})(HslIndexes || (HslIndexes = {}));\nexport class HslColorManager {\n constructor() {\n this.key = \"hsl\";\n this.stringPrefix = \"hsl\";\n }\n handleColor(color) {\n const colorValue = color.value, hslColor = colorValue.hsl ?? color.value;\n if (hslColor.h !== undefined && hslColor.s !== undefined && hslColor.l !== undefined) {\n return hslToRgb(hslColor);\n }\n }\n handleRangeColor(color) {\n const colorValue = color.value, hslColor = colorValue.hsl ?? color.value;\n if (hslColor.h !== undefined && hslColor.l !== undefined) {\n return hslToRgb({\n h: getRangeValue(hslColor.h),\n l: getRangeValue(hslColor.l),\n s: getRangeValue(hslColor.s),\n });\n }\n }\n parseString(input) {\n if (!input.startsWith(\"hsl\")) {\n return;\n }\n const regex = /hsla?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(,\\s*([\\d.%]+)\\s*)?\\)/i, result = regex.exec(input), minLength = 4, defaultAlpha = 1, radix = 10;\n return result\n ? hslaToRgba({\n a: result.length > minLength ? parseAlpha(result[HslIndexes.a]) : defaultAlpha,\n h: parseInt(result[HslIndexes.h], radix),\n l: parseInt(result[HslIndexes.l], radix),\n s: parseInt(result[HslIndexes.s], radix),\n })\n : undefined;\n }\n}\n","import { getRangeValue, parseAlpha } from \"./NumberUtils.js\";\nvar RgbIndexes;\n(function (RgbIndexes) {\n RgbIndexes[RgbIndexes[\"r\"] = 1] = \"r\";\n RgbIndexes[RgbIndexes[\"g\"] = 2] = \"g\";\n RgbIndexes[RgbIndexes[\"b\"] = 3] = \"b\";\n RgbIndexes[RgbIndexes[\"a\"] = 5] = \"a\";\n})(RgbIndexes || (RgbIndexes = {}));\nexport class RgbColorManager {\n constructor() {\n this.key = \"rgb\";\n this.stringPrefix = \"rgb\";\n }\n handleColor(color) {\n const colorValue = color.value, rgbColor = colorValue.rgb ?? color.value;\n if (rgbColor.r !== undefined) {\n return rgbColor;\n }\n }\n handleRangeColor(color) {\n const colorValue = color.value, rgbColor = colorValue.rgb ?? color.value;\n if (rgbColor.r !== undefined) {\n return {\n r: getRangeValue(rgbColor.r),\n g: getRangeValue(rgbColor.g),\n b: getRangeValue(rgbColor.b),\n };\n }\n }\n parseString(input) {\n if (!input.startsWith(this.stringPrefix)) {\n return;\n }\n const regex = /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([\\d.%]+)\\s*)?\\)/i, result = regex.exec(input), radix = 10, minLength = 4, defaultAlpha = 1;\n return result\n ? {\n a: result.length > minLength ? parseAlpha(result[RgbIndexes.a]) : defaultAlpha,\n b: parseInt(result[RgbIndexes.b], radix),\n g: parseInt(result[RgbIndexes.g], radix),\n r: parseInt(result[RgbIndexes.r], radix),\n }\n : undefined;\n }\n}\n","export var RotateDirection;\n(function (RotateDirection) {\n RotateDirection[\"clockwise\"] = \"clockwise\";\n RotateDirection[\"counterClockwise\"] = \"counter-clockwise\";\n RotateDirection[\"random\"] = \"random\";\n})(RotateDirection || (RotateDirection = {}));\n","export var GradientType;\n(function (GradientType) {\n GradientType[\"linear\"] = \"linear\";\n GradientType[\"radial\"] = \"radial\";\n GradientType[\"random\"] = \"random\";\n})(GradientType || (GradientType = {}));\n","export var EasingType;\n(function (EasingType) {\n EasingType[\"easeInBack\"] = \"ease-in-back\";\n EasingType[\"easeInCirc\"] = \"ease-in-circ\";\n EasingType[\"easeInCubic\"] = \"ease-in-cubic\";\n EasingType[\"easeInLinear\"] = \"ease-in-linear\";\n EasingType[\"easeInQuad\"] = \"ease-in-quad\";\n EasingType[\"easeInQuart\"] = \"ease-in-quart\";\n EasingType[\"easeInQuint\"] = \"ease-in-quint\";\n EasingType[\"easeInExpo\"] = \"ease-in-expo\";\n EasingType[\"easeInSine\"] = \"ease-in-sine\";\n EasingType[\"easeOutBack\"] = \"ease-out-back\";\n EasingType[\"easeOutCirc\"] = \"ease-out-circ\";\n EasingType[\"easeOutCubic\"] = \"ease-out-cubic\";\n EasingType[\"easeOutLinear\"] = \"ease-out-linear\";\n EasingType[\"easeOutQuad\"] = \"ease-out-quad\";\n EasingType[\"easeOutQuart\"] = \"ease-out-quart\";\n EasingType[\"easeOutQuint\"] = \"ease-out-quint\";\n EasingType[\"easeOutExpo\"] = \"ease-out-expo\";\n EasingType[\"easeOutSine\"] = \"ease-out-sine\";\n EasingType[\"easeInOutBack\"] = \"ease-in-out-back\";\n EasingType[\"easeInOutCirc\"] = \"ease-in-out-circ\";\n EasingType[\"easeInOutCubic\"] = \"ease-in-out-cubic\";\n EasingType[\"easeInOutLinear\"] = \"ease-in-out-linear\";\n EasingType[\"easeInOutQuad\"] = \"ease-in-out-quad\";\n EasingType[\"easeInOutQuart\"] = \"ease-in-out-quart\";\n EasingType[\"easeInOutQuint\"] = \"ease-in-out-quint\";\n EasingType[\"easeInOutExpo\"] = \"ease-in-out-expo\";\n EasingType[\"easeInOutSine\"] = \"ease-in-out-sine\";\n})(EasingType || (EasingType = {}));\n","import { InteractorType } from \"../../Enums/Types/InteractorType.js\";\nexport class ExternalInteractorBase {\n constructor(container) {\n this.type = InteractorType.external;\n this.container = container;\n }\n}\n","import { InteractorType } from \"../../Enums/Types/InteractorType.js\";\nexport class ParticlesInteractorBase {\n constructor(container) {\n this.type = InteractorType.particles;\n this.container = container;\n }\n}\n","import { init } from \"./init.js\";\nimport { isSsr } from \"./Utils/Utils.js\";\nconst tsParticles = init();\nif (!isSsr()) {\n window.tsParticles = tsParticles;\n}\nexport * from \"./exports.js\";\nexport * from \"./export-types.js\";\nexport { tsParticles };\n","import { Engine } from \"./Core/Engine.js\";\nimport { HslColorManager } from \"./Utils/HslColorManager.js\";\nimport { RgbColorManager } from \"./Utils/RgbColorManager.js\";\nimport { addColorManager } from \"./Utils/ColorUtils.js\";\nexport function init() {\n const rgbColorManager = new RgbColorManager(), hslColorManager = new HslColorManager();\n addColorManager(rgbColorManager);\n addColorManager(hslColorManager);\n const engine = new Engine();\n engine.init();\n return engine;\n}\n","import { jsx as d } from \"react/jsx-runtime\";\nimport { useEffect as m } from \"react\";\nimport { tsParticles as s } from \"@tsparticles/engine\";\nconst f = (t) => {\n const i = t.id ?? \"tsparticles\";\n return m(() => {\n let e;\n return s.load({ id: i, url: t.url, options: t.options }).then((l) => {\n var a;\n e = l, (a = t.particlesLoaded) == null || a.call(t, l);\n }), () => {\n e == null || e.destroy();\n };\n }, [i, t, t.url, t.options]), /* @__PURE__ */ d(\"div\", { id: i, className: t.className });\n};\nexport {\n f as default\n};\n","import { tsParticles as i } from \"@tsparticles/engine\";\nimport o from \"./Particles.js\";\nimport \"react/jsx-runtime\";\nimport \"react\";\nasync function n(t) {\n await t(i);\n}\nexport {\n o as Particles,\n o as default,\n n as initParticlesEngine\n};\n","import { RotateDirection, clamp, getDistance, getDistances, getRandom, getRangeValue, } from \"@tsparticles/engine\";\nconst half = 0.5, minVelocity = 0, identity = 1, moveSpeedFactor = 60, minSpinRadius = 0, spinFactor = 0.01;\nexport function applyDistance(particle) {\n const initialPosition = particle.initialPosition, { dx, dy } = getDistances(initialPosition, particle.position), dxFixed = Math.abs(dx), dyFixed = Math.abs(dy), { maxDistance } = particle.retina, hDistance = maxDistance.horizontal, vDistance = maxDistance.vertical;\n if (!hDistance && !vDistance) {\n return;\n }\n const hasHDistance = (hDistance && dxFixed >= hDistance) ?? false, hasVDistance = (vDistance && dyFixed >= vDistance) ?? false;\n if ((hasHDistance || hasVDistance) && !particle.misplaced) {\n particle.misplaced = (!!hDistance && dxFixed > hDistance) || (!!vDistance && dyFixed > vDistance);\n if (hDistance) {\n particle.velocity.x = particle.velocity.y * half - particle.velocity.x;\n }\n if (vDistance) {\n particle.velocity.y = particle.velocity.x * half - particle.velocity.y;\n }\n }\n else if ((!hDistance || dxFixed < hDistance) && (!vDistance || dyFixed < vDistance) && particle.misplaced) {\n particle.misplaced = false;\n }\n else if (particle.misplaced) {\n const pos = particle.position, vel = particle.velocity;\n if (hDistance &&\n ((pos.x < initialPosition.x && vel.x < minVelocity) || (pos.x > initialPosition.x && vel.x > minVelocity))) {\n vel.x *= -getRandom();\n }\n if (vDistance &&\n ((pos.y < initialPosition.y && vel.y < minVelocity) || (pos.y > initialPosition.y && vel.y > minVelocity))) {\n vel.y *= -getRandom();\n }\n }\n}\nexport function move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta) {\n applyPath(particle, delta);\n const gravityOptions = particle.gravity, gravityFactor = gravityOptions?.enable && gravityOptions.inverse ? -identity : identity;\n if (moveDrift && moveSpeed) {\n particle.velocity.x += (moveDrift * delta.factor) / (moveSpeedFactor * moveSpeed);\n }\n if (gravityOptions?.enable && moveSpeed) {\n particle.velocity.y +=\n (gravityFactor * (gravityOptions.acceleration * delta.factor)) / (moveSpeedFactor * moveSpeed);\n }\n const decay = particle.moveDecay;\n particle.velocity.multTo(decay);\n const velocity = particle.velocity.mult(moveSpeed);\n if (gravityOptions?.enable &&\n maxSpeed > minVelocity &&\n ((!gravityOptions.inverse && velocity.y >= minVelocity && velocity.y >= maxSpeed) ||\n (gravityOptions.inverse && velocity.y <= minVelocity && velocity.y <= -maxSpeed))) {\n velocity.y = gravityFactor * maxSpeed;\n if (moveSpeed) {\n particle.velocity.y = velocity.y / moveSpeed;\n }\n }\n const zIndexOptions = particle.options.zIndex, zVelocityFactor = (identity - particle.zIndexFactor) ** zIndexOptions.velocityRate;\n velocity.multTo(zVelocityFactor);\n const { position } = particle;\n position.addTo(velocity);\n if (moveOptions.vibrate) {\n position.x += Math.sin(position.x * Math.cos(position.y));\n position.y += Math.cos(position.y * Math.sin(position.x));\n }\n}\nexport function spin(particle, moveSpeed) {\n const container = particle.container;\n if (!particle.spin) {\n return;\n }\n const updateFunc = {\n x: particle.spin.direction === RotateDirection.clockwise ? Math.cos : Math.sin,\n y: particle.spin.direction === RotateDirection.clockwise ? Math.sin : Math.cos,\n };\n particle.position.x = particle.spin.center.x + particle.spin.radius * updateFunc.x(particle.spin.angle);\n particle.position.y = particle.spin.center.y + particle.spin.radius * updateFunc.y(particle.spin.angle);\n particle.spin.radius += particle.spin.acceleration;\n const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height), halfMaxSize = maxCanvasSize * half;\n if (particle.spin.radius > halfMaxSize) {\n particle.spin.radius = halfMaxSize;\n particle.spin.acceleration *= -identity;\n }\n else if (particle.spin.radius < minSpinRadius) {\n particle.spin.radius = minSpinRadius;\n particle.spin.acceleration *= -identity;\n }\n particle.spin.angle += moveSpeed * spinFactor * (identity - particle.spin.radius / maxCanvasSize);\n}\nexport function applyPath(particle, delta) {\n const particlesOptions = particle.options, pathOptions = particlesOptions.move.path, pathEnabled = pathOptions.enable;\n if (!pathEnabled) {\n return;\n }\n if (particle.lastPathTime <= particle.pathDelay) {\n particle.lastPathTime += delta.value;\n return;\n }\n const path = particle.pathGenerator?.generate(particle, delta);\n if (path) {\n particle.velocity.addTo(path);\n }\n if (pathOptions.clamp) {\n particle.velocity.x = clamp(particle.velocity.x, -identity, identity);\n particle.velocity.y = clamp(particle.velocity.y, -identity, identity);\n }\n particle.lastPathTime -= particle.pathDelay;\n}\nexport function getProximitySpeedFactor(particle) {\n return particle.slow.inRange ? particle.slow.factor : identity;\n}\nexport function initSpin(particle) {\n const container = particle.container, options = particle.options, spinOptions = options.move.spin;\n if (!spinOptions.enable) {\n return;\n }\n const spinPos = spinOptions.position ?? { x: 50, y: 50 }, spinFactor = 0.01, spinCenter = {\n x: spinPos.x * spinFactor * container.canvas.size.width,\n y: spinPos.y * spinFactor * container.canvas.size.height,\n }, pos = particle.getPosition(), distance = getDistance(pos, spinCenter), spinAcceleration = getRangeValue(spinOptions.acceleration);\n particle.retina.spinAcceleration = spinAcceleration * container.retina.pixelRatio;\n const minVelocity = 0;\n particle.spin = {\n center: spinCenter,\n direction: particle.velocity.x >= minVelocity ? RotateDirection.clockwise : RotateDirection.counterClockwise,\n angle: particle.velocity.angle,\n radius: distance,\n acceleration: particle.retina.spinAcceleration,\n };\n}\n","import { getRangeMax, getRangeValue } from \"@tsparticles/engine\";\nimport { applyDistance, getProximitySpeedFactor, initSpin, move, spin } from \"./Utils.js\";\nconst diffFactor = 2, defaultSizeFactor = 1, defaultDeltaFactor = 1;\nexport class BaseMover {\n init(particle) {\n const options = particle.options, gravityOptions = options.move.gravity;\n particle.gravity = {\n enable: gravityOptions.enable,\n acceleration: getRangeValue(gravityOptions.acceleration),\n inverse: gravityOptions.inverse,\n };\n initSpin(particle);\n }\n isEnabled(particle) {\n return !particle.destroyed && particle.options.move.enable;\n }\n move(particle, delta) {\n const particleOptions = particle.options, moveOptions = particleOptions.move;\n if (!moveOptions.enable) {\n return;\n }\n const container = particle.container, pxRatio = container.retina.pixelRatio;\n particle.retina.moveSpeed ??= getRangeValue(moveOptions.speed) * pxRatio;\n particle.retina.moveDrift ??= getRangeValue(particle.options.move.drift) * pxRatio;\n const slowFactor = getProximitySpeedFactor(particle), baseSpeed = particle.retina.moveSpeed * container.retina.reduceFactor, moveDrift = particle.retina.moveDrift, maxSize = getRangeMax(particleOptions.size.value) * pxRatio, sizeFactor = moveOptions.size ? particle.getRadius() / maxSize : defaultSizeFactor, deltaFactor = delta.factor || defaultDeltaFactor, moveSpeed = (baseSpeed * sizeFactor * slowFactor * deltaFactor) / diffFactor, maxSpeed = particle.retina.maxSpeed ?? container.retina.maxSpeed;\n if (moveOptions.spin.enable) {\n spin(particle, moveSpeed);\n }\n else {\n move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta);\n }\n applyDistance(particle);\n }\n}\n","const double = 2, doublePI = Math.PI * double, minAngle = 0, origin = { x: 0, y: 0 };\nexport function drawCircle(data) {\n const { context, particle, radius } = data;\n if (!particle.circleRange) {\n particle.circleRange = { min: minAngle, max: doublePI };\n }\n const circleRange = particle.circleRange;\n context.arc(origin.x, origin.y, radius, circleRange.min, circleRange.max, false);\n}\n","import { degToRad, isObject } from \"@tsparticles/engine\";\nimport { drawCircle } from \"./Utils.js\";\nconst sides = 12, maxAngle = 360, minAngle = 0;\nexport class CircleDrawer {\n constructor() {\n this.validTypes = [\"circle\"];\n }\n draw(data) {\n drawCircle(data);\n }\n getSidesCount() {\n return sides;\n }\n particleInit(container, particle) {\n const shapeData = particle.shapeData, angle = shapeData?.angle ?? {\n max: maxAngle,\n min: minAngle,\n };\n particle.circleRange = !isObject(angle)\n ? {\n min: minAngle,\n max: degToRad(angle),\n }\n : { min: degToRad(angle.min), max: degToRad(angle.max) };\n }\n}\n","import { getHslAnimationFromHsl, rangeColorToHsl, updateColor, } from \"@tsparticles/engine\";\nexport class ColorUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const hslColor = rangeColorToHsl(particle.options.color, particle.id, particle.options.reduceDuplicates);\n if (hslColor) {\n particle.color = getHslAnimationFromHsl(hslColor, particle.options.color.animation, this.container.retina.reduceFactor);\n }\n }\n isEnabled(particle) {\n const { h: hAnimation, s: sAnimation, l: lAnimation } = particle.options.color.animation, { color } = particle;\n return (!particle.destroyed &&\n !particle.spawning &&\n ((color?.h.value !== undefined && hAnimation.enable) ||\n (color?.s.value !== undefined && sAnimation.enable) ||\n (color?.l.value !== undefined && lAnimation.enable)));\n }\n update(particle, delta) {\n updateColor(particle.color, delta);\n }\n}\n","import { getRandom, getRangeValue, initParticleNumericAnimationValue, percentDenominator, updateAnimation, } from \"@tsparticles/engine\";\nexport class OpacityUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const opacityOptions = particle.options.opacity, pxRatio = 1;\n particle.opacity = initParticleNumericAnimationValue(opacityOptions, pxRatio);\n const opacityAnimation = opacityOptions.animation;\n if (opacityAnimation.enable) {\n particle.opacity.velocity =\n (getRangeValue(opacityAnimation.speed) / percentDenominator) * this.container.retina.reduceFactor;\n if (!opacityAnimation.sync) {\n particle.opacity.velocity *= getRandom();\n }\n }\n }\n isEnabled(particle) {\n const none = 0;\n return (!particle.destroyed &&\n !particle.spawning &&\n !!particle.opacity &&\n particle.opacity.enable &&\n ((particle.opacity.maxLoops ?? none) <= none ||\n ((particle.opacity.maxLoops ?? none) > none &&\n (particle.opacity.loops ?? none) < (particle.opacity.maxLoops ?? none))));\n }\n reset(particle) {\n if (particle.opacity) {\n particle.opacity.time = 0;\n particle.opacity.loops = 0;\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle) || !particle.opacity) {\n return;\n }\n updateAnimation(particle, particle.opacity, true, particle.options.opacity.animation.destroy, delta);\n }\n}\n","import { OutMode, calculateBounds, } from \"@tsparticles/engine\";\nimport { bounceHorizontal, bounceVertical } from \"./Utils.js\";\nexport class BounceOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\n OutMode.bounce,\n OutMode.split,\n ];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n let handled = false;\n for (const [, plugin] of container.plugins) {\n if (plugin.particleBounce !== undefined) {\n handled = plugin.particleBounce(particle, delta, direction);\n }\n if (handled) {\n break;\n }\n }\n if (handled) {\n return;\n }\n const pos = particle.getPosition(), offset = particle.offset, size = particle.getRadius(), bounds = calculateBounds(pos, size), canvasSize = container.canvas.size;\n bounceHorizontal({ particle, outMode, direction, bounds, canvasSize, offset, size });\n bounceVertical({ particle, outMode, direction, bounds, canvasSize, offset, size });\n }\n}\n","import { OutMode, OutModeDirection, getRangeValue } from \"@tsparticles/engine\";\nconst minVelocity = 0, boundsMin = 0;\nexport function bounceHorizontal(data) {\n if ((data.outMode !== OutMode.bounce && data.outMode !== OutMode.split) ||\n (data.direction !== OutModeDirection.left && data.direction !== OutModeDirection.right)) {\n return;\n }\n if (data.bounds.right < boundsMin && data.direction === OutModeDirection.left) {\n data.particle.position.x = data.size + data.offset.x;\n }\n else if (data.bounds.left > data.canvasSize.width && data.direction === OutModeDirection.right) {\n data.particle.position.x = data.canvasSize.width - data.size - data.offset.x;\n }\n const velocity = data.particle.velocity.x;\n let bounced = false;\n if ((data.direction === OutModeDirection.right &&\n data.bounds.right >= data.canvasSize.width &&\n velocity > minVelocity) ||\n (data.direction === OutModeDirection.left && data.bounds.left <= boundsMin && velocity < minVelocity)) {\n const newVelocity = getRangeValue(data.particle.options.bounce.horizontal.value);\n data.particle.velocity.x *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.x + data.size;\n if (data.bounds.right >= data.canvasSize.width && data.direction === OutModeDirection.right) {\n data.particle.position.x = data.canvasSize.width - minPos;\n }\n else if (data.bounds.left <= boundsMin && data.direction === OutModeDirection.left) {\n data.particle.position.x = minPos;\n }\n if (data.outMode === OutMode.split) {\n data.particle.destroy();\n }\n}\nexport function bounceVertical(data) {\n if ((data.outMode !== OutMode.bounce && data.outMode !== OutMode.split) ||\n (data.direction !== OutModeDirection.bottom && data.direction !== OutModeDirection.top)) {\n return;\n }\n if (data.bounds.bottom < boundsMin && data.direction === OutModeDirection.top) {\n data.particle.position.y = data.size + data.offset.y;\n }\n else if (data.bounds.top > data.canvasSize.height && data.direction === OutModeDirection.bottom) {\n data.particle.position.y = data.canvasSize.height - data.size - data.offset.y;\n }\n const velocity = data.particle.velocity.y;\n let bounced = false;\n if ((data.direction === OutModeDirection.bottom &&\n data.bounds.bottom >= data.canvasSize.height &&\n velocity > minVelocity) ||\n (data.direction === OutModeDirection.top && data.bounds.top <= boundsMin && velocity < minVelocity)) {\n const newVelocity = getRangeValue(data.particle.options.bounce.vertical.value);\n data.particle.velocity.y *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.y + data.size;\n if (data.bounds.bottom >= data.canvasSize.height && data.direction === OutModeDirection.bottom) {\n data.particle.position.y = data.canvasSize.height - minPos;\n }\n else if (data.bounds.top <= boundsMin && data.direction === OutModeDirection.top) {\n data.particle.position.y = minPos;\n }\n if (data.outMode === OutMode.split) {\n data.particle.destroy();\n }\n}\n","import { OutMode, ParticleOutType, Vector, getDistances, isPointInside, } from \"@tsparticles/engine\";\nconst minVelocity = 0;\nexport class DestroyOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [OutMode.destroy];\n }\n update(particle, direction, _delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n switch (particle.outType) {\n case ParticleOutType.normal:\n case ParticleOutType.outside:\n if (isPointInside(particle.position, container.canvas.size, Vector.origin, particle.getRadius(), direction)) {\n return;\n }\n break;\n case ParticleOutType.inside: {\n const { dx, dy } = getDistances(particle.position, particle.moveCenter), { x: vx, y: vy } = particle.velocity;\n if ((vx < minVelocity && dx > particle.moveCenter.radius) ||\n (vy < minVelocity && dy > particle.moveCenter.radius) ||\n (vx >= minVelocity && dx < -particle.moveCenter.radius) ||\n (vy >= minVelocity && dy < -particle.moveCenter.radius)) {\n return;\n }\n break;\n }\n }\n container.particles.remove(particle, undefined, true);\n }\n}\n","import { OutMode, OutModeDirection, Vector, isPointInside, } from \"@tsparticles/engine\";\nconst minVelocity = 0;\nexport class NoneOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [OutMode.none];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n if ((particle.options.move.distance.horizontal &&\n (direction === OutModeDirection.left || direction === OutModeDirection.right)) ??\n (particle.options.move.distance.vertical &&\n (direction === OutModeDirection.top || direction === OutModeDirection.bottom))) {\n return;\n }\n const gravityOptions = particle.options.move.gravity, container = this.container, canvasSize = container.canvas.size, pRadius = particle.getRadius();\n if (!gravityOptions.enable) {\n if ((particle.velocity.y > minVelocity && particle.position.y <= canvasSize.height + pRadius) ||\n (particle.velocity.y < minVelocity && particle.position.y >= -pRadius) ||\n (particle.velocity.x > minVelocity && particle.position.x <= canvasSize.width + pRadius) ||\n (particle.velocity.x < minVelocity && particle.position.x >= -pRadius)) {\n return;\n }\n if (!isPointInside(particle.position, container.canvas.size, Vector.origin, pRadius, direction)) {\n container.particles.remove(particle);\n }\n }\n else {\n const position = particle.position;\n if ((!gravityOptions.inverse &&\n position.y > canvasSize.height + pRadius &&\n direction === OutModeDirection.bottom) ||\n (gravityOptions.inverse && position.y < -pRadius && direction === OutModeDirection.top)) {\n container.particles.remove(particle);\n }\n }\n }\n}\n","import { OutMode, OutModeDirection, ParticleOutType, Vector, calculateBounds, getDistances, getRandom, isPointInside, randomInRange, } from \"@tsparticles/engine\";\nconst minVelocity = 0, minDistance = 0;\nexport class OutOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [OutMode.out];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n switch (particle.outType) {\n case ParticleOutType.inside: {\n const { x: vx, y: vy } = particle.velocity;\n const circVec = Vector.origin;\n circVec.length = particle.moveCenter.radius;\n circVec.angle = particle.velocity.angle + Math.PI;\n circVec.addTo(Vector.create(particle.moveCenter));\n const { dx, dy } = getDistances(particle.position, circVec);\n if ((vx <= minVelocity && dx >= minDistance) ||\n (vy <= minVelocity && dy >= minDistance) ||\n (vx >= minVelocity && dx <= minDistance) ||\n (vy >= minVelocity && dy <= minDistance)) {\n return;\n }\n particle.position.x = Math.floor(randomInRange({\n min: 0,\n max: container.canvas.size.width,\n }));\n particle.position.y = Math.floor(randomInRange({\n min: 0,\n max: container.canvas.size.height,\n }));\n const { dx: newDx, dy: newDy } = getDistances(particle.position, particle.moveCenter);\n particle.direction = Math.atan2(-newDy, -newDx);\n particle.velocity.angle = particle.direction;\n break;\n }\n default: {\n if (isPointInside(particle.position, container.canvas.size, Vector.origin, particle.getRadius(), direction)) {\n return;\n }\n switch (particle.outType) {\n case ParticleOutType.outside: {\n particle.position.x =\n Math.floor(randomInRange({\n min: -particle.moveCenter.radius,\n max: particle.moveCenter.radius,\n })) + particle.moveCenter.x;\n particle.position.y =\n Math.floor(randomInRange({\n min: -particle.moveCenter.radius,\n max: particle.moveCenter.radius,\n })) + particle.moveCenter.y;\n const { dx, dy } = getDistances(particle.position, particle.moveCenter);\n if (particle.moveCenter.radius) {\n particle.direction = Math.atan2(dy, dx);\n particle.velocity.angle = particle.direction;\n }\n break;\n }\n case ParticleOutType.normal: {\n const warp = particle.options.move.warp, canvasSize = container.canvas.size, newPos = {\n bottom: canvasSize.height + particle.getRadius() + particle.offset.y,\n left: -particle.getRadius() - particle.offset.x,\n right: canvasSize.width + particle.getRadius() + particle.offset.x,\n top: -particle.getRadius() - particle.offset.y,\n }, sizeValue = particle.getRadius(), nextBounds = calculateBounds(particle.position, sizeValue);\n if (direction === OutModeDirection.right &&\n nextBounds.left > canvasSize.width + particle.offset.x) {\n particle.position.x = newPos.left;\n particle.initialPosition.x = particle.position.x;\n if (!warp) {\n particle.position.y = getRandom() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n }\n else if (direction === OutModeDirection.left && nextBounds.right < -particle.offset.x) {\n particle.position.x = newPos.right;\n particle.initialPosition.x = particle.position.x;\n if (!warp) {\n particle.position.y = getRandom() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n }\n if (direction === OutModeDirection.bottom &&\n nextBounds.top > canvasSize.height + particle.offset.y) {\n if (!warp) {\n particle.position.x = getRandom() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.top;\n particle.initialPosition.y = particle.position.y;\n }\n else if (direction === OutModeDirection.top && nextBounds.bottom < -particle.offset.y) {\n if (!warp) {\n particle.position.x = getRandom() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.bottom;\n particle.initialPosition.y = particle.position.y;\n }\n break;\n }\n }\n break;\n }\n }\n }\n}\n","import { OutMode, OutModeDirection, } from \"@tsparticles/engine\";\nimport { BounceOutMode } from \"./BounceOutMode.js\";\nimport { DestroyOutMode } from \"./DestroyOutMode.js\";\nimport { NoneOutMode } from \"./NoneOutMode.js\";\nimport { OutOutMode } from \"./OutOutMode.js\";\nconst checkOutMode = (outModes, outMode) => {\n return (outModes.default === outMode ||\n outModes.bottom === outMode ||\n outModes.left === outMode ||\n outModes.right === outMode ||\n outModes.top === outMode);\n};\nexport class OutOfCanvasUpdater {\n constructor(container) {\n this._updateOutMode = (particle, delta, outMode, direction) => {\n for (const updater of this.updaters) {\n updater.update(particle, direction, delta, outMode);\n }\n };\n this.container = container;\n this.updaters = [];\n }\n init(particle) {\n this.updaters = [];\n const outModes = particle.options.move.outModes;\n if (checkOutMode(outModes, OutMode.bounce)) {\n this.updaters.push(new BounceOutMode(this.container));\n }\n else if (checkOutMode(outModes, OutMode.out)) {\n this.updaters.push(new OutOutMode(this.container));\n }\n else if (checkOutMode(outModes, OutMode.destroy)) {\n this.updaters.push(new DestroyOutMode(this.container));\n }\n else if (checkOutMode(outModes, OutMode.none)) {\n this.updaters.push(new NoneOutMode(this.container));\n }\n }\n isEnabled(particle) {\n return !particle.destroyed && !particle.spawning;\n }\n update(particle, delta) {\n const outModes = particle.options.move.outModes;\n this._updateOutMode(particle, delta, outModes.bottom ?? outModes.default, OutModeDirection.bottom);\n this._updateOutMode(particle, delta, outModes.left ?? outModes.default, OutModeDirection.left);\n this._updateOutMode(particle, delta, outModes.right ?? outModes.default, OutModeDirection.right);\n this._updateOutMode(particle, delta, outModes.top ?? outModes.default, OutModeDirection.top);\n }\n}\n","import { getRandom, percentDenominator, updateAnimation, } from \"@tsparticles/engine\";\nconst minLoops = 0;\nexport class SizeUpdater {\n init(particle) {\n const container = particle.container, sizeOptions = particle.options.size, sizeAnimation = sizeOptions.animation;\n if (sizeAnimation.enable) {\n particle.size.velocity =\n ((particle.retina.sizeAnimationSpeed ?? container.retina.sizeAnimationSpeed) / percentDenominator) *\n container.retina.reduceFactor;\n if (!sizeAnimation.sync) {\n particle.size.velocity *= getRandom();\n }\n }\n }\n isEnabled(particle) {\n return (!particle.destroyed &&\n !particle.spawning &&\n particle.size.enable &&\n ((particle.size.maxLoops ?? minLoops) <= minLoops ||\n ((particle.size.maxLoops ?? minLoops) > minLoops &&\n (particle.size.loops ?? minLoops) < (particle.size.maxLoops ?? minLoops))));\n }\n reset(particle) {\n particle.size.loops = minLoops;\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateAnimation(particle, particle.size, true, particle.options.size.animation.destroy, delta);\n }\n}\n","import { loadBaseMover } from \"@tsparticles/move-base\";\nimport { loadCircleShape } from \"@tsparticles/shape-circle\";\nimport { loadColorUpdater } from \"@tsparticles/updater-color\";\nimport { loadOpacityUpdater } from \"@tsparticles/updater-opacity\";\nimport { loadOutModesUpdater } from \"@tsparticles/updater-out-modes\";\nimport { loadSizeUpdater } from \"@tsparticles/updater-size\";\nexport async function loadBasic(engine, refresh = true) {\n await loadBaseMover(engine, false);\n await loadCircleShape(engine, false);\n await loadColorUpdater(engine, false);\n await loadOpacityUpdater(engine, false);\n await loadOutModesUpdater(engine, false);\n await loadSizeUpdater(engine, false);\n await engine.refresh(refresh);\n}\n","import { BaseMover } from \"./BaseMover.js\";\nexport async function loadBaseMover(engine, refresh = true) {\n await engine.addMover(\"base\", () => {\n return Promise.resolve(new BaseMover());\n }, refresh);\n}\n","import { CircleDrawer } from \"./CircleDrawer.js\";\nexport async function loadCircleShape(engine, refresh = true) {\n await engine.addShape(new CircleDrawer(), refresh);\n}\n","import { ColorUpdater } from \"./ColorUpdater.js\";\nexport async function loadColorUpdater(engine, refresh = true) {\n await engine.addParticleUpdater(\"color\", container => {\n return Promise.resolve(new ColorUpdater(container));\n }, refresh);\n}\n","import { OpacityUpdater } from \"./OpacityUpdater.js\";\nexport async function loadOpacityUpdater(engine, refresh = true) {\n await engine.addParticleUpdater(\"opacity\", container => {\n return Promise.resolve(new OpacityUpdater(container));\n }, refresh);\n}\n","import { OutOfCanvasUpdater } from \"./OutOfCanvasUpdater.js\";\nexport async function loadOutModesUpdater(engine, refresh = true) {\n await engine.addParticleUpdater(\"outModes\", container => {\n return Promise.resolve(new OutOfCanvasUpdater(container));\n }, refresh);\n}\n","import { SizeUpdater } from \"./SizeUpdater.js\";\nexport async function loadSizeUpdater(engine, refresh = true) {\n await engine.addParticleUpdater(\"size\", () => {\n return Promise.resolve(new SizeUpdater());\n }, refresh);\n}\n","import { executeOnSingleOrMultiple, getRangeMax, isInArray, itemFromSingleOrMultiple, loadFont, } from \"@tsparticles/engine\";\nimport { drawEmoji } from \"./Utils.js\";\nconst defaultFont = '\"Twemoji Mozilla\", Apple Color Emoji, \"Segoe UI Emoji\", \"Noto Color Emoji\", \"EmojiOne Color\"';\nexport class EmojiDrawer {\n constructor() {\n this.validTypes = [\"emoji\"];\n this._emojiShapeDict = new Map();\n }\n destroy() {\n for (const [key, emojiData] of this._emojiShapeDict) {\n if (emojiData instanceof ImageBitmap) {\n emojiData?.close();\n this._emojiShapeDict.delete(key);\n }\n }\n }\n draw(data) {\n drawEmoji(data);\n }\n async init(container) {\n const options = container.actualOptions, { validTypes } = this;\n if (!validTypes.find(t => isInArray(t, options.particles.shape.type))) {\n return;\n }\n const promises = [loadFont(defaultFont)], shapeOptions = validTypes\n .map(t => options.particles.shape.options[t])\n .find(t => !!t);\n if (shapeOptions) {\n executeOnSingleOrMultiple(shapeOptions, shape => {\n if (shape.font) {\n promises.push(loadFont(shape.font));\n }\n });\n }\n await Promise.all(promises);\n }\n particleDestroy(particle) {\n delete particle.emojiData;\n }\n particleInit(container, particle) {\n const double = 2, shapeData = particle.shapeData;\n if (!shapeData?.value) {\n return;\n }\n const emoji = itemFromSingleOrMultiple(shapeData.value, particle.randomIndexData), font = shapeData.font ?? defaultFont;\n if (!emoji) {\n return;\n }\n const key = `${emoji}_${font}`, existingData = this._emojiShapeDict.get(key);\n if (existingData) {\n particle.emojiData = existingData;\n return;\n }\n const canvasSize = getRangeMax(particle.size.value) * double;\n let emojiData;\n const maxSize = getRangeMax(particle.size.value);\n if (typeof OffscreenCanvas !== \"undefined\") {\n const canvas = new OffscreenCanvas(canvasSize, canvasSize), context = canvas.getContext(\"2d\");\n if (!context) {\n return;\n }\n context.font = `400 ${maxSize * double}px ${font}`;\n context.textBaseline = \"middle\";\n context.textAlign = \"center\";\n context.fillText(emoji, maxSize, maxSize);\n emojiData = canvas.transferToImageBitmap();\n }\n else {\n const canvas = document.createElement(\"canvas\");\n canvas.width = canvasSize;\n canvas.height = canvasSize;\n const context = canvas.getContext(\"2d\");\n if (!context) {\n return;\n }\n context.font = `400 ${maxSize * double}px ${font}`;\n context.textBaseline = \"middle\";\n context.textAlign = \"center\";\n context.fillText(emoji, maxSize, maxSize);\n emojiData = canvas;\n }\n this._emojiShapeDict.set(key, emojiData);\n particle.emojiData = emojiData;\n }\n}\n","export function drawEmoji(data) {\n const { context, particle, radius, opacity } = data, emojiData = particle.emojiData, double = 2, diameter = radius * double, previousAlpha = context.globalAlpha;\n if (!emojiData) {\n return;\n }\n context.globalAlpha = opacity;\n context.drawImage(emojiData, -radius, -radius, diameter, diameter);\n context.globalAlpha = previousAlpha;\n}\n","import { Circle, Vector, clamp, getDistances, getEasing, } from \"@tsparticles/engine\";\nconst minFactor = 1, identity = 1, minRadius = 0;\nfunction processAttract(container, position, attractRadius, area, queryCb) {\n const attractOptions = container.actualOptions.interactivity.modes.attract;\n if (!attractOptions) {\n return;\n }\n const query = container.particles.quadTree.query(area, queryCb);\n for (const particle of query) {\n const { dx, dy, distance } = getDistances(particle.position, position), velocity = attractOptions.speed * attractOptions.factor, attractFactor = clamp(getEasing(attractOptions.easing)(identity - distance / attractRadius) * velocity, minFactor, attractOptions.maxSpeed), normVec = Vector.create(!distance ? velocity : (dx / distance) * attractFactor, !distance ? velocity : (dy / distance) * attractFactor);\n particle.position.subFrom(normVec);\n }\n}\nexport function clickAttract(container, enabledCb) {\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n const { attract } = container;\n if (!attract.finish) {\n if (!attract.count) {\n attract.count = 0;\n }\n attract.count++;\n if (attract.count === container.particles.count) {\n attract.finish = true;\n }\n }\n if (attract.clicking) {\n const mousePos = container.interactivity.mouse.clickPosition, attractRadius = container.retina.attractModeDistance;\n if (!attractRadius || attractRadius < minRadius || !mousePos) {\n return;\n }\n processAttract(container, mousePos, attractRadius, new Circle(mousePos.x, mousePos.y, attractRadius), (p) => enabledCb(p));\n }\n else if (attract.clicking === false) {\n attract.particles = [];\n }\n}\nexport function hoverAttract(container, enabledCb) {\n const mousePos = container.interactivity.mouse.position, attractRadius = container.retina.attractModeDistance;\n if (!attractRadius || attractRadius < minRadius || !mousePos) {\n return;\n }\n processAttract(container, mousePos, attractRadius, new Circle(mousePos.x, mousePos.y, attractRadius), (p) => enabledCb(p));\n}\n","import { EasingType } from \"@tsparticles/engine\";\nexport class Attract {\n constructor() {\n this.distance = 200;\n this.duration = 0.4;\n this.easing = EasingType.easeOutQuad;\n this.factor = 1;\n this.maxSpeed = 50;\n this.speed = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.easing !== undefined) {\n this.easing = data.easing;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = data.maxSpeed;\n }\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n }\n}\n","import { ExternalInteractorBase, isInArray, millisecondsToSeconds, mouseMoveEvent, } from \"@tsparticles/engine\";\nimport { clickAttract, hoverAttract } from \"./Utils.js\";\nimport { Attract } from \"./Options/Classes/Attract.js\";\nconst attractMode = \"attract\";\nexport class Attractor extends ExternalInteractorBase {\n constructor(engine, container) {\n super(container);\n this._engine = engine;\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n this.handleClickMode = (mode) => {\n const options = this.container.actualOptions, attract = options.interactivity.modes.attract;\n if (!attract || mode !== attractMode) {\n return;\n }\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n container.attract.clicking = true;\n container.attract.count = 0;\n for (const particle of container.attract.particles) {\n if (!this.isEnabled(particle)) {\n continue;\n }\n particle.velocity.setTo(particle.initialVelocity);\n }\n container.attract.particles = [];\n container.attract.finish = false;\n setTimeout(() => {\n if (container.destroyed) {\n return;\n }\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n container.attract.clicking = false;\n }, attract.duration * millisecondsToSeconds);\n };\n }\n clear() {\n }\n init() {\n const container = this.container, attract = container.actualOptions.interactivity.modes.attract;\n if (!attract) {\n return;\n }\n container.retina.attractModeDistance = attract.distance * container.retina.pixelRatio;\n }\n interact() {\n const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, events = options.interactivity.events, { enable: hoverEnabled, mode: hoverMode } = events.onHover, { enable: clickEnabled, mode: clickMode } = events.onClick;\n if (mouseMoveStatus && hoverEnabled && isInArray(attractMode, hoverMode)) {\n hoverAttract(this.container, p => this.isEnabled(p));\n }\n else if (clickEnabled && isInArray(attractMode, clickMode)) {\n clickAttract(this.container, p => this.isEnabled(p));\n }\n }\n isEnabled(particle) {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = (particle?.interactivity ?? options.interactivity).events;\n if ((!mouse.position || !events.onHover.enable) && (!mouse.clickPosition || !events.onClick.enable)) {\n return false;\n }\n const hoverMode = events.onHover.mode, clickMode = events.onClick.mode;\n return isInArray(attractMode, hoverMode) || isInArray(attractMode, clickMode);\n }\n loadModeOptions(options, ...sources) {\n if (!options.attract) {\n options.attract = new Attract();\n }\n for (const source of sources) {\n options.attract.load(source?.attract);\n }\n }\n reset() {\n }\n}\n","import { Circle, DivType, Rectangle, Vector, calculateBounds, circleBounce, circleBounceDataFromParticle, divModeExecute, rectBounce, } from \"@tsparticles/engine\";\nconst squareExp = 2, half = 0.5, halfPI = Math.PI * half, double = 2, toleranceFactor = 10, minRadius = 0;\nfunction processBounce(container, position, radius, area, enabledCb) {\n const query = container.particles.quadTree.query(area, enabledCb);\n for (const particle of query) {\n if (area instanceof Circle) {\n circleBounce(circleBounceDataFromParticle(particle), {\n position,\n radius,\n mass: radius ** squareExp * halfPI,\n velocity: Vector.origin,\n factor: Vector.origin,\n });\n }\n else if (area instanceof Rectangle) {\n rectBounce(particle, calculateBounds(position, radius));\n }\n }\n}\nfunction singleSelectorBounce(container, selector, div, bounceCb) {\n const query = document.querySelectorAll(selector);\n if (!query.length) {\n return;\n }\n query.forEach(item => {\n const elem = item, pxRatio = container.retina.pixelRatio, pos = {\n x: (elem.offsetLeft + elem.offsetWidth * half) * pxRatio,\n y: (elem.offsetTop + elem.offsetHeight * half) * pxRatio,\n }, radius = elem.offsetWidth * half * pxRatio, tolerance = toleranceFactor * pxRatio, area = div.type === DivType.circle\n ? new Circle(pos.x, pos.y, radius + tolerance)\n : new Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * double, elem.offsetHeight * pxRatio + tolerance * double);\n bounceCb(pos, radius, area);\n });\n}\nexport function divBounce(container, divs, bounceMode, enabledCb) {\n divModeExecute(bounceMode, divs, (selector, div) => singleSelectorBounce(container, selector, div, (pos, radius, area) => processBounce(container, pos, radius, area, enabledCb)));\n}\nexport function mouseBounce(container, enabledCb) {\n const pxRatio = container.retina.pixelRatio, tolerance = toleranceFactor * pxRatio, mousePos = container.interactivity.mouse.position, radius = container.retina.bounceModeDistance;\n if (!radius || radius < minRadius || !mousePos) {\n return;\n }\n processBounce(container, mousePos, radius, new Circle(mousePos.x, mousePos.y, radius + tolerance), enabledCb);\n}\n","export class Bounce {\n constructor() {\n this.distance = 200;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n }\n}\n","import { ExternalInteractorBase, isDivModeEnabled, isInArray, mouseMoveEvent, } from \"@tsparticles/engine\";\nimport { divBounce, mouseBounce } from \"./Utils.js\";\nimport { Bounce } from \"./Options/Classes/Bounce.js\";\nconst bounceMode = \"bounce\";\nexport class Bouncer extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n const container = this.container, bounce = container.actualOptions.interactivity.modes.bounce;\n if (!bounce) {\n return;\n }\n container.retina.bounceModeDistance = bounce.distance * container.retina.pixelRatio;\n }\n interact() {\n const container = this.container, options = container.actualOptions, events = options.interactivity.events, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, divs = events.onDiv;\n if (mouseMoveStatus && hoverEnabled && isInArray(bounceMode, hoverMode)) {\n mouseBounce(this.container, p => this.isEnabled(p));\n }\n else {\n divBounce(this.container, divs, bounceMode, p => this.isEnabled(p));\n }\n }\n isEnabled(particle) {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = (particle?.interactivity ?? options.interactivity).events, divs = events.onDiv;\n return ((!!mouse.position && events.onHover.enable && isInArray(bounceMode, events.onHover.mode)) ||\n isDivModeEnabled(bounceMode, divs));\n }\n loadModeOptions(options, ...sources) {\n if (!options.bounce) {\n options.bounce = new Bounce();\n }\n for (const source of sources) {\n options.bounce.load(source?.bounce);\n }\n }\n reset() {\n }\n}\n","import { OptionsColor, executeOnSingleOrMultiple, isArray, } from \"@tsparticles/engine\";\nexport class BubbleBase {\n constructor() {\n this.distance = 200;\n this.duration = 0.4;\n this.mix = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.mix !== undefined) {\n this.mix = data.mix;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n if (data.color !== undefined) {\n const sourceColor = isArray(this.color) ? undefined : this.color;\n this.color = executeOnSingleOrMultiple(data.color, color => {\n return OptionsColor.create(sourceColor, color);\n });\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n }\n}\n","import { BubbleBase } from \"./BubbleBase.js\";\nexport class BubbleDiv extends BubbleBase {\n constructor() {\n super();\n this.selectors = [];\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n }\n}\n","import { executeOnSingleOrMultiple, } from \"@tsparticles/engine\";\nimport { BubbleBase } from \"./BubbleBase.js\";\nimport { BubbleDiv } from \"./BubbleDiv.js\";\nexport class Bubble extends BubbleBase {\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n this.divs = executeOnSingleOrMultiple(data.divs, div => {\n const tmp = new BubbleDiv();\n tmp.load(div);\n return tmp;\n });\n }\n}\n","export var ProcessBubbleType;\n(function (ProcessBubbleType) {\n ProcessBubbleType[\"color\"] = \"color\";\n ProcessBubbleType[\"opacity\"] = \"opacity\";\n ProcessBubbleType[\"size\"] = \"size\";\n})(ProcessBubbleType || (ProcessBubbleType = {}));\n","import { clamp } from \"@tsparticles/engine\";\nexport function calculateBubbleValue(particleValue, modeValue, optionsValue, ratio) {\n if (modeValue >= optionsValue) {\n const value = particleValue + (modeValue - optionsValue) * ratio;\n return clamp(value, particleValue, modeValue);\n }\n else if (modeValue < optionsValue) {\n const value = particleValue - (optionsValue - modeValue) * ratio;\n return clamp(value, modeValue, particleValue);\n }\n}\n","import { Circle, DivType, ExternalInteractorBase, Rectangle, colorMix, divMode, divModeExecute, getDistance, getRangeMax, isDivModeEnabled, isInArray, itemFromSingleOrMultiple, millisecondsToSeconds, mouseLeaveEvent, mouseMoveEvent, rangeColorToHsl, rgbToHsl, } from \"@tsparticles/engine\";\nimport { Bubble } from \"./Options/Classes/Bubble.js\";\nimport { ProcessBubbleType } from \"./Enums.js\";\nimport { calculateBubbleValue } from \"./Utils.js\";\nconst bubbleMode = \"bubble\", minDistance = 0, defaultClickTime = 0, double = 2, defaultOpacity = 1, ratioOffset = 1, defaultBubbleValue = 0, minRatio = 0, half = 0.5, defaultRatio = 1;\nexport class Bubbler extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this._clickBubble = () => {\n const container = this.container, options = container.actualOptions, mouseClickPos = container.interactivity.mouse.clickPosition, bubbleOptions = options.interactivity.modes.bubble;\n if (!bubbleOptions || !mouseClickPos) {\n return;\n }\n if (!container.bubble) {\n container.bubble = {};\n }\n const distance = container.retina.bubbleModeDistance;\n if (!distance || distance < minDistance) {\n return;\n }\n const query = container.particles.quadTree.queryCircle(mouseClickPos, distance, p => this.isEnabled(p)), { bubble } = container;\n for (const particle of query) {\n if (!bubble.clicking) {\n continue;\n }\n particle.bubble.inRange = !bubble.durationEnd;\n const pos = particle.getPosition(), distMouse = getDistance(pos, mouseClickPos), timeSpent = (new Date().getTime() - (container.interactivity.mouse.clickTime ?? defaultClickTime)) /\n millisecondsToSeconds;\n if (timeSpent > bubbleOptions.duration) {\n bubble.durationEnd = true;\n }\n if (timeSpent > bubbleOptions.duration * double) {\n bubble.clicking = false;\n bubble.durationEnd = false;\n }\n const sizeData = {\n bubbleObj: {\n optValue: container.retina.bubbleModeSize,\n value: particle.bubble.radius,\n },\n particlesObj: {\n optValue: getRangeMax(particle.options.size.value) * container.retina.pixelRatio,\n value: particle.size.value,\n },\n type: ProcessBubbleType.size,\n };\n this._process(particle, distMouse, timeSpent, sizeData);\n const opacityData = {\n bubbleObj: {\n optValue: bubbleOptions.opacity,\n value: particle.bubble.opacity,\n },\n particlesObj: {\n optValue: getRangeMax(particle.options.opacity.value),\n value: particle.opacity?.value ?? defaultOpacity,\n },\n type: ProcessBubbleType.opacity,\n };\n this._process(particle, distMouse, timeSpent, opacityData);\n if (!bubble.durationEnd && distMouse <= distance) {\n this._hoverBubbleColor(particle, distMouse);\n }\n else {\n delete particle.bubble.color;\n }\n }\n };\n this._hoverBubble = () => {\n const container = this.container, mousePos = container.interactivity.mouse.position, distance = container.retina.bubbleModeDistance;\n if (!distance || distance < minDistance || !mousePos) {\n return;\n }\n const query = container.particles.quadTree.queryCircle(mousePos, distance, p => this.isEnabled(p));\n for (const particle of query) {\n particle.bubble.inRange = true;\n const pos = particle.getPosition(), pointDistance = getDistance(pos, mousePos), ratio = ratioOffset - pointDistance / distance;\n if (pointDistance <= distance) {\n if (ratio >= minRatio && container.interactivity.status === mouseMoveEvent) {\n this._hoverBubbleSize(particle, ratio);\n this._hoverBubbleOpacity(particle, ratio);\n this._hoverBubbleColor(particle, ratio);\n }\n }\n else {\n this.reset(particle);\n }\n if (container.interactivity.status === mouseLeaveEvent) {\n this.reset(particle);\n }\n }\n };\n this._hoverBubbleColor = (particle, ratio, divBubble) => {\n const options = this.container.actualOptions, bubbleOptions = divBubble ?? options.interactivity.modes.bubble;\n if (!bubbleOptions) {\n return;\n }\n if (!particle.bubble.finalColor) {\n const modeColor = bubbleOptions.color;\n if (!modeColor) {\n return;\n }\n const bubbleColor = itemFromSingleOrMultiple(modeColor);\n particle.bubble.finalColor = rangeColorToHsl(bubbleColor);\n }\n if (!particle.bubble.finalColor) {\n return;\n }\n if (bubbleOptions.mix) {\n particle.bubble.color = undefined;\n const pColor = particle.getFillColor();\n particle.bubble.color = pColor\n ? rgbToHsl(colorMix(pColor, particle.bubble.finalColor, ratioOffset - ratio, ratio))\n : particle.bubble.finalColor;\n }\n else {\n particle.bubble.color = particle.bubble.finalColor;\n }\n };\n this._hoverBubbleOpacity = (particle, ratio, divBubble) => {\n const container = this.container, options = container.actualOptions, modeOpacity = divBubble?.opacity ?? options.interactivity.modes.bubble?.opacity;\n if (!modeOpacity) {\n return;\n }\n const optOpacity = particle.options.opacity.value, pOpacity = particle.opacity?.value ?? defaultOpacity, opacity = calculateBubbleValue(pOpacity, modeOpacity, getRangeMax(optOpacity), ratio);\n if (opacity !== undefined) {\n particle.bubble.opacity = opacity;\n }\n };\n this._hoverBubbleSize = (particle, ratio, divBubble) => {\n const container = this.container, modeSize = divBubble?.size ? divBubble.size * container.retina.pixelRatio : container.retina.bubbleModeSize;\n if (modeSize === undefined) {\n return;\n }\n const optSize = getRangeMax(particle.options.size.value) * container.retina.pixelRatio, pSize = particle.size.value, size = calculateBubbleValue(pSize, modeSize, optSize, ratio);\n if (size !== undefined) {\n particle.bubble.radius = size;\n }\n };\n this._process = (particle, distMouse, timeSpent, data) => {\n const container = this.container, bubbleParam = data.bubbleObj.optValue, options = container.actualOptions, bubbleOptions = options.interactivity.modes.bubble;\n if (!bubbleOptions || bubbleParam === undefined) {\n return;\n }\n const bubbleDuration = bubbleOptions.duration, bubbleDistance = container.retina.bubbleModeDistance, particlesParam = data.particlesObj.optValue, pObjBubble = data.bubbleObj.value, pObj = data.particlesObj.value ?? defaultBubbleValue, type = data.type;\n if (!bubbleDistance || bubbleDistance < minDistance || bubbleParam === particlesParam) {\n return;\n }\n if (!container.bubble) {\n container.bubble = {};\n }\n if (container.bubble.durationEnd) {\n if (pObjBubble) {\n if (type === ProcessBubbleType.size) {\n delete particle.bubble.radius;\n }\n if (type === ProcessBubbleType.opacity) {\n delete particle.bubble.opacity;\n }\n }\n }\n else {\n if (distMouse <= bubbleDistance) {\n const obj = pObjBubble ?? pObj;\n if (obj !== bubbleParam) {\n const value = pObj - (timeSpent * (pObj - bubbleParam)) / bubbleDuration;\n if (type === ProcessBubbleType.size) {\n particle.bubble.radius = value;\n }\n if (type === ProcessBubbleType.opacity) {\n particle.bubble.opacity = value;\n }\n }\n }\n else {\n if (type === ProcessBubbleType.size) {\n delete particle.bubble.radius;\n }\n if (type === ProcessBubbleType.opacity) {\n delete particle.bubble.opacity;\n }\n }\n }\n };\n this._singleSelectorHover = (delta, selector, div) => {\n const container = this.container, selectors = document.querySelectorAll(selector), bubble = container.actualOptions.interactivity.modes.bubble;\n if (!bubble || !selectors.length) {\n return;\n }\n selectors.forEach(item => {\n const elem = item, pxRatio = container.retina.pixelRatio, pos = {\n x: (elem.offsetLeft + elem.offsetWidth * half) * pxRatio,\n y: (elem.offsetTop + elem.offsetHeight * half) * pxRatio,\n }, repulseRadius = elem.offsetWidth * half * pxRatio, area = div.type === DivType.circle\n ? new Circle(pos.x, pos.y, repulseRadius)\n : new Rectangle(elem.offsetLeft * pxRatio, elem.offsetTop * pxRatio, elem.offsetWidth * pxRatio, elem.offsetHeight * pxRatio), query = container.particles.quadTree.query(area, p => this.isEnabled(p));\n for (const particle of query) {\n if (!area.contains(particle.getPosition())) {\n continue;\n }\n particle.bubble.inRange = true;\n const divs = bubble.divs, divBubble = divMode(divs, elem);\n if (!particle.bubble.div || particle.bubble.div !== elem) {\n this.clear(particle, delta, true);\n particle.bubble.div = elem;\n }\n this._hoverBubbleSize(particle, defaultRatio, divBubble);\n this._hoverBubbleOpacity(particle, defaultRatio, divBubble);\n this._hoverBubbleColor(particle, defaultRatio, divBubble);\n }\n });\n };\n if (!container.bubble) {\n container.bubble = {};\n }\n this.handleClickMode = (mode) => {\n if (mode !== bubbleMode) {\n return;\n }\n if (!container.bubble) {\n container.bubble = {};\n }\n container.bubble.clicking = true;\n };\n }\n clear(particle, delta, force) {\n if (particle.bubble.inRange && !force) {\n return;\n }\n delete particle.bubble.div;\n delete particle.bubble.opacity;\n delete particle.bubble.radius;\n delete particle.bubble.color;\n }\n init() {\n const container = this.container, bubble = container.actualOptions.interactivity.modes.bubble;\n if (!bubble) {\n return;\n }\n container.retina.bubbleModeDistance = bubble.distance * container.retina.pixelRatio;\n if (bubble.size !== undefined) {\n container.retina.bubbleModeSize = bubble.size * container.retina.pixelRatio;\n }\n }\n interact(delta) {\n const options = this.container.actualOptions, events = options.interactivity.events, onHover = events.onHover, onClick = events.onClick, hoverEnabled = onHover.enable, hoverMode = onHover.mode, clickEnabled = onClick.enable, clickMode = onClick.mode, divs = events.onDiv;\n if (hoverEnabled && isInArray(bubbleMode, hoverMode)) {\n this._hoverBubble();\n }\n else if (clickEnabled && isInArray(bubbleMode, clickMode)) {\n this._clickBubble();\n }\n else {\n divModeExecute(bubbleMode, divs, (selector, div) => this._singleSelectorHover(delta, selector, div));\n }\n }\n isEnabled(particle) {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = (particle?.interactivity ?? options.interactivity).events, { onClick, onDiv, onHover } = events, divBubble = isDivModeEnabled(bubbleMode, onDiv);\n if (!(divBubble || (onHover.enable && !!mouse.position) || (onClick.enable && mouse.clickPosition))) {\n return false;\n }\n return isInArray(bubbleMode, onHover.mode) || isInArray(bubbleMode, onClick.mode) || divBubble;\n }\n loadModeOptions(options, ...sources) {\n if (!options.bubble) {\n options.bubble = new Bubble();\n }\n for (const source of sources) {\n options.bubble.load(source?.bubble);\n }\n }\n reset(particle) {\n particle.bubble.inRange = false;\n }\n}\n","export class ConnectLinks {\n constructor() {\n this.opacity = 0.5;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { ConnectLinks } from \"./ConnectLinks.js\";\nexport class Connect {\n constructor() {\n this.distance = 80;\n this.links = new ConnectLinks();\n this.radius = 60;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n this.links.load(data.links);\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { clamp, colorMix, drawLine, getStyleFromHsl, getStyleFromRgb, } from \"@tsparticles/engine\";\nconst gradientMin = 0, gradientMax = 1, defaultLinksWidth = 0;\nexport function gradient(context, p1, p2, opacity) {\n const gradStop = Math.floor(p2.getRadius() / p1.getRadius()), color1 = p1.getFillColor(), color2 = p2.getFillColor();\n if (!color1 || !color2) {\n return;\n }\n const sourcePos = p1.getPosition(), destPos = p2.getPosition(), midRgb = colorMix(color1, color2, p1.getRadius(), p2.getRadius()), grad = context.createLinearGradient(sourcePos.x, sourcePos.y, destPos.x, destPos.y);\n grad.addColorStop(gradientMin, getStyleFromHsl(color1, opacity));\n grad.addColorStop(clamp(gradStop, gradientMin, gradientMax), getStyleFromRgb(midRgb, opacity));\n grad.addColorStop(gradientMax, getStyleFromHsl(color2, opacity));\n return grad;\n}\nexport function drawConnectLine(context, width, lineStyle, begin, end) {\n drawLine(context, begin, end);\n context.lineWidth = width;\n context.strokeStyle = lineStyle;\n context.stroke();\n}\nexport function lineStyle(container, ctx, p1, p2) {\n const options = container.actualOptions, connectOptions = options.interactivity.modes.connect;\n if (!connectOptions) {\n return;\n }\n return gradient(ctx, p1, p2, connectOptions.links.opacity);\n}\nexport function drawConnection(container, p1, p2) {\n container.canvas.draw(ctx => {\n const ls = lineStyle(container, ctx, p1, p2);\n if (!ls) {\n return;\n }\n const pos1 = p1.getPosition(), pos2 = p2.getPosition();\n drawConnectLine(ctx, p1.retina.linksWidth ?? defaultLinksWidth, ls, pos1, pos2);\n });\n}\n","import { ExternalInteractorBase, isInArray, } from \"@tsparticles/engine\";\nimport { Connect } from \"./Options/Classes/Connect.js\";\nimport { drawConnection } from \"./Utils.js\";\nconst connectMode = \"connect\", minDistance = 0;\nexport class Connector extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n const container = this.container, connect = container.actualOptions.interactivity.modes.connect;\n if (!connect) {\n return;\n }\n container.retina.connectModeDistance = connect.distance * container.retina.pixelRatio;\n container.retina.connectModeRadius = connect.radius * container.retina.pixelRatio;\n }\n interact() {\n const container = this.container, options = container.actualOptions;\n if (options.interactivity.events.onHover.enable && container.interactivity.status === \"pointermove\") {\n const mousePos = container.interactivity.mouse.position, { connectModeDistance, connectModeRadius } = container.retina;\n if (!connectModeDistance ||\n connectModeDistance < minDistance ||\n !connectModeRadius ||\n connectModeRadius < minDistance ||\n !mousePos) {\n return;\n }\n const distance = Math.abs(connectModeRadius), query = container.particles.quadTree.queryCircle(mousePos, distance, p => this.isEnabled(p));\n query.forEach((p1, i) => {\n const pos1 = p1.getPosition(), indexOffset = 1;\n for (const p2 of query.slice(i + indexOffset)) {\n const pos2 = p2.getPosition(), distMax = Math.abs(connectModeDistance), xDiff = Math.abs(pos1.x - pos2.x), yDiff = Math.abs(pos1.y - pos2.y);\n if (xDiff < distMax && yDiff < distMax) {\n drawConnection(container, p1, p2);\n }\n }\n });\n }\n }\n isEnabled(particle) {\n const container = this.container, mouse = container.interactivity.mouse, events = (particle?.interactivity ?? container.actualOptions.interactivity).events;\n if (!(events.onHover.enable && mouse.position)) {\n return false;\n }\n return isInArray(connectMode, events.onHover.mode);\n }\n loadModeOptions(options, ...sources) {\n if (!options.connect) {\n options.connect = new Connect();\n }\n for (const source of sources) {\n options.connect.load(source?.connect);\n }\n }\n reset() {\n }\n}\n","import { OptionsColor } from \"@tsparticles/engine\";\nexport class GrabLinks {\n constructor() {\n this.blink = false;\n this.consent = false;\n this.opacity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.blink !== undefined) {\n this.blink = data.blink;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.consent !== undefined) {\n this.consent = data.consent;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { GrabLinks } from \"./GrabLinks.js\";\nexport class Grab {\n constructor() {\n this.distance = 100;\n this.links = new GrabLinks();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n this.links.load(data.links);\n }\n}\n","import { drawLine, getStyleFromRgb } from \"@tsparticles/engine\";\nconst defaultWidth = 0;\nexport function drawGrabLine(context, width, begin, end, colorLine, opacity) {\n drawLine(context, begin, end);\n context.strokeStyle = getStyleFromRgb(colorLine, opacity);\n context.lineWidth = width;\n context.stroke();\n}\nexport function drawGrab(container, particle, lineColor, opacity, mousePos) {\n container.canvas.draw(ctx => {\n const beginPos = particle.getPosition();\n drawGrabLine(ctx, particle.retina.linksWidth ?? defaultWidth, beginPos, mousePos, lineColor, opacity);\n });\n}\n","import { ExternalInteractorBase, getDistance, getLinkColor, getLinkRandomColor, isInArray, mouseMoveEvent, } from \"@tsparticles/engine\";\nimport { Grab } from \"./Options/Classes/Grab.js\";\nimport { drawGrab } from \"./Utils.js\";\nconst grabMode = \"grab\", minDistance = 0, minOpacity = 0;\nexport class Grabber extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n const container = this.container, grab = container.actualOptions.interactivity.modes.grab;\n if (!grab) {\n return;\n }\n container.retina.grabModeDistance = grab.distance * container.retina.pixelRatio;\n }\n interact() {\n const container = this.container, options = container.actualOptions, interactivity = options.interactivity;\n if (!interactivity.modes.grab ||\n !interactivity.events.onHover.enable ||\n container.interactivity.status !== mouseMoveEvent) {\n return;\n }\n const mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n const distance = container.retina.grabModeDistance;\n if (!distance || distance < minDistance) {\n return;\n }\n const query = container.particles.quadTree.queryCircle(mousePos, distance, p => this.isEnabled(p));\n for (const particle of query) {\n const pos = particle.getPosition(), pointDistance = getDistance(pos, mousePos);\n if (pointDistance > distance) {\n continue;\n }\n const grabLineOptions = interactivity.modes.grab.links, lineOpacity = grabLineOptions.opacity, opacityLine = lineOpacity - (pointDistance * lineOpacity) / distance;\n if (opacityLine <= minOpacity) {\n continue;\n }\n const optColor = grabLineOptions.color ?? particle.options.links?.color;\n if (!container.particles.grabLineColor && optColor) {\n const linksOptions = interactivity.modes.grab.links;\n container.particles.grabLineColor = getLinkRandomColor(optColor, linksOptions.blink, linksOptions.consent);\n }\n const colorLine = getLinkColor(particle, undefined, container.particles.grabLineColor);\n if (!colorLine) {\n continue;\n }\n drawGrab(container, particle, colorLine, opacityLine, mousePos);\n }\n }\n isEnabled(particle) {\n const container = this.container, mouse = container.interactivity.mouse, events = (particle?.interactivity ?? container.actualOptions.interactivity).events;\n return events.onHover.enable && !!mouse.position && isInArray(grabMode, events.onHover.mode);\n }\n loadModeOptions(options, ...sources) {\n if (!options.grab) {\n options.grab = new Grab();\n }\n for (const source of sources) {\n options.grab.load(source?.grab);\n }\n }\n reset() {\n }\n}\n","import { ExternalInteractorBase } from \"@tsparticles/engine\";\nconst pauseMode = \"pause\";\nexport class Pauser extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.handleClickMode = (mode) => {\n if (mode !== pauseMode) {\n return;\n }\n const container = this.container;\n if (container.animationStatus) {\n container.pause();\n }\n else {\n container.play();\n }\n };\n }\n clear() {\n }\n init() {\n }\n interact() {\n }\n isEnabled() {\n return true;\n }\n reset() {\n }\n}\n","import { setRangeValue } from \"@tsparticles/engine\";\nexport class Push {\n constructor() {\n this.default = true;\n this.groups = [];\n this.quantity = 4;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.default !== undefined) {\n this.default = data.default;\n }\n if (data.groups !== undefined) {\n this.groups = data.groups.map(t => t);\n }\n if (!this.groups.length) {\n this.default = true;\n }\n const quantity = data.quantity;\n if (quantity !== undefined) {\n this.quantity = setRangeValue(quantity);\n }\n }\n}\n","import { ExternalInteractorBase, getRangeValue, itemFromArray, } from \"@tsparticles/engine\";\nimport { Push } from \"./Options/Classes/Push.js\";\nconst pushMode = \"push\", minQuantity = 0;\nexport class Pusher extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.handleClickMode = (mode) => {\n if (mode !== pushMode) {\n return;\n }\n const container = this.container, options = container.actualOptions, pushOptions = options.interactivity.modes.push;\n if (!pushOptions) {\n return;\n }\n const quantity = getRangeValue(pushOptions.quantity);\n if (quantity <= minQuantity) {\n return;\n }\n const group = itemFromArray([undefined, ...pushOptions.groups]), groupOptions = group !== undefined ? container.actualOptions.particles.groups[group] : undefined;\n void container.particles.push(quantity, container.interactivity.mouse, groupOptions, group);\n };\n }\n clear() {\n }\n init() {\n }\n interact() {\n }\n isEnabled() {\n return true;\n }\n loadModeOptions(options, ...sources) {\n if (!options.push) {\n options.push = new Push();\n }\n for (const source of sources) {\n options.push.load(source?.push);\n }\n }\n reset() {\n }\n}\n","import { setRangeValue } from \"@tsparticles/engine\";\nexport class Remove {\n constructor() {\n this.quantity = 2;\n }\n load(data) {\n if (!data) {\n return;\n }\n const quantity = data.quantity;\n if (quantity !== undefined) {\n this.quantity = setRangeValue(quantity);\n }\n }\n}\n","import { ExternalInteractorBase, getRangeValue, } from \"@tsparticles/engine\";\nimport { Remove } from \"./Options/Classes/Remove.js\";\nconst removeMode = \"remove\";\nexport class Remover extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.handleClickMode = (mode) => {\n const container = this.container, options = container.actualOptions;\n if (!options.interactivity.modes.remove || mode !== removeMode) {\n return;\n }\n const removeNb = getRangeValue(options.interactivity.modes.remove.quantity);\n container.particles.removeQuantity(removeNb);\n };\n }\n clear() {\n }\n init() {\n }\n interact() {\n }\n isEnabled() {\n return true;\n }\n loadModeOptions(options, ...sources) {\n if (!options.remove) {\n options.remove = new Remove();\n }\n for (const source of sources) {\n options.remove.load(source?.remove);\n }\n }\n reset() {\n }\n}\n","import { EasingType } from \"@tsparticles/engine\";\nexport class RepulseBase {\n constructor() {\n this.distance = 200;\n this.duration = 0.4;\n this.factor = 100;\n this.speed = 1;\n this.maxSpeed = 50;\n this.easing = EasingType.easeOutQuad;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.easing !== undefined) {\n this.easing = data.easing;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = data.maxSpeed;\n }\n }\n}\n","import { RepulseBase } from \"./RepulseBase.js\";\nexport class RepulseDiv extends RepulseBase {\n constructor() {\n super();\n this.selectors = [];\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n }\n}\n","import { executeOnSingleOrMultiple, } from \"@tsparticles/engine\";\nimport { RepulseBase } from \"./RepulseBase.js\";\nimport { RepulseDiv } from \"./RepulseDiv.js\";\nexport class Repulse extends RepulseBase {\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n this.divs = executeOnSingleOrMultiple(data.divs, div => {\n const tmp = new RepulseDiv();\n tmp.load(div);\n return tmp;\n });\n }\n}\n","import { Circle, DivType, ExternalInteractorBase, Rectangle, Vector, clamp, divMode, divModeExecute, getDistances, getEasing, isDivModeEnabled, isInArray, millisecondsToSeconds, mouseMoveEvent, } from \"@tsparticles/engine\";\nimport { Repulse } from \"./Options/Classes/Repulse.js\";\nconst repulseMode = \"repulse\", minDistance = 0, repulseRadiusFactor = 6, repulseRadiusPower = 3, squarePower = 2, minRadius = 0, minSpeed = 0, easingOffset = 1, half = 0.5;\nexport class Repulser extends ExternalInteractorBase {\n constructor(engine, container) {\n super(container);\n this._clickRepulse = () => {\n const container = this.container, repulseOptions = container.actualOptions.interactivity.modes.repulse;\n if (!repulseOptions) {\n return;\n }\n const repulse = container.repulse ?? { particles: [] };\n if (!repulse.finish) {\n if (!repulse.count) {\n repulse.count = 0;\n }\n repulse.count++;\n if (repulse.count === container.particles.count) {\n repulse.finish = true;\n }\n }\n if (repulse.clicking) {\n const repulseDistance = container.retina.repulseModeDistance;\n if (!repulseDistance || repulseDistance < minDistance) {\n return;\n }\n const repulseRadius = Math.pow(repulseDistance / repulseRadiusFactor, repulseRadiusPower), mouseClickPos = container.interactivity.mouse.clickPosition;\n if (mouseClickPos === undefined) {\n return;\n }\n const range = new Circle(mouseClickPos.x, mouseClickPos.y, repulseRadius), query = container.particles.quadTree.query(range, p => this.isEnabled(p));\n for (const particle of query) {\n const { dx, dy, distance } = getDistances(mouseClickPos, particle.position), d = distance ** squarePower, velocity = repulseOptions.speed, force = (-repulseRadius * velocity) / d;\n if (d <= repulseRadius) {\n repulse.particles.push(particle);\n const vect = Vector.create(dx, dy);\n vect.length = force;\n particle.velocity.setTo(vect);\n }\n }\n }\n else if (repulse.clicking === false) {\n for (const particle of repulse.particles) {\n particle.velocity.setTo(particle.initialVelocity);\n }\n repulse.particles = [];\n }\n };\n this._hoverRepulse = () => {\n const container = this.container, mousePos = container.interactivity.mouse.position, repulseRadius = container.retina.repulseModeDistance;\n if (!repulseRadius || repulseRadius < minRadius || !mousePos) {\n return;\n }\n this._processRepulse(mousePos, repulseRadius, new Circle(mousePos.x, mousePos.y, repulseRadius));\n };\n this._processRepulse = (position, repulseRadius, area, divRepulse) => {\n const container = this.container, query = container.particles.quadTree.query(area, p => this.isEnabled(p)), repulseOptions = container.actualOptions.interactivity.modes.repulse;\n if (!repulseOptions) {\n return;\n }\n const { easing, speed, factor, maxSpeed } = repulseOptions, easingFunc = getEasing(easing), velocity = (divRepulse?.speed ?? speed) * factor;\n for (const particle of query) {\n const { dx, dy, distance } = getDistances(particle.position, position), repulseFactor = clamp(easingFunc(easingOffset - distance / repulseRadius) * velocity, minSpeed, maxSpeed), normVec = Vector.create(!distance ? velocity : (dx / distance) * repulseFactor, !distance ? velocity : (dy / distance) * repulseFactor);\n particle.position.addTo(normVec);\n }\n };\n this._singleSelectorRepulse = (selector, div) => {\n const container = this.container, repulse = container.actualOptions.interactivity.modes.repulse;\n if (!repulse) {\n return;\n }\n const query = document.querySelectorAll(selector);\n if (!query.length) {\n return;\n }\n query.forEach(item => {\n const elem = item, pxRatio = container.retina.pixelRatio, pos = {\n x: (elem.offsetLeft + elem.offsetWidth * half) * pxRatio,\n y: (elem.offsetTop + elem.offsetHeight * half) * pxRatio,\n }, repulseRadius = elem.offsetWidth * half * pxRatio, area = div.type === DivType.circle\n ? new Circle(pos.x, pos.y, repulseRadius)\n : new Rectangle(elem.offsetLeft * pxRatio, elem.offsetTop * pxRatio, elem.offsetWidth * pxRatio, elem.offsetHeight * pxRatio), divs = repulse.divs, divRepulse = divMode(divs, elem);\n this._processRepulse(pos, repulseRadius, area, divRepulse);\n });\n };\n this._engine = engine;\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n this.handleClickMode = (mode) => {\n const options = this.container.actualOptions, repulseOpts = options.interactivity.modes.repulse;\n if (!repulseOpts || mode !== repulseMode) {\n return;\n }\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n const repulse = container.repulse;\n repulse.clicking = true;\n repulse.count = 0;\n for (const particle of container.repulse.particles) {\n if (!this.isEnabled(particle)) {\n continue;\n }\n particle.velocity.setTo(particle.initialVelocity);\n }\n repulse.particles = [];\n repulse.finish = false;\n setTimeout(() => {\n if (container.destroyed) {\n return;\n }\n repulse.clicking = false;\n }, repulseOpts.duration * millisecondsToSeconds);\n };\n }\n clear() {\n }\n init() {\n const container = this.container, repulse = container.actualOptions.interactivity.modes.repulse;\n if (!repulse) {\n return;\n }\n container.retina.repulseModeDistance = repulse.distance * container.retina.pixelRatio;\n }\n interact() {\n const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, events = options.interactivity.events, hover = events.onHover, hoverEnabled = hover.enable, hoverMode = hover.mode, click = events.onClick, clickEnabled = click.enable, clickMode = click.mode, divs = events.onDiv;\n if (mouseMoveStatus && hoverEnabled && isInArray(repulseMode, hoverMode)) {\n this._hoverRepulse();\n }\n else if (clickEnabled && isInArray(repulseMode, clickMode)) {\n this._clickRepulse();\n }\n else {\n divModeExecute(repulseMode, divs, (selector, div) => this._singleSelectorRepulse(selector, div));\n }\n }\n isEnabled(particle) {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = (particle?.interactivity ?? options.interactivity).events, divs = events.onDiv, hover = events.onHover, click = events.onClick, divRepulse = isDivModeEnabled(repulseMode, divs);\n if (!(divRepulse || (hover.enable && !!mouse.position) || (click.enable && mouse.clickPosition))) {\n return false;\n }\n const hoverMode = hover.mode, clickMode = click.mode;\n return isInArray(repulseMode, hoverMode) || isInArray(repulseMode, clickMode) || divRepulse;\n }\n loadModeOptions(options, ...sources) {\n if (!options.repulse) {\n options.repulse = new Repulse();\n }\n for (const source of sources) {\n options.repulse.load(source?.repulse);\n }\n }\n reset() {\n }\n}\n","export class Slow {\n constructor() {\n this.factor = 3;\n this.radius = 200;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { ExternalInteractorBase, getDistance, isInArray, } from \"@tsparticles/engine\";\nimport { Slow } from \"./Options/Classes/Slow.js\";\nconst slowMode = \"slow\", minRadius = 0;\nexport class Slower extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n clear(particle, delta, force) {\n if (particle.slow.inRange && !force) {\n return;\n }\n particle.slow.factor = 1;\n }\n init() {\n const container = this.container, slow = container.actualOptions.interactivity.modes.slow;\n if (!slow) {\n return;\n }\n container.retina.slowModeRadius = slow.radius * container.retina.pixelRatio;\n }\n interact() {\n }\n isEnabled(particle) {\n const container = this.container, mouse = container.interactivity.mouse, events = (particle?.interactivity ?? container.actualOptions.interactivity).events;\n return events.onHover.enable && !!mouse.position && isInArray(slowMode, events.onHover.mode);\n }\n loadModeOptions(options, ...sources) {\n if (!options.slow) {\n options.slow = new Slow();\n }\n for (const source of sources) {\n options.slow.load(source?.slow);\n }\n }\n reset(particle) {\n particle.slow.inRange = false;\n const container = this.container, options = container.actualOptions, mousePos = container.interactivity.mouse.position, radius = container.retina.slowModeRadius, slowOptions = options.interactivity.modes.slow;\n if (!slowOptions || !radius || radius < minRadius || !mousePos) {\n return;\n }\n const particlePos = particle.getPosition(), dist = getDistance(mousePos, particlePos), proximityFactor = dist / radius, slowFactor = slowOptions.factor, { slow } = particle;\n if (dist > radius) {\n return;\n }\n slow.inRange = true;\n slow.factor = proximityFactor / slowFactor;\n }\n}\n","import { errorPrefix, getLogger, getStyleFromHsl } from \"@tsparticles/engine\";\nconst stringStart = 0, defaultOpacity = 1;\nconst currentColorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d.]+%?\\))|currentcolor/gi;\nfunction replaceColorSvg(imageShape, color, opacity) {\n const { svgData } = imageShape;\n if (!svgData) {\n return \"\";\n }\n const colorStyle = getStyleFromHsl(color, opacity);\n if (svgData.includes(\"fill\")) {\n return svgData.replace(currentColorRegex, () => colorStyle);\n }\n const preFillIndex = svgData.indexOf(\">\");\n return `${svgData.substring(stringStart, preFillIndex)} fill=\"${colorStyle}\"${svgData.substring(preFillIndex)}`;\n}\nexport async function loadImage(image) {\n return new Promise((resolve) => {\n image.loading = true;\n const img = new Image();\n image.element = img;\n img.addEventListener(\"load\", () => {\n image.loading = false;\n resolve();\n });\n img.addEventListener(\"error\", () => {\n image.element = undefined;\n image.error = true;\n image.loading = false;\n getLogger().error(`${errorPrefix} loading image: ${image.source}`);\n resolve();\n });\n img.src = image.source;\n });\n}\nexport async function downloadSvgImage(image) {\n if (image.type !== \"svg\") {\n await loadImage(image);\n return;\n }\n image.loading = true;\n const response = await fetch(image.source);\n if (!response.ok) {\n getLogger().error(`${errorPrefix} Image not found`);\n image.error = true;\n }\n else {\n image.svgData = await response.text();\n }\n image.loading = false;\n}\nexport function replaceImageColor(image, imageData, color, particle) {\n const svgColoredData = replaceColorSvg(image, color, particle.opacity?.value ?? defaultOpacity), imageRes = {\n color,\n gif: imageData.gif,\n data: {\n ...image,\n svgData: svgColoredData,\n },\n loaded: false,\n ratio: imageData.width / imageData.height,\n replaceColor: imageData.replaceColor,\n source: imageData.src,\n };\n return new Promise(resolve => {\n const svg = new Blob([svgColoredData], { type: \"image/svg+xml\" }), domUrl = URL || window.URL || window.webkitURL || window, url = domUrl.createObjectURL(svg), img = new Image();\n img.addEventListener(\"load\", () => {\n imageRes.loaded = true;\n imageRes.element = img;\n resolve(imageRes);\n domUrl.revokeObjectURL(url);\n });\n const errorHandler = async () => {\n domUrl.revokeObjectURL(url);\n const img2 = {\n ...image,\n error: false,\n loading: true,\n };\n await loadImage(img2);\n imageRes.loaded = true;\n imageRes.element = img2.element;\n resolve(imageRes);\n };\n img.addEventListener(\"error\", () => void errorHandler());\n img.src = url;\n });\n}\n","export const InterlaceOffsets = [0, 4, 2, 1];\nexport const InterlaceSteps = [8, 8, 4, 2];\n","export class ByteStream {\n constructor(bytes) {\n this.pos = 0;\n this.data = new Uint8ClampedArray(bytes);\n }\n getString(count) {\n const slice = this.data.slice(this.pos, this.pos + count);\n this.pos += slice.length;\n return slice.reduce((acc, curr) => acc + String.fromCharCode(curr), \"\");\n }\n nextByte() {\n return this.data[this.pos++];\n }\n nextTwoBytes() {\n const increment = 2, previous = 1, shift = 8;\n this.pos += increment;\n return this.data[this.pos - increment] + (this.data[this.pos - previous] << shift);\n }\n readSubBlocks() {\n let blockString = \"\", size = 0;\n const minCount = 0, emptySize = 0;\n do {\n size = this.data[this.pos++];\n for (let count = size; --count >= minCount; blockString += String.fromCharCode(this.data[this.pos++])) {\n }\n } while (size !== emptySize);\n return blockString;\n }\n readSubBlocksBin() {\n let size = this.data[this.pos], len = 0;\n const emptySize = 0, increment = 1;\n for (let offset = 0; size !== emptySize; offset += size + increment, size = this.data[this.pos + offset]) {\n len += size;\n }\n const blockData = new Uint8Array(len);\n size = this.data[this.pos++];\n for (let i = 0; size !== emptySize; size = this.data[this.pos++]) {\n for (let count = size; --count >= emptySize; blockData[i++] = this.data[this.pos++]) {\n }\n }\n return blockData;\n }\n skipSubBlocks() {\n for (const increment = 1, noData = 0; this.data[this.pos] !== noData; this.pos += this.data[this.pos] + increment) {\n }\n this.pos++;\n }\n}\n","export var DisposalMethod;\n(function (DisposalMethod) {\n DisposalMethod[DisposalMethod[\"Replace\"] = 0] = \"Replace\";\n DisposalMethod[DisposalMethod[\"Combine\"] = 1] = \"Combine\";\n DisposalMethod[DisposalMethod[\"RestoreBackground\"] = 2] = \"RestoreBackground\";\n DisposalMethod[DisposalMethod[\"RestorePrevious\"] = 3] = \"RestorePrevious\";\n DisposalMethod[DisposalMethod[\"UndefinedA\"] = 4] = \"UndefinedA\";\n DisposalMethod[DisposalMethod[\"UndefinedB\"] = 5] = \"UndefinedB\";\n DisposalMethod[DisposalMethod[\"UndefinedC\"] = 6] = \"UndefinedC\";\n DisposalMethod[DisposalMethod[\"UndefinedD\"] = 7] = \"UndefinedD\";\n})(DisposalMethod || (DisposalMethod = {}));\n","export var GIFDataHeaders;\n(function (GIFDataHeaders) {\n GIFDataHeaders[GIFDataHeaders[\"Extension\"] = 33] = \"Extension\";\n GIFDataHeaders[GIFDataHeaders[\"ApplicationExtension\"] = 255] = \"ApplicationExtension\";\n GIFDataHeaders[GIFDataHeaders[\"GraphicsControlExtension\"] = 249] = \"GraphicsControlExtension\";\n GIFDataHeaders[GIFDataHeaders[\"PlainTextExtension\"] = 1] = \"PlainTextExtension\";\n GIFDataHeaders[GIFDataHeaders[\"CommentExtension\"] = 254] = \"CommentExtension\";\n GIFDataHeaders[GIFDataHeaders[\"Image\"] = 44] = \"Image\";\n GIFDataHeaders[GIFDataHeaders[\"EndOfFile\"] = 59] = \"EndOfFile\";\n})(GIFDataHeaders || (GIFDataHeaders = {}));\n","import { loadImage } from \"../Utils.js\";\nimport { InterlaceOffsets, InterlaceSteps } from \"./Constants.js\";\nimport { ByteStream } from \"./ByteStream.js\";\nimport { DisposalMethod } from \"./Enums/DisposalMethod.js\";\nimport { GIFDataHeaders } from \"./Types/GIFDataHeaders.js\";\nconst origin = {\n x: 0,\n y: 0,\n}, defaultFrame = 0, half = 0.5, initialTime = 0, firstIndex = 0, defaultLoopCount = 0;\nfunction parseColorTable(byteStream, count) {\n const colors = [];\n for (let i = 0; i < count; i++) {\n colors.push({\n r: byteStream.data[byteStream.pos],\n g: byteStream.data[byteStream.pos + 1],\n b: byteStream.data[byteStream.pos + 2],\n });\n byteStream.pos += 3;\n }\n return colors;\n}\nfunction parseExtensionBlock(byteStream, gif, getFrameIndex, getTransparencyIndex) {\n switch (byteStream.nextByte()) {\n case GIFDataHeaders.GraphicsControlExtension: {\n const frame = gif.frames[getFrameIndex(false)];\n byteStream.pos++;\n const packedByte = byteStream.nextByte();\n frame.GCreserved = (packedByte & 0xe0) >>> 5;\n frame.disposalMethod = (packedByte & 0x1c) >>> 2;\n frame.userInputDelayFlag = (packedByte & 2) === 2;\n const transparencyFlag = (packedByte & 1) === 1;\n frame.delayTime = byteStream.nextTwoBytes() * 0xa;\n const transparencyIndex = byteStream.nextByte();\n if (transparencyFlag) {\n getTransparencyIndex(transparencyIndex);\n }\n byteStream.pos++;\n break;\n }\n case GIFDataHeaders.ApplicationExtension: {\n byteStream.pos++;\n const applicationExtension = {\n identifier: byteStream.getString(8),\n authenticationCode: byteStream.getString(3),\n data: byteStream.readSubBlocksBin(),\n };\n gif.applicationExtensions.push(applicationExtension);\n break;\n }\n case GIFDataHeaders.CommentExtension: {\n gif.comments.push([getFrameIndex(false), byteStream.readSubBlocks()]);\n break;\n }\n case GIFDataHeaders.PlainTextExtension: {\n if (gif.globalColorTable.length === 0) {\n throw new EvalError(\"plain text extension without global color table\");\n }\n byteStream.pos++;\n gif.frames[getFrameIndex(false)].plainTextData = {\n left: byteStream.nextTwoBytes(),\n top: byteStream.nextTwoBytes(),\n width: byteStream.nextTwoBytes(),\n height: byteStream.nextTwoBytes(),\n charSize: {\n width: byteStream.nextTwoBytes(),\n height: byteStream.nextTwoBytes(),\n },\n foregroundColor: byteStream.nextByte(),\n backgroundColor: byteStream.nextByte(),\n text: byteStream.readSubBlocks(),\n };\n break;\n }\n default:\n byteStream.skipSubBlocks();\n break;\n }\n}\nasync function parseImageBlock(byteStream, gif, avgAlpha, getFrameIndex, getTransparencyIndex, progressCallback) {\n const frame = gif.frames[getFrameIndex(true)];\n frame.left = byteStream.nextTwoBytes();\n frame.top = byteStream.nextTwoBytes();\n frame.width = byteStream.nextTwoBytes();\n frame.height = byteStream.nextTwoBytes();\n const packedByte = byteStream.nextByte(), localColorTableFlag = (packedByte & 0x80) === 0x80, interlacedFlag = (packedByte & 0x40) === 0x40;\n frame.sortFlag = (packedByte & 0x20) === 0x20;\n frame.reserved = (packedByte & 0x18) >>> 3;\n const localColorCount = 1 << ((packedByte & 7) + 1);\n if (localColorTableFlag) {\n frame.localColorTable = parseColorTable(byteStream, localColorCount);\n }\n const getColor = (index) => {\n const { r, g, b } = (localColorTableFlag ? frame.localColorTable : gif.globalColorTable)[index];\n if (index !== getTransparencyIndex(null)) {\n return { r, g, b, a: 255 };\n }\n return { r, g, b, a: avgAlpha ? ~~((r + g + b) / 3) : 0 };\n };\n const image = (() => {\n try {\n return new ImageData(frame.width, frame.height, { colorSpace: \"srgb\" });\n }\n catch (error) {\n if (error instanceof DOMException && error.name === \"IndexSizeError\") {\n return null;\n }\n throw error;\n }\n })();\n if (image == null) {\n throw new EvalError(\"GIF frame size is to large\");\n }\n const minCodeSize = byteStream.nextByte(), imageData = byteStream.readSubBlocksBin(), clearCode = 1 << minCodeSize;\n const readBits = (pos, len) => {\n const bytePos = pos >>> 3, bitPos = pos & 7;\n return (((imageData[bytePos] + (imageData[bytePos + 1] << 8) + (imageData[bytePos + 2] << 16)) &\n (((1 << len) - 1) << bitPos)) >>>\n bitPos);\n };\n if (interlacedFlag) {\n for (let code = 0, size = minCodeSize + 1, pos = 0, dic = [[0]], pass = 0; pass < 4; pass++) {\n if (InterlaceOffsets[pass] < frame.height) {\n let pixelPos = 0, lineIndex = 0, exit = false;\n while (!exit) {\n const last = code;\n code = readBits(pos, size);\n pos += size + 1;\n if (code === clearCode) {\n size = minCodeSize + 1;\n dic.length = clearCode + 2;\n for (let i = 0; i < dic.length; i++) {\n dic[i] = i < clearCode ? [i] : [];\n }\n }\n else {\n if (code >= dic.length) {\n dic.push(dic[last].concat(dic[last][0]));\n }\n else if (last !== clearCode) {\n dic.push(dic[last].concat(dic[code][0]));\n }\n for (const item of dic[code]) {\n const { r, g, b, a } = getColor(item);\n image.data.set([r, g, b, a], InterlaceOffsets[pass] * frame.width +\n InterlaceSteps[pass] * lineIndex +\n (pixelPos % (frame.width * 4)));\n pixelPos += 4;\n }\n if (dic.length === 1 << size && size < 0xc) {\n size++;\n }\n }\n if (pixelPos === frame.width * 4 * (lineIndex + 1)) {\n lineIndex++;\n if (InterlaceOffsets[pass] + InterlaceSteps[pass] * lineIndex >= frame.height) {\n exit = true;\n }\n }\n }\n }\n progressCallback?.(byteStream.pos / (byteStream.data.length - 1), getFrameIndex(false) + 1, image, { x: frame.left, y: frame.top }, { width: gif.width, height: gif.height });\n }\n frame.image = image;\n frame.bitmap = await createImageBitmap(image);\n }\n else {\n let code = 0, size = minCodeSize + 1, pos = 0, pixelPos = -4, exit = false;\n const dic = [[0]];\n while (!exit) {\n const last = code;\n code = readBits(pos, size);\n pos += size;\n if (code === clearCode) {\n size = minCodeSize + 1;\n dic.length = clearCode + 2;\n for (let i = 0; i < dic.length; i++) {\n dic[i] = i < clearCode ? [i] : [];\n }\n }\n else {\n if (code === clearCode + 1) {\n exit = true;\n break;\n }\n if (code >= dic.length) {\n dic.push(dic[last].concat(dic[last][0]));\n }\n else if (last !== clearCode) {\n dic.push(dic[last].concat(dic[code][0]));\n }\n for (const item of dic[code]) {\n const { r, g, b, a } = getColor(item);\n image.data.set([r, g, b, a], (pixelPos += 4));\n }\n if (dic.length >= 1 << size && size < 0xc) {\n size++;\n }\n }\n }\n frame.image = image;\n frame.bitmap = await createImageBitmap(image);\n progressCallback?.((byteStream.pos + 1) / byteStream.data.length, getFrameIndex(false) + 1, frame.image, { x: frame.left, y: frame.top }, { width: gif.width, height: gif.height });\n }\n}\nasync function parseBlock(byteStream, gif, avgAlpha, getFrameIndex, getTransparencyIndex, progressCallback) {\n switch (byteStream.nextByte()) {\n case GIFDataHeaders.EndOfFile:\n return true;\n case GIFDataHeaders.Image:\n await parseImageBlock(byteStream, gif, avgAlpha, getFrameIndex, getTransparencyIndex, progressCallback);\n break;\n case GIFDataHeaders.Extension:\n parseExtensionBlock(byteStream, gif, getFrameIndex, getTransparencyIndex);\n break;\n default:\n throw new EvalError(\"undefined block found\");\n }\n return false;\n}\nexport function getGIFLoopAmount(gif) {\n for (const extension of gif.applicationExtensions) {\n if (extension.identifier + extension.authenticationCode !== \"NETSCAPE2.0\") {\n continue;\n }\n return extension.data[1] + (extension.data[2] << 8);\n }\n return NaN;\n}\nexport async function decodeGIF(gifURL, progressCallback, avgAlpha) {\n if (!avgAlpha)\n avgAlpha = false;\n const res = await fetch(gifURL);\n if (!res.ok && res.status === 404) {\n throw new EvalError(\"file not found\");\n }\n const buffer = await res.arrayBuffer();\n const gif = {\n width: 0,\n height: 0,\n totalTime: 0,\n colorRes: 0,\n pixelAspectRatio: 0,\n frames: [],\n sortFlag: false,\n globalColorTable: [],\n backgroundImage: new ImageData(1, 1, { colorSpace: \"srgb\" }),\n comments: [],\n applicationExtensions: [],\n }, byteStream = new ByteStream(new Uint8ClampedArray(buffer));\n if (byteStream.getString(6) !== \"GIF89a\") {\n throw new Error(\"not a supported GIF file\");\n }\n gif.width = byteStream.nextTwoBytes();\n gif.height = byteStream.nextTwoBytes();\n const packedByte = byteStream.nextByte(), globalColorTableFlag = (packedByte & 0x80) === 0x80;\n gif.colorRes = (packedByte & 0x70) >>> 4;\n gif.sortFlag = (packedByte & 8) === 8;\n const globalColorCount = 1 << ((packedByte & 7) + 1), backgroundColorIndex = byteStream.nextByte();\n gif.pixelAspectRatio = byteStream.nextByte();\n if (gif.pixelAspectRatio !== 0) {\n gif.pixelAspectRatio = (gif.pixelAspectRatio + 0xf) / 0x40;\n }\n if (globalColorTableFlag) {\n gif.globalColorTable = parseColorTable(byteStream, globalColorCount);\n }\n const backgroundImage = (() => {\n try {\n return new ImageData(gif.width, gif.height, { colorSpace: \"srgb\" });\n }\n catch (error) {\n if (error instanceof DOMException && error.name === \"IndexSizeError\") {\n return null;\n }\n throw error;\n }\n })();\n if (backgroundImage == null) {\n throw new Error(\"GIF frame size is to large\");\n }\n const { r, g, b } = gif.globalColorTable[backgroundColorIndex];\n backgroundImage.data.set(globalColorTableFlag ? [r, g, b, 255] : [0, 0, 0, 0]);\n for (let i = 4; i < backgroundImage.data.length; i *= 2) {\n backgroundImage.data.copyWithin(i, 0, i);\n }\n gif.backgroundImage = backgroundImage;\n let frameIndex = -1, incrementFrameIndex = true, transparencyIndex = -1;\n const getframeIndex = (increment) => {\n if (increment) {\n incrementFrameIndex = true;\n }\n return frameIndex;\n };\n const getTransparencyIndex = (newValue) => {\n if (newValue != null) {\n transparencyIndex = newValue;\n }\n return transparencyIndex;\n };\n try {\n do {\n if (incrementFrameIndex) {\n gif.frames.push({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n disposalMethod: DisposalMethod.Replace,\n image: new ImageData(1, 1, { colorSpace: \"srgb\" }),\n plainTextData: null,\n userInputDelayFlag: false,\n delayTime: 0,\n sortFlag: false,\n localColorTable: [],\n reserved: 0,\n GCreserved: 0,\n });\n frameIndex++;\n transparencyIndex = -1;\n incrementFrameIndex = false;\n }\n } while (!(await parseBlock(byteStream, gif, avgAlpha, getframeIndex, getTransparencyIndex, progressCallback)));\n gif.frames.length--;\n for (const frame of gif.frames) {\n if (frame.userInputDelayFlag && frame.delayTime === 0) {\n gif.totalTime = Infinity;\n break;\n }\n gif.totalTime += frame.delayTime;\n }\n return gif;\n }\n catch (error) {\n if (error instanceof EvalError) {\n throw new Error(`error while parsing frame ${frameIndex} \"${error.message}\"`);\n }\n throw error;\n }\n}\nexport function drawGif(data) {\n const { context, radius, particle, delta } = data, image = particle.image;\n if (!image?.gifData || !image.gif) {\n return;\n }\n const offscreenCanvas = new OffscreenCanvas(image.gifData.width, image.gifData.height), offscreenContext = offscreenCanvas.getContext(\"2d\");\n if (!offscreenContext) {\n throw new Error(\"could not create offscreen canvas context\");\n }\n offscreenContext.imageSmoothingQuality = \"low\";\n offscreenContext.imageSmoothingEnabled = false;\n offscreenContext.clearRect(origin.x, origin.y, offscreenCanvas.width, offscreenCanvas.height);\n if (particle.gifLoopCount === undefined) {\n particle.gifLoopCount = image.gifLoopCount ?? defaultLoopCount;\n }\n let frameIndex = particle.gifFrame ?? defaultFrame;\n const pos = { x: -image.gifData.width * half, y: -image.gifData.height * half }, frame = image.gifData.frames[frameIndex];\n if (particle.gifTime === undefined) {\n particle.gifTime = initialTime;\n }\n if (!frame.bitmap) {\n return;\n }\n context.scale(radius / image.gifData.width, radius / image.gifData.height);\n switch (frame.disposalMethod) {\n case DisposalMethod.UndefinedA:\n case DisposalMethod.UndefinedB:\n case DisposalMethod.UndefinedC:\n case DisposalMethod.UndefinedD:\n case DisposalMethod.Replace:\n offscreenContext.drawImage(frame.bitmap, frame.left, frame.top);\n context.drawImage(offscreenCanvas, pos.x, pos.y);\n offscreenContext.clearRect(origin.x, origin.y, offscreenCanvas.width, offscreenCanvas.height);\n break;\n case DisposalMethod.Combine:\n offscreenContext.drawImage(frame.bitmap, frame.left, frame.top);\n context.drawImage(offscreenCanvas, pos.x, pos.y);\n break;\n case DisposalMethod.RestoreBackground:\n offscreenContext.drawImage(frame.bitmap, frame.left, frame.top);\n context.drawImage(offscreenCanvas, pos.x, pos.y);\n offscreenContext.clearRect(origin.x, origin.y, offscreenCanvas.width, offscreenCanvas.height);\n if (!image.gifData.globalColorTable.length) {\n offscreenContext.putImageData(image.gifData.frames[firstIndex].image, pos.x + frame.left, pos.y + frame.top);\n }\n else {\n offscreenContext.putImageData(image.gifData.backgroundImage, pos.x, pos.y);\n }\n break;\n case DisposalMethod.RestorePrevious:\n {\n const previousImageData = offscreenContext.getImageData(origin.x, origin.y, offscreenCanvas.width, offscreenCanvas.height);\n offscreenContext.drawImage(frame.bitmap, frame.left, frame.top);\n context.drawImage(offscreenCanvas, pos.x, pos.y);\n offscreenContext.clearRect(origin.x, origin.y, offscreenCanvas.width, offscreenCanvas.height);\n offscreenContext.putImageData(previousImageData, origin.x, origin.y);\n }\n break;\n }\n particle.gifTime += delta.value;\n if (particle.gifTime > frame.delayTime) {\n particle.gifTime -= frame.delayTime;\n if (++frameIndex >= image.gifData.frames.length) {\n if (--particle.gifLoopCount <= defaultLoopCount) {\n return;\n }\n frameIndex = firstIndex;\n offscreenContext.clearRect(origin.x, origin.y, offscreenCanvas.width, offscreenCanvas.height);\n }\n particle.gifFrame = frameIndex;\n }\n context.scale(image.gifData.width / radius, image.gifData.height / radius);\n}\nexport async function loadGifImage(image) {\n if (image.type !== \"gif\") {\n await loadImage(image);\n return;\n }\n image.loading = true;\n try {\n image.gifData = await decodeGIF(image.source);\n image.gifLoopCount = getGIFLoopAmount(image.gifData) ?? defaultLoopCount;\n if (!image.gifLoopCount) {\n image.gifLoopCount = Infinity;\n }\n }\n catch {\n image.error = true;\n }\n image.loading = false;\n}\n","import { errorPrefix } from \"@tsparticles/engine\";\nimport { replaceImageColor } from \"./Utils.js\";\nimport { drawGif } from \"./GifUtils/Utils.js\";\nconst double = 2, defaultAlpha = 1, sides = 12, defaultRatio = 1;\nexport class ImageDrawer {\n constructor(engine) {\n this.validTypes = [\"image\", \"images\"];\n this.loadImageShape = async (imageShape) => {\n if (!this._engine.loadImage) {\n throw new Error(`${errorPrefix} image shape not initialized`);\n }\n await this._engine.loadImage({\n gif: imageShape.gif,\n name: imageShape.name,\n replaceColor: imageShape.replaceColor ?? false,\n src: imageShape.src,\n });\n };\n this._engine = engine;\n }\n addImage(image) {\n if (!this._engine.images) {\n this._engine.images = [];\n }\n this._engine.images.push(image);\n }\n draw(data) {\n const { context, radius, particle, opacity } = data, image = particle.image, element = image?.element;\n if (!image) {\n return;\n }\n context.globalAlpha = opacity;\n if (image.gif && image.gifData) {\n drawGif(data);\n }\n else if (element) {\n const ratio = image.ratio, pos = {\n x: -radius,\n y: -radius,\n }, diameter = radius * double;\n context.drawImage(element, pos.x, pos.y, diameter, diameter / ratio);\n }\n context.globalAlpha = defaultAlpha;\n }\n getSidesCount() {\n return sides;\n }\n async init(container) {\n const options = container.actualOptions;\n if (!options.preload || !this._engine.loadImage) {\n return;\n }\n for (const imageData of options.preload) {\n await this._engine.loadImage(imageData);\n }\n }\n loadShape(particle) {\n if (particle.shape !== \"image\" && particle.shape !== \"images\") {\n return;\n }\n if (!this._engine.images) {\n this._engine.images = [];\n }\n const imageData = particle.shapeData;\n if (!imageData) {\n return;\n }\n const image = this._engine.images.find((t) => t.name === imageData.name || t.source === imageData.src);\n if (!image) {\n void this.loadImageShape(imageData).then(() => {\n this.loadShape(particle);\n });\n }\n }\n particleInit(container, particle) {\n if (particle.shape !== \"image\" && particle.shape !== \"images\") {\n return;\n }\n if (!this._engine.images) {\n this._engine.images = [];\n }\n const images = this._engine.images, imageData = particle.shapeData;\n if (!imageData) {\n return;\n }\n const color = particle.getFillColor(), image = images.find((t) => t.name === imageData.name || t.source === imageData.src);\n if (!image) {\n return;\n }\n const replaceColor = imageData.replaceColor ?? image.replaceColor;\n if (image.loading) {\n setTimeout(() => {\n this.particleInit(container, particle);\n });\n return;\n }\n void (async () => {\n let imageRes;\n if (image.svgData && color) {\n imageRes = await replaceImageColor(image, imageData, color, particle);\n }\n else {\n imageRes = {\n color,\n data: image,\n element: image.element,\n gif: image.gif,\n gifData: image.gifData,\n gifLoopCount: image.gifLoopCount,\n loaded: true,\n ratio: imageData.width && imageData.height\n ? imageData.width / imageData.height\n : image.ratio ?? defaultRatio,\n replaceColor: replaceColor,\n source: imageData.src,\n };\n }\n if (!imageRes.ratio) {\n imageRes.ratio = 1;\n }\n const fill = imageData.fill ?? particle.shapeFill, close = imageData.close ?? particle.shapeClose, imageShape = {\n image: imageRes,\n fill,\n close,\n };\n particle.image = imageShape.image;\n particle.shapeFill = imageShape.fill;\n particle.shapeClose = imageShape.close;\n })();\n }\n}\n","export class Preload {\n constructor() {\n this.src = \"\";\n this.gif = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.gif !== undefined) {\n this.gif = data.gif;\n }\n if (data.height !== undefined) {\n this.height = data.height;\n }\n if (data.name !== undefined) {\n this.name = data.name;\n }\n if (data.replaceColor !== undefined) {\n this.replaceColor = data.replaceColor;\n }\n if (data.src !== undefined) {\n this.src = data.src;\n }\n if (data.width !== undefined) {\n this.width = data.width;\n }\n }\n}\n","import { Preload } from \"./Options/Classes/Preload.js\";\nexport class ImagePreloaderPlugin {\n constructor(engine) {\n this.id = \"imagePreloader\";\n this._engine = engine;\n }\n async getPlugin() {\n await Promise.resolve();\n return {};\n }\n loadOptions(options, source) {\n if (!source?.preload) {\n return;\n }\n if (!options.preload) {\n options.preload = [];\n }\n const preloadOptions = options.preload;\n for (const item of source.preload) {\n const existing = preloadOptions.find(t => t.name === item.name || t.src === item.src);\n if (existing) {\n existing.load(item);\n }\n else {\n const preload = new Preload();\n preload.load(item);\n preloadOptions.push(preload);\n }\n }\n }\n needsPlugin() {\n return true;\n }\n}\n","import { downloadSvgImage, loadImage } from \"./Utils.js\";\nimport { ImageDrawer } from \"./ImageDrawer.js\";\nimport { ImagePreloaderPlugin } from \"./ImagePreloader.js\";\nimport { errorPrefix } from \"@tsparticles/engine\";\nimport { loadGifImage } from \"./GifUtils/Utils.js\";\nconst extLength = 3;\nfunction addLoadImageToEngine(engine) {\n if (engine.loadImage) {\n return;\n }\n engine.loadImage = async (data) => {\n if (!data.name && !data.src) {\n throw new Error(`${errorPrefix} no image source provided`);\n }\n if (!engine.images) {\n engine.images = [];\n }\n if (engine.images.find((t) => t.name === data.name || t.source === data.src)) {\n return;\n }\n try {\n const image = {\n gif: data.gif ?? false,\n name: data.name ?? data.src,\n source: data.src,\n type: data.src.substring(data.src.length - extLength),\n error: false,\n loading: true,\n replaceColor: data.replaceColor,\n ratio: data.width && data.height ? data.width / data.height : undefined,\n };\n engine.images.push(image);\n let imageFunc;\n if (data.gif) {\n imageFunc = loadGifImage;\n }\n else {\n imageFunc = data.replaceColor ? downloadSvgImage : loadImage;\n }\n await imageFunc(image);\n }\n catch {\n throw new Error(`${errorPrefix} ${data.name ?? data.src} not found`);\n }\n };\n}\nexport async function loadImageShape(engine, refresh = true) {\n addLoadImageToEngine(engine);\n const preloader = new ImagePreloaderPlugin(engine);\n await engine.addPlugin(preloader, refresh);\n await engine.addShape(new ImageDrawer(engine), refresh);\n}\n","import { ValueWithRandom } from \"@tsparticles/engine\";\nexport class LifeDelay extends ValueWithRandom {\n constructor() {\n super();\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { ValueWithRandom } from \"@tsparticles/engine\";\nexport class LifeDuration extends ValueWithRandom {\n constructor() {\n super();\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { LifeDelay } from \"./LifeDelay.js\";\nimport { LifeDuration } from \"./LifeDuration.js\";\nexport class Life {\n constructor() {\n this.count = 0;\n this.delay = new LifeDelay();\n this.duration = new LifeDuration();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = data.count;\n }\n this.delay.load(data.delay);\n this.duration.load(data.duration);\n }\n}\n","import { getRandom, getRangeValue, millisecondsToSeconds, } from \"@tsparticles/engine\";\nimport { Life } from \"./Options/Classes/Life.js\";\nimport { updateLife } from \"./Utils.js\";\nconst noTime = 0, identity = 1, infiniteValue = -1;\nexport class LifeUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const container = this.container, particlesOptions = particle.options, lifeOptions = particlesOptions.life;\n if (!lifeOptions) {\n return;\n }\n particle.life = {\n delay: container.retina.reduceFactor\n ? ((getRangeValue(lifeOptions.delay.value) * (lifeOptions.delay.sync ? identity : getRandom())) /\n container.retina.reduceFactor) *\n millisecondsToSeconds\n : noTime,\n delayTime: noTime,\n duration: container.retina.reduceFactor\n ? ((getRangeValue(lifeOptions.duration.value) * (lifeOptions.duration.sync ? identity : getRandom())) /\n container.retina.reduceFactor) *\n millisecondsToSeconds\n : noTime,\n time: noTime,\n count: lifeOptions.count,\n };\n if (particle.life.duration <= noTime) {\n particle.life.duration = infiniteValue;\n }\n if (particle.life.count <= noTime) {\n particle.life.count = infiniteValue;\n }\n if (particle.life) {\n particle.spawning = particle.life.delay > noTime;\n }\n }\n isEnabled(particle) {\n return !particle.destroyed;\n }\n loadOptions(options, ...sources) {\n if (!options.life) {\n options.life = new Life();\n }\n for (const source of sources) {\n options.life.load(source?.life);\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle) || !particle.life) {\n return;\n }\n updateLife(particle, delta, this.container.canvas.size);\n }\n}\n","import { getRangeValue, millisecondsToSeconds, randomInRange, setRangeValue, } from \"@tsparticles/engine\";\nconst noTime = 0, infiniteValue = -1, noLife = 0, minCanvasSize = 0;\nexport function updateLife(particle, delta, canvasSize) {\n if (!particle.life) {\n return;\n }\n const life = particle.life;\n let justSpawned = false;\n if (particle.spawning) {\n life.delayTime += delta.value;\n if (life.delayTime >= particle.life.delay) {\n justSpawned = true;\n particle.spawning = false;\n life.delayTime = noTime;\n life.time = noTime;\n }\n else {\n return;\n }\n }\n if (life.duration === infiniteValue) {\n return;\n }\n if (particle.spawning) {\n return;\n }\n if (justSpawned) {\n life.time = noTime;\n }\n else {\n life.time += delta.value;\n }\n if (life.time < life.duration) {\n return;\n }\n life.time = noTime;\n if (particle.life.count > noLife) {\n particle.life.count--;\n }\n if (particle.life.count === noLife) {\n particle.destroy();\n return;\n }\n const widthRange = setRangeValue(minCanvasSize, canvasSize.width), heightRange = setRangeValue(minCanvasSize, canvasSize.width);\n particle.position.x = randomInRange(widthRange);\n particle.position.y = randomInRange(heightRange);\n particle.spawning = true;\n life.delayTime = noTime;\n life.time = noTime;\n particle.reset();\n const lifeOptions = particle.options.life;\n if (lifeOptions) {\n life.delay = getRangeValue(lifeOptions.delay.value) * millisecondsToSeconds;\n life.duration = getRangeValue(lifeOptions.duration.value) * millisecondsToSeconds;\n }\n}\n","import { drawLine } from \"./Utils.js\";\nconst sides = 1;\nexport class LineDrawer {\n constructor() {\n this.validTypes = [\"line\"];\n }\n draw(data) {\n drawLine(data);\n }\n getSidesCount() {\n return sides;\n }\n}\n","export function drawLine(data) {\n const { context, particle, radius } = data, shapeData = particle.shapeData, centerY = 0;\n context.moveTo(-radius, centerY);\n context.lineTo(radius, centerY);\n context.lineCap = shapeData?.cap ?? \"butt\";\n}\n","import { isSsr } from \"@tsparticles/engine\";\nconst half = 0.5;\nexport class ParallaxMover {\n init() {\n }\n isEnabled(particle) {\n return (!isSsr() &&\n !particle.destroyed &&\n particle.container.actualOptions.interactivity.events.onHover.parallax.enable);\n }\n move(particle) {\n const container = particle.container, options = container.actualOptions, parallaxOptions = options.interactivity.events.onHover.parallax;\n if (isSsr() || !parallaxOptions.enable) {\n return;\n }\n const parallaxForce = parallaxOptions.force, mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n const canvasSize = container.canvas.size, canvasCenter = {\n x: canvasSize.width * half,\n y: canvasSize.height * half,\n }, parallaxSmooth = parallaxOptions.smooth, factor = particle.getRadius() / parallaxForce, centerDistance = {\n x: (mousePos.x - canvasCenter.x) * factor,\n y: (mousePos.y - canvasCenter.y) * factor,\n }, { offset } = particle;\n offset.x += (centerDistance.x - offset.x) / parallaxSmooth;\n offset.y += (centerDistance.y - offset.y) / parallaxSmooth;\n }\n}\n","import { ParticlesInteractorBase, getDistances, getRangeValue, } from \"@tsparticles/engine\";\nconst attractFactor = 1000, identity = 1;\nexport class Attractor extends ParticlesInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n }\n interact(p1) {\n const container = this.container;\n if (p1.attractDistance === undefined) {\n p1.attractDistance = getRangeValue(p1.options.move.attract.distance) * container.retina.pixelRatio;\n }\n const distance = p1.attractDistance, pos1 = p1.getPosition(), query = container.particles.quadTree.queryCircle(pos1, distance);\n for (const p2 of query) {\n if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {\n continue;\n }\n const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * attractFactor), ay = dy / (rotate.y * attractFactor), p1Factor = p2.size.value / p1.size.value, p2Factor = identity / p1Factor;\n p1.velocity.x -= ax * p1Factor;\n p1.velocity.y -= ay * p1Factor;\n p2.velocity.x += ax * p2Factor;\n p2.velocity.y += ay * p2Factor;\n }\n }\n isEnabled(particle) {\n return particle.options.move.attract.enable;\n }\n reset() {\n }\n}\n","import { clamp } from \"@tsparticles/engine\";\nconst half = 0.5, absorbFactor = 10, minAbsorbFactor = 0;\nfunction updateAbsorb(p1, r1, p2, r2, delta, pixelRatio) {\n const factor = clamp((p1.options.collisions.absorb.speed * delta.factor) / absorbFactor, minAbsorbFactor, r2);\n p1.size.value += factor * half;\n p2.size.value -= factor;\n if (r2 <= pixelRatio) {\n p2.size.value = 0;\n p2.destroy();\n }\n}\nexport function absorb(p1, p2, delta, pixelRatio) {\n const r1 = p1.getRadius(), r2 = p2.getRadius();\n if (r1 === undefined && r2 !== undefined) {\n p1.destroy();\n }\n else if (r1 !== undefined && r2 === undefined) {\n p2.destroy();\n }\n else if (r1 !== undefined && r2 !== undefined) {\n if (r1 >= r2) {\n updateAbsorb(p1, r1, p2, r2, delta, pixelRatio);\n }\n else {\n updateAbsorb(p2, r2, p1, r1, delta, pixelRatio);\n }\n }\n}\n","import { circleBounce, circleBounceDataFromParticle, getRangeValue } from \"@tsparticles/engine\";\nconst fixBounceSpeed = (p) => {\n if (p.collisionMaxSpeed === undefined) {\n p.collisionMaxSpeed = getRangeValue(p.options.collisions.maxSpeed);\n }\n if (p.velocity.length > p.collisionMaxSpeed) {\n p.velocity.length = p.collisionMaxSpeed;\n }\n};\nexport function bounce(p1, p2) {\n circleBounce(circleBounceDataFromParticle(p1), circleBounceDataFromParticle(p2));\n fixBounceSpeed(p1);\n fixBounceSpeed(p2);\n}\n","import { CollisionMode } from \"@tsparticles/engine\";\nimport { absorb } from \"./Absorb.js\";\nimport { bounce } from \"./Bounce.js\";\nimport { destroy } from \"./Destroy.js\";\nexport function resolveCollision(p1, p2, delta, pixelRatio) {\n switch (p1.options.collisions.mode) {\n case CollisionMode.absorb: {\n absorb(p1, p2, delta, pixelRatio);\n break;\n }\n case CollisionMode.bounce: {\n bounce(p1, p2);\n break;\n }\n case CollisionMode.destroy: {\n destroy(p1, p2);\n break;\n }\n }\n}\n","import { bounce } from \"./Bounce.js\";\nexport function destroy(p1, p2) {\n if (!p1.unbreakable && !p2.unbreakable) {\n bounce(p1, p2);\n }\n if (p1.getRadius() === undefined && p2.getRadius() !== undefined) {\n p1.destroy();\n }\n else if (p1.getRadius() !== undefined && p2.getRadius() === undefined) {\n p2.destroy();\n }\n else if (p1.getRadius() !== undefined && p2.getRadius() !== undefined) {\n const deleteP = p1.getRadius() >= p2.getRadius() ? p2 : p1;\n deleteP.destroy();\n }\n}\n","import { ParticlesInteractorBase, getDistance } from \"@tsparticles/engine\";\nimport { resolveCollision } from \"./ResolveCollision.js\";\nconst double = 2;\nexport class Collider extends ParticlesInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n }\n interact(p1, delta) {\n if (p1.destroyed || p1.spawning) {\n return;\n }\n const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * double);\n for (const p2 of query) {\n if (p1 === p2 ||\n !p2.options.collisions.enable ||\n p1.options.collisions.mode !== p2.options.collisions.mode ||\n p2.destroyed ||\n p2.spawning) {\n continue;\n }\n const pos2 = p2.getPosition(), radius2 = p2.getRadius();\n if (Math.abs(Math.round(pos1.z) - Math.round(pos2.z)) > radius1 + radius2) {\n continue;\n }\n const dist = getDistance(pos1, pos2), distP = radius1 + radius2;\n if (dist > distP) {\n continue;\n }\n resolveCollision(p1, p2, delta, container.retina.pixelRatio);\n }\n }\n isEnabled(particle) {\n return particle.options.collisions.enable;\n }\n reset() {\n }\n}\n","import { Circle, Rectangle } from \"@tsparticles/engine\";\nconst double = 2;\nexport class CircleWarp extends Circle {\n constructor(x, y, radius, canvasSize) {\n super(x, y, radius);\n this.canvasSize = canvasSize;\n this.canvasSize = { ...canvasSize };\n }\n contains(point) {\n const { width, height } = this.canvasSize, { x, y } = point;\n return (super.contains(point) ||\n super.contains({ x: x - width, y }) ||\n super.contains({ x: x - width, y: y - height }) ||\n super.contains({ x, y: y - height }));\n }\n intersects(range) {\n if (super.intersects(range)) {\n return true;\n }\n const rect = range, circle = range, newPos = {\n x: range.position.x - this.canvasSize.width,\n y: range.position.y - this.canvasSize.height,\n };\n if (circle.radius !== undefined) {\n const biggerCircle = new Circle(newPos.x, newPos.y, circle.radius * double);\n return super.intersects(biggerCircle);\n }\n else if (rect.size !== undefined) {\n const rectSW = new Rectangle(newPos.x, newPos.y, rect.size.width * double, rect.size.height * double);\n return super.intersects(rectSW);\n }\n return false;\n }\n}\n","import { OptionsColor } from \"@tsparticles/engine\";\nexport class LinksShadow {\n constructor() {\n this.blur = 5;\n this.color = new OptionsColor();\n this.color.value = \"#000\";\n this.enable = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.blur !== undefined) {\n this.blur = data.blur;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","import { OptionsColor } from \"@tsparticles/engine\";\nexport class LinksTriangle {\n constructor() {\n this.enable = false;\n this.frequency = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.frequency !== undefined) {\n this.frequency = data.frequency;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { OptionsColor } from \"@tsparticles/engine\";\nimport { LinksShadow } from \"./LinksShadow.js\";\nimport { LinksTriangle } from \"./LinksTriangle.js\";\nexport class Links {\n constructor() {\n this.blink = false;\n this.color = new OptionsColor();\n this.color.value = \"#fff\";\n this.consent = false;\n this.distance = 100;\n this.enable = false;\n this.frequency = 1;\n this.opacity = 1;\n this.shadow = new LinksShadow();\n this.triangles = new LinksTriangle();\n this.width = 1;\n this.warp = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.id !== undefined) {\n this.id = data.id;\n }\n if (data.blink !== undefined) {\n this.blink = data.blink;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.consent !== undefined) {\n this.consent = data.consent;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.frequency !== undefined) {\n this.frequency = data.frequency;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n this.shadow.load(data.shadow);\n this.triangles.load(data.triangles);\n if (data.width !== undefined) {\n this.width = data.width;\n }\n if (data.warp !== undefined) {\n this.warp = data.warp;\n }\n }\n}\n","import { Circle, ParticlesInteractorBase, getDistances, getLinkRandomColor, } from \"@tsparticles/engine\";\nimport { CircleWarp } from \"./CircleWarp.js\";\nimport { Links } from \"./Options/Classes/Links.js\";\nconst squarePower = 2, opacityOffset = 1, origin = {\n x: 0,\n y: 0,\n}, minDistance = 0;\nfunction getLinkDistance(pos1, pos2, optDistance, canvasSize, warp) {\n const { dx, dy, distance } = getDistances(pos1, pos2);\n if (!warp || distance <= optDistance) {\n return distance;\n }\n const absDiffs = {\n x: Math.abs(dx),\n y: Math.abs(dy),\n }, warpDistances = {\n x: Math.min(absDiffs.x, canvasSize.width - absDiffs.x),\n y: Math.min(absDiffs.y, canvasSize.height - absDiffs.y),\n };\n return Math.sqrt(warpDistances.x ** squarePower + warpDistances.y ** squarePower);\n}\nexport class Linker extends ParticlesInteractorBase {\n constructor(container) {\n super(container);\n this._setColor = p1 => {\n if (!p1.options.links) {\n return;\n }\n const container = this.linkContainer, linksOptions = p1.options.links;\n let linkColor = linksOptions.id === undefined\n ? container.particles.linksColor\n : container.particles.linksColors.get(linksOptions.id);\n if (linkColor) {\n return;\n }\n const optColor = linksOptions.color;\n linkColor = getLinkRandomColor(optColor, linksOptions.blink, linksOptions.consent);\n if (linksOptions.id === undefined) {\n container.particles.linksColor = linkColor;\n }\n else {\n container.particles.linksColors.set(linksOptions.id, linkColor);\n }\n };\n this.linkContainer = container;\n }\n clear() {\n }\n init() {\n this.linkContainer.particles.linksColor = undefined;\n this.linkContainer.particles.linksColors = new Map();\n }\n interact(p1) {\n if (!p1.options.links) {\n return;\n }\n p1.links = [];\n const pos1 = p1.getPosition(), container = this.container, canvasSize = container.canvas.size;\n if (pos1.x < origin.x || pos1.y < origin.y || pos1.x > canvasSize.width || pos1.y > canvasSize.height) {\n return;\n }\n const linkOpt1 = p1.options.links, optOpacity = linkOpt1.opacity, optDistance = p1.retina.linksDistance ?? minDistance, warp = linkOpt1.warp;\n let range;\n if (warp) {\n range = new CircleWarp(pos1.x, pos1.y, optDistance, canvasSize);\n }\n else {\n range = new Circle(pos1.x, pos1.y, optDistance);\n }\n const query = container.particles.quadTree.query(range);\n for (const p2 of query) {\n const linkOpt2 = p2.options.links;\n if (p1 === p2 ||\n !linkOpt2?.enable ||\n linkOpt1.id !== linkOpt2.id ||\n p2.spawning ||\n p2.destroyed ||\n !p2.links ||\n p1.links.some(t => t.destination === p2) ||\n p2.links.some(t => t.destination === p1)) {\n continue;\n }\n const pos2 = p2.getPosition();\n if (pos2.x < origin.x || pos2.y < origin.y || pos2.x > canvasSize.width || pos2.y > canvasSize.height) {\n continue;\n }\n const distance = getLinkDistance(pos1, pos2, optDistance, canvasSize, warp && linkOpt2.warp);\n if (distance > optDistance) {\n continue;\n }\n const opacityLine = (opacityOffset - distance / optDistance) * optOpacity;\n this._setColor(p1);\n p1.links.push({\n destination: p2,\n opacity: opacityLine,\n });\n }\n }\n isEnabled(particle) {\n return !!particle.options.links?.enable;\n }\n loadParticlesOptions(options, ...sources) {\n if (!options.links) {\n options.links = new Links();\n }\n for (const source of sources) {\n options.links.load(source?.links);\n }\n }\n reset() {\n }\n}\n","import { drawLine, getDistance, getDistances, getRandom, getStyleFromRgb, rangeColorToRgb, } from \"@tsparticles/engine\";\nexport function drawTriangle(context, p1, p2, p3) {\n context.beginPath();\n context.moveTo(p1.x, p1.y);\n context.lineTo(p2.x, p2.y);\n context.lineTo(p3.x, p3.y);\n context.closePath();\n}\nexport function drawLinkLine(params) {\n let drawn = false;\n const { begin, end, maxDistance, context, canvasSize, width, backgroundMask, colorLine, opacity, links } = params;\n if (getDistance(begin, end) <= maxDistance) {\n drawLine(context, begin, end);\n drawn = true;\n }\n else if (links.warp) {\n let pi1;\n let pi2;\n const endNE = {\n x: end.x - canvasSize.width,\n y: end.y,\n };\n const d1 = getDistances(begin, endNE);\n if (d1.distance <= maxDistance) {\n const yi = begin.y - (d1.dy / d1.dx) * begin.x;\n pi1 = { x: 0, y: yi };\n pi2 = { x: canvasSize.width, y: yi };\n }\n else {\n const endSW = {\n x: end.x,\n y: end.y - canvasSize.height,\n };\n const d2 = getDistances(begin, endSW);\n if (d2.distance <= maxDistance) {\n const yi = begin.y - (d2.dy / d2.dx) * begin.x;\n const xi = -yi / (d2.dy / d2.dx);\n pi1 = { x: xi, y: 0 };\n pi2 = { x: xi, y: canvasSize.height };\n }\n else {\n const endSE = {\n x: end.x - canvasSize.width,\n y: end.y - canvasSize.height,\n };\n const d3 = getDistances(begin, endSE);\n if (d3.distance <= maxDistance) {\n const yi = begin.y - (d3.dy / d3.dx) * begin.x;\n const xi = -yi / (d3.dy / d3.dx);\n pi1 = { x: xi, y: yi };\n pi2 = { x: pi1.x + canvasSize.width, y: pi1.y + canvasSize.height };\n }\n }\n }\n if (pi1 && pi2) {\n drawLine(context, begin, pi1);\n drawLine(context, end, pi2);\n drawn = true;\n }\n }\n if (!drawn) {\n return;\n }\n context.lineWidth = width;\n if (backgroundMask.enable) {\n context.globalCompositeOperation = backgroundMask.composite;\n }\n context.strokeStyle = getStyleFromRgb(colorLine, opacity);\n const { shadow } = links;\n if (shadow.enable) {\n const shadowColor = rangeColorToRgb(shadow.color);\n if (shadowColor) {\n context.shadowBlur = shadow.blur;\n context.shadowColor = getStyleFromRgb(shadowColor);\n }\n }\n context.stroke();\n}\nexport function drawLinkTriangle(params) {\n const { context, pos1, pos2, pos3, backgroundMask, colorTriangle, opacityTriangle } = params;\n drawTriangle(context, pos1, pos2, pos3);\n if (backgroundMask.enable) {\n context.globalCompositeOperation = backgroundMask.composite;\n }\n context.fillStyle = getStyleFromRgb(colorTriangle, opacityTriangle);\n context.fill();\n}\nexport function getLinkKey(ids) {\n ids.sort((a, b) => a - b);\n return ids.join(\"_\");\n}\nexport function setLinkFrequency(particles, dictionary) {\n const key = getLinkKey(particles.map(t => t.id));\n let res = dictionary.get(key);\n if (res === undefined) {\n res = getRandom();\n dictionary.set(key, res);\n }\n return res;\n}\n","import { getDistance, getLinkColor, getRandom, getRangeValue, rangeColorToRgb, } from \"@tsparticles/engine\";\nimport { drawLinkLine, drawLinkTriangle, setLinkFrequency } from \"./Utils.js\";\nconst minOpacity = 0, minWidth = 0, minDistance = 0, half = 0.5, maxFrequency = 1;\nexport class LinkInstance {\n constructor(container) {\n this.container = container;\n this._drawLinkLine = (p1, link) => {\n const p1LinksOptions = p1.options.links;\n if (!p1LinksOptions?.enable) {\n return;\n }\n const container = this.container, options = container.actualOptions, p2 = link.destination, pos1 = p1.getPosition(), pos2 = p2.getPosition();\n let opacity = link.opacity;\n container.canvas.draw(ctx => {\n let colorLine;\n const twinkle = p1.options.twinkle?.lines;\n if (twinkle?.enable) {\n const twinkleFreq = twinkle.frequency, twinkleRgb = rangeColorToRgb(twinkle.color), twinkling = getRandom() < twinkleFreq;\n if (twinkling && twinkleRgb) {\n colorLine = twinkleRgb;\n opacity = getRangeValue(twinkle.opacity);\n }\n }\n if (!colorLine) {\n const linkColor = p1LinksOptions.id !== undefined\n ? container.particles.linksColors.get(p1LinksOptions.id)\n : container.particles.linksColor;\n colorLine = getLinkColor(p1, p2, linkColor);\n }\n if (!colorLine) {\n return;\n }\n const width = p1.retina.linksWidth ?? minWidth, maxDistance = p1.retina.linksDistance ?? minDistance, { backgroundMask } = options;\n drawLinkLine({\n context: ctx,\n width,\n begin: pos1,\n end: pos2,\n maxDistance,\n canvasSize: container.canvas.size,\n links: p1LinksOptions,\n backgroundMask: backgroundMask,\n colorLine,\n opacity,\n });\n });\n };\n this._drawLinkTriangle = (p1, link1, link2) => {\n const linksOptions = p1.options.links;\n if (!linksOptions?.enable) {\n return;\n }\n const triangleOptions = linksOptions.triangles;\n if (!triangleOptions.enable) {\n return;\n }\n const container = this.container, options = container.actualOptions, p2 = link1.destination, p3 = link2.destination, opacityTriangle = triangleOptions.opacity ?? (link1.opacity + link2.opacity) * half;\n if (opacityTriangle <= minOpacity) {\n return;\n }\n container.canvas.draw(ctx => {\n const pos1 = p1.getPosition(), pos2 = p2.getPosition(), pos3 = p3.getPosition(), linksDistance = p1.retina.linksDistance ?? minDistance;\n if (getDistance(pos1, pos2) > linksDistance ||\n getDistance(pos3, pos2) > linksDistance ||\n getDistance(pos3, pos1) > linksDistance) {\n return;\n }\n let colorTriangle = rangeColorToRgb(triangleOptions.color);\n if (!colorTriangle) {\n const linkColor = linksOptions.id !== undefined\n ? container.particles.linksColors.get(linksOptions.id)\n : container.particles.linksColor;\n colorTriangle = getLinkColor(p1, p2, linkColor);\n }\n if (!colorTriangle) {\n return;\n }\n drawLinkTriangle({\n context: ctx,\n pos1,\n pos2,\n pos3,\n backgroundMask: options.backgroundMask,\n colorTriangle,\n opacityTriangle,\n });\n });\n };\n this._drawTriangles = (options, p1, link, p1Links) => {\n const p2 = link.destination;\n if (!(options.links?.triangles.enable && p2.options.links?.triangles.enable)) {\n return;\n }\n const vertices = p2.links?.filter(t => {\n const linkFreq = this._getLinkFrequency(p2, t.destination), minCount = 0;\n return (p2.options.links &&\n linkFreq <= p2.options.links.frequency &&\n p1Links.findIndex(l => l.destination === t.destination) >= minCount);\n });\n if (!vertices?.length) {\n return;\n }\n for (const vertex of vertices) {\n const p3 = vertex.destination, triangleFreq = this._getTriangleFrequency(p1, p2, p3);\n if (triangleFreq > options.links.triangles.frequency) {\n continue;\n }\n this._drawLinkTriangle(p1, link, vertex);\n }\n };\n this._getLinkFrequency = (p1, p2) => {\n return setLinkFrequency([p1, p2], this._freqs.links);\n };\n this._getTriangleFrequency = (p1, p2, p3) => {\n return setLinkFrequency([p1, p2, p3], this._freqs.triangles);\n };\n this._freqs = {\n links: new Map(),\n triangles: new Map(),\n };\n }\n drawParticle(context, particle) {\n const { links, options } = particle;\n if (!links?.length) {\n return;\n }\n const p1Links = links.filter(l => options.links &&\n (options.links.frequency >= maxFrequency ||\n this._getLinkFrequency(particle, l.destination) <= options.links.frequency));\n for (const link of p1Links) {\n this._drawTriangles(options, particle, link, p1Links);\n if (link.opacity > minOpacity && (particle.retina.linksWidth ?? minWidth) > minWidth) {\n this._drawLinkLine(particle, link);\n }\n }\n }\n async init() {\n this._freqs.links = new Map();\n this._freqs.triangles = new Map();\n await Promise.resolve();\n }\n particleCreated(particle) {\n particle.links = [];\n if (!particle.options.links) {\n return;\n }\n const ratio = this.container.retina.pixelRatio, { retina } = particle, { distance, width } = particle.options.links;\n retina.linksDistance = distance * ratio;\n retina.linksWidth = width * ratio;\n }\n particleDestroyed(particle) {\n particle.links = [];\n }\n}\n","import { LinkInstance } from \"./LinkInstance.js\";\nexport class LinksPlugin {\n constructor() {\n this.id = \"links\";\n }\n getPlugin(container) {\n return Promise.resolve(new LinkInstance(container));\n }\n loadOptions() {\n }\n needsPlugin() {\n return true;\n }\n}\n","import { loadLinksInteraction } from \"./interaction.js\";\nimport { loadLinksPlugin } from \"./plugin.js\";\nexport async function loadParticlesLinksInteraction(engine, refresh = true) {\n await loadLinksInteraction(engine, refresh);\n await loadLinksPlugin(engine, refresh);\n}\nexport * from \"./Options/Classes/Links.js\";\nexport * from \"./Options/Classes/LinksShadow.js\";\nexport * from \"./Options/Classes/LinksTriangle.js\";\nexport * from \"./Options/Interfaces/ILinks.js\";\nexport * from \"./Options/Interfaces/ILinksShadow.js\";\nexport * from \"./Options/Interfaces/ILinksTriangle.js\";\n","import { Linker } from \"./Linker.js\";\nexport async function loadLinksInteraction(engine, refresh = true) {\n await engine.addInteractor(\"particlesLinks\", async (container) => {\n return Promise.resolve(new Linker(container));\n }, refresh);\n}\n","import { LinksPlugin } from \"./LinksPlugin.js\";\nexport async function loadLinksPlugin(engine, refresh = true) {\n const plugin = new LinksPlugin();\n await engine.addPlugin(plugin, refresh);\n}\n","import { degToRad } from \"@tsparticles/engine\";\nconst piDeg = 180, origin = { x: 0, y: 0 }, sidesOffset = 2;\nexport function drawPolygon(data, start, side) {\n const { context } = data, sideCount = side.count.numerator * side.count.denominator, decimalSides = side.count.numerator / side.count.denominator, interiorAngleDegrees = (piDeg * (decimalSides - sidesOffset)) / decimalSides, interiorAngle = Math.PI - degToRad(interiorAngleDegrees);\n if (!context) {\n return;\n }\n context.beginPath();\n context.translate(start.x, start.y);\n context.moveTo(origin.x, origin.y);\n for (let i = 0; i < sideCount; i++) {\n context.lineTo(side.length, origin.y);\n context.translate(side.length, origin.y);\n context.rotate(interiorAngle);\n }\n}\n","import { getRangeValue, } from \"@tsparticles/engine\";\nimport { drawPolygon } from \"./Utils.js\";\nconst defaultSides = 5;\nexport class PolygonDrawerBase {\n draw(data) {\n const { particle, radius } = data, start = this.getCenter(particle, radius), side = this.getSidesData(particle, radius);\n drawPolygon(data, start, side);\n }\n getSidesCount(particle) {\n const polygon = particle.shapeData;\n return Math.round(getRangeValue(polygon?.sides ?? defaultSides));\n }\n}\n","import { PolygonDrawerBase } from \"./PolygonDrawerBase.js\";\nconst sidesCenterFactor = 3.5, yFactor = 2.66, sidesFactor = 3;\nexport class PolygonDrawer extends PolygonDrawerBase {\n constructor() {\n super(...arguments);\n this.validTypes = [\"polygon\"];\n }\n getCenter(particle, radius) {\n return {\n x: -radius / (particle.sides / sidesCenterFactor),\n y: -radius / (yFactor / sidesCenterFactor),\n };\n }\n getSidesData(particle, radius) {\n const sides = particle.sides;\n return {\n count: {\n denominator: 1,\n numerator: sides,\n },\n length: (radius * yFactor) / (sides / sidesFactor),\n };\n }\n}\n","import { PolygonDrawerBase } from \"./PolygonDrawerBase.js\";\nconst yFactor = 1.66, sides = 3, double = 2;\nexport class TriangleDrawer extends PolygonDrawerBase {\n constructor() {\n super(...arguments);\n this.validTypes = [\"triangle\"];\n }\n getCenter(particle, radius) {\n return {\n x: -radius,\n y: radius / yFactor,\n };\n }\n getSidesCount() {\n return sides;\n }\n getSidesData(particle, radius) {\n const diameter = radius * double;\n return {\n count: {\n denominator: 2,\n numerator: 3,\n },\n length: diameter,\n };\n }\n}\n","import { PolygonDrawer } from \"./PolygonDrawer.js\";\nimport { TriangleDrawer } from \"./TriangleDrawer.js\";\nexport async function loadGenericPolygonShape(engine, refresh = true) {\n await engine.addShape(new PolygonDrawer(), refresh);\n}\nexport async function loadTriangleShape(engine, refresh = true) {\n await engine.addShape(new TriangleDrawer(), refresh);\n}\nexport async function loadPolygonShape(engine, refresh = true) {\n await loadGenericPolygonShape(engine, refresh);\n await loadTriangleShape(engine, refresh);\n}\n","import { setRangeValue } from \"@tsparticles/engine\";\nexport class RotateAnimation {\n constructor() {\n this.enable = false;\n this.speed = 0;\n this.decay = 0;\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { RotateDirection, ValueWithRandom, } from \"@tsparticles/engine\";\nimport { RotateAnimation } from \"./RotateAnimation.js\";\nexport class Rotate extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new RotateAnimation();\n this.direction = RotateDirection.clockwise;\n this.path = false;\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n this.animation.load(data.animation);\n if (data.path !== undefined) {\n this.path = data.path;\n }\n }\n}\n","import { AnimationStatus, DestroyType, RotateDirection, degToRad, getRandom, getRangeValue, updateAnimation, } from \"@tsparticles/engine\";\nimport { Rotate } from \"./Options/Classes/Rotate.js\";\nconst double = 2, doublePI = Math.PI * double, identity = 1, doublePIDeg = 360;\nexport class RotateUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const rotateOptions = particle.options.rotate;\n if (!rotateOptions) {\n return;\n }\n particle.rotate = {\n enable: rotateOptions.animation.enable,\n value: degToRad(getRangeValue(rotateOptions.value)),\n min: 0,\n max: doublePI,\n };\n particle.pathRotation = rotateOptions.path;\n let rotateDirection = rotateOptions.direction;\n if (rotateDirection === RotateDirection.random) {\n const index = Math.floor(getRandom() * double), minIndex = 0;\n rotateDirection = index > minIndex ? RotateDirection.counterClockwise : RotateDirection.clockwise;\n }\n switch (rotateDirection) {\n case RotateDirection.counterClockwise:\n case \"counterClockwise\":\n particle.rotate.status = AnimationStatus.decreasing;\n break;\n case RotateDirection.clockwise:\n particle.rotate.status = AnimationStatus.increasing;\n break;\n }\n const rotateAnimation = rotateOptions.animation;\n if (rotateAnimation.enable) {\n particle.rotate.decay = identity - getRangeValue(rotateAnimation.decay);\n particle.rotate.velocity =\n (getRangeValue(rotateAnimation.speed) / doublePIDeg) * this.container.retina.reduceFactor;\n if (!rotateAnimation.sync) {\n particle.rotate.velocity *= getRandom();\n }\n }\n particle.rotation = particle.rotate.value;\n }\n isEnabled(particle) {\n const rotate = particle.options.rotate;\n if (!rotate) {\n return false;\n }\n return !particle.destroyed && !particle.spawning && (!!rotate.value || rotate.animation.enable || rotate.path);\n }\n loadOptions(options, ...sources) {\n if (!options.rotate) {\n options.rotate = new Rotate();\n }\n for (const source of sources) {\n options.rotate.load(source?.rotate);\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n particle.isRotating = !!particle.rotate;\n if (!particle.rotate) {\n return;\n }\n updateAnimation(particle, particle.rotate, false, DestroyType.none, delta);\n particle.rotation = particle.rotate.value;\n }\n}\n","const fixFactorSquared = 2, fixFactor = Math.sqrt(fixFactorSquared), double = 2;\nexport function drawSquare(data) {\n const { context, radius } = data, fixedRadius = radius / fixFactor, fixedDiameter = fixedRadius * double;\n context.rect(-fixedRadius, -fixedRadius, fixedDiameter, fixedDiameter);\n}\n","import { drawSquare } from \"./Utils.js\";\nconst sides = 4;\nexport class SquareDrawer {\n constructor() {\n this.validTypes = [\"edge\", \"square\"];\n }\n draw(data) {\n drawSquare(data);\n }\n getSidesCount() {\n return sides;\n }\n}\n","const defaultInset = 2, origin = { x: 0, y: 0 };\nexport function drawStar(data) {\n const { context, particle, radius } = data, sides = particle.sides, inset = particle.starInset ?? defaultInset;\n context.moveTo(origin.x, origin.y - radius);\n for (let i = 0; i < sides; i++) {\n context.rotate(Math.PI / sides);\n context.lineTo(origin.x, origin.y - radius * inset);\n context.rotate(Math.PI / sides);\n context.lineTo(origin.x, origin.y - radius);\n }\n}\n","import { getRangeValue, } from \"@tsparticles/engine\";\nimport { drawStar } from \"./Utils.js\";\nconst defaultInset = 2, defaultSides = 5;\nexport class StarDrawer {\n constructor() {\n this.validTypes = [\"star\"];\n }\n draw(data) {\n drawStar(data);\n }\n getSidesCount(particle) {\n const star = particle.shapeData;\n return Math.round(getRangeValue(star?.sides ?? defaultSides));\n }\n particleInit(container, particle) {\n const star = particle.shapeData;\n particle.starInset = getRangeValue(star?.inset ?? defaultInset);\n }\n}\n","import { getHslAnimationFromHsl, getRangeValue, itemFromSingleOrMultiple, rangeColorToHsl, updateColor, } from \"@tsparticles/engine\";\nconst defaultOpacity = 1;\nexport class StrokeColorUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const container = this.container, options = particle.options;\n const stroke = itemFromSingleOrMultiple(options.stroke, particle.id, options.reduceDuplicates);\n particle.strokeWidth = getRangeValue(stroke.width) * container.retina.pixelRatio;\n particle.strokeOpacity = getRangeValue(stroke.opacity ?? defaultOpacity);\n particle.strokeAnimation = stroke.color?.animation;\n const strokeHslColor = rangeColorToHsl(stroke.color) ?? particle.getFillColor();\n if (strokeHslColor) {\n particle.strokeColor = getHslAnimationFromHsl(strokeHslColor, particle.strokeAnimation, container.retina.reduceFactor);\n }\n }\n isEnabled(particle) {\n const color = particle.strokeAnimation, { strokeColor } = particle;\n return (!particle.destroyed &&\n !particle.spawning &&\n !!color &&\n ((strokeColor?.h.value !== undefined && strokeColor.h.enable) ||\n (strokeColor?.s.value !== undefined && strokeColor.s.enable) ||\n (strokeColor?.l.value !== undefined && strokeColor.l.enable)));\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateColor(particle.strokeColor, delta);\n }\n}\n","import { loadBasic } from \"@tsparticles/basic\";\nimport { loadEasingQuadPlugin } from \"@tsparticles/plugin-easing-quad\";\nimport { loadEmojiShape } from \"@tsparticles/shape-emoji\";\nimport { loadExternalAttractInteraction } from \"@tsparticles/interaction-external-attract\";\nimport { loadExternalBounceInteraction } from \"@tsparticles/interaction-external-bounce\";\nimport { loadExternalBubbleInteraction } from \"@tsparticles/interaction-external-bubble\";\nimport { loadExternalConnectInteraction } from \"@tsparticles/interaction-external-connect\";\nimport { loadExternalGrabInteraction } from \"@tsparticles/interaction-external-grab\";\nimport { loadExternalPauseInteraction } from \"@tsparticles/interaction-external-pause\";\nimport { loadExternalPushInteraction } from \"@tsparticles/interaction-external-push\";\nimport { loadExternalRemoveInteraction } from \"@tsparticles/interaction-external-remove\";\nimport { loadExternalRepulseInteraction } from \"@tsparticles/interaction-external-repulse\";\nimport { loadExternalSlowInteraction } from \"@tsparticles/interaction-external-slow\";\nimport { loadImageShape } from \"@tsparticles/shape-image\";\nimport { loadLifeUpdater } from \"@tsparticles/updater-life\";\nimport { loadLineShape } from \"@tsparticles/shape-line\";\nimport { loadParallaxMover } from \"@tsparticles/move-parallax\";\nimport { loadParticlesAttractInteraction } from \"@tsparticles/interaction-particles-attract\";\nimport { loadParticlesCollisionsInteraction } from \"@tsparticles/interaction-particles-collisions\";\nimport { loadParticlesLinksInteraction } from \"@tsparticles/interaction-particles-links\";\nimport { loadPolygonShape } from \"@tsparticles/shape-polygon\";\nimport { loadRotateUpdater } from \"@tsparticles/updater-rotate\";\nimport { loadSquareShape } from \"@tsparticles/shape-square\";\nimport { loadStarShape } from \"@tsparticles/shape-star\";\nimport { loadStrokeColorUpdater } from \"@tsparticles/updater-stroke-color\";\nexport async function loadSlim(engine, refresh = true) {\n await loadParallaxMover(engine, false);\n await loadExternalAttractInteraction(engine, false);\n await loadExternalBounceInteraction(engine, false);\n await loadExternalBubbleInteraction(engine, false);\n await loadExternalConnectInteraction(engine, false);\n await loadExternalGrabInteraction(engine, false);\n await loadExternalPauseInteraction(engine, false);\n await loadExternalPushInteraction(engine, false);\n await loadExternalRemoveInteraction(engine, false);\n await loadExternalRepulseInteraction(engine, false);\n await loadExternalSlowInteraction(engine, false);\n await loadParticlesAttractInteraction(engine, false);\n await loadParticlesCollisionsInteraction(engine, false);\n await loadParticlesLinksInteraction(engine, false);\n await loadEasingQuadPlugin();\n await loadEmojiShape(engine, false);\n await loadImageShape(engine, false);\n await loadLineShape(engine, false);\n await loadPolygonShape(engine, false);\n await loadSquareShape(engine, false);\n await loadStarShape(engine, false);\n await loadLifeUpdater(engine, false);\n await loadRotateUpdater(engine, false);\n await loadStrokeColorUpdater(engine, false);\n await loadBasic(engine, refresh);\n}\n","import { ParallaxMover } from \"./ParallaxMover.js\";\nexport async function loadParallaxMover(engine, refresh = true) {\n await engine.addMover(\"parallax\", () => {\n return Promise.resolve(new ParallaxMover());\n }, refresh);\n}\n","import { Attractor } from \"./Attractor.js\";\nexport async function loadExternalAttractInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalAttract\", container => {\n return Promise.resolve(new Attractor(engine, container));\n }, refresh);\n}\nexport * from \"./Options/Classes/Attract.js\";\nexport * from \"./Options/Interfaces/IAttract.js\";\n","import { Bouncer } from \"./Bouncer.js\";\nexport async function loadExternalBounceInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalBounce\", container => {\n return Promise.resolve(new Bouncer(container));\n }, refresh);\n}\nexport * from \"./Options/Classes/Bounce.js\";\nexport * from \"./Options/Interfaces/IBounce.js\";\n","import { Bubbler } from \"./Bubbler.js\";\nexport async function loadExternalBubbleInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalBubble\", container => {\n return Promise.resolve(new Bubbler(container));\n }, refresh);\n}\nexport * from \"./Options/Classes/BubbleBase.js\";\nexport * from \"./Options/Classes/BubbleDiv.js\";\nexport * from \"./Options/Classes/Bubble.js\";\nexport * from \"./Options/Interfaces/IBubbleBase.js\";\nexport * from \"./Options/Interfaces/IBubbleDiv.js\";\nexport * from \"./Options/Interfaces/IBubble.js\";\n","import { Connector } from \"./Connector.js\";\nexport async function loadExternalConnectInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalConnect\", container => {\n return Promise.resolve(new Connector(container));\n }, refresh);\n}\nexport * from \"./Options/Classes/Connect.js\";\nexport * from \"./Options/Classes/ConnectLinks.js\";\nexport * from \"./Options/Interfaces/IConnect.js\";\nexport * from \"./Options/Interfaces/IConnectLinks.js\";\n","import { Grabber } from \"./Grabber.js\";\nexport async function loadExternalGrabInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalGrab\", container => {\n return Promise.resolve(new Grabber(container));\n }, refresh);\n}\nexport * from \"./Options/Classes/Grab.js\";\nexport * from \"./Options/Classes/GrabLinks.js\";\nexport * from \"./Options/Interfaces/IGrab.js\";\nexport * from \"./Options/Interfaces/IGrabLinks.js\";\n","import { Pauser } from \"./Pauser.js\";\nexport async function loadExternalPauseInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalPause\", container => {\n return Promise.resolve(new Pauser(container));\n }, refresh);\n}\n","import { Pusher } from \"./Pusher.js\";\nexport async function loadExternalPushInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalPush\", container => {\n return Promise.resolve(new Pusher(container));\n }, refresh);\n}\nexport * from \"./Options/Classes/Push.js\";\nexport * from \"./Options/Interfaces/IPush.js\";\n","import { Remover } from \"./Remover.js\";\nexport async function loadExternalRemoveInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalRemove\", container => {\n return Promise.resolve(new Remover(container));\n }, refresh);\n}\nexport * from \"./Options/Classes/Remove.js\";\nexport * from \"./Options/Interfaces/IRemove.js\";\n","import { Repulser } from \"./Repulser.js\";\nexport async function loadExternalRepulseInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalRepulse\", container => {\n return Promise.resolve(new Repulser(engine, container));\n }, refresh);\n}\nexport * from \"./Options/Classes/RepulseBase.js\";\nexport * from \"./Options/Classes/RepulseDiv.js\";\nexport * from \"./Options/Classes/Repulse.js\";\nexport * from \"./Options/Interfaces/IRepulseBase.js\";\nexport * from \"./Options/Interfaces/IRepulseDiv.js\";\nexport * from \"./Options/Interfaces/IRepulse.js\";\n","import { Slower } from \"./Slower.js\";\nexport async function loadExternalSlowInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalSlow\", container => {\n return Promise.resolve(new Slower(container));\n }, refresh);\n}\nexport * from \"./Options/Classes/Slow.js\";\nexport * from \"./Options/Interfaces/ISlow.js\";\n","import { Attractor } from \"./Attractor.js\";\nexport async function loadParticlesAttractInteraction(engine, refresh = true) {\n await engine.addInteractor(\"particlesAttract\", container => {\n return Promise.resolve(new Attractor(container));\n }, refresh);\n}\n","import { Collider } from \"./Collider.js\";\nexport async function loadParticlesCollisionsInteraction(engine, refresh = true) {\n await engine.addInteractor(\"particlesCollisions\", container => {\n return Promise.resolve(new Collider(container));\n }, refresh);\n}\n","import { EasingType, addEasing } from \"@tsparticles/engine\";\nexport async function loadEasingQuadPlugin() {\n addEasing(EasingType.easeInQuad, value => value ** 2);\n addEasing(EasingType.easeOutQuad, value => 1 - (1 - value) ** 2);\n addEasing(EasingType.easeInOutQuad, value => (value < 0.5 ? 2 * value ** 2 : 1 - (-2 * value + 2) ** 2 / 2));\n await Promise.resolve();\n}\n","import { EmojiDrawer } from \"./EmojiDrawer.js\";\nexport async function loadEmojiShape(engine, refresh = true) {\n await engine.addShape(new EmojiDrawer(), refresh);\n}\n","import { LineDrawer } from \"./LineDrawer.js\";\nexport async function loadLineShape(engine, refresh = true) {\n await engine.addShape(new LineDrawer(), refresh);\n}\n","import { SquareDrawer } from \"./SquareDrawer.js\";\nexport async function loadSquareShape(engine, refresh = true) {\n await engine.addShape(new SquareDrawer(), refresh);\n}\n","import { StarDrawer } from \"./StarDrawer.js\";\nexport async function loadStarShape(engine, refresh = true) {\n await engine.addShape(new StarDrawer(), refresh);\n}\n","import { LifeUpdater } from \"./LifeUpdater.js\";\nexport async function loadLifeUpdater(engine, refresh = true) {\n await engine.addParticleUpdater(\"life\", async (container) => {\n return Promise.resolve(new LifeUpdater(container));\n }, refresh);\n}\n","import { RotateUpdater } from \"./RotateUpdater.js\";\nexport async function loadRotateUpdater(engine, refresh = true) {\n await engine.addParticleUpdater(\"rotate\", container => {\n return Promise.resolve(new RotateUpdater(container));\n }, refresh);\n}\n","import { StrokeColorUpdater } from \"./StrokeColorUpdater.js\";\nexport async function loadStrokeColorUpdater(engine, refresh = true) {\n await engine.addParticleUpdater(\"strokeColor\", container => {\n return Promise.resolve(new StrokeColorUpdater(container));\n }, refresh);\n}\n","import Particles, { initParticlesEngine } from \"@tsparticles/react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { loadSlim } from \"@tsparticles/slim\";\n\nconst ParticlesComponent = (props) => {\n const [init, setInit] = useState(false);\n const [configIndex, setConfigIndex] = useState(0);\n\n useEffect(() => {\n initParticlesEngine(async (engine) => {\n await loadSlim(engine);\n }).then(() => {\n setInit(true);\n });\n\n // Alterna entre as configurações a cada 1 minuto\n const intervalId = setInterval(() => {\n setConfigIndex((prev) => (prev + 1) % 12); // Atualiza o índice para alternar entre 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11 e 12\n }, 60000);\n\n // Limpa o intervalo quando o componente for desmontado\n return () => clearInterval(intervalId);\n }, []);\n\n const particlesLoaded = (container) => {\n console.log(container);\n };\n\n // Configurações\n\n // Primeira configuração de partículas - Paradas\n const config1 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"\",\n \"repeat\": \"\",\n \"size\": \"\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": []\n },\n \"onDiv\": {\n \"selectors\": [],\n \"enable\": false,\n \"mode\": [],\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": true,\n \"mode\": \"bubble\",\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 0.4,\n \"mix\": false,\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": []\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": []\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": []\n },\n \"groups\": {},\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 90\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"none\",\n \"drift\": 0,\n \"enable\": false,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\", \n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"emitters\": [],\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Segunda configuração de partículas particulas - None \n const config2 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"50% 50%\",\n \"repeat\": \"no-repeat\",\n \"size\": \"20%\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": {}\n },\n \"onDiv\": {\n \"selectors\": {},\n \"enable\": false,\n \"mode\": {},\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": false,\n \"mode\": {},\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 2,\n \"mix\": false,\n \"opacity\": 0,\n \"size\": 0, \n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": {}\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": {}\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": {}\n },\n \"groups\": [],\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 10\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"none\",\n \"drift\": 0,\n \"enable\": true,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.3,\n \"max\": 0.6\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\",\n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"name\": \"Among Us\",\n \"emitters\": {\n \"autoPlay\": true,\n \"fill\": true,\n \n \n \"particles\": {\n \"shape\": {\n \"type\": \"images\",\n \"options\": {\n \"images\": {\n \"src\": \"https://www.wcontec.com.br/images/Logo-WCONTEC.original.png\",\n \"width\": 500,\n \"height\": 634\n }\n }\n }, \n },\n \n },\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Terceira configuração de partículas - Caindo\n const config3 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"\",\n \"repeat\": \"\",\n \"size\": \"\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": {}\n },\n \"onDiv\": {\n \"selectors\": {},\n \"enable\": false,\n \"mode\": {},\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": false,\n \"mode\": {},\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 0.4,\n \"mix\": false,\n \"opacity\": 0,\n \"size\": 0,\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": {}\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": {}\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": {}\n },\n \"groups\": [],\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 90\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"bottom\",\n \"drift\": 0,\n \"enable\": true,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": 2,\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": true,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\"\n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"name\": \"Snow\",\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Quarta configuração de partículas - Paradas\n const config4= useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"\",\n \"repeat\": \"\",\n \"size\": \"\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": []\n },\n \"onDiv\": {\n \"selectors\": [],\n \"enable\": false,\n \"mode\": [],\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": true,\n \"mode\": \"bubble\",\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 0.4,\n \"mix\": false,\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": []\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": []\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": []\n },\n \"groups\": {},\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 90\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"none\",\n \"drift\": 0,\n \"enable\": false,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\", \n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"emitters\": [],\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Quinta configuração de partículas particulas - None \n const config5 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"50% 50%\",\n \"repeat\": \"no-repeat\",\n \"size\": \"20%\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": {}\n },\n \"onDiv\": {\n \"selectors\": {},\n \"enable\": false,\n \"mode\": {},\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": false,\n \"mode\": {},\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 2,\n \"mix\": false,\n \"opacity\": 0,\n \"size\": 0, \n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": {}\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": {}\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": {}\n },\n \"groups\": [],\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 10\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"none\",\n \"drift\": 0,\n \"enable\": true,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.3,\n \"max\": 0.6\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\",\n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"name\": \"Among Us\",\n \"emitters\": {\n \"autoPlay\": true,\n \"fill\": true,\n \n \n \"particles\": {\n \"shape\": {\n \"type\": \"images\",\n \"options\": {\n \"images\": {\n \"src\": \"https://www.wcontec.com.br/images/Logo-WCONTEC.original.png\",\n \"width\": 500,\n \"height\": 634\n }\n }\n }, \n },\n \n },\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Sexta configuração de partículas - Direita\n const config6 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"50% 50%\",\n \"repeat\": \"no-repeat\",\n \"size\": \"20%\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": {}\n },\n \"onDiv\": {\n \"selectors\": {},\n \"enable\": false,\n \"mode\": {},\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": false,\n \"mode\": {},\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 2,\n \"mix\": false,\n \"opacity\": 0,\n \"size\": 0, \n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": {}\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": {}\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": {}\n },\n \"groups\": [],\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 10\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"right\",\n \"drift\": 0,\n \"enable\": true,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.3,\n \"max\": 1\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\"\n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"name\": \"Among Us\",\n \"emitters\": {\n \"autoPlay\": true,\n \"fill\": true,\n \n \n \"particles\": {\n \"shape\": {\n \"type\": \"images\",\n \"options\": {\n \"images\": {\n \"src\": \"https://www.wcontec.com.br/images/Logo-WCONTEC.original.png\",\n \"width\": 500,\n \"height\": 634\n }\n }\n }, \n },\n \n },\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Setima configuração de partículas - Paradas\n const config7 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"\",\n \"repeat\": \"\",\n \"size\": \"\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": []\n },\n \"onDiv\": {\n \"selectors\": [],\n \"enable\": false,\n \"mode\": [],\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": true,\n \"mode\": \"bubble\",\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 0.4,\n \"mix\": false,\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": []\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": []\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": []\n },\n \"groups\": {},\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 90\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"none\",\n \"drift\": 0,\n \"enable\": false,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\", \n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"emitters\": [],\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Oitava configuração de partículas particulas - None \n const config8 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"50% 50%\",\n \"repeat\": \"no-repeat\",\n \"size\": \"20%\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": {}\n },\n \"onDiv\": {\n \"selectors\": {},\n \"enable\": false,\n \"mode\": {},\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": false,\n \"mode\": {},\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 2,\n \"mix\": false,\n \"opacity\": 0,\n \"size\": 0, \n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": {}\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": {}\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": {}\n },\n \"groups\": [],\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 10\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"none\",\n \"drift\": 0,\n \"enable\": true,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.3,\n \"max\": 0.6\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\",\n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"name\": \"Among Us\",\n \"emitters\": {\n \"autoPlay\": true,\n \"fill\": true,\n \n \n \"particles\": {\n \"shape\": {\n \"type\": \"images\",\n \"options\": {\n \"images\": {\n \"src\": \"https://www.wcontec.com.br/images/Logo-WCONTEC.original.png\",\n \"width\": 500,\n \"height\": 634\n }\n }\n }, \n },\n \n },\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Nona configuração de partículas - Esquerda\n const config9 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"50% 50%\",\n \"repeat\": \"no-repeat\",\n \"size\": \"20%\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": {}\n },\n \"onDiv\": {\n \"selectors\": {},\n \"enable\": false,\n \"mode\": {},\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": false,\n \"mode\": {},\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 2,\n \"mix\": false,\n \"opacity\": 0,\n \"size\": 0, \n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": {}\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": {}\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": {}\n },\n \"groups\": [],\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 10\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"left\",\n \"drift\": 0,\n \"enable\": true,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 3,\n \"max\": 6\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\"\n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"name\": \"Among Us\",\n \"emitters\": {\n \"autoPlay\": true,\n \"fill\": true,\n \n \n \"particles\": {\n \"shape\": {\n \"type\": \"images\",\n \"options\": {\n \"images\": {\n \"src\": \"https://www.wcontec.com.br/images/Logo-WCONTEC.original.png\",\n \"width\": 500,\n \"height\": 634\n }\n }\n }, \n },\n \n },\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Decima configuração de partículas - Paradas\n const config10= useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"\",\n \"repeat\": \"\",\n \"size\": \"\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": []\n },\n \"onDiv\": {\n \"selectors\": [],\n \"enable\": false,\n \"mode\": [],\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": true,\n \"mode\": \"bubble\",\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 0.4,\n \"mix\": false,\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": []\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": []\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": []\n },\n \"groups\": {},\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 90\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"none\",\n \"drift\": 0,\n \"enable\": false,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\", \n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"emitters\": [],\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n // Decimo Primeiro configuração de partículas - None \n const config11 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"50% 50%\",\n \"repeat\": \"no-repeat\",\n \"size\": \"20%\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": {}\n },\n \"onDiv\": {\n \"selectors\": {},\n \"enable\": false,\n \"mode\": {},\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": false,\n \"mode\": {},\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 2,\n \"mix\": false,\n \"opacity\": 0,\n \"size\": 0, \n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": {}\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": {}\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": {}\n },\n \"groups\": [],\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 10\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"none\",\n \"drift\": 0,\n \"enable\": true,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.3,\n \"max\": 0.6\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\",\n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"name\": \"Among Us\",\n \"emitters\": {\n \"autoPlay\": true,\n \"fill\": true,\n \n \n \"particles\": {\n \"shape\": {\n \"type\": \"images\",\n \"options\": {\n \"images\": {\n \"src\": \"https://www.wcontec.com.br/images/Logo-WCONTEC.original.png\",\n \"width\": 500,\n \"height\": 634\n }\n }\n }, \n },\n \n },\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n\n // Decimo Segundo configuração de partículas particulas - Subindo\n const config12 = useMemo(() => ({\n \"autoPlay\": true,\n \"background\": {\n \"color\": {\n \"value\": \"#050922\"\n },\n \"image\": \"\",\n \"position\": \"50% 50%\",\n \"repeat\": \"no-repeat\",\n \"size\": \"20%\",\n \"opacity\": 1\n },\n \"backgroundMask\": {\n \"composite\": \"destination-out\",\n \"cover\": {\n \"color\": {\n \"value\": \"#fff\"\n },\n \"opacity\": 1\n },\n \"enable\": false\n },\n \"clear\": true,\n \"defaultThemes\": {},\n \"delay\": 0,\n \"fullScreen\": {\n \"enable\": true,\n \"zIndex\": 0\n },\n \"detectRetina\": true,\n \"duration\": 0,\n \"fpsLimit\": 120,\n \"interactivity\": {\n \"detectsOn\": \"window\",\n \"events\": {\n \"onClick\": {\n \"enable\": false,\n \"mode\": {}\n },\n \"onDiv\": {\n \"selectors\": {},\n \"enable\": false,\n \"mode\": {},\n \"type\": \"circle\"\n },\n \"onHover\": {\n \"enable\": false,\n \"mode\": {},\n \"parallax\": {\n \"enable\": false,\n \"force\": 2,\n \"smooth\": 10\n }\n },\n \"resize\": {\n \"delay\": 0.5,\n \"enable\": true\n }\n },\n \"modes\": {\n \"trail\": {\n \"delay\": 1,\n \"pauseOnStop\": false,\n \"quantity\": 1\n },\n \"attract\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"easing\": \"ease-out-quad\",\n \"factor\": 1,\n \"maxSpeed\": 50,\n \"speed\": 1\n },\n \"bounce\": {\n \"distance\": 200\n },\n \"bubble\": {\n \"distance\": 250,\n \"duration\": 2,\n \"mix\": false,\n \"opacity\": 0,\n \"size\": 0, \n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"mix\": false,\n \"selectors\": {}\n }\n },\n \"connect\": {\n \"distance\": 80,\n \"links\": {\n \"opacity\": 0.5\n },\n \"radius\": 60\n },\n \"grab\": {\n \"distance\": 400,\n \"links\": {\n \"blink\": false,\n \"consent\": false,\n \"opacity\": 1\n }\n },\n \"push\": {\n \"default\": true,\n \"groups\": [],\n \"quantity\": 4\n },\n \"remove\": {\n \"quantity\": 2\n },\n \"repulse\": {\n \"distance\": 400,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"divs\": {\n \"distance\": 200,\n \"duration\": 0.4,\n \"factor\": 100,\n \"speed\": 1,\n \"maxSpeed\": 50,\n \"easing\": \"ease-out-quad\",\n \"selectors\": {}\n }\n },\n \"slow\": {\n \"factor\": 3,\n \"radius\": 200\n },\n \"light\": {\n \"area\": {\n \"gradient\": {\n \"start\": {\n \"value\": \"#ffffff\"\n },\n \"stop\": {\n \"value\": \"#000000\"\n }\n },\n \"radius\": 1000\n },\n \"shadow\": {\n \"color\": {\n \"value\": \"#000000\"\n },\n \"length\": 2000\n }\n }\n }\n },\n \"manualParticles\": [],\n \"particles\": {\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"collisions\": {\n \"absorb\": {\n \"speed\": 2\n },\n \"bounce\": {\n \"horizontal\": {\n \"value\": 1\n },\n \"vertical\": {\n \"value\": 1\n }\n },\n \"enable\": false,\n \"maxSpeed\": 50,\n \"mode\": \"bounce\",\n \"overlap\": {\n \"enable\": true,\n \"retries\": 0\n }\n },\n \"color\": {\n \"value\": [\"#f66922\", \"#80cc46\", \"#1ca0f3\", \"#ffffff\"], // Laranja, Verde, Azul e Branca\n \"animation\": {\n \"h\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"s\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n },\n \"l\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": true,\n \"offset\": 0\n }\n }\n },\n \"effect\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": {}\n },\n \"groups\": [],\n \"move\": {\n \"angle\": {\n \"offset\": 0,\n \"value\": 10\n },\n \"attract\": {\n \"distance\": 200,\n \"enable\": false,\n \"rotate\": {\n \"x\": 3000,\n \"y\": 3000\n }\n },\n \"center\": {\n \"x\": 50,\n \"y\": 50,\n \"mode\": \"percent\",\n \"radius\": 0\n },\n \"decay\": 0,\n \"distance\": {},\n \"direction\": \"top\",\n \"drift\": 0,\n \"enable\": true,\n \"gravity\": {\n \"acceleration\": 9.81,\n \"enable\": false,\n \"inverse\": false,\n \"maxSpeed\": 50\n },\n \"path\": {\n \"clamp\": true,\n \"delay\": {\n \"value\": 0\n },\n \"enable\": false,\n \"options\": {}\n },\n \"outModes\": {\n \"default\": \"out\",\n \"bottom\": \"out\",\n \"left\": \"out\",\n \"right\": \"out\",\n \"top\": \"out\"\n },\n \"random\": false,\n \"size\": false,\n \"speed\": {\n \"min\": 0.3,\n \"max\": 0.6,\n },\n \"spin\": {\n \"acceleration\": 0,\n \"enable\": false\n },\n \"straight\": false,\n \"trail\": {\n \"enable\": false,\n \"length\": 10,\n \"fill\": {}\n },\n \"vibrate\": false,\n \"warp\": false\n },\n \"number\": {\n \"density\": {\n \"enable\": true,\n \"width\": 1920,\n \"height\": 1080\n },\n \"limit\": {\n \"mode\": \"delete\",\n \"value\": 0\n },\n \"value\": 600\n },\n \"opacity\": {\n \"value\": {\n \"min\": 0.1,\n \"max\": 1\n },\n \"animation\": {\n \"count\": 0,\n \"enable\": true,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"reduceDuplicates\": false,\n \"shadow\": {\n \"blur\": 0,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false,\n \"offset\": {\n \"x\": 0,\n \"y\": 0\n }\n },\n \"shape\": {\n \"close\": true,\n \"fill\": true,\n \"options\": {},\n \"type\": \"circle\"\n },\n \"size\": {\n \"value\": {\n \"min\": 0.5,\n \"max\": 1.5\n },\n \n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 5,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false,\n \"mode\": \"auto\",\n \"startValue\": \"random\",\n \"destroy\": \"none\"\n }\n },\n \"stroke\": {\n \"width\": 0\n },\n \"zIndex\": {\n \"value\": 0,\n \"opacityRate\": 1,\n \"sizeRate\": 1,\n \"velocityRate\": 1\n },\n \"destroy\": {\n \"bounds\": {},\n \"mode\": \"none\",\n \"split\": {\n \"count\": 1,\n \"factor\": {\n \"value\": 3\n },\n \"rate\": {\n \"value\": {\n \"min\": 4,\n \"max\": 9\n }\n },\n \"sizeOffset\": true,\n \"particles\": {}\n }\n },\n \"roll\": {\n \"darken\": {\n \"enable\": false,\n \"value\": 0\n },\n \"enable\": false,\n \"enlighten\": {\n \"enable\": false,\n \"value\": 0\n },\n \"mode\": \"vertical\",\n \"speed\": 25\n },\n \"tilt\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"enable\": false\n },\n \"twinkle\": {\n \"lines\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n },\n \"particles\": {\n \"enable\": false,\n \"frequency\": 0.05,\n \"opacity\": 1\n }\n },\n \"wobble\": {\n \"distance\": 5,\n \"enable\": false,\n \"speed\": {\n \"angle\": 50,\n \"move\": 10\n }\n },\n \"life\": {\n \"count\": 0,\n \"delay\": {\n \"value\": 0,\n \"sync\": false\n },\n \"duration\": {\n \"value\": 0,\n \"sync\": false\n }\n },\n \"rotate\": {\n \"value\": 0,\n \"animation\": {\n \"enable\": false,\n \"speed\": 0,\n \"decay\": 0,\n \"sync\": false\n },\n \"direction\": \"clockwise\",\n \"path\": false\n },\n \"orbit\": {\n \"animation\": {\n \"count\": 0,\n \"enable\": false,\n \"speed\": 1,\n \"decay\": 0,\n \"delay\": 0,\n \"sync\": false\n },\n \"enable\": false,\n \"opacity\": 1,\n \"rotation\": {\n \"value\": 45\n },\n \"width\": 1\n },\n \"links\": {\n \"blink\": false,\n \"color\": {\n \"value\": \"#fff\"\n },\n \"consent\": false,\n \"distance\": 100,\n \"enable\": false,\n \"frequency\": 1,\n \"opacity\": 1,\n \"shadow\": {\n \"blur\": 5,\n \"color\": {\n \"value\": \"#000\"\n },\n \"enable\": false\n },\n \"triangles\": {\n \"enable\": false,\n \"frequency\": 1\n },\n \"width\": 1,\n \"warp\": false\n },\n \"repulse\": {\n \"value\": 0,\n \"enabled\": false,\n \"distance\": 1,\n \"duration\": 1,\n \"factor\": 1,\n \"speed\": 1\n }\n },\n \"pauseOnBlur\": true,\n \"pauseOnOutsideViewport\": true,\n \"responsive\": [],\n \"smooth\": false,\n \"style\": {},\n \"themes\": [],\n \"zLayers\": 100,\n \"name\": \"Among Us\",\n \"emitters\": {\n \"autoPlay\": true,\n \"fill\": true,\n \n \n \"particles\": {\n \"shape\": {\n \"type\": \"images\",\n \"options\": {\n \"images\": {\n \"src\": \"https://www.wcontec.com.br/images/Logo-WCONTEC.original.png\",\n \"width\": 500,\n \"height\": 634\n }\n }\n }, \n },\n \n },\n \"motion\": {\n \"disable\": false,\n \"reduce\": {\n \"factor\": 4,\n \"value\": true\n }\n }\n }), []);\n\n\n // Array de configurações\n const configs = [config1, config2, config3, config4, config5, config6, config7, config8, config9, config10, config11, config12];\n\n return (\n \n );\n};\n\nexport default ParticlesComponent;","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\nexport interface AgnosticPatchRoutesOnNavigationFunction<\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n (opts: {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n }): void | Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n HandlerResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.unstable_patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // FIFO queue of previously discovered routes to prevent re-calling on\n // subsequent navigations to the same path\n let discoveredRoutesMaxSize = 1000;\n let discoveredRoutes = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches\n );\n result = results[0];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n fetchRequest,\n [match],\n matches\n );\n let result = results[0];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\n }));\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function handleDiscoverRouteError(\n pathname: string,\n discoverResult: DiscoverRoutesErrorResult\n ) {\n return {\n boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n error: getInternalRouterError(400, {\n type: \"route-discovery\",\n pathname,\n message:\n discoverResult.error != null && \"message\" in discoverResult.error\n ? discoverResult.error\n : String(discoverResult.error),\n }),\n };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n // Don't bother re-calling patchRouteOnMiss for a path we've already\n // processed. the last execution would have patched the route tree\n // accordingly so `matches` here are already accurate.\n if (discoveredRoutes.has(pathname)) {\n return { active: false, matches };\n }\n\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(\n patchRoutesOnNavigationImpl!,\n pathname,\n partialMatches,\n routesToUse,\n manifest,\n mapRouteProperties,\n pendingPatchRoutes,\n signal\n );\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function addToFifoQueue(path: string, queue: Set) {\n if (queue.size >= discoveredRoutesMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[0];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Idempotent utility to execute patchRoutesOnNavigation() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n patchRoutesOnNavigationImpl: AgnosticPatchRoutesOnNavigationFunction,\n path: string,\n matches: AgnosticDataRouteMatch[],\n routes: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n pendingRouteChildren: Map<\n string,\n ReturnType\n >,\n signal: AbortSignal\n) {\n let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnNavigationImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(\n routeId,\n children,\n routes,\n manifest,\n mapRouteProperties\n );\n }\n },\n });\n pendingRouteChildren.set(key, pending);\n }\n\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [routeId, \"patch\", String(route.children?.length || \"0\")],\n manifest\n );\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [\"patch\", String(routesToUse.length || \"0\")],\n manifest\n );\n routesToUse.push(...dataChildren);\n }\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n }),\n request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type } = handlerResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown unstable_data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\" | \"route-discovery\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (type === \"route-discovery\") {\n errorMessage =\n `Unable to match URL \"${pathname}\" - the \\`unstable_patchRoutesOnNavigation()\\` ` +\n `function threw the following error:\\n${message}`;\n } else if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isHandlerResult(result: unknown): result is HandlerResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectHandlerResult(result: HandlerResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a