{"version":3,"file":"static/chunks/pages/_site/[city]/internet/yandex-stanciya-db23e6918e6c8d5d.js","mappings":"uFACKA,OAAOC,SAAWD,OAAOC,UAAY,IAAIC,KAAK,CAC7C,yCACA,WACE,OAAO,EAAQ,W,mSCyCVC,EAAuB,SAACC,GACjC,IACMC,EAAcC,KAAKC,KAAKH,EADR,GAGtB,OAAQI,MAAMC,KAAKD,MAAMH,IAAcK,QAAO,SAACC,EAAQC,EAAGC,GAEtD,OADAF,EAAOT,KAAKW,EAAMF,EAAOE,EAFN,GAFD,KAKXF,IACR,KAUMG,EAAyB,SAACV,GACnC,IACMW,EAAsBZ,EAAqBC,GAEjD,OADAW,EAAoBC,QAFD,GAGZD,GAYEE,EAA8B,SAACC,GACxC,IAAMC,EAAc,GAGdC,EAAcF,EAAkBG,OAChCC,EAAoBnB,EAAqBiB,GACxCG,GAAsC,OAAjBD,EAAiB,MAe7C,OAbIJ,EAAkBG,QAClBF,EAAYjB,KAAKqB,IAGpB,OAAGD,EAAkBE,QAAQC,SAAQ,SAACZ,GAC/BO,EAAcE,EAAkBT,IAChCM,EAAYjB,KAAKqB,GACZ,EAAmBV,EAZhB,GAYiCO,EAbpC,IAeME,EAAkBT,EAdrB,GAcsCO,OAI/CD,GAaEO,EAAyB,Y,IAAGC,EAAS,EAATA,UAAWC,EAAU,EAAVA,WAEhD,OAAOpB,MAAMqB,EAAAA,IAA+BC,KAAKH,GAAWG,KAAKF,EADhD,IAYRG,EAAwB,SAACC,GAClC,IACMC,EAAuBD,EADK,EAK5BE,EACW,EADXA,EAEY,EAFZA,EAGW,GAHXA,EAIM,EAJNA,EAKM,EALNA,EAMQ,EAGd,MAAO,CACHA,IAAK1B,MAAMyB,GAAsBH,KAbf,GAamCA,KAAKI,EAAYA,GACjEJ,KAAKI,EAAYA,GAAkBJ,KAAKI,EAAcA,GAC3DC,QAAQ,OAAI3B,MAAMyB,IAAuBG,KAAI,SAACxB,EAAGyB,G,OAAUA,OAASP,KAdpD,EACM,KA4BjBQ,EAAoB,Y,IAAGC,EAAG,EAAHA,IAAKC,EAAE,EAAFA,GAAIC,EAAI,EAAJA,KAAMC,EAAS,EAATA,UAE/C,IAAK,IAAM7B,KAAO6B,EACd,GAAIA,EAAU7B,GACV,MAAO,GAA+B,OAA5B0B,EAAM1B,EAAM,IAAM2B,EAAKC,GAGzC,MAAO,GAAmB,OAAhBF,EAAMC,EAAKC,IAmCZE,EAAqB,SAACC,EAAeC,GAG9C,OAFoC,kBAAXD,EAAEE,KAAoBF,EAAEE,KAAO,MACnB,kBAAXD,EAAEC,KAAoBD,EAAEC,KAAO,MAchDC,EAAoB,Y,IAAGC,EAAQ,EAARA,SAAUC,EAAK,EAALA,MAAO,EAAF,EAAEC,OAAAA,OAAM,IAAG,EAAAC,EAAAA,GAAAA,WAAkB,EAC5EH,GAAYA,KACZI,EAAAA,EAAAA,IAAc,CACVC,MAAOC,EAAAA,GAAAA,QACPC,SAAUC,EAAAA,GAAAA,QACVN,OAAAA,EACAD,MAAAA,KCnNJQ,EAAW,EAQFC,EAAwB,CACjC,CAAEC,OAAQ,GAAe,OAAZC,EAAAA,GAAY,2BAA0BC,KAAM,2GAAuBrB,GAAIiB,KACpF,CAAEE,OAAQ,GAAe,OAAZC,EAAAA,GAAY,iBAAgBC,KAAM,+JAAmCrB,GAAIiB,KACtF,CAAEE,OAAQ,GAAe,OAAZC,EAAAA,GAAY,gBAAeC,KAAM,8KAAmCrB,GAAIiB,MAS5EK,EAA0B,CACnC,CAAEC,MAAO,GAAIC,MAAO,2DAAexB,GAAIiB,MAS9BQ,EAAqC,CAC9C,CAAEN,OAAQ,GAAmB,OAAhBO,EAAAA,GAAgB,WAAUC,WAAY,GAAmB,OAAhBD,EAAAA,GAAgB,YAAWL,KAAM,yHAAgCrB,GAAIiB,IAAYhB,KAAM,QAC7I,CAAEkB,OAAQ,GAAmB,OAAhBO,EAAAA,GAAgB,eAAcC,WAAY,GAAmB,OAAhBD,EAAAA,GAAgB,gBAAeL,KAAM,qIAA6BrB,GAAIiB,IAAYhB,KAAM,YAClJ,CAAEkB,OAAQ,GAAmB,OAAhBO,EAAAA,GAAgB,YAAWC,WAAY,GAAmB,OAAhBD,EAAAA,GAAgB,aAAYL,KAAM,2GAAuBrB,GAAIiB,IAAYhB,KAAM,QACtI,CAAEkB,OAAQ,GAAmB,OAAhBO,EAAAA,GAAgB,YAAWC,WAAY,GAAmB,OAAhBD,EAAAA,GAAgB,aAAYL,KAAM,uJAAgCrB,GAAIiB,IAAYhB,KAAM,QAC/I,CAAEkB,OAAQ,GAAmB,OAAhBO,EAAAA,GAAgB,aAAYC,WAAY,GAAmB,OAAhBD,EAAAA,GAAgB,cAAaL,KAAM,2GAAuBrB,GAAIiB,IAAYhB,KAAM,UAS/H2B,EAA0B,CACnC,CACIC,KAAMC,EAAAA,GAAAA,cACN9B,GAAIiB,IACJc,SAAU,2DACVtB,MAAO,CACHuB,QAAS,GAAe,OAAZZ,EAAAA,GAAY,sBACxBa,OAAQ,GAAe,OAAZb,EAAAA,GAAY,uBAE3BD,OAAQ,GAAe,OAAZC,EAAAA,GAAY,gBACvBc,kBAAkB,EAClBV,MAAO,2BAAY,OAALW,EAAAA,GAAK,wIACnBC,QAAS,gMAA0C,OAALD,EAAAA,GAAK,uNAC/C,gBAAW,OAALA,EAAAA,GAAK,uSAEnB,CACIN,KAAMC,EAAAA,GAAAA,aACN9B,GAAIiB,IACJc,SAAU,4CACVZ,OAAQ,GAAe,OAAZC,EAAAA,GAAY,wBACvBI,MAAO,+KACPY,QAAS,0DAA+BD,OAAlBA,EAAAA,GAAK,4DAAkB,OAALA,EAAAA,GAAK,8EAEjD,CACIN,KAAMC,EAAAA,GAAAA,YACN9B,GAAIiB,IACJoB,UAAW,GAAe,OAAZjB,EAAAA,GAAY,0BAC1BD,OAAQ,GAAe,OAAZC,EAAAA,GAAY,mBACvBI,MAAO,0FACPY,QAAS,6HAAyCD,OAAhBA,EAAAA,GAAK,0DAAkBG,OAAPH,EAAAA,IAAoCA,OAA7BG,EAAAA,GAAM,8GAA4B,OAALH,EAAAA,GAAK,wCAC3FI,YAAa,CACTC,QAAQ,EACRP,QAAQ,IAGhB,CACIJ,KAAMC,EAAAA,GAAAA,OACN9B,GAAIiB,IACJc,SAAU,kCACVZ,OAAQ,GAAe,OAAZC,EAAAA,GAAY,WACvBI,MAAO,oGACPY,QAAS,yHAA2CD,OAAjBA,EAAAA,GAAK,2DAAiB,OAALA,EAAAA,GAAK,8CACzDI,YAAa,CACTC,QAAQ,KAWPC,EAAoB,CAC7BC,YAAY,EACZC,UAAU,EACVC,MAAO,UASEC,EAAqB,CAC9BC,aAAc,EACdC,YAAY,EACZC,eAAe,GASNC,GAA0B,QACnCH,aAAc,EACdI,UAAU,EACVC,cAAe,KACZV,GASMW,EAAwC,CACjDC,UAAW,CAAC,wFAAmB,4EAAiB,8FAAoB,gHAAuB,0FAC3FC,YAAa,CACT,uTACA,2GACA,8GACA,gPACA,uGAEJC,eAAgB,CACZxD,IAAK,GAAe,OAAZqB,EAAAA,GAAY,iBACpBnB,KAAM,QAEVuD,YAAa,CACTC,QAAS,GAAe,OAAZrC,EAAAA,GAAY,qBACxBsC,SAAU,QAEdC,SAAU,CACN,CAAC,qKAAoC,2GAAuB,kIAC5D,CAAC,wJAAiC,6JAAiC,8JACnE,CAAC,sIAA8B,4IAA+B,mJAC9D,CAAC,0JAAmC,sIAA8B,iLAClE,CAAC,oKAAmC,2IAA8B,8KAEtEC,gBAAiB,CAAC,UAAW,UAAW,UAAW,UAAW,WAC9DC,aAAc3E,EAAuB,CAAEC,UAAW,IAAKC,WAAY,WACnE0E,UAAW5E,EAAuB,CAAEC,UAAW4E,EAAAA,GAAAA,MAAc3E,WAAY2E,EAAAA,GAAAA,S,slCCrKtE,IAAMC,EAAWC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKXC,EAAcD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAIFE,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QAKZC,EAAOH,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGS,SAACI,G,OAAUA,EAAMlD,UA2BjCmD,GArBgBL,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAGJE,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAMGF,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACtBM,EAAAA,EAAAA,GAEmBJ,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,MCrCV,EAhB2B,WAEvB,OACI,SAACC,EAAW,C,SACPtD,EAAStB,KAAI,Y,IAAGI,EAAE,EAAFA,GAAImB,EAAM,EAANA,OAAQE,EAAI,EAAJA,K,OACzB,UAACmD,EAAc,C,WACX,SAACA,EAAO,CAACrD,OAAQA,KACjB,SAACqD,EAAe,C,SACXnD,MAHYrB,S,uyECDrC,IAAMyE,IAAsBC,EAAAA,GAAAA,GAAeC,GAAAA,IAE9BC,GAAaX,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKDY,GAAAA,GAAAA,QAMZC,GAAYb,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIZc,GAAad,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGDY,GAAAA,GAAAA,QAKZG,GAAWf,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKCY,GAAAA,GAAAA,SAKAA,GAAAA,GAAAA,OAKAA,GAAAA,GAAAA,OAKAA,GAAAA,GAAAA,QAMZI,GAAYhB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACnBM,EAAAA,EAAAA,IACOR,EAAAA,GAAAA,YAQAmB,GAAiBjB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAILE,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QAKZgB,GAAelB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACtBM,EAAAA,EAAAA,GAEmBJ,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,OACfI,EAAAA,EAAAA,IAIGa,IAAanB,EAAAA,EAAAA,SAAOQ,IAAoB,Y,6BAA3BR,C,KAIDY,GAAAA,GAAAA,SAIAA,GAAAA,GAAAA,OAIAA,GAAAA,GAAAA,OAIAA,GAAAA,GAAAA,QAKZQ,IAAepB,EAAAA,EAAAA,SAAOqB,EAAAA,IAAW,Y,6BAAlBrB,C,KACtBM,EAAAA,EAAAA,EAImBM,GAAAA,GAAAA,QCtEzB,ID2E8BZ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MCnHa,Y,IAAGsB,EAAY,EAAZA,aAAcC,EAAI,EAAJA,KAElDC,EAAkB,Y,IAAGC,EAAG,EAAHA,IAAKrE,EAAI,EAAJA,KAC5B,OAAOsE,EAAAA,cAAoBD,EAAK,KAAMrE,IAGpCuE,GAAeC,EAAAA,EAAAA,UACjB,W,IAAMN,EAAqB,EAArBA,OAAuE,QAAvEA,EAAqB,QAArBA,EAAAA,EAAaO,gBAAQ,IAArBP,OAAAA,EAAAA,EAAuBQ,MAAK,Y,OAAO,EAAJ9F,OAAoB+F,EAAAA,EAAAA,kBAAoB,WAAvET,EAA8E,EAALU,QAC/E,CAACV,IAGL,OACI,UAACf,GAAa,C,WACV,UAACA,GAAY,C,WACT,SAACR,EAAQ,KACT,SAACQ,GAAW,C,SACPlD,EAAU1B,KAAI,Y,IAAGI,EAAE,EAAFA,GAAIwB,EAAK,EAALA,MAAOD,EAAK,EAALA,MAAO2E,EAAc,EAAdA,e,OAChC,UAAC1B,GAAiB,C,WACd,UAACA,GAAY,C,UACRhD,EACA0E,GAAkBT,EAAgBS,OAEvC,SAAC1B,GAAe,C,SAAEjD,GAASqE,EAAe,cALtB5F,YAUpC,SAACmG,EAAAA,EAAY,CACTX,KAAMA,EACNY,UAAW5B,GACX6B,oBAAqB7B,GACrB8B,gBAAiB9B,GACjB+B,YAAa,2GACbC,aAAW,EACXC,kBAAgB,S,wvCCrCzB,IAAMC,GAAezC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMJF,EAAAA,GAAAA,MACH4C,GAAAA,EAAAA,iBAGI9B,GAAAA,GAAAA,SAKAA,GAAAA,GAAAA,OAKAA,GAAAA,GAAAA,OAKAA,GAAAA,GAAAA,OAcIV,EAAAA,EAAAA,QAMhByC,GAAc3C,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAErBM,EAAAA,EAAAA,GAEmBJ,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,OACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,OACfI,EAAAA,EAAAA,ICjDV,GAX4C,Y,IAAGgB,EAAY,EAAZA,aAAcC,EAAI,EAAJA,KACzD,OACI,UAAChB,GAAe,C,WACZ,SAACA,GAAc,C,SAAC,6FAGhB,SAACI,GAAU,CAACY,KAAMA,EAAMD,aAAcA,Q,umDCD3C,IAAMsB,GAAU5C,EAAAA,QAAAA,KAAAA,WAAW,C,6BAAXA,C,MAKV6C,GAAa7C,EAAAA,QAAAA,KAAAA,WAAW,C,6BAAXA,C,MAGpB,Y,IAAG9C,EAAM,EAANA,OAAQQ,EAAU,EAAVA,W,OAAiBoF,EAAAA,GAAAA,GAAsB,CAChDC,IAAK7F,EACL8F,QAAStF,MAMQwC,EAAAA,EAAAA,SAKZ+C,IAAwBjD,EAAAA,EAAAA,SAAOkD,GAAAA,GAAS,Y,6BAAhBlD,C,KAGZE,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QAKZiD,GAAanD,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAKL0C,GAAAA,EAAAA,iBAOG5C,EAAAA,GAAAA,MACXA,EAAAA,GAAAA,MACPQ,EAAAA,EAAAA,GAEmBJ,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAIfI,EAAAA,EAAAA,GAGe8C,EAAAA,EAAAA,OAA6ClD,EAAAA,EAAAA,OAG5DI,EAAAA,EAAAA,ICvBV,GAnC4C,Y,IAAG+C,EAAmB,EAAnBA,oBAAqBC,EAAe,EAAfA,gBAC1DC,GAAWC,EAAAA,GAAAA,GAAcC,GAAAA,EAAAA,YACzBC,GAAWF,EAAAA,GAAAA,GAAcC,GAAAA,EAAAA,QACzBE,GAAcC,EAAAA,GAAAA,GAAU,CAAEC,UAAW,UAErCC,GAAiBC,EAAAA,EAAAA,cAAY,SAACC,G,IACzBV,EAAP,OAA+D,QAAxDA,EAAAA,EAAgBxB,MAAKmC,SAAAA,G,OAAQA,EAAKjI,OAASgI,EAAQhI,eAAK,IAAxDsH,OAAAA,EAAAA,EAA0DY,UAClE,CAACZ,IAEE7I,GAAoBmH,EAAAA,EAAAA,UAAQ,WAC9B,OAAOpE,EAAsB2G,OAAOL,KACrC,CAACA,IAEEM,GAAkBL,EAAAA,EAAAA,cAAY,SAAC3G,GACjCd,EAAkB,CAAEE,MAAOY,EAAMb,SAAU,W,OAAMoH,EAAYN,QAC9D,IAEH,OAAQ,qB,UACFK,IAAY,SAACnD,IAAwB,mBAAK/B,GAAiB,CAAEK,aAAc0E,EAAW,EAAI,E,SACvF9I,EAAkBkB,KAAI,Y,IAAGI,EAAE,EAAFA,GAAIqB,EAAI,EAAJA,KAAMF,EAAM,EAANA,OAAQQ,EAAU,EAAVA,W,OACxC,UAAC6C,GAAa,CAEVnD,KAAMA,EACNiH,QAAS,W,OAAMD,EAAgBhH,I,WAE/B,SAACmD,GAAa,CAACrD,OAAQA,EAAQQ,WAAYA,KAC3C,SAAC6C,GAAU,C,SACNnD,MANArB,Y,mtCCjClB,IAAMuI,GAAoBtE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKRE,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAUZqE,GAAKvE,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,MAILwE,GAAgBxE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACvBM,EAAAA,EAAAA,EAEmBJ,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,EAGeJ,EAAAA,EAAAA,OACfI,EAAAA,EAAAA,EAGeJ,EAAAA,EAAAA,QACfI,EAAAA,EAAAA,GAKGmE,GAAoBzE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIRE,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QC7CzB,GAhBkC,WAE9B,OACI,UAACK,GAAoB,C,WACjB,SAACA,GAAK,CAACmE,GAAG,M,UAAM,SAACnE,GAAoB,CAACwC,IAAK0B,KAAmBlH,MAAO,kFAAkBoH,IAAK,uFAC5F,UAACJ,GAAAA,GAAE,CAACK,aAAa,E,UAAO,8EACN,SAACC,KAAE,IAAG,2EAExB,SAACtE,GAAgB,C,SAAC,2sB,kxECVvB,IAAMuE,GAAiB9E,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIZF,GAAAA,EAAAA,QAEOI,EAAAA,EAAAA,QAKZiC,GAAYnC,EAAAA,QAAAA,QAAAA,WAAc,C,6BAAdA,C,KAIAE,EAAAA,EAAAA,QAKZ6E,IAAwB/E,EAAAA,EAAAA,SAAOmC,IAAU,Y,6BAAjBnC,C,KAMZE,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QAMZ8E,GAAsBhF,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGXF,GAAAA,EAAAA,OAKCI,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,OAcGJ,GAAAA,EAAAA,OAECI,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAMhB+E,GAAejF,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMHE,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAKZgF,GAAgBlF,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKJE,EAAAA,EAAAA,OAQAA,EAAAA,EAAAA,Q,o+CCxGlB,IAAMiF,GAAmBnF,EAAAA,QAAAA,OAAAA,WAAa,C,6BAAbA,C,KAIHoF,EAAAA,GAQJlF,EAAAA,EAAAA,SAEuFkF,EAAAA,GAEtGC,GAAAA,GAKenF,EAAAA,EAAAA,SAEsFkF,EAAAA,GAItFlF,EAAAA,EAAAA,OAEsFkF,EAAAA,GAGtFlF,EAAAA,EAAAA,OACsFkF,EAAAA,GAMAA,EAAAA,IAIlGE,IAAgBtF,EAAAA,EAAAA,SAAOmC,IAAU,Y,6BAAjBnC,C,MCrB7B,GAZkC,Y,IAAGuF,EAAW,EAAXA,YAAajE,EAAY,EAAZA,aAAcgC,EAAe,EAAfA,gBAAiB/B,EAAI,EAAJA,KAC7E,OACI,SAAChB,GAAmB,C,UAChB,UAACA,GAAgB,C,WACb,SAACiF,GAAe,KAChB,SAACC,GAAW,CAACnE,aAAcA,EAAcC,KAAMA,KAC/C,SAACmE,GAAW,CAACrC,oBAAqBkC,EAAajC,gBAAiBA,U,u5SCVzE,IAAMqC,IAAkB3F,EAAAA,EAAAA,SAAOmC,IAAU,Y,6BAAjBnC,C,KAMNE,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAOZ0F,IAAc5F,EAAAA,EAAAA,SAAO6F,GAAAA,IAAG,Y,6BAAV7F,C,KACrBM,EAAAA,EAAAA,GAGmBJ,EAAAA,EAAAA,OACfI,EAAAA,EAAAA,IAKGwF,GAAe9F,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KASjB+F,EAAAA,GAAAA,QAAAA,SACAA,EAAAA,GAAAA,QAAAA,UAEc7F,EAAAA,EAAAA,OAKV6F,EAAAA,GAAAA,OAAAA,SACAA,EAAAA,GAAAA,OAAAA,UAGU7F,EAAAA,EAAAA,OAKV6F,EAAAA,GAAAA,OAAAA,SACAA,EAAAA,GAAAA,OAAAA,UACAA,EAAAA,GAAAA,OAAAA,SACAA,EAAAA,GAAAA,OAAAA,WAIFC,IAAahG,EAAAA,EAAAA,SAAOqB,EAAAA,IAAW,Y,6BAAlBrB,C,KAGpBM,EAAAA,EAAAA,EAEmBJ,EAAAA,EAAAA,QAKZ+F,GAAcjG,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MACV,Y,OAAO,EAAJpC,OACC8E,GAAAA,EAAAA,kBAOf,SAACtC,G,OAAUA,EAAMtC,WAAYoI,EAAAA,EAAAA,KAAG,KACM9F,EAAMtC,aAG5C,SAACsC,G,OAAUA,EAAMhC,YAAa8H,EAAAA,EAAAA,KAAG,KACN9F,EAAMhC,UAGVgF,EAAAA,EAAAA,YAKJlD,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAKnB,SAACE,G,OAAUA,EAAM+F,MAAMlI,mBAAoBiI,EAAAA,EAAAA,KAAG,KAGvB9C,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,YAMhBgD,GAAapG,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKFF,GAAAA,EAAAA,OAElBQ,EAAAA,EAAAA,IAGO+F,GAAarG,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGDE,EAAAA,EAAAA,QAMZoG,GAAQtG,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAKf,SAACI,G,OAAUA,EAAMlD,SAAUgJ,EAAAA,EAAAA,KAAG,KACH9F,EAAMlD,OAAOa,QAIjBmC,EAAAA,EAAAA,OAIQE,EAAMlD,OAAOc,WAKrCuI,GAAiBvG,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAYLE,EAAAA,EAAAA,SAQAA,EAAAA,EAAAA,OAQAA,EAAAA,EAAAA,QAQnB,SAACE,G,OAAUA,EAAMlD,SAAUgJ,EAAAA,EAAAA,KAAG,KACH9F,EAAMlD,WAQ1BsJ,GAAkBxG,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAcNE,EAAAA,EAAAA,SAQAA,EAAAA,EAAAA,OAQAA,EAAAA,EAAAA,QAQnB,SAACE,G,OAAUA,EAAMlD,SAAUgJ,EAAAA,EAAAA,KAAG,KACH9F,EAAMlD,WAQ1BuJ,GAAWzG,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAMCE,EAAAA,EAAAA,UACf,SAACE,G,IAAUA,EAAAA,OAAiB,QAAjBA,EAAAA,EAAM9B,mBAAW,IAAjB8B,OAAAA,EAAAA,EAAmB7B,UAAU2H,EAAAA,EAAAA,KAAG,QAO5BhG,EAAAA,EAAAA,OAOAA,EAAAA,EAAAA,QAMnB,SAACE,G,OAAUA,EAAMlD,SAAUgJ,EAAAA,EAAAA,KAAG,KACH9F,EAAMlD,WAMjC,SAACkD,G,IAAUA,EAAAA,OAAiB,QAAjBA,EAAAA,EAAM9B,mBAAW,IAAjB8B,OAAAA,EAAAA,EAAmB7B,UAAU2H,EAAAA,EAAAA,KAAG,KACpBhG,EAAAA,EAAAA,WAKvB,SAACE,G,IAAUA,EAAAA,OAAiB,QAAjBA,EAAAA,EAAM9B,mBAAW,IAAjB8B,OAAAA,EAAAA,EAAmBpC,UAAUkI,EAAAA,EAAAA,KAAG,KACpBhG,EAAAA,EAAAA,WAMvB,SAACE,G,OAAUA,EAAM+F,MAAMlI,mBAAoBiI,EAAAA,EAAAA,KAAG,KACvBhG,EAAAA,EAAAA,OAQAkD,EAAAA,EAAAA,WAQhBsD,GAAY1G,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,MAInB,SAACI,G,OAAWA,EAAM+F,MAAMlI,mBAAoBiI,EAAAA,EAAAA,KAAG,KACxBhG,EAAAA,EAAAA,aAKvB,SAACE,G,OAAUA,EAAM+F,MAAMlI,mBAAoBiI,EAAAA,EAAAA,KAAG,KACnCpG,GAAAA,EAAAA,cAKJ6G,GAAc3G,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAKFE,EAAAA,EAAAA,QAInB,SAACE,G,OAAWA,EAAM+F,MAAMlI,mBAAoBiI,EAAAA,EAAAA,KAAG,KACxB9C,EAAAA,EAAAA,OAA6ClD,EAAAA,EAAAA,WAMpE,SAACE,G,OAAUA,EAAM+F,MAAMlI,mBAAoBiI,EAAAA,EAAAA,KAAG,KACvB9C,EAAAA,EAAAA,WAKvB,SAAChD,G,OAAUA,EAAM+F,MAAMlI,mBAAoBiI,EAAAA,EAAAA,KAAG,KACvB9C,EAAAA,EAAAA,WAQhBwD,IAAQ5G,EAAAA,EAAAA,SAAO6G,GAAAA,IAAG,Y,8BAAV7G,C,KACfM,EAAAA,EAAAA,IAGA,SAACF,G,OAAUA,EAAM+F,MAAMlI,mBAAoBiI,EAAAA,EAAAA,KAAG,KAEnCpG,GAAAA,EAAAA,UACYI,EAAAA,EAAAA,WAMhB4G,GAAU9G,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KACjBM,EAAAA,EAAAA,EAGmBJ,EAAAA,EAAAA,OACfI,EAAAA,EAAAA,IAGJ,SAACF,G,OAAUA,EAAM+F,MAAMlI,mBAAoBiI,EAAAA,EAAAA,KAAG,KACvB9C,EAAAA,EAAAA,OAA6ClD,EAAAA,EAAAA,aCxU1E,GAnEI,Y,IAAGqF,EAAW,EAAXA,YAAawB,EAAW,EAAXA,YAAazF,EAAY,EAAZA,aACvBqC,GAAcC,EAAAA,GAAAA,KAEdoD,EAAW,8CAEXC,GAAWlD,EAAAA,EAAAA,cAAY,SAACmD,G,IACnBA,EAAP,OAAY,OAALA,QAAK,IAALA,GAAe,QAAfA,EAAAA,EAAOrF,gBAAQ,IAAfqF,OAAAA,EAAAA,EAAiBjN,QAAO,SAACkN,EAAWC,G,OAAcD,EAAKnF,MAAQoF,EAAKpF,MAAQmF,EAAOC,IAAM,CAAC,MAClG,IAEGC,GAAYzF,EAAAA,EAAAA,UAAQ,WACtB,IAAMtE,EAAQ2J,EAASF,GACvB,OAAY,OAALzJ,QAAK,IAALA,OAAAA,EAAAA,EAAOgK,UAAgB,OAALhK,QAAK,IAALA,OAAAA,EAAAA,EAAO0E,MAAQ,OACzC,CAAC+E,IAEEQ,GAAa3F,EAAAA,EAAAA,UAAQ,WACvB,IAAMtE,EAAQ2J,EAAS3F,GACvB,OAAY,OAALhE,QAAK,IAALA,OAAAA,EAAAA,EAAOgK,UAAgB,OAALhK,QAAK,IAALA,OAAAA,EAAAA,EAAO0E,MAAQ,OACzC,CAACV,IAEE8C,GAAkBL,EAAAA,EAAAA,cAAY,WAChCzH,EAAkB,CAAEE,MAAO,eAAgBD,SAAU,W,OAAMoH,EAAY4B,QACxE,IAEH,OACI,UAAChF,GAAkB,C,WACf,SAACA,GAAc,C,SAAC,2GAChB,SAACA,GAAe,C,SACX5C,EAAYhC,KAAI,SAAC6L,EAAMpN,G,OACpB,SAACqN,EAAAA,cAAa,CAACtB,MAAO,CAAElI,iBAAkBuJ,EAAKvJ,kB,UAC3C,UAACsC,GAAc,CAACzC,SAAU0J,EAAK1J,SAAUM,UAAWoJ,EAAKpJ,UAAWR,KAAM4J,EAAK5J,K,UAC1E4J,EAAKhL,OACA,sB,WACE,SAAC+D,GAAa,C,WAAInG,KAClB,SAACmG,GAAa,C,UACV,SAACA,GAAQ,CAACrD,OAAQsK,EAAKhL,cAG7B,SAAC+D,GAAa,C,WAAInG,KACxB,UAACmG,GAAc,C,WACX,UAACA,GAAW,CAACjC,YAAakJ,EAAKlJ,YAAapB,OAAQsK,EAAKtK,O,UAC5C,IAAR9C,GAAaiN,IAAa,SAAC9G,GAAiB,CACzCrD,OAAQ8J,E,SACHK,EAAY,+BAEZ,IAARjN,GAAamN,IAAc,SAAChH,GAAkB,CACvCrD,OAAQ8J,E,SACPO,EAAa,mCAG1B,UAAChH,GAAY,C,WACT,SAACA,GAAQ,CAACqE,aAAa,E,SAAQ4C,EAAKjK,SACpC,SAACgD,GAAU,C,SAAEiH,EAAKrJ,oBAvBsCqJ,EAAKzL,UA8BrF,SAACwE,GAAa,CACVvE,KAAM0L,EAAAA,GAAAA,OACNtK,KAAM,2GACNiH,QAASD,Q,0jFC7DlB,IAAMuD,IAAkB3H,EAAAA,EAAAA,SAAOmC,IAAU,Y,6BAAjBnC,C,KAONE,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QAOZ0H,GAAgB5H,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAER0C,GAAAA,EAAAA,iBAEQvF,EAAAA,GAKJ+C,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,OAGQ/C,EAAAA,GACL2C,EAAAA,GAAAA,OAMf+H,GAAa7H,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACpBM,EAAAA,EAAAA,GAI2BnD,EAAAA,GAOR+C,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,QAMZ4H,GAAc9H,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAKd+H,GAAe/H,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAEtBM,EAAAA,EAAAA,EAEmBJ,EAAAA,EAAAA,QAEfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAKZ8H,IAAchI,EAAAA,EAAAA,SAAOiI,GAAAA,GAAO,Y,6BAAdjI,C,KAErBM,EAAAA,EAAAA,GAEmBJ,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QC7FzB,GA7B+B,WAU3B,OACI,SAACK,GAAkB,C,UACf,SAACA,GAAgB,C,UACb,UAACA,GAAc,C,WACX,UAACA,GAAa,C,UACT,mKAAsC,WAE3C,SAACA,GAAe,C,SAAC,geAGjB,SAACA,GAAc,CAAC2H,MAAO,YAAa7D,QAnB9B,WAClB/H,EAAkB,CAAEE,MAAO,WAC3B,IAAM2L,EAAY5O,OAAO6O,OACrBD,IACAA,EAAUE,OAAS,KACnBF,EAAUG,SAASC,KAAO,wB,SAc0C,4H,4wLCbzE,IAgE0BnI,GAhEpBoI,IAAyBxI,EAAAA,EAAAA,SAAOmC,IAAU,Y,6BAAjBnC,C,KAKbE,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAMAA,EAAAA,EAAAA,QAOZuI,GAAqBzI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAE5BM,EAAAA,EAAAA,GAImBJ,EAAAA,EAAAA,QACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,QAOZwI,IAAgB1I,EAAAA,EAAAA,SAAOkD,GAAAA,GAAS,Y,6BAAhBlD,C,MAIhB2I,GAAuB3I,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIXE,EAAAA,EAAAA,QAOZ0I,GAAmB5I,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGX0C,GAAAA,EAAAA,kBACGtC,SAAAA,G,OAAyB,QAAhBA,GAAAA,EAAMyI,kBAAU,IAAhBzI,GAAAA,GAAoB,YAG5BF,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAGQ,SAACE,G,OAAUA,EAAMyI,cAOrCC,GAAgB9I,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKJE,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAIPE,SAAAA,G,OAASA,EAAMR,gBAIpBmJ,GAAW/I,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAEXI,SAAAA,G,OAASA,EAAMP,aAIfmJ,GAAmBhJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAE1BM,EAAAA,EAAAA,EAEmBJ,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,OACfI,EAAAA,EAAAA,EAGeJ,EAAAA,EAAAA,OACfI,EAAAA,EAAAA,IAIG2I,GAAiBjJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACxBM,EAAAA,EAAAA,GAEmBJ,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,OACfI,EAAAA,EAAAA,IAIGmG,GAAWzG,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAGK,SAACI,G,OAAUA,EAAM8I,SAIzBxG,GAAAA,EAAAA,iBAEIxC,EAAAA,EAAAA,SAMAA,EAAAA,EAAAA,QAOZiJ,GAAoBnJ,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAMRE,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAOAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAMZkJ,GAAOpJ,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAIKE,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAKZmJ,GAAWrJ,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAClBM,EAAAA,EAAAA,GAImBJ,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,QAMZoJ,GAAqBtJ,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAIb0C,GAAAA,EAAAA,iBACG5C,EAAAA,GAAAA,MAECI,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAQAA,EAAAA,EAAAA,QAKZqJ,GAAWvJ,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,MAGK,SAACI,G,OAAUA,EAAMZ,UAKrB4D,EAAAA,EAAAA,OAA6ClD,EAAAA,EAAAA,QClNtE,GAjEuC,WACnC,IAAMsJ,GAAehG,EAAAA,GAAAA,GAAcC,GAAAA,EAAAA,YAC7BF,GAAWC,EAAAA,GAAAA,GAAcC,GAAAA,EAAAA,QACzBC,GAAWF,EAAAA,GAAAA,GAAcC,GAAAA,EAAAA,QACzBgG,GAAajG,EAAAA,GAAAA,GAAcC,GAAAA,EAAAA,cAG7B9D,EAcAR,EAAAA,gBAbAC,EAaAD,EAAAA,UAZAE,EAYAF,EAAAA,YAZW,EAYXA,EAAAA,eAVIrD,EAAG,EAAHA,IACAE,EAAI,EAAJA,KAEJ6D,EAOAV,EAAAA,UANAS,EAMAT,EAAAA,aANY,EAMZA,EAAAA,YAJIM,EAAQ,EAARA,SACAD,EAAO,EAAPA,QAEJE,EACAP,EAAAA,SAEElD,GAAY2F,EAAAA,EAAAA,UAAQ,W,MACtB,CACIrD,OAAQiL,EACRE,SAAUD,EACVzL,OAAQ0F,KAEb,CAAC8F,EAAcC,EAAY/F,IAE9B,OACI,UAACnD,GAAyB,C,WACtB,SAACA,GAAqB,CAACmE,GAAG,K,SAAM,oNAChC,SAACnE,IAAgB,mBAAWvB,GAAuB,CAAEP,YAAa8E,E,UpB5BtB,OAAIxJ,MAAMqB,EAAAA,KAAgCO,KAAI,SAACxB,EAAGyB,G,OAAUA,OoB6BxED,KAAI,SAACI,G,OAC7B,UAACwE,GAAuB,C,WACpB,UAACA,GAAmB,CAChBsI,WAAYnF,EAAW7H,EAAkB,CAAEE,GAAAA,EAAID,IAAAA,EAAKE,KAAAA,EAAMC,UAAAA,IAAe0D,EAAgB5D,G,WAEzF,SAACwE,GAAgB,CAACX,aAAcA,EAAa7D,G,UACzC,UAACwE,GAAW,CAACV,UAAWA,EAAU9D,G,WAC9B,SAACwE,GAAiB,C,SAAEnB,EAAUrD,MAC9B,SAACwE,GAAmB,C,SAAElB,EAAYtD,WAGxC2H,IAAY,SAACnD,GAAW,CAAC2I,OAAQrN,EAAkB,CAAEE,GAAAA,EAAID,IAAAA,EAAKE,KAAAA,EAAMC,UAAAA,UAE1E,SAACsE,GAAoB,C,UAChB,OAAIxG,MAAM4P,EAAAA,KAA2BhO,KAAI,SAACxB,EAAGC,G,OAC1C,SAACmG,GAAO,C,UACJ,UAACA,GAAqB,C,WAClB,SAACA,GAAW,CAACf,QAAS,GAAazD,OAAVyD,GAAepF,OAAL2B,GAAW0D,OAANrF,GAAe,OAATqF,MAC9C,SAACc,GAAW,C,SAAEb,EAAS3D,GAAI3B,SAHrB2B,EAAK3B,UAdD2B,a,0DCpCrC6N,GAAoB,Y,IAeN3F,EAfSA,EAAI,EAAJA,KAC1B4F,GAASC,EAAAA,GAAAA,aAC+BC,GAAAA,EAAAA,EAAAA,UAAS,GAAhDC,EAAuCD,EAAW,GAAjCE,EAAsBF,EAAW,GAEnDG,GAAiBnG,EAAAA,EAAAA,cAAY,WAC/B8F,EAAOpQ,KAAK,6BAAsDuQ,OAAzB/F,EAAKkG,MAAM,gBAA8B,OAAhBH,IAClE1N,EAAkB,CAAEE,MAAO,GAAc,OAAXyH,EAAK1G,WACpC,CAACsM,EAAQ5F,EAAM+F,IAElB,OACI,SAACI,GAAAA,EAAW,CAERC,MAAOpG,EAAKoG,MACZC,UAAU,4BACVC,oBAAsB,CAAEC,MAAO1K,GAAAA,EAAAA,QAC/B2K,cAA4B,QAAbxG,EAAAA,EAAKnH,gBAAQ,IAAbmH,OAAAA,EAAAA,EAAe1G,MAC9BmN,KAAMzG,EAAK1G,MACXoN,KAAM1G,EAAK0G,KACXC,cAAcC,EAAAA,GAAAA,IAAgBC,EAAAA,GAAAA,IAAkB7G,IAChD8G,OAAQ9G,EAAK8G,OACbC,cAAed,EACfD,mBAAoBA,GAVfhG,EAAKlI,KCkCtB,GA7C6C,Y,IAAGkP,EAAuB,EAAvBA,wBAAyBC,EAAS,EAATA,UAAWC,EAAO,EAAPA,QAASC,EAAU,EAAVA,WACnF3B,GAAajG,EAAAA,GAAAA,GAAcC,GAAAA,EAAAA,cAC3BC,GAAWF,EAAAA,GAAAA,GAAcC,GAAAA,EAAAA,QAEzB4H,GAAczJ,EAAAA,EAAAA,UAAQ,WACxB,QAAQ,GACJ,KAAK6H,EACD,OAAO7K,EAAmBC,aAC9B,KAAK6E,EACD,OAAO4H,EAAAA,GACX,QACI,OAAOC,EAAAA,MAEhB,CAAC9B,EAAY/F,IAEV8H,GAAc5J,EAAAA,EAAAA,UAAQ,WACxB,OACIqJ,EAAwBtP,KAAI,SAACsI,G,OAAS,SAAC2F,GAAiB,CAAe3F,KAAMA,GAAfA,EAAKlI,SAExE,CAACkP,IAmBJ,OACI,qB,SACMG,EAnBqB,SAACF,EAAmBC,GAE/C,IADA,IAAMM,EAAQ,GACLC,EAAIR,EAAWQ,EAAIP,EAASO,IAC7BT,EAAwBS,IACxBD,EAAMhS,MAAK,SAACmQ,GAAiB,CAAC3F,KAAMgH,EAAwBS,MAIpE,OACID,EAAM7Q,OAASyQ,GACT,SAACM,GAAAA,GAAY,mBAAK/M,GAAkB,CAAEC,aAAcwM,E,SACjDI,MAEH,qB,SAAGA,IAMMG,CAAuBV,EAAqBC,GAAqBK,K,+zDCzCrF,IAAMK,IAAmB7L,EAAAA,EAAAA,SAAOmC,IAAU,Y,6BAAjBnC,C,KAMPE,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAMZ4L,GAAiB9L,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGLE,EAAAA,EAAAA,UASZ6L,IAAe/L,EAAAA,EAAAA,SAAO6F,GAAAA,IAAG,Y,6BAAV7F,C,KAEtBM,EAAAA,EAAAA,GAEmBJ,EAAAA,EAAAA,QACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,GAGeJ,EAAAA,EAAAA,QAKZ8L,GAAiBhM,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACxBM,EAAAA,EAAAA,EAEmBJ,EAAAA,EAAAA,SACfI,EAAAA,EAAAA,GAIG2L,GAAqBjM,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMTE,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QAOZgM,GAAelM,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAGQI,SAAAA,G,OAAS9E,EAAsB8E,EAAM+L,OAAOzQ,OAAO0E,EAAM+L,UAC5D/L,SAAAA,G,OAAS9E,EAAsB8E,EAAM+L,OAAO1Q,IAAI2E,EAAM+L,SAE9DjM,EAAAA,EAAAA,QAIAkD,EAAAA,EAAAA,SAA+ClD,EAAAA,EAAAA,SClCxE,IDuC0BF,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MCnFc,Y,IAAGvF,EAAiB,EAAjBA,kBACjC2R,GAAgB5I,EAAAA,GAAAA,GAAcC,GAAAA,EAAAA,aAE9BwH,GAA0BrJ,EAAAA,EAAAA,UAAQ,W,OACpC,OAAInH,GAAmB4B,KAAKH,KAC7B,CAACzB,IAEJ,OAAKwQ,EAAwBrQ,QAKrB,SAAC2F,GAAmB,C,UAChB,UAACA,GAAiB,C,WACd,UAACA,GAAqB,C,WAClB,SAACA,GAAe,C,SACX,wKAED,SAACA,GAAiB,C,SAAC,iFAI1B6L,GACK,SAAC7L,GAAe,CAAC4L,MAAOlB,EAAwBrQ,O,UAC1C,SAACyR,GAAkB,CAACpB,wBAAyBA,OAEnD,qB,UACG,OAAIzQ,EAA4ByQ,GAAyBlQ,QAAQY,KAAI,SAACvB,G,OACnE,SAACiS,GAAkB,CACfC,UAASlS,EAET6Q,wBAAyBA,EACzBC,UAAW7Q,EAAuB4Q,EAAwBrQ,QAAQR,GAClE+Q,QAASzR,EAAqBuR,EAAwBrQ,QAAQR,GAC9DgR,YAAY,GAJPH,EAAwB7Q,GAAK2B,cAtBvD,OC0Cf,GAxDwC,Y,IAAGwF,EAAI,EAAJA,KAAM9G,EAAiB,EAAjBA,kBACvC8R,GAAkBC,EAAAA,EAAAA,QAA8B,MAEhDzF,GAAcnF,EAAAA,EAAAA,UAAQ,WAAMnH,OAAAA,EAAkB0J,QAChDF,SAAAA,G,IAAQA,EAAAA,OAAU,QAAVA,EAAAA,EAAK7D,aAAK,IAAV6D,OAAAA,EAAAA,EAAYrJ,QACc,QAAxBqJ,EAAK7D,MAAM,GAAG4B,MACd,QACZ,KAAI,CAACvH,IAED6G,GAAeM,EAAAA,EAAAA,UAAQ,WAAMnH,OAAAA,EAAkB0J,QACjDF,SAAAA,G,IAAQA,EAAAA,OAAU,QAAVA,EAAAA,EAAK7D,aAAK,IAAV6D,OAAAA,EAAAA,EAAYrJ,QACc,QAAxBqJ,EAAK7D,MAAM,GAAG4B,MACd,QACZ,KAAI,CAACvH,IAED6I,GAAkB1B,EAAAA,EAAAA,UAAQ,WAC5B,IAAM6K,EAAiC,CACnC,CAAEzK,MAAO,EAAGhG,KAAM,QAASkI,SAAS,GACpC,CAAElC,MAAO,EAAGhG,KAAM,OAAQkI,SAAS,GACnC,CAAElC,MAAO,EAAGhG,KAAM,WAAYkI,SAAS,GACvC,CAAElC,MAAO,EAAGhG,KAAM,OAAQkI,SAAS,GACnC,CAAElC,MAAO,EAAGhG,KAAM,OAAQkI,SAAS,IAMvC,OAJAuI,EAAWzR,SAAQ,SAACiJ,EAAMrI,GAEtB,OADAqI,EAAKC,QAAUzJ,EAAkBiS,MAAKC,SAAAA,G,IAAWA,EAAAA,SAAa,QAAbA,EAAAA,EAAQvM,aAAK,IAAbuM,OAAAA,EAAAA,EAAe/R,SAAS+R,EAAQvM,MAAM,GAAG4B,QAAU,IAAc,OAAVpG,EAAQ,EAAE,QAC3GqI,KAEJwI,IACR,CAAChS,IAEJ,OACI,UAAC8F,GAAiB,C,WACd,SAACqM,GAAM,CACHrH,YAAagH,EACbjL,aAAcA,EACdC,KAAMA,EACN+B,gBAAiBA,KAErB,SAACuJ,GAAW,CAACtH,YAAagH,EAAiBxF,YAAaA,EAAazF,aAAcA,KACnF,SAACwL,GAAoB,KACrB,SAACC,GAAY,KACb,SAAC7K,EAAAA,EAAY,CACTX,KAAMA,EACNyL,IAAKT,EACLpK,UAAW5B,GACX0M,YAAa1M,GACb2M,sBAAuB3M,GACvB4M,uBAAwB5M,GACxBhD,MAAM,0LACN6P,SAAS,+LAEb,SAACC,GAAa,CAAC5S,kBAAmBA,Q,gDCxCxC6S,GAA6C,Y,IAAG/L,EAAI,EAAJA,KAAMgM,EAAW,EAAXA,YAAa9S,EAAiB,EAAjBA,kBAC7D+S,EAAuBjM,EAAvBiM,OAAQC,EAAelM,EAAfkM,WAEhB,OACI,SAACC,EAAAA,EAAM,CACHnQ,MAAO,4PAA2D,OAAPiQ,GAC3DG,YAAa,sxBAC8EF,OAArCF,EAAY,2GAAoC,OAAXE,GAC3FG,UAAU,EACVC,UAAU,EACVC,YAAY,E,UAEZ,SAACC,GAAa,CACVxM,KAAMA,EACN9G,kBAAmBA,OAMnC6S,GAAyBU,gBAAkB,W,OAAA,4BAAMC,G,IAErCC,EAAKC,EACPC,EAAK,EACkB7M,EAAkB8M,EAEzCd,EAEAe,EAEuC,EAAtCC,EAAmBC,EAUpB/T,E,kFAnBAgU,EAAAA,GAAAA,GAAaR,EAAS,CAAES,gBAAgB,I,cACtCR,EAAeD,EAAfC,IAAKC,EAAUF,EAAVE,MACPC,EAAQD,EAAMQ,W,EAC8CP,EAA1D7M,KAAQqN,EAAiB,EAAjBA,YAAmBC,EAAsB,EAAtBA,SAAYR,WAEzCd,GAAcuB,EAAAA,GAAAA,IAAkBV,GAEhCE,GAAYS,EAAAA,GAAAA,GAAab,G,mBAEoBc,QAAQC,IAAI,CAC3DX,EAAUY,SACNC,EAAAA,EAAAA,GAAU,CACNd,WAAAA,EACAe,WAAY,CAACC,EAAAA,GAAAA,kBAGrBf,EAAUgB,YAAyBC,EAAAA,EAAAA,GAAc,CAAEpL,OAAQ,CAAEqL,UAAW,Q,2BAP/B,GAQ3C,gBARKjB,EAAsC,EAQ3C,GARwBC,EAAmB,EAQ3C,GAEI/T,EAAoB8T,EAAkBkB,UAAYlB,EAAkBmB,QAAU,GAChFlB,EAAgBiB,WAAajB,EAAgBkB,QAAQC,MAAM/U,OAAS,GAEpEuT,EAAMyB,UAASC,EAAAA,GAAAA,GAAmBrB,EAAgBkB,QAAQC,MAAM,K,kBAG5D,CAAEpO,KAAAA,EAAMgM,YAAAA,EAAa9S,kBAAAA,I,4DA1BgBwT,G,gCAAN,GA6B3C,W,+LC3DO,EAoBA,E,4GAsJA,SAAe6B,EAClBzB,EACA0B,EACAjT,EACAkT,EACA7L,G,OALkB2L,EAAY,sB,SAAZA,I,OAAAA,GAAf,4BACHzB,EACA0B,EACAjT,EACAkT,EACA7L,G,IACA8L,EAGMC,EAOAC,EAgBArU,EAGIsU,EAAI,Y,wEA7BdH,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,IAAiB,KAGXC,GAA0B,gBAC5B7B,WAAAA,GACGlK,GAAM,CACT6L,OAAQK,EAAkBL,GAC1Bf,IAAKgB,IAGHE,EAA+BJ,EAC/B,CAAEO,cAAe,UAAgB,OAANP,IAC3B,GAEF1B,IACA6B,EAAO7B,WAAaA,GAGpBvR,IACAoT,EAAOpT,SAAWA,GAGtBoT,EAAOK,YAAaC,EAAAA,EAAAA,GAAsB,CACtCC,OAAQC,QAAQX,KAGdjU,EAAM,iB,oBAGW6U,EAAAA,EAAAA,KACf,W,OAAMC,EAAAA,EAAAA,IAAmB9U,EAAK,CAC1BqU,QAAAA,EACAD,OAAAA,EACAW,iBAAkB,SAACX,GACf,OAAOY,EAAAA,EAAAA,WAAUZ,S,eALvBE,EAAO,EAAH,K,kBAUHA,EAAKW,KAAKpB,O,0CAGjBqB,EAAAA,EAAAA,IAAiB,EAAD,I,kBACT,I,0DAjDOlB,EAAY,sBAmElC,SAASO,EAAkBY,GACvB,GAAIA,GAAWA,EAAQrW,OACnB,OAAOqW,EAAQC,KAAK,KAKrB,SAAeC,EAAW9C,EAAoB0B,G,OAA/BoB,EAAU,sB,SAAVA,I,OAAAA,GAAf,4BAA0B9C,EAAoB0B,G,0FAC1CD,EACHzB,EACA0B,EACAV,EAAc+B,QACd,CAACC,EAAiBC,SAAUD,EAAiBE,MAAOF,EAAiBG,U,4CAL7C,sBAUzB,SAAeC,EAAoBpD,EAAoB0B,G,OAAxC0B,EAAmB,sB,SAAnBA,I,OAAAA,GAAf,4BAAmCpD,EAAoB0B,G,0FACnDD,EACHzB,EACA0B,EACAV,EAAcqC,SACd,CAACL,EAAiBC,SAAUD,EAAiBE,MAAOF,EAAiBG,U,4CALpC,sBASlC,SAAeG,EAAqBtD,EAAoB0B,G,OAAzC4B,EAAoB,sB,SAApBA,I,OAAAA,GAAf,4BAAoCtD,EAAoB0B,G,0FACpDD,EACHzB,EACA0B,EACAV,EAAcuC,aACd,CAACP,EAAiBC,SAAUD,EAAiBE,S,4CALX,uB,SAvQ9BlC,GAAAA,EACG,YAAG,cADNA,EAEI,aAAG,gBAFPA,EAGD,QAAG,UAHFA,EAIA,SAAG,WAJHA,EAKJ,KAAG,iBALCA,EAMO,gBAAG,mCANVA,EAOA,SAAG,WAPHA,EAQE,WAAG,eARLA,EASK,cAAG,kBATRA,EAUS,kBAAG,uBAVZA,EAWA,SAAG,YAXHA,EAYM,eAAG,kBAZTA,EAaA,SAAG,WAbHA,EAcK,cAAG,gBAdRA,EAeG,YAAG,cAfNA,EAgBI,aAAG,eAhBPA,EAiBc,uBAAG,2B,CAjBjBA,IAAAA,EAAa,K,SAoBbgC,GAAAA,EACG,YAAG,cADNA,EAEA,SAAG,WAFHA,EAGH,MAAG,QAHAA,EAIF,OAAG,SAJDA,EAKK,cAAG,iB,CALRA,IAAAA,EAAgB,M,iJCvBtBQ,EAAeC,IAAAA,OAAa,CAC9BC,SAASC,EAAAA,EAAAA,KACHC,sDACAA,uCAGVJ,EAAaK,aAAaC,QAAQC,KAC9B,SAACC,GACG,IAAMtC,EAAQuC,EAAAA,GAAAA,KAAaC,EAAAA,IACrBC,EAAaF,EAAAA,GAAAA,KAAaG,EAAAA,IAE1BtC,EAAU,CACZ,mBAAoB,kBAYxB,OATKkC,EAAOlC,QAAuB,eAAKJ,IACpCI,EAAuB,cAAI,UAAkB,OAAPJ,IAGtCyC,IACArC,EAAQ,gBAAkBqC,GAE9BH,EAAOlC,SAAU,UAAKkC,EAAOlC,QAAYA,GAElCkC,KAEX,SAACK,G,OAAU1D,QAAQ2D,OAAOD,MAO9B,IAAM9B,EAAiBgC,OAAOC,OAAOhB,GAErCjB,EAAekC,IAAM,W,OAAA,4BAAMhX,EAAKmS,G,wEACxBA,IACAA,EAAQ4C,iBAAmBX,SAAAA,GACvB,OAAOY,EAAAA,EAAAA,WAAUZ,K,kBAGlB2B,EAAaiB,IAAIhX,EAAKmS,I,2DANNnS,EAAKmS,G,gCAAX,GAQrB,O,mCCpDO,M,yCAAK8E,GAAAA,EAAAA,EACC,UAAG,WAAK,IAAjBC,YADQD,EAAAA,EAEA,SAAG,WAAK,IAAhBE,WAFQF,EAAAA,EAII,aAAG,WAAK,IAApBG,eAJQH,EAAAA,EAMU,mBAAG,WAAK,KAA1BI,qB,CANQJ,IAAAA,EAAa,KAclB,IAAMvC,EAAwB,Y,QAAG4C,OAAAA,OAAM,IAAG,KAAE,EAAE3C,EAAM,EAANA,OAC7C4C,EAASN,EAAcG,aAAeE,EAAOnZ,QAAO,SAACqZ,EAAKC,G,OAAUD,EAAMC,IAAO,GAUrF,MARsB,mBAAX9C,IAEH4C,GADA5C,EACUsC,EAAcE,SAEdF,EAAcC,WAIzBK,I,iFCLJ,SAASzP,EACZ4P,EACAC,GAEA,OAAO1P,EAAAA,EAAAA,cAAY,SAACiJ,GAChB,IAAM0G,GAAmB,OAARF,QAAQ,IAARA,OAAAA,EAAAA,EAAUE,WAAY,SAEvC,GAAY,OAARF,QAAQ,IAARA,OAAAA,EAAAA,EAAUG,SACVpa,OAAOqa,SAAS,CAAEC,IAA2B,QAAtBL,EAASG,SAAqB,EAAIG,SAASnJ,KAAKoJ,aAAcL,SAAAA,SAIzF,GAAID,EAAS,C,IACGzG,EACNgH,IADS,OAAHhH,QAAG,IAAHA,GAAY,QAAZA,EAAAA,EAAKiH,eAAO,IAAZjH,OAAAA,EAAAA,EAAckH,wBAAwBL,MAAO,GACzCta,OAAO4a,YAAcV,EACrCla,OAAOqa,SAAS,CAAEC,IAAKG,EAAGN,SAAAA,QACvB,C,IACH1G,EAAG,OAAHA,QAAG,IAAHA,GAAY,QAAZA,EAAAA,EAAKiH,eAAO,IAAZjH,GAAAA,EAAcoH,eAAe,CACzBV,SAAAA,EACAW,OAAe,OAARb,QAAQ,IAARA,OAAAA,EAAAA,EAAU3P,YAAa,cAGvC,CAAC2P,EAAUC,M,4FC3ClB,IAOaa,EAAWC,SAAAA,G,MAAkB,kBAANA,EAAiBC,WAAWD,EAAEE,WAAWC,QAAQ,IAAK,IAAIA,QAAQ,IAP1F,MAOuGC,OAAOJ,IA4B7GK,EAAa,SAACC,G,IAAQC,EAAI,UAAH,6CAAG,EAAGC,EAAI,UAAH,6CAAG,IAAKC,EAAC,uCAAEC,EAAI,UAAH,6CAnC3C,IAoCFC,EAAIZ,EAASO,GACnBG,EAAIA,GAAK,SAACF,G,OAAMA,EAAEK,SAAS,KAAOL,EAAEM,MAAM,KAAKC,MAAMza,OAAS,EAArD,CAAyDsa,EAAET,YACpE,IAAMa,EAAMJ,EAAEK,QAAQ1b,KAAK2b,IAAI,IAAKR,IAC9BS,EAAK,cAAqBT,OAAPF,EAAE,OAAyB,OAApBE,EAAI,EAAI,MAAQ,IAAI,KACpD,OAAQC,EAAIK,EAAIZ,QAAQ,IAAKO,GAAKK,GAAKZ,QAAQ,IAAIgB,OAAOD,EAAI,KAAM,KAAO,OAAFV,M,kFCrChElF,EAAqB,SAAC8F,G,MAAoC,CACnE3Z,KAAM4Z,EAAAA,EACNlG,QAASiG,K,mECGN,IAAMpG,EAAgB,W,IAACsG,EAA2B,UAAH,6CAAG,G,MAAkB,CACvEC,IAAK,qBACLC,OAAQ,MACRF,YAAAA,EACAG,cAAc,K,mECLX,IAAM7G,EAAY,Y,IAAcd,EAAU,EAAVA,WAAYrR,EAAQ,EAARA,SAAUoS,EAAU,EAAVA,WAAY6G,EAAY,EAAZA,a,MAA4D,CACjIH,IAAK,OAAkB,OAAXzH,EAAW,cACvB0H,OAAQ,MACRG,UAAU,EACVF,cAAc,EACdH,YAAa,CACT7Y,SAAAA,EACAoS,WAAAA,EACA6G,aAAAA,M,0FCVR,IAoBaE,EAAY,SAACnU,EAAeoU,G,OApBtB,SAACpU,EAAeoU,GAC/B,IAAMC,EAAMxc,KAAKwc,IAAIrU,GAErB,OAAOoU,EACHC,EAAM,IAAM,GAAKA,EAAM,KAAO,GACxB,EACAA,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAC9D,EACA,GAadC,CAAWtU,EAAOoU,IAQTG,EAAe,SAACH,G,OAA4B,SAACpU,G,OACtDmU,EAAUnU,EAAOoU,M,4IC5Bd,IAAMI,EAAgC,CAAC,iCAAS,uCAAU,8CAOpDC,EAAkC,CAAC,iCAAS,uCAAU,8CAOtDC,EAA8B,CAAC,2BAAQ,qBAAO,4BAO9CC,EAAgC,CAAC,iCAAS,uCAAU,+C,mEC1B1D,IAAMC,EAAW,SAACC,EAA4BC,GACjD,OAAKD,EAIEA,EAAOjc,OAASkc,GAAmC,IAAlBA,EAClC,GAAyC,OAAtCD,EAAOE,MAAM,EAAGD,GAAeE,OAAO,OACzCH,EALK,K,mCCJR,M,yCAAK9U,GAAAA,EAAAA,EACD,QAAG,GAAVkV,UADQlV,EAAAA,EAED,QAAG,GAAVmV,U,CAFQnV,IAAAA,EAAW,M,ikBCKhB,ICaEoV,EDbIC,EAAUpX,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAYVqX,EAAWrX,EAAAA,QAAAA,IAAAA,MAAiB,CACrC+C,IAAKuU,MACP,Y,6BAFsBtX,C,KAIpB,Y,MAAuB,UAAhB,EAAJhE,OAA+BkK,EAAAA,EAAAA,KAAG,QEJzC,EARqB,Y,IAAGqR,EAAa,EAAbA,cAAeC,EAAS,EAATA,UACnC,OACI,SAACjX,EAAU,CAAC8D,QAASkT,GAAiBC,E,UAClC,SAACjX,EAAW,CAACvE,KAAMub,EAAgB,OAAS,a,+hCDDjD,IAqBEJ,EAoBAA,EAUAA,EAnDIM,EAAMzX,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAIHF,EAAAA,GAAAA,OAGZqX,SAAAA,G,IAAKA,EAAAA,OAAmB,QAAnBA,EAAc,QAAdA,EAAAA,EAAEO,oBAAY,IAAdP,OAAAA,EAAAA,EAAgBQ,WAAG,IAAnBR,EAAAA,EAAuB,MAGjB,Y,OAAS,EAANS,OAAsB,EAAI,OAI/BC,EAAe7X,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAEjB,Y,OAAS,EAAN4X,OAAsB,OAAS,UAKzCT,SAAAA,G,IAAKA,EAAAA,OAA4B,QAA5BA,EAAc,QAAdA,EAAAA,EAAEO,oBAAY,IAAdP,OAAAA,EAAAA,EAAgBW,oBAAY,IAA5BX,EAAAA,EAAgC,MAGnCY,GAAsBC,EAAAA,EAAAA,WAAS,KAKxBC,EAAajY,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACb,Y,OAAS,EAAN4X,OAAsB,UAAY,SAIlC9X,EAAAA,GAAAA,OACL,Y,OAAS,EAAN8X,OAAsB,OAAS,OAGzBG,GACI,Y,OAAO,EAAJG,MAAmB,KAE1Cf,SAAAA,G,IAAKA,EAAAA,OAAyB,QAAzBA,EAAc,QAAdA,EAAAA,EAAEO,oBAAY,IAAdP,OAAAA,EAAAA,EAAgBgB,iBAAS,IAAzBhB,EAAAA,EAA6B,MAGzBiB,EAAgBpY,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOzBmX,SAAAA,G,IAAKA,EAAAA,OAA6B,QAA7BA,EAAc,QAAdA,EAAAA,EAAEO,oBAAY,IAAdP,OAAAA,EAAAA,EAAgBkB,qBAAa,IAA7BlB,EAAAA,EAAiC,MEjB1C,EAhCoC,Y,IAChCmB,EAAS,EAATA,UACAC,EAAU,EAAVA,WACAC,EAAY,EAAZA,aACAC,EAAgB,EAAhBA,iBACAxZ,EAAQ,EAARA,SACAyZ,EAAgB,EAAhBA,iBAEA,OACI,SAACnY,EAAgB,CAACmX,aAAcgB,E,SAC3B3e,MAAMwe,GAAYld,KAAK,MAAMM,KAAI,SAACxB,EAAGyB,G,OAClC,UAAC2E,EAAe,CAEZqX,OAAQhc,IAAU4c,EAClBnU,QAAS,W,OAAMiU,EAAU1c,IACzB8b,aAAcgB,E,WAEd,SAACnY,EAAM,CACHqX,OAAQhc,IAAU4c,EAClBd,aAAcgB,KAElB,SAACnY,EAAa,CACVqX,OAAQhc,IAAU4c,EAClBN,KAAMjZ,EAAWwZ,EAAmB,IAAO,EAC3Cf,aAAcgB,MAZb9c,S,sTCvBlB,IAAMuG,EAAYnC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAML,Y,OAAc,EAAX2Y,YAAgC,EAAI,MACxC,Y,OAAgB,EAAb5Z,cAAoC,EAAI,MAC5C,Y,OAAgB,EAAbA,cAAoC,EAAI,MCkBvD6Z,EAAoC,SAACxe,GACvC,OAAQA,GACJ,IAAK,eACD,MAAO,CACHye,QAPK,IASb,IAAK,cACD,MAAO,CACHtF,MAAO,GAAkB,QAVlB,GAUkB,OAEjC,IAAK,aACD,MAAO,CACHuF,KAAM,GAAkB,QAdjB,GAciB,OAEhC,QAAS,SAyEjB,EArEyC,Y,IACrCC,EAAwB,EAAxBA,YACAC,EAAsB,EAAtBA,WACAC,EAAQ,EAARA,SACAla,EAAa,EAAbA,cACAma,EAAe,EAAfA,gBACAP,EAAW,EAAXA,YAAW,IACXF,iBAAAA,OAAgB,IAAG,EA7BW,IA6Bc,EAC5CxZ,EAAQ,EAARA,SACAka,EAAS,EAATA,UACAT,EAAgB,EAAhBA,iBACGtY,GAAK,UAVR2Y,cACAC,aACAC,WACAla,gBACAma,kBACAP,cACAF,mBACAxZ,WACAka,YACAT,qBAG4C3O,GAAAA,EAAAA,EAAAA,WAAS,GAA9CqP,EAAqCrP,EAAe,GAApCsP,EAAqBtP,EAAe,GACrDuP,EAAQC,GAAeC,EACvBC,EAAOC,GAAcC,EACrBC,GAAYpN,EAAAA,EAAAA,WAElBqN,EAAAA,EAAAA,YAAU,W,IACND,EAAS,OAATA,QAAS,IAATA,GAAkB,QAAlBA,EAAAA,EAAW3F,eAAO,IAAlB2F,GAAAA,EAAoBE,kBACrB,CAAC/a,EAAema,IAEnB,IAAMa,EAAkB,WAChB9a,GACAoa,GAAkB,IAIpBW,EAAiB,WACf/a,GACAoa,GAAkB,IAI1B,OACI,SAAC9Y,EAAY,CACToY,YAAaA,GAAeO,EAC5Bna,cAAeA,GAAiBma,EAChCe,aAAcF,EACdG,WAAYF,EACZG,YAAaJ,EACbK,WAAYJ,EACZb,UAAWA,E,UAEX,SAACkB,EAAAA,IAAU,gBACPrN,IAAK4M,EAELU,2BAA4B1B,EAC5B2B,yBAA0B,Y,IAAGhD,EAAa,EAAbA,c,OAAoBxY,IAAiB,SAACua,EAAK,CAAC/B,cAAeA,KACxFiD,0BAA2B,Y,IAAGhD,EAAS,EAATA,U,OAAgBzY,IAAiB,SAACua,EAAK,CAAC9B,UAAWA,KACjFiD,2BAA4B,SAACra,G,OAAUuY,IAC/B,SAACc,GAAI,kBACGrZ,GAAK,CACTqY,iBAAkBA,EAClBxZ,YAAaA,GAAama,GAC1BV,iBAAkBA,MAG9BD,iBAAkBA,EAClBxZ,SAAUA,EACVia,gBAAiBA,GACb9Y,GAAK,C,SAER6Y,S,qiBC7FV,IAAMnW,EAAwB,SAACuH,GAClC,IAAKA,EACD,MAAO,GAGX,IAAQtH,EAAiBsH,EAAjBtH,IAAKC,EAAYqH,EAAZrH,QAEb,OAAKA,GAMEkD,EAAAA,EAAAA,KAAG,IACkBnD,EAGdC,EACAD,EAIAC,EACAD,IAfHmD,EAAAA,EAAAA,KAAG,IACkBnD,K,kBCzBpC2X,EAAOC,QAAU,skU,kBCAjBD,EAAOC,QAAU,uW","sources":["webpack://_N_E/?128e","webpack://_N_E/./src/features/yandex-landing/utils/index.ts","webpack://_N_E/./src/features/yandex-landing/data/index.ts","webpack://_N_E/./src/features/yandex-landing/Benefits/styled.ts","webpack://_N_E/./src/features/yandex-landing/Benefits/index.tsx","webpack://_N_E/./src/features/yandex-landing/PriceBlock/styled.ts","webpack://_N_E/./src/features/yandex-landing/PriceBlock/index.tsx","webpack://_N_E/./src/features/yandex-landing/BonusBanner/styled.ts","webpack://_N_E/./src/features/yandex-landing/BonusBanner/index.tsx","webpack://_N_E/./src/features/yandex-landing/CarouselRow/styled.ts","webpack://_N_E/./src/features/yandex-landing/CarouselRow/index.tsx","webpack://_N_E/./src/features/yandex-landing/HeaderTextBlock/styled.ts","webpack://_N_E/./src/features/yandex-landing/HeaderTextBlock/index.tsx","webpack://_N_E/./src/features/yandex-landing/styled.ts","webpack://_N_E/./src/features/yandex-landing/Header/styled.ts","webpack://_N_E/./src/features/yandex-landing/Header/index.tsx","webpack://_N_E/./src/features/yandex-landing/PlusesBlock/styled.ts","webpack://_N_E/./src/features/yandex-landing/PlusesBlock/index.tsx","webpack://_N_E/./src/features/yandex-landing/RoutesBanner/styled.ts","webpack://_N_E/./src/features/yandex-landing/RoutesBanner/index.tsx","webpack://_N_E/./src/features/yandex-landing/SmartStationCarousel/styled.ts","webpack://_N_E/./src/features/yandex-landing/SmartStationCarousel/index.tsx","webpack://_N_E/./src/features/yandex-landing/YandexStationCards/YandexStationCard/index.tsx","webpack://_N_E/./src/features/yandex-landing/YandexStationCards/index.tsx","webpack://_N_E/./src/features/yandex-landing/YandexCatalog/styled.ts","webpack://_N_E/./src/features/yandex-landing/YandexCatalog/index.tsx","webpack://_N_E/./src/features/yandex-landing/index.tsx","webpack://_N_E/./pages/_site/[city]/internet/yandex-stanciya/index.tsx","webpack://_N_E/./src/api/content/shop/getShopItems.ts","webpack://_N_E/./src/api/requests/contentRequest.js","webpack://_N_E/./src/helpers/accessMode.ts","webpack://_N_E/./src/helpers/hooks/useScroll.ts","webpack://_N_E/./src/helpers/numbers.js","webpack://_N_E/./src/store/actions/intercom.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/domofon-action/index.ts","webpack://_N_E/../../packages/api-domru/src/full-buy/v1/equipment/index.ts","webpack://_N_E/../../packages/shared/src/helpers/pluralize/index.ts","webpack://_N_E/../../packages/shared/src/helpers/pluralize/predifined.ts","webpack://_N_E/../../packages/shared/src/helpers/truncate.ts","webpack://_N_E/../../packages/shared/src/types/EPriceTypes.ts","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultArrow/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultDots/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultArrow/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultDots/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/helpers/image.ts","webpack://_N_E/./static/images/yandex-landing/yandex-station.svg","webpack://_N_E/../../packages/ui-react/src/components/NukaCarousel/DefaultArrow/arrow.svg"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_site/[city]/internet/yandex-stanciya\",\n function () {\n return require(\"private-next-pages/_site/[city]/internet/yandex-stanciya/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_site/[city]/internet/yandex-stanciya\"])\n });\n }\n ","import { IEquipment } from '@r1-frontend/api-domru/full-buy/v1/equipment/dto/Equipment.dto';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\nimport { ACTIONS, CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport type { IPopupProps } from '~/src/features/router/order-card';\nimport { CAROUSEL_STATION_COUNT_SLIDES } from '~/src/features/yandex-landing/constants';\nimport type { TCarouselImgUrl, TDataLayer, TSort } from '~/src/features/yandex-landing/utils/types';\n\n/**\n * Получить массив с id для CarouselStationData\n *\n * @function\n * @name utils.getIdsForCarouselStation\n * @returns {number[]}\n */\nexport const getIdsForCarouselStation = (): number[] => [...Array(CAROUSEL_STATION_COUNT_SLIDES)].map((_, index) => index++);\n\n/**\n * Данные для результирующего попапа\n *\n * @function\n * @name utils.getPopupResultData\n * @param {boolean} result - результат запроса\n * @param {string} message - сообщение ответа\n * @returns {Omit}\n */\nexport const getPopupResultData = ({ result, message } : { result: boolean, message: string }): Omit => {\n return {\n isResultOpened: true,\n resultType: result ? EResultPopupStatus.SUCCESS : EResultPopupStatus.ERROR,\n resultTitle: result ? 'Заявка отправлена' : 'Произошла ошибка',\n resultText: message || (result ? 'Мы свяжемся с вами в ближайшее время' : 'Что-то пошло не так, попробуйте позже.'),\n };\n};\n\n/**\n * Получить конечные позиции карточки в карусели - секция каталог\n *\n * @name data.getEndCarouselRowPos\n * @param {number} countCards - максимальное кол-во карточек ЯСтанций\n * @type {number[]}\n */\nexport const getEndCarouselRowPos = (countCards: number): number[] => {\n const maxCountInRow = 4;\n const endPosCount = Math.ceil(countCards / maxCountInRow);\n const prevCorrection = 1;\n return (Array.from(Array(endPosCount)).reduce((newArr, _, key) => {\n newArr.push(key ? newArr[key - prevCorrection] + maxCountInRow : maxCountInRow);\n return newArr;\n }, []));\n};\n\n/**\n * Получить начальные позиции карточки в карусели - секция каталог\n *\n * @name data.getStartCarouselRowPos\n * @param {number} countCards - максимальное кол-во карточек ЯСтанций\n * @type {number[]}\n */\nexport const getStartCarouselRowPos = (countCards: number): number[] => {\n const defaultPos = 0;\n const startCarouselRowPos = getEndCarouselRowPos(countCards);\n startCarouselRowPos.unshift(defaultPos);\n return startCarouselRowPos;\n};\n\n/**\n * Получить массив-шаблон для текущего кол-ва карточек, для правильного построения блоков карусели\n * [4] - один блок 4 карточки, [4,3] - два блока, второй из 3 элементов, [4,4,2] - три блока, третий из 2 элементов и тд.\n *\n * @function\n * @name utils.getArrTemplateForCountCards\n * @param {IShopItem[]} yandexStationData - данные карточек\n * @returns {number[]}\n */\nexport const getArrTemplateForCountCards = (yandexStationData: IEquipment[]): number[] => {\n const arrTemplate = [];\n const zero = 0;\n const nextPos = 1;\n const cardsLength = yandexStationData.length;\n const endCarouselRowPos = getEndCarouselRowPos(cardsLength);\n const [maxCountFirstLine] = endCarouselRowPos;\n\n if (yandexStationData.length) {\n arrTemplate.push(maxCountFirstLine);\n }\n\n [...endCarouselRowPos.keys()].forEach((key) => {\n if (cardsLength > endCarouselRowPos[key]) {\n arrTemplate.push(maxCountFirstLine -\n ((endCarouselRowPos[key + nextPos] - cardsLength) < zero\n ? zero\n : (endCarouselRowPos[key + nextPos] - cardsLength)));\n }\n });\n\n return arrTemplate;\n};\n\n\n/**\n * Получить массив параметров для CarouselStationData (первый блок отличный от остальных)\n *\n * @function\n * @name utils.getDataOfOneDiffParams\n * @param {string} soleParam - параметр отличающийся от других\n * @param {string} otherParam - остальные параметры\n * @returns {string[]}\n */\nexport const getDataOfOneDiffParams = ({ soleParam, otherParam }: Record): string[] => {\n const startPos = 1;\n return Array(CAROUSEL_STATION_COUNT_SLIDES).fill(soleParam).fill(otherParam, startPos);\n};\n\n/**\n * Получить объект с опорными массивами для построения динамической сетки (row, col)\n *\n * @function\n * @name utils.getReferenceDataArray\n * @param {number} maxCountYandexCard - максимальное кол-во карточек ЯСтанций\n * @returns {Record => {\n const allowEmptyArrayCorrection = 1;\n const referenceArrayLength = maxCountYandexCard + allowEmptyArrayCorrection;\n const initDataValue = 0;\n const columnCount = 4;\n const maxColumnCountPos = 4;\n const row = {\n firstRowPos: 1,\n secondRowPos: 5,\n thirdRowPos: 10,\n oneRow: 1,\n twoRow: 2,\n threeRow: 3,\n };\n\n return {\n row: Array(referenceArrayLength).fill(initDataValue).fill(row.oneRow, row.firstRowPos)\n .fill(row.twoRow, row.secondRowPos).fill(row.threeRow, row.thirdRowPos),\n column: [...Array(referenceArrayLength)].map((_, index) => index++).fill(columnCount, maxColumnCountPos),\n };\n};\n\n/**\n * Получить url картинки для карусели секции умная колонка в зависимости от разрешения\n *\n * @function\n * @name utils.getCarouselImgUrl\n * @param {string} url - базовый урл\n * @param {string} id - порядковый номер блока\n * @param {\".jpg\"} type - расширение картинки\n * @param {Record} mediaData - объект с данными о разрешении\n * @returns {string}\n */\nexport const getCarouselImgUrl = ({ url, id, type, mediaData }: TCarouselImgUrl): string => {\n type TKey = keyof typeof mediaData;\n for (const key in mediaData) {\n if (mediaData[key as TKey]) {\n return `${url + key + '-' + id + type}`;\n }\n }\n return `${url + id + type}`;\n};\n\n/**\n * Функция сравнения для метода сортировки yandexStationData (Сортирует карточках ЯСтанций по value от 1 до 4 по порядку)\n *\n * @function\n * @name utils.sortFunctionByType\n * @param {IShopItem} a - сравниваемый элемент\n * @param {IShopItem} b - сравниваемый элемент\n * @returns {number}\n */\nexport const sortFunctionByType = (a: IEquipment, b: IEquipment): number => {\n const unFilteredValue = 0;\n const firstElem = a as TSort;\n const secondElem = b as TSort;\n const [arrFirstElem] = firstElem.props;\n const [arrSecondElem] = secondElem.props;\n if (!arrFirstElem?.value || !arrSecondElem?.value) {\n return unFilteredValue;\n }\n /** Ввиду того, что value приходит в строковом формате - '[1]' | '[2]' и тд. */\n const secondSymbol = 1;\n return Number(arrFirstElem.value[secondSymbol]) - Number(arrSecondElem.value[secondSymbol]);\n};\n\n/**\n * Функция сравнения для метода сортировки yandexStationData (Сортирует карточках ЯСтанций по параметру sort)\n *\n * @function\n * @name utils.sortFunctionBySort\n * @param {IShopItem} a - сравниваемый элемент\n * @param {IShopItem} b - сравниваемый элемент\n * @returns {number}\n */\nexport const sortFunctionBySort = (a: IEquipment, b: IEquipment): number => {\n const firstElem = typeof a.sort === 'number' ? a.sort : 1000;\n const secondElem = typeof b.sort === 'number' ? b.sort : 1000;\n return firstElem - secondElem;\n};\n\n/**\n * Функция отправки аналитики\n *\n * @function\n * @name utils.dataLayerPushWrap\n * @param {(ref: TRef) => void} [callback] - колбек функция\n * @param {string} label - дополнительные свойства события как название акции/партнёрского сервиса/продукта и тд.\n * @param {string} [action] - тип действия события\n * @returns {void}\n */\nexport const dataLayerPushWrap = ({ callback, label, action = ACTIONS.clickOnBtn }: TDataLayer): void => {\n callback && callback();\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.landing,\n action,\n label,\n });\n};\n","import { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { MDASH, NBSP } from '@r1-frontend/ui-react/tokens/symbols';\n\nimport { DEFAULT_URL, EPlusesCategory, STATION_IMG_URL } from '~/src/features/yandex-landing/constants';\nimport type { TBenefits, TCarouselStation, TGraphic, TPriceData } from '~/src/features/yandex-landing/data/types';\nimport { getDataOfOneDiffParams } from '~/src/features/yandex-landing/utils';\n\n/**\n * @name data.globalId\n * @type {number}\n */\nlet globalId = 0;\n\n/**\n * Данные блока баннер в хедере\n *\n * @name data.benefits\n * @type {TBenefits[]}\n */\nexport const benefits: TBenefits[] = [\n { imgUrl: `${DEFAULT_URL}yandex-station-icon.svg`, text: 'Яндекс.Станция Лайт', id: globalId++ },\n { imgUrl: `${DEFAULT_URL}subscribe.svg`, text: 'Подписка Яндекс Плюс на 1 месяц', id: globalId++ },\n { imgUrl: `${DEFAULT_URL}delivery.svg`, text: 'Бесплатная доставка и установка', id: globalId++ },\n];\n\n/**\n * Данные блока c ценой в хедере\n *\n * @name data.priceData\n * @type {TPriceData[]}\n */\nexport const priceData: TPriceData[] = [\n { price: '', title: 'Цена Дом.ру', id: globalId++ },\n];\n\n/**\n * Данные для карусели в хедере\n *\n * @name data.headerCarouselRowData\n * @type {TBenefits[]}\n */\nexport const headerCarouselRowData: TBenefits[] = [\n { imgUrl: `${STATION_IMG_URL}max.png`, imgWebpUrl: `${STATION_IMG_URL}max.webp`, text: 'Яндекс Станция Макс с Zigbee', id: globalId++, type: 'maxi' },\n { imgUrl: `${STATION_IMG_URL}default.png`, imgWebpUrl: `${STATION_IMG_URL}default.webp`, text: 'Яндекс Станция Стандарт 2', id: globalId++, type: 'standart' },\n { imgUrl: `${STATION_IMG_URL}midi.png`, imgWebpUrl: `${STATION_IMG_URL}midi.webp`, text: 'Яндекс Станция Миди', id: globalId++, type: 'midi' },\n { imgUrl: `${STATION_IMG_URL}mini.png`, imgWebpUrl: `${STATION_IMG_URL}mini.webp`, text: 'Яндекс Станция Мини с часами', id: globalId++, type: 'mini' },\n { imgUrl: `${STATION_IMG_URL}light.png`, imgWebpUrl: `${STATION_IMG_URL}light.webp`, text: 'Яндекс Станция Лайт', id: globalId++, type: 'light' },\n];\n\n/**\n * Данные для графических блоков в разделе \"Плюсы\"\n *\n * @name data.graphicData\n * @type {TGraphic[]}\n */\nexport const graphicData: TGraphic[] = [\n {\n area: EPlusesCategory.musicAndMovie,\n id: globalId++,\n gradient: '327.54deg, #eea64d 5.62%, #ac4ebb 38.28%, #505ed5 68.49%',\n label: {\n desktop: `${DEFAULT_URL}Ylabel-desktop.png`,\n mobile: `${DEFAULT_URL}Ylabel-desktop.png`,\n },\n imgUrl: `${DEFAULT_URL}services.svg`,\n initialTypeIsRow: true,\n title: `Кино${NBSP}и музыка \\nв одной подписке`,\n subText: `Слушайте персональные плейлисты на${NBSP}Яндекс.Музыке, выбирайте что \\nпосмотреть` +\n ` из${NBSP}огромного каталога Кинопоиска и получайте баллы Плюса. `,\n },\n {\n area: EPlusesCategory.freeDelivery,\n id: globalId++,\n gradient: '132.21deg, #FFF8D2 -1.29%, #F8DBB9 97.33%',\n imgUrl: `${DEFAULT_URL}delivery-station.png`,\n title: 'Бесплатная доставка\\nи установка',\n subText: `Привезем к${NBSP}вам домой в${NBSP}удобное время`,\n },\n {\n area: EPlusesCategory.installment,\n id: globalId++,\n layoutImg: `${DEFAULT_URL}installment-layout.png`,\n imgUrl: `${DEFAULT_URL}installment.png`,\n title: 'Есть, что выбрать',\n subText: `Разнообразие моделей и${NBSP}расцветок${NBSP}${MDASH} под любой интерьер и${NBSP}задачи`,\n hasImgStyle: {\n tablet: true,\n mobile: true,\n },\n },\n {\n area: EPlusesCategory.useNow,\n id: globalId++,\n gradient: '180deg, #ffde52 0, #ffe46a 100%',\n imgUrl: `${DEFAULT_URL}now.png`,\n title: 'Пользуйтесь сразу',\n subText: `Все настроим, покажем и${NBSP}ответим на${NBSP}вопросы`,\n hasImgStyle: {\n tablet: true,\n },\n },\n];\n\n/**\n * Общие пропсы слайдеров\n *\n * @name data.commonPropsSlider\n * @type {Object}\n */\nexport const commonPropsSlider = {\n showArrows: false,\n infinite: true,\n align: 'center',\n};\n\n/**\n * Пропсы для Slider в секции каталог\n *\n * @name data.sliderPropsCatalog\n * @type {Object}\n */\nexport const sliderPropsCatalog = {\n slidesToShow: 3,\n wrapAround: true,\n withoutArrows: true,\n};\n\n/**\n * Пропсы для Slider в секции умная-колонка\n *\n * @name data.sliderPropsSmartStation\n * @type {Object}\n */\nexport const sliderPropsSmartStation = {\n slidesToShow: 1,\n autoplay: true,\n autoplayDelay: 1000,\n ...commonPropsSlider,\n};\n\n/**\n * Данные для карусели в разделе \"Умная колонка\"\n *\n * @name data.CarouselStationData\n * @type {TCarouselStation}\n */\nexport const CarouselStationData: TCarouselStation = {\n titleMain: ['Показывает кино', 'Ставит музыку', 'Развлекает детей', 'Управляет приборами', 'Помогает по дому'],\n subTextMain: [\n 'Достаточно подключить колонку \\nк телевизору или проектору',\n 'Вы только попросите',\n 'А дети её за это любят',\n 'Но только умными и только \\nс вашего позволения',\n 'И никогда не устаёт',\n ],\n imgUrlBaseMain: {\n url: `${DEFAULT_URL}carousel-img-`,\n type: '.jpg',\n },\n iconUrlBase: {\n iconUrl: `${DEFAULT_URL}slips-icons/icon-`,\n typeIcon: '.svg',\n },\n slipText: [\n ['Весь КиноПоиск в \\nодной колонке', 'Голос вместо пульта', 'Объёмный звук \\nкак в кино'],\n ['Миллионы треков \\nи подкастов', 'Все российские \\nрадиостанции', 'Успокаивающие \\nзвуки природы'],\n ['Расскажет \\nна ночь сказку', 'Научит новому \\nи полезному', 'Устроит квест \\nили поиграет'],\n ['Выключит свет, \\nесли вы забыли', 'Вскипятит воду \\nв чайнике', 'Запустит стирку \\nили посудомойку'],\n ['Поставит таймер \\nили будильник', 'Расскажет \\nпрогноз погоды', 'Подскажет, что \\nи как приготовить'],\n ],\n backgroundColor: ['#eeeef0', '#02474f', '#7f2200', '#1a103a', '#986f70'],\n positionText: getDataOfOneDiffParams({ soleParam: '0', otherParam: '-270px' }),\n textColor: getDataOfOneDiffParams({ soleParam: COLORS.black, otherParam: COLORS.white }),\n};\n","import styled from 'styled-components';\n\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport type { TBenefits } from '~/src/features/yandex-landing/data/types';\n\nexport const Benefits = styled.div`\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const BenefitsRow = styled.div`\n gap: 12px;\n align-items: center;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n gap: 11px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n gap: 12px;\n }\n`;\n\nexport const Icon = styled.div<{ imgUrl: TBenefits['imgUrl'] }>`\n width: 14px;\n height: 14px;\n background-image: url('${(props) => props.imgUrl}');\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n`;\n\nexport const HeaderWrapper = styled.div`\n gap: 76px;\n\n @media (max-width: ${breakPoints.desktop}) {\n gap: 41px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n gap: 49px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n gap: 41px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column;\n gap: 34px;\n }\n`;\n\nexport const BenefitsText = styled.div`\n ${FONTS.XS};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XXS};\n }\n`;\n","import React from 'react';\n\nimport { benefits } from '~/src/features/yandex-landing/data';\n\nimport * as ST from './styled';\n\nconst Benefits: React.FC = () => {\n\n return (\n \n {benefits.map(({ id, imgUrl, text }) => (\n \n \n \n {text}\n \n \n ))}\n \n );\n};\n\nexport default Benefits;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport InputSimple, { phoneDecorator } from '@r1-frontend/ui-react/components/inputSimple';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\n\nconst InputPhoneDecorator = phoneDecorator(InputSimple);\n\nexport const PriceBlock = styled.div`\n flex-direction: column;\n gap: 32px;\n margin-top: 15px;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n margin-top: 14px;\n gap: 14px;\n }\n`;\n\nexport const FirstLine = styled.div`\n flex-direction: row;\n`;\n\nexport const SecondLine = styled.div`\n gap: 12px;\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n gap: 8px;\n }\n`;\n\nexport const PriceRow = styled.div`\n align-self: end;\n margin-left: 82px;\n margin-right: 61px;\n\n @media (min-width: ${wideBreakpoints.sDesktop}) {\n margin-left: 82px;\n margin-right: 61px;\n }\n\n @media (min-width: ${wideBreakpoints.laptop}) {\n margin-left: 39px;\n margin-right: 55px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n margin-left: 39px;\n margin-right: 55px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin: 0;\n margin-top: 8px;\n }\n`;\n\nexport const PriceText = styled.div`\n ${FONTS.XXS};\n color: ${COLORS.middleGray};\n\n sup {\n top: 3px;\n font-size: 13px;\n }\n`;\n\nexport const PriceContainer = styled.div`\n flex-direction: column;\n gap: 5px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n align-items: center;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n align-items: normal;\n }\n`;\n\nexport const CurrentPrice = styled.div`\n ${FONTS.H4};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H5};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.H4};\n }\n`;\n\nexport const InputPhone = styled(InputPhoneDecorator)`\n margin-bottom: 0;\n width: 283px;\n\n @media (min-width: ${wideBreakpoints.sDesktop}) {\n width: 283px;\n }\n\n @media (min-width: ${wideBreakpoints.laptop}) {\n width: 224px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n width: 224px;\n }\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const BannerButton = styled(BaseButton)`\n ${FONTS.S};\n height: fit-content;\n width: 220px;\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const ThrobberGlobal = styled.div`\n width: 100%;\n position: fixed;\n left: 0;\n top: 50%;\n z-index: 3;\n`;\n","import React, { useMemo } from 'react';\n\nimport { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\n\nimport Benefits from '~/src/features/yandex-landing/Benefits';\nimport type { IBonusBanner } from '~/src/features/yandex-landing/BonusBanner/types';\nimport { priceData } from '~/src/features/yandex-landing/data';\nimport type { TPriceData } from '~/src/features/yandex-landing/data/types';\nimport FeedbackForm from '~/src/features/yandex-landing/FeedbackForm';\n\nimport * as ST from './styled';\n\nconst PriceBlock: React.FC = ({ stationLight, city }) => {\n\n const createComponent = ({ tag, text }: Required['componentProps']): JSX.Element => {\n return React.createElement(tag, null, text);\n };\n\n const currentPrice = useMemo(\n () => stationLight.pricesV2?.find(({ type }) => type === EPriceTypes.Possess)?.value,\n [stationLight],\n );\n\n return (\n \n \n \n \n {priceData.map(({ id, title, price, componentProps }) => (\n \n \n {title}\n {componentProps && createComponent(componentProps)}\n \n {price || currentPrice + ' ₽'}\n \n ))}\n \n \n \n \n );\n};\n\nexport default PriceBlock;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\n\nexport const BonusWrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: fit-content;\n position: relative;\n padding: 14px 19px 34px 24px;\n background-color: ${COLORS.white};\n border-radius: ${BorderRadius.OuterBlockRadius};\n margin-top: 16px;\n\n @media (min-width: ${wideBreakpoints.sDesktop}) {\n padding: 14px 19px 26px 24px;\n margin-top: 37px;\n }\n\n @media (min-width: ${wideBreakpoints.laptop}) {\n padding: 14px 26px 26px 21px;\n margin-top: 27px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n padding: 14px 26px 26px 21px;\n margin-top: 12px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: 24px;\n margin-top: 8px;\n }\n\n &:after {\n content: '';\n height: 177px;\n width: 500px;\n position: absolute;\n top: 0;\n left: -500px;\n background-color: transparent;\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 0;\n }\n }\n`;\n\nexport const BannerTitle = styled.div`\n width: fit-content;\n ${FONTS.H3};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H4};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.H3};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n ${FONTS.H4};\n justify-content: center;\n }\n`;\n","import React from 'react';\n\nimport type { IBonusBanner } from '~/src/features/yandex-landing/BonusBanner/types';\nimport PriceBlock from '~/src/features/yandex-landing/PriceBlock';\n\nimport * as ST from './styled';\n\nconst BonusBanner: React.FC = ({ stationLight, city }) => {\n return (\n \n \n Что вы получаете:\n \n \n \n );\n};\n\nexport default BonusBanner;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { progressiveBackground } from '@r1-frontend/ui-react/components/helpers/image';\n// @ts-ignore\nimport Carousel from '@r1-frontend/ui-react/deprecated/carousel';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { BreakPointsMFirst } from '~/src/constants/breakpoints';\n\nexport const TagText = styled.span`\n width: 100%;\n white-space: normal;\n`;\n\nexport const StationImg = styled.span<{imgUrl: string, imgWebpUrl?: string}>`\n width: 73px;\n height: 56px;\n ${({ imgUrl, imgWebpUrl }) => progressiveBackground({\n src: imgUrl,\n webpSrc: imgWebpUrl,\n })};\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n\n @media (max-width: ${breakPoints.desktop}) {\n width: 56px;\n }\n`;\n\nexport const CarouselWrapperTablet = styled(Carousel)`\n margin-top: 54px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n margin-top: 64px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-top: 32px;\n }\n`;\n\nexport const StationTag = styled.a<{text: string}>`\n display: inline-flex;\n height: 88px;\n width: calc(100% - 23px);\n padding: 16px 22px 16px 30px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n align-items: center;\n gap: 26px;\n flex-basis: calc(25% - 24px);\n cursor: pointer;\n text-decoration: none;\n outline: none;\n background-color: ${COLORS.white};\n color: ${COLORS.black};\n ${FONTS.H4};\n\n @media (max-width: ${breakPoints.desktop}) {\n padding: 16px 11px 16px 15px;\n gap: 22px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n height: 77px;\n padding: 14px 10px 20px 8px;\n gap: 8px;\n ${FONTS.H5};\n }\n\n @media (min-width: ${BreakPointsMFirst.mobile}) and (max-width: ${breakPoints.tablet}) {\n height: 88px;\n padding: 16px 45px 16px 30px;\n ${FONTS.H4};\n gap: 32px;\n }\n\n &:hover {\n box-shadow: 0 4px 24px rgba(0, 0, 0, .08);\n }\n\n &:active {\n box-shadow: 0 1px 8px rgba(0, 0, 0, .08);\n }\n`;\n","import React, { RefObject, useCallback, useMemo } from 'react';\n\nimport { EMediaWidth } from '@r1-frontend/ui-react/tokens/mediaWidth';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { commonPropsSlider, headerCarouselRowData } from '~/src/features/yandex-landing/data';\nimport type { TBenefits } from '~/src/features/yandex-landing/data/types';\nimport type { IStationSections } from '~/src/features/yandex-landing/types';\nimport { dataLayerPushWrap } from '~/src/features/yandex-landing/utils';\nimport { useScroll } from '~/src/helpers/hooks/useScroll';\n\nimport * as ST from './styled';\n\ninterface ICarouselRow {\n catalogMimicFormRef: RefObject,\n stationSections: IStationSections[],\n}\n\nconst CarouselRow: React.FC = ({ catalogMimicFormRef, stationSections }) => {\n const isTablet = useMatchMedia(EMediaWidth.tabletOnly);\n const isMobile = useMatchMedia(EMediaWidth.mobile);\n const scrollToRef = useScroll({ alignment: 'start' });\n\n const filterStations = useCallback((section: TBenefits) => {\n return stationSections.find(item => item.type === section.type)?.inStock;\n }, [stationSections]);\n\n const yandexStationData = useMemo((): TBenefits[] => {\n return headerCarouselRowData.filter(filterStations);\n }, [filterStations]);\n\n const onScrollWrapper = useCallback((text: string) => {\n dataLayerPushWrap({ label: text, callback: () => scrollToRef(catalogMimicFormRef) });\n }, []);\n\n return (<>\n {!isMobile && \n {yandexStationData.map(({ id, text, imgUrl, imgWebpUrl }) => (\n onScrollWrapper(text)}\n >\n \n \n {text}\n \n \n ))}\n }\n );\n};\n\nexport default CarouselRow;\n","import styled from 'styled-components';\n\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\n\nexport const HeaderTextWrapper = styled.div`\n margin-top: 77px;\n width: 610px;\n gap: 4px;\n\n @media (max-width: ${breakPoints.desktop}) {\n margin-top: 117px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n margin-top: 77px;\n width: 485px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-top: 58vw;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-top: 60vw;\n width: auto;\n }\n\n @media (max-width: 375px) {\n margin-top: 90vw;\n }\n`;\n\nexport const H1 = styled.h1`\n margin: 0;\n`;\n\nexport const HeaderSubtext = styled.div`\n ${FONTS.L};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.M};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n ${FONTS.L};\n }\n\n @media (max-width: ${breakPoints.sMobile}) {\n ${FONTS.S};\n }\n`;\n\n\nexport const LogoYandexStation = styled.img`\n width: 180px;\n height: 32px;\n\n @media (max-width: ${breakPoints.desktop}) {\n width: 130px;\n height: 23px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 195px;\n height: 33px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 100px;\n height: 18px;\n }\n`;\n","import React from 'react';\n\nimport { H1 } from '@r1-frontend/ui-react/components/typography/heading';\n\nimport LogoYandexStation from '~/static/images/yandex-landing/yandex-station.svg';\n\nimport * as ST from './styled';\n\nconst HeaderTextBlock: React.FC = () => {\n\n return (\n \n \n

\n Одна Станция —
много Плюсов\n

\n \n Выберите Станцию и оформите к ней подписку Яндекс Плюc.\n Пользуйтесь Кинопоиском, Яндекс.Музыкой и кешбэком баллами в сервисах Яндекса.\n \n
\n );\n};\n\nexport default HeaderTextBlock;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\n\nexport const LandingWrapper = styled.div`\n width: 100%;\n overflow: hidden;\n margin-bottom: -50px;\n background: ${COLORS.BgLight};\n \n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column;\n }\n`;\n\nexport const Container = styled.section`\n max-width: 1362px;\n margin: 0 auto;\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 300px;\n }\n`;\n\nexport const ContainerFeedbackForm = styled(Container)`\n width: 1362px;\n margin-bottom: 64px;\n box-sizing: content-box;\n padding: 0 90px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n padding: 0 34px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n padding: 0 16px;\n max-width: 288px;\n }\n`;\n\nexport const FeedbackFormWrapper = styled.div`\n position: relative;\n border-radius: 32px;\n background-color: ${COLORS.BgMain};\n justify-content: center;\n padding: 51px 0 33px 0;\n gap: 24px;\n\n @media (max-width: ${breakPoints.desktop}) {\n gap: 36px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n gap: 26px;\n height: 351px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n height: 395px;\n padding: 26px 17px 40px 17px;\n border-radius: 16px;\n gap: 0;\n }\n\n &:after {\n content: '';\n height: 262px;\n width: 150%;\n position: absolute;\n top: 0;\n z-index: -1;\n background-color: ${COLORS.BgMain};\n\n @media (max-width: ${breakPoints.tablet}) {\n height: 351px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 0;\n }\n }\n`;\n\nexport const InputWrapper = styled.div`\n flex-direction: row;\n flex-basis: 100%;\n gap: 26px;\n justify-content: center;\n\n @media (max-width: ${breakPoints.tablet}) {\n gap: 10px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n gap: 0;\n }\n`;\n\nexport const ButtonWrapper = styled.div`\n flex-direction: column;\n flex-basis: 30%;\n gap: 16px;\n\n @media (max-width: ${breakPoints.tablet}) {\n flex-basis: 100%;\n align-items: center;\n flex-direction: column-reverse;\n justify-content: end;\n gap: 0;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 254px;\n align-items: flex-start;\n }\n`;\n","import styled from 'styled-components';\n\nimport { NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { HEADER_IMG_URL } from '~/src/features/yandex-landing/constants';\n\nimport { Container } from '~/src/features/yandex-landing/styled';\n\nexport const HeaderBackground = styled.header`\n width: 100%;\n height: 872px;\n padding: 0 90px;\n background-image: url('${HEADER_IMG_URL}sDesktop.jpg');\n background-size: contain;\n background-repeat: no-repeat;\n background-position: top center;\n position: relative;\n max-width: 1550px;\n margin: auto;\n\n @media (min-width: ${breakPoints.sDesktop}) {\n height: 840px;\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 65%, rgba(250, 250, 250, 1) 100%), url('${HEADER_IMG_URL}sDesktop.jpg');\n\n ${NonStaticContainer} {\n right: 3.5%;\n }\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n height: 877px;\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 55%, rgba(250, 250, 250, 1) 65%), url('${HEADER_IMG_URL}sDesktop.jpg');\n padding: 0 34px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n height: fit-content;\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 45%, rgba(250, 250, 250, 1) 60%), url('${HEADER_IMG_URL}tablet.jpg');\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 35%, rgba(250, 250, 250, 1) 45%), url('${HEADER_IMG_URL}tablet.jpg');\n background-size: contain;\n padding: 0 16px;\n }\n\n @media (max-width: 375px) {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 35%, rgba(250, 250, 250, 1) 45%), url('${HEADER_IMG_URL}sMobile.jpg');\n }\n`;\n\nexport const ContainerHead = styled(Container)`\n flex-direction: column;\n`;\n\n\n","import React, { RefObject } from 'react';\n\nimport { IEquipment } from '@r1-frontend/api-domru/full-buy/v1/equipment/dto/Equipment.dto';\nimport { ICurrentCity } from '@r1-frontend/entities/City/models/ICurrentCity';\n\nimport BonusBanner from '~/src/features/yandex-landing/BonusBanner';\nimport CarouselRow from '~/src/features/yandex-landing/CarouselRow';\nimport HeaderTextBlock from '~/src/features/yandex-landing/HeaderTextBlock';\nimport type { IStationSections } from '~/src/features/yandex-landing/types';\n\nimport * as ST from './styled';\n\ninterface IHeader {\n callbackRef: RefObject,\n stationLight: IEquipment,\n stationSections: IStationSections[],\n city: ICurrentCity,\n}\n\nconst Header: React.FC = ({ callbackRef, stationLight, stationSections, city }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default Header;\n","import styled, { css } from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { H2, H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { BreakPointsMFirst } from '~/src/constants/breakpoints';\nimport { GRID_ORDER_CATEGORY } from '~/src/features/yandex-landing/constants';\nimport type { TGraphicItem, TImgBlock, TLabel } from '~/src/features/yandex-landing/PlusesBlock/types';\n\nimport { Container } from '~/src/features/yandex-landing/styled';\n\nexport const PlusesContainer = styled(Container)`\n width: 100%;\n box-sizing: content-box;\n padding: 0 90px;\n justify-content: center;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n padding: 0 34px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-top: 27px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 288px;\n margin-top: 46px;\n padding: 0 16px;\n }\n`;\n\nexport const PlusesTitle = styled(H2)`\n ${FONTS.H2};\n text-align: center;\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.H3};\n padding: 0;\n }\n`;\n\nexport const GraphicBlock = styled.div`\n display: grid;\n width: 100%;\n height: 680px;\n margin-top: 32px;\n grid-template-rows: 1fr 1.85fr;\n grid-template-columns: 1fr 1fr 1fr;\n grid-gap: 32px;\n grid-template-areas:\n '${GRID_ORDER_CATEGORY.desktop.firstRow}'\n '${GRID_ORDER_CATEGORY.desktop.secondRow}';\n\n @media (max-width: ${breakPoints.tablet}) {\n height: 878px;\n grid-template-rows: 1fr 1fr;\n grid-template-columns: 1fr 1fr;\n grid-template-areas:\n '${GRID_ORDER_CATEGORY.tablet.firstRow}'\n '${GRID_ORDER_CATEGORY.tablet.secondRow}';\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n height: 1780px;\n grid-template-rows: auto;\n grid-template-columns: 1fr;\n grid-template-areas:\n '${GRID_ORDER_CATEGORY.mobile.firstRow}'\n '${GRID_ORDER_CATEGORY.mobile.secondRow}'\n '${GRID_ORDER_CATEGORY.mobile.thirdRow}'\n '${GRID_ORDER_CATEGORY.mobile.fourthRow}';\n }\n`;\n\nexport const WantButton = styled(BaseButton)`\n width: 327px;\n margin: 48px auto 0 auto;\n ${FONTS.S};\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const GraphicItem = styled.div`\n grid-area: ${({ area }) => area};\n border-radius: ${BorderRadius.OuterBlockRadius};\n padding: 22px 26px;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n box-shadow: 0 4px 24px rgba(0, 0, 0, .08);\n\n ${(props) => props.gradient && css`\n background-image: linear-gradient(${props.gradient});\n `};\n\n ${(props) => props.layoutImg && css`\n background-image: url('${props.layoutImg}');\n background-size: 155%;\n\n @media (min-width: ${BreakPointsMFirst.sDesktop}) {\n background-size: 121%;\n }\n `};\n\n @media (max-width: ${breakPoints.tablet}) {\n height: 420px;\n padding: 22px 20px 30px 20px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n padding-right: 14px;\n padding-left: 14px;\n }\n\n ${(props) => props.theme.initialTypeIsRow && css`\n gap: 15px;\n\n @media (min-width: ${BreakPointsMFirst.mobile}) {\n gap: 18px;\n margin-top: 5px;\n }\n\n @media (min-width: ${BreakPointsMFirst.tablet}) {\n padding-right: 56px;\n gap: 20px;\n }\n\n @media (min-width: ${BreakPointsMFirst.sDesktop}) {\n padding-right: 46px;\n }\n\n @media (min-width: ${BreakPointsMFirst.desktop}) {\n padding: 26px 57px 31px 26px;\n }\n `};\n`;\n\nexport const StepAround = styled.div`\n position: absolute;\n width: 56px;\n height: 56px;\n justify-content: center;\n background-color: ${COLORS.BgMain};\n border-radius: 30px;\n ${FONTS.H1};\n`;\n\nexport const WrapperTop = styled.div`\n width: 100%;\n\n @media (max-width: ${breakPoints.tablet}) {\n justify-content: end;\n height: 56px;\n }\n`;\n\nexport const Label = styled.div`\n width: 135px;\n height: 32px;\n margin-left: 80px;\n margin-top: 12px;\n ${(props) => props.imgUrl && css`\n background-image: url('${props.imgUrl.desktop}');\n background-repeat: no-repeat;\n background-size: 100% 100%;\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 164px;\n height: 39px;\n margin-top: 8px;\n background-image: url('${props.imgUrl.mobile}');\n }\n `};\n`;\n\nexport const PriceMaxiBlock = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n text-align: center;\n width: 93.82px;\n height: 24.55px;\n top: 30%;\n left: 48%;\n font-size: 14.03px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 93.82px;\n height: 24.55px;\n top: 32%;\n left: 48%;\n font-size: 14.03px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 105.53px;\n height: 26.86px;\n top: 30%;\n left: 48%;\n font-size: 15.35px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 105.53px;\n height: 26.86px;\n top: 25%;\n left: 43%;\n font-size: 15.35px;\n }\n\n ${(props) => props.imgUrl && css`\n background-image: url('${props.imgUrl}');\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n background-size: 100%;\n `};\n`;\n\nexport const PriceLightBlock = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 100%;\n text-align: center;\n\n width: 87.68px;\n height: 25.43px;\n top: 45%;\n left: 40%;\n font-size: 14.03px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 87.68px;\n height: 25.43px;\n top: 46%;\n left: calc(32vw - 235px);\n font-size: 14.03px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 95.23px;\n height: 27.82px;\n top: 45%;\n left: 38%;\n font-size: 15.35px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 95.23px;\n height: 27.82px;\n top: 38%;\n left: 28%;\n font-size: 15.35px;\n }\n\n ${(props) => props.imgUrl && css`\n background-image: url('${props.imgUrl}');\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n background-size: 100%;\n `};\n`;\n\nexport const ImgBlock = styled.div`\n width: calc(100% + 52px);\n height: 297px;\n border-radius: 16px;\n margin: -22px -26px 0 -26px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${(props) => props.hasImgStyle?.tablet && css`\n background-size: 120%;\n `};\n background-position: center;\n height: 350px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: calc(100% + 40px);\n height: 317px;\n background-position: center;\n margin: -22px -20px 0 -20px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: calc(100% + 28px);\n margin-right: -14px;\n margin-left: -14px;\n }\n\n ${(props) => props.imgUrl && css`\n background-image: url('${props.imgUrl}');\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n `};\n\n ${(props) => props.hasImgStyle?.tablet && css`\n @media (max-width: ${breakPoints.tablet}) {\n background-size: auto;\n }\n `};\n\n ${(props) => props.hasImgStyle?.mobile && css`\n @media (max-width: ${breakPoints.mobile}) {\n background-size: 130%;\n background-position: 65% 15%;\n }\n `};\n\n ${(props) => props.theme.initialTypeIsRow && css`\n @media (max-width: ${breakPoints.tablet}) {\n width: 213px;\n height: 105px;\n background-size: contain;\n background-position: left;\n margin: 0;\n }\n\n @media (min-width: ${BreakPointsMFirst.tablet}) {\n width: 341px;\n height: 170px;\n margin-top: -67px;\n }\n `};\n`;\n\nexport const TextBlock = styled.div`\n height: fit-content;\n gap: 8px;\n\n ${(props) => !props.theme.initialTypeIsRow && css`\n @media (max-width: ${breakPoints.sDesktop}) {\n margin-top: -45px;\n }\n `};\n\n ${(props) => props.theme.initialTypeIsRow && css`\n color: ${COLORS.TextWhite};\n flex-direction: column;\n `};\n`;\n\nexport const ContentWrap = styled.div`\n justify-content: flex-start;\n flex-direction: column;\n gap: 0;\n\n @media (max-width: ${breakPoints.tablet}) {\n justify-content: space-between;\n }\n\n ${(props) => !props.theme.initialTypeIsRow && css`\n @media (min-width: ${BreakPointsMFirst.mobile}) and (max-width: ${breakPoints.tablet}) {\n gap: 40px;\n justify-content: start;\n }\n `};\n\n ${(props) => props.theme.initialTypeIsRow && css`\n @media (min-width: ${BreakPointsMFirst.mobile}) {\n gap: 14px;\n }\n `};\n\n ${(props) => props.theme.initialTypeIsRow && css`\n @media (min-width: ${BreakPointsMFirst.tablet}) {\n flex-direction: row-reverse;\n flex-basis: 100%;\n justify-content: space-between;\n }\n `};\n`;\n\nexport const Title = styled(H3)`\n ${FONTS.H3};\n white-space: pre;\n\n ${(props) => props.theme.initialTypeIsRow && css`\n white-space: initial;\n color: ${COLORS.TextWhite};\n @media (max-width: ${breakPoints.tablet}) {\n white-space: pre;\n }\n `};\n`;\n\nexport const SubText = styled.div`\n ${FONTS.S};\n white-space: pre-wrap;\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.XS};\n }\n\n ${(props) => props.theme.initialTypeIsRow && css`\n @media (min-width: ${BreakPointsMFirst.tablet}) and (max-width: ${breakPoints.sDesktop}) {\n width: 370px;\n }\n `};\n`;\n","import React, { RefObject, useCallback, useMemo } from 'react';\nimport { ThemeProvider } from 'styled-components';\n\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\n\nimport { graphicData } from '~/src/features/yandex-landing/data';\nimport { dataLayerPushWrap } from '~/src/features/yandex-landing/utils';\nimport { useScroll } from '~/src/helpers/hooks/useScroll';\n\nimport * as ST from './styled';\n\nconst PlusesBlock: React.FC<{ callbackRef: RefObject, stationMaxi: Object, stationLight: Object }> =\n ({ callbackRef, stationMaxi, stationLight }) => {\n const scrollToRef = useScroll();\n\n const imageUrl = '/static/images/yandex-landing/rectangle.png';\n\n const getPrice = useCallback((array) => {\n return array?.pricesV2?.reduce((prev: any, curr: any) => prev.value < curr.value ? prev : curr, [0]);\n }, []);\n\n const priceMaxi = useMemo(() => {\n const price = getPrice(stationMaxi);\n return price?.duration ? price?.value : null;\n }, [stationMaxi]);\n\n const priceLight = useMemo(() => {\n const price = getPrice(stationLight);\n return price?.duration ? price?.value : null;\n }, [stationLight]);\n\n const onScrollWrapper = useCallback(() => {\n dataLayerPushWrap({ label: 'want station', callback: () => scrollToRef(callbackRef) });\n }, []);\n\n return (\n \n Ваши плюсы уже ждут:\n \n {graphicData.map((elem, key) => (\n \n \n {elem.label\n ? <>\n {++key}\n \n \n \n \n : {++key}}\n \n \n {key === 3 && priceMaxi && \n {priceMaxi + ' ₽/мес'}\n }\n {key === 3 && priceLight && \n {priceLight + ' ₽/мес'}\n }\n \n \n {elem.title}\n {elem.subText}\n \n \n \n \n ))}\n \n \n \n );\n};\n\nexport default PlusesBlock;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { DEFAULT_URL } from '~/src/features/yandex-landing/constants';\n\nimport { Container } from '~/src/features/yandex-landing/styled';\n\nexport const ContainerRoutes = styled(Container)`\n width: 1362px;\n margin-top: 38px;\n margin-bottom: 64px;\n box-sizing: content-box;\n padding: 0 90px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n padding: 0 34px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n padding: 0 16px;\n max-width: 288px;\n margin-bottom: 32px;\n }\n`;\n\nexport const BannerWrapper = styled.div`\n height: 283px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n padding: 79px 0 78px 55px;\n background-image: url('${DEFAULT_URL}routes-banner-img-desktop.png');\n background-repeat: no-repeat;\n background-size: cover;\n box-shadow: 0 4px 24px rgba(0, 0, 0, .08);\n\n @media (max-width: ${breakPoints.desktop}) {\n padding-left: 119px;\n background-position: top;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n padding: 84px 0 71px 43px;\n background-position: 80% 100%;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n padding: 57px 0 50px 43px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n height: 524px;\n padding: 274px 0 31px 24px;\n background-image: url('${DEFAULT_URL}routes-banner-img-mobile.jpg');\n background-color: ${COLORS.white};\n background-size: contain;\n background-position: center;\n }\n`;\n\nexport const RouteTitle = styled.div`\n ${FONTS.H2};\n\n &:after {\n content: '';\n background-image: url('${DEFAULT_URL}red-heart.png');\n background-repeat: no-repeat;\n background-size: contain;\n height: 34px;\n width: 34px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H3};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n white-space: pre;\n align-items: flex-end;\n }\n`;\n\nexport const TextWrapper = styled.div`\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const RouteSubtext = styled.div`\n width: 70%;\n ${FONTS.S};\n\n @media (max-width: ${breakPoints.desktop}) {\n width: 100%;\n ${FONTS.XS};\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 70%;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 34vw;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 95%;\n }\n`;\n\nexport const RouteButton = styled(Button)`\n width: 289px;\n ${FONTS.H5};\n\n @media (max-width: ${breakPoints.desktop}) {\n margin-top: 26px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n margin-top: 16px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-top: 12px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 91%;\n margin-top: 22px;\n padding-right: 24px;\n }\n`;\n","import React from 'react';\n\nimport { dataLayerPushWrap } from '~/src/features/yandex-landing/utils';\n\nimport * as ST from './styled';\n\nconst RoutesBanner: React.FC = () => {\n const onHandleClick = () => {\n dataLayerPushWrap({ label: 'router' });\n const newWindow = window.open();\n if (newWindow) {\n newWindow.opener = null;\n newWindow.location.href = '/internet/equipment';\n }\n };\n\n return (\n \n \n \n \n {'Яндекс.Станция + \\nроутеры Дом.ру ='} \n \n \n Наши роутеры позаботятся, чтобы Яндекс.Станция стабильно работала в любом уголке квартиры\n \n \n Выбрать роутер Дом.ру\n \n \n \n \n );\n};\n\nexport default RoutesBanner;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\n// @ts-ignore\nimport Carousel from '@r1-frontend/ui-react/deprecated/carousel';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { BreakPointsMFirst } from '~/src/constants/breakpoints';\n\nimport { Container } from '~/src/features/yandex-landing/styled';\n\nexport const ContainerAlisaCarousel = styled(Container)`\n width: calc(100% - 180px);\n max-width: 1400px;\n box-sizing: content-box;\n\n @media (max-width: ${breakPoints.desktop}) {\n padding: 0 71px;\n width: calc(100% - 142px);\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: calc(100% - 126px);\n padding: 0 63px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: calc(100% - 44px);\n max-width: 1362px;\n padding: 0;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: calc(100% - 16px);\n max-width: 304px;\n padding-left: 16px;\n }\n`;\n\nexport const AlisaCarouselTitle = styled.div`\n text-align: center;\n ${FONTS.H2};\n margin-top: 64px;\n margin-bottom: 32px;\n\n @media (max-width: ${breakPoints.desktop}) {\n ${FONTS.H3};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n white-space: pre;\n text-align: center;\n justify-content: left;\n }\n`;\n\nexport const AlisaCarousel = styled(Carousel)`\n gap: 60px;\n`;\n\nexport const AlisaCarouselWrapper = styled.div`\n cursor: default;\n justify-content: center;\n\n @media (max-width: ${breakPoints.mobile}) {\n height: 725px;\n flex-direction: column;\n justify-content: flex-start;\n }\n`;\n\nexport const MainBlockWrapper = styled.div<{ background: string }>`\n width: calc(100% - 39px);\n height: 244px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n background-color: ${props => props.background ?? 'initial'};\n justify-content: space-between;\n\n @media (max-width: ${breakPoints.desktop}) {\n width: calc(100% - 35px);\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: calc(100% - 22px);\n height: 195px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n height: 242px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: calc(100% - 16px);\n height: 400px;\n background-image: url('${(props) => props.background}');\n background-repeat: no-repeat;\n background-position: center;\n background-size: cover;\n }\n`;\n\nexport const TextContainer = styled.div<{ positionText: string }>`\n padding: 83px 0 0 136px;\n align-items: center;\n flex-direction: column;\n\n @media (max-width: ${breakPoints.desktop}) {\n padding: 78px 0 70px 131px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n padding: 54px 0 47px 101px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n padding: 84px 0 70px 8vw;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n position: relative;\n height: fit-content;\n padding: 35px 0 0 30px;\n bottom: ${props => props.positionText};\n }\n`;\n\nexport const TextWrap = styled.div<{ textColor: string}>`\n flex-direction: column;\n color: ${props => props.textColor};\n gap: 8px;\n`;\n\nexport const SubTextMainBlock = styled.div`\n white-space: pre;\n ${FONTS.S};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XS};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.S};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n ${FONTS.XS};\n }\n`;\n\nexport const TitleMainBlock = styled.div`\n ${FONTS.H2};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H3};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n ${FONTS.H4};\n }\n`;\n\nexport const ImgBlock = styled.div<{ ImgUrl: string }>`\n width: 679px;\n margin: 10px;\n background-image: url('${(props) => props.ImgUrl}');\n background-repeat: no-repeat;\n background-position: center;\n background-size: cover;\n border-radius: ${BorderRadius.InnerBlockRadius};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 458px;\n margin: 16px;\n background-position: top;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 357px;\n margin: 10px;\n background-position: center;\n }\n`;\n\nexport const TripleCardWrapper = styled.div`\n width: calc(100% - 39px);\n height: 120px;\n gap: 39px;\n margin-top: 32px;\n\n @media (max-width: ${breakPoints.desktop}) {\n width: calc(100% - 35px);\n gap: 35px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: calc(100% - 24px);\n height: 101px;\n margin-top: 22px;\n gap: 24px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n gap: 16px;\n margin-top: 22px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: calc(100% - 16px);\n margin-top: 32px;\n }\n`;\n\nexport const Slip = styled.div`\n align-items: center;\n flex-basis: calc((100% - 78px)/3);\n\n @media (max-width: ${breakPoints.desktop}) {\n flex-basis: calc((100% - 70px)/3);\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n flex-basis: calc((100% - 48px)/3);\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n flex-basis: calc((100% - 32px)/3);\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-basis: 100%;\n }\n`;\n\nexport const SlipText = styled.div`\n ${FONTS.H4};\n white-space: pre;\n align-items: center;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H5};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n min-height: 48px;\n white-space: break-spaces;\n }\n`;\n\nexport const SlipContentWrapper = styled.div`\n width: 100%;\n padding: 31px 0 33px 47px;\n gap: 32px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n background-color: ${COLORS.white};\n\n @media (max-width: ${breakPoints.desktop}) {\n padding-left: 42px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n gap: 16px;\n padding: 26px 0 27px 28px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n justify-content: left;\n flex-wrap: nowrap;\n padding: 16px 7px 17px 2vw;\n align-items: center;\n gap: 20px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n padding: 12px 20px 18px 20px;\n }\n`;\n\nexport const SlipIcon = styled.div<{ iconUrl: string }>`\n width: 56px;\n height: 56px;\n background-image: url('${(props) => props.iconUrl}');\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n\n @media (min-width: ${BreakPointsMFirst.mobile}) and (max-width: ${breakPoints.tablet}) {\n width: 4vw;\n height: 4vw;\n }\n`;\n","import React, { useMemo } from 'react';\n\nimport { EMediaWidth } from '@r1-frontend/ui-react/tokens/mediaWidth';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { COUNT_CAROUSEL_SUB_ITEMS } from '~/src/features/yandex-landing/constants';\nimport { CarouselStationData, sliderPropsSmartStation } from '~/src/features/yandex-landing/data';\nimport { getCarouselImgUrl, getIdsForCarouselStation } from '~/src/features/yandex-landing/utils';\nimport type { TCarouselImgUrl } from '~/src/features/yandex-landing/utils/types';\n\nimport * as ST from './styled';\n\nconst SmartStationCarousel: React.FC = () => {\n const isTabletOnly = useMatchMedia(EMediaWidth.tabletOnly);\n const isTablet = useMatchMedia(EMediaWidth.tablet);\n const isMobile = useMatchMedia(EMediaWidth.mobile);\n const isSDesktop = useMatchMedia(EMediaWidth.sDesktopOnly);\n\n const {\n backgroundColor,\n titleMain,\n subTextMain,\n imgUrlBaseMain: {\n url,\n type,\n },\n textColor,\n positionText,\n iconUrlBase: {\n typeIcon,\n iconUrl,\n },\n slipText,\n } = CarouselStationData;\n\n const mediaData = useMemo((): TCarouselImgUrl['mediaData'] => (\n {\n tablet: isTabletOnly,\n sDesktop: isSDesktop,\n mobile: isMobile,\n }\n ), [isTabletOnly, isSDesktop, isMobile]);\n\n return (\n \n {'Яндекс.Станция – \\nумная колонка с Алисой'}\n \n {getIdsForCarouselStation().map((id) => (\n \n \n \n \n {titleMain[id]}\n {subTextMain[id]}\n \n \n {!isMobile && }\n \n \n {[...Array(COUNT_CAROUSEL_SUB_ITEMS)].map((_, key) => (\n \n \n \n {slipText[id][key]}\n \n \n ))}\n \n \n ))}\n \n \n );\n};\n\nexport default SmartStationCarousel;\n","import React, { memo, useCallback, useState } from 'react';\nimport { useRouter } from 'next/router';\n\nimport { IEquipment } from '@r1-frontend/api-domru/full-buy/v1/equipment/dto/Equipment.dto';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport ProductCard from '~/src/components/ProductCard';\nimport { getPriceOptions } from '~/src/entities/equipment';\nimport { convertShopPrices } from '~/src/entities/price';\nimport { dataLayerPushWrap } from '~/src/features/yandex-landing/utils';\n\nexport const YandexStationCard = ({ item }: { item: IEquipment }): JSX.Element => {\n const router = useRouter();\n const [indexOfSelected, setIndexOfSelected] = useState(0);\n\n const openDetailPage = useCallback(() => {\n router.push(`/internet/yandex-stanciya/${item.alias}?withOption=${indexOfSelected}`);\n dataLayerPushWrap({ label: `${item.title}` });\n }, [router, item, indexOfSelected]);\n\n return (\n \n );\n};\n\nexport default memo(YandexStationCard);\n","import React, { useMemo } from 'react';\n\nimport NukaCarousel from '@r1-frontend/ui-react/components/NukaCarousel';\nimport { EMediaWidth } from '@r1-frontend/ui-react/tokens/mediaWidth';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { COUNT_SLIDE_MOBILE, COUNT_SLIDE_TABLET } from '~/src/features/yandex-landing/constants';\nimport { sliderPropsCatalog } from '~/src/features/yandex-landing/data';\nimport type { IProps } from '~/src/features/yandex-landing/YandexStationCards/types';\n\nimport { YandexStationCard } from './YandexStationCard';\n\nconst YandexStationCards: React.FC = ({ yandexStationDataSorted, startLine, endLine, isCarousel }) => {\n const isSDesktop = useMatchMedia(EMediaWidth.sDesktopOnly);\n const isMobile = useMatchMedia(EMediaWidth.mobile);\n\n const countSlides = useMemo((): number => {\n switch (true) {\n case isSDesktop:\n return sliderPropsCatalog.slidesToShow;\n case isMobile:\n return COUNT_SLIDE_MOBILE;\n default:\n return COUNT_SLIDE_TABLET;\n }\n }, [isSDesktop, isMobile]);\n\n const yandexCards = useMemo((): JSX.Element[] => {\n return (\n yandexStationDataSorted.map((item) => )\n );\n }, [yandexStationDataSorted]);\n\n const getYandexCardsCarousel = (startLine: number, endLine: number): JSX.Element => {\n const cards = [];\n for (let i = startLine; i < endLine; i++) {\n if (yandexStationDataSorted[i]) {\n cards.push();\n }\n }\n\n return (\n cards.length > countSlides\n ? \n {cards}\n \n : <>{cards}\n );\n };\n\n return (\n <>\n { isCarousel ? getYandexCardsCarousel(startLine as number, endLine as number) : yandexCards}\n \n );\n};\n\nexport default YandexStationCards;\n","import styled from 'styled-components';\n\nimport { H2 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { BreakPointsMFirst } from '~/src/constants/breakpoints';\nimport { getReferenceDataArray } from '~/src/features/yandex-landing/utils';\n\nimport { Container } from '~/src/features/yandex-landing/styled';\n\nexport const ContainerCatalog = styled(Container)`\n width: 1362px;\n margin-bottom: 64px;\n box-sizing: content-box;\n padding: 0 90px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 960px;\n padding: 0;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 640px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 304px;\n margin-bottom: 32px;\n }\n`;\n\nexport const CatalogWrapper = styled.div`\n gap: 32px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n gap: 0;\n\n & > div:not(:first-child):not(:last-child) {\n padding-bottom: 64px;\n }\n }\n`;\n\nexport const TitleCatalog = styled(H2)`\n text-align: center;\n ${FONTS.H1};\n\n @media (max-width: ${breakPoints.desktop}) {\n ${FONTS.H2};\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H3};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n white-space: pre;\n }\n`;\n\nexport const SubtextCatalog = styled.div`\n ${FONTS.L};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.S};\n }\n`;\n\nexport const TextCatalogWrapper = styled.div`\n width: 100%;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n margin-bottom: 32px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n align-items: flex-start;\n gap: 4px;\n margin-left: 8px;\n }\n`;\n\nexport const CardsWrapper = styled.div<{ count: number }>`\n display: grid;\n gap: 16px;\n grid-template-columns: repeat(${props => getReferenceDataArray(props.count).column[props.count]}, 1fr);\n grid-template-rows: repeat(${props => getReferenceDataArray(props.count).row[props.count]}, 1fr);\n\n @media (max-width: ${breakPoints.desktop}) {\n gap: 8px;\n }\n\n @media (min-width: ${BreakPointsMFirst.sDesktop}) and (max-width: ${breakPoints.desktop}) {\n gap: 2px;\n }\n`;\n\nexport const YandexCard = styled.div`\n width: 304px;\n height: 350px;\n`;\n","import React, { useMemo } from 'react';\n\nimport { IEquipment } from '@r1-frontend/api-domru/full-buy/v1/equipment/dto/Equipment.dto';\n\nimport { EMediaWidth } from '@r1-frontend/ui-react/tokens/mediaWidth';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport {\n getArrTemplateForCountCards,\n getEndCarouselRowPos,\n getStartCarouselRowPos,\n sortFunctionBySort,\n} from '~/src/features/yandex-landing/utils';\nimport type { IProps } from '~/src/features/yandex-landing/YandexCatalog/types';\nimport YandexStationCards from '~/src/features/yandex-landing/YandexStationCards';\n\nimport * as ST from './styled';\n\nconst YandexCatalog: React.FC = ({ yandexStationData }) => {\n const isSDesktopMin = useMatchMedia(EMediaWidth.sDesktopMin);\n\n const yandexStationDataSorted = useMemo((): IEquipment[] => (\n [...yandexStationData].sort(sortFunctionBySort)\n ), [yandexStationData]);\n\n if (!yandexStationDataSorted.length) {\n return null;\n }\n\n return (\n \n \n \n \n {'Яндекс.Станций \\nмного не бывает'}\n \n \n Выберите свою\n \n \n {isSDesktopMin\n ? \n \n \n : <>\n {[...getArrTemplateForCountCards(yandexStationDataSorted).keys()].map((key) => (\n \n ))}\n \n }\n \n \n );\n};\n\nexport default YandexCatalog;\n","import React, { useMemo, useRef } from 'react';\n\nimport FeedbackForm from '~/src/features/yandex-landing/FeedbackForm';\nimport Header from '~/src/features/yandex-landing/Header';\nimport PlusesBlock from '~/src/features/yandex-landing/PlusesBlock';\nimport RoutesBanner from '~/src/features/yandex-landing/RoutesBanner';\nimport SmartStationCarousel from '~/src/features/yandex-landing/SmartStationCarousel';\nimport type { IProps, IStationSections } from '~/src/features/yandex-landing/types';\nimport YandexCatalog from '~/src/features/yandex-landing/YandexCatalog';\n\nimport * as ST from './styled';\n\nconst YandexLanding: React.FC = ({ city, yandexStationData }) => {\n const callbackFormRef = useRef(null);\n\n const stationMaxi = useMemo(() => yandexStationData.filter(\n item => item.props?.length\n ? item.props[0].value === '[4]'\n : null,\n )[0], [yandexStationData]);\n\n const stationLight = useMemo(() => yandexStationData.filter(\n item => item.props?.length\n ? item.props[0].value === '[1]'\n : null,\n )[0], [yandexStationData]);\n\n const stationSections = useMemo((): IStationSections[] => {\n const hasStation: IStationSections[] = [\n { value: 1, type: 'light', inStock: false },\n { value: 2, type: 'mini', inStock: false },\n { value: 3, type: 'standart', inStock: false },\n { value: 4, type: 'maxi', inStock: false },\n { value: 5, type: 'midi', inStock: false },\n ];\n hasStation.forEach((item, index) => {\n item.inStock = yandexStationData.some(station => station.props?.length ? station.props[0].value === `[${index + 1}]` : false);\n return item;\n });\n return hasStation;\n }, [yandexStationData]);\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default YandexLanding;\n","import React from 'react';\nimport type { NextPage } from 'next';\n\nimport { domofonAction } from '@r1-frontend/api-domru/api-content/v1/domofon-action';\nimport { TResponseDto } from '@r1-frontend/api-domru/api-content/v1/domofon-action/dto/ResponseDto';\nimport { equipment } from '@r1-frontend/api-domru/full-buy/v1/equipment';\nimport { IEquipment } from '@r1-frontend/api-domru/full-buy/v1/equipment/dto/Equipment.dto';\nimport { ICurrentCity } from '@r1-frontend/entities/City/models/ICurrentCity';\n\nimport { EShopCategory } from '~/src/api/content/shop/getShopItems';\nimport Layout from '~/src/features/_layout';\nimport YandexLanding from '~/src/features/yandex-landing';\nimport { initialProps } from '~/src/helpers/basePageFunc';\nimport getRequester from '~/src/helpers/getRequester';\nimport { saveIntercomAction } from '~/src/store/actions/intercom';\nimport { selectCompanyName } from '~/src/store/selectors/city';\n\ninterface IProps {\n city: ICurrentCity,\n companyName: string,\n yandexStationData: IEquipment[],\n}\n\nconst YandexStationLandingPage: NextPage = ({ city, companyName, yandexStationData }) => {\n const { cityIn, callCenter } = city;\n\n return (\n \n \n \n );\n};\n\nYandexStationLandingPage.getInitialProps = async(options) => {\n await initialProps(options, { isNeedAuthData: true });\n const { req, store } = options;\n const state = store.getState();\n const { city: { currentCity: city, provider: { providerId } } } = state;\n\n const companyName = selectCompanyName(state);\n\n const doRequest = getRequester(req);\n\n const [equipmentResponse, domofonResponse] = await Promise.all([\n doRequest.fullBuy(\n equipment({\n providerId,\n categories: [EShopCategory.YandexStation],\n }),\n ),\n doRequest.apiContent(domofonAction({ filter: { available: 1 } })),\n ]);\n\n const yandexStationData = equipmentResponse.isSuccess ? equipmentResponse.payload : [];\n if (domofonResponse.isSuccess && domofonResponse.payload.items.length > 0) {\n // берем первую доступную акцию для текущего города\n store.dispatch(saveIntercomAction(domofonResponse.payload.items[0]));\n }\n\n return ({ city, companyName, yandexStationData });\n};\n\nexport default YandexStationLandingPage;\n","import { captureException } from '@sentry/node';\nimport { stringify } from 'qs';\n\nimport { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\n\nimport { IShopCategory } from '~/src/api/content/shop/getShopCategories';\nimport contentRequest from '~/src/api/requests/contentRequest';\nimport { IPartnerVasContents } from '~/src/components/Promo/popups/PartnerPopup/types';\nimport { getAccessModeByRights } from '~/src/helpers/accessMode';\nimport { retryIfParamIsLocked } from '~/src/helpers/functions';\n\n// @todo All types must be in api-domru package, now collected at frontend/packages/api-domru/src/api-content/common-types/shop-item.types.ts\n// @deprecated use @r1-frontend/shared/types\nexport enum EShopCategory {\n Antiviruses = 'antiviruses',\n SpeedBonuses = 'speed-bonuses',\n Routers = 'routers',\n Intercom = 'intercom',\n Sale = 'special-offers',\n PartnerServices = 'partner-service-with-phone-check',\n Decoders = 'decoders',\n BonusToAll = 'bonus-to-all',\n YandexStation = 'yandex-stanciya',\n YandexStationLite = 'yandex-stanciya-lite',\n SafeKids = 'safe-kids',\n LoyaltyProgram = 'loyalty-program',\n Products = 'products',\n Subscriptions = 'subscriptions',\n Multibundle = 'multibundle',\n Videocontrol = 'videocontrol',\n PrivateSectorEquipment = 'private-sector-equipment',\n}\n\nexport enum EExpandShopItems {\n Advertising = 'advertising',\n Category = 'category',\n Props = 'props',\n Labels = 'labels',\n CategoryProps = 'category.props',\n}\n\ninterface IFilter {\n [key: string]: string | number,\n}\n\nexport interface IShopLabel {\n id: number,\n name: string,\n title: string,\n color: string,\n color_text: string,\n}\n\nexport interface IShopProp {\n name: string,\n title: string,\n type: string,\n value?: string | string[],\n computedValue?: string,\n asIs?: number,\n}\n\nexport interface ICostRa {\n dur_type_id: number,\n duration: number,\n flag_ra: number,\n cost: number,\n}\n\nexport interface IShopPriceOptions {\n label: string,\n price: number,\n pricePromo?: number,\n type: EPriceTypes.Possess | EPriceTypes.Leasing,\n operType: string,\n}\n\nexport interface IShopPriceV2 {\n sort: number,\n type: number,\n date_close_promo: string | null,\n duration: number | null,\n id: number,\n lifetime_price: number | null,\n owner_id: number,\n price_type: string,\n value: number,\n}\n\nexport interface IUrl {\n id: number,\n manual: number,\n name: string,\n owner_id: number,\n type: string,\n url: string,\n}\n\nexport interface IAdvertising {\n companyName: string,\n erid: string,\n}\n\nexport interface IShopItem {\n advertising: IAdvertising | null,\n alias: string,\n body: string,\n body_full: string,\n button_link: string,\n button_text: string,\n category_id: number,\n exists: boolean,\n extra: unknown[],\n global_id: number,\n id: number,\n image: string,\n image_webp?: string,\n images: string[],\n costRa: ICostRa[],\n // 0 или 1\n is_sale: number,\n prices: IShopItemPrices,\n pricesV2: IShopPriceV2[],\n pricesPromo: IShopItemPrices,\n sort: null | number,\n title: string,\n title_short?: string,\n labels?: IShopLabel[],\n category?: IShopCategory,\n image_widgets?: string,\n image_widgets_webp?: string,\n image_widgets_background?: string,\n image_background?: string,\n image_background_webp?: string,\n image_for_tariff_card: string,\n image_for_tariff_card_webp?: string,\n image_for_tariff_card_height: number,\n image_for_tariff_card_width: number,\n props?: IShopProp[],\n priceOptions?: IShopPriceOptions[],\n partnerVasContents?: IPartnerVasContents,\n image_width?: number,\n image_height?: number,\n leftovers: number | null,\n showForDelivery?: 0 | 1 | null,\n checkProductId?: number,\n name: string,\n urls?: IUrl[],\n}\n\ninterface IShopItemParams {\n all: boolean,\n expand?: string | undefined,\n filter?: IFilter | undefined,\n category?: EShopCategory | string | null,\n accessMode?: number,\n providerId: number,\n}\n\ninterface IMonth {\n value: number,\n lifetime_price: number,\n}\n\ninterface IRent {\n month: IMonth | null,\n year: number | null,\n}\n\nexport interface IShopItemPrices {\n leasing?: ILeasing[],\n possess?: number,\n rent?: IRent,\n}\n\nexport interface ILeasing {\n price: number,\n duration: number,\n}\n/**\n * @deprecated use api-domru/src/api-content/v2/shop/items/index.ts\n */\n\nexport async function getShopItems(\n providerId: number,\n token: string | null,\n category: EShopCategory | string | null,\n expand?: EExpandShopItems[],\n filter?: IFilter | null,\n isShowAll = false,\n): Promise {\n\n const params: IShopItemParams = {\n providerId,\n ...filter,\n expand: prepareExpandProp(expand),\n all: isShowAll,\n };\n\n const headers: Record = token\n ? { Authorization: `Bearer ${token}` }\n : {};\n\n if (providerId) {\n params.providerId = providerId;\n }\n\n if (category) {\n params.category = category;\n }\n\n params.accessMode = getAccessModeByRights({\n isAuth: Boolean(token),\n });\n\n const url = '/v1/shop/items';\n\n try {\n const resp = await retryIfParamIsLocked(\n () => contentRequest.get(url, {\n headers,\n params,\n paramsSerializer: (params: IShopItemParams) => {\n return stringify(params);\n },\n }),\n );\n\n return resp.data.items;\n\n } catch (e) {\n captureException(e);\n return [];\n }\n}\n\nexport async function getBonusToAll(\n providerId: number,\n token: string | null,\n expand?: EExpandShopItems[],\n filter?: IFilter,\n): Promise {\n\n let expandDefault = [EExpandShopItems.Category];\n if (expand) {\n expandDefault = [...expandDefault, ...expand];\n }\n return await getShopItems(providerId, token, EShopCategory.BonusToAll, expandDefault, filter);\n}\n\nfunction prepareExpandProp(expands: EExpandShopItems[] | undefined): string | undefined {\n if (expands && expands.length) {\n return expands.join(',');\n }\n return undefined;\n}\n\nexport async function getRouters(providerId: number, token: string | null): Promise {\n return getShopItems(\n providerId,\n token,\n EShopCategory.Routers,\n [EExpandShopItems.Category, EExpandShopItems.Props, EExpandShopItems.Labels],\n );\n}\n\n// eslint-disable-next-line no-undef\nexport async function getIntercomServices(providerId: number, token: string): Promise {\n return getShopItems(\n providerId,\n token,\n EShopCategory.Intercom,\n [EExpandShopItems.Category, EExpandShopItems.Props, EExpandShopItems.Labels],\n );\n}\n\nexport async function getVideocontrolItems(providerId: number, token: string): Promise {\n return getShopItems(\n providerId,\n token,\n EShopCategory.Videocontrol,\n [EExpandShopItems.Category, EExpandShopItems.Props],\n );\n}\n","import { isServerSide } from '@r1-frontend/shared/helpers/ssr';\nimport axios from 'axios';\nimport { stringify } from 'qs';\nimport cookies from 'react-cookies';\n\nimport { ACCESS_TOKEN_COOKIE, NO_CACHE_COOKIE } from '~/src/constants';\n\n/**\n * Запрос в ApiContent\n */\nconst axiosContent = axios.create({\n baseURL: isServerSide()\n ? process.env.NEXT_PUBLIC_HOST_API_CONTENT_INNER || process.env.NEXT_PUBLIC_HOST_API_CONTENT\n : process.env.NEXT_PUBLIC_HOST_API_CONTENT,\n});\n\naxiosContent.interceptors.request.use(\n (config) => {\n const token = cookies.load(ACCESS_TOKEN_COOKIE);\n const noCacheKey = cookies.load(NO_CACHE_COOKIE);\n\n const headers = {\n 'X-Requested-With': 'XMLHttpRequest',\n };\n\n if (!config.headers['Authorization'] && token) {\n headers['Authorization'] = `Bearer ${ token }`;\n }\n\n if (noCacheKey) {\n headers['no-cache-key'] = noCacheKey;\n }\n config.headers = { ...config.headers, ...headers };\n\n return config;\n },\n (error) => Promise.reject(error),\n);\n\n/**\n * @deprecated\n * @type {AxiosInstance}\n */\nconst contentRequest = Object.create(axiosContent);\n\ncontentRequest.get = async(url, options) => {\n if (options) {\n options.paramsSerializer = params => {\n return stringify(params);\n };\n }\n return axiosContent.get(url, options);\n};\nexport default contentRequest;\n","// https://kb.ertelecom.ru/pages/viewpage.action?pageId=429887688\nexport enum EAccessRights {\n UserGuest = 2 ** 1,\n UserAuth = 2 ** 2,\n\n PlatformSite = 2 ** 9,\n\n ConditionZasmotris = 2 ** 25,\n}\n\ninterface IAccessModeProps {\n rights?: EAccessRights[],\n isAuth?: boolean,\n}\n\nexport const getAccessModeByRights = ({ rights = [], isAuth }: IAccessModeProps): number => {\n let result = EAccessRights.PlatformSite | rights.reduce((acc, right) => acc + right, 0);\n\n if (typeof isAuth === 'boolean') {\n if (isAuth) {\n result += EAccessRights.UserAuth;\n } else {\n result += EAccessRights.UserGuest;\n }\n }\n\n return result;\n};\n","import React, { useCallback } from 'react';\n\ntype TRef = React.RefObject;\n\ninterface IScrollSettings {\n alignment?: ScrollLogicalPosition,\n behavior?: ScrollBehavior,\n absolute?: 'top' | 'bottom',\n}\n\n/**\n * Хук скролла к элементу\n *\n * Если нужен просто скролл (вверх/вниз страницы) без привязки к элементу, используйте настройку { absolute: 'top' | 'bottom' }\n *\n * @function\n * @name hooks.useScroll\n * @param {Object} settings - Настройки поведения скролла. С аргументом offsetY отработает только свойство settings.behavior.\n * @param {number} offsetY - Скроллинг со сдвигом позиции.\n * @returns {(ref: TRef) => void}\n */\nexport function useScroll(\n settings?: IScrollSettings,\n offsetY?: number,\n): (ref: TRef | null) => void {\n return useCallback((ref) => {\n const behavior = settings?.behavior || 'smooth';\n\n if (settings?.absolute) {\n window.scrollTo({ top: settings.absolute === 'top' ? 0 : document.body.scrollHeight, behavior });\n return;\n }\n\n if (offsetY) {\n const top = ref?.current?.getBoundingClientRect().top || 0;\n const y = top + window.pageYOffset + offsetY;\n window.scrollTo({ top: y, behavior });\n } else {\n ref?.current?.scrollIntoView({\n behavior,\n block: settings?.alignment || 'center',\n });\n }\n }, [settings, offsetY]);\n}\n","const f_s = '.'; // разделитель дробной части\n\n/**\n * В число\n * @param {*} v - значение\n * @return {number}\n */\nexport const toNumber = v => typeof v === 'string' ? parseFloat(v.toString().replace(' ', '').replace(',', f_s)) : Number(v);\n\n/**\n * Число?\n * @param {*} v - значение\n * @return {boolean}\n */\nexport const isNumeric = v => {\n if (typeof v === 'number') {\n return true;\n }\n const str = (v || '').toString();\n if (!str) {\n return false;\n }\n const float = toNumber(str);\n return !isNaN(float) && isFinite(float);\n};\n\n/**\n * Форматирование цены\n * @param {(number|string)} amount число\n * @param {number} [x=3] длина секции\n * @param {string} [s=' '] разделитель секций\n * @param {number} [d=0] длина дробной части\n * @param {string} [c='.'] разделитель дробной части\n * @return {string}\n */\nexport const toCurrency = (amount, x = 3, s = ' ', d, c = f_s) => {\n const n = toNumber(amount);\n d = d || (x => (x.includes('.') ? x.split('.').pop().length : 0))(n.toString());\n const str = n.toFixed(Math.max(0, ~~d));\n const re = `\\\\d(?=(\\\\d{${x}})+${d > 0 ? '\\\\D' : '$'})`;\n return (c ? str.replace('.', c) : str).replace(new RegExp(re, 'g'), `$&${s}`);\n};\n\n/**\n * Целая часть от деления\n * @param {Number} a\n * @param {Number} b\n * @return {number}\n */\nexport function integerDivision(a, b) {\n return (a - a % b) / b;\n}\n","import { GET_INTERCOM_ACTION } from '~/src/store/actionTypes/intercom';\nimport { IntercomActionInfo } from '~/src/store/reducers/intercom';\n\nexport const saveIntercomAction = (actionInfo: IntercomActionInfo) => ({\n type: GET_INTERCOM_ACTION,\n payload: actionInfo,\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { TRequestDto } from './dto/RequestDto';\n\n/**\n * Список акций домофонии по всем городам\n * {@link https://master.api-content.sandbox.d2c.r-one.io/docs/v1#/%D0%90%D0%BA%D1%86%D0%B8%D0%B8%20%D0%B4%D0%BE%D0%BC%D0%BE%D1%84%D0%BE%D0%BD%D0%B8%D0%B8/get_v1_domofon_action Documentation}\n */\nexport const domofonAction = (queryParams: TRequestDto = {}): IRequest => ({\n uri: '/v1/domofon-action',\n method: 'GET',\n queryParams,\n withProvider: true,\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { IEquipmentRequest } from './dto/Request.dto';\n\n/**\n * Получение информации об оборудовании\n */\nexport const equipment = ({ providerId, globalId, categories, routerFilter }: IEquipmentRequest): IRequest => ({\n uri: `/v1/${providerId}/equipment`,\n method: 'GET',\n withAuth: true,\n withProvider: true,\n queryParams: {\n globalId,\n categories,\n routerFilter,\n },\n});\n","export type TArrayOfThree = [string, string, string];\n\n/**\n * @link https://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html\n */\nconst getVariant = (value: number, variants: TArrayOfThree) => {\n const abs = Math.abs(value);\n\n return variants[\n abs % 10 == 1 && abs % 100 != 11\n ? 0\n : abs % 10 >= 2 && abs % 10 <= 4 && (abs % 100 < 10 || abs % 100 >= 20)\n ? 1\n : 2\n ];\n};\n\n/**\n * Cклоняет число\n * @param value Число\n * @param variants Варианты слов для склонения\n * @returns Один из вариантов в зависимости от переданного значения {value}\n * @example\n * pluralize(3, ['идея', 'идеи', 'идей']); // идеи\n */\nexport const pluralize = (value: number, variants: TArrayOfThree) =>\n getVariant(value, variants);\n\n/**\n * Получает функцию для склонения числа\n * @param variants Варианты слов для склонения\n * @example\n * const pluralize = getPluralize(['идея', 'идеи', 'идей']);\n */\nexport const getPluralize = (variants: TArrayOfThree) => (value: number) =>\n pluralize(value, variants);\n","import { TArrayOfThree } from '.';\n\n/**\n * Склонения для месяца\n *\n * @return ['месяц', 'месяца', 'месяцев']\n */\nexport const monthPluralize: TArrayOfThree = ['месяц', 'месяца', 'месяцев'];\n\n/**\n * Склонения для канала\n *\n * @return ['канал', 'канала', 'каналов']\n */\nexport const channelPluralize: TArrayOfThree = ['канал', 'канала', 'каналов'];\n\n/**\n * Склонения для дня\n *\n * @return ['день', 'дня', 'дней']\n */\nexport const dayPluralize: TArrayOfThree = ['день', 'дня', 'дней'];\n\n/**\n * Склонения для бонуса\n *\n * @return ['бонус', 'бонуса', 'бонусов']\n */\nexport const bonusPluralize: TArrayOfThree = ['бонус', 'бонуса', 'бонусов'];\n","// обрезать строку с многоточием при привышении заданного количества символом visibleLength\n// до выноса называлась ellipsis\nexport const truncate = (string: string | undefined, visibleLength: number) => {\n if (!string) {\n return '';\n }\n\n return string.length > visibleLength && visibleLength !== 0\n ? `${string.slice(0, visibleLength).trim()}...`\n : string;\n};\n","export enum EPriceTypes {\n Possess = 1, // Покупка за полную стоимость\n Leasing = 5, // Покупка в рассрочку\n}\n","import styled, { css } from 'styled-components';\n\n// @ts-ignore\nimport svg from './arrow.svg';\n\nexport const Wrapper = styled.div`\n width: fit-content;\n height: 30px;\n opacity: 0.2;\n transition: opacity 0.2s ease-in;\n cursor: pointer;\n \n :hover {\n opacity: 1;\n }\n`;\n\nexport const ArrowSvg = styled.img.attrs({\n src: svg,\n})<{ type?: 'left' | 'right' }>`\n height: 100%;\n ${({ type }) => type === 'right' && css`transform: rotate(180deg);`}\n`;\n","import styled, { CSSObject, keyframes } from 'styled-components';\n\nimport { COLORS } from '../../../assets/js/constants';\n\nexport interface ICustomDotsStyles {\n dotsContainer?: CSSObject,\n dot?: CSSObject,\n dotContainer?: CSSObject,\n activeDot?: CSSObject,\n}\n\nexport const Dot = styled.div<{ active?: boolean, customStyles?: ICustomDotsStyles }>`\n height: 100%;\n width: 100%;\n border-radius: 2px;\n background: ${COLORS.black};\n opacity: 0.1;\n transition: opacity .3s ease;\n ${p => p.customStyles?.dot ?? ''};\n\n &:hover {\n opacity: ${({ active }) => active ? 1 : 0.45};\n }\n`;\n\nexport const DotContainer = styled.div<{ active?: boolean, customStyles?: ICustomDotsStyles }>`\n position: relative;\n width: ${({ active }) => active ? '48px' : '24px'};\n height: 4px;\n margin: 0 4px;\n cursor: pointer;\n transition: width .3s ease;\n ${p => p.customStyles?.dotContainer ?? ''};\n`;\n\nconst activeLineAnimation = keyframes`\n 0% { width: 0; }\n 100% { width: 100%; }\n`;\n\nexport const ActiveLine = styled.div<{ active?: boolean, time?: number, customStyles?: ICustomDotsStyles }>`\n display: ${({ active }) => active ? 'initial' : 'none'};\n position: absolute;\n top: 0;\n left: 0;\n background: ${COLORS.black};\n width: ${({ active }) => active ? '100%' : '0%'};\n height: 100%;\n border-radius: 2px;\n animation-name: ${activeLineAnimation};\n animation-duration: ${({ time }) => time || 0}s;\n animation-iteration-count: 1;\n ${p => p.customStyles?.activeDot ?? ''};\n`;\n\nexport const DotsContainer = styled.div< {customStyles?: ICustomDotsStyles }>`\n justify-content: center;\n width: 100%;\n margin-top: 10px;\n bottom: 26px;\n z-index: 10;\n flex-wrap: nowrap;\n ${p => p.customStyles?.dotsContainer ?? ''};\n`;\n","import React from 'react';\n\nimport * as ST from './styled';\n\nexport interface IArrowProps {\n previousSlide?: () => void,\n nextSlide?: () => void,\n}\n\nconst DefaultArrow = ({ previousSlide, nextSlide }: IArrowProps) => {\n return (\n \n \n \n );\n};\n\nexport default DefaultArrow;\n","import React, { FC } from 'react';\n\nimport * as ST from './styled';\n\nexport interface IDotsProps {\n goToSlide: (i: number) => void,\n slideCount: number,\n currentSlide: number,\n autoplayInterval: number,\n autoplay: boolean,\n customDotsStyles?: ST.ICustomDotsStyles,\n}\n\nconst DefaultDots: FC = ({\n goToSlide,\n slideCount,\n currentSlide,\n autoplayInterval,\n autoplay,\n customDotsStyles,\n}) => {\n return (\n \n {Array(slideCount).fill(null).map((_, index) => (\n goToSlide(index)}\n customStyles={customDotsStyles}\n >\n \n \n \n ))}\n \n );\n};\n\nexport default DefaultDots;\n","import styled from 'styled-components';\n\nexport const Container = styled.div<{ withoutDots?: boolean, withoutArrows?: boolean }>`\n display: flex;\n justify-content: center;\n width: 100%;\n height: fit-content;\n margin: 0 auto;\n padding-bottom: ${({ withoutDots }) => withoutDots ? 0 : 32}px;\n padding-right: ${({ withoutArrows }) => withoutArrows ? 0 : 32}px;\n padding-left: ${({ withoutArrows }) => withoutArrows ? 0 : 32}px;\n \n div:focus-visible {\n outline: none !important;\n }\n`;\n","import React, { FC, RefObject, useEffect, useRef, useState } from 'react';\nimport NukaSwiper, {\n CarouselControlContainerProp,\n CarouselProps,\n} from 'nuka-carousel';\n\nimport { ICustomDotsStyles } from './DefaultDots/styled';\nimport DefaultArrow, { IArrowProps } from './DefaultArrow';\nimport DefaultDots, { IDotsProps } from './DefaultDots';\n\nimport * as ST from './styled';\n\nexport interface ICarouselProps extends CarouselProps {\n withoutArrows?: boolean,\n withoutDots?: boolean,\n customArrow?: FC,\n customDots?: FC,\n customDotsStyles?: ICustomDotsStyles,\n}\n\ninterface INukaSwiperMethods {\n setDimensions: () => void,\n}\n\nconst DEFAULT_AUTOPLAY_INTERVAL = 3000;\nconst DOTS_PADDING = -20;\nconst ARROWS_PADDING = -32;\n\nconst getDefaultControlsContainerStyles = (key: CarouselControlContainerProp) => {\n switch (key) {\n case 'BottomCenter':\n return {\n bottom: DOTS_PADDING,\n };\n case 'CenterRight':\n return {\n right: `${ARROWS_PADDING}px`,\n };\n case 'CenterLeft':\n return {\n left: `${ARROWS_PADDING}px`,\n };\n default: return;\n }\n};\n\nconst NukaCarousel: FC = ({\n customArrow: CustomArrow,\n customDots: CustomDots,\n children,\n withoutArrows,\n withoutControls,\n withoutDots,\n autoplayInterval = DEFAULT_AUTOPLAY_INTERVAL,\n autoplay,\n className,\n customDotsStyles,\n ...props\n}) => {\n const [pausedAutoplay, setPausedAutoplay] = useState(false);\n const Arrow = CustomArrow || DefaultArrow;\n const Dots = CustomDots || DefaultDots;\n const swiperRef = useRef();\n\n useEffect(() => {\n swiperRef?.current?.setDimensions();\n }, [withoutArrows, withoutControls]);\n\n const handleMouseOver = () => {\n if (autoplay) {\n setPausedAutoplay(true);\n }\n };\n\n const handleMouseOut = () => {\n if (autoplay) {\n setPausedAutoplay(false);\n }\n };\n\n return (\n \n }\n // @ts-ignore\n getControlsContainerStyles={getDefaultControlsContainerStyles}\n renderCenterLeftControls={({ previousSlide }) => withoutArrows || }\n renderCenterRightControls={({ nextSlide }) => withoutArrows || }\n renderBottomCenterControls={(props) => withoutDots || (\n \n )}\n autoplayInterval={autoplayInterval}\n autoplay={autoplay}\n withoutControls={withoutControls}\n {...props}\n >\n {children}\n \n \n );\n};\n\nexport default NukaCarousel;\n","import { css } from 'styled-components';\n\nexport interface IImageSource {\n src: string,\n webpSrc?: string,\n}\n\n/**\n * Позволяет браузеру выбрать наиболее подходящий формат фонового избражения с помощью CSS\n * @param {Object} [image] - Объект с путями картинок разного формата\n * @param {string} image.src - Путь до картинки с обычным форматом (jpeg/png)\n * @param {string} [image.webpSrc] - Путь до картинки формата webp\n * @returns {string} Стили CSS\n *\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/image/image-set MDN}\n */\nexport const progressiveBackground = (image?: IImageSource): ReturnType | string => {\n if (!image) {\n return '';\n }\n\n const { src, webpSrc } = image;\n\n if (!webpSrc) {\n return css`\n background-image: url(${src});\n `;\n }\n\n return css`\n background-image: url(${src});\n\n background-image: -webkit-image-set(\n url(${webpSrc}) 1x,\n url(${src}) 1x\n );\n\n background-image: image-set(\n url(${webpSrc}) type('image/webp') 1x,\n url(${src}) 1x\n );\n `;\n};\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMTgwIDMyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBvcGFjaXR5PSIwLjgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTguNzAyOCAwLjU4MjUyNkM5OC4wMTkzIDAuMTk0MTc1IDk3LjE3MTEgMCA5Ni4xNTg3IDBDOTQuOTY4OCAwIDkzLjkwNTUgMC4zMzY0MDkgOTIuOTY5IDEuMDA5NzFDOTIuMDU3NyAxLjY4MzAxIDkxLjI3MzEgMi42NDA3OCA5MC42MTQ4IDMuODgzNTFDODkuOTgyMSA1LjEyNjIzIDg5LjQ4ODQgNi42Mjc2OSA4OS4xMzM5IDguMzg4MzdDODguODA0OSAxMC4xNDkxIDg4LjY0MDIgMTIuMTE2NSA4OC42NDAyIDE0LjI5MTNDODguNjQwMiAxNi40NjYxIDg4LjgwNDkgMTguNDMzNSA4OS4xMzM5IDIwLjE5NDJDODkuNDYyOCAyMS45NTQ5IDg5Ljk0NDEgMjMuNDU2NCA5MC41NzY4IDI0LjY5OTFDOTEuMjA5NSAyNS45NDE4IDkxLjk5NDYgMjYuODk5NiA5Mi45MzExIDI3LjU3MjlDOTMuODY3NiAyOC4yMiA5NC45MzA4IDI4LjU0MzggOTYuMTIwNyAyOC41NDM4Qzk2LjcyODMgMjguNTQzOCA5Ny4yNzI3IDI4LjQ2NjEgOTcuNzUzNSAyOC4zMTA4Qzk4LjI2IDI4LjE4MTEgOTguNzAyOCAyOC4wMjU4IDk5LjA4MjYgMjcuODQ0N0M5OS40ODc0IDI3LjYzNzUgOTkuODI5MiAyNy40MzA3IDEwMC4xMDggMjcuMjIzNEMxMDAuMzg2IDI2Ljk5MDQgMTAwLjU4OSAyNi43OTYyIDEwMC43MTUgMjYuNjQwOUwxMDAuMTQ2IDI1LjE2NTFDOTkuNzQwOSAyNS41NzkyIDk5LjIyMTYgMjUuOTgwNyA5OC41ODg5IDI2LjM2OUM5Ny45NTYyIDI2Ljc1NzQgOTcuMTQ2IDI2Ljk1MTUgOTYuMTU4NyAyNi45NTE1Qzk1LjIyMjIgMjYuOTUxNSA5NC4zOTkyIDI2LjY1NCA5My42OTA1IDI2LjA1ODNDOTMuMDA3IDI1LjQzNyA5Mi40MjQ2IDI0LjU4MjYgOTEuOTQzOCAyMy40OTUyQzkxLjQ4ODEgMjIuMzgyMSA5MS4xMzM2IDIxLjAzNTUgOTAuODgwNiAxOS40NTY0QzkwLjY1MjcgMTcuODc3MiA5MC41Mzg4IDE2LjExNjYgOTAuNTM4OCAxNC4xNzQ4QzkwLjUzODggMTIuMjMzIDkwLjY2NTYgMTAuNDg1NSA5MC45MTg1IDguOTMyMDZDOTEuMTcxNSA3LjM3ODY2IDkxLjUzODkgNi4wNTgyNyA5Mi4wMTk3IDQuOTcwODlDOTIuNTAwNiAzLjg4MzUxIDkzLjA4MyAzLjA1NDg2IDkzLjc2NjUgMi40ODU0NEM5NC40NzUxIDEuODg5ODEgOTUuMjcyNSAxLjU5MjI0IDk2LjE1ODcgMS41OTIyNEM5Ni45Njg5IDEuNTkyMjQgOTcuNjc3NiAxLjc5OTUyIDk4LjI4NTEgMi4yMTM2Qzk4Ljg5MjcgMi42Mjc2OCA5OS40MTE1IDMuMTQ1NjQgOTkuODQyIDMuNzY3TDEwMC4zMzYgMS44NjQwOEM5OS45MzA4IDEuMzk4MDYgOTkuMzg2MyAwLjk3MDg3NyA5OC43MDI4IDAuNTgyNTI2Wk0zLjM3OTUyIDI4LjE1NTNMOC4wMTIxMiAxNy41MTQ0SDEwLjQ0MjNWMjguMTU1M0gxMy4zNjYyVjAuMzg4MTg0SDguOTk5MzlDNy45MzYxNyAwLjM4ODE4NCA2LjkyMzc0IDAuNTY5MjUyIDUuOTYxNjIgMC45MzE4NzRDNC45OTk1IDEuMjk0NSA0LjE1MTc4IDEuODM4MTkgMy40MTc0OSAyLjU2Mjk1QzIuNzA4ODQgMy4yODc3MSAyLjEzOTI1IDQuMjA3MTMgMS43MDg3NSA1LjMyMDI0QzEuMzAzODcgNi40MDc2MiAxLjEwMTE5IDcuNjc2MDcgMS4xMDExOSA5LjEyNjA3QzEuMTAxMTkgMTEuMTk3NCAxLjQ2ODEgMTIuODQxMSAyLjIwMjM4IDE0LjA1ODFDMi45MzY2NyAxNS4yNDg5IDMuODk4MzEgMTYuMTU1MiA1LjA4ODI2IDE2Ljc3NjZMMCAyOC4xNTUzSDMuMzc5NTJaTTguODg1NTMgMi45MTI2SDEwLjQ0MjRWMTUuMDI5MUg4Ljg4NTUzQzguMjUyODIgMTUuMDI5MSA3LjY0NTI2IDE0LjkzODQgNy4wNjI4NyAxNC43NTczQzYuNTA2MSAxNC41NSA2LjAxMjQ2IDE0LjIxMzYgNS41ODE5NSAxMy43NDc2QzUuMTc3MDggMTMuMjgxNiA0Ljg0NzY3IDEyLjY3MzMgNC41OTQ2OCAxMS45MjIzQzQuMzY2ODUgMTEuMTcxNCA0LjI1MjkzIDEwLjIzOTMgNC4yNTI5MyA5LjEyNjIxQzQuMjUyOTMgNy45NjExNiA0LjM3OTY2IDYuOTkwMjggNC42MzI2NSA2LjIxMzU4QzQuOTExMjcgNS40MTExNSA1LjI2NTM2IDQuNzc2NjggNS42OTU4NyA0LjMxMDY2QzYuMTI2MzggMy44MTg5MSA2LjYyMDAyIDMuNDY5NCA3LjE3Njc4IDMuMjYyMTFDNy43MzM1NSAzLjAyOTEgOC4zMDMxMyAyLjkxMjYgOC44ODU1MyAyLjkxMjZaTTQyLjY3NTggMzIuMDAwMUg0MC4wMTc3VjI4LjE1NTRIMzEuODE1OFYzMi4wMDAxSDI5LjE1NzdWMjUuNjY5OUgzMC4zMzQ5QzMwLjc2NTQgMjQuNjM0NSAzMS4xMDcxIDIzLjQ5NTIgMzEuMzYwMSAyMi4yNTI1QzMxLjYxMzEgMjAuOTg0IDMxLjgwMjkgMTkuNjg5MyAzMS45Mjk3IDE4LjM2OUMzMi4wODE2IDE3LjAyMjggMzIuMTcwMyAxNS42NjM2IDMyLjE5NTUgMTQuMjkxM0MzMi4yNDYzIDEyLjg5MzIgMzIuMjcxNCAxMS41NDcxIDMyLjI3MTQgMTAuMjUyNFY4LjU4MjUySDQxLjE1NjlWMjUuNjY5OUg0Mi42NzU4VjMyLjAwMDFaTTUzLjQ2MDMgMjguMDAwNEM1NC4yNDQ5IDI3LjcxNTUgNTQuOTQxMiAyNy4zMjcxIDU1LjU0ODggMjYuODM1NEw1NC44NjUzIDI0LjUwNTNDNTQuNDg1NiAyNC43OTAyIDUzLjk2NjggMjUuMDg3OCA1My4zMDg0IDI1LjM5ODVDNTIuNjc1NyAyNS42ODM0IDUxLjk0MTQgMjUuODI1NiA1MS4xMDYxIDI1LjgyNTZDNDkuOTE2MSAyNS44MjU2IDQ5LjAxNzYgMjUuMjU2MiA0OC40MSAyNC4xMTY5QzQ3LjgyNzYgMjIuOTc3NiA0Ny41MzY3IDIxLjI5NTEgNDcuNTM2NyAxOS4wNjgzSDU1LjUxMDhWMTcuMzk4NEM1NS41MTA4IDE1Ljc0MTYgNTUuMzg0MSAxNC4zNDM2IDU1LjEzMTEgMTMuMjA0M0M1NC44NzgxIDEyLjAzOTIgNTQuNTIzNSAxMS4wOTQxIDU0LjA2NzkgMTAuMzY5M0M1My42MTIyIDkuNjQ0NTMgNTMuMDU1NSA5LjEyNjU3IDUyLjM5NzEgOC44MTU4OUM1MS43Mzg4IDguNDc5NDggNTEuMDE3MyA4LjMxMTA0IDUwLjIzMjcgOC4zMTEwNEM0OS4yMjAzIDguMzExMDQgNDguMzQ2OSA4LjU4Mjg4IDQ3LjYxMjYgOS4xMjY1N0M0Ni44NzgzIDkuNjcwMjYgNDYuMjcwOCAxMC40MzM5IDQ1Ljc5IDExLjQxNzhDNDUuMzM0MyAxMi4zNzU2IDQ0Ljk5MjUgMTMuNTE0OSA0NC43NjQ3IDE0LjgzNTNDNDQuNTYyIDE2LjE1NTcgNDQuNDYwOSAxNy42MDU3IDQ0LjQ2MDkgMTkuMTg0OUM0NC40NjA5IDIyLjIxNCA0NS4wMzA1IDI0LjUxODQgNDYuMTY5NyAyNi4wOTc1QzQ3LjMwODggMjcuNjUwOSA0OC44NjU3IDI4LjQyNzYgNTAuODQwMyAyOC40Mjc2QzUxLjgwMjQgMjguNDI3NiA1Mi42NzU3IDI4LjI4NTQgNTMuNDYwMyAyOC4wMDA0Wk0yNy40NDk2IDguNTgyNTJWMjguMTU1NEgyNC41MjU4VjE5LjM3ODdIMjAuMTIxVjI4LjE1NTRIMTcuMTU5MlY4LjU4MjUySDIwLjEyMVYxNi44OTMySDI0LjUyNThWOC41ODI1MkgyNy40NDk2Wk02MS41MDkyIDI4LjE1NTRWMTguNDA3OEw2Ni41NTk1IDI4LjE1NTRINjkuNzg3MUw2NC4zNTcxIDE3Ljc4NjRMNjkuMTAzNiA4LjU4MjUySDY2LjEwMzhMNjEuNTA5MiAxNy42MzExVjguNTgyNTJINTguNTQ3NFYyOC4xNTU0SDYxLjUwOTJaTTc2LjczNzYgMjguNDI3NkM3NC42ODcxIDI4LjQyNzYgNzMuMDc5NSAyNy41OTkgNzEuOTE1MiAyNS45NDIyQzcwLjc1MDkgMjQuMjU5MSA3MC4xNjg1IDIxLjczNDkgNzAuMTY4NSAxOC4zNjkzQzcwLjE2ODUgMTYuODQxNiA3MC4zMDc1IDE1LjQ1NjcgNzAuNTg2MiAxNC4yMTRDNzAuODg5OSAxMi45NzEyIDcxLjMyMDQgMTEuOTIyNyA3MS44NzcyIDExLjA2ODNDNzIuNDU5NiAxMC4xODgyIDczLjE2ODMgOS41MTQ5MiA3NC4wMDM2IDkuMDQ4OUM3NC44NjQyIDguNTU3MTUgNzUuODUxNSA4LjMxMTA0IDc2Ljk2NTUgOC4zMTEwNEM3Ny44MjYgOC4zMTEwNCA3OC41MjIzIDguNDE0NDMgNzkuMDUzOSA4LjYyMTcyQzc5LjU4NTUgOC44MDI3OCA4MC4wNjY0IDkuMDM1NzkgODAuNDk2OSA5LjMyMDc1TDgwLjA3OTIgMTIuMTk0NUM3OS42NzQzIDExLjgzMTkgNzkuMTkzIDExLjUyMTIgNzguNjM2MiAxMS4yNjI1Qzc4LjEwNDYgMTAuOTc3NSA3Ny41MzUgMTAuODM1MyA3Ni45Mjc1IDEwLjgzNTNDNzUuODY0MyAxMC44MzUzIDc0Ljk5MDkgMTEuNDQzNiA3NC4zMDc0IDEyLjY2MDZDNzMuNjIzOSAxMy44Nzc2IDczLjI4MjIgMTUuNzI4NSA3My4yODIyIDE4LjIxNEM3My4yODIyIDIwLjY3MzcgNzMuNTYwOCAyMi41NzY2IDc0LjExNzYgMjMuOTIyN0M3NC43IDI1LjI0MzEgNzUuNTk4NSAyNS45MDMzIDc2LjgxMzYgMjUuOTAzM0M3Ny41NDc5IDI1LjkwMzMgNzguMTgwNiAyNS43ODY4IDc4LjcxMjIgMjUuNTUzOEM3OS4yNDM4IDI1LjI5NTEgNzkuNjg2NiAyNS4wMTAxIDgwLjA0MTIgMjQuNjk5NEw4MC43MjQ3IDI2Ljk1MTlDODAuMjE4MyAyNy4zOTIyIDc5LjY0ODcgMjcuNzU0MyA3OS4wMTYgMjguMDM5MkM3OC4zODMyIDI4LjI5OCA3Ny42MjM4IDI4LjQyNzYgNzYuNzM3NiAyOC40Mjc2Wk0zNC45MjkyIDExLjAyOTNIMzguMjMyOFYyNS42NzAxSDMzLjE0NDVDMzMuNTQ5NCAyNC42MzQ3IDMzLjg2NiAyMy41MDg1IDM0LjA5MzggMjIuMjkxNUMzNC4zMjE3IDIxLjA0ODcgMzQuNDk4NyAxOS43OTI5IDM0LjYyNTQgMTguNTI0NUMzNC43NTIyIDE3LjI1NiAzNC44MjgxIDE2LjAxMzMgMzQuODUzMyAxNC43OTYzQzM0LjkwNDEgMTMuNTUzNiAzNC45MjkyIDEyLjQxNDMgMzQuOTI5MiAxMS4zNzg4VjExLjAyOTNaTTUwLjIzMTMgMTAuNzk2NEM0OS4zMiAxMC43OTY0IDQ4LjY3NDQgMTEuMzI3IDQ4LjI5NDcgMTIuMzg4NkM0Ny45MTUgMTMuNDI0MSA0Ny42NzQzIDE0LjgyMjEgNDcuNTczMiAxNi41ODI4SDUyLjQ3MTZDNTIuNDcxNiAxNS43NTQyIDUyLjQzMzcgMTQuOTkwNiA1Mi4zNTc3IDE0LjI5MTVDNTIuMjgxOCAxMy41NjY4IDUyLjE1NTEgMTIuOTQ1NCA1MS45NzggMTIuNDI3NUM1MS44MjYxIDExLjkwOTUgNTEuNTk4MyAxMS41MDg1IDUxLjI5NDUgMTEuMjIzNkM1MS4wMTU5IDEwLjkzODYgNTAuNjYxOCAxMC43OTY0IDUwLjIzMTMgMTAuNzk2NFpNMTA3Ljc1OSAxMC4wOTcxVjI4LjE1NTRIMTA1Ljk3NFYxMC4wOTcxSDEwMS41MzFWOC41ODI1MkgxMTIuMTYzVjEwLjA5NzFIMTA3Ljc1OVpNMTIwLjY5IDI1Ljk0MTdDMTIwLjA4MyAyNi42OTI3IDExOS4zMzYgMjcuMDY3OSAxMTguNDUgMjcuMDY3OUMxMTcuNTM5IDI3LjA2NzkgMTE2LjgwNCAyNi42OTI3IDExNi4yNDggMjUuOTQxN0MxMTUuNzE2IDI1LjE5MDggMTE1LjQ1IDI0LjExNjUgMTE1LjQ1IDIyLjcxODRDMTE1LjQ1IDIxLjAwOTcgMTE1LjgzIDE5Ljc2NjkgMTE2LjU4OSAxOC45OTAyQzExNy4zNDkgMTguMjEzNSAxMTguNTI2IDE3LjgyNTIgMTIwLjEyMSAxNy44MjUySDEyMi4xNzFWMjMuMjIzM0MxMjEuODE3IDI0LjI4NDkgMTIxLjMyMyAyNS4xOTA4IDEyMC42OSAyNS45NDE3Wk0xMjIuNzAyIDI4LjE1NTZDMTIyLjYyNiAyNy44OTY4IDEyMi41MzcgMjcuNTczIDEyMi40MzYgMjcuMTg0N0MxMjIuMzYgMjYuNzcwNiAxMjIuMjk3IDI2LjIxMzggMTIyLjI0NiAyNS41MTQ4QzEyMS43OSAyNi40NDY4IDEyMS4yMjEgMjcuMTg0NyAxMjAuNTM3IDI3LjcyODRDMTE5Ljg1NCAyOC4yNzIxIDExOS4wMzEgMjguNTQzOSAxMTguMDY5IDI4LjU0MzlDMTE2Ljc3OCAyOC41NDM5IDExNS43MjcgMjguMDUyMiAxMTQuOTE3IDI3LjA2ODJDMTE0LjEwNyAyNi4wNTg1IDExMy43MDIgMjQuNjYwNCAxMTMuNzAyIDIyLjg3NEMxMTMuNzAyIDIwLjc3NjkgMTE0LjI0NyAxOS4xOTc4IDExNS4zMzUgMTguMTM2MUMxMTYuNDIzIDE3LjA0ODcgMTE4LjAwNiAxNi41MDUgMTIwLjA4MSAxNi41MDVIMTIyLjE3VjE0LjA1ODRDMTIyLjE3IDEyLjU1NyAxMjEuOTA0IDExLjQ2OTYgMTIxLjM3MyAxMC43OTYzQzEyMC44NDEgMTAuMTIzIDEyMC4wNDMgOS43ODY1NyAxMTguOTggOS43ODY1N0MxMTguMTcgOS43ODY1NyAxMTcuNDExIDkuOTgwNzUgMTE2LjcwMiAxMC4zNjkxQzExNS45OTMgMTAuNzMxNyAxMTUuNDExIDExLjI0OTIgMTE0Ljk1NSAxMS45MjI1TDExNC40NjIgMTAuMTc0OUMxMTQuODQxIDkuNjU2OTYgMTE1LjQxMSA5LjIwNDA1IDExNi4xNyA4LjgxNTdDMTE2Ljk1NSA4LjQwMTYyIDExNy44OTIgOC4xOTQzNCAxMTguOTggOC4xOTQzNEMxMjAuNTc1IDguMTk0MzQgMTIxLjc5IDguNjYwMzYgMTIyLjYyNiA5LjU5MjRDMTIzLjQ4NiAxMC40OTg3IDEyMy45MTcgMTEuOTIyNSAxMjMuOTE3IDEzLjg2NDNWMjQuNTQzOUMxMjMuOTE3IDI1LjIxNzIgMTIzLjk1NSAyNS45MDMxIDEyNC4wMzEgMjYuNjAyMkMxMjQuMTA3IDI3LjI3NTUgMTI0LjIwOCAyNy43OTI5IDEyNC4zMzQgMjguMTU1NkgxMjIuNzAyWk0xMjkuNzg3IDE4LjcxODVIMTM2LjMxOFYyOC4xNTU0SDEzOC4xMDNWOC41ODI1MkgxMzYuMzE4VjE3LjI0MjdIMTI5Ljc4N1Y4LjU4MjUySDEyOC4wMDJWMjguMTU1NEgxMjkuNzg3VjE4LjcxODVaTTE1Mi42ODEgMzIuMDAwMUwxNTIuNDU0IDI4LjE1NTRIMTQyLjM1M1Y4LjU4MjUySDE0NC4xMzhWMjYuNjc5N0gxNTAuNTU1VjguNTgyNTJIMTUyLjM0VjI2LjY3OTdIMTU0LjA4NlYzMi4wMDAxSDE1Mi42ODFaTTE2NS43NzQgMTMuMTI2MkMxNjUuNzQ5IDEzLjU0MDMgMTY1LjczNyAxNC4wMDYzIDE2NS43MzcgMTQuNTI0M1YyOC4xNTU0SDE2Ny40NDVWOC41ODI1MkgxNjUuODg4TDE1OS42NjEgMjIuMzMwMUMxNTkuNDU4IDIyLjc3MDQgMTU5LjI2OCAyMy4yMTAyIDE1OS4wOTEgMjMuNjUwNUMxNTguOTE0IDI0LjA2NDYgMTU4Ljc2MiAyNC40OTE4IDE1OC42MzYgMjQuOTMyMUgxNTguNTIyQzE1OC41NzIgMjQuNDkxOCAxNTguNjEgMjQuMDUyIDE1OC42MzYgMjMuNjExN0MxNTguNjYxIDIzLjE3MTQgMTU4LjY3NCAyMi42OTI4IDE1OC42NzQgMjIuMTc0OFY4LjU4MjUySDE1Ny4wMDNWMjguMTU1NEgxNTguNTIyTDE2NC43NDkgMTQuMzY4OUMxNjQuOTUxIDEzLjkyODcgMTY1LjE0MSAxMy41MTQ2IDE2NS4zMTkgMTMuMTI2MkMxNjUuNDk2IDEyLjcxMjEgMTY1LjY0OCAxMi4yODUgMTY1Ljc3NCAxMS44NDQ3SDE2NS44ODhDMTY1LjgzOCAxMi4yNTg3IDE2NS44IDEyLjY4NTkgMTY1Ljc3NCAxMy4xMjYyWk0xNzguMjU0IDEwLjAySDE3Ni44ODdDMTc1Ljc5OCAxMC4wMiAxNzQuODc0IDEwLjM5NTMgMTc0LjExNSAxMS4xNDYyQzE3My4zODEgMTEuODcxIDE3My4wMTQgMTMuMDYyMyAxNzMuMDE0IDE0LjcxOTFDMTczLjAxNCAxNi4zNTAxIDE3My4zNDMgMTcuNTQwOSAxNzQuMDAxIDE4LjI5MTlDMTc0LjY4NCAxOS4wNDI5IDE3NS42MDkgMTkuNDE4MSAxNzYuNzczIDE5LjQxODFIMTc4LjI1NFYxMC4wMlpNMTcyLjQ0MyAyOC4xNTU0TDE3NS45MzcgMjAuODE1NkgxNzguMjUzVjI4LjE1NTRIMTgwVjguNTgyNTJIMTc2LjgxQzE3Ni4wMjUgOC41ODI1MiAxNzUuMjkxIDguNzEyMTMgMTc0LjYwOCA4Ljk3MDg3QzE3My45MjQgOS4yMDM4OCAxNzMuMzI5IDkuNTc5MTIgMTcyLjgyMyAxMC4wOTcxQzE3Mi4zNDIgMTAuNjE1IDE3MS45NSAxMS4yNjIxIDE3MS42NDYgMTIuMDM4OEMxNzEuMzY4IDEyLjgxNTUgMTcxLjIyOCAxMy43MzQ1IDE3MS4yMjggMTQuNzk2MUMxNzEuMjI4IDE2LjI0NjEgMTcxLjUxOSAxNy40NSAxNzIuMTAxIDE4LjQwNzhDMTcyLjY4NCAxOS4zNjU2IDE3My40NDMgMjAuMDEzMSAxNzQuMzggMjAuMzQ5NUwxNzAuNTgzIDI4LjE1NTRIMTcyLjQ0M1oiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMjciIHZpZXdCb3g9IjAgMCAxNSAyNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjE0MjYgMjUuMTk5N0wxLjE0MjU4IDEzLjE5OTdMMTMuMTQyNiAxLjE5OTcxIiBzdHJva2U9IiMxYTFhMWEiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPg==\""],"names":["window","__NEXT_P","push","getEndCarouselRowPos","countCards","endPosCount","Math","ceil","Array","from","reduce","newArr","_","key","getStartCarouselRowPos","startCarouselRowPos","unshift","getArrTemplateForCountCards","yandexStationData","arrTemplate","cardsLength","length","endCarouselRowPos","maxCountFirstLine","keys","forEach","getDataOfOneDiffParams","soleParam","otherParam","CAROUSEL_STATION_COUNT_SLIDES","fill","getReferenceDataArray","maxCountYandexCard","referenceArrayLength","row","column","map","index","getCarouselImgUrl","url","id","type","mediaData","sortFunctionBySort","a","b","sort","dataLayerPushWrap","callback","label","action","ACTIONS","dataLayerPush","event","EVENTS","category","CATEGORIES","globalId","benefits","imgUrl","DEFAULT_URL","text","priceData","price","title","headerCarouselRowData","STATION_IMG_URL","imgWebpUrl","graphicData","area","EPlusesCategory","gradient","desktop","mobile","initialTypeIsRow","NBSP","subText","layoutImg","MDASH","hasImgStyle","tablet","commonPropsSlider","showArrows","infinite","align","sliderPropsCatalog","slidesToShow","wrapAround","withoutArrows","sliderPropsSmartStation","autoplay","autoplayDelay","CarouselStationData","titleMain","subTextMain","imgUrlBaseMain","iconUrlBase","iconUrl","typeIcon","slipText","backgroundColor","positionText","textColor","COLORS","Benefits","styled","BenefitsRow","breakPoints","Icon","props","BenefitsText","FONTS","ST","InputPhoneDecorator","phoneDecorator","InputSimple","PriceBlock","wideBreakpoints","FirstLine","SecondLine","PriceRow","PriceText","PriceContainer","CurrentPrice","InputPhone","BannerButton","BaseButton","stationLight","city","createComponent","tag","React","currentPrice","useMemo","pricesV2","find","EPriceTypes","value","componentProps","FeedbackForm","Container","InputPhoneComponent","ButtonComponent","buttonTitle","withoutName","withoutAgreement","BonusWrapper","BorderRadius","BannerTitle","TagText","StationImg","progressiveBackground","src","webpSrc","CarouselWrapperTablet","Carousel","StationTag","BreakPointsMFirst","catalogMimicFormRef","stationSections","isTablet","useMatchMedia","EMediaWidth","isMobile","scrollToRef","useScroll","alignment","filterStations","useCallback","section","item","inStock","filter","onScrollWrapper","onClick","HeaderTextWrapper","H1","HeaderSubtext","LogoYandexStation","as","alt","$withIndent","br","LandingWrapper","ContainerFeedbackForm","FeedbackFormWrapper","InputWrapper","ButtonWrapper","HeaderBackground","HEADER_IMG_URL","NonStaticContainer","ContainerHead","callbackRef","HeaderTextBlock","BonusBanner","CarouselRow","PlusesContainer","PlusesTitle","H2","GraphicBlock","GRID_ORDER_CATEGORY","WantButton","GraphicItem","css","theme","StepAround","WrapperTop","Label","PriceMaxiBlock","PriceLightBlock","ImgBlock","TextBlock","ContentWrap","Title","H3","SubText","stationMaxi","imageUrl","getPrice","array","prev","curr","priceMaxi","duration","priceLight","elem","ThemeProvider","btnTypes","ContainerRoutes","BannerWrapper","RouteTitle","TextWrapper","RouteSubtext","RouteButton","Button","bType","newWindow","open","opener","location","href","ContainerAlisaCarousel","AlisaCarouselTitle","AlisaCarousel","AlisaCarouselWrapper","MainBlockWrapper","background","TextContainer","TextWrap","SubTextMainBlock","TitleMainBlock","ImgUrl","TripleCardWrapper","Slip","SlipText","SlipContentWrapper","SlipIcon","isTabletOnly","isSDesktop","sDesktop","COUNT_CAROUSEL_SUB_ITEMS","YandexStationCard","router","useRouter","useState","indexOfSelected","setIndexOfSelected","openDetailPage","alias","ProductCard","image","baseRoute","backgroundColorData","bgImg","categoryTitle","name","body","priceOptions","getPriceOptions","convertShopPrices","labels","detailHandler","yandexStationDataSorted","startLine","endLine","isCarousel","countSlides","COUNT_SLIDE_MOBILE","COUNT_SLIDE_TABLET","yandexCards","cards","i","NukaCarousel","getYandexCardsCarousel","ContainerCatalog","CatalogWrapper","TitleCatalog","SubtextCatalog","TextCatalogWrapper","CardsWrapper","count","isSDesktopMin","YandexStationCards","data-id","callbackFormRef","useRef","hasStation","some","station","Header","PlusesBlock","SmartStationCarousel","RoutesBanner","ref","FormWrapper","InputWrapperComponent","ButtonWrapperComponent","subtitle","YandexCatalog","YandexStationLandingPage","companyName","cityIn","callCenter","Layout","description","withMenu","withChat","withFooter","YandexLanding","getInitialProps","options","req","store","state","providerId","doRequest","equipmentResponse","domofonResponse","initialProps","isNeedAuthData","getState","currentCity","provider","selectCompanyName","getRequester","Promise","all","fullBuy","equipment","categories","EShopCategory","apiContent","domofonAction","available","isSuccess","payload","items","dispatch","saveIntercomAction","getShopItems","token","expand","isShowAll","params","headers","resp","prepareExpandProp","Authorization","accessMode","getAccessModeByRights","isAuth","Boolean","retryIfParamIsLocked","contentRequest","paramsSerializer","stringify","data","captureException","expands","join","getRouters","Routers","EExpandShopItems","Category","Props","Labels","getIntercomServices","Intercom","getVideocontrolItems","Videocontrol","axiosContent","axios","baseURL","isServerSide","process","interceptors","request","use","config","cookies","ACCESS_TOKEN_COOKIE","noCacheKey","NO_CACHE_COOKIE","error","reject","Object","create","get","EAccessRights","UserGuest","UserAuth","PlatformSite","ConditionZasmotris","rights","result","acc","right","settings","offsetY","behavior","absolute","scrollTo","top","document","scrollHeight","y","current","getBoundingClientRect","pageYOffset","scrollIntoView","block","toNumber","v","parseFloat","toString","replace","Number","toCurrency","amount","x","s","d","c","n","includes","split","pop","str","toFixed","max","re","RegExp","actionInfo","GET_INTERCOM_ACTION","queryParams","uri","method","withProvider","routerFilter","withAuth","pluralize","variants","abs","getVariant","getPluralize","monthPluralize","channelPluralize","dayPluralize","bonusPluralize","truncate","string","visibleLength","slice","trim","Possess","Leasing","p","Wrapper","ArrowSvg","svg","previousSlide","nextSlide","Dot","customStyles","dot","active","DotContainer","dotContainer","activeLineAnimation","keyframes","ActiveLine","time","activeDot","DotsContainer","dotsContainer","goToSlide","slideCount","currentSlide","autoplayInterval","customDotsStyles","withoutDots","getDefaultControlsContainerStyles","bottom","left","customArrow","customDots","children","withoutControls","className","pausedAutoplay","setPausedAutoplay","Arrow","CustomArrow","DefaultArrow","Dots","CustomDots","DefaultDots","swiperRef","useEffect","setDimensions","handleMouseOver","handleMouseOut","onTouchStart","onTouchEnd","onMouseOver","onMouseOut","NukaSwiper","getControlsContainerStyles","renderCenterLeftControls","renderCenterRightControls","renderBottomCenterControls","module","exports"],"sourceRoot":""}