{"version":3,"file":"main.js","mappings":";sCAAC,WACC,aAGA,IAAIA,EAAgB,WAClB,SAASA,IACPC,KAAKC,MAAQ,IAAIC,EACjBF,KAAKG,mBAAqB,GAC1BH,KAAKI,QAAU,IACjB,CAEA,IAAIC,EAAY,CACdC,QAAS,CACPC,UAAW,UACXC,aAAc,IACdC,aAAc,GACdC,SAAU,IACVC,aAAa,EACbC,aAAa,GAEfC,QAAS,CACPN,UAAW,WAEbO,KAAM,CACJP,UAAW,QAEbQ,QAAS,CACPR,UAAW,WAEbS,MAAO,CACLT,UAAW,QACXG,SAAU,IACVC,aAAa,IAkIjB,IAAK,IAAIM,KA7HTlB,EAAamB,UAAUC,YAAc,SAASC,GAC5C,IAAIC,EAAYC,SAASC,cAAc,OACnCC,EAAWF,SAASC,cAAc,OAClCE,EAAOH,SAASC,cAAc,OAC9BZ,EAAcW,SAASC,cAAc,QAEzCF,EAAUK,aAAa,KAAM,2BAE7BF,EAASE,aAAa,KAAM,iBAE5BD,EAAKC,aAAa,KAAM,sBAExBf,EAAYe,aAAa,KAAM,8BAC/Bf,EAAYgB,UAAY,WAExBH,EAASI,YAAYH,GACrBD,EAASI,YAAYjB,GACrBU,EAAUO,YAAYJ,GAElBJ,EACFE,SAASO,eAAeC,SAASF,YAAYG,YAE7CT,SAASU,KAAKJ,YAAYP,GAG5BrB,KAAKI,QAAU,CACbiB,UAAWA,EACXG,SAAUA,EACVC,KAAMA,EACNd,YAAaA,GAGfsB,EAAUjC,KAAMK,EAAUC,QAC5B,EAGAP,EAAamB,UAAUgB,OAAS,WAC1BlC,KAAKG,mBAAmBgC,QAAQnC,KAAKG,mBAAmB,GAAG+B,QACjE,EAGAnC,EAAamB,UAAUkB,UAAY,WAEjC,IADA,IAAID,EAASnC,KAAKG,mBAAmBgC,OAC5BE,EAAI,EAAGA,EAAIF,IAAUE,EAGzBrC,KAAKG,mBAAmBgC,EAASE,EAAI,GADhCH,QAGZ,EAGAnC,EAAamB,UAAUoB,KAAO,SAASb,EAAMc,EAAQC,GACnD,IAAIC,EAAOzC,KACNyC,EAAKrC,SAASqC,EAAKtB,cACnBoB,IAAQA,EAAS,CAAC,GAEnBA,EAAO3B,aAAa6B,EAAKL,YAE7B,IAAIM,EAAoB,IAAIC,EA+D5B,OA7DAF,EAAKxC,MAAM2C,SAAQ,SAASC,GAE1B,IAAIrC,EAAe+B,EAAO/B,cAAgBH,EAAUC,QAAQE,aACxDC,EAAe8B,EAAO9B,cAAgBJ,EAAUC,QAAQG,aACxDqC,EAAWC,KAAKC,IAAIvC,EAAeD,EAAc,GACjDE,EAAW6B,EAAO7B,UAAYL,EAAUC,QAAQI,SAGpD+B,EAAKrC,QAAQO,YAAYsC,MAAMC,QAC7BX,EAAO5B,YAAc,SAAW,OAGlC8B,EAAKrC,QAAQqB,KAAKE,UAAYF,EAG9B,IAAI0B,EAAIV,EAAKrC,QAAQoB,SAASyB,MAC9BE,EAAEC,QAAU,EACZD,EAAED,QAAU,eAGZjB,EAAUQ,EAAMF,GAGhB,IAAIc,EAAY,KAGZC,EAAkB,WACpBD,EAAY,KAEZZ,EAAKrC,QAAQoB,SAAS+B,oBAAoB,QAASC,GA4DzD,SAAef,EAAMF,EAAQG,EAAmBF,GACzCD,IAAQA,EAAS,CAAC,GAGvB,IAAI/B,EAAe+B,EAAO/B,cAAgBH,EAAUC,QAAQE,aACxDC,EAAe8B,EAAO9B,cAAgBJ,EAAUC,QAAQG,aACxDqC,EAAWC,KAAKC,IAAIvC,EAAeD,EAAc,GAGjD2C,EAAIV,EAAKrC,QAAQoB,SAASyB,MAC9BE,EAAEC,QAAU,EAGZK,EAAMN,GAAIL,EAAUrC,EAAciC,GAAmB,WACnDS,EAAED,QAAU,OACRV,GAAUA,GAChB,GAGF,CA9EMkB,CAAMjB,EAAMF,EAAQG,GAAmB,WACjCF,GAAUA,IACdC,EAAKtC,mBAAmBwD,QAAQC,UAChCf,GACF,GACF,EAGIW,EAAgB,WACbH,IACLQ,aAAaR,GACbC,IACF,EAGAG,EAAMN,EAAGL,EAAUrC,EAAciC,GAAmB,WAElDD,EAAKrC,QAAQoB,SAASsC,iBAAiB,QAASN,GAC5Cd,EAAkBqB,wBACpBT,KAEAD,EAAYW,WAAWV,EAAiB5C,GACxCgC,EAAkBuB,UAAS,WACzBT,GACF,IAEJ,GACF,IAEAf,EAAKtC,mBAAmB+D,KAAKxB,GAEtBD,CACT,EAGiBpC,GACf,SAAU8D,GACRpE,EAAamB,UAAUiD,GAAU,SAAS1C,EAAMc,EAAQC,GAItD,IAAK,IAAI4B,KAHJ7B,IAAQA,EAAS,CAAC,GAGElC,EAAU8D,QACJE,IAAzB9B,EAAO6B,KACT7B,EAAO6B,GAAgB/D,EAAU8D,GAAQC,IAG7C,OAAOpE,KAAKsC,KAAKb,EAAMc,EAAQC,EACjC,CACD,CAZD,CAYGvB,GAML,SAASgB,EAAUQ,EAAMF,GACvBE,EAAKrC,QAAQoB,SAASjB,UAAYgC,EAAOhC,WAAaF,EAAUC,QAAQC,SAC1E,CAyBA,SAASkD,EAAMR,EAAOqB,EAAMC,EAAU7B,EAAmBF,IACvD,SAAUgC,IACR,GAAI9B,EAAkBqB,wBAGpB,OAFAd,EAAMG,QAAUkB,EAAO,EAAI,EAAI,OAC3B9B,GAAUA,KAIhB,GADAS,EAAMG,QAAUqB,OAAOxB,EAAMG,SAAWkB,EACpCA,EAAO,GAAKrB,EAAMG,QAAU,EAC1BZ,GAAUA,SACT,GAAI8B,EAAO,GAAKrB,EAAMG,SAAW,EAClCZ,GAAUA,QACT,CACL,IAAIa,EAAYW,YAAW,WACzBX,EAAY,KACZmB,GACF,GAAGD,GACH7B,EAAkBuB,UAAS,WACpBZ,IACLQ,aAAaR,GACbA,EAAY,KACRb,GAAUA,IAChB,GACF,CACD,CAvBD,EAwBF,CAEA,OAAOzC,CACT,CAxOoB,GA2OhB4C,EAAqB,WACvB,SAASA,IACP3C,KAAK+D,yBAA0B,EAC/B/D,KAAK0E,gBAAkB,EACzB,CAgBA,OAdA/B,EAAkBzB,UAAUgB,OAAS,WACnClC,KAAK+D,yBAA0B,EAE/B,IADA,IAAIY,EAAkB3E,KAAK0E,gBAAgBE,QACpCD,EAAgBxC,QAAQwC,EAAgBhB,OAAhBgB,EACjC,EAEAhC,EAAkBzB,UAAU+C,SAAW,SAASzB,GAC9CxC,KAAK0E,gBAAgBR,KAAK1B,EAC5B,EAEAG,EAAkBzB,UAAU0C,QAAU,WACpC,KAAO5D,KAAK0E,gBAAgBvC,QAAQnC,KAAK0E,gBAAgBf,OAC3D,EAEOhB,CACT,CArByB,GAwBrBzC,EAAa,WACf,SAASA,IACPF,KAAKC,MAAQ,GACbD,KAAK6E,aAAc,CACrB,CAWA,SAASC,EAAkBrC,GACzB,IAAIA,EAAKoC,YAAT,CAGA,IAAIE,EAAMtC,EAAKxC,MAAM0D,QAChBoB,IAGLtC,EAAKoC,aAAc,EAGnBE,GAAI,WACFtC,EAAKoC,aAAc,EACnBC,EAAkBrC,EACpB,IAb4B,CAc9B,CAEA,OAzBAvC,EAAUgB,UAAU0B,QAAU,SAASmC,GAErC/E,KAAKC,MAAMiE,KAAKa,GAEhBD,EAAkB9E,KACpB,EAoBOE,CACT,CAjCiB,GAqCsB8E,EAAOC,UAC1CA,EAAUD,EAAOC,QAAU,IAAIlF,GAEjCkF,EAAQC,aAAe,IAAInF,CAI9B,GAACoF,KAAKnF,QClTHoF,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBjB,IAAjBkB,EACH,OAAOA,EAAaN,QAGrB,IAAID,EAASI,EAAyBE,GAAY,CAGjDL,QAAS,CAAC,GAOX,OAHAO,EAAoBF,GAAUH,KAAKH,EAAOC,QAASD,EAAQA,EAAOC,QAASI,GAGpEL,EAAOC,OACf,CCrBAI,EAAoBI,EAAI,SAAST,GAChC,IAAIU,EAASV,GAAUA,EAAOW,WAC7B,WAAa,OAAOX,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAK,EAAoBO,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CACR,ECNAL,EAAoBO,EAAI,SAASX,EAASa,GACzC,IAAI,IAAIC,KAAOD,EACXT,EAAoBW,EAAEF,EAAYC,KAASV,EAAoBW,EAAEf,EAASc,IAC5EE,OAAOC,eAAejB,EAASc,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAG3E,ECPAV,EAAoBW,EAAI,SAASK,EAAKC,GAAQ,OAAOL,OAAO/E,UAAUqF,eAAepB,KAAKkB,EAAKC,EAAO,0BCA/F,IAAME,EAAa,WACxB,MAAO,CACL,iBACA,mBACA,iBACA,OACA,SACA,QACAC,SAASC,UAAUC,WAEjBD,UAAUE,UAAUH,SAAS,QAAU,eAAgBnF,QAC7D,ECCA,SAASuF,EAASR,GACd,OAAgB,OAARA,GACW,iBAARA,GACP,gBAAiBA,GACjBA,EAAIS,cAAgBb,MAC5B,CACA,SAASc,EAAOC,EAAS,CAAC,EAAGC,EAAM,CAAC,GAChChB,OAAOiB,KAAKD,GAAKE,SAASpB,SACK,IAAhBiB,EAAOjB,GACdiB,EAAOjB,GAAOkB,EAAIlB,GACbc,EAASI,EAAIlB,KAClBc,EAASG,EAAOjB,KAChBE,OAAOiB,KAAKD,EAAIlB,IAAM5D,OAAS,GAC/B4E,EAAOC,EAAOjB,GAAMkB,EAAIlB,GAC5B,GAER,CAEA,MAAMqB,EAAc,CAChBpF,KAAM,CAAC,EACP8B,gBAAAA,GAAqB,EACrBP,mBAAAA,GAAwB,EACxB8D,cAAe,CACXC,IAAAA,GAAS,EACTC,SAAU,IAEdC,aAAAA,GACI,OAAO,IACX,EACAC,gBAAAA,GACI,MAAO,EACX,EACA5F,cAAAA,GACI,OAAO,IACX,EACA6F,WAAAA,GACI,MAAO,CACHC,SAAAA,GAAc,EAEtB,EACApG,aAAAA,GACI,MAAO,CACHqG,SAAU,GACVC,WAAY,GACZ5E,MAAO,CAAC,EACRvB,YAAAA,GAAiB,EACjBoG,oBAAAA,GACI,MAAO,EACX,EAER,EACAC,eAAAA,GACI,MAAO,CAAC,CACZ,EACAC,UAAAA,GACI,OAAO,IACX,EACAC,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGhB,SAASC,IACL,MAAMC,EAA0B,oBAAbrH,SAA2BA,SAAW,CAAC,EAE1D,OADAyF,EAAO4B,EAAKvB,GACLuB,CACX,CAEA,MAAMC,EAAY,CACdtH,SAAU8F,EACVV,UAAW,CACPE,UAAW,IAEfqB,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEZI,QAAS,CACLC,YAAAA,GAAiB,EACjBC,SAAAA,GAAc,EACdC,EAAAA,GAAO,EACPC,IAAAA,GAAS,GAEbC,YAAa,WACT,OAAOlJ,IACX,EACA8D,gBAAAA,GAAqB,EACrBP,mBAAAA,GAAwB,EACxB4F,gBAAAA,GACI,MAAO,CACHC,gBAAAA,GACI,MAAO,EACX,EAER,EACAC,KAAAA,GAAU,EACVC,IAAAA,GAAS,EACTC,OAAQ,CAAC,EACTvF,UAAAA,GAAe,EACfH,YAAAA,GAAiB,EACjB2F,UAAAA,GACI,MAAO,CAAC,CACZ,EACAC,qBAAAA,CAAsBjH,GAClB,MAA0B,oBAAfwB,YACPxB,IACO,MAEJwB,WAAWxB,EAAU,EAChC,EACAkH,oBAAAA,CAAqBC,GACS,oBAAf3F,YAGXH,aAAa8F,EACjB,GAEJ,SAASC,IACL,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADA/C,EAAO8C,EAAKjB,GACLiB,CACX,CCrHA,MAAME,UAAaC,MACjBlD,WAAAA,CAAYmD,GACW,iBAAVA,EACTC,MAAMD,IAENC,SAAUD,GAAS,IAnBzB,SAAsB5D,GACpB,MAAM8D,EAAQ9D,EAAI+D,UAClBnE,OAAOC,eAAeG,EAAK,YAAa,CACtCD,GAAAA,GACE,OAAO+D,CACT,EAEAE,GAAAA,CAAIC,GACFH,EAAMC,UAAYE,CACpB,GAGJ,CAQMC,CAAavK,MAEjB,EAIF,SAASwK,EAAUC,EAAM,IACvB,MAAMC,EAAM,GAQZ,OAPAD,EAAItD,SAAQwD,IACNX,MAAMY,QAAQD,GAChBD,EAAIxG,QAAQsG,EAAUG,IAEtBD,EAAIxG,KAAKyG,EACX,IAEKD,CACT,CACA,SAASG,EAAYJ,EAAKjI,GACxB,OAAOwH,MAAM9I,UAAU4J,OAAO3F,KAAKsF,EAAKjI,EAC1C,CA+BA,SAASuI,EAAE3J,EAAU4J,GACnB,MAAMlB,EAASF,IACTtI,EAAWoH,IACjB,IAAI+B,EAAM,GAEV,IAAKO,GAAW5J,aAAoB2I,EAClC,OAAO3I,EAGT,IAAKA,EACH,OAAO,IAAI2I,EAAKU,GAGlB,GAAwB,iBAAbrJ,EAAuB,CAChC,MAAM6J,EAAO7J,EAAS8J,OAEtB,GAAID,EAAKE,QAAQ,MAAQ,GAAKF,EAAKE,QAAQ,MAAQ,EAAG,CACpD,IAAIC,EAAW,MACa,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,MACd,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,SACd,IAAxBH,EAAKE,QAAQ,QAAwC,IAAxBF,EAAKE,QAAQ,SAAcC,EAAW,MACxC,IAA3BH,EAAKE,QAAQ,YAAiBC,EAAW,SACb,IAA5BH,EAAKE,QAAQ,aAAkBC,EAAW,UAC9C,MAAMC,EAAa/J,EAASC,cAAc6J,GAC1CC,EAAW1J,UAAYsJ,EAEvB,IAAK,IAAI5I,EAAI,EAAGA,EAAIgJ,EAAWxD,WAAW1F,OAAQE,GAAK,EACrDoI,EAAIvG,KAAKmH,EAAWxD,WAAWxF,GAEnC,MACEoI,EA7CN,SAAarJ,EAAU4J,GACrB,GAAwB,iBAAb5J,EACT,MAAO,CAACA,GAGV,MAAMyE,EAAI,GACJ6E,EAAMM,EAAQvD,iBAAiBrG,GAErC,IAAK,IAAIiB,EAAI,EAAGA,EAAIqI,EAAIvI,OAAQE,GAAK,EACnCwD,EAAE3B,KAAKwG,EAAIrI,IAGb,OAAOwD,CACT,CAgCYyF,CAAIlK,EAAS8J,OAAQF,GAAW1J,EAG1C,MAAO,GAAIF,EAASmK,UAAYnK,IAAa0I,GAAU1I,IAAaE,EAClEmJ,EAAIvG,KAAK9C,QACJ,GAAI4I,MAAMY,QAAQxJ,GAAW,CAClC,GAAIA,aAAoB2I,EAAM,OAAO3I,EACrCqJ,EAAMrJ,CACR,CAEA,OAAO,IAAI2I,EAtEb,SAAqBU,GACnB,MAAMe,EAAc,GAEpB,IAAK,IAAInJ,EAAI,EAAGA,EAAIoI,EAAItI,OAAQE,GAAK,GACE,IAAjCmJ,EAAYL,QAAQV,EAAIpI,KAAYmJ,EAAYtH,KAAKuG,EAAIpI,IAG/D,OAAOmJ,CACT,CA8DkBC,CAAYhB,GAC9B,CAEAM,EAAEW,GAAK3B,EAAK7I,UA4yCZ,MAAMyK,EAAY,gBAAgBC,MAAM,KAExC,SAASC,EAASC,GAiBhB,OAhBA,YAAyBC,GACvB,QAAuB,IAAZA,EAAK,GAAoB,CAClC,IAAK,IAAI1J,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EAChCsJ,EAAUR,QAAQW,GAAQ,IACxBA,KAAQ9L,KAAKqC,GAAIrC,KAAKqC,GAAGyJ,KAC3Bf,EAAE/K,KAAKqC,IAAI2J,QAAQF,IAKzB,OAAO9L,IACT,CAEA,OAAOA,KAAKiM,GAAGH,KAASC,EAC1B,CAGF,CAEcF,EAAS,SACVA,EAAS,QACRA,EAAS,SACPA,EAAS,WACRA,EAAS,YACZA,EAAS,SACPA,EAAS,WACRA,EAAS,YACXA,EAAS,UACTA,EAAS,UACNA,EAAS,aACTA,EAAS,aACXA,EAAS,WACNA,EAAS,cACTA,EAAS,cACXA,EAAS,YACRA,EAAS,aACRA,EAAS,cACXA,EAAS,YACRA,EAAS,aACZA,EAAS,UACTA,EAAS,UCr9CxB,MAAMK,EAAU,CACdC,SDiIF,YAAqBC,GACnB,MAAMC,EAAa7B,EAAU4B,EAAQE,KAAIC,GAAKA,EAAEX,MAAM,QAItD,OAHA5L,KAAKmH,SAAQwD,IACXA,EAAG6B,UAAUC,OAAOJ,EAAW,IAE1BrM,IACT,ECtIE0M,YDwIF,YAAwBN,GACtB,MAAMC,EAAa7B,EAAU4B,EAAQE,KAAIC,GAAKA,EAAEX,MAAM,QAItD,OAHA5L,KAAKmH,SAAQwD,IACXA,EAAG6B,UAAUG,UAAUN,EAAW,IAE7BrM,IACT,EC7IE4M,SDwJF,YAAqBR,GACnB,MAAMC,EAAa7B,EAAU4B,EAAQE,KAAIC,GAAKA,EAAEX,MAAM,QACtD,OAAOf,EAAY7K,MAAM2K,GAChB0B,EAAWvB,QAAOvK,GAAaoK,EAAG6B,UAAUK,SAAStM,KAAY4B,OAAS,IAChFA,OAAS,CACd,EC5JE2K,YD8IF,YAAwBV,GACtB,MAAMC,EAAa7B,EAAU4B,EAAQE,KAAIC,GAAKA,EAAEX,MAAM,QACtD5L,KAAKmH,SAAQwD,IACX0B,EAAWlF,SAAQ5G,IACjBoK,EAAG6B,UAAUO,OAAOxM,EAAU,GAC9B,GAEN,ECpJEyM,KD6JF,SAAcC,EAAO3C,GACnB,GAAyB,IAArB4C,UAAU/K,QAAiC,iBAAV8K,EAEnC,OAAIjN,KAAK,GAAWA,KAAK,GAAGmN,aAAaF,QACzC,EAIF,IAAK,IAAI5K,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EACpC,GAAyB,IAArB6K,UAAU/K,OAEZnC,KAAKqC,GAAGX,aAAauL,EAAO3C,QAG5B,IAAK,MAAM8C,KAAYH,EACrBjN,KAAKqC,GAAG+K,GAAYH,EAAMG,GAC1BpN,KAAKqC,GAAGX,aAAa0L,EAAUH,EAAMG,IAK3C,OAAOpN,IACT,EClLEqN,WDoLF,SAAoBL,GAClB,IAAK,IAAI3K,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EACpCrC,KAAKqC,GAAGiL,gBAAgBN,GAG1B,OAAOhN,IACT,ECzLEuN,UD6TF,SAAmBA,GACjB,IAAK,IAAIlL,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EACpCrC,KAAKqC,GAAGY,MAAMsK,UAAYA,EAG5B,OAAOvN,IACT,EClUEwN,WDoUF,SAAoB9M,GAClB,IAAK,IAAI2B,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EACpCrC,KAAKqC,GAAGY,MAAMwK,mBAAyC,iBAAb/M,EAAwB,GAAGA,MAAeA,EAGtF,OAAOV,IACT,ECzUEiM,GD2UF,YAAeF,GACb,IAAK2B,EAAWC,EAAgBC,EAAUC,GAAW9B,EASrD,SAAS+B,EAAgBC,GACvB,MAAM/G,EAAS+G,EAAE/G,OACjB,IAAKA,EAAQ,OACb,MAAMgH,EAAYD,EAAE/G,OAAOiH,eAAiB,GAM5C,GAJID,EAAU7C,QAAQ4C,GAAK,GACzBC,EAAUE,QAAQH,GAGhBhD,EAAE/D,GAAQmH,GAAGR,GAAiBC,EAASQ,MAAMpH,EAAQgH,OAAgB,CACvE,MAAMK,EAAUtD,EAAE/D,GAAQqH,UAE1B,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQlM,OAAQmM,GAAK,EACnCvD,EAAEsD,EAAQC,IAAIH,GAAGR,IAAiBC,EAASQ,MAAMC,EAAQC,GAAIN,EAErE,CACF,CAEA,SAASO,EAAYR,GACnB,MAAMC,EAAYD,GAAKA,EAAE/G,QAAS+G,EAAE/G,OAAOiH,eAAsB,GAE7DD,EAAU7C,QAAQ4C,GAAK,GACzBC,EAAUE,QAAQH,GAGpBH,EAASQ,MAAMpO,KAAMgO,EACvB,CAjCuB,mBAAZjC,EAAK,MACb2B,EAAWE,EAAUC,GAAW9B,EACjC4B,OAAiBtJ,GAGdwJ,IAASA,GAAU,GA8BxB,MAAMW,EAASd,EAAU9B,MAAM,KAC/B,IAAI6C,EAEJ,IAAK,IAAIpM,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EAAG,CACvC,MAAMsI,EAAK3K,KAAKqC,GAEhB,GAAKsL,EAaH,IAAKc,EAAI,EAAGA,EAAID,EAAOrM,OAAQsM,GAAK,EAAG,CACrC,MAAMC,EAAQF,EAAOC,GAChB9D,EAAGgE,oBAAmBhE,EAAGgE,kBAAoB,CAAC,GAC9ChE,EAAGgE,kBAAkBD,KAAQ/D,EAAGgE,kBAAkBD,GAAS,IAChE/D,EAAGgE,kBAAkBD,GAAOxK,KAAK,CAC/B0J,WACAgB,cAAed,IAEjBnD,EAAG7G,iBAAiB4K,EAAOZ,EAAiBD,EAC9C,MArBA,IAAKY,EAAI,EAAGA,EAAID,EAAOrM,OAAQsM,GAAK,EAAG,CACrC,MAAMC,EAAQF,EAAOC,GAChB9D,EAAGkE,gBAAelE,EAAGkE,cAAgB,CAAC,GACtClE,EAAGkE,cAAcH,KAAQ/D,EAAGkE,cAAcH,GAAS,IACxD/D,EAAGkE,cAAcH,GAAOxK,KAAK,CAC3B0J,WACAgB,cAAeL,IAEjB5D,EAAG7G,iBAAiB4K,EAAOH,EAAaV,EAC1C,CAcJ,CAEA,OAAO7N,IACT,ECjZE8O,IDmZF,YAAgB/C,GACd,IAAK2B,EAAWC,EAAgBC,EAAUC,GAAW9B,EAE9B,mBAAZA,EAAK,MACb2B,EAAWE,EAAUC,GAAW9B,EACjC4B,OAAiBtJ,GAGdwJ,IAASA,GAAU,GACxB,MAAMW,EAASd,EAAU9B,MAAM,KAE/B,IAAK,IAAIvJ,EAAI,EAAGA,EAAImM,EAAOrM,OAAQE,GAAK,EAAG,CACzC,MAAMqM,EAAQF,EAAOnM,GAErB,IAAK,IAAIoM,EAAI,EAAGA,EAAIzO,KAAKmC,OAAQsM,GAAK,EAAG,CACvC,MAAM9D,EAAK3K,KAAKyO,GAChB,IAAIM,EAQJ,IANKpB,GAAkBhD,EAAGkE,cACxBE,EAAWpE,EAAGkE,cAAcH,GACnBf,GAAkBhD,EAAGgE,oBAC9BI,EAAWpE,EAAGgE,kBAAkBD,IAG9BK,GAAYA,EAAS5M,OACvB,IAAK,IAAImM,EAAIS,EAAS5M,OAAS,EAAGmM,GAAK,EAAGA,GAAK,EAAG,CAChD,MAAMU,EAAUD,EAAST,GAErBV,GAAYoB,EAAQpB,WAAaA,GAG1BA,GAAYoB,EAAQpB,UAAYoB,EAAQpB,SAASqB,WAAaD,EAAQpB,SAASqB,YAAcrB,GAFtGjD,EAAGpH,oBAAoBmL,EAAOM,EAAQJ,cAAef,GACrDkB,EAASG,OAAOZ,EAAG,IAITV,IACVjD,EAAGpH,oBAAoBmL,EAAOM,EAAQJ,cAAef,GACrDkB,EAASG,OAAOZ,EAAG,GAEvB,CAEJ,CACF,CAEA,OAAOtO,IACT,EC9bEgM,QDsdF,YAAoBD,GAClB,MAAMjC,EAASF,IACT4E,EAASzC,EAAK,GAAGH,MAAM,KACvBoC,EAAYjC,EAAK,GAEvB,IAAK,IAAI1J,EAAI,EAAGA,EAAImM,EAAOrM,OAAQE,GAAK,EAAG,CACzC,MAAMqM,EAAQF,EAAOnM,GAErB,IAAK,IAAIoM,EAAI,EAAGA,EAAIzO,KAAKmC,OAAQsM,GAAK,EAAG,CACvC,MAAM9D,EAAK3K,KAAKyO,GAEhB,GAAI3E,EAAOZ,YAAa,CACtB,MAAMiG,EAAM,IAAIrF,EAAOZ,YAAYwF,EAAO,CACxCU,OAAQpB,EACRqB,SAAS,EACTC,YAAY,IAEd3E,EAAGsD,cAAgBlC,EAAKjB,QAAO,CAACyE,EAAMC,IAAcA,EAAY,IAChE7E,EAAG8E,cAAcN,GACjBxE,EAAGsD,cAAgB,UACZtD,EAAGsD,aACZ,CACF,CACF,CAEA,OAAOjO,IACT,EC/eE0P,cDigBF,SAAuBlN,GACrB,MAAMmN,EAAM3P,KAYZ,OAJIwC,GACFmN,EAAI1D,GAAG,iBAPT,SAAS2D,EAAa7B,GAChBA,EAAE/G,SAAWhH,OACjBwC,EAAS2C,KAAKnF,KAAM+N,GACpB4B,EAAIb,IAAI,gBAAiBc,GAC3B,IAMO5P,IACT,EC9gBE6P,WD8iBF,SAAoBC,GAClB,GAAI9P,KAAKmC,OAAS,EAAG,CACnB,GAAI2N,EAAgB,CAClB,MAAMC,EAAS/P,KAAK+P,SACpB,OAAO/P,KAAK,GAAGgQ,YAAcC,WAAWF,EAAO3G,iBAAiB,iBAAmB6G,WAAWF,EAAO3G,iBAAiB,eACxH,CAEA,OAAOpJ,KAAK,GAAGgQ,WACjB,CAEA,OAAO,IACT,ECxjBEE,YDwkBF,SAAqBJ,GACnB,GAAI9P,KAAKmC,OAAS,EAAG,CACnB,GAAI2N,EAAgB,CAClB,MAAMC,EAAS/P,KAAK+P,SACpB,OAAO/P,KAAK,GAAGmQ,aAAeF,WAAWF,EAAO3G,iBAAiB,eAAiB6G,WAAWF,EAAO3G,iBAAiB,iBACvH,CAEA,OAAOpJ,KAAK,GAAGmQ,YACjB,CAEA,OAAO,IACT,ECllBEJ,ODmoBF,WACE,MAAMjG,EAASF,IACf,OAAI5J,KAAK,GAAW8J,EAAOX,iBAAiBnJ,KAAK,GAAI,MAC9C,CAAC,CACV,ECtoBEoQ,ODmlBF,WACE,GAAIpQ,KAAKmC,OAAS,EAAG,CACnB,MAAM2H,EAASF,IACTtI,EAAWoH,IACXiC,EAAK3K,KAAK,GACVqQ,EAAM1F,EAAG2F,wBACTtO,EAAOV,EAASU,KAChBuO,EAAY5F,EAAG4F,WAAavO,EAAKuO,WAAa,EAC9CC,EAAa7F,EAAG6F,YAAcxO,EAAKwO,YAAc,EACjDC,EAAY9F,IAAOb,EAASA,EAAO4G,QAAU/F,EAAG8F,UAChDE,EAAahG,IAAOb,EAASA,EAAO8G,QAAUjG,EAAGgG,WACvD,MAAO,CACLE,IAAKR,EAAIQ,IAAMJ,EAAYF,EAC3BO,KAAMT,EAAIS,KAAOH,EAAaH,EAElC,CAEA,OAAO,IACT,ECpmBEO,IDuoBF,SAAaC,EAAO1G,GAClB,MAAMR,EAASF,IACf,IAAIvH,EAEJ,GAAyB,IAArB6K,UAAU/K,OAAc,CAC1B,GAAqB,iBAAV6O,EAGJ,CAEL,IAAK3O,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EAChC,IAAK,MAAMiE,KAAQ0K,EACjBhR,KAAKqC,GAAGY,MAAMqD,GAAQ0K,EAAM1K,GAIhC,OAAOtG,IACT,CAVE,GAAIA,KAAK,GAAI,OAAO8J,EAAOX,iBAAiBnJ,KAAK,GAAI,MAAMoJ,iBAAiB4H,EAWhF,CAEA,GAAyB,IAArB9D,UAAU/K,QAAiC,iBAAV6O,EAAoB,CAEvD,IAAK3O,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EAChCrC,KAAKqC,GAAGY,MAAM+N,GAAS1G,EAGzB,OAAOtK,IACT,CAEA,OAAOA,IACT,ECpqBEiR,KDsqBF,SAAczO,GACZ,OAAKA,GACLxC,KAAKmH,SAAQ,CAACwD,EAAIuG,KAChB1O,EAAS4L,MAAMzD,EAAI,CAACA,EAAIuG,GAAO,IAE1BlR,MAJeA,IAKxB,EC3qBEiL,KDkrBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAOjL,KAAK,GAAKA,KAAK,GAAG2B,UAAY,KAGvC,IAAK,IAAIU,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EACpCrC,KAAKqC,GAAGV,UAAYsJ,EAGtB,OAAOjL,IACT,EC3rBEyB,KD6rBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAOzB,KAAK,GAAKA,KAAK,GAAGmR,YAAYjG,OAAS,KAGhD,IAAK,IAAI7I,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EACpCrC,KAAKqC,GAAG8O,YAAc1P,EAGxB,OAAOzB,IACT,ECtsBEmO,GDwsBF,SAAY/M,GACV,MAAM0I,EAASF,IACTtI,EAAWoH,IACXiC,EAAK3K,KAAK,GAChB,IAAIoR,EACA/O,EACJ,IAAKsI,QAA0B,IAAbvJ,EAA0B,OAAO,EAEnD,GAAwB,iBAAbA,EAAuB,CAChC,GAAIuJ,EAAG0G,QAAS,OAAO1G,EAAG0G,QAAQjQ,GAClC,GAAIuJ,EAAG2G,sBAAuB,OAAO3G,EAAG2G,sBAAsBlQ,GAC9D,GAAIuJ,EAAG4G,kBAAmB,OAAO5G,EAAG4G,kBAAkBnQ,GAGtD,IAFAgQ,EAAcrG,EAAE3J,GAEXiB,EAAI,EAAGA,EAAI+O,EAAYjP,OAAQE,GAAK,EACvC,GAAI+O,EAAY/O,KAAOsI,EAAI,OAAO,EAGpC,OAAO,CACT,CAEA,GAAIvJ,IAAaE,EACf,OAAOqJ,IAAOrJ,EAGhB,GAAIF,IAAa0I,EACf,OAAOa,IAAOb,EAGhB,GAAI1I,EAASmK,UAAYnK,aAAoB2I,EAAM,CAGjD,IAFAqH,EAAchQ,EAASmK,SAAW,CAACnK,GAAYA,EAE1CiB,EAAI,EAAGA,EAAI+O,EAAYjP,OAAQE,GAAK,EACvC,GAAI+O,EAAY/O,KAAOsI,EAAI,OAAO,EAGpC,OAAO,CACT,CAEA,OAAO,CACT,EC/uBEuG,MDivBF,WACE,IACI7O,EADAmP,EAAQxR,KAAK,GAGjB,GAAIwR,EAAO,CAGT,IAFAnP,EAAI,EAEuC,QAAnCmP,EAAQA,EAAMC,kBACG,IAAnBD,EAAMjG,WAAgBlJ,GAAK,GAGjC,OAAOA,CACT,CAGF,EC/vBEqP,GDiwBF,SAAYR,GACV,QAAqB,IAAVA,EAAuB,OAAOlR,KACzC,MAAMmC,EAASnC,KAAKmC,OAEpB,GAAI+O,EAAQ/O,EAAS,EACnB,OAAO4I,EAAE,IAGX,GAAImG,EAAQ,EAAG,CACb,MAAMS,EAAcxP,EAAS+O,EAC7B,OAA4BnG,EAAxB4G,EAAc,EAAY,GACrB,CAAC3R,KAAK2R,IACjB,CAEA,OAAO5G,EAAE,CAAC/K,KAAKkR,IACjB,EC/wBEU,ODixBF,YAAmBC,GACjB,IAAIC,EACJ,MAAMxQ,EAAWoH,IAEjB,IAAK,IAAI4F,EAAI,EAAGA,EAAIuD,EAAI1P,OAAQmM,GAAK,EAAG,CACtCwD,EAAWD,EAAIvD,GAEf,IAAK,IAAIjM,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EACpC,GAAwB,iBAAbyP,EAAuB,CAChC,MAAMC,EAAUzQ,EAASC,cAAc,OAGvC,IAFAwQ,EAAQpQ,UAAYmQ,EAEbC,EAAQC,YACbhS,KAAKqC,GAAGT,YAAYmQ,EAAQC,WAEhC,MAAO,GAAIF,aAAoB/H,EAC7B,IAAK,IAAI0E,EAAI,EAAGA,EAAIqD,EAAS3P,OAAQsM,GAAK,EACxCzO,KAAKqC,GAAGT,YAAYkQ,EAASrD,SAG/BzO,KAAKqC,GAAGT,YAAYkQ,EAG1B,CAEA,OAAO9R,IACT,EC1yBEiS,QDizBF,SAAiBH,GACf,MAAMxQ,EAAWoH,IACjB,IAAIrG,EACAoM,EAEJ,IAAKpM,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EAChC,GAAwB,iBAAbyP,EAAuB,CAChC,MAAMC,EAAUzQ,EAASC,cAAc,OAGvC,IAFAwQ,EAAQpQ,UAAYmQ,EAEfrD,EAAIsD,EAAQlK,WAAW1F,OAAS,EAAGsM,GAAK,EAAGA,GAAK,EACnDzO,KAAKqC,GAAG6P,aAAaH,EAAQlK,WAAW4G,GAAIzO,KAAKqC,GAAGwF,WAAW,GAEnE,MAAO,GAAIiK,aAAoB/H,EAC7B,IAAK0E,EAAI,EAAGA,EAAIqD,EAAS3P,OAAQsM,GAAK,EACpCzO,KAAKqC,GAAG6P,aAAaJ,EAASrD,GAAIzO,KAAKqC,GAAGwF,WAAW,SAGvD7H,KAAKqC,GAAG6P,aAAaJ,EAAU9R,KAAKqC,GAAGwF,WAAW,IAItD,OAAO7H,IACT,ECv0BE6C,KD02BF,SAAczB,GACZ,OAAIpB,KAAKmC,OAAS,EACZf,EACEpB,KAAK,GAAGmS,oBAAsBpH,EAAE/K,KAAK,GAAGmS,oBAAoBhE,GAAG/M,GAC1D2J,EAAE,CAAC/K,KAAK,GAAGmS,qBAGbpH,EAAE,IAGP/K,KAAK,GAAGmS,mBAA2BpH,EAAE,CAAC/K,KAAK,GAAGmS,qBAC3CpH,EAAE,IAGJA,EAAE,GACX,ECx3BEqH,QD03BF,SAAiBhR,GACf,MAAMiR,EAAU,GAChB,IAAI1H,EAAK3K,KAAK,GACd,IAAK2K,EAAI,OAAOI,EAAE,IAElB,KAAOJ,EAAGwH,oBAAoB,CAC5B,MAAMtP,EAAO8H,EAAGwH,mBAEZ/Q,EACE2J,EAAElI,GAAMsL,GAAG/M,IAAWiR,EAAQnO,KAAKrB,GAClCwP,EAAQnO,KAAKrB,GAEpB8H,EAAK9H,CACP,CAEA,OAAOkI,EAAEsH,EACX,ECz4BEC,KD24BF,SAAclR,GACZ,GAAIpB,KAAKmC,OAAS,EAAG,CACnB,MAAMwI,EAAK3K,KAAK,GAEhB,OAAIoB,EACEuJ,EAAG4H,wBAA0BxH,EAAEJ,EAAG4H,wBAAwBpE,GAAG/M,GACxD2J,EAAE,CAACJ,EAAG4H,yBAGRxH,EAAE,IAGPJ,EAAG4H,uBAA+BxH,EAAE,CAACJ,EAAG4H,yBACrCxH,EAAE,GACX,CAEA,OAAOA,EAAE,GACX,EC35BEyH,QD65BF,SAAiBpR,GACf,MAAMqR,EAAU,GAChB,IAAI9H,EAAK3K,KAAK,GACd,IAAK2K,EAAI,OAAOI,EAAE,IAElB,KAAOJ,EAAG4H,wBAAwB,CAChC,MAAMD,EAAO3H,EAAG4H,uBAEZnR,EACE2J,EAAEuH,GAAMnE,GAAG/M,IAAWqR,EAAQvO,KAAKoO,GAClCG,EAAQvO,KAAKoO,GAEpB3H,EAAK2H,CACP,CAEA,OAAOvH,EAAE0H,EACX,EC56BEC,ODk7BF,SAAgBtR,GACd,MAAMiN,EAAU,GAEhB,IAAK,IAAIhM,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EACT,OAAvBrC,KAAKqC,GAAGsQ,aACNvR,EACE2J,EAAE/K,KAAKqC,GAAGsQ,YAAYxE,GAAG/M,IAAWiN,EAAQnK,KAAKlE,KAAKqC,GAAGsQ,YAE7DtE,EAAQnK,KAAKlE,KAAKqC,GAAGsQ,aAK3B,OAAO5H,EAAEsD,EACX,EC/7BEA,QDi8BF,SAAiBjN,GACf,MAAMiN,EAAU,GAEhB,IAAK,IAAIhM,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EAAG,CACvC,IAAIqQ,EAAS1S,KAAKqC,GAAGsQ,WAErB,KAAOD,GACDtR,EACE2J,EAAE2H,GAAQvE,GAAG/M,IAAWiN,EAAQnK,KAAKwO,GAEzCrE,EAAQnK,KAAKwO,GAGfA,EAASA,EAAOC,UAEpB,CAEA,OAAO5H,EAAEsD,EACX,ECl9BEuE,QDo9BF,SAAiBxR,GACf,IAAIwR,EAAU5S,KAEd,YAAwB,IAAboB,EACF2J,EAAE,KAGN6H,EAAQzE,GAAG/M,KACdwR,EAAUA,EAAQvE,QAAQjN,GAAUsQ,GAAG,IAGlCkB,EACT,EC/9BEC,KDi+BF,SAAczR,GACZ,MAAM0R,EAAgB,GAEtB,IAAK,IAAIzQ,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EAAG,CACvC,MAAM0Q,EAAQ/S,KAAKqC,GAAGoF,iBAAiBrG,GAEvC,IAAK,IAAIqN,EAAI,EAAGA,EAAIsE,EAAM5Q,OAAQsM,GAAK,EACrCqE,EAAc5O,KAAK6O,EAAMtE,GAE7B,CAEA,OAAO1D,EAAE+H,EACX,EC5+BElL,SD8+BF,SAAkBxG,GAChB,MAAMwG,EAAW,GAEjB,IAAK,IAAIvF,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EAAG,CACvC,MAAMwF,EAAa7H,KAAKqC,GAAGuF,SAE3B,IAAK,IAAI6G,EAAI,EAAGA,EAAI5G,EAAW1F,OAAQsM,GAAK,EACrCrN,IAAY2J,EAAElD,EAAW4G,IAAIN,GAAG/M,IACnCwG,EAAS1D,KAAK2D,EAAW4G,GAG/B,CAEA,OAAO1D,EAAEnD,EACX,EC3/BEkD,OD6pBF,SAAgBtI,GAEd,OAAOuI,EADQF,EAAY7K,KAAMwC,GAEnC,EC/pBEmK,OD4/BF,WACE,IAAK,IAAItK,EAAI,EAAGA,EAAIrC,KAAKmC,OAAQE,GAAK,EAChCrC,KAAKqC,GAAGsQ,YAAY3S,KAAKqC,GAAGsQ,WAAWK,YAAYhT,KAAKqC,IAG9D,OAAOrC,IACT,GChgCAiG,OAAOiB,KAAKgF,GAAS/E,SAAQ8L,IAC3BhN,OAAOC,eAAe6E,EAAEW,GAAIuH,EAAY,CACtC3I,MAAO4B,EAAQ+G,GACfC,UAAU,GACV,IAEJ,QC5BA,SAASC,EAAS3Q,EAAU4Q,EAAQ,GAClC,OAAOpP,WAAWxB,EAAU4Q,EAC9B,CAEA,SAASC,IACP,OAAO/J,KAAK+J,KACd,CA4DA,SAASxM,EAASb,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEc,aAAkE,WAAnDb,OAAO/E,UAAUoS,SAASnO,KAAKa,GAAGpB,MAAM,GAAI,EAC7G,CAWA,SAASmC,KAAUgF,GACjB,MAAMwH,EAAKtN,OAAO8F,EAAK,IACjByH,EAAW,CAAC,YAAa,cAAe,aAE9C,IAAK,IAAInR,EAAI,EAAGA,EAAI0J,EAAK5J,OAAQE,GAAK,EAAG,CACvC,MAAMoR,EAAa1H,EAAK1J,GAExB,GAAIoR,UAhBQC,EAgBmDD,IAd3C,oBAAX3J,aAAwD,IAAvBA,OAAO6J,YAC1CD,aAAgBC,YAGlBD,IAA2B,IAAlBA,EAAKnI,UAAoC,KAAlBmI,EAAKnI,YAUkC,CAC1E,MAAMqI,EAAY3N,OAAOiB,KAAKjB,OAAOwN,IAAa3I,QAAO/E,GAAOyN,EAASrI,QAAQpF,GAAO,IAExF,IAAK,IAAI8N,EAAY,EAAGC,EAAMF,EAAUzR,OAAQ0R,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAO/N,OAAOgO,yBAAyBR,EAAYM,QAE5C1P,IAAT2P,GAAsBA,EAAK7N,aACzBU,EAAS0M,EAAGQ,KAAalN,EAAS4M,EAAWM,IAC3CN,EAAWM,GAASG,WACtBX,EAAGQ,GAAWN,EAAWM,GAEzBhN,EAAOwM,EAAGQ,GAAUN,EAAWM,KAEvBlN,EAAS0M,EAAGQ,KAAalN,EAAS4M,EAAWM,KACvDR,EAAGQ,GAAW,CAAC,EAEXN,EAAWM,GAASG,WACtBX,EAAGQ,GAAWN,EAAWM,GAEzBhN,EAAOwM,EAAGQ,GAAUN,EAAWM,KAGjCR,EAAGQ,GAAWN,EAAWM,GAG/B,CACF,CACF,CA5CF,IAAgBL,EA8Cd,OAAOH,CACT,CAEA,SAASY,EAAexJ,EAAIyJ,EAASC,GACnC1J,EAAG1H,MAAMqR,YAAYF,EAASC,EAChC,CAEA,SAASE,GAAqB,OAC5BC,EAAM,eACNC,EAAc,KACdC,IAEA,MAAM5K,EAASF,IACT+K,GAAiBH,EAAOI,UAC9B,IACIC,EADAC,EAAY,KAEhB,MAAMpU,EAAW8T,EAAOO,OAAOC,MAC/BR,EAAOS,UAAUhS,MAAMiS,eAAiB,OACxCpL,EAAOJ,qBAAqB8K,EAAOW,gBACnC,MAAMC,EAAMX,EAAiBE,EAAgB,OAAS,OAEhDU,EAAeA,CAACC,EAAStO,IACd,SAARoO,GAAkBE,GAAWtO,GAAkB,SAARoO,GAAkBE,GAAWtO,EAGvEuO,EAAUA,KACdV,GAAO,IAAIvL,MAAOkM,UAEA,OAAdV,IACFA,EAAYD,GAGd,MAAMY,EAAW1S,KAAK2S,IAAI3S,KAAKC,KAAK6R,EAAOC,GAAapU,EAAU,GAAI,GAChEiV,EAAe,GAAM5S,KAAK6S,IAAIH,EAAW1S,KAAK8S,IAAM,EAC1D,IAAIC,EAAkBnB,EAAgBgB,GAAgBlB,EAAiBE,GAUvE,GARIU,EAAaS,EAAiBrB,KAChCqB,EAAkBrB,GAGpBD,EAAOS,UAAUc,SAAS,CACxB,CAACrB,GAAOoB,IAGNT,EAAaS,EAAiBrB,GAUhC,OATAD,EAAOS,UAAUhS,MAAM+S,SAAW,SAClCxB,EAAOS,UAAUhS,MAAMiS,eAAiB,GACxClR,YAAW,KACTwQ,EAAOS,UAAUhS,MAAM+S,SAAW,GAClCxB,EAAOS,UAAUc,SAAS,CACxB,CAACrB,GAAOoB,GACR,SAEJhM,EAAOJ,qBAAqB8K,EAAOW,gBAIrCX,EAAOW,eAAiBrL,EAAOL,sBAAsB8L,EAAQ,EAG/DA,GACF,CCjMA,IAAIU,ECCAC,ECDAC,EF+BJ,SAASC,IAKP,OAJKH,IACHA,EA/BJ,WACE,MAAMnM,EAASF,IACTtI,EAAWoH,IACjB,MAAO,CACL2N,aAAc/U,EAASgV,iBAAmB,mBAAoBhV,EAASgV,gBAAgBrT,MACvFsT,SAAU,iBAAkBzM,GAAUA,EAAO0M,eAAiBlV,aAAoBwI,EAAO0M,eACzFC,gBAAiB,WACf,IAAIC,GAAkB,EAEtB,IACE,MAAMC,EAAO1Q,OAAOC,eAAe,CAAC,EAAG,UAAW,CAEhDE,GAAAA,GACEsQ,GAAkB,CACpB,IAGF5M,EAAOhG,iBAAiB,sBAAuB,KAAM6S,EACvD,CAAE,MAAO5I,GAAI,CAGb,OAAO2I,CACT,CAhBiB,GAiBjBE,SACS,mBAAoB9M,EAGjC,CAIc+M,IAGLZ,CACT,CGrCA,OACEhK,EAAAA,CAAGuC,EAAQQ,EAAS8H,GAClB,MAAMrU,EAAOzC,KACb,GAAuB,mBAAZgP,EAAwB,OAAOvM,EAC1C,MAAMsU,EAASD,EAAW,UAAY,OAKtC,OAJAtI,EAAO5C,MAAM,KAAKzE,SAAQuH,IACnBjM,EAAKuU,gBAAgBtI,KAAQjM,EAAKuU,gBAAgBtI,GAAS,IAChEjM,EAAKuU,gBAAgBtI,GAAOqI,GAAQ/H,EAAQ,IAEvCvM,CACT,EAEAwU,IAAAA,CAAKzI,EAAQQ,EAAS8H,GACpB,MAAMrU,EAAOzC,KACb,GAAuB,mBAAZgP,EAAwB,OAAOvM,EAE1C,SAASyU,KAAenL,GACtBtJ,EAAKqM,IAAIN,EAAQ0I,GAEbA,EAAYC,uBACPD,EAAYC,eAGrBnI,EAAQZ,MAAM3L,EAAMsJ,EACtB,CAGA,OADAmL,EAAYC,eAAiBnI,EACtBvM,EAAKwJ,GAAGuC,EAAQ0I,EAAaJ,EACtC,EAEAM,KAAAA,CAAMpI,EAAS8H,GACb,MAAMrU,EAAOzC,KACb,GAAuB,mBAAZgP,EAAwB,OAAOvM,EAC1C,MAAMsU,EAASD,EAAW,UAAY,OAMtC,OAJIrU,EAAK4U,mBAAmBlM,QAAQ6D,GAAW,GAC7CvM,EAAK4U,mBAAmBN,GAAQ/H,GAG3BvM,CACT,EAEA6U,MAAAA,CAAOtI,GACL,MAAMvM,EAAOzC,KACb,IAAKyC,EAAK4U,mBAAoB,OAAO5U,EACrC,MAAMyO,EAAQzO,EAAK4U,mBAAmBlM,QAAQ6D,GAM9C,OAJIkC,GAAS,GACXzO,EAAK4U,mBAAmBnI,OAAOgC,EAAO,GAGjCzO,CACT,EAEAqM,GAAAA,CAAIN,EAAQQ,GACV,MAAMvM,EAAOzC,KACb,OAAKyC,EAAKuU,iBACVxI,EAAO5C,MAAM,KAAKzE,SAAQuH,SACD,IAAZM,EACTvM,EAAKuU,gBAAgBtI,GAAS,GACrBjM,EAAKuU,gBAAgBtI,IAC9BjM,EAAKuU,gBAAgBtI,GAAOvH,SAAQ,CAACoQ,EAAcrG,MAC7CqG,IAAiBvI,GAAWuI,EAAaJ,gBAAkBI,EAAaJ,iBAAmBnI,IAC7FvM,EAAKuU,gBAAgBtI,GAAOQ,OAAOgC,EAAO,EAC5C,GAEJ,IAEKzO,GAZ2BA,CAapC,EAEA+U,IAAAA,IAAQzL,GACN,MAAMtJ,EAAOzC,KACb,IAAKyC,EAAKuU,gBAAiB,OAAOvU,EAClC,IAAI+L,EACAe,EACAvE,EA2BJ,MAzBuB,iBAAZe,EAAK,IAAmB/B,MAAMY,QAAQmB,EAAK,KACpDyC,EAASzC,EAAK,GACdwD,EAAOxD,EAAKnH,MAAM,EAAGmH,EAAK5J,QAC1B6I,EAAUvI,IAEV+L,EAASzC,EAAK,GAAGyC,OACjBe,EAAOxD,EAAK,GAAGwD,KACfvE,EAAUe,EAAK,GAAGf,SAAWvI,GAG/B8M,EAAKrB,QAAQlD,IACOhB,MAAMY,QAAQ4D,GAAUA,EAASA,EAAO5C,MAAM,MACtDzE,SAAQuH,IACdjM,EAAK4U,oBAAsB5U,EAAK4U,mBAAmBlV,QACrDM,EAAK4U,mBAAmBlQ,SAAQoQ,IAC9BA,EAAanJ,MAAMpD,EAAS,CAAC0D,KAAUa,GAAM,IAI7C9M,EAAKuU,iBAAmBvU,EAAKuU,gBAAgBtI,IAC/CjM,EAAKuU,gBAAgBtI,GAAOvH,SAAQoQ,IAClCA,EAAanJ,MAAMpD,EAASuE,EAAK,GAErC,IAEK9M,CACT,GChGF,GACEgV,WCVa,WACb,MAAMjD,EAASxU,KACf,IAAI0X,EACAC,EACJ,MAAMC,EAAMpD,EAAOoD,IAGjBF,OADiC,IAAxBlD,EAAOO,OAAO2C,OAAiD,OAAxBlD,EAAOO,OAAO2C,MACtDlD,EAAOO,OAAO2C,MAEdE,EAAI,GAAGC,YAIfF,OADkC,IAAzBnD,EAAOO,OAAO4C,QAAmD,OAAzBnD,EAAOO,OAAO4C,OACtDnD,EAAOO,OAAO4C,OAEdC,EAAI,GAAGE,aAGJ,IAAVJ,GAAelD,EAAOuD,gBAA6B,IAAXJ,GAAgBnD,EAAOwD,eAKnEN,EAAQA,EAAQO,SAASL,EAAI7G,IAAI,iBAAmB,EAAG,IAAMkH,SAASL,EAAI7G,IAAI,kBAAoB,EAAG,IACrG4G,EAASA,EAASM,SAASL,EAAI7G,IAAI,gBAAkB,EAAG,IAAMkH,SAASL,EAAI7G,IAAI,mBAAqB,EAAG,IACnGtM,OAAOyT,MAAMR,KAAQA,EAAQ,GAC7BjT,OAAOyT,MAAMP,KAASA,EAAS,GACnC1R,OAAOkS,OAAO3D,EAAQ,CACpBkD,QACAC,SACAS,KAAM5D,EAAOuD,eAAiBL,EAAQC,IAE1C,EDrBEU,aEVa,WACb,MAAM7D,EAASxU,KAEf,SAASsY,EAAkBC,GACzB,OAAI/D,EAAOuD,eACFQ,EAIF,CACL,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjB,YAAe,gBACfA,EACJ,CAEA,SAASC,EAA0B9E,EAAM+E,GACvC,OAAOxI,WAAWyD,EAAKtK,iBAAiBkP,EAAkBG,KAAW,EACvE,CAEA,MAAM1D,EAASP,EAAOO,QAChB,WACJ2D,EACAN,KAAMO,EACNC,aAAcC,EAAG,SACjBC,GACEtE,EACEuE,EAAYvE,EAAOwE,SAAWjE,EAAOiE,QAAQC,QAC7CC,EAAuBH,EAAYvE,EAAOwE,QAAQG,OAAOhX,OAASqS,EAAO2E,OAAOhX,OAChFgX,EAAST,EAAW9Q,SAAS,IAAI4M,EAAOO,OAAOqE,cAC/CC,EAAeN,EAAYvE,EAAOwE,QAAQG,OAAOhX,OAASgX,EAAOhX,OACvE,IAAImX,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GACxB,IAAIC,EAAe1E,EAAO2E,mBAEE,mBAAjBD,IACTA,EAAe1E,EAAO2E,mBAAmBvU,KAAKqP,IAGhD,IAAImF,EAAc5E,EAAO6E,kBAEE,mBAAhBD,IACTA,EAAc5E,EAAO6E,kBAAkBzU,KAAKqP,IAG9C,MAAMqF,EAAyBrF,EAAO8E,SAASnX,OACzC2X,EAA2BtF,EAAO+E,WAAWpX,OACnD,IAAI4X,EAAehF,EAAOgF,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChB/I,EAAQ,EAEZ,QAA0B,IAAfyH,EACT,OAG0B,iBAAjBoB,GAA6BA,EAAa5O,QAAQ,MAAQ,IACnE4O,EAAe9J,WAAW8J,EAAaG,QAAQ,IAAK,KAAO,IAAMvB,GAGnEnE,EAAO2F,aAAeJ,EAElBlB,EAAKM,EAAOpI,IAAI,CAClBqJ,WAAY,GACZC,aAAc,GACdC,UAAW,KACLnB,EAAOpI,IAAI,CACjBwJ,YAAa,GACbF,aAAc,GACdC,UAAW,KAGTvF,EAAOyF,gBAAkBzF,EAAO0F,UAClCtG,EAAeK,EAAOS,UAAW,kCAAmC,IACpEd,EAAeK,EAAOS,UAAW,iCAAkC,KAGrE,MAAMyF,EAAc3F,EAAO4F,MAAQ5F,EAAO4F,KAAKC,KAAO,GAAKpG,EAAOmG,KAOlE,IAAIE,EALAH,GACFlG,EAAOmG,KAAKG,WAAWzB,GAKzB,MAAM0B,EAAgD,SAAzBhG,EAAOiG,eAA4BjG,EAAOkG,aAAehV,OAAOiB,KAAK6N,EAAOkG,aAAanQ,QAAO/E,QACnE,IAA1CgP,EAAOkG,YAAYlV,GAAKiV,gBACrC7Y,OAAS,EAEZ,IAAK,IAAIE,EAAI,EAAGA,EAAIgX,EAAchX,GAAK,EAAG,CACxCwY,EAAY,EACZ,MAAMK,EAAQ/B,EAAOzH,GAAGrP,GAMxB,GAJIqY,GACFlG,EAAOmG,KAAKQ,YAAY9Y,EAAG6Y,EAAO7B,EAAcf,GAGrB,SAAzB4C,EAAMnK,IAAI,WAAd,CAEA,GAA6B,SAAzBgE,EAAOiG,cAA0B,CAC/BD,IACF5B,EAAO9W,GAAGY,MAAMqV,EAAkB,UAAY,IAGhD,MAAM8C,EAAcjS,iBAAiB+R,EAAM,IACrCG,EAAmBH,EAAM,GAAGjY,MAAMsK,UAClC+N,EAAyBJ,EAAM,GAAGjY,MAAMsY,gBAU9C,GARIF,IACFH,EAAM,GAAGjY,MAAMsK,UAAY,QAGzB+N,IACFJ,EAAM,GAAGjY,MAAMsY,gBAAkB,QAG/BxG,EAAOyG,aACTX,EAAYrG,EAAOuD,eAAiBmD,EAAMrL,YAAW,GAAQqL,EAAMhL,aAAY,OAC1E,CAEL,MAAMwH,EAAQc,EAA0B4C,EAAa,SAC/CK,EAAcjD,EAA0B4C,EAAa,gBACrDM,EAAelD,EAA0B4C,EAAa,iBACtDhB,EAAa5B,EAA0B4C,EAAa,eACpDb,EAAc/B,EAA0B4C,EAAa,gBACrDO,EAAYP,EAAYhS,iBAAiB,cAE/C,GAAIuS,GAA2B,eAAdA,EACfd,EAAYnD,EAAQ0C,EAAaG,MAC5B,CACL,MAAM,YACJ1C,EAAW,YACX7H,GACEkL,EAAM,GACVL,EAAYnD,EAAQ+D,EAAcC,EAAetB,EAAaG,GAAevK,EAAc6H,EAC7F,CACF,CAEIwD,IACFH,EAAM,GAAGjY,MAAMsK,UAAY8N,GAGzBC,IACFJ,EAAM,GAAGjY,MAAMsY,gBAAkBD,GAG/BvG,EAAOyG,eAAcX,EAAY9X,KAAK6Y,MAAMf,GAClD,MACEA,GAAalC,GAAc5D,EAAOiG,cAAgB,GAAKjB,GAAgBhF,EAAOiG,cAC1EjG,EAAOyG,eAAcX,EAAY9X,KAAK6Y,MAAMf,IAE5C1B,EAAO9W,KACT8W,EAAO9W,GAAGY,MAAMqV,EAAkB,UAAY,GAAGuC,OAIjD1B,EAAO9W,KACT8W,EAAO9W,GAAGwZ,gBAAkBhB,GAG9BrB,EAAgBtV,KAAK2W,GAEjB9F,EAAOyF,gBACTR,EAAgBA,EAAgBa,EAAY,EAAIZ,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAAN5X,IAAS2X,EAAgBA,EAAgBrB,EAAa,EAAIoB,GAC3E,IAAN1X,IAAS2X,EAAgBA,EAAgBrB,EAAa,EAAIoB,GAC1DhX,KAAK+Y,IAAI9B,GAAiB,OAAUA,EAAgB,GACpDjF,EAAOyG,eAAcxB,EAAgBjX,KAAK6Y,MAAM5B,IAChD9I,EAAQ6D,EAAOgH,gBAAmB,GAAGzC,EAASpV,KAAK8V,GACvDT,EAAWrV,KAAK8V,KAEZjF,EAAOyG,eAAcxB,EAAgBjX,KAAK6Y,MAAM5B,KAC/C9I,EAAQnO,KAAKC,IAAIwR,EAAOO,OAAOiH,mBAAoB9K,IAAUsD,EAAOO,OAAOgH,gBAAmB,GAAGzC,EAASpV,KAAK8V,GACpHT,EAAWrV,KAAK8V,GAChBA,EAAgBA,EAAgBa,EAAYd,GAG9CvF,EAAO2F,aAAeU,EAAYd,EAClCE,EAAgBY,EAChB3J,GAAS,CAlFoC,CAmF/C,CAqBA,GAnBAsD,EAAO2F,YAAcpX,KAAK2S,IAAIlB,EAAO2F,YAAaxB,GAAcgB,EAE5Dd,GAAOC,IAA+B,UAAlB/D,EAAOkH,QAAwC,cAAlBlH,EAAOkH,SAC1DvD,EAAW3H,IAAI,CACb2G,MAAO,GAAGlD,EAAO2F,YAAcpF,EAAOgF,mBAItChF,EAAOmH,gBACTxD,EAAW3H,IAAI,CACb,CAACuH,EAAkB,UAAW,GAAG9D,EAAO2F,YAAcpF,EAAOgF,mBAI7DW,GACFlG,EAAOmG,KAAKwB,kBAAkBtB,EAAWvB,EAAUhB,IAIhDvD,EAAOyF,eAAgB,CAC1B,MAAM4B,EAAgB,GAEtB,IAAK,IAAI/Z,EAAI,EAAGA,EAAIiX,EAASnX,OAAQE,GAAK,EAAG,CAC3C,IAAIga,EAAiB/C,EAASjX,GAC1B0S,EAAOyG,eAAca,EAAiBtZ,KAAK6Y,MAAMS,IAEjD/C,EAASjX,IAAMmS,EAAO2F,YAAcxB,GACtCyD,EAAclY,KAAKmY,EAEvB,CAEA/C,EAAW8C,EAEPrZ,KAAK6Y,MAAMpH,EAAO2F,YAAcxB,GAAc5V,KAAK6Y,MAAMtC,EAASA,EAASnX,OAAS,IAAM,GAC5FmX,EAASpV,KAAKsQ,EAAO2F,YAAcxB,EAEvC,CAIA,GAFwB,IAApBW,EAASnX,SAAcmX,EAAW,CAAC,IAEX,IAAxBvE,EAAOgF,aAAoB,CAC7B,MAAMhU,EAAMyO,EAAOuD,gBAAkBc,EAAM,aAAeP,EAAkB,eAC5Ea,EAAOrO,QAAO,CAACwR,EAAGC,KACXxH,EAAO0F,SAER8B,IAAepD,EAAOhX,OAAS,IAKlC4O,IAAI,CACL,CAAChL,GAAM,GAAGgU,OAEd,CAEA,GAAIhF,EAAOyF,gBAAkBzF,EAAOyH,qBAAsB,CACxD,IAAIC,EAAgB,EACpBjD,EAAgBrS,SAAQuV,IACtBD,GAAiBC,GAAkB3H,EAAOgF,aAAehF,EAAOgF,aAAe,EAAE,IAEnF0C,GAAiB1H,EAAOgF,aACxB,MAAM4C,EAAUF,EAAgB9D,EAChCW,EAAWA,EAAShN,KAAIsQ,GAClBA,EAAO,GAAWnD,EAClBmD,EAAOD,EAAgBA,EAAUhD,EAC9BiD,GAEX,CAEA,GAAI7H,EAAO8H,yBAA0B,CACnC,IAAIJ,EAAgB,EAMpB,GALAjD,EAAgBrS,SAAQuV,IACtBD,GAAiBC,GAAkB3H,EAAOgF,aAAehF,EAAOgF,aAAe,EAAE,IAEnF0C,GAAiB1H,EAAOgF,aAEpB0C,EAAgB9D,EAAY,CAC9B,MAAMmE,GAAmBnE,EAAa8D,GAAiB,EACvDnD,EAASnS,SAAQ,CAACyV,EAAMG,KACtBzD,EAASyD,GAAaH,EAAOE,CAAe,IAE9CvD,EAAWpS,SAAQ,CAACyV,EAAMG,KACxBxD,EAAWwD,GAAaH,EAAOE,CAAe,GAElD,CACF,CASA,GAPA7W,OAAOkS,OAAO3D,EAAQ,CACpB2E,SACAG,WACAC,aACAC,oBAGEzE,EAAOyF,gBAAkBzF,EAAO0F,UAAY1F,EAAOyH,qBAAsB,CAC3ErI,EAAeK,EAAOS,UAAW,mCAAuCqE,EAAS,GAAb,MACpEnF,EAAeK,EAAOS,UAAW,iCAAqCT,EAAO4D,KAAO,EAAIoB,EAAgBA,EAAgBrX,OAAS,GAAK,EAAnE,MACnE,MAAM6a,GAAiBxI,EAAO8E,SAAS,GACjC2D,GAAmBzI,EAAO+E,WAAW,GAC3C/E,EAAO8E,SAAW9E,EAAO8E,SAAShN,KAAI4Q,GAAKA,EAAIF,IAC/CxI,EAAO+E,WAAa/E,EAAO+E,WAAWjN,KAAI4Q,GAAKA,EAAID,GACrD,CAEI5D,IAAiBH,GACnB1E,EAAOgD,KAAK,sBAGV8B,EAASnX,SAAW0X,IAClBrF,EAAOO,OAAOoI,eAAe3I,EAAO4I,gBACxC5I,EAAOgD,KAAK,yBAGV+B,EAAWpX,SAAW2X,GACxBtF,EAAOgD,KAAK,0BAGVzC,EAAOsI,qBACT7I,EAAO8I,oBAEX,EFxSEC,iBGZa,SAA0BvI,GACvC,MAAMR,EAASxU,KACTwd,EAAe,GACfzE,EAAYvE,EAAOwE,SAAWxE,EAAOO,OAAOiE,QAAQC,QAC1D,IACI5W,EADAob,EAAY,EAGK,iBAAVzI,EACTR,EAAOkJ,cAAc1I,IACF,IAAVA,GACTR,EAAOkJ,cAAclJ,EAAOO,OAAOC,OAGrC,MAAM2I,EAAkBzM,GAClB6H,EACKvE,EAAO2E,OAAOrO,QAAOH,GAAMsN,SAAStN,EAAGwC,aAAa,2BAA4B,MAAQ+D,IAAO,GAGjGsD,EAAO2E,OAAOzH,GAAGR,GAAO,GAIjC,GAAoC,SAAhCsD,EAAOO,OAAOiG,eAA4BxG,EAAOO,OAAOiG,cAAgB,EAC1E,GAAIxG,EAAOO,OAAOyF,eAChBhG,EAAOoJ,cAAc3M,MAAKiK,IACxBsC,EAAatZ,KAAKgX,EAAM,SAG1B,IAAK7Y,EAAI,EAAGA,EAAIU,KAAK8a,KAAKrJ,EAAOO,OAAOiG,eAAgB3Y,GAAK,EAAG,CAC9D,MAAM6O,EAAQsD,EAAOsJ,YAAczb,EACnC,GAAI6O,EAAQsD,EAAO2E,OAAOhX,SAAW4W,EAAW,MAChDyE,EAAatZ,KAAKyZ,EAAgBzM,GACpC,MAGFsM,EAAatZ,KAAKyZ,EAAgBnJ,EAAOsJ,cAI3C,IAAKzb,EAAI,EAAGA,EAAImb,EAAarb,OAAQE,GAAK,EACxC,QAA+B,IAApBmb,EAAanb,GAAoB,CAC1C,MAAMsV,EAAS6F,EAAanb,GAAG8N,aAC/BsN,EAAY9F,EAAS8F,EAAY9F,EAAS8F,CAC5C,EAIEA,GAA2B,IAAdA,IAAiBjJ,EAAOkE,WAAW3H,IAAI,SAAU,GAAG0M,MACvE,EHnCEH,mBIba,WACb,MAAM9I,EAASxU,KACTmZ,EAAS3E,EAAO2E,OAEtB,IAAK,IAAI9W,EAAI,EAAGA,EAAI8W,EAAOhX,OAAQE,GAAK,EACtC8W,EAAO9W,GAAG0b,kBAAoBvJ,EAAOuD,eAAiBoB,EAAO9W,GAAG2b,WAAa7E,EAAO9W,GAAG4b,SAE3F,EJOEC,qBKba,SAA8BtJ,EAAY5U,MAAQA,KAAK4U,WAAa,GACjF,MAAMJ,EAASxU,KACT+U,EAASP,EAAOO,QAChB,OACJoE,EACAP,aAAcC,EAAG,SACjBS,GACE9E,EACJ,GAAsB,IAAlB2E,EAAOhX,OAAc,YACkB,IAAhCgX,EAAO,GAAG4E,mBAAmCvJ,EAAO8I,qBAC/D,IAAIa,GAAgBvJ,EAChBiE,IAAKsF,EAAevJ,GAExBuE,EAAOzM,YAAYqI,EAAOqJ,mBAC1B5J,EAAO6J,qBAAuB,GAC9B7J,EAAOoJ,cAAgB,GAEvB,IAAK,IAAIvb,EAAI,EAAGA,EAAI8W,EAAOhX,OAAQE,GAAK,EAAG,CACzC,MAAM6Y,EAAQ/B,EAAO9W,GACrB,IAAIic,EAAcpD,EAAM6C,kBAEpBhJ,EAAO0F,SAAW1F,EAAOyF,iBAC3B8D,GAAenF,EAAO,GAAG4E,mBAG3B,MAAMQ,GAAiBJ,GAAgBpJ,EAAOyF,eAAiBhG,EAAOgK,eAAiB,GAAKF,IAAgBpD,EAAMW,gBAAkB9G,EAAOgF,cACrI0E,GAAyBN,EAAe7E,EAAS,IAAMvE,EAAOyF,eAAiBhG,EAAOgK,eAAiB,GAAKF,IAAgBpD,EAAMW,gBAAkB9G,EAAOgF,cAC3J2E,IAAgBP,EAAeG,GAC/BK,EAAaD,EAAclK,EAAOgF,gBAAgBnX,IACtCqc,GAAe,GAAKA,EAAclK,EAAO4D,KAAO,GAAKuG,EAAa,GAAKA,GAAcnK,EAAO4D,MAAQsG,GAAe,GAAKC,GAAcnK,EAAO4D,QAG7J5D,EAAOoJ,cAAc1Z,KAAKgX,GAC1B1G,EAAO6J,qBAAqBna,KAAK7B,GACjC8W,EAAOzH,GAAGrP,GAAG8J,SAAS4I,EAAOqJ,oBAG/BlD,EAAMzF,SAAWoD,GAAO0F,EAAgBA,EACxCrD,EAAM0D,iBAAmB/F,GAAO4F,EAAwBA,CAC1D,CAEAjK,EAAOoJ,cAAgB7S,EAAEyJ,EAAOoJ,cAClC,EL5BEiB,eMfa,SAAwBjK,GACrC,MAAMJ,EAASxU,KAEf,QAAyB,IAAd4U,EAA2B,CACpC,MAAMkK,EAAatK,EAAOoE,cAAgB,EAAI,EAE9ChE,EAAYJ,GAAUA,EAAOI,WAAaJ,EAAOI,UAAYkK,GAAc,CAC7E,CAEA,MAAM/J,EAASP,EAAOO,OAChBgK,EAAiBvK,EAAOwK,eAAiBxK,EAAOgK,eACtD,IAAI,SACF/I,EAAQ,YACRwJ,EAAW,MACXC,GACE1K,EACJ,MAAM2K,EAAeF,EACfG,EAASF,EAEQ,IAAnBH,GACFtJ,EAAW,EACXwJ,GAAc,EACdC,GAAQ,IAERzJ,GAAYb,EAAYJ,EAAOgK,gBAAkBO,EACjDE,EAAcxJ,GAAY,EAC1ByJ,EAAQzJ,GAAY,GAGtBxP,OAAOkS,OAAO3D,EAAQ,CACpBiB,WACAwJ,cACAC,WAEEnK,EAAOsI,qBAAuBtI,EAAOyF,gBAAkBzF,EAAOsK,aAAY7K,EAAO0J,qBAAqBtJ,GAEtGqK,IAAgBE,GAClB3K,EAAOgD,KAAK,yBAGV0H,IAAUE,GACZ5K,EAAOgD,KAAK,oBAGV2H,IAAiBF,GAAeG,IAAWF,IAC7C1K,EAAOgD,KAAK,YAGdhD,EAAOgD,KAAK,WAAY/B,EAC1B,ENjCE6J,oBOhBa,WACb,MAAM9K,EAASxU,MACT,OACJmZ,EAAM,OACNpE,EAAM,WACN2D,EAAU,YACVoF,EAAW,UACXyB,GACE/K,EACEuE,EAAYvE,EAAOwE,SAAWjE,EAAOiE,QAAQC,QAEnD,IAAIuG,EADJrG,EAAOzM,YAAY,GAAGqI,EAAO0K,oBAAoB1K,EAAO2K,kBAAkB3K,EAAO4K,kBAAkB5K,EAAO6K,6BAA6B7K,EAAO8K,2BAA2B9K,EAAO+K,2BAI9KN,EADEzG,EACYvE,EAAOkE,WAAW7F,KAAK,IAAIkC,EAAOqE,uCAAuC0E,OAEzE3E,EAAOzH,GAAGoM,GAI1B0B,EAAYrT,SAAS4I,EAAO0K,kBAExB1K,EAAOgL,OAELP,EAAY5S,SAASmI,EAAOiL,qBAC9BtH,EAAW9Q,SAAS,IAAImN,EAAOqE,mBAAmBrE,EAAOiL,iDAAiDT,OAAepT,SAAS4I,EAAO6K,2BAEzIlH,EAAW9Q,SAAS,IAAImN,EAAOqE,cAAcrE,EAAOiL,gDAAgDT,OAAepT,SAAS4I,EAAO6K,4BAKvI,IAAIK,EAAYT,EAAYpN,QAAQ,IAAI2C,EAAOqE,cAAc1H,GAAG,GAAGvF,SAAS4I,EAAO2K,gBAE/E3K,EAAOgL,MAA6B,IAArBE,EAAU9d,SAC3B8d,EAAY9G,EAAOzH,GAAG,GACtBuO,EAAU9T,SAAS4I,EAAO2K,iBAI5B,IAAIQ,EAAYV,EAAYhN,QAAQ,IAAIuC,EAAOqE,cAAc1H,GAAG,GAAGvF,SAAS4I,EAAO4K,gBAE/E5K,EAAOgL,MAA6B,IAArBG,EAAU/d,SAC3B+d,EAAY/G,EAAOzH,IAAI,GACvBwO,EAAU/T,SAAS4I,EAAO4K,iBAGxB5K,EAAOgL,OAELE,EAAUrT,SAASmI,EAAOiL,qBAC5BtH,EAAW9Q,SAAS,IAAImN,EAAOqE,mBAAmBrE,EAAOiL,iDAAiDC,EAAUjT,KAAK,gCAAgCb,SAAS4I,EAAO8K,yBAEzKnH,EAAW9Q,SAAS,IAAImN,EAAOqE,cAAcrE,EAAOiL,gDAAgDC,EAAUjT,KAAK,gCAAgCb,SAAS4I,EAAO8K,yBAGjKK,EAAUtT,SAASmI,EAAOiL,qBAC5BtH,EAAW9Q,SAAS,IAAImN,EAAOqE,mBAAmBrE,EAAOiL,iDAAiDE,EAAUlT,KAAK,gCAAgCb,SAAS4I,EAAO+K,yBAEzKpH,EAAW9Q,SAAS,IAAImN,EAAOqE,cAAcrE,EAAOiL,gDAAgDE,EAAUlT,KAAK,gCAAgCb,SAAS4I,EAAO+K,0BAIvKtL,EAAO2L,mBACT,EP9CEC,kBQjBa,SAA2BC,GACxC,MAAM7L,EAASxU,KACT4U,EAAYJ,EAAOoE,aAAepE,EAAOI,WAAaJ,EAAOI,WAC7D,WACJ2E,EAAU,SACVD,EAAQ,OACRvE,EACA+I,YAAawC,EACbf,UAAWgB,EACXxD,UAAWyD,GACThM,EACJ,IACIuI,EADAe,EAAcuC,EAGlB,QAA2B,IAAhBvC,EAA6B,CACtC,IAAK,IAAIzb,EAAI,EAAGA,EAAIkX,EAAWpX,OAAQE,GAAK,OACT,IAAtBkX,EAAWlX,EAAI,GACpBuS,GAAa2E,EAAWlX,IAAMuS,EAAY2E,EAAWlX,EAAI,IAAMkX,EAAWlX,EAAI,GAAKkX,EAAWlX,IAAM,EACtGyb,EAAczb,EACLuS,GAAa2E,EAAWlX,IAAMuS,EAAY2E,EAAWlX,EAAI,KAClEyb,EAAczb,EAAI,GAEXuS,GAAa2E,EAAWlX,KACjCyb,EAAczb,GAKd0S,EAAO0L,sBACL3C,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,EAE7E,CAEA,GAAIxE,EAASnO,QAAQyJ,IAAc,EACjCmI,EAAYzD,EAASnO,QAAQyJ,OACxB,CACL,MAAM8L,EAAO3d,KAAKC,IAAI+R,EAAOiH,mBAAoB8B,GACjDf,EAAY2D,EAAO3d,KAAK6Y,OAAOkC,EAAc4C,GAAQ3L,EAAOgH,eAC9D,CAIA,GAFIgB,GAAazD,EAASnX,SAAQ4a,EAAYzD,EAASnX,OAAS,GAE5D2b,IAAgBwC,EAMlB,YALIvD,IAAcyD,IAChBhM,EAAOuI,UAAYA,EACnBvI,EAAOgD,KAAK,qBAOhB,MAAM+H,EAAYtH,SAASzD,EAAO2E,OAAOzH,GAAGoM,GAAa9Q,KAAK,4BAA8B8Q,EAAa,IACzG7X,OAAOkS,OAAO3D,EAAQ,CACpBuI,YACAwC,YACAe,gBACAxC,gBAEFtJ,EAAOgD,KAAK,qBACZhD,EAAOgD,KAAK,mBAER+I,IAAsBhB,GACxB/K,EAAOgD,KAAK,oBAGVhD,EAAOmM,aAAenM,EAAOO,OAAO6L,qBACtCpM,EAAOgD,KAAK,cAEhB,ERnDEqJ,mBSjBa,SAA4B9S,GACzC,MAAMyG,EAASxU,KACT+U,EAASP,EAAOO,OAChBmG,EAAQnQ,EAAEgD,GAAG6E,QAAQ,IAAImC,EAAOqE,cAAc,GACpD,IACImD,EADAuE,GAAa,EAGjB,GAAI5F,EACF,IAAK,IAAI7Y,EAAI,EAAGA,EAAImS,EAAO2E,OAAOhX,OAAQE,GAAK,EAC7C,GAAImS,EAAO2E,OAAO9W,KAAO6Y,EAAO,CAC9B4F,GAAa,EACbvE,EAAala,EACb,KACF,CAIJ,IAAI6Y,IAAS4F,EAWX,OAFAtM,EAAOuM,kBAAe1c,OACtBmQ,EAAOwM,kBAAe3c,GATtBmQ,EAAOuM,aAAe7F,EAElB1G,EAAOwE,SAAWxE,EAAOO,OAAOiE,QAAQC,QAC1CzE,EAAOwM,aAAe/I,SAASlN,EAAEmQ,GAAOlO,KAAK,2BAA4B,IAEzEwH,EAAOwM,aAAezE,EAQtBxH,EAAOkM,0BAA+C5c,IAAxBmQ,EAAOwM,cAA8BxM,EAAOwM,eAAiBxM,EAAOsJ,aACpGtJ,EAAOyM,qBAEX,GCnCe,SAASC,GAAe,OACrC1M,EAAM,aACN2M,EAAY,UACZC,EAAS,KACT9c,IAEA,MAAM,YACJwZ,EAAW,cACXwC,GACE9L,EACJ,IAAIY,EAAMgM,EAQV,GANKhM,IAC8BA,EAA7B0I,EAAcwC,EAAqB,OAAgBxC,EAAcwC,EAAqB,OAAkB,SAG9G9L,EAAOgD,KAAK,aAAalT,KAErB6c,GAAgBrD,IAAgBwC,EAAe,CACjD,GAAY,UAARlL,EAEF,YADAZ,EAAOgD,KAAK,uBAAuBlT,KAIrCkQ,EAAOgD,KAAK,wBAAwBlT,KAExB,SAAR8Q,EACFZ,EAAOgD,KAAK,sBAAsBlT,KAElCkQ,EAAOgD,KAAK,sBAAsBlT,IAEtC,CACF,CCzBA,OACE+c,QCPa,SAAiBnQ,EAAQ,EAAG8D,EAAQhV,KAAK+U,OAAOC,MAAOmM,GAAe,EAAMG,EAAUC,GACnG,GAAqB,iBAAVrQ,GAAuC,iBAAVA,EACtC,MAAM,IAAIsQ,MAAM,kFAAkFtQ,aAGpG,GAAqB,iBAAVA,EAAoB,CAK7B,MAAMuQ,EAAgBxJ,SAAS/G,EAAO,IAStC,IAFsBwQ,SAASD,GAG7B,MAAM,IAAID,MAAM,sEAAsEtQ,aAKxFA,EAAQuQ,CACV,CAEA,MAAMjN,EAASxU,KACf,IAAIuc,EAAarL,EACbqL,EAAa,IAAGA,EAAa,GACjC,MAAM,OACJxH,EAAM,SACNuE,EAAQ,WACRC,EAAU,cACV+G,EAAa,YACbxC,EACAlF,aAAcC,EAAG,UACjB5D,EAAS,QACTgE,GACEzE,EAEJ,GAAIA,EAAOmN,WAAa5M,EAAO6M,iCAAmC3I,IAAYqI,IAAaC,EACzF,OAAO,EAGT,MAAMb,EAAO3d,KAAKC,IAAIwR,EAAOO,OAAOiH,mBAAoBO,GACxD,IAAIQ,EAAY2D,EAAO3d,KAAK6Y,OAAOW,EAAamE,GAAQlM,EAAOO,OAAOgH,gBAClEgB,GAAazD,EAASnX,SAAQ4a,EAAYzD,EAASnX,OAAS,IAE3D2b,GAAe/I,EAAO8M,cAAgB,MAAQvB,GAAiB,IAAMa,GACxE3M,EAAOgD,KAAK,0BAGd,MAAM5C,GAAa0E,EAASyD,GAI5B,GAFAvI,EAAOqK,eAAejK,GAElBG,EAAO0L,oBACT,IAAK,IAAIpe,EAAI,EAAGA,EAAIkX,EAAWpX,OAAQE,GAAK,EAAG,CAC7C,MAAMyf,GAAuB/e,KAAK6Y,MAAkB,IAAZhH,GAClCmN,EAAiBhf,KAAK6Y,MAAsB,IAAhBrC,EAAWlX,IACvC2f,EAAqBjf,KAAK6Y,MAA0B,IAApBrC,EAAWlX,EAAI,SAEpB,IAAtBkX,EAAWlX,EAAI,GACpByf,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9HxF,EAAala,EACJyf,GAAuBC,GAAkBD,EAAsBE,IACxEzF,EAAala,EAAI,GAEVyf,GAAuBC,IAChCxF,EAAala,EAEjB,CAIF,GAAImS,EAAOmM,aAAepE,IAAeuB,EAAa,CACpD,IAAKtJ,EAAOyN,gBAAkBrN,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOgK,eAC/E,OAAO,EAGT,IAAKhK,EAAO0N,gBAAkBtN,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOwK,iBAC1ElB,GAAe,KAAOvB,EAAY,OAAO,CAElD,CAEA,IAAI6E,EAGJ,GAF8BA,EAA1B7E,EAAauB,EAAyB,OAAgBvB,EAAauB,EAAyB,OAAwB,QAEpHjF,IAAQjE,IAAcJ,EAAOI,YAAciE,GAAOjE,IAAcJ,EAAOI,UAkBzE,OAjBAJ,EAAO4L,kBAAkB7D,GAErBxH,EAAOsK,YACT7K,EAAO+I,mBAGT/I,EAAO8K,sBAEe,UAAlBvK,EAAOkH,QACTzH,EAAO2N,aAAavN,GAGJ,UAAdwM,IACF5M,EAAO4N,gBAAgBjB,EAAcC,GACrC5M,EAAO9E,cAAcyR,EAAcC,KAG9B,EAGT,GAAIrM,EAAO0F,QAAS,CAClB,MAAM4H,EAAM7N,EAAOuD,eACbuK,EAAIzJ,EAAMjE,GAAaA,EAE7B,GAAc,IAAVI,EAAa,CACf,MAAM+D,EAAYvE,EAAOwE,SAAWxE,EAAOO,OAAOiE,QAAQC,QAEtDF,IACFvE,EAAOS,UAAUhS,MAAMiS,eAAiB,OACxCV,EAAO+N,mBAAoB,GAG7BtN,EAAUoN,EAAM,aAAe,aAAeC,EAE1CvJ,GACFtP,uBAAsB,KACpB+K,EAAOS,UAAUhS,MAAMiS,eAAiB,GACxCV,EAAOgO,yBAA0B,CAAK,GAG5C,KAAO,CACL,IAAKhO,EAAOyB,QAAQI,aAMlB,OALA9B,EAAqB,CACnBC,SACAC,eAAgB6N,EAChB5N,KAAM2N,EAAM,OAAS,SAEhB,EAGTpN,EAAUc,SAAS,CACjB,CAACsM,EAAM,OAAS,OAAQC,EACxBG,SAAU,UAEd,CAEA,OAAO,CACT,CA8BA,OA5BAjO,EAAOkJ,cAAc1I,GACrBR,EAAO2N,aAAavN,GACpBJ,EAAO4L,kBAAkB7D,GACzB/H,EAAO8K,sBACP9K,EAAOgD,KAAK,wBAAyBxC,EAAOsM,GAC5C9M,EAAO4N,gBAAgBjB,EAAcC,GAEvB,IAAVpM,EACFR,EAAO9E,cAAcyR,EAAcC,GACzB5M,EAAOmN,YACjBnN,EAAOmN,WAAY,EAEdnN,EAAOkO,gCACVlO,EAAOkO,8BAAgC,SAAuB3U,GACvDyG,IAAUA,EAAOmO,WAClB5U,EAAE/G,SAAWhH,OACjBwU,EAAOkE,WAAW,GAAGnV,oBAAoB,gBAAiBiR,EAAOkO,+BACjElO,EAAOkE,WAAW,GAAGnV,oBAAoB,sBAAuBiR,EAAOkO,+BACvElO,EAAOkO,8BAAgC,YAChClO,EAAOkO,8BACdlO,EAAO9E,cAAcyR,EAAcC,GACrC,GAGF5M,EAAOkE,WAAW,GAAG5U,iBAAiB,gBAAiB0Q,EAAOkO,+BAC9DlO,EAAOkE,WAAW,GAAG5U,iBAAiB,sBAAuB0Q,EAAOkO,iCAG/D,CACT,ED3KEE,YETa,SAAqB1R,EAAQ,EAAG8D,EAAQhV,KAAK+U,OAAOC,MAAOmM,GAAe,EAAMG,GAC7F,MAAM9M,EAASxU,KACf,IAAI6iB,EAAW3R,EAMf,OAJIsD,EAAOO,OAAOgL,OAChB8C,GAAYrO,EAAOsO,cAGdtO,EAAO6M,QAAQwB,EAAU7N,EAAOmM,EAAcG,EACvD,EFCEyB,UGTa,SAAmB/N,EAAQhV,KAAK+U,OAAOC,MAAOmM,GAAe,EAAMG,GAChF,MAAM9M,EAASxU,MACT,UACJ2hB,EAAS,QACT1I,EAAO,OACPlE,GACEP,EACJ,IAAKyE,EAAS,OAAOzE,EACrB,IAAIwO,EAAWjO,EAAOgH,eAEO,SAAzBhH,EAAOiG,eAAsD,IAA1BjG,EAAOgH,gBAAwBhH,EAAOkO,qBAC3ED,EAAWjgB,KAAK2S,IAAIlB,EAAO0O,qBAAqB,WAAW,GAAO,IAGpE,MAAMC,EAAY3O,EAAOsJ,YAAc/I,EAAOiH,mBAAqB,EAAIgH,EAEvE,GAAIjO,EAAOgL,KAAM,CACf,GAAI4B,GAAa5M,EAAOqO,kBAAmB,OAAO,EAClD5O,EAAO6O,UAEP7O,EAAO8O,YAAc9O,EAAOkE,WAAW,GAAGlI,UAC5C,CAEA,OAAIuE,EAAOwO,QAAU/O,EAAO0K,MACnB1K,EAAO6M,QAAQ,EAAGrM,EAAOmM,EAAcG,GAGzC9M,EAAO6M,QAAQ7M,EAAOsJ,YAAcqF,EAAWnO,EAAOmM,EAAcG,EAC7E,EHlBEkC,UIVa,SAAmBxO,EAAQhV,KAAK+U,OAAOC,MAAOmM,GAAe,EAAMG,GAChF,MAAM9M,EAASxU,MACT,OACJ+U,EAAM,UACN4M,EAAS,SACTrI,EAAQ,WACRC,EAAU,aACVX,EAAY,QACZK,GACEzE,EACJ,IAAKyE,EAAS,OAAOzE,EAErB,GAAIO,EAAOgL,KAAM,CACf,GAAI4B,GAAa5M,EAAOqO,kBAAmB,OAAO,EAClD5O,EAAO6O,UAEP7O,EAAO8O,YAAc9O,EAAOkE,WAAW,GAAGlI,UAC5C,CAIA,SAASiT,EAAUC,GACjB,OAAIA,EAAM,GAAW3gB,KAAK6Y,MAAM7Y,KAAK+Y,IAAI4H,IAClC3gB,KAAK6Y,MAAM8H,EACpB,CAEA,MAAM5B,EAAsB2B,EAPV7K,EAAepE,EAAOI,WAAaJ,EAAOI,WAQtD+O,EAAqBrK,EAAShN,KAAIoX,GAAOD,EAAUC,KACzD,IAAIE,EAAWtK,EAASqK,EAAmBxY,QAAQ2W,GAAuB,GAE1E,QAAwB,IAAb8B,GAA4B7O,EAAO0F,QAAS,CACrD,IAAIoJ,EACJvK,EAASnS,SAAQ,CAACyV,EAAMG,KAClB+E,GAAuBlF,IAEzBiH,EAAgB9G,EAClB,SAG2B,IAAlB8G,IACTD,EAAWtK,EAASuK,EAAgB,EAAIA,EAAgB,EAAIA,GAEhE,CAEA,IAAIC,EAAY,EAYhB,YAVwB,IAAbF,IACTE,EAAYvK,EAAWpO,QAAQyY,GAC3BE,EAAY,IAAGA,EAAYtP,EAAOsJ,YAAc,GAEvB,SAAzB/I,EAAOiG,eAAsD,IAA1BjG,EAAOgH,gBAAwBhH,EAAOkO,qBAC3Ea,EAAYA,EAAYtP,EAAO0O,qBAAqB,YAAY,GAAQ,EACxEY,EAAY/gB,KAAK2S,IAAIoO,EAAW,KAIhC/O,EAAOwO,QAAU/O,EAAOyK,YACnBzK,EAAO6M,QAAQ7M,EAAO2E,OAAOhX,OAAS,EAAG6S,EAAOmM,EAAcG,GAGhE9M,EAAO6M,QAAQyC,EAAW9O,EAAOmM,EAAcG,EACxD,EJlDEyC,WKXa,SAAoB/O,EAAQhV,KAAK+U,OAAOC,MAAOmM,GAAe,EAAMG,GAEjF,OADethB,KACDqhB,QADCrhB,KACc8d,YAAa9I,EAAOmM,EAAcG,EACjE,ELSE0C,eMZa,SAAwBhP,EAAQhV,KAAK+U,OAAOC,MAAOmM,GAAe,EAAMG,EAAU2C,EAAY,IAC3G,MAAMzP,EAASxU,KACf,IAAIkR,EAAQsD,EAAOsJ,YACnB,MAAM4C,EAAO3d,KAAKC,IAAIwR,EAAOO,OAAOiH,mBAAoB9K,GAClD6L,EAAY2D,EAAO3d,KAAK6Y,OAAO1K,EAAQwP,GAAQlM,EAAOO,OAAOgH,gBAC7DnH,EAAYJ,EAAOoE,aAAepE,EAAOI,WAAaJ,EAAOI,UAEnE,GAAIA,GAAaJ,EAAO8E,SAASyD,GAAY,CAG3C,MAAMmH,EAAc1P,EAAO8E,SAASyD,GAGhCnI,EAAYsP,GAFC1P,EAAO8E,SAASyD,EAAY,GAEHmH,GAAeD,IACvD/S,GAASsD,EAAOO,OAAOgH,eAE3B,KAAO,CAGL,MAAM6H,EAAWpP,EAAO8E,SAASyD,EAAY,GAGzCnI,EAAYgP,IAFIpP,EAAO8E,SAASyD,GAEO6G,GAAYK,IACrD/S,GAASsD,EAAOO,OAAOgH,eAE3B,CAIA,OAFA7K,EAAQnO,KAAK2S,IAAIxE,EAAO,GACxBA,EAAQnO,KAAKC,IAAIkO,EAAOsD,EAAO+E,WAAWpX,OAAS,GAC5CqS,EAAO6M,QAAQnQ,EAAO8D,EAAOmM,EAAcG,EACpD,ENjBEL,oBOZa,WACb,MAAMzM,EAASxU,MACT,OACJ+U,EAAM,WACN2D,GACElE,EACEwG,EAAyC,SAAzBjG,EAAOiG,cAA2BxG,EAAO0O,uBAAyBnO,EAAOiG,cAC/F,IACIuE,EADA4E,EAAe3P,EAAOwM,aAG1B,GAAIjM,EAAOgL,KAAM,CACf,GAAIvL,EAAOmN,UAAW,OACtBpC,EAAYtH,SAASlN,EAAEyJ,EAAOuM,cAAc/T,KAAK,2BAA4B,IAEzE+H,EAAOyF,eACL2J,EAAe3P,EAAOsO,aAAe9H,EAAgB,GAAKmJ,EAAe3P,EAAO2E,OAAOhX,OAASqS,EAAOsO,aAAe9H,EAAgB,GACxIxG,EAAO6O,UACPc,EAAezL,EAAW9Q,SAAS,IAAImN,EAAOqE,uCAAuCmG,YAAoBxK,EAAOiL,wBAAwBtO,GAAG,GAAGR,QAC9IiC,GAAS,KACPqB,EAAO6M,QAAQ8C,EAAa,KAG9B3P,EAAO6M,QAAQ8C,GAERA,EAAe3P,EAAO2E,OAAOhX,OAAS6Y,GAC/CxG,EAAO6O,UACPc,EAAezL,EAAW9Q,SAAS,IAAImN,EAAOqE,uCAAuCmG,YAAoBxK,EAAOiL,wBAAwBtO,GAAG,GAAGR,QAC9IiC,GAAS,KACPqB,EAAO6M,QAAQ8C,EAAa,KAG9B3P,EAAO6M,QAAQ8C,EAEnB,MACE3P,EAAO6M,QAAQ8C,EAEnB,GCnCA,GACEC,WCFa,WACb,MAAM5P,EAASxU,KACTsB,EAAWoH,KACX,OACJqM,EAAM,WACN2D,GACElE,EAEE6P,EAAY3L,EAAW9Q,WAAWzF,OAAS,EAAI4I,EAAE2N,EAAW9Q,WAAW,GAAG+K,YAAc+F,EAC9F2L,EAAUzc,SAAS,IAAImN,EAAOqE,cAAcrE,EAAOiL,uBAAuBrT,SAC1E,IAAIwM,EAASkL,EAAUzc,SAAS,IAAImN,EAAOqE,cAE3C,GAAIrE,EAAOuP,uBAAwB,CACjC,MAAMC,EAAiBxP,EAAOgH,eAAiB5C,EAAOhX,OAAS4S,EAAOgH,eAEtE,GAAIwI,IAAmBxP,EAAOgH,eAAgB,CAC5C,IAAK,IAAI1Z,EAAI,EAAGA,EAAIkiB,EAAgBliB,GAAK,EAAG,CAC1C,MAAMmiB,EAAYzZ,EAAEzJ,EAASC,cAAc,QAAQ4K,SAAS,GAAG4I,EAAOqE,cAAcrE,EAAO0P,mBAC3FJ,EAAUzS,OAAO4S,EACnB,CAEArL,EAASkL,EAAUzc,SAAS,IAAImN,EAAOqE,aACzC,CACF,CAE6B,SAAzBrE,EAAOiG,eAA6BjG,EAAO+N,eAAc/N,EAAO+N,aAAe3J,EAAOhX,QAC1FqS,EAAOsO,aAAe/f,KAAK8a,KAAK5N,WAAW8E,EAAO+N,cAAgB/N,EAAOiG,cAAe,KACxFxG,EAAOsO,cAAgB/N,EAAO2P,qBAE1BlQ,EAAOsO,aAAe3J,EAAOhX,SAC/BqS,EAAOsO,aAAe3J,EAAOhX,QAG/B,MAAMwiB,EAAgB,GAChBC,EAAe,GACrBzL,EAAOlI,MAAK,CAACtG,EAAIuG,KACf,MAAMgK,EAAQnQ,EAAEJ,GAEZuG,EAAQsD,EAAOsO,cACjB8B,EAAa1gB,KAAKyG,GAGhBuG,EAAQiI,EAAOhX,QAAU+O,GAASiI,EAAOhX,OAASqS,EAAOsO,cAC3D6B,EAAczgB,KAAKyG,GAGrBuQ,EAAMlO,KAAK,0BAA2BkE,EAAM,IAG9C,IAAK,IAAI7O,EAAI,EAAGA,EAAIuiB,EAAaziB,OAAQE,GAAK,EAC5CgiB,EAAUzS,OAAO7G,EAAE6Z,EAAaviB,GAAGwiB,WAAU,IAAO1Y,SAAS4I,EAAOiL,sBAGtE,IAAK,IAAI3d,EAAIsiB,EAAcxiB,OAAS,EAAGE,GAAK,EAAGA,GAAK,EAClDgiB,EAAUpS,QAAQlH,EAAE4Z,EAActiB,GAAGwiB,WAAU,IAAO1Y,SAAS4I,EAAOiL,qBAE1E,EDrDEqD,QELa,WACb,MAAM7O,EAASxU,KACfwU,EAAOgD,KAAK,iBACZ,MAAM,YACJsG,EAAW,OACX3E,EAAM,aACN2J,EAAY,eACZZ,EAAc,eACdD,EAAc,SACd3I,EACAV,aAAcC,GACZrE,EACJ,IAAIqO,EACJrO,EAAO0N,gBAAiB,EACxB1N,EAAOyN,gBAAiB,EACxB,MACM6C,GADiBxL,EAASwE,GACHtJ,EAAOuQ,eAEhCjH,EAAcgF,GAChBD,EAAW1J,EAAOhX,OAAwB,EAAf2gB,EAAmBhF,EAC9C+E,GAAYC,EACStO,EAAO6M,QAAQwB,EAAU,GAAG,GAAO,IAE3B,IAATiC,GAClBtQ,EAAO2N,cAActJ,GAAOrE,EAAOI,UAAYJ,EAAOI,WAAakQ,IAE5DhH,GAAe3E,EAAOhX,OAAS2gB,IAExCD,GAAY1J,EAAOhX,OAAS2b,EAAcgF,EAC1CD,GAAYC,EACStO,EAAO6M,QAAQwB,EAAU,GAAG,GAAO,IAE3B,IAATiC,GAClBtQ,EAAO2N,cAActJ,GAAOrE,EAAOI,UAAYJ,EAAOI,WAAakQ,IAIvEtQ,EAAO0N,eAAiBA,EACxB1N,EAAOyN,eAAiBA,EACxBzN,EAAOgD,KAAK,UACd,EFlCEwN,YGNa,WACb,MACM,WACJtM,EAAU,OACV3D,EAAM,OACNoE,GAJanZ,KAMf0Y,EAAW9Q,SAAS,IAAImN,EAAOqE,cAAcrE,EAAOiL,wBAAwBjL,EAAOqE,cAAcrE,EAAO0P,mBAAmB9X,SAC3HwM,EAAO9L,WAAW,0BACpB,GCMe,SAAS4X,EAAavW,GACnC,MAAM8F,EAASxU,KACTsB,EAAWoH,IACXoB,EAASF,IACT2F,EAAOiF,EAAO0Q,iBACd,OACJnQ,EAAM,QACNoQ,EAAO,QACPlM,GACEzE,EACJ,IAAKyE,EAAS,OAEd,GAAIzE,EAAOmN,WAAa5M,EAAO6M,+BAC7B,QAGGpN,EAAOmN,WAAa5M,EAAO0F,SAAW1F,EAAOgL,MAChDvL,EAAO6O,UAGT,IAAItV,EAAIW,EACJX,EAAEqX,gBAAerX,EAAIA,EAAEqX,eAC3B,IAAIC,EAAYta,EAAEgD,EAAE/G,QAEpB,GAAiC,YAA7B+N,EAAOuQ,oBACJD,EAAUzS,QAAQ4B,EAAOS,WAAW9S,OAAQ,OAInD,GADAoN,EAAKgW,aAA0B,eAAXxX,EAAEyX,MACjBjW,EAAKgW,cAAgB,UAAWxX,GAAiB,IAAZA,EAAE0X,MAAa,OACzD,IAAKlW,EAAKgW,cAAgB,WAAYxX,GAAKA,EAAE2X,OAAS,EAAG,OACzD,GAAInW,EAAKoW,WAAapW,EAAKqW,QAAS,OAEL7Q,EAAO8Q,gBAA4C,KAA1B9Q,EAAO8Q,gBAEnC9X,EAAE/G,QAAU+G,EAAE/G,OAAO8e,YAAcpX,EAAMqX,MAAQrX,EAAMqX,KAAK,KACtFV,EAAYta,EAAE2D,EAAMqX,KAAK,KAG3B,MAAMC,EAAoBjR,EAAOiR,kBAAoBjR,EAAOiR,kBAAoB,IAAIjR,EAAO8Q,iBACrFI,KAAoBlY,EAAE/G,SAAU+G,EAAE/G,OAAO8e,YAE/C,GAAI/Q,EAAOmR,YAAcD,EArD3B,SAAwB7kB,EAAU+kB,EAAOnmB,MAQvC,OAPA,SAASomB,EAAczb,GACrB,OAAKA,GAAMA,IAAOjC,KAAiBiC,IAAOf,KACtCe,EAAG0b,eAAc1b,EAAKA,EAAG0b,cACf1b,EAAGiI,QAAQxR,IACTglB,EAAczb,EAAG2b,cAAcne,OAHe,IAIhE,CAEOie,CAAcD,EACvB,CA4C4CI,CAAeP,EAAmBjY,EAAE/G,QAAUqe,EAAUzS,QAAQoT,GAAmB,IAE3H,YADAxR,EAAOgS,YAAa,GAItB,GAAIzR,EAAO0R,eACJpB,EAAUzS,QAAQmC,EAAO0R,cAAc,GAAI,OAGlDtB,EAAQuB,SAAsB,eAAX3Y,EAAEyX,KAAwBzX,EAAE4Y,cAAc,GAAGC,MAAQ7Y,EAAE6Y,MAC1EzB,EAAQ0B,SAAsB,eAAX9Y,EAAEyX,KAAwBzX,EAAE4Y,cAAc,GAAGG,MAAQ/Y,EAAE+Y,MAC1E,MAAMC,EAAS5B,EAAQuB,SACjBM,EAAS7B,EAAQ0B,SAEjBI,EAAqBlS,EAAOkS,oBAAsBlS,EAAOmS,sBACzDC,EAAqBpS,EAAOoS,oBAAsBpS,EAAOqS,sBAE/D,GAAIH,IAAuBF,GAAUI,GAAsBJ,GAAUjd,EAAOud,WAAaF,GAAqB,CAC5G,GAA2B,YAAvBF,EAGF,OAFAvY,EAAM4Y,gBAIV,CAiBA,GAfArhB,OAAOkS,OAAO5I,EAAM,CAClBoW,WAAW,EACXC,SAAS,EACT2B,qBAAqB,EACrBC,iBAAanjB,EACbojB,iBAAapjB,IAEf8gB,EAAQ4B,OAASA,EACjB5B,EAAQ6B,OAASA,EACjBzX,EAAKmY,eAAiBrU,IACtBmB,EAAOgS,YAAa,EACpBhS,EAAOiD,aACPjD,EAAOmT,oBAAiBtjB,EACpB0Q,EAAOkP,UAAY,IAAG1U,EAAKqY,oBAAqB,GAErC,eAAX7Z,EAAEyX,KAAuB,CAC3B,IAAI8B,GAAiB,EACjBjC,EAAUlX,GAAGoB,EAAKsY,qBAAoBP,GAAiB,GAEvDhmB,EAAS+F,eAAiB0D,EAAEzJ,EAAS+F,eAAe8G,GAAGoB,EAAKsY,oBAAsBvmB,EAAS+F,gBAAkBge,EAAU,IACzH/jB,EAAS+F,cAAcC,OAGzB,MAAMwgB,EAAuBR,GAAkB9S,EAAOuT,gBAAkBhT,EAAOiT,0BAE1EjT,EAAOkT,gCAAiCH,GAA0BzC,EAAU,GAAG6C,mBAClFna,EAAEuZ,gBAEN,CAEA9S,EAAOgD,KAAK,aAAczJ,EAC5B,CC9Ge,SAASoa,EAAYzZ,GAClC,MAAMpN,EAAWoH,IACX8L,EAASxU,KACTuP,EAAOiF,EAAO0Q,iBACd,OACJnQ,EAAM,QACNoQ,EACAvM,aAAcC,EAAG,QACjBI,GACEzE,EACJ,IAAKyE,EAAS,OACd,IAAIlL,EAAIW,EAGR,GAFIX,EAAEqX,gBAAerX,EAAIA,EAAEqX,gBAEtB7V,EAAKoW,UAKR,YAJIpW,EAAKkY,aAAelY,EAAKiY,aAC3BhT,EAAOgD,KAAK,oBAAqBzJ,IAMrC,GAAIwB,EAAKgW,cAA2B,cAAXxX,EAAEyX,KAAsB,OACjD,MAAM4C,EAAyB,cAAXra,EAAEyX,MAAwBzX,EAAE4Y,gBAAkB5Y,EAAE4Y,cAAc,IAAM5Y,EAAEsa,eAAe,IACnGzB,EAAmB,cAAX7Y,EAAEyX,KAAuB4C,EAAYxB,MAAQ7Y,EAAE6Y,MACvDE,EAAmB,cAAX/Y,EAAEyX,KAAuB4C,EAAYtB,MAAQ/Y,EAAE+Y,MAE7D,GAAI/Y,EAAEua,wBAGJ,OAFAnD,EAAQ4B,OAASH,OACjBzB,EAAQ6B,OAASF,GAInB,IAAKtS,EAAOuT,eAcV,OAZAvT,EAAOgS,YAAa,OAEhBjX,EAAKoW,YACP1f,OAAOkS,OAAOgN,EAAS,CACrB4B,OAAQH,EACRI,OAAQF,EACRJ,SAAUE,EACVC,SAAUC,IAEZvX,EAAKmY,eAAiBrU,MAM1B,GAAI9D,EAAKgW,cAAgBxQ,EAAOwT,sBAAwBxT,EAAOgL,KAC7D,GAAIvL,EAAOwD,cAET,GAAI8O,EAAQ3B,EAAQ6B,QAAUxS,EAAOI,WAAaJ,EAAOwK,gBAAkB8H,EAAQ3B,EAAQ6B,QAAUxS,EAAOI,WAAaJ,EAAOgK,eAG9H,OAFAjP,EAAKoW,WAAY,OACjBpW,EAAKqW,SAAU,QAGZ,GAAIgB,EAAQzB,EAAQ4B,QAAUvS,EAAOI,WAAaJ,EAAOwK,gBAAkB4H,EAAQzB,EAAQ4B,QAAUvS,EAAOI,WAAaJ,EAAOgK,eACrI,OAIJ,GAAIjP,EAAKgW,cAAgBjkB,EAAS+F,eAC5B0G,EAAE/G,SAAW1F,EAAS+F,eAAiB0D,EAAEgD,EAAE/G,QAAQmH,GAAGoB,EAAKsY,mBAG7D,OAFAtY,EAAKqW,SAAU,OACfpR,EAAOgS,YAAa,GASxB,GAJIjX,EAAKgY,qBACP/S,EAAOgD,KAAK,YAAazJ,GAGvBA,EAAE4Y,eAAiB5Y,EAAE4Y,cAAcxkB,OAAS,EAAG,OACnDgjB,EAAQuB,SAAWE,EACnBzB,EAAQ0B,SAAWC,EACnB,MAAM0B,EAAQrD,EAAQuB,SAAWvB,EAAQ4B,OACnC0B,EAAQtD,EAAQ0B,SAAW1B,EAAQ6B,OACzC,GAAIxS,EAAOO,OAAOkP,WAAalhB,KAAK2lB,KAAKF,GAAS,EAAIC,GAAS,GAAKjU,EAAOO,OAAOkP,UAAW,OAE7F,QAAgC,IAArB1U,EAAKiY,YAA6B,CAC3C,IAAImB,EAEAnU,EAAOuD,gBAAkBoN,EAAQ0B,WAAa1B,EAAQ6B,QAAUxS,EAAOwD,cAAgBmN,EAAQuB,WAAavB,EAAQ4B,OACtHxX,EAAKiY,aAAc,EAGfgB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA4D,IAA/C5lB,KAAK6lB,MAAM7lB,KAAK+Y,IAAI2M,GAAQ1lB,KAAK+Y,IAAI0M,IAAgBzlB,KAAK8S,GACvEtG,EAAKiY,YAAchT,EAAOuD,eAAiB4Q,EAAa5T,EAAO4T,WAAa,GAAKA,EAAa5T,EAAO4T,WAG3G,CAYA,GAVIpZ,EAAKiY,aACPhT,EAAOgD,KAAK,oBAAqBzJ,QAGH,IAArBwB,EAAKkY,cACVtC,EAAQuB,WAAavB,EAAQ4B,QAAU5B,EAAQ0B,WAAa1B,EAAQ6B,SACtEzX,EAAKkY,aAAc,IAInBlY,EAAKiY,YAEP,YADAjY,EAAKoW,WAAY,GAInB,IAAKpW,EAAKkY,YACR,OAGFjT,EAAOgS,YAAa,GAEfzR,EAAO0F,SAAW1M,EAAEuB,YACvBvB,EAAEuZ,iBAGAvS,EAAO8T,2BAA6B9T,EAAO+T,QAC7C/a,EAAEgb,kBAGCxZ,EAAKqW,UACJ7Q,EAAOgL,OAAShL,EAAO0F,SACzBjG,EAAO6O,UAGT9T,EAAKyZ,eAAiBxU,EAAOuQ,eAC7BvQ,EAAOkJ,cAAc,GAEjBlJ,EAAOmN,WACTnN,EAAOkE,WAAW1M,QAAQ,qCAG5BuD,EAAK0Z,qBAAsB,GAEvBlU,EAAOmU,aAAyC,IAA1B1U,EAAOyN,iBAAqD,IAA1BzN,EAAO0N,gBACjE1N,EAAO2U,eAAc,GAGvB3U,EAAOgD,KAAK,kBAAmBzJ,IAGjCyG,EAAOgD,KAAK,aAAczJ,GAC1BwB,EAAKqW,SAAU,EACf,IAAId,EAAOtQ,EAAOuD,eAAiByQ,EAAQC,EAC3CtD,EAAQL,KAAOA,EACfA,GAAQ/P,EAAOqU,WACXvQ,IAAKiM,GAAQA,GACjBtQ,EAAOmT,eAAiB7C,EAAO,EAAI,OAAS,OAC5CvV,EAAK8Z,iBAAmBvE,EAAOvV,EAAKyZ,eACpC,IAAIM,GAAsB,EACtBC,EAAkBxU,EAAOwU,gBAgC7B,GA9BIxU,EAAOwT,sBACTgB,EAAkB,GAGhBzE,EAAO,GAAKvV,EAAK8Z,iBAAmB7U,EAAOgK,gBAC7C8K,GAAsB,EAClBvU,EAAOyU,aAAYja,EAAK8Z,iBAAmB7U,EAAOgK,eAAiB,IAAMhK,EAAOgK,eAAiBjP,EAAKyZ,eAAiBlE,IAASyE,IAC3HzE,EAAO,GAAKvV,EAAK8Z,iBAAmB7U,EAAOwK,iBACpDsK,GAAsB,EAClBvU,EAAOyU,aAAYja,EAAK8Z,iBAAmB7U,EAAOwK,eAAiB,GAAKxK,EAAOwK,eAAiBzP,EAAKyZ,eAAiBlE,IAASyE,IAGjID,IACFvb,EAAEua,yBAA0B,IAIzB9T,EAAOyN,gBAA4C,SAA1BzN,EAAOmT,gBAA6BpY,EAAK8Z,iBAAmB9Z,EAAKyZ,iBAC7FzZ,EAAK8Z,iBAAmB9Z,EAAKyZ,iBAG1BxU,EAAO0N,gBAA4C,SAA1B1N,EAAOmT,gBAA6BpY,EAAK8Z,iBAAmB9Z,EAAKyZ,iBAC7FzZ,EAAK8Z,iBAAmB9Z,EAAKyZ,gBAG1BxU,EAAO0N,gBAAmB1N,EAAOyN,iBACpC1S,EAAK8Z,iBAAmB9Z,EAAKyZ,gBAI3BjU,EAAOkP,UAAY,EAAG,CACxB,KAAIlhB,KAAK+Y,IAAIgJ,GAAQ/P,EAAOkP,WAAa1U,EAAKqY,oBAW5C,YADArY,EAAK8Z,iBAAmB9Z,EAAKyZ,gBAT7B,IAAKzZ,EAAKqY,mBAMR,OALArY,EAAKqY,oBAAqB,EAC1BzC,EAAQ4B,OAAS5B,EAAQuB,SACzBvB,EAAQ6B,OAAS7B,EAAQ0B,SACzBtX,EAAK8Z,iBAAmB9Z,EAAKyZ,oBAC7B7D,EAAQL,KAAOtQ,EAAOuD,eAAiBoN,EAAQuB,SAAWvB,EAAQ4B,OAAS5B,EAAQ0B,SAAW1B,EAAQ6B,OAO5G,CAEKjS,EAAO0U,eAAgB1U,EAAO0F,WAE/B1F,EAAO2U,UAAY3U,EAAO2U,SAASzQ,SAAWzE,EAAOkV,UAAY3U,EAAOsI,uBAC1E7I,EAAO4L,oBACP5L,EAAO8K,uBAGL9K,EAAOO,OAAO2U,UAAY3U,EAAO2U,SAASzQ,SAAWzE,EAAOkV,UAC9DlV,EAAOkV,SAASvB,cAIlB3T,EAAOqK,eAAetP,EAAK8Z,kBAE3B7U,EAAO2N,aAAa5S,EAAK8Z,kBAC3B,CC5Ne,SAASM,EAAWjb,GACjC,MAAM8F,EAASxU,KACTuP,EAAOiF,EAAO0Q,iBACd,OACJnQ,EAAM,QACNoQ,EACAvM,aAAcC,EAAG,WACjBU,EAAU,QACVN,GACEzE,EACJ,IAAKyE,EAAS,OACd,IAAIlL,EAAIW,EASR,GARIX,EAAEqX,gBAAerX,EAAIA,EAAEqX,eAEvB7V,EAAKgY,qBACP/S,EAAOgD,KAAK,WAAYzJ,GAG1BwB,EAAKgY,qBAAsB,GAEtBhY,EAAKoW,UAOR,OANIpW,EAAKqW,SAAW7Q,EAAOmU,YACzB1U,EAAO2U,eAAc,GAGvB5Z,EAAKqW,SAAU,OACfrW,EAAKkY,aAAc,GAKjB1S,EAAOmU,YAAc3Z,EAAKqW,SAAWrW,EAAKoW,aAAwC,IAA1BnR,EAAOyN,iBAAqD,IAA1BzN,EAAO0N,iBACnG1N,EAAO2U,eAAc,GAIvB,MAAMS,EAAevW,IACfwW,EAAWD,EAAera,EAAKmY,eAErC,GAAIlT,EAAOgS,WAAY,CACrB,MAAMsD,EAAW/b,EAAEgY,MAAQhY,EAAEgc,cAAgBhc,EAAEgc,eAC/CvV,EAAOqM,mBAAmBiJ,GAAYA,EAAS,IAAM/b,EAAE/G,QACvDwN,EAAOgD,KAAK,YAAazJ,GAErB8b,EAAW,KAAOD,EAAera,EAAKya,cAAgB,KACxDxV,EAAOgD,KAAK,wBAAyBzJ,EAEzC,CAOA,GALAwB,EAAKya,cAAgB3W,IACrBF,GAAS,KACFqB,EAAOmO,YAAWnO,EAAOgS,YAAa,EAAI,KAG5CjX,EAAKoW,YAAcpW,EAAKqW,UAAYpR,EAAOmT,gBAAmC,IAAjBxC,EAAQL,MAAcvV,EAAK8Z,mBAAqB9Z,EAAKyZ,eAIrH,OAHAzZ,EAAKoW,WAAY,EACjBpW,EAAKqW,SAAU,OACfrW,EAAKkY,aAAc,GAOrB,IAAIwC,EAQJ,GAXA1a,EAAKoW,WAAY,EACjBpW,EAAKqW,SAAU,EACfrW,EAAKkY,aAAc,EAIjBwC,EADElV,EAAO0U,aACI5Q,EAAMrE,EAAOI,WAAaJ,EAAOI,WAEhCrF,EAAK8Z,iBAGjBtU,EAAO0F,QACT,OAGF,GAAIjG,EAAOO,OAAO2U,UAAY3U,EAAO2U,SAASzQ,QAI5C,YAHAzE,EAAOkV,SAASC,WAAW,CACzBM,eAMJ,IAAIC,EAAY,EACZC,EAAY3V,EAAOgF,gBAAgB,GAEvC,IAAK,IAAInX,EAAI,EAAGA,EAAIkX,EAAWpX,OAAQE,GAAKA,EAAI0S,EAAOiH,mBAAqB,EAAIjH,EAAOgH,eAAgB,CACrG,MAAMoH,EAAY9gB,EAAI0S,EAAOiH,mBAAqB,EAAI,EAAIjH,EAAOgH,oBAExB,IAA9BxC,EAAWlX,EAAI8gB,GACpB8G,GAAc1Q,EAAWlX,IAAM4nB,EAAa1Q,EAAWlX,EAAI8gB,KAC7D+G,EAAY7nB,EACZ8nB,EAAY5Q,EAAWlX,EAAI8gB,GAAa5J,EAAWlX,IAE5C4nB,GAAc1Q,EAAWlX,KAClC6nB,EAAY7nB,EACZ8nB,EAAY5Q,EAAWA,EAAWpX,OAAS,GAAKoX,EAAWA,EAAWpX,OAAS,GAEnF,CAGA,MAAMioB,GAASH,EAAa1Q,EAAW2Q,IAAcC,EAC/ChH,EAAY+G,EAAYnV,EAAOiH,mBAAqB,EAAI,EAAIjH,EAAOgH,eAEzE,GAAI8N,EAAW9U,EAAOsV,aAAc,CAElC,IAAKtV,EAAOuV,WAEV,YADA9V,EAAO6M,QAAQ7M,EAAOsJ,aAIM,SAA1BtJ,EAAOmT,iBACLyC,GAASrV,EAAOwV,gBAAiB/V,EAAO6M,QAAQ6I,EAAY/G,GAAgB3O,EAAO6M,QAAQ6I,IAGnE,SAA1B1V,EAAOmT,iBACLyC,EAAQ,EAAIrV,EAAOwV,gBAAiB/V,EAAO6M,QAAQ6I,EAAY/G,GAAgB3O,EAAO6M,QAAQ6I,GAEtG,KAAO,CAEL,IAAKnV,EAAOyV,YAEV,YADAhW,EAAO6M,QAAQ7M,EAAOsJ,cAIEtJ,EAAOiW,YAAe1c,EAAE/G,SAAWwN,EAAOiW,WAAWC,QAAU3c,EAAE/G,SAAWwN,EAAOiW,WAAWE,QAGxF,SAA1BnW,EAAOmT,gBACTnT,EAAO6M,QAAQ6I,EAAY/G,GAGC,SAA1B3O,EAAOmT,gBACTnT,EAAO6M,QAAQ6I,IAERnc,EAAE/G,SAAWwN,EAAOiW,WAAWC,OACxClW,EAAO6M,QAAQ6I,EAAY/G,GAE3B3O,EAAO6M,QAAQ6I,EAEnB,CACF,CC/Ie,SAASU,IACtB,MAAMpW,EAASxU,MACT,OACJ+U,EAAM,GACNpK,GACE6J,EACJ,GAAI7J,GAAyB,IAAnBA,EAAGqF,YAAmB,OAE5B+E,EAAOkG,aACTzG,EAAOqW,gBAIT,MAAM,eACJ5I,EAAc,eACdC,EAAc,SACd5I,GACE9E,EAEJA,EAAOyN,gBAAiB,EACxBzN,EAAO0N,gBAAiB,EACxB1N,EAAOiD,aACPjD,EAAO6D,eACP7D,EAAO8K,uBAEuB,SAAzBvK,EAAOiG,eAA4BjG,EAAOiG,cAAgB,IAAMxG,EAAO0K,QAAU1K,EAAOyK,cAAgBzK,EAAOO,OAAOyF,eACzHhG,EAAO6M,QAAQ7M,EAAO2E,OAAOhX,OAAS,EAAG,GAAG,GAAO,GAEnDqS,EAAO6M,QAAQ7M,EAAOsJ,YAAa,GAAG,GAAO,GAG3CtJ,EAAOsW,UAAYtW,EAAOsW,SAASC,SAAWvW,EAAOsW,SAASE,QAChExW,EAAOsW,SAASG,MAIlBzW,EAAO0N,eAAiBA,EACxB1N,EAAOyN,eAAiBA,EAEpBzN,EAAOO,OAAOoI,eAAiB7D,IAAa9E,EAAO8E,UACrD9E,EAAO4I,eAEX,CC1Ce,SAAS8N,EAAQnd,GAC9B,MAAMyG,EAASxU,KACVwU,EAAOyE,UAEPzE,EAAOgS,aACNhS,EAAOO,OAAOoW,eAAepd,EAAEuZ,iBAE/B9S,EAAOO,OAAOqW,0BAA4B5W,EAAOmN,YACnD5T,EAAEgb,kBACFhb,EAAEsd,6BAGR,CCZe,SAASC,IACtB,MAAM9W,EAASxU,MACT,UACJiV,EAAS,aACT2D,EAAY,QACZK,GACEzE,EACJ,IAAKyE,EAAS,OAad,IAAIsS,EAZJ/W,EAAOgX,kBAAoBhX,EAAOI,UAE9BJ,EAAOuD,eACTvD,EAAOI,WAAaK,EAAUtE,WAE9B6D,EAAOI,WAAaK,EAAUxE,WAIN,IAAtB+D,EAAOI,YAAkBJ,EAAOI,UAAY,GAChDJ,EAAO4L,oBACP5L,EAAO8K,sBAEP,MAAMP,EAAiBvK,EAAOwK,eAAiBxK,EAAOgK,eAGpD+M,EADqB,IAAnBxM,EACY,GAECvK,EAAOI,UAAYJ,EAAOgK,gBAAkBO,EAGzDwM,IAAgB/W,EAAOiB,UACzBjB,EAAOqK,eAAejG,GAAgBpE,EAAOI,UAAYJ,EAAOI,WAGlEJ,EAAOgD,KAAK,eAAgBhD,EAAOI,WAAW,EAChD,CC3BA,IAAI6W,GAAqB,EAEzB,SAASC,IAAsB,CAE/B,MAAMld,EAASA,CAACgG,EAAQuC,KACtB,MAAMzV,EAAWoH,KACX,OACJqM,EAAM,YACN4W,EAAW,GACXhhB,EAAE,UACFsK,EAAS,OACT2W,EAAM,QACN3V,GACEzB,EACE3G,IAAYkH,EAAO+T,OACnB+C,EAAuB,OAAX9U,EAAkB,mBAAqB,sBACnD+U,EAAe/U,EAErB,GAAKd,EAAQM,MAIN,CACL,MAAME,IAAwC,eAAtBkV,EAAYI,QAA0B9V,EAAQQ,kBAAmB1B,EAAOiX,mBAAmB,CACjHC,SAAS,EACTpe,SAAS,GAEXlD,EAAGkhB,GAAWF,EAAYI,MAAOvX,EAAOyQ,aAAcxO,GACtD9L,EAAGkhB,GAAWF,EAAYO,KAAM1X,EAAO2T,YAAalS,EAAQQ,gBAAkB,CAC5EwV,SAAS,EACTpe,WACEA,GACJlD,EAAGkhB,GAAWF,EAAYQ,IAAK3X,EAAOmV,WAAYlT,GAE9CkV,EAAYzpB,QACdyI,EAAGkhB,GAAWF,EAAYzpB,OAAQsS,EAAOmV,WAAYlT,EAEzD,MAlBE9L,EAAGkhB,GAAWF,EAAYI,MAAOvX,EAAOyQ,cAAc,GACtD3jB,EAASuqB,GAAWF,EAAYO,KAAM1X,EAAO2T,YAAata,GAC1DvM,EAASuqB,GAAWF,EAAYQ,IAAK3X,EAAOmV,YAAY,IAmBtD5U,EAAOoW,eAAiBpW,EAAOqW,2BACjCzgB,EAAGkhB,GAAW,QAASrX,EAAO0W,SAAS,GAGrCnW,EAAO0F,SACTxF,EAAU4W,GAAW,SAAUrX,EAAO8W,UAIpCvW,EAAOqX,qBACT5X,EAAOsX,GAAcF,EAAOS,KAAOT,EAAOU,QAAU,0CAA4C,wBAAyB1B,GAAU,GAEnIpW,EAAOsX,GAAc,iBAAkBlB,GAAU,EACnD,EAiCF,OACE2B,aA/BF,WACE,MAAM/X,EAASxU,KACTsB,EAAWoH,KACX,OACJqM,EAAM,QACNkB,GACEzB,EACJA,EAAOyQ,aAAeA,EAAauH,KAAKhY,GACxCA,EAAO2T,YAAcA,EAAYqE,KAAKhY,GACtCA,EAAOmV,WAAaA,EAAW6C,KAAKhY,GAEhCO,EAAO0F,UACTjG,EAAO8W,SAAWA,EAASkB,KAAKhY,IAGlCA,EAAO0W,QAAUA,EAAQsB,KAAKhY,GAE1ByB,EAAQM,QAAUkV,IACpBnqB,EAASwC,iBAAiB,aAAc4nB,GACxCD,GAAqB,GAGvBjd,EAAOgG,EAAQ,KACjB,EASEiY,aAPF,WAEEje,EADexO,KACA,MACjB,GCzFA,MAAM0sB,EAAgBA,CAAClY,EAAQO,IACtBP,EAAOmG,MAAQ5F,EAAO4F,MAAQ5F,EAAO4F,KAAKC,KAAO,ECD1D,ICAA,GACE+R,WCaa,WACb,MAAMnY,EAASxU,MACT,WACJqM,EAAU,OACV0I,EAAM,IACN8D,EAAG,IACHjB,EAAG,OACHgU,EAAM,QACN3V,GACEzB,EAEEoY,EA3BR,SAAwBC,EAASC,GAC/B,MAAMC,EAAgB,GAYtB,OAXAF,EAAQ1lB,SAAQlG,IACM,iBAATA,EACTgF,OAAOiB,KAAKjG,GAAMkG,SAAQkF,IACpBpL,EAAKoL,IACP0gB,EAAc7oB,KAAK4oB,EAASzgB,EAC9B,IAEuB,iBAATpL,GAChB8rB,EAAc7oB,KAAK4oB,EAAS7rB,EAC9B,IAEK8rB,CACT,CAamBC,CAAe,CAAC,cAAejY,EAAOqM,UAAW,CAChE,kBAAmBnL,EAAQM,OAC1B,CACD,YAAa/B,EAAOO,OAAO2U,UAAY3U,EAAO2U,SAASzQ,SACtD,CACD,WAAclE,EAAOsK,YACpB,CACD,IAAOxG,GACN,CACD,KAAQ9D,EAAO4F,MAAQ5F,EAAO4F,KAAKC,KAAO,GACzC,CACD,cAAe7F,EAAO4F,MAAQ5F,EAAO4F,KAAKC,KAAO,GAA0B,WAArB7F,EAAO4F,KAAKsS,MACjE,CACD,QAAWrB,EAAOU,SACjB,CACD,IAAOV,EAAOS,KACb,CACD,WAAYtX,EAAO0F,SAClB,CACD,SAAY1F,EAAO0F,SAAW1F,EAAOyF,iBACnCzF,EAAOmY,wBACX7gB,EAAWnI,QAAQ0oB,GACnBhV,EAAIzL,SAAS,IAAIE,GAAY8gB,KAAK,MAClC3Y,EAAO4Y,sBACT,ED/CEC,cEJa,WACb,MACM,IACJzV,EAAG,WACHvL,GAHarM,KAKf4X,EAAIlL,YAAYL,EAAW8gB,KAAK,MALjBntB,KAMRotB,sBACT,GCRA,GACEE,MAAM,EACNlM,UAAW,aACXkE,kBAAmB,UACnBzD,aAAc,EACd7M,MAAO,IACPyF,SAAS,EACT2R,sBAAsB,EACtBmB,gBAAgB,EAChBzE,QAAQ,EACR0E,gBAAgB,EAChBvU,SAAS,EACT4O,kBAAmB,wDAEnBnQ,MAAO,KACPC,OAAQ,KAERiK,gCAAgC,EAEhChb,UAAW,KACX6mB,IAAK,KAELxG,oBAAoB,EACpBE,mBAAoB,GAEpB9H,YAAY,EAEZnD,gBAAgB,EAEhBwR,kBAAkB,EAElBzR,OAAQ,QAGRhB,iBAAa5W,EACbspB,gBAAiB,SAEjB5T,aAAc,EACdiB,cAAe,EACfe,eAAgB,EAChBC,mBAAoB,EACpBiH,oBAAoB,EACpBzI,gBAAgB,EAChBgC,sBAAsB,EACtB9C,mBAAoB,EAEpBE,kBAAmB,EAEnB6G,qBAAqB,EACrB5D,0BAA0B,EAE1BM,eAAe,EAEf3B,cAAc,EAEd4N,WAAY,EACZT,WAAY,GACZiF,eAAe,EACfpD,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdZ,cAAc,EACd1B,gBAAgB,EAChB9D,UAAW,EACX4E,0BAA0B,EAC1Bb,0BAA0B,EAC1BC,+BAA+B,EAC/BM,qBAAqB,EAErBsF,mBAAmB,EAEnBrE,YAAY,EACZD,gBAAiB,IAEjBlM,qBAAqB,EAErB6L,YAAY,EAEZiC,eAAe,EACfC,0BAA0B,EAC1BnK,qBAAqB,EAErB6M,eAAe,EACfC,qBAAqB,EAErBhO,MAAM,EACN2E,qBAAsB,EACtB5B,aAAc,KACdwB,wBAAwB,EACxBlB,mBAAmB,EAEnBG,QAAQ,EAERrB,gBAAgB,EAChBD,gBAAgB,EAChBwE,aAAc,KAEdP,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnBgG,kBAAkB,EAElBkB,uBAAwB,UAExB9T,WAAY,eACZqL,gBAAiB,+BACjBhF,iBAAkB,sBAClBG,0BAA2B,gCAC3BxB,kBAAmB,uBACnB4B,oBAAqB,yBACrBN,eAAgB,oBAChBG,wBAAyB,8BACzBF,eAAgB,oBAChBG,wBAAyB,8BACzBkO,aAAc,iBAEdpN,oBAAoB,EAEpBqN,cAAc,GCvHD,SAASC,EAAmBnZ,EAAQoZ,GACjD,OAAO,SAAsB9nB,EAAM,CAAC,GAClC,MAAM+nB,EAAkBnoB,OAAOiB,KAAKb,GAAK,GACnCgoB,EAAehoB,EAAI+nB,GAEG,iBAAjBC,GAA8C,OAAjBA,GAKpC,CAAC,aAAc,aAAc,aAAaljB,QAAQijB,IAAoB,IAAiC,IAA5BrZ,EAAOqZ,KACpFrZ,EAAOqZ,GAAmB,CACxBE,MAAM,IAIJF,KAAmBrZ,GAAU,YAAasZ,IAKhB,IAA5BtZ,EAAOqZ,KACTrZ,EAAOqZ,GAAmB,CACxBnV,SAAS,IAI0B,iBAA5BlE,EAAOqZ,IAAmC,YAAarZ,EAAOqZ,KACvErZ,EAAOqZ,GAAiBnV,SAAU,GAG/BlE,EAAOqZ,KAAkBrZ,EAAOqZ,GAAmB,CACtDnV,SAAS,IAEXlS,EAAOonB,EAAkB9nB,IAjBvBU,EAAOonB,EAAkB9nB,IAXzBU,EAAOonB,EAAkB9nB,EA6B7B,CACF,CCdA,MAAMkoB,EAAa,CACjBC,cAAa,EACbC,OAAM,EACN7Z,UCrBF,CACEmQ,aCLa,SAA4B2J,GAAO1uB,KAAK+X,eAAiB,IAAM,MAC5E,MACM,OACJhD,EACA6D,aAAcC,EAAG,UACjBjE,EAAS,WACT8D,GALa1Y,KAQf,GAAI+U,EAAO2Y,iBACT,OAAO7U,GAAOjE,EAAYA,EAG5B,GAAIG,EAAO0F,QACT,OAAO7F,EAGT,IAAIyU,E5C0BN,SAAsB1e,EAAI+jB,EAAO,KAC/B,MAAM5kB,EAASF,IACf,IAAI+kB,EACAC,EACAC,EACJ,MAAMC,EAxBR,SAA0BnkB,GACxB,MAAMb,EAASF,IACf,IAAI3G,EAcJ,OAZI6G,EAAOX,mBACTlG,EAAQ6G,EAAOX,iBAAiBwB,EAAI,QAGjC1H,GAAS0H,EAAGokB,eACf9rB,EAAQ0H,EAAGokB,cAGR9rB,IACHA,EAAQ0H,EAAG1H,OAGNA,CACT,CAOmBkG,CAAiBwB,GA+BlC,OA7BIb,EAAOklB,iBACTJ,EAAeE,EAASvhB,WAAauhB,EAASvT,gBAE1CqT,EAAahjB,MAAM,KAAKzJ,OAAS,IACnCysB,EAAeA,EAAahjB,MAAM,MAAMU,KAAIzG,GAAKA,EAAEqU,QAAQ,IAAK,OAAMiT,KAAK,OAK7E0B,EAAkB,IAAI/kB,EAAOklB,gBAAiC,SAAjBJ,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASG,cAAgBH,EAASI,YAAcJ,EAASK,aAAeL,EAASM,aAAeN,EAASvhB,WAAauhB,EAAS1lB,iBAAiB,aAAa8Q,QAAQ,aAAc,sBACrMyU,EAASE,EAAgBvb,WAAW1H,MAAM,MAG/B,MAAT8iB,IAE0BE,EAAxB9kB,EAAOklB,gBAAgCH,EAAgBQ,IAChC,KAAlBV,EAAOxsB,OAA8B8N,WAAW0e,EAAO,KAC5C1e,WAAW0e,EAAO,KAG3B,MAATD,IAE0BE,EAAxB9kB,EAAOklB,gBAAgCH,EAAgBS,IAChC,KAAlBX,EAAOxsB,OAA8B8N,WAAW0e,EAAO,KAC5C1e,WAAW0e,EAAO,KAGjCC,GAAgB,CACzB,C4C/DyB7J,CAAarM,EAAW,GAAIgW,GAEnD,OADI7V,IAAKwQ,GAAoBA,GACtBA,GAAoB,CAC7B,EDdElH,aEPa,SAAsBvN,EAAW2a,GAC9C,MAAM/a,EAASxU,MAEb4Y,aAAcC,EAAG,OACjB9D,EAAM,WACN2D,EAAU,UACVzD,EAAS,SACTQ,GACEjB,EACJ,IAwBI+W,EAxBAiE,EAAI,EACJC,EAAI,EAGJjb,EAAOuD,eACTyX,EAAI3W,GAAOjE,EAAYA,EAEvB6a,EAAI7a,EAGFG,EAAOyG,eACTgU,EAAIzsB,KAAK6Y,MAAM4T,GACfC,EAAI1sB,KAAK6Y,MAAM6T,IAGb1a,EAAO0F,QACTxF,EAAUT,EAAOuD,eAAiB,aAAe,aAAevD,EAAOuD,gBAAkByX,GAAKC,EACpF1a,EAAO2Y,kBACjBhV,EAAWnL,UAAU,eAAeiiB,QAAQC,aAG9Cjb,EAAOgX,kBAAoBhX,EAAOI,UAClCJ,EAAOI,UAAYJ,EAAOuD,eAAiByX,EAAIC,EAG/C,MAAM1Q,EAAiBvK,EAAOwK,eAAiBxK,EAAOgK,eAGpD+M,EADqB,IAAnBxM,EACY,GAECnK,EAAYJ,EAAOgK,gBAAkBO,EAGlDwM,IAAgB9V,GAClBjB,EAAOqK,eAAejK,GAGxBJ,EAAOgD,KAAK,eAAgBhD,EAAOI,UAAW2a,EAChD,EFvCE/Q,aGRa,WACb,OAAQxe,KAAKsZ,SAAS,EACxB,EHOE0F,aITa,WACb,OAAQhf,KAAKsZ,SAAStZ,KAAKsZ,SAASnX,OAAS,EAC/C,EJQEutB,YKTa,SAAqB9a,EAAY,EAAGI,EAAQhV,KAAK+U,OAAOC,MAAOmM,GAAe,EAAMwO,GAAkB,EAAMrO,GACzH,MAAM9M,EAASxU,MACT,OACJ+U,EAAM,UACNE,GACET,EAEJ,GAAIA,EAAOmN,WAAa5M,EAAO6M,+BAC7B,OAAO,EAGT,MAAMpD,EAAehK,EAAOgK,eACtBQ,EAAexK,EAAOwK,eAC5B,IAAI4Q,EAKJ,GAJiDA,EAA7CD,GAAmB/a,EAAY4J,EAA6BA,EAAsBmR,GAAmB/a,EAAYoK,EAA6BA,EAAiCpK,EAEnLJ,EAAOqK,eAAe+Q,GAElB7a,EAAO0F,QAAS,CAClB,MAAM4H,EAAM7N,EAAOuD,eAEnB,GAAc,IAAV/C,EACFC,EAAUoN,EAAM,aAAe,cAAgBuN,MAC1C,CACL,IAAKpb,EAAOyB,QAAQI,aAMlB,OALA9B,EAAqB,CACnBC,SACAC,gBAAiBmb,EACjBlb,KAAM2N,EAAM,OAAS,SAEhB,EAGTpN,EAAUc,SAAS,CACjB,CAACsM,EAAM,OAAS,QAASuN,EACzBnN,SAAU,UAEd,CAEA,OAAO,CACT,CA0CA,OAxCc,IAAVzN,GACFR,EAAOkJ,cAAc,GACrBlJ,EAAO2N,aAAayN,GAEhBzO,IACF3M,EAAOgD,KAAK,wBAAyBxC,EAAOsM,GAC5C9M,EAAOgD,KAAK,oBAGdhD,EAAOkJ,cAAc1I,GACrBR,EAAO2N,aAAayN,GAEhBzO,IACF3M,EAAOgD,KAAK,wBAAyBxC,EAAOsM,GAC5C9M,EAAOgD,KAAK,oBAGThD,EAAOmN,YACVnN,EAAOmN,WAAY,EAEdnN,EAAOqb,oCACVrb,EAAOqb,kCAAoC,SAAuB9hB,GAC3DyG,IAAUA,EAAOmO,WAClB5U,EAAE/G,SAAWhH,OACjBwU,EAAOkE,WAAW,GAAGnV,oBAAoB,gBAAiBiR,EAAOqb,mCACjErb,EAAOkE,WAAW,GAAGnV,oBAAoB,sBAAuBiR,EAAOqb,mCACvErb,EAAOqb,kCAAoC,YACpCrb,EAAOqb,kCAEV1O,GACF3M,EAAOgD,KAAK,iBAEhB,GAGFhD,EAAOkE,WAAW,GAAG5U,iBAAiB,gBAAiB0Q,EAAOqb,mCAC9Drb,EAAOkE,WAAW,GAAG5U,iBAAiB,sBAAuB0Q,EAAOqb,sCAIjE,CACT,GNzDEriB,WOxBF,CACEkQ,cCJa,SAAuBhd,EAAU6uB,GAC9C,MAAM/a,EAASxU,KAEVwU,EAAOO,OAAO0F,SACjBjG,EAAOkE,WAAWlL,WAAW9M,GAG/B8T,EAAOgD,KAAK,gBAAiB9W,EAAU6uB,EACzC,EDHEnN,gBEJa,SAAyBjB,GAAe,EAAMC,GAC3D,MAAM5M,EAASxU,MACT,OACJ+U,GACEP,EACAO,EAAO0F,UAEP1F,EAAOsK,YACT7K,EAAO+I,mBAGT2D,EAAe,CACb1M,SACA2M,eACAC,YACA9c,KAAM,UAEV,EFZEoL,cGLa,SAAuByR,GAAe,EAAMC,GACzD,MAAM5M,EAASxU,MACT,OACJ+U,GACEP,EACJA,EAAOmN,WAAY,EACf5M,EAAO0F,UACXjG,EAAOkJ,cAAc,GACrBwD,EAAe,CACb1M,SACA2M,eACAC,YACA9c,KAAM,QAEV,GVaE4W,MAAK,EACL6E,KAAI,EACJmJ,WW5BF,CACEC,cCHa,SAAuB2G,GACpC,MAAMtb,EAASxU,KACf,GAAIwU,EAAOyB,QAAQM,QAAU/B,EAAOO,OAAO6Y,eAAiBpZ,EAAOO,OAAOoI,eAAiB3I,EAAOub,UAAYvb,EAAOO,OAAO0F,QAAS,OACrI,MAAM9P,EAAyC,cAApC6J,EAAOO,OAAOuQ,kBAAoC9Q,EAAO7J,GAAK6J,EAAOS,UAChFtK,EAAG1H,MAAM+sB,OAAS,OAClBrlB,EAAG1H,MAAM+sB,OAASF,EAAS,mBAAqB,eAChDnlB,EAAG1H,MAAM+sB,OAASF,EAAS,eAAiB,YAC5CnlB,EAAG1H,MAAM+sB,OAASF,EAAS,WAAa,MAC1C,EDJEG,gBEJa,WACb,MAAMzb,EAASxU,KAEXwU,EAAOyB,QAAQM,OAAS/B,EAAOO,OAAOoI,eAAiB3I,EAAOub,UAAYvb,EAAOO,OAAO0F,UAI5FjG,EAA2C,cAApCA,EAAOO,OAAOuQ,kBAAoC,KAAO,aAAariB,MAAM+sB,OAAS,GAC9F,GbuBExhB,OAAM,EACNyM,YN9BF,CACE4P,cDGa,WACb,MAAMrW,EAASxU,MACT,YACJ8d,EAAW,YACX6C,EAAW,aACXmC,EAAe,EAAC,OAChB/N,EAAM,IACN6C,GACEpD,EACEyG,EAAclG,EAAOkG,YAC3B,IAAKA,GAAeA,GAAmD,IAApChV,OAAOiB,KAAK+T,GAAa9Y,OAAc,OAE1E,MAAM+tB,EAAa1b,EAAO2b,cAAclV,EAAazG,EAAOO,OAAO4Y,gBAAiBnZ,EAAO7J,IAC3F,IAAKulB,GAAc1b,EAAO4b,oBAAsBF,EAAY,OAC5D,MACMG,GADuBH,KAAcjV,EAAcA,EAAYiV,QAAc7rB,IAClCmQ,EAAO8b,eAClDC,EAAc7D,EAAclY,EAAQO,GACpCyb,EAAa9D,EAAclY,EAAQ6b,GACnCI,EAAa1b,EAAOkE,QAEtBsX,IAAgBC,GAClB5Y,EAAIlL,YAAY,GAAGqI,EAAOmY,8BAA8BnY,EAAOmY,qCAC/D1Y,EAAO4Y,yBACGmD,GAAeC,IACzB5Y,EAAIzL,SAAS,GAAG4I,EAAOmY,+BAEnBmD,EAAiB1V,KAAKsS,MAAuC,WAA/BoD,EAAiB1V,KAAKsS,OAAsBoD,EAAiB1V,KAAKsS,MAA6B,WAArBlY,EAAO4F,KAAKsS,OACtHrV,EAAIzL,SAAS,GAAG4I,EAAOmY,qCAGzB1Y,EAAO4Y,wBAGT,MAAMsD,EAAmBL,EAAiBjP,WAAaiP,EAAiBjP,YAAcrM,EAAOqM,UACvFuP,EAAc5b,EAAOgL,OAASsQ,EAAiBrV,gBAAkBjG,EAAOiG,eAAiB0V,GAE3FA,GAAoB/P,GACtBnM,EAAOoc,kBAGT7pB,EAAOyN,EAAOO,OAAQsb,GACtB,MAAMQ,EAAYrc,EAAOO,OAAOkE,QAChChT,OAAOkS,OAAO3D,EAAQ,CACpBuT,eAAgBvT,EAAOO,OAAOgT,eAC9B9F,eAAgBzN,EAAOO,OAAOkN,eAC9BC,eAAgB1N,EAAOO,OAAOmN,iBAG5BuO,IAAeI,EACjBrc,EAAOsc,WACGL,GAAcI,GACxBrc,EAAOuc,SAGTvc,EAAO4b,kBAAoBF,EAC3B1b,EAAOgD,KAAK,oBAAqB6Y,GAE7BM,GAAehQ,IACjBnM,EAAOwQ,cACPxQ,EAAO4P,aACP5P,EAAO6D,eACP7D,EAAO6M,QAAQvD,EAAcgF,EAAetO,EAAOsO,aAAc,GAAG,IAGtEtO,EAAOgD,KAAK,aAAc6Y,EAC5B,ECnEEF,coBHa,SAAuBlV,EAAakL,EAAO,SAAU6K,GAClE,IAAK/V,GAAwB,cAATkL,IAAyB6K,EAAa,OAC1D,IAAId,GAAa,EACjB,MAAMpmB,EAASF,IACTqnB,EAAyB,WAAT9K,EAAoBrc,EAAOonB,YAAcF,EAAYlZ,aACrEqZ,EAASlrB,OAAOiB,KAAK+T,GAAa3O,KAAI8kB,IAC1C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMjmB,QAAQ,KAAY,CACzD,MAAMkmB,EAAWphB,WAAWmhB,EAAME,OAAO,IAEzC,MAAO,CACLhnB,MAFY2mB,EAAgBI,EAG5BD,QAEJ,CAEA,MAAO,CACL9mB,MAAO8mB,EACPA,QACD,IAEHD,EAAOI,MAAK,CAAC1rB,EAAG2rB,IAAMvZ,SAASpS,EAAEyE,MAAO,IAAM2N,SAASuZ,EAAElnB,MAAO,MAEhE,IAAK,IAAIjI,EAAI,EAAGA,EAAI8uB,EAAOhvB,OAAQE,GAAK,EAAG,CACzC,MAAM,MACJ+uB,EAAK,MACL9mB,GACE6mB,EAAO9uB,GAEE,WAAT8jB,EACErc,EAAON,WAAW,eAAec,QAAY+G,UAC/C6e,EAAakB,GAEN9mB,GAAS0mB,EAAYnZ,cAC9BqY,EAAakB,EAEjB,CAEA,OAAOlB,GAAc,KACvB,GdNE9S,ceEF,CACEA,cApCF,WACE,MAAM5I,EAASxU,MAEb+vB,SAAU0B,EAAS,OACnB1c,GACEP,GACE,mBACJkF,GACE3E,EAEJ,GAAI2E,EAAoB,CACtB,MAAMgY,EAAiBld,EAAO2E,OAAOhX,OAAS,EACxCwvB,EAAqBnd,EAAO+E,WAAWmY,GAAkBld,EAAOgF,gBAAgBkY,GAAuC,EAArBhY,EACxGlF,EAAOub,SAAWvb,EAAO4D,KAAOuZ,CAClC,MACEnd,EAAOub,SAAsC,IAA3Bvb,EAAO8E,SAASnX,QAGN,IAA1B4S,EAAOkN,iBACTzN,EAAOyN,gBAAkBzN,EAAOub,WAGJ,IAA1Bhb,EAAOmN,iBACT1N,EAAO0N,gBAAkB1N,EAAOub,UAG9B0B,GAAaA,IAAcjd,EAAOub,WACpCvb,EAAO0K,OAAQ,GAGbuS,IAAcjd,EAAOub,UACvBvb,EAAOgD,KAAKhD,EAAOub,SAAW,OAAS,SAE3C,GfCE3jB,QAAO,EACPwlB,OgBjCF,CACEC,UCDa,SAAmBC,EAAS7qB,EAAK8qB,EAAQC,EAAOC,EAAkBzvB,GAC/E,MAAMsH,EAASF,IACf,IAAIsoB,EAEJ,SAASC,IACH3vB,GAAUA,GAChB,CAEkBuI,EAAE+mB,GAASpf,OAAO,WAAW,IAE3Bof,EAAQM,UAAaH,EAsBvCE,IArBIlrB,GACFirB,EAAQ,IAAIpoB,EAAOT,MACnB6oB,EAAMG,OAASF,EACfD,EAAMI,QAAUH,EAEZH,IACFE,EAAMF,MAAQA,GAGZD,IACFG,EAAMH,OAASA,GAGb9qB,IACFirB,EAAMjrB,IAAMA,IAGdkrB,GAMN,EDhCErE,cEJa,WACb,MAAMtZ,EAASxU,KAGf,SAASmyB,IACH,MAAO3d,GAA8CA,IAAUA,EAAOmO,iBAC9Cte,IAAxBmQ,EAAO+d,eAA4B/d,EAAO+d,cAAgB,GAE1D/d,EAAO+d,eAAiB/d,EAAOge,aAAarwB,SAC1CqS,EAAOO,OAAOgZ,qBAAqBvZ,EAAOia,SAC9Cja,EAAOgD,KAAK,gBAEhB,CAVAhD,EAAOge,aAAehe,EAAOoD,IAAI/E,KAAK,OAYtC,IAAK,IAAIxQ,EAAI,EAAGA,EAAImS,EAAOge,aAAarwB,OAAQE,GAAK,EAAG,CACtD,MAAMyvB,EAAUtd,EAAOge,aAAanwB,GACpCmS,EAAOqd,UAAUC,EAASA,EAAQW,YAAcX,EAAQ3kB,aAAa,OAAQ2kB,EAAQC,QAAUD,EAAQ3kB,aAAa,UAAW2kB,EAAQE,OAASF,EAAQ3kB,aAAa,UAAU,EAAMglB,EACvL,CACF,IlBmBMO,EAAmB,CAAC,EAE1B,MAAMC,EACJ7rB,WAAAA,IAAeiF,GACb,IAAIpB,EACAoK,EAYJ,GAVoB,IAAhBhJ,EAAK5J,QAAgB4J,EAAK,GAAGjF,aAAwE,WAAzDb,OAAO/E,UAAUoS,SAASnO,KAAK4G,EAAK,IAAInH,MAAM,GAAI,GAChGmQ,EAAShJ,EAAK,IAEbpB,EAAIoK,GAAUhJ,EAGZgJ,IAAQA,EAAS,CAAC,GACvBA,EAAShO,EAAO,CAAC,EAAGgO,GAChBpK,IAAOoK,EAAOpK,KAAIoK,EAAOpK,GAAKA,GAE9BoK,EAAOpK,IAAMI,EAAEgK,EAAOpK,IAAIxI,OAAS,EAAG,CACxC,MAAMywB,EAAU,GAOhB,OANA7nB,EAAEgK,EAAOpK,IAAIsG,MAAK+f,IAChB,MAAM6B,EAAY9rB,EAAO,CAAC,EAAGgO,EAAQ,CACnCpK,GAAIqmB,IAEN4B,EAAQ1uB,KAAK,IAAIyuB,EAAOE,GAAW,IAE9BD,CACT,CAGA,MAAMpe,EAASxU,KACfwU,EAAON,YAAa,EACpBM,EAAOyB,QAAUG,IACjB5B,EAAOoX,OxCrBX,SAAmBkH,EAAY,CAAC,GAK9B,OAJK5c,IACHA,EA9CJ,UAAoB,UAClBtP,GACE,CAAC,GACH,MAAMqP,EAAUG,IACVtM,EAASF,IACTjD,EAAWmD,EAAOpD,UAAUC,SAC5BosB,EAAKnsB,GAAakD,EAAOpD,UAAUE,UACnCglB,EAAS,CACbS,KAAK,EACLC,SAAS,GAEL0G,EAAclpB,EAAOP,OAAOmO,MAC5Bub,EAAenpB,EAAOP,OAAOoO,OAC7B2U,EAAUyG,EAAGG,MAAM,+BAEzB,IAAIC,EAAOJ,EAAGG,MAAM,wBACpB,MAAME,EAAOL,EAAGG,MAAM,2BAChBG,GAAUF,GAAQJ,EAAGG,MAAM,8BAC3BI,EAAuB,UAAb3sB,EAChB,IAAI4sB,EAAqB,aAAb5sB,EAsBZ,OAlBKwsB,GAAQI,GAAStd,EAAQM,OAFV,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAExGpL,QAAQ,GAAG6nB,KAAeC,MAAmB,IAC9FE,EAAOJ,EAAGG,MAAM,uBACXC,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINjH,IAAYgH,IACd1H,EAAO4H,GAAK,UACZ5H,EAAOU,SAAU,IAGf6G,GAAQE,GAAUD,KACpBxH,EAAO4H,GAAK,MACZ5H,EAAOS,KAAM,GAIRT,CACT,CAImB6H,CAAWX,IAGrB5c,CACT,CwCeoBwd,CAAU,CACxB9sB,UAAWmO,EAAOnO,YAEpB4N,EAAO2B,SvCtDJA,IACHA,EAhBJ,WACE,MAAMrM,EAASF,IAOf,MAAO,CACL+pB,SANF,WACE,MAAMZ,EAAKjpB,EAAOpD,UAAUE,UAAUgtB,cACtC,OAAOb,EAAG5nB,QAAQ,WAAa,GAAK4nB,EAAG5nB,QAAQ,UAAY,GAAK4nB,EAAG5nB,QAAQ,WAAa,CAC1F,CAGYwoB,GACVE,UAAW,+CAA+CC,KAAKhqB,EAAOpD,UAAUE,WAEpF,CAIcmtB,IAGL5d,GuCmDL3B,EAAOwC,gBAAkB,CAAC,EAC1BxC,EAAO6C,mBAAqB,GAC5B7C,EAAOwf,QAAU,IAAIxf,EAAOyf,aAExBlf,EAAOif,SAAWhqB,MAAMY,QAAQmK,EAAOif,UACzCxf,EAAOwf,QAAQ9vB,QAAQ6Q,EAAOif,SAGhC,MAAM7F,EAAmB,CAAC,EAC1B3Z,EAAOwf,QAAQ7sB,SAAQ+sB,IACrBA,EAAI,CACF1f,SACA2f,aAAcjG,EAAmBnZ,EAAQoZ,GACzCliB,GAAIuI,EAAOvI,GAAGugB,KAAKhY,GACnByC,KAAMzC,EAAOyC,KAAKuV,KAAKhY,GACvB1F,IAAK0F,EAAO1F,IAAI0d,KAAKhY,GACrBgD,KAAMhD,EAAOgD,KAAKgV,KAAKhY,IACvB,IAGJ,MAAM4f,EAAertB,EAAO,CAAC,EAAGstB,EAAUlG,GAiH1C,OA/GA3Z,EAAOO,OAAShO,EAAO,CAAC,EAAGqtB,EAAc1B,EAAkB3d,GAC3DP,EAAO8b,eAAiBvpB,EAAO,CAAC,EAAGyN,EAAOO,QAC1CP,EAAO8f,aAAevtB,EAAO,CAAC,EAAGgO,GAE7BP,EAAOO,QAAUP,EAAOO,OAAO9I,IACjChG,OAAOiB,KAAKsN,EAAOO,OAAO9I,IAAI9E,SAAQotB,IACpC/f,EAAOvI,GAAGsoB,EAAW/f,EAAOO,OAAO9I,GAAGsoB,GAAW,IAIjD/f,EAAOO,QAAUP,EAAOO,OAAOqC,OACjC5C,EAAO4C,MAAM5C,EAAOO,OAAOqC,OAI7B5C,EAAOzJ,EAAIA,EAEX9E,OAAOkS,OAAO3D,EAAQ,CACpByE,QAASzE,EAAOO,OAAOkE,QACvBtO,KAEA0B,WAAY,GAEZ8M,OAAQpO,IACRwO,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAGjBzB,YAAAA,GACE,MAAmC,eAA5BvD,EAAOO,OAAOqM,SACvB,EAEApJ,UAAAA,GACE,MAAmC,aAA5BxD,EAAOO,OAAOqM,SACvB,EAGAtD,YAAa,EACbyB,UAAW,EAEXN,aAAa,EACbC,OAAO,EAEPtK,UAAW,EACX4W,kBAAmB,EACnB/V,SAAU,EACV+e,SAAU,EACV7S,WAAW,EAEXM,eAAgBzN,EAAOO,OAAOkN,eAC9BC,eAAgB1N,EAAOO,OAAOmN,eAE9ByJ,YAAa,WACX,MAAMpV,EAAQ,CAAC,aAAc,YAAa,WAAY,eAChDke,EAAU,CAAC,cAAe,cAAe,aAY/C,OAXAjgB,EAAOkgB,iBAAmB,CACxB3I,MAAOxV,EAAM,GACb2V,KAAM3V,EAAM,GACZ4V,IAAK5V,EAAM,GACXrU,OAAQqU,EAAM,IAEhB/B,EAAOmgB,mBAAqB,CAC1B5I,MAAO0I,EAAQ,GACfvI,KAAMuI,EAAQ,GACdtI,IAAKsI,EAAQ,IAERjgB,EAAOyB,QAAQM,QAAU/B,EAAOO,OAAO6Y,cAAgBpZ,EAAOkgB,iBAAmBlgB,EAAOmgB,kBACjG,CAfa,GAgBbzP,gBAAiB,CACfS,eAAWthB,EACXuhB,aAASvhB,EACTkjB,yBAAqBljB,EACrBqjB,oBAAgBrjB,EAChBmjB,iBAAanjB,EACbglB,sBAAkBhlB,EAClB2kB,oBAAgB3kB,EAChBujB,wBAAoBvjB,EAEpBwjB,kBAAmBrT,EAAOO,OAAO8S,kBAEjCmC,cAAe3W,IACfuhB,kBAAcvwB,EAEdwwB,WAAY,GACZ5L,yBAAqB5kB,EACrBkhB,kBAAclhB,EACdojB,iBAAapjB,GAGfmiB,YAAY,EAEZuB,eAAgBvT,EAAOO,OAAOgT,eAC9B5C,QAAS,CACP4B,OAAQ,EACRC,OAAQ,EACRN,SAAU,EACVG,SAAU,EACV/B,KAAM,GAGR0N,aAAc,GACdD,aAAc,IAEhB/d,EAAOgD,KAAK,WAERhD,EAAOO,OAAOuY,MAChB9Y,EAAO8Y,OAIF9Y,CACT,CAEAuc,MAAAA,GACE,MAAMvc,EAASxU,KACXwU,EAAOyE,UACXzE,EAAOyE,SAAU,EAEbzE,EAAOO,OAAOmU,YAChB1U,EAAO2U,gBAGT3U,EAAOgD,KAAK,UACd,CAEAsZ,OAAAA,GACE,MAAMtc,EAASxU,KACVwU,EAAOyE,UACZzE,EAAOyE,SAAU,EAEbzE,EAAOO,OAAOmU,YAChB1U,EAAOyb,kBAGTzb,EAAOgD,KAAK,WACd,CAEAsd,WAAAA,CAAYrf,EAAUT,GACpB,MAAMR,EAASxU,KACfyV,EAAW1S,KAAKC,IAAID,KAAK2S,IAAID,EAAU,GAAI,GAC3C,MAAMzS,EAAMwR,EAAOgK,eAEblJ,GADMd,EAAOwK,eACIhc,GAAOyS,EAAWzS,EACzCwR,EAAOkb,YAAYpa,OAA0B,IAAVN,EAAwB,EAAIA,GAC/DR,EAAO4L,oBACP5L,EAAO8K,qBACT,CAEA8N,oBAAAA,GACE,MAAM5Y,EAASxU,KACf,IAAKwU,EAAOO,OAAOkZ,eAAiBzZ,EAAO7J,GAAI,OAC/C,MAAMoqB,EAAMvgB,EAAO7J,GAAGpK,UAAUqL,MAAM,KAAKd,QAAOvK,GACT,IAAhCA,EAAU4K,QAAQ,WAA+E,IAA5D5K,EAAU4K,QAAQqJ,EAAOO,OAAOmY,0BAE9E1Y,EAAOgD,KAAK,oBAAqBud,EAAI5H,KAAK,KAC5C,CAEA6H,eAAAA,CAAgBC,GACd,MAAMzgB,EAASxU,KACf,OAAOi1B,EAAQ10B,UAAUqL,MAAM,KAAKd,QAAOvK,GACI,IAAtCA,EAAU4K,QAAQ,iBAAyE,IAAhD5K,EAAU4K,QAAQqJ,EAAOO,OAAOqE,cACjF+T,KAAK,IACV,CAEAhN,iBAAAA,GACE,MAAM3L,EAASxU,KACf,IAAKwU,EAAOO,OAAOkZ,eAAiBzZ,EAAO7J,GAAI,OAC/C,MAAMuqB,EAAU,GAChB1gB,EAAO2E,OAAOlI,MAAKgkB,IACjB,MAAM5oB,EAAamI,EAAOwgB,gBAAgBC,GAC1CC,EAAQhxB,KAAK,CACX+wB,UACA5oB,eAEFmI,EAAOgD,KAAK,cAAeyd,EAAS5oB,EAAW,IAEjDmI,EAAOgD,KAAK,gBAAiB0d,EAC/B,CAEAhS,oBAAAA,CAAqBiS,EAAO,UAAWC,GAAQ,GAC7C,MACM,OACJrgB,EAAM,OACNoE,EAAM,WACNI,EAAU,gBACVC,EACApB,KAAMO,EAAU,YAChBmF,GAPa9d,KASf,IAAIq1B,EAAM,EAEV,GAAItgB,EAAOyF,eAAgB,CACzB,IACI8a,EADAza,EAAY1B,EAAO2E,GAAajC,gBAGpC,IAAK,IAAIxZ,EAAIyb,EAAc,EAAGzb,EAAI8W,EAAOhX,OAAQE,GAAK,EAChD8W,EAAO9W,KAAOizB,IAChBza,GAAa1B,EAAO9W,GAAGwZ,gBACvBwZ,GAAO,EACHxa,EAAYlC,IAAY2c,GAAY,IAI5C,IAAK,IAAIjzB,EAAIyb,EAAc,EAAGzb,GAAK,EAAGA,GAAK,EACrC8W,EAAO9W,KAAOizB,IAChBza,GAAa1B,EAAO9W,GAAGwZ,gBACvBwZ,GAAO,EACHxa,EAAYlC,IAAY2c,GAAY,GAG9C,MAEE,GAAa,YAATH,EACF,IAAK,IAAI9yB,EAAIyb,EAAc,EAAGzb,EAAI8W,EAAOhX,OAAQE,GAAK,GAChC+yB,EAAQ7b,EAAWlX,GAAKmX,EAAgBnX,GAAKkX,EAAWuE,GAAenF,EAAaY,EAAWlX,GAAKkX,EAAWuE,GAAenF,KAGhJ0c,GAAO,QAKX,IAAK,IAAIhzB,EAAIyb,EAAc,EAAGzb,GAAK,EAAGA,GAAK,EACrBkX,EAAWuE,GAAevE,EAAWlX,GAAKsW,IAG5D0c,GAAO,GAMf,OAAOA,CACT,CAEA5G,MAAAA,GACE,MAAMja,EAASxU,KACf,IAAKwU,GAAUA,EAAOmO,UAAW,OACjC,MAAM,SACJrJ,EAAQ,OACRvE,GACEP,EAWJ,SAAS2N,IACP,MAAMoT,EAAiB/gB,EAAOoE,cAAmC,EAApBpE,EAAOI,UAAiBJ,EAAOI,UACtEgb,EAAe7sB,KAAKC,IAAID,KAAK2S,IAAI6f,EAAgB/gB,EAAOwK,gBAAiBxK,EAAOgK,gBACtFhK,EAAO2N,aAAayN,GACpBpb,EAAO4L,oBACP5L,EAAO8K,qBACT,CAEA,IAAIkW,EAjBAzgB,EAAOkG,aACTzG,EAAOqW,gBAGTrW,EAAOiD,aACPjD,EAAO6D,eACP7D,EAAOqK,iBACPrK,EAAO8K,sBAYH9K,EAAOO,OAAO2U,UAAYlV,EAAOO,OAAO2U,SAASzQ,SACnDkJ,IAEI3N,EAAOO,OAAOsK,YAChB7K,EAAO+I,qBAIPiY,GADmC,SAAhChhB,EAAOO,OAAOiG,eAA4BxG,EAAOO,OAAOiG,cAAgB,IAAMxG,EAAO0K,QAAU1K,EAAOO,OAAOyF,eACnGhG,EAAO6M,QAAQ7M,EAAO2E,OAAOhX,OAAS,EAAG,GAAG,GAAO,GAEnDqS,EAAO6M,QAAQ7M,EAAOsJ,YAAa,GAAG,GAAO,GAGvD0X,GACHrT,KAIApN,EAAOoI,eAAiB7D,IAAa9E,EAAO8E,UAC9C9E,EAAO4I,gBAGT5I,EAAOgD,KAAK,SACd,CAEAoZ,eAAAA,CAAgB6E,EAAcC,GAAa,GACzC,MAAMlhB,EAASxU,KACT21B,EAAmBnhB,EAAOO,OAAOqM,UAOvC,OALKqU,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAG9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAI1EjhB,EAAOoD,IAAIlL,YAAY,GAAG8H,EAAOO,OAAOmY,yBAAyByI,KAAoBxpB,SAAS,GAAGqI,EAAOO,OAAOmY,yBAAyBuI,KACxIjhB,EAAO4Y,uBACP5Y,EAAOO,OAAOqM,UAAYqU,EAC1BjhB,EAAO2E,OAAOlI,MAAKgkB,IACI,aAAjBQ,EACFR,EAAQhyB,MAAMyU,MAAQ,GAEtBud,EAAQhyB,MAAM0U,OAAS,EACzB,IAEFnD,EAAOgD,KAAK,mBACRke,GAAYlhB,EAAOia,UAddja,CAgBX,CAEAohB,KAAAA,CAAMjrB,GACJ,MAAM6J,EAASxU,KACf,GAAIwU,EAAOqhB,QAAS,OAAO,EAE3B,MAAMje,EAAM7M,EAAEJ,GAAM6J,EAAOO,OAAOpK,IAGlC,KAFAA,EAAKiN,EAAI,IAGP,OAAO,EAGTjN,EAAG6J,OAASA,EAEZ,MAAMshB,EAAqBA,IAClB,KAAKthB,EAAOO,OAAOiZ,cAAgB,IAAI9iB,OAAOU,MAAM,KAAKuhB,KAAK,OAgBvE,IAAIzU,EAbeqd,MACjB,GAAIprB,GAAMA,EAAGmb,YAAcnb,EAAGmb,WAAWte,cAAe,CACtD,MAAMkD,EAAMK,EAAEJ,EAAGmb,WAAWte,cAAcsuB,MAI1C,OAFAprB,EAAI9C,SAAWouB,GAAWpe,EAAIhQ,SAASouB,GAEhCtrB,CACT,CAEA,OAAOkN,EAAIhQ,SAASkuB,IAAqB,EAI1BC,GAEjB,GAA0B,IAAtBrd,EAAWvW,QAAgBqS,EAAOO,OAAOyY,eAAgB,CAC3D,MACMyI,EADWvtB,IACQnH,cAAc,OACvCmX,EAAa3N,EAAEkrB,GACfA,EAAQ11B,UAAYiU,EAAOO,OAAOiZ,aAClCpW,EAAIhG,OAAOqkB,GACXre,EAAIhQ,SAAS,IAAI4M,EAAOO,OAAOqE,cAAcnI,MAAKgkB,IAChDvc,EAAW9G,OAAOqjB,EAAQ,GAE9B,CAaA,OAXAhvB,OAAOkS,OAAO3D,EAAQ,CACpBoD,MACAjN,KACA+N,aACAzD,UAAWyD,EAAW,GACtBmd,SAAS,EAEThd,IAA8B,QAAzBlO,EAAGyK,IAAIwe,eAAoD,QAAzBhc,EAAI7G,IAAI,aAC/C6H,aAA0C,eAA5BpE,EAAOO,OAAOqM,YAAwD,QAAzBzW,EAAGyK,IAAIwe,eAAoD,QAAzBhc,EAAI7G,IAAI,cACrG+H,SAAwC,gBAA9BJ,EAAW3H,IAAI,cAEpB,CACT,CAEAuc,IAAAA,CAAK3iB,GACH,MAAM6J,EAASxU,KACf,OAAIwU,EAAOmM,cAEK,IADAnM,EAAOohB,MAAMjrB,KAE7B6J,EAAOgD,KAAK,cAERhD,EAAOO,OAAOkG,aAChBzG,EAAOqW,gBAITrW,EAAOmY,aAEHnY,EAAOO,OAAOgL,MAChBvL,EAAO4P,aAIT5P,EAAOiD,aAEPjD,EAAO6D,eAEH7D,EAAOO,OAAOoI,eAChB3I,EAAO4I,gBAIL5I,EAAOO,OAAOmU,YAAc1U,EAAOyE,SACrCzE,EAAO2U,gBAGL3U,EAAOO,OAAO+Y,eAChBtZ,EAAOsZ,gBAILtZ,EAAOO,OAAOgL,KAChBvL,EAAO6M,QAAQ7M,EAAOO,OAAO8M,aAAerN,EAAOsO,aAAc,EAAGtO,EAAOO,OAAO6L,oBAAoB,GAAO,GAE7GpM,EAAO6M,QAAQ7M,EAAOO,OAAO8M,aAAc,EAAGrN,EAAOO,OAAO6L,oBAAoB,GAAO,GAIzFpM,EAAO+X,eAEP/X,EAAOmM,aAAc,EAErBnM,EAAOgD,KAAK,QACZhD,EAAOgD,KAAK,cA/CmBhD,CAiDjC,CAEA0hB,OAAAA,CAAQC,GAAiB,EAAMC,GAAc,GAC3C,MAAM5hB,EAASxU,MACT,OACJ+U,EAAM,IACN6C,EAAG,WACHc,EAAU,OACVS,GACE3E,EAEJ,YAA6B,IAAlBA,EAAOO,QAA0BP,EAAOmO,YAInDnO,EAAOgD,KAAK,iBAEZhD,EAAOmM,aAAc,EAErBnM,EAAOiY,eAEH1X,EAAOgL,MACTvL,EAAOwQ,cAILoR,IACF5hB,EAAO6Y,gBACPzV,EAAIvK,WAAW,SACfqL,EAAWrL,WAAW,SAElB8L,GAAUA,EAAOhX,QACnBgX,EAAOzM,YAAY,CAACqI,EAAOqJ,kBAAmBrJ,EAAO0K,iBAAkB1K,EAAO2K,eAAgB3K,EAAO4K,gBAAgBwN,KAAK,MAAM9f,WAAW,SAASA,WAAW,4BAInKmH,EAAOgD,KAAK,WAEZvR,OAAOiB,KAAKsN,EAAOwC,iBAAiB7P,SAAQotB,IAC1C/f,EAAO1F,IAAIylB,EAAU,KAGA,IAAnB4B,IACF3hB,EAAOoD,IAAI,GAAGpD,OAAS,K1ChjB7B,SAAqBnO,GACnB,MAAMgwB,EAAShwB,EACfJ,OAAOiB,KAAKmvB,GAAQlvB,SAAQpB,IAC1B,IACEswB,EAAOtwB,GAAO,IAChB,CAAE,MAAOgI,GAAI,CAGb,WACSsoB,EAAOtwB,EAChB,CAAE,MAAOgI,GAAI,IAGjB,C0CoiBMuoB,CAAY9hB,IAGdA,EAAOmO,WAAY,GAnCV,IAqCX,CAEA,qBAAO4T,CAAeC,GACpBzvB,EAAO2rB,EAAkB8D,EAC3B,CAEA,2BAAW9D,GACT,OAAOA,CACT,CAEA,mBAAW2B,GACT,OAAOA,CACT,CAEA,oBAAOoC,CAAcvC,GACdvB,EAAOzxB,UAAU+yB,cAAatB,EAAOzxB,UAAU+yB,YAAc,IAClE,MAAMD,EAAUrB,EAAOzxB,UAAU+yB,YAEd,mBAARC,GAAsBF,EAAQ7oB,QAAQ+oB,GAAO,GACtDF,EAAQ9vB,KAAKgwB,EAEjB,CAEA,UAAOwC,CAAI1xB,GACT,OAAIgF,MAAMY,QAAQ5F,IAChBA,EAAOmC,SAAQwvB,GAAKhE,EAAO8D,cAAcE,KAClChE,IAGTA,EAAO8D,cAAczxB,GACd2tB,EACT,EAIF1sB,OAAOiB,KAAKqnB,GAAYpnB,SAAQyvB,IAC9B3wB,OAAOiB,KAAKqnB,EAAWqI,IAAiBzvB,SAAQ0vB,IAC9ClE,EAAOzxB,UAAU21B,GAAetI,EAAWqI,GAAgBC,EAAY,GACvE,IAEJlE,EAAO+D,IAAI,CmB/lBI,UAAgB,OAC7BliB,EAAM,GACNvI,EAAE,KACFuL,IAEA,MAAM1N,EAASF,IACf,IAAIktB,EAAW,KAEf,MAAMC,EAAgBA,KACfviB,IAAUA,EAAOmO,WAAcnO,EAAOmM,cAC3CnJ,EAAK,gBACLA,EAAK,UAAS,EAoCVwf,EAA2BA,KAC1BxiB,IAAUA,EAAOmO,WAAcnO,EAAOmM,aAC3CnJ,EAAK,oBAAoB,EAG3BvL,EAAG,QAAQ,KACLuI,EAAOO,OAAOwY,qBAAmD,IAA1BzjB,EAAOmtB,eAtC7CziB,IAAUA,EAAOmO,WAAcnO,EAAOmM,cAC3CmW,EAAW,IAAIG,gBAAepK,IAC5B,MAAM,MACJnV,EAAK,OACLC,GACEnD,EACJ,IAAI0iB,EAAWxf,EACX+F,EAAY9F,EAChBkV,EAAQ1lB,SAAQ,EACdgwB,iBACAC,cACApwB,aAEIA,GAAUA,IAAWwN,EAAO7J,KAChCusB,EAAWE,EAAcA,EAAY1f,OAASyf,EAAe,IAAMA,GAAgBE,WACnF5Z,EAAY2Z,EAAcA,EAAYzf,QAAUwf,EAAe,IAAMA,GAAgBG,UAAS,IAG5FJ,IAAaxf,GAAS+F,IAAc9F,GACtCof,GACF,IAEFD,EAASS,QAAQ/iB,EAAO7J,MAqBxBb,EAAOhG,iBAAiB,SAAUizB,GAClCjtB,EAAOhG,iBAAiB,oBAAqBkzB,GAAyB,IAExE/qB,EAAG,WAAW,KApBR6qB,GAAYA,EAASU,WAAahjB,EAAO7J,KAC3CmsB,EAASU,UAAUhjB,EAAO7J,IAC1BmsB,EAAW,MAoBbhtB,EAAOvG,oBAAoB,SAAUwzB,GACrCjtB,EAAOvG,oBAAoB,oBAAqByzB,EAAyB,GAE7E,EClEe,UAAkB,OAC/BxiB,EAAM,aACN2f,EAAY,GACZloB,EAAE,KACFuL,IAEA,MAAMigB,EAAY,GACZ3tB,EAASF,IAET8tB,EAASA,CAAC1wB,EAAQgvB,EAAU,CAAC,KACjC,MACMc,EAAW,IADIhtB,EAAO6tB,kBAAoB7tB,EAAO8tB,yBACrBC,IAIhC,GAAyB,IAArBA,EAAU11B,OAEZ,YADAqV,EAAK,iBAAkBqgB,EAAU,IAInC,MAAMC,EAAiB,WACrBtgB,EAAK,iBAAkBqgB,EAAU,GACnC,EAEI/tB,EAAOL,sBACTK,EAAOL,sBAAsBquB,GAE7BhuB,EAAO9F,WAAW8zB,EAAgB,EACpC,IAEFhB,EAASS,QAAQvwB,EAAQ,CACvB+wB,gBAA0C,IAAvB/B,EAAQ+B,YAAoC/B,EAAQ+B,WACvEC,eAAwC,IAAtBhC,EAAQgC,WAAmChC,EAAQgC,UACrEC,mBAAgD,IAA1BjC,EAAQiC,eAAuCjC,EAAQiC,gBAE/ER,EAAUvzB,KAAK4yB,EAAS,EA+B1B3C,EAAa,CACX2C,UAAU,EACVoB,gBAAgB,EAChBC,sBAAsB,IAExBlsB,EAAG,QAjCUqhB,KACX,GAAK9Y,EAAOO,OAAO+hB,SAAnB,CAEA,GAAItiB,EAAOO,OAAOmjB,eAAgB,CAChC,MAAME,EAAmB5jB,EAAOoD,IAAIvJ,UAEpC,IAAK,IAAIhM,EAAI,EAAGA,EAAI+1B,EAAiBj2B,OAAQE,GAAK,EAChDq1B,EAAOU,EAAiB/1B,GAE5B,CAGAq1B,EAAOljB,EAAOoD,IAAI,GAAI,CACpBogB,UAAWxjB,EAAOO,OAAOojB,uBAG3BT,EAAOljB,EAAOkE,WAAW,GAAI,CAC3Bqf,YAAY,GAhBqB,CAiBjC,IAgBJ9rB,EAAG,WAbaiqB,KACduB,EAAUtwB,SAAQ2vB,IAChBA,EAASuB,YAAY,IAEvBZ,EAAUvoB,OAAO,EAAGuoB,EAAUt1B,OAAO,GAUzC,IpBuhBA,QqBhmBe,SAASm2B,EAA0B9jB,EAAQ8b,EAAgBvb,EAAQwjB,GAChF,MAAMj3B,EAAWoH,IAmBjB,OAjBI8L,EAAOO,OAAOyY,gBAChBvnB,OAAOiB,KAAKqxB,GAAYpxB,SAAQpB,IAC9B,IAAKgP,EAAOhP,KAAwB,IAAhBgP,EAAOuZ,KAAe,CACxC,IAAIluB,EAAUoU,EAAOoD,IAAIhQ,SAAS,IAAI2wB,EAAWxyB,MAAQ,GAEpD3F,IACHA,EAAUkB,EAASC,cAAc,OACjCnB,EAAQG,UAAYg4B,EAAWxyB,GAC/ByO,EAAOoD,IAAIhG,OAAOxR,IAGpB2U,EAAOhP,GAAO3F,EACdkwB,EAAevqB,GAAO3F,CACxB,KAIG2U,CACT,CCpBe,SAASyjB,GAAW,OACjChkB,EAAM,aACN2f,EAAY,GACZloB,EAAE,KACFuL,IAmBA,SAASihB,EAAM9tB,GACb,IAAIiN,EAUJ,OARIjN,IACFiN,EAAM7M,EAAEJ,GAEJ6J,EAAOO,OAAO8Y,mBAAmC,iBAAPljB,GAAmBiN,EAAIzV,OAAS,GAAoC,IAA/BqS,EAAOoD,IAAI/E,KAAKlI,GAAIxI,SACrGyV,EAAMpD,EAAOoD,IAAI/E,KAAKlI,KAInBiN,CACT,CAEA,SAAS8gB,EAAS9gB,EAAK+gB,GACrB,MAAM5jB,EAASP,EAAOO,OAAO0V,WAEzB7S,GAAOA,EAAIzV,OAAS,IACtByV,EAAI+gB,EAAW,WAAa,eAAe5jB,EAAO6jB,eAC9ChhB,EAAI,IAAyB,WAAnBA,EAAI,GAAGihB,UAAsBjhB,EAAI,GAAG+gB,SAAWA,GAEzDnkB,EAAOO,OAAOoI,eAAiB3I,EAAOyE,SACxCrB,EAAIpD,EAAOub,SAAW,WAAa,eAAehb,EAAO+jB,WAG/D,CAEA,SAASrK,IAEP,GAAIja,EAAOO,OAAOgL,KAAM,OACxB,MAAM,QACJgZ,EAAO,QACPC,GACExkB,EAAOiW,WACXiO,EAASM,EAASxkB,EAAOyK,cAAgBzK,EAAOO,OAAOwO,QACvDmV,EAASK,EAASvkB,EAAO0K,QAAU1K,EAAOO,OAAOwO,OACnD,CAEA,SAAS0V,EAAYlrB,GACnBA,EAAEuZ,mBACE9S,EAAOyK,aAAgBzK,EAAOO,OAAOgL,MAASvL,EAAOO,OAAOwO,SAChE/O,EAAOgP,WACT,CAEA,SAAS0V,EAAYnrB,GACnBA,EAAEuZ,mBACE9S,EAAO0K,OAAU1K,EAAOO,OAAOgL,MAASvL,EAAOO,OAAOwO,SAC1D/O,EAAOuO,WACT,CAEA,SAASuK,IACP,MAAMvY,EAASP,EAAOO,OAAO0V,WAK7B,GAJAjW,EAAOO,OAAO0V,WAAa6N,EAA0B9jB,EAAQA,EAAO8b,eAAe7F,WAAYjW,EAAOO,OAAO0V,WAAY,CACvHC,OAAQ,qBACRC,OAAQ,wBAEJ5V,EAAO2V,SAAU3V,EAAO4V,OAAS,OACvC,MAAMoO,EAAUN,EAAM1jB,EAAO2V,QACvBsO,EAAUP,EAAM1jB,EAAO4V,QAEzBoO,GAAWA,EAAQ52B,OAAS,GAC9B42B,EAAQ9sB,GAAG,QAASitB,GAGlBF,GAAWA,EAAQ72B,OAAS,GAC9B62B,EAAQ/sB,GAAG,QAASgtB,GAGtBhzB,OAAOkS,OAAO3D,EAAOiW,WAAY,CAC/BsO,UACArO,OAAQqO,GAAWA,EAAQ,GAC3BC,UACArO,OAAQqO,GAAWA,EAAQ,KAGxBxkB,EAAOyE,UACN8f,GAASA,EAAQ5sB,SAAS4I,EAAO+jB,WACjCE,GAASA,EAAQ7sB,SAAS4I,EAAO+jB,WAEzC,CAEA,SAAS5C,IACP,MAAM,QACJ6C,EAAO,QACPC,GACExkB,EAAOiW,WAEPsO,GAAWA,EAAQ52B,SACrB42B,EAAQjqB,IAAI,QAASoqB,GACrBH,EAAQrsB,YAAY8H,EAAOO,OAAO0V,WAAWmO,gBAG3CI,GAAWA,EAAQ72B,SACrB62B,EAAQlqB,IAAI,QAASmqB,GACrBD,EAAQtsB,YAAY8H,EAAOO,OAAO0V,WAAWmO,eAEjD,CAjHAzE,EAAa,CACX1J,WAAY,CACVC,OAAQ,KACRC,OAAQ,KACRwO,aAAa,EACbP,cAAe,yBACfQ,YAAa,uBACbN,UAAW,wBAGftkB,EAAOiW,WAAa,CAClBC,OAAQ,KACRqO,QAAS,KACTpO,OAAQ,KACRqO,QAAS,MAqGX/sB,EAAG,QAAQ,KACTqhB,IACAmB,GAAQ,IAEVxiB,EAAG,+BAA+B,KAChCwiB,GAAQ,IAEVxiB,EAAG,WAAW,KACZiqB,GAAS,IAEXjqB,EAAG,kBAAkB,KACnB,MAAM,QACJ8sB,EAAO,QACPC,GACExkB,EAAOiW,WAEPsO,GACFA,EAAQvkB,EAAOyE,QAAU,cAAgB,YAAYzE,EAAOO,OAAO0V,WAAWqO,WAG5EE,GACFA,EAAQxkB,EAAOyE,QAAU,cAAgB,YAAYzE,EAAOO,OAAO0V,WAAWqO,UAChF,IAEF7sB,EAAG,SAAS,CAACotB,EAAItrB,KACf,MAAM,QACJgrB,EAAO,QACPC,GACExkB,EAAOiW,WACL6O,EAAWvrB,EAAE/G,OAEnB,GAAIwN,EAAOO,OAAO0V,WAAW0O,cAAgBpuB,EAAEuuB,GAAUnrB,GAAG6qB,KAAajuB,EAAEuuB,GAAUnrB,GAAG4qB,GAAU,CAChG,GAAIvkB,EAAO+kB,YAAc/kB,EAAOO,OAAOwkB,YAAc/kB,EAAOO,OAAOwkB,WAAWC,YAAchlB,EAAO+kB,WAAW5uB,KAAO2uB,GAAY9kB,EAAO+kB,WAAW5uB,GAAGkC,SAASysB,IAAY,OAC3K,IAAIG,EAEAV,EACFU,EAAWV,EAAQnsB,SAAS4H,EAAOO,OAAO0V,WAAW2O,aAC5CJ,IACTS,EAAWT,EAAQpsB,SAAS4H,EAAOO,OAAO0V,WAAW2O,cAIrD5hB,GADe,IAAbiiB,EACG,iBAEA,kBAGHV,GACFA,EAAQjsB,YAAY0H,EAAOO,OAAO0V,WAAW2O,aAG3CJ,GACFA,EAAQlsB,YAAY0H,EAAOO,OAAO0V,WAAW2O,YAEjD,KAEFnzB,OAAOkS,OAAO3D,EAAOiW,WAAY,CAC/BgE,SACAnB,OACA4I,WAEJ,CCxLe,SAASwD,EAAkBttB,EAAU,IAClD,MAAO,IAAIA,EAAQlB,OAAOgP,QAAQ,cAAe,QAChDA,QAAQ,KAAM,MACjB,CCAe,SAASyf,GAAW,OACjCnlB,EAAM,aACN2f,EAAY,GACZloB,EAAE,KACFuL,IAEA,MAAMoiB,EAAM,oBAqCZ,IAAIC,EApCJ1F,EAAa,CACXoF,WAAY,CACV5uB,GAAI,KACJmvB,cAAe,OACfN,WAAW,EACXL,aAAa,EACbY,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrB3U,KAAM,UAEN4U,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAuBC,GAAUA,EACjCC,oBAAqBD,GAAUA,EAC/BE,YAAa,GAAGb,WAChBc,kBAAmB,GAAGd,kBACtBe,cAAe,GAAGf,KAClBgB,aAAc,GAAGhB,YACjBiB,WAAY,GAAGjB,UACfR,YAAa,GAAGQ,WAChBkB,qBAAsB,GAAGlB,qBACzBmB,yBAA0B,GAAGnB,yBAC7BoB,eAAgB,GAAGpB,cACnBd,UAAW,GAAGc,SACdqB,gBAAiB,GAAGrB,eACpBsB,cAAe,GAAGtB,gBAGtBplB,EAAO+kB,WAAa,CAClB5uB,GAAI,KACJiN,IAAK,KACLujB,QAAS,IAGX,IAAIC,EAAqB,EAEzB,SAASC,IACP,OAAQ7mB,EAAOO,OAAOwkB,WAAW5uB,KAAO6J,EAAO+kB,WAAW5uB,KAAO6J,EAAO+kB,WAAW3hB,KAAwC,IAAjCpD,EAAO+kB,WAAW3hB,IAAIzV,MAClH,CAEA,SAASm5B,EAAeC,EAAWC,GACjC,MAAM,kBACJd,GACElmB,EAAOO,OAAOwkB,WAClBgC,EAAUC,KAAYrvB,SAAS,GAAGuuB,KAAqBc,KAAYA,KAAYrvB,SAAS,GAAGuuB,KAAqBc,KAAYA,IAC9H,CAEA,SAAS/M,IAEP,MAAM5V,EAAMrE,EAAOqE,IACb9D,EAASP,EAAOO,OAAOwkB,WAC7B,GAAI8B,IAAwB,OAC5B,MAAMhiB,EAAe7E,EAAOwE,SAAWxE,EAAOO,OAAOiE,QAAQC,QAAUzE,EAAOwE,QAAQG,OAAOhX,OAASqS,EAAO2E,OAAOhX,OAC9GyV,EAAMpD,EAAO+kB,WAAW3hB,IAE9B,IAAItC,EACJ,MAAMmmB,EAAQjnB,EAAOO,OAAOgL,KAAOhd,KAAK8a,MAAMxE,EAAqC,EAAtB7E,EAAOsO,cAAoBtO,EAAOO,OAAOgH,gBAAkBvH,EAAO8E,SAASnX,OAkBxI,GAhBIqS,EAAOO,OAAOgL,MAChBzK,EAAUvS,KAAK8a,MAAMrJ,EAAOsJ,YAActJ,EAAOsO,cAAgBtO,EAAOO,OAAOgH,gBAE3EzG,EAAU+D,EAAe,EAA0B,EAAtB7E,EAAOsO,eACtCxN,GAAW+D,EAAqC,EAAtB7E,EAAOsO,cAG/BxN,EAAUmmB,EAAQ,IAAGnmB,GAAWmmB,GAChCnmB,EAAU,GAAsC,YAAjCd,EAAOO,OAAO2mB,iBAA8BpmB,EAAUmmB,EAAQnmB,IAEjFA,OADqC,IAArBd,EAAOuI,UACbvI,EAAOuI,UAEPvI,EAAOsJ,aAAe,EAId,YAAhB/I,EAAOyQ,MAAsBhR,EAAO+kB,WAAW4B,SAAW3mB,EAAO+kB,WAAW4B,QAAQh5B,OAAS,EAAG,CAClG,MAAMg5B,EAAU3mB,EAAO+kB,WAAW4B,QAClC,IAAIQ,EACAC,EACAC,EAuBJ,GArBI9mB,EAAOqlB,iBACTP,EAAasB,EAAQzpB,GAAG,GAAG8C,EAAOuD,eAAiB,aAAe,gBAAe,GACjFH,EAAI7G,IAAIyD,EAAOuD,eAAiB,QAAU,SAAa8hB,GAAc9kB,EAAOslB,mBAAqB,GAA7C,MAEhDtlB,EAAOslB,mBAAqB,QAA8Bh2B,IAAzBmQ,EAAO8L,gBAC1C8a,GAAsB9lB,GAAWd,EAAO8L,cAAgB9L,EAAOsO,cAAgB,GAE3EsY,EAAqBrmB,EAAOslB,mBAAqB,EACnDe,EAAqBrmB,EAAOslB,mBAAqB,EACxCe,EAAqB,IAC9BA,EAAqB,IAIzBO,EAAa54B,KAAK2S,IAAIJ,EAAU8lB,EAAoB,GACpDQ,EAAYD,GAAc54B,KAAKC,IAAIm4B,EAAQh5B,OAAQ4S,EAAOslB,oBAAsB,GAChFwB,GAAYD,EAAYD,GAAc,GAGxCR,EAAQzuB,YAAY,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAASJ,KAAIwvB,GAAU,GAAG/mB,EAAO2lB,oBAAoBoB,MAAU3O,KAAK,MAEvIvV,EAAIzV,OAAS,EACfg5B,EAAQlqB,MAAK8qB,IACX,MAAMC,EAAUjxB,EAAEgxB,GACZE,EAAcD,EAAQ9qB,QAExB+qB,IAAgB3mB,GAClB0mB,EAAQ7vB,SAAS4I,EAAO2lB,mBAGtB3lB,EAAOqlB,iBACL6B,GAAeN,GAAcM,GAAeL,GAC9CI,EAAQ7vB,SAAS,GAAG4I,EAAO2lB,0BAGzBuB,IAAgBN,GAClBL,EAAeU,EAAS,QAGtBC,IAAgBL,GAClBN,EAAeU,EAAS,QAE5B,QAEG,CACL,MAAMA,EAAUb,EAAQzpB,GAAG4D,GACrB2mB,EAAcD,EAAQ9qB,QAG5B,GAFA8qB,EAAQ7vB,SAAS4I,EAAO2lB,mBAEpB3lB,EAAOqlB,eAAgB,CACzB,MAAM8B,EAAwBf,EAAQzpB,GAAGiqB,GACnCQ,EAAuBhB,EAAQzpB,GAAGkqB,GAExC,IAAK,IAAIv5B,EAAIs5B,EAAYt5B,GAAKu5B,EAAWv5B,GAAK,EAC5C84B,EAAQzpB,GAAGrP,GAAG8J,SAAS,GAAG4I,EAAO2lB,0BAGnC,GAAIlmB,EAAOO,OAAOgL,KAChB,GAAIkc,GAAed,EAAQh5B,OAAQ,CACjC,IAAK,IAAIE,EAAI0S,EAAOslB,mBAAoBh4B,GAAK,EAAGA,GAAK,EACnD84B,EAAQzpB,GAAGypB,EAAQh5B,OAASE,GAAG8J,SAAS,GAAG4I,EAAO2lB,0BAGpDS,EAAQzpB,GAAGypB,EAAQh5B,OAAS4S,EAAOslB,mBAAqB,GAAGluB,SAAS,GAAG4I,EAAO2lB,yBAChF,MACEY,EAAeY,EAAuB,QACtCZ,EAAea,EAAsB,aAGvCb,EAAeY,EAAuB,QACtCZ,EAAea,EAAsB,OAEzC,CACF,CAEA,GAAIpnB,EAAOqlB,eAAgB,CACzB,MAAMgC,EAAuBr5B,KAAKC,IAAIm4B,EAAQh5B,OAAQ4S,EAAOslB,mBAAqB,GAC5EgC,GAAiBxC,EAAauC,EAAuBvC,GAAc,EAAIgC,EAAWhC,EAClFyC,EAAazjB,EAAM,QAAU,OACnCsiB,EAAQpqB,IAAIyD,EAAOuD,eAAiBukB,EAAa,MAAO,GAAGD,MAC7D,CACF,CAOA,GALoB,aAAhBtnB,EAAOyQ,OACT5N,EAAI/E,KAAK6mB,EAAkB3kB,EAAO6lB,eAAen5B,KAAKsT,EAAOulB,sBAAsBhlB,EAAU,IAC7FsC,EAAI/E,KAAK6mB,EAAkB3kB,EAAO8lB,aAAap5B,KAAKsT,EAAOylB,oBAAoBiB,KAG7D,gBAAhB1mB,EAAOyQ,KAAwB,CACjC,IAAI+W,EAGFA,EADExnB,EAAOolB,oBACc3lB,EAAOuD,eAAiB,WAAa,aAErCvD,EAAOuD,eAAiB,aAAe,WAGhE,MAAMykB,GAASlnB,EAAU,GAAKmmB,EAC9B,IAAIgB,EAAS,EACTC,EAAS,EAEgB,eAAzBH,EACFE,EAASD,EAETE,EAASF,EAGX5kB,EAAI/E,KAAK6mB,EAAkB3kB,EAAO+lB,uBAAuBvtB,UAAU,6BAA6BkvB,aAAkBC,MAAWlvB,WAAWgH,EAAOO,OAAOC,MACxJ,CAEoB,WAAhBD,EAAOyQ,MAAqBzQ,EAAOmlB,cACrCtiB,EAAI3M,KAAK8J,EAAOmlB,aAAa1lB,EAAQc,EAAU,EAAGmmB,IAClDjkB,EAAK,mBAAoBI,EAAI,KAE7BJ,EAAK,mBAAoBI,EAAI,IAG3BpD,EAAOO,OAAOoI,eAAiB3I,EAAOyE,SACxCrB,EAAIpD,EAAOub,SAAW,WAAa,eAAehb,EAAO+jB,UAE7D,CAEA,SAAS6D,IAEP,MAAM5nB,EAASP,EAAOO,OAAOwkB,WAC7B,GAAI8B,IAAwB,OAC5B,MAAMhiB,EAAe7E,EAAOwE,SAAWxE,EAAOO,OAAOiE,QAAQC,QAAUzE,EAAOwE,QAAQG,OAAOhX,OAASqS,EAAO2E,OAAOhX,OAC9GyV,EAAMpD,EAAO+kB,WAAW3hB,IAC9B,IAAIglB,EAAiB,GAErB,GAAoB,YAAhB7nB,EAAOyQ,KAAoB,CAC7B,IAAIqX,EAAkBroB,EAAOO,OAAOgL,KAAOhd,KAAK8a,MAAMxE,EAAqC,EAAtB7E,EAAOsO,cAAoBtO,EAAOO,OAAOgH,gBAAkBvH,EAAO8E,SAASnX,OAE5IqS,EAAOO,OAAO2U,UAAYlV,EAAOO,OAAO2U,SAASzQ,UAAYzE,EAAOO,OAAOgL,MAAQ8c,EAAkBxjB,IACvGwjB,EAAkBxjB,GAGpB,IAAK,IAAIhX,EAAI,EAAGA,EAAIw6B,EAAiBx6B,GAAK,EACpC0S,EAAOglB,aACT6C,GAAkB7nB,EAAOglB,aAAa50B,KAAKqP,EAAQnS,EAAG0S,EAAO0lB,aAE7DmC,GAAkB,IAAI7nB,EAAO+kB,wBAAwB/kB,EAAO0lB,kBAAkB1lB,EAAO+kB,iBAIzFliB,EAAI3M,KAAK2xB,GACTpoB,EAAO+kB,WAAW4B,QAAUvjB,EAAI/E,KAAK6mB,EAAkB3kB,EAAO0lB,aAChE,CAEoB,aAAhB1lB,EAAOyQ,OAEPoX,EADE7nB,EAAOklB,eACQllB,EAAOklB,eAAe90B,KAAKqP,EAAQO,EAAO6lB,aAAc7lB,EAAO8lB,YAE/D,gBAAgB9lB,EAAO6lB,wCAAkD7lB,EAAO8lB,sBAGnGjjB,EAAI3M,KAAK2xB,IAGS,gBAAhB7nB,EAAOyQ,OAEPoX,EADE7nB,EAAOilB,kBACQjlB,EAAOilB,kBAAkB70B,KAAKqP,EAAQO,EAAO+lB,sBAE7C,gBAAgB/lB,EAAO+lB,gCAG1CljB,EAAI3M,KAAK2xB,IAGS,WAAhB7nB,EAAOyQ,MACThO,EAAK,mBAAoBhD,EAAO+kB,WAAW3hB,IAAI,GAEnD,CAEA,SAAS0V,IACP9Y,EAAOO,OAAOwkB,WAAajB,EAA0B9jB,EAAQA,EAAO8b,eAAeiJ,WAAY/kB,EAAOO,OAAOwkB,WAAY,CACvH5uB,GAAI,sBAEN,MAAMoK,EAASP,EAAOO,OAAOwkB,WAC7B,IAAKxkB,EAAOpK,GAAI,OAChB,IAAIiN,EAAM7M,EAAEgK,EAAOpK,IACA,IAAfiN,EAAIzV,SAEJqS,EAAOO,OAAO8Y,mBAA0C,iBAAd9Y,EAAOpK,IAAmBiN,EAAIzV,OAAS,IACnFyV,EAAMpD,EAAOoD,IAAI/E,KAAKkC,EAAOpK,IAEzBiN,EAAIzV,OAAS,IACfyV,EAAMA,EAAI9M,QAAOH,GACXI,EAAEJ,GAAI0D,QAAQ,WAAW,KAAOmG,EAAO7J,OAM7B,YAAhBoK,EAAOyQ,MAAsBzQ,EAAOykB,WACtC5hB,EAAIzL,SAAS4I,EAAOimB,gBAGtBpjB,EAAIzL,SAAS4I,EAAO4lB,cAAgB5lB,EAAOyQ,MAC3C5N,EAAIzL,SAAS4I,EAAO4lB,cAAgBnmB,EAAOO,OAAOqM,WAE9B,YAAhBrM,EAAOyQ,MAAsBzQ,EAAOqlB,iBACtCxiB,EAAIzL,SAAS,GAAG4I,EAAO4lB,gBAAgB5lB,EAAOyQ,gBAC9C4V,EAAqB,EAEjBrmB,EAAOslB,mBAAqB,IAC9BtlB,EAAOslB,mBAAqB,IAIZ,gBAAhBtlB,EAAOyQ,MAA0BzQ,EAAOolB,qBAC1CviB,EAAIzL,SAAS4I,EAAOgmB,0BAGlBhmB,EAAOykB,WACT5hB,EAAI3L,GAAG,QAASytB,EAAkB3kB,EAAO0lB,cAAc,SAAiB1sB,GACtEA,EAAEuZ,iBACF,IAAIpW,EAAQnG,EAAE/K,MAAMkR,QAAUsD,EAAOO,OAAOgH,eACxCvH,EAAOO,OAAOgL,OAAM7O,GAASsD,EAAOsO,cACxCtO,EAAO6M,QAAQnQ,EACjB,IAGFjL,OAAOkS,OAAO3D,EAAO+kB,WAAY,CAC/B3hB,MACAjN,GAAIiN,EAAI,KAGLpD,EAAOyE,SACVrB,EAAIzL,SAAS4I,EAAO+jB,WAExB,CAEA,SAAS5C,IACP,MAAMnhB,EAASP,EAAOO,OAAOwkB,WAC7B,GAAI8B,IAAwB,OAC5B,MAAMzjB,EAAMpD,EAAO+kB,WAAW3hB,IAC9BA,EAAIlL,YAAYqI,EAAOqkB,aACvBxhB,EAAIlL,YAAYqI,EAAO4lB,cAAgB5lB,EAAOyQ,MAC9C5N,EAAIlL,YAAYqI,EAAO4lB,cAAgBnmB,EAAOO,OAAOqM,WACjD5M,EAAO+kB,WAAW4B,SAAW3mB,EAAO+kB,WAAW4B,QAAQzuB,aAAa8H,EAAO+kB,WAAW4B,QAAQzuB,YAAYqI,EAAO2lB,mBAEjH3lB,EAAOykB,WACT5hB,EAAI9I,IAAI,QAAS4qB,EAAkB3kB,EAAO0lB,aAE9C,CAEAxuB,EAAG,QAAQ,KACTqhB,IACAqP,IACAlO,GAAQ,IAEVxiB,EAAG,qBAAqB,MAClBuI,EAAOO,OAAOgL,WAEqB,IAArBvL,EAAOuI,YADvB0R,GAGF,IAEFxiB,EAAG,mBAAmB,KACfuI,EAAOO,OAAOgL,MACjB0O,GACF,IAEFxiB,EAAG,sBAAsB,KACnBuI,EAAOO,OAAOgL,OAChB4c,IACAlO,IACF,IAEFxiB,EAAG,wBAAwB,KACpBuI,EAAOO,OAAOgL,OACjB4c,IACAlO,IACF,IAEFxiB,EAAG,WAAW,KACZiqB,GAAS,IAEXjqB,EAAG,kBAAkB,KACnB,MAAM,IACJ2L,GACEpD,EAAO+kB,WAEP3hB,GACFA,EAAIpD,EAAOyE,QAAU,cAAgB,YAAYzE,EAAOO,OAAOwkB,WAAWT,UAC5E,IAEF7sB,EAAG,eAAe,KAChBwiB,GAAQ,IAEVxiB,EAAG,SAAS,CAACotB,EAAItrB,KACf,MAAMurB,EAAWvrB,EAAE/G,QACb,IACJ4Q,GACEpD,EAAO+kB,WAEX,GAAI/kB,EAAOO,OAAOwkB,WAAW5uB,IAAM6J,EAAOO,OAAOwkB,WAAWJ,aAAevhB,EAAIzV,OAAS,IAAM4I,EAAEuuB,GAAU1sB,SAAS4H,EAAOO,OAAOwkB,WAAWkB,aAAc,CACxJ,GAAIjmB,EAAOiW,aAAejW,EAAOiW,WAAWC,QAAU4O,IAAa9kB,EAAOiW,WAAWC,QAAUlW,EAAOiW,WAAWE,QAAU2O,IAAa9kB,EAAOiW,WAAWE,QAAS,OACnK,MAAM8O,EAAW7hB,EAAIhL,SAAS4H,EAAOO,OAAOwkB,WAAWH,aAGrD5hB,GADe,IAAbiiB,EACG,iBAEA,kBAGP7hB,EAAI9K,YAAY0H,EAAOO,OAAOwkB,WAAWH,YAC3C,KAEFnzB,OAAOkS,OAAO3D,EAAO+kB,WAAY,CAC/BoD,SACAlO,SACAnB,OACA4I,WAEJ,CCvZe,SAAS4G,IAAK,OAC3BtoB,EAAM,aACN2f,EAAY,GACZloB,EAAE,KACFuL,IAEA2c,EAAa,CACX4I,KAAM,CACJC,aAAa,EACb/jB,SAAS,EACTgkB,cAAc,EACdC,mBAAoB,EACpBC,uBAAuB,EACvBC,iBAAkB,GAClBC,aAAc,cACdC,aAAc,sBACdC,YAAa,qBACbC,eAAgB,2BAGpBhpB,EAAOuoB,KAAO,CAAC,EACf,IAAIU,GAAwB,EACxBC,GAAqB,EAEzB,SAASC,EAAYzsB,EAAO0sB,GAAkB,GAC5C,MAAM7oB,EAASP,EAAOO,OAAOgoB,KAC7B,QAAqB,IAAV7rB,EAAuB,OAClC,GAA6B,IAAzBsD,EAAO2E,OAAOhX,OAAc,OAChC,MACM07B,EADYrpB,EAAOwE,SAAWxE,EAAOO,OAAOiE,QAAQC,QAC7BzE,EAAOkE,WAAW9Q,SAAS,IAAI4M,EAAOO,OAAOqE,uCAAuClI,OAAasD,EAAO2E,OAAOzH,GAAGR,GACzI4sB,EAAUD,EAAShrB,KAAK,IAAIkC,EAAOsoB,qBAAqBtoB,EAAOwoB,qBAAqBxoB,EAAOuoB,kBAE7FO,EAASjxB,SAASmI,EAAOsoB,eAAkBQ,EAASjxB,SAASmI,EAAOwoB,cAAiBM,EAASjxB,SAASmI,EAAOuoB,eAChHQ,EAAQ55B,KAAK25B,EAAS,IAGD,IAAnBC,EAAQ37B,QACZ27B,EAAQ7sB,MAAK6gB,IACX,MAAMiM,EAAWhzB,EAAE+mB,GACnBiM,EAAS5xB,SAAS4I,EAAOuoB,cACzB,MAAMU,EAAaD,EAAS/wB,KAAK,mBAC3B/F,EAAM82B,EAAS/wB,KAAK,YACpB+kB,EAASgM,EAAS/wB,KAAK,eACvBglB,EAAQ+L,EAAS/wB,KAAK,cACtBixB,EAAaF,EAASrrB,OAAO,WACnC8B,EAAOqd,UAAUkM,EAAS,GAAI92B,GAAO+2B,EAAYjM,EAAQC,GAAO,GAAO,KACrE,GAAI,MAAOxd,GAA8CA,KAAUA,GAAWA,EAAOO,UAAUP,EAAOmO,UAAtG,CAoCA,GAlCIqb,GACFD,EAAShtB,IAAI,mBAAoB,QAAQitB,OACzCD,EAAS1wB,WAAW,qBAEhB0kB,IACFgM,EAAS/wB,KAAK,SAAU+kB,GACxBgM,EAAS1wB,WAAW,gBAGlB2kB,IACF+L,EAAS/wB,KAAK,QAASglB,GACvB+L,EAAS1wB,WAAW,eAGlB4wB,EAAW97B,QACb87B,EAAWr2B,SAAS,UAAUqJ,MAAKitB,IACjC,MAAMC,EAAUpzB,EAAEmzB,GAEdC,EAAQnxB,KAAK,iBACfmxB,EAAQnxB,KAAK,SAAUmxB,EAAQnxB,KAAK,gBACpCmxB,EAAQ9wB,WAAW,eACrB,IAIApG,IACF82B,EAAS/wB,KAAK,MAAO/F,GACrB82B,EAAS1wB,WAAW,cAIxB0wB,EAAS5xB,SAAS4I,EAAOwoB,aAAa7wB,YAAYqI,EAAOuoB,cACzDO,EAAShrB,KAAK,IAAIkC,EAAOyoB,kBAAkB7wB,SAEvC6H,EAAOO,OAAOgL,MAAQ6d,EAAiB,CACzC,MAAMQ,EAAqBP,EAAS7wB,KAAK,2BAErC6wB,EAASjxB,SAAS4H,EAAOO,OAAOiL,qBAElC2d,EADsBnpB,EAAOkE,WAAW9Q,SAAS,6BAA6Bw2B,YAA6B5pB,EAAOO,OAAOiL,wBAC/F9O,SAAS,GAGnCysB,EADwBnpB,EAAOkE,WAAW9Q,SAAS,IAAI4M,EAAOO,OAAOiL,gDAAgDoe,OACzFltB,SAAS,EAEzC,CAEAsG,EAAK,iBAAkBqmB,EAAS,GAAIE,EAAS,IAEzCvpB,EAAOO,OAAOsK,YAChB7K,EAAO+I,kBAnD8G,CAoDvH,IAEF/F,EAAK,gBAAiBqmB,EAAS,GAAIE,EAAS,GAAG,GAEnD,CAEA,SAASM,IACP,MAAM,WACJ3lB,EACA3D,OAAQqf,EAAY,OACpBjb,EAAM,YACN2E,GACEtJ,EACEuE,EAAYvE,EAAOwE,SAAWob,EAAapb,QAAQC,QACnDlE,EAASqf,EAAa2I,KAC5B,IAAI/hB,EAAgBoZ,EAAapZ,cAMjC,SAASsjB,EAAWptB,GAClB,GAAI6H,GACF,GAAIL,EAAW9Q,SAAS,IAAIwsB,EAAahb,uCAAuClI,OAAW/O,OACzF,OAAO,OAEJ,GAAIgX,EAAOjI,GAAQ,OAAO,EAEjC,OAAO,CACT,CAEA,SAASqL,EAAW0Y,GAClB,OAAIlc,EACKhO,EAAEkqB,GAASjoB,KAAK,2BAGlBjC,EAAEkqB,GAAS/jB,OACpB,CAIA,GAxBsB,SAAlB8J,IACFA,EAAgB,GAqBb0iB,IAAoBA,GAAqB,GAE1ClpB,EAAOO,OAAOsI,oBAChB3E,EAAW9Q,SAAS,IAAIwsB,EAAahW,qBAAqBnN,MAAKgkB,IAE7D0I,EADc5kB,EAAYhO,EAAEkqB,GAASjoB,KAAK,2BAA6BjC,EAAEkqB,GAAS/jB,QAChE,SAEf,GAAI8J,EAAgB,EACzB,IAAK,IAAI3Y,EAAIyb,EAAazb,EAAIyb,EAAc9C,EAAe3Y,GAAK,EAC1Di8B,EAAWj8B,IAAIs7B,EAAYt7B,QAGjCs7B,EAAY7f,GAGd,GAAI/I,EAAOkoB,aACT,GAAIjiB,EAAgB,GAAKjG,EAAOmoB,oBAAsBnoB,EAAOmoB,mBAAqB,EAAG,CACnF,MAAMqB,EAASxpB,EAAOmoB,mBAChB7H,EAAMra,EACNwjB,EAAWz7B,KAAKC,IAAI8a,EAAcuX,EAAMtyB,KAAK2S,IAAI6oB,EAAQlJ,GAAMlc,EAAOhX,QACtEs8B,EAAW17B,KAAK2S,IAAIoI,EAAc/a,KAAK2S,IAAI2f,EAAKkJ,GAAS,GAE/D,IAAK,IAAIl8B,EAAIyb,EAAc9C,EAAe3Y,EAAIm8B,EAAUn8B,GAAK,EACvDi8B,EAAWj8B,IAAIs7B,EAAYt7B,GAIjC,IAAK,IAAIA,EAAIo8B,EAAUp8B,EAAIyb,EAAazb,GAAK,EACvCi8B,EAAWj8B,IAAIs7B,EAAYt7B,EAEnC,KAAO,CACL,MAAM4d,EAAYvH,EAAW9Q,SAAS,IAAIwsB,EAAa1U,kBACnDO,EAAU9d,OAAS,GAAGw7B,EAAYphB,EAAW0D,IACjD,MAAMC,EAAYxH,EAAW9Q,SAAS,IAAIwsB,EAAazU,kBACnDO,EAAU/d,OAAS,GAAGw7B,EAAYphB,EAAW2D,GACnD,CAEJ,CAEA,SAASwe,IACP,MAAM50B,EAASF,IACf,IAAK4K,GAAUA,EAAOmO,UAAW,OACjC,MAAMgc,EAAiBnqB,EAAOO,OAAOgoB,KAAKK,iBAAmBryB,EAAEyJ,EAAOO,OAAOgoB,KAAKK,kBAAoBryB,EAAEjB,GAClG80B,EAAWD,EAAe,KAAO70B,EACjC+0B,EAAqBD,EAAW90B,EAAOud,WAAasX,EAAe,GAAG3uB,YACtE8uB,EAAsBF,EAAW90B,EAAOonB,YAAcyN,EAAe,GAAGxuB,aACxE4uB,EAAevqB,EAAOoD,IAAIxH,UAE9BwI,aAAcC,GACZrE,EACJ,IAAIwqB,GAAS,EACTnmB,IAAKkmB,EAAajuB,MAAQ0D,EAAOoD,IAAI,GAAGjH,YAC5C,MAAMsuB,EAAc,CAAC,CAACF,EAAajuB,KAAMiuB,EAAaluB,KAAM,CAACkuB,EAAajuB,KAAO0D,EAAOkD,MAAOqnB,EAAaluB,KAAM,CAACkuB,EAAajuB,KAAMiuB,EAAaluB,IAAM2D,EAAOmD,QAAS,CAAConB,EAAajuB,KAAO0D,EAAOkD,MAAOqnB,EAAaluB,IAAM2D,EAAOmD,SAEtO,IAAK,IAAItV,EAAI,EAAGA,EAAI48B,EAAY98B,OAAQE,GAAK,EAAG,CAC9C,MAAM+uB,EAAQ6N,EAAY58B,GAE1B,GAAI+uB,EAAM,IAAM,GAAKA,EAAM,IAAMyN,GAAsBzN,EAAM,IAAM,GAAKA,EAAM,IAAM0N,EAAqB,CACvG,GAAiB,IAAb1N,EAAM,IAAyB,IAAbA,EAAM,GAAU,SAEtC4N,GAAS,CACX,CACF,CAEA,MAAMvoB,IAA+C,eAA7BjC,EAAOmX,YAAYI,QAA0BvX,EAAOyB,QAAQQ,kBAAmBjC,EAAOO,OAAOiX,mBAAmB,CACtIC,SAAS,EACTpe,SAAS,GAGPmxB,GACFX,IACAM,EAAe7vB,IAAI,SAAU4vB,EAAmBjoB,IACtCgnB,IACVA,GAAwB,EACxBkB,EAAe1yB,GAAG,SAAUyyB,EAAmBjoB,GAEnD,CAEAxK,EAAG,cAAc,KACXuI,EAAOO,OAAOgoB,KAAK9jB,SAAWzE,EAAOO,OAAO+Y,gBAC9CtZ,EAAOO,OAAO+Y,eAAgB,EAChC,IAEF7hB,EAAG,QAAQ,KACLuI,EAAOO,OAAOgoB,KAAK9jB,UACjBzE,EAAOO,OAAOgoB,KAAKC,YACrB0B,IAEAL,IAEJ,IAEFpyB,EAAG,UAAU,KACPuI,EAAOO,OAAO2U,UAAYlV,EAAOO,OAAO2U,SAASzQ,UAAYzE,EAAOO,OAAO2U,SAASwV,QACtFb,GACF,IAEFpyB,EAAG,uDAAuD,KACpDuI,EAAOO,OAAOgoB,KAAK9jB,UACjBzE,EAAOO,OAAOgoB,KAAKC,YACrB0B,IAEAL,IAEJ,IAEFpyB,EAAG,mBAAmB,KAChBuI,EAAOO,OAAOgoB,KAAK9jB,UACjBzE,EAAOO,OAAOgoB,KAAKI,wBAA0B3oB,EAAOO,OAAOgoB,KAAKI,wBAA0BO,KACxFlpB,EAAOO,OAAOgoB,KAAKC,YACrB0B,IAEAL,IAGN,IAEFpyB,EAAG,iBAAiB,KACduI,EAAOO,OAAOgoB,KAAK9jB,UAAYzE,EAAOO,OAAOgoB,KAAKI,wBAChD3oB,EAAOO,OAAOgoB,KAAKC,YACrB0B,IAEAL,IAEJ,IAEFpyB,EAAG,eAAe,KAChB,MAAM,KACJ8wB,EAAI,QACJtiB,EAAO,oBACP4C,EAAmB,oBACnBkL,EAAmB,gBACnBgB,GACE/U,EAAOO,OAEPgoB,EAAK9jB,UAAYwB,GAAW4C,IAAwBkL,GAA2C,IAApBgB,KAC7E8U,GACF,IAEFp4B,OAAOkS,OAAO3D,EAAOuoB,KAAM,CACzBsB,OACAV,eAEJ,CC1RA,IAUA,GAVa,SAACwB,GACZ,IAAIC,EAAoBt1B,OAAOud,WAE/Bvd,OAAOhG,iBAAiB,UAAU,WAC5BgG,OAAOud,aAAe+X,IAC1BA,EAAoBt1B,OAAOud,WAC3B8X,IACF,GACF,ECNAxM,EAAO+D,IAAI,CAAC8B,EAAYmB,EAAYmD,KCApCnK,EAAO+D,IAAI,CAACiD,ICDZhH,EAAO+D,IAAI,CAACiD,EAAYnB,EAAYsE,KCCpCnK,EAAO+D,IAAI,CAACiD,EAAYmD,KCAxBnK,EAAO+D,IAAI,CAACiD,ICDZhH,EAAO+D,IAAI,CAAC8B,EAAYmB,EAAYmD,KAEpC,ICcA,GATgB,WJLU,IAClBuC,GDAiB,WACvB,IAAMA,EAAkB/9B,SAASkG,cAAc,wBAC3CgN,EAAS,KA6Bb,SAAS8qB,IACPx1B,OAAOud,WAAa,IA3Bf7S,IACHA,EAAS,IAAIme,EAAO0M,EAAiB,CACnCtf,MAAM,EACNV,YAAY,EACZpE,YAAa,CACX,EAAG,CACDD,cAAe,EACfjB,aAAc,KAGlBwf,WAAY,CACV5uB,GAAI,oDACJ6uB,WAAW,EACXM,cAAe,aAOjBtlB,IACFA,EAAO0hB,UACP1hB,EAAS,KAQb,CAEA6qB,GAAmBC,IACnBD,GAAmBE,GAAOD,EAC5B,EKlCEE,IJLMH,EAAkB/9B,SAASkG,cAAc,2BAE5B,IAAImrB,EAAO0M,EAAiB,CAC7CliB,eAAe,EACfnC,cAAe,EACfjB,aAAc,GACdgjB,MAAM,EACNtS,WAAY,CACVC,OAAQ,mEACRC,OAAQ,oEAEV4O,WAAY,CACV5uB,GAAI,qDACJ6a,KAAM,cFbY,WACtB,IAAM6Z,EAAkB/9B,SAASkG,cAAc,uBAC3CgN,EAAS,KAgCb,SAAS8qB,IACPx1B,OAAOud,WAAa,IA9Bf7S,IACHA,EAAS,IAAIme,EAAO0M,EAAiB,CACnCtC,MAAM,EACN9hB,YAAa,CACX,EAAG,CACDlB,aAAc,GACdiB,cAAe,EACfe,eAAgB,IAGpB0O,WAAY,CACVC,OAAQ,iEACRC,OAAQ,kEAEV4O,WAAY,CACV5uB,GAAI,mDACJ6a,KAAM,eAORhR,IACFA,EAAO0hB,UACP1hB,EAAS,KAQb,CAEA6qB,GAAmBC,IACnBD,GAAmBE,GAAOD,EAC5B,CMnCEG,GHPwB,WACxB,IAAMJ,EAAkB/9B,SAASkG,cAAc,yBAC3CgN,EAAS,KA6Bb,SAAS8qB,IACPx1B,OAAOud,WAAa,IA3Bf7S,IACHA,EAAS,IAAIme,EAAO0M,EAAiB,CACnChiB,qBAAqB,EACrB0f,MAAM,EACN9hB,YAAa,CACX,EAAG,CACDD,cAAe,EACfjB,aAAc,KAGlBwf,WAAY,CACV5uB,GAAI,qDACJ6uB,WAAW,EACXM,cAAe,aAOjBtlB,IACFA,EAAO0hB,UACP1hB,EAAS,KAQb,CAEA6qB,GAAmBC,IACnBD,GAAmBE,GAAOD,EAC5B,CG/BEI,GFR0B,WAC1B,IAAML,EAAkB/9B,SAASkG,cAAc,2BAC3CgN,EAAS,KA4Bb,SAAS8qB,IACPx1B,OAAOud,WAAa,IA1Bf7S,IACHA,EAAS,IAAIme,EAAO0M,EAAiB,CACnCtf,MAAM,EACN9E,YAAa,CACX,EAAG,CACDD,cAAe,KACfjB,aAAc,KAGlBwf,WAAY,CACV5uB,GAAI,uDACJ6uB,WAAW,EACXM,cAAe,aAOjBtlB,IACFA,EAAO0hB,UACP1hB,EAAS,KAQb,CAEA6qB,GAAmBC,IACnBD,GAAmBE,GAAOD,EAC5B,CE7BEK,GDVsB,WACtB,IAAMN,EAAkB/9B,SAASkG,cAAc,uBAE/C63B,GAAmB,IAAI1M,EAAO0M,EAAiB,CAC7CtC,MAAM,EACNhjB,aAAc,GACdsF,YAAY,EACZoL,WAAY,CACVC,OAAQ,iEACRC,OAAQ,kEAEV4O,WAAY,CACV5uB,GAAI,mDACJ6a,KAAM,aAGZ,CCLEoa,EACF,EC6CA,GAjD2B,SAACv+B,EAAWw+B,GACrC,IAAMC,EAAiBx+B,SAASkG,cAAcnG,GAC9C,GAAKy+B,EAAL,CACA,IAAMC,EAAiBD,EAAet4B,cAAc,sBAC9CyC,EAAQD,MAAMg2B,KAAKF,EAAer4B,iBAAiB,yBACnDw4B,EAAch2B,EAAMrF,MAAMi7B,GAE1BK,EAAwB,SAAxBA,IACJD,EAAY94B,SAAQ,SAAClG,GACnB+C,YAAW,WACT/C,EAAKgC,MAAMC,QAAU,IACvB,GAAG,KACHjC,EAAKgC,MAAMG,QAAU,CACvB,IACA28B,EAAe5uB,YAAc,WAC7B4uB,EAAex8B,oBAAoB,QAAS28B,GAC5CH,EAAej8B,iBAAiB,QAASq8B,EAC3C,EAEMA,EAAwB,SAAxBA,IACJF,EAAY94B,SAAQ,SAAClG,GACnB+C,YAAW,WACT/C,EAAKgC,MAAMC,QAAU,MACvB,GAAG,KACHjC,EAAKgC,MAAMG,QAAU,CACvB,IACA28B,EAAe5uB,YAAc,eAC7B4uB,EAAex8B,oBAAoB,QAAS48B,GAC5CJ,EAAej8B,iBAAiB,QAASo8B,EAC3C,EAEIj2B,EAAM9H,QAAU09B,EAClBE,SAAAA,EAAgBvzB,UAAUC,IAAI,cAI5BszB,IACFA,EAAevzB,UAAUG,OAAO,aAChCozB,EAAe5uB,YAAc,gBAG/B8uB,EAAY94B,SAAQ,SAAClG,GACnBA,EAAKgC,MAAMC,QAAU,OACrBjC,EAAKgC,MAAMG,QAAU,CACvB,IAEA28B,SAAAA,EAAgBj8B,iBAAiB,QAASo8B,GA5Cf,CA6C7B,sxBC1DO,ICEHE,GDFSC,GAAI,WAKd,SAJD,SAAAA,iGAAcC,CAAA,KAAAD,GACZrgC,KAAKugC,aAAez2B,OAAOud,WAC3BrnB,KAAKwgC,sBAAwBxgC,KAAKwgC,sBAAsBhU,KAAKxsB,MAC7DA,KAAKygC,OACP,IAAC,EAAA16B,IAAA,QAAAuE,MAED,WACEtK,KAAK0gC,eACLp/B,SAASwC,iBAAiB,QAAS9D,KAAKwgC,sBAC1C,GAAC,CAAAz6B,IAAA,kBAAAuE,MAED,WAAkB,IAAAq2B,EAAA,KAChB,OAAO,IAAI1J,gBAAe,SAACpK,GAAY,IACZ+T,EADYC,i5BAAAC,CACnBjU,GAAO,IAAzB,IAAAgU,EAAA19B,MAAAy9B,EAAAC,EAAAp7B,KAAAs7B,MAAcH,EAAAt2B,MACFtD,OAAOwF,UAAUK,SAAS,cAClC8zB,EAAKK,kBAER,OAAAC,GAAAJ,EAAA9yB,EAAAkzB,EAAA,SAAAJ,EAAAK,GAAA,CACH,GACF,GAAC,CAAAn7B,IAAA,wBAAAuE,MAED,SAAsB6E,GACpB,IAAMnI,EAASmI,EAAInI,OACnB,GAAKA,EAAO4L,QAAQ,yBAApB,CAGAzD,EAAImY,iBACJ,IAAM6Z,EAAUn6B,EAAO4L,QAAQ,yBAC/B5S,KAAKohC,QAAQD,EAHb,CAIF,GAAC,CAAAp7B,IAAA,eAAAuE,MAED,WAAe,IAAA+2B,EAAA,KACPjB,EAAO9+B,SAASmG,iBAAiB,wBACjC65B,EAAchgC,SAASmG,iBAAiB,kCAC9C24B,EAAKj5B,SAAQ,SAACo6B,GACZF,EAAKG,SAASD,EAChB,IACAD,EAAYn6B,SAAQ,SAACo6B,GACnBA,EAAI/0B,UAAUG,OAAO,WACvB,GACF,GAAC,CAAA5G,IAAA,0BAAAuE,MAED,SAAwBm3B,EAAoBC,GAC1CA,EAAYv6B,SAAQ,SAACo6B,GACnBA,EAAI/0B,UAAUG,OAAO,YACvB,IAEA80B,EAAmBt6B,SAAQ,SAAC/G,EAAS8Q,GACnC9Q,EAAQoM,UAAUG,OAAO,aACzBvM,EAAQsB,aAAa,aAAcwP,EACrC,GACF,GAAC,CAAAnL,IAAA,oBAAAuE,MAED,SAAkBi3B,EAAKI,EAAYD,EAAaE,EAAmBH,EAAoBI,GACrF,IAAM/jB,EAAc9d,KAAK8hC,mBAAmBL,GACtCM,EAA6B,QAAfJ,EAAuB3hC,KAAKgiC,iBAAiBN,GAAeA,EAAY5jB,GAAa3N,aACzGnQ,KAAKiiC,wBAAwBR,EAAoBC,GACjDH,EAAI/0B,UAAUC,IAAI,iBAClBg1B,EAAmB3jB,GAAatR,UAAUC,IAAI,aAC9Ci1B,EAAY5jB,GAAatR,UAAUC,IAAI,aACpB,UAAfk1B,IACFC,EAAkB3+B,MAAM0U,OAAS,GAAHuqB,OAAMH,EAAW,OAEjD/9B,YAAW,WACL69B,GACFN,EAAI/0B,UAAUG,OAAO,gBAEzB,GAAGk1B,EACL,GAAC,CAAA97B,IAAA,qBAAAuE,MAED,SAAmBm3B,GACjB,IAAI3jB,EAAc,EACdqkB,GAAO,EAOX,OANAV,EAAmBt6B,SAAQ,SAACg6B,EAASjwB,GAC/BiwB,EAAQ30B,UAAUK,SAAS,cAAgBs1B,IAC7CrkB,EAAc5M,EACdixB,GAAO,EAEX,IACOrkB,CACT,GAAC,CAAA/X,IAAA,mBAAAuE,MAED,SAAiBo3B,GACf,IAAI/pB,EAAS,GAKb,OAJA+pB,EAAYv6B,SAAQ,SAAC/G,GACnBuX,EAAOzT,KAAK9D,EAAQ+P,aACtB,IACAwH,EAAO4Z,MAAK,SAAC1rB,EAAG2rB,GAAC,OAAK3rB,EAAI2rB,CAAC,IACpB7Z,EAAOA,EAAOxV,OAAS,EAChC,GAAC,CAAA4D,IAAA,mBAAAuE,MAED,SAAiB83B,EAAU1vB,GACzB,IAAM2vB,EAAQ,GAQd,OAPAD,EAASj7B,SAAQ,SAAC/G,GACMA,EAAQwS,QAAQ,0BAChBF,GACpB2vB,EAAMn+B,KAAK9D,EAEf,IAEOiiC,CACT,GAAC,CAAAt8B,IAAA,oBAAAuE,MAED,SAAkB83B,EAAU1vB,GAC1B,IAAI4vB,EAQJ,OAPAF,EAASj7B,SAAQ,SAAC/G,GACMA,EAAQwS,QAAQ,0BAChBF,IACpB4vB,EAAeliC,EAEnB,IAEOkiC,CACT,GAAC,CAAAv8B,IAAA,mBAAAuE,MAED,WAAmB,IAAAi4B,EAAA,KACMjhC,SAASmG,iBAAiB,mCAClCN,SAAQ,SAAC/G,GACtB,IAAIoN,GAAa,EACFpN,EAAQwS,QAAQ,wBACpBA,QAAQ,2BACjBpF,GAAa,GAEf+0B,EAAKC,qBAAqBpiC,EAASoN,EACrC,GACF,GAAC,CAAAzH,IAAA,uBAAAuE,MAED,SAAqBlK,EAASoN,GAC5B,IAAMi1B,EAAgBriC,EAAQwS,QAAQ,wBAChC+uB,EAAac,EAAcC,QAAQ/qB,OACnCgrB,EAAiB3iC,KAAK4iC,kBAAkBH,EAAch7B,iBAAiB,yBAA0Bg7B,GACjGf,EAAc1hC,KAAK6iC,iBAAiBJ,EAAch7B,iBAAiB,yBAA0Bg7B,GAE9Fj1B,GACHi1B,EAAcj2B,UAAUC,IAAI,iBAI5Bk2B,EAAe1/B,MAAM0U,OADJ,QAAfgqB,EAC4B,GAAHO,OAAMliC,KAAKgiC,iBAAiBN,GAAY,MAC3C,UAAfC,EACqB,KAEA,GAAHO,OAAMliC,KAAK4iC,kBAAkBH,EAAch7B,iBAAiB,mCAAoCg7B,GAAetyB,aAAY,MAGxJnM,YAAW,kBAAMy+B,EAAcj2B,UAAUG,OAAO,gBAAgB,GAClE,GAAC,CAAA5G,IAAA,WAAAuE,MAED,SAASi3B,GAAK,IAAAuB,EAAA,KACNnB,EAAaJ,EAAImB,QAAQ/qB,OACzBkqB,EAAYN,EAAImB,QAAQtvB,MAAQmuB,EAAImB,QAAQtvB,MAAQ,EACpDwuB,EAAoBL,EAAI/5B,cAAc,yBACtCi6B,EAAqBzhC,KAAK6iC,iBAAiBtB,EAAI95B,iBAAiB,yBAA0B85B,GAC1FG,EAAc1hC,KAAK6iC,iBAAiBtB,EAAI95B,iBAAiB,yBAA0B85B,GACzFvhC,KAAK+iC,kBAAkBxB,EAAKI,EAAYD,EAAaE,EAAmBH,EAAoBI,GACzE,UAAfF,GACFD,EAAYv6B,SAAQ,SAAC/G,GACnB0iC,EAAKE,kBAAkBzL,QAAQn3B,EACjC,IAEF4D,YAAW,WACTu9B,EAAI/0B,UAAUG,OAAO,uBACvB,GACF,GAAC,CAAA5G,IAAA,SAAAuE,MAED,WACEtK,KAAK0gC,cACP,GAAC,CAAA36B,IAAA,UAAAuE,MAED,SAAQ62B,GACN,IAAM8B,EAAe9B,EAAQuB,QAAQxxB,MAC/BuxB,EAAgBtB,EAAQvuB,QAAQ,wBAEtC,IAAIuuB,EAAQ30B,UAAUK,SAAS,eAAgB41B,EAAcj2B,UAAUK,SAAS,aAAhF,CAIA,IAAMg1B,EAAYY,EAAcC,QAAQtvB,MAAQqvB,EAAcC,QAAQtvB,MAAQ,EACxEuuB,EAAac,EAAcC,QAAQ/qB,OACnCgrB,EAAiBF,EAAcj7B,cAAc,yBAC7Ck6B,EAAc1hC,KAAK6iC,iBAAiBJ,EAAch7B,iBAAiB,yBAA0Bg7B,GAE7FS,EAAgBljC,KAAK4iC,kBAAkBH,EAAch7B,iBAAiB,mCAAoCg7B,GAC1Gp7B,EAAgBrH,KAAK4iC,kBAAkBH,EAAch7B,iBAAiB,mCAAoCg7B,GAC1GxR,EAAgB0R,EAAexyB,aAC/BsN,EAAYikB,EAAYuB,GAAc9yB,aAE5CsyB,EAAcj2B,UAAUC,IAAI,aAC5BnL,SAAS+F,cAAcC,OAEnB47B,GACFA,EAAc12B,UAAUG,OAAO,aAG7BtF,GACFA,EAAcmF,UAAUG,OAAO,aAG7BskB,EAAgBxT,EAClBzZ,YAAW,WACU,QAAf29B,GAAuC,UAAfA,IAC1BgB,EAAe1/B,MAAM0U,OAAS8F,EAAY,MAE5C0jB,EAAQ30B,UAAUC,IAAI,aACtBi1B,EAAYuB,GAAcz2B,UAAUC,IAAI,aACxCg2B,EAAcj2B,UAAUG,OAAO,YACjC,GAAGk1B,IAEgB,QAAfF,GAAuC,UAAfA,IAC1BgB,EAAe1/B,MAAM0U,OAAS8F,EAAY,MAE5CzZ,YAAW,WACTm9B,EAAQ30B,UAAUC,IAAI,aACtBi1B,EAAYuB,GAAcz2B,UAAUC,IAAI,aACxCg2B,EAAcj2B,UAAUG,OAAO,YACjC,GAAGk1B,GAxCL,CA0CF,qFAAC,CA1Nc,grBEAV,ICCHsB,GDDSC,GAAU,WAOpB,SAND,SAAAA,iGAAc9C,CAAA,KAAA8C,GACZpjC,KAAKqjC,YAAc,EACnBrjC,KAAKugC,aAAez2B,OAAOud,WAC3BrnB,KAAKwgC,sBAAwBxgC,KAAKwgC,sBAAsBhU,KAAKxsB,MAC7DA,KAAKsjC,qBAAuBtjC,KAAKsjC,qBAAqB9W,KAAKxsB,MAC3DA,KAAKygC,OACP,IAAC,EAAA16B,IAAA,QAAAuE,MAED,WACEtK,KAAKujC,aACLjiC,SAASwC,iBAAiB,QAAS9D,KAAKwgC,uBACxC12B,OAAOhG,iBAAiB,SAAU9D,KAAKsjC,qBACzC,GAAC,CAAAv9B,IAAA,wBAAAuE,MAED,SAAsB6E,GACpB,IAAMnI,EAASmI,EAAInI,OACnB,GAAKA,EAAO4L,QAAQ,6BAApB,CAIAzD,EAAImY,iBACJ,IAAM5U,EAAS1L,EAAO4L,QAAQ,6BAE9B,IAAIF,EAAOgwB,QAAQxM,SAAYpsB,OAAON,WAAWkJ,EAAOgwB,QAAQxM,SAAS7kB,QAAzE,CAIA,IAAMjR,EAAU4G,EAAO4L,QAAQ,8BAC3BxS,EAAQoM,UAAUK,SAAS,aAC7B7M,KAAKwjC,eAAepjC,GAGtBJ,KAAKyjC,cAAcrjC,EAPnB,CAPA,CAeF,GAAC,CAAA2F,IAAA,uBAAAuE,MAED,WACMtK,KAAKugC,eAAiBz2B,OAAOud,aAGjCrnB,KAAKugC,aAAez2B,OAAOud,WAC3BrnB,KAAK0jC,yBACP,GAAC,CAAA39B,IAAA,oBAAAuE,MAED,SAAkBoI,GAAQ,IAAAiuB,EAAA,KACPjuB,EAAOjL,iBAAiB,8BAChCN,SAAQ,SAAC/G,GACMA,EAAQwS,QAAQ,+BAChBF,GACpBiuB,EAAK6C,eAAepjC,EAExB,GACF,GAAC,CAAA2F,IAAA,yBAAAuE,MAED,WAAuC,IAAhBlK,EAAO8M,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,GAAAA,UAAA,GAAG,KAC/B,GAAI9M,EAAS,CACX,IAAMujC,EAAUvjC,EAAQoH,cAAc,8BAMtC,OALAm8B,EAAQ1gC,MAAMuK,WAAa,OAC3Bm2B,EAAQ1gC,MAAM2gC,UAAY,GAAH1B,OAAMyB,EAAQE,aAAY,WACjD7/B,YAAW,WACT2/B,EAAQ1gC,MAAMuK,WAAa,IAC7B,GAEF,CAEsBlM,SAASmG,iBAAiB,8CAElCN,SAAQ,SAAC28B,GACrB,IAAMpxB,EAASoxB,EAAalxB,QAAQ,6BAC9B+wB,EAAUG,EAAat8B,cAAc,+BACvCkL,EAAOgwB,QAAQxM,SAAYpsB,OAAON,WAAWkJ,EAAOgwB,QAAQxM,SAAS7kB,QAIzEsyB,EAAQ1gC,MAAM2gC,UAAY,KAHxBD,EAAQ1gC,MAAM2gC,UAAY,MAI9B,IAEqBtiC,SAASmG,iBAAiB,wCAClCN,SAAQ,SAAC48B,GACpB,IAAMJ,EAAUI,EAAYv8B,cAAc,8BACpCkL,EAASqxB,EAAYnxB,QAAQ,8BAC/BF,EAAOgwB,QAAQxM,SAAYpsB,OAAON,WAAWkJ,EAAOgwB,QAAQxM,SAAS7kB,SAIzEsyB,EAAQ1gC,MAAMuK,WAAa,OAC3Bm2B,EAAQ1gC,MAAM2gC,UAAY,GAAH1B,OAAMyB,EAAQE,aAAY,MACjD7/B,YAAW,WACT2/B,EAAQ1gC,MAAMuK,WAAa,IAC7B,KAPEm2B,EAAQ1gC,MAAM2gC,UAAY,MAQ9B,GACF,GAAC,CAAA79B,IAAA,aAAAuE,MAED,WAA8C,IAAA+2B,EAAA,KAAnC3uB,EAAMxF,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,GAAAA,UAAA,GAAG,KAAMM,EAAUN,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,IAAAA,UAAA,IAE9BwF,EACaA,EAAOjL,iBAAiB,wCAExBnG,SAASmG,iBAAiB,yCAE9BN,SAAQ,SAAC48B,GACAA,EAAYv8B,cAAc,8BAI9C65B,EAAKoC,cAAcM,EAAav2B,EAClC,IACAxN,KAAK0jC,wBACP,GAAC,CAAA39B,IAAA,gBAAAuE,MAED,SAAclK,GAA4B,IAAnBoN,IAAUN,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,KAAAA,UAAA,GACzBu1B,EAAgBriC,EAAQwS,QAAQ,6BAChC+vB,EAAiBviC,EAAQoH,cAAc,8BAC7CxH,KAAKqjC,aAAeV,EAAekB,aAE/BpB,EAAcuB,aAAa,gBAC7BhkC,KAAKikC,kBAAkBxB,GAGzBriC,EAAQoM,UAAUC,IAAI,aAClBe,EACFm1B,EAAe1/B,MAAM2gC,UAAY,GAAH1B,OAAMliC,KAAKqjC,YAAW,OAEpDV,EAAe1/B,MAAMuK,WAAa,OAClCm1B,EAAe1/B,MAAM2gC,UAAY,GAAH1B,OAAMliC,KAAKqjC,YAAW,MACpDr/B,YAAW,WACT2+B,EAAe1/B,MAAMuK,WAAa,IACpC,KAGEi1B,EAAc7vB,QAAQ,8BACxB5S,KAAKyjC,cAAchB,EAAc7vB,QAAQ,8BAA+BpF,GAI1ExN,KAAKqjC,YAAc,CACrB,GAAC,CAAAt9B,IAAA,iBAAAuE,MAED,SAAelK,GAA4B,IAAnBoN,IAAUN,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,KAAAA,UAAA,GAC1By1B,EAAiBviC,EAAQoH,cAAc,8BACxCm7B,IAGLviC,EAAQoM,UAAUG,OAAO,aACrBa,EACFm1B,EAAe1/B,MAAM2gC,UAAY,KAEjCjB,EAAe1/B,MAAMuK,WAAa,OAClCm1B,EAAe1/B,MAAM2gC,UAAY,IACjC5/B,YAAW,WACT2+B,EAAe1/B,MAAMuK,WAAa,IACpC,KAEJ,qFAAC,CAzJoB,grBEEhB,IAAM02B,GAAU,WAMpB,SALD,SAAAA,iGAAc5D,CAAA,KAAA4D,GACZlkC,KAAKmkC,YAAc39B,EACnBxG,KAAKokC,WAAapkC,KAAKmkC,cAAgB,kBAAoB,cAC3DnkC,KAAKqkC,WAAa,KAClBrkC,KAAKskC,oBAAsBhjC,SAASmG,iBAAiB,mBACvD,KAAC,EAAA1B,IAAA,qBAAAuE,MAED,WACE,OAAOR,OAAOud,WAAa/lB,SAASgV,gBAAgBuB,WACtD,GAAC,CAAA9R,IAAA,oBAAAuE,MAED,WACE,OACE7H,KAAK8hC,aACJjjC,SAASgV,iBAAmBhV,SAASgV,gBAAgBkuB,WACrDljC,SAASU,MAAQV,SAASU,KAAKyO,SAEpC,GAAC,CAAA1K,IAAA,mBAAAuE,MAED,WAAmB,IAAAq2B,EAAA,KACjB3gC,KAAKqkC,WAAa/iC,SAASU,KAAK0gC,QAAQ+B,OAASnjC,SAASU,KAAK0gC,QAAQ+B,OAASnjC,SAASU,KAAK0gC,QAAQ+B,OAASzkC,KAAK0kC,oBAChH1kC,KAAK2kC,uBACPrjC,SAASU,KAAKiB,MAAMyY,aAAe,GAAHwmB,OAAMliC,KAAK2kC,qBAAoB,MAC/D3kC,KAAKskC,oBAAoBn9B,SAAQ,SAACy9B,GAChCA,EAAM3hC,MAAMyY,aAAe,GAAHwmB,OAAMvB,EAAKgE,qBAAoB,KACzD,KAEFrjC,SAASU,KAAKiB,MAAM4N,IAAM,IAAHqxB,OAAOliC,KAAKqkC,WAAU,MAC7C/iC,SAASU,KAAKwK,UAAUC,IAAIzM,KAAKokC,WACnC,GAAC,CAAAr+B,IAAA,kBAAAuE,MAED,WACEhJ,SAASU,KAAKwK,UAAUG,OAAO3M,KAAKokC,YACpCt6B,OAAOiM,SAAS,GAAIzU,SAASU,KAAK0gC,QAAQ+B,QAC1CnjC,SAASU,KAAKiB,MAAMyY,aAAe,KACnCpa,SAASU,KAAKiB,MAAM4N,IAAM,KAC1B7Q,KAAKskC,oBAAoBn9B,SAAQ,SAACy9B,GAChCA,EAAM3hC,MAAMyY,aAAe,IAC7B,IACApa,SAASU,KAAKsL,gBAAgB,eAC9BtN,KAAKqkC,WAAa,IACpB,oFAAC,CA1CoB,grBA6CvBv6B,OAAO+6B,WAAa,IAAIX,GC/CxB,IAAMY,GAAY,CAChB,UACA,aACA,gEACA,4CACA,8CACA,4CACA,SACA,SACA,QACA,oBACA,mCAGWC,GAAS,WAQnB,SAPD,SAAAA,iGAAczE,CAAA,KAAAyE,GACZ/kC,KAAKglC,gBAAkB,KACvBhlC,KAAKilC,mBAAqB,KAC1BjlC,KAAKklC,YAAc,KACnBllC,KAAKmlC,WAAaL,GAElB9kC,KAAKolC,wBAA0BplC,KAAKolC,wBAAwB5Y,KAAKxsB,KACnE,IAAC,EAAA+F,IAAA,0BAAAuE,MAED,SAAwB6E,GACtB,IAAM9H,EAAgB/F,SAAS+F,cAC/B,GAAgB,QAAZ8H,EAAIpJ,IAAe,CACrB,IAAK/F,KAAKilC,mBAAmB9iC,OAG3B,OAFAgN,EAAImY,sBACJjgB,EAAcC,OAGhB,GAAuC,IAAnCtH,KAAKilC,mBAAmB9iC,OAG1B,OAFAgN,EAAImY,sBACJtnB,KAAKilC,mBAAmB,GAAGI,QAG7B,GAAIrlC,KAAKilC,mBAAmB9iC,OAAS,IAAMkF,EAAcuL,QAAQ5S,KAAKglC,iBAGpE,OAFA71B,EAAImY,sBACJtnB,KAAKilC,mBAAmB,GAAGI,OAG/B,CACgB,QAAZl2B,EAAIpJ,KAAkBoJ,EAAIm2B,UAAYj+B,IAAkBrH,KAAKilC,mBAAmBjlC,KAAKilC,mBAAmB9iC,OAAS,KACnHgN,EAAImY,iBACJtnB,KAAKilC,mBAAmB,GAAGI,SAEb,QAAZl2B,EAAIpJ,KAAiBoJ,EAAIm2B,UAAYj+B,IAAkBrH,KAAKilC,mBAAmB,KACjF91B,EAAImY,iBACJtnB,KAAKilC,mBAAmBjlC,KAAKilC,mBAAmB9iC,OAAS,GAAGkjC,QAEhE,GAAC,CAAAt/B,IAAA,OAAAuE,MAED,SAAKi7B,GAAmC,IAAnBC,IAAUt4B,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,KAAAA,UAAA,GAC7BlN,KAAKylC,SACLzlC,KAAKglC,gBAAkBO,EACvB,IAAMG,EAAgBpkC,SAASkG,cAAcxH,KAAKglC,iBAClD,GAAKU,EAAL,CAGA1lC,KAAKilC,mBAAqBS,EAAcj+B,iBAAiBzH,KAAKmlC,YAC9DnlC,KAAKklC,YAAc5jC,SAAS+F,cAC5B,IAAMs+B,EAAeD,EAAcl+B,cAAc,iBAAmBxH,KAAKilC,mBAAmB,GACxFjlC,KAAKklC,aACPllC,KAAKklC,YAAY59B,OAEfq+B,GAAgBH,GAClBG,EAAaN,QAEf/jC,SAASwC,iBAAiB,UAAW9D,KAAKolC,wBAV1C,CAWF,GAAC,CAAAr/B,IAAA,SAAAuE,MAED,WAA2B,IAApBs7B,IAAW14B,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,KAAAA,UAAA,GACZlN,KAAKklC,aAAeU,GACtB5lC,KAAKklC,YAAYG,QAEnBrlC,KAAKglC,gBAAkB,KACvBhlC,KAAKilC,mBAAqB,KAC1BjlC,KAAKklC,YAAc,KACnB5jC,SAASiC,oBAAoB,UAAWvD,KAAKolC,wBAC/C,qFAAC,CAlEmB,grBAqEtBt7B,OAAO+7B,UAAY,IAAId,GChFhB,ICDHe,GDCSC,GAAM,WA4BhB,SA3BD,SAAAA,IAA2B,IAAfC,EAAQ94B,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,GAAAA,UAAA,GAAG,CAAC,+FAACozB,CAAA,KAAAyF,GACvB/lC,KAAKimC,YAAc,IAAI/B,GACvBlkC,KAAKkmC,WAAa,IAAInB,GAEtB/kC,KAAKmmC,mBAAqB7kC,SAASmG,iBAAiB,qBACpDzH,KAAKomC,oBAAsB,GAC3BpmC,KAAKqmC,oBAAsB,KAC3BrmC,KAAKsmC,WAAa,KAClBtmC,KAAKumC,kBAAmB,EACxBvmC,KAAKwmC,YAAc,UAEnBxmC,KAAKymC,UAAYT,EACjBhmC,KAAK0mC,gBAAkB1mC,KAAKymC,UAAUzmC,KAAKwmC,aAAalf,eACxDtnB,KAAK2mC,UAAY3mC,KAAKymC,UAAUzmC,KAAKwmC,aAAaI,SAClD5mC,KAAK6mC,WAAa7mC,KAAKymC,UAAUzmC,KAAKwmC,aAAaM,UACnD9mC,KAAK+mC,YAAc/mC,KAAKymC,UAAUzmC,KAAKwmC,aAAahB,WACpDxlC,KAAKgnC,WAAahnC,KAAKymC,UAAUzmC,KAAKwmC,aAAaS,UACnDjnC,KAAKknC,cAAgBlnC,KAAKymC,UAAUzmC,KAAKwmC,aAAaW,aACtDnnC,KAAKonC,gBAAkBpnC,KAAKymC,UAAUzmC,KAAKwmC,aAAaa,eACxDrnC,KAAKsnC,cAAgBtnC,KAAKymC,UAAUzmC,KAAKwmC,aAAae,aACtDvnC,KAAKwnC,eAAiBxnC,KAAKymC,UAAUzmC,KAAKwmC,aAAaiB,cAEvDznC,KAAKolC,wBAA0BplC,KAAKolC,wBAAwB5Y,KAAKxsB,MACjEA,KAAKwgC,sBAAwBxgC,KAAKwgC,sBAAsBhU,KAAKxsB,MAC7DA,KAAK0nC,mBAAqB1nC,KAAK0nC,mBAAmBlb,KAAKxsB,MAEvDA,KAAKygC,OACP,IAAC,EAAA16B,IAAA,QAAAuE,MAED,WACMtK,KAAKmmC,mBAAmBhkC,QAC1Bb,SAASwC,iBAAiB,QAAS9D,KAAKwgC,sBAE5C,GAAC,CAAAz6B,IAAA,eAAAuE,MAED,WAA4C,IAA/Bq9B,EAAUz6B,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,GAAAA,UAAA,GAAGlN,KAAKwmC,YACxBxmC,KAAKymC,UAAUkB,KAIpB3nC,KAAK0mC,gBACkD,kBAA9C1mC,KAAKymC,UAAUkB,GAAYrgB,eAC9BtnB,KAAKymC,UAAUkB,GAAYrgB,eAC3BtnB,KAAKymC,UAAUzmC,KAAKwmC,aAAalf,eACvCtnB,KAAK2mC,UAC4C,kBAAxC3mC,KAAKymC,UAAUkB,GAAYf,SAC9B5mC,KAAKymC,UAAUkB,GAAYf,SAC3B5mC,KAAKymC,UAAUzmC,KAAKwmC,aAAaI,SACvC5mC,KAAK6mC,WAC6C,kBAAzC7mC,KAAKymC,UAAUkB,GAAYb,UAC9B9mC,KAAKymC,UAAUkB,GAAYb,UAC3B9mC,KAAKymC,UAAUzmC,KAAKwmC,aAAaM,UACvC9mC,KAAK+mC,YAC8C,kBAA1C/mC,KAAKymC,UAAUkB,GAAYnC,WAC9BxlC,KAAKymC,UAAUkB,GAAYnC,WAC3BxlC,KAAKymC,UAAUzmC,KAAKwmC,aAAahB,WACvCxlC,KAAKgnC,WAC6C,kBAAzChnC,KAAKymC,UAAUkB,GAAYb,UAC9B9mC,KAAKymC,UAAUkB,GAAYV,UAC3BjnC,KAAKymC,UAAUzmC,KAAKwmC,aAAaS,UACvCjnC,KAAKonC,gBACkD,kBAA9CpnC,KAAKymC,UAAUkB,GAAYN,eAC9BrnC,KAAKymC,UAAUkB,GAAYN,eAC3BrnC,KAAKymC,UAAUzmC,KAAKwmC,aAAaa,eACvCrnC,KAAKknC,cACgD,iBAA5ClnC,KAAKymC,UAAUkB,GAAYR,aAC9BnnC,KAAKymC,UAAUkB,GAAYR,aAC3BnnC,KAAKymC,UAAUzmC,KAAKwmC,aAAaW,aACvCnnC,KAAKsnC,cAAgBtnC,KAAKymC,UAAUkB,GAAYJ,cAAgBvnC,KAAKymC,UAAUzmC,KAAKwmC,aAAae,aACjGvnC,KAAKwnC,eAAiBxnC,KAAKymC,UAAUkB,GAAYF,eAAiBznC,KAAKymC,UAAUzmC,KAAKwmC,aAAaiB,cACrG,GAAC,CAAA1hC,IAAA,wBAAAuE,MAED,SAAsB6E,GACpB,IAAMnI,EAASmI,EAAInI,OAEdA,EAAO4L,QAAQ,uBAIpBzD,EAAImY,iBAEJtnB,KAAKsmC,WAAat/B,EAAO4L,QAAQ,qBAAqB8vB,QAAQkF,UAEzD5nC,KAAKsmC,YAIVtmC,KAAK6nC,OACP,GAAC,CAAA9hC,IAAA,0BAAAuE,MAED,SAAwB6E,IACO,WAAZA,EAAIpJ,KAAgC,QAAZoJ,EAAIpJ,OAG3CoJ,EAAImY,iBACJtnB,KAAK8nC,MAAMxmC,SAASkG,cAAc,oBAAoBk7B,QAAQqF,OAElE,GAAC,CAAAhiC,IAAA,qBAAAuE,MAED,SAAmB6E,GACjB,IAAMnI,EAASmI,EAAInI,OAEdA,EAAO4L,QAAQ,wBAIhB5L,EAAO4L,QAAQ,6BACjB5S,KAAKiJ,QAELjJ,KAAK8nC,MAAM9gC,EAAO4L,QAAQ,gBAAgB8vB,QAAQqF,OAClD/nC,KAAKomC,oBAAsB,IAE/B,GAAC,CAAArgC,IAAA,gBAAAuE,MAED,SAAcy9B,GACZA,EAAMjkC,iBAAiB,QAAS9D,KAAK0nC,oBACrCpmC,SAASwC,iBAAiB,UAAW9D,KAAKolC,wBAC5C,GAAC,CAAAr/B,IAAA,mBAAAuE,MAED,SAAiBy9B,GACfA,EAAMxkC,oBAAoB,QAASvD,KAAK0nC,oBACxCpmC,SAASiC,oBAAoB,UAAWvD,KAAKolC,wBAC/C,GAAC,CAAAr/B,IAAA,mBAAAuE,MAED,SAAiBy9B,GACX/nC,KAAK2mC,YACPoB,EAAMtgC,iBAAiB,gBAAgBN,SAAQ,SAACwD,GAAE,OAAKA,EAAGq9B,OAAO,IACjED,EAAMtgC,iBAAiB,iBAAiBN,SAAQ,SAACwD,GAC/CA,EAAGnD,cAAc,UAAUygC,cAAcC,YAAY,yDAA0D,IACjH,IAEJ,GAAC,CAAAniC,IAAA,YAAAuE,MAED,SAAUy9B,GACRA,EAAMtgC,iBAAiB,iBAAiBN,SAAQ,SAACwD,GAC9BA,EAAGiI,QAAQ,qBAE1BjI,EAAGnD,cAAc,UAAUygC,cAAcC,YAAY,mDAAoD,IAE7G,GACF,GAAC,CAAAniC,IAAA,OAAAuE,MAED,WAAkC,IAAAq2B,EAAA,KAA7BwH,EAASj7B,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,GAAAA,UAAA,GAAGlN,KAAKsmC,WACdyB,EAAQzmC,SAASkG,cAAc,gBAAD06B,OAAiBiG,EAAS,OAEzDJ,IAASA,EAAMv7B,UAAUK,SAAS,eAIvCvL,SAASiC,oBAAoB,QAASvD,KAAKwgC,uBAE3CxgC,KAAKqmC,oBAAsB/kC,SAASkG,cAAc,oBAE9CxH,KAAKqmC,sBACPrmC,KAAKumC,kBAAmB,EACxBvmC,KAAK8nC,MAAM9nC,KAAKqmC,oBAAoB3D,QAAQqF,QAG9C/nC,KAAKooC,aAAaD,GAClBJ,EAAMv7B,UAAUC,IAAI,aAEhB07B,IAAcnoC,KAAKomC,oBAAoBpmC,KAAKomC,oBAAoBjkC,OAAS,IAC3EnC,KAAKomC,oBAAoBliC,KAAKikC,GAG3BnoC,KAAKqmC,qBACRrmC,KAAKimC,YAAYoC,mBAGfroC,KAAKsnC,eACPtnC,KAAKsnC,gBAGHtnC,KAAK6mC,YACP7mC,KAAKkmC,WAAWoC,KAAK,mBAAoBtoC,KAAK+mC,aAG5C/mC,KAAKonC,iBACPW,EAAMhyB,SAAS,EAAG,GAGpB/R,YAAW,WACT28B,EAAK4H,cAAcR,GACnBpH,EAAK6H,UAAUT,GACfzmC,SAASwC,iBAAiB,QAAS68B,EAAKH,sBAC1C,GAAGxgC,KAAKknC,eACV,GAAC,CAAAnhC,IAAA,OAAAuE,MAED,WACE,GAAKtK,KAAKomC,oBAAoBjkC,OAA9B,CAIA,IAAMsmC,EAAczoC,KAAKomC,oBAAoBpmC,KAAKomC,oBAAoBjkC,OAAS,GACzEumC,EAAY1oC,KAAKomC,oBAAoBpmC,KAAKomC,oBAAoBjkC,OAAS,GAErC,IAApCnC,KAAKomC,oBAAoBjkC,SAC3BnC,KAAKomC,oBAAsB,IAGzBsC,IACF1oC,KAAKomC,oBAAoBuC,MACzB3oC,KAAK6nC,KAAKa,IAGZ1oC,KAAK8nC,MAAMW,EAdX,CAeF,GAAC,CAAA1iC,IAAA,QAAAuE,MAED,WAAmC,IAAA+2B,EAAA,KAA7B8G,EAASj7B,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,GAAAA,UAAA,GAAGlN,KAAKsmC,WACfyB,EAAQzmC,SAASkG,cAAc,gBAAD06B,OAAiBiG,EAAS,OAC9D7mC,SAASiC,oBAAoB,QAASvD,KAAKwgC,uBAEtCuH,GAAUA,EAAMv7B,UAAUK,SAAS,eAIpC7M,KAAK6mC,YACP7mC,KAAKkmC,WAAWT,OAAOzlC,KAAKgnC,YAG9Be,EAAMv7B,UAAUG,OAAO,aACvB3M,KAAK4oC,iBAAiBb,GACtB/nC,KAAK6oC,iBAAiBd,GAElB/nC,KAAKwnC,gBACPxnC,KAAKwnC,iBAGHxnC,KAAKumC,kBACPviC,YAAW,WACTq9B,EAAK4E,YAAY6C,iBACnB,GAAG9oC,KAAKknC,eAGVljC,YAAW,WACT1C,SAASwC,iBAAiB,QAASu9B,EAAKb,sBAC1C,GAAGxgC,KAAKknC,eAERlnC,KAAKooC,aAAa,WAClBpoC,KAAKumC,kBAAmB,EAC1B,qFAAC,CAjPgB,GCCbP,GAAW,CACf,QAAW,CACT1e,gBAAgB,EAChBsf,UAAU,EACVE,WAAW,EACXtB,YAAY,EACZyB,WAAW,EACXI,gBAAgB,EAChBF,aAAc,IACdI,cAAc,EACdE,eAAe,GAEjB,aAAc,CACZjC,YAAY,irBCbT,IAAMuD,GAAU,WAQpB,SAPD,SAAAA,EAAY/S,gGAASsK,CAAA,KAAAyI,GACnB/oC,KAAK+rB,MAAQ,IAAIziB,KAAK0sB,EAAQjK,OAC9B/rB,KAAKmsB,IAAM,IAAI7iB,KAAK0sB,EAAQ7J,KAC5BnsB,KAAKgpC,OAAShT,EAAQgT,OACtBhpC,KAAKuP,KAAOymB,EAAQzmB,KACpBvP,KAAKipC,MAAQlmC,KAAK6Y,OAAOtS,KAAK+J,MAAQrT,KAAK+rB,OAAS,OACpD/rB,KAAKygC,OACP,KAAC,EAAA16B,IAAA,QAAAuE,MAED,WACE,GAAgB,gBAAZtK,KAAKmsB,IAAuB,CAG5B,IAFA,IAAI9pB,EAAIrC,KAAKipC,MAEN5mC,GAAKrC,KAAKgpC,QACb3mC,GAAKrC,KAAKgpC,OAGdhpC,KAAK+rB,MAAQ,IAAIziB,MAAK,IAAIA,MAAOkM,UAAY,MAAsBnT,GACnErC,KAAKmsB,IAAM,IAAI7iB,KAAKtJ,KAAK+rB,MAAMvW,UAAY,MAAsBxV,KAAKgpC,OAC1E,CCxBgB,IAACjd,EAAOmd,EAAQ35B,EAC3B45B,ECDQC,EACTC,EACAC,EAFSF,EF0BLppC,KAAKmsB,IEzBTkd,EAAS/nC,SAASmG,iBAAiB,eACnC6hC,EAAY,CAAC,SAAU,UAAW,QAAS,SAAU,MAAO,OAAQ,OAAQ,UAAW,WAAY,UAAW,SAAU,WAE9HD,EAAOliC,SAAQ,SAAAoiC,GACbA,EAAM5nC,UAAY,GAAHugC,OAAMkH,EAAKI,UAAS,UAAAtH,OAASoH,EAAUF,EAAKK,YAC7D,IDNmB1d,ED2BL/rB,KAAK+rB,MC3BOmd,ED2BAlpC,KAAKmsB,IC3BG5c,ED2BEvP,KAAKuP,MC1BlC45B,EAAW7nC,SAASmG,iBAAiB,mBAiDlCtF,QACRgnC,EAAShiC,SACP,SAACuiC,GAAO,OACLA,EAAQ/nC,UAlDd,SAA0BoqB,EAAOmd,EAAQzN,EAAOkO,EAAOC,GACrD,IAKEjmC,EACAkmC,EACAtP,EACAuP,EAGcx/B,EAXZy/B,EAAYhe,EACdie,EAAad,EACbe,EAAexO,EACfyO,EAAcP,EACdvf,EAAQwf,EAuCV,OAdEjmC,GAHFkmC,EAAU9mC,KAAK6Y,OAAOtS,KAAK+J,MAAQ02B,GAAa,SAEjC,EACL,EAEA3f,EAAQyf,EApBFv/B,EAwBdiwB,EADEsP,IAAYG,EAAaD,GAAa,MAC/BG,EAEAD,EAAetmC,EAG1BmmC,GA5BS,IAAIK,KAAKC,cAAeC,OAAO//B,GA6BrB,IAzBnB,SAAqBiwB,EAAQ+P,GAE3B,MAuB2C,CAAC,QAAS,QAAS,QAtB5D/P,EAAS,IAAM,GAAKA,EAAS,IAAM,GAC/B,EAHM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAIhBA,EAAS,GAAK,EAAIA,EAAS,GAAK,GAE9C,CAkByBgQ,CAAYhQ,GAE9BuP,CACT,CAK0BU,CACnBze,EACAmd,EACA35B,EAAKk7B,KAAKhP,MACVlsB,EAAKk7B,KAAKd,MACVp6B,EAAKk7B,KAAKb,KACX,IE3DQ,SAACR,GAChB,IAAMsB,EAAeppC,SAASkG,cAAc,gBACvCkjC,GAEL,SAAUC,IAER,IAAMC,EAAU,IAAIthC,KAClBA,KAAKuhC,IACHzB,EAAK0B,cACL1B,EAAKK,WACLL,EAAKI,UAAY,EACjB,GACA,GACA,IAGEuB,EAAgB,IAAIzhC,KAAKshC,GAASp1B,UAClCw1B,EAAeC,YAAYN,EAAO,KAElCO,EAAWH,GADL,IAAIzhC,MAAOkM,UAEjB21B,EAAOpoC,KAAK6Y,MAAMsvB,EAAW,OAC7BE,EAAQroC,KAAK6Y,MAChBsvB,EAAW,MAAqB,MAE7BG,EAAUtoC,KAAK6Y,MAAOsvB,EAAW,KAAgB,KA+CvDR,EAAa/oC,UAAY,GAAHugC,OAAMiJ,EAAI,UAAAjJ,OAfZ,SAACiJ,GACnB,IAAIG,EAAS,OACb,GAAIH,EAAO,IAAMA,EAAO,GACtB,OAAOG,EAET,IAAMC,EAAY9mC,OAAO+mC,OAAOL,GAAMvmC,OAAO,IAC7C,OAAkB,IAAd2mC,GAAmBA,GAAa,EAC3BD,EAES,IAAdC,EACK,OAEF,KACT,CAEyCE,CACvCN,GACD,UAAAjJ,OAASkJ,EAAK,UAAAlJ,OAhCM,SAACkJ,GACpB,IAAIE,EAAS,QACb,GAAIF,EAAQ,IAAMA,EAAQ,GACxB,OAAOE,EAET,IAAMC,EAAY9mC,OAAO+mC,OAAOJ,GAAOxmC,OAAO,IAC9C,OAAkB,IAAd2mC,GAAmBA,GAAa,EAC3BD,EAES,IAAdC,EACK,MAEF,MACT,CAmBwBG,CACtBN,GACD,UAAAlJ,OAASmJ,EAAO,UAAAnJ,OAjDM,SAACmJ,GACtB,IAAIC,EAAS,QACb,GAAID,EAAU,IAAMA,EAAU,GAC5B,OAAOC,EAET,IAAMC,EAAY9mC,OAAO+mC,OAAOH,GAASzmC,OAAO,IAChD,OAAkB,IAAd2mC,GAAmBA,GAAa,EAC3BD,EAES,IAAdC,EACKD,EAAS,IAEXA,EAAS,GAClB,CAoC0BK,CAAeN,IAErCH,EAAW,IACbU,cAAcZ,GACdN,EAAa/oC,UAAY,kDAE5B,CA7ED,EA8EF,CHtDIkqC,CAAS7rC,KAAKmsB,IAChB,oFAAC,CAzBoB,qlCIHvB2f,GAAA,kBAAA/9B,CAAA,MAAAuU,EAAAvU,EAAA,GAAAg+B,EAAA9lC,OAAA/E,UAAAuE,EAAAsmC,EAAAxlC,eAAAP,EAAAC,OAAAC,gBAAA,SAAAoc,EAAAvU,EAAAg+B,GAAAzpB,EAAAvU,GAAAg+B,EAAAzhC,KAAA,EAAAjI,EAAA,mBAAA2pC,OAAAA,OAAA,GAAAnmC,EAAAxD,EAAA4pC,UAAA,aAAA1/B,EAAAlK,EAAA6pC,eAAA,kBAAAC,EAAA9pC,EAAA+pC,aAAA,yBAAAC,EAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAA9lC,OAAAC,eAAAoc,EAAAvU,EAAA,CAAAzD,MAAAyhC,EAAA5lC,YAAA,EAAAmmC,cAAA,EAAAp5B,UAAA,IAAAoP,EAAAvU,EAAA,KAAAs+B,EAAA,aAAA/pB,GAAA+pB,EAAA,SAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAAzpB,EAAAvU,GAAAg+B,CAAA,WAAAQ,EAAAjqB,EAAAvU,EAAAg+B,EAAAtmC,GAAA,IAAApD,EAAA0L,GAAAA,EAAA7M,qBAAAsrC,EAAAz+B,EAAAy+B,EAAA3mC,EAAAI,OAAAwmC,OAAApqC,EAAAnB,WAAAqL,EAAA,IAAAmgC,EAAAjnC,GAAA,WAAAO,EAAAH,EAAA,WAAAyE,MAAAqiC,EAAArqB,EAAAypB,EAAAx/B,KAAA1G,CAAA,UAAA+mC,EAAAtqB,EAAAvU,EAAAg+B,GAAA,WAAAvmB,KAAA,SAAAqnB,IAAAvqB,EAAAnd,KAAA4I,EAAAg+B,GAAA,OAAAzpB,GAAA,OAAAkD,KAAA,QAAAqnB,IAAAvqB,EAAA,EAAAvU,EAAAw+B,KAAAA,EAAA,IAAAO,EAAA,iBAAAC,EAAA,iBAAA7L,EAAA,YAAA/9B,EAAA,YAAAssB,EAAA,YAAA+c,IAAA,UAAAQ,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAAb,EAAAa,EAAArnC,GAAA,8BAAAD,EAAAK,OAAAknC,eAAAjwB,EAAAtX,GAAAA,EAAAA,EAAAwnC,EAAA,MAAAlwB,GAAAA,IAAA6uB,GAAAtmC,EAAAN,KAAA+X,EAAArX,KAAAqnC,EAAAhwB,GAAA,IAAAmwB,EAAAJ,EAAA/rC,UAAAsrC,EAAAtrC,UAAA+E,OAAAwmC,OAAAS,GAAA,SAAAI,EAAAhrB,GAAA,0BAAAnb,SAAA,SAAA4G,GAAAs+B,EAAA/pB,EAAAvU,GAAA,SAAAuU,GAAA,YAAAirB,QAAAx/B,EAAAuU,EAAA,gBAAAkrB,EAAAlrB,EAAAvU,GAAA,SAAA0/B,EAAA1B,EAAA/lC,EAAA3D,EAAAwD,GAAA,IAAA0G,EAAAqgC,EAAAtqB,EAAAypB,GAAAzpB,EAAAtc,GAAA,aAAAuG,EAAAiZ,KAAA,KAAA2mB,EAAA5/B,EAAAsgC,IAAAC,EAAAX,EAAA7hC,MAAA,OAAAwiC,GAAA,UAAAY,GAAAZ,IAAArnC,EAAAN,KAAA2nC,EAAA,WAAA/+B,EAAA4/B,QAAAb,EAAAc,SAAAC,MAAA,SAAAvrB,GAAAmrB,EAAA,OAAAnrB,EAAAjgB,EAAAwD,EAAA,aAAAyc,GAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAkI,EAAA4/B,QAAAb,GAAAe,MAAA,SAAAvrB,GAAA6pB,EAAA7hC,MAAAgY,EAAAjgB,EAAA8pC,EAAA,aAAA7pB,GAAA,OAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAA,EAAA0G,EAAAsgC,IAAA,KAAAd,EAAA/lC,EAAA,gBAAAsE,MAAA,SAAAgY,EAAA7c,GAAA,SAAAqoC,IAAA,WAAA//B,GAAA,SAAAA,EAAAg+B,GAAA0B,EAAAnrB,EAAA7c,EAAAsI,EAAAg+B,EAAA,WAAAA,EAAAA,EAAAA,EAAA8B,KAAAC,EAAAA,GAAAA,GAAA,aAAAnB,EAAA5+B,EAAAg+B,EAAAtmC,GAAA,IAAAO,EAAA8mC,EAAA,gBAAAzqC,EAAAwD,GAAA,GAAAG,IAAAk7B,EAAA,MAAA1f,MAAA,mCAAAxb,IAAA7C,EAAA,cAAAd,EAAA,MAAAwD,EAAA,OAAAyE,MAAAgY,EAAAye,MAAA,OAAAt7B,EAAAsR,OAAA1U,EAAAoD,EAAAonC,IAAAhnC,IAAA,KAAA0G,EAAA9G,EAAAsoC,SAAA,GAAAxhC,EAAA,KAAA4/B,EAAA6B,EAAAzhC,EAAA9G,GAAA,GAAA0mC,EAAA,IAAAA,IAAA1c,EAAA,gBAAA0c,CAAA,cAAA1mC,EAAAsR,OAAAtR,EAAAwoC,KAAAxoC,EAAAyoC,MAAAzoC,EAAAonC,SAAA,aAAApnC,EAAAsR,OAAA,IAAA/Q,IAAA8mC,EAAA,MAAA9mC,EAAA7C,EAAAsC,EAAAonC,IAAApnC,EAAA0oC,kBAAA1oC,EAAAonC,IAAA,gBAAApnC,EAAAsR,QAAAtR,EAAA2oC,OAAA,SAAA3oC,EAAAonC,KAAA7mC,EAAAk7B,EAAA,IAAAgM,EAAAN,EAAA7+B,EAAAg+B,EAAAtmC,GAAA,cAAAynC,EAAA1nB,KAAA,IAAAxf,EAAAP,EAAAs7B,KAAA59B,EAAA4pC,EAAAG,EAAAL,MAAApd,EAAA,gBAAAnlB,MAAA4iC,EAAAL,IAAA9L,KAAAt7B,EAAAs7B,KAAA,WAAAmM,EAAA1nB,OAAAxf,EAAA7C,EAAAsC,EAAAsR,OAAA,QAAAtR,EAAAonC,IAAAK,EAAAL,IAAA,YAAAmB,EAAAjgC,EAAAg+B,GAAA,IAAAtmC,EAAAsmC,EAAAh1B,OAAA/Q,EAAA+H,EAAAk+B,SAAAxmC,GAAA,GAAAO,IAAAsc,EAAA,OAAAypB,EAAAgC,SAAA,eAAAtoC,GAAAsI,EAAAk+B,SAAAoC,SAAAtC,EAAAh1B,OAAA,SAAAg1B,EAAAc,IAAAvqB,EAAA0rB,EAAAjgC,EAAAg+B,GAAA,UAAAA,EAAAh1B,SAAA,WAAAtR,IAAAsmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAA7oC,EAAA,aAAAgqB,EAAA,IAAAptB,EAAAuqC,EAAA5mC,EAAA+H,EAAAk+B,SAAAF,EAAAc,KAAA,aAAAxqC,EAAAmjB,KAAA,OAAAumB,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAAxqC,EAAAwqC,IAAAd,EAAAgC,SAAA,KAAAte,EAAA,IAAA5pB,EAAAxD,EAAAwqC,IAAA,OAAAhnC,EAAAA,EAAAk7B,MAAAgL,EAAAh+B,EAAAwgC,YAAA1oC,EAAAyE,MAAAyhC,EAAAlpC,KAAAkL,EAAAygC,QAAA,WAAAzC,EAAAh1B,SAAAg1B,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,GAAAypB,EAAAgC,SAAA,KAAAte,GAAA5pB,GAAAkmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAAvC,EAAAgC,SAAA,KAAAte,EAAA,UAAAgf,EAAAnsB,GAAA,IAAAvU,EAAA,CAAA2gC,OAAApsB,EAAA,SAAAA,IAAAvU,EAAA4gC,SAAArsB,EAAA,SAAAA,IAAAvU,EAAA6gC,WAAAtsB,EAAA,GAAAvU,EAAA8gC,SAAAvsB,EAAA,SAAAwsB,WAAA5qC,KAAA6J,EAAA,UAAAghC,EAAAzsB,GAAA,IAAAvU,EAAAuU,EAAA0sB,YAAA,GAAAjhC,EAAAyX,KAAA,gBAAAzX,EAAA8+B,IAAAvqB,EAAA0sB,WAAAjhC,CAAA,UAAA2+B,EAAApqB,GAAA,KAAAwsB,WAAA,EAAAJ,OAAA,SAAApsB,EAAAnb,QAAAsnC,EAAA,WAAAQ,OAAA,YAAA7B,EAAAr/B,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAg+B,EAAAh+B,EAAAlI,GAAA,GAAAkmC,EAAA,OAAAA,EAAA5mC,KAAA4I,GAAA,sBAAAA,EAAAlL,KAAA,OAAAkL,EAAA,IAAAmK,MAAAnK,EAAA5L,QAAA,KAAA6D,GAAA,EAAA3D,EAAA,SAAAQ,IAAA,OAAAmD,EAAA+H,EAAA5L,QAAA,GAAAsD,EAAAN,KAAA4I,EAAA/H,GAAA,OAAAnD,EAAAyH,MAAAyD,EAAA/H,GAAAnD,EAAAk+B,MAAA,EAAAl+B,EAAA,OAAAA,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,SAAAR,EAAAQ,KAAAR,CAAA,YAAAisC,UAAAZ,GAAA3/B,GAAA,2BAAAi/B,EAAA9rC,UAAA+rC,EAAAjnC,EAAAqnC,EAAA,eAAA/iC,MAAA2iC,EAAAX,cAAA,IAAAtmC,EAAAinC,EAAA,eAAA3iC,MAAA0iC,EAAAV,cAAA,IAAAU,EAAAkC,YAAA7C,EAAAY,EAAAd,EAAA,qBAAAp+B,EAAAohC,oBAAA,SAAA7sB,GAAA,IAAAvU,EAAA,mBAAAuU,GAAAA,EAAAxb,YAAA,QAAAiH,IAAAA,IAAAi/B,GAAA,uBAAAj/B,EAAAmhC,aAAAnhC,EAAAjC,MAAA,EAAAiC,EAAAqhC,KAAA,SAAA9sB,GAAA,OAAArc,OAAAopC,eAAAppC,OAAAopC,eAAA/sB,EAAA2qB,IAAA3qB,EAAAlY,UAAA6iC,EAAAZ,EAAA/pB,EAAA6pB,EAAA,sBAAA7pB,EAAAphB,UAAA+E,OAAAwmC,OAAAY,GAAA/qB,CAAA,EAAAvU,EAAAuhC,MAAA,SAAAhtB,GAAA,OAAAsrB,QAAAtrB,EAAA,EAAAgrB,EAAAE,EAAAtsC,WAAAmrC,EAAAmB,EAAAtsC,UAAAqL,GAAA,0BAAAwB,EAAAy/B,cAAAA,EAAAz/B,EAAAwhC,MAAA,SAAAjtB,EAAAypB,EAAAtmC,EAAAO,EAAA3D,QAAA,IAAAA,IAAAA,EAAAmtC,SAAA,IAAA3pC,EAAA,IAAA2nC,EAAAjB,EAAAjqB,EAAAypB,EAAAtmC,EAAAO,GAAA3D,GAAA,OAAA0L,EAAAohC,oBAAApD,GAAAlmC,EAAAA,EAAAhD,OAAAgrC,MAAA,SAAAvrB,GAAA,OAAAA,EAAAye,KAAAze,EAAAhY,MAAAzE,EAAAhD,MAAA,KAAAyqC,EAAAD,GAAAhB,EAAAgB,EAAAlB,EAAA,aAAAE,EAAAgB,EAAAxnC,GAAA,0BAAAwmC,EAAAgB,EAAA,qDAAAt/B,EAAA7G,KAAA,SAAAob,GAAA,IAAAvU,EAAA9H,OAAAqc,GAAAypB,EAAA,WAAAtmC,KAAAsI,EAAAg+B,EAAA7nC,KAAAuB,GAAA,OAAAsmC,EAAA0D,UAAA,SAAA5sC,IAAA,KAAAkpC,EAAA5pC,QAAA,KAAAmgB,EAAAypB,EAAApD,MAAA,GAAArmB,KAAAvU,EAAA,OAAAlL,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,QAAAA,EAAAk+B,MAAA,EAAAl+B,CAAA,GAAAkL,EAAAq/B,OAAAA,EAAAV,EAAAxrC,UAAA,CAAA4F,YAAA4lC,EAAAuC,MAAA,SAAAlhC,GAAA,QAAAuE,KAAA,OAAAzP,KAAA,OAAAorC,KAAA,KAAAC,MAAA5rB,EAAA,KAAAye,MAAA,OAAAgN,SAAA,UAAAh3B,OAAA,YAAA81B,IAAAvqB,EAAA,KAAAwsB,WAAA3nC,QAAA4nC,IAAAhhC,EAAA,QAAAg+B,KAAA,WAAAA,EAAA2D,OAAA,IAAAjqC,EAAAN,KAAA,KAAA4mC,KAAA7zB,OAAA6zB,EAAAnnC,MAAA,WAAAmnC,GAAAzpB,EAAA,EAAAqtB,KAAA,gBAAA5O,MAAA,MAAAze,EAAA,KAAAwsB,WAAA,GAAAE,WAAA,aAAA1sB,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,YAAA+C,IAAA,EAAAzB,kBAAA,SAAApgC,GAAA,QAAAgzB,KAAA,MAAAhzB,EAAA,IAAAg+B,EAAA,cAAA8D,EAAApqC,EAAAO,GAAA,OAAAH,EAAA2f,KAAA,QAAA3f,EAAAgnC,IAAA9+B,EAAAg+B,EAAAlpC,KAAA4C,EAAAO,IAAA+lC,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,KAAAtc,CAAA,SAAAA,EAAA,KAAA8oC,WAAA3sC,OAAA,EAAA6D,GAAA,IAAAA,EAAA,KAAA3D,EAAA,KAAAysC,WAAA9oC,GAAAH,EAAAxD,EAAA2sC,WAAA,YAAA3sC,EAAAqsC,OAAA,OAAAmB,EAAA,UAAAxtC,EAAAqsC,QAAA,KAAAp8B,KAAA,KAAA/F,EAAA9G,EAAAN,KAAA9C,EAAA,YAAA8pC,EAAA1mC,EAAAN,KAAA9C,EAAA,iBAAAkK,GAAA4/B,EAAA,SAAA75B,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,WAAAr8B,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,SAAAriC,GAAA,QAAA+F,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,YAAAxC,EAAA,MAAA3qB,MAAA,kDAAAlP,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,KAAAR,OAAA,SAAA9rB,EAAAvU,GAAA,QAAAg+B,EAAA,KAAA+C,WAAA3sC,OAAA,EAAA4pC,GAAA,IAAAA,EAAA,KAAA/lC,EAAA,KAAA8oC,WAAA/C,GAAA,GAAA/lC,EAAA0oC,QAAA,KAAAp8B,MAAA7M,EAAAN,KAAAa,EAAA,oBAAAsM,KAAAtM,EAAA4oC,WAAA,KAAAvsC,EAAA2D,EAAA,OAAA3D,IAAA,UAAAigB,GAAA,aAAAA,IAAAjgB,EAAAqsC,QAAA3gC,GAAAA,GAAA1L,EAAAusC,aAAAvsC,EAAA,UAAAwD,EAAAxD,EAAAA,EAAA2sC,WAAA,UAAAnpC,EAAA2f,KAAAlD,EAAAzc,EAAAgnC,IAAA9+B,EAAA1L,GAAA,KAAA0U,OAAA,YAAAlU,KAAAR,EAAAusC,WAAAnf,GAAA,KAAA2C,SAAAvsB,EAAA,EAAAusB,SAAA,SAAA9P,EAAAvU,GAAA,aAAAuU,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,gBAAAvqB,EAAAkD,MAAA,aAAAlD,EAAAkD,KAAA,KAAA3iB,KAAAyf,EAAAuqB,IAAA,WAAAvqB,EAAAkD,MAAA,KAAAoqB,KAAA,KAAA/C,IAAAvqB,EAAAuqB,IAAA,KAAA91B,OAAA,cAAAlU,KAAA,kBAAAyf,EAAAkD,MAAAzX,IAAA,KAAAlL,KAAAkL,GAAA0hB,CAAA,EAAAyZ,OAAA,SAAA5mB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA6C,aAAAtsB,EAAA,YAAA8P,SAAA2Z,EAAAiD,WAAAjD,EAAA8C,UAAAE,EAAAhD,GAAAtc,CAAA,GAAAqgB,MAAA,SAAAxtB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA2C,SAAApsB,EAAA,KAAA7c,EAAAsmC,EAAAiD,WAAA,aAAAvpC,EAAA+f,KAAA,KAAAxf,EAAAP,EAAAonC,IAAAkC,EAAAhD,EAAA,QAAA/lC,CAAA,QAAAwb,MAAA,0BAAAuuB,cAAA,SAAAhiC,EAAAg+B,EAAAtmC,GAAA,YAAAsoC,SAAA,CAAA9B,SAAAmB,EAAAr/B,GAAAwgC,WAAAxC,EAAAyC,QAAA/oC,GAAA,cAAAsR,SAAA,KAAA81B,IAAAvqB,GAAAmN,CAAA,GAAA1hB,CAAA,UAAAiiC,GAAAvqC,EAAA6c,EAAAvU,EAAAg+B,EAAA/lC,EAAAH,EAAA0G,GAAA,QAAAlK,EAAAoD,EAAAI,GAAA0G,GAAA4/B,EAAA9pC,EAAAiI,KAAA,OAAA7E,GAAA,YAAAsI,EAAAtI,EAAA,CAAApD,EAAA0+B,KAAAze,EAAA6pB,GAAAqD,QAAA7B,QAAAxB,GAAA0B,KAAA9B,EAAA/lC,EAAA,CCAA,SAASiqC,GAASC,GAChB,MAAsB,iBAARA,GAAoBA,aAAe1E,MACnD,CAGA,SAAS3kC,GAASR,GAChB,IAAI8pC,EACJ,MAAsB,iBAAR9pC,GAA2B,MAAPA,GAAkH,YAA3F,MAAPA,GAAuD,OAAvC8pC,EAAmB9pC,EAAIS,kBAAuB,EAASqpC,EAAiBrkC,KAC5I,CACA,SAASskC,GAAK/pC,EAAKa,GACjB,OAAI8C,MAAMY,QAAQ1D,GAAckpC,GAAK/pC,GAAK,CAACiW,EAAGhO,IAAMpH,EAAKT,SAAS6H,KAC3DrI,OAAO4mB,QAAQxmB,GAAKgqC,QAAO,CAACC,EAAKC,KACtC,IAAKjiC,EAAG4O,GAAKqzB,EAEb,OADIrpC,EAAKgW,EAAG5O,KAAIgiC,EAAIhiC,GAAK4O,GAClBozB,CAAG,GACT,CAAC,EACN,CAGA,MAAME,GACE,OADFA,GAEE,OAFFA,GAGQ,aAHRA,GAIG,QAJHA,GAKS,cAiBf,SAASC,GAAaP,GACpB,OAAOA,EAAIh2B,QAAQ,4BAA6B,OAClD,CAGA,SAASw2B,GAAelf,EAAG3rB,GACzB,GAAIA,IAAM2rB,EAAG,OAAO,EACpB,MAAMmf,EAAO3mC,MAAMY,QAAQ/E,GACzB+qC,EAAO5mC,MAAMY,QAAQ4mB,GACvB,IAAInvB,EACJ,GAAIsuC,GAAQC,EAAM,CAChB,GAAI/qC,EAAE1D,QAAUqvB,EAAErvB,OAAQ,OAAO,EACjC,IAAKE,EAAI,EAAGA,EAAIwD,EAAE1D,OAAQE,IAAK,IAAKquC,GAAe7qC,EAAExD,GAAImvB,EAAEnvB,IAAK,OAAO,EACvE,OAAO,CACT,CACA,GAAIsuC,GAAQC,EAAM,OAAO,EACzB,GAAI/qC,GAAK2rB,GAAkB,iBAAN3rB,GAA+B,iBAAN2rB,EAAgB,CAC5D,MAAMqf,EAAQhrC,aAAayD,KACzBwnC,EAAQtf,aAAaloB,KACvB,GAAIunC,GAASC,EAAO,OAAOjrC,EAAE2P,WAAagc,EAAEhc,UAC5C,GAAIq7B,GAASC,EAAO,OAAO,EAC3B,MAAMC,EAAUlrC,aAAamrC,OAC3BC,EAAUzf,aAAawf,OACzB,GAAID,GAAWE,EAAS,OAAOprC,EAAEyN,YAAcke,EAAEle,WACjD,GAAIy9B,GAAWE,EAAS,OAAO,EAC/B,MAAM/pC,EAAOjB,OAAOiB,KAAKrB,GAGzB,IAAKxD,EAAI,EAAGA,EAAI6E,EAAK/E,OAAQE,IAAK,IAAK4D,OAAO/E,UAAUqF,eAAepB,KAAKqsB,EAAGtqB,EAAK7E,IAAK,OAAO,EAChG,IAAKA,EAAI,EAAGA,EAAI6E,EAAK/E,OAAQE,IAAK,IAAKquC,GAAelf,EAAEtqB,EAAK7E,IAAKwD,EAAEqB,EAAK7E,KAAM,OAAO,EACtF,OAAO,CACT,CAAO,SAAIwD,IAAK2rB,GAAkB,mBAAN3rB,GAAiC,mBAAN2rB,IAC9C3rB,EAAEyN,aAAeke,EAAEle,UAG9B,CC1EA,MAAM49B,GASJpqC,WAAAA,CAAY6P,GAIV,IAHA1Q,OAAOkS,OAAOnY,KAAM2W,GAGb3W,KAAKsK,MAAM1F,MAAM,EAAG5E,KAAKmxC,kBAAoBnxC,KAAKoxC,SAASxsC,MAAM,EAAG5E,KAAKmxC,mBAC5EnxC,KAAKqxC,aAAatlB,MAEtB,GAAI/rB,KAAKsxC,cAEP,KAAOtxC,KAAKsK,MAAM1F,MAAM5E,KAAKuxC,aAAevxC,KAAKoxC,SAASxsC,MAAM5E,KAAKqxC,aAAallB,MAC5EnsB,KAAKsK,MAAMnI,OAASnC,KAAKuxC,UAAYvxC,KAAKoxC,SAASjvC,OAASnC,KAAKqxC,aAAallB,MAAOnsB,KAAKqxC,aAAallB,MAAWnsB,KAAKuxC,SAGjI,CAGA,kBAAIJ,GACF,OAAOpuC,KAAKC,IAAIhD,KAAKuxC,UAAWvxC,KAAKqxC,aAAatlB,MACpD,CAGA,iBAAIulB,GACF,OAAOtxC,KAAKuxC,UAAYvxC,KAAKmxC,cAC/B,CAGA,YAAIK,GACF,OAAOxxC,KAAKsK,MAAMgnB,OAAOtxB,KAAKmxC,eAAgBnxC,KAAKsxC,cACrD,CAGA,gBAAIG,GAEF,OAAO1uC,KAAK2S,IAAI1V,KAAKqxC,aAAallB,IAAMnsB,KAAKmxC,gBAE7CnxC,KAAKoxC,SAASjvC,OAASnC,KAAKsK,MAAMnI,OAAQ,EAC5C,CAGA,WAAIuvC,GACF,OAAO1xC,KAAKoxC,SAAS9f,OAAOtxB,KAAKmxC,eAAgBnxC,KAAKyxC,aACxD,CAGA,QAAIE,GACF,OAAO3xC,KAAKsK,MAAMsnC,UAAU,EAAG5xC,KAAKmxC,eACtC,CAGA,QAAIU,GACF,OAAO7xC,KAAKsK,MAAMsnC,UAAU5xC,KAAKmxC,eAAiBnxC,KAAKsxC,cACzD,CAGA,mBAAIQ,GACF,OAAK9xC,KAAKyxC,cAAgBzxC,KAAKsxC,cAAsBd,GAG7CxwC,KAAKqxC,aAAallB,MAAQnsB,KAAKuxC,WAAavxC,KAAKqxC,aAAatlB,QAAU/rB,KAAKuxC,WAErFvxC,KAAKqxC,aAAallB,MAAQnsB,KAAKqxC,aAAatlB,MAA0BykB,GAAlBA,EACtD,ECxEF,SAASuB,GAAMpnC,EAAIgM,GAEjB,OAAO,IAAIo7B,GAAMC,UAAUrnC,EAAIgM,EACjC,CC2BA,SAASs7B,GAAYC,GACnB,GAAY,MAARA,EAAc,MAAM,IAAI1wB,MAAM,mCAClC,OAAI0wB,aAAgBlB,OAAee,GAAMI,aACrClC,GAASiC,GAAcH,GAAMK,cAC7BF,IAAS5oC,KAAayoC,GAAMM,WAC5BH,IAASztC,OAAestC,GAAMO,aAC9BtoC,MAAMY,QAAQsnC,IAASA,IAASloC,MAAc+nC,GAAMQ,cACpDR,GAAMS,QAAUN,EAAKhxC,qBAAqB6wC,GAAMS,OAAeN,EAC/DH,GAAMS,QAAUN,aAAgBH,GAAMS,OAAeN,EAAKprC,YAC1DorC,aAAgBO,SAAiBV,GAAMW,gBAC3CC,QAAQC,KAAK,0BAA2BV,GACjCH,GAAMS,OACf,CACA,SAASK,GAAcl8B,GACrB,IAAKA,EAAM,MAAM,IAAI6K,MAAM,0BAC3B,GAAIuwB,GAAMS,OAAQ,CAChB,GAAI77B,EAAKzV,qBAAqB6wC,GAAMS,OAAQ,MAAO,CACjDN,KAAMv7B,GAQR,MAAM,KACJu7B,KACGY,GACDn8B,aAAgBo7B,GAAMS,OAAS,CACjCN,KAAMv7B,GACJ9P,GAAS8P,IAASA,EAAKu7B,gBAAgBH,GAAMS,OAAS77B,EAAO,CAAC,EAClE,GAAIu7B,EAAM,CACR,MAAMa,EAAQb,EAAKA,KACnB,MAAO,IACF9B,GAAK8B,GAAM,CAAC51B,EAAGhO,KAAOA,EAAE0kC,WAAW,OACtCd,KAAMA,EAAKprC,YACXisC,WACGD,EAEP,CACF,CACA,OAAKjsC,GAAS8P,GAGP,IACFA,GAJuB,CAC1Bu7B,KAAMv7B,EAKV,CA4BA,SAASs8B,GAAWt8B,GAClB,GAAIo7B,GAAMS,QAAU77B,aAAgBo7B,GAAMS,OAAQ,OAAO77B,EACzD,MAAMu8B,EAAQL,GAAcl8B,GACtBw8B,EAAclB,GAAYiB,EAAMhB,MACtC,IAAKiB,EAAa,MAAM,IAAI3xB,MAAM,+CAAiD0xB,EAAMhB,KAAO,4EAMhG,OALIgB,EAAMhB,OAASiB,UAAoBD,EAAMhB,KACzCgB,EAAMH,QACRG,EAAMhB,KAAOgB,EAAMH,aACZG,EAAMH,OAER,IAAII,EAAYD,EACzB,CACAnB,GAAMkB,WAAaA,GCnHnB,MAAMG,GAQJ,kBAAIC,GACF,IAAItnB,EACJ,IACEA,EAAQ/rB,KAAKszC,qBACf,CAAE,MAAO,CACT,OAAgB,MAATvnB,EAAgBA,EAAQ/rB,KAAKsK,MAAMnI,MAC5C,CAGA,gBAAIoxC,GACF,IAAIpnB,EACJ,IACEA,EAAMnsB,KAAKwzC,mBACb,CAAE,MAAO,CACT,OAAc,MAAPrnB,EAAcA,EAAMnsB,KAAKsK,MAAMnI,MACxC,CAGAsxC,MAAAA,CAAO1nB,EAAOI,GACZ,GAAa,MAATJ,GAAwB,MAAPI,IAAeJ,IAAU/rB,KAAKqzC,gBAAkBlnB,IAAQnsB,KAAKuzC,cAClF,IACEvzC,KAAK0zC,cAAc3nB,EAAOI,EAC5B,CAAE,MAAO,CACX,CAGA,YAAIwnB,GACF,OAAO,CACT,EAOF5B,GAAMqB,YAAcA,GCvCpB,MAAMQ,WAAwBR,GAG5BtsC,WAAAA,CAAY+sC,GACV3pC,QACAlK,KAAK6zC,MAAQA,EACb7zC,KAAK8zC,WAAa9zC,KAAK8zC,WAAWtnB,KAAKxsB,MACvCA,KAAK+zC,SAAW/zC,KAAK+zC,SAASvnB,KAAKxsB,MACnCA,KAAKg0C,eAAiBh0C,KAAKg0C,eAAexnB,KAAKxsB,MAC/CA,KAAKi0C,kBAAoBj0C,KAAKi0C,kBAAkBznB,KAAKxsB,KACvD,CACA,eAAIk0C,GACF,IAAIC,EAAuBC,EAAwBC,EACnD,OAAkK,OAA1JF,EAA6F,OAApEC,GAA0BC,EAAcr0C,KAAK6zC,OAAOvtB,kBAAuB,EAAS8tB,EAAuBjvC,KAAKkvC,IAAwBF,EAAwB7yC,QACnM,CAGA,YAAIqyC,GACF,OAAO3zC,KAAK6zC,QAAU7zC,KAAKk0C,YAAY7sC,aACzC,CAGAitC,UAAAA,CAAWvlC,GACT/O,KAAK6zC,MAAM/vC,iBAAiB,UAAW9D,KAAK8zC,YAC5C9zC,KAAK6zC,MAAM/vC,iBAAiB,QAAS9D,KAAK+zC,UAC1C/zC,KAAK6zC,MAAM/vC,iBAAiB,cAAe9D,KAAKg0C,gBAChDh0C,KAAK6zC,MAAM/vC,iBAAiB,iBAAkB9D,KAAKi0C,mBACnDj0C,KAAK6zC,MAAM/vC,iBAAiB,OAAQiL,EAASwlC,MAC7Cv0C,KAAK6zC,MAAM/vC,iBAAiB,QAASiL,EAASylC,OAC9Cx0C,KAAK6zC,MAAM/vC,iBAAiB,QAASiL,EAASs2B,OAC9CrlC,KAAK6zC,MAAM/vC,iBAAiB,OAAQiL,EAAS0lC,QAC7Cz0C,KAAK00C,UAAY3lC,CACnB,CACA+kC,UAAAA,CAAW/lC,GACT,OAAI/N,KAAK00C,UAAUC,OAtCT,KAsCkB5mC,EAAE6mC,SAAqB7mC,EAAEu3B,WAAav3B,EAAE8mC,SAAW9mC,EAAE+mC,UArCvE,KAqCmF/mC,EAAE6mC,SAAqB7mC,EAAE+mC,UACpH/mC,EAAEuZ,iBACKtnB,KAAK00C,UAAUC,KAAK5mC,IAEzB/N,KAAK00C,UAAUK,MA1CT,KA0CiBhnC,EAAE6mC,UAAsB7mC,EAAE8mC,SAAW9mC,EAAE+mC,UAChE/mC,EAAEuZ,iBACKtnB,KAAK00C,UAAUK,KAAKhnC,SAExBA,EAAEinC,aAAah1C,KAAK00C,UAAUO,gBAAgBlnC,GACrD,CACAimC,cAAAA,CAAejmC,GACb,MAAoB,gBAAhBA,EAAEmnC,WAA+Bl1C,KAAK00C,UAAUK,MAClDhnC,EAAEuZ,iBACKtnB,KAAK00C,UAAUK,KAAKhnC,IAET,gBAAhBA,EAAEmnC,WAA+Bl1C,KAAK00C,UAAUC,MAClD5mC,EAAEuZ,iBACKtnB,KAAK00C,UAAUC,KAAK5mC,SAF7B,CAIF,CACAkmC,iBAAAA,CAAkBlmC,GAChB/N,KAAK00C,UAAUb,MAAM9lC,EACvB,CACAgmC,QAAAA,CAAShmC,GACFA,EAAEinC,aAAah1C,KAAK00C,UAAUb,MAAM9lC,EAC3C,CAGAonC,YAAAA,GACEn1C,KAAK6zC,MAAMtwC,oBAAoB,UAAWvD,KAAK8zC,YAC/C9zC,KAAK6zC,MAAMtwC,oBAAoB,QAASvD,KAAK+zC,UAC7C/zC,KAAK6zC,MAAMtwC,oBAAoB,cAAevD,KAAKg0C,gBACnDh0C,KAAK6zC,MAAMtwC,oBAAoB,iBAAkBvD,KAAKi0C,mBACtDj0C,KAAK6zC,MAAMtwC,oBAAoB,OAAQvD,KAAK00C,UAAUH,MACtDv0C,KAAK6zC,MAAMtwC,oBAAoB,QAASvD,KAAK00C,UAAUF,OACvDx0C,KAAK6zC,MAAMtwC,oBAAoB,QAASvD,KAAK00C,UAAUrP,OACvDrlC,KAAK6zC,MAAMtwC,oBAAoB,OAAQvD,KAAK00C,UAAUD,QACtDz0C,KAAK00C,UAAY,CAAC,CACpB,EAEF3C,GAAM6B,gBAAkBA,GC5ExB,MAAMwB,WAA6BxB,GAGjC9sC,WAAAA,CAAY+sC,GACV3pC,MAAM2pC,GACN7zC,KAAK6zC,MAAQA,CACf,CAGA,yBAAIP,GACF,OAAoC,MAA7BtzC,KAAK6zC,MAAMR,eAAyBrzC,KAAK6zC,MAAMR,eAAiBrzC,KAAKsK,MAAMnI,MACpF,CAGA,uBAAIqxC,GACF,OAAOxzC,KAAK6zC,MAAMN,YACpB,CAGAG,aAAAA,CAAc3nB,EAAOI,GACnBnsB,KAAK6zC,MAAMwB,kBAAkBtpB,EAAOI,EACtC,CACA,SAAI7hB,GACF,OAAOtK,KAAK6zC,MAAMvpC,KACpB,CACA,SAAIA,CAAMA,GACRtK,KAAK6zC,MAAMvpC,MAAQA,CACrB,EAEFynC,GAAM6B,gBAAkBA,GC9BxB,MAAM0B,WAAuC1B,GAE3C,yBAAIN,GACF,MAAMiC,EAAOv1C,KAAKk0C,YACZsB,EAAYD,EAAKE,cAAgBF,EAAKE,eACtCC,EAAeF,GAAaA,EAAUE,aACtCC,EAAcH,GAAaA,EAAUG,YAC3C,OAAmB,MAAfA,GAAuC,MAAhBD,GAAwBA,EAAeC,EACzDD,EAEFC,CACT,CAGA,uBAAInC,GACF,MAAM+B,EAAOv1C,KAAKk0C,YACZsB,EAAYD,EAAKE,cAAgBF,EAAKE,eACtCC,EAAeF,GAAaA,EAAUE,aACtCC,EAAcH,GAAaA,EAAUG,YAC3C,OAAmB,MAAfA,GAAuC,MAAhBD,GAAwBA,EAAeC,EACzDD,EAEFC,CACT,CAGAjC,aAAAA,CAAc3nB,EAAOI,GACnB,IAAKnsB,KAAKk0C,YAAY0B,YAAa,OACnC,MAAMC,EAAQ71C,KAAKk0C,YAAY0B,cAC/BC,EAAMC,SAAS91C,KAAK6zC,MAAM7hC,YAAchS,KAAK6zC,MAAO9nB,GACpD8pB,EAAME,OAAO/1C,KAAK6zC,MAAMmC,WAAah2C,KAAK6zC,MAAO1nB,GACjD,MAAMopB,EAAOv1C,KAAKk0C,YACZsB,EAAYD,EAAKE,cAAgBF,EAAKE,eACxCD,IACFA,EAAUS,kBACVT,EAAUU,SAASL,GAEvB,CAGA,SAAIvrC,GACF,OAAOtK,KAAK6zC,MAAM1iC,aAAe,EACnC,CACA,SAAI7G,CAAMA,GACRtK,KAAK6zC,MAAM1iC,YAAc7G,CAC3B,EAEFynC,GAAMuD,+BAAiCA,GCnDvC,MAAMa,GACJrvC,WAAAA,GACE9G,KAAKo2C,OAAS,GACdp2C,KAAKijC,aAAe,CACtB,CACA,gBAAIoT,GACF,OAAOr2C,KAAKo2C,OAAOp2C,KAAKijC,aAC1B,CACA,WAAIqT,GACF,OAA8B,IAAvBt2C,KAAKo2C,OAAOj0C,MACrB,CACA+B,IAAAA,CAAKqyC,GAECv2C,KAAKijC,aAAejjC,KAAKo2C,OAAOj0C,OAAS,IAAGnC,KAAKo2C,OAAOj0C,OAASnC,KAAKijC,aAAe,GACzFjjC,KAAKo2C,OAAOlyC,KAAKqyC,GACbv2C,KAAKo2C,OAAOj0C,OAASg0C,GAAaK,YAAYx2C,KAAKo2C,OAAOzyC,QAC9D3D,KAAKijC,aAAejjC,KAAKo2C,OAAOj0C,OAAS,CAC3C,CACA6G,EAAAA,CAAGytC,GAED,OADAz2C,KAAKijC,aAAelgC,KAAKC,IAAID,KAAK2S,IAAI1V,KAAKijC,aAAewT,EAAO,GAAIz2C,KAAKo2C,OAAOj0C,OAAS,GACnFnC,KAAKq2C,YACd,CACAtB,IAAAA,GACE,OAAO/0C,KAAKgJ,IAAI,EAClB,CACA2rC,IAAAA,GACE,OAAO30C,KAAKgJ,GAAG,EACjB,CACA0tC,KAAAA,GACE12C,KAAKo2C,OAAOj0C,OAAS,EACrBnC,KAAKijC,aAAe,CACtB,EAEFkT,GAAaK,WAAa,IC0T1BzE,GAAMC,UAhVN,MAOElrC,WAAAA,CAAY6D,EAAIgM,GACd3W,KAAK2K,GAAKA,aAAcyoC,GAAczoC,EAAKA,EAAGud,mBAAoC,UAAfvd,EAAGkuB,SAAsC,aAAfluB,EAAGkuB,QAAyB,IAAIyc,GAA+B3qC,GAAM,IAAIyqC,GAAqBzqC,GAC3L3K,KAAK22C,OAAS1D,GAAWt8B,GACzB3W,KAAK42C,WAAa,CAAC,EACnB52C,KAAK62C,OAAS,GACd72C,KAAK82C,eAAiB,GACtB92C,KAAK+2C,eAAiB,GACtB/2C,KAAK6I,QAAU,IAAIstC,GACnBn2C,KAAKg3C,eAAiBh3C,KAAKg3C,eAAexqB,KAAKxsB,MAC/CA,KAAK+zC,SAAW/zC,KAAK+zC,SAASvnB,KAAKxsB,MACnCA,KAAKi3C,UAAYj3C,KAAKi3C,UAAUzqB,KAAKxsB,MACrCA,KAAKk3C,QAAUl3C,KAAKk3C,QAAQ1qB,KAAKxsB,MACjCA,KAAKm3C,SAAWn3C,KAAKm3C,SAAS3qB,KAAKxsB,MACnCA,KAAKo3C,SAAWp3C,KAAKo3C,SAAS5qB,KAAKxsB,MACnCA,KAAKq3C,QAAUr3C,KAAKq3C,QAAQ7qB,KAAKxsB,MACjCA,KAAKs3C,QAAUt3C,KAAKs3C,QAAQ9qB,KAAKxsB,MACjCA,KAAKu3C,YAAcv3C,KAAKu3C,YAAY/qB,KAAKxsB,MACzCA,KAAKw3C,oBAAsBx3C,KAAKw3C,oBAAoBhrB,KAAKxsB,MACzDA,KAAKy3C,cAGLz3C,KAAK03C,cACL13C,KAAKi3C,WACP,CACAU,UAAAA,CAAWzF,GACT,IAAI0F,EACJ,OAAe,MAAR1F,IAAiD,OAA/B0F,EAAe53C,KAAK22C,aAAkB,EAASiB,EAAaD,WAAWzF,GAClG,CAGA,QAAIA,GACF,OAAOlyC,KAAK22C,OAAOzE,IACrB,CACA,QAAIA,CAAKA,GACP,GAAIlyC,KAAK23C,WAAWzF,GAAO,OAC3B,KAAMA,aAAgBH,GAAMS,SAAWxyC,KAAK22C,OAAO7vC,cAAgBmrC,GAAYC,GAK7E,YAHAlyC,KAAK22C,OAAOkB,cAAc,CACxB3F,SAIJ,MAAMyE,EAASzE,aAAgBH,GAAMS,OAASN,EAAOe,GAAW,CAC9Df,SAEFyE,EAAOmB,cAAgB93C,KAAK22C,OAAOmB,cACnC93C,KAAK22C,OAASA,CAChB,CAGA,SAAIrsC,GACF,OAAOtK,KAAK62C,MACd,CACA,SAAIvsC,CAAM4lC,GACJlwC,KAAKsK,QAAU4lC,IACnBlwC,KAAK22C,OAAOrsC,MAAQ4lC,EACpBlwC,KAAK+3C,cAAc,QACrB,CAGA,iBAAID,GACF,OAAO93C,KAAK82C,cACd,CACA,iBAAIgB,CAAc5H,GACZlwC,KAAK83C,gBAAkB5H,IAC3BlwC,KAAK22C,OAAOmB,cAAgB5H,EAC5BlwC,KAAK+3C,cAAc,QACrB,CAGA,iBAAIC,GACF,OAAOh4C,KAAK+2C,cACd,CACA,iBAAIiB,CAAc9H,GACZlwC,KAAKg4C,gBAAkB9H,IAC3BlwC,KAAK22C,OAAOqB,cAAgB9H,EAC5BlwC,KAAK+3C,gBACL/3C,KAAKu3C,cACP,CAGA,cAAIU,GACF,OAAOj4C,KAAK22C,OAAOsB,UACrB,CACA,cAAIA,CAAWv0B,GACT1jB,KAAK22C,OAAOuB,iBAAiBx0B,KACjC1jB,KAAK22C,OAAOsB,WAAav0B,EACzB1jB,KAAK+3C,cAAc,QACrB,CAGA,gBAAII,GACF,OAAOn4C,KAAK22C,OAAOwB,YACrB,CAGAV,WAAAA,GACEz3C,KAAK2K,GAAG2pC,WAAW,CACjBW,gBAAiBj1C,KAAKg3C,eACtBnD,MAAO7zC,KAAK+zC,SACZQ,KAAMv0C,KAAKk3C,QACX1C,MAAOx0C,KAAKo3C,SACZ/R,MAAOrlC,KAAKm3C,SACZ1C,OAAQz0C,KAAKi3C,UACblC,KAAM/0C,KAAKq3C,QACX1C,KAAM30C,KAAKs3C,SAEf,CAGAc,aAAAA,GACMp4C,KAAK2K,IAAI3K,KAAK2K,GAAGwqC,cACvB,CAGAkD,UAAAA,CAAWC,EAAIvqC,GACb,MAAMwqC,EAAYv4C,KAAK42C,WAAW0B,GAC7BC,GACLA,EAAUpxC,SAAQ4lC,GAAKA,EAAEh/B,IAC3B,CAGA,kBAAIslC,GACF,OAAOrzC,KAAKw4C,gBAAkBx4C,KAAKy4C,mBAAqBz4C,KAAK2K,GAAG0oC,cAClE,CAGA,aAAI9B,GACF,OAAOvxC,KAAKw4C,gBAAkBx4C,KAAKy4C,mBAAqBz4C,KAAK2K,GAAG4oC,YAClE,CACA,aAAIhC,CAAUmH,GACP14C,KAAK2K,IAAO3K,KAAK2K,GAAGgpC,WACzB3zC,KAAK2K,GAAG8oC,OAAOiF,EAAKA,GACpB14C,KAAKg3C,iBACP,CAGAA,cAAAA,GAEMh3C,KAAKm4C,eAAiBn4C,KAAK2K,GAAGL,OAChCqoC,QAAQC,KAAK,2GAEf5yC,KAAK24C,WAAa,CAChB5sB,MAAO/rB,KAAKqzC,eACZlnB,IAAKnsB,KAAKuxC,UAEd,CAGAmG,WAAAA,GACE13C,KAAK22C,OAAOrsC,MAAQtK,KAAK2K,GAAGL,MAC5BtK,KAAK62C,OAAS72C,KAAK22C,OAAOrsC,MAC1BtK,KAAK82C,eAAiB92C,KAAK22C,OAAOmB,cAClC93C,KAAK+2C,eAAiB/2C,KAAK22C,OAAOqB,aACpC,CAGAD,aAAAA,CAAcxG,GACZ,MAAMqH,EAAmB54C,KAAK22C,OAAOmB,cAC/Be,EAAW74C,KAAK22C,OAAOrsC,MACvBwuC,EAAmB94C,KAAK22C,OAAOqB,cAC/Be,EAAkB/4C,KAAKm4C,aACvBa,EAAYh5C,KAAK83C,gBAAkBc,GAAoB54C,KAAKsK,QAAUuuC,GAAY74C,KAAK+2C,iBAAmB+B,EAChH94C,KAAK82C,eAAiB8B,EACtB54C,KAAK62C,OAASgC,EACd74C,KAAK+2C,eAAiB+B,EAClB94C,KAAK2K,GAAGL,QAAUyuC,IAAiB/4C,KAAK2K,GAAGL,MAAQyuC,GACrC,SAAdxH,EAAsBvxC,KAAKu3C,cAAoC,MAAbhG,IAAmBvxC,KAAKuxC,UAAYA,GACtFyH,GAAWh5C,KAAKi5C,oBACfj5C,KAAKk5C,mBAAqBF,IAAah5C,KAAK6I,QAAQytC,SAAUt2C,KAAK6I,QAAQ3E,KAAK,CACnF4zC,cAAec,EACfpD,UAAW,CACTzpB,MAAO/rB,KAAKqzC,eACZlnB,IAAKnsB,KAAKuxC,YAGhB,CAGAsG,aAAAA,CAAclhC,GACZ,MAAM,KACJu7B,KACGiH,GACDxiC,EAEEyiC,GAAcp5C,KAAK23C,WAAWzF,GAC9BmH,EAAar5C,KAAK22C,OAAO2C,iBAAiBH,GAC5CC,IAAYp5C,KAAKkyC,KAAOA,GACxBmH,GAAYr5C,KAAK22C,OAAOkB,cAAcsB,IAEtCC,GAAcC,IAAYr5C,KAAK+3C,eACrC,CAGAwB,YAAAA,CAAahI,GACM,MAAbA,IACJvxC,KAAKuxC,UAAYA,EAGjBvxC,KAAKw5C,mBAAmBjI,GAC1B,CAGAiI,kBAAAA,CAAmBjI,GACjBvxC,KAAKy5C,qBACLz5C,KAAKy4C,mBAAqBlH,EAC1BvxC,KAAKw4C,gBAAkBx0C,YAAW,KAC3BhE,KAAK2K,KACV3K,KAAKuxC,UAAYvxC,KAAKy4C,mBACtBz4C,KAAKy5C,qBAAoB,GACxB,GACL,CAGAR,iBAAAA,GACEj5C,KAAKq4C,WAAW,SAAUr4C,KAAK05C,aAC3B15C,KAAK22C,OAAOgD,YAAY35C,KAAKq4C,WAAW,WAAYr4C,KAAK05C,YAC/D,CAGAD,kBAAAA,GACMz5C,KAAKw4C,kBACP30C,aAAa7D,KAAKw4C,wBACXx4C,KAAKw4C,gBAEhB,CAGAjB,WAAAA,GACEv3C,KAAKuxC,UAAYvxC,KAAK22C,OAAOiD,gBAAgB55C,KAAK22C,OAAOiD,gBAAgB55C,KAAKuxC,UAAWf,IAC3F,CAGAgH,mBAAAA,GACMx3C,KAAKqzC,iBAAmBrzC,KAAKuxC,WACjCvxC,KAAKu3C,aACP,CAGAtrC,EAAAA,CAAGqsC,EAAItpC,GAGL,OAFKhP,KAAK42C,WAAW0B,KAAKt4C,KAAK42C,WAAW0B,GAAM,IAChDt4C,KAAK42C,WAAW0B,GAAIp0C,KAAK8K,GAClBhP,IACT,CAGA8O,GAAAA,CAAIwpC,EAAItpC,GACN,IAAKhP,KAAK42C,WAAW0B,GAAK,OAAOt4C,KACjC,IAAKgP,EAEH,cADOhP,KAAK42C,WAAW0B,GAChBt4C,KAET,MAAM65C,EAAS75C,KAAK42C,WAAW0B,GAAIntC,QAAQ6D,GAE3C,OADI6qC,GAAU,GAAG75C,KAAK42C,WAAW0B,GAAIppC,OAAO2qC,EAAQ,GAC7C75C,IACT,CAGA+zC,QAAAA,CAAShmC,GACP/N,KAAK05C,YAAc3rC,EACnB/N,KAAKy5C,qBACL,MAAMK,EAAU,IAAI5I,GAAc,CAEhC5mC,MAAOtK,KAAK2K,GAAGL,MACfinC,UAAWvxC,KAAKuxC,UAEhBH,SAAUpxC,KAAKm4C,aACf9G,aAAcrxC,KAAK24C,aAEfoB,EAAc/5C,KAAK22C,OAAOqB,cAC1B5nC,EAASpQ,KAAK22C,OAAOznC,OAAO4qC,EAAQ3I,eAAgB2I,EAAQpI,QAAQvvC,OAAQ23C,EAAQtI,SAAUsI,EAAQhI,gBAAiB,CAC3H+B,OAAO,EACPmG,KAAK,IACJ5pC,OAIG0hC,EAAkBiI,IAAgB/5C,KAAK22C,OAAOqB,cAAgB8B,EAAQhI,gBAAkBtB,GAC9F,IAAIe,EAAYvxC,KAAK22C,OAAOiD,gBAAgBE,EAAQ3I,eAAiB/gC,EAAQ0hC,GACzEA,IAAoBtB,KAAgBe,EAAYvxC,KAAK22C,OAAOiD,gBAAgBrI,EAAWf,KAC3FxwC,KAAK+3C,cAAcxG,UACZvxC,KAAK05C,WACd,CAGAzC,SAAAA,GACMj3C,KAAKm4C,eAAiBn4C,KAAK2K,GAAGL,OAAOtK,KAAK03C,cAC9C13C,KAAK22C,OAAOsD,WACZj6C,KAAK+3C,gBACL/3C,KAAKg3C,gBACP,CAGAE,OAAAA,CAAQoB,GACNA,EAAGhxB,iBACHgxB,EAAGvvB,iBACL,CAGAouB,QAAAA,CAASmB,GACPt4C,KAAKw3C,qBACP,CAGAJ,QAAAA,CAASkB,GACPt4C,KAAKw3C,qBACP,CACAH,OAAAA,GACEr3C,KAAKk6C,mBAAmBl6C,KAAK6I,QAAQksC,OACvC,CACAuC,OAAAA,GACEt3C,KAAKk6C,mBAAmBl6C,KAAK6I,QAAQ8rC,OACvC,CACAuF,kBAAAA,CAAmB3D,GACZA,IACLv2C,KAAKk5C,kBAAmB,EACxBl5C,KAAK83C,cAAgBvB,EAAMuB,cAC3B93C,KAAK2K,GAAG8oC,OAAO8C,EAAMf,UAAUzpB,MAAOwqB,EAAMf,UAAUrpB,KACtDnsB,KAAKg3C,iBACLh3C,KAAKk5C,kBAAmB,EAC1B,CAGAhjB,OAAAA,GACEl2B,KAAKo4C,gBACLp4C,KAAK42C,WAAWz0C,OAAS,SAClBnC,KAAK2K,EACd,GCtVF,MAAMwvC,GASJ,gBAAO12B,CAAU22B,GACf,OAAOpwC,MAAMY,QAAQwvC,GAAQA,EAAO,CAACA,EAAM,IAAID,GACjD,CACArzC,WAAAA,CAAYgzC,GACV7zC,OAAOkS,OAAOnY,KAAM,CAClBwxC,SAAU,GACV6I,YAAa,GACbC,UAAW,EACX55B,MAAM,GACLo5B,EACL,CAGAS,SAAAA,CAAUT,GAKR,OAJA95C,KAAKwxC,UAAYsI,EAAQtI,SACzBxxC,KAAKq6C,aAAeP,EAAQO,YAC5Br6C,KAAKs6C,WAAaR,EAAQQ,UAC1Bt6C,KAAK0gB,KAAO1gB,KAAK0gB,MAAQo5B,EAAQp5B,KAC1B1gB,IACT,CAGA,UAAIoQ,GACF,OAAOpQ,KAAKs6C,UAAYt6C,KAAKwxC,SAASrvC,MACxC,CACA,YAAIq4C,GACF,OAAOC,QAAQz6C,KAAKq6C,cAAgBr6C,KAAK0gB,IAC3C,CACAg6B,MAAAA,CAAOZ,GACL,OAAO95C,KAAKwxC,WAAasI,EAAQtI,UAAYxxC,KAAKs6C,YAAcR,EAAQQ,WAAat6C,KAAKq6C,cAAgBP,EAAQO,aAAer6C,KAAK0gB,OAASo5B,EAAQp5B,IACzJ,EAEFqxB,GAAMoI,cAAgBA,GC3CtB,MAAMQ,GAOJ7zC,WAAAA,CAAYwD,EAAO01B,EAAM2P,QACT,IAAVrlC,IACFA,EAAQ,SAEG,IAAT01B,IACFA,EAAO,GAEThgC,KAAKsK,MAAQA,EACbtK,KAAKggC,KAAOA,EACZhgC,KAAK2vC,KAAOA,CACd,CACAr8B,QAAAA,GACE,OAAOtT,KAAKsK,KACd,CACAvD,MAAAA,CAAO8qC,GACL7xC,KAAKsK,OAASkhC,OAAOqG,EACvB,CACA+I,QAAAA,CAASjE,GACP,OAAOA,EAAO/kC,OAAO5R,KAAKsT,WAAY,CACpCu+B,MAAM,IACL0I,UAAU5D,EAAOkE,qBACtB,CACA,SAAItE,GACF,MAAO,CACLjsC,MAAOtK,KAAKsK,MACZ01B,KAAMhgC,KAAKggC,KACX2P,KAAM3vC,KAAK2vC,KAEf,CACA,SAAI4G,CAAMA,GACRtwC,OAAOkS,OAAOnY,KAAMu2C,EACtB,CACAroC,OAAAA,CAAQ4sC,GACN,IAAK96C,KAAKsK,MAAMnI,QAAuB,MAAb24C,GAAqB96C,KAAKggC,MAAQ8a,EAAW,MAAO,GAC9E,MAAMC,EAAY/6C,KAAKsK,MAAM,GAE7B,OADAtK,KAAKsK,MAAQtK,KAAKsK,MAAM1F,MAAM,GACvBm2C,CACT,CACAp3C,KAAAA,GACE,IAAK3D,KAAKsK,MAAMnI,OAAQ,MAAO,GAC/B,MAAM44C,EAAY/6C,KAAKsK,MAAMtK,KAAKsK,MAAMnI,OAAS,GAEjD,OADAnC,KAAKsK,MAAQtK,KAAKsK,MAAM1F,MAAM,GAAI,GAC3Bm2C,CACT,ECvCF,MAAMvI,GA2BJ1rC,WAAAA,CAAY6P,GACV3W,KAAK62C,OAAS,GACd72C,KAAKg7C,QAAQ,IACRxI,GAAOyI,YACPtkC,IAEL3W,KAAKk7C,cAAe,CACtB,CAGArD,aAAAA,CAAclhC,GACP3W,KAAKs5C,iBAAiB3iC,IAC3B3W,KAAKm7C,iBAAiBn7C,KAAKg7C,QAAQxuB,KAAKxsB,KAAM2W,GAChD,CAGAqkC,OAAAA,CAAQrkC,GACN1Q,OAAOkS,OAAOnY,KAAM2W,EACtB,CAGA,SAAI4/B,GACF,MAAO,CACLM,OAAQ72C,KAAKsK,MACbysC,eAAgB/2C,KAAKg4C,cAEzB,CACA,SAAIzB,CAAMA,GACRv2C,KAAK62C,OAASN,EAAMM,MACtB,CAGA5H,KAAAA,GACEjvC,KAAK62C,OAAS,EAChB,CACA,SAAIvsC,GACF,OAAOtK,KAAK62C,MACd,CACA,SAAIvsC,CAAMA,GACRtK,KAAK2tC,QAAQrjC,EAAO,CAClBupC,OAAO,GAEX,CAGAlG,OAAAA,CAAQrjC,EAAO8wC,QACC,IAAVA,IACFA,EAAQ,CACNvH,OAAO,IAGX7zC,KAAKivC,QACLjvC,KAAK4R,OAAOtH,EAAO8wC,EAAO,IAC1Bp7C,KAAKi6C,UACP,CACA,iBAAInC,GACF,OAAO93C,KAAKsK,KACd,CACA,iBAAIwtC,CAAcxtC,GAChBtK,KAAK2tC,QAAQrjC,EAAO,CAAC,EACvB,CACA,cAAI2tC,GACF,OAAOj4C,KAAKq7C,MAAQr7C,KAAKq7C,MAAMr7C,KAAKsK,MAAOtK,MAAQA,KAAK83C,aAC1D,CACA,cAAIG,CAAW3tC,GACTtK,KAAKqqC,OACPrqC,KAAKsK,MAAQtK,KAAKqqC,OAAO//B,EAAOtK,MAEhCA,KAAK83C,cAAgBtM,OAAOlhC,EAEhC,CAGA,iBAAI0tC,GACF,OAAOh4C,KAAKs7C,aAAa,EAAGt7C,KAAKm4C,aAAah2C,OAAQ,CACpD63C,KAAK,GAET,CACA,iBAAIhC,CAAc1tC,GAChBtK,KAAK2tC,QAAQrjC,EAAO,CAClB0vC,KAAK,GAET,CACA,gBAAI7B,GACF,OAAOn4C,KAAKsK,KACd,CACA,cAAIqvC,GACF,OAAO,CACT,CACA,YAAI4B,GACF,OAAOv7C,KAAK25C,UACd,CAGAC,eAAAA,CAAgBrI,EAAWnwB,GACzB,OAAOmwB,CACT,CACAiK,mBAAAA,CAAoBC,EAASC,GAO3B,YANgB,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAErBY,KAAKC,IAAIhD,KAAKm4C,aAAah2C,OAAQu5C,EAAQD,EACpD,CAGAH,YAAAA,CAAaG,EAASC,EAAON,GAO3B,YANgB,IAAZK,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAErBnC,KAAKm4C,aAAavzC,MAAM62C,EAASC,EAC1C,CAGAC,WAAAA,CAAYF,EAASC,GAOnB,YANgB,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAErB,IAAIw4C,GAAsB36C,KAAKs7C,aAAaG,EAASC,GAAQD,EACtE,CAGAG,UAAAA,CAAW/J,GAET,OADI5B,GAAS4B,KAAOA,EAAO,IAAI8I,GAAsBnP,OAAOqG,KACrDA,EAAK+I,SAAS56C,KACvB,CAGA67C,cAAAA,CAAeC,EAAIV,GACjB,OAAKU,GACL97C,KAAK62C,QAAUiF,EACR,IAAI3B,GAAc,CACvB3I,SAAUsK,EACVzB,YAAayB,KAJC,IAAI3B,EAMtB,CAGA4B,WAAAA,CAAYD,EAAIV,EAAOY,QACP,IAAVZ,IACFA,EAAQ,CAAC,GAEX,MAAMa,EAAkBj8C,KAAKu2C,MAC7B,IAAIuD,EAEJ,IADCgC,EAAIhC,GAAW95C,KAAKk8C,cAAcJ,EAAIV,GACnCU,IACFhC,EAAUA,EAAQS,UAAUv6C,KAAK67C,eAAeC,EAAIV,KAK/CtB,EAAQO,aAAgC,QAAjBr6C,KAAKm8C,SAAmB,CAClD,MAAMC,EAAap8C,KAAKu2C,MACxBv2C,KAAKu2C,MAAQ0F,EACb,IAAII,EAAar8C,KAAKs8C,IAAIlB,GAC1B,MAAMmB,EAAYv8C,KAAK67C,eAAeC,EAAIV,GAC1CiB,EAAaA,EAAW9B,UAAUgC,GAI9BA,EAAUlC,aAAegC,EAAW3B,OAAOZ,GAC7CA,EAAUuC,EAEVr8C,KAAKu2C,MAAQ6F,CAEjB,CAEF,GAAItC,EAAQtI,SAAU,CACpB,IAAIgL,EACAC,GAAsC,IAA3Bz8C,KAAK08C,WAAWtB,GAC/B,GAAIqB,GAAyB,MAAbT,EAAmB,CAEjC,MAAMW,EAAkB38C,KAAKu2C,MAC7B,IAAuB,IAAnBv2C,KAAK48C,UAAoB,CAC3BJ,EAAiBR,EAAUzF,MAC3B,IAAK,IAAIl0C,EAAI,EAAGA,EAAIy3C,EAAQO,YAAYl4C,SAAUE,EAChD25C,EAAU9tC,QAAQlO,KAAKm4C,aAAah2C,OAAS23C,EAAQQ,UAEzD,CACA,IAAIuC,EAAc78C,KAAK47C,WAAWI,GAIlC,GAHAS,EAAWI,EAAYxC,YAAYl4C,SAAW65C,EAAU1oC,WAAWnR,SAG7Ds6C,GAAYI,EAAYrL,UAAgC,UAAnBxxC,KAAK48C,WAAuB,CACrE58C,KAAKu2C,MAAQoG,EACbH,EAAiBR,EAAUzF,MAC3B,IAAK,IAAIl0C,EAAI,EAAGA,EAAIy3C,EAAQO,YAAYl4C,SAAUE,EAChD25C,EAAUr4C,QAEZk5C,EAAc78C,KAAK47C,WAAWI,GAC9BS,EAAWI,EAAYxC,YAAYl4C,SAAW65C,EAAU1oC,WAAWnR,MACrE,CAGIs6C,GAAYI,EAAYrL,WAAUxxC,KAAKu2C,MAAQoG,EACrD,CAGKF,IACH3C,EAAU,IAAIK,GACdn6C,KAAKu2C,MAAQ0F,EACTD,GAAaQ,IAAgBR,EAAUzF,MAAQiG,GAEvD,CACA,OAAO1C,CACT,CAGAe,kBAAAA,GACE,OAAO,IAAIV,EACb,CAGA2C,YAAAA,GACE,OAAO,IAAI3C,EACb,CAGAvoC,MAAAA,CAAOs+B,EAAKkL,EAAOvJ,GACjB,IAAK5B,GAASC,GAAM,MAAM,IAAI1uB,MAAM,0BACpC,MAAMw6B,EAAY/L,GAAS4B,GAAQ,IAAI8I,GAAsBnP,OAAOqG,IAASA,EAE7E,IAAIiI,EADS,MAATsB,GAAiBA,EAAMvJ,OAAMuJ,EAAM2B,iBAAmB/8C,KAAKu2C,QAE9DrG,EAAK4J,GAAW95C,KAAKg9C,UAAU9M,EAAKkL,GACrC,IAAK,IAAI6B,EAAK,EAAGA,EAAK/M,EAAI/tC,SAAU86C,EAAI,CACtC,MAAMr3C,EAAI5F,KAAK+7C,YAAY7L,EAAI+M,GAAK7B,EAAOY,GAC3C,IAAKp2C,EAAEy0C,cAAgBr6C,KAAKk9C,cAAchN,EAAI+M,GAAK7B,EAAOY,GAAY,MACtElC,EAAQS,UAAU30C,EACpB,CAYA,QAXoB,IAAf5F,KAAKm9C,OAAiC,WAAfn9C,KAAKm9C,QAAgC,MAAT/B,GAAiBA,EAAMvH,OAAS3D,GACtF4J,EAAQS,UAAUv6C,KAAK88C,gBAIR,MAAbd,IACFlC,EAAQQ,WAAat6C,KAAK47C,WAAWI,GAAW1B,WAK3CR,CACT,CACAntC,MAAAA,CAAO8uC,EAASC,GAQd,YAPgB,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAE5BnC,KAAK62C,OAAS72C,KAAKm4C,aAAavzC,MAAM,EAAG62C,GAAWz7C,KAAKm4C,aAAavzC,MAAM82C,GACrE,IAAIvB,EACb,CAGAgB,gBAAAA,CAAiBzvC,GACf,GAAI1L,KAAKo9C,cAAgBp9C,KAAKk7C,aAAc,OAAOxvC,IACnD1L,KAAKo9C,aAAc,EACnB,MAAMC,EAAWr9C,KAAKg4C,cAChB1tC,EAAQtK,KAAKsK,MACbgzC,EAAM5xC,IAQZ,OAPA1L,KAAKg4C,cAAgBqF,EAEjBr9C,KAAKsK,OAAStK,KAAKsK,QAAUA,GAAuC,IAA9BA,EAAMa,QAAQnL,KAAKsK,SAC3DtK,KAAK4R,OAAOtH,EAAM1F,MAAM5E,KAAKm4C,aAAah2C,QAAS,CAAC,EAAG,IACvDnC,KAAKi6C,mBAEAj6C,KAAKo9C,YACLE,CACT,CACAC,WAAAA,CAAY7xC,GACV,GAAI1L,KAAKw9C,YAAcx9C,KAAKk7C,aAAc,OAAOxvC,EAAG1L,MACpDA,KAAKw9C,WAAY,EACjB,MAAMjH,EAAQv2C,KAAKu2C,MACb+G,EAAM5xC,EAAG1L,MAGf,OAFAA,KAAKu2C,MAAQA,SACNv2C,KAAKw9C,UACLF,CACT,CACAJ,aAAAA,CAAcpB,EAAIV,EAAOY,GACvB,OAAOvB,QAAQz6C,KAAKy9C,YACtB,CAGAT,SAAAA,CAAU9M,EAAKkL,GAIb,YAHc,IAAVA,IACFA,EAAQ,CAAC,GAEJjB,GAAc12B,UAAUzjB,KAAK09C,QAAU19C,KAAK09C,QAAQxN,EAAKlwC,KAAMo7C,GAASlL,EACjF,CAGAgM,aAAAA,CAAchM,EAAKkL,GAIjB,YAHc,IAAVA,IACFA,EAAQ,CAAC,GAEJjB,GAAc12B,UAAUzjB,KAAK29C,YAAc39C,KAAK29C,YAAYzN,EAAKlwC,KAAMo7C,GAASlL,EACzF,CAGAwM,UAAAA,CAAWtB,GACT,QAASp7C,KAAK49C,UAAY59C,KAAK49C,SAAS59C,KAAKsK,MAAOtK,KAAMo7C,OAAap7C,KAAK0S,QAAU1S,KAAK0S,OAAOgqC,WAAWtB,GAC/G,CAGAnB,QAAAA,GACMj6C,KAAKy0C,QAAQz0C,KAAKy0C,OAAOz0C,KAAKsK,MAAOtK,KAC3C,CACAkP,MAAAA,CAAO6c,EAAO8xB,EAAarM,EAAUM,EAAiBsJ,QACnC,IAAb5J,IACFA,EAAW,SAEW,IAApBM,IACFA,EAAkBtB,SAEN,IAAV4K,IACFA,EAAQ,CACNvH,OAAO,IAGX,MAAMiK,EAAU/xB,EAAQ8xB,EAClBhM,EAAO7xC,KAAK27C,YAAYmC,GACxBC,GAA6B,IAAf/9C,KAAKm9C,OAAiC,WAAfn9C,KAAKm9C,MAChD,IAAIpD,EACAgE,IACFjM,EZrVN,SAAwB1wB,GACtB,OAAQA,GACN,KAAKovB,GACH,OAAOA,GACT,KAAKA,GACH,OAAOA,GACT,QACE,OAAOpvB,EAEb,CY4UwB48B,CAAelM,GACjCiI,EAAc/5C,KAAKs7C,aAAa,EAAGwC,EAAS,CAC1C9D,KAAK,KAGT,IAAI7I,EAAiBplB,EACrB,MAAM+tB,EAAU,IAAIK,GAUpB,GAPIrI,IAAoBtB,KACtBW,EAAiBnxC,KAAK45C,gBAAgB7tB,EAAO8xB,EAAc,GAAe,IAAV9xB,IAAgBgyB,EAAcvN,GAAiBsB,GAG/GgI,EAAQQ,UAAYnJ,EAAiBplB,GAEvC+tB,EAAQS,UAAUv6C,KAAK2M,OAAOwkC,IAC1B4M,GAAejM,IAAoBtB,IAAkBuJ,IAAgB/5C,KAAKg4C,cAC5E,GAAIlG,IAAoBtB,GAAsB,CAC5C,IAAIyN,EACJ,KAAOlE,IAAgB/5C,KAAKg4C,gBAAkBiG,EAAYj+C,KAAKm4C,aAAah2C,SAC1E23C,EAAQS,UAAU,IAAIJ,GAAc,CAClCG,WAAY,KACVC,UAAUv6C,KAAK2M,OAAOsxC,EAAY,GAE1C,MAAWnM,IAAoBtB,IAC7BqB,EAAK3jC,UAGT,OAAO4rC,EAAQS,UAAUv6C,KAAK4R,OAAO4/B,EAAU4J,EAAOvJ,GACxD,CACA8F,UAAAA,CAAWzF,GACT,OAAOlyC,KAAKkyC,OAASA,CACvB,CACAoH,gBAAAA,CAAiB3iC,GACf,OAAQ+5B,GAAe1wC,KAAM2W,EAC/B,CACAuhC,gBAAAA,CAAiB5tC,GACf,MAAM4zC,EAAOl+C,KAAKi4C,WAClB,OAAO3tC,IAAU4zC,GAAQ1L,GAAO2L,aAAa13C,SAAS6D,IAAUkoC,GAAO2L,aAAa13C,SAASy3C,MAAUl+C,KAAKqqC,QAASrqC,KAAKqqC,OAAO//B,EAAOtK,QAAUA,KAAKqqC,OAAOrqC,KAAKi4C,WAAYj4C,KACjL,CACAs8C,GAAAA,CAAIlB,GACF,OAAO,IAAIjB,EACb,EAEF3H,GAAOyI,SAAW,CAChBwC,aAAa,GAEfjL,GAAO2L,aAAe,MAAC95C,EAAW,KAAM,IACxC0tC,GAAMS,OAASA,GC9Zf,MAAM4L,GAGJt3C,WAAAA,CAAYu3C,EAAQre,QACH,IAAXqe,IACFA,EAAS,SAEE,IAATre,IACFA,EAAO,GAEThgC,KAAKq+C,OAASA,EACdr+C,KAAKggC,KAAOA,CACd,CACA1sB,QAAAA,GACE,OAAOtT,KAAKq+C,OAAO/xC,IAAIk/B,QAAQre,KAAK,GACtC,CACApmB,MAAAA,CAAOu3C,GACL,IAAK9S,OAAO8S,GAAY,OACxBA,EAAYrO,GAASqO,GAAa,IAAI3D,GAAsBnP,OAAO8S,IAAcA,EACjF,MAAMC,EAAYv+C,KAAKq+C,OAAOr+C,KAAKq+C,OAAOl8C,OAAS,GAC7Cq8C,EAAaD,IAEnBA,EAAU5O,OAAS2O,EAAU3O,MAA0B,MAAlB2O,EAAU3O,OAE/C2O,EAAUte,OAASue,EAAUve,KAAOue,EAAUjrC,WAAWnR,OACzD,GAAIm8C,aAAqB3D,GAEnB6D,EAEFD,EAAUx3C,OAAOu3C,EAAUhrC,YAG3BtT,KAAKq+C,OAAOn6C,KAAKo6C,QAEd,GAAIA,aAAqBF,GAAmB,CACjD,GAAsB,MAAlBE,EAAU3O,KAAc,CAE1B,IAAI8O,EACJ,KAAOH,EAAUD,OAAOl8C,QAAsC,MAA5Bm8C,EAAUD,OAAO,GAAG1O,MACpD8O,EAAiBH,EAAUD,OAAO16C,QAClC86C,EAAeze,MAAQse,EAAUte,KACjChgC,KAAK+G,OAAO03C,EAEhB,CAGIH,EAAUhrC,aAEZgrC,EAAU3O,KAAO2O,EAAUI,WAC3B1+C,KAAKq+C,OAAOn6C,KAAKo6C,GAErB,CACF,CACA1D,QAAAA,CAASjE,GACP,KAAMA,aAAkB5E,GAAMK,eAE5B,OADa,IAAIuI,GAAsB36C,KAAKsT,YAChCsnC,SAASjE,GAEvB,MAAMmD,EAAU,IAAIK,GACpB,IAAK,IAAI8C,EAAK,EAAGA,EAAKj9C,KAAKq+C,OAAOl8C,SAAU86C,EAAI,CAC9C,MAAM0B,EAAQ3+C,KAAKq+C,OAAOpB,GACpB2B,EAAgBjI,EAAOkI,eAAelI,EAAOwB,aAAah2C,QAC1DwtC,EAAOgP,EAAMhP,KACnB,IAAImP,EAWJ,GAVY,MAARnP,KAEHiP,GAAiBA,EAAc1tC,OAASy+B,MACnCgP,aAAiBP,IAErBzH,EAAOoI,OAAO5zC,QAAQwkC,IAAS,IAC7BmK,EAAQS,UAAU5D,EAAOkE,mBAAmBlL,IAE9CmP,EAAaH,aAAiBP,IAAqBzH,EAAOqI,QAAQrP,IAEhEmP,EAAY,CACd,MAAMjC,EAAciC,EAAWlD,WAAW+C,GAC1C7E,EAAQS,UAAUsC,GAGlB,MAAMoC,EAAcN,EAAMrrC,WAAW1O,MAAMi4C,EAAYxC,YAAYl4C,QAC/D88C,GAAanF,EAAQS,UAAU5D,EAAO/kC,OAAOqtC,EAAa,CAC5DpN,MAAM,IAEV,MACEiI,EAAQS,UAAU5D,EAAO/kC,OAAO+sC,EAAMrrC,WAAY,CAChDu+B,MAAM,IAGZ,CACA,OAAOiI,CACT,CACA,SAAIvD,GACF,MAAO,CACL8H,OAAQr+C,KAAKq+C,OAAO/xC,KAAIC,GAAKA,EAAEgqC,QAC/BvW,KAAMhgC,KAAKggC,KACX2P,KAAM3vC,KAAK2vC,KACX+O,WAAY1+C,KAAK0+C,WAErB,CACA,SAAInI,CAAMA,GACR,MAAM,OACJ8H,KACGrtC,GACDulC,EACJtwC,OAAOkS,OAAOnY,KAAMgR,GACpBhR,KAAKq+C,OAASA,EAAO/xC,KAAI4yC,IACvB,MAAMP,EAAQ,WAAYO,EAAS,IAAId,GAAsB,IAAIzD,GAEjE,OADAgE,EAAMpI,MAAQ2I,EACPP,CAAK,GAEhB,CACAzwC,OAAAA,CAAQ4sC,GACN,IAAK96C,KAAKq+C,OAAOl8C,QAAuB,MAAb24C,GAAqB96C,KAAKggC,MAAQ8a,EAAW,MAAO,GAC/E,MAAMqE,EAA6B,MAAbrE,EAAoBA,EAAY96C,KAAKggC,KAAO8a,EAClE,IAAImC,EAAK,EACT,KAAOA,EAAKj9C,KAAKq+C,OAAOl8C,QAAQ,CAC9B,MAAMw8C,EAAQ3+C,KAAKq+C,OAAOpB,GACpBlC,EAAY4D,EAAMzwC,QAAQixC,GAChC,GAAIR,EAAMrrC,WAAY,CAGpB,IAAKynC,EAAW,QACdkC,CACJ,MAEEj9C,KAAKq+C,OAAOnvC,OAAO+tC,EAAI,GAEzB,GAAIlC,EAAW,OAAOA,CACxB,CACA,MAAO,EACT,CACAp3C,KAAAA,GACE,IAAK3D,KAAKq+C,OAAOl8C,OAAQ,MAAO,GAChC,IAAI86C,EAAKj9C,KAAKq+C,OAAOl8C,OAAS,EAC9B,KAAO,GAAK86C,GAAI,CACd,MAAM0B,EAAQ3+C,KAAKq+C,OAAOpB,GACpBlC,EAAY4D,EAAMh7C,QACxB,GAAIg7C,EAAMrrC,WAAY,CAGpB,IAAKynC,EAAW,QACdkC,CACJ,MAEEj9C,KAAKq+C,OAAOnvC,OAAO+tC,EAAI,GAEzB,GAAIlC,EAAW,OAAOA,CACxB,CACA,MAAO,EACT,ECxJF,MAAMqE,GACJt4C,WAAAA,CAAY6vC,EAAQ+B,GAClB14C,KAAK22C,OAASA,EACd32C,KAAKq/C,KAAO,GACZ,MAAM,OACJjvC,EAAM,MACNc,GACEylC,EAAOkI,eAAenG,KAASA,EAAM,EAEzC,CACExnC,MAAO,EACPd,OAAQ,GAGV,CACEc,MAAOlR,KAAK22C,OAAOqI,QAAQ78C,OAC3BiO,OAAQ,IAEVpQ,KAAKoQ,OAASA,EACdpQ,KAAKkR,MAAQA,EACblR,KAAKs/C,IAAK,CACZ,CACA,SAAI1a,GACF,OAAO5kC,KAAK22C,OAAOqI,QAAQh/C,KAAKkR,MAClC,CACA,OAAIwnC,GACF,OAAO14C,KAAK22C,OAAO4I,eAAev/C,KAAKkR,OAASlR,KAAKoQ,MACvD,CACA,SAAImmC,GACF,MAAO,CACLrlC,MAAOlR,KAAKkR,MACZd,OAAQpQ,KAAKoQ,OACbkvC,GAAIt/C,KAAKs/C,GAEb,CACA,SAAI/I,CAAMpzC,GACR8C,OAAOkS,OAAOnY,KAAMmD,EACtB,CACA4F,SAAAA,GACE/I,KAAKq/C,KAAKn7C,KAAKlE,KAAKu2C,MACtB,CACAiJ,QAAAA,GACE,MAAMr8C,EAAInD,KAAKq/C,KAAK1W,MAEpB,OADIxlC,IAAGnD,KAAKu2C,MAAQpzC,GACbA,CACT,CACAs8C,SAAAA,GACMz/C,KAAK4kC,QACL5kC,KAAKkR,MAAQ,IACflR,KAAKkR,MAAQ,EACblR,KAAKoQ,OAAS,GAEZpQ,KAAKkR,OAASlR,KAAK22C,OAAOqI,QAAQ78C,SACpCnC,KAAKkR,MAAQlR,KAAK22C,OAAOqI,QAAQ78C,OAAS,EAC1CnC,KAAKoQ,OAASpQ,KAAK4kC,MAAMuT,aAAah2C,QAE1C,CACAu9C,SAAAA,CAAUh0C,GAER,IADA1L,KAAK+I,YACA/I,KAAKy/C,YAAa,GAAKz/C,KAAKkR,QAASlR,KAAKkR,MAAOlR,KAAKoQ,QAAwC,OAA7BuvC,EAAc3/C,KAAK4kC,YAAiB,EAAS+a,EAAYxH,aAAah2C,SAAW,EAAG,CACxJ,IAAIw9C,EACJ,GAAIj0C,IAAM,OAAO1L,KAAKs/C,IAAK,CAC7B,CACA,OAAOt/C,KAAKs/C,IAAK,CACnB,CACAM,UAAAA,CAAWl0C,GAET,IADA1L,KAAK+I,YACA/I,KAAKy/C,YAAaz/C,KAAKkR,MAAQlR,KAAK22C,OAAOqI,QAAQ78C,SAAUnC,KAAKkR,MAAOlR,KAAKoQ,OAAS,EAC1F,GAAI1E,IAAM,OAAO1L,KAAKs/C,IAAK,EAE7B,OAAOt/C,KAAKs/C,IAAK,CACnB,CACAO,oBAAAA,GACE,OAAO7/C,KAAK0/C,WAAU,KACpB,IAAI1/C,KAAK4kC,MAAMkb,SAAY9/C,KAAK4kC,MAAMt6B,MAEtC,OADAtK,KAAKoQ,OAASpQ,KAAK4kC,MAAMgV,gBAAgB55C,KAAKoQ,OAAQogC,IAClC,IAAhBxwC,KAAKoQ,aAAT,CAAkC,GAEtC,CACA2vC,mBAAAA,GAKE,OAAO//C,KAAK0/C,WAAU,KACpB,IAAI1/C,KAAK4kC,MAAMkb,QAEf,OADA9/C,KAAKoQ,OAASpQ,KAAK4kC,MAAMgV,gBAAgB55C,KAAKoQ,OAAQogC,KAC/C,CAAI,GAEf,CACAwP,sBAAAA,GACE,OAAOhgD,KAAK0/C,WAAU,KACpB,KAAI1/C,KAAK4kC,MAAMkb,SAAW9/C,KAAK4kC,MAAMqb,aAAejgD,KAAK4kC,MAAMt6B,OAE/D,OADAtK,KAAKoQ,OAASpQ,KAAK4kC,MAAMgV,gBAAgB55C,KAAKoQ,OAAQogC,KAC/C,CAAI,GAEf,CACA0P,qBAAAA,GACE,OAAOlgD,KAAK4/C,YAAW,KACrB,IAAI5/C,KAAK4kC,MAAMkb,SAAY9/C,KAAK4kC,MAAMt6B,MAEtC,OADAtK,KAAKoQ,OAASpQ,KAAK4kC,MAAMgV,gBAAgB55C,KAAKoQ,OAAQogC,IAClDxwC,KAAKoQ,SAAWpQ,KAAK4kC,MAAMt6B,MAAMnI,aAArC,CAAwD,GAE5D,CACAg+C,oBAAAA,GACE,OAAOngD,KAAK4/C,YAAW,KACrB,IAAI5/C,KAAK4kC,MAAMkb,QAQf,OALA9/C,KAAKoQ,OAASpQ,KAAK4kC,MAAMgV,gBAAgB55C,KAAKoQ,OAAQogC,KAK/C,CAAI,GAEf,CACA4P,uBAAAA,GACE,OAAOpgD,KAAK4/C,YAAW,KACrB,KAAI5/C,KAAK4kC,MAAMkb,SAAW9/C,KAAK4kC,MAAMqb,aAAejgD,KAAK4kC,MAAMt6B,OAI/D,OADAtK,KAAKoQ,OAASpQ,KAAK4kC,MAAMgV,gBAAgB55C,KAAKoQ,OAAQogC,KAC/C,CAAI,GAEf,EC1HF,MAAM6P,GAaJv5C,WAAAA,CAAY6P,GACV1Q,OAAOkS,OAAOnY,KAAM2W,GACpB3W,KAAK62C,OAAS,GACd72C,KAAK8/C,SAAU,CACjB,CACA,SAAIx1C,GACF,OAAOtK,KAAK62C,MACd,CACA,iBAAIiB,GACF,OAAO93C,KAAKsgD,YAActgD,KAAKsK,MAAQ,EACzC,CACA,iBAAI0tC,GACF,OAAOh4C,KAAKugD,YAAcvgD,KAAKsK,MAAQ,EACzC,CACA,gBAAI6tC,GACF,OAAOn4C,KAAKsK,KACd,CACA2kC,KAAAA,GACEjvC,KAAKugD,aAAc,EACnBvgD,KAAK62C,OAAS,EAChB,CACAlqC,MAAAA,CAAO8uC,EAASC,GASd,YARgB,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAK62C,OAAO10C,QAEtBnC,KAAK62C,OAAS72C,KAAK62C,OAAOjyC,MAAM,EAAG62C,GAAWz7C,KAAK62C,OAAOjyC,MAAM82C,GAC3D17C,KAAK62C,SAAQ72C,KAAKugD,aAAc,GAC9B,IAAIpG,EACb,CACAP,eAAAA,CAAgBrI,EAAWnwB,QACP,IAAdA,IACFA,EAAYovB,IAEd,MACMgQ,EAASxgD,KAAK62C,OAAO10C,OAC3B,OAAQif,GACN,KAAKovB,GACL,KAAKA,GACH,OALW,EASb,QACE,OAAOgQ,EAEb,CACAhF,mBAAAA,CAAoBC,EAASC,GAO3B,YANgB,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAK62C,OAAO10C,QAEfnC,KAAKugD,YAAc7E,EAAQD,EAAU,CAC9C,CACAH,YAAAA,CAAaG,EAASC,EAAON,GAU3B,YATgB,IAAZK,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAK62C,OAAO10C,aAER,IAAVi5C,IACFA,EAAQ,CAAC,GAEJA,EAAMpB,KAAOh6C,KAAKugD,aAAevgD,KAAK62C,OAAOjyC,MAAM62C,EAASC,IAAU,EAC/E,CACA,cAAI/B,GACF,OAAO,CACT,CACA,YAAI4B,GACF,OAAOd,QAAQz6C,KAAK62C,OACtB,CACAkF,WAAAA,CAAYD,EAAIV,GAId,QAHc,IAAVA,IACFA,EAAQ,CAAC,GAEPp7C,KAAKu7C,SAAU,OAAO,IAAIpB,GAC9B,MAAMsG,GAA6B,IAAfzgD,KAAKm9C,OAAiC,WAAfn9C,KAAKm9C,MAE1CuD,EADW1gD,KAAK2gD,OAAS7E,IACC97C,KAAKsgD,aAAelF,EAAMvH,OAASuH,EAAMpB,QAAUoB,EAAMpB,MAAQyG,KAAiBrF,EAAMvJ,KAClHiI,EAAU,IAAIK,GAAc,CAChC3I,SAAUxxC,KAAK2gD,KACftG,YAAaqG,EAAa1gD,KAAK2gD,KAAO,KAIxC,OAFA3gD,KAAK62C,OAAS72C,KAAK2gD,KACnB3gD,KAAKugD,YAAcG,IAAetF,EAAMpB,KAAOoB,EAAMvH,OAC9CiG,CACT,CACAgD,YAAAA,GACE,OAAO98C,KAAK+7C,YAAY/7C,KAAK2gD,KAAM,CACjC9O,MAAM,GAEV,CACAgJ,kBAAAA,GACE,MAAMf,EAAU,IAAIK,GACpB,OAAIn6C,KAAKu7C,WACTv7C,KAAK62C,OAASiD,EAAQtI,SAAWxxC,KAAK2gD,MADZ7G,CAG5B,CACA6B,WAAAA,GACE,OAAO,IAAIhB,GAAsB,GACnC,CACAiB,UAAAA,CAAW/J,GAET,OADI5B,GAAS4B,KAAOA,EAAO,IAAI8I,GAAsBnP,OAAOqG,KACrDA,EAAK+I,SAAS56C,KACvB,CACA4R,MAAAA,CAAOs+B,EAAKkL,EAAOvJ,GACjB,MAAMiI,EAAU95C,KAAK+7C,YAAY7L,EAAI,GAAIkL,GAIzC,OAHY,MAARvJ,IACFiI,EAAQQ,WAAat6C,KAAK47C,WAAW/J,GAAMyI,WAEtCR,CACT,CACAG,QAAAA,GAAY,CACZ,SAAI1D,GACF,MAAO,CACLM,OAAQ72C,KAAK62C,OACbE,eAAgB/2C,KAAKg4C,cAEzB,CACA,SAAIzB,CAAMA,GACRv2C,KAAK62C,OAASN,EAAMM,OACpB72C,KAAKugD,YAAc9F,QAAQlE,EAAMQ,eACnC,CACAuF,GAAAA,CAAIlB,GACF,OAAOp7C,KAAK66C,oBACd,EC/IF,MAAM+F,GAiBJ95C,WAAAA,CAAY6P,GACV,MAAM,OACJjE,EAAM,WACNutC,EAAU,gBACVY,EAAe,YACfC,EAAW,KACX/jB,EAAI,MACJogB,KACG4D,GACDpqC,EACJ3W,KAAK22C,OAAS1D,GAAW8N,GACzB96C,OAAOkS,OAAOnY,KAAM,CAClB0S,SACAutC,aACAY,kBACAC,cACA/jB,OACAogB,SAEJ,CACAlO,KAAAA,GACEjvC,KAAKu7C,UAAW,EAChBv7C,KAAK22C,OAAO1H,OACd,CACAtiC,MAAAA,CAAO8uC,EAASC,GAOd,YANgB,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKsK,MAAMnI,QAEL,IAAZs5C,GAAiBC,GAAS,GAC5B17C,KAAKu7C,UAAW,EACTv7C,KAAK22C,OAAOhqC,OAAO8uC,EAASC,IAE9B,IAAIvB,EACb,CACA,SAAI7vC,GACF,OAAOtK,KAAK22C,OAAOrsC,QAAUtK,KAAKu7C,WAAav7C,KAAKigD,WAAajgD,KAAK6gD,gBAAkB,GAC1F,CACA,iBAAI/I,GACF,OAAO93C,KAAK22C,OAAOmB,aACrB,CACA,iBAAIE,GACF,OAAOh4C,KAAK22C,OAAOqB,aACrB,CACA,gBAAIG,GACF,OAAOn4C,KAAK22C,OAAOrsC,OAAStK,KAAK8gD,aAAe9gD,KAAKsK,KACvD,CACA,cAAIqvC,GACF,OAAOc,QAAQz6C,KAAK22C,OAAOrsC,QAAUtK,KAAKigD,UAC5C,CACAlE,WAAAA,CAAYD,EAAIV,GAId,QAHc,IAAVA,IACFA,EAAQ,CAAC,GAEPp7C,KAAKu7C,SAAU,OAAO,IAAIpB,GAC9B,MAAM5D,EAAQv2C,KAAK22C,OAAOJ,MAE1B,IAAIuD,EAAU95C,KAAK22C,OAAOoF,YAAYD,EAAI97C,KAAKghD,iBAAiB5F,IAUhE,OATItB,EAAQtI,WAAuC,IAA3BxxC,KAAK08C,WAAWtB,KACtCtB,EAAU,IAAIK,GACdn6C,KAAK22C,OAAOJ,MAAQA,GAEjBuD,EAAQtI,UAAaxxC,KAAKigD,YAAejgD,KAAK+8B,MAASqe,EAAMvH,QAChEiG,EAAQtI,SAAWxxC,KAAK6gD,iBAE1B/G,EAAQp5B,MAAQo5B,EAAQtI,WAAaxxC,KAAKigD,WAC1CjgD,KAAKu7C,SAAWd,QAAQX,EAAQtI,UACzBsI,CACT,CACAloC,MAAAA,CAAOs+B,EAAKkL,EAAOvJ,GAEjB,OAAO7xC,KAAK22C,OAAO/kC,OAAOs+B,EAAKlwC,KAAKghD,iBAAiB5F,GAAQvJ,EAC/D,CACAgJ,kBAAAA,GACE,OAAI76C,KAAKu7C,UAAYv7C,KAAKigD,WAAmB,IAAI9F,IACjDn6C,KAAKu7C,UAAW,EACT,IAAIpB,GAAc,CACvB3I,SAAUxxC,KAAK6gD,kBAEnB,CACA/D,YAAAA,GACE,OAAO,IAAI3C,EACb,CACAwB,WAAAA,CAAYF,EAASC,GACnB,OAAO17C,KAAK22C,OAAOgF,YAAYF,EAASC,EAC1C,CACAE,UAAAA,CAAW/J,GACT,OAAO7xC,KAAK22C,OAAOiF,WAAW/J,EAChC,CACAyJ,YAAAA,CAAaG,EAASC,EAAON,GAO3B,YANgB,IAAZK,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKsK,MAAMnI,QAEdnC,KAAK22C,OAAO2E,aAAaG,EAASC,EAAON,EAClD,CACAxB,eAAAA,CAAgBrI,EAAWnwB,QACP,IAAdA,IACFA,EAAYovB,IAEd,MACMgQ,EAASxgD,KAAKsK,MAAMnI,OACpB8+C,EAAWl+C,KAAKC,IAAID,KAAK2S,IAAI67B,EAFpB,GAEwCiP,GACvD,OAAQp/B,GACN,KAAKovB,GACL,KAAKA,GACH,OAAOxwC,KAAK25C,WAAasH,EANd,EAOb,KAAKzQ,GACL,KAAKA,GACH,OAAOxwC,KAAK25C,WAAasH,EAAWT,EAEtC,QACE,OAAOS,EAEb,CACAzF,mBAAAA,CAAoBC,EAASC,GAO3B,YANgB,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKsK,MAAMnI,QAEdnC,KAAKsK,MAAM1F,MAAM62C,EAASC,GAAOv5C,MAC1C,CACAu6C,UAAAA,CAAWtB,GACT,OAAOp7C,KAAK22C,OAAO+F,WAAW18C,KAAKghD,iBAAiB5F,OAAap7C,KAAK0S,QAAU1S,KAAK0S,OAAOgqC,WAAW18C,KAAKghD,iBAAiB5F,IAC/H,CACAnB,QAAAA,GACEj6C,KAAK22C,OAAOsD,UACd,CACA,SAAI1D,GACF,MAAO,CACLM,OAAQ72C,KAAKsK,MACbysC,eAAgB/2C,KAAKg4C,cACrBrB,OAAQ32C,KAAK22C,OAAOJ,MACpBgF,SAAUv7C,KAAKu7C,SAEnB,CACA,SAAIhF,CAAMA,GACRv2C,KAAK22C,OAAOJ,MAAQA,EAAMI,OAC1B32C,KAAKu7C,SAAWhF,EAAMgF,QACxB,CACAyF,gBAAAA,CAAiB5F,GACf,IAAI8F,EACJ,MAAO,IACF9F,EACH2B,kBAA4B,MAAT3B,GAAqE,OAAnD8F,EAAwB9F,EAAM2B,uBAA4B,EAASmE,EAAsBvK,UAAqB,MAATyE,OAAgB,EAASA,EAAM2B,kBAE7K,CACAT,GAAAA,CAAIlB,GACF,OAAO,IAAIjB,EACb,EAEFyG,GAAuBO,oBAAsB,CAC3C,EAAK,KACL,EAAK,snIAEL,IAAK,KC5JPpP,GAAMI,aApBN,cAA2BK,GAWzBqF,aAAAA,CAAclhC,GACZzM,MAAM2tC,cAAclhC,EACtB,CACAqkC,OAAAA,CAAQrkC,GACN,MAAMu7B,EAAOv7B,EAAKu7B,KACdA,IAAMv7B,EAAKinC,SAAWtzC,GAASA,EAAM7B,OAAOypC,IAAS,GACzDhoC,MAAM8wC,QAAQrkC,EAChB,GCZF,MAAMy7B,WAAsBI,GAmB1B1rC,WAAAA,CAAY6P,GACVzM,MAAM,IACDkoC,GAAc6I,YACdtkC,EACHyqC,YAAan7C,OAAOkS,OAAO,CAAC,EAAGyoC,GAAuBO,oBAA6B,MAARxqC,OAAe,EAASA,EAAKyqC,cAE5G,CACAvJ,aAAAA,CAAclhC,GACZzM,MAAM2tC,cAAclhC,EACtB,CACAqkC,OAAAA,CAAQrkC,GACNA,EAAKyqC,YAAcn7C,OAAOkS,OAAO,CAAC,EAAGnY,KAAKohD,YAAazqC,EAAKyqC,aAC5Dl3C,MAAM8wC,QAAQrkC,GACd3W,KAAKqhD,cACP,CACAA,YAAAA,GACE,MAAMC,EAAOthD,KAAKohD,YAClBphD,KAAKg/C,QAAU,GACfh/C,KAAKuhD,iBAAcl9C,EACnBrE,KAAK++C,OAAS,GACd/+C,KAAKwhD,cAAgB,CAAC,EACtB,MAAMC,EAAUzhD,KAAKkyC,KACrB,IAAKuP,IAAYH,EAAM,OACvB,IAAII,GAAiB,EACjBC,GAAgB,EACpB,IAAK,IAAIt/C,EAAI,EAAGA,EAAIo/C,EAAQt/C,SAAUE,EAAG,CACvC,GAAIrC,KAAK4hD,OAAQ,CACf,MAAM1U,EAAIuU,EAAQ78C,MAAMvC,GAClBw/C,EAAS57C,OAAOiB,KAAKlH,KAAK4hD,QAAQ92C,QAAOg3C,GAA8B,IAArB5U,EAAE/hC,QAAQ22C,KAElED,EAAOtwB,MAAK,CAAC1rB,EAAG2rB,IAAMA,EAAErvB,OAAS0D,EAAE1D,SAEnC,MAAM2/C,EAAQD,EAAO,GACrB,GAAIC,EAAO,CACT,MAAM,OACJC,EAAM,OACNC,KACGC,GACDpP,GAAc7yC,KAAK4hD,OAAOE,IACxBI,EAAY,CAChBnlB,KAAM/8B,KAAK+8B,KACXogB,MAAOn9C,KAAKm9C,MACZ0D,gBAAiB7gD,KAAK6gD,gBACtBC,YAAa9gD,KAAK8gD,YAClBlE,UAAW58C,KAAK48C,UAChBT,QAASn8C,KAAKm8C,WACX8F,EACHD,SACAtvC,OAAQ1S,MAEJmiD,EAAwB,MAAVH,EAAiB,IAAIjQ,GAAMqQ,YAAYF,GAAwBjP,GAAWiP,GAC1FC,IACFniD,KAAKg/C,QAAQ96C,KAAKi+C,GACdJ,IAAQ/hD,KAAKuhD,YAAcY,GAG1BniD,KAAKwhD,cAAcM,KAAQ9hD,KAAKwhD,cAAcM,GAAS,IAC5D9hD,KAAKwhD,cAAcM,GAAO59C,KAAKlE,KAAKg/C,QAAQ78C,OAAS,IAEvDE,GAAKy/C,EAAM3/C,OAAS,EACpB,QACF,CACF,CACA,IAAIw+C,EAAOc,EAAQp/C,GACfggD,EAAW1B,KAAQW,EACvB,GAAIX,IAASvO,GAAckQ,UAAW,CACpCtiD,KAAK++C,OAAO76C,KAAKlE,KAAKg/C,QAAQ78C,QAC9B,QACF,CACA,GAAa,MAATw+C,GAAyB,MAATA,EAAc,CAChCe,GAAkBA,EAClB,QACF,CACA,GAAa,MAATf,GAAyB,MAATA,EAAc,CAChCgB,GAAiBA,EACjB,QACF,CACA,GAAIhB,IAASvO,GAAcmQ,YAAa,CAGtC,KAFElgD,EACFs+C,EAAOc,EAAQp/C,IACVs+C,EAAM,MACX0B,GAAU,CACZ,CACA,MAAMG,EAAMH,EAAU,IAAIzB,GAAuB,CAC/CX,WAAY0B,EACZ5kB,KAAM/8B,KAAK+8B,KACXogB,MAAOn9C,KAAKm9C,MACZ0D,gBAAiB7gD,KAAK6gD,gBACtBC,YAAa9gD,KAAK8gD,eACfjO,GAAcyO,EAAKX,IACtBjuC,OAAQ1S,OACL,IAAIqgD,GAAuB,CAC9BM,OACAxD,MAAOn9C,KAAKm9C,MACZmD,YAAaoB,IAEf1hD,KAAKg/C,QAAQ96C,KAAKs+C,EACpB,CACF,CACA,SAAIjM,GACF,MAAO,IACFrsC,MAAMqsC,MACTyI,QAASh/C,KAAKg/C,QAAQ1yC,KAAIklB,GAAKA,EAAE+kB,QAErC,CACA,SAAIA,CAAMA,GACR,IAAKA,EAEH,YADAv2C,KAAKivC,QAGP,MAAM,QACJ+P,KACGyD,GACDlM,EACJv2C,KAAKg/C,QAAQ73C,SAAQ,CAACqqB,EAAGkxB,IAAOlxB,EAAE+kB,MAAQyI,EAAQ0D,KAClDx4C,MAAMqsC,MAAQkM,CAChB,CACAxT,KAAAA,GACE/kC,MAAM+kC,QACNjvC,KAAKg/C,QAAQ73C,SAAQqqB,GAAKA,EAAEyd,SAC9B,CACA,cAAI0K,GACF,OAAO35C,KAAKuhD,YAAcvhD,KAAKuhD,YAAY5H,WAAa35C,KAAKg/C,QAAQ2D,OAAMnxB,GAAKA,EAAEmoB,YACpF,CACA,YAAI4B,GACF,OAAOv7C,KAAKg/C,QAAQ2D,OAAMnxB,GAAKA,EAAE+pB,UACnC,CACA,WAAIuE,GACF,OAAO9/C,KAAKg/C,QAAQ2D,OAAMnxB,GAAKA,EAAEsuB,SACnC,CACA,cAAIG,GACF,OAAOjgD,KAAKg/C,QAAQ2D,OAAMnxB,GAAKA,EAAEyuB,YACnC,CACAhG,QAAAA,GACEj6C,KAAKg/C,QAAQ73C,SAAQqqB,GAAKA,EAAEyoB,aAC5B/vC,MAAM+vC,UACR,CACA,iBAAInC,GACF,OAAO93C,KAAKuhD,YAAcvhD,KAAKuhD,YAAYzJ,cAAgB93C,KAAKg/C,QAAQ3O,QAAO,CAACH,EAAK1e,IAAM0e,EAAO1e,EAAEsmB,eAAe,GACrH,CACA,iBAAIA,CAAcA,GAChB,GAAI93C,KAAKuhD,YAAa,CACpB,MAAM1P,EAAO7xC,KAAK27C,YAAY37C,KAAKu/C,eAAev/C,KAAKg/C,QAAQ7zC,QAAQnL,KAAKuhD,cAAgBvhD,KAAKuhD,YAAYpJ,aAAah2C,QAC1HnC,KAAKuhD,YAAYzJ,cAAgBA,EACjC93C,KAAK47C,WAAW/J,GAChB7xC,KAAKi6C,UACP,MAAO/vC,MAAM4tC,cAAgBA,CAC/B,CACA,SAAIxtC,GACF,OAAOtK,KAAKuhD,YAAcvhD,KAAKuhD,YAAYj3C,MAE3CtK,KAAKg/C,QAAQ3O,QAAO,CAACH,EAAK1e,IAAM0e,EAAO1e,EAAElnB,OAAO,GAClD,CACA,SAAIA,CAAMA,GACR,GAAItK,KAAKuhD,YAAa,CACpB,MAAM1P,EAAO7xC,KAAK27C,YAAY37C,KAAKu/C,eAAev/C,KAAKg/C,QAAQ7zC,QAAQnL,KAAKuhD,cAAgBvhD,KAAKuhD,YAAYpJ,aAAah2C,QAC1HnC,KAAKuhD,YAAYj3C,MAAQA,EACzBtK,KAAK47C,WAAW/J,GAChB7xC,KAAKi6C,UACP,MAAO/vC,MAAMI,MAAQA,CACvB,CACA,cAAI2tC,GACF,OAAOj4C,KAAKuhD,YAAcvhD,KAAKuhD,YAAYtJ,WAAa/tC,MAAM+tC,UAChE,CACA,cAAIA,CAAW3tC,GACb,GAAItK,KAAKuhD,YAAa,CACpB,MAAM1P,EAAO7xC,KAAK27C,YAAY37C,KAAKu/C,eAAev/C,KAAKg/C,QAAQ7zC,QAAQnL,KAAKuhD,cAAgBvhD,KAAKuhD,YAAYpJ,aAAah2C,QAC1HnC,KAAKuhD,YAAYtJ,WAAa3tC,EAC9BtK,KAAK47C,WAAW/J,GAChB7xC,KAAKi6C,UACP,MAAO/vC,MAAM+tC,WAAa3tC,CAC5B,CACA,gBAAI6tC,GACF,OAAOn4C,KAAKg/C,QAAQ3O,QAAO,CAACH,EAAK1e,IAAM0e,EAAO1e,EAAE2mB,cAAc,GAChE,CACAyD,UAAAA,CAAW/J,GACT,OAAO3nC,MAAM0xC,WAAW/J,GAAM0I,UAAUv6C,KAAK66C,qBAC/C,CACAiC,YAAAA,GACE,IAAI8F,EACJ,MAAM9I,EAAU,IAAIK,GACpB,IAAI0I,EAA4F,OAAzED,EAAuB5iD,KAAK6+C,eAAe7+C,KAAKm4C,aAAah2C,cAAmB,EAASygD,EAAqB1xC,MACrI,GAAuB,MAAnB2xC,EAAyB,OAAO/I,EAGhC95C,KAAKg/C,QAAQ6D,GAAiBtH,YAAYsH,EAC9C,IAAK,IAAIH,EAAKG,EAAiBH,EAAK1iD,KAAKg/C,QAAQ78C,SAAUugD,EAAI,CAC7D,MAAM98C,EAAI5F,KAAKg/C,QAAQ0D,GAAI5F,eAC3B,IAAKl3C,EAAE4rC,SAAU,MACjBsI,EAAQS,UAAU30C,EACpB,CACA,OAAOk0C,CACT,CACA+B,cAAAA,CAAeC,EAAIV,QACH,IAAVA,IACFA,EAAQ,CAAC,GAEX,MAAM0H,EAAY9iD,KAAK6+C,eAAe7+C,KAAKm4C,aAAah2C,QAClD23C,EAAU,IAAIK,GACpB,IAAK2I,EAAW,OAAOhJ,EACvB,IAAK,IAA0BlV,EAAtB8d,EAAKI,EAAU5xC,MAAc0zB,EAAQ5kC,KAAKg/C,QAAQ0D,KAAOA,EAAI,CACpE,IAAIxB,EACJ,MAAM6B,EAAene,EAAMmX,YAAYD,EAAI,IACtCV,EACH2B,iBAAsE,OAAnDmE,EAAwB9F,EAAM2B,mBAAwF,OAA1DmE,EAAwBA,EAAsBlC,cAAmB,EAASkC,EAAsBwB,KAGjL,GADA5I,EAAQS,UAAUwI,GACdA,EAAavI,SAAU,KAC7B,CACA,OAAOV,CACT,CACA6B,WAAAA,CAAYF,EAASC,QACH,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAE5B,MAAM6gD,EAAY,IAAI5E,GACtB,OAAI3C,IAAYC,GAChB17C,KAAKijD,sBAAsBxH,EAASC,GAAO,CAAClqB,EAAGkxB,EAAIQ,EAAUC,KAC3D,MAAMC,EAAa5xB,EAAEmqB,YAAYuH,EAAUC,GAC3CC,EAAWzT,KAAO3vC,KAAKqjD,gBAAgBX,GACvCU,EAAWpjB,KAAOhgC,KAAKu/C,eAAemD,GAClCU,aAAsBhF,KAAmBgF,EAAW1E,WAAagE,GACrEM,EAAUj8C,OAAOq8C,EAAW,IANAJ,CAShC,CACA1H,YAAAA,CAAaG,EAASC,EAAON,GAU3B,QATgB,IAAZK,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,aAEd,IAAVi5C,IACFA,EAAQ,CAAC,GAEPK,IAAYC,EAAO,MAAO,GAC9B,IAAI7H,EAAQ,GAIZ,OAHA7zC,KAAKijD,sBAAsBxH,EAASC,GAAO,CAAClqB,EAAGlV,EAAGm/B,EAASC,KACzD7H,GAASriB,EAAE8pB,aAAaG,EAASC,EAAON,EAAM,IAEzCvH,CACT,CACAwP,eAAAA,CAAgB3E,GACd,IAAI4E,EACJ,IAAK,IAAIC,EAAK,EAAGA,EAAKvjD,KAAK++C,OAAO58C,SAAUohD,EAAI,CAC9C,MAAM5T,EAAO3vC,KAAK++C,OAAOwE,GACzB,KAAI5T,GAAQ+O,GAAmC,MAAvB4E,EAAa3T,CACvC,CACA,OAAO2T,CACT,CAGAzI,kBAAAA,CAAmB2I,GACjB,MAAM1J,EAAU,IAAIK,GACpB,GAAIn6C,KAAK+8B,MAAwB,MAAhBymB,EAAsB,OAAO1J,EAC9C,MAAM2J,EAAiBzjD,KAAK6+C,eAAe7+C,KAAKm4C,aAAah2C,QAC7D,IAAKshD,EAAgB,OAAO3J,EAC5B,MAAM+I,EAAkBY,EAAevyC,MACjCwyC,EAAgC,MAAhBF,EAAuBA,EAAexjD,KAAKg/C,QAAQ78C,OAOzE,OANAnC,KAAKg/C,QAAQp6C,MAAMi+C,EAAiBa,GAAev8C,SAAQqqB,IAEvD,IAAImyB,EADDnyB,EAAEuL,MAAwB,MAAhBymB,GAEb1J,EAAQS,UAAU/oB,EAAEqpB,mBAA6C,OAAzB8I,EAAWnyB,EAAEwtB,cAAmB,EAAS2E,EAASxhD,QAC5F,IAEK23C,CACT,CAGA+E,cAAAA,CAAenG,GACb,IAAIkL,EAAS,GACb,IAAK,IAAIlB,EAAK,EAAGA,EAAK1iD,KAAKg/C,QAAQ78C,SAAUugD,EAAI,CAC/C,MAAM9d,EAAQ5kC,KAAKg/C,QAAQ0D,GACrBmB,EAAgBD,EAAOzhD,OAE7B,GADAyhD,GAAUhf,EAAMuT,aACZO,GAAOkL,EAAOzhD,OAChB,MAAO,CACL+O,MAAOwxC,EACPtyC,OAAQsoC,EAAMmL,EAGpB,CACF,CACAtE,cAAAA,CAAeb,GACb,OAAO1+C,KAAKg/C,QAAQp6C,MAAM,EAAG85C,GAAYrO,QAAO,CAACqI,EAAKlnB,IAAMknB,EAAOlnB,EAAE2mB,aAAah2C,QAAQ,EAC5F,CACA8gD,qBAAAA,CAAsBxH,EAASC,EAAOhwC,QACtB,IAAVgwC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAE5B,MAAM2hD,EAAgB9jD,KAAK6+C,eAAepD,GAC1C,GAAIqI,EAAe,CACjB,MAAMC,EAAc/jD,KAAK6+C,eAAenD,GAElCsI,EAAcD,GAAeD,EAAc5yC,QAAU6yC,EAAY7yC,MACjE+yC,EAAoBH,EAAc1zC,OAClC8zC,EAAkBH,GAAeC,EAAcD,EAAY3zC,OAASpQ,KAAKg/C,QAAQ8E,EAAc5yC,OAAOinC,aAAah2C,OAEzH,GADAuJ,EAAG1L,KAAKg/C,QAAQ8E,EAAc5yC,OAAQ4yC,EAAc5yC,MAAO+yC,EAAmBC,GAC1EH,IAAgBC,EAAa,CAE/B,IAAK,IAAItB,EAAKoB,EAAc5yC,MAAQ,EAAGwxC,EAAKqB,EAAY7yC,QAASwxC,EAC/Dh3C,EAAG1L,KAAKg/C,QAAQ0D,GAAKA,EAAI,EAAG1iD,KAAKg/C,QAAQ0D,GAAIvK,aAAah2C,QAI5DuJ,EAAG1L,KAAKg/C,QAAQ+E,EAAY7yC,OAAQ6yC,EAAY7yC,MAAO,EAAG6yC,EAAY3zC,OACxE,CACF,CACF,CACAzD,MAAAA,CAAO8uC,EAASC,QACE,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAE5B,MAAMgiD,EAAgBj6C,MAAMyC,OAAO8uC,EAASC,GAI5C,OAHA17C,KAAKijD,sBAAsBxH,EAASC,GAAO,CAAClqB,EAAGlV,EAAG4mC,EAAUC,KAC1DgB,EAAc5J,UAAU/oB,EAAE7kB,OAAOu2C,EAAUC,GAAQ,IAE9CgB,CACT,CACAvK,eAAAA,CAAgBrI,EAAWnwB,GAIzB,QAHkB,IAAdA,IACFA,EAAYovB,KAETxwC,KAAKg/C,QAAQ78C,OAAQ,OAAO,EACjC,MAAM6tB,EAAS,IAAIovB,GAAcp/C,KAAMuxC,GACvC,GAAInwB,IAAcovB,GAIhB,OAAIxgB,EAAOmwB,uBAA+BnwB,EAAO0oB,KACjD1oB,EAAOwvB,WACHxvB,EAAO+vB,sBAA8B/vB,EAAO0oB,IACzC14C,KAAKm4C,aAAah2C,QAI3B,GAAIif,IAAcovB,IAAkBpvB,IAAcovB,GAAsB,CAEtE,GAAIpvB,IAAcovB,GAAgB,CAEhC,GADAxgB,EAAOkwB,wBACHlwB,EAAOsvB,IAAMtvB,EAAO0oB,MAAQnH,EAAW,OAAOA,EAClDvhB,EAAOwvB,UACT,CAQA,GALAxvB,EAAO+vB,sBACP/vB,EAAOgwB,yBACPhwB,EAAO6vB,uBAGHz+B,IAAcovB,GAAgB,CAGhC,GAFAxgB,EAAOmwB,uBACPnwB,EAAOowB,0BACHpwB,EAAOsvB,IAAMtvB,EAAO0oB,KAAOnH,EAAW,OAAOvhB,EAAO0oB,IAExD,GADA1oB,EAAOwvB,WACHxvB,EAAOsvB,IAAMtvB,EAAO0oB,KAAOnH,EAAW,OAAOvhB,EAAO0oB,IACxD1oB,EAAOwvB,UACT,CACA,OAAIxvB,EAAOsvB,GAAWtvB,EAAO0oB,IACzBt3B,IAAcovB,GAA6B,GAC/CxgB,EAAOwvB,WACHxvB,EAAOsvB,GAAWtvB,EAAO0oB,KAC7B1oB,EAAOwvB,WACHxvB,EAAOsvB,GAAWtvB,EAAO0oB,IACtB,GACT,CACA,OAAIt3B,IAAcovB,IAAmBpvB,IAAcovB,IAEjDxgB,EAAOmwB,uBACPnwB,EAAOowB,0BACHpwB,EAAOkwB,wBAAgClwB,EAAO0oB,IAC9Ct3B,IAAcovB,GAA8BxwC,KAAKm4C,aAAah2C,QAGlE6tB,EAAOwvB,WACHxvB,EAAOsvB,GAAWtvB,EAAO0oB,KAC7B1oB,EAAOwvB,WACHxvB,EAAOsvB,GAAWtvB,EAAO0oB,IACtB14C,KAAK45C,gBAAgBrI,EAAWf,OAElCe,CACT,CACAiK,mBAAAA,CAAoBC,EAASC,QACX,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAE5B,IAAIs5B,EAAQ,EAIZ,OAHAz7B,KAAKijD,sBAAsBxH,EAASC,GAAO,CAAClqB,EAAGlV,EAAG4mC,EAAUC,KAC1D1nB,GAASjK,EAAEgqB,oBAAoB0H,EAAUC,EAAO,IAE3C1nB,CACT,CAGA0mB,WAAAA,CAAYr2C,GACV,OAAO9L,KAAKokD,aAAat4C,GAAM,EACjC,CAGAs4C,YAAAA,CAAat4C,GACX,MAAMu4C,EAAUrkD,KAAKwhD,cAAc11C,GACnC,OAAKu4C,EACEA,EAAQ/3C,KAAIg4C,GAAMtkD,KAAKg/C,QAAQsF,KADjB,EAEvB,CACAhI,GAAAA,CAAIlB,GACF,MAAMtB,EAAU,IAAIK,GAEpB,OADAn6C,KAAKijD,sBAAsB,EAAGjjD,KAAKm4C,aAAah2C,QAAQqvB,GAAKsoB,EAAQS,UAAU/oB,EAAE8qB,IAAIlB,MAC9EtB,CACT,EAEF1H,GAAc6I,SAAW,IACpBzI,GAAOyI,SACVle,MAAM,EACN8jB,gBAAiB,KAEnBzO,GAAckQ,UAAY,IAC1BlQ,GAAcmQ,YAAc,KAC5BnQ,GAAcmS,gBAAkB3D,GAChCxO,GAAcoS,gBAAkBnE,GAChCtO,GAAMK,cAAgBA,GC/btB,MAAMqS,WAAoBrS,GAUxB,cAAIsS,GACF,OAAO1kD,KAAK2kD,UAAYnZ,OAAOxrC,KAAKggC,MAAM79B,MAC5C,CACA2E,WAAAA,CAAY6P,GACVzM,MAAMyM,EACR,CACAkhC,aAAAA,CAAclhC,GACZzM,MAAM2tC,cAAclhC,EACtB,CACAqkC,OAAAA,CAAQrkC,GACN,MAAM,GACJpD,EAAKvT,KAAKuT,IAAM,EAAC,KACjBysB,EAAOhgC,KAAKggC,MAAQ,EAAC,UACrB2kB,EAAY3kD,KAAK2kD,WAAa,EAAC,QAC/BxI,EAAUn8C,KAAKm8C,WACZyI,GACDjuC,EACJ3W,KAAKuT,GAAKA,EACVvT,KAAKggC,KAAOA,EACZhgC,KAAK2kD,UAAY5hD,KAAK2S,IAAI81B,OAAOj4B,GAAIpR,OAAQwiD,GAC7C3kD,KAAKm8C,QAAUA,EACf,MAAM0I,EAAUrZ,OAAOxrC,KAAKggC,MAAM8kB,SAAS9kD,KAAK2kD,UAAW,KACrDI,EAAQvZ,OAAOxrC,KAAKuT,IAAIuxC,SAAS9kD,KAAK2kD,UAAW,KACvD,IAAIK,EAAiB,EACrB,KAAOA,EAAiBD,EAAM5iD,QAAU4iD,EAAMC,KAAoBH,EAAQG,MAAmBA,EAC7FJ,EAAY1S,KAAO6S,EAAMngD,MAAM,EAAGogD,GAAgB9qC,QAAQ,KAAM,OAAS,IAAI8nC,OAAOhiD,KAAK2kD,UAAYK,GACrG96C,MAAM8wC,QAAQ4J,EAChB,CACA,cAAIjL,GACF,OAAOzvC,MAAMyvC,YAAcc,QAAQz6C,KAAKsK,MAC1C,CACA26C,UAAAA,CAAW/U,GACT,IAAIgV,EAAS,GACTC,EAAS,GACb,MAAO,CAAEC,EAAaC,GAAOnV,EAAIhd,MAAM,qBAAuB,GAO9D,OANImyB,IACFH,EAAS,IAAIlD,OAAOoD,EAAYjjD,QAAUkjD,EAC1CF,EAAS,IAAInD,OAAOoD,EAAYjjD,QAAUkjD,GAE5CH,EAASA,EAAOI,OAAOtlD,KAAK2kD,UAAW,KACvCQ,EAASA,EAAOG,OAAOtlD,KAAK2kD,UAAW,KAChC,CAACO,EAAQC,EAClB,CACAjJ,aAAAA,CAAcJ,EAAIV,GAIhB,IAAItB,EAGJ,YANc,IAAVsB,IACFA,EAAQ,CAAC,IAGVU,EAAIhC,GAAW5vC,MAAMgyC,cAAcJ,EAAG5hC,QAAQ,MAAO,IAAKkhC,GACtDU,IAAIhC,EAAQp5B,MAAQ1gB,KAAK25C,YACvB,CAACmC,EAAIhC,EACd,CACA+B,cAAAA,CAAeC,EAAIV,GAIjB,QAHc,IAAVA,IACFA,EAAQ,CAAC,IAENp7C,KAAKm8C,SAAWn8C,KAAKsK,MAAMnI,OAAS,EAAInC,KAAK2kD,UAAW,OAAOz6C,MAAM2xC,eAAeC,EAAIV,GAC7F,MAAMyJ,EAAUrZ,OAAOxrC,KAAKggC,MAAM8kB,SAAS9kD,KAAK2kD,UAAW,KACrDI,EAAQvZ,OAAOxrC,KAAKuT,IAAIuxC,SAAS9kD,KAAK2kD,UAAW,MAChDO,EAAQC,GAAUnlD,KAAKilD,WAAWjlD,KAAKsK,MAAQwxC,GACtD,OAAIr3C,OAAO0gD,GAAUnlD,KAAKggC,KAAa91B,MAAM2xC,eAAegJ,EAAQ7kD,KAAKsK,MAAMnI,QAASi5C,GACpF32C,OAAOygD,GAAUllD,KAAKuT,IACnB6nC,EAAMvJ,MAAyB,QAAjB7xC,KAAKm8C,SAAqBn8C,KAAKsK,MAAMnI,OAAS,EAAInC,KAAK2kD,UACjEz6C,MAAM2xC,eAAegJ,EAAQ7kD,KAAKsK,MAAMnI,QAASi5C,GAAOb,UAAUv6C,KAAK67C,eAAeC,EAAIV,IAE5FlxC,MAAM2xC,eAAekJ,EAAM/kD,KAAKsK,MAAMnI,QAASi5C,GAEjDlxC,MAAM2xC,eAAeC,EAAIV,EAClC,CACAsB,UAAAA,CAAWtB,GACT,MAAMlL,EAAMlwC,KAAKsK,MAEjB,IAAsB,IADD4lC,EAAIznC,OAAO,SACLynC,EAAI/tC,QAAUnC,KAAK0kD,WAAY,OAAO,EACjE,MAAOQ,EAAQC,GAAUnlD,KAAKilD,WAAW/U,GACzC,OAAOlwC,KAAKggC,MAAQv7B,OAAO0gD,IAAW1gD,OAAOygD,IAAWllD,KAAKuT,IAAMrJ,MAAMwyC,WAAWtB,EACtF,CACAkB,GAAAA,CAAIlB,GACF,MAAMtB,EAAU,IAAIK,GACpB,GAAIn6C,KAAKsK,MAAMnI,SAAWnC,KAAK2kD,UAAW,OAAO7K,EACjD,MAAMxvC,EAAQtK,KAAKsK,MACbi7C,EAAYvlD,KAAK2kD,UAAY3kD,KAAKsK,MAAMnI,OAC9C,GAAIojD,EAAW,CACbvlD,KAAKivC,QACL,IAAK,IAAI5sC,EAAI,EAAGA,EAAIkjD,IAAaljD,EAC/By3C,EAAQS,UAAUrwC,MAAM2xC,eAAe,IAAKT,IAI9C9wC,EAAMsB,MAAM,IAAIzE,SAAQ20C,GAAM97C,KAAK67C,eAAeC,IACpD,CACA,OAAOhC,CACT,EAEF/H,GAAM0S,YAAcA,GClGpB,MAAMpS,WAAmBD,GACvB,4BAAOoT,CAAsB7uC,GAC3B,MAAM,KACJu7B,EAAI,QACJuP,KACGmD,GACDjuC,EACJ,MAAO,IACFiuC,EACH1S,KAAMjC,GAASiC,GAAQA,EAAOuP,EAElC,CAYA36C,WAAAA,CAAY6P,GACVzM,MAAMmoC,GAAWmT,sBAAsB,IAClCnT,GAAW4I,YACXtkC,IAEP,CACAkhC,aAAAA,CAAclhC,GACZzM,MAAM2tC,cAAclhC,EACtB,CACAqkC,OAAAA,CAAQrkC,GACN,MAAM,KACJu7B,EAAI,QACJuP,EAAO,OACPG,KACGgD,GACD,IACCvS,GAAW4I,YACXtkC,GAEC8uC,EAAgBx/C,OAAOkS,OAAO,CAAC,EAAGk6B,GAAWqT,sBAE/C/uC,EAAK3T,MAAKyiD,EAAcE,EAAE3lB,KAAOrpB,EAAK3T,IAAI8nC,eAC1Cn0B,EAAKjB,MAAK+vC,EAAcE,EAAEpyC,GAAKoD,EAAKjB,IAAIo1B,eACxCn0B,EAAK3T,KAAO2T,EAAKjB,KAAO+vC,EAAcE,EAAE3lB,OAASylB,EAAcE,EAAEpyC,KACnEkyC,EAAc9uB,EAAEqJ,KAAOrpB,EAAK3T,IAAIymC,WAAa,EAC7Cgc,EAAc9uB,EAAEpjB,GAAKoD,EAAKjB,IAAI+zB,WAAa,EACvCgc,EAAc9uB,EAAEqJ,OAASylB,EAAc9uB,EAAEpjB,KAC3CkyC,EAAc7/C,EAAEo6B,KAAOrpB,EAAK3T,IAAIwmC,UAChCic,EAAc7/C,EAAE2N,GAAKoD,EAAKjB,IAAI8zB,YAGlCvjC,OAAOkS,OAAOstC,EAAezlD,KAAK4hD,OAAQA,GAC1C13C,MAAM8wC,QAAQ,IACT4J,EACH1S,KAAMjC,GAASiC,GAAQA,EAAOuP,EAC9BG,OAAQ6D,GAEZ,CACA/I,UAAAA,CAAWtB,GACT,MAAMhS,EAAOppC,KAAKopC,KAClB,OAAOl/B,MAAMwyC,WAAWtB,MAAYp7C,KAAK25C,YAAc35C,KAAK4lD,YAAY5lD,KAAKsK,QAAkB,MAAR8+B,IAA6B,MAAZppC,KAAKgD,KAAehD,KAAKgD,KAAOomC,KAAsB,MAAZppC,KAAK0V,KAAe0zB,GAAQppC,KAAK0V,KACrL,CAGAkwC,WAAAA,CAAY1V,GACV,OAAOlwC,KAAKqqC,OAAOrqC,KAAKq7C,MAAMnL,EAAKlwC,MAAOA,MAAMmL,QAAQ+kC,IAAQ,CAClE,CAGA,QAAI9G,GACF,OAAOppC,KAAKi4C,UACd,CACA,QAAI7O,CAAKA,GACPppC,KAAKi4C,WAAa7O,CACpB,CACA,cAAI6O,GACF,OAAOj4C,KAAK25C,WAAazvC,MAAM+tC,WAAa,IAC9C,CACA,cAAIA,CAAW3tC,GACbJ,MAAM+tC,WAAa3tC,CACrB,CACAqtC,UAAAA,CAAWzF,GACT,OAAOA,IAAS5oC,MAAQY,MAAMytC,WAAWzF,EAC3C,CACAoH,gBAAAA,CAAiB3iC,GACf,OAAOzM,MAAMovC,iBAAiBjH,GAAWmT,sBAAsB7uC,GACjE,EAEF07B,GAAWqT,mBAAqB,KAAM,CACpC9/C,EAAG,CACDssC,KAAMuS,GACNzkB,KAAM,EACNzsB,GAAI,GACJoxC,UAAW,GAEbhuB,EAAG,CACDub,KAAMuS,GACNzkB,KAAM,EACNzsB,GAAI,GACJoxC,UAAW,GAEbgB,EAAG,CACDzT,KAAMuS,GACNzkB,KAAM,KACNzsB,GAAI,QAGR8+B,GAAW4I,SAAW,IACjB7I,GAAc6I,SACjB/I,KAAM5oC,KACNm4C,QAtHqB,cAuHrBpX,OAAQA,CAACjB,EAAMuN,IACRvN,EAIE,CAHKoC,OAAOpC,EAAKI,WAAWsb,SAAS,EAAG,KACjCtZ,OAAOpC,EAAKK,WAAa,GAAGqb,SAAS,EAAG,KACzC1b,EAAK0B,eACQ3d,KAAK,KAJb,GAMpBkuB,MAAOA,CAACnL,EAAKyG,KACX,MAAOkP,EAAKC,EAAOC,GAAQ7V,EAAItkC,MAAM,KAAKU,IAAI7H,QAC9C,OAAO,IAAI6E,KAAKy8C,EAAMD,EAAQ,EAAGD,EAAI,GAGzC9T,GAAMM,WAAaA,GCzInB,MAAME,WAAsBC,GAC1B1rC,WAAAA,CAAY6P,GACVzM,MAAM,IACDqoC,GAAc0I,YACdtkC,IAEL3W,KAAKgmD,iBAAc3hD,CACrB,CACAwzC,aAAAA,CAAclhC,GACZzM,MAAM2tC,cAAclhC,EACtB,CACAqkC,OAAAA,CAAQrkC,GACNzM,MAAM8wC,QAAQrkC,GACV,SAAUA,IACZ3W,KAAKimD,gBAAa5hD,EAElBrE,KAAKkmD,cAAgBl8C,MAAMY,QAAQ+L,EAAKu7B,MAAQv7B,EAAKu7B,KAAK5lC,KAAIqqB,IAC5D,MAAM,OACJorB,KACGhB,GACDlO,GAAclc,GACZggB,EAAS1D,GAAW,CACxB2J,UAAW58C,KAAKmmD,WAChBhJ,MAAOn9C,KAAKomD,OACZ3I,YAAaz9C,KAAKqmD,gBACftF,IAGL,OADIgB,IAAQ/hD,KAAKimD,WAAatP,GACvBA,CAAM,IACV,GAIT,CACAkF,cAAAA,CAAeC,EAAIV,QACH,IAAVA,IACFA,EAAQ,CAAC,GAEX,MAAMtB,EAAU95C,KAAKsmD,eAAexK,EAAIV,GAIxC,OAHIp7C,KAAKgmD,aACPlM,EAAQS,UAAUv6C,KAAKgmD,YAAYjK,YAAYD,EAAI97C,KAAKghD,iBAAiB5F,KAEpEtB,CACT,CACAwM,cAAAA,CAAe7J,EAAUrB,EAAOvJ,QACb,IAAb4K,IACFA,EAAW,SAEC,IAAVrB,IACFA,EAAQ,CAAC,QAEE,IAATvJ,IACFA,EAAO,IAET,MAAM0U,EAAsBnL,EAAMvJ,MAAkC,MAA1BuJ,EAAM2B,iBAA2B3B,EAAM2B,iBAAiBlG,OAAS72C,KAAKsK,MAC1Gk8C,EAAaxmD,KAAKg4C,cAClByO,EAAcrL,EAAMvJ,MAAkC,MAA1BuJ,EAAM2B,iBAA2B3B,EAAM2B,iBAAiBhG,eAAiByP,EACrGE,EAAYF,EAAW5hD,MAAM6hD,EAAYtkD,QACzCwkD,EAAW3mD,KAAKgmD,YAChBlM,EAAU,IAAIK,GACdyM,EAA4B,MAAZD,OAAmB,EAASA,EAASpQ,MA8B3D,OA3BAv2C,KAAKgmD,YAAchmD,KAAK6mD,WAAWpK,EAAU,IACxCrB,GACFvJ,GAGC7xC,KAAKgmD,cACHhmD,KAAKgmD,cAAgBW,GAEvB3mD,KAAKgmD,YAAY/W,QACbwX,IACFzmD,KAAKgmD,YAAYp0C,OAAO60C,EAAa,CACnCzM,KAAK,IAEPF,EAAQQ,UAAYt6C,KAAKgmD,YAAY17C,MAAMnI,OAASokD,EAAoBpkD,QAEtEukD,IACF5M,EAAQQ,WAAat6C,KAAKgmD,YAAYp0C,OAAO80C,EAAW,CACtD1M,KAAK,EACLnI,MAAM,IACLyI,YAEIsM,IAGT5mD,KAAKgmD,YAAYzP,MAAQqQ,IAGtB9M,CACT,CACAe,kBAAAA,GACE,MAAMf,EAAU95C,KAAKsmD,iBAIrB,OAHItmD,KAAKgmD,aACPlM,EAAQS,UAAUv6C,KAAKgmD,YAAYnL,sBAE9Bf,CACT,CACAgD,YAAAA,GACE,MAAMhD,EAAU95C,KAAKsmD,iBAIrB,OAHItmD,KAAKgmD,aACPlM,EAAQS,UAAUv6C,KAAKgmD,YAAYlJ,gBAE9BhD,CACT,CACA8B,UAAAA,CAAW/J,GACT,MAAMiI,EAAU,IAAIK,GAEpB,OADItI,GAAMiI,EAAQS,UAAUv6C,KAAKsmD,eAAe,GAAI,CAAC,EAAGzU,IACjDiI,EAAQS,UAAUv6C,KAAKgmD,YAAchmD,KAAKgmD,YAAYpK,WAAW/J,GAAQ3nC,MAAM0xC,WAAW/J,GACnG,CACAmP,gBAAAA,CAAiB5F,GACf,IAAI8F,EAAuB4F,EAC3B,MAAO,IACF1L,EACH2B,kBAAuE,OAAnDmE,EAAwB9F,EAAM2B,uBAA4B,EAASmE,EAAsB6F,kBAAoB/mD,KAAKgmD,cAAqE,OAApDc,EAAyB1L,EAAM2B,uBAA4B,EAAS+J,EAAuBd,cAAgB5K,EAAM2B,iBAE5Q,CACA8J,UAAAA,CAAWpK,EAAUrB,EAAOvJ,GAO1B,YANc,IAAVuJ,IACFA,EAAQ,CAAC,QAEE,IAATvJ,IACFA,EAAO,IAEF7xC,KAAKgnD,SAASvK,EAAUz8C,KAAMo7C,EAAOvJ,EAC9C,CACA6K,UAAAA,CAAWtB,GACT,OAAOlxC,MAAMwyC,WAAWtB,MAAYp7C,KAAKgmD,aAAehmD,KAAKgmD,YAAYtJ,WAAW18C,KAAKghD,iBAAiB5F,IAC5G,CACA4B,SAAAA,CAAU9M,EAAKkL,QACC,IAAVA,IACFA,EAAQ,CAAC,GAEX,IAAKj4C,EAAG22C,GAAW5vC,MAAM8yC,UAAU9M,EAAKkL,GACxC,GAAIp7C,KAAKgmD,YAAa,CACpB,IAAIiB,GACH9jD,EAAG8jD,GAAkB/8C,MAAM8yC,UAAU75C,EAAGnD,KAAKghD,iBAAiB5F,IAC/DtB,EAAUA,EAAQS,UAAU0M,EAC9B,CACA,MAAO,CAAC9jD,EAAG22C,EACb,CACAoC,aAAAA,CAAchM,EAAKkL,QACH,IAAVA,IACFA,EAAQ,CAAC,GAEX,IAAKj4C,EAAG22C,GAAW5vC,MAAMgyC,cAAchM,EAAKkL,GAC5C,GAAIp7C,KAAKgmD,YAAa,CACpB,IAAIiB,GACH9jD,EAAG8jD,GAAkB/8C,MAAMgyC,cAAc/4C,EAAGnD,KAAKghD,iBAAiB5F,IACnEtB,EAAUA,EAAQS,UAAU0M,EAC9B,CACA,MAAO,CAAC9jD,EAAG22C,EACb,CACA7K,KAAAA,GACE,IAAIiY,EACsC,OAAzCA,EAAoBlnD,KAAKgmD,cAAwBkB,EAAkBjY,QACpEjvC,KAAKkmD,cAAc/+C,SAAQwvB,GAAKA,EAAEsY,SACpC,CACA,SAAI3kC,GACF,OAAOtK,KAAKimD,WAAajmD,KAAKimD,WAAW37C,MAAQtK,KAAKgmD,YAAchmD,KAAKgmD,YAAY17C,MAAQ,EAC/F,CACA,SAAIA,CAAMA,GACJtK,KAAKimD,YACPjmD,KAAKimD,WAAW37C,MAAQA,EACxBtK,KAAKgmD,YAAchmD,KAAKimD,WACxBjmD,KAAKsmD,kBACAp8C,MAAMI,MAAQA,CACvB,CACA,iBAAIwtC,GACF,OAAO93C,KAAKimD,WAAajmD,KAAKimD,WAAWnO,cAAgB93C,KAAKgmD,YAAchmD,KAAKgmD,YAAYlO,cAAgB,EAC/G,CACA,iBAAIA,CAAcA,GACZ93C,KAAKimD,YACPjmD,KAAKimD,WAAWnO,cAAgBA,EAChC93C,KAAKgmD,YAAchmD,KAAKimD,WACxBjmD,KAAKsmD,kBACAp8C,MAAM4tC,cAAgBA,CAC/B,CACA,cAAIG,GACF,OAAOj4C,KAAKimD,WAAajmD,KAAKimD,WAAWhO,WAAaj4C,KAAKgmD,YAAchmD,KAAKgmD,YAAY/N,WAAa,EACzG,CACA,cAAIA,CAAWA,GACb,GAAIj4C,KAAKimD,WAIP,OAHAjmD,KAAKimD,WAAWhO,WAAaA,EAC7Bj4C,KAAKgmD,YAAchmD,KAAKimD,gBACxBjmD,KAAKsmD,iBAGP,IAAIxO,EAAgBtM,OAAOyM,GAGvBj4C,KAAKgmD,cACPhmD,KAAKgmD,YAAY/N,WAAaA,EAC9BH,EAAgB93C,KAAKgmD,YAAYlO,eAEnC93C,KAAK83C,cAAgBA,CACvB,CACA,gBAAIK,GACF,OAAOn4C,KAAKgmD,YAAchmD,KAAKgmD,YAAY7N,aAAe,EAC5D,CACA,cAAIwB,GACF,IAAIwN,EACJ,OAAO1M,QAAmD,OAA1C0M,EAAqBnnD,KAAKgmD,kBAAuB,EAASmB,EAAmBxN,WAC/F,CACA,YAAI4B,GACF,IAAI6L,EACJ,OAAO3M,QAAmD,OAA1C2M,EAAqBpnD,KAAKgmD,kBAAuB,EAASoB,EAAmB7L,SAC/F,CACA5uC,MAAAA,CAAO8uC,EAASC,GACd,MAAM5B,EAAU,IAAIK,GAMpB,OALIn6C,KAAKgmD,aACPlM,EAAQS,UAAUv6C,KAAKgmD,YAAYr5C,OAAO8uC,EAASC,IAElDnB,UAAUv6C,KAAKsmD,kBAEXxM,CACT,CACA,SAAIvD,GACF,IAAI8Q,EACJ,MAAO,IACFn9C,MAAMqsC,MACTQ,eAAgB/2C,KAAKg4C,cACrBkO,cAAelmD,KAAKkmD,cAAc55C,KAAIqqB,GAAKA,EAAE4f,QAC7CwQ,eAAgB/mD,KAAKgmD,YACrBA,YAAwD,OAA1CqB,EAAqBrnD,KAAKgmD,kBAAuB,EAASqB,EAAmB9Q,MAE/F,CACA,SAAIA,CAAMA,GACR,MAAM,cACJ2P,EAAa,eACba,EAAc,YACdf,KACGvD,GACDlM,EACA2P,GAAelmD,KAAKkmD,cAAc/+C,SAAQ,CAACwvB,EAAG2wB,IAAO3wB,EAAE4f,MAAQ2P,EAAcoB,KAC3D,MAAlBP,IACF/mD,KAAKgmD,YAAce,EACnB/mD,KAAKgmD,YAAYzP,MAAQyP,GAE3B97C,MAAMqsC,MAAQkM,CAChB,CACAnH,YAAAA,CAAaG,EAASC,EAAON,GAC3B,OAAOp7C,KAAKgmD,YAAchmD,KAAKgmD,YAAY1K,aAAaG,EAASC,EAAON,GAAS,EACnF,CACAO,WAAAA,CAAYF,EAASC,GACnB,OAAO17C,KAAKgmD,YAAchmD,KAAKgmD,YAAYrK,YAAYF,EAASC,GAASxxC,MAAMyxC,YAAYF,EAASC,EACtG,CACAzB,QAAAA,GACMj6C,KAAKgmD,aAAahmD,KAAKgmD,YAAY/L,WACvC/vC,MAAM+vC,UACR,CACAL,eAAAA,CAAgBrI,EAAWnwB,GACzB,OAAOphB,KAAKgmD,YAAchmD,KAAKgmD,YAAYpM,gBAAgBrI,EAAWnwB,GAAalX,MAAM0vC,gBAAgBrI,EAAWnwB,EACtH,CACA,aAAIw7B,GACF,OAAO58C,KAAKgmD,YAAchmD,KAAKgmD,YAAYpJ,UAAY58C,KAAKmmD,UAC9D,CACA,aAAIvJ,CAAUA,GACZ58C,KAAKmmD,WAAavJ,CACpB,CACA,SAAIO,GACF,OAAOn9C,KAAKgmD,YAAchmD,KAAKgmD,YAAY7I,MAAQn9C,KAAKomD,MAC1D,CACA,SAAIjJ,CAAMA,GACRn9C,KAAKomD,OAASjJ,CAChB,CACA,eAAIM,GACF,OAAOz9C,KAAKgmD,YAAchmD,KAAKgmD,YAAYvI,YAAcz9C,KAAKqmD,YAChE,CACA,eAAI5I,CAAYA,GACdz9C,KAAKqmD,aAAe5I,CACtB,CACA,WAAItB,GACF,OAAOn8C,KAAKgmD,YAAchmD,KAAKgmD,YAAY7J,QAAUn8C,KAAKunD,QAC5D,CACA,WAAIpL,CAAQA,GACVn8C,KAAKunD,SAAWpL,CAClB,CACAxE,UAAAA,CAAWzF,GACT,OAAOloC,MAAMY,QAAQsnC,GAAQlyC,KAAKkmD,cAAcvD,OAAM,CAAChsB,EAAG2wB,KACxD,IAAKpV,EAAKoV,GAAK,OACf,MACEpV,KAAMsV,KACHrO,GACDjH,EAAKoV,GACT,OAAO5W,GAAe/Z,EAAGwiB,IAAaxiB,EAAEghB,WAAW6P,EAAQ,IACxDt9C,MAAMytC,WAAWzF,EACxB,CACAgG,gBAAAA,CAAiB5tC,GACf,IAAIm9C,EACJ,OAAOhN,QAAmD,OAA1CgN,EAAqBznD,KAAKgmD,kBAAuB,EAASyB,EAAmBvP,iBAAiB5tC,GAChH,EAMFioC,GAAc0I,SAAW,IACpBzI,GAAOyI,SACV+L,SAAUA,CAACvK,EAAU9F,EAAQyE,EAAOvJ,KAClC,IAAK8E,EAAOuP,cAAc/jD,OAAQ,OAClC,MAAMqkD,EAAa7P,EAAOqB,cAGpB0P,EAAS/Q,EAAOuP,cAAc55C,KAAI,CAACqqB,EAAGzlB,KAC1C,MAAMy2C,EAAYhR,EAAOqP,cAAgBrvB,EACnCixB,EAAgBD,EAAYhxB,EAAEwhB,aAAah2C,OAASw0B,EAAEijB,gBAAgBjjB,EAAEwhB,aAAah2C,OAAQquC,IAWnG,OAVI7Z,EAAEqhB,gBAAkBwO,GACtB7vB,EAAEsY,QACFtY,EAAE/kB,OAAO40C,EAAY,CACnBxM,KAAK,KAEG2N,GACVhxB,EAAEhqB,OAAOi7C,GAEXjxB,EAAE/kB,OAAO6qC,EAAU9F,EAAOqK,iBAAiB5F,IAC3CzkB,EAAEilB,WAAW/J,GACN,CACL3gC,QACA22C,OAAQlxB,EAAEqhB,cAAc71C,OACxBq5C,oBAAqB7kB,EAAE6kB,oBAAoB,EAAGz4C,KAAK2S,IAAIkyC,EAAejxB,EAAEijB,gBAAgBjjB,EAAEwhB,aAAah2C,OAAQquC,MAChH,IAKH,OADAkX,EAAOn2B,MAAK,CAACu2B,EAAIC,IAAOA,EAAGF,OAASC,EAAGD,QAAUE,EAAGvM,oBAAsBsM,EAAGtM,sBACtE7E,EAAOuP,cAAcwB,EAAO,GAAGx2C,MAAM,GAGhD6gC,GAAMQ,cAAgBA,GCpUtB,MAAMyV,WAAmB5V,GACvBtrC,WAAAA,CAAY6P,GACVzM,MAAM,IACD89C,GAAW/M,YACXtkC,GAEP,CACAkhC,aAAAA,CAAclhC,GACZzM,MAAM2tC,cAAclhC,EACtB,CACAqkC,OAAAA,CAAQrkC,GACN,MACEsxC,KAAMC,KACHC,GACDxxC,EACJ,GAAIuxC,EAAO,CACT,MAAME,EAAUF,EAAM57C,KAAIyB,GAAKA,EAAE5L,SAC3BkmD,EAAiBtlD,KAAKC,OAAOolD,GAC7BE,EAAiBvlD,KAAK2S,OAAO0yC,GAAWC,EAC9CF,EAAMjW,KAAO,IAAI8P,OAAOqG,GACpBC,IAAgBH,EAAMjW,MAAQ,IAAM,IAAI8P,OAAOsG,GAAkB,KACrEtoD,KAAKioD,KAAOC,CACd,CACAh+C,MAAM8wC,QAAQmN,EAChB,CACAtM,cAAAA,CAAeC,EAAIV,QACH,IAAVA,IACFA,EAAQ,CAAC,GAEX,MAAMmN,EAAYxlD,KAAKC,IAAIhD,KAAK45C,gBAAgB,EAAGpJ,IAAwBxwC,KAAKsK,MAAMnI,QAChFkP,EAAUrR,KAAKioD,KAAKn9C,QAAOiD,GAAK/N,KAAKwoD,WAAWz6C,EAAG/N,KAAK83C,cAAgBgE,EAAIyM,KAClF,GAAIl3C,EAAQlP,OAAQ,CACK,IAAnBkP,EAAQlP,QACVnC,KAAKijD,sBAAsB,EAAGjjD,KAAKsK,MAAMnI,QAAQ,CAACqvB,EAAGkxB,KACnD,MAAM+F,EAAMp3C,EAAQ,GAAGqxC,GACnBA,GAAM1iD,KAAKsK,MAAMnI,QAAUsmD,IAAQj3B,EAAElnB,QACzCknB,EAAEyd,QACFzd,EAAEuqB,YAAY0M,EAAKrN,GAAM,IAG7B,MAAMx1C,EAAIsE,MAAM2xC,eAAexqC,EAAQ,GAAGrR,KAAKsK,MAAMnI,QAASi5C,GAI9D,OAHuB,IAAnB/pC,EAAQlP,QACVkP,EAAQ,GAAGzM,MAAM5E,KAAK83C,cAAc31C,QAAQyJ,MAAM,IAAIzE,SAAQshD,GAAO7iD,EAAE20C,UAAUrwC,MAAM2xC,eAAe4M,MAEjG7iD,CACT,CACA,OAAO,IAAIu0C,GAAc,CACvBz5B,MAAO1gB,KAAK25C,YAEhB,CACAgC,WAAAA,CAAYF,EAASC,GAQnB,YAPgB,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAGrB,IAAIw4C,GAAsB,GAAIc,EACvC,CACA9uC,MAAAA,CAAO8uC,EAASC,GAOd,QANgB,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAExBs5C,IAAYC,EAAO,OAAO,IAAIvB,GAClC,MAAMoO,EAAYxlD,KAAKC,IAAIkH,MAAM0vC,gBAAgB,EAAGpJ,IAAwBxwC,KAAKsK,MAAMnI,QACvF,IAAIu2C,EACJ,IAAKA,EAAM+C,EAAS/C,GAAO,KACT14C,KAAKioD,KAAKn9C,QAAOiD,GAAK/N,KAAKwoD,WAAWz6C,EAAG/N,KAAKsK,MAAM1F,MAAM2jD,EAAW7P,GAAM6P,KAC/EpmD,OAAS,KAFSu2C,GAIhC,MAAMoB,EAAU5vC,MAAMyC,OAAO+rC,EAAKgD,GAElC,OADA5B,EAAQQ,WAAa5B,EAAM+C,EACpB3B,CACT,CACA,cAAIH,GACF,OAAO35C,KAAKioD,KAAK98C,QAAQnL,KAAKsK,QAAU,CAC1C,ECxFF,IAAIo+C,GD2FJV,GAAW/M,SAAW,IACjB7I,GAAc6I,SACjBuN,WAAYA,CAACG,EAAMC,EAAML,IAAcI,EAAKx9C,QAAQy9C,EAAML,KAAeA,GAE3ExW,GAAMiW,WAAaA,GEzEnBjW,GAAMW,eArBN,cAA6BF,GAW3BqF,aAAAA,CAAclhC,GACZzM,MAAM2tC,cAAclhC,EACtB,CACAqkC,OAAAA,CAAQrkC,GACNzM,MAAM8wC,QAAQ,IACTrkC,EACHinC,SAAUjnC,EAAKu7B,MAEnB,GDlBF,MAAMI,WAAqBE,GA6BzB1rC,WAAAA,CAAY6P,GACVzM,MAAM,IACDooC,GAAa2I,YACbtkC,GAEP,CACAkhC,aAAAA,CAAclhC,GACZzM,MAAM2tC,cAAclhC,EACtB,CACAqkC,OAAAA,CAAQrkC,GACNzM,MAAM8wC,QAAQrkC,GACd3W,KAAK6oD,gBACP,CACAA,cAAAA,GACE,MAAM98B,EAAQ,KAAO/rB,KAAK8oD,cAAgB,WAAa,IAEjD38B,GAAOnsB,KAAKw8B,MAAQ,IAAMiU,GAAazwC,KAAK+oD,OAAS,SAAW/oD,KAAKw8B,MAAQ,MAAQ,IAAM,IACjGx8B,KAAKgpD,cAAgB,IAAIhY,OAAOjlB,EAFpB,OAEkCI,GAC9CnsB,KAAKipD,kBAAoB,IAAIjY,OAAO,IAAMhxC,KAAKkpD,WAAW58C,IAAImkC,IAActjB,KAAK,IAAM,IAAK,KAC5FntB,KAAKmpD,0BAA4B,IAAInY,OAAOP,GAAazwC,KAAKopD,oBAAqB,IACrF,CACAC,0BAAAA,CAA2B/+C,GACzB,OAAOA,EAAM4P,QAAQla,KAAKmpD,0BAA2B,GACvD,CACAG,0BAAAA,CAA2Bh/C,GAEzB,MAAMi/C,EAAQj/C,EAAMsB,MAAM5L,KAAK+oD,OAE/B,OADAQ,EAAM,GAAKA,EAAM,GAAGrvC,QAAQ,wBAAyBla,KAAKopD,oBACnDG,EAAMp8B,KAAKntB,KAAK+oD,MACzB,CACA7M,aAAAA,CAAcJ,EAAIV,QACF,IAAVA,IACFA,EAAQ,CAAC,GAEX,MAAOoO,EAAQ1P,GAAW5vC,MAAMgyC,cAAcl8C,KAAKqpD,2BAA2BrpD,KAAKw8B,OAASx8B,KAAKkpD,WAAW/mD,SAS5Gi5C,EAAMvH,OAASuH,EAAMpB,MAAQoB,EAAMvH,QAAUuH,EAAMpB,KAAO8B,EAAG5hC,QAAQla,KAAKipD,kBAAmBjpD,KAAK+oD,OAASjN,GAAKV,GAGhH,OAFIU,IAAO0N,IAAQ1P,EAAQp5B,MAAO,IAC9B8oC,GAAWxpD,KAAKypD,eAAkBzpD,KAAKsK,OAAoB,MAAXk/C,GAAgB1P,EAAQS,UAAUv6C,KAAK+7C,YAAY,MAChG,CAACyN,EAAQ1P,EAClB,CACA4P,gBAAAA,CAAiBn2C,EAAIo2C,QACQ,IAAvBA,IACFA,GAAqB,GAEvB,IAAI1gB,EAAQ,EACZ,IAAK,IAAIyP,EAAM,EAAGA,EAAMnlC,IAAMmlC,EACxB14C,KAAK62C,OAAO1rC,QAAQnL,KAAKopD,mBAAoB1Q,KAASA,MACtDzP,EACE0gB,IAAoBp2C,GAAMvT,KAAKopD,mBAAmBjnD,SAG1D,OAAO8mC,CACT,CACA2gB,yBAAAA,CAA0BhlD,GAIxB,YAHc,IAAVA,IACFA,EAAQ5E,KAAK62C,QAER72C,KAAK0pD,iBAAiB1pD,KAAKqpD,2BAA2BzkD,GAAOzC,QAAQ,EAC9E,CACAm5C,YAAAA,CAAaG,EAASC,EAAON,GAQ3B,YAPgB,IAAZK,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,SAE3Bs5C,EAASC,GAAS17C,KAAK6pD,2BAA2BpO,EAASC,GACrD17C,KAAKqpD,2BAA2Bn/C,MAAMoxC,aAAaG,EAASC,EAAON,GAC5E,CACAS,cAAAA,CAAeC,EAAIV,QACH,IAAVA,IACFA,EAAQ,CAAC,GAEX,MAAM0O,EAAsB1O,EAAMvJ,MAAQuJ,EAAM2B,iBAAmB3B,EAAM2B,iBAAiBlG,OAAS72C,KAAK62C,OAClGkT,EAAgC/pD,KAAK4pD,0BAA0BE,GACrE9pD,KAAK62C,OAAS72C,KAAKqpD,2BAA2BrpD,KAAKsK,OACnD,MAAM8mC,EAAWpxC,KAAK62C,OACtB72C,KAAK62C,QAAUiF,EACf,MAAMuJ,EAAMrlD,KAAKu6B,OACjB,IAgBIyvB,EAhBAC,GAAY/xC,MAAMmtC,GAClB3kC,GAAO,EACX,GAAIupC,EAAU,CACZ,IAAIC,EACY,MAAZlqD,KAAKgD,KAAehD,KAAKgD,IAAM,GAAKhD,KAAKu6B,OAASv6B,KAAKgD,MAAKknD,EAAWlqD,KAAKgD,KAChE,MAAZhD,KAAK0V,KAAe1V,KAAK0V,IAAM,GAAK1V,KAAKu6B,OAASv6B,KAAK0V,MAAKw0C,EAAWlqD,KAAK0V,KAChE,MAAZw0C,IACElqD,KAAKm8C,SACPn8C,KAAK62C,OAAS72C,KAAKqqC,OAAO6f,EAAUlqD,MAAMka,QAAQo4B,GAAa6X,eAAgBnqD,KAAK+oD,OACpFroC,IAASA,EAAO0wB,IAAapxC,KAAK62C,SAAWuE,EAAMvJ,OAEnDoY,GAAW,GAGfA,IAAaA,EAAWxP,QAAQz6C,KAAK62C,OAAO3jB,MAAMlzB,KAAKgpD,gBACzD,CAEKiB,EAIHD,EAAgB,IAAI7P,GAAc,CAChC3I,SAAUxxC,KAAK62C,OAAOjyC,MAAMwsC,EAASjvC,QACrCk4C,YAAa35B,EAAO,GAAKo7B,EACzBp7B,UANF1gB,KAAK62C,OAASzF,EACd4Y,EAAgB,IAAI7P,IAQtBn6C,KAAK62C,OAAS72C,KAAKspD,2BAA2BtpD,KAAK62C,QACnD,MAAMuT,EAAkBhP,EAAMvJ,MAAQuJ,EAAM2B,iBAAmB3B,EAAM2B,iBAAiBlG,OAAS72C,KAAK62C,OAC9FwT,EAA4BrqD,KAAK4pD,0BAA0BQ,GAEjE,OADAJ,EAAc1P,YAAc+P,EAA4BN,GAAiC/pD,KAAKopD,mBAAmBjnD,OAC1G6nD,CACT,CACAM,oBAAAA,CAAqB5R,GACnB,GAAI14C,KAAKopD,mBAAoB,CAC3B,MAAMmB,EAAa7R,EAAM14C,KAAKopD,mBAAmBjnD,OAAS,EACpDqoD,EAAexqD,KAAKsK,MAAMa,QAAQnL,KAAKopD,mBAAoBmB,GACjE,GAAIC,GAAgB9R,EAAK,OAAO8R,CAClC,CACA,OAAQ,CACV,CACAX,0BAAAA,CAA2B7pB,EAAMzsB,GAC/B,MAAMk3C,EAAyBzqD,KAAKsqD,qBAAqBtqB,GACrDyqB,GAA0B,IAAGzqB,EAAOyqB,GACxC,MAAMC,EAAuB1qD,KAAKsqD,qBAAqB/2C,GAEvD,OADIm3C,GAAwB,IAAGn3C,EAAKm3C,EAAuB1qD,KAAKopD,mBAAmBjnD,QAC5E,CAAC69B,EAAMzsB,EAChB,CACA5G,MAAAA,CAAO8uC,EAASC,QACE,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,SAE3Bs5C,EAASC,GAAS17C,KAAK6pD,2BAA2BpO,EAASC,GAC5D,MAAMiP,EAAiB3qD,KAAKsK,MAAM1F,MAAM,EAAG62C,GACrCmP,EAAgB5qD,KAAKsK,MAAM1F,MAAM82C,GACjCqO,EAAgC/pD,KAAK0pD,iBAAiBiB,EAAexoD,QAC3EnC,KAAK62C,OAAS72C,KAAKspD,2BAA2BtpD,KAAKqpD,2BAA2BsB,EAAiBC,IAC/F,MAAMP,EAA4BrqD,KAAK4pD,0BAA0Be,GACjE,OAAO,IAAIxQ,GAAc,CACvBG,WAAY+P,EAA4BN,GAAiC/pD,KAAKopD,mBAAmBjnD,QAErG,CACAy3C,eAAAA,CAAgBrI,EAAWnwB,GACzB,IAAKphB,KAAKopD,mBAAoB,OAAO7X,EACrC,OAAQnwB,GACN,KAAKovB,GACL,KAAKA,GACL,KAAKA,GACH,CACE,MAAMqa,EAAqB7qD,KAAKsqD,qBAAqB/Y,EAAY,GACjE,GAAIsZ,GAAsB,EAAG,CAC3B,MAAMC,EAAwBD,EAAqB7qD,KAAKopD,mBAAmBjnD,OAC3E,GAAIovC,EAAYuZ,GAAyB9qD,KAAKsK,MAAMnI,QAAU2oD,GAAyB1pC,IAAcovB,GACnG,OAAOqa,CAEX,CACA,KACF,CACF,KAAKra,GACL,KAAKA,GACH,CACE,MAAMua,EAAsB/qD,KAAKsqD,qBAAqB/Y,GACtD,GAAIwZ,GAAuB,EACzB,OAAOA,EAAsB/qD,KAAKopD,mBAAmBjnD,MAEzD,EAEJ,OAAOovC,CACT,CACA0I,QAAAA,GACE,GAAIj6C,KAAKsK,MAAO,CACd,MAAMiwB,EAASv6B,KAAKu6B,OACpB,IAAIywB,EAAWzwB,EAGC,MAAZv6B,KAAKgD,MAAagoD,EAAWjoD,KAAK2S,IAAIs1C,EAAUhrD,KAAKgD,MACzC,MAAZhD,KAAK0V,MAAas1C,EAAWjoD,KAAKC,IAAIgoD,EAAUhrD,KAAK0V,MACrDs1C,IAAazwB,IAAQv6B,KAAK83C,cAAgB93C,KAAKqqC,OAAO2gB,EAAUhrD,OACpE,IAAIirD,EAAYjrD,KAAKsK,MACjBtK,KAAKkrD,iBAAgBD,EAAYjrD,KAAKmrD,gBAAgBF,IACtDjrD,KAAKorD,oBAAsBprD,KAAKw8B,MAAQ,IAAGyuB,EAAYjrD,KAAKqrD,oBAAoBJ,IACpFjrD,KAAK62C,OAASoU,CAChB,CACA/gD,MAAM+vC,UACR,CACAkR,eAAAA,CAAgB7gD,GACd,MAAMi/C,EAAQvpD,KAAKqpD,2BAA2B/+C,GAAOsB,MAAM5L,KAAK+oD,OAUhE,OAPAQ,EAAM,GAAKA,EAAM,GAAGrvC,QAAQ,mBAAmB,CAACgZ,EAAOo4B,EAAMC,EAAOlG,IAAQiG,EAAOjG,IAE/E/6C,EAAMnI,SAAW,MAAM2xB,KAAKy1B,EAAM,MAAKA,EAAM,GAAKA,EAAM,GAAK,KAC7DA,EAAMpnD,OAAS,IACjBonD,EAAM,GAAKA,EAAM,GAAGrvC,QAAQ,MAAO,IAC9BqvC,EAAM,GAAGpnD,SAAQonD,EAAMpnD,OAAS,IAEhCnC,KAAKspD,2BAA2BC,EAAMp8B,KAAKntB,KAAK+oD,OACzD,CACAsC,mBAAAA,CAAoB/gD,GAClB,IAAKA,EAAO,OAAOA,EACnB,MAAMi/C,EAAQj/C,EAAMsB,MAAM5L,KAAK+oD,OAG/B,OAFIQ,EAAMpnD,OAAS,GAAGonD,EAAMrlD,KAAK,IACjCqlD,EAAM,GAAKA,EAAM,GAAGjE,OAAOtlD,KAAKw8B,MAAO,KAChC+sB,EAAMp8B,KAAKntB,KAAK+oD,MACzB,CACA7L,aAAAA,CAAcpB,EAAIV,EAAOY,QACT,IAAVZ,IACFA,EAAQ,CAAC,GAEX,MAAMoQ,EAAgC,IAAfxrD,KAAKw8B,OAAesf,IAAO97C,KAAKopD,qBAAuBtN,IAAO97C,KAAK+oD,OAASjN,IAAOxJ,GAAa6X,gBAAkBnqD,KAAKkpD,WAAWziD,SAASq1C,IAClK,OAAO5xC,MAAMgzC,cAAcpB,EAAIV,EAAOY,KAAewP,CACvD,CACA,iBAAI1T,GACF,OAAO93C,KAAKqpD,2BAA2BrpD,KAAKmrD,gBAAgBnrD,KAAKsK,QAAQ4P,QAAQla,KAAK+oD,MAAOzW,GAAa6X,eAC5G,CACA,iBAAIrS,CAAcA,GAChB5tC,MAAM4tC,cAAgBA,CACxB,CACA,cAAIG,GACF,OAAOj4C,KAAKq7C,MAAMr7C,KAAK83C,cAAe93C,KACxC,CACA,cAAIi4C,CAAWxyC,GACbzF,KAAKg4C,cAAgBh4C,KAAKqqC,OAAO5kC,EAAGzF,MAAMka,QAAQo4B,GAAa6X,eAAgBnqD,KAAK+oD,MACtF,CAGA,UAAIxuB,GACF,OAAOv6B,KAAKi4C,UACd,CACA,UAAI1d,CAAOA,GACTv6B,KAAKi4C,WAAa1d,CACpB,CACA,iBAAIuuB,GACF,OAAmB,MAAZ9oD,KAAKgD,KAAehD,KAAKgD,IAAM,GAAiB,MAAZhD,KAAK0V,KAAe1V,KAAK0V,IAAM,CAC5E,CACA,iBAAI+zC,GACF,OAAmB,MAAZzpD,KAAKgD,KAAehD,KAAKgD,IAAM,GAAiB,MAAZhD,KAAK0V,KAAe1V,KAAK0V,IAAM,CAC5E,CACAwiC,gBAAAA,CAAiB5tC,GAGf,OAAQJ,MAAMguC,iBAAiB5tC,IAAUgoC,GAAa6L,aAAa13C,SAAS6D,IAAUgoC,GAAa6L,aAAa13C,SAASzG,KAAKi4C,gBAA4B,IAAV3tC,GAA8B,KAAftK,KAAKsK,MACtK,EAEFo+C,GAAgBpW,GAChBA,GAAa6X,eAAiB,IAC9B7X,GAAa6L,aAAe,IAAI3L,GAAO2L,aAAc,GACrD7L,GAAa2I,SAAW,IACnBzI,GAAOyI,SACV/I,KAAMztC,OACNskD,MAAO,IACPK,mBAAoB,GACpBF,WAAY,CAACR,GAAcyB,gBAC3BnnD,IAAKyB,OAAOgnD,iBACZ/1C,IAAKjR,OAAOinD,iBACZlvB,MAAO,EACP0uB,gBAAgB,EAChBE,oBAAoB,EACpB/P,MAAO52C,OACP4lC,OAAQ5kC,GAAKA,EAAEkmD,eAAe,QAAS,CACrCC,aAAa,EACbC,sBAAuB,MAG3B9Z,GAAMO,aAAeA,GElTrB,MAAMwZ,GAAY,CAChBC,OAAQ,QACRC,SAAU,gBACVC,MAAO,cAGT,SAASC,GAAWrf,EAAK7M,EAAMzsB,QAChB,IAATysB,IACFA,EAAO8rB,GAAUC,aAER,IAAPx4C,IACFA,EAAKu4C,GAAUC,QAEjB,MAAMpV,EAAS1D,GAAWpG,GAC1B,OAAOviC,GAASqsC,EAAO4G,aAAY5mB,IACjCA,EAAEqJ,GAAQ11B,EACHqsB,EAAEpjB,KAEb,CAMAw+B,GAAM+Z,UAAYA,GAClB/Z,GAAMma,WAAaA,GACnBna,GAAMoa,KALN,SAAc7hD,EAAO4nC,EAAMlS,EAAMzsB,GAC/B,OAAO24C,GAAWha,EAAMlS,EAAMzsB,EAAvB24C,CAA2B5hD,EACpC,EC0GAynC,GAAMqQ,YAxHN,cAA0BhQ,GACxB,cAAIga,GACF,IAAI7b,EACJ,OAA4G,OAApGA,EAAOvmC,MAAMY,QAAQ5K,KAAKgiD,QAAUhiD,KAAKgiD,OAAO,GAAKhiD,KAAKgiD,SAAWqK,IAAW,EAAIrsD,KAAKgiD,QAAkBzR,EAAO,CAC5H,CACA,YAAI+b,GACF,IAAIC,EACJ,OAA8E,OAAtEA,EAAQviD,MAAMY,QAAQ5K,KAAKgiD,QAAUhiD,KAAKgiD,OAAO,GAAKhiD,KAAKgiD,QAAkBuK,EAAQF,GAC/F,CACAvlD,WAAAA,CAAY6P,GACVzM,MAAMyM,EACR,CACAkhC,aAAAA,CAAclhC,GACZzM,MAAM2tC,cAAclhC,EACtB,CACAqkC,OAAAA,CAAQrkC,GACN,IAAI61C,EAAOC,EAAOC,EAClB,MAAM,OACJ1K,KACGE,GACDrP,GAAcl8B,GAClB3W,KAAK2sD,WAAa1mD,OAAOkS,OAAO,CAAC,EAAGnY,KAAK2sD,WAAYzK,GACrD,MAAMtd,EAAQqO,GAAWjzC,KAAK2sD,YAC9B3sD,KAAKgiD,OAAqG,OAA3FwK,EAA4D,OAAnDC,EAAkB,MAAVzK,EAAiBA,EAASpd,EAAMod,QAAkByK,EAAQzsD,KAAKgiD,QAAkBwK,EAAQH,IAEzHniD,MAAM8wC,QAAQ,CACZ9I,KAAM,IAAI8P,OAAOj/C,KAAK2S,IAAI1V,KAAKssD,WAAaD,MAA+C,OAAjCK,EAAgB1sD,KAAKg/C,cAAmB,EAAS0N,EAAcvqD,SAAW,EAAGnC,KAAKosD,aAC5IxK,OAAQ,CACNjrB,EAAGiO,GAELuY,MAAOvY,EAAMuY,MACbP,UAAWhY,EAAMgY,UACjBa,YAAa7Y,EAAM6Y,YACnB1gB,KAAM6H,EAAM7H,KACZ8jB,gBAAiBjc,EAAMic,gBACvBC,YAAalc,EAAMkc,aAEvB,CACA8L,cAAAA,CAAelK,GACb,OAAIA,EAAK1iD,KAAKg/C,QAAQ78C,OAAenC,KAAKg/C,QAAQ0D,GAC9C1iD,KAAKssD,WAAaD,KAAYrsD,KAAKg/C,QAAQ78C,OAASnC,KAAKssD,UAC3DtsD,KAAKg/C,QAAQ96C,KAAK+uC,GAAWjzC,KAAK2sD,aAClC3sD,KAAKkyC,MAAQ,IACNlyC,KAAKg/C,QAAQh/C,KAAKg/C,QAAQ78C,OAAS,SAH5C,CAKF,CACA05C,cAAAA,CAAeC,EAAIV,QACH,IAAVA,IACFA,EAAQ,CAAC,GAEX,MAAMtB,EAAU,IAAIK,GACpB,IAAK,IAAgOvV,EAAOioB,EAAnOnK,EAAuJ,OAAjJoK,EAAkG,OAAzElK,EAAuB5iD,KAAK6+C,eAAe7+C,KAAKm4C,aAAah2C,cAAmB,EAASygD,EAAqB1xC,OAAiB47C,EAAwB/pD,KAAK2S,IAAI1V,KAAKg/C,QAAQ78C,OAAS,EAAG,GAGjOyiC,EAAiD,OAAxCmoB,EAAmB/sD,KAAKg/C,QAAQ0D,IAAeqK,EAAmBF,GAAaA,GAAa7sD,KAAK4sD,eAAelK,KAAOA,EAAI,CAClI,IAAIoK,EAAuBlK,EAAsBmK,EAAkB7L,EACnE,MAAM6B,EAAene,EAAMmX,YAAYD,EAAI,IACtCV,EACH2B,iBAAsE,OAAnDmE,EAAwB9F,EAAM2B,mBAAwF,OAA1DmE,EAAwBA,EAAsBlC,cAAmB,EAASkC,EAAsBwB,KAEjL,GAAIK,EAAariC,MAAQmsC,EAAW,CAElC7sD,KAAKg/C,QAAQrW,MACb3oC,KAAKkyC,KAAOlyC,KAAKkyC,KAAKttC,MAAM,GAC5B,KACF,CAEA,GADAk1C,EAAQS,UAAUwI,GACdA,EAAavI,SAAU,KAC7B,CACA,OAAOV,CACT,CACAkT,cAAAA,CAAevR,EAASC,GACtB,IAAIuR,EAAuBC,OACX,IAAZzR,IACFA,EAAU,GAEZ,MAAM0R,EAAkBpqD,KAAK2S,KAA+D,OAAzDu3C,EAAwBjtD,KAAK6+C,eAAepD,SAAoB,EAASwR,EAAsB/7C,QAAU,EAAGlR,KAAKosD,WAAY,GAChK,IAAIgB,EACS,MAAT1R,IAAe0R,EAAyE,OAAvDF,EAAwBltD,KAAK6+C,eAAenD,SAAkB,EAASwR,EAAsBh8C,OAC5G,MAAlBk8C,IAAwBA,EAAiBptD,KAAKg/C,QAAQ78C,OAAS,GACnE,IAAIkrD,EAAc,EAClB,IAAK,IAAI3O,EAAa0O,EAAgBD,GAAmBzO,IACnD1+C,KAAKg/C,QAAQN,GAAY5G,gBADwC4G,IAAc2O,GAGjFA,IACFrtD,KAAKg/C,QAAQ9vC,OAAOk+C,EAAiBC,EAAc,EAAGA,GACtDrtD,KAAKkyC,KAAOlyC,KAAKkyC,KAAKttC,MAAMyoD,GAEhC,CACApe,KAAAA,GACE/kC,MAAM+kC,QACNjvC,KAAKgtD,gBACP,CACArgD,MAAAA,CAAO8uC,EAASC,QACE,IAAZD,IACFA,EAAU,QAEE,IAAVC,IACFA,EAAQ17C,KAAKm4C,aAAah2C,QAE5B,MAAMgiD,EAAgBj6C,MAAMyC,OAAO8uC,EAASC,GAE5C,OADA17C,KAAKgtD,eAAevR,EAASC,GACtByI,CACT,CACA3I,mBAAAA,CAAoBC,EAASC,GAI3B,YAHgB,IAAZD,IACFA,EAAU,GAEC,MAATC,GAAiB17C,KAAKssD,WAAaD,IAAiBA,IACjDniD,MAAMsxC,oBAAoBC,EAASC,EAC5C,CACA,SAAInF,GACF,OAAOrsC,MAAMqsC,KACf,CACA,SAAIA,CAAMA,GACRv2C,KAAKg/C,QAAQ78C,OAASo0C,EAAMyI,QAAQ78C,OACpCnC,KAAKkyC,KAAOlyC,KAAKkyC,KAAKttC,MAAM,EAAG5E,KAAKg/C,QAAQ78C,QAC5C+H,MAAMqsC,MAAQA,CAChB,GCxGF,IACE+W,WAAWvb,MAAQA,EACrB,CAAE,MAAO,iRC7BTjG,GAAA,kBAAA/9B,CAAA,MAAAuU,EAAAvU,EAAA,GAAAg+B,EAAA9lC,OAAA/E,UAAAuE,EAAAsmC,EAAAxlC,eAAAP,EAAAC,OAAAC,gBAAA,SAAAoc,EAAAvU,EAAAg+B,GAAAzpB,EAAAvU,GAAAg+B,EAAAzhC,KAAA,EAAAjI,EAAA,mBAAA2pC,OAAAA,OAAA,GAAAnmC,EAAAxD,EAAA4pC,UAAA,aAAA1/B,EAAAlK,EAAA6pC,eAAA,kBAAAC,EAAA9pC,EAAA+pC,aAAA,yBAAAC,EAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAA9lC,OAAAC,eAAAoc,EAAAvU,EAAA,CAAAzD,MAAAyhC,EAAA5lC,YAAA,EAAAmmC,cAAA,EAAAp5B,UAAA,IAAAoP,EAAAvU,EAAA,KAAAs+B,EAAA,aAAA/pB,GAAA+pB,EAAA,SAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAAzpB,EAAAvU,GAAAg+B,CAAA,WAAAQ,EAAAjqB,EAAAvU,EAAAg+B,EAAAtmC,GAAA,IAAApD,EAAA0L,GAAAA,EAAA7M,qBAAAsrC,EAAAz+B,EAAAy+B,EAAA3mC,EAAAI,OAAAwmC,OAAApqC,EAAAnB,WAAAqL,EAAA,IAAAmgC,EAAAjnC,GAAA,WAAAO,EAAAH,EAAA,WAAAyE,MAAAqiC,EAAArqB,EAAAypB,EAAAx/B,KAAA1G,CAAA,UAAA+mC,EAAAtqB,EAAAvU,EAAAg+B,GAAA,WAAAvmB,KAAA,SAAAqnB,IAAAvqB,EAAAnd,KAAA4I,EAAAg+B,GAAA,OAAAzpB,GAAA,OAAAkD,KAAA,QAAAqnB,IAAAvqB,EAAA,EAAAvU,EAAAw+B,KAAAA,EAAA,IAAAO,EAAA,iBAAAC,EAAA,iBAAA7L,EAAA,YAAA/9B,EAAA,YAAAssB,EAAA,YAAA+c,IAAA,UAAAQ,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAAb,EAAAa,EAAArnC,GAAA,8BAAAD,EAAAK,OAAAknC,eAAAjwB,EAAAtX,GAAAA,EAAAA,EAAAwnC,EAAA,MAAAlwB,GAAAA,IAAA6uB,GAAAtmC,EAAAN,KAAA+X,EAAArX,KAAAqnC,EAAAhwB,GAAA,IAAAmwB,EAAAJ,EAAA/rC,UAAAsrC,EAAAtrC,UAAA+E,OAAAwmC,OAAAS,GAAA,SAAAI,EAAAhrB,GAAA,0BAAAnb,SAAA,SAAA4G,GAAAs+B,EAAA/pB,EAAAvU,GAAA,SAAAuU,GAAA,YAAAirB,QAAAx/B,EAAAuU,EAAA,gBAAAkrB,EAAAlrB,EAAAvU,GAAA,SAAA0/B,EAAA1B,EAAA/lC,EAAA3D,EAAAwD,GAAA,IAAA0G,EAAAqgC,EAAAtqB,EAAAypB,GAAAzpB,EAAAtc,GAAA,aAAAuG,EAAAiZ,KAAA,KAAA2mB,EAAA5/B,EAAAsgC,IAAAC,EAAAX,EAAA7hC,MAAA,OAAAwiC,GAAA,UAAAY,GAAAZ,IAAArnC,EAAAN,KAAA2nC,EAAA,WAAA/+B,EAAA4/B,QAAAb,EAAAc,SAAAC,MAAA,SAAAvrB,GAAAmrB,EAAA,OAAAnrB,EAAAjgB,EAAAwD,EAAA,aAAAyc,GAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAkI,EAAA4/B,QAAAb,GAAAe,MAAA,SAAAvrB,GAAA6pB,EAAA7hC,MAAAgY,EAAAjgB,EAAA8pC,EAAA,aAAA7pB,GAAA,OAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAA,EAAA0G,EAAAsgC,IAAA,KAAAd,EAAA/lC,EAAA,gBAAAsE,MAAA,SAAAgY,EAAA7c,GAAA,SAAAqoC,IAAA,WAAA//B,GAAA,SAAAA,EAAAg+B,GAAA0B,EAAAnrB,EAAA7c,EAAAsI,EAAAg+B,EAAA,WAAAA,EAAAA,EAAAA,EAAA8B,KAAAC,EAAAA,GAAAA,GAAA,aAAAnB,EAAA5+B,EAAAg+B,EAAAtmC,GAAA,IAAAO,EAAA8mC,EAAA,gBAAAzqC,EAAAwD,GAAA,GAAAG,IAAAk7B,EAAA,MAAA1f,MAAA,mCAAAxb,IAAA7C,EAAA,cAAAd,EAAA,MAAAwD,EAAA,OAAAyE,MAAAgY,EAAAye,MAAA,OAAAt7B,EAAAsR,OAAA1U,EAAAoD,EAAAonC,IAAAhnC,IAAA,KAAA0G,EAAA9G,EAAAsoC,SAAA,GAAAxhC,EAAA,KAAA4/B,EAAA6B,EAAAzhC,EAAA9G,GAAA,GAAA0mC,EAAA,IAAAA,IAAA1c,EAAA,gBAAA0c,CAAA,cAAA1mC,EAAAsR,OAAAtR,EAAAwoC,KAAAxoC,EAAAyoC,MAAAzoC,EAAAonC,SAAA,aAAApnC,EAAAsR,OAAA,IAAA/Q,IAAA8mC,EAAA,MAAA9mC,EAAA7C,EAAAsC,EAAAonC,IAAApnC,EAAA0oC,kBAAA1oC,EAAAonC,IAAA,gBAAApnC,EAAAsR,QAAAtR,EAAA2oC,OAAA,SAAA3oC,EAAAonC,KAAA7mC,EAAAk7B,EAAA,IAAAgM,EAAAN,EAAA7+B,EAAAg+B,EAAAtmC,GAAA,cAAAynC,EAAA1nB,KAAA,IAAAxf,EAAAP,EAAAs7B,KAAA59B,EAAA4pC,EAAAG,EAAAL,MAAApd,EAAA,gBAAAnlB,MAAA4iC,EAAAL,IAAA9L,KAAAt7B,EAAAs7B,KAAA,WAAAmM,EAAA1nB,OAAAxf,EAAA7C,EAAAsC,EAAAsR,OAAA,QAAAtR,EAAAonC,IAAAK,EAAAL,IAAA,YAAAmB,EAAAjgC,EAAAg+B,GAAA,IAAAtmC,EAAAsmC,EAAAh1B,OAAA/Q,EAAA+H,EAAAk+B,SAAAxmC,GAAA,GAAAO,IAAAsc,EAAA,OAAAypB,EAAAgC,SAAA,eAAAtoC,GAAAsI,EAAAk+B,SAAAoC,SAAAtC,EAAAh1B,OAAA,SAAAg1B,EAAAc,IAAAvqB,EAAA0rB,EAAAjgC,EAAAg+B,GAAA,UAAAA,EAAAh1B,SAAA,WAAAtR,IAAAsmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAA7oC,EAAA,aAAAgqB,EAAA,IAAAptB,EAAAuqC,EAAA5mC,EAAA+H,EAAAk+B,SAAAF,EAAAc,KAAA,aAAAxqC,EAAAmjB,KAAA,OAAAumB,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAAxqC,EAAAwqC,IAAAd,EAAAgC,SAAA,KAAAte,EAAA,IAAA5pB,EAAAxD,EAAAwqC,IAAA,OAAAhnC,EAAAA,EAAAk7B,MAAAgL,EAAAh+B,EAAAwgC,YAAA1oC,EAAAyE,MAAAyhC,EAAAlpC,KAAAkL,EAAAygC,QAAA,WAAAzC,EAAAh1B,SAAAg1B,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,GAAAypB,EAAAgC,SAAA,KAAAte,GAAA5pB,GAAAkmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAAvC,EAAAgC,SAAA,KAAAte,EAAA,UAAAgf,EAAAnsB,GAAA,IAAAvU,EAAA,CAAA2gC,OAAApsB,EAAA,SAAAA,IAAAvU,EAAA4gC,SAAArsB,EAAA,SAAAA,IAAAvU,EAAA6gC,WAAAtsB,EAAA,GAAAvU,EAAA8gC,SAAAvsB,EAAA,SAAAwsB,WAAA5qC,KAAA6J,EAAA,UAAAghC,EAAAzsB,GAAA,IAAAvU,EAAAuU,EAAA0sB,YAAA,GAAAjhC,EAAAyX,KAAA,gBAAAzX,EAAA8+B,IAAAvqB,EAAA0sB,WAAAjhC,CAAA,UAAA2+B,EAAApqB,GAAA,KAAAwsB,WAAA,EAAAJ,OAAA,SAAApsB,EAAAnb,QAAAsnC,EAAA,WAAAQ,OAAA,YAAA7B,EAAAr/B,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAg+B,EAAAh+B,EAAAlI,GAAA,GAAAkmC,EAAA,OAAAA,EAAA5mC,KAAA4I,GAAA,sBAAAA,EAAAlL,KAAA,OAAAkL,EAAA,IAAAmK,MAAAnK,EAAA5L,QAAA,KAAA6D,GAAA,EAAA3D,EAAA,SAAAQ,IAAA,OAAAmD,EAAA+H,EAAA5L,QAAA,GAAAsD,EAAAN,KAAA4I,EAAA/H,GAAA,OAAAnD,EAAAyH,MAAAyD,EAAA/H,GAAAnD,EAAAk+B,MAAA,EAAAl+B,EAAA,OAAAA,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,SAAAR,EAAAQ,KAAAR,CAAA,YAAAisC,UAAAZ,GAAA3/B,GAAA,2BAAAi/B,EAAA9rC,UAAA+rC,EAAAjnC,EAAAqnC,EAAA,eAAA/iC,MAAA2iC,EAAAX,cAAA,IAAAtmC,EAAAinC,EAAA,eAAA3iC,MAAA0iC,EAAAV,cAAA,IAAAU,EAAAkC,YAAA7C,EAAAY,EAAAd,EAAA,qBAAAp+B,EAAAohC,oBAAA,SAAA7sB,GAAA,IAAAvU,EAAA,mBAAAuU,GAAAA,EAAAxb,YAAA,QAAAiH,IAAAA,IAAAi/B,GAAA,uBAAAj/B,EAAAmhC,aAAAnhC,EAAAjC,MAAA,EAAAiC,EAAAqhC,KAAA,SAAA9sB,GAAA,OAAArc,OAAAopC,eAAAppC,OAAAopC,eAAA/sB,EAAA2qB,IAAA3qB,EAAAlY,UAAA6iC,EAAAZ,EAAA/pB,EAAA6pB,EAAA,sBAAA7pB,EAAAphB,UAAA+E,OAAAwmC,OAAAY,GAAA/qB,CAAA,EAAAvU,EAAAuhC,MAAA,SAAAhtB,GAAA,OAAAsrB,QAAAtrB,EAAA,EAAAgrB,EAAAE,EAAAtsC,WAAAmrC,EAAAmB,EAAAtsC,UAAAqL,GAAA,0BAAAwB,EAAAy/B,cAAAA,EAAAz/B,EAAAwhC,MAAA,SAAAjtB,EAAAypB,EAAAtmC,EAAAO,EAAA3D,QAAA,IAAAA,IAAAA,EAAAmtC,SAAA,IAAA3pC,EAAA,IAAA2nC,EAAAjB,EAAAjqB,EAAAypB,EAAAtmC,EAAAO,GAAA3D,GAAA,OAAA0L,EAAAohC,oBAAApD,GAAAlmC,EAAAA,EAAAhD,OAAAgrC,MAAA,SAAAvrB,GAAA,OAAAA,EAAAye,KAAAze,EAAAhY,MAAAzE,EAAAhD,MAAA,KAAAyqC,EAAAD,GAAAhB,EAAAgB,EAAAlB,EAAA,aAAAE,EAAAgB,EAAAxnC,GAAA,0BAAAwmC,EAAAgB,EAAA,qDAAAt/B,EAAA7G,KAAA,SAAAob,GAAA,IAAAvU,EAAA9H,OAAAqc,GAAAypB,EAAA,WAAAtmC,KAAAsI,EAAAg+B,EAAA7nC,KAAAuB,GAAA,OAAAsmC,EAAA0D,UAAA,SAAA5sC,IAAA,KAAAkpC,EAAA5pC,QAAA,KAAAmgB,EAAAypB,EAAApD,MAAA,GAAArmB,KAAAvU,EAAA,OAAAlL,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,QAAAA,EAAAk+B,MAAA,EAAAl+B,CAAA,GAAAkL,EAAAq/B,OAAAA,EAAAV,EAAAxrC,UAAA,CAAA4F,YAAA4lC,EAAAuC,MAAA,SAAAlhC,GAAA,QAAAuE,KAAA,OAAAzP,KAAA,OAAAorC,KAAA,KAAAC,MAAA5rB,EAAA,KAAAye,MAAA,OAAAgN,SAAA,UAAAh3B,OAAA,YAAA81B,IAAAvqB,EAAA,KAAAwsB,WAAA3nC,QAAA4nC,IAAAhhC,EAAA,QAAAg+B,KAAA,WAAAA,EAAA2D,OAAA,IAAAjqC,EAAAN,KAAA,KAAA4mC,KAAA7zB,OAAA6zB,EAAAnnC,MAAA,WAAAmnC,GAAAzpB,EAAA,EAAAqtB,KAAA,gBAAA5O,MAAA,MAAAze,EAAA,KAAAwsB,WAAA,GAAAE,WAAA,aAAA1sB,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,YAAA+C,IAAA,EAAAzB,kBAAA,SAAApgC,GAAA,QAAAgzB,KAAA,MAAAhzB,EAAA,IAAAg+B,EAAA,cAAA8D,EAAApqC,EAAAO,GAAA,OAAAH,EAAA2f,KAAA,QAAA3f,EAAAgnC,IAAA9+B,EAAAg+B,EAAAlpC,KAAA4C,EAAAO,IAAA+lC,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,KAAAtc,CAAA,SAAAA,EAAA,KAAA8oC,WAAA3sC,OAAA,EAAA6D,GAAA,IAAAA,EAAA,KAAA3D,EAAA,KAAAysC,WAAA9oC,GAAAH,EAAAxD,EAAA2sC,WAAA,YAAA3sC,EAAAqsC,OAAA,OAAAmB,EAAA,UAAAxtC,EAAAqsC,QAAA,KAAAp8B,KAAA,KAAA/F,EAAA9G,EAAAN,KAAA9C,EAAA,YAAA8pC,EAAA1mC,EAAAN,KAAA9C,EAAA,iBAAAkK,GAAA4/B,EAAA,SAAA75B,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,WAAAr8B,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,SAAAriC,GAAA,QAAA+F,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,YAAAxC,EAAA,MAAA3qB,MAAA,kDAAAlP,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,KAAAR,OAAA,SAAA9rB,EAAAvU,GAAA,QAAAg+B,EAAA,KAAA+C,WAAA3sC,OAAA,EAAA4pC,GAAA,IAAAA,EAAA,KAAA/lC,EAAA,KAAA8oC,WAAA/C,GAAA,GAAA/lC,EAAA0oC,QAAA,KAAAp8B,MAAA7M,EAAAN,KAAAa,EAAA,oBAAAsM,KAAAtM,EAAA4oC,WAAA,KAAAvsC,EAAA2D,EAAA,OAAA3D,IAAA,UAAAigB,GAAA,aAAAA,IAAAjgB,EAAAqsC,QAAA3gC,GAAAA,GAAA1L,EAAAusC,aAAAvsC,EAAA,UAAAwD,EAAAxD,EAAAA,EAAA2sC,WAAA,UAAAnpC,EAAA2f,KAAAlD,EAAAzc,EAAAgnC,IAAA9+B,EAAA1L,GAAA,KAAA0U,OAAA,YAAAlU,KAAAR,EAAAusC,WAAAnf,GAAA,KAAA2C,SAAAvsB,EAAA,EAAAusB,SAAA,SAAA9P,EAAAvU,GAAA,aAAAuU,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,gBAAAvqB,EAAAkD,MAAA,aAAAlD,EAAAkD,KAAA,KAAA3iB,KAAAyf,EAAAuqB,IAAA,WAAAvqB,EAAAkD,MAAA,KAAAoqB,KAAA,KAAA/C,IAAAvqB,EAAAuqB,IAAA,KAAA91B,OAAA,cAAAlU,KAAA,kBAAAyf,EAAAkD,MAAAzX,IAAA,KAAAlL,KAAAkL,GAAA0hB,CAAA,EAAAyZ,OAAA,SAAA5mB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA6C,aAAAtsB,EAAA,YAAA8P,SAAA2Z,EAAAiD,WAAAjD,EAAA8C,UAAAE,EAAAhD,GAAAtc,CAAA,GAAAqgB,MAAA,SAAAxtB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA2C,SAAApsB,EAAA,KAAA7c,EAAAsmC,EAAAiD,WAAA,aAAAvpC,EAAA+f,KAAA,KAAAxf,EAAAP,EAAAonC,IAAAkC,EAAAhD,EAAA,QAAA/lC,CAAA,QAAAwb,MAAA,0BAAAuuB,cAAA,SAAAhiC,EAAAg+B,EAAAtmC,GAAA,YAAAsoC,SAAA,CAAA9B,SAAAmB,EAAAr/B,GAAAwgC,WAAAxC,EAAAyC,QAAA/oC,GAAA,cAAAsR,SAAA,KAAA81B,IAAAvqB,GAAAmN,CAAA,GAAA1hB,CAAA,UAAAw/C,GAAAxhB,EAAAlmC,IAAA,MAAAA,GAAAA,EAAAkmC,EAAA5pC,UAAA0D,EAAAkmC,EAAA5pC,QAAA,QAAA4L,EAAA,EAAAtI,EAAAuE,MAAAnE,GAAAkI,EAAAlI,EAAAkI,IAAAtI,EAAAsI,GAAAg+B,EAAAh+B,GAAA,OAAAtI,CAAA,UAAAuqC,GAAAvqC,EAAA6c,EAAAvU,EAAAg+B,EAAA/lC,EAAAH,EAAA0G,GAAA,QAAAlK,EAAAoD,EAAAI,GAAA0G,GAAA4/B,EAAA9pC,EAAAiI,KAAA,OAAA7E,GAAA,YAAAsI,EAAAtI,EAAA,CAAApD,EAAA0+B,KAAAze,EAAA6pB,GAAAqD,QAAA7B,QAAAxB,GAAA0B,KAAA9B,EAAA/lC,EAAA,CAGA,IAoZA,GApZiB,WACf,IAAMwnD,EAAiB,6EACjBC,EAAa,uCAGbC,EAAa,CACjBC,SAAU,SAAUrjD,EAAOtJ,GACzB,SAAKsJ,GAA0B,IAAjBA,EAAMnI,UAClBnB,EAAM4sD,QAAU,iCACT,EAIX,EACAC,MAAO,SAAUvjD,EAAOtJ,GACtB,OAAqB,KAAjBsJ,EAAMnI,SAGRnB,EAAM4sD,QAAU,sBACT,EAEX,EACAE,MAAO,SAAUxjD,EAAOtJ,GACtB,QAAI,YAAY8yB,KAAKxpB,KAGnBtJ,EAAM4sD,QAAU,sBACT,EAEX,GAIF,SAASG,EAAU/sD,EAAOuoC,GACxB,GAAIvoC,EAAM4sD,QAAS,CACjB,IAAII,EAAiB1sD,SAASC,cAAc,OAC5CysD,EAAe78C,YAAcnQ,EAAM4sD,QACnCI,EAAexhD,UAAUC,IAAI,eAC7B88B,EAAM3nC,YAAYosD,EACpB,CACF,CAGA,SAASC,EAAaC,GACpBA,EAAKzmD,iBAAiB,gBAAgBN,SAAQ,SAAUwD,GACtDA,EAAGgC,QACL,IACAuhD,EAAKzmD,iBAAiB,kBAAkBN,SAAQ,SAAUwD,GACxDA,EAAG6B,UAAUG,OAAO,gBACtB,GACF,CAGA,SAASixC,EAASsQ,GAChB,IAAI5iB,GAAS,EAEbthC,MAAMg2B,KAAKkuB,EAAKzmD,iBAAiB,iBAAiBN,SAAQ,SACxDgnD,GAEA,IAAIntD,EAAQ,CAAC,EACXmgC,EAAUgtB,EAAU3mD,cAAc,2BAEpC,GAAI2mD,EAAU3mD,cAAc,qBACrBkmD,EAAWC,SAASxsB,EAAQ72B,MAAOtJ,GAItC,OAHA+sD,EAAU/sD,EAAOmtD,GACjBhtB,EAAQ30B,UAAUC,IAAI,sBACtB6+B,GAAS,GAKQ,QAAjBnK,EAAQ3b,OACLkoC,EAAWG,MAAM1sB,EAAQ72B,MAAOtJ,KACnC+sD,EAAU/sD,EAAOmtD,GACjBhtB,EAAQ30B,UAAUC,IAAI,iBACtB6+B,GAAS,IAIQ,UAAjBnK,EAAQ3b,OACLkoC,EAAWI,MAAM3sB,EAAQ72B,MAAOtJ,KACnC+sD,EAAU/sD,EAAOmtD,GACjBhtB,EAAQ30B,UAAUC,IAAI,iBACtB6+B,GAAS,GAGf,IAEA,IAAI8iB,EAAeF,EAAK1mD,cAAc,kBAQtC,OAPI4mD,GACFA,EAAaC,eAAe,CAC1B5rC,SAAU,SACVmiB,MAAO,WAIJ0G,CACT,CAEA,SAASgjB,EAAmB/+C,GAC1Bg/C,MAAMd,EAAY,CAChB12C,OAAQ,OACRy3C,QAAS,CAAE,eAAgB,kCAC3BxsD,KAAMysD,KAAKC,UAAUn/C,KAEpBs+B,MAAK,WAAa,IAClBiC,OAAM,WAAa,GACxB,CAGA,SAAS6e,EAAUC,GAKjB,IAJA,IAAI9iD,EAAO8iD,EAAQ,IAEjBC,EADgBC,mBAAmBxtD,SAASytD,QACzBnjD,MAAM,KAElBvJ,EAAI,EAAGA,EAAIwsD,EAAG1sD,OAAQE,IAAK,CAGlC,IAFA,IAAIkK,EAAIsiD,EAAGxsD,GAEY,MAAhBkK,EAAEmjC,OAAO,IACdnjC,EAAIA,EAAEqlC,UAAU,GAGlB,GAAwB,IAApBrlC,EAAEpB,QAAQW,GACZ,OAAOS,EAAEqlC,UAAU9lC,EAAK3J,OAAQoK,EAAEpK,OAEtC,CAEA,MAAO,EACT,CAsJA,SAAA6sD,IAzRF,IAAAvpD,EAuRG,OAvRHA,EAyREqmC,KAAAsD,MAnJA,SAAA6f,EAAoBf,EAAMngD,GAAC,IAAAmhD,EAAAC,EAAA5/C,EAAAke,EAAA2hC,EAAAC,EAAAC,EAAAC,EAAA,OAAAzjB,KAAAS,MAAA,SAAAijB,GAAA,cAAAA,EAAAl9C,KAAAk9C,EAAA3sD,MAAA,OAMZ,GALTssD,EAAUjB,EAAK1mD,cAAc,+CAEjCuG,EAAEuZ,iBACF2mC,EAAaC,GAET3+C,EAAO,CAAC,EAEPquC,EAASsQ,GAAO,CAAFsB,EAAA3sD,KAAA,eAAA2sD,EAAAphB,OAAA,iBAInBpkC,MAAMg2B,KAAK,IAAIyvB,SAASvB,IAAO/mD,SAAQ,SAAUuoD,GAC/C,IAAI3pD,EAAM2pD,EAAY,GAClBplD,EAAQolD,EAAY,GAEb,UAAP3pD,GACFwJ,EAAKxJ,GAAO4pD,EAAiB,kBAAmBrlD,GAChDiF,EAAe,SAAIjF,GAEnBiF,EAAKxJ,GAAOuE,CAEhB,IAEA6kD,EAAQx2B,UAAW,EAEflL,EAAMnsB,SAAS2G,SAASI,MAC1B+mD,EAAmB3hC,EAAItiB,QAAQ,OAGT,EACtBsiB,EACG7oB,MAAMwqD,EAAmB,EAAG3hC,EAAItrB,QAChCyJ,MAAM,KACNU,KAAI,SAAUsjD,GACb,OAAOA,EAAUhkD,MAAM,IACzB,IACCzE,SAAQ,SAAU0oD,GACjB,IAAI9pD,EAAM8pD,EAAQ,GAClB9pD,EAAMA,EAAI,GAAG+pD,cAAgB/pD,EAAInB,MAAM,EAAGmB,EAAI5D,QAC9C,IAAImI,EAAQulD,EAAQ,GACpBvlD,EACEA,EAAMa,QAAQ,MAAQ,EAClBb,EAAM1F,MAAM,EAAG0F,EAAMa,QAAQ,MAC7Bb,EACNiF,EAAKxJ,GAAOuE,CACd,IAEEqkD,EAAU,aACZA,EAAU,YACP/pD,MAAMwqD,EAAmB,EAAGT,EAAU,YAAYxsD,QAClDyJ,MAAM,KACNU,KAAI,SAAUsjD,GACb,OAAOA,EAAUhkD,MAAM,IACzB,IACCzE,SAAQ,SAAU0oD,GACjB,IAAI9pD,EAAM8pD,EAAQ,GAClB9pD,EAAMA,EAAI,GAAG+pD,cAAgB/pD,EAAInB,MAAM,EAAGmB,EAAI5D,QAC9C,IAAImI,EAAQulD,EAAQ,GACpBvlD,EACEA,EAAMa,QAAQ,MAAQ,EAClBb,EAAM1F,MAAM,EAAG0F,EAAMa,QAAQ,MAC7Bb,EACNiF,EAAKxJ,GAAOuE,CACd,IAKA+kD,EAAoD,QAAzCH,EAAGhB,EAAK1mD,cAAc,2BAAmB,IAAA0nD,OAAA,EAAtCA,EAAwCtnD,SAC1D0nD,EAAgBpB,EAAK1mD,cAAc,mBAEjC6nD,IAAgBC,GA9MxBvjB,EA+MUsjB,EA/MV,SAAAtjB,GAAA,GAAA/hC,MAAAY,QAAAmhC,GAAA,OAAAwhB,GAAAxhB,EAAA,CAAAgkB,CAAAhkB,IAAA,SAAAA,GAAA,uBAAAC,QAAA,MAAAD,EAAAC,OAAAC,WAAA,MAAAF,EAAA,qBAAA/hC,MAAAg2B,KAAA+L,EAAA,CAAAikB,CAAAjkB,IAAA,SAAAA,EAAAlmC,GAAA,GAAAkmC,EAAA,qBAAAA,EAAA,OAAAwhB,GAAAxhB,EAAAlmC,GAAA,IAAAyc,EAAA,GAAAhP,SAAAnO,KAAA4mC,GAAAnnC,MAAA,uBAAA0d,GAAAypB,EAAAjlC,cAAAwb,EAAAypB,EAAAjlC,YAAAgF,MAAA,QAAAwW,GAAA,QAAAA,EAAAtY,MAAAg2B,KAAA+L,GAAA,cAAAzpB,GAAA,2CAAAwR,KAAAxR,GAAAirC,GAAAxhB,EAAAlmC,QAAA,GAAAoqD,CAAAlkB,IAAA,qBAAAuC,UAAA,wIAAA4hB,IA+MuB/oD,SAAQ,SAAClG,GACpBsO,EAAc,SAAKtO,EAAKqJ,OACU,aAAhCrJ,EAAKkM,aAAa,aACpBoC,EAAc,QAAItO,EAAKkM,aAAa,WAG1C,IAE6C,aAAzCmiD,EAAcniD,aAAa,aAC7BoC,EAAc,QAAI+/C,EAAcniD,aAAa,aAK7CoiD,EAAgBZ,EAAU,oBAE5Bp/C,EAAoB,cAAIggD,GAG1BhgD,EAAc,QAAIke,EAAI7hB,MAAM,KAAK,IAAM6hB,EAGvCle,EAAY,MAAI,GAEhBg/C,MAAMf,EAAgB,CACpBz2C,OAAQ,OACRy3C,QAAS,CAAE,eAAgB,kCAC3BxsD,KAAMysD,KAAKC,UAAUn/C,KAEpBs+B,MAAK,SAACsiB,GAAQ,OAAKA,EAASC,MAAM,IAClCviB,MAAK,WACJshB,EAAQx2B,UAAW,EAGnB21B,EAAmB/+C,GAUjBu2B,GAAO+B,KAAK,gBAIdwoB,GAAG,SAAS,YAAY,eACxBC,GAAGC,KAAK,QACRD,GAAGE,YAAYC,MAAM,QACrBC,KAAKxsD,KAAK,CAAEshB,KAAM,YAAa7b,GAAI,QAASgnD,KAAM,SAGlDzC,EAAKjf,QACLlkC,EAAE,cAAc2Y,IAAI,IAAI1X,QAAQ,UAChCjB,EAAE,oBAAoB2Y,IAAI,IAAI1X,QAAQ,UACtCjB,EAAE,SAAS2Y,IAAI,IAAI1X,QAAQ,UAC3BjB,EAAE,eAAe2Y,IAAI,IAAI1X,QAAQ,UACjCjB,EAAE,YAAY2Y,IAAI,IAAI1X,QAAQ,UAC9BjB,EAAE,kBAAkB2Y,IAAI,IAAI1X,QAAQ,UACpCjB,EAAE,YAAY2Y,IAAI,IAAI1X,QAAQ,UAC9BjB,EAAE,kBAAkB2Y,IAAI,IAAI1X,QAAQ,SACtC,IACC8jC,OAAM,SAAU9uC,GACf2xC,QAAQie,IAAI5vD,GACZmuD,EAAQx2B,UAAW,EACnBzzB,KAAAA,MACE,4EACA,CAAExE,SAAU,IAAMF,aAAc,KAEpC,IAAG,yBAAAgvD,EAAA7f,OAtRT,IAAA5D,CAsRS,GAAAkjB,EAAA,IAGPD,EAzRF,eAAA1sC,EAAA,KAAAvU,EAAAb,UAAA,WAAAsiC,SAAA,SAAAzD,EAAA/lC,GAAA,IAAAH,EAAAJ,EAAA2I,MAAAkU,EAAAvU,GAAA,SAAA8iD,EAAAprD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,OAAArrD,EAAA,UAAAqrD,EAAArrD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,QAAArrD,EAAA,CAAAorD,OAAA,OAuRG7B,EAAA5gD,MAAA,KAAAlB,UAAA,CAqCD,SAAS6jD,EAAQ3vD,GACf,IAAI8sD,EAAO5sD,SAASkG,cAAcpG,GAE7B8sD,IAILA,EAAKpqD,iBAAiB,UAAU,SAAUiK,IA9L5C,SACmBijD,EAAAC,GAAAjC,EAAA5gD,MAAC,KAADlB,UAAA,CA8LfgkD,CAAKhD,EAAMngD,EACb,IAyBF,SAAuBmgD,EAAM1rD,GAC3B,IAAM2uD,EAAWjD,EAAKzmD,iBAAiB,2BACnC2pD,GAAU,EACdD,EAAShqD,SAAQ,SAACg6B,GAChBp2B,EAAEo2B,GAASkwB,IAAI,QAAQ,SAACtjD,GACjBqjD,IA3BPf,GAAG,SAAS,YAAY,aACxBC,GAAGE,YAAYC,MAAM,qBACrBC,KAAKxsD,KAAK,CAAEshB,KAAM,YAAa7b,GAAI,QAASgnD,KAAM,sBA2B9CS,GAAU,EAEd,GACF,GACF,CAlCEE,CAAcpD,GAKhB,CAGA,SAASqD,EAAgB9mD,EAAK+mD,GAC5B,IACE/mD,EAAItD,SAAQ,SAAClG,GACXA,EAAK6C,iBAAiB,UAAU,WACzB2G,EAAIoI,MAAK,SAAC4+C,GAAQ,OAAMA,EAASC,OAAO,IAG3CF,EAAI9vD,aAAa,WAAY,YAF7B8vD,EAAIlkD,gBAAgB,WAIxB,GACF,GACF,CAAE,MAAOS,GAAI,CACf,CAiBA,SAAS4hD,EAAiBhmD,EAAIgoD,GAG5B,IAFA,IAAIC,EAAatwD,SAASmG,iBAAiBkC,GAElCtH,EAAI,EAAGA,EAAIuvD,EAAWzvD,OAAQE,IACrC,GAAIsvD,GAAUC,EAAWvvD,GAAGiI,MAC1B,OAAOsnD,EAAWvvD,GAAG8O,WAG3B,CAGAnN,YAAW,WACTssD,GAAGE,YAAYC,MAAM,gBACvB,GAAG,KAGH,IAAIoB,EAAcvwD,SAASmG,iBAAiB,qBAE5CoqD,EAAY1vD,QAAU0vD,EAAY1qD,SAAQ,SAAC2qD,GACzC,IAAI/f,GAAM+f,EAAY,CACpB5f,KAAM,wBAEV,IAGA6e,EAAQ,SACRA,EAAQ,eACRQ,EACE,CACEjwD,SAASkG,cAAc,mBACvBlG,SAASkG,cAAc,kBAEzBlG,SAASkG,cAAc,cAEzB+pD,EACE,CACEjwD,SAASkG,cAAc,yBACvBlG,SAASkG,cAAc,wBAEzBlG,SAASkG,cAAc,mBAE3B,EChZA,GANoB,WAClB,IAAMuqD,EAAW,IAAIC,IAAIloD,OAAO7B,SAASI,MAAME,SAASqD,MAAM,KAE9D,OADammD,EAASppB,OAASopB,EAASppB,OAC5BspB,mBACd,yPCHAnmB,GAAA,kBAAA/9B,CAAA,MAAAuU,EAAAvU,EAAA,GAAAg+B,EAAA9lC,OAAA/E,UAAAuE,EAAAsmC,EAAAxlC,eAAAP,EAAAC,OAAAC,gBAAA,SAAAoc,EAAAvU,EAAAg+B,GAAAzpB,EAAAvU,GAAAg+B,EAAAzhC,KAAA,EAAAjI,EAAA,mBAAA2pC,OAAAA,OAAA,GAAAnmC,EAAAxD,EAAA4pC,UAAA,aAAA1/B,EAAAlK,EAAA6pC,eAAA,kBAAAC,EAAA9pC,EAAA+pC,aAAA,yBAAAC,EAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAA9lC,OAAAC,eAAAoc,EAAAvU,EAAA,CAAAzD,MAAAyhC,EAAA5lC,YAAA,EAAAmmC,cAAA,EAAAp5B,UAAA,IAAAoP,EAAAvU,EAAA,KAAAs+B,EAAA,aAAA/pB,GAAA+pB,EAAA,SAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAAzpB,EAAAvU,GAAAg+B,CAAA,WAAAQ,EAAAjqB,EAAAvU,EAAAg+B,EAAAtmC,GAAA,IAAApD,EAAA0L,GAAAA,EAAA7M,qBAAAsrC,EAAAz+B,EAAAy+B,EAAA3mC,EAAAI,OAAAwmC,OAAApqC,EAAAnB,WAAAqL,EAAA,IAAAmgC,EAAAjnC,GAAA,WAAAO,EAAAH,EAAA,WAAAyE,MAAAqiC,EAAArqB,EAAAypB,EAAAx/B,KAAA1G,CAAA,UAAA+mC,EAAAtqB,EAAAvU,EAAAg+B,GAAA,WAAAvmB,KAAA,SAAAqnB,IAAAvqB,EAAAnd,KAAA4I,EAAAg+B,GAAA,OAAAzpB,GAAA,OAAAkD,KAAA,QAAAqnB,IAAAvqB,EAAA,EAAAvU,EAAAw+B,KAAAA,EAAA,IAAAO,EAAA,iBAAAC,EAAA,iBAAA7L,EAAA,YAAA/9B,EAAA,YAAAssB,EAAA,YAAA+c,IAAA,UAAAQ,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAAb,EAAAa,EAAArnC,GAAA,8BAAAD,EAAAK,OAAAknC,eAAAjwB,EAAAtX,GAAAA,EAAAA,EAAAwnC,EAAA,MAAAlwB,GAAAA,IAAA6uB,GAAAtmC,EAAAN,KAAA+X,EAAArX,KAAAqnC,EAAAhwB,GAAA,IAAAmwB,EAAAJ,EAAA/rC,UAAAsrC,EAAAtrC,UAAA+E,OAAAwmC,OAAAS,GAAA,SAAAI,EAAAhrB,GAAA,0BAAAnb,SAAA,SAAA4G,GAAAs+B,EAAA/pB,EAAAvU,GAAA,SAAAuU,GAAA,YAAAirB,QAAAx/B,EAAAuU,EAAA,gBAAAkrB,EAAAlrB,EAAAvU,GAAA,SAAA0/B,EAAA1B,EAAA/lC,EAAA3D,EAAAwD,GAAA,IAAA0G,EAAAqgC,EAAAtqB,EAAAypB,GAAAzpB,EAAAtc,GAAA,aAAAuG,EAAAiZ,KAAA,KAAA2mB,EAAA5/B,EAAAsgC,IAAAC,EAAAX,EAAA7hC,MAAA,OAAAwiC,GAAA,UAAAY,GAAAZ,IAAArnC,EAAAN,KAAA2nC,EAAA,WAAA/+B,EAAA4/B,QAAAb,EAAAc,SAAAC,MAAA,SAAAvrB,GAAAmrB,EAAA,OAAAnrB,EAAAjgB,EAAAwD,EAAA,aAAAyc,GAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAkI,EAAA4/B,QAAAb,GAAAe,MAAA,SAAAvrB,GAAA6pB,EAAA7hC,MAAAgY,EAAAjgB,EAAA8pC,EAAA,aAAA7pB,GAAA,OAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAA,EAAA0G,EAAAsgC,IAAA,KAAAd,EAAA/lC,EAAA,gBAAAsE,MAAA,SAAAgY,EAAA7c,GAAA,SAAAqoC,IAAA,WAAA//B,GAAA,SAAAA,EAAAg+B,GAAA0B,EAAAnrB,EAAA7c,EAAAsI,EAAAg+B,EAAA,WAAAA,EAAAA,EAAAA,EAAA8B,KAAAC,EAAAA,GAAAA,GAAA,aAAAnB,EAAA5+B,EAAAg+B,EAAAtmC,GAAA,IAAAO,EAAA8mC,EAAA,gBAAAzqC,EAAAwD,GAAA,GAAAG,IAAAk7B,EAAA,MAAA1f,MAAA,mCAAAxb,IAAA7C,EAAA,cAAAd,EAAA,MAAAwD,EAAA,OAAAyE,MAAAgY,EAAAye,MAAA,OAAAt7B,EAAAsR,OAAA1U,EAAAoD,EAAAonC,IAAAhnC,IAAA,KAAA0G,EAAA9G,EAAAsoC,SAAA,GAAAxhC,EAAA,KAAA4/B,EAAA6B,EAAAzhC,EAAA9G,GAAA,GAAA0mC,EAAA,IAAAA,IAAA1c,EAAA,gBAAA0c,CAAA,cAAA1mC,EAAAsR,OAAAtR,EAAAwoC,KAAAxoC,EAAAyoC,MAAAzoC,EAAAonC,SAAA,aAAApnC,EAAAsR,OAAA,IAAA/Q,IAAA8mC,EAAA,MAAA9mC,EAAA7C,EAAAsC,EAAAonC,IAAApnC,EAAA0oC,kBAAA1oC,EAAAonC,IAAA,gBAAApnC,EAAAsR,QAAAtR,EAAA2oC,OAAA,SAAA3oC,EAAAonC,KAAA7mC,EAAAk7B,EAAA,IAAAgM,EAAAN,EAAA7+B,EAAAg+B,EAAAtmC,GAAA,cAAAynC,EAAA1nB,KAAA,IAAAxf,EAAAP,EAAAs7B,KAAA59B,EAAA4pC,EAAAG,EAAAL,MAAApd,EAAA,gBAAAnlB,MAAA4iC,EAAAL,IAAA9L,KAAAt7B,EAAAs7B,KAAA,WAAAmM,EAAA1nB,OAAAxf,EAAA7C,EAAAsC,EAAAsR,OAAA,QAAAtR,EAAAonC,IAAAK,EAAAL,IAAA,YAAAmB,EAAAjgC,EAAAg+B,GAAA,IAAAtmC,EAAAsmC,EAAAh1B,OAAA/Q,EAAA+H,EAAAk+B,SAAAxmC,GAAA,GAAAO,IAAAsc,EAAA,OAAAypB,EAAAgC,SAAA,eAAAtoC,GAAAsI,EAAAk+B,SAAAoC,SAAAtC,EAAAh1B,OAAA,SAAAg1B,EAAAc,IAAAvqB,EAAA0rB,EAAAjgC,EAAAg+B,GAAA,UAAAA,EAAAh1B,SAAA,WAAAtR,IAAAsmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAA7oC,EAAA,aAAAgqB,EAAA,IAAAptB,EAAAuqC,EAAA5mC,EAAA+H,EAAAk+B,SAAAF,EAAAc,KAAA,aAAAxqC,EAAAmjB,KAAA,OAAAumB,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAAxqC,EAAAwqC,IAAAd,EAAAgC,SAAA,KAAAte,EAAA,IAAA5pB,EAAAxD,EAAAwqC,IAAA,OAAAhnC,EAAAA,EAAAk7B,MAAAgL,EAAAh+B,EAAAwgC,YAAA1oC,EAAAyE,MAAAyhC,EAAAlpC,KAAAkL,EAAAygC,QAAA,WAAAzC,EAAAh1B,SAAAg1B,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,GAAAypB,EAAAgC,SAAA,KAAAte,GAAA5pB,GAAAkmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAAvC,EAAAgC,SAAA,KAAAte,EAAA,UAAAgf,EAAAnsB,GAAA,IAAAvU,EAAA,CAAA2gC,OAAApsB,EAAA,SAAAA,IAAAvU,EAAA4gC,SAAArsB,EAAA,SAAAA,IAAAvU,EAAA6gC,WAAAtsB,EAAA,GAAAvU,EAAA8gC,SAAAvsB,EAAA,SAAAwsB,WAAA5qC,KAAA6J,EAAA,UAAAghC,EAAAzsB,GAAA,IAAAvU,EAAAuU,EAAA0sB,YAAA,GAAAjhC,EAAAyX,KAAA,gBAAAzX,EAAA8+B,IAAAvqB,EAAA0sB,WAAAjhC,CAAA,UAAA2+B,EAAApqB,GAAA,KAAAwsB,WAAA,EAAAJ,OAAA,SAAApsB,EAAAnb,QAAAsnC,EAAA,WAAAQ,OAAA,YAAA7B,EAAAr/B,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAg+B,EAAAh+B,EAAAlI,GAAA,GAAAkmC,EAAA,OAAAA,EAAA5mC,KAAA4I,GAAA,sBAAAA,EAAAlL,KAAA,OAAAkL,EAAA,IAAAmK,MAAAnK,EAAA5L,QAAA,KAAA6D,GAAA,EAAA3D,EAAA,SAAAQ,IAAA,OAAAmD,EAAA+H,EAAA5L,QAAA,GAAAsD,EAAAN,KAAA4I,EAAA/H,GAAA,OAAAnD,EAAAyH,MAAAyD,EAAA/H,GAAAnD,EAAAk+B,MAAA,EAAAl+B,EAAA,OAAAA,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,SAAAR,EAAAQ,KAAAR,CAAA,YAAAisC,UAAAZ,GAAA3/B,GAAA,2BAAAi/B,EAAA9rC,UAAA+rC,EAAAjnC,EAAAqnC,EAAA,eAAA/iC,MAAA2iC,EAAAX,cAAA,IAAAtmC,EAAAinC,EAAA,eAAA3iC,MAAA0iC,EAAAV,cAAA,IAAAU,EAAAkC,YAAA7C,EAAAY,EAAAd,EAAA,qBAAAp+B,EAAAohC,oBAAA,SAAA7sB,GAAA,IAAAvU,EAAA,mBAAAuU,GAAAA,EAAAxb,YAAA,QAAAiH,IAAAA,IAAAi/B,GAAA,uBAAAj/B,EAAAmhC,aAAAnhC,EAAAjC,MAAA,EAAAiC,EAAAqhC,KAAA,SAAA9sB,GAAA,OAAArc,OAAAopC,eAAAppC,OAAAopC,eAAA/sB,EAAA2qB,IAAA3qB,EAAAlY,UAAA6iC,EAAAZ,EAAA/pB,EAAA6pB,EAAA,sBAAA7pB,EAAAphB,UAAA+E,OAAAwmC,OAAAY,GAAA/qB,CAAA,EAAAvU,EAAAuhC,MAAA,SAAAhtB,GAAA,OAAAsrB,QAAAtrB,EAAA,EAAAgrB,EAAAE,EAAAtsC,WAAAmrC,EAAAmB,EAAAtsC,UAAAqL,GAAA,0BAAAwB,EAAAy/B,cAAAA,EAAAz/B,EAAAwhC,MAAA,SAAAjtB,EAAAypB,EAAAtmC,EAAAO,EAAA3D,QAAA,IAAAA,IAAAA,EAAAmtC,SAAA,IAAA3pC,EAAA,IAAA2nC,EAAAjB,EAAAjqB,EAAAypB,EAAAtmC,EAAAO,GAAA3D,GAAA,OAAA0L,EAAAohC,oBAAApD,GAAAlmC,EAAAA,EAAAhD,OAAAgrC,MAAA,SAAAvrB,GAAA,OAAAA,EAAAye,KAAAze,EAAAhY,MAAAzE,EAAAhD,MAAA,KAAAyqC,EAAAD,GAAAhB,EAAAgB,EAAAlB,EAAA,aAAAE,EAAAgB,EAAAxnC,GAAA,0BAAAwmC,EAAAgB,EAAA,qDAAAt/B,EAAA7G,KAAA,SAAAob,GAAA,IAAAvU,EAAA9H,OAAAqc,GAAAypB,EAAA,WAAAtmC,KAAAsI,EAAAg+B,EAAA7nC,KAAAuB,GAAA,OAAAsmC,EAAA0D,UAAA,SAAA5sC,IAAA,KAAAkpC,EAAA5pC,QAAA,KAAAmgB,EAAAypB,EAAApD,MAAA,GAAArmB,KAAAvU,EAAA,OAAAlL,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,QAAAA,EAAAk+B,MAAA,EAAAl+B,CAAA,GAAAkL,EAAAq/B,OAAAA,EAAAV,EAAAxrC,UAAA,CAAA4F,YAAA4lC,EAAAuC,MAAA,SAAAlhC,GAAA,QAAAuE,KAAA,OAAAzP,KAAA,OAAAorC,KAAA,KAAAC,MAAA5rB,EAAA,KAAAye,MAAA,OAAAgN,SAAA,UAAAh3B,OAAA,YAAA81B,IAAAvqB,EAAA,KAAAwsB,WAAA3nC,QAAA4nC,IAAAhhC,EAAA,QAAAg+B,KAAA,WAAAA,EAAA2D,OAAA,IAAAjqC,EAAAN,KAAA,KAAA4mC,KAAA7zB,OAAA6zB,EAAAnnC,MAAA,WAAAmnC,GAAAzpB,EAAA,EAAAqtB,KAAA,gBAAA5O,MAAA,MAAAze,EAAA,KAAAwsB,WAAA,GAAAE,WAAA,aAAA1sB,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,YAAA+C,IAAA,EAAAzB,kBAAA,SAAApgC,GAAA,QAAAgzB,KAAA,MAAAhzB,EAAA,IAAAg+B,EAAA,cAAA8D,EAAApqC,EAAAO,GAAA,OAAAH,EAAA2f,KAAA,QAAA3f,EAAAgnC,IAAA9+B,EAAAg+B,EAAAlpC,KAAA4C,EAAAO,IAAA+lC,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,KAAAtc,CAAA,SAAAA,EAAA,KAAA8oC,WAAA3sC,OAAA,EAAA6D,GAAA,IAAAA,EAAA,KAAA3D,EAAA,KAAAysC,WAAA9oC,GAAAH,EAAAxD,EAAA2sC,WAAA,YAAA3sC,EAAAqsC,OAAA,OAAAmB,EAAA,UAAAxtC,EAAAqsC,QAAA,KAAAp8B,KAAA,KAAA/F,EAAA9G,EAAAN,KAAA9C,EAAA,YAAA8pC,EAAA1mC,EAAAN,KAAA9C,EAAA,iBAAAkK,GAAA4/B,EAAA,SAAA75B,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,WAAAr8B,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,SAAAriC,GAAA,QAAA+F,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,YAAAxC,EAAA,MAAA3qB,MAAA,kDAAAlP,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,KAAAR,OAAA,SAAA9rB,EAAAvU,GAAA,QAAAg+B,EAAA,KAAA+C,WAAA3sC,OAAA,EAAA4pC,GAAA,IAAAA,EAAA,KAAA/lC,EAAA,KAAA8oC,WAAA/C,GAAA,GAAA/lC,EAAA0oC,QAAA,KAAAp8B,MAAA7M,EAAAN,KAAAa,EAAA,oBAAAsM,KAAAtM,EAAA4oC,WAAA,KAAAvsC,EAAA2D,EAAA,OAAA3D,IAAA,UAAAigB,GAAA,aAAAA,IAAAjgB,EAAAqsC,QAAA3gC,GAAAA,GAAA1L,EAAAusC,aAAAvsC,EAAA,UAAAwD,EAAAxD,EAAAA,EAAA2sC,WAAA,UAAAnpC,EAAA2f,KAAAlD,EAAAzc,EAAAgnC,IAAA9+B,EAAA1L,GAAA,KAAA0U,OAAA,YAAAlU,KAAAR,EAAAusC,WAAAnf,GAAA,KAAA2C,SAAAvsB,EAAA,EAAAusB,SAAA,SAAA9P,EAAAvU,GAAA,aAAAuU,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,gBAAAvqB,EAAAkD,MAAA,aAAAlD,EAAAkD,KAAA,KAAA3iB,KAAAyf,EAAAuqB,IAAA,WAAAvqB,EAAAkD,MAAA,KAAAoqB,KAAA,KAAA/C,IAAAvqB,EAAAuqB,IAAA,KAAA91B,OAAA,cAAAlU,KAAA,kBAAAyf,EAAAkD,MAAAzX,IAAA,KAAAlL,KAAAkL,GAAA0hB,CAAA,EAAAyZ,OAAA,SAAA5mB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA6C,aAAAtsB,EAAA,YAAA8P,SAAA2Z,EAAAiD,WAAAjD,EAAA8C,UAAAE,EAAAhD,GAAAtc,CAAA,GAAAqgB,MAAA,SAAAxtB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA2C,SAAApsB,EAAA,KAAA7c,EAAAsmC,EAAAiD,WAAA,aAAAvpC,EAAA+f,KAAA,KAAAxf,EAAAP,EAAAonC,IAAAkC,EAAAhD,EAAA,QAAA/lC,CAAA,QAAAwb,MAAA,0BAAAuuB,cAAA,SAAAhiC,EAAAg+B,EAAAtmC,GAAA,YAAAsoC,SAAA,CAAA9B,SAAAmB,EAAAr/B,GAAAwgC,WAAAxC,EAAAyC,QAAA/oC,GAAA,cAAAsR,SAAA,KAAA81B,IAAAvqB,GAAAmN,CAAA,GAAA1hB,CAAA,UAAAiiC,GAAAvqC,EAAA6c,EAAAvU,EAAAg+B,EAAA/lC,EAAAH,EAAA0G,GAAA,QAAAlK,EAAAoD,EAAAI,GAAA0G,GAAA4/B,EAAA9pC,EAAAiI,KAAA,OAAA7E,GAAA,YAAAsI,EAAAtI,EAAA,CAAApD,EAAA0+B,KAAAze,EAAA6pB,GAAAqD,QAAA7B,QAAAxB,GAAA0B,KAAA9B,EAAA/lC,EAAA,UAAAksD,GAAAzsD,GAAA,sBAAA6c,EAAA,KAAAvU,EAAAb,UAAA,WAAAsiC,SAAA,SAAAzD,EAAA/lC,GAAA,IAAAH,EAAAJ,EAAA2I,MAAAkU,EAAAvU,GAAA,SAAA8iD,EAAAprD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,OAAArrD,EAAA,UAAAqrD,EAAArrD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,QAAArrD,EAAA,CAAAorD,OAAA,OAAsE,SAEvDsB,KAAW,OAAAC,GAAAhkD,MAAC,KAADlB,UAAA,UAAAklD,KAoFzB,OApFyBA,GAAAF,GAAApmB,KAAAsD,MAA1B,SAAAijB,IAAA,IAAAC,EAAAC,EASiBC,EAAgBC,EA4BtBC,EAWMC,EAAOC,EAUbC,EAAU,OAAA/mB,KAAAS,MAAC,SAADumB,GAAA,cAAAA,EAAAxgD,KAAAwgD,EAAAjwD,MAAA,OAuBjB,OAvBOgwD,EAAU,SAACE,GAClB,SAASC,EAAgBrpD,GACvB,IAAIspD,EAAaloD,EAAEpB,GAEnBopD,EAAO5rD,SAAQ,SAAUwD,GACvB,IACEpI,EAAS,IAAI2wD,OAAOvoD,EAAIA,GAAI,GADf,GAEbsoD,EAAWrhD,OAAOrP,EACtB,IAEA0wD,EAAWvvC,IAAI,MACfuvC,EAAWE,QAAQ,CACjB/N,YAAa,cACbgO,SAAU,CACRC,UAAW,WACT,MAAO,kCACT,IAGN,CAEAL,EAAgB,SAChBA,EAAgB,cAClB,EAACJ,EAAA,WA1BA,OA0BAA,EAAAV,GAAApmB,KAAAsD,MAjCD,SAAAkkB,EAAuBC,GAAK,IAAApD,EAAA7kB,EAAA,OAAAQ,KAAAS,MAAA,SAAAinB,GAAA,cAAAA,EAAAlhD,KAAAkhD,EAAA3wD,MAAA,UACrB0wD,EAAO,CAAFC,EAAA3wD,KAAA,eAAA2wD,EAAAplB,OAAA,wBAAAolB,EAAA3wD,KAAA,EAEW0rD,MAAMgF,GAAM,OAArB,OAARpD,EAAQqD,EAAAvlB,KAAAulB,EAAA3wD,KAAG,EACIstD,EAASC,OAAM,OAAxB,OAAN9kB,EAAMkoB,EAAAvlB,KAAAulB,EAAAplB,OAAA,SAEH9C,GAAM,wBAAAkoB,EAAA7jB,OAAA,GAAA2jB,EAAA,MACdllD,MAAA,KAAAlB,UAAA,EAPcylD,EAAO,SAAA1B,GAAA,OAAA2B,EAAAxkD,MAAC,KAADlB,UAAA,EAXbwlD,EAAgB,SAACjoD,GACxB,IAAIgpD,EAAa,GAMjB,OAJAhpD,EAAItD,SAAQ,SAAAlG,GACVwyD,EAAWvvD,KAAKjD,EAAKyyD,KACvB,IAEO1pD,MAAMg2B,KAAK,IAAI2zB,IAAIF,GAC5B,EAAChB,EAAA,WAXA,OAWAA,EAAAP,GAAApmB,KAAAsD,MApCD,SAAA6f,EAAgC2E,GAAQ,IAAAb,EAAAtoD,EAAAopD,EAAA,OAAA/nB,KAAAS,MAAA,SAAAijB,GAAA,cAAAA,EAAAl9C,KAAAk9C,EAAA3sD,MAAA,OACvB,OAAXkwD,EAAS,GAAEvD,EAAA3sD,KAAA,EAEG8vD,EAAQiB,EAASE,IAAI1D,MAAK,OAmBzB,OAnBb3lD,EAAG+kD,EAAAvhB,KAGLskB,EAAepwD,QACX0xD,EAAiBppD,EAAIoI,MAAK,SAAC5R,GAAI,OAAKA,EAAK8yD,YAAcC,IAAa,OAGxEjB,EAASA,EAAO7wB,OAAO2xB,EAAed,QACtCA,EAASL,EAAiBK,KAG5BtoD,EAAItD,SAAQ,SAAClG,GACX8xD,EAASA,EAAO7wB,OAAOjhC,EAAK8xD,OAC9B,IAEAA,EAASL,EAAiBK,IAI5BF,EAAWE,GAAQvD,EAAAphB,OAAA,SAEZ3jC,GAAG,wBAAA+kD,EAAA7f,OAAA,GAAAsf,EAAA,MACX7gD,MAAA,KAAAlB,UAAA,EAzBcslD,EAAgB,SAAAxB,GAAA,OAAAyB,EAAArkD,MAAC,KAADlB,UAAA,EARzBolD,EAAW,CACfwB,IAAK,CACH1D,KAAM,wBAIJmC,EAAiBjxD,SAASmG,iBAAiB,mBA0E/CqrD,EAAAjwD,KAAA,GAEW2vD,EAAiBF,GAAS,eAAAQ,EAAA1kB,OAAA,SAAA0kB,EAAA7kB,MAAA,yBAAA6kB,EAAAnjB,OAAA,GAAA0iB,EAAA,KACxCD,GAAAhkD,MAAA,KAAAlB,UAAA,CAE6B,SAAA+mD,KAE7B,OAF6BA,GAAA/B,GAAApmB,KAAAsD,MAA9B,SAAA8kB,IAAA,OAAApoB,KAAAS,MAAA,SAAA4nB,GAAA,cAAAA,EAAA7hD,KAAA6hD,EAAAtxD,MAAA,cAAAsxD,EAAAtxD,KAAA,EACesvD,KAAa,cAAAgC,EAAA/lB,OAAA,SAAA+lB,EAAAlmB,MAAA,wBAAAkmB,EAAAxkB,OAAA,GAAAukB,EAAA,MAC3B9lD,MAAA,KAAAlB,UAAA,CAED,OANC,WAE6B,OAAA+mD,GAAA7lD,MAAC,KAADlB,UAAA,yPCxF9B4+B,GAAA,kBAAA/9B,CAAA,MAAAuU,EAAAvU,EAAA,GAAAg+B,EAAA9lC,OAAA/E,UAAAuE,EAAAsmC,EAAAxlC,eAAAP,EAAAC,OAAAC,gBAAA,SAAAoc,EAAAvU,EAAAg+B,GAAAzpB,EAAAvU,GAAAg+B,EAAAzhC,KAAA,EAAAjI,EAAA,mBAAA2pC,OAAAA,OAAA,GAAAnmC,EAAAxD,EAAA4pC,UAAA,aAAA1/B,EAAAlK,EAAA6pC,eAAA,kBAAAC,EAAA9pC,EAAA+pC,aAAA,yBAAAC,EAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAA9lC,OAAAC,eAAAoc,EAAAvU,EAAA,CAAAzD,MAAAyhC,EAAA5lC,YAAA,EAAAmmC,cAAA,EAAAp5B,UAAA,IAAAoP,EAAAvU,EAAA,KAAAs+B,EAAA,aAAA/pB,GAAA+pB,EAAA,SAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAAzpB,EAAAvU,GAAAg+B,CAAA,WAAAQ,EAAAjqB,EAAAvU,EAAAg+B,EAAAtmC,GAAA,IAAApD,EAAA0L,GAAAA,EAAA7M,qBAAAsrC,EAAAz+B,EAAAy+B,EAAA3mC,EAAAI,OAAAwmC,OAAApqC,EAAAnB,WAAAqL,EAAA,IAAAmgC,EAAAjnC,GAAA,WAAAO,EAAAH,EAAA,WAAAyE,MAAAqiC,EAAArqB,EAAAypB,EAAAx/B,KAAA1G,CAAA,UAAA+mC,EAAAtqB,EAAAvU,EAAAg+B,GAAA,WAAAvmB,KAAA,SAAAqnB,IAAAvqB,EAAAnd,KAAA4I,EAAAg+B,GAAA,OAAAzpB,GAAA,OAAAkD,KAAA,QAAAqnB,IAAAvqB,EAAA,EAAAvU,EAAAw+B,KAAAA,EAAA,IAAAO,EAAA,iBAAAC,EAAA,iBAAA7L,EAAA,YAAA/9B,EAAA,YAAAssB,EAAA,YAAA+c,IAAA,UAAAQ,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAAb,EAAAa,EAAArnC,GAAA,8BAAAD,EAAAK,OAAAknC,eAAAjwB,EAAAtX,GAAAA,EAAAA,EAAAwnC,EAAA,MAAAlwB,GAAAA,IAAA6uB,GAAAtmC,EAAAN,KAAA+X,EAAArX,KAAAqnC,EAAAhwB,GAAA,IAAAmwB,EAAAJ,EAAA/rC,UAAAsrC,EAAAtrC,UAAA+E,OAAAwmC,OAAAS,GAAA,SAAAI,EAAAhrB,GAAA,0BAAAnb,SAAA,SAAA4G,GAAAs+B,EAAA/pB,EAAAvU,GAAA,SAAAuU,GAAA,YAAAirB,QAAAx/B,EAAAuU,EAAA,gBAAAkrB,EAAAlrB,EAAAvU,GAAA,SAAA0/B,EAAA1B,EAAA/lC,EAAA3D,EAAAwD,GAAA,IAAA0G,EAAAqgC,EAAAtqB,EAAAypB,GAAAzpB,EAAAtc,GAAA,aAAAuG,EAAAiZ,KAAA,KAAA2mB,EAAA5/B,EAAAsgC,IAAAC,EAAAX,EAAA7hC,MAAA,OAAAwiC,GAAA,UAAAY,GAAAZ,IAAArnC,EAAAN,KAAA2nC,EAAA,WAAA/+B,EAAA4/B,QAAAb,EAAAc,SAAAC,MAAA,SAAAvrB,GAAAmrB,EAAA,OAAAnrB,EAAAjgB,EAAAwD,EAAA,aAAAyc,GAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAkI,EAAA4/B,QAAAb,GAAAe,MAAA,SAAAvrB,GAAA6pB,EAAA7hC,MAAAgY,EAAAjgB,EAAA8pC,EAAA,aAAA7pB,GAAA,OAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAA,EAAA0G,EAAAsgC,IAAA,KAAAd,EAAA/lC,EAAA,gBAAAsE,MAAA,SAAAgY,EAAA7c,GAAA,SAAAqoC,IAAA,WAAA//B,GAAA,SAAAA,EAAAg+B,GAAA0B,EAAAnrB,EAAA7c,EAAAsI,EAAAg+B,EAAA,WAAAA,EAAAA,EAAAA,EAAA8B,KAAAC,EAAAA,GAAAA,GAAA,aAAAnB,EAAA5+B,EAAAg+B,EAAAtmC,GAAA,IAAAO,EAAA8mC,EAAA,gBAAAzqC,EAAAwD,GAAA,GAAAG,IAAAk7B,EAAA,MAAA1f,MAAA,mCAAAxb,IAAA7C,EAAA,cAAAd,EAAA,MAAAwD,EAAA,OAAAyE,MAAAgY,EAAAye,MAAA,OAAAt7B,EAAAsR,OAAA1U,EAAAoD,EAAAonC,IAAAhnC,IAAA,KAAA0G,EAAA9G,EAAAsoC,SAAA,GAAAxhC,EAAA,KAAA4/B,EAAA6B,EAAAzhC,EAAA9G,GAAA,GAAA0mC,EAAA,IAAAA,IAAA1c,EAAA,gBAAA0c,CAAA,cAAA1mC,EAAAsR,OAAAtR,EAAAwoC,KAAAxoC,EAAAyoC,MAAAzoC,EAAAonC,SAAA,aAAApnC,EAAAsR,OAAA,IAAA/Q,IAAA8mC,EAAA,MAAA9mC,EAAA7C,EAAAsC,EAAAonC,IAAApnC,EAAA0oC,kBAAA1oC,EAAAonC,IAAA,gBAAApnC,EAAAsR,QAAAtR,EAAA2oC,OAAA,SAAA3oC,EAAAonC,KAAA7mC,EAAAk7B,EAAA,IAAAgM,EAAAN,EAAA7+B,EAAAg+B,EAAAtmC,GAAA,cAAAynC,EAAA1nB,KAAA,IAAAxf,EAAAP,EAAAs7B,KAAA59B,EAAA4pC,EAAAG,EAAAL,MAAApd,EAAA,gBAAAnlB,MAAA4iC,EAAAL,IAAA9L,KAAAt7B,EAAAs7B,KAAA,WAAAmM,EAAA1nB,OAAAxf,EAAA7C,EAAAsC,EAAAsR,OAAA,QAAAtR,EAAAonC,IAAAK,EAAAL,IAAA,YAAAmB,EAAAjgC,EAAAg+B,GAAA,IAAAtmC,EAAAsmC,EAAAh1B,OAAA/Q,EAAA+H,EAAAk+B,SAAAxmC,GAAA,GAAAO,IAAAsc,EAAA,OAAAypB,EAAAgC,SAAA,eAAAtoC,GAAAsI,EAAAk+B,SAAAoC,SAAAtC,EAAAh1B,OAAA,SAAAg1B,EAAAc,IAAAvqB,EAAA0rB,EAAAjgC,EAAAg+B,GAAA,UAAAA,EAAAh1B,SAAA,WAAAtR,IAAAsmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAA7oC,EAAA,aAAAgqB,EAAA,IAAAptB,EAAAuqC,EAAA5mC,EAAA+H,EAAAk+B,SAAAF,EAAAc,KAAA,aAAAxqC,EAAAmjB,KAAA,OAAAumB,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAAxqC,EAAAwqC,IAAAd,EAAAgC,SAAA,KAAAte,EAAA,IAAA5pB,EAAAxD,EAAAwqC,IAAA,OAAAhnC,EAAAA,EAAAk7B,MAAAgL,EAAAh+B,EAAAwgC,YAAA1oC,EAAAyE,MAAAyhC,EAAAlpC,KAAAkL,EAAAygC,QAAA,WAAAzC,EAAAh1B,SAAAg1B,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,GAAAypB,EAAAgC,SAAA,KAAAte,GAAA5pB,GAAAkmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAAvC,EAAAgC,SAAA,KAAAte,EAAA,UAAAgf,EAAAnsB,GAAA,IAAAvU,EAAA,CAAA2gC,OAAApsB,EAAA,SAAAA,IAAAvU,EAAA4gC,SAAArsB,EAAA,SAAAA,IAAAvU,EAAA6gC,WAAAtsB,EAAA,GAAAvU,EAAA8gC,SAAAvsB,EAAA,SAAAwsB,WAAA5qC,KAAA6J,EAAA,UAAAghC,EAAAzsB,GAAA,IAAAvU,EAAAuU,EAAA0sB,YAAA,GAAAjhC,EAAAyX,KAAA,gBAAAzX,EAAA8+B,IAAAvqB,EAAA0sB,WAAAjhC,CAAA,UAAA2+B,EAAApqB,GAAA,KAAAwsB,WAAA,EAAAJ,OAAA,SAAApsB,EAAAnb,QAAAsnC,EAAA,WAAAQ,OAAA,YAAA7B,EAAAr/B,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAg+B,EAAAh+B,EAAAlI,GAAA,GAAAkmC,EAAA,OAAAA,EAAA5mC,KAAA4I,GAAA,sBAAAA,EAAAlL,KAAA,OAAAkL,EAAA,IAAAmK,MAAAnK,EAAA5L,QAAA,KAAA6D,GAAA,EAAA3D,EAAA,SAAAQ,IAAA,OAAAmD,EAAA+H,EAAA5L,QAAA,GAAAsD,EAAAN,KAAA4I,EAAA/H,GAAA,OAAAnD,EAAAyH,MAAAyD,EAAA/H,GAAAnD,EAAAk+B,MAAA,EAAAl+B,EAAA,OAAAA,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,SAAAR,EAAAQ,KAAAR,CAAA,YAAAisC,UAAAZ,GAAA3/B,GAAA,2BAAAi/B,EAAA9rC,UAAA+rC,EAAAjnC,EAAAqnC,EAAA,eAAA/iC,MAAA2iC,EAAAX,cAAA,IAAAtmC,EAAAinC,EAAA,eAAA3iC,MAAA0iC,EAAAV,cAAA,IAAAU,EAAAkC,YAAA7C,EAAAY,EAAAd,EAAA,qBAAAp+B,EAAAohC,oBAAA,SAAA7sB,GAAA,IAAAvU,EAAA,mBAAAuU,GAAAA,EAAAxb,YAAA,QAAAiH,IAAAA,IAAAi/B,GAAA,uBAAAj/B,EAAAmhC,aAAAnhC,EAAAjC,MAAA,EAAAiC,EAAAqhC,KAAA,SAAA9sB,GAAA,OAAArc,OAAAopC,eAAAppC,OAAAopC,eAAA/sB,EAAA2qB,IAAA3qB,EAAAlY,UAAA6iC,EAAAZ,EAAA/pB,EAAA6pB,EAAA,sBAAA7pB,EAAAphB,UAAA+E,OAAAwmC,OAAAY,GAAA/qB,CAAA,EAAAvU,EAAAuhC,MAAA,SAAAhtB,GAAA,OAAAsrB,QAAAtrB,EAAA,EAAAgrB,EAAAE,EAAAtsC,WAAAmrC,EAAAmB,EAAAtsC,UAAAqL,GAAA,0BAAAwB,EAAAy/B,cAAAA,EAAAz/B,EAAAwhC,MAAA,SAAAjtB,EAAAypB,EAAAtmC,EAAAO,EAAA3D,QAAA,IAAAA,IAAAA,EAAAmtC,SAAA,IAAA3pC,EAAA,IAAA2nC,EAAAjB,EAAAjqB,EAAAypB,EAAAtmC,EAAAO,GAAA3D,GAAA,OAAA0L,EAAAohC,oBAAApD,GAAAlmC,EAAAA,EAAAhD,OAAAgrC,MAAA,SAAAvrB,GAAA,OAAAA,EAAAye,KAAAze,EAAAhY,MAAAzE,EAAAhD,MAAA,KAAAyqC,EAAAD,GAAAhB,EAAAgB,EAAAlB,EAAA,aAAAE,EAAAgB,EAAAxnC,GAAA,0BAAAwmC,EAAAgB,EAAA,qDAAAt/B,EAAA7G,KAAA,SAAAob,GAAA,IAAAvU,EAAA9H,OAAAqc,GAAAypB,EAAA,WAAAtmC,KAAAsI,EAAAg+B,EAAA7nC,KAAAuB,GAAA,OAAAsmC,EAAA0D,UAAA,SAAA5sC,IAAA,KAAAkpC,EAAA5pC,QAAA,KAAAmgB,EAAAypB,EAAApD,MAAA,GAAArmB,KAAAvU,EAAA,OAAAlL,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,QAAAA,EAAAk+B,MAAA,EAAAl+B,CAAA,GAAAkL,EAAAq/B,OAAAA,EAAAV,EAAAxrC,UAAA,CAAA4F,YAAA4lC,EAAAuC,MAAA,SAAAlhC,GAAA,QAAAuE,KAAA,OAAAzP,KAAA,OAAAorC,KAAA,KAAAC,MAAA5rB,EAAA,KAAAye,MAAA,OAAAgN,SAAA,UAAAh3B,OAAA,YAAA81B,IAAAvqB,EAAA,KAAAwsB,WAAA3nC,QAAA4nC,IAAAhhC,EAAA,QAAAg+B,KAAA,WAAAA,EAAA2D,OAAA,IAAAjqC,EAAAN,KAAA,KAAA4mC,KAAA7zB,OAAA6zB,EAAAnnC,MAAA,WAAAmnC,GAAAzpB,EAAA,EAAAqtB,KAAA,gBAAA5O,MAAA,MAAAze,EAAA,KAAAwsB,WAAA,GAAAE,WAAA,aAAA1sB,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,YAAA+C,IAAA,EAAAzB,kBAAA,SAAApgC,GAAA,QAAAgzB,KAAA,MAAAhzB,EAAA,IAAAg+B,EAAA,cAAA8D,EAAApqC,EAAAO,GAAA,OAAAH,EAAA2f,KAAA,QAAA3f,EAAAgnC,IAAA9+B,EAAAg+B,EAAAlpC,KAAA4C,EAAAO,IAAA+lC,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,KAAAtc,CAAA,SAAAA,EAAA,KAAA8oC,WAAA3sC,OAAA,EAAA6D,GAAA,IAAAA,EAAA,KAAA3D,EAAA,KAAAysC,WAAA9oC,GAAAH,EAAAxD,EAAA2sC,WAAA,YAAA3sC,EAAAqsC,OAAA,OAAAmB,EAAA,UAAAxtC,EAAAqsC,QAAA,KAAAp8B,KAAA,KAAA/F,EAAA9G,EAAAN,KAAA9C,EAAA,YAAA8pC,EAAA1mC,EAAAN,KAAA9C,EAAA,iBAAAkK,GAAA4/B,EAAA,SAAA75B,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,WAAAr8B,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,SAAAriC,GAAA,QAAA+F,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,YAAAxC,EAAA,MAAA3qB,MAAA,kDAAAlP,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,KAAAR,OAAA,SAAA9rB,EAAAvU,GAAA,QAAAg+B,EAAA,KAAA+C,WAAA3sC,OAAA,EAAA4pC,GAAA,IAAAA,EAAA,KAAA/lC,EAAA,KAAA8oC,WAAA/C,GAAA,GAAA/lC,EAAA0oC,QAAA,KAAAp8B,MAAA7M,EAAAN,KAAAa,EAAA,oBAAAsM,KAAAtM,EAAA4oC,WAAA,KAAAvsC,EAAA2D,EAAA,OAAA3D,IAAA,UAAAigB,GAAA,aAAAA,IAAAjgB,EAAAqsC,QAAA3gC,GAAAA,GAAA1L,EAAAusC,aAAAvsC,EAAA,UAAAwD,EAAAxD,EAAAA,EAAA2sC,WAAA,UAAAnpC,EAAA2f,KAAAlD,EAAAzc,EAAAgnC,IAAA9+B,EAAA1L,GAAA,KAAA0U,OAAA,YAAAlU,KAAAR,EAAAusC,WAAAnf,GAAA,KAAA2C,SAAAvsB,EAAA,EAAAusB,SAAA,SAAA9P,EAAAvU,GAAA,aAAAuU,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,gBAAAvqB,EAAAkD,MAAA,aAAAlD,EAAAkD,KAAA,KAAA3iB,KAAAyf,EAAAuqB,IAAA,WAAAvqB,EAAAkD,MAAA,KAAAoqB,KAAA,KAAA/C,IAAAvqB,EAAAuqB,IAAA,KAAA91B,OAAA,cAAAlU,KAAA,kBAAAyf,EAAAkD,MAAAzX,IAAA,KAAAlL,KAAAkL,GAAA0hB,CAAA,EAAAyZ,OAAA,SAAA5mB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA6C,aAAAtsB,EAAA,YAAA8P,SAAA2Z,EAAAiD,WAAAjD,EAAA8C,UAAAE,EAAAhD,GAAAtc,CAAA,GAAAqgB,MAAA,SAAAxtB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA2C,SAAApsB,EAAA,KAAA7c,EAAAsmC,EAAAiD,WAAA,aAAAvpC,EAAA+f,KAAA,KAAAxf,EAAAP,EAAAonC,IAAAkC,EAAAhD,EAAA,QAAA/lC,CAAA,QAAAwb,MAAA,0BAAAuuB,cAAA,SAAAhiC,EAAAg+B,EAAAtmC,GAAA,YAAAsoC,SAAA,CAAA9B,SAAAmB,EAAAr/B,GAAAwgC,WAAAxC,EAAAyC,QAAA/oC,GAAA,cAAAsR,SAAA,KAAA81B,IAAAvqB,GAAAmN,CAAA,GAAA1hB,CAAA,UAAAiiC,GAAAvqC,EAAA6c,EAAAvU,EAAAg+B,EAAA/lC,EAAAH,EAAA0G,GAAA,QAAAlK,EAAAoD,EAAAI,GAAA0G,GAAA4/B,EAAA9pC,EAAAiI,KAAA,OAAA7E,GAAA,YAAAsI,EAAAtI,EAAA,CAAApD,EAAA0+B,KAAAze,EAAA6pB,GAAAqD,QAAA7B,QAAAxB,GAAA0B,KAAA9B,EAAA/lC,EAAA,UAAAksD,GAAAzsD,GAAA,sBAAA6c,EAAA,KAAAvU,EAAAb,UAAA,WAAAsiC,SAAA,SAAAzD,EAAA/lC,GAAA,IAAAH,EAAAJ,EAAA2I,MAAAkU,EAAAvU,GAAA,SAAA8iD,EAAAprD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,OAAArrD,EAAA,UAAAqrD,EAAArrD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,QAAArrD,EAAA,CAAAorD,OAAA,gBADesB,KAAW,OAAAC,GAAAhkD,MAAC,KAADlB,UAAA,UAAAklD,KA6BzB,OA7ByBA,GAAAF,GAAApmB,KAAAsD,MAA1B,SAAAijB,IAAA,IAAAC,EAOiBE,EAAgBC,EAYhBE,EAAOC,EAAA,OAAA9mB,KAAAS,MAAC,SAADumB,GAAA,cAAAA,EAAAxgD,KAAAwgD,EAAAjwD,MAAA,OADtB,OACsB+vD,EAAA,WAOrB,OAPqBA,EAAAV,GAAApmB,KAAAsD,MAAtB,SAAAkkB,EAAuBC,GAAK,IAAApD,EAAA7kB,EAAA,OAAAQ,KAAAS,MAAA,SAAAinB,GAAA,cAAAA,EAAAlhD,KAAAkhD,EAAA3wD,MAAA,UACrB0wD,EAAO,CAAFC,EAAA3wD,KAAA,eAAA2wD,EAAAplB,OAAA,wBAAAolB,EAAA3wD,KAAA,EAEW0rD,MAAMgF,GAAM,OAArB,OAARpD,EAAQqD,EAAAvlB,KAAAulB,EAAA3wD,KAAG,EACIstD,EAASC,OAAM,OAAxB,OAAN9kB,EAAMkoB,EAAAvlB,KAAAulB,EAAAplB,OAAA,SAEH9C,GAAM,wBAAAkoB,EAAA7jB,OAAA,GAAA2jB,EAAA,MACdllD,MAAA,KAAAlB,UAAA,EAPcylD,EAAO,SAAA1B,GAAA,OAAA2B,EAAAxkD,MAAC,KAADlB,UAAA,EAAAulD,EAAA,WAHrB,OAGqBA,EAAAP,GAAApmB,KAAAsD,MAZtB,SAAA6f,EAAgC2E,GAAQ,IAAAnpD,EAAA2pD,EAAA,OAAAtoB,KAAAS,MAAA,SAAAijB,GAAA,cAAAA,EAAAl9C,KAAAk9C,EAAA3sD,MAAA,cAAA2sD,EAAA3sD,KAAA,EACpB8vD,EAAQiB,EAASE,IAAI1D,MAAK,OAKzC,OALG3lD,EAAG+kD,EAAAvhB,KACLmmB,EAAW,GAEf3pD,EAAItD,SAAQ,SAAClG,GACXmzD,EAAWA,EAASlyB,OAAOjhC,EAAK6K,KAClC,IAAG0jD,EAAAphB,OAAA,SAEIgmB,GAAQ,wBAAA5E,EAAA7f,OAAA,GAAAsf,EAAA,MAChB7gD,MAAA,KAAAlB,UAAA,EATcslD,EAAgB,SAAAxB,GAAA,OAAAyB,EAAArkD,MAAC,KAADlB,UAAA,EANzBolD,EAAW,CACfwB,IAAK,CACH1D,KAAM,uBAeV0C,EAAAjwD,KAAA,EAUa2vD,EAAiBF,GAAS,cAAAQ,EAAA1kB,OAAA,SAAA0kB,EAAA7kB,MAAA,wBAAA6kB,EAAAnjB,OAAA,GAAA0iB,EAAA,KACxCD,GAAAhkD,MAAA,KAAAlB,UAAA,CAE6B,SAAA+mD,KAE7B,OAF6BA,GAAA/B,GAAApmB,KAAAsD,MAA9B,SAAA8kB,IAAA,OAAApoB,KAAAS,MAAA,SAAA4nB,GAAA,cAAAA,EAAA7hD,KAAA6hD,EAAAtxD,MAAA,cAAAsxD,EAAAtxD,KAAA,EACesvD,KAAa,cAAAgC,EAAA/lB,OAAA,SAAA+lB,EAAAlmB,MAAA,wBAAAkmB,EAAAxkB,OAAA,GAAAukB,EAAA,MAC3B9lD,MAAA,KAAAlB,UAAA,CAED,OANC,WAE6B,OAAA+mD,GAAA7lD,MAAC,KAADlB,UAAA,yGC7B9B,IAmEA,GAnE8B,WAAgC,IAA/BmnD,EAAInnD,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,GAAAA,UAAA,GAAG,GAAIonD,EAAepnD,UAAA/K,OAAA,EAAA+K,UAAA,QAAA7I,EACjDkwD,EAAiBjzD,SAASmG,iBAAiB,mBAC3C+sD,EAAUlzD,SAASO,eAAe,UAADqgC,OAAWmyB,IAC5CI,EAAOnzD,SAASO,eAAe,OAADqgC,OAAQmyB,IAG/B,OAATI,IACFA,EAAKC,SAAW,SAAC3mD,GAEf,IAAM4mD,EAAe5mD,EAAE/G,OAAOsD,MAG1BsqD,EAAoBC,gBAAgBP,GAExC,GAAIC,EAAepyD,OACjByyD,EAAkBztD,SAAQ,SAAAlG,GACpBA,EAAK8yD,WAAaC,MACpB/yD,EAAK8xD,OAAO5rD,SAAQ,SAAA9E,GA4B9B,IAA2ByyD,EA3BXzyD,EAAEqxD,OAASiB,GACTtyD,EAAE0yD,OA0BOD,EAzBOzyD,EAAE0yD,KA0BlCR,EAAeptD,SAAQ,SAAA6tD,GACrBA,EAAQtzD,aAAa,UAAWozD,EAClC,IAzBQ,GAEJ,QACK,CAEL,IAAIG,EAAwB,GAE5BL,EAAkBztD,SAAQ,SAAC9E,GACzBA,EAAE0wD,OAAO5rD,SAAQ,SAACmH,GACZA,EAAEolD,OAASiB,IACbtyD,EAAEyyD,QAAUxmD,EAAEymD,KACdE,EAAsB/wD,KAAK7B,GAE/B,GACF,IAEA6yD,EAAcD,EAChB,CACF,GAWF,IAAMC,EAAgB,SAACzqD,YACjB+pD,EAAQ5sD,gnBAAU0E,KAAI,SAACrL,EAAMiQ,GAC3BA,EAAQ,GACVjQ,EAAK0L,QAET,IAEAlC,EAAItD,SAAQ,SAAClG,GACX,IAAIsB,EAAS,IAAI2wD,OAAOjyD,EAAK6K,KAAM7K,EAAK6K,MAAM,GAAO,GACrDvJ,EAAOb,aAAa,UAAWT,EAAK6zD,SACpCN,EAAQ5iD,OAAOrP,EACjB,GACF,CACF,yPClEAupC,GAAA,kBAAA/9B,CAAA,MAAAuU,EAAAvU,EAAA,GAAAg+B,EAAA9lC,OAAA/E,UAAAuE,EAAAsmC,EAAAxlC,eAAAP,EAAAC,OAAAC,gBAAA,SAAAoc,EAAAvU,EAAAg+B,GAAAzpB,EAAAvU,GAAAg+B,EAAAzhC,KAAA,EAAAjI,EAAA,mBAAA2pC,OAAAA,OAAA,GAAAnmC,EAAAxD,EAAA4pC,UAAA,aAAA1/B,EAAAlK,EAAA6pC,eAAA,kBAAAC,EAAA9pC,EAAA+pC,aAAA,yBAAAC,EAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAA9lC,OAAAC,eAAAoc,EAAAvU,EAAA,CAAAzD,MAAAyhC,EAAA5lC,YAAA,EAAAmmC,cAAA,EAAAp5B,UAAA,IAAAoP,EAAAvU,EAAA,KAAAs+B,EAAA,aAAA/pB,GAAA+pB,EAAA,SAAA/pB,EAAAvU,EAAAg+B,GAAA,OAAAzpB,EAAAvU,GAAAg+B,CAAA,WAAAQ,EAAAjqB,EAAAvU,EAAAg+B,EAAAtmC,GAAA,IAAApD,EAAA0L,GAAAA,EAAA7M,qBAAAsrC,EAAAz+B,EAAAy+B,EAAA3mC,EAAAI,OAAAwmC,OAAApqC,EAAAnB,WAAAqL,EAAA,IAAAmgC,EAAAjnC,GAAA,WAAAO,EAAAH,EAAA,WAAAyE,MAAAqiC,EAAArqB,EAAAypB,EAAAx/B,KAAA1G,CAAA,UAAA+mC,EAAAtqB,EAAAvU,EAAAg+B,GAAA,WAAAvmB,KAAA,SAAAqnB,IAAAvqB,EAAAnd,KAAA4I,EAAAg+B,GAAA,OAAAzpB,GAAA,OAAAkD,KAAA,QAAAqnB,IAAAvqB,EAAA,EAAAvU,EAAAw+B,KAAAA,EAAA,IAAAO,EAAA,iBAAAC,EAAA,iBAAA7L,EAAA,YAAA/9B,EAAA,YAAAssB,EAAA,YAAA+c,IAAA,UAAAQ,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAAb,EAAAa,EAAArnC,GAAA,8BAAAD,EAAAK,OAAAknC,eAAAjwB,EAAAtX,GAAAA,EAAAA,EAAAwnC,EAAA,MAAAlwB,GAAAA,IAAA6uB,GAAAtmC,EAAAN,KAAA+X,EAAArX,KAAAqnC,EAAAhwB,GAAA,IAAAmwB,EAAAJ,EAAA/rC,UAAAsrC,EAAAtrC,UAAA+E,OAAAwmC,OAAAS,GAAA,SAAAI,EAAAhrB,GAAA,0BAAAnb,SAAA,SAAA4G,GAAAs+B,EAAA/pB,EAAAvU,GAAA,SAAAuU,GAAA,YAAAirB,QAAAx/B,EAAAuU,EAAA,gBAAAkrB,EAAAlrB,EAAAvU,GAAA,SAAA0/B,EAAA1B,EAAA/lC,EAAA3D,EAAAwD,GAAA,IAAA0G,EAAAqgC,EAAAtqB,EAAAypB,GAAAzpB,EAAAtc,GAAA,aAAAuG,EAAAiZ,KAAA,KAAA2mB,EAAA5/B,EAAAsgC,IAAAC,EAAAX,EAAA7hC,MAAA,OAAAwiC,GAAA,UAAAY,GAAAZ,IAAArnC,EAAAN,KAAA2nC,EAAA,WAAA/+B,EAAA4/B,QAAAb,EAAAc,SAAAC,MAAA,SAAAvrB,GAAAmrB,EAAA,OAAAnrB,EAAAjgB,EAAAwD,EAAA,aAAAyc,GAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAkI,EAAA4/B,QAAAb,GAAAe,MAAA,SAAAvrB,GAAA6pB,EAAA7hC,MAAAgY,EAAAjgB,EAAA8pC,EAAA,aAAA7pB,GAAA,OAAAmrB,EAAA,QAAAnrB,EAAAjgB,EAAAwD,EAAA,IAAAA,EAAA0G,EAAAsgC,IAAA,KAAAd,EAAA/lC,EAAA,gBAAAsE,MAAA,SAAAgY,EAAA7c,GAAA,SAAAqoC,IAAA,WAAA//B,GAAA,SAAAA,EAAAg+B,GAAA0B,EAAAnrB,EAAA7c,EAAAsI,EAAAg+B,EAAA,WAAAA,EAAAA,EAAAA,EAAA8B,KAAAC,EAAAA,GAAAA,GAAA,aAAAnB,EAAA5+B,EAAAg+B,EAAAtmC,GAAA,IAAAO,EAAA8mC,EAAA,gBAAAzqC,EAAAwD,GAAA,GAAAG,IAAAk7B,EAAA,MAAA1f,MAAA,mCAAAxb,IAAA7C,EAAA,cAAAd,EAAA,MAAAwD,EAAA,OAAAyE,MAAAgY,EAAAye,MAAA,OAAAt7B,EAAAsR,OAAA1U,EAAAoD,EAAAonC,IAAAhnC,IAAA,KAAA0G,EAAA9G,EAAAsoC,SAAA,GAAAxhC,EAAA,KAAA4/B,EAAA6B,EAAAzhC,EAAA9G,GAAA,GAAA0mC,EAAA,IAAAA,IAAA1c,EAAA,gBAAA0c,CAAA,cAAA1mC,EAAAsR,OAAAtR,EAAAwoC,KAAAxoC,EAAAyoC,MAAAzoC,EAAAonC,SAAA,aAAApnC,EAAAsR,OAAA,IAAA/Q,IAAA8mC,EAAA,MAAA9mC,EAAA7C,EAAAsC,EAAAonC,IAAApnC,EAAA0oC,kBAAA1oC,EAAAonC,IAAA,gBAAApnC,EAAAsR,QAAAtR,EAAA2oC,OAAA,SAAA3oC,EAAAonC,KAAA7mC,EAAAk7B,EAAA,IAAAgM,EAAAN,EAAA7+B,EAAAg+B,EAAAtmC,GAAA,cAAAynC,EAAA1nB,KAAA,IAAAxf,EAAAP,EAAAs7B,KAAA59B,EAAA4pC,EAAAG,EAAAL,MAAApd,EAAA,gBAAAnlB,MAAA4iC,EAAAL,IAAA9L,KAAAt7B,EAAAs7B,KAAA,WAAAmM,EAAA1nB,OAAAxf,EAAA7C,EAAAsC,EAAAsR,OAAA,QAAAtR,EAAAonC,IAAAK,EAAAL,IAAA,YAAAmB,EAAAjgC,EAAAg+B,GAAA,IAAAtmC,EAAAsmC,EAAAh1B,OAAA/Q,EAAA+H,EAAAk+B,SAAAxmC,GAAA,GAAAO,IAAAsc,EAAA,OAAAypB,EAAAgC,SAAA,eAAAtoC,GAAAsI,EAAAk+B,SAAAoC,SAAAtC,EAAAh1B,OAAA,SAAAg1B,EAAAc,IAAAvqB,EAAA0rB,EAAAjgC,EAAAg+B,GAAA,UAAAA,EAAAh1B,SAAA,WAAAtR,IAAAsmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAA7oC,EAAA,aAAAgqB,EAAA,IAAAptB,EAAAuqC,EAAA5mC,EAAA+H,EAAAk+B,SAAAF,EAAAc,KAAA,aAAAxqC,EAAAmjB,KAAA,OAAAumB,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAAxqC,EAAAwqC,IAAAd,EAAAgC,SAAA,KAAAte,EAAA,IAAA5pB,EAAAxD,EAAAwqC,IAAA,OAAAhnC,EAAAA,EAAAk7B,MAAAgL,EAAAh+B,EAAAwgC,YAAA1oC,EAAAyE,MAAAyhC,EAAAlpC,KAAAkL,EAAAygC,QAAA,WAAAzC,EAAAh1B,SAAAg1B,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,GAAAypB,EAAAgC,SAAA,KAAAte,GAAA5pB,GAAAkmC,EAAAh1B,OAAA,QAAAg1B,EAAAc,IAAA,IAAAyB,UAAA,oCAAAvC,EAAAgC,SAAA,KAAAte,EAAA,UAAAgf,EAAAnsB,GAAA,IAAAvU,EAAA,CAAA2gC,OAAApsB,EAAA,SAAAA,IAAAvU,EAAA4gC,SAAArsB,EAAA,SAAAA,IAAAvU,EAAA6gC,WAAAtsB,EAAA,GAAAvU,EAAA8gC,SAAAvsB,EAAA,SAAAwsB,WAAA5qC,KAAA6J,EAAA,UAAAghC,EAAAzsB,GAAA,IAAAvU,EAAAuU,EAAA0sB,YAAA,GAAAjhC,EAAAyX,KAAA,gBAAAzX,EAAA8+B,IAAAvqB,EAAA0sB,WAAAjhC,CAAA,UAAA2+B,EAAApqB,GAAA,KAAAwsB,WAAA,EAAAJ,OAAA,SAAApsB,EAAAnb,QAAAsnC,EAAA,WAAAQ,OAAA,YAAA7B,EAAAr/B,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAg+B,EAAAh+B,EAAAlI,GAAA,GAAAkmC,EAAA,OAAAA,EAAA5mC,KAAA4I,GAAA,sBAAAA,EAAAlL,KAAA,OAAAkL,EAAA,IAAAmK,MAAAnK,EAAA5L,QAAA,KAAA6D,GAAA,EAAA3D,EAAA,SAAAQ,IAAA,OAAAmD,EAAA+H,EAAA5L,QAAA,GAAAsD,EAAAN,KAAA4I,EAAA/H,GAAA,OAAAnD,EAAAyH,MAAAyD,EAAA/H,GAAAnD,EAAAk+B,MAAA,EAAAl+B,EAAA,OAAAA,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,SAAAR,EAAAQ,KAAAR,CAAA,YAAAisC,UAAAZ,GAAA3/B,GAAA,2BAAAi/B,EAAA9rC,UAAA+rC,EAAAjnC,EAAAqnC,EAAA,eAAA/iC,MAAA2iC,EAAAX,cAAA,IAAAtmC,EAAAinC,EAAA,eAAA3iC,MAAA0iC,EAAAV,cAAA,IAAAU,EAAAkC,YAAA7C,EAAAY,EAAAd,EAAA,qBAAAp+B,EAAAohC,oBAAA,SAAA7sB,GAAA,IAAAvU,EAAA,mBAAAuU,GAAAA,EAAAxb,YAAA,QAAAiH,IAAAA,IAAAi/B,GAAA,uBAAAj/B,EAAAmhC,aAAAnhC,EAAAjC,MAAA,EAAAiC,EAAAqhC,KAAA,SAAA9sB,GAAA,OAAArc,OAAAopC,eAAAppC,OAAAopC,eAAA/sB,EAAA2qB,IAAA3qB,EAAAlY,UAAA6iC,EAAAZ,EAAA/pB,EAAA6pB,EAAA,sBAAA7pB,EAAAphB,UAAA+E,OAAAwmC,OAAAY,GAAA/qB,CAAA,EAAAvU,EAAAuhC,MAAA,SAAAhtB,GAAA,OAAAsrB,QAAAtrB,EAAA,EAAAgrB,EAAAE,EAAAtsC,WAAAmrC,EAAAmB,EAAAtsC,UAAAqL,GAAA,0BAAAwB,EAAAy/B,cAAAA,EAAAz/B,EAAAwhC,MAAA,SAAAjtB,EAAAypB,EAAAtmC,EAAAO,EAAA3D,QAAA,IAAAA,IAAAA,EAAAmtC,SAAA,IAAA3pC,EAAA,IAAA2nC,EAAAjB,EAAAjqB,EAAAypB,EAAAtmC,EAAAO,GAAA3D,GAAA,OAAA0L,EAAAohC,oBAAApD,GAAAlmC,EAAAA,EAAAhD,OAAAgrC,MAAA,SAAAvrB,GAAA,OAAAA,EAAAye,KAAAze,EAAAhY,MAAAzE,EAAAhD,MAAA,KAAAyqC,EAAAD,GAAAhB,EAAAgB,EAAAlB,EAAA,aAAAE,EAAAgB,EAAAxnC,GAAA,0BAAAwmC,EAAAgB,EAAA,qDAAAt/B,EAAA7G,KAAA,SAAAob,GAAA,IAAAvU,EAAA9H,OAAAqc,GAAAypB,EAAA,WAAAtmC,KAAAsI,EAAAg+B,EAAA7nC,KAAAuB,GAAA,OAAAsmC,EAAA0D,UAAA,SAAA5sC,IAAA,KAAAkpC,EAAA5pC,QAAA,KAAAmgB,EAAAypB,EAAApD,MAAA,GAAArmB,KAAAvU,EAAA,OAAAlL,EAAAyH,MAAAgY,EAAAzf,EAAAk+B,MAAA,EAAAl+B,CAAA,QAAAA,EAAAk+B,MAAA,EAAAl+B,CAAA,GAAAkL,EAAAq/B,OAAAA,EAAAV,EAAAxrC,UAAA,CAAA4F,YAAA4lC,EAAAuC,MAAA,SAAAlhC,GAAA,QAAAuE,KAAA,OAAAzP,KAAA,OAAAorC,KAAA,KAAAC,MAAA5rB,EAAA,KAAAye,MAAA,OAAAgN,SAAA,UAAAh3B,OAAA,YAAA81B,IAAAvqB,EAAA,KAAAwsB,WAAA3nC,QAAA4nC,IAAAhhC,EAAA,QAAAg+B,KAAA,WAAAA,EAAA2D,OAAA,IAAAjqC,EAAAN,KAAA,KAAA4mC,KAAA7zB,OAAA6zB,EAAAnnC,MAAA,WAAAmnC,GAAAzpB,EAAA,EAAAqtB,KAAA,gBAAA5O,MAAA,MAAAze,EAAA,KAAAwsB,WAAA,GAAAE,WAAA,aAAA1sB,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,YAAA+C,IAAA,EAAAzB,kBAAA,SAAApgC,GAAA,QAAAgzB,KAAA,MAAAhzB,EAAA,IAAAg+B,EAAA,cAAA8D,EAAApqC,EAAAO,GAAA,OAAAH,EAAA2f,KAAA,QAAA3f,EAAAgnC,IAAA9+B,EAAAg+B,EAAAlpC,KAAA4C,EAAAO,IAAA+lC,EAAAh1B,OAAA,OAAAg1B,EAAAc,IAAAvqB,KAAAtc,CAAA,SAAAA,EAAA,KAAA8oC,WAAA3sC,OAAA,EAAA6D,GAAA,IAAAA,EAAA,KAAA3D,EAAA,KAAAysC,WAAA9oC,GAAAH,EAAAxD,EAAA2sC,WAAA,YAAA3sC,EAAAqsC,OAAA,OAAAmB,EAAA,UAAAxtC,EAAAqsC,QAAA,KAAAp8B,KAAA,KAAA/F,EAAA9G,EAAAN,KAAA9C,EAAA,YAAA8pC,EAAA1mC,EAAAN,KAAA9C,EAAA,iBAAAkK,GAAA4/B,EAAA,SAAA75B,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,WAAAr8B,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,SAAAriC,GAAA,QAAA+F,KAAAjQ,EAAAssC,SAAA,OAAAkB,EAAAxtC,EAAAssC,UAAA,YAAAxC,EAAA,MAAA3qB,MAAA,kDAAAlP,KAAAjQ,EAAAusC,WAAA,OAAAiB,EAAAxtC,EAAAusC,WAAA,KAAAR,OAAA,SAAA9rB,EAAAvU,GAAA,QAAAg+B,EAAA,KAAA+C,WAAA3sC,OAAA,EAAA4pC,GAAA,IAAAA,EAAA,KAAA/lC,EAAA,KAAA8oC,WAAA/C,GAAA,GAAA/lC,EAAA0oC,QAAA,KAAAp8B,MAAA7M,EAAAN,KAAAa,EAAA,oBAAAsM,KAAAtM,EAAA4oC,WAAA,KAAAvsC,EAAA2D,EAAA,OAAA3D,IAAA,UAAAigB,GAAA,aAAAA,IAAAjgB,EAAAqsC,QAAA3gC,GAAAA,GAAA1L,EAAAusC,aAAAvsC,EAAA,UAAAwD,EAAAxD,EAAAA,EAAA2sC,WAAA,UAAAnpC,EAAA2f,KAAAlD,EAAAzc,EAAAgnC,IAAA9+B,EAAA1L,GAAA,KAAA0U,OAAA,YAAAlU,KAAAR,EAAAusC,WAAAnf,GAAA,KAAA2C,SAAAvsB,EAAA,EAAAusB,SAAA,SAAA9P,EAAAvU,GAAA,aAAAuU,EAAAkD,KAAA,MAAAlD,EAAAuqB,IAAA,gBAAAvqB,EAAAkD,MAAA,aAAAlD,EAAAkD,KAAA,KAAA3iB,KAAAyf,EAAAuqB,IAAA,WAAAvqB,EAAAkD,MAAA,KAAAoqB,KAAA,KAAA/C,IAAAvqB,EAAAuqB,IAAA,KAAA91B,OAAA,cAAAlU,KAAA,kBAAAyf,EAAAkD,MAAAzX,IAAA,KAAAlL,KAAAkL,GAAA0hB,CAAA,EAAAyZ,OAAA,SAAA5mB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA6C,aAAAtsB,EAAA,YAAA8P,SAAA2Z,EAAAiD,WAAAjD,EAAA8C,UAAAE,EAAAhD,GAAAtc,CAAA,GAAAqgB,MAAA,SAAAxtB,GAAA,QAAAvU,EAAA,KAAA+gC,WAAA3sC,OAAA,EAAA4L,GAAA,IAAAA,EAAA,KAAAg+B,EAAA,KAAA+C,WAAA/gC,GAAA,GAAAg+B,EAAA2C,SAAApsB,EAAA,KAAA7c,EAAAsmC,EAAAiD,WAAA,aAAAvpC,EAAA+f,KAAA,KAAAxf,EAAAP,EAAAonC,IAAAkC,EAAAhD,EAAA,QAAA/lC,CAAA,QAAAwb,MAAA,0BAAAuuB,cAAA,SAAAhiC,EAAAg+B,EAAAtmC,GAAA,YAAAsoC,SAAA,CAAA9B,SAAAmB,EAAAr/B,GAAAwgC,WAAAxC,EAAAyC,QAAA/oC,GAAA,cAAAsR,SAAA,KAAA81B,IAAAvqB,GAAAmN,CAAA,GAAA1hB,CAAA,UAAAonD,GAAAppB,GAAA,gBAAAA,GAAA,GAAA/hC,MAAAY,QAAAmhC,GAAA,OAAAwhB,GAAAxhB,EAAA,CAAAgkB,CAAAhkB,IAAA,SAAAA,GAAA,uBAAAC,QAAA,MAAAD,EAAAC,OAAAC,WAAA,MAAAF,EAAA,qBAAA/hC,MAAAg2B,KAAA+L,EAAA,CAAAikB,CAAAjkB,IAAA,SAAAA,EAAAlmC,GAAA,GAAAkmC,EAAA,qBAAAA,EAAA,OAAAwhB,GAAAxhB,EAAAlmC,GAAA,IAAAyc,EAAA,GAAAhP,SAAAnO,KAAA4mC,GAAAnnC,MAAA,uBAAA0d,GAAAypB,EAAAjlC,cAAAwb,EAAAypB,EAAAjlC,YAAAgF,MAAA,QAAAwW,GAAA,QAAAA,EAAAtY,MAAAg2B,KAAA+L,GAAA,cAAAzpB,GAAA,2CAAAwR,KAAAxR,GAAAirC,GAAAxhB,EAAAlmC,QAAA,GAAAoqD,CAAAlkB,IAAA,qBAAAuC,UAAA,wIAAA4hB,EAAA,UAAA3C,GAAAxhB,EAAAlmC,IAAA,MAAAA,GAAAA,EAAAkmC,EAAA5pC,UAAA0D,EAAAkmC,EAAA5pC,QAAA,QAAA4L,EAAA,EAAAtI,EAAAuE,MAAAnE,GAAAkI,EAAAlI,EAAAkI,IAAAtI,EAAAsI,GAAAg+B,EAAAh+B,GAAA,OAAAtI,CAAA,UAAAuqC,GAAAvqC,EAAA6c,EAAAvU,EAAAg+B,EAAA/lC,EAAAH,EAAA0G,GAAA,QAAAlK,EAAAoD,EAAAI,GAAA0G,GAAA4/B,EAAA9pC,EAAAiI,KAAA,OAAA7E,GAAA,YAAAsI,EAAAtI,EAAA,CAAApD,EAAA0+B,KAAAze,EAAA6pB,GAAAqD,QAAA7B,QAAAxB,GAAA0B,KAAA9B,EAAA/lC,EAAA,CAMA,IA0FA,GA1Fa,WA2EX,SAAAovD,IAjFF,IAAA3vD,EA+EG,OA/EHA,EAiFEqmC,KAAAsD,MArEA,SAAA6f,IAAA,IAAAoG,EAAAC,EASWC,EAAmB,OAAAzpB,KAAAS,MAAC,SAADijB,GAAA,cAAAA,EAAAl9C,KAAAk9C,EAAA3sD,MAAA,OAyD3B,OAzDQ0yD,EAAmB,WAAY,IAAXlB,EAAInnD,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,GAAAA,UAAA,GAAG,GAC5BsoD,EAASl0D,SAASO,eAAe,iBAADqgC,OAAkBmyB,IAGxD,GAAKmB,EAAL,CAKA,IAAMC,EAAOn0D,SAASO,eAAe,OAADqgC,OAAQmyB,IACtCqB,EAAUp0D,SAASO,eAAe,UAADqgC,OAAWmyB,IAC5CsB,EAAUr0D,SAASO,eAAe,UAADqgC,OAAWmyB,IAC5CuB,EAAiBH,EAAKhzB,cAAcj7B,cAAc,kBAClDquD,EACJH,EAAQjzB,cAAcj7B,cAAc,qBAEtCguD,EAAOd,SAAW,SAAU3mD,GAGN,UAFPA,EAAE/G,OAEJsD,OACTorD,EAAQjzB,cAAcx/B,MAAMC,QAAU,QACtCuyD,EAAKhzB,cAAcx/B,MAAMC,QAAU,OACnCyyD,EAAQlzB,cAAcx/B,MAAMC,QAAU,QAEtC2yD,EAAkBrpD,UAAUC,IAAI,kBAC5BmpD,EAAeppD,UAAUK,SAAS,mBACpC+oD,EAAeppD,UAAUG,OAAO,kBAGlC5B,EAAE,QAADm3B,OAASmyB,IAAQ3wC,IAAI,IAAI1X,QAAQ,UAClCjB,EAAE,WAADm3B,OAAYmyB,IAAQ3wC,IAAI,IAAI1X,QAAQ,UACrCjB,EAAE,WAADm3B,OAAYmyB,IAAQ3wC,IAAI,IAAI1X,QAAQ,UAErCkpD,EAAcG,EAAkBM,KAEhCD,EAAQjzB,cAAcx/B,MAAMC,QAAU,OACtCuyD,EAAKhzB,cAAcx/B,MAAMC,QAAU,QACnCyyD,EAAQlzB,cAAcx/B,MAAMC,QAAU,QAEtC0yD,EAAeppD,UAAUC,IAAI,kBACzBopD,EAAkBrpD,UAAUK,SAAS,mBACvCgpD,EAAkBrpD,UAAUG,OAAO,kBAGrC5B,EAAE,QAADm3B,OAASmyB,IAAQ3wC,IAAI,IAAI1X,QAAQ,UAClCjB,EAAE,WAADm3B,OAAYmyB,IAAQ3wC,IAAI,IAAI1X,QAAQ,UACrCjB,EAAE,WAADm3B,OAAYmyB,IAAQ3wC,IAAI,IAAI1X,QAAQ,UAErCmpD,GAAIQ,EAAQ/tD,UAAU0E,KAAI,SAACrL,EAAMiQ,GAC3BA,EAAQ,GACVjQ,EAAK0L,QAET,IAEAmpD,GAA6BzB,EAAMiB,GAEvC,CAjDA,MAFEQ,GAA6BzB,EAAMiB,EAoDvC,EAAC9F,EAAA3sD,KAAA,EAhE8BkzD,KAAuB,OAAhC,OAAhBV,EAAgB7F,EAAAvhB,KAAAuhB,EAAA3sD,KAAG,EACOmzD,KAAwB,OAAlDV,EAAiB9F,EAAAvhB,KAEvBsnB,IACAA,EAAoB,UAEpB,wBAAA/F,EAAA7f,OAAA,GAAAsf,EAAA,IA6DFmG,EAjFF,eAAA9yC,EAAA,KAAAvU,EAAAb,UAAA,WAAAsiC,SAAA,SAAAzD,EAAA/lC,GAAA,IAAAH,EAAAJ,EAAA2I,MAAAkU,EAAAvU,GAAA,SAAA8iD,EAAAprD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,OAAArrD,EAAA,UAAAqrD,EAAArrD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,QAAArrD,EAAA,CAAAorD,OAAA,OA+EGuE,EAAAhnD,MAAA,KAAAlB,UAAA,CAxED+oD,KCPkB,CAChB,CACEtsD,GAAI,aACJy7C,YAAa,wCAEf,CACEz7C,GAAI,mBACJy7C,YAAa,wCAEf,CACEz7C,GAAI,WACJy7C,YAAa,wBAEf,CACEz7C,GAAI,iBACJy7C,YAAa,wBAEf,CACEz7C,GAAI,kBACJy7C,YAAa,qBAEf,CACEz7C,GAAI,wBACJy7C,YAAa,sBAIPj+C,SAAQ,SAAClG,GACjB,IAAIG,EAAW2J,EAAE9J,EAAK0I,IAEpBy7C,EAAcnkD,EAAKmkD,YAErBhkD,EAAS+xD,QAAQ,CACf/N,YAAaA,EACbgO,SAAU,CACRC,UAAW,WACT,MAPM,EAQR,GAEF6C,aAAc,SAAUC,GACtB,OAAOA,CACT,IAGF/0D,EAASsiB,IAAI,MAAM1X,QAAQ,SAC7B,InC9CkB,WAIc,SAAAoqD,IAHlC,IAAA3wD,EA+BG,OA/BHA,EAGkCqmC,KAAAsD,MAAhC,SAAA6f,IAAA,IAAAoH,EAAAlG,EAAA7kB,EAAA,OAAAQ,KAAAS,MAAA,SAAAijB,GAAA,cAAAA,EAAAl9C,KAAAk9C,EAAA3sD,MAAA,OAqBK,OArBL2sD,EAAAl9C,KAAA,EAKa+jD,EAAT,SAA0B1sD,GACxB,IAAI2sD,EAAgBvrD,EAAEpB,GACtB2sD,EAAcrrD,KAAK,IAAIkoD,UAEvB7nB,EAAOnkC,SAAQ,SAAUwD,GACvB,IACEpI,EAAS,IAAI2wD,OAAOvoD,EAAGmB,KAAMnB,EAAGhB,IAAI,GADvB,GAGfpH,EAAOg0D,UAAY5rD,EAAGhB,GACtB2sD,EAAc1kD,OAAOrP,EACvB,IAEA+zD,EAAc5yC,IAAI,MAClB4yC,EAAcnD,QAAQ,CACpB/N,YAAa,gBAEjB,EAACoK,EAAA3sD,KAAA,EAnBoB0rD,MALZ,kDAKuB,OAApB,OAAR4B,EAAQX,EAAAvhB,KAAAuhB,EAAA3sD,KAAG,EACEstD,EAASC,OAAM,OAA9B9kB,EAAMkkB,EAAAvhB,KAoBRooB,EAAiB,YACjBA,EAAiB,kBAAkB7G,EAAA3sD,KAAA,iBAAA2sD,EAAAl9C,KAAA,GAAAk9C,EAAAgH,GAAAhH,EAAA,SAEnC7c,QAAQie,IAAGpB,EAAAgH,IAAI,yBAAAhH,EAAA7f,OAAA,GAAAsf,EAAA,kBA1BamH,EAHlC,eAAA9zC,EAAA,KAAAvU,EAAAb,UAAA,WAAAsiC,SAAA,SAAAzD,EAAA/lC,GAAA,IAAAH,EAAAJ,EAAA2I,MAAAkU,EAAAvU,GAAA,SAAA8iD,EAAAprD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,OAAArrD,EAAA,UAAAqrD,EAAArrD,GAAAuqC,GAAAnqC,EAAAkmC,EAAA/lC,EAAA6qD,EAAAC,EAAA,QAAArrD,EAAA,CAAAorD,OAAA,OA+BGuF,EAAAhoD,MAAA,KAAAlB,UAAA,EA7BD,WACgCkpD,EAAAhoD,MAAC,KAADlB,UAAA,CA8BhCupD,EACF,CkCzBEC,GACW,WAEYtB,EAAAhnD,MAAC,KAADlB,UAAA,CAFvBypD,GAwEA,IAAMzB,EAAgB,SAACzqD,EAAK8+B,GAC1B4rB,GAAI5rB,EAAM3hC,UAAU0E,KAAI,SAACrL,EAAMiQ,GACzBA,EAAQ,GACVjQ,EAAK0L,QAET,IAEAlC,EAAItD,SAAQ,SAAClG,GACX,IAAIsB,EAAS,IAAI2wD,OAAOjyD,EAAMA,GAAM,GAAO,GAC3CsoC,EAAM33B,OAAOrP,EACf,GACF,CACF,EE7EAuH,OAAOhG,iBAAiB,oBAAoB,WzCGzB,IACX8yD,G0CpBS,WACf,KAAQ9sD,OAAO+sD,uBAA0Bv1D,SAASw1D,eAC5CtwD,IAAc,CAChB,IAAIuwD,EAA0B,IAArBjtD,OAAOonB,YAChB5vB,SAASgV,gBAAgBrT,MAAMqR,YAAY,OAAQ,GAAF4tB,OAAK60B,EAAE,OAExDjtD,OAAOhG,iBAAiB,UAAU,WAChCizD,EAA0B,IAArBjtD,OAAOonB,YACZ5vB,SAASgV,gBAAgBrT,MAAMqR,YAAY,OAAQ,GAAF4tB,OAAK60B,EAAE,MAC1D,GACF,CAEJ,CDKEC,GACAC,MzCEML,EAAgBt1D,SAASmG,iBAAiB,WAC9BtF,QAChBy0D,EAAczvD,SAAQ,SAACwD,GACrB3G,YAAW,WACT2G,EAAG6B,UAAUG,OAAO,iBACtB,GAAG,IACL,IAGFm5B,GAAS,IAAIC,GAAOC,IAEpBl8B,OAAOg8B,OAASA,GyCRhBh8B,OAAOhG,iBAAiB,QAAQ,WEzBf,IACVozD,EACJhJ,EACAiJ,EFuBDC,KACAC,GAAmB,kBAAmB,GACtCA,GAAmB,wBAAyB,G/CvB9Cj3B,GAAO,IAAIC,GAEXv2B,OAAOs2B,KAAOA,GEHd+C,GAAa,IAAIC,GAEjBt5B,OAAOq5B,WAAaA,GgDNK,WACxB,IAAMm0B,EAAWh2D,SAASkG,cAAc,QAClC+vD,EAAej2D,SAASkG,cAAc,gCAC5C,GAAK+vD,EAAL,CAEA,IAAMC,EAAaD,EAAa/vD,cAAc,KACxCiwD,EAAmBF,EAAa/vD,cAAc,KAC9CkwD,EAAaH,EAAa/vD,cAAc,2BACxCmwD,EAAgBJ,EAAa/vD,cAAc,4BAqBjD8vD,EAASxzD,iBAAiB,SAnBN,SAACqL,GAClB,GAAIA,EAAInI,OAAO4L,QAAQ,qCAAsC,CAC1D,IAAMglD,EAAazoD,EAAInI,OAAO4L,QAAQ,mBAChCilD,EAAWD,EAAWpwD,cAAc,KAAKswD,UACzCC,EAAkBH,EAAWpwD,cAAc,KAAK2J,YAChD6mD,EAAYJ,EAAWpwD,cAAc,OACrCywD,EAAmBL,EAAWpwD,cAAc,4BAMlD,GAJAgwD,EAAW71D,UAAYk2D,EACvBJ,EAAiBtmD,YAAc4mD,EAC/BL,EAAWzwD,IAAM+wD,EAAU/wD,IAC3BywD,EAAWQ,IAAMF,EAAUE,IACvBD,EAAkB,CACnB,IAAME,EAAWnuD,MAAMg2B,KAAKi4B,EAAiBxwD,iBAAiB,OAAO6E,KAAI,SAAC8rD,GAAO,OAAKA,EAAQN,SAAS,IACvGH,EAAch2D,UAAYw2D,EAAShrC,KAAK,IAC3C,CACH,CACH,GAxByB,CA2B5B,CHCIkrC,GI5BF,IAAItvB,GAAW,CACbhd,MAAO,aACPI,IAAK,GACL6c,OAAQ,GACRz5B,KAAM,CACJk7B,KAAM,CACJhP,MAAO,IACPkO,MAAO,GACPC,KAAM,MFVLstB,EAAS51D,SAASkG,cAAc,iBACpC0mD,EAAO5sD,SAASkG,cAAc,SAC9B2vD,EAAO71D,SAASkG,cAAc,SAC3B0vD,GAAWhJ,GAASiJ,GAWzBrtD,OAAOhG,iBAAiB,UAVJ,WAClB,IAAMw0D,EAAWxuD,OAAOy6B,YACpB+zB,EAAWnB,EAAKl5C,UAAYk5C,EAAKr/C,cAE1BwgD,EAAWh3D,SAASgV,gBAAgBwB,aAAeo2C,EAAKjwC,UADjEi5C,EAAOj0D,MAAMsK,UAAY,mBAGhB+qD,EAAWpK,EAAKjwC,YACzBi5C,EAAOj0D,MAAMsK,UAAY,gBAE7B,IGdgB,WACjB,IAAMgrD,EAASj3D,SAASkG,cAAc,iBACtC,GAAK+wD,EAAL,CAEA,IAAMC,EAAc,WAClB1uD,OAAO4G,QAAU,IACb6nD,EAAOt1D,MAAMG,QAAU,IACvBm1D,EAAOt1D,MAAMG,QAAU,GAC7B,EAEAo1D,IACA1uD,OAAOhG,iBAAiB,SAAU00D,EATf,CAUrB,CLsBIC,GMlCqB,WACvB,IAAMF,EAASj3D,SAASkG,cAAc,iBACtC,GAAK+wD,EAAL,CACA,IAAMG,EAAaH,EAAO/wD,cAAc,sBAClCmxD,EAAaJ,EAAO/wD,cAAc,sBACdsC,OAAON,WAAW,kBAE1B6H,QACdqnD,EAAW50D,iBAAiB,cAAc,kBAAMusD,GAAG,SAAS,YAAY,eAAe,IACvFqI,EAAW50D,iBAAiB,SAAS,kBAAMusD,GAAG,SAAS,YAAY,eAAe,IAEtFsI,EAAW70D,iBAAiB,SAAS,kBAAMusD,GAAG,SAAS,YAAY,eAAe,GAT/D,CAUrB,CNuBIuI,GOnCY,WACd,IAAMnrC,EAAMnsB,SAAS2G,SAASI,KAC5B+mD,EAAmB3hC,EAAItiB,QAAQ,KAC/B0tD,EAAWprC,EAAI7oB,MAAMwqD,EAAmB,EAAG3hC,EAAItrB,QA4BjD,GAAIitD,GAAoB,EAAG,CAEzB,GAAIyJ,EAASpyD,SAAS,aAAeoyD,EAASpyD,SAAS,UAAYoyD,EAASpyD,SAAS,UAEnF,YADAksC,QAAQie,IAAI,iBA5BhB,SAAmB9kD,EAAMxB,GAAqB,IAAd0rB,EAAO9oB,UAAA/K,OAAA,QAAAkC,IAAA6I,UAAA,GAAAA,UAAA,GAAG,CAAC,EACzC8oB,oWAAO8iC,CAAA,CACL/yC,KAAM,KAEHiQ,GAGDA,EAAQ+iC,mBAAmBzvD,OAC7B0sB,EAAQ+iC,QAAU/iC,EAAQ+iC,QAAQC,eAGpC,IAAIC,EACFC,mBAAmBptD,GAAQ,IAAMotD,mBAAmB5uD,GAEtD,IAAK,IAAI6uD,KAAanjC,EAAS,CAC7BijC,GAAiB,KAAOE,EACxB,IAAIC,EAAcpjC,EAAQmjC,IACN,IAAhBC,IACFH,GAAiB,IAAMG,EAE3B,CAEA93D,SAASytD,OAASkK,CACpB,CASEI,CAAU,WAAYR,EAAU,CAAE,UAAW,QAE7ClmB,QAAQie,IAAI,YACd,CACF,CPNI0I,EACF,GACF","sources":["webpack://flow.bplatgulanding/./node_modules/vanilla-toast/vanilla-toast.js","webpack://flow.bplatgulanding/webpack/bootstrap","webpack://flow.bplatgulanding/webpack/runtime/compat get default export","webpack://flow.bplatgulanding/webpack/runtime/define property getters","webpack://flow.bplatgulanding/webpack/runtime/hasOwnProperty shorthand","webpack://flow.bplatgulanding/./wwwroot/js/utils/ios-checker.js","webpack://flow.bplatgulanding/./node_modules/ssr-window/ssr-window.esm.js","webpack://flow.bplatgulanding/./node_modules/dom7/dom7.esm.js","webpack://flow.bplatgulanding/./node_modules/swiper/shared/dom.js","webpack://flow.bplatgulanding/./node_modules/swiper/shared/utils.js","webpack://flow.bplatgulanding/./node_modules/swiper/shared/get-support.js","webpack://flow.bplatgulanding/./node_modules/swiper/shared/get-device.js","webpack://flow.bplatgulanding/./node_modules/swiper/shared/get-browser.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/events-emitter.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/updateSize.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/updateSlides.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/updateProgress.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/transition/transitionEmit.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/slide/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/slide/slideTo.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/slide/slideToLoop.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/slide/slideNext.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/slide/slidePrev.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/slide/slideReset.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/slide/slideToClosest.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/loop/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/loop/loopCreate.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/loop/loopFix.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/loop/loopDestroy.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/events/onTouchStart.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/events/onTouchMove.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/events/onTouchEnd.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/events/onResize.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/events/onClick.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/events/onScroll.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/events/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/breakpoints/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/classes/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/classes/addClasses.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/classes/removeClasses.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/defaults.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/moduleExtendParams.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/core.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/translate/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/translate/getTranslate.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/translate/setTranslate.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/translate/minTranslate.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/translate/maxTranslate.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/translate/translateTo.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/transition/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/transition/setTransition.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/transition/transitionStart.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/transition/transitionEnd.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/grab-cursor/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/check-overflow/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/images/index.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/images/loadImage.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/images/preloadImages.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/modules/resize/resize.js","webpack://flow.bplatgulanding/./node_modules/swiper/core/modules/observer/observer.js","webpack://flow.bplatgulanding/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://flow.bplatgulanding/./node_modules/swiper/modules/navigation/navigation.js","webpack://flow.bplatgulanding/./node_modules/swiper/shared/classes-to-selector.js","webpack://flow.bplatgulanding/./node_modules/swiper/modules/pagination/pagination.js","webpack://flow.bplatgulanding/./node_modules/swiper/modules/lazy/lazy.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/resize.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/sliders/init-areas-slider.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/sliders/init-causes-slider.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/sliders/init-diploma-slider.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/sliders/init-experts-slider.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/sliders/init-relevance-slider.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/sliders/init-types-slider.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/sliders/sliders.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/init-show-more-button.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/tabs/tabs.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/tabs/init-tabs.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/accordion/accordions.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/accordion/init-accordion.js","webpack://flow.bplatgulanding/./wwwroot/js/utils/scroll-lock.js","webpack://flow.bplatgulanding/./wwwroot/js/utils/focus-lock.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/modals/modals.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/modals/init-modals.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/date/ChangeDate.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/date/init-counter.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/date/set-date.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/date/set-timer.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/form/init-regions.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/core/utils.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/core/action-details.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/core/holder.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/factory.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/controls/mask-element.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/controls/html-mask-element.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/controls/html-input-mask-element.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/controls/input-history.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/controls/input.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/core/change-details.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/core/continuous-tail-details.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/base.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/pattern/cursor.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/pattern/fixed-definition.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/pattern/input-definition.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/regexp.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/pattern.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/range.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/date.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/dynamic.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/enum.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/number.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/function.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/pipe.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/masked/repeat.js","webpack://flow.bplatgulanding/./node_modules/imask/esm/index.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/form/init-form.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/get-page-name.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/form/offline/init-net-requests-offline.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/form/online/init-net-requests-online.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/form/offline/init-drop-down-programs-offline.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/form/index.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/form/init-selects.js","webpack://flow.bplatgulanding/./wwwroot/js/main.js","webpack://flow.bplatgulanding/./wwwroot/js/utils/ios-vh-fix.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/init-banner.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/render-experts-modal.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/date/init-change-date.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/init-widget.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/init-widget-events.js","webpack://flow.bplatgulanding/./wwwroot/js/modules/UtmTags.js"],"sourcesContent":["(function() {\r\n \"use strict\";\r\n\r\n // VanillaToast class\r\n var VanillaToast = (function() {\r\n function VanillaToast() {\r\n this.queue = new TaskQueue();\r\n this.cancellationTokens = [];\r\n this.element = null;\r\n }\r\n\r\n var constants = {\r\n default: {\r\n className: 'default',\r\n fadeDuration: 400,\r\n fadeInterval: 16,\r\n duration: 2000,\r\n closeButton: false,\r\n immediately: false\r\n },\r\n success: {\r\n className: 'success'\r\n },\r\n info: {\r\n className: 'info'\r\n },\r\n warning: {\r\n className: 'warning'\r\n },\r\n error: {\r\n className: 'error',\r\n duration: 3000,\r\n closeButton: true\r\n }\r\n };\r\n\r\n // create elements.\r\n VanillaToast.prototype.initElement = function(selector) {\r\n var container = document.createElement('div');\r\n var toastBox = document.createElement('div');\r\n var text = document.createElement('div');\r\n var closeButton = document.createElement('span');\r\n\r\n container.setAttribute(\"id\", \"vanilla-toast-container\");\r\n\r\n toastBox.setAttribute(\"id\", \"vanilla-toast\");\r\n\r\n text.setAttribute(\"id\", \"vanilla-toast-text\");\r\n\r\n closeButton.setAttribute(\"id\", \"vanilla-toast-close-button\");\r\n closeButton.innerHTML = '✖';\r\n\r\n toastBox.appendChild(text);\r\n toastBox.appendChild(closeButton);\r\n container.appendChild(toastBox);\r\n\r\n if (selector) {\r\n document.getElementById(seletor).appendChild(containter);\r\n } else {\r\n document.body.appendChild(container);\r\n }\r\n\r\n this.element = {\r\n container: container,\r\n toastBox: toastBox,\r\n text: text,\r\n closeButton: closeButton\r\n };\r\n\r\n _setStyle(this, constants.default);\r\n };\r\n\r\n // cancel current showing toast.\r\n VanillaToast.prototype.cancel = function() {\r\n if (this.cancellationTokens.length) this.cancellationTokens[0].cancel();\r\n };\r\n\r\n // cancel all enqueued toasts.\r\n VanillaToast.prototype.cancelAll = function() {\r\n var length = this.cancellationTokens.length;\r\n for (var i = 0; i < length; ++i) {\r\n (function(token) {\r\n token.cancel();\r\n })(this.cancellationTokens[length - i - 1]);\r\n }\r\n };\r\n\r\n // show toast\r\n VanillaToast.prototype.show = function(text, option, callback) {\r\n var self = this;\r\n if (!self.element) self.initElement();\r\n if (!option) option = {};\r\n // if immediately show option is on, cancel all previous toasts.\r\n if (option.immediately) self.cancelAll();\r\n\r\n var cancellationToken = new CancellationToken();\r\n // enqueue\r\n self.queue.enqueue(function(next) {\r\n // time setting\r\n var fadeDuration = option.fadeDuration || constants.default.fadeDuration;\r\n var fadeInterval = option.fadeInterval || constants.default.fadeInterval;\r\n var fadeStep = Math.min(fadeInterval / fadeDuration, 1);\r\n var duration = option.duration || constants.default.duration;\r\n\r\n // close button setting\r\n self.element.closeButton.style.display =\r\n option.closeButton ? 'inline' : 'none';\r\n\r\n // set text\r\n self.element.text.innerHTML = text;\r\n\r\n // set visible\r\n var s = self.element.toastBox.style;\r\n s.opacity = 0;\r\n s.display = 'inline-block';\r\n\r\n // set styles\r\n _setStyle(self, option);\r\n\r\n // timeoutId\r\n var timeoutId = null;\r\n\r\n // duration timeout callback.\r\n var timeoutCallback = function() {\r\n timeoutId = null;\r\n // release click clickHandler\r\n self.element.toastBox.removeEventListener('click', cancelHandler);\r\n _hide(self, option, cancellationToken, function() {\r\n if (callback) callback();\r\n self.cancellationTokens.shift().dispose();\r\n next();\r\n });\r\n };\r\n\r\n // click for close handler\r\n var cancelHandler = function() {\r\n if (!timeoutId) return;\r\n clearTimeout(timeoutId);\r\n timeoutCallback();\r\n };\r\n\r\n // start fade in.\r\n _fade(s, fadeStep, fadeInterval, cancellationToken, function() {\r\n // show while duration time and hide.\r\n self.element.toastBox.addEventListener('click', cancelHandler);\r\n if (cancellationToken.isCancellationRequested) {\r\n timeoutCallback();\r\n } else {\r\n timeoutId = setTimeout(timeoutCallback, duration);\r\n cancellationToken.register(function() {\r\n cancelHandler();\r\n });\r\n }\r\n });\r\n });\r\n\r\n self.cancellationTokens.push(cancellationToken);\r\n\r\n return self;\r\n };\r\n\r\n // create preset methods\r\n for (var item in constants) {\r\n (function(preset) {\r\n VanillaToast.prototype[preset] = function(text, option, callback) {\r\n if (!option) option = {};\r\n\r\n // copy preset options\r\n for (var propertyName in constants[preset]) {\r\n if (option[propertyName] === undefined)\r\n option[propertyName] = constants[preset][propertyName];\r\n }\r\n\r\n return this.show(text, option, callback);\r\n };\r\n })(item);\r\n }\r\n\r\n // private methods.\r\n\r\n // set style\r\n function _setStyle(self, option) {\r\n self.element.toastBox.className = option.className || constants.default.className;\r\n };\r\n\r\n // hide toast\r\n function _hide(self, option, cancellationToken, callback) {\r\n if (!option) option = {};\r\n\r\n // time setting\r\n var fadeDuration = option.fadeDuration || constants.default.fadeDuration;\r\n var fadeInterval = option.fadeInterval || constants.default.fadeInterval;\r\n var fadeStep = Math.min(fadeInterval / fadeDuration, 1);\r\n\r\n // set visible\r\n var s = self.element.toastBox.style;\r\n s.opacity = 1;\r\n\r\n // start fade out and call callback function.\r\n _fade(s, -fadeStep, fadeInterval, cancellationToken, function() {\r\n s.display = 'none';\r\n if (callback) callback();\r\n });\r\n\r\n return self;\r\n };\r\n\r\n // run fade animation\r\n function _fade(style, step, interval, cancellationToken, callback) {\r\n (function fade() {\r\n if (cancellationToken.isCancellationRequested) {\r\n style.opacity = step < 0 ? 0 : 1;\r\n if (callback) callback();\r\n return;\r\n }\r\n style.opacity = Number(style.opacity) + step;\r\n if (step < 0 && style.opacity < 0) {\r\n if (callback) callback();\r\n } else if (step > 0 && style.opacity >= 1) {\r\n if (callback) callback();\r\n } else {\r\n var timeoutId = setTimeout(function() {\r\n timeoutId = null;\r\n fade();\r\n }, interval);\r\n cancellationToken.register(function() {\r\n if (!timeoutId) return;\r\n clearTimeout(timeoutId);\r\n timeoutId = null;\r\n if (callback) callback();\r\n });\r\n }\r\n })();\r\n };\r\n\r\n return VanillaToast;\r\n })();\r\n\r\n // CancellationToken class\r\n var CancellationToken = (function() {\r\n function CancellationToken() {\r\n this.isCancellationRequested = false;\r\n this.cancelCallbacks = [];\r\n }\r\n\r\n CancellationToken.prototype.cancel = function() {\r\n this.isCancellationRequested = true;\r\n var copiedCallbacks = this.cancelCallbacks.slice();\r\n while (copiedCallbacks.length) copiedCallbacks.shift()();\r\n };\r\n\r\n CancellationToken.prototype.register = function(callback) {\r\n this.cancelCallbacks.push(callback);\r\n };\r\n\r\n CancellationToken.prototype.dispose = function() {\r\n while (this.cancelCallbacks.length) this.cancelCallbacks.shift();\r\n };\r\n\r\n return CancellationToken;\r\n })();\r\n\r\n // TaskQueue class from https://github.com/talsu/async-task-queue\r\n var TaskQueue = (function() {\r\n function TaskQueue() {\r\n this.queue = [];\r\n this.isExecuting = false;\r\n }\r\n\r\n // enqueue job. run immediately.\r\n TaskQueue.prototype.enqueue = function(job) {\r\n // enqueue.\r\n this.queue.push(job);\r\n // call execute.\r\n dequeueAndExecute(this);\r\n };\r\n\r\n // Dequeue and execute job.\r\n function dequeueAndExecute(self) {\r\n if (self.isExecuting) return;\r\n\r\n // Dequeue Job.\r\n var job = self.queue.shift();\r\n if (!job) return;\r\n\r\n //Execute Job.\r\n self.isExecuting = true;\r\n\r\n // Pass next job execute callback.\r\n job(function() {\r\n self.isExecuting = false;\r\n dequeueAndExecute(self);\r\n });\r\n }\r\n\r\n return TaskQueue;\r\n })();\r\n\r\n // export\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = new VanillaToast();\r\n }\r\n exports.vanillaToast = new VanillaToast();\r\n } else {\r\n this.vanillaToast = new VanillaToast();\r\n }\r\n}.call(this));\r\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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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 = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","export const iosChecker = () => {\r\n return [\r\n 'iPad Simulator',\r\n 'iPhone Simulator',\r\n 'iPod Simulator',\r\n 'iPad',\r\n 'iPhone',\r\n 'iPod'\r\n ].includes(navigator.platform)\r\n // iPad on iOS 13 detection\r\n || (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\r\n};\r\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","let resize = (func) => {\r\n let currentInnerWidth = window.innerWidth;\r\n\r\n window.addEventListener('resize', () => {\r\n if (window.innerWidth === currentInnerWidth) return;\r\n currentInnerWidth = window.innerWidth;\r\n func();\r\n });\r\n}\r\n\r\nexport default resize;","import Swiper, {Navigation, Pagination, Lazy} from \"swiper\";\r\nimport resize from \"../resize\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initAreasSlider = () => {\r\n const sliderContainer = document.querySelector(\"[data-areas-slider]\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(sliderContainer, {\r\n lazy: true,\r\n breakpoints: { \r\n 0: {\r\n spaceBetween: 30,\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \"[data-areas-slider-container] .slider-navigation__button--next\",\r\n prevEl: \"[data-areas-slider-container] .slider-navigation__button--prev\",\r\n },\r\n pagination: {\r\n el: \"[data-areas-slider-container] .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n }\r\n }; \r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth < 768\r\n ? init()\r\n : destroy()\r\n }\r\n \r\n sliderContainer && resizeSwiper();\r\n sliderContainer && resize(resizeSwiper);\r\n};\r\n\r\nexport default initAreasSlider;\r\n","import Swiper, {Pagination} from 'swiper';\r\nimport resize from '../resize';\r\nSwiper.use([Pagination]);\r\n\r\nconst initCausesSlider = () => {\r\n const sliderContainer = document.querySelector('[data-causes-slider]');\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(sliderContainer, {\r\n loop: true,\r\n autoHeight: true,\r\n breakpoints: {\r\n 0: {\r\n slidesPerView: 1,\r\n spaceBetween: 10,\r\n }\r\n },\r\n pagination: {\r\n el: '[data-causes-slider-container] .swiper-pagination',\r\n clickable: true,\r\n bulletElement: \"button\",\r\n },\r\n })\r\n }\r\n };\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth < 768\r\n ? init()\r\n : destroy()\r\n }\r\n \r\n sliderContainer && resizeSwiper();\r\n sliderContainer && resize(resizeSwiper);\r\n};\r\n\r\nexport default initCausesSlider;\r\n","import Swiper, {Navigation, Pagination, Lazy} from \"swiper\";\r\nSwiper.use([Pagination, Navigation, Lazy]);\r\n\r\nconst initDiplomaSlider = () => {\r\n const sliderContainer = document.querySelector(\"[data-diploma-slider]\");\r\n\r\n sliderContainer && new Swiper(sliderContainer, {\r\n watchOverflow: true,\r\n slidesPerView: 1,\r\n spaceBetween: 10,\r\n lazy: true,\r\n navigation: {\r\n nextEl: \"[data-diploma-slider-container] .slider-navigation__button--next\",\r\n prevEl: \"[data-diploma-slider-container] .slider-navigation__button--prev\",\r\n },\r\n pagination: {\r\n el: \"[data-diploma-slider-container] .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n};\r\n\r\nexport default initDiplomaSlider;\r\n","import Swiper, {Pagination, Lazy} from 'swiper';\r\nimport resize from '../resize';\r\nSwiper.use([Pagination, Lazy]);\r\n\r\nconst initExpertsSlider = () => {\r\n const sliderContainer = document.querySelector('[data-experts-slider]');\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(sliderContainer, {\r\n watchSlidesProgress: true,\r\n lazy: true,\r\n breakpoints: {\r\n 0: {\r\n slidesPerView: 1,\r\n spaceBetween: 10,\r\n }\r\n },\r\n pagination: {\r\n el: '[data-experts-slider-container] .swiper-pagination',\r\n clickable: true,\r\n bulletElement: \"button\",\r\n },\r\n })\r\n }\r\n };\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth < 768\r\n ? init()\r\n : destroy()\r\n }\r\n \r\n sliderContainer && resizeSwiper();\r\n sliderContainer && resize(resizeSwiper);\r\n};\r\n\r\nexport default initExpertsSlider;\r\n","import Swiper, {Pagination} from 'swiper';\r\nimport resize from '../resize';\r\nSwiper.use([Pagination]);\r\n\r\nconst initRelevanceSlider = () => {\r\n const sliderContainer = document.querySelector('[data-relevance-slider]');\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(sliderContainer, {\r\n loop: true,\r\n breakpoints: {\r\n 0: {\r\n slidesPerView: 1.35,\r\n spaceBetween: 20,\r\n }\r\n },\r\n pagination: {\r\n el: '[data-relevance-slider-container] .swiper-pagination',\r\n clickable: true,\r\n bulletElement: \"button\",\r\n },\r\n })\r\n }\r\n };\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth < 768\r\n ? init()\r\n : destroy()\r\n }\r\n \r\n sliderContainer && resizeSwiper();\r\n sliderContainer && resize(resizeSwiper);\r\n};\r\n\r\nexport default initRelevanceSlider;\r\n","import Swiper, {Navigation, Pagination, Lazy} from \"swiper\";\r\nSwiper.use([Navigation, Pagination, Lazy]);\r\n\r\nconst initTypesSlider = () => {\r\n const sliderContainer = document.querySelector(\"[data-types-slider]\");\r\n\r\n sliderContainer && new Swiper(sliderContainer, {\r\n lazy: true,\r\n spaceBetween: 10,\r\n autoHeight: true,\r\n navigation: {\r\n nextEl: \"[data-types-slider-container] .slider-navigation__button--next\",\r\n prevEl: \"[data-types-slider-container] .slider-navigation__button--prev\",\r\n },\r\n pagination: {\r\n el: \"[data-types-slider-container] .swiper-pagination\",\r\n type: \"fraction\",\r\n },\r\n });\r\n};\r\n\r\nexport default initTypesSlider;\r\n","\r\nimport initAreasSlider from './init-areas-slider';\r\nimport initCausesSlider from './init-causes-slider';\r\nimport initDiplomaSlider from './init-diploma-slider';\r\nimport initExpertsSlider from './init-experts-slider';\r\nimport initRelevanceSlider from './init-relevance-slider';\r\nimport initTypesSlider from './init-types-slider';\r\n\r\nconst sliders = () => {\r\n initCausesSlider();\r\n initDiplomaSlider();\r\n initAreasSlider();\r\n initExpertsSlider();\r\n initRelevanceSlider();\r\n initTypesSlider();\r\n}\r\n\r\nexport default sliders;\r\n","// Функция для инициализации кнопки Показать ещё.\r\n// При вызове аргументами передаются селектор блока, в котором нужен данный функционал, а также количество элементов, видимых изначально. Например, initShowMoreButton('.program', 4);\r\n// При вёрстке кнопке добавить класс .show-button для стилизации, если нужны специфические стили для кнопки, то стилизовать каскадом от родителя. Например, \r\n// .program {\r\n// .show-button {\r\n// ... \r\n// } \r\n// }\r\n// Также кнопке ОБЯЗАТЕЛЬНО добавить атрибут data-show-button\r\n// Также ОБЯЗАТЕЛЬНО добавить атрибут data-collapse-item всем элементам из раскрывающегося списка, даже если они видимы изначально\r\n\r\nconst initShowMoreButton = (container, visibleItems) => {\r\n const itemsContainer = document.querySelector(container);\r\n if (!itemsContainer) return;\r\n const showMoreButton = itemsContainer.querySelector(\"[data-show-button]\");\r\n const items = Array.from(itemsContainer.querySelectorAll(\"[data-collapse-item]\"));\r\n const hiddenItems = items.slice(visibleItems);\r\n\r\n const onShowMoreButtonClick = () => {\r\n hiddenItems.forEach((item) => {\r\n setTimeout(() => {\r\n item.style.display = null;\r\n }, 200); \r\n item.style.opacity = 1;\r\n });\r\n showMoreButton.textContent = \"Свернуть\";\r\n showMoreButton.removeEventListener(\"click\", onShowMoreButtonClick);\r\n showMoreButton.addEventListener(\"click\", onCollapseButtonClick);\r\n }\r\n\r\n const onCollapseButtonClick = () => {\r\n hiddenItems.forEach((item) => {\r\n setTimeout(() => {\r\n item.style.display = 'none';\r\n }, 200);\r\n item.style.opacity = 0;\r\n });\r\n showMoreButton.textContent = \"Показать еще\";\r\n showMoreButton.removeEventListener(\"click\", onCollapseButtonClick);\r\n showMoreButton.addEventListener(\"click\", onShowMoreButtonClick);\r\n }\r\n \r\n if (items.length <= visibleItems) {\r\n showMoreButton?.classList.add(\"is-hidden\");\r\n return;\r\n }; \r\n \r\n if (showMoreButton) {\r\n showMoreButton.classList.remove(\"is-hidden\");\r\n showMoreButton.textContent = \"Показать еще\";\r\n }\r\n \r\n hiddenItems.forEach((item) => {\r\n item.style.display = 'none';\r\n item.style.opacity = 0;\r\n }); \r\n\r\n showMoreButton?.addEventListener(\"click\", onShowMoreButtonClick);\r\n};\r\n\r\nexport default initShowMoreButton;\r\n","export class Tabs {\r\n constructor() {\r\n this._windowWidth = window.innerWidth;\r\n this._documentClickHandler = this._documentClickHandler.bind(this);\r\n this._init();\r\n }\r\n\r\n _init() {\r\n this._initAllTabs();\r\n document.addEventListener('click', this._documentClickHandler);\r\n }\r\n\r\n _resizeObserver() {\r\n return new ResizeObserver((entries) => {\r\n for (let entry of entries) {\r\n if (entry.target.classList.contains('is-active')) {\r\n this._updateTabHeight();\r\n }\r\n }\r\n });\r\n }\r\n\r\n _documentClickHandler(evt) {\r\n const target = evt.target;\r\n if (!target.closest('[data-tabs=\"control\"]')) {\r\n return;\r\n }\r\n evt.preventDefault();\r\n const control = target.closest('[data-tabs=\"control\"]');\r\n this.openTab(control);\r\n }\r\n\r\n _initAllTabs() {\r\n const tabs = document.querySelectorAll('[data-tabs=\"parent\"]');\r\n const forLoadTabs = document.querySelectorAll('[data-tabs=\"element\"].for-load');\r\n tabs.forEach((tab) => {\r\n this._initTab(tab);\r\n });\r\n forLoadTabs.forEach((tab) => {\r\n tab.classList.remove('for-load');\r\n });\r\n }\r\n\r\n _removeAllActiveClasses(tabControlElements, tabElements) {\r\n tabElements.forEach((tab) => {\r\n tab.classList.remove('is-active');\r\n });\r\n\r\n tabControlElements.forEach((element, index) => {\r\n element.classList.remove('is-active');\r\n element.setAttribute('data-index', index);\r\n });\r\n }\r\n\r\n _setTabStartState(tab, dataHeight, tabElements, tabContentElement, tabControlElements, dataDelay) {\r\n const activeIndex = this._returnActiveIndex(tabControlElements);\r\n const blockHeight = dataHeight === 'max' ? this._returnMaxHeight(tabElements) : tabElements[activeIndex].offsetHeight;\r\n this._removeAllActiveClasses(tabControlElements, tabElements);\r\n tab.classList.add('no-transition');\r\n tabControlElements[activeIndex].classList.add('is-active');\r\n tabElements[activeIndex].classList.add('is-active');\r\n if (dataHeight !== 'unset') {\r\n tabContentElement.style.height = `${blockHeight}px`;\r\n }\r\n setTimeout(() => {\r\n if (dataDelay) {\r\n tab.classList.remove('no-transition');\r\n }\r\n }, dataDelay);\r\n }\r\n\r\n _returnActiveIndex(tabControlElements) {\r\n let activeIndex = 0;\r\n let flag = true;\r\n tabControlElements.forEach((control, index) => {\r\n if (control.classList.contains('is-active') && flag) {\r\n activeIndex = index;\r\n flag = false;\r\n }\r\n });\r\n return activeIndex;\r\n }\r\n\r\n _returnMaxHeight(tabElements) {\r\n let height = [];\r\n tabElements.forEach((element) => {\r\n height.push(element.offsetHeight);\r\n });\r\n height.sort((a, b) => a - b);\r\n return height[height.length - 1];\r\n }\r\n\r\n _returnScopeList(nodeList, parent) {\r\n const array = [];\r\n nodeList.forEach((element) => {\r\n const elementParent = element.closest('[data-tabs=\"parent\"]');\r\n if (elementParent === parent) {\r\n array.push(element);\r\n }\r\n });\r\n\r\n return array;\r\n }\r\n\r\n _returnScopeChild(nodeList, parent) {\r\n let currentChild;\r\n nodeList.forEach((element) => {\r\n const elementParent = element.closest('[data-tabs=\"parent\"]');\r\n if (elementParent === parent) {\r\n currentChild = element;\r\n }\r\n });\r\n\r\n return currentChild;\r\n }\r\n\r\n _updateTabHeight() {\r\n const activeElements = document.querySelectorAll('[data-tabs=\"element\"].is-active');\r\n activeElements.forEach((element) => {\r\n let transition = false;\r\n const parent = element.closest('[data-tabs=\"parent\"]');\r\n if (parent.closest('[data-tabs=\"element\"]')) {\r\n transition = true;\r\n }\r\n this._setTabElementHeight(element, transition);\r\n });\r\n }\r\n\r\n _setTabElementHeight(element, transition) {\r\n const parentElement = element.closest('[data-tabs=\"parent\"]');\r\n const dataHeight = parentElement.dataset.height;\r\n const contentElement = this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"content\"]'), parentElement);\r\n const tabElements = this._returnScopeList(parentElement.querySelectorAll('[data-tabs=\"element\"]'), parentElement);\r\n\r\n if (!transition) {\r\n parentElement.classList.add('no-transition');\r\n }\r\n\r\n if (dataHeight === 'max') {\r\n contentElement.style.height = `${this._returnMaxHeight(tabElements)}px`;\r\n } else if (dataHeight === 'unset') {\r\n contentElement.style.height = null;\r\n } else {\r\n contentElement.style.height = `${this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"element\"].is-active'), parentElement).offsetHeight}px`;\r\n }\r\n\r\n setTimeout(() => parentElement.classList.remove('no-transition'));\r\n }\r\n\r\n _initTab(tab) {\r\n const dataHeight = tab.dataset.height;\r\n const dataDelay = tab.dataset.delay ? tab.dataset.delay : 0;\r\n const tabContentElement = tab.querySelector('[data-tabs=\"content\"]');\r\n const tabControlElements = this._returnScopeList(tab.querySelectorAll('[data-tabs=\"control\"]'), tab);\r\n const tabElements = this._returnScopeList(tab.querySelectorAll('[data-tabs=\"element\"]'), tab);\r\n this._setTabStartState(tab, dataHeight, tabElements, tabContentElement, tabControlElements, dataDelay);\r\n if (dataHeight !== 'unset') {\r\n tabElements.forEach((element) => {\r\n this._resizeObserver().observe(element);\r\n });\r\n }\r\n setTimeout(() => {\r\n tab.classList.remove('no-transition-global');\r\n });\r\n }\r\n\r\n reInit() {\r\n this._initAllTabs();\r\n }\r\n\r\n openTab(control) {\r\n const currentIndex = control.dataset.index;\r\n const parentElement = control.closest('[data-tabs=\"parent\"]');\r\n\r\n if (control.classList.contains('is-active') || parentElement.classList.contains('no-action')) {\r\n return;\r\n }\r\n\r\n const dataDelay = parentElement.dataset.delay ? parentElement.dataset.delay : 0;\r\n const dataHeight = parentElement.dataset.height;\r\n const contentElement = parentElement.querySelector('[data-tabs=\"content\"]');\r\n const tabElements = this._returnScopeList(parentElement.querySelectorAll('[data-tabs=\"element\"]'), parentElement);\r\n\r\n const activeControl = this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"control\"].is-active'), parentElement);\r\n const activeElement = this._returnScopeChild(parentElement.querySelectorAll('[data-tabs=\"element\"].is-active'), parentElement);\r\n const currentHeight = contentElement.offsetHeight;\r\n const newHeight = tabElements[currentIndex].offsetHeight;\r\n\r\n parentElement.classList.add('no-action');\r\n document.activeElement.blur();\r\n\r\n if (activeControl) {\r\n activeControl.classList.remove('is-active');\r\n }\r\n\r\n if (activeElement) {\r\n activeElement.classList.remove('is-active');\r\n }\r\n\r\n if (currentHeight > newHeight) {\r\n setTimeout(() => {\r\n if (dataHeight !== 'max' && dataHeight !== 'unset') {\r\n contentElement.style.height = newHeight + 'px';\r\n }\r\n control.classList.add('is-active');\r\n tabElements[currentIndex].classList.add('is-active');\r\n parentElement.classList.remove('no-action');\r\n }, dataDelay);\r\n } else {\r\n if (dataHeight !== 'max' && dataHeight !== 'unset') {\r\n contentElement.style.height = newHeight + 'px';\r\n }\r\n setTimeout(() => {\r\n control.classList.add('is-active');\r\n tabElements[currentIndex].classList.add('is-active');\r\n parentElement.classList.remove('no-action');\r\n }, dataDelay);\r\n }\r\n }\r\n}\r\n","import {Tabs} from './tabs';\r\n\r\nlet tabs;\r\n\r\nconst initTabs = () => {\r\n tabs = new Tabs();\r\n // Используйте в разработке экспортируемую переменную tabs, window сделан для бэкэнда\r\n window.tabs = tabs;\r\n};\r\n\r\nexport {initTabs, tabs};\r\n","export class Accordions {\r\n constructor() {\r\n this._openHeight = 0;\r\n this._windowWidth = window.innerWidth;\r\n this._documentClickHandler = this._documentClickHandler.bind(this);\r\n this._windowResizeHandler = this._windowResizeHandler.bind(this);\r\n this._init();\r\n }\r\n\r\n _init() {\r\n this.fullUpdate();\r\n document.addEventListener('click', this._documentClickHandler);\r\n window.addEventListener('resize', this._windowResizeHandler);\r\n }\r\n\r\n _documentClickHandler(evt) {\r\n const target = evt.target;\r\n if (!target.closest('[data-accordion=\"button\"]')) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n const parent = target.closest('[data-accordion=\"parent\"]');\r\n\r\n if (parent.dataset.destroy && !window.matchMedia(parent.dataset.destroy).matches) {\r\n return;\r\n }\r\n\r\n const element = target.closest('[data-accordion=\"element\"]');\r\n if (element.classList.contains('is-active')) {\r\n this.closeAccordion(element);\r\n return;\r\n }\r\n this.openAccordion(element);\r\n }\r\n\r\n _windowResizeHandler() {\r\n if (this._windowWidth === window.innerWidth) {\r\n return;\r\n }\r\n this._windowWidth = window.innerWidth;\r\n this.updateAccordionsHeight();\r\n }\r\n\r\n closeAllAccordion(parent) {\r\n const elements = parent.querySelectorAll('[data-accordion=\"element\"]');\r\n elements.forEach((element) => {\r\n const currentParent = element.closest('[data-accordion=\"parent\"]');\r\n if (currentParent === parent) {\r\n this.closeAccordion(element);\r\n }\r\n });\r\n }\r\n\r\n updateAccordionsHeight(element = null) {\r\n if (element) {\r\n const content = element.querySelector('[data-accordion=\"content\"]');\r\n content.style.transition = 'none';\r\n content.style.maxHeight = `${content.scrollHeight}px`;\r\n setTimeout(() => {\r\n content.style.transition = null;\r\n });\r\n return;\r\n }\r\n\r\n const closeElements = document.querySelectorAll('[data-accordion=\"element\"]:not(.is-active)');\r\n\r\n closeElements.forEach((closeElement) => {\r\n const parent = closeElement.closest('[data-accordion=\"parent\"]');\r\n const content = closeElement.querySelector('[data-accordion=\"content\"]');\r\n if (parent.dataset.destroy && !window.matchMedia(parent.dataset.destroy).matches) {\r\n content.style.maxHeight = '100%';\r\n return;\r\n }\r\n content.style.maxHeight = null;\r\n });\r\n\r\n const openElements = document.querySelectorAll('[data-accordion=\"element\"].is-active');\r\n openElements.forEach((openElement) => {\r\n const content = openElement.querySelector('[data-accordion=\"content\"]');\r\n const parent = openElement.closest('[data-accordion=\"parent\"]');\r\n if (parent.dataset.destroy && !window.matchMedia(parent.dataset.destroy).matches) {\r\n content.style.maxHeight = '100%';\r\n return;\r\n }\r\n content.style.transition = 'none';\r\n content.style.maxHeight = `${content.scrollHeight}px`;\r\n setTimeout(() => {\r\n content.style.transition = null;\r\n });\r\n });\r\n }\r\n\r\n fullUpdate(parent = null, transition = false) {\r\n let openElements;\r\n if (parent) {\r\n openElements = parent.querySelectorAll('[data-accordion=\"element\"].is-active');\r\n } else {\r\n openElements = document.querySelectorAll('[data-accordion=\"element\"].is-active');\r\n }\r\n openElements.forEach((openElement) => {\r\n const innerParent = openElement.querySelector('[data-accordion=\"parent\"]');\r\n if (innerParent) {\r\n return;\r\n }\r\n this.openAccordion(openElement, transition);\r\n });\r\n this.updateAccordionsHeight();\r\n }\r\n\r\n openAccordion(element, transition = true) {\r\n const parentElement = element.closest('[data-accordion=\"parent\"]');\r\n const contentElement = element.querySelector('[data-accordion=\"content\"]');\r\n this._openHeight += contentElement.scrollHeight;\r\n\r\n if (parentElement.hasAttribute('data-single')) {\r\n this.closeAllAccordion(parentElement);\r\n }\r\n\r\n element.classList.add('is-active');\r\n if (transition) {\r\n contentElement.style.maxHeight = `${this._openHeight}px`;\r\n } else {\r\n contentElement.style.transition = 'none';\r\n contentElement.style.maxHeight = `${this._openHeight}px`;\r\n setTimeout(() => {\r\n contentElement.style.transition = null;\r\n });\r\n }\r\n\r\n if (parentElement.closest('[data-accordion=\"element\"]')) {\r\n this.openAccordion(parentElement.closest('[data-accordion=\"element\"]'), transition);\r\n return;\r\n }\r\n\r\n this._openHeight = 0;\r\n }\r\n\r\n closeAccordion(element, transition = true) {\r\n const contentElement = element.querySelector('[data-accordion=\"content\"]');\r\n if (!contentElement) {\r\n return;\r\n }\r\n element.classList.remove('is-active');\r\n if (transition) {\r\n contentElement.style.maxHeight = '0';\r\n } else {\r\n contentElement.style.transition = 'none';\r\n contentElement.style.maxHeight = '0';\r\n setTimeout(() => {\r\n contentElement.style.transition = null;\r\n });\r\n }\r\n }\r\n}\r\n","import {Accordions} from './accordions';\r\nlet accordions;\r\n\r\nconst initAccordions = () => {\r\n accordions = new Accordions();\r\n // Используйте в разработке экспортируемую переменную accordions, window сделан для бэкэнда\r\n window.accordions = accordions;\r\n};\r\n\r\nexport {initAccordions, accordions};\r\n","import {iosChecker} from './ios-checker';\r\n\r\nexport class ScrollLock {\r\n constructor() {\r\n this._iosChecker = iosChecker;\r\n this._lockClass = this._iosChecker() ? 'scroll-lock-ios' : 'scroll-lock';\r\n this._scrollTop = null;\r\n this._fixedBlockElements = document.querySelectorAll('[data-fix-block]');\r\n }\r\n\r\n _getScrollbarWidth() {\r\n return window.innerWidth - document.documentElement.clientWidth;\r\n }\r\n\r\n _getBodyScrollTop() {\r\n return (\r\n self.pageYOffset ||\r\n (document.documentElement && document.documentElement.ScrollTop) ||\r\n (document.body && document.body.scrollTop)\r\n );\r\n }\r\n\r\n disableScrolling() {\r\n this._scrollTop = document.body.dataset.scroll = document.body.dataset.scroll ? document.body.dataset.scroll : this._getBodyScrollTop();\r\n if (this._getScrollbarWidth()) {\r\n document.body.style.paddingRight = `${this._getScrollbarWidth()}px`;\r\n this._fixedBlockElements.forEach((block) => {\r\n block.style.paddingRight = `${this._getScrollbarWidth()}px`;\r\n });\r\n }\r\n document.body.style.top = `-${this._scrollTop}px`;\r\n document.body.classList.add(this._lockClass);\r\n }\r\n\r\n enableScrolling() {\r\n document.body.classList.remove(this._lockClass);\r\n window.scrollTo(0, +document.body.dataset.scroll);\r\n document.body.style.paddingRight = null;\r\n document.body.style.top = null;\r\n this._fixedBlockElements.forEach((block) => {\r\n block.style.paddingRight = null;\r\n });\r\n document.body.removeAttribute('data-scroll');\r\n this._scrollTop = null;\r\n }\r\n}\r\n\r\nwindow.scrollLock = new ScrollLock();\r\n","const SELECTORS = [\r\n 'a[href]',\r\n 'area[href]',\r\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\r\n 'select:not([disabled]):not([aria-hidden])',\r\n 'textarea:not([disabled]):not([aria-hidden])',\r\n 'button:not([disabled]):not([aria-hidden])',\r\n 'iframe',\r\n 'object',\r\n 'embed',\r\n '[contenteditable]',\r\n '[tabindex]:not([tabindex^=\"-\"])'\r\n];\r\n\r\nexport class FocusLock {\r\n constructor() {\r\n this._lockedSelector = null;\r\n this._focusableElements = null;\r\n this._endElement = null;\r\n this._selectors = SELECTORS;\r\n\r\n this._documentKeydownHandler = this._documentKeydownHandler.bind(this);\r\n }\r\n\r\n _documentKeydownHandler(evt) {\r\n const activeElement = document.activeElement;\r\n if (evt.key === 'Tab') {\r\n if (!this._focusableElements.length) {\r\n evt.preventDefault();\r\n activeElement.blur();\r\n return;\r\n }\r\n if (this._focusableElements.length === 1) {\r\n evt.preventDefault();\r\n this._focusableElements[0].focus();\r\n return;\r\n }\r\n if (this._focusableElements.length > 1 && !activeElement.closest(this._lockedSelector)) {\r\n evt.preventDefault();\r\n this._focusableElements[0].focus();\r\n return;\r\n }\r\n }\r\n if (evt.key === 'Tab' && !evt.shiftKey && activeElement === this._focusableElements[this._focusableElements.length - 1]) {\r\n evt.preventDefault();\r\n this._focusableElements[0].focus();\r\n }\r\n if (evt.key === 'Tab' && evt.shiftKey && activeElement === this._focusableElements[0]) {\r\n evt.preventDefault();\r\n this._focusableElements[this._focusableElements.length - 1].focus();\r\n }\r\n }\r\n\r\n lock(lockedSelector, startFocus = true) {\r\n this.unlock();\r\n this._lockedSelector = lockedSelector;\r\n const lockedElement = document.querySelector(this._lockedSelector);\r\n if (!lockedElement) {\r\n return;\r\n }\r\n this._focusableElements = lockedElement.querySelectorAll(this._selectors);\r\n this._endElement = document.activeElement;\r\n const startElement = lockedElement.querySelector('[data-focus]') || this._focusableElements[0];\r\n if (this._endElement) {\r\n this._endElement.blur();\r\n }\r\n if (startElement && startFocus) {\r\n startElement.focus();\r\n }\r\n document.addEventListener('keydown', this._documentKeydownHandler);\r\n }\r\n\r\n unlock(returnFocus = true) {\r\n if (this._endElement && returnFocus) {\r\n this._endElement.focus();\r\n }\r\n this._lockedSelector = null;\r\n this._focusableElements = null;\r\n this._endElement = null;\r\n document.removeEventListener('keydown', this._documentKeydownHandler);\r\n }\r\n}\r\n\r\nwindow.focusLock = new FocusLock();\r\n","import {ScrollLock} from '../../utils/scroll-lock';\r\nimport {FocusLock} from '../../utils/focus-lock';\r\n\r\nexport class Modals {\r\n constructor(settings = {}) {\r\n this._scrollLock = new ScrollLock();\r\n this._focusLock = new FocusLock();\r\n\r\n this._modalOpenElements = document.querySelectorAll('[data-open-modal]');\r\n this._stackModalElements = [];\r\n this._openedModalElement = null;\r\n this._modalName = null;\r\n this._enableScrolling = true;\r\n this._settingKey = 'default';\r\n\r\n this._settings = settings;\r\n this._preventDefault = this._settings[this._settingKey].preventDefault;\r\n this._stopPlay = this._settings[this._settingKey].stopPlay;\r\n this._lockFocus = this._settings[this._settingKey].lockFocus;\r\n this._startFocus = this._settings[this._settingKey].startFocus;\r\n this._focusBack = this._settings[this._settingKey].focusBack;\r\n this._eventTimeout = this._settings[this._settingKey].eventTimeout;\r\n this._resetScrollPos = this._settings[this._settingKey].resetScrollPos;\r\n this._openCallback = this._settings[this._settingKey].openCallback;\r\n this._closeCallback = this._settings[this._settingKey].closeCallback;\r\n\r\n this._documentKeydownHandler = this._documentKeydownHandler.bind(this);\r\n this._documentClickHandler = this._documentClickHandler.bind(this);\r\n this._modalClickHandler = this._modalClickHandler.bind(this);\r\n\r\n this._init();\r\n }\r\n\r\n _init() {\r\n if (this._modalOpenElements.length) {\r\n document.addEventListener('click', this._documentClickHandler);\r\n }\r\n }\r\n\r\n _setSettings(settingKey = this._settingKey) {\r\n if (!this._settings[settingKey]) {\r\n return;\r\n }\r\n\r\n this._preventDefault =\r\n typeof this._settings[settingKey].preventDefault === 'boolean'\r\n ? this._settings[settingKey].preventDefault\r\n : this._settings[this._settingKey].preventDefault;\r\n this._stopPlay =\r\n typeof this._settings[settingKey].stopPlay === 'boolean'\r\n ? this._settings[settingKey].stopPlay\r\n : this._settings[this._settingKey].stopPlay;\r\n this._lockFocus =\r\n typeof this._settings[settingKey].lockFocus === 'boolean'\r\n ? this._settings[settingKey].lockFocus\r\n : this._settings[this._settingKey].lockFocus;\r\n this._startFocus =\r\n typeof this._settings[settingKey].startFocus === 'boolean'\r\n ? this._settings[settingKey].startFocus\r\n : this._settings[this._settingKey].startFocus;\r\n this._focusBack =\r\n typeof this._settings[settingKey].lockFocus === 'boolean'\r\n ? this._settings[settingKey].focusBack\r\n : this._settings[this._settingKey].focusBack;\r\n this._resetScrollPos =\r\n typeof this._settings[settingKey].resetScrollPos === 'boolean'\r\n ? this._settings[settingKey].resetScrollPos\r\n : this._settings[this._settingKey].resetScrollPos;\r\n this._eventTimeout =\r\n typeof this._settings[settingKey].eventTimeout === 'number'\r\n ? this._settings[settingKey].eventTimeout\r\n : this._settings[this._settingKey].eventTimeout;\r\n this._openCallback = this._settings[settingKey].openCallback || this._settings[this._settingKey].openCallback;\r\n this._closeCallback = this._settings[settingKey].closeCallback || this._settings[this._settingKey].closeCallback;\r\n }\r\n\r\n _documentClickHandler(evt) {\r\n const target = evt.target;\r\n\r\n if (!target.closest('[data-open-modal]')) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n\r\n this._modalName = target.closest('[data-open-modal]').dataset.openModal;\r\n\r\n if (!this._modalName) {\r\n return;\r\n }\r\n\r\n this.open();\r\n }\r\n\r\n _documentKeydownHandler(evt) {\r\n const isEscKey = evt.key === 'Escape' || evt.key === 'Esc';\r\n\r\n if (isEscKey) {\r\n evt.preventDefault();\r\n this.close(document.querySelector('.modal.is-active').dataset.modal);\r\n }\r\n }\r\n\r\n _modalClickHandler(evt) {\r\n const target = evt.target;\r\n\r\n if (!target.closest('[data-close-modal]')) {\r\n return;\r\n }\r\n\r\n if (target.closest('[data-close-modal=\"back\"]')) {\r\n this.back();\r\n } else {\r\n this.close(target.closest('[data-modal]').dataset.modal);\r\n this._stackModalElements = [];\r\n }\r\n }\r\n\r\n _addListeners(modal) {\r\n modal.addEventListener('click', this._modalClickHandler);\r\n document.addEventListener('keydown', this._documentKeydownHandler);\r\n }\r\n\r\n _removeListeners(modal) {\r\n modal.removeEventListener('click', this._modalClickHandler);\r\n document.removeEventListener('keydown', this._documentKeydownHandler);\r\n }\r\n\r\n _stopInteractive(modal) {\r\n if (this._stopPlay) {\r\n modal.querySelectorAll('video, audio').forEach((el) => el.pause());\r\n modal.querySelectorAll('[data-iframe]').forEach((el) => {\r\n el.querySelector('iframe').contentWindow.postMessage('{\"event\": \"command\", \"func\": \"pauseVideo\", \"args\": \"\"}', '*');\r\n });\r\n }\r\n }\r\n\r\n _autoPlay(modal) {\r\n modal.querySelectorAll('[data-iframe]').forEach((el) => {\r\n const autoPlay = el.closest('[data-auto-play]');\r\n if (autoPlay) {\r\n el.querySelector('iframe').contentWindow.postMessage('{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*');\r\n }\r\n });\r\n }\r\n\r\n open(modalName = this._modalName) {\r\n const modal = document.querySelector(`[data-modal=\"${modalName}\"]`);\r\n\r\n if (!modal || modal.classList.contains('is-active')) {\r\n return;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickHandler);\r\n\r\n this._openedModalElement = document.querySelector('.modal.is-active');\r\n\r\n if (this._openedModalElement) {\r\n this._enableScrolling = false;\r\n this.close(this._openedModalElement.dataset.modal);\r\n }\r\n\r\n this._setSettings(modalName);\r\n modal.classList.add('is-active');\r\n\r\n if (modalName !== this._stackModalElements[this._stackModalElements.length - 1]) {\r\n this._stackModalElements.push(modalName);\r\n }\r\n\r\n if (!this._openedModalElement) {\r\n this._scrollLock.disableScrolling();\r\n }\r\n\r\n if (this._openCallback) {\r\n this._openCallback();\r\n }\r\n\r\n if (this._lockFocus) {\r\n this._focusLock.lock('.modal.is-active', this._startFocus);\r\n }\r\n\r\n if (this._resetScrollPos) {\r\n modal.scrollTo(0, 0);\r\n }\r\n\r\n setTimeout(() => {\r\n this._addListeners(modal);\r\n this._autoPlay(modal);\r\n document.addEventListener('click', this._documentClickHandler);\r\n }, this._eventTimeout);\r\n }\r\n\r\n back() {\r\n if (!this._stackModalElements.length) {\r\n return;\r\n }\r\n\r\n const activeModal = this._stackModalElements[this._stackModalElements.length - 1];\r\n const prevModal = this._stackModalElements[this._stackModalElements.length - 2];\r\n\r\n if (this._stackModalElements.length === 1) {\r\n this._stackModalElements = [];\r\n }\r\n\r\n if (prevModal) {\r\n this._stackModalElements.pop();\r\n this.open(prevModal);\r\n }\r\n\r\n this.close(activeModal);\r\n }\r\n\r\n close(modalName = this._modalName) {\r\n const modal = document.querySelector(`[data-modal=\"${modalName}\"]`);\r\n document.removeEventListener('click', this._documentClickHandler);\r\n\r\n if (!modal || !modal.classList.contains('is-active')) {\r\n return;\r\n }\r\n\r\n if (this._lockFocus) {\r\n this._focusLock.unlock(this._focusBack);\r\n }\r\n\r\n modal.classList.remove('is-active');\r\n this._removeListeners(modal);\r\n this._stopInteractive(modal);\r\n\r\n if (this._closeCallback) {\r\n this._closeCallback();\r\n }\r\n\r\n if (this._enableScrolling) {\r\n setTimeout(() => {\r\n this._scrollLock.enableScrolling();\r\n }, this._eventTimeout);\r\n }\r\n\r\n setTimeout(() => {\r\n document.addEventListener('click', this._documentClickHandler);\r\n }, this._eventTimeout);\r\n\r\n this._setSettings('default');\r\n this._enableScrolling = true;\r\n }\r\n}\r\n","import {Modals} from './modals';\r\n\r\nlet modals;\r\n\r\nconst settings = {\r\n 'default': {\r\n preventDefault: true,\r\n stopPlay: true,\r\n lockFocus: true,\r\n startFocus: false,\r\n focusBack: false,\r\n resetScrollPos: false,\r\n eventTimeout: 400,\r\n openCallback: false,\r\n closeCallback: false,\r\n },\r\n 'form-modal': {\r\n startFocus: true,\r\n },\r\n};\r\n\r\nconst initModals = () => {\r\n const modalElements = document.querySelectorAll('.modal');\r\n if (modalElements.length) {\r\n modalElements.forEach((el) => {\r\n setTimeout(() => {\r\n el.classList.remove('modal--preload');\r\n }, 100);\r\n });\r\n }\r\n\r\n modals = new Modals(settings);\r\n // Используйте в разработке экспортируемую переменную modals, window сделан для бэкэнда\r\n window.modals = modals;\r\n};\r\n\r\nexport {modals, initModals};\r\n","import initCounter from \"./init-counter\";\r\nimport setDate from \"./set-date\";\r\nimport setTimer from \"./set-timer\";\r\n\r\nexport class ChangeDate {\r\n constructor(options) {\r\n this.start = new Date(options.start);\r\n this.end = new Date(options.end);\r\n this.period = options.period;\r\n this.data = options.data;\r\n this.count = Math.floor((Date.now() - this.start) / 864e5);\r\n this._init();\r\n }\r\n\r\n _init() {\r\n if (this.end == \"Invalid Date\") {\r\n let i = this.count;\r\n\r\n while (i >= this.period) {\r\n i -= this.period;\r\n }\r\n\r\n this.start = new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * i);\r\n this.end = new Date(this.start.getTime() + 24 * 60 * 60 * 1000 * this.period);\r\n }\r\n\r\n setDate(this.end);\r\n initCounter(this.start, this.end, this.data);\r\n setTimer(this.end);\r\n }\r\n}\r\n","const initCounter = (start, finish, data) => {\r\n const counters = document.querySelectorAll(\"[data-counter]\"); \r\n \r\n function decreaseQuantity(start, finish, total, final, rate) {\r\n let startDate = start, // Начальное дата\r\n finishDate = finish, // Конечная дата\r\n totalMembers = total, // Начальное число мест\r\n finalNunber = final, // Конечное число мест\r\n ratio = rate, // На какое количество уменьшаем\r\n shift,\r\n stepDay,\r\n number,\r\n formatNumber;\r\n \r\n // Возвращает пробелы в числах\r\n function format(value) {\r\n return new Intl.NumberFormat().format(value);\r\n }\r\n \r\n // Склонение окончания в тексте\r\n function declination(number, txt) {\r\n var cases = [2, 0, 1, 1, 1, 2];\r\n return txt[\r\n number % 100 > 4 && number % 100 < 20\r\n ? 2\r\n : cases[number % 10 < 5 ? number % 10 : 5]\r\n ];\r\n }\r\n \r\n // Количество дней прошедших с даты старта счетчика\r\n stepDay = Math.floor((Date.now() - startDate) / 864e5);\r\n \r\n if (stepDay <= 0) {\r\n shift = 0;\r\n } else {\r\n shift = ratio * stepDay;\r\n }\r\n \r\n if (stepDay >= (finishDate - startDate) / 864e5) {\r\n number = finalNunber;\r\n } else {\r\n number = totalMembers - shift;\r\n }\r\n \r\n formatNumber =\r\n format(number) + \" \" + declination(number, [\"место\", \"места\", \"мест\"]);\r\n \r\n return formatNumber;\r\n }\r\n \r\n counters.length &&\r\n counters.forEach(\r\n (counter) =>\r\n (counter.innerHTML = decreaseQuantity(\r\n start,\r\n finish,\r\n data.main.total,\r\n data.main.final,\r\n data.main.rate\r\n ))\r\n );\r\n };\r\n \r\n export default initCounter;\r\n ","const setDate = (date) => {\r\n const fields = document.querySelectorAll(\"[data-date]\"); \r\n const arrMonths = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];\r\n\r\n fields.forEach(field => {\r\n field.innerHTML = `${date.getDate()} ${arrMonths[date.getMonth()]}`\r\n })\r\n}\r\n\r\nexport default setDate;","const setTimer = (date) => {\r\n const timerElement = document.querySelector(\"[data-timer]\");\r\n if (!timerElement) return;\r\n\r\n (function timer() {\r\n // При изменении конечной даты в баннере вставляем сюда дату в формате (год, месяц[от 0 до 11], число, часы[от 0 до 23 и вычитаем разницу для Москвы], минуты, секунды)\r\n const utcDate = new Date(\r\n Date.UTC(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate() - 1,\r\n 23 - 3,\r\n 59,\r\n 0\r\n )\r\n );\r\n const countDownDate = new Date(utcDate).getTime();\r\n const timeInterval = setInterval(timer, 60000);\r\n const now = new Date().getTime();\r\n const distance = countDownDate - now;\r\n const days = Math.floor(distance / (1000 * 60 * 60 * 24));\r\n const hours = Math.floor(\r\n (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)\r\n );\r\n const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\r\n\r\n const getMinutesWord = (minutes) => {\r\n let result = \"минут\";\r\n if (minutes > 10 && minutes < 20) {\r\n return result;\r\n }\r\n const lastDigit = Number(String(minutes).slice(-1));\r\n if (lastDigit === 0 || lastDigit >= 5) {\r\n return result;\r\n }\r\n if (lastDigit === 1) {\r\n return result + \"а\";\r\n }\r\n return result + \"ы\";\r\n };\r\n\r\n const getHoursWord = (hours) => {\r\n let result = \"часов\";\r\n if (hours > 10 && hours < 20) {\r\n return result;\r\n }\r\n const lastDigit = Number(String(hours).slice(-1));\r\n if (lastDigit === 0 || lastDigit >= 5) {\r\n return result;\r\n }\r\n if (lastDigit === 1) {\r\n return \"час\";\r\n }\r\n return \"часа\";\r\n };\r\n\r\n const getDaysWord = (days) => {\r\n let result = \"дней\";\r\n if (days > 10 && days < 20) {\r\n return result;\r\n }\r\n const lastDigit = Number(String(days).slice(-1));\r\n if (lastDigit === 0 || lastDigit >= 5) {\r\n return result;\r\n }\r\n if (lastDigit === 1) {\r\n return \"день\";\r\n }\r\n return \"дня\";\r\n };\r\n\r\n timerElement.innerHTML = `${days} ${getDaysWord(\r\n days\r\n )} ${hours} ${getHoursWord(\r\n hours\r\n )} ${minutes} ${getMinutesWord(minutes)}`;\r\n\r\n if (distance < 0) {\r\n clearInterval(timeInterval);\r\n timerElement.innerHTML = `0 дней 0 часов 0 минут`;\r\n }\r\n })();\r\n};\r\n\r\nexport default setTimer;\r\n","const initRegions = () => {\r\n const link = \"https://2024.api.tgu-dpo.ru/regions/GetRegions\";\r\n\r\n /* Инициализация поля регионы */\r\n async function initRegionsOnline() {\r\n try {\r\n let response = await fetch(link),\r\n result = await response.json();\r\n\r\n function addRegionsSelect(id) {\r\n let regionsSelect = $(id);\r\n regionsSelect.html(\"\").select2();\r\n\r\n result.forEach(function (el) {\r\n let selected = false,\r\n option = new Option(el.name, el.id, false, selected);\r\n\r\n option.accessKey = el.id;\r\n regionsSelect.append(option);\r\n });\r\n\r\n regionsSelect.val(null);\r\n regionsSelect.select2({\r\n placeholder: \"* Ваш регион\",\r\n });\r\n }\r\n\r\n addRegionsSelect(\"#Regions\");\r\n addRegionsSelect(\"#Regions-modal\");\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n \r\n initRegionsOnline();\r\n};\r\n\r\nexport default initRegions;\r\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n if (this.insertedCount) {\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;\n }\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask, ReturnMasked extends Masked=InstanceType> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDate=MaskedDate> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedNumber=MaskedNumber> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedEnum=MaskedEnum> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRange=MaskedRange> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedPattern=MaskedPattern> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDynamic=MaskedDynamic> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask, ReturnMasked=Opts extends MaskedOptions ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(\"Masked class is not found for provided mask \" + nOpts.mask + \", appropriate module needs to be imported manually before creating mask.\");\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","class InputHistory {\n constructor() {\n this.states = [];\n this.currentIndex = 0;\n }\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\nInputHistory.MAX_LENGTH = 100;\n\nexport { InputHistory as default };\n","import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n /** Can skip chars */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n tailShift: 0,\n skip: false\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.inserted += details.inserted;\n this.rawInserted += details.rawInserted;\n this.tailShift += details.tailShift;\n this.skip = this.skip || details.skip;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n get consumed() {\n return Boolean(this.rawInserted) || this.skip;\n }\n equals(details) {\n return this.inserted === details.inserted && this.tailShift === details.tailShift && this.rawInserted === details.rawInserted && this.skip === details.skip;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, objectIncludes, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!this.optionsIsChanged(opts)) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (inserted === void 0) {\n inserted = '';\n }\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n optionsIsChanged(opts) {\n return !objectIncludes(this, opts);\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n details.aggregate(tailDetails);\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n const details = new ChangeDetails({\n inserted: this.char,\n rawInserted: isResolved ? this.char : ''\n });\n this._value = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n pad(flags) {\n return this._appendPlaceholder();\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details = new ChangeDetails();\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n if (this.isFilled || this.isOptional) return new ChangeDetails();\n this.isFilled = true;\n return new ChangeDetails({\n inserted: this.placeholderChar\n });\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n repeat,\n ...bOpts\n } = normalizeOpts(this.blocks[bName]); // TODO type Opts\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n repeat,\n parent: this\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n if (!state) {\n this.reset();\n return;\n }\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {\n var _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n details.aggregate(b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length));\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n pad(flags) {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, b => details.aggregate(b.pad(flags)));\n return details;\n }\n}\nMaskedPattern.DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!ch) details.skip = !this.isComplete;\n return [ch, details];\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.autofix || this.value.length + 1 > this.maxLength) return super._appendCharRaw(ch, flags);\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const [minstr, maxstr] = this.boundaries(this.value + ch);\n if (Number(maxstr) < this.from) return super._appendCharRaw(fromStr[this.value.length], flags);\n if (Number(minstr) > this.to) {\n if (!flags.tail && this.autofix === 'pad' && this.value.length + 1 < this.maxLength) {\n return super._appendCharRaw(fromStr[this.value.length], flags).aggregate(this._appendCharRaw(ch, flags));\n }\n return super._appendCharRaw(toStr[this.value.length], flags);\n }\n return super._appendCharRaw(ch, flags);\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n pad(flags) {\n const details = new ChangeDetails();\n if (this.value.length === this.maxLength) return details;\n const value = this.value;\n const padLength = this.maxLength - this.value.length;\n if (padLength) {\n this.reset();\n for (let i = 0; i < padLength; ++i) {\n details.aggregate(super._appendCharRaw('0', flags));\n }\n\n // append tail\n value.split('').forEach(ch => this._appendCharRaw(ch));\n }\n return details;\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\nconst DefaultPattern = 'd{.}`m{.}`Y';\n\n// Make format and parse required when pattern is provided\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n static extractPatternOptions(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = opts;\n return {\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n };\n }\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super(MaskedDate.extractPatternOptions({\n ...MaskedDate.DEFAULTS,\n ...opts\n }));\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n optionsIsChanged(opts) {\n return super.optionsIsChanged(MaskedDate.extractPatternOptions(opts));\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n mask: Date,\n pattern: DefaultPattern,\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = this.currentMask.value.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null || _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n get autofix() {\n return this.currentMask ? this.currentMask.autofix : this._autofix;\n }\n set autofix(autofix) {\n this._autofix = autofix;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\n/** Currently chosen mask */\n/** Currently chosen mask */\n/** Compliled {@link Masked} options */\n/** Chooses {@link Masked} depending on input value */\nMaskedDynamic.DEFAULTS = {\n ...Masked.DEFAULTS,\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport ChangeDetails from '../core/change-details.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport './base.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super({\n ...MaskedEnum.DEFAULTS,\n ...opts\n }); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: enum_,\n ...eopts\n } = opts;\n if (enum_) {\n const lengths = enum_.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = enum_;\n }\n super._update(eopts);\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const matchFrom = Math.min(this.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n const matches = this.enum.filter(e => this.matchValue(e, this.unmaskedValue + ch, matchFrom));\n if (matches.length) {\n if (matches.length === 1) {\n this._forEachBlocksInRange(0, this.value.length, (b, bi) => {\n const mch = matches[0][bi];\n if (bi >= this.value.length || mch === b.value) return;\n b.reset();\n b._appendChar(mch, flags);\n });\n }\n const d = super._appendCharRaw(matches[0][this.value.length], flags);\n if (matches.length === 1) {\n matches[0].slice(this.unmaskedValue.length).split('').forEach(mch => d.aggregate(super._appendCharRaw(mch)));\n }\n return d;\n }\n return new ChangeDetails({\n skip: !this.isComplete\n });\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n // just drop tail\n return new ContinuousTailDetails('', fromPos);\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (fromPos === toPos) return new ChangeDetails();\n const matchFrom = Math.min(super.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n let pos;\n for (pos = fromPos; pos >= 0; --pos) {\n const matches = this.enum.filter(e => this.matchValue(e, this.value.slice(matchFrom, pos), matchFrom));\n if (matches.length > 1) break;\n }\n const details = super.remove(pos, toPos);\n details.tailShift += pos - fromPos;\n return details;\n }\n get isComplete() {\n return this.enum.indexOf(this.value) >= 0;\n }\n}\n/** Match enum value */\nMaskedEnum.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n matchValue: (estr, istr, matchFrom) => estr.indexOf(istr, matchFrom) === matchFrom\n};\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nvar _MaskedNumber;\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const oldValue = this._value;\n this._value += ch;\n const num = this.number;\n let accepted = !isNaN(num);\n let skip = false;\n if (accepted) {\n let fixedNum;\n if (this.min != null && this.min < 0 && this.number < this.min) fixedNum = this.min;\n if (this.max != null && this.max > 0 && this.number > this.max) fixedNum = this.max;\n if (fixedNum != null) {\n if (this.autofix) {\n this._value = this.format(fixedNum, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n skip || (skip = oldValue === this._value && !flags.tail); // if not changed on tail it's still ok to proceed\n } else {\n accepted = false;\n }\n }\n accepted && (accepted = Boolean(this._value.match(this._numberRegExp)));\n }\n let appendDetails;\n if (!accepted) {\n this._value = oldValue;\n appendDetails = new ChangeDetails();\n } else {\n appendDetails = new ChangeDetails({\n inserted: this._value.slice(oldValue.length),\n rawInserted: skip ? '' : ch,\n skip\n });\n }\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\n_MaskedNumber = MaskedNumber;\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n ...Masked.DEFAULTS,\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [_MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern mask */\nclass RepeatBlock extends MaskedPattern {\n get repeatFrom() {\n var _ref;\n return (_ref = Array.isArray(this.repeat) ? this.repeat[0] : this.repeat === Infinity ? 0 : this.repeat) != null ? _ref : 0;\n }\n get repeatTo() {\n var _ref2;\n return (_ref2 = Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) != null ? _ref2 : Infinity;\n }\n constructor(opts) {\n super(opts);\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n var _ref3, _ref4, _this$_blocks;\n const {\n repeat,\n ...blockOpts\n } = normalizeOpts(opts); // TODO type\n this._blockOpts = Object.assign({}, this._blockOpts, blockOpts);\n const block = createMask(this._blockOpts);\n this.repeat = (_ref3 = (_ref4 = repeat != null ? repeat : block.repeat) != null ? _ref4 : this.repeat) != null ? _ref3 : Infinity; // TODO type\n\n super._update({\n mask: 'm'.repeat(Math.max(this.repeatTo === Infinity && ((_this$_blocks = this._blocks) == null ? void 0 : _this$_blocks.length) || 0, this.repeatFrom)),\n blocks: {\n m: block\n },\n eager: block.eager,\n overwrite: block.overwrite,\n skipInvalid: block.skipInvalid,\n lazy: block.lazy,\n placeholderChar: block.placeholderChar,\n displayChar: block.displayChar\n });\n }\n _allocateBlock(bi) {\n if (bi < this._blocks.length) return this._blocks[bi];\n if (this.repeatTo === Infinity || this._blocks.length < this.repeatTo) {\n this._blocks.push(createMask(this._blockOpts));\n this.mask += 'm';\n return this._blocks[this._blocks.length - 1];\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n for (let bi = (_this$_mapPosToBlock$ = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index) != null ? _this$_mapPosToBlock$ : Math.max(this._blocks.length - 1, 0), block, allocated;\n // try to get a block or\n // try to allocate a new block if not allocated already\n block = (_this$_blocks$bi = this._blocks[bi]) != null ? _this$_blocks$bi : allocated = !allocated && this._allocateBlock(bi); ++bi) {\n var _this$_mapPosToBlock$, _this$_mapPosToBlock, _this$_blocks$bi, _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n if (blockDetails.skip && allocated) {\n // remove the last allocated block and break\n this._blocks.pop();\n this.mask = this.mask.slice(1);\n break;\n }\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n _trimEmptyTail(fromPos, toPos) {\n var _this$_mapPosToBlock2, _this$_mapPosToBlock3;\n if (fromPos === void 0) {\n fromPos = 0;\n }\n const firstBlockIndex = Math.max(((_this$_mapPosToBlock2 = this._mapPosToBlock(fromPos)) == null ? void 0 : _this$_mapPosToBlock2.index) || 0, this.repeatFrom, 0);\n let lastBlockIndex;\n if (toPos != null) lastBlockIndex = (_this$_mapPosToBlock3 = this._mapPosToBlock(toPos)) == null ? void 0 : _this$_mapPosToBlock3.index;\n if (lastBlockIndex == null) lastBlockIndex = this._blocks.length - 1;\n let removeCount = 0;\n for (let blockIndex = lastBlockIndex; firstBlockIndex <= blockIndex; --blockIndex, ++removeCount) {\n if (this._blocks[blockIndex].unmaskedValue) break;\n }\n if (removeCount) {\n this._blocks.splice(lastBlockIndex - removeCount + 1, removeCount);\n this.mask = this.mask.slice(removeCount);\n }\n }\n reset() {\n super.reset();\n this._trimEmptyTail();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._trimEmptyTail(fromPos, toPos);\n return removeDetails;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos == null && this.repeatTo === Infinity) return Infinity;\n return super.totalInputPositions(fromPos, toPos);\n }\n get state() {\n return super.state;\n }\n set state(state) {\n this._blocks.length = state._blocks.length;\n this.mask = this.mask.slice(0, this._blocks.length);\n super.state = state;\n }\n}\nIMask.RepeatBlock = RepeatBlock;\n\nexport { RepeatBlock as default };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as RepeatBlock } from './masked/repeat.js';\nimport './core/action-details.js';\nimport './controls/input-history.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","import IMask from \"imask\";\r\nimport vanillaToast from \"vanilla-toast\";\r\nimport {modals} from \"../modals/init-modals\";\r\n\r\nconst initForm = () => {\r\n const citizenRequest = \"https://2024.api.tgu-dpo.ru/citizenrequest/NewInternationalCommerceRequest\";\r\n const crmRequest = \"https://sigmaedu.ru/bpla/handler.php\";\r\n\r\n /* Валидаторы */\r\n const validators = {\r\n requried: function (value, error) {\r\n if (!value || value.length === 0) {\r\n error.message = \"Это поле необходимо заполнить\";\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n phone: function (value, error) {\r\n if (value.length === 18) {\r\n return true;\r\n } else {\r\n error.message = \"Некорректный номер\";\r\n return false;\r\n }\r\n },\r\n email: function (value, error) {\r\n if (/.+@.+\\..+/.test(value)) {\r\n return true;\r\n } else {\r\n error.message = \"Некорректный email\";\r\n return false;\r\n }\r\n },\r\n };\r\n\r\n /* Добавление ошибок валидации */\r\n function showError(error, field) {\r\n if (error.message) {\r\n var errorContainer = document.createElement(\"div\");\r\n errorContainer.textContent = error.message;\r\n errorContainer.classList.add(\"form__error\");\r\n field.appendChild(errorContainer);\r\n }\r\n }\r\n\r\n /* Удаление ошибок валидации */\r\n function deleteErrors(form) {\r\n form.querySelectorAll(\".form__error\").forEach(function (el) {\r\n el.remove();\r\n });\r\n form.querySelectorAll(\".form__invalid\").forEach(function (el) {\r\n el.classList.remove(\"form__invalid\");\r\n });\r\n }\r\n\r\n /* Валидация формы */\r\n function validate(form) {\r\n let result = true;\r\n\r\n Array.from(form.querySelectorAll(\".form__field\")).forEach(function (\r\n formField\r\n ) {\r\n let error = {},\r\n control = formField.querySelector(\"select, input, textarea\");\r\n\r\n if (formField.querySelector(\".form__required\")) {\r\n if (!validators.requried(control.value, error)) {\r\n showError(error, formField);\r\n control.classList.add(\"form__invalid\");\r\n result = false;\r\n return;\r\n }\r\n }\r\n\r\n if (control.type === \"tel\") {\r\n if (!validators.phone(control.value, error)) {\r\n showError(error, formField);\r\n control.classList.add(\"form__invalid\");\r\n result = false;\r\n }\r\n }\r\n\r\n if (control.type === \"email\") {\r\n if (!validators.email(control.value, error)) {\r\n showError(error, formField);\r\n control.classList.add(\"form__invalid\");\r\n result = false;\r\n }\r\n }\r\n });\r\n\r\n let invalidField = form.querySelector(\".form__invalid\");\r\n if (invalidField) {\r\n invalidField.scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"center\",\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function formSubmitCommerce(data) {\r\n fetch(crmRequest, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json;charset=utf-8\" },\r\n body: JSON.stringify(data),\r\n })\r\n .then(function () {})\r\n .catch(function () {});\r\n }\r\n\r\n /* Получения cookie */\r\n function getCookie(cname) {\r\n let name = cname + \"=\",\r\n decodedCookie = decodeURIComponent(document.cookie),\r\n ca = decodedCookie.split(\";\");\r\n\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n\r\n while (c.charAt(0) === \" \") {\r\n c = c.substring(1);\r\n }\r\n\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /* Отправка формы */\r\n async function send(form, e) {\r\n let sendBtn = form.querySelector('button[type=\"submit\"], input[type=\"submit\"]');\r\n \r\n e.preventDefault();\r\n deleteErrors(form);\r\n\r\n let data = {};\r\n\r\n if (!validate(form)) {\r\n return;\r\n }\r\n\r\n Array.from(new FormData(form)).forEach(function (formElement) {\r\n let key = formElement[0];\r\n let value = formElement[1];\r\n\r\n if (key == \"Region\") {\r\n data[key] = returnRegionName(\"#Regions option\", value);\r\n data[\"RegionId\"] = value;\r\n } else {\r\n data[key] = value;\r\n } \r\n }); \r\n\r\n sendBtn.disabled = true;\r\n\r\n let url = document.location.href,\r\n paramsStartIndex = url.indexOf('?');\r\n\r\n // UTM\r\n if (paramsStartIndex > -1) {\r\n url\r\n .slice(paramsStartIndex + 1, url.length)\r\n .split('&')\r\n .map(function (utmString) {\r\n return utmString.split('=');\r\n })\r\n .forEach(function (utmMark) {\r\n var key = utmMark[0];\r\n key = key[0].toUpperCase() + key.slice(1, key.length);\r\n var value = utmMark[1];\r\n value =\r\n value.indexOf('#') > -1\r\n ? value.slice(0, value.indexOf('#'))\r\n : value;\r\n data[key] = value;\r\n });\r\n } else {\r\n if (getCookie(\"utm_tags\")) {\r\n getCookie(\"utm_tags\")\r\n .slice(paramsStartIndex + 1, getCookie(\"utm_tags\").length)\r\n .split(\"&\")\r\n .map(function (utmString) {\r\n return utmString.split(\"=\");\r\n })\r\n .forEach(function (utmMark) {\r\n var key = utmMark[0];\r\n key = key[0].toUpperCase() + key.slice(1, key.length);\r\n var value = utmMark[1];\r\n value =\r\n value.indexOf(\"#\") > -1\r\n ? value.slice(0, value.indexOf(\"#\"))\r\n : value;\r\n data[key] = value;\r\n });\r\n }\r\n }\r\n\r\n // Добавление ссылки на РВР\r\n const programList = form.querySelector(\"[name='Program']\")?.children,\r\n programHidden = form.querySelector(\".program-hidden\");\r\n\r\n if (programList && !programHidden) {\r\n [...programList].forEach((item) => {\r\n if (data[\"Program\"] == item.value) {\r\n if (item.getAttribute(\"linkrvr\") != \"undefined\") {\r\n data[\"LinkRVR\"] = item.getAttribute(\"linkrvr\");\r\n }\r\n }\r\n });\r\n } else {\r\n if (programHidden.getAttribute(\"linkrvr\") != \"undefined\") {\r\n data[\"LinkRVR\"] = programHidden.getAttribute(\"linkrvr\");\r\n }\r\n }\r\n\r\n // Roistat\r\n let roistatCookie = getCookie(\"roistat_visit\"); \r\n if (!!roistatCookie) {\r\n data[\"RoistatCookie\"] = roistatCookie;\r\n }\r\n\r\n data[\"Landing\"] = url.split(\"?\")[0] || url;\r\n \r\n // Временный костыль для отправки формы\r\n data['Place'] = \"\";\r\n\r\n fetch(citizenRequest, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json;charset=utf-8\" },\r\n body: JSON.stringify(data),\r\n })\r\n .then((response) => response.json())\r\n .then(function () {\r\n sendBtn.disabled = false;\r\n\r\n /* Отправка формы в АМО */\r\n formSubmitCommerce(data);\r\n\r\n /* Вывод модального окна */\r\n\r\n //FLOW-12385\r\n /* if (data[\"Program\"] == \"Программирование дронов: основы и практика на Python\") {\r\n onSuccessModal(\"https://steps.2035.university/track/55411b87-ad7b-4408-8ce6-932ac8f99fe4\");\r\n } else if (data[\"LinkRVR\"]) {\r\n onSuccessModal(data[\"LinkRVR\"]);\r\n } else {*/\r\n modals.open(\"submit-modal\");\r\n //}\r\n\r\n /* Метрики */\r\n ym(97685832,'reachGoal','submit_form');\r\n VK.Goal('lead');\r\n VK.Retargeting.Event('lead');\r\n _tmr.push({ type: 'reachGoal', id: 3529836, goal: 'lead'});\r\n\r\n /* Сброс формы */\r\n form.reset();\r\n $('#Education').val('').trigger('change');\r\n $('#Education-modal').val('').trigger('change');\r\n $('#City').val('').trigger('change');\r\n $('#City-modal').val('').trigger('change');\r\n $('#Program').val('').trigger('change');\r\n $('#Program-modal').val('').trigger('change');\r\n $('#Regions').val('').trigger('change');\r\n $('#Regions-modal').val('').trigger('change');\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n sendBtn.disabled = false;\r\n vanillaToast.error(\r\n \"Пожалуйста, проверьте ваше соединение с сетью или повторите попытку позже\",\r\n { duration: 3000, fadeDuration: 500 }\r\n );\r\n });\r\n }\r\n\r\n /* Вывод модального окна для редиректа */\r\n function onSuccessModal(urlRvR) {\r\n const timer = document.querySelector('.submit-modalRVR--timer');\r\n\r\n if (timer) {\r\n modals.open(\"submit-modalRVR\");\r\n setTimerRedirect(timer);\r\n\r\n setTimeout(() => {\r\n const newTab = window.open(urlRvR, \"_blank\");\r\n if (newTab) {\r\n newTab.focus();\r\n } else {\r\n window.location.assign(urlRvR);\r\n }\r\n }, 15000);\r\n }\r\n } \r\n\r\n /* Таймер редиректа */\r\n function setTimerRedirect(el) {\r\n if (!el) {\r\n console.error(\"Не передан элемент\");\r\n return;\r\n }\r\n const interval = setInterval(() => {\r\n if (el.textContent === \"0\" || Number(el.textContent) < 1) {\r\n clearInterval(interval);\r\n return;\r\n }\r\n el.textContent = Number(el.textContent) - 1;\r\n }, 1000);\r\n }\r\n\r\n /* Установка форм */\r\n function setForm(selector) {\r\n var form = document.querySelector(selector);\r\n\r\n if (!form) {\r\n return;\r\n }\r\n\r\n form.addEventListener(\"submit\", function (e) {\r\n send(form, e);\r\n });\r\n\r\n onFormFilling(form, () => {\r\n ym(97685832,'reachGoal','FormStart');\r\n VK.Retargeting.Event('Initiate_Checkout');\r\n _tmr.push({ type: 'reachGoal', id: 3529836, goal: 'initiate_checkout'});\r\n });\r\n }\r\n\r\n /* Блокировка кнопки отправки формы */\r\n function setFormCheckbox(arr, btn) {\r\n try {\r\n arr.forEach((item) => {\r\n item.addEventListener(\"change\", function () {\r\n if (!arr.find((checkbox) => !checkbox.checked)) {\r\n btn.removeAttribute(\"disabled\");\r\n } else {\r\n btn.setAttribute(\"disabled\", \"disabled\");\r\n }\r\n });\r\n });\r\n } catch (e) {}\r\n }\r\n\r\n /* Начало заполнения формы */\r\n function onFormFilling(form, callback) {\r\n const controls = form.querySelectorAll(\"input, select, textarea\");\r\n let changed = false;\r\n controls.forEach((control) => {\r\n $(control).one(\"blur\", (e) => {\r\n if (!changed) {\r\n callback(e);\r\n changed = true;\r\n }\r\n });\r\n });\r\n }\r\n\r\n /* Возвращает название региона для отправки формы */\r\n function returnRegionName(id, region) {\r\n let regionList = document.querySelectorAll(id);\r\n\r\n for (let i = 0; i < regionList.length; i++) {\r\n if (region == regionList[i].value) {\r\n return regionList[i].textContent;\r\n }\r\n }\r\n }\r\n\r\n /* Пользователь находится на сайте больше 30 сек */\r\n setTimeout(() => {\r\n VK.Retargeting.Event('PageView30sec');\r\n }, 30000);\r\n\r\n /* Вызов функций */\r\n let phoneInputs = document.querySelectorAll(\"input[type='tel']\");\r\n\r\n phoneInputs.length && phoneInputs.forEach((phoneInput) => {\r\n new IMask(phoneInput, {\r\n mask: \"+{7} (000) 000-00-00\",\r\n });\r\n });\r\n\r\n /* Инициализация функций */\r\n setForm(\"#form\");\r\n setForm(\"#form-modal\");\r\n setFormCheckbox(\r\n [\r\n document.querySelector(\"#form-agreement\"),\r\n document.querySelector(\"#form-consent\"),\r\n ],\r\n document.querySelector(\"#form-btn\")\r\n );\r\n setFormCheckbox(\r\n [\r\n document.querySelector(\"#form-agreement-modal\"),\r\n document.querySelector(\"#form-consent-modal\"),\r\n ],\r\n document.querySelector(\"#form-btn-modal\")\r\n );\r\n};\r\n\r\nexport default initForm;\r\n","const getPageName = () => {\r\n const segments = new URL(window.location.href).pathname.split(\"/\");\r\n const last = segments.pop() || segments.pop();\r\n return last.toLocaleLowerCase();\r\n}\r\n\r\nexport default getPageName;\r\n","import getPageName from \"../../get-page-name\";\r\nimport initDropDownsPrograms from \"./init-drop-down-programs-offline\";\r\n\r\nasync function netRequests() {\r\n const PROGRAMS = {\r\n DPO: {\r\n json: \"/files/Offline.json\",\r\n },\r\n };\r\n \r\n const programsHidden = document.querySelectorAll(\".program-hidden\");\r\n\r\n async function operatorPrograms(Operator) {\r\n let cities = [];\r\n\r\n const arr = await getJson(Operator.DPO.json);\r\n\r\n /* Добавление всех возможных городов доступных программ */ \r\n if (programsHidden.length) {\r\n const currentProgram = arr.find((item) => item.shortName === getPageName()); \r\n\r\n if (currentProgram) { \r\n cities = cities.concat(currentProgram.cities);\r\n cities = returnCitiesList(cities);\r\n }\r\n } else {\r\n arr.forEach((item) => {\r\n cities = cities.concat(item.cities);\r\n });\r\n\r\n cities = returnCitiesList(cities); \r\n }\r\n\r\n /* Инициализация поля Город */\r\n initCities(cities);\r\n\r\n return arr;\r\n }\r\n\r\n /* Возвращает массив всех доступных город без дублей */\r\n function returnCitiesList(arr) {\r\n let arr_cities = [];\r\n\r\n arr.forEach(item => {\r\n arr_cities.push(item.city);\r\n })\r\n \r\n return Array.from(new Set(arr_cities));\r\n }\r\n\r\n /* Запрос на получение json */\r\n async function getJson(patch) {\r\n if (!patch) return;\r\n\r\n let response = await fetch(patch);\r\n let result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n /* Добавление городов в форму */\r\n function initCities(cities) { \r\n function addCitiesSelect(id) {\r\n let citySelect = $(id);\r\n\r\n cities.forEach(function (el) { \r\n let selected = false,\r\n option = new Option(el, el, false, selected);\r\n citySelect.append(option);\r\n });\r\n\r\n citySelect.val(null);\r\n citySelect.select2({\r\n placeholder: \"* Ваш город\",\r\n language: {\r\n noResults: function () {\r\n return \"Данная программа пока недоступна\";\r\n },\r\n },\r\n });\r\n }\r\n\r\n addCitiesSelect(\"#City\");\r\n addCitiesSelect(\"#City-modal\");\r\n };\r\n\r\n return await operatorPrograms(PROGRAMS);\r\n}\r\n\r\nasync function initNetRequests() {\r\n return await netRequests();\r\n}\r\n\r\nexport default initNetRequests;\r\n","async function netRequests() {\r\n const PROGRAMS = {\r\n DPO: {\r\n json: \"/files/Online.json\",\r\n },\r\n };\r\n\r\n async function operatorPrograms(Operator) {\r\n const arr = await getJson(Operator.DPO.json);\r\n let programs = [];\r\n\r\n arr.forEach((item) => {\r\n programs = programs.concat(item.name);\r\n }); \r\n\r\n return programs;\r\n }\r\n\r\n /* Запрос на получение json */\r\n async function getJson(patch) {\r\n if (!patch) return;\r\n\r\n let response = await fetch(patch);\r\n let result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n return await operatorPrograms(PROGRAMS);\r\n}\r\n\r\nasync function initNetRequests() {\r\n return await netRequests();\r\n}\r\n\r\nexport default initNetRequests;\r\n","import getPageName from '../../get-page-name';\r\n\r\nconst initDropDownsPrograms = (pref = \"\", requestPrograms) => {\r\n const ProgramsHidden = document.querySelectorAll(\".program-hidden\");\r\n const Program = document.getElementById(`Program${pref}`);\r\n const City = document.getElementById(`City${pref}`);\r\n\r\n /* Выбор города и программ в зависимости от города */\r\n if (City !== null) {\r\n City.onchange = (e) => {\r\n /* Фильтрация общего массива в зависимости от выбранного города */\r\n const selectedCity = e.target.value;\r\n\r\n /* Клонирование программ */\r\n let programsDublicate = structuredClone(requestPrograms);\r\n\r\n if (ProgramsHidden.length) {\r\n programsDublicate.forEach(item => {\r\n if (item.shortName == getPageName()) {\r\n item.cities.forEach(i => {\r\n if (i.city === selectedCity) {\r\n if (i.link) {\r\n addRVRLinkProgram(i.link);\r\n }\r\n }\r\n }) \r\n }\r\n })\r\n } else {\r\n /* Список программ для выбранного города */\r\n let programsFiltredByCity = [];\r\n \r\n programsDublicate.forEach((i) => {\r\n i.cities.forEach((k) => {\r\n if (k.city === selectedCity) {\r\n i.linkrvr = k.link;\r\n programsFiltredByCity.push(i);\r\n }\r\n });\r\n });\r\n \r\n renderOptions(programsFiltredByCity);\r\n }\r\n };\r\n }\r\n\r\n /* Добавление ссылки на РВР для сайтов программ */\r\n function addRVRLinkProgram(linkrvr) {\r\n ProgramsHidden.forEach(program => {\r\n program.setAttribute(\"linkrvr\", linkrvr);\r\n })\r\n }\r\n\r\n /* Создаем нужные options */\r\n const renderOptions = (arr) => {\r\n [...Program.children].map((item, index) => {\r\n if (index > 0) {\r\n item.remove();\r\n }\r\n });\r\n\r\n arr.forEach((item) => {\r\n let option = new Option(item.name, item.name, false, false);\r\n option.setAttribute(\"linkrvr\", item.linkrvr);\r\n Program.append(option);\r\n });\r\n }\r\n}\r\n\r\nexport default initDropDownsPrograms;\r\n","import initRegions from \"./init-regions\";\r\nimport initForm from \"./init-form\";\r\nimport initNetRequestsOffline from \"./offline/init-net-requests-offline\";\r\nimport initNetRequestsOnline from \"./online/init-net-requests-online\";\r\nimport initSelects from \"./init-selects\";\r\nimport initDropDownsProgramsOffline from \"./offline/init-drop-down-programs-offline\";\r\n\r\nconst Form = () => {\r\n initForm();\r\n initSelects();\r\n initRegions();\r\n loadForm();\r\n\r\n async function loadForm() {\r\n // Онлайн и офлайн программы\r\n const ONLINE__PROGRAMS = await initNetRequestsOnline(); \r\n const OFFLINE__PROGRAMS = await initNetRequestsOffline(); \r\n\r\n logicTrainingFormat();\r\n logicTrainingFormat(\"-modal\");\r\n\r\n /* Логика для главной страницы по формату обучения */\r\n function logicTrainingFormat(pref = \"\") {\r\n const FORMAT = document.getElementById(`TrainingFormat${pref}`);\r\n\r\n // Если не главная, то вызываем логику для страниц офлайн программ\r\n if (!FORMAT) {\r\n initDropDownsProgramsOffline(pref, OFFLINE__PROGRAMS); \r\n return; \r\n }\r\n\r\n const CITY = document.getElementById(`City${pref}`);\r\n const REGIONS = document.getElementById(`Regions${pref}`);\r\n const PROGRAM = document.getElementById(`Program${pref}`);\r\n const CITY__REQUIRED = CITY.parentElement.querySelector(\".city-required\");\r\n const REGIONS__REQUIRED =\r\n REGIONS.parentElement.querySelector(\".regions-required\");\r\n\r\n FORMAT.onchange = function (e) {\r\n let target = e.target;\r\n\r\n if (target.value == \"online\") {\r\n REGIONS.parentElement.style.display = \"block\";\r\n CITY.parentElement.style.display = \"none\";\r\n PROGRAM.parentElement.style.display = \"block\";\r\n\r\n REGIONS__REQUIRED.classList.add(\"form__required\");\r\n if (CITY__REQUIRED.classList.contains(\"form__required\")) {\r\n CITY__REQUIRED.classList.remove(\"form__required\");\r\n }\r\n\r\n $(`#City${pref}`).val(\"\").trigger(\"change\");\r\n $(`#Regions${pref}`).val(\"\").trigger(\"change\");\r\n $(`#Program${pref}`).val(\"\").trigger(\"change\");\r\n\r\n renderOptions(ONLINE__PROGRAMS, PROGRAM);\r\n } else {\r\n REGIONS.parentElement.style.display = \"none\";\r\n CITY.parentElement.style.display = \"block\";\r\n PROGRAM.parentElement.style.display = \"block\";\r\n\r\n CITY__REQUIRED.classList.add(\"form__required\");\r\n if (REGIONS__REQUIRED.classList.contains(\"form__required\")) {\r\n REGIONS__REQUIRED.classList.remove(\"form__required\");\r\n }\r\n\r\n $(`#City${pref}`).val(\"\").trigger(\"change\");\r\n $(`#Regions${pref}`).val(\"\").trigger(\"change\");\r\n $(`#Program${pref}`).val(\"\").trigger(\"change\");\r\n\r\n [...PROGRAM.children].map((item, index) => {\r\n if (index > 0) {\r\n item.remove();\r\n }\r\n });\r\n\r\n initDropDownsProgramsOffline(pref, OFFLINE__PROGRAMS);\r\n }\r\n };\r\n }\r\n }\r\n\r\n /* Создаем нужные options */\r\n const renderOptions = (arr, field) => { \r\n [...field.children].map((item, index) => {\r\n if (index > 0) {\r\n item.remove();\r\n }\r\n });\r\n\r\n arr.forEach((item) => { \r\n let option = new Option(item, item, false, false);\r\n field.append(option);\r\n }); \r\n }\r\n};\r\n\r\nexport default Form;\r\n","const initSelects = () => {\r\n const selectors = [\r\n {\r\n id: \"#Education\",\r\n placeholder: \"* Текущий уровень вашего образования\",\r\n },\r\n {\r\n id: \"#Education-modal\",\r\n placeholder: \"* Текущий уровень вашего образования\",\r\n },\r\n {\r\n id: \"#Program\",\r\n placeholder: \"* Программа обучения\",\r\n },\r\n {\r\n id: \"#Program-modal\",\r\n placeholder: \"* Программа обучения\",\r\n },\r\n {\r\n id: \"#TrainingFormat\",\r\n placeholder: \"* Формат обучения\",\r\n },\r\n {\r\n id: \"#TrainingFormat-modal\",\r\n placeholder: \"* Формат обучения\",\r\n },\r\n ];\r\n\r\n selectors.forEach((item) => {\r\n let selector = $(item.id),\r\n message = \"\",\r\n placeholder = item.placeholder;\r\n\r\n selector.select2({\r\n placeholder: placeholder,\r\n language: {\r\n noResults: function () {\r\n return message;\r\n },\r\n },\r\n escapeMarkup: function (markup) {\r\n return markup;\r\n },\r\n });\r\n\r\n selector.val(null).trigger(\"change\");\r\n });\r\n};\r\n\r\nexport default initSelects;\r\n","/* Стили */\r\nimport '../css/style.scss';\r\n\r\n/* Скрипты */\r\nimport {iosVhFix} from './utils/ios-vh-fix';\r\nimport sliders from './modules/sliders/sliders';\r\nimport initShowMoreButton from './modules/init-show-more-button';\r\nimport {initTabs} from './modules/tabs/init-tabs';\r\nimport {initAccordions} from './modules/accordion/init-accordion';\r\nimport {initModals} from './modules/modals/init-modals';\r\nimport renderExpertsModal from './modules/render-experts-modal';\r\nimport initChangeDate from './modules/date/init-change-date';\r\nimport initBanner from './modules/init-banner';\r\nimport initWidjet from './modules/init-widget';\r\nimport initWidgetEvents from './modules/init-widget-events';\r\nimport UtmTags from './modules/UtmTags';\r\nimport Form from './modules/form';\r\n\r\nwindow.addEventListener('DOMContentLoaded', () => {\r\n iosVhFix();\r\n Form();\r\n initModals();\r\n\r\n // все скрипты должны быть в обработчике 'DOMContentLoaded', но не все в 'load'\r\n // в load следует добавить скрипты, не участвующие в работе первого экрана\r\n window.addEventListener('load', () => {\r\n sliders();\r\n initShowMoreButton(\"[data-programs]\", 4);\r\n initShowMoreButton(\"[data-course-program]\", 6);\r\n initTabs();\r\n initAccordions();\r\n renderExpertsModal();\r\n initChangeDate();\r\n initBanner();\r\n initWidjet();\r\n initWidgetEvents();\r\n UtmTags();\r\n });\r\n});\r\n","import {iosChecker} from './ios-checker';\r\n\r\nconst iosVhFix = () => {\r\n if (!(!!window.MSInputMethodContext && !!document.documentMode)) {\r\n if (iosChecker()) {\r\n let vh = window.innerHeight * 0.01;\r\n document.documentElement.style.setProperty('--vh', `${vh}px`);\r\n\r\n window.addEventListener('resize', function () {\r\n vh = window.innerHeight * 0.01;\r\n document.documentElement.style.setProperty('--vh', `${vh}px`);\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport {iosVhFix};\r\n","const initBanner = () => {\r\n const banner = document.querySelector(\"[data-banner]\"),\r\n form = document.querySelector(\".form\"),\r\n hero = document.querySelector(\".hero\");\r\n if (!banner || !form || !hero) return;\r\n const trackScroll = () => {\r\n const scrolled = window.pageYOffset;\r\n if (scrolled < hero.offsetTop + hero.clientHeight) {\r\n banner.style.transform = \"translateY(150%)\";\r\n } else if (scrolled + document.documentElement.clientHeight > form.offsetTop) {\r\n banner.style.transform = \"translateY(150%)\";\r\n } else if (scrolled < form.offsetTop) {\r\n banner.style.transform = \"translateY(0)\";\r\n }\r\n };\r\n window.addEventListener(\"scroll\", trackScroll);\r\n };\r\n \r\n export default initBanner;\r\n ","const renderExpertsModal = () => {\r\n const pageBody = document.querySelector('body');\r\n const expertsModal = document.querySelector('[data-modal=\"experts-modal\"]');\r\n if (!expertsModal) return;\r\n\r\n const modalTitle = expertsModal.querySelector('b');\r\n const modalDescription = expertsModal.querySelector('p');\r\n const modalImage = expertsModal.querySelector('.experts__modal-img img');\r\n const modalFeatures = expertsModal.querySelector('.experts__modal-features');\r\n\r\n const onCardClick = (evt) => {\r\n if (evt.target.closest('[data-open-modal=\"experts-modal\"]')) {\r\n const targetCard = evt.target.closest('.experts__slide');\r\n const cardName = targetCard.querySelector('b').outerHTML;\r\n const cardDescription = targetCard.querySelector('p').textContent;\r\n const cardImage = targetCard.querySelector('img');\r\n const cardfeaturesList = targetCard.querySelector('.experts__slide-features');\r\n\r\n modalTitle.innerHTML = cardName;\r\n modalDescription.textContent = cardDescription;\r\n modalImage.src = cardImage.src;\r\n modalImage.alt = cardImage.alt;\r\n if (cardfeaturesList) {\r\n const features = Array.from(cardfeaturesList.querySelectorAll('li')).map((feature) => feature.outerHTML); \r\n modalFeatures.innerHTML = features.join(' ');\r\n };\r\n }\r\n };\r\n\r\n pageBody.addEventListener('click', onCardClick);\r\n};\r\n\r\nexport default renderExpertsModal;\r\n","import { ChangeDate } from \"./ChangeDate\";\r\n\r\nconst initChangeDate = () => {\r\n new ChangeDate({\r\n start: \"2024-04-14\",\r\n end: \"\",\r\n period: 14,\r\n data: {\r\n main: {\r\n total: 150,\r\n final: 80,\r\n rate: 2,\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport default initChangeDate;\r\n","const initWidjet = () => {\r\n const widget = document.querySelector(\"[data-widget]\");\r\n if (!widget) return;\r\n \r\n const trackScroll = () => {\r\n window.scrollY > 300\r\n ? widget.style.opacity = \"1\"\r\n : widget.style.opacity = \"0\";\r\n };\r\n \r\n trackScroll();\r\n window.addEventListener(\"scroll\", trackScroll);\r\n};\r\n\r\nexport default initWidjet;\r\n","const initWidgetEvents = () => {\r\n const widget = document.querySelector(\"[data-widget]\");\r\n if (!widget) return;\r\n const widgetIcon = widget.querySelector(\"[data-widget-icon]\");\r\n const widgetLink = widget.querySelector(\"[data-widget-link]\");\r\n const isHoverableDevice = window.matchMedia(\"(hover: hover)\");\r\n\r\n isHoverableDevice.matches\r\n ? widgetIcon.addEventListener(\"mouseenter\", () => ym(97685832,\"reachGoal\",\"hover_widget\"))\r\n : widgetIcon.addEventListener(\"click\", () => ym(97685832,\"reachGoal\",\"hover_widget\"));\r\n\r\n widgetLink.addEventListener(\"click\", () => ym(97685832,\"reachGoal\",\"click_widget\"));\r\n}\r\n\r\nexport default initWidgetEvents;\r\n","const UtmTags = () => {\r\n const url = document.location.href,\r\n paramsStartIndex = url.indexOf(\"?\"),\r\n metaTags = url.slice(paramsStartIndex + 1, url.length);\r\n \r\n /* Установка cookie */\r\n function setCookie(name, value, options = {}) {\r\n options = {\r\n path: \"/\",\r\n // при необходимости добавьте другие значения по умолчанию\r\n ...options,\r\n };\r\n\r\n if (options.expires instanceof Date) {\r\n options.expires = options.expires.toUTCString();\r\n }\r\n\r\n let updatedCookie =\r\n encodeURIComponent(name) + \"=\" + encodeURIComponent(value);\r\n\r\n for (let optionKey in options) {\r\n updatedCookie += \"; \" + optionKey;\r\n let optionValue = options[optionKey];\r\n if (optionValue !== true) {\r\n updatedCookie += \"=\" + optionValue;\r\n }\r\n }\r\n\r\n document.cookie = updatedCookie;\r\n }\r\n\r\n if (paramsStartIndex > -1) {\r\n // Добавление UTM меток в cookie\r\n if (metaTags.includes(\"category\") || metaTags.includes(\"level\") || metaTags.includes(\"format\")) {\r\n console.log(\"repeatCookie\");\r\n return;\r\n }\r\n\r\n setCookie(\"utm_tags\", metaTags, { \"max-age\": 86400 });\r\n\r\n console.log(\"setCookie\");\r\n }\r\n};\r\n\r\nexport default UtmTags;\r\n"],"names":["VanillaToast","this","queue","TaskQueue","cancellationTokens","element","constants","default","className","fadeDuration","fadeInterval","duration","closeButton","immediately","success","info","warning","error","item","prototype","initElement","selector","container","document","createElement","toastBox","text","setAttribute","innerHTML","appendChild","getElementById","seletor","containter","body","_setStyle","cancel","length","cancelAll","i","show","option","callback","self","cancellationToken","CancellationToken","enqueue","next","fadeStep","Math","min","style","display","s","opacity","timeoutId","timeoutCallback","removeEventListener","cancelHandler","_fade","_hide","shift","dispose","clearTimeout","addEventListener","isCancellationRequested","setTimeout","register","push","preset","propertyName","undefined","step","interval","fade","Number","cancelCallbacks","copiedCallbacks","slice","isExecuting","dequeueAndExecute","job","module","exports","vanillaToast","call","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","hasOwnProperty","iosChecker","includes","navigator","platform","userAgent","isObject","constructor","extend","target","src","keys","forEach","ssrDocument","activeElement","blur","nodeName","querySelector","querySelectorAll","createEvent","initEvent","children","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","matchMedia","requestAnimationFrame","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","set","value","makeReactive","arrayFlat","arr","res","el","isArray","arrayFilter","filter","$","context","html","trim","indexOf","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","args","trigger","on","Methods","addClass","classes","classNames","map","c","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","arguments","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","each","index","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","methodName","writable","nextTick","delay","now","toString","to","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","max","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","priority","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","slideTo","internal","initial","Error","indexAsNumber","isFinite","animating","preventInteractionOnTransition","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","isH","t","_immediateVirtual","_swiperImmediateVirtual","behavior","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","getTranslate","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","dummyEventAttached","dummyEventListener","touchEvents","device","domMethod","swiperMethod","start","passiveListeners","passive","move","end","updateOnWindowResize","ios","android","attachEvents","bind","detachEvents","isGridEnabled","addClasses","suffixes","entries","prefix","resultClasses","prepareClasses","fill","containerModifierClass","join","emitContainerClasses","removeClasses","init","resizeObserver","createElements","url","virtualTranslate","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","update","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","overrides","ua","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getDevice","isSafari","toLowerCase","isWebView","test","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","options","wrapper","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","m","prototypeGroup","protoMethod","observer","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","position","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Lazy","lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$slideEl","$images","$imageEl","background","$pictureEl","sourceEl","$source","slideOriginalIndex","load","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","swiperOffset","inView","swiperCoord","sticky","func","currentInnerWidth","sliderContainer","resizeSwiper","resize","initCausesSlider","initAreasSlider","initExpertsSlider","initRelevanceSlider","initTypesSlider","visibleItems","itemsContainer","showMoreButton","from","hiddenItems","onShowMoreButtonClick","onCollapseButtonClick","tabs","Tabs","_classCallCheck","_windowWidth","_documentClickHandler","_init","_initAllTabs","_this","_step","_iterator","_createForOfIteratorHelper","done","_updateTabHeight","err","f","control","openTab","_this2","forLoadTabs","tab","_initTab","tabControlElements","tabElements","dataHeight","tabContentElement","dataDelay","_returnActiveIndex","blockHeight","_returnMaxHeight","_removeAllActiveClasses","concat","flag","nodeList","array","currentChild","_this3","_setTabElementHeight","parentElement","dataset","contentElement","_returnScopeChild","_returnScopeList","_this4","_setTabStartState","_resizeObserver","currentIndex","activeControl","accordions","Accordions","_openHeight","_windowResizeHandler","fullUpdate","closeAccordion","openAccordion","updateAccordionsHeight","content","maxHeight","scrollHeight","closeElement","openElement","hasAttribute","closeAllAccordion","ScrollLock","_iosChecker","_lockClass","_scrollTop","_fixedBlockElements","pageYOffset","ScrollTop","scroll","_getBodyScrollTop","_getScrollbarWidth","block","scrollLock","SELECTORS","FocusLock","_lockedSelector","_focusableElements","_endElement","_selectors","_documentKeydownHandler","focus","shiftKey","lockedSelector","startFocus","unlock","lockedElement","startElement","returnFocus","focusLock","modals","Modals","settings","_scrollLock","_focusLock","_modalOpenElements","_stackModalElements","_openedModalElement","_modalName","_enableScrolling","_settingKey","_settings","_preventDefault","_stopPlay","stopPlay","_lockFocus","lockFocus","_startFocus","_focusBack","focusBack","_eventTimeout","eventTimeout","_resetScrollPos","resetScrollPos","_openCallback","openCallback","_closeCallback","closeCallback","_modalClickHandler","settingKey","openModal","open","close","modal","pause","contentWindow","postMessage","modalName","_setSettings","disableScrolling","lock","_addListeners","_autoPlay","activeModal","prevModal","pop","_removeListeners","_stopInteractive","enableScrolling","ChangeDate","period","count","finish","counters","date","fields","arrMonths","field","getDate","getMonth","counter","final","rate","stepDay","formatNumber","startDate","finishDate","totalMembers","finalNunber","Intl","NumberFormat","format","txt","declination","decreaseQuantity","main","timerElement","timer","utcDate","UTC","getFullYear","countDownDate","timeInterval","setInterval","distance","days","hours","minutes","result","lastDigit","String","getDaysWord","getHoursWord","getMinutesWord","clearInterval","setTimer","_regeneratorRuntime","r","Symbol","iterator","asyncIterator","u","toStringTag","define","configurable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","mark","setPrototypeOf","awrap","async","Promise","reverse","charAt","stop","rval","handle","catch","delegateYield","asyncGeneratorStep","isString","str","_obj$constructor","pick","reduce","acc","_ref","DIRECTION","escapeRegExp","objectIncludes","arrA","arrB","dateA","dateB","regexpA","RegExp","regexpB","ActionDetails","startChangePos","oldValue","oldSelection","insertedCount","cursorPos","inserted","removedCount","removed","head","substring","tail","removeDirection","IMask","InputMask","maskedClass","mask","MaskedRegExp","MaskedPattern","MaskedDate","MaskedNumber","MaskedDynamic","Masked","Function","MaskedFunction","console","warn","normalizeOpts","instanceOpts","_mask","startsWith","createMask","nOpts","MaskedClass","MaskElement","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","HTMLMaskElement","input","_onKeydown","_onInput","_onBeforeinput","_onCompositionEnd","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","bindEvents","drop","click","commit","_handlers","redo","keyCode","metaKey","ctrlKey","undo","isComposing","selectionChange","inputType","unbindEvents","HTMLInputMaskElement","setSelectionRange","HTMLContenteditableMaskElement","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","setEnd","lastChild","removeAllRanges","addRange","InputHistory","states","currentState","isEmpty","state","MAX_LENGTH","steps","clear","masked","_listeners","_value","_unmaskedValue","_rawInputValue","_saveSelection","_onChange","_onDrop","_onFocus","_onClick","_onUndo","_onRedo","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","_this$masked","updateOptions","unmaskedValue","updateControl","rawInputValue","typedValue","typedValueEquals","displayValue","_unbindEvents","_fireEvent","ev","listeners","_cursorChanging","_changingCursorPos","pos","_selection","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","_fireChangeEvents","_historyChanging","restOpts","updateMask","updateOpts","optionsIsChanged","updateCursor","_delayUpdateCursor","_abortUpdateCursor","_inputEvent","isComplete","nearestInputPos","hIndex","details","oldRawValue","raw","doCommit","_applyHistoryState","ChangeDetails","prep","rawInserted","tailShift","aggregate","consumed","Boolean","equals","ContinuousTailDetails","appendTo","_appendPlaceholder","beforePos","shiftChar","_update","DEFAULTS","_initialized","withValueRefresh","flags","parse","extractInput","isFilled","totalInputPositions","fromPos","toPos","extractTail","appendTail","_appendCharRaw","ch","_appendChar","checkTail","consistentState","doPrepareChar","autofix","noFixState","fixDetails","pad","chDetails","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","_appendEager","_beforeTailState","doPrepare","ci","doSkipInvalid","eager","_refreshing","rawInput","ret","runIsolated","_isolated","skipInvalid","prepare","prepareChar","validate","deleteCount","tailPos","eagerRemove","forceDirection","valLength","tval","EMPTY_VALUES","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","_blocks","remainChars","cstate","chunkShiftPos","PatternCursor","_log","ok","_blockStartPos","popState","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","isFixed","pushLeftBeforeInput","pushLeftBeforeRequired","isOptional","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","PatternFixedDefinition","isUnmasking","_isRawInput","maxPos","appendEager","isResolved","char","PatternInputDefinition","placeholderChar","displayChar","maskOpts","currentMaskFlags","boundPos","_flags$_beforeTailSta","DEFAULT_DEFINITIONS","definitions","_rebuildMask","defs","exposeBlock","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","bNames","bName","expose","repeat","bOpts","blockOpts","maskedBlock","RepeatBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_matchFrom","maxLength","patternOpts","fromStr","padStart","toStr","sameCharsCount","boundaries","minstr","maxstr","placeholder","num","padEnd","padLength","extractPatternOptions","patternBlocks","GET_DEFAULT_BLOCKS","Y","isDateExist","day","month","year","currentMask","exposeMask","compiledMasks","_overwrite","_eager","_skipInvalid","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","doDispatch","_flags$_beforeTailSta2","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","_autofix","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","weight","i1","i2","MaskedEnum","enum","enum_","eopts","lengths","requiredLength","optionalLength","matchFrom","matchValue","mch","_MaskedNumber","estr","istr","_updateRegExps","allowNegative","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","parts","prepCh","allowPositive","_separatorsCount","extendOnSeparators","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","appendDetails","accepted","fixedNum","UNMASKED_RADIX","beforeTailValue","beforeTailSeparatorsCount","_findSeparatorAround","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","dropFractional","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toLocaleString","useGrouping","maximumFractionDigits","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","pipe","repeatFrom","Infinity","repeatTo","_ref2","_ref3","_ref4","_this$_blocks","_blockOpts","_allocateBlock","allocated","_this$_mapPosToBlock$","_this$_blocks$bi","_trimEmptyTail","_this$_mapPosToBlock2","_this$_mapPosToBlock3","firstBlockIndex","lastBlockIndex","removeCount","globalThis","_arrayLikeToArray","citizenRequest","crmRequest","validators","requried","message","phone","email","showError","errorContainer","deleteErrors","form","formField","invalidField","scrollIntoView","formSubmitCommerce","fetch","headers","JSON","stringify","getCookie","cname","ca","decodeURIComponent","cookie","_send","_callee","_form$querySelector","sendBtn","paramsStartIndex","programList","programHidden","roistatCookie","_context","FormData","formElement","returnRegionName","utmString","utmMark","toUpperCase","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","response","json","ym","VK","Goal","Retargeting","Event","_tmr","goal","log","_next","_throw","setForm","_x","_x2","send","controls","changed","one","onFormFilling","setFormCheckbox","btn","checkbox","checked","region","regionList","phoneInputs","phoneInput","segments","URL","toLocaleLowerCase","_asyncToGenerator","netRequests","_netRequests","_callee3","PROGRAMS","programsHidden","operatorPrograms","_operatorPrograms","returnCitiesList","getJson","_getJson","initCities","_context3","cities","addCitiesSelect","citySelect","Option","select2","language","noResults","_callee2","patch","_context2","arr_cities","city","Set","Operator","currentProgram","DPO","shortName","getPageName","_initNetRequests","_callee4","_context4","programs","pref","requestPrograms","ProgramsHidden","Program","City","onchange","selectedCity","programsDublicate","structuredClone","linkrvr","link","program","programsFiltredByCity","renderOptions","_toConsumableArray","_loadForm","ONLINE__PROGRAMS","OFFLINE__PROGRAMS","logicTrainingFormat","FORMAT","CITY","REGIONS","PROGRAM","CITY__REQUIRED","REGIONS__REQUIRED","initDropDownsProgramsOffline","initNetRequestsOnline","initNetRequestsOffline","initForm","escapeMarkup","markup","_initRegionsOnline","addRegionsSelect","regionsSelect","accessKey","t0","initRegionsOnline","initRegions","loadForm","modalElements","MSInputMethodContext","documentMode","vh","iosVhFix","Form","banner","hero","sliders","initShowMoreButton","pageBody","expertsModal","modalTitle","modalDescription","modalImage","modalFeatures","targetCard","cardName","outerHTML","cardDescription","cardImage","cardfeaturesList","alt","features","feature","renderExpertsModal","scrolled","widget","trackScroll","initWidjet","widgetIcon","widgetLink","initWidgetEvents","metaTags","_objectSpread","expires","toUTCString","updatedCookie","encodeURIComponent","optionKey","optionValue","setCookie","UtmTags"],"sourceRoot":""}